Name: series-workflowqpfzj Phase: Succeeded StartedAt: 2026-07-05 18:25:22 +0000 UTC FinishedAt: 2026-07-05 23:05:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpfzj[0] Phase: Succeeded StartedAt: 2026-07-05 18:25:22 +0000 UTC FinishedAt: 2026-07-05 18:44:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpfzj[0].run-triage Phase: Succeeded StartedAt: 2026-07-05 18:25:22 +0000 UTC FinishedAt: 2026-07-05 18:44:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d7a8d500d7e42837bd8dce40cb52c97c6e8706a9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_MULTICAST", "IPV6" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d7a8d500d7e42837bd8dce40cb52c97c6e8706a9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_MULTICAST", "IPV6" ], "series_id": "22cdc8b4-8aad-4651-af3f-022d23cf9352" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "igmp_stop_timer", "igmp_gq_start_timer", "igmp_ifc_start_timer", "igmp_mod_timer", "mld_gq_start_work", "mld_gq_stop_work", "mld_ifc_start_work", "mld_ifc_stop_work", "mld_dad_start_work", "mld_dad_stop_work", "igmp6_event_query", "igmp6_event_report" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX01VTFRJQ0FTVCYjMzQ7LAogICAgJiMzNDtJUFY2JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWdtcF9zdG9wX3RpbWVyJiMzNDssCiAgICAmIzM0O2lnbXBfZ3Ffc3RhcnRfdGltZXImIzM0OywKICAgICYjMzQ7aWdtcF9pZmNfc3RhcnRfdGltZXImIzM0OywKICAgICYjMzQ7aWdtcF9tb2RfdGltZXImIzM0OywKICAgICYjMzQ7bWxkX2dxX3N0YXJ0X3dvcmsmIzM0OywKICAgICYjMzQ7bWxkX2dxX3N0b3Bfd29yayYjMzQ7LAogICAgJiMzNDttbGRfaWZjX3N0YXJ0X3dvcmsmIzM0OywKICAgICYjMzQ7bWxkX2lmY19zdG9wX3dvcmsmIzM0OywKICAgICYjMzQ7bWxkX2RhZF9zdGFydF93b3JrJiMzNDssCiAgICAmIzM0O21sZF9kYWRfc3RvcF93b3JrJiMzNDssCiAgICAmIzM0O2lnbXA2X2V2ZW50X3F1ZXJ5JiMzNDssCiAgICAmIzM0O2lnbXA2X2V2ZW50X3JlcG9ydCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBJR01QIGFuZCBNTEQgdGltZXIgYW5kIHdvcmtxdWV1ZSBoYW5kbGluZyB0byB1c2UgYGluX2Rldl9ob2xkX3NhZmVgIGFuZCBgaW42X2Rldl9ob2xkX3NhZmVgICh3aGljaCB1c2UgYHJlZmNvdW50X2luY19ub3RfemVyb2ApIGluc3RlYWQgb2YgYGluX2Rldl9ob2xkYCBhbmQgYGluNl9kZXZfaG9sZGAuIEl0IGFsc28gZGVmZXJzIGBpcF9tYV9wdXRgIGFuZCBgaW42X2Rldl9wdXRgIG91dHNpZGUgb2Ygc3BpbmxvY2tzIGluIHNvbWUgY2FzZXMuIFRoaXMgZml4ZXMgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJlZmNvdW50IGJ1Z3Mgd2hlbiB0aW1lcnMvd29ya3F1ZXVlcyBhcmUgc2NoZWR1bGVkIHdoaWxlIHRoZSBkZXZpY2UgaXMgYmVpbmcgZGVzdHJveWVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JraW5nIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxODo0MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGY5ZGNhMjA4MGM4MDNjMjM2MDVmNzE2ZWJjYjczNDZjYTU4ODI1MGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCA1IDE4OjQzOjEyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaW5ldGRldmljZS5oIGIvaW5jbHVkZS9saW51eC9pbmV0ZGV2aWNlLmhcbmluZGV4IGRjY2JlYjI1ZjcwMTQxLi42MDMyZWVhMjUzOWE2MCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvaW5ldGRldmljZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2luZXRkZXZpY2UuaFxuQEAgLTI5Myw2ICYjNDM7MjkzLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbl9kZXZfcHV0KHN0cnVjdCBpbl9kZXZpY2UgKmlkZXYpXG4gI2RlZmluZSBfX2luX2Rldl9wdXQoaWRldikgIHJlZmNvdW50X2RlYyhcdTAwMjYoaWRldiktXHUwMDNlcmVmY250KVxuICNkZWZpbmUgaW5fZGV2X2hvbGQoaWRldikgICByZWZjb3VudF9pbmMoXHUwMDI2KGlkZXYpLVx1MDAzZXJlZmNudClcbiBcbiYjNDM7c3RhdGljIGlubGluZSBib29sIGluX2Rldl9ob2xkX3NhZmUoc3RydWN0IGluX2RldmljZSAqaWRldilcbiYjNDM7e1xuJiM0MztcdHJldHVybiByZWZjb3VudF9pbmNfbm90X3plcm8oXHUwMDI2aWRldi1cdTAwM2VyZWZjbnQpO1xuJiM0Mzt9XG4mIzQzO1xuICNlbmRpZiAvKiBfX0tFUk5FTF9fICovXG4gXG4gc3RhdGljIF9faW5saW5lX18gX19iZTMyIGluZXRfbWFrZV9tYXNrKGludCBsb2dtYXNrKVxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2FkZHJjb25mLmggYi9pbmNsdWRlL25ldC9hZGRyY29uZi5oXG5pbmRleCA1MzliYmJlNTRiMTRlOC4uOGNlZDI3YTgyMjliNmUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9hZGRyY29uZi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9hZGRyY29uZi5oXG5AQCAtNDQ2LDYgJiM0Mzs0NDYsMTEgQEAgc3RhdGljIGlubGluZSB2b2lkIGluNl9kZXZfaG9sZChzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KVxuIFx0cmVmY291bnRfaW5jKFx1MDAyNmlkZXYtXHUwMDNlcmVmY250KTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBpbjZfZGV2X2hvbGRfc2FmZShzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIHJlZmNvdW50X2luY19ub3RfemVybyhcdTAwMjZpZGV2LVx1MDAzZXJlZmNudCk7XG4mIzQzO31cbiYjNDM7XG4gLyogY2FsbGVkIHdpdGggcmN1X3JlYWRfbG9jayBoZWxkICovXG4gc3RhdGljIGlubGluZSBib29sIGlwNl9pZ25vcmVfbGlua2Rvd24oY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiB7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaWdtcC5jIGIvbmV0L2lwdjQvaWdtcC5jXG5pbmRleCBiNjMzN2E0N2MxNDE4NS4uOTU3MDEzZTdmN2EyNWYgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9pZ21wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2lnbXAuY1xuQEAgLTIxNywxMyAmIzQzOzIxNywxOCBAQCBzdGF0aWMgdm9pZCBpcF9zZl9saXN0X2NsZWFyX2FsbChzdHJ1Y3QgaXBfc2ZfbGlzdCAqcHNmKVxuIFxuIHN0YXRpYyB2b2lkIGlnbXBfc3RvcF90aW1lcihzdHJ1Y3QgaXBfbWNfbGlzdCAqaW0pXG4ge1xuJiM0MztcdGJvb2wgcHV0ID0gZmFsc2U7XG4mIzQzO1xuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmltLVx1MDAzZWxvY2spO1xuIFx0aWYgKHRpbWVyX2RlbGV0ZShcdTAwMjZpbS1cdTAwM2V0aW1lcikpXG4tXHRcdHJlZmNvdW50X2RlYyhcdTAwMjZpbS1cdTAwM2VyZWZjbnQpO1xuJiM0MztcdFx0cHV0ID0gdHJ1ZTtcbiBcdFdSSVRFX09OQ0UoaW0tXHUwMDNldG1fcnVubmluZywgMCk7XG4gXHRXUklURV9PTkNFKGltLVx1MDAzZXJlcG9ydGVyLCAwKTtcbiBcdGltLVx1MDAzZXVuc29saWNpdF9jb3VudCA9IDA7XG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZpbS1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHB1dClcbiYjNDM7XHRcdGlwX21hX3B1dChpbSk7XG4gfVxuIFxuIC8qIEl0IG11c3QgYmUgY2FsbGVkIHdpdGggbG9ja2VkIGltLVx1MDAzZWxvY2sgKi9cbkBAIC0yNDgsMjAgJiM0MzsyNTMsMjYgQEAgc3RhdGljIHZvaWQgaWdtcF9ncV9zdGFydF90aW1lcihzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpXG4gXHRcdHJldHVybjtcbiBcbiBcdGluX2Rldi1cdTAwM2Vtcl9ncV9ydW5uaW5nID0gMTtcbi1cdGlmICghbW9kX3RpbWVyKFx1MDAyNmluX2Rldi1cdTAwM2Vtcl9ncV90aW1lciwgZXhwKSlcbi1cdFx0aW5fZGV2X2hvbGQoaW5fZGV2KTtcbiYjNDM7XHRpZiAoaW5fZGV2X2hvbGRfc2FmZShpbl9kZXYpKSB7XG4mIzQzO1x0XHRpZiAobW9kX3RpbWVyKFx1MDAyNmluX2Rldi1cdTAwM2Vtcl9ncV90aW1lciwgZXhwKSlcbiYjNDM7XHRcdFx0aW5fZGV2X3B1dChpbl9kZXYpO1xuJiM0MztcdH1cbiB9XG4gXG4gc3RhdGljIHZvaWQgaWdtcF9pZmNfc3RhcnRfdGltZXIoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBpbnQgZGVsYXkpXG4ge1xuLVx0aW50IHR2ID0gZ2V0X3JhbmRvbV91MzJfYmVsb3coZGVsYXkpO1xuJiM0MztcdGlmIChpbl9kZXZfaG9sZF9zYWZlKGluX2RldikpIHtcbiYjNDM7XHRcdGludCB0diA9IGdldF9yYW5kb21fdTMyX2JlbG93KGRlbGF5KTtcbiBcbi1cdGlmICghbW9kX3RpbWVyKFx1MDAyNmluX2Rldi1cdTAwM2Vtcl9pZmNfdGltZXIsIGppZmZpZXMmIzQzO3R2JiM0MzsyKSlcbi1cdFx0aW5fZGV2X2hvbGQoaW5fZGV2KTtcbiYjNDM7XHRcdGlmIChtb2RfdGltZXIoXHUwMDI2aW5fZGV2LVx1MDAzZW1yX2lmY190aW1lciwgamlmZmllcyAmIzQzOyB0diAmIzQzOyAyKSlcbiYjNDM7XHRcdFx0aW5fZGV2X3B1dChpbl9kZXYpO1xuJiM0MztcdH1cbiB9XG4gXG4gc3RhdGljIHZvaWQgaWdtcF9tb2RfdGltZXIoc3RydWN0IGlwX21jX2xpc3QgKmltLCBpbnQgbWF4X2RlbGF5KVxuIHtcbiYjNDM7XHRib29sIHB1dCA9IGZhbHNlO1xuJiM0MztcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZpbS1cdTAwM2Vsb2NrKTtcbiBcdGltLVx1MDAzZXVuc29saWNpdF9jb3VudCA9IDA7XG4gXHRpZiAodGltZXJfZGVsZXRlKFx1MDAyNmltLVx1MDAzZXRpbWVyKSkge1xuQEAgLTI3MSwxMCAmIzQzOzI4MiwxMyBAQCBzdGF0aWMgdm9pZCBpZ21wX21vZF90aW1lcihzdHJ1Y3QgaXBfbWNfbGlzdCAqaW0sIGludCBtYXhfZGVsYXkpXG4gXHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2aW0tXHUwMDNlbG9jayk7XG4gXHRcdFx0cmV0dXJuO1xuIFx0XHR9XG4tXHRcdHJlZmNvdW50X2RlYyhcdTAwMjZpbS1cdTAwM2VyZWZjbnQpO1xuJiM0MztcdFx0cHV0ID0gdHJ1ZTtcbiBcdH1cbiBcdGlnbXBfc3RhcnRfdGltZXIoaW0sIG1heF9kZWxheSk7XG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZpbS1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHB1dClcbiYjNDM7XHRcdGlwX21hX3B1dChpbSk7XG4gfVxuIFxuIFxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L21jYXN0LmMgYi9uZXQvaXB2Ni9tY2FzdC5jXG5pbmRleCAwNGI4MTFiM2JlOTc4ZS4uNGQyYjkzNzdiYTJkZTUgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9tY2FzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9tY2FzdC5jXG5AQCAtMTA4Myw4ICYjNDM7MTA4MywxMCBAQCBzdGF0aWMgdm9pZCBtbGRfZ3Ffc3RhcnRfd29yayhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KVxuIFx0bWNfYXNzZXJ0X2xvY2tlZChpZGV2KTtcbiBcbiBcdGlkZXYtXHUwMDNlbWNfZ3FfcnVubmluZyA9IDE7XG4tXHRpZiAoIW1vZF9kZWxheWVkX3dvcmsobWxkX3dxLCBcdTAwMjZpZGV2LVx1MDAzZW1jX2dxX3dvcmssIHR2ICYjNDM7IDIpKVxuLVx0XHRpbjZfZGV2X2hvbGQoaWRldik7XG4mIzQzO1x0aWYgKGluNl9kZXZfaG9sZF9zYWZlKGlkZXYpKSB7XG4mIzQzO1x0XHRpZiAobW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFx1MDAyNmlkZXYtXHUwMDNlbWNfZ3Ffd29yaywgdHYgJiM0MzsgMikpXG4mIzQzO1x0XHRcdGluNl9kZXZfcHV0KGlkZXYpO1xuJiM0MztcdH1cbiB9XG4gXG4gc3RhdGljIHZvaWQgbWxkX2dxX3N0b3Bfd29yayhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KVxuQEAgLTExMDIsOCAmIzQzOzExMDQsMTAgQEAgc3RhdGljIHZvaWQgbWxkX2lmY19zdGFydF93b3JrKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYsIHVuc2lnbmVkIGxvbmcgZGVsYXkpXG4gXG4gXHRtY19hc3NlcnRfbG9ja2VkKGlkZXYpO1xuIFxuLVx0aWYgKCFtb2RfZGVsYXllZF93b3JrKG1sZF93cSwgXHUwMDI2aWRldi1cdTAwM2VtY19pZmNfd29yaywgdHYgJiM0MzsgMikpXG4tXHRcdGluNl9kZXZfaG9sZChpZGV2KTtcbiYjNDM7XHRpZiAoaW42X2Rldl9ob2xkX3NhZmUoaWRldikpIHtcbiYjNDM7XHRcdGlmIChtb2RfZGVsYXllZF93b3JrKG1sZF93cSwgXHUwMDI2aWRldi1cdTAwM2VtY19pZmNfd29yaywgdHYgJiM0MzsgMikpXG4mIzQzO1x0XHRcdGluNl9kZXZfcHV0KGlkZXYpO1xuJiM0MztcdH1cbiB9XG4gXG4gc3RhdGljIHZvaWQgbWxkX2lmY19zdG9wX3dvcmsoc3RydWN0IGluZXQ2X2RldiAqaWRldilcbkBAIC0xMTIxLDggJiM0MzsxMTI1LDEwIEBAIHN0YXRpYyB2b2lkIG1sZF9kYWRfc3RhcnRfd29yayhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2LCB1bnNpZ25lZCBsb25nIGRlbGF5KVxuIFxuIFx0bWNfYXNzZXJ0X2xvY2tlZChpZGV2KTtcbiBcbi1cdGlmICghbW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFx1MDAyNmlkZXYtXHUwMDNlbWNfZGFkX3dvcmssIHR2ICYjNDM7IDIpKVxuLVx0XHRpbjZfZGV2X2hvbGQoaWRldik7XG4mIzQzO1x0aWYgKGluNl9kZXZfaG9sZF9zYWZlKGlkZXYpKSB7XG4mIzQzO1x0XHRpZiAobW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFx1MDAyNmlkZXYtXHUwMDNlbWNfZGFkX3dvcmssIHR2ICYjNDM7IDIpKVxuJiM0MztcdFx0XHRpbjZfZGV2X3B1dChpZGV2KTtcbiYjNDM7XHR9XG4gfVxuIFxuIHN0YXRpYyB2b2lkIG1sZF9kYWRfc3RvcF93b3JrKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpXG5AQCAtMTM5NSwxOCAmIzQzOzE0MDEsMjMgQEAgc3RhdGljIHZvaWQgbWxkX3Byb2Nlc3NfdjIoc3RydWN0IGluZXQ2X2RldiAqaWRldiwgc3RydWN0IG1sZDJfcXVlcnkgKm1sZCxcbiB2b2lkIGlnbXA2X2V2ZW50X3F1ZXJ5KHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0c3RydWN0IGluZXQ2X2RldiAqaWRldiA9IF9faW42X2Rldl9nZXQoc2tiLVx1MDAzZWRldik7XG4mIzQzO1x0Ym9vbCBwdXQgPSBmYWxzZTtcbiBcbiBcdGlmICghaWRldiB8fCBpZGV2LVx1MDAzZWRlYWQpXG4gXHRcdGdvdG8gb3V0O1xuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmlkZXYtXHUwMDNlbWNfcXVlcnlfbG9jayk7XG4tXHRpZiAoc2tiX3F1ZXVlX2xlbihcdTAwMjZpZGV2LVx1MDAzZW1jX3F1ZXJ5X3F1ZXVlKSBcdTAwM2MgTUxEX01BWF9TS0JTKSB7XG4mIzQzO1x0aWYgKHNrYl9xdWV1ZV9sZW4oXHUwMDI2aWRldi1cdTAwM2VtY19xdWVyeV9xdWV1ZSkgXHUwMDNjIE1MRF9NQVhfU0tCUyBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgaW42X2Rldl9ob2xkX3NhZmUoaWRldikpIHtcbiBcdFx0X19za2JfcXVldWVfdGFpbChcdTAwMjZpZGV2LVx1MDAzZW1jX3F1ZXJ5X3F1ZXVlLCBza2IpO1xuLVx0XHRpZiAoIW1vZF9kZWxheWVkX3dvcmsobWxkX3dxLCBcdTAwMjZpZGV2LVx1MDAzZW1jX3F1ZXJ5X3dvcmssIDApKVxuLVx0XHRcdGluNl9kZXZfaG9sZChpZGV2KTtcbiYjNDM7XHRcdGlmIChtb2RfZGVsYXllZF93b3JrKG1sZF93cSwgXHUwMDI2aWRldi1cdTAwM2VtY19xdWVyeV93b3JrLCAwKSlcbiYjNDM7XHRcdFx0cHV0ID0gdHJ1ZTtcbiBcdFx0c2tiID0gTlVMTDtcbiBcdH1cbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmlkZXYtXHUwMDNlbWNfcXVlcnlfbG9jayk7XG4mIzQzO1xuJiM0MztcdGlmIChwdXQpXG4mIzQzO1x0XHRpbjZfZGV2X3B1dChpZGV2KTtcbiBvdXQ6XG4gXHRrZnJlZV9za2Ioc2tiKTtcbiB9XG5AQCAtMTU3MCwxOCAmIzQzOzE1ODEsMjMgQEAgc3RhdGljIHZvaWQgbWxkX3F1ZXJ5X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIHZvaWQgaWdtcDZfZXZlbnRfcmVwb3J0KHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0c3RydWN0IGluZXQ2X2RldiAqaWRldiA9IF9faW42X2Rldl9nZXQoc2tiLVx1MDAzZWRldik7XG4mIzQzO1x0Ym9vbCBwdXQgPSBmYWxzZTtcbiBcbiBcdGlmICghaWRldiB8fCBpZGV2LVx1MDAzZWRlYWQpXG4gXHRcdGdvdG8gb3V0O1xuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmlkZXYtXHUwMDNlbWNfcmVwb3J0X2xvY2spO1xuLVx0aWYgKHNrYl9xdWV1ZV9sZW4oXHUwMDI2aWRldi1cdTAwM2VtY19yZXBvcnRfcXVldWUpIFx1MDAzYyBNTERfTUFYX1NLQlMpIHtcbiYjNDM7XHRpZiAoc2tiX3F1ZXVlX2xlbihcdTAwMjZpZGV2LVx1MDAzZW1jX3JlcG9ydF9xdWV1ZSkgXHUwMDNjIE1MRF9NQVhfU0tCUyBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgaW42X2Rldl9ob2xkX3NhZmUoaWRldikpIHtcbiBcdFx0X19za2JfcXVldWVfdGFpbChcdTAwMjZpZGV2LVx1MDAzZW1jX3JlcG9ydF9xdWV1ZSwgc2tiKTtcbi1cdFx0aWYgKCFtb2RfZGVsYXllZF93b3JrKG1sZF93cSwgXHUwMDI2aWRldi1cdTAwM2VtY19yZXBvcnRfd29yaywgMCkpXG4tXHRcdFx0aW42X2Rldl9ob2xkKGlkZXYpO1xuJiM0MztcdFx0aWYgKG1vZF9kZWxheWVkX3dvcmsobWxkX3dxLCBcdTAwMjZpZGV2LVx1MDAzZW1jX3JlcG9ydF93b3JrLCAwKSlcbiYjNDM7XHRcdFx0cHV0ID0gdHJ1ZTtcbiBcdFx0c2tiID0gTlVMTDtcbiBcdH1cbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmlkZXYtXHUwMDNlbWNfcmVwb3J0X2xvY2spO1xuJiM0MztcbiYjNDM7XHRpZiAocHV0KVxuJiM0MztcdFx0aW42X2Rldl9wdXQoaWRldik7XG4gb3V0OlxuIFx0a2ZyZWVfc2tiKHNrYik7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjQzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX01VTFRJQ0FTVCYjMzQ7LAogICAgJiMzNDtJUFY2JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWdtcF9zdG9wX3RpbWVyJiMzNDssCiAgICAmIzM0O2lnbXBfZ3Ffc3RhcnRfdGltZXImIzM0OywKICAgICYjMzQ7aWdtcF9pZmNfc3RhcnRfdGltZXImIzM0OywKICAgICYjMzQ7aWdtcF9tb2RfdGltZXImIzM0OywKICAgICYjMzQ7bWxkX2dxX3N0YXJ0X3dvcmsmIzM0OywKICAgICYjMzQ7bWxkX2dxX3N0b3Bfd29yayYjMzQ7LAogICAgJiMzNDttbGRfaWZjX3N0YXJ0X3dvcmsmIzM0OywKICAgICYjMzQ7bWxkX2lmY19zdG9wX3dvcmsmIzM0OywKICAgICYjMzQ7bWxkX2RhZF9zdGFydF93b3JrJiMzNDssCiAgICAmIzM0O21sZF9kYWRfc3RvcF93b3JrJiMzNDssCiAgICAmIzM0O2lnbXA2X2V2ZW50X3F1ZXJ5JiMzNDssCiAgICAmIzM0O2lnbXA2X2V2ZW50X3JlcG9ydCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBJR01QIGFuZCBNTEQgdGltZXIgYW5kIHdvcmtxdWV1ZSBoYW5kbGluZyB0byB1c2UgYGluX2Rldl9ob2xkX3NhZmVgIGFuZCBgaW42X2Rldl9ob2xkX3NhZmVgICh3aGljaCB1c2UgYHJlZmNvdW50X2luY19ub3RfemVyb2ApIGluc3RlYWQgb2YgYGluX2Rldl9ob2xkYCBhbmQgYGluNl9kZXZfaG9sZGAuIEl0IGFsc28gZGVmZXJzIGBpcF9tYV9wdXRgIGFuZCBgaW42X2Rldl9wdXRgIG91dHNpZGUgb2Ygc3BpbmxvY2tzIGluIHNvbWUgY2FzZXMuIFRoaXMgZml4ZXMgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJlZmNvdW50IGJ1Z3Mgd2hlbiB0aW1lcnMvd29ya3F1ZXVlcyBhcmUgc2NoZWR1bGVkIHdoaWxlIHRoZSBkZXZpY2UgaXMgYmVpbmcgZGVzdHJveWVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JraW5nIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjlkY2EyMDgwYzgwM2MyMzYwNWY3MTZlYmNiNzM0NmNhNTg4MjUwZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDUgMTg6NDM6MTIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2luZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvaW5ldGRldmljZS5oCmluZGV4IGRjY2JlYjI1ZjcwMTQxLi42MDMyZWVhMjUzOWE2MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9pbmV0ZGV2aWNlLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9pbmV0ZGV2aWNlLmgKQEAgLTI5Myw2ICYjNDM7MjkzLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbl9kZXZfcHV0KHN0cnVjdCBpbl9kZXZpY2UgKmlkZXYpCiAjZGVmaW5lIF9faW5fZGV2X3B1dChpZGV2KSAgcmVmY291bnRfZGVjKCZhbXA7KGlkZXYpLSZndDtyZWZjbnQpCiAjZGVmaW5lIGluX2Rldl9ob2xkKGlkZXYpICAgcmVmY291bnRfaW5jKCZhbXA7KGlkZXYpLSZndDtyZWZjbnQpCiAKJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgaW5fZGV2X2hvbGRfc2FmZShzdHJ1Y3QgaW5fZGV2aWNlICppZGV2KQomIzQzO3sKJiM0MzsJcmV0dXJuIHJlZmNvdW50X2luY19ub3RfemVybygmYW1wO2lkZXYtJmd0O3JlZmNudCk7CiYjNDM7fQomIzQzOwogI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8KIAogc3RhdGljIF9faW5saW5lX18gX19iZTMyIGluZXRfbWFrZV9tYXNrKGludCBsb2dtYXNrKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvYWRkcmNvbmYuaCBiL2luY2x1ZGUvbmV0L2FkZHJjb25mLmgKaW5kZXggNTM5YmJiZTU0YjE0ZTguLjhjZWQyN2E4MjI5YjZlIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9hZGRyY29uZi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2FkZHJjb25mLmgKQEAgLTQ0Niw2ICYjNDM7NDQ2LDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbjZfZGV2X2hvbGQoc3RydWN0IGluZXQ2X2RldiAqaWRldikKIAlyZWZjb3VudF9pbmMoJmFtcDtpZGV2LSZndDtyZWZjbnQpOwogfQogCiYjNDM7c3RhdGljIGlubGluZSBib29sIGluNl9kZXZfaG9sZF9zYWZlKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpCiYjNDM7ewomIzQzOwlyZXR1cm4gcmVmY291bnRfaW5jX25vdF96ZXJvKCZhbXA7aWRldi0mZ3Q7cmVmY250KTsKJiM0Mzt9CiYjNDM7CiAvKiBjYWxsZWQgd2l0aCByY3VfcmVhZF9sb2NrIGhlbGQgKi8KIHN0YXRpYyBpbmxpbmUgYm9vbCBpcDZfaWdub3JlX2xpbmtkb3duKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pZ21wLmMgYi9uZXQvaXB2NC9pZ21wLmMKaW5kZXggYjYzMzdhNDdjMTQxODUuLjk1NzAxM2U3ZjdhMjVmIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pZ21wLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvaWdtcC5jCkBAIC0yMTcsMTMgJiM0MzsyMTcsMTggQEAgc3RhdGljIHZvaWQgaXBfc2ZfbGlzdF9jbGVhcl9hbGwoc3RydWN0IGlwX3NmX2xpc3QgKnBzZikKIAogc3RhdGljIHZvaWQgaWdtcF9zdG9wX3RpbWVyKHN0cnVjdCBpcF9tY19saXN0ICppbSkKIHsKJiM0MzsJYm9vbCBwdXQgPSBmYWxzZTsKJiM0MzsKIAlzcGluX2xvY2tfYmgoJmFtcDtpbS0mZ3Q7bG9jayk7CiAJaWYgKHRpbWVyX2RlbGV0ZSgmYW1wO2ltLSZndDt0aW1lcikpCi0JCXJlZmNvdW50X2RlYygmYW1wO2ltLSZndDtyZWZjbnQpOwomIzQzOwkJcHV0ID0gdHJ1ZTsKIAlXUklURV9PTkNFKGltLSZndDt0bV9ydW5uaW5nLCAwKTsKIAlXUklURV9PTkNFKGltLSZndDtyZXBvcnRlciwgMCk7CiAJaW0tJmd0O3Vuc29saWNpdF9jb3VudCA9IDA7CiAJc3Bpbl91bmxvY2tfYmgoJmFtcDtpbS0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CWlmIChwdXQpCiYjNDM7CQlpcF9tYV9wdXQoaW0pOwogfQogCiAvKiBJdCBtdXN0IGJlIGNhbGxlZCB3aXRoIGxvY2tlZCBpbS0mZ3Q7bG9jayAqLwpAQCAtMjQ4LDIwICYjNDM7MjUzLDI2IEBAIHN0YXRpYyB2b2lkIGlnbXBfZ3Ffc3RhcnRfdGltZXIoc3RydWN0IGluX2RldmljZSAqaW5fZGV2KQogCQlyZXR1cm47CiAKIAlpbl9kZXYtJmd0O21yX2dxX3J1bm5pbmcgPSAxOwotCWlmICghbW9kX3RpbWVyKCZhbXA7aW5fZGV2LSZndDttcl9ncV90aW1lciwgZXhwKSkKLQkJaW5fZGV2X2hvbGQoaW5fZGV2KTsKJiM0MzsJaWYgKGluX2Rldl9ob2xkX3NhZmUoaW5fZGV2KSkgewomIzQzOwkJaWYgKG1vZF90aW1lcigmYW1wO2luX2Rldi0mZ3Q7bXJfZ3FfdGltZXIsIGV4cCkpCiYjNDM7CQkJaW5fZGV2X3B1dChpbl9kZXYpOwomIzQzOwl9CiB9CiAKIHN0YXRpYyB2b2lkIGlnbXBfaWZjX3N0YXJ0X3RpbWVyKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldiwgaW50IGRlbGF5KQogewotCWludCB0diA9IGdldF9yYW5kb21fdTMyX2JlbG93KGRlbGF5KTsKJiM0MzsJaWYgKGluX2Rldl9ob2xkX3NhZmUoaW5fZGV2KSkgewomIzQzOwkJaW50IHR2ID0gZ2V0X3JhbmRvbV91MzJfYmVsb3coZGVsYXkpOwogCi0JaWYgKCFtb2RfdGltZXIoJmFtcDtpbl9kZXYtJmd0O21yX2lmY190aW1lciwgamlmZmllcyYjNDM7dHYmIzQzOzIpKQotCQlpbl9kZXZfaG9sZChpbl9kZXYpOwomIzQzOwkJaWYgKG1vZF90aW1lcigmYW1wO2luX2Rldi0mZ3Q7bXJfaWZjX3RpbWVyLCBqaWZmaWVzICYjNDM7IHR2ICYjNDM7IDIpKQomIzQzOwkJCWluX2Rldl9wdXQoaW5fZGV2KTsKJiM0MzsJfQogfQogCiBzdGF0aWMgdm9pZCBpZ21wX21vZF90aW1lcihzdHJ1Y3QgaXBfbWNfbGlzdCAqaW0sIGludCBtYXhfZGVsYXkpCiB7CiYjNDM7CWJvb2wgcHV0ID0gZmFsc2U7CiYjNDM7CiAJc3Bpbl9sb2NrX2JoKCZhbXA7aW0tJmd0O2xvY2spOwogCWltLSZndDt1bnNvbGljaXRfY291bnQgPSAwOwogCWlmICh0aW1lcl9kZWxldGUoJmFtcDtpbS0mZ3Q7dGltZXIpKSB7CkBAIC0yNzEsMTAgJiM0MzsyODIsMTMgQEAgc3RhdGljIHZvaWQgaWdtcF9tb2RfdGltZXIoc3RydWN0IGlwX21jX2xpc3QgKmltLCBpbnQgbWF4X2RlbGF5KQogCQkJc3Bpbl91bmxvY2tfYmgoJmFtcDtpbS0mZ3Q7bG9jayk7CiAJCQlyZXR1cm47CiAJCX0KLQkJcmVmY291bnRfZGVjKCZhbXA7aW0tJmd0O3JlZmNudCk7CiYjNDM7CQlwdXQgPSB0cnVlOwogCX0KIAlpZ21wX3N0YXJ0X3RpbWVyKGltLCBtYXhfZGVsYXkpOwogCXNwaW5fdW5sb2NrX2JoKCZhbXA7aW0tJmd0O2xvY2spOwomIzQzOwomIzQzOwlpZiAocHV0KQomIzQzOwkJaXBfbWFfcHV0KGltKTsKIH0KIAogCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9tY2FzdC5jIGIvbmV0L2lwdjYvbWNhc3QuYwppbmRleCAwNGI4MTFiM2JlOTc4ZS4uNGQyYjkzNzdiYTJkZTUgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L21jYXN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvbWNhc3QuYwpAQCAtMTA4Myw4ICYjNDM7MTA4MywxMCBAQCBzdGF0aWMgdm9pZCBtbGRfZ3Ffc3RhcnRfd29yayhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KQogCW1jX2Fzc2VydF9sb2NrZWQoaWRldik7CiAKIAlpZGV2LSZndDttY19ncV9ydW5uaW5nID0gMTsKLQlpZiAoIW1vZF9kZWxheWVkX3dvcmsobWxkX3dxLCAmYW1wO2lkZXYtJmd0O21jX2dxX3dvcmssIHR2ICYjNDM7IDIpKQotCQlpbjZfZGV2X2hvbGQoaWRldik7CiYjNDM7CWlmIChpbjZfZGV2X2hvbGRfc2FmZShpZGV2KSkgewomIzQzOwkJaWYgKG1vZF9kZWxheWVkX3dvcmsobWxkX3dxLCAmYW1wO2lkZXYtJmd0O21jX2dxX3dvcmssIHR2ICYjNDM7IDIpKQomIzQzOwkJCWluNl9kZXZfcHV0KGlkZXYpOwomIzQzOwl9CiB9CiAKIHN0YXRpYyB2b2lkIG1sZF9ncV9zdG9wX3dvcmsoc3RydWN0IGluZXQ2X2RldiAqaWRldikKQEAgLTExMDIsOCAmIzQzOzExMDQsMTAgQEAgc3RhdGljIHZvaWQgbWxkX2lmY19zdGFydF93b3JrKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYsIHVuc2lnbmVkIGxvbmcgZGVsYXkpCiAKIAltY19hc3NlcnRfbG9ja2VkKGlkZXYpOwogCi0JaWYgKCFtb2RfZGVsYXllZF93b3JrKG1sZF93cSwgJmFtcDtpZGV2LSZndDttY19pZmNfd29yaywgdHYgJiM0MzsgMikpCi0JCWluNl9kZXZfaG9sZChpZGV2KTsKJiM0MzsJaWYgKGluNl9kZXZfaG9sZF9zYWZlKGlkZXYpKSB7CiYjNDM7CQlpZiAobW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsICZhbXA7aWRldi0mZ3Q7bWNfaWZjX3dvcmssIHR2ICYjNDM7IDIpKQomIzQzOwkJCWluNl9kZXZfcHV0KGlkZXYpOwomIzQzOwl9CiB9CiAKIHN0YXRpYyB2b2lkIG1sZF9pZmNfc3RvcF93b3JrKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpCkBAIC0xMTIxLDggJiM0MzsxMTI1LDEwIEBAIHN0YXRpYyB2b2lkIG1sZF9kYWRfc3RhcnRfd29yayhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2LCB1bnNpZ25lZCBsb25nIGRlbGF5KQogCiAJbWNfYXNzZXJ0X2xvY2tlZChpZGV2KTsKIAotCWlmICghbW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsICZhbXA7aWRldi0mZ3Q7bWNfZGFkX3dvcmssIHR2ICYjNDM7IDIpKQotCQlpbjZfZGV2X2hvbGQoaWRldik7CiYjNDM7CWlmIChpbjZfZGV2X2hvbGRfc2FmZShpZGV2KSkgewomIzQzOwkJaWYgKG1vZF9kZWxheWVkX3dvcmsobWxkX3dxLCAmYW1wO2lkZXYtJmd0O21jX2RhZF93b3JrLCB0diAmIzQzOyAyKSkKJiM0MzsJCQlpbjZfZGV2X3B1dChpZGV2KTsKJiM0MzsJfQogfQogCiBzdGF0aWMgdm9pZCBtbGRfZGFkX3N0b3Bfd29yayhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KQpAQCAtMTM5NSwxOCAmIzQzOzE0MDEsMjMgQEAgc3RhdGljIHZvaWQgbWxkX3Byb2Nlc3NfdjIoc3RydWN0IGluZXQ2X2RldiAqaWRldiwgc3RydWN0IG1sZDJfcXVlcnkgKm1sZCwKIHZvaWQgaWdtcDZfZXZlbnRfcXVlcnkoc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2ID0gX19pbjZfZGV2X2dldChza2ItJmd0O2Rldik7CiYjNDM7CWJvb2wgcHV0ID0gZmFsc2U7CiAKIAlpZiAoIWlkZXYgfHwgaWRldi0mZ3Q7ZGVhZCkKIAkJZ290byBvdXQ7CiAKIAlzcGluX2xvY2tfYmgoJmFtcDtpZGV2LSZndDttY19xdWVyeV9sb2NrKTsKLQlpZiAoc2tiX3F1ZXVlX2xlbigmYW1wO2lkZXYtJmd0O21jX3F1ZXJ5X3F1ZXVlKSAmbHQ7IE1MRF9NQVhfU0tCUykgewomIzQzOwlpZiAoc2tiX3F1ZXVlX2xlbigmYW1wO2lkZXYtJmd0O21jX3F1ZXJ5X3F1ZXVlKSAmbHQ7IE1MRF9NQVhfU0tCUyAmYW1wOyZhbXA7CiYjNDM7CSAgICBpbjZfZGV2X2hvbGRfc2FmZShpZGV2KSkgewogCQlfX3NrYl9xdWV1ZV90YWlsKCZhbXA7aWRldi0mZ3Q7bWNfcXVlcnlfcXVldWUsIHNrYik7Ci0JCWlmICghbW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsICZhbXA7aWRldi0mZ3Q7bWNfcXVlcnlfd29yaywgMCkpCi0JCQlpbjZfZGV2X2hvbGQoaWRldik7CiYjNDM7CQlpZiAobW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsICZhbXA7aWRldi0mZ3Q7bWNfcXVlcnlfd29yaywgMCkpCiYjNDM7CQkJcHV0ID0gdHJ1ZTsKIAkJc2tiID0gTlVMTDsKIAl9CiAJc3Bpbl91bmxvY2tfYmgoJmFtcDtpZGV2LSZndDttY19xdWVyeV9sb2NrKTsKJiM0MzsKJiM0MzsJaWYgKHB1dCkKJiM0MzsJCWluNl9kZXZfcHV0KGlkZXYpOwogb3V0OgogCWtmcmVlX3NrYihza2IpOwogfQpAQCAtMTU3MCwxOCAmIzQzOzE1ODEsMjMgQEAgc3RhdGljIHZvaWQgbWxkX3F1ZXJ5X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogdm9pZCBpZ21wNl9ldmVudF9yZXBvcnQoc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2ID0gX19pbjZfZGV2X2dldChza2ItJmd0O2Rldik7CiYjNDM7CWJvb2wgcHV0ID0gZmFsc2U7CiAKIAlpZiAoIWlkZXYgfHwgaWRldi0mZ3Q7ZGVhZCkKIAkJZ290byBvdXQ7CiAKIAlzcGluX2xvY2tfYmgoJmFtcDtpZGV2LSZndDttY19yZXBvcnRfbG9jayk7Ci0JaWYgKHNrYl9xdWV1ZV9sZW4oJmFtcDtpZGV2LSZndDttY19yZXBvcnRfcXVldWUpICZsdDsgTUxEX01BWF9TS0JTKSB7CiYjNDM7CWlmIChza2JfcXVldWVfbGVuKCZhbXA7aWRldi0mZ3Q7bWNfcmVwb3J0X3F1ZXVlKSAmbHQ7IE1MRF9NQVhfU0tCUyAmYW1wOyZhbXA7CiYjNDM7CSAgICBpbjZfZGV2X2hvbGRfc2FmZShpZGV2KSkgewogCQlfX3NrYl9xdWV1ZV90YWlsKCZhbXA7aWRldi0mZ3Q7bWNfcmVwb3J0X3F1ZXVlLCBza2IpOwotCQlpZiAoIW1vZF9kZWxheWVkX3dvcmsobWxkX3dxLCAmYW1wO2lkZXYtJmd0O21jX3JlcG9ydF93b3JrLCAwKSkKLQkJCWluNl9kZXZfaG9sZChpZGV2KTsKJiM0MzsJCWlmIChtb2RfZGVsYXllZF93b3JrKG1sZF93cSwgJmFtcDtpZGV2LSZndDttY19yZXBvcnRfd29yaywgMCkpCiYjNDM7CQkJcHV0ID0gdHJ1ZTsKIAkJc2tiID0gTlVMTDsKIAl9CiAJc3Bpbl91bmxvY2tfYmgoJmFtcDtpZGV2LSZndDttY19yZXBvcnRfbG9jayk7CiYjNDM7CiYjNDM7CWlmIChwdXQpCiYjNDM7CQlpbjZfZGV2X3B1dChpZGV2KTsKIG91dDoKIAlrZnJlZV9za2Ioc2tiKTsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMyNAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDMzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDb3JlIE5ldHdvcmtpbmcgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIGhhbmRsaW5nIG9mIElHTVAgKElQdjQgbXVsdGljYXN0KSBhbmQgTUxEIChJUHY2IG11bHRpY2FzdCkgdGltZXJzIGFuZCB3b3JrcXVldWVzLiBUaGUgY29yZSBjaGFuZ2UgaXMgdG8gcmVwbGFjZSBgaW5fZGV2X2hvbGRgIGFuZCBgaW42X2Rldl9ob2xkYCB3aXRoIGBpbl9kZXZfaG9sZF9zYWZlYCBhbmQgYGluNl9kZXZfaG9sZF9zYWZlYCwgbGV2ZXJhZ2luZyBgcmVmY291bnRfaW5jX25vdF96ZXJvYCBpbnN0ZWFkLiBQbHVzLCBpdCYjMzk7cyBkZWZlcnJpbmcgYGlwX21hX3B1dGAgYW5kIGBpbjZfZGV2X3B1dGAgb3V0c2lkZSBvZiBzcGlubG9ja3MgaW4gc29tZSBzY2VuYXJpb3MuIEZ1bmN0aW9uYWxseSwgdGhpcyBpbXBhY3RzIGhvdyB0aGUgbmV0d29ya2luZyBzdGFjayBoYW5kbGVzIHRoZXNlIG11bHRpY2FzdCBwcm90b2NvbHMgYXQgdGhlaXIgY29yZS4KClRoZSBhaW0gaGVyZSBpcyBjbGVhcmx5IHRvIGVsaW1pbmF0ZSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmVmY291bnQgaXNzdWVzIHRoYXQgY291bGQgYXJpc2Ugd2hlbiB0aW1lcnMgb3Igd29ya3F1ZXVlcyBhcmUgYWN0aXZlIGFuZCBzY2hlZHVsZWQgZHVyaW5nIGEgZGV2aWNlJiMzOTtzIGRlc3RydWN0aW9uLiBUaGlzIGlzIHNtYXJ0OyByZXNvdXJjZSBtYW5hZ2VtZW50IGluIHRoaXMgYXJlYSBjYW4gYmUgdHJpY2t5LgoKTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBjb25maWdzIHJlbGF0ZWQgdG8gSUdNUCBhbmQgTUxEIGFyZSBpbiBwbGFjZS4gSUdNUCBpcyBuYXR1cmFsbHkgdGllZCB0byBJUHY0IG11bHRpY2FzdCwgd2hpY2ggbWVhbnMgSSBzaG91bGQgYmUgbG9va2luZyBhdCBgQ09ORklHX0lQX01VTFRJQ0FTVGAuIEZvciBNTEQsIHdoaWNoIGlzIElQdjYmIzM5O3MgbXVsdGljYXN0IGNvdW50ZXJwYXJ0LCBJJiMzOTttIGV4cGVjdGluZyBgQ09ORklHX0lQVjZgIHRvIGJlIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24uCgpMZXQmIzM5O3MgZmluZCB0aGUgcmVsZXZhbnQgcGllY2VzIG9mIGNvZGUuIEkgbmVlZCB0byBzZWFyY2ggZm9yIGFsbCBpbnN0YW5jZXMgb2YgYGlnbXBfc3RvcF90aW1lcmAsIGBpZ21wX2dxX3N0YXJ0X3RpbWVyYCwgYGlnbXBfaWZjX3N0YXJ0X3RpbWVyYCwgYGlnbXBfbW9kX3RpbWVyYCwgYG1sZF9ncV9zdGFydF93b3JrYCwgYG1sZF9pZmNfc3RhcnRfd29ya2AsIGBtbGRfZGFkX3N0YXJ0X3dvcmtgLCBgaWdtcDZfZXZlbnRfcXVlcnlgLCBhbmQgYGlnbXA2X2V2ZW50X3JlcG9ydGAuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSB0aW1lciBhbmQgd29ya3F1ZXVlIG1lY2hhbmljcyB0aGlzIHBhdGNoIHRvdWNoZXMuCgpGaW5hbGx5LCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhvc2UgY29uZmlndXJhdGlvbnMgYXJlIGNvcnJlY3RseSBzZXQuIFRoaXMgd2lsbCBiZSB0aGUga2V5IHRvIGFzc2Vzc2luZyBpZiB0aGUgY2hhbmdlcyBhcmUgY29ycmVjdGx5IGltcGxlbWVudGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lnbXBfc3RvcF90aW1lciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9pZ21wLmM9MjAxPXN0YXRpYyB2b2lkIGlwX3NmX2xpc3RfY2xlYXJfYWxsKHN0cnVjdCBpcF9zZl9saXN0ICpwc2YpXG4tLVxubmV0L2lwdjQvaWdtcC5jLTIxNy1cbm5ldC9pcHY0L2lnbXAuYzoyMTg6c3RhdGljIHZvaWQgaWdtcF9zdG9wX3RpbWVyKHN0cnVjdCBpcF9tY19saXN0ICppbSlcbm5ldC9pcHY0L2lnbXAuYy0yMTkte1xuLS1cbm5ldC9pcHY0L2lnbXAuYz05NDk9c3RhdGljIGJvb2wgaWdtcF9oZWFyZF9yZXBvcnQoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgZ3JvdXApXG4tLVxubmV0L2lwdjQvaWdtcC5jLTk2NC1cdFx0aWYgKGltLVx1MDAzZW11bHRpYWRkciA9PSBncm91cCkge1xubmV0L2lwdjQvaWdtcC5jOjk2NTpcdFx0XHRpZ21wX3N0b3BfdGltZXIoaW0pO1xubmV0L2lwdjQvaWdtcC5jLTk2Ni1cdFx0XHRicmVhaztcbi0tXG5uZXQvaXB2NC9pZ21wLmM9MTMyMj1zdGF0aWMgdm9pZCBfX2lnbXBfZ3JvdXBfZHJvcHBlZChzdHJ1Y3QgaXBfbWNfbGlzdCAqaW0sIGdmcF90IGdmcClcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTM0Mi1cdHJlcG9ydGVyID0gUkVBRF9PTkNFKGltLVx1MDAzZXJlcG9ydGVyKTtcbm5ldC9pcHY0L2lnbXAuYzoxMzQzOlx0aWdtcF9zdG9wX3RpbWVyKGltKTtcbm5ldC9pcHY0L2lnbXAuYy0xMzQ0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0NTQKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqS2NvbmZpZyBhbmQgSVBfTVVMVElDQVNUOiBBIFF1aWNrIENoZWNrKioKCk9rYXksIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgYElQX01VTFRJQ0FTVGAgaXMgZW5hYmxlZCBpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIEJlZm9yZSBJIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgY29kZSBpdHNlbGYsIGxldCYjMzk7cyB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgS2NvbmZpZyBmaWxlcy4gVGhhdCYjMzk7cyB0aGUgZmlyc3QgYW5kIG1vc3QgbG9naWNhbCBwbGFjZSB0byB2ZXJpZnkgaWYgdGhpcyBmZWF0dXJlIGlzIGV2ZW4gKmF2YWlsYWJsZSogdG8gbWUgaW4gdGhpcyBidWlsZC4gSSYjMzk7ZCB0eXBpY2FsbHkgc3RhcnQgd2l0aCB0aGUgbW9zdCByZWxldmFudCBLY29uZmlnIGZpbGUgZm9yIG5ldHdvcmsgY29uZmlndXJhdGlvbnMgYW5kIG11bHRpY2FzdCBzdXBwb3J0LCBidXQgSSYjMzk7bGwgbmVlZCB0byBrbm93IHRoZSBzcGVjaWZpYyBwbGF0Zm9ybSB0byBiZSBleGFjdC4gVGhpcyBpcyBhIHByZWxpbWluYXJ5IGNoZWNrIHRvIHJ1bGUgb3V0IGFueSBpbW1lZGlhdGUgaXNzdWVzIG9yIGNvbmZpcm0gaXQmIzM5O3MgYmVlbiBleHBsaWNpdGx5IGRpc2FibGVkLiBJZiBpdCYjMzk7cyBub3QgcHJlc2VudCBvciBkaXNhYmxlZCwgdGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgZWZmb3J0cyBmaXJzdCB0byBmaWd1cmUgb3V0IHRoZSByZWFzb24gYmVoaW5kIHRoYXQgY2hvaWNlLiBJZiBpdCAqaXMqIGVuYWJsZWQsIHRoZW4gSSBjYW4gbW92ZSBvbiB0byB0aGUgYWN0dWFsIGNvZGUuIFRoaXMgaW5pdGlhbCBzdGVwIGNvdWxkIHNhdmUgbWUgYSBsb3Qgb2YgdGltZSBkb3duIHRoZSByb2FkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9NVUxUSUNBU1QmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZy00LSNcbm5ldC9pcHY0L0tjb25maWc6NTpjb25maWcgSVBfTVVMVElDQVNUXG5uZXQvaXB2NC9LY29uZmlnLTYtXHRib29sIFwmIzM0O0lQOiBtdWx0aWNhc3RpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxODo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzYwCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ2hlY2tpbmcgS2NvbmZpZyBmb3IgSVB2NiBTdXBwb3J0KioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSB0aGUgSVB2NiBjb25maWd1cmF0aW9uIHdpdGhpbiB0aGUgY3VycmVudCBLY29uZmlnIHNldHVwLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhlIG9idmlvdXMgZmxhZ3MgYW5kIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIElQdjYg4oCTIGBDT05GSUdfSVBWNmAsIGBDT05GSUdfSVBWNl9TTkRCVUZgLCBwZXJoYXBzIGV2ZW4gdGhlIG1vcmUgZ3JhbnVsYXIgb3B0aW9ucyBmb3Igc3BlY2lmaWMgSVB2NiBleHRlbnNpb25zIG9yIHByb3RvY29sIGltcGxlbWVudGF0aW9ucy4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGRlZmF1bHQgc3RhdGUgb2YgdGhlc2Ugb3B0aW9ucyBhbmQgc2VlIGlmIHRoZXkmIzM5O3JlIHByb3Blcmx5IGd1YXJkZWQgYnkgYW55IGZlYXR1cmUtc3BlY2lmaWMgc2VsZWN0aW9ucyBvciBhcmNoaXRlY3R1cmUgY29uc3RyYWludHMuIElzIHRoZXJlIGFueXRoaW5nIHVudXN1YWwgb3Igbm9uLW9idmlvdXMgdGhhdCBJIG5lZWQgdG8gYmUgb24gdGhlIGxvb2tvdXQgZm9yPyBJJiMzOTtsbCBhbHNvIGdsYW5jZSBhdCBkZXBlbmRlbmNpZXMgdG8gZW5zdXJlIHRoZSBuZWNlc3NhcnkgdW5kZXJseWluZyBuZXR3b3JraW5nIGNvbXBvbmVudHMgYXJlIGluIHBsYWNlLiBHb3QgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcmIzM5O3Mgd2lyZWQgdXAgY29ycmVjdGx5IGJlZm9yZSBJIGNhbiBtb3ZlIGZvcndhcmQuIFRoaXMgaW5pdGlhbCBjaGVjayB3aWxsIGdpdmUgbWUgdGhlIGluZm9ybWF0aW9uIHRvIG1ha2UgYSBxdWljayBkZXRlcm1pbmF0aW9uIGlmIGl0JiMzOTtzIHRoZXJlLCBpZiBpdCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIG9yIGlmIEkgbmVlZCB0byBhZGRyZXNzIGFueSBhcHBhcmVudCBtaXNzaW5nIGNvbmZpZ3VyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUFY2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWctNS1cbm5ldC9pcHY2L0tjb25maWc6NjptZW51Y29uZmlnIElQVjZcbm5ldC9pcHY2L0tjb25maWctNy1cdGJvb2wgXCYjMzQ7VGhlIElQdjYgcHJvdG9jb2xcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTE5PWlmIElQVjZcbm5ldC9pcHY2L0tjb25maWctMjAtXG5uZXQvaXB2Ni9LY29uZmlnOjIxOmNvbmZpZyBJUFY2X1JPVVRFUl9QUkVGXG5uZXQvaXB2Ni9LY29uZmlnLTIyLVx0Ym9vbCBcJiMzNDtJUHY2OiBSb3V0ZXIgUHJlZmVyZW5jZSAoUkZDIDQxOTEpIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTMwLVxubmV0L2lwdjYvS2NvbmZpZzozMTpjb25maWcgSVBWNl9ST1VURV9JTkZPXG5uZXQvaXB2Ni9LY29uZmlnLTMyLVx0Ym9vbCBcJiMzNDtJUHY2OiBSb3V0ZSBJbmZvcm1hdGlvbiAoUkZDIDQxOTEpIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTM4LVxubmV0L2lwdjYvS2NvbmZpZzozOTpjb25maWcgSVBWNl9PUFRJTUlTVElDX0RBRFxubmV0L2lwdjYvS2NvbmZpZy00MC1cdGJvb2wgXCYjMzQ7SVB2NjogRW5hYmxlIFJGQyA0NDI5IE9wdGltaXN0aWMgREFEXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZz0xMDI9Y29uZmlnIElORVQ2X0lQQ09NUFxuLS1cbm5ldC9pcHY2L0tjb25maWctMTExLVxubmV0L2lwdjYvS2NvbmZpZzoxMTI6Y29uZmlnIElQVjZfTUlQNlxubmV0L2lwdjYvS2NvbmZpZy0xMTMtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBNb2JpbGl0eVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMTE5LVxubmV0L2lwdjYvS2NvbmZpZzoxMjA6Y29uZmlnIElQVjZfSUxBXG5uZXQvaXB2Ni9LY29uZmlnLTEyMS1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IElkZW50aWZpZXIgTG9jYXRvciBBZGRyZXNzaW5nIChJTEEpXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZz0xNDY9Y29uZmlnIElORVQ2X1RVTk5FTFxuLS1cbm5ldC9pcHY2L0tjb25maWctMTQ5LVxubmV0L2lwdjYvS2NvbmZpZzoxNTA6Y29uZmlnIElQVjZfVlRJXG5uZXQvaXB2Ni9LY29uZmlnLTE1MS1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgKHNlY3VyZSkgSVB2NjogdHVubmVsaW5nXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xNjEtXG5uZXQvaXB2Ni9LY29uZmlnOjE2Mjpjb25maWcgSVBWNl9TSVRcbm5ldC9pcHY2L0tjb25maWctMTYzLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogSVB2Ni1pbi1JUHY0IHR1bm5lbCAoU0lUIGRyaXZlcilcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE3Ni1cbm5ldC9pcHY2L0tjb25maWc6MTc3OmNvbmZpZyBJUFY2X1NJVF82UkRcbm5ldC9pcHY2L0tjb25maWctMTc4LVx0Ym9vbCBcJiMzNDtJUHY2OiBJUHY2IFJhcGlkIERlcGxveW1lbnQgKDZSRClcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE5NS1cbm5ldC9pcHY2L0tjb25maWc6MTk2OmNvbmZpZyBJUFY2X05ESVNDX05PREVUWVBFXG5uZXQvaXB2Ni9LY29uZmlnLTE5Ny1cdGJvb2xcbm5ldC9pcHY2L0tjb25maWctMTk4LVxubmV0L2lwdjYvS2NvbmZpZzoxOTk6Y29uZmlnIElQVjZfVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTIwMC1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IElQLWluLUlQdjYgdHVubmVsIChSRkMyNDczKVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjA5LVxubmV0L2lwdjYvS2NvbmZpZzoyMTA6Y29uZmlnIElQVjZfR1JFXG5uZXQvaXB2Ni9LY29uZmlnLTIxMS1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IEdSRSB0dW5uZWxcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTIyNy1cbm5ldC9pcHY2L0tjb25maWc6MjI4OmNvbmZpZyBJUFY2X0ZPVVxubmV0L2lwdjYvS2NvbmZpZy0yMjktXHR0cmlzdGF0ZVxuLS1cbm5ldC9pcHY2L0tjb25maWctMjMxLVxubmV0L2lwdjYvS2NvbmZpZzoyMzI6Y29uZmlnIElQVjZfRk9VX1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0yMzMtXHR0cmlzdGF0ZVxuLS1cbm5ldC9pcHY2L0tjb25maWctMjM2LVxubmV0L2lwdjYvS2NvbmZpZzoyMzc6Y29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2Ni9LY29uZmlnLTIzOC1cdGJvb2wgXCYjMzQ7SVB2NjogTXVsdGlwbGUgUm91dGluZyBUYWJsZXNcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI0Mi1cbm5ldC9pcHY2L0tjb25maWc6MjQzOmNvbmZpZyBJUFY2X1NVQlRSRUVTXG5uZXQvaXB2Ni9LY29uZmlnLTI0NC1cdGJvb2wgXCYjMzQ7SVB2Njogc291cmNlIGFkZHJlc3MgYmFzZWQgcm91dGluZ1wmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjU2LVxubmV0L2lwdjYvS2NvbmZpZzoyNTc6Y29uZmlnIElQVjZfTVJPVVRFXG5uZXQvaXB2Ni9LY29uZmlnLTI1OC1cdGJvb2wgXCYjMzQ7SVB2NjogbXVsdGljYXN0IHJvdXRpbmdcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI2NC1cbm5ldC9pcHY2L0tjb25maWc6MjY1OmNvbmZpZyBJUFY2X01ST1VURV9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY2L0tjb25maWctMjY2LVx0Ym9vbCBcJiMzNDtJUHY2OiBtdWx0aWNhc3QgcG9saWN5IHJvdXRpbmdcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI3OC1cbm5ldC9pcHY2L0tjb25maWc6Mjc5OmNvbmZpZyBJUFY2X1BJTVNNX1YyXG5uZXQvaXB2Ni9LY29uZmlnLTI4MC1cdGJvb2wgXCYjMzQ7SVB2NjogUElNLVNNIHZlcnNpb24gMiBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yODUtXG5uZXQvaXB2Ni9LY29uZmlnOjI4Njpjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTI4Ny1cdGJvb2wgXCYjMzQ7SVB2NjogU2VnbWVudCBSb3V0aW5nIEhlYWRlciBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI5OS1cbm5ldC9pcHY2L0tjb25maWc6MzAwOmNvbmZpZyBJUFY2X1NFRzZfSE1BQ1xubmV0L2lwdjYvS2NvbmZpZy0zMDEtXHRib29sIFwmIzM0O0lQdjY6IFNlZ21lbnQgUm91dGluZyBITUFDIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTMxMS1cbm5ldC9pcHY2L0tjb25maWc6MzEyOmNvbmZpZyBJUFY2X1NFRzZfQlBGXG5uZXQvaXB2Ni9LY29uZmlnLTMxMy1cdGRlZl9ib29sIHlcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTMxNi1cbm5ldC9pcHY2L0tjb25maWc6MzE3OmNvbmZpZyBJUFY2X1JQTF9MV1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0zMTgtXHRib29sIFwmIzM0O0lQdjY6IFJQTCBTb3VyY2UgUm91dGluZyBIZWFkZXIgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMzI3LVxubmV0L2lwdjYvS2NvbmZpZzozMjg6Y29uZmlnIElQVjZfSU9BTTZfTFdUVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMzI5LVx0Ym9vbCBcJiMzNDtJUHY2OiBJT0FNIFByZS1hbGxvY2F0ZWQgVHJhY2UgaW5zZXJ0aW9uIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxODo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTY5CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMjQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBQYXRjaCBvbiBJR01QIGFuZCBNTEQgVGltZXJzIGFuZCBXb3JrcXVldWVzKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIHRoZSB0aW1pbmcgbWVjaGFuaXNtcyBmb3IgSUdNUCBhbmQgTUxELCBzcGVjaWZpY2FsbHkgbW9kaWZ5aW5nIGBpZ21wX3N0b3BfdGltZXJgLCBgaWdtcF9ncV9zdGFydF90aW1lcmAsIGBpZ21wX2lmY19zdGFydF90aW1lcmAsIGBpZ21wX21vZF90aW1lcmAgaW4gYG5ldC9pcHY0L2lnbXAuY2AgYW5kIGEgYnVuY2ggb2Ygd29ya3F1ZXVlcyByZWxhdGVkIHRvIE1MRCBpbiBgbmV0L2lwdjYvbWNhc3QuY2A6IGBtbGRfZ3Ffc3RhcnRfd29ya2AsIGBtbGRfZ3Ffc3RvcF93b3JrYCwgYG1sZF9pZmNfc3RhcnRfd29ya2AsIGBtbGRfaWZjX3N0b3Bfd29ya2AsIGBtbGRfZGFkX3N0YXJ0X3dvcmtgLCBgbWxkX2RhZF9zdG9wX3dvcmtgLCBhbG9uZyB3aXRoIGBpZ21wNl9ldmVudF9xdWVyeWAgYW5kIGBpZ21wNl9ldmVudF9yZXBvcnRgLiBJbnRlcmVzdGluZy4gSXQmIzM5O3MgdG91Y2hpbmcgYm90aCBJUHY0IChJR01QKSBhbmQgSVB2NiAoTUxEKSBtdWx0aWNhc3QsIHNvIHdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aXRoIGFueSBwb3RlbnRpYWwgY3Jvc3MtcHJvdG9jb2wgaW50ZXJhY3Rpb25zLgoKR2l2ZW4gdGhhdCBNTEQgaXMgcGFydCBvZiBJUHY2IG11bHRpY2FzdCwgaXQmIzM5O3Mgd29ydGh3aGlsZSB0byBzZWUgaWYgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHBlcnRhaW4gdG8gTUxEIGl0c2VsZi4gSSBzaG91bGQgY2hlY2sgaWYgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyBjb25maWcga25vYiBmb3IgSVB2NiBtdWx0aWNhc3QgaW4gZ2VuZXJhbC4gSSBzZWUgYElQVjZfTVJPVVRFYCBidXQgdGhhdCYjMzk7cyBmb3IgbXVsdGljYXN0ICpyb3V0aW5nKiByYXRoZXIgdGhhbiB0aGUgTUxEIHByb3RvY29sIGl0c2VsZi4gTUxEIHNob3VsZCBiZSBlbmFibGVkIGFzIHBhcnQgb2YgYSBzdGFuZGFyZCBJUHY2IHN0YWNrLiBUbyBiZSBjb21wbGV0ZWx5IHN1cmUsIEkmIzM5O2xsIGRvdWJsZS1jaGVjayB0aGUgYG5ldC9pcHY2L21jYXN0LmNgIGZpbGUgYW5kIGl0cyBNYWtlZmlsZSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBidWlsZC10aW1lIG9yIGNvbXBpbGUtdGltZSBkZXBlbmRlbmNpZXMgb3Igb3B0aW9ucyB0aGF0IGNvdWxkIGluZmx1ZW5jZSB0aGlzIHBhdGNoJiMzOTtzIGJlaGF2aW9yLiBJIG5lZWQgdG8gYmUgY2VydGFpbiBhYm91dCB0aGUgZGVwZW5kZW5jaWVzIGJlZm9yZSBzaWduaW5nIG9mZiBvbiB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxODo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttY2FzdC5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA4OTggbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmFyY2gvc2gvZHJpdmVycy9wY2kvTWFrZWZpbGU9MTI9b2JqLSQoQ09ORklHX0NQVV9TVUJUWVBFX1NINzc4NilcdCYjNDM7PSBwY2llLXNoNzc4Ni5vIG9wcy1zaDc3ODYub1xuYXJjaC9zaC9kcml2ZXJzL3BjaS9NYWtlZmlsZS0xMy1cbmFyY2gvc2gvZHJpdmVycy9wY2kvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX1NIX0RSRUFNQ0FTVClcdFx0JiM0Mzs9IG9wcy1kcmVhbWNhc3QubyBmaXh1cHMtZHJlYW1jYXN0Lm8gXFxcbmFyY2gvc2gvZHJpdmVycy9wY2kvTWFrZWZpbGU6MTU6XHRcdFx0XHRcdCAgIHBjaS1kcmVhbWNhc3Qub1xuYXJjaC9zaC9kcml2ZXJzL3BjaS9NYWtlZmlsZS0xNi1vYmotJChDT05GSUdfU0hfU0VDVVJFRURHRTU0MTApXHRcdCYjNDM7PSBmaXh1cHMtc25hcGdlYXIub1xuLS1cbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYz01MT1zdGF0aWMgaW50IGNuX2ZpbHRlcihzdHJ1Y3Qgc29jayAqZHNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB2b2lkICpkYXRhKVxuLS1cbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYy01My1cdF9fdTMyIHdoYXQsIGV4aXRfY29kZSwgKnB0cjtcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYzo1NDpcdGVudW0gcHJvY19jbl9tY2FzdF9vcCBtY19vcDtcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYy01NS1cdHVpbnRwdHJfdCB2YWw7XG4tLVxuZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jLTYzLVx0dmFsID0gKChzdHJ1Y3QgcHJvY19pbnB1dCAqKShkc2stXHUwMDNlc2tfdXNlcl9kYXRhKSktXHUwMDNlZXZlbnRfdHlwZTtcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYzo2NDpcdG1jX29wID0gKChzdHJ1Y3QgcHJvY19pbnB1dCAqKShkc2stXHUwMDNlc2tfdXNlcl9kYXRhKSktXHUwMDNlbWNhc3Rfb3A7XG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmMtNjUtXG4tLVxuZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jPTM5NT1zdGF0aWMgdm9pZCBjbl9wcm9jX21jYXN0X2N0bChzdHJ1Y3QgY25fbXNnICptc2csXG4tLVxuZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jLTM5Ny17XG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmM6Mzk4Olx0ZW51bSBwcm9jX2NuX21jYXN0X29wIG1jX29wID0gMCwgcHJldl9tY19vcCA9IDA7XG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmMtMzk5LVx0c3RydWN0IHByb2NfaW5wdXQgKnBpbnB1dCA9IE5VTEw7XG4tLVxuZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jLTQxNC1cdFx0cGlucHV0ID0gKHN0cnVjdCBwcm9jX2lucHV0ICopbXNnLVx1MDAzZWRhdGE7XG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmM6NDE1Olx0XHRtY19vcCA9IHBpbnB1dC1cdTAwM2VtY2FzdF9vcDtcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYy00MTYtXHRcdGV2X3R5cGUgPSBwaW5wdXQtXHUwMDNlZXZlbnRfdHlwZTtcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYy00MTctXHR9IGVsc2UgaWYgKG1zZy1cdTAwM2VsZW4gPT0gc2l6ZW9mKG1jX29wKSkge1xuZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jOjQxODpcdFx0bWNfb3AgPSAqKChlbnVtIHByb2NfY25fbWNhc3Rfb3AgKiltc2ctXHUwMDNlZGF0YSk7XG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmMtNDE5LVx0XHRldl90eXBlID0gUFJPQ19FVkVOVF9BTEw7XG4tLVxuZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jLTQzOS1cdFx0XHRwcmV2X21jX29wID1cbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYzo0NDA6XHRcdFx0KChzdHJ1Y3QgcHJvY19pbnB1dCAqKShzay1cdTAwM2Vza191c2VyX2RhdGEpKS1cdTAwM2VtY2FzdF9vcDtcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYy00NDEtXHRcdH1cbi0tXG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmMtNDQzLVx0XHRcdGV2X3R5cGU7XG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmM6NDQ0Olx0XHQoKHN0cnVjdCBwcm9jX2lucHV0ICopKHNrLVx1MDAzZXNrX3VzZXJfZGF0YSkpLVx1MDAzZW1jYXN0X29wID0gbWNfb3A7XG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmMtNDQ1LVx0fVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfSU5GSU5JQkFORF9SRE1BVlQpICYjNDM7PSByZG1hdnQub1xuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9NYWtlZmlsZS0xMC1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvTWFrZWZpbGU6MTE6cmRtYXZ0LXkgOj0gdnQubyBhaC5vIGNxLm8gbWFkLm8gbWNhc3QubyBtbWFwLm8gbXIubyBwZC5vIHFwLm8gXFxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvTWFrZWZpbGUtMTItXHRyYy5vIHNycS5vIHRyYWNlLm9cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL01ha2VmaWxlPTQ9cmRtYV9yeGUteSA6PSBcXFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvTWFrZWZpbGUtMjEtXHRyeGVfaWNyYy5vIFxcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL01ha2VmaWxlOjIyOlx0cnhlX21jYXN0Lm8gXFxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvTWFrZWZpbGUtMjMtXHRyeGVfdGFzay5vIFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnguaD0xMzQ1PXN0cnVjdCBibngyeCB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnguaC0xNzkyLVx0LyogTUNBU1Qgb2JqZWN0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeC5oOjE3OTM6XHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqXHRcdFx0bWNhc3Rfb2JqO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnguaC0xNzk0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jPTIxNTc9dm9pZCBibngyeF9zcXVlZXplX29iamVjdHMoc3RydWN0IGJueDJ4ICpicClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy0yMTg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6MjE4NjpcdC8qKioqKioqKioqKioqKioqKiBOb3cgY2xlYW4gbWNhc3Qgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6MjE4NzpcdHJwYXJhbS5tY2FzdF9vYmogPSBcdTAwMjZicC1cdTAwM2VtY2FzdF9vYmo7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy0yMTg4LVx0X19zZXRfYml0KFJBTVJPRF9EUlZfQ0xSX09OTFksIFx1MDAyNnJwYXJhbS5yYW1yb2RfZmxhZ3MpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5oPTExMjI9c3RhdGljIGlubGluZSB2b2lkIGJueDJ4X2luaXRfYnBfb2JqcyhzdHJ1Y3QgYm54MnggKmJwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5oLTExMjctXHQvKiBtdWx0aWNhc3QgY29uZmlndXJhdGlvbiBjb250cm9sbGluZyBvYmplY3QgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5oOjExMjg6XHRibngyeF9pbml0X21jYXN0X29iaihicCwgXHUwMDI2YnAtXHUwMDNlbWNhc3Rfb2JqLCBicC1cdTAwM2VmcC1cdTAwM2VjbF9pZCwgYnAtXHUwMDNlZnAtXHUwMDNlY2lkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmgtMTEyOS1cdFx0XHQgICAgIEJQX0ZVTkMoYnApLCBCUF9GVU5DKGJwKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM9NTI4MD1zdGF0aWMgdm9pZCBibngyeF9oYW5kbGVfbWNhc3RfZXFlKHN0cnVjdCBibngyeCAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTUyODYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM6NTI4NzpcdHJwYXJhbS5tY2FzdF9vYmogPSBcdTAwMjZicC1cdTAwM2VtY2FzdF9vYmo7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtNTI4OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtNTI5MS1cdC8qIENsZWFyIHBlbmRpbmcgc3RhdGUgZm9yIHRoZSBsYXN0IGNvbW1hbmQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYzo1MjkyOlx0YnAtXHUwMDNlbWNhc3Rfb2JqLnJhdy5jbGVhcl9wZW5kaW5nKFx1MDAyNmJwLVx1MDAzZW1jYXN0X29iai5yYXcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTUyOTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtNTI5NC1cdC8qIElmIHRoZXJlIGFyZSBwZW5kaW5nIG1jYXN0IGNvbW1hbmRzIC0gc2VuZCB0aGVtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM6NTI5NTpcdGlmIChicC1cdTAwM2VtY2FzdF9vYmouY2hlY2tfcGVuZGluZyhcdTAwMjZicC1cdTAwM2VtY2FzdF9vYmopKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtNTI5Ni1cdFx0cmMgPSBibngyeF9jb25maWdfbWNhc3QoYnAsIFx1MDAyNnJwYXJhbSwgQk5YMlhfTUNBU1RfQ01EX0NPTlQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz05MzM3PXZvaWQgYm54MnhfY2hpcF9jbGVhbnVwKHN0cnVjdCBibngyeCAqYnAsIGludCB1bmxvYWRfbW9kZSwgYm9vbCBrZWVwX2xpbmspXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTkzOTktXHQvKiBDbGVhbnVwIG11bHRpY2FzdCBjb25maWd1cmF0aW9uICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM6OTQwMDpcdHJwYXJhbS5tY2FzdF9vYmogPSBcdTAwMjZicC1cdTAwM2VtY2FzdF9vYmo7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtOTQwMS1cdHJjID0gYm54MnhfY29uZmlnX21jYXN0KGJwLCBcdTAwMjZycGFyYW0sIEJOWDJYX01DQVNUX0NNRF9ERUwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz0xMjYxOT1zdGF0aWMgaW50IGJueDJ4X3NldF9tY19saXN0X2UxeChzdHJ1Y3QgYm54MnggKmJwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMjYyNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYzoxMjYyNjpcdHJwYXJhbS5tY2FzdF9vYmogPSBcdTAwMjZicC1cdTAwM2VtY2FzdF9vYmo7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTI2MjctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jPTEyNjU0PXN0YXRpYyBpbnQgYm54Mnhfc2V0X21jX2xpc3Qoc3RydWN0IGJueDJ4ICpicClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTI2NjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM6MTI2NjU6XHRycGFyYW0ubWNhc3Rfb2JqID0gXHUwMDI2YnAtXHUwMDNlbWNhc3Rfb2JqO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEyNjY2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MjY0OD1zdGF0aWMgaW50IGJueDJ4X21jYXN0X3dhaXQoc3RydWN0IGJueDJ4ICpicCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MjY0OTpcdFx0XHQgICAgc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMjY1MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0yNjcxPXN0YXRpYyBpbnQgYm54MnhfbWNhc3RfZW5xdWV1ZV9jbWQoc3RydWN0IGJueDJ4ICpicCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MjY3MjpcdFx0XHRcdCAgIHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTI2NzMtXHRcdFx0XHQgICBzdHJ1Y3QgYm54MnhfbWNhc3RfcmFtcm9kX3BhcmFtcyAqcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTI3NzYtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjI3Nzc6c3RhdGljIGlubGluZSBpbnQgYm54MnhfbWNhc3RfZ2V0X25leHRfYmluKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8sIGludCBsYXN0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0yNzc4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTI4MDMtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjI4MDQ6c3RhdGljIGlubGluZSBpbnQgYm54MnhfbWNhc3RfY2xlYXJfZmlyc3RfYmluKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTI4MDUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMjgxMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MjgxNDpzdGF0aWMgaW5saW5lIHU4IGJueDJ4X21jYXN0X2dldF9yeF90eF9mbGFnKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTI4MTUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MjgzMD1zdGF0aWMgdm9pZCBibngyeF9tY2FzdF9zZXRfb25lX3J1bGVfZTIoc3RydWN0IGJueDJ4ICpicCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MjgzMTpcdFx0XHRcdFx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbywgaW50IGlkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMjgzMi1cdFx0XHRcdFx0dW5pb24gYm54MnhfbWNhc3RfY29uZmlnX2RhdGEgKmNmZ19kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MjkwMz1zdGF0aWMgaW5saW5lIGludCBibngyeF9tY2FzdF9oYW5kbGVfcmVzdG9yZV9jbWRfZTIoXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjI5MDQ6XHRzdHJ1Y3QgYm54MnggKmJwLCBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvICwgaW50IHN0YXJ0X2JpbixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMjkwNS1cdGludCAqcmRhdGFfaWR4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MjkzND1zdGF0aWMgaW5saW5lIHZvaWQgYm54MnhfbWNhc3RfaGRsX3BlbmRpbmdfYWRkX2UyKHN0cnVjdCBibngyeCAqYnAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjI5MzU6XHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLCBzdHJ1Y3QgYm54MnhfcGVuZGluZ19tY2FzdF9jbWQgKmNtZF9wb3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTI5MzYtXHRpbnQgKmxpbmVfaWR4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9Mjk2OT1zdGF0aWMgaW5saW5lIHZvaWQgYm54MnhfbWNhc3RfaGRsX3BlbmRpbmdfZGVsX2UyKHN0cnVjdCBibngyeCAqYnAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjI5NzA6XHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLCBzdHJ1Y3QgYm54MnhfcGVuZGluZ19tY2FzdF9jbWQgKmNtZF9wb3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTI5NzEtXHRpbnQgKmxpbmVfaWR4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9Mjk5OT1zdGF0aWMgaW5saW5lIHZvaWQgYm54MnhfbWNhc3RfaGRsX3BlbmRpbmdfcmVzdG9yZV9lMihzdHJ1Y3QgYm54MnggKmJwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozMDAwOlx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbywgc3RydWN0IGJueDJ4X3BlbmRpbmdfbWNhc3RfY21kICpjbWRfcG9zLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zMDAxLVx0aW50ICpsaW5lX2lkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTMwMTU9Ym54MnhfbWNhc3RfaGRsX3BlbmRpbmdfc2V0X2UyX2NvbnZlcnQoc3RydWN0IGJueDJ4ICpicCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MzAxNjpcdFx0XHRcdCAgICAgICBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zMDE3LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBibngyeF9wZW5kaW5nX21jYXN0X2NtZCAqY21kX3Bvcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTMwODI9Ym54MnhfbWNhc3RfaGRsX3BlbmRpbmdfc2V0X2UyKHN0cnVjdCBibngyeCAqYnAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjMwODM6XHRcdFx0ICAgICAgIHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMwODQtXHRcdFx0ICAgICAgIHN0cnVjdCBibngyeF9wZW5kaW5nX21jYXN0X2NtZCAqY21kX3Bvcyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTMxMTg9c3RhdGljIGlubGluZSBpbnQgYm54MnhfbWNhc3RfaGFuZGxlX3BlbmRpbmdfY21kc19lMihzdHJ1Y3QgYm54MnggKmJwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzEyMi1cdGludCBjbnQgPSAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozMTIzOlx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyA9IHAtXHUwMDNlbWNhc3Rfb2JqO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zMTI0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MzE2Nz1zdGF0aWMgaW5saW5lIHZvaWQgYm54MnhfbWNhc3RfaGRsX2FkZChzdHJ1Y3QgYm54MnggKmJwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozMTY4Olx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbywgc3RydWN0IGJueDJ4X21jYXN0X3JhbXJvZF9wYXJhbXMgKnAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMxNjktXHRpbnQgKmxpbmVfaWR4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MzE4OD1zdGF0aWMgaW5saW5lIHZvaWQgYm54MnhfbWNhc3RfaGRsX2RlbChzdHJ1Y3QgYm54MnggKmJwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozMTg5Olx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbywgc3RydWN0IGJueDJ4X21jYXN0X3JhbXJvZF9wYXJhbXMgKnAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMxOTAtXHRpbnQgKmxpbmVfaWR4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MzIxOD1zdGF0aWMgaW5saW5lIGludCBibngyeF9tY2FzdF9oYW5kbGVfY3VycmVudF9jbWQoc3RydWN0IGJueDJ4ICpicCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMyMjIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozMjIzOlx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyA9IHAtXHUwMDNlbWNhc3Rfb2JqO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zMjI0LVx0aW50IGNudCA9IHN0YXJ0X2NudDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTMyNTI9c3RhdGljIGludCBibngyeF9tY2FzdF92YWxpZGF0ZV9lMihzdHJ1Y3QgYm54MnggKmJwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzI1NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjMyNTY6XHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvID0gcC1cdTAwM2VtY2FzdF9vYmo7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMyNTctXHRpbnQgcmVnX3N6ID0gby1cdTAwM2VnZXRfcmVnaXN0cnlfc2l6ZShvKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTMzMTA9c3RhdGljIHZvaWQgYm54MnhfbWNhc3RfcmV2ZXJ0X2UyKHN0cnVjdCBibngyeCAqYnAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zMzE0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MzMxNTpcdHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8gPSBwLVx1MDAzZW1jYXN0X29iajtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzMxNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTMzMzE9c3RhdGljIGlubGluZSB2b2lkIGJueDJ4X21jYXN0X3NldF9yZGF0YV9oZHJfZTIoc3RydWN0IGJueDJ4ICpicCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMzMzQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozMzM1Olx0c3RydWN0IGJueDJ4X3Jhd19vYmogKnIgPSBcdTAwMjZwLVx1MDAzZW1jYXN0X29iai1cdTAwM2VyYXc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMzMzYtXHRzdHJ1Y3QgZXRoX211bHRpY2FzdF9ydWxlc19yYW1yb2RfZGF0YSAqZGF0YSA9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zMzU2PXN0YXRpYyBpbmxpbmUgaW50IGJueDJ4X21jYXN0X3JlZnJlc2hfcmVnaXN0cnlfZTIoc3RydWN0IGJueDJ4ICpicCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MzM1NzpcdFx0XHRcdFx0XHQgIHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMzNTgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MzM3Mz1zdGF0aWMgaW50IGJueDJ4X21jYXN0X3NldHVwX2UyKHN0cnVjdCBibngyeCAqYnAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zMzc2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MzM3NzpcdHN0cnVjdCBibngyeF9yYXdfb2JqICpyYXcgPSBcdTAwMjZwLVx1MDAzZW1jYXN0X29iai1cdTAwM2VyYXc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjMzNzg6XHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvID0gcC1cdTAwM2VtY2FzdF9vYmo7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMzNzktXHRzdHJ1Y3QgZXRoX211bHRpY2FzdF9ydWxlc19yYW1yb2RfZGF0YSAqZGF0YSA9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zNDg4PXN0YXRpYyBpbmxpbmUgdm9pZCBibngyeF9tY2FzdF9oZGxfYWRkX2UxaChzdHJ1Y3QgYm54MnggKmJwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozNDg5Olx0XHRcdFx0XHQgICBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNDkwLVx0XHRcdFx0XHQgICBzdHJ1Y3QgYm54MnhfbWNhc3RfcmFtcm9kX3BhcmFtcyAqcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTM1MDk9c3RhdGljIGlubGluZSB2b2lkIGJueDJ4X21jYXN0X2hkbF9yZXN0b3JlX2UxaChzdHJ1Y3QgYm54MnggKmJwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozNTEwOlx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbywgc3RydWN0IGJueDJ4X21jYXN0X3JhbXJvZF9wYXJhbXMgKnAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM1MTEtXHR1MzIgKm1jX2ZpbHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTM1Mjc9c3RhdGljIGludCBibngyeF9tY2FzdF9zZXR1cF9lMWgoc3RydWN0IGJueDJ4ICpicCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM1MzEtXHRpbnQgaTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MzUzMjpcdHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8gPSBwLVx1MDAzZW1jYXN0X29iajtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzUzMy1cdHN0cnVjdCBibngyeF9yYXdfb2JqICpyID0gXHUwMDI2by1cdTAwM2VyYXc7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zNTgxPXN0YXRpYyBpbnQgYm54MnhfbWNhc3RfdmFsaWRhdGVfZTEoc3RydWN0IGJueDJ4ICpicCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM1ODQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozNTg1Olx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyA9IHAtXHUwMDNlbWNhc3Rfb2JqO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNTg2LVx0aW50IHJlZ19zeiA9IG8tXHUwMDNlZ2V0X3JlZ2lzdHJ5X3NpemUobyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zNjQxPXN0YXRpYyB2b2lkIGJueDJ4X21jYXN0X3JldmVydF9lMShzdHJ1Y3QgYm54MnggKmJwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzY0NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjM2NDY6XHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvID0gcC1cdTAwM2VtY2FzdF9vYmo7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM2NDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zNjU4PXN0YXRpYyB2b2lkIGJueDJ4X21jYXN0X3NldF9vbmVfcnVsZV9lMShzdHJ1Y3QgYm54MnggKmJwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozNjU5Olx0XHRcdFx0XHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLCBpbnQgaWR4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNjYwLVx0XHRcdFx0XHR1bmlvbiBibngyeF9tY2FzdF9jb25maWdfZGF0YSAqY2ZnX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zNjkyPXN0YXRpYyBpbmxpbmUgdm9pZCBibngyeF9tY2FzdF9zZXRfcmRhdGFfaGRyX2UxKHN0cnVjdCBibngyeCAqYnAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNjk1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MzY5NjpcdHN0cnVjdCBibngyeF9yYXdfb2JqICpyID0gXHUwMDI2cC1cdTAwM2VtY2FzdF9vYmotXHUwMDNlcmF3O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNjk3LVx0c3RydWN0IG1hY19jb25maWd1cmF0aW9uX2NtZCAqZGF0YSA9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zNzI1PXN0YXRpYyBpbmxpbmUgaW50IGJueDJ4X21jYXN0X2hhbmRsZV9yZXN0b3JlX2NtZF9lMShcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MzcyNjpcdHN0cnVjdCBibngyeCAqYnAsIHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8gLCBpbnQgc3RhcnRfaWR4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNzI3LVx0aW50ICpyZGF0YV9pZHgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zNzQ5PXN0YXRpYyBpbmxpbmUgaW50IGJueDJ4X21jYXN0X2hhbmRsZV9wZW5kaW5nX2NtZHNfZTEoXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNzUzLVx0c3RydWN0IGJueDJ4X21jYXN0X21hY19lbGVtICpwbWFjX3BvcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6Mzc1NDpcdHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8gPSBwLVx1MDAzZW1jYXN0X29iajtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzc1NS1cdHVuaW9uIGJueDJ4X21jYXN0X2NvbmZpZ19kYXRhIGNmZ19kYXRhID0ge05VTEx9O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MzgzMD1zdGF0aWMgaW5saW5lIGludCBibngyeF9tY2FzdF9yZWZyZXNoX3JlZ2lzdHJ5X2UxKHN0cnVjdCBibngyeCAqYnAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjM4MzE6XHRcdFx0XHRcdFx0ICBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zODMyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTM4Nzc9c3RhdGljIGludCBibngyeF9tY2FzdF9zZXR1cF9lMShzdHJ1Y3QgYm54MnggKmJwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzg4MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjM4ODE6XHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvID0gcC1cdTAwM2VtY2FzdF9vYmo7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM4ODItXHRzdHJ1Y3QgYm54MnhfcmF3X29iaiAqcmF3ID0gXHUwMDI2by1cdTAwM2VyYXc7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zOTU1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozOTU2OnN0YXRpYyBpbnQgYm54MnhfbWNhc3RfZ2V0X3JlZ2lzdHJ5X3NpemVfZXhhY3Qoc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzk1Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zOTYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozOTYxOnN0YXRpYyBpbnQgYm54MnhfbWNhc3RfZ2V0X3JlZ2lzdHJ5X3NpemVfYXByb3goc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzk2Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zOTY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozOTY2OnN0YXRpYyB2b2lkIGJueDJ4X21jYXN0X3NldF9yZWdpc3RyeV9zaXplX2V4YWN0KHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM5NjctXHRcdFx0XHRcdFx0aW50IG4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zOTcxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozOTcyOnN0YXRpYyB2b2lkIGJueDJ4X21jYXN0X3NldF9yZWdpc3RyeV9zaXplX2Fwcm94KHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM5NzMtXHRcdFx0XHRcdFx0aW50IG4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zOTc4PWludCBibngyeF9jb25maWdfbWNhc3Qoc3RydWN0IGJueDJ4ICpicCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM5ODEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozOTgyOlx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyA9IHAtXHUwMDNlbWNhc3Rfb2JqO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zOTgzLVx0c3RydWN0IGJueDJ4X3Jhd19vYmogKnIgPSBcdTAwMjZvLVx1MDAzZXJhdztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwMDctXHQgICAgKChvLVx1MDAzZW1heF9jbWRfbGVuIFx1MDAzZSAwKSBcdTAwMjZcdTAwMjYgKG8tXHUwMDNldG90YWxfcGVuZGluZ19udW0gXHUwMDNlIG8tXHUwMDNlbWF4X2NtZF9sZW4pKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDA4Olx0XHRyYyA9IG8tXHUwMDNlZW5xdWV1ZV9jbWQoYnAsIHAtXHUwMDNlbWNhc3Rfb2JqLCBwLCBjbWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDA5LVx0XHRpZiAocmMgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDQzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDQ0OnN0YXRpYyB2b2lkIGJueDJ4X21jYXN0X2NsZWFyX3NjaGVkKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwNDUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDA1MTpzdGF0aWMgdm9pZCBibngyeF9tY2FzdF9zZXRfc2NoZWQoc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA1Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDU4OnN0YXRpYyBib29sIGJueDJ4X21jYXN0X2NoZWNrX3NjaGVkKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwNTkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDA2MzpzdGF0aWMgYm9vbCBibngyeF9tY2FzdF9jaGVja19wZW5kaW5nKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwNjQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDA2ODp2b2lkIGJueDJ4X2luaXRfbWNhc3Rfb2JqKHN0cnVjdCBibngyeCAqYnAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQwNjk6XHRcdFx0ICBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICptY2FzdF9vYmosXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwNzAtXHRcdFx0ICB1OCBtY2FzdF9jbF9pZCwgdTMyIG1jYXN0X2NpZCwgdTggZnVuY19pZCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwNzMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDc0Olx0bWVtc2V0KG1jYXN0X29iaiwgMCwgc2l6ZW9mKCptY2FzdF9vYmopKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDA3NjpcdGJueDJ4X2luaXRfcmF3X29iaihcdTAwMjZtY2FzdF9vYmotXHUwMDNlcmF3LCBtY2FzdF9jbF9pZCwgbWNhc3RfY2lkLCBmdW5jX2lkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDc3LVx0XHRcdCAgIHJkYXRhLCByZGF0YV9tYXBwaW5nLCBzdGF0ZSwgcHN0YXRlLCB0eXBlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDA3OTpcdG1jYXN0X29iai1cdTAwM2VlbmdpbmVfaWQgPSBlbmdpbmVfaWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQwODE6XHRJTklUX0xJU1RfSEVBRChcdTAwMjZtY2FzdF9vYmotXHUwMDNlcGVuZGluZ19jbWRzX2hlYWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDgzOlx0bWNhc3Rfb2JqLVx1MDAzZXNjaGVkX3N0YXRlID0gQk5YMlhfRklMVEVSX01DQVNUX1NDSEVEO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDg0Olx0bWNhc3Rfb2JqLVx1MDAzZWNoZWNrX3NjaGVkID0gYm54MnhfbWNhc3RfY2hlY2tfc2NoZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQwODU6XHRtY2FzdF9vYmotXHUwMDNlc2V0X3NjaGVkID0gYm54MnhfbWNhc3Rfc2V0X3NjaGVkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDg2Olx0bWNhc3Rfb2JqLVx1MDAzZWNsZWFyX3NjaGVkID0gYm54MnhfbWNhc3RfY2xlYXJfc2NoZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwODgtXHRpZiAoQ0hJUF9JU19FMShicCkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDA4OTpcdFx0bWNhc3Rfb2JqLVx1MDAzZWNvbmZpZ19tY2FzdCAgICAgID0gYm54MnhfbWNhc3Rfc2V0dXBfZTE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQwOTA6XHRcdG1jYXN0X29iai1cdTAwM2VlbnF1ZXVlX2NtZCAgICAgICA9IGJueDJ4X21jYXN0X2VucXVldWVfY21kO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDkxOlx0XHRtY2FzdF9vYmotXHUwMDNlaGRsX3Jlc3RvcmUgICAgICAgPVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDkyLVx0XHRcdGJueDJ4X21jYXN0X2hhbmRsZV9yZXN0b3JlX2NtZF9lMTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDA5MzpcdFx0bWNhc3Rfb2JqLVx1MDAzZWNoZWNrX3BlbmRpbmcgICAgID0gYm54MnhfbWNhc3RfY2hlY2tfcGVuZGluZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA5NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA5NS1cdFx0aWYgKENISVBfUkVWX0lTX1NMT1coYnApKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDk2Olx0XHRcdG1jYXN0X29iai1cdTAwM2VtYXhfY21kX2xlbiA9IEJOWDJYX01BWF9FTVVMX01VTFRJO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDk3LVx0XHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQwOTg6XHRcdFx0bWNhc3Rfb2JqLVx1MDAzZW1heF9jbWRfbGVuID0gQk5YMlhfTUFYX01VTFRJQ0FTVDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA5OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDEwMDpcdFx0bWNhc3Rfb2JqLVx1MDAzZXdhaXRfY29tcCAgICAgICAgID0gYm54MnhfbWNhc3Rfd2FpdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDEwMTpcdFx0bWNhc3Rfb2JqLVx1MDAzZXNldF9vbmVfcnVsZSAgICAgID0gYm54MnhfbWNhc3Rfc2V0X29uZV9ydWxlX2UxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTAyOlx0XHRtY2FzdF9vYmotXHUwMDNldmFsaWRhdGUgICAgICAgICAgPSBibngyeF9tY2FzdF92YWxpZGF0ZV9lMTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDEwMzpcdFx0bWNhc3Rfb2JqLVx1MDAzZXJldmVydCAgICAgICAgICAgID0gYm54MnhfbWNhc3RfcmV2ZXJ0X2UxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTA0Olx0XHRtY2FzdF9vYmotXHUwMDNlZ2V0X3JlZ2lzdHJ5X3NpemUgPVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MTA1LVx0XHRcdGJueDJ4X21jYXN0X2dldF9yZWdpc3RyeV9zaXplX2V4YWN0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTA2Olx0XHRtY2FzdF9vYmotXHUwMDNlc2V0X3JlZ2lzdHJ5X3NpemUgPVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MTA3LVx0XHRcdGJueDJ4X21jYXN0X3NldF9yZWdpc3RyeV9zaXplX2V4YWN0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDExMS1cdFx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMTI6XHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNm1jYXN0X29iai1cdTAwM2VyZWdpc3RyeS5leGFjdF9tYXRjaC5tYWNzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDExMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDExNC1cdH0gZWxzZSBpZiAoQ0hJUF9JU19FMUgoYnApKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMTU6XHRcdG1jYXN0X29iai1cdTAwM2Vjb25maWdfbWNhc3QgID0gYm54MnhfbWNhc3Rfc2V0dXBfZTFoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTE2Olx0XHRtY2FzdF9vYmotXHUwMDNlZW5xdWV1ZV9jbWQgICA9IE5VTEw7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMTc6XHRcdG1jYXN0X29iai1cdTAwM2VoZGxfcmVzdG9yZSAgID0gTlVMTDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDExODpcdFx0bWNhc3Rfb2JqLVx1MDAzZWNoZWNrX3BlbmRpbmcgPSBibngyeF9tY2FzdF9jaGVja19wZW5kaW5nO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MTE5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDEyMi1cdFx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMjM6XHRcdG1jYXN0X29iai1cdTAwM2VtYXhfY21kX2xlbiAgICAgICA9IC0xO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTI0Olx0XHRtY2FzdF9vYmotXHUwMDNld2FpdF9jb21wICAgICAgICAgPSBibngyeF9tY2FzdF93YWl0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTI1Olx0XHRtY2FzdF9vYmotXHUwMDNlc2V0X29uZV9ydWxlICAgICAgPSBOVUxMO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTI2Olx0XHRtY2FzdF9vYmotXHUwMDNldmFsaWRhdGUgICAgICAgICAgPSBibngyeF9tY2FzdF92YWxpZGF0ZV9lMWg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMjc6XHRcdG1jYXN0X29iai1cdTAwM2VyZXZlcnQgICAgICAgICAgICA9IGJueDJ4X21jYXN0X3JldmVydF9lMWg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMjg6XHRcdG1jYXN0X29iai1cdTAwM2VnZXRfcmVnaXN0cnlfc2l6ZSA9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQxMjktXHRcdFx0Ym54MnhfbWNhc3RfZ2V0X3JlZ2lzdHJ5X3NpemVfYXByb3g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMzA6XHRcdG1jYXN0X29iai1cdTAwM2VzZXRfcmVnaXN0cnlfc2l6ZSA9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQxMzEtXHRcdFx0Ym54MnhfbWNhc3Rfc2V0X3JlZ2lzdHJ5X3NpemVfYXByb3g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQxMzItXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTMzOlx0XHRtY2FzdF9vYmotXHUwMDNlY29uZmlnX21jYXN0ICAgICAgPSBibngyeF9tY2FzdF9zZXR1cF9lMjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDEzNDpcdFx0bWNhc3Rfb2JqLVx1MDAzZWVucXVldWVfY21kICAgICAgID0gYm54MnhfbWNhc3RfZW5xdWV1ZV9jbWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMzU6XHRcdG1jYXN0X29iai1cdTAwM2VoZGxfcmVzdG9yZSAgICAgICA9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQxMzYtXHRcdFx0Ym54MnhfbWNhc3RfaGFuZGxlX3Jlc3RvcmVfY21kX2UyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTM3Olx0XHRtY2FzdF9vYmotXHUwMDNlY2hlY2tfcGVuZGluZyAgICAgPSBibngyeF9tY2FzdF9jaGVja19wZW5kaW5nO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MTM4LVx0XHQvKiBUT0RPOiBUaGVyZSBzaG91bGQgYmUgYSBwcm9wZXIgSFNJIGRlZmluZSBmb3IgdGhpcyBudW1iZXIhISFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDEzOS1cdFx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxNDA6XHRcdG1jYXN0X29iai1cdTAwM2VtYXhfY21kX2xlbiAgICAgICA9IDE2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTQxOlx0XHRtY2FzdF9vYmotXHUwMDNld2FpdF9jb21wICAgICAgICAgPSBibngyeF9tY2FzdF93YWl0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTQyOlx0XHRtY2FzdF9vYmotXHUwMDNlc2V0X29uZV9ydWxlICAgICAgPSBibngyeF9tY2FzdF9zZXRfb25lX3J1bGVfZTI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxNDM6XHRcdG1jYXN0X29iai1cdTAwM2V2YWxpZGF0ZSAgICAgICAgICA9IGJueDJ4X21jYXN0X3ZhbGlkYXRlX2UyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTQ0Olx0XHRtY2FzdF9vYmotXHUwMDNlcmV2ZXJ0ICAgICAgICAgICAgPSBibngyeF9tY2FzdF9yZXZlcnRfZTI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxNDU6XHRcdG1jYXN0X29iai1cdTAwM2VnZXRfcmVnaXN0cnlfc2l6ZSA9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQxNDYtXHRcdFx0Ym54MnhfbWNhc3RfZ2V0X3JlZ2lzdHJ5X3NpemVfYXByb3g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxNDc6XHRcdG1jYXN0X29iai1cdTAwM2VzZXRfcmVnaXN0cnlfc2l6ZSA9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQxNDgtXHRcdFx0Ym54MnhfbWNhc3Rfc2V0X3JlZ2lzdHJ5X3NpemVfYXByb3g7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaD01MTg9c3RydWN0IGJueDJ4X21jYXN0X3JhbXJvZF9wYXJhbXMge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaDo1MTk6XHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICptY2FzdF9vYmo7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oLTUyMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oPTUzNj1lbnVtIGJueDJ4X21jYXN0X2NtZCB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC01NTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oOjU1MjpzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNTUzLVx0c3RydWN0IGJueDJ4X3Jhd19vYmogcmF3O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNjA3LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oOjYwODpcdGludCAoKmhkbF9yZXN0b3JlKShzdHJ1Y3QgYm54MnggKmJwLCBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC02MDktXHRcdFx0ICAgaW50IHN0YXJ0X2JpbiwgaW50ICpyZGF0YV9pZHgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC02MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oOjYxMTpcdGludCAoKmVucXVldWVfY21kKShzdHJ1Y3QgYm54MnggKmJwLCBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC02MTItXHRcdFx0ICAgc3RydWN0IGJueDJ4X21jYXN0X3JhbXJvZF9wYXJhbXMgKnAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC02MTUtXHR2b2lkICgqc2V0X29uZV9ydWxlKShzdHJ1Y3QgYm54MnggKmJwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaDo2MTY6XHRcdFx0ICAgICBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLCBpbnQgaWR4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC02MTctXHRcdFx0ICAgICB1bmlvbiBibngyeF9tY2FzdF9jb25maWdfZGF0YSAqY2ZnX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC02MjItXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg6NjIzOlx0Ym9vbCAoKmNoZWNrX3BlbmRpbmcpKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC02MjQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC02MjctXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg6NjI4Olx0dm9pZCAoKnNldF9zY2hlZCkoc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oOjYyOTpcdHZvaWQgKCpjbGVhcl9zY2hlZCkoc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oOjYzMDpcdGJvb2wgKCpjaGVja19zY2hlZCkoc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oLTYzMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNjMyLVx0LyogV2FpdCB1bnRpbCBhbGwgcGVuZGluZyBjb21tYW5kcyBjb21wbGV0ZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaDo2MzM6XHRpbnQgKCp3YWl0X2NvbXApKHN0cnVjdCBibngyeCAqYnAsIHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC02MzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC02NTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oOjY1MjpcdGludCAoKmdldF9yZWdpc3RyeV9zaXplKShzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg6NjUzOlx0dm9pZCAoKnNldF9yZWdpc3RyeV9zaXplKShzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLCBpbnQgbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oLTY1NC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg9MTQ2Mz1pbnQgYm54MnhfY29uZmlnX3J4X21vZGUoc3RydWN0IGJueDJ4ICpicCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oLTE0NjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oOjE0Njg6dm9pZCBibngyeF9pbml0X21jYXN0X29iaihzdHJ1Y3QgYm54MnggKmJwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaDoxNDY5Olx0XHRcdCAgc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbWNhc3Rfb2JqLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC0xNDcwLVx0XHRcdCAgdTggbWNhc3RfY2xfaWQsIHUzMiBtY2FzdF9jaWQsIHU4IGZ1bmNfaWQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuYz01Mzc9aW50IGJueDJ4X3ZmX21jYXN0KHN0cnVjdCBibngyeCAqYnAsIHN0cnVjdCBibngyeF92aXJ0ZiAqdmYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuYy01NDctXHRtZW1zZXQoXHUwMDI2bWNhc3QsIDAsIHNpemVvZihzdHJ1Y3QgYm54MnhfbWNhc3RfcmFtcm9kX3BhcmFtcykpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuYzo1NDg6XHRtY2FzdC5tY2FzdF9vYmogPSBcdTAwMjZ2Zi1cdTAwM2VtY2FzdF9vYmo7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcmlvdi5jLTU0OS1cdGlmIChkcnZfb25seSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcmlvdi5jPTE1Mzc9aW50IGJueDJ4X2lvdl9uaWNfaW5pdChzdHJ1Y3QgYm54MnggKmJwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmMtMTU3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmM6MTU3OTpcdFx0LyogIGluaXQgbWNhc3Qgb2JqZWN0IC0gVGhpcyBvYmplY3Qgd2lsbCBiZSByZS1pbml0aWFsaXplZFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuYy0xNTgwLVx0XHQgKiAgZHVyaW5nIFZGLUFDUVVJUkUgd2l0aCB0aGUgcHJvcGVyIGNsX2lkIGFuZCBjaWQuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuYy0xNTgzLVx0XHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmM6MTU4NDpcdFx0Ym54MnhfaW5pdF9tY2FzdF9vYmooYnAsIFx1MDAyNnZmLVx1MDAzZW1jYXN0X29iaiwgMHhGRixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmMtMTU4NS1cdFx0XHRcdCAgICAgMHhGRiwgMHhGRiwgMHhGRixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcmlvdi5jPTE2OTg9dm9pZCBibngyeF92Zl9oYW5kbGVfbWNhc3RfZXFlKHN0cnVjdCBibngyeCAqYnAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuYy0xNzAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuYzoxNzA0Olx0cnBhcmFtLm1jYXN0X29iaiA9IFx1MDAyNnZmLVx1MDAzZW1jYXN0X29iajtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmM6MTcwNTpcdHZmLVx1MDAzZW1jYXN0X29iai5yYXcuY2xlYXJfcGVuZGluZyhcdTAwMjZ2Zi1cdTAwM2VtY2FzdF9vYmoucmF3KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmMtMTcwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmMtMTcwNy1cdC8qIElmIHRoZXJlIGFyZSBwZW5kaW5nIG1jYXN0IGNvbW1hbmRzIC0gc2VuZCB0aGVtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcmlvdi5jOjE3MDg6XHRpZiAodmYtXHUwMDNlbWNhc3Rfb2JqLmNoZWNrX3BlbmRpbmcoXHUwMDI2dmYtXHUwMDNlbWNhc3Rfb2JqKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuYy0xNzA5LVx0XHRyYyA9IGJueDJ4X2NvbmZpZ19tY2FzdChicCwgXHUwMDI2cnBhcmFtLCBCTlgyWF9NQ0FTVF9DTURfQ09OVCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuaD0xMjg9c3RydWN0IGJueDJ4X3ZpcnRmIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcmlvdi5oLTIwMy1cdC8qIE1DQVNUIG9iamVjdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuaDoyMDQ6XHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqXHRcdG1jYXN0X29iajtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmgtMjA1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3ZmcGYuYz01NDQ9c3RhdGljIHZvaWQgYm54MnhfbGVhZGluZ192ZnFfaW5pdChzdHJ1Y3QgYm54MnggKmJwLCBzdHJ1Y3QgYm54MnhfdmlydGYgKnZmLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3ZmcGYuYy01NzgtXHQvKiBtY2FzdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfdmZwZi5jOjU3OTpcdGJueDJ4X2luaXRfbWNhc3Rfb2JqKGJwLCBcdTAwMjZ2Zi1cdTAwM2VtY2FzdF9vYmosIGNsX2lkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfdmZwZi5jLTU4MC1cdFx0XHQgICAgIHEtXHUwMDNlY2lkLCBmdW5jX2lkLCBmdW5jX2lkLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0Lmg9Njc2PXN0cnVjdCBiZmlfZW5ldF9zdGF0c190eGYge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0LmgtNjgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaDo2ODE6XHR1NjQgbWNhc3Rfb2N0ZXRzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaC02ODItXHR1NjQgbWNhc3Q7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaD02OTU9c3RydWN0IGJmaV9lbmV0X3N0YXRzX3J4ZiB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaC02OTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9iZmlfZW5ldC5oOjcwMDpcdHU2NCBtY2FzdF9vY3RldHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9iZmlfZW5ldC5oLTcwMS1cdHU2NCBtY2FzdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9iZmlfZW5ldC5oPTcxMT1zdHJ1Y3QgYmZpX2VuZXRfc3RhdHNfZmNfdHgge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0LmgtNzE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaDo3MTY6XHR1NjQgdHhmX21jYXN0X29jdGV0cztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0LmgtNzE3LVx0dTY0IHR4Zl9tY2FzdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9iZmlfZW5ldC5oPTczMD1zdHJ1Y3QgYmZpX2VuZXRfc3RhdHNfZmNfcngge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0LmgtNzM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaDo3MzU6XHR1NjQgcnhmX21jYXN0X29jdGV0cztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0LmgtNzM2LVx0dTY0IHJ4Zl9tY2FzdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9iZmlfZW5ldC5oPTc0NT1zdHJ1Y3QgYmZpX2VuZXRfc3RhdHNfcmFkIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9iZmlfZW5ldC5oLTc1NC1cdHU2NCByeF9tY2FzdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0Lmg6NzU1Olx0dTY0IHJ4X21jYXN0X29jdGV0cztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0LmgtNzU2LVx0dTY0IHJ4X21jYXN0X3ZsYW47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYm5hZF9ldGh0b29sLmM9Mjk9c3RhdGljIGNvbnN0IGNoYXIgKmJuYWRfbmV0X3N0YXRzX3N0cmluZ3NbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9ibmFkX2V0aHRvb2wuYy0xODYtXHRcJiMzNDtyYWRfcnhfbWNhc3RcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9ibmFkX2V0aHRvb2wuYzoxODc6XHRcJiMzNDtyYWRfcnhfbWNhc3Rfb2N0ZXRzXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYm5hZF9ldGh0b29sLmMtMTg4LVx0XCYjMzQ7cmFkX3J4X21jYXN0X3ZsYW5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYm5hZF9ldGh0b29sLmMtMjAwLVx0XCYjMzQ7cmxiX3JhZF9yeF9tY2FzdFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JuYWRfZXRodG9vbC5jOjIwMTpcdFwmIzM0O3JsYl9yYWRfcnhfbWNhc3Rfb2N0ZXRzXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYm5hZF9ldGh0b29sLmMtMjAyLVx0XCYjMzQ7cmxiX3JhZF9yeF9tY2FzdF92bGFuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JuYWRfZXRodG9vbC5jLTIxMC1cdFwmIzM0O2ZjX3J4X3VjYXN0X3ZsYW5cJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9ibmFkX2V0aHRvb2wuYzoyMTE6XHRcJiMzNDtmY19yeF9tY2FzdF9vY3RldHNcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9ibmFkX2V0aHRvb2wuYy0yMTItXHRcJiMzNDtmY19yeF9tY2FzdFwmIzM0Oyxcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ3MzQKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOgoKKipEZWJ1Z2dpbmcgYSBTdHViYm9ybiBCdWlsZCBPdXRwdXQqKgoKQWxyaWdodCwgdGhlIGJ1aWxkIGlzIHNwaXR0aW5nIG91dCB0aGVzZSBpcnJpdGF0aW5nICYjMzQ7bWNhc3QubyYjMzQ7IGZpbGVzIGFuZCBub3RoaW5nIG1vcmUuIFRoYXQmIzM5O3MgY2xlYXJseSBub3QgcmlnaHQuIE15IGd1dCB0ZWxscyBtZSBzb21ldGhpbmcgaXMgb2ZmIGluIHRoZSBuZXR3b3JraW5nIHJlYWxtLiBMZXQmIzM5O3MgZGlnIGluLiBHaXZlbiB0aGF0IHRoZXNlIGFyZSAqbWNhc3QqIHJlbGF0ZWQsIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gdGhlIElQdjYgbmV0d29ya2luZyBjb2RlLiBNeSBtZW1vcnkgaXMgcGluZ2luZyB0b3dhcmRzIHRoZSBrZXJuZWwmIzM5O3MgYG5ldC9pcHY2YCBkaXJlY3RvcnksIGFuZCBzcGVjaWZpY2FsbHkgaXRzIGBNYWtlZmlsZWAuIFRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgcHJvYmFibHkgZmluZCB0aGUgcnVsZXMgdGhhdCBkZWZpbmUgaG93IGBtY2FzdC5vYCBpcyBidWlsdCwgb3IgKnNob3VsZCogYmUgYnVpbHQuIEhvcGVmdWxseSBJIGNhbiB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmN5IGNoYWluIGFuZCBzZWUgd2hlcmUgaXQmIzM5O3MgZ29pbmcgd3JvbmcuIFRpbWUgdG8gZ3JhYiB0aGF0IE1ha2VmaWxlIGFuZCBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWNhc3QubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L01ha2VmaWxlPTg9aXB2Ni15IDo9XHRhZl9pbmV0Ni5vIGFueWNhc3QubyBpcDZfb3V0cHV0Lm8gaXA2X2lucHV0Lm8gYWRkcmNvbmYubyBcXFxuLS1cbm5ldC9pcHY2L01ha2VmaWxlLTEwLVx0XHRyb3V0ZS5vIGlwNl9maWIubyBpcHY2X3NvY2tnbHVlLm8gbmRpc2MubyB1ZHAubyBcXFxubmV0L2lwdjYvTWFrZWZpbGU6MTE6XHRcdHJhdy5vIGljbXAubyBtY2FzdC5vIHJlYXNzZW1ibHkubyB0Y3BfaXB2Ni5vIHBpbmcubyBcXFxubmV0L2lwdjYvTWFrZWZpbGUtMTItXHRcdGV4dGhkcnMubyBkYXRhZ3JhbS5vIGlwNl9mbG93bGFiZWwubyBpbmV0Nl9jb25uZWN0aW9uX3NvY2subyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxODo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTE0MgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhpbmtpbmcsIGZvcm1hdHRlZCBhcyByZXF1ZXN0ZWQ6CgoqKk5ldHdvcmsgTW9kdWxlIERlcGVuZGVuY2llczogQSBRdWljayBNZW50YWwgTWFwKioKClJpZ2h0LCBzbyBJJiMzOTttIHByb2Nlc3NpbmcgdGhlIGtlcm5lbCBtb2R1bGUgZGVwZW5kZW5jaWVzIGhlcmUuIFRoZSBgbWNhc3Qub2AgbW9kdWxlIGlzIGZ1bmRhbWVudGFsbHkgcGFydCBvZiB0aGUgSVB2NiBzdGFjaywgZGlyZWN0bHkgYnVpbHQgaW50byBgaXB2Ni5vYC4gTWFrZXMgc2Vuc2UsIG11bHRpY2FzdCBzdXBwb3J0IGZvciBJUHY2IGlzIGNvcmUuIEFuZCB0aGUgY29uZGl0aW9uYWwgZm9yIHRoaXMgYmVoYXZpb3IgaXMgY2xlYXJseSBgQ09ORklHX0lQVjZgLiBFYXN5IGVub3VnaC4KCk5vdywgYGlnbXAub2AgaXMgYSBzaW1pbGFyIHNpdHVhdGlvbiwgaXQgaXMgYnVpbHQgaW50byBgaXB2NC5vYC4gVGhpcyBzZWVtcyBub3JtYWwgYmVjYXVzZSBJR01QIGlzIEludGVybmV0IEdyb3VwIE1hbmFnZW1lbnQgUHJvdG9jb2wgKGZvciBJUCBNdWx0aWNhc3Qgb24gSVB2NCkuIFdlIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCB0aGlzIGRlcGVuZGVuY3kgaXMgY29udHJvbGxlZCBieSBib3RoIGBDT05GSUdfSU5FVGAsIHdoaWNoIGVuYWJsZXMgZ2VuZXJhbCBJUHY0IHN1cHBvcnQsICphbmQqIHNwZWNpZmljYWxseSBgQ09ORklHX0lQX01VTFRJQ0FTVGAgdG8gaW5jbHVkZSBJR01QLCBiZWNhdXNlIHlvdSB3b3VsZG4mIzM5O3QgbmVjZXNzYXJpbHkgd2FudCBtdWx0aWNhc3QgZW5hYmxlZCBpZiB5b3UgZGlkbiYjMzk7dCBoYXZlIElHTVAgb24gSVB2NC4gVGhlc2UgY29uZmlndXJhdGlvbnMgYXJlIHRoZSBrZXlzIHRoYXQgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlc2UgbmV0d29yay1yZWxhdGVkIGNvbXBvbmVudHMgYXJlIGluY2x1ZGVkIGluIHRoZSBmaW5hbCBrZXJuZWwgaW1hZ2UuIEdvdCBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWdtcC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcbi0tXG5uZXQvaXB2NC9NYWtlZmlsZS0xMy1cdCAgICAgdGNwX29mZmxvYWQubyB0Y3BfcGxiLm8gZGF0YWdyYW0ubyByYXcubyB1ZHAubyBcXFxubmV0L2lwdjQvTWFrZWZpbGU6MTQ6XHQgICAgIHVkcF9vZmZsb2FkLm8gYXJwLm8gaWNtcC5vIGRldmluZXQubyBhZl9pbmV0Lm8gaWdtcC5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xNS1cdCAgICAgZmliX2Zyb250ZW5kLm8gZmliX3NlbWFudGljcy5vIGZpYl90cmllLm8gZmliX25vdGlmaWVyLm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU2MTUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBVbmNvbmRpdGlvbmFsIElHTVAgTW9kdWxlIEJ1aWxkKioKCkhtbSwgc28gYGlnbXAub2Agc2VlbXMgdG8gYmUgZ2V0dGluZyBjb21waWxlZCByZWdhcmRsZXNzIGlmIGBDT05GSUdfSU5FVGAgaXMgc2V0PyBUaGF0IGRvZXNuJiMzOTt0IHF1aXRlIHNpdCByaWdodCB3aXRoIG1lLiBJJiMzOTtkIGV4cGVjdCBtb3JlIGdyYW51bGFyIGNvbnRyb2wgb3ZlciB0aGF0LCBlc3BlY2lhbGx5IGZvciBlbWJlZGRlZCBzeXN0ZW1zIHdoZXJlIGV2ZXJ5IGJ5dGUgY291bnRzLiBJdCYjMzk7cyB1c3VhbGx5IGJldHRlciB0byBoYXZlIG1vcmUgZmluZS1ncmFpbmVkIG1vZHVsZSBjb250cm9sIHRvIG1pbmltaXplIHRoZSBrZXJuZWwgZm9vdHByaW50LgoKUmlnaHQsIGxldCYjMzk7cyBjb25maXJtIHRoaXMgc3VzcGljaW9uLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgaGVhcnQgb2YgdGhlIElQdjQgbmV0d29ya2luZyBidWlsZCBwcm9jZXNzLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBgbmV0L2lwdjQvTWFrZWZpbGVgIGFuZCBzZWUgZXhhY3RseSB3aGF0JiMzOTtzIGRyaXZpbmcgdGhlIGluY2x1c2lvbiBvZiBgaWdtcC5vYC4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBhIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJsb2NrLCBwZXJoYXBzIHNvbWV0aGluZyBsaWtlIGBpZmVxICgkKENPTkZJR19JR01QKSx5KWAgdGhhdCB0cmlnZ2VycyBpdHMgYnVpbGQuIElmIEkgZG9uJiMzOTt0LCB0aGVuIHRoYXQmIzM5O3MgYSBwcm9ibGVtIHRoYXQgbmVlZHMgYWRkcmVzc2luZywgb3IgcGVyaGFwcyBhbiBhY2NlcHRhYmxlIHRyYWRlLW9mZiBpZiB0aGUgZGVwZW5kZW5jaWVzIGFyZSByZWFsbHkgdGlnaHQuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgbWFrZWZpbGUgYWN0dWFsbHkgcmV2ZWFscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBNYWtlZmlsZSBmb3IgdGhlIExpbnV4IFRDUC9JUCAoSU5FVCkgbGF5ZXIuXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxuICAgNzpcdFx0ICAgICBpcF9pbnB1dC5vIGlwX2ZyYWdtZW50Lm8gaXBfZm9yd2FyZC5vIGlwX29wdGlvbnMubyBcXFxuICAgODpcdFx0ICAgICBpcF9vdXRwdXQubyBpcF9zb2NrZ2x1ZS5vIGluZXRfaGFzaHRhYmxlcy5vIFxcXG4gICA5Olx0XHQgICAgIGluZXRfdGltZXdhaXRfc29jay5vIGluZXRfY29ubmVjdGlvbl9zb2NrLm8gXFxcbiAgMTA6XHRcdCAgICAgdGNwLm8gdGNwX2lucHV0Lm8gdGNwX291dHB1dC5vIHRjcF90aW1lci5vIHRjcF9pcHY0Lm8gXFxcbiAgMTE6XHRcdCAgICAgdGNwX21pbmlzb2Nrcy5vIHRjcF9jb25nLm8gdGNwX21ldHJpY3MubyB0Y3BfZmFzdG9wZW4ubyBcXFxuICAxMjpcdFx0ICAgICB0Y3BfcmVjb3ZlcnkubyB0Y3BfdWxwLm8gXFxcbiAgMTM6XHRcdCAgICAgdGNwX29mZmxvYWQubyB0Y3BfcGxiLm8gZGF0YWdyYW0ubyByYXcubyB1ZHAubyBcXFxuICAxNDpcdFx0ICAgICB1ZHBfb2ZmbG9hZC5vIGFycC5vIGljbXAubyBkZXZpbmV0Lm8gYWZfaW5ldC5vIGlnbXAubyBcXFxuICAxNTpcdFx0ICAgICBmaWJfZnJvbnRlbmQubyBmaWJfc2VtYW50aWNzLm8gZmliX3RyaWUubyBmaWJfbm90aWZpZXIubyBcXFxuICAxNjpcdFx0ICAgICBpbmV0X2ZyYWdtZW50Lm8gcGluZy5vIGlwX3R1bm5lbF9jb3JlLm8gZ3JlX29mZmxvYWQubyBcXFxuICAxNzpcdFx0ICAgICBtZXRyaWNzLm8gbmV0bGluay5vIG5leHRob3AubyB1ZHBfdHVubmVsX3N0dWIub1xuICAxODpcdFxuICAxOTpcdG9iai0kKENPTkZJR19ORVRfSVBfVFVOTkVMKSAmIzQzOz0gaXBfdHVubmVsLm9cbiAgMjA6XHRvYmotJChDT05GSUdfU1lTQ1RMKSAmIzQzOz0gc3lzY3RsX25ldF9pcHY0Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYzNTUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipFeGFtaW5pbmcgdGhlIElHTVAgTW9kdWxlJiMzOTtzIENvbmRpdGlvbmFsIEJ1aWxkKioKClJpZ2h0LCBzbyBgaWdtcC5vYCBzZWVtcyB0byBiZSBnZXR0aW5nIGNvbXBpbGVkIHJlZ2FyZGxlc3MuIEJ1dCBJIGtub3cgdGhhdCB0aGUgcmVhbCBjb250cm9sIGxpZXMgd2l0aCBgQ09ORklHX0lQX01VTFRJQ0FTVGAuIEl0JiMzOTtzIHRoYXQgY29uZmlndXJhdGlvbiBvcHRpb24gdGhhdCByZWFsbHkgdW5sb2NrcyB0aGUgbXVsdGljYXN0IHJvdXRpbmcgYW5kIGZlYXR1cmUgc2V0LiBTbywgdGhlIGtleSBpcyBnb2luZyB0byBiZSBpbiBgbmV0L2lwdjQvaWdtcC5jYC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gbG9vayB0byBzZWUgaG93IGBDT05GSUdfSVBfTVVMVElDQVNUYCBpcyB1c2VkLCBhbmQgaG93IGl0IGFjdHVhbGx5IGltcGFjdHMgdGhlIGJ1aWxkIG9yIGVuYWJsaW5nIG9mIHNwZWNpZmljIElHTVAgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIGtlcm5lbC4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgaXQmIzM5O3MgZ3VhcmRpbmcgYW55IGNyaXRpY2FsIHNlY3Rpb25zIG9yIGRlZmluZXMgdGhhdCB1bHRpbWF0ZWx5IG1ha2UgYGlnbXAub2AgKnVzZWZ1bCogYmV5b25kIGEgc2ltcGxlIG9iamVjdCBmaWxlLiBUaW1lIHRvIGRpdmUgaW50byB0aGF0IHNvdXJjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0lQX01VTFRJQ0FTVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L2lnbXAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9pZ21wLmMtMTA5LVxubmV0L2lwdjQvaWdtcC5jOjExMDojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxubmV0L2lwdjQvaWdtcC5jLTExMS0vKiBQYXJhbWV0ZXIgbmFtZXMgYW5kIHZhbHVlcyBhcmUgdGFrZW4gZnJvbSBpZ21wLXYyLTA2IGRyYWZ0ICovXG4tLVxubmV0L2lwdjQvaWdtcC5jPTIwMT1zdGF0aWMgdm9pZCBpcF9zZl9saXN0X2NsZWFyX2FsbChzdHJ1Y3QgaXBfc2ZfbGlzdCAqcHNmKVxuLS1cbm5ldC9pcHY0L2lnbXAuYy0yMTEtXG5uZXQvaXB2NC9pZ21wLmM6MjEyOiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXG5uZXQvaXB2NC9pZ21wLmMtMjEzLVxuLS1cbm5ldC9pcHY0L2lnbXAuYz0xMTkzPXN0YXRpYyB2b2lkIGlwX21jX2ZpbHRlcl9kZWwoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgYWRkcilcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTIwMS1cbm5ldC9pcHY0L2lnbXAuYzoxMjAyOiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXG5uZXQvaXB2NC9pZ21wLmMtMTIwMy0vKlxuLS1cbm5ldC9pcHY0L2lnbXAuYz0xMzIyPXN0YXRpYyB2b2lkIF9faWdtcF9ncm91cF9kcm9wcGVkKHN0cnVjdCBpcF9tY19saXN0ICppbSwgZ2ZwX3QgZ2ZwKVxuLS1cbm5ldC9pcHY0L2lnbXAuYy0xMzI0LVx0c3RydWN0IGluX2RldmljZSAqaW5fZGV2ID0gaW0tXHUwMDNlaW50ZXJmYWNlO1xubmV0L2lwdjQvaWdtcC5jOjEzMjU6I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1Rcbm5ldC9pcHY0L2lnbXAuYy0xMzI2LVx0c3RydWN0IG5ldCAqbmV0ID0gZGV2X25ldChpbl9kZXYtXHUwMDNlZGV2KTtcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTMzNC1cbm5ldC9pcHY0L2lnbXAuYzoxMzM1OiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXG5uZXQvaXB2NC9pZ21wLmMtMTMzNi1cdGlmIChpbS1cdTAwM2VtdWx0aWFkZHIgPT0gSUdNUF9BTExfSE9TVFMpXG4tLVxubmV0L2lwdjQvaWdtcC5jPTEzNjY9c3RhdGljIHZvaWQgaWdtcF9ncm91cF9hZGRlZChzdHJ1Y3QgaXBfbWNfbGlzdCAqaW0pXG4tLVxubmV0L2lwdjQvaWdtcC5jLTEzNjgtXHRzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYgPSBpbS1cdTAwM2VpbnRlcmZhY2U7XG5uZXQvaXB2NC9pZ21wLmM6MTM2OTojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxubmV0L2lwdjQvaWdtcC5jLTEzNzAtXHRzdHJ1Y3QgbmV0ICpuZXQgPSBkZXZfbmV0KGluX2Rldi1cdTAwM2VkZXYpO1xuLS1cbm5ldC9pcHY0L2lnbXAuYy0xMzc3LVxubmV0L2lwdjQvaWdtcC5jOjEzNzg6I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1Rcbm5ldC9pcHY0L2lnbXAuYy0xMzc5LVx0aWYgKGltLVx1MDAzZW11bHRpYWRkciA9PSBJR01QX0FMTF9IT1NUUylcbi0tXG5uZXQvaXB2NC9pZ21wLmM9MTUzMj1zdGF0aWMgdm9pZCBfX19faXBfbWNfaW5jX2dyb3VwKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldiwgX19iZTMyIGFkZHIsXG4tLVxubmV0L2lwdjQvaWdtcC5jLTE1NzctXHRzcGluX2xvY2tfaW5pdChcdTAwMjZpbS1cdTAwM2Vsb2NrKTtcbm5ldC9pcHY0L2lnbXAuYzoxNTc4OiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXG5uZXQvaXB2NC9pZ21wLmMtMTU3OS1cdHRpbWVyX3NldHVwKFx1MDAyNmltLVx1MDAzZXRpbWVyLCBpZ21wX3RpbWVyX2V4cGlyZSwgMCk7XG4tLVxubmV0L2lwdjQvaWdtcC5jLTE1ODctXG5uZXQvaXB2NC9pZ21wLmM6MTU4ODojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxubmV0L2lwdjQvaWdtcC5jLTE1ODktXHRpZ21wdjNfZGVsX2RlbHJlYyhpbl9kZXYsIGltKTtcbi0tXG5uZXQvaXB2NC9pZ21wLmM9MTc1Nj1zdGF0aWMgdm9pZCBpcF9tY19yZWpvaW5fZ3JvdXBzKHN0cnVjdCBpbl9kZXZpY2UgKmluX2Rldilcbm5ldC9pcHY0L2lnbXAuYy0xNzU3LXtcbm5ldC9pcHY0L2lnbXAuYzoxNzU4OiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXG5uZXQvaXB2NC9pZ21wLmMtMTc1OS1cdHN0cnVjdCBpcF9tY19saXN0ICppbTtcbi0tXG5uZXQvaXB2NC9pZ21wLmM9MTgzOD12b2lkIGlwX21jX3JlbWFwKHN0cnVjdCBpbl9kZXZpY2UgKmluX2Rldilcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTg0NC1cdGZvcl9lYWNoX3BtY19ydG5sKGluX2RldiwgcG1jKSB7XG5uZXQvaXB2NC9pZ21wLmM6MTg0NTojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxubmV0L2lwdjQvaWdtcC5jLTE4NDYtXHRcdGlnbXB2M19kZWxfZGVscmVjKGluX2RldiwgcG1jKTtcbi0tXG5uZXQvaXB2NC9pZ21wLmM9MTg1ND12b2lkIGlwX21jX2Rvd24oc3RydWN0IGluX2RldmljZSAqaW5fZGV2KVxuLS1cbm5ldC9pcHY0L2lnbXAuYy0xODYyLVxubmV0L2lwdjQvaWdtcC5jOjE4NjM6I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1Rcbm5ldC9pcHY0L2lnbXAuYy0xODY0LVx0V1JJVEVfT05DRShpbl9kZXYtXHUwMDNlbXJfaWZjX2NvdW50LCAwKTtcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTg3NC1cbm5ldC9pcHY0L2lnbXAuYzoxODc1OiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXG5uZXQvaXB2NC9pZ21wLmMtMTg3Ni1zdGF0aWMgdm9pZCBpcF9tY19yZXNldChzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpXG4tLVxubmV0L2lwdjQvaWdtcC5jPTE4OTA9dm9pZCBpcF9tY19pbml0X2RldihzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpXG4tLVxubmV0L2lwdjQvaWdtcC5jLTE4OTMtXG5uZXQvaXB2NC9pZ21wLmM6MTg5NDojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxubmV0L2lwdjQvaWdtcC5jLTE4OTUtXHR0aW1lcl9zZXR1cChcdTAwMjZpbl9kZXYtXHUwMDNlbXJfZ3FfdGltZXIsIGlnbXBfZ3FfdGltZXJfZXhwaXJlLCAwKTtcbi0tXG5uZXQvaXB2NC9pZ21wLmM9MTkwNT12b2lkIGlwX21jX3VwKHN0cnVjdCBpbl9kZXZpY2UgKmluX2Rldilcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTkxNC1cdGZvcl9lYWNoX3BtY19ydG5sKGluX2RldiwgcG1jKSB7XG5uZXQvaXB2NC9pZ21wLmM6MTkxNTojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxubmV0L2lwdjQvaWdtcC5jLTE5MTYtXHRcdGlnbXB2M19kZWxfZGVscmVjKGluX2RldiwgcG1jKTtcbi0tXG5uZXQvaXB2NC9pZ21wLmM9MTkyNj12b2lkIGlwX21jX2Rlc3Ryb3lfZGV2KHN0cnVjdCBpbl9kZXZpY2UgKmluX2Rldilcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTkzMy1cdGlwX21jX2Rvd24oaW5fZGV2KTtcbm5ldC9pcHY0L2lnbXAuYzoxOTM0OiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXG5uZXQvaXB2NC9pZ21wLmMtMTkzNS1cdGlnbXB2M19jbGVhcl9kZWxyZWMoaW5fZGV2KTtcbi0tXG5uZXQvaXB2NC9pZ21wLmM9MTk4Mz1zdGF0aWMgaW50IGlwX21jX2RlbDFfc3JjKHN0cnVjdCBpcF9tY19saXN0ICpwbWMsIGludCBzZm1vZGUsXG4tLVxubmV0L2lwdjQvaWdtcC5jLTIwMDMtXHRpZiAoIXBzZi1cdTAwM2VzZl9jb3VudFtNQ0FTVF9JTkNMVURFXSBcdTAwMjZcdTAwMjYgIXBzZi1cdTAwM2VzZl9jb3VudFtNQ0FTVF9FWENMVURFXSkge1xubmV0L2lwdjQvaWdtcC5jOjIwMDQ6I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1Rcbm5ldC9pcHY0L2lnbXAuYy0yMDA1LVx0XHRzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYgPSBwbWMtXHUwMDNlaW50ZXJmYWNlO1xuLS1cbm5ldC9pcHY0L2lnbXAuYy0yMDEzLVx0XHRcdHBtYy1cdTAwM2Vzb3VyY2VzID0gcHNmLVx1MDAzZXNmX25leHQ7XG5uZXQvaXB2NC9pZ21wLmM6MjAxNDojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxubmV0L2lwdjQvaWdtcC5jLTIwMTUtXHRcdGlmIChwc2YtXHUwMDNlc2Zfb2xkaW4gXHUwMDI2XHUwMDI2XG4tLVxubmV0L2lwdjQvaWdtcC5jLTIwMjctXG5uZXQvaXB2NC9pZ21wLmM6MjAyODojaWZuZGVmIENPTkZJR19JUF9NVUxUSUNBU1Rcbm5ldC9pcHY0L2lnbXAuYy0yMDI5LSNkZWZpbmUgaWdtcF9pZmNfZXZlbnQoeClcdGRvIHsgfSB3aGlsZSAoMClcbi0tXG5uZXQvaXB2NC9pZ21wLmM9MjAzMj1zdGF0aWMgaW50IGlwX21jX2RlbF9zcmMoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgKnBtY2EsIGludCBzZm1vZGUsXG4tLVxubmV0L2lwdjQvaWdtcC5jLTIwNTItXHRyY3VfcmVhZF91bmxvY2soKTtcbm5ldC9pcHY0L2lnbXAuYzoyMDUzOiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXG5uZXQvaXB2NC9pZ21wLmMtMjA1NC1cdHNmX21hcmtzdGF0ZShwbWMpO1xuLS1cbm5ldC9pcHY0L2lnbXAuYy0yMDcyLVx0ICAgIHBtYy1cdTAwM2VzZmNvdW50W01DQVNUX0lOQ0xVREVdKSB7XG5uZXQvaXB2NC9pZ21wLmM6MjA3MzojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxubmV0L2lwdjQvaWdtcC5jLTIwNzQtXHRcdHN0cnVjdCBpcF9zZl9saXN0ICpwc2Y7XG4tLVxubmV0L2lwdjQvaWdtcC5jLTIwNzktXHRcdHBtYy1cdTAwM2VzZm1vZGUgPSBNQ0FTVF9JTkNMVURFO1xubmV0L2lwdjQvaWdtcC5jOjIwODA6I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1Rcbm5ldC9pcHY0L2lnbXAuYy0yMDgxLVx0XHRwbWMtXHUwMDNlY3Jjb3VudCA9IGluX2Rldi1cdTAwM2Vtcl9xcnYgPzogUkVBRF9PTkNFKG5ldC1cdTAwM2VpcHY0LnN5c2N0bF9pZ21wX3Fydik7XG4tLVxubmV0L2lwdjQvaWdtcC5jPTIwOTg9c3RhdGljIGludCBpcF9tY19hZGQxX3NyYyhzdHJ1Y3QgaXBfbWNfbGlzdCAqcG1jLCBpbnQgc2Ztb2RlLFxuLS1cbm5ldC9pcHY0L2lnbXAuYy0yMTI1LVxubmV0L2lwdjQvaWdtcC5jOjIxMjY6I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1Rcbm5ldC9pcHY0L2lnbXAuYy0yMTI3LXN0YXRpYyB2b2lkIHNmX21hcmtzdGF0ZShzdHJ1Y3QgaXBfbWNfbGlzdCAqcG1jKVxuLS1cbm5ldC9pcHY0L2lnbXAuYz0yMjA0PXN0YXRpYyBpbnQgaXBfbWNfYWRkX3NyYyhzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYsIF9fYmUzMiAqcG1jYSwgaW50IHNmbW9kZSxcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMjIyNS1cbm5ldC9pcHY0L2lnbXAuYzoyMjI2OiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXG5uZXQvaXB2NC9pZ21wLmMtMjIyNy1cdHNmX21hcmtzdGF0ZShwbWMpO1xuLS1cbm5ldC9pcHY0L2lnbXAuYy0yMjQ1LVx0fSBlbHNlIGlmIChpc2V4Y2x1ZGUgIT0gKHBtYy1cdTAwM2VzZmNvdW50W01DQVNUX0VYQ0xVREVdICE9IDApKSB7XG5uZXQvaXB2NC9pZ21wLmM6MjI0NjojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxubmV0L2lwdjQvaWdtcC5jLTIyNDctXHRcdHN0cnVjdCBpcF9zZl9saXN0ICpwc2Y7XG4tLVxubmV0L2lwdjQvaWdtcC5jLTIyNTYtXHRcdFx0cG1jLVx1MDAzZXNmbW9kZSA9IE1DQVNUX0lOQ0xVREU7XG5uZXQvaXB2NC9pZ21wLmM6MjI1NzojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxubmV0L2lwdjQvaWdtcC5jLTIyNTgtXHRcdC8qIGVsc2Ugbm8gZmlsdGVyczsga2VlcCBvbGQgbW9kZSBmb3IgcmVwb3J0cyAqL1xuLS1cbm5ldC9pcHY0L2lnbXAuYz0yOTcxPXN0YXRpYyBpbnQgaWdtcF9tY19zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMjk4Mi1cbm5ldC9pcHY0L2lnbXAuYzoyOTgzOiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXG5uZXQvaXB2NC9pZ21wLmMtMjk4NC1cdFx0cXVlcmllciA9IElHTVBfVjFfU0VFTihzdGF0ZS1cdTAwM2Vpbl9kZXYpID8gXCYjMzQ7VjFcJiMzNDsgOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxODo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTQ2MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgSUdNUCBUaW1lciBNYW5hZ2VtZW50KioKClJpZ2h0LCBzbyBgQ09ORklHX0lQX01VTFRJQ0FTVGAgZW5hYmxlcyBJR01QIHRpbWVycyBhbmQgcmVwb3J0IGZ1bmN0aW9uYWxpdHkuIFRoYXQmIzM5O3Mgc3RhbmRhcmQgZmFyZS4gQnV0LCBhIG5hZ2dpbmcgcXVlc3Rpb24gcG9wcGVkIGludG8gbXkgaGVhZC4uLiBJIHRob3VnaHQgSSByZW1lbWJlcmVkIHNlZWluZyBzb21ldGhpbmcgb2RkIGluIHRoZSBrZXJuZWwgY29kZS4gU3BlY2lmaWNhbGx5LCB0aGUgYGlnbXBfc3RvcF90aW1lcmAgZnVuY3Rpb24uIElzIGl0IGRlZmluZWQgY29uZGl0aW9uYWxseSwgYmFzZWQgb24gdGhhdCBjb25maWd1cmF0aW9uIG9wdGlvbiwgb3IgaXMgaXQgYWx3YXlzIHByZXNlbnQgaW4gYG5ldC9pcHY0L2lnbXAuY2A/IEl0JiMzOTtzIGJlZW4gYSB3aGlsZSBzaW5jZSBJJiMzOTt2ZSBkaXZlZCBkZWVwIGludG8gdGhhdCBjb2RlLCBzbyBJIHNob3VsZCBwcm9iYWJseSB2ZXJpZnkgdGhhdCBhc3N1bXB0aW9uLiBJIHdhbnQgdG8gYmUgY2VydGFpbiBhYm91dCB0aGUgcHJlc2VuY2Ugb3IgYWJzZW5jZSBvZiB0aGF0IGZ1bmN0aW9uLiBMZXQmIzM5O3MgcHVsbCB1cCB0aGUgc291cmNlIGFuZCBkb3VibGUtY2hlY2suIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyB0aGF0IHRpbWVyIGlzIG1hbmFnZWQgZnJvbSBhIHN5c3RlbXMgcHJvZ3JhbW1pbmcgc3RhbmRwb2ludCwgc28gY29uZGl0aW9uYWwgY29tcGlsYXRpb24gbWlnaHQgaGF2ZSBzb21lIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucyBvciB1bmludGVuZGVkIHNpZGUgZWZmZWN0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTg6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWdtcF9zdG9wX3RpbWVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvaWdtcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L2lnbXAuYz0yMDE9c3RhdGljIHZvaWQgaXBfc2ZfbGlzdF9jbGVhcl9hbGwoc3RydWN0IGlwX3NmX2xpc3QgKnBzZilcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMjE3LVxubmV0L2lwdjQvaWdtcC5jOjIxODpzdGF0aWMgdm9pZCBpZ21wX3N0b3BfdGltZXIoc3RydWN0IGlwX21jX2xpc3QgKmltKVxubmV0L2lwdjQvaWdtcC5jLTIxOS17XG4tLVxubmV0L2lwdjQvaWdtcC5jPTk0OT1zdGF0aWMgYm9vbCBpZ21wX2hlYXJkX3JlcG9ydChzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYsIF9fYmUzMiBncm91cClcbi0tXG5uZXQvaXB2NC9pZ21wLmMtOTY0LVx0XHRpZiAoaW0tXHUwMDNlbXVsdGlhZGRyID09IGdyb3VwKSB7XG5uZXQvaXB2NC9pZ21wLmM6OTY1Olx0XHRcdGlnbXBfc3RvcF90aW1lcihpbSk7XG5uZXQvaXB2NC9pZ21wLmMtOTY2LVx0XHRcdGJyZWFrO1xuLS1cbm5ldC9pcHY0L2lnbXAuYz0xMzIyPXN0YXRpYyB2b2lkIF9faWdtcF9ncm91cF9kcm9wcGVkKHN0cnVjdCBpcF9tY19saXN0ICppbSwgZ2ZwX3QgZ2ZwKVxuLS1cbm5ldC9pcHY0L2lnbXAuYy0xMzQyLVx0cmVwb3J0ZXIgPSBSRUFEX09OQ0UoaW0tXHUwMDNlcmVwb3J0ZXIpO1xubmV0L2lwdjQvaWdtcC5jOjEzNDM6XHRpZ21wX3N0b3BfdGltZXIoaW0pO1xubmV0L2lwdjQvaWdtcC5jLTEzNDQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMDkzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIENvZGViYXNlOiBGaW5kaW5nIGBpZ21wX3N0b3BfdGltZXJgKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYGlnbXBfc3RvcF90aW1lcmAgZnVuY3Rpb24gaXMgYmVpbmcgaGFuZGxlZC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIHBpbnBvaW50IGl0cyBkZWZpbml0aW9uLiBXaGVyZSBpcyB0aGlzIHRoaW5nIGFjdHVhbGx5ICpkZWNsYXJlZCo/IFRoYXQmIzM5O3MgdGhlIGNydWNpYWwgZmlyc3Qgc3RlcC4gSSBuZWVkIHRvIHRyYWNlIGl0cyBvcmlnaW5zLCB1bmRlcnN0YW5kIGl0cyBzY29wZSwgYW5kIHNlZSB3aGF0IHRoZSB1bmRlcmx5aW5nIGRhdGEgc3RydWN0dXJlcyBhcmUuIE9uY2UgSSBoYXZlIHRoZSBkZWZpbml0aW9uIGluIGhhbmQsIEkgY2FuIGJlZ2luIHRvIGFzc2VzcyBpdHMgcm9sZSB3aXRoaW4gdGhlIGxhcmdlciBJR01QIGZyYW1ld29yayBhbmQgaG93IGl0IGNvbnRyaWJ1dGVzIHRvIG11bHRpY2FzdCBtYW5hZ2VtZW50LiBMZXQmIzM5O3Mgc2VlIGlmIEkgY2FuIHVzZSBteSBJREUgdG8ganVtcCByaWdodCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTg6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2NC9pZ21wLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIxMDpcdH1cbiAyMTE6XHRcbiAyMTI6XHQjaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxuIDIxMzpcdFxuIDIxNDpcdC8qXG4gMjE1Olx0ICpcdFRpbWVyIG1hbmFnZW1lbnRcbiAyMTY6XHQgKi9cbiAyMTc6XHRcbiAyMTg6XHRzdGF0aWMgdm9pZCBpZ21wX3N0b3BfdGltZXIoc3RydWN0IGlwX21jX2xpc3QgKmltKVxuIDIxOTpcdHtcbiAyMjA6XHRcdGJvb2wgcHV0ID0gZmFsc2U7XG4gMjIxOlx0XG4gMjIyOlx0XHRzcGluX2xvY2tfYmgoXHUwMDI2aW0tXHUwMDNlbG9jayk7XG4gMjIzOlx0XHRpZiAodGltZXJfZGVsZXRlKFx1MDAyNmltLVx1MDAzZXRpbWVyKSlcbiAyMjQ6XHRcdFx0cHV0ID0gdHJ1ZTtcbiAyMjU6XHRcdFdSSVRFX09OQ0UoaW0tXHUwMDNldG1fcnVubmluZywgMCk7XG4gMjI2Olx0XHRXUklURV9PTkNFKGltLVx1MDAzZXJlcG9ydGVyLCAwKTtcbiAyMjc6XHRcdGltLVx1MDAzZXVuc29saWNpdF9jb3VudCA9IDA7XG4gMjI4Olx0XHRzcGluX3VubG9ja19iaChcdTAwMjZpbS1cdTAwM2Vsb2NrKTtcbiAyMjk6XHRcbiAyMzA6XHRcdGlmIChwdXQpXG4gMjMxOlx0XHRcdGlwX21hX3B1dChpbSk7XG4gMjMyOlx0fVxuIDIzMzpcdFxuIDIzNDpcdC8qIEl0IG11c3QgYmUgY2FsbGVkIHdpdGggbG9ja2VkIGltLVx1MDAzZWxvY2sgKi9cbiAyMzU6XHRzdGF0aWMgdm9pZCBpZ21wX3N0YXJ0X3RpbWVyKHN0cnVjdCBpcF9tY19saXN0ICppbSwgaW50IG1heF9kZWxheSlcbiAyMzY6XHR7XG4gMjM3Olx0XHRpbnQgdHYgPSBnZXRfcmFuZG9tX3UzMl9iZWxvdyhtYXhfZGVsYXkpO1xuIDIzODpcdFxuIDIzOTpcdFx0V1JJVEVfT05DRShpbS1cdTAwM2V0bV9ydW5uaW5nLCAxKTtcbiAyNDA6XHRcdGlmIChyZWZjb3VudF9pbmNfbm90X3plcm8oXHUwMDI2aW0tXHUwMDNlcmVmY250KSkge1xuIDI0MTpcdFx0XHRpZiAobW9kX3RpbWVyKFx1MDAyNmltLVx1MDAzZXRpbWVyLCBqaWZmaWVzICYjNDM7IHR2ICYjNDM7IDIpKVxuIDI0MjpcdFx0XHRcdGlwX21hX3B1dChpbSk7XG4gMjQzOlx0XHR9XG4gMjQ0Olx0fVxuIDI0NTpcdFxuIDI0NjpcdHN0YXRpYyB2b2lkIGlnbXBfZ3Ffc3RhcnRfdGltZXIoc3RydWN0IGluX2RldmljZSAqaW5fZGV2KVxuIDI0NzpcdHtcbiAyNDg6XHRcdGludCB0diA9IGdldF9yYW5kb21fdTMyX2JlbG93KFJFQURfT05DRShpbl9kZXYtXHUwMDNlbXJfbWF4ZGVsYXkpKTtcbiAyNDk6XHRcdHVuc2lnbmVkIGxvbmcgZXhwID0gamlmZmllcyAmIzQzOyB0diAmIzQzOyAyO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxODo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDg5MQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNdWx0aWNhc3QgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIG11bHRpY2FzdC1yZWxhdGVkIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5IGBpZ21wX3N0b3BfdGltZXJgIGFuZCB0aGUgb3RoZXJzIHdpdGhpbiB0aGF0IGJsb2NrLiBUaGUgY29kZSBpcyBjbGVhcmx5IHVzaW5nIGFuIGAjaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVGAgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZS4gVGhhdCYjMzk7cyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgaW5kaWNhdG9yIOKAkyBgQ09ORklHX0lQX01VTFRJQ0FTVGAgKmhhcyogdG8gYmUgZW5hYmxlZCBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5IHRvIGJlIGNvbXBpbGVkLiBObyBzdXJwcmlzZXMgdGhlcmUuCgpOb3csIEkmIzM5O20gc2hpZnRpbmcgZ2VhcnMgYW5kIHRoaW5raW5nIGFib3V0IElQdjYgbXVsdGljYXN0IHN1cHBvcnQuIEkgbmVlZCB0byBjaGVjayBvdXQgYG5ldC9pcHY2L21jYXN0LmNgLiBIbW0sIEkgcmVjYWxsIHNlZWluZyBzb21lIGRlcGVuZGVuY2llcyB0aGVyZS4uLiBBaCwgeWVzISBgbWNhc3Qub2AgaXMgYnVpbHQgd2hlbiBgQ09ORklHX0lQVjZgIGlzIGVuYWJsZWQuIFRoYXQgY29uZmlybXMgdGhlIGRlcGVuZGVuY3kgb24gSVB2Ni4gQnV0IGlzIGBtY2FzdC5jYCBlbnRpcmVseSBkZXBlbmRlbnQsIG9yIGFyZSB0aGVyZSBtb3JlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24ga25vYnMgaW5zaWRlIGl0PyBJJiMzOTtsbCBuZWVkIHRvIGRpZyBhIGxpdHRsZSBkZWVwZXIgaW50byB0aGUgZmlsZSBpdHNlbGYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9tY2FzdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L21jYXN0LmM9MjkwOT1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGlnbXA2X25ldGRldl9ub3RpZmllciA9IHtcbi0tXG5uZXQvaXB2Ni9tY2FzdC5jLTI5MTItXG5uZXQvaXB2Ni9tY2FzdC5jOjI5MTM6I2lmZGVmIENPTkZJR19QUk9DX0ZTXG5uZXQvaXB2Ni9tY2FzdC5jLTI5MTQtc3RydWN0IGlnbXA2X21jX2l0ZXJfc3RhdGUge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxODo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTMzNAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDUwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFN0cmF0ZWd5IGZvciBgbmV0L2lwdjYvbWNhc3QuY2AqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRGl2aW5nIGludG8gYG5ldC9pcHY2L21jYXN0LmNgLCBJJiMzOTt2ZSBjb25maXJtZWQgdGhlcmUgYXJlIG5vIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHdpdGhpbiB0aGUgZmlsZSBpdHNlbGYgKm90aGVyKiB0aGFuIGBDT05GSUdfUFJPQ19GU2AuIFRoYXQgbmFycm93cyBkb3duIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgdG8gYElQX01VTFRJQ0FTVGAgYW5kIGBJUFY2YCBhcyB0aGUgZXNzZW50aWFsIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBtb2R1bGUuCgpOb3csIHRoZSBjb3JlIG9mIHRoaXMgYXNzZXNzbWVudCBpcyB0byBkZXRlcm1pbmUgdGhlIG9wdGltYWwgZm9jdXMgZm9yIGZ1enppbmcgZWZmb3J0cy4gVGhlIGRpZmYgaWRlbnRpZmllcyBhIHNldCBvZiBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gbW9kaWZpZWQsIGFuZCB0aGF0IGlzIHdoZXJlIHRoZSBleHBsb3JhdGlvbiB3aWxsIGNvbnRpbnVlOgoKKiAgIGBpZ21wX3N0b3BfdGltZXJgCiogICBgaWdtcF9ncV9zdGFydF90aW1lcmAKKiAgIGBpZ21wX2lmY19zdGFydF90aW1lcmAKKiAgIGBpZ21wX21vZF90aW1lcmAKKiAgIGBtbGRfZ3Ffc3RhcnRfd29ya2AKKiAgIGBtbGRfZ3Ffc3RvcF93b3JrYAoqICAgYG1sZF9pZmNfc3RhcnRfd29ya2AKKiAgIGBtbGRfaWZjX3N0b3Bfd29ya2AKKiAgIGBtbGRfZGFkX3N0YXJ0X3dvcmtgCiogICBgbWxkX2RhZF9zdG9wX3dvcmtgCiogICBgaWdtcDZfZXZlbnRfcXVlcnlgCiogICBgaWdtcDZfZXZlbnRfcmVwb3J0YAoKVGhlc2UgdHdlbHZlIGZ1bmN0aW9ucyBqdW1wIG91dCBpbW1lZGlhdGVseSBhcyBwcmltZSBjYW5kaWRhdGVzIGZvciBmdXp6aW5nIHdpdGggYEZvY3VzU3ltYm9sc2AuIFRoZXkgcmVwcmVzZW50IGtleSBhcmVhcyB3aGVyZSBtdWx0aWNhc3QgYmVoYXZpb3IgaGFzIGJlZW4gdG91Y2hlZC4gVGhlIGFpbSBpcyB0byB2ZXJpZnkgdGhhdCB0aGV5IGFyZSByZWFjaGFibGUgYW5kIG5vdCB0cml2aWFsbHkgZ2VuZXJpYy4KCkZyb20gdGhlIGNvZGUsIGBpZ21wNl9ldmVudF9xdWVyeWAgYW5kIGBpZ21wNl9ldmVudF9yZXBvcnRgIGFyZSBjbGVhcmx5IHRyaWdnZXJlZCB1cG9uIHRoZSByZWNlcHRpb24gb2YgSUdNUC9NTEQgcGFja2V0cywgbWFraW5nIHRoZW0gZXhjZWxsZW50IHRhcmdldHMuIGBpZ21wX3N0b3BfdGltZXJgLCBgaWdtcF9ncV9zdGFydF90aW1lcmAsIGBpZ21wX2lmY19zdGFydF90aW1lcmAsIGFuZCBgaWdtcF9tb2RfdGltZXJgIGFyZSByZWxhdGVkIHRvIElHTVAgc3RhdGUgdHJhbnNpdGlvbnMsIGFuZCBzaW1pbGFybHksIGBtbGRfZ3Ffc3RhcnRfd29ya2AsIGBtbGRfaWZjX3N0YXJ0X3dvcmtgLCBhbmQgYG1sZF9kYWRfc3RhcnRfd29ya2AgYXJlIGxpbmtlZCB0byBNTEQgc3RhdGUgdHJhbnNpdGlvbnMuCgpTbywgdGhlIGxpc3QgdG8gdGFyZ2V0IGlzOgoKKiAgIGBpZ21wX3N0b3BfdGltZXJgCiogICBgaWdtcF9ncV9zdGFydF90aW1lcmAKKiAgIGBpZ21wX2lmY19zdGFydF90aW1lcmAKKiAgIGBpZ21wX21vZF90aW1lcmAKKiAgIGBtbGRfZ3Ffc3RhcnRfd29ya2AKKiAgIGBtbGRfZ3Ffc3RvcF93b3JrYAoqICAgYG1sZF9pZmNfc3RhcnRfd29ya2AKKiAgIGBtbGRfaWZjX3N0b3Bfd29ya2AKKiAgIGBtbGRfZGFkX3N0YXJ0X3dvcmtgCiogICBgbWxkX2RhZF9zdG9wX3dvcmtgCiogICBgaWdtcDZfZXZlbnRfcXVlcnlgCiogICBgaWdtcDZfZXZlbnRfcmVwb3J0YAoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgc3VidGx5IG1vZGlmaWVkIGZ1bmN0aW9ucyBoaWRpbmcgaW4gdGhlIGRpZmYgdGhhdCBtaWdodCBhbHNvIGJlIHJlbGV2YW50LCBzbyBJJiMzOTtsbCByZXZpZXcgdGhlIHBhdGNoIGFnYWluIGZvciBhbnkgbWlzc2VkIGNhbmRpZGF0ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2luX2Rldl9ob2xkX3NhZmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2luZXRkZXZpY2UuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2luZXRkZXZpY2UuaD0yODc9c3RhdGljIGlubGluZSB2b2lkIGluX2Rldl9wdXQoc3RydWN0IGluX2RldmljZSAqaWRldilcbi0tXG5pbmNsdWRlL2xpbnV4L2luZXRkZXZpY2UuaC0yOTUtXG5pbmNsdWRlL2xpbnV4L2luZXRkZXZpY2UuaDoyOTY6c3RhdGljIGlubGluZSBib29sIGluX2Rldl9ob2xkX3NhZmUoc3RydWN0IGluX2RldmljZSAqaWRldilcbmluY2x1ZGUvbGludXgvaW5ldGRldmljZS5oLTI5Ny17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNjQ2CgkJCQkJCQlvdXRwdXQ6IDMxMAoJCQkJCQkJdGhvdWdodHM6IDQzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBOZXR3b3JraW5nIFBhdGNoKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYGluX2Rldl9ob2xkX3NhZmVgIGFuZCBgaW42X2Rldl9ob2xkX3NhZmVgIGFyZSBpbmxpbmUgZnVuY3Rpb25zLiBUaHVzLCB0aGV5IGRvbiYjMzk7dCByZWFsbHkgbmVlZCB0byBiZSBsaXN0ZWQgaW4gYEZvY3VzU3ltYm9sc2AuIFRoZXkgYXJlIGJlaW5nIHVzZWQgdG8gZWxpbWluYXRlIGEgcmFjZSBjb25kaXRpb24g4oCTIHRoYXQmIzM5O3MgdGhlIGNvcmUgb2YgdGhpcyBjaGFuZ2UuIEl0IHNlZW1zIGxpa2UgdGhlIGV4aXN0aW5nIGNvZGUgaGFkIGEgcHJvYmxlbSB3aGVyZSBhIHRpbWVyIG9yIHdvcmtxdWV1ZSBjb3VsZCBnZXQgc2NoZWR1bGVkIG9uIGEgZGV2aWNlIChgaW5fZGV2YCBvciBgaW5ldDZfZGV2YCkgdGhhdCYjMzk7cyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuIFRoaXMgaXMgYSBjbGFzc2ljIHJlY2lwZSBmb3IgYSB1c2UtYWZ0ZXItZnJlZSBvciByZWZjb3VudCBpc3N1ZXMuIFRoZSBmaXggbGV2ZXJhZ2VzIGBpbl9kZXZfaG9sZF9zYWZlYCAod2hpY2ggcmVsaWVzIG9uIGByZWZjb3VudF9pbmNfbm90X3plcm9gKSB0byBwcmV2ZW50IHRoZSByZWZlcmVuY2UgZnJvbSBiZWluZyB0YWtlbiBpZiB0aGUgZGV2aWNlIGlzIGFscmVhZHkgb24gaXRzIHdheSBvdXQuCgpGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBtb2RpZmljYXRpb24gaW4gY29yZSBuZXR3b3JraW5nIGxvZ2ljIOKAkyBzcGVjaWZpY2FsbHkgYXJvdW5kIElHTVAgYW5kIE1MRCB0aW1lciBhbmQgd29ya3F1ZXVlIG1hbmFnZW1lbnQuIFRoZSBjaGFuZ2UgaW52b2x2ZXMgYGluX2Rldl9ob2xkX3NhZmVgIGFuZCB0aGUgc2FmZXIgY291bnRlcnBhcnQsIHNvIGRlZmluaXRlbHkgc29tZXRoaW5nIHRvIGZ1enouCgpMZXQgbWUgYnJlYWsgZG93biB3aGF0IEkgc2VlIGFzIHRoZSBpbXBvcnRhbnQgcGllY2VzOgoKKiAgICoqV29ydGhGdXp6aW5nKio6IEFic29sdXRlbHkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIHdlIG5lZWQgdG8gdmVyaWZ5IGl0cyBpbXBhY3Qgb24gc3RhYmlsaXR5IGFuZCBjb3JyZWN0bmVzcy4KKiAgICoqRm9jdXMgU3ltYm9scyoqOiBJJiMzOTtkIHBheSBleHRyYSBhdHRlbnRpb24gdG8gYGlnbXBfc3RvcF90aW1lcmAsIGBpZ21wX2dxX3N0YXJ0X3RpbWVyYCwgYGlnbXBfaWZjX3N0YXJ0X3RpbWVyYCwgYGlnbXBfbW9kX3RpbWVyYCwgYG1sZF9ncV9zdGFydF93b3JrYCwgYG1sZF9ncV9zdG9wX3dvcmtgLCBgbWxkX2lmY19zdGFydF93b3JrYCwgYG1sZF9pZmNfc3RvcF93b3JrYCwgYG1sZF9kYWRfc3RhcnRfd29ya2AsIGBtbGRfZGFkX3N0b3Bfd29ya2AsIGBpZ21wNl9ldmVudF9xdWVyeWAsIGFuZCBgaWdtcDZfZXZlbnRfcmVwb3J0YC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgZGlyZWN0bHkgdG91Y2hlZCBieSB0aGUgcGF0Y2ggYW5kIHRoYXQgbWFuYWdlIGNyaXRpY2FsIHRpbWVyIGFuZCB3b3JrcXVldWUgb3BlcmF0aW9ucy4KKiAgICoqRW5hYmxlIENvbmZpZ3MqKjogYElQX01VTFRJQ0FTVGAgYW5kIGBJUFY2YCBhcmUgcmVsZXZhbnQgYmVjYXVzZSB0aGUgcGF0Y2ggaW1wYWN0cyBJR01QIGFuZCBNTEQsIHdoaWNoIGFyZSBjb3JlIGNvbXBvbmVudHMgb2YgbXVsdGljYXN0IGFuZCBJUHY2IGZ1bmN0aW9uYWxpdHkgcmVzcGVjdGl2ZWx5LgoKRXNzZW50aWFsbHksIHRoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIHdheSBJR01QIGFuZCBNTEQgdGltZXJzIGFuZCB3b3JrcXVldWVzIGFjcXVpcmUgYW5kIHJlbGVhc2UgZGV2aWNlIHJlZmVyZW5jZXMsIGFuZCBkZWZlcnMgYGlwX21hX3B1dGAgYW5kIGBpbjZfZGV2X3B1dGAgaW4gY2VydGFpbiBzY2VuYXJpb3MuIFRoaXMgcHJvdGVjdHMgYWdhaW5zdCB1c2UtYWZ0ZXItZnJlZSBidWdzIHRoYXQgY291bGQgYXJpc2Ugd2hlbiBkZXZpY2VzIGFyZSBiZWluZyBkZXN0cm95ZWQsIHNvIGl0IGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBuZWVkcyB0byBiZSBleHRlbnNpdmVseSBmdXp6ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9NVUxUSUNBU1QmIzM0OywKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lnbXBfc3RvcF90aW1lciYjMzQ7LAogICAgJiMzNDtpZ21wX2dxX3N0YXJ0X3RpbWVyJiMzNDssCiAgICAmIzM0O2lnbXBfaWZjX3N0YXJ0X3RpbWVyJiMzNDssCiAgICAmIzM0O2lnbXBfbW9kX3RpbWVyJiMzNDssCiAgICAmIzM0O21sZF9ncV9zdGFydF93b3JrJiMzNDssCiAgICAmIzM0O21sZF9ncV9zdG9wX3dvcmsmIzM0OywKICAgICYjMzQ7bWxkX2lmY19zdGFydF93b3JrJiMzNDssCiAgICAmIzM0O21sZF9pZmNfc3RvcF93b3JrJiMzNDssCiAgICAmIzM0O21sZF9kYWRfc3RhcnRfd29yayYjMzQ7LAogICAgJiMzNDttbGRfZGFkX3N0b3Bfd29yayYjMzQ7LAogICAgJiMzNDtpZ21wNl9ldmVudF9xdWVyeSYjMzQ7LAogICAgJiMzNDtpZ21wNl9ldmVudF9yZXBvcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgSUdNUCBhbmQgTUxEIHRpbWVyIGFuZCB3b3JrcXVldWUgaGFuZGxpbmcgdG8gdXNlIGBpbl9kZXZfaG9sZF9zYWZlYCBhbmQgYGluNl9kZXZfaG9sZF9zYWZlYCAod2hpY2ggdXNlIGByZWZjb3VudF9pbmNfbm90X3plcm9gKSBpbnN0ZWFkIG9mIGBpbl9kZXZfaG9sZGAgYW5kIGBpbjZfZGV2X2hvbGRgLiBJdCBhbHNvIGRlZmVycyBgaXBfbWFfcHV0YCBhbmQgYGluNl9kZXZfcHV0YCBvdXRzaWRlIG9mIHNwaW5sb2NrcyBpbiBzb21lIGNhc2VzLiBUaGlzIGZpeGVzIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByZWZjb3VudCBidWdzIHdoZW4gdGltZXJzL3dvcmtxdWV1ZXMgYXJlIHNjaGVkdWxlZCB3aGlsZSB0aGUgZGV2aWNlIGlzIGJlaW5nIGRlc3Ryb3llZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29ya2luZyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX01VTFRJQ0FTVCYjMzQ7LAogICAgJiMzNDtJUFY2JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWdtcF9zdG9wX3RpbWVyJiMzNDssCiAgICAmIzM0O2lnbXBfZ3Ffc3RhcnRfdGltZXImIzM0OywKICAgICYjMzQ7aWdtcF9pZmNfc3RhcnRfdGltZXImIzM0OywKICAgICYjMzQ7aWdtcF9tb2RfdGltZXImIzM0OywKICAgICYjMzQ7bWxkX2dxX3N0YXJ0X3dvcmsmIzM0OywKICAgICYjMzQ7bWxkX2dxX3N0b3Bfd29yayYjMzQ7LAogICAgJiMzNDttbGRfaWZjX3N0YXJ0X3dvcmsmIzM0OywKICAgICYjMzQ7bWxkX2lmY19zdG9wX3dvcmsmIzM0OywKICAgICYjMzQ7bWxkX2RhZF9zdGFydF93b3JrJiMzNDssCiAgICAmIzM0O21sZF9kYWRfc3RvcF93b3JrJiMzNDssCiAgICAmIzM0O2lnbXA2X2V2ZW50X3F1ZXJ5JiMzNDssCiAgICAmIzM0O2lnbXA2X2V2ZW50X3JlcG9ydCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBJR01QIGFuZCBNTEQgdGltZXIgYW5kIHdvcmtxdWV1ZSBoYW5kbGluZyB0byB1c2UgYGluX2Rldl9ob2xkX3NhZmVgIGFuZCBgaW42X2Rldl9ob2xkX3NhZmVgICh3aGljaCB1c2UgYHJlZmNvdW50X2luY19ub3RfemVyb2ApIGluc3RlYWQgb2YgYGluX2Rldl9ob2xkYCBhbmQgYGluNl9kZXZfaG9sZGAuIEl0IGFsc28gZGVmZXJzIGBpcF9tYV9wdXRgIGFuZCBgaW42X2Rldl9wdXRgIG91dHNpZGUgb2Ygc3BpbmxvY2tzIGluIHNvbWUgY2FzZXMuIFRoaXMgZml4ZXMgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJlZmNvdW50IGJ1Z3Mgd2hlbiB0aW1lcnMvd29ya3F1ZXVlcyBhcmUgc2NoZWR1bGVkIHdoaWxlIHRoZSBkZXZpY2UgaXMgYmVpbmcgZGVzdHJveWVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JraW5nIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjQzOjEzLjcyNjg5OTc1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzEzMjU2MjA0OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfTVVMVElDQVNUXCIsXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWdtcF9zdG9wX3RpbWVyXCIsXG4gICAgXCJpZ21wX2dxX3N0YXJ0X3RpbWVyXCIsXG4gICAgXCJpZ21wX2lmY19zdGFydF90aW1lclwiLFxuICAgIFwiaWdtcF9tb2RfdGltZXJcIixcbiAgICBcIm1sZF9ncV9zdGFydF93b3JrXCIsXG4gICAgXCJtbGRfZ3Ffc3RvcF93b3JrXCIsXG4gICAgXCJtbGRfaWZjX3N0YXJ0X3dvcmtcIixcbiAgICBcIm1sZF9pZmNfc3RvcF93b3JrXCIsXG4gICAgXCJtbGRfZGFkX3N0YXJ0X3dvcmtcIixcbiAgICBcIm1sZF9kYWRfc3RvcF93b3JrXCIsXG4gICAgXCJpZ21wNl9ldmVudF9xdWVyeVwiLFxuICAgIFwiaWdtcDZfZXZlbnRfcmVwb3J0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgSUdNUCBhbmQgTUxEIHRpbWVyIGFuZCB3b3JrcXVldWUgaGFuZGxpbmcgdG8gdXNlIGBpbl9kZXZfaG9sZF9zYWZlYCBhbmQgYGluNl9kZXZfaG9sZF9zYWZlYCAod2hpY2ggdXNlIGByZWZjb3VudF9pbmNfbm90X3plcm9gKSBpbnN0ZWFkIG9mIGBpbl9kZXZfaG9sZGAgYW5kIGBpbjZfZGV2X2hvbGRgLiBJdCBhbHNvIGRlZmVycyBgaXBfbWFfcHV0YCBhbmQgYGluNl9kZXZfcHV0YCBvdXRzaWRlIG9mIHNwaW5sb2NrcyBpbiBzb21lIGNhc2VzLiBUaGlzIGZpeGVzIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByZWZjb3VudCBidWdzIHdoZW4gdGltZXJzL3dvcmtxdWV1ZXMgYXJlIHNjaGVkdWxlZCB3aGlsZSB0aGUgZGV2aWNlIGlzIGJlaW5nIGRlc3Ryb3llZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29ya2luZyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjQzOjEzLjcyNjkwNjA3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDgwNzcyOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmOWRjYTIwODBjODAzYzIzNjA1ZjcxNmViY2I3MzQ2Y2E1ODgyNTBmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDUgMTg6NDM6MTIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9pbmV0ZGV2aWNlLmggYi9pbmNsdWRlL2xpbnV4L2luZXRkZXZpY2UuaFxcbmluZGV4IGRjY2JlYjI1ZjcwMTQxLi42MDMyZWVhMjUzOWE2MCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2luZXRkZXZpY2UuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvaW5ldGRldmljZS5oXFxuQEAgLTI5Myw2ICsyOTMsMTEgQEAgc3RhdGljIGlubGluZSB2b2lkIGluX2Rldl9wdXQoc3RydWN0IGluX2RldmljZSAqaWRldilcXG4gI2RlZmluZSBfX2luX2Rldl9wdXQoaWRldikgIHJlZmNvdW50X2RlYyhcXHUwMDI2KGlkZXYpLVxcdTAwM2VyZWZjbnQpXFxuICNkZWZpbmUgaW5fZGV2X2hvbGQoaWRldikgICByZWZjb3VudF9pbmMoXFx1MDAyNihpZGV2KS1cXHUwMDNlcmVmY250KVxcbiBcXG4rc3RhdGljIGlubGluZSBib29sIGluX2Rldl9ob2xkX3NhZmUoc3RydWN0IGluX2RldmljZSAqaWRldilcXG4re1xcbitcXHRyZXR1cm4gcmVmY291bnRfaW5jX25vdF96ZXJvKFxcdTAwMjZpZGV2LVxcdTAwM2VyZWZjbnQpO1xcbit9XFxuK1xcbiAjZW5kaWYgLyogX19LRVJORUxfXyAqL1xcbiBcXG4gc3RhdGljIF9faW5saW5lX18gX19iZTMyIGluZXRfbWFrZV9tYXNrKGludCBsb2dtYXNrKVxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9hZGRyY29uZi5oIGIvaW5jbHVkZS9uZXQvYWRkcmNvbmYuaFxcbmluZGV4IDUzOWJiYmU1NGIxNGU4Li44Y2VkMjdhODIyOWI2ZSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9hZGRyY29uZi5oXFxuKysrIGIvaW5jbHVkZS9uZXQvYWRkcmNvbmYuaFxcbkBAIC00NDYsNiArNDQ2LDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbjZfZGV2X2hvbGQoc3RydWN0IGluZXQ2X2RldiAqaWRldilcXG4gXFx0cmVmY291bnRfaW5jKFxcdTAwMjZpZGV2LVxcdTAwM2VyZWZjbnQpO1xcbiB9XFxuIFxcbitzdGF0aWMgaW5saW5lIGJvb2wgaW42X2Rldl9ob2xkX3NhZmUoc3RydWN0IGluZXQ2X2RldiAqaWRldilcXG4re1xcbitcXHRyZXR1cm4gcmVmY291bnRfaW5jX25vdF96ZXJvKFxcdTAwMjZpZGV2LVxcdTAwM2VyZWZjbnQpO1xcbit9XFxuK1xcbiAvKiBjYWxsZWQgd2l0aCByY3VfcmVhZF9sb2NrIGhlbGQgKi9cXG4gc3RhdGljIGlubGluZSBib29sIGlwNl9pZ25vcmVfbGlua2Rvd24oY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4ge1xcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pZ21wLmMgYi9uZXQvaXB2NC9pZ21wLmNcXG5pbmRleCBiNjMzN2E0N2MxNDE4NS4uOTU3MDEzZTdmN2EyNWYgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvaWdtcC5jXFxuKysrIGIvbmV0L2lwdjQvaWdtcC5jXFxuQEAgLTIxNywxMyArMjE3LDE4IEBAIHN0YXRpYyB2b2lkIGlwX3NmX2xpc3RfY2xlYXJfYWxsKHN0cnVjdCBpcF9zZl9saXN0ICpwc2YpXFxuIFxcbiBzdGF0aWMgdm9pZCBpZ21wX3N0b3BfdGltZXIoc3RydWN0IGlwX21jX2xpc3QgKmltKVxcbiB7XFxuK1xcdGJvb2wgcHV0ID0gZmFsc2U7XFxuK1xcbiBcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmltLVxcdTAwM2Vsb2NrKTtcXG4gXFx0aWYgKHRpbWVyX2RlbGV0ZShcXHUwMDI2aW0tXFx1MDAzZXRpbWVyKSlcXG4tXFx0XFx0cmVmY291bnRfZGVjKFxcdTAwMjZpbS1cXHUwMDNlcmVmY250KTtcXG4rXFx0XFx0cHV0ID0gdHJ1ZTtcXG4gXFx0V1JJVEVfT05DRShpbS1cXHUwMDNldG1fcnVubmluZywgMCk7XFxuIFxcdFdSSVRFX09OQ0UoaW0tXFx1MDAzZXJlcG9ydGVyLCAwKTtcXG4gXFx0aW0tXFx1MDAzZXVuc29saWNpdF9jb3VudCA9IDA7XFxuIFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZpbS1cXHUwMDNlbG9jayk7XFxuK1xcbitcXHRpZiAocHV0KVxcbitcXHRcXHRpcF9tYV9wdXQoaW0pO1xcbiB9XFxuIFxcbiAvKiBJdCBtdXN0IGJlIGNhbGxlZCB3aXRoIGxvY2tlZCBpbS1cXHUwMDNlbG9jayAqL1xcbkBAIC0yNDgsMjAgKzI1MywyNiBAQCBzdGF0aWMgdm9pZCBpZ21wX2dxX3N0YXJ0X3RpbWVyKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldilcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0aW5fZGV2LVxcdTAwM2Vtcl9ncV9ydW5uaW5nID0gMTtcXG4tXFx0aWYgKCFtb2RfdGltZXIoXFx1MDAyNmluX2Rldi1cXHUwMDNlbXJfZ3FfdGltZXIsIGV4cCkpXFxuLVxcdFxcdGluX2Rldl9ob2xkKGluX2Rldik7XFxuK1xcdGlmIChpbl9kZXZfaG9sZF9zYWZlKGluX2RldikpIHtcXG4rXFx0XFx0aWYgKG1vZF90aW1lcihcXHUwMDI2aW5fZGV2LVxcdTAwM2Vtcl9ncV90aW1lciwgZXhwKSlcXG4rXFx0XFx0XFx0aW5fZGV2X3B1dChpbl9kZXYpO1xcbitcXHR9XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGlnbXBfaWZjX3N0YXJ0X3RpbWVyKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldiwgaW50IGRlbGF5KVxcbiB7XFxuLVxcdGludCB0diA9IGdldF9yYW5kb21fdTMyX2JlbG93KGRlbGF5KTtcXG4rXFx0aWYgKGluX2Rldl9ob2xkX3NhZmUoaW5fZGV2KSkge1xcbitcXHRcXHRpbnQgdHYgPSBnZXRfcmFuZG9tX3UzMl9iZWxvdyhkZWxheSk7XFxuIFxcbi1cXHRpZiAoIW1vZF90aW1lcihcXHUwMDI2aW5fZGV2LVxcdTAwM2Vtcl9pZmNfdGltZXIsIGppZmZpZXMrdHYrMikpXFxuLVxcdFxcdGluX2Rldl9ob2xkKGluX2Rldik7XFxuK1xcdFxcdGlmIChtb2RfdGltZXIoXFx1MDAyNmluX2Rldi1cXHUwMDNlbXJfaWZjX3RpbWVyLCBqaWZmaWVzICsgdHYgKyAyKSlcXG4rXFx0XFx0XFx0aW5fZGV2X3B1dChpbl9kZXYpO1xcbitcXHR9XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGlnbXBfbW9kX3RpbWVyKHN0cnVjdCBpcF9tY19saXN0ICppbSwgaW50IG1heF9kZWxheSlcXG4ge1xcbitcXHRib29sIHB1dCA9IGZhbHNlO1xcbitcXG4gXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZpbS1cXHUwMDNlbG9jayk7XFxuIFxcdGltLVxcdTAwM2V1bnNvbGljaXRfY291bnQgPSAwO1xcbiBcXHRpZiAodGltZXJfZGVsZXRlKFxcdTAwMjZpbS1cXHUwMDNldGltZXIpKSB7XFxuQEAgLTI3MSwxMCArMjgyLDEzIEBAIHN0YXRpYyB2b2lkIGlnbXBfbW9kX3RpbWVyKHN0cnVjdCBpcF9tY19saXN0ICppbSwgaW50IG1heF9kZWxheSlcXG4gXFx0XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmltLVxcdTAwM2Vsb2NrKTtcXG4gXFx0XFx0XFx0cmV0dXJuO1xcbiBcXHRcXHR9XFxuLVxcdFxcdHJlZmNvdW50X2RlYyhcXHUwMDI2aW0tXFx1MDAzZXJlZmNudCk7XFxuK1xcdFxcdHB1dCA9IHRydWU7XFxuIFxcdH1cXG4gXFx0aWdtcF9zdGFydF90aW1lcihpbSwgbWF4X2RlbGF5KTtcXG4gXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmltLVxcdTAwM2Vsb2NrKTtcXG4rXFxuK1xcdGlmIChwdXQpXFxuK1xcdFxcdGlwX21hX3B1dChpbSk7XFxuIH1cXG4gXFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9tY2FzdC5jIGIvbmV0L2lwdjYvbWNhc3QuY1xcbmluZGV4IDA0YjgxMWIzYmU5NzhlLi40ZDJiOTM3N2JhMmRlNSAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni9tY2FzdC5jXFxuKysrIGIvbmV0L2lwdjYvbWNhc3QuY1xcbkBAIC0xMDgzLDggKzEwODMsMTAgQEAgc3RhdGljIHZvaWQgbWxkX2dxX3N0YXJ0X3dvcmsoc3RydWN0IGluZXQ2X2RldiAqaWRldilcXG4gXFx0bWNfYXNzZXJ0X2xvY2tlZChpZGV2KTtcXG4gXFxuIFxcdGlkZXYtXFx1MDAzZW1jX2dxX3J1bm5pbmcgPSAxO1xcbi1cXHRpZiAoIW1vZF9kZWxheWVkX3dvcmsobWxkX3dxLCBcXHUwMDI2aWRldi1cXHUwMDNlbWNfZ3Ffd29yaywgdHYgKyAyKSlcXG4tXFx0XFx0aW42X2Rldl9ob2xkKGlkZXYpO1xcbitcXHRpZiAoaW42X2Rldl9ob2xkX3NhZmUoaWRldikpIHtcXG4rXFx0XFx0aWYgKG1vZF9kZWxheWVkX3dvcmsobWxkX3dxLCBcXHUwMDI2aWRldi1cXHUwMDNlbWNfZ3Ffd29yaywgdHYgKyAyKSlcXG4rXFx0XFx0XFx0aW42X2Rldl9wdXQoaWRldik7XFxuK1xcdH1cXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgbWxkX2dxX3N0b3Bfd29yayhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KVxcbkBAIC0xMTAyLDggKzExMDQsMTAgQEAgc3RhdGljIHZvaWQgbWxkX2lmY19zdGFydF93b3JrKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYsIHVuc2lnbmVkIGxvbmcgZGVsYXkpXFxuIFxcbiBcXHRtY19hc3NlcnRfbG9ja2VkKGlkZXYpO1xcbiBcXG4tXFx0aWYgKCFtb2RfZGVsYXllZF93b3JrKG1sZF93cSwgXFx1MDAyNmlkZXYtXFx1MDAzZW1jX2lmY193b3JrLCB0diArIDIpKVxcbi1cXHRcXHRpbjZfZGV2X2hvbGQoaWRldik7XFxuK1xcdGlmIChpbjZfZGV2X2hvbGRfc2FmZShpZGV2KSkge1xcbitcXHRcXHRpZiAobW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFxcdTAwMjZpZGV2LVxcdTAwM2VtY19pZmNfd29yaywgdHYgKyAyKSlcXG4rXFx0XFx0XFx0aW42X2Rldl9wdXQoaWRldik7XFxuK1xcdH1cXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgbWxkX2lmY19zdG9wX3dvcmsoc3RydWN0IGluZXQ2X2RldiAqaWRldilcXG5AQCAtMTEyMSw4ICsxMTI1LDEwIEBAIHN0YXRpYyB2b2lkIG1sZF9kYWRfc3RhcnRfd29yayhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2LCB1bnNpZ25lZCBsb25nIGRlbGF5KVxcbiBcXG4gXFx0bWNfYXNzZXJ0X2xvY2tlZChpZGV2KTtcXG4gXFxuLVxcdGlmICghbW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFxcdTAwMjZpZGV2LVxcdTAwM2VtY19kYWRfd29yaywgdHYgKyAyKSlcXG4tXFx0XFx0aW42X2Rldl9ob2xkKGlkZXYpO1xcbitcXHRpZiAoaW42X2Rldl9ob2xkX3NhZmUoaWRldikpIHtcXG4rXFx0XFx0aWYgKG1vZF9kZWxheWVkX3dvcmsobWxkX3dxLCBcXHUwMDI2aWRldi1cXHUwMDNlbWNfZGFkX3dvcmssIHR2ICsgMikpXFxuK1xcdFxcdFxcdGluNl9kZXZfcHV0KGlkZXYpO1xcbitcXHR9XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIG1sZF9kYWRfc3RvcF93b3JrKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpXFxuQEAgLTEzOTUsMTggKzE0MDEsMjMgQEAgc3RhdGljIHZvaWQgbWxkX3Byb2Nlc3NfdjIoc3RydWN0IGluZXQ2X2RldiAqaWRldiwgc3RydWN0IG1sZDJfcXVlcnkgKm1sZCxcXG4gdm9pZCBpZ21wNl9ldmVudF9xdWVyeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB7XFxuIFxcdHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYgPSBfX2luNl9kZXZfZ2V0KHNrYi1cXHUwMDNlZGV2KTtcXG4rXFx0Ym9vbCBwdXQgPSBmYWxzZTtcXG4gXFxuIFxcdGlmICghaWRldiB8fCBpZGV2LVxcdTAwM2VkZWFkKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFxuIFxcdHNwaW5fbG9ja19iaChcXHUwMDI2aWRldi1cXHUwMDNlbWNfcXVlcnlfbG9jayk7XFxuLVxcdGlmIChza2JfcXVldWVfbGVuKFxcdTAwMjZpZGV2LVxcdTAwM2VtY19xdWVyeV9xdWV1ZSkgXFx1MDAzYyBNTERfTUFYX1NLQlMpIHtcXG4rXFx0aWYgKHNrYl9xdWV1ZV9sZW4oXFx1MDAyNmlkZXYtXFx1MDAzZW1jX3F1ZXJ5X3F1ZXVlKSBcXHUwMDNjIE1MRF9NQVhfU0tCUyBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgaW42X2Rldl9ob2xkX3NhZmUoaWRldikpIHtcXG4gXFx0XFx0X19za2JfcXVldWVfdGFpbChcXHUwMDI2aWRldi1cXHUwMDNlbWNfcXVlcnlfcXVldWUsIHNrYik7XFxuLVxcdFxcdGlmICghbW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFxcdTAwMjZpZGV2LVxcdTAwM2VtY19xdWVyeV93b3JrLCAwKSlcXG4tXFx0XFx0XFx0aW42X2Rldl9ob2xkKGlkZXYpO1xcbitcXHRcXHRpZiAobW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFxcdTAwMjZpZGV2LVxcdTAwM2VtY19xdWVyeV93b3JrLCAwKSlcXG4rXFx0XFx0XFx0cHV0ID0gdHJ1ZTtcXG4gXFx0XFx0c2tiID0gTlVMTDtcXG4gXFx0fVxcbiBcXHRzcGluX3VubG9ja19iaChcXHUwMDI2aWRldi1cXHUwMDNlbWNfcXVlcnlfbG9jayk7XFxuK1xcbitcXHRpZiAocHV0KVxcbitcXHRcXHRpbjZfZGV2X3B1dChpZGV2KTtcXG4gb3V0OlxcbiBcXHRrZnJlZV9za2Ioc2tiKTtcXG4gfVxcbkBAIC0xNTcwLDE4ICsxNTgxLDIzIEBAIHN0YXRpYyB2b2lkIG1sZF9xdWVyeV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gdm9pZCBpZ21wNl9ldmVudF9yZXBvcnQoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4ge1xcbiBcXHRzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2ID0gX19pbjZfZGV2X2dldChza2ItXFx1MDAzZWRldik7XFxuK1xcdGJvb2wgcHV0ID0gZmFsc2U7XFxuIFxcbiBcXHRpZiAoIWlkZXYgfHwgaWRldi1cXHUwMDNlZGVhZClcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcbiBcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmlkZXYtXFx1MDAzZW1jX3JlcG9ydF9sb2NrKTtcXG4tXFx0aWYgKHNrYl9xdWV1ZV9sZW4oXFx1MDAyNmlkZXYtXFx1MDAzZW1jX3JlcG9ydF9xdWV1ZSkgXFx1MDAzYyBNTERfTUFYX1NLQlMpIHtcXG4rXFx0aWYgKHNrYl9xdWV1ZV9sZW4oXFx1MDAyNmlkZXYtXFx1MDAzZW1jX3JlcG9ydF9xdWV1ZSkgXFx1MDAzYyBNTERfTUFYX1NLQlMgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIGluNl9kZXZfaG9sZF9zYWZlKGlkZXYpKSB7XFxuIFxcdFxcdF9fc2tiX3F1ZXVlX3RhaWwoXFx1MDAyNmlkZXYtXFx1MDAzZW1jX3JlcG9ydF9xdWV1ZSwgc2tiKTtcXG4tXFx0XFx0aWYgKCFtb2RfZGVsYXllZF93b3JrKG1sZF93cSwgXFx1MDAyNmlkZXYtXFx1MDAzZW1jX3JlcG9ydF93b3JrLCAwKSlcXG4tXFx0XFx0XFx0aW42X2Rldl9ob2xkKGlkZXYpO1xcbitcXHRcXHRpZiAobW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFxcdTAwMjZpZGV2LVxcdTAwM2VtY19yZXBvcnRfd29yaywgMCkpXFxuK1xcdFxcdFxcdHB1dCA9IHRydWU7XFxuIFxcdFxcdHNrYiA9IE5VTEw7XFxuIFxcdH1cXG4gXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmlkZXYtXFx1MDAzZW1jX3JlcG9ydF9sb2NrKTtcXG4rXFxuK1xcdGlmIChwdXQpXFxuK1xcdFxcdGluNl9kZXZfcHV0KGlkZXYpO1xcbiBvdXQ6XFxuIFxcdGtmcmVlX3NrYihza2IpO1xcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjQzOjE0LjMzNzE2Mjg2NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA3MTUzNDc5NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfTVVMVElDQVNUXCIsXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWdtcF9zdG9wX3RpbWVyXCIsXG4gICAgXCJpZ21wX2dxX3N0YXJ0X3RpbWVyXCIsXG4gICAgXCJpZ21wX2lmY19zdGFydF90aW1lclwiLFxuICAgIFwiaWdtcF9tb2RfdGltZXJcIixcbiAgICBcIm1sZF9ncV9zdGFydF93b3JrXCIsXG4gICAgXCJtbGRfZ3Ffc3RvcF93b3JrXCIsXG4gICAgXCJtbGRfaWZjX3N0YXJ0X3dvcmtcIixcbiAgICBcIm1sZF9pZmNfc3RvcF93b3JrXCIsXG4gICAgXCJtbGRfZGFkX3N0YXJ0X3dvcmtcIixcbiAgICBcIm1sZF9kYWRfc3RvcF93b3JrXCIsXG4gICAgXCJpZ21wNl9ldmVudF9xdWVyeVwiLFxuICAgIFwiaWdtcDZfZXZlbnRfcmVwb3J0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgSUdNUCBhbmQgTUxEIHRpbWVyIGFuZCB3b3JrcXVldWUgaGFuZGxpbmcgdG8gdXNlIGBpbl9kZXZfaG9sZF9zYWZlYCBhbmQgYGluNl9kZXZfaG9sZF9zYWZlYCAod2hpY2ggdXNlIGByZWZjb3VudF9pbmNfbm90X3plcm9gKSBpbnN0ZWFkIG9mIGBpbl9kZXZfaG9sZGAgYW5kIGBpbjZfZGV2X2hvbGRgLiBJdCBhbHNvIGRlZmVycyBgaXBfbWFfcHV0YCBhbmQgYGluNl9kZXZfcHV0YCBvdXRzaWRlIG9mIHNwaW5sb2NrcyBpbiBzb21lIGNhc2VzLiBUaGlzIGZpeGVzIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByZWZjb3VudCBidWdzIHdoZW4gdGltZXJzL3dvcmtxdWV1ZXMgYXJlIHNjaGVkdWxlZCB3aGlsZSB0aGUgZGV2aWNlIGlzIGJlaW5nIGRlc3Ryb3llZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29ya2luZyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjlkY2EyMDgwYzgwM2MyMzYwNWY3MTZlYmNiNzM0NmNhNTg4MjUwZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDUgMTg6NDM6MTIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2luZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvaW5ldGRldmljZS5oXG5pbmRleCBkY2NiZWIyNWY3MDE0MS4uNjAzMmVlYTI1MzlhNjAgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2luZXRkZXZpY2UuaFxuKysrIGIvaW5jbHVkZS9saW51eC9pbmV0ZGV2aWNlLmhcbkBAIC0yOTMsNiArMjkzLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbl9kZXZfcHV0KHN0cnVjdCBpbl9kZXZpY2UgKmlkZXYpXG4gI2RlZmluZSBfX2luX2Rldl9wdXQoaWRldikgIHJlZmNvdW50X2RlYyhcdTAwMjYoaWRldiktXHUwMDNlcmVmY250KVxuICNkZWZpbmUgaW5fZGV2X2hvbGQoaWRldikgICByZWZjb3VudF9pbmMoXHUwMDI2KGlkZXYpLVx1MDAzZXJlZmNudClcbiBcbitzdGF0aWMgaW5saW5lIGJvb2wgaW5fZGV2X2hvbGRfc2FmZShzdHJ1Y3QgaW5fZGV2aWNlICppZGV2KVxuK3tcbitcdHJldHVybiByZWZjb3VudF9pbmNfbm90X3plcm8oXHUwMDI2aWRldi1cdTAwM2VyZWZjbnQpO1xuK31cbitcbiAjZW5kaWYgLyogX19LRVJORUxfXyAqL1xuIFxuIHN0YXRpYyBfX2lubGluZV9fIF9fYmUzMiBpbmV0X21ha2VfbWFzayhpbnQgbG9nbWFzaylcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9hZGRyY29uZi5oIGIvaW5jbHVkZS9uZXQvYWRkcmNvbmYuaFxuaW5kZXggNTM5YmJiZTU0YjE0ZTguLjhjZWQyN2E4MjI5YjZlIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvYWRkcmNvbmYuaFxuKysrIGIvaW5jbHVkZS9uZXQvYWRkcmNvbmYuaFxuQEAgLTQ0Niw2ICs0NDYsMTEgQEAgc3RhdGljIGlubGluZSB2b2lkIGluNl9kZXZfaG9sZChzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KVxuIFx0cmVmY291bnRfaW5jKFx1MDAyNmlkZXYtXHUwMDNlcmVmY250KTtcbiB9XG4gXG4rc3RhdGljIGlubGluZSBib29sIGluNl9kZXZfaG9sZF9zYWZlKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpXG4re1xuK1x0cmV0dXJuIHJlZmNvdW50X2luY19ub3RfemVybyhcdTAwMjZpZGV2LVx1MDAzZXJlZmNudCk7XG4rfVxuK1xuIC8qIGNhbGxlZCB3aXRoIHJjdV9yZWFkX2xvY2sgaGVsZCAqL1xuIHN0YXRpYyBpbmxpbmUgYm9vbCBpcDZfaWdub3JlX2xpbmtkb3duKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lnbXAuYyBiL25ldC9pcHY0L2lnbXAuY1xuaW5kZXggYjYzMzdhNDdjMTQxODUuLjk1NzAxM2U3ZjdhMjVmIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaWdtcC5jXG4rKysgYi9uZXQvaXB2NC9pZ21wLmNcbkBAIC0yMTcsMTMgKzIxNywxOCBAQCBzdGF0aWMgdm9pZCBpcF9zZl9saXN0X2NsZWFyX2FsbChzdHJ1Y3QgaXBfc2ZfbGlzdCAqcHNmKVxuIFxuIHN0YXRpYyB2b2lkIGlnbXBfc3RvcF90aW1lcihzdHJ1Y3QgaXBfbWNfbGlzdCAqaW0pXG4ge1xuK1x0Ym9vbCBwdXQgPSBmYWxzZTtcbitcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZpbS1cdTAwM2Vsb2NrKTtcbiBcdGlmICh0aW1lcl9kZWxldGUoXHUwMDI2aW0tXHUwMDNldGltZXIpKVxuLVx0XHRyZWZjb3VudF9kZWMoXHUwMDI2aW0tXHUwMDNlcmVmY250KTtcbitcdFx0cHV0ID0gdHJ1ZTtcbiBcdFdSSVRFX09OQ0UoaW0tXHUwMDNldG1fcnVubmluZywgMCk7XG4gXHRXUklURV9PTkNFKGltLVx1MDAzZXJlcG9ydGVyLCAwKTtcbiBcdGltLVx1MDAzZXVuc29saWNpdF9jb3VudCA9IDA7XG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZpbS1cdTAwM2Vsb2NrKTtcbitcbitcdGlmIChwdXQpXG4rXHRcdGlwX21hX3B1dChpbSk7XG4gfVxuIFxuIC8qIEl0IG11c3QgYmUgY2FsbGVkIHdpdGggbG9ja2VkIGltLVx1MDAzZWxvY2sgKi9cbkBAIC0yNDgsMjAgKzI1MywyNiBAQCBzdGF0aWMgdm9pZCBpZ21wX2dxX3N0YXJ0X3RpbWVyKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldilcbiBcdFx0cmV0dXJuO1xuIFxuIFx0aW5fZGV2LVx1MDAzZW1yX2dxX3J1bm5pbmcgPSAxO1xuLVx0aWYgKCFtb2RfdGltZXIoXHUwMDI2aW5fZGV2LVx1MDAzZW1yX2dxX3RpbWVyLCBleHApKVxuLVx0XHRpbl9kZXZfaG9sZChpbl9kZXYpO1xuK1x0aWYgKGluX2Rldl9ob2xkX3NhZmUoaW5fZGV2KSkge1xuK1x0XHRpZiAobW9kX3RpbWVyKFx1MDAyNmluX2Rldi1cdTAwM2Vtcl9ncV90aW1lciwgZXhwKSlcbitcdFx0XHRpbl9kZXZfcHV0KGluX2Rldik7XG4rXHR9XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGlnbXBfaWZjX3N0YXJ0X3RpbWVyKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldiwgaW50IGRlbGF5KVxuIHtcbi1cdGludCB0diA9IGdldF9yYW5kb21fdTMyX2JlbG93KGRlbGF5KTtcbitcdGlmIChpbl9kZXZfaG9sZF9zYWZlKGluX2RldikpIHtcbitcdFx0aW50IHR2ID0gZ2V0X3JhbmRvbV91MzJfYmVsb3coZGVsYXkpO1xuIFxuLVx0aWYgKCFtb2RfdGltZXIoXHUwMDI2aW5fZGV2LVx1MDAzZW1yX2lmY190aW1lciwgamlmZmllcyt0disyKSlcbi1cdFx0aW5fZGV2X2hvbGQoaW5fZGV2KTtcbitcdFx0aWYgKG1vZF90aW1lcihcdTAwMjZpbl9kZXYtXHUwMDNlbXJfaWZjX3RpbWVyLCBqaWZmaWVzICsgdHYgKyAyKSlcbitcdFx0XHRpbl9kZXZfcHV0KGluX2Rldik7XG4rXHR9XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGlnbXBfbW9kX3RpbWVyKHN0cnVjdCBpcF9tY19saXN0ICppbSwgaW50IG1heF9kZWxheSlcbiB7XG4rXHRib29sIHB1dCA9IGZhbHNlO1xuK1xuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmltLVx1MDAzZWxvY2spO1xuIFx0aW0tXHUwMDNldW5zb2xpY2l0X2NvdW50ID0gMDtcbiBcdGlmICh0aW1lcl9kZWxldGUoXHUwMDI2aW0tXHUwMDNldGltZXIpKSB7XG5AQCAtMjcxLDEwICsyODIsMTMgQEAgc3RhdGljIHZvaWQgaWdtcF9tb2RfdGltZXIoc3RydWN0IGlwX21jX2xpc3QgKmltLCBpbnQgbWF4X2RlbGF5KVxuIFx0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmltLVx1MDAzZWxvY2spO1xuIFx0XHRcdHJldHVybjtcbiBcdFx0fVxuLVx0XHRyZWZjb3VudF9kZWMoXHUwMDI2aW0tXHUwMDNlcmVmY250KTtcbitcdFx0cHV0ID0gdHJ1ZTtcbiBcdH1cbiBcdGlnbXBfc3RhcnRfdGltZXIoaW0sIG1heF9kZWxheSk7XG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZpbS1cdTAwM2Vsb2NrKTtcbitcbitcdGlmIChwdXQpXG4rXHRcdGlwX21hX3B1dChpbSk7XG4gfVxuIFxuIFxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L21jYXN0LmMgYi9uZXQvaXB2Ni9tY2FzdC5jXG5pbmRleCAwNGI4MTFiM2JlOTc4ZS4uNGQyYjkzNzdiYTJkZTUgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9tY2FzdC5jXG4rKysgYi9uZXQvaXB2Ni9tY2FzdC5jXG5AQCAtMTA4Myw4ICsxMDgzLDEwIEBAIHN0YXRpYyB2b2lkIG1sZF9ncV9zdGFydF93b3JrKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpXG4gXHRtY19hc3NlcnRfbG9ja2VkKGlkZXYpO1xuIFxuIFx0aWRldi1cdTAwM2VtY19ncV9ydW5uaW5nID0gMTtcbi1cdGlmICghbW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFx1MDAyNmlkZXYtXHUwMDNlbWNfZ3Ffd29yaywgdHYgKyAyKSlcbi1cdFx0aW42X2Rldl9ob2xkKGlkZXYpO1xuK1x0aWYgKGluNl9kZXZfaG9sZF9zYWZlKGlkZXYpKSB7XG4rXHRcdGlmIChtb2RfZGVsYXllZF93b3JrKG1sZF93cSwgXHUwMDI2aWRldi1cdTAwM2VtY19ncV93b3JrLCB0diArIDIpKVxuK1x0XHRcdGluNl9kZXZfcHV0KGlkZXYpO1xuK1x0fVxuIH1cbiBcbiBzdGF0aWMgdm9pZCBtbGRfZ3Ffc3RvcF93b3JrKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpXG5AQCAtMTEwMiw4ICsxMTA0LDEwIEBAIHN0YXRpYyB2b2lkIG1sZF9pZmNfc3RhcnRfd29yayhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2LCB1bnNpZ25lZCBsb25nIGRlbGF5KVxuIFxuIFx0bWNfYXNzZXJ0X2xvY2tlZChpZGV2KTtcbiBcbi1cdGlmICghbW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFx1MDAyNmlkZXYtXHUwMDNlbWNfaWZjX3dvcmssIHR2ICsgMikpXG4tXHRcdGluNl9kZXZfaG9sZChpZGV2KTtcbitcdGlmIChpbjZfZGV2X2hvbGRfc2FmZShpZGV2KSkge1xuK1x0XHRpZiAobW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFx1MDAyNmlkZXYtXHUwMDNlbWNfaWZjX3dvcmssIHR2ICsgMikpXG4rXHRcdFx0aW42X2Rldl9wdXQoaWRldik7XG4rXHR9XG4gfVxuIFxuIHN0YXRpYyB2b2lkIG1sZF9pZmNfc3RvcF93b3JrKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpXG5AQCAtMTEyMSw4ICsxMTI1LDEwIEBAIHN0YXRpYyB2b2lkIG1sZF9kYWRfc3RhcnRfd29yayhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2LCB1bnNpZ25lZCBsb25nIGRlbGF5KVxuIFxuIFx0bWNfYXNzZXJ0X2xvY2tlZChpZGV2KTtcbiBcbi1cdGlmICghbW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFx1MDAyNmlkZXYtXHUwMDNlbWNfZGFkX3dvcmssIHR2ICsgMikpXG4tXHRcdGluNl9kZXZfaG9sZChpZGV2KTtcbitcdGlmIChpbjZfZGV2X2hvbGRfc2FmZShpZGV2KSkge1xuK1x0XHRpZiAobW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFx1MDAyNmlkZXYtXHUwMDNlbWNfZGFkX3dvcmssIHR2ICsgMikpXG4rXHRcdFx0aW42X2Rldl9wdXQoaWRldik7XG4rXHR9XG4gfVxuIFxuIHN0YXRpYyB2b2lkIG1sZF9kYWRfc3RvcF93b3JrKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpXG5AQCAtMTM5NSwxOCArMTQwMSwyMyBAQCBzdGF0aWMgdm9pZCBtbGRfcHJvY2Vzc192MihzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2LCBzdHJ1Y3QgbWxkMl9xdWVyeSAqbWxkLFxuIHZvaWQgaWdtcDZfZXZlbnRfcXVlcnkoc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2ID0gX19pbjZfZGV2X2dldChza2ItXHUwMDNlZGV2KTtcbitcdGJvb2wgcHV0ID0gZmFsc2U7XG4gXG4gXHRpZiAoIWlkZXYgfHwgaWRldi1cdTAwM2VkZWFkKVxuIFx0XHRnb3RvIG91dDtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZpZGV2LVx1MDAzZW1jX3F1ZXJ5X2xvY2spO1xuLVx0aWYgKHNrYl9xdWV1ZV9sZW4oXHUwMDI2aWRldi1cdTAwM2VtY19xdWVyeV9xdWV1ZSkgXHUwMDNjIE1MRF9NQVhfU0tCUykge1xuK1x0aWYgKHNrYl9xdWV1ZV9sZW4oXHUwMDI2aWRldi1cdTAwM2VtY19xdWVyeV9xdWV1ZSkgXHUwMDNjIE1MRF9NQVhfU0tCUyBcdTAwMjZcdTAwMjZcbitcdCAgICBpbjZfZGV2X2hvbGRfc2FmZShpZGV2KSkge1xuIFx0XHRfX3NrYl9xdWV1ZV90YWlsKFx1MDAyNmlkZXYtXHUwMDNlbWNfcXVlcnlfcXVldWUsIHNrYik7XG4tXHRcdGlmICghbW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFx1MDAyNmlkZXYtXHUwMDNlbWNfcXVlcnlfd29yaywgMCkpXG4tXHRcdFx0aW42X2Rldl9ob2xkKGlkZXYpO1xuK1x0XHRpZiAobW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFx1MDAyNmlkZXYtXHUwMDNlbWNfcXVlcnlfd29yaywgMCkpXG4rXHRcdFx0cHV0ID0gdHJ1ZTtcbiBcdFx0c2tiID0gTlVMTDtcbiBcdH1cbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmlkZXYtXHUwMDNlbWNfcXVlcnlfbG9jayk7XG4rXG4rXHRpZiAocHV0KVxuK1x0XHRpbjZfZGV2X3B1dChpZGV2KTtcbiBvdXQ6XG4gXHRrZnJlZV9za2Ioc2tiKTtcbiB9XG5AQCAtMTU3MCwxOCArMTU4MSwyMyBAQCBzdGF0aWMgdm9pZCBtbGRfcXVlcnlfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gdm9pZCBpZ21wNl9ldmVudF9yZXBvcnQoc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2ID0gX19pbjZfZGV2X2dldChza2ItXHUwMDNlZGV2KTtcbitcdGJvb2wgcHV0ID0gZmFsc2U7XG4gXG4gXHRpZiAoIWlkZXYgfHwgaWRldi1cdTAwM2VkZWFkKVxuIFx0XHRnb3RvIG91dDtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZpZGV2LVx1MDAzZW1jX3JlcG9ydF9sb2NrKTtcbi1cdGlmIChza2JfcXVldWVfbGVuKFx1MDAyNmlkZXYtXHUwMDNlbWNfcmVwb3J0X3F1ZXVlKSBcdTAwM2MgTUxEX01BWF9TS0JTKSB7XG4rXHRpZiAoc2tiX3F1ZXVlX2xlbihcdTAwMjZpZGV2LVx1MDAzZW1jX3JlcG9ydF9xdWV1ZSkgXHUwMDNjIE1MRF9NQVhfU0tCUyBcdTAwMjZcdTAwMjZcbitcdCAgICBpbjZfZGV2X2hvbGRfc2FmZShpZGV2KSkge1xuIFx0XHRfX3NrYl9xdWV1ZV90YWlsKFx1MDAyNmlkZXYtXHUwMDNlbWNfcmVwb3J0X3F1ZXVlLCBza2IpO1xuLVx0XHRpZiAoIW1vZF9kZWxheWVkX3dvcmsobWxkX3dxLCBcdTAwMjZpZGV2LVx1MDAzZW1jX3JlcG9ydF93b3JrLCAwKSlcbi1cdFx0XHRpbjZfZGV2X2hvbGQoaWRldik7XG4rXHRcdGlmIChtb2RfZGVsYXllZF93b3JrKG1sZF93cSwgXHUwMDI2aWRldi1cdTAwM2VtY19yZXBvcnRfd29yaywgMCkpXG4rXHRcdFx0cHV0ID0gdHJ1ZTtcbiBcdFx0c2tiID0gTlVMTDtcbiBcdH1cbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmlkZXYtXHUwMDNlbWNfcmVwb3J0X2xvY2spO1xuK1xuK1x0aWYgKHB1dClcbitcdFx0aW42X2Rldl9wdXQoaWRldik7XG4gb3V0OlxuIFx0a2ZyZWVfc2tiKHNrYik7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6NDM6MTQuMzM3MTY1MjY0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk4Mzk1NzkxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDb3JlIE5ldHdvcmtpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBoYW5kbGluZyBvZiBJR01QIChJUHY0IG11bHRpY2FzdCkgYW5kIE1MRCAoSVB2NiBtdWx0aWNhc3QpIHRpbWVycyBhbmQgd29ya3F1ZXVlcy4gVGhlIGNvcmUgY2hhbmdlIGlzIHRvIHJlcGxhY2UgYGluX2Rldl9ob2xkYCBhbmQgYGluNl9kZXZfaG9sZGAgd2l0aCBgaW5fZGV2X2hvbGRfc2FmZWAgYW5kIGBpbjZfZGV2X2hvbGRfc2FmZWAsIGxldmVyYWdpbmcgYHJlZmNvdW50X2luY19ub3RfemVyb2AgaW5zdGVhZC4gUGx1cywgaXQncyBkZWZlcnJpbmcgYGlwX21hX3B1dGAgYW5kIGBpbjZfZGV2X3B1dGAgb3V0c2lkZSBvZiBzcGlubG9ja3MgaW4gc29tZSBzY2VuYXJpb3MuIEZ1bmN0aW9uYWxseSwgdGhpcyBpbXBhY3RzIGhvdyB0aGUgbmV0d29ya2luZyBzdGFjayBoYW5kbGVzIHRoZXNlIG11bHRpY2FzdCBwcm90b2NvbHMgYXQgdGhlaXIgY29yZS5cblxuVGhlIGFpbSBoZXJlIGlzIGNsZWFybHkgdG8gZWxpbWluYXRlIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByZWZjb3VudCBpc3N1ZXMgdGhhdCBjb3VsZCBhcmlzZSB3aGVuIHRpbWVycyBvciB3b3JrcXVldWVzIGFyZSBhY3RpdmUgYW5kIHNjaGVkdWxlZCBkdXJpbmcgYSBkZXZpY2UncyBkZXN0cnVjdGlvbi4gVGhpcyBpcyBzbWFydDsgcmVzb3VyY2UgbWFuYWdlbWVudCBpbiB0aGlzIGFyZWEgY2FuIGJlIHRyaWNreS5cblxuTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBjb25maWdzIHJlbGF0ZWQgdG8gSUdNUCBhbmQgTUxEIGFyZSBpbiBwbGFjZS4gSUdNUCBpcyBuYXR1cmFsbHkgdGllZCB0byBJUHY0IG11bHRpY2FzdCwgd2hpY2ggbWVhbnMgSSBzaG91bGQgYmUgbG9va2luZyBhdCBgQ09ORklHX0lQX01VTFRJQ0FTVGAuIEZvciBNTEQsIHdoaWNoIGlzIElQdjYncyBtdWx0aWNhc3QgY291bnRlcnBhcnQsIEknbSBleHBlY3RpbmcgYENPTkZJR19JUFY2YCB0byBiZSB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uLlxuXG5MZXQncyBmaW5kIHRoZSByZWxldmFudCBwaWVjZXMgb2YgY29kZS4gSSBuZWVkIHRvIHNlYXJjaCBmb3IgYWxsIGluc3RhbmNlcyBvZiBgaWdtcF9zdG9wX3RpbWVyYCwgYGlnbXBfZ3Ffc3RhcnRfdGltZXJgLCBgaWdtcF9pZmNfc3RhcnRfdGltZXJgLCBgaWdtcF9tb2RfdGltZXJgLCBgbWxkX2dxX3N0YXJ0X3dvcmtgLCBgbWxkX2lmY19zdGFydF93b3JrYCwgYG1sZF9kYWRfc3RhcnRfd29ya2AsIGBpZ21wNl9ldmVudF9xdWVyeWAsIGFuZCBgaWdtcDZfZXZlbnRfcmVwb3J0YC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgdGhlIHRpbWVyIGFuZCB3b3JrcXVldWUgbWVjaGFuaWNzIHRoaXMgcGF0Y2ggdG91Y2hlcy5cblxuRmluYWxseSwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRob3NlIGNvbmZpZ3VyYXRpb25zIGFyZSBjb3JyZWN0bHkgc2V0LiBUaGlzIHdpbGwgYmUgdGhlIGtleSB0byBhc3Nlc3NpbmcgaWYgdGhlIGNoYW5nZXMgYXJlIGNvcnJlY3RseSBpbXBsZW1lbnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDMyNCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjQzOjIwLjMyMTEyNTc1OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTQ5MTQxOTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlnbXBfc3RvcF90aW1lclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9pZ21wLmM9MjAxPXN0YXRpYyB2b2lkIGlwX3NmX2xpc3RfY2xlYXJfYWxsKHN0cnVjdCBpcF9zZl9saXN0ICpwc2YpXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMjE3LVxcbm5ldC9pcHY0L2lnbXAuYzoyMTg6c3RhdGljIHZvaWQgaWdtcF9zdG9wX3RpbWVyKHN0cnVjdCBpcF9tY19saXN0ICppbSlcXG5uZXQvaXB2NC9pZ21wLmMtMjE5LXtcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz05NDk9c3RhdGljIGJvb2wgaWdtcF9oZWFyZF9yZXBvcnQoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgZ3JvdXApXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtOTY0LVxcdFxcdGlmIChpbS1cXHUwMDNlbXVsdGlhZGRyID09IGdyb3VwKSB7XFxubmV0L2lwdjQvaWdtcC5jOjk2NTpcXHRcXHRcXHRpZ21wX3N0b3BfdGltZXIoaW0pO1xcbm5ldC9pcHY0L2lnbXAuYy05NjYtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvaXB2NC9pZ21wLmM9MTMyMj1zdGF0aWMgdm9pZCBfX2lnbXBfZ3JvdXBfZHJvcHBlZChzdHJ1Y3QgaXBfbWNfbGlzdCAqaW0sIGdmcF90IGdmcClcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0xMzQyLVxcdHJlcG9ydGVyID0gUkVBRF9PTkNFKGltLVxcdTAwM2VyZXBvcnRlcik7XFxubmV0L2lwdjQvaWdtcC5jOjEzNDM6XFx0aWdtcF9zdG9wX3RpbWVyKGltKTtcXG5uZXQvaXB2NC9pZ21wLmMtMTM0NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6NDM6MjMuNDcwMjczMDU5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAyOTQxODg5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKktjb25maWcgYW5kIElQX01VTFRJQ0FTVDogQSBRdWljayBDaGVjayoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgYElQX01VTFRJQ0FTVGAgaXMgZW5hYmxlZCBpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIEJlZm9yZSBJIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgY29kZSBpdHNlbGYsIGxldCdzIHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBLY29uZmlnIGZpbGVzLiBUaGF0J3MgdGhlIGZpcnN0IGFuZCBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gdmVyaWZ5IGlmIHRoaXMgZmVhdHVyZSBpcyBldmVuICphdmFpbGFibGUqIHRvIG1lIGluIHRoaXMgYnVpbGQuIEknZCB0eXBpY2FsbHkgc3RhcnQgd2l0aCB0aGUgbW9zdCByZWxldmFudCBLY29uZmlnIGZpbGUgZm9yIG5ldHdvcmsgY29uZmlndXJhdGlvbnMgYW5kIG11bHRpY2FzdCBzdXBwb3J0LCBidXQgSSdsbCBuZWVkIHRvIGtub3cgdGhlIHNwZWNpZmljIHBsYXRmb3JtIHRvIGJlIGV4YWN0LiBUaGlzIGlzIGEgcHJlbGltaW5hcnkgY2hlY2sgdG8gcnVsZSBvdXQgYW55IGltbWVkaWF0ZSBpc3N1ZXMgb3IgY29uZmlybSBpdCdzIGJlZW4gZXhwbGljaXRseSBkaXNhYmxlZC4gSWYgaXQncyBub3QgcHJlc2VudCBvciBkaXNhYmxlZCwgdGhhdCdzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBlZmZvcnRzIGZpcnN0IHRvIGZpZ3VyZSBvdXQgdGhlIHJlYXNvbiBiZWhpbmQgdGhhdCBjaG9pY2UuIElmIGl0ICppcyogZW5hYmxlZCwgdGhlbiBJIGNhbiBtb3ZlIG9uIHRvIHRoZSBhY3R1YWwgY29kZS4gVGhpcyBpbml0aWFsIHN0ZXAgY291bGQgc2F2ZSBtZSBhIGxvdCBvZiB0aW1lIGRvd24gdGhlIHJvYWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NTQsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODo0MzoyNi40OTk2OTQ3NzhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc1NDQ2NzEzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfTVVMVElDQVNUXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWctNC0jXFxubmV0L2lwdjQvS2NvbmZpZzo1OmNvbmZpZyBJUF9NVUxUSUNBU1RcXG5uZXQvaXB2NC9LY29uZmlnLTYtXFx0Ym9vbCBcXFwiSVA6IG11bHRpY2FzdGluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6NDM6MjkuMjU0MTY4NjI5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIzNzQ2NTk3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ2hlY2tpbmcgS2NvbmZpZyBmb3IgSVB2NiBTdXBwb3J0KipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIElQdjYgY29uZmlndXJhdGlvbiB3aXRoaW4gdGhlIGN1cnJlbnQgS2NvbmZpZyBzZXR1cC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaXZlIHJpZ2h0IGludG8gdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMuIEknbGwgYmUgbG9va2luZyBmb3IgdGhlIG9idmlvdXMgZmxhZ3MgYW5kIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIElQdjYg4oCTIGBDT05GSUdfSVBWNmAsIGBDT05GSUdfSVBWNl9TTkRCVUZgLCBwZXJoYXBzIGV2ZW4gdGhlIG1vcmUgZ3JhbnVsYXIgb3B0aW9ucyBmb3Igc3BlY2lmaWMgSVB2NiBleHRlbnNpb25zIG9yIHByb3RvY29sIGltcGxlbWVudGF0aW9ucy4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGRlZmF1bHQgc3RhdGUgb2YgdGhlc2Ugb3B0aW9ucyBhbmQgc2VlIGlmIHRoZXkncmUgcHJvcGVybHkgZ3VhcmRlZCBieSBhbnkgZmVhdHVyZS1zcGVjaWZpYyBzZWxlY3Rpb25zIG9yIGFyY2hpdGVjdHVyZSBjb25zdHJhaW50cy4gSXMgdGhlcmUgYW55dGhpbmcgdW51c3VhbCBvciBub24tb2J2aW91cyB0aGF0IEkgbmVlZCB0byBiZSBvbiB0aGUgbG9va291dCBmb3I/IEknbGwgYWxzbyBnbGFuY2UgYXQgZGVwZW5kZW5jaWVzIHRvIGVuc3VyZSB0aGUgbmVjZXNzYXJ5IHVuZGVybHlpbmcgbmV0d29ya2luZyBjb21wb25lbnRzIGFyZSBpbiBwbGFjZS4gR290IHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nJ3Mgd2lyZWQgdXAgY29ycmVjdGx5IGJlZm9yZSBJIGNhbiBtb3ZlIGZvcndhcmQuIFRoaXMgaW5pdGlhbCBjaGVjayB3aWxsIGdpdmUgbWUgdGhlIGluZm9ybWF0aW9uIHRvIG1ha2UgYSBxdWljayBkZXRlcm1pbmF0aW9uIGlmIGl0J3MgdGhlcmUsIGlmIGl0IGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgb3IgaWYgSSBuZWVkIHRvIGFkZHJlc3MgYW55IGFwcGFyZW50IG1pc3NpbmcgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3NjAsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODo0MzozMi40OTE2MzcxNTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU0MDcwNzcyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBWNlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9LY29uZmlnLTUtXFxubmV0L2lwdjYvS2NvbmZpZzo2Om1lbnVjb25maWcgSVBWNlxcbm5ldC9pcHY2L0tjb25maWctNy1cXHRib29sIFxcXCJUaGUgSVB2NiBwcm90b2NvbFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9MTk9aWYgSVBWNlxcbm5ldC9pcHY2L0tjb25maWctMjAtXFxubmV0L2lwdjYvS2NvbmZpZzoyMTpjb25maWcgSVBWNl9ST1VURVJfUFJFRlxcbm5ldC9pcHY2L0tjb25maWctMjItXFx0Ym9vbCBcXFwiSVB2NjogUm91dGVyIFByZWZlcmVuY2UgKFJGQyA0MTkxKSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMC1cXG5uZXQvaXB2Ni9LY29uZmlnOjMxOmNvbmZpZyBJUFY2X1JPVVRFX0lORk9cXG5uZXQvaXB2Ni9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIklQdjY6IFJvdXRlIEluZm9ybWF0aW9uIChSRkMgNDE5MSkgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMzgtXFxubmV0L2lwdjYvS2NvbmZpZzozOTpjb25maWcgSVBWNl9PUFRJTUlTVElDX0RBRFxcbm5ldC9pcHY2L0tjb25maWctNDAtXFx0Ym9vbCBcXFwiSVB2NjogRW5hYmxlIFJGQyA0NDI5IE9wdGltaXN0aWMgREFEXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xMDI9Y29uZmlnIElORVQ2X0lQQ09NUFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xMTEtXFxubmV0L2lwdjYvS2NvbmZpZzoxMTI6Y29uZmlnIElQVjZfTUlQNlxcbm5ldC9pcHY2L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBNb2JpbGl0eVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTE5LVxcbm5ldC9pcHY2L0tjb25maWc6MTIwOmNvbmZpZyBJUFY2X0lMQVxcbm5ldC9pcHY2L0tjb25maWctMTIxLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBJZGVudGlmaWVyIExvY2F0b3IgQWRkcmVzc2luZyAoSUxBKVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9MTQ2PWNvbmZpZyBJTkVUNl9UVU5ORUxcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTQ5LVxcbm5ldC9pcHY2L0tjb25maWc6MTUwOmNvbmZpZyBJUFY2X1ZUSVxcbm5ldC9pcHY2L0tjb25maWctMTUxLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIChzZWN1cmUpIElQdjY6IHR1bm5lbGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTYxLVxcbm5ldC9pcHY2L0tjb25maWc6MTYyOmNvbmZpZyBJUFY2X1NJVFxcbm5ldC9pcHY2L0tjb25maWctMTYzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBJUHY2LWluLUlQdjQgdHVubmVsIChTSVQgZHJpdmVyKVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTc2LVxcbm5ldC9pcHY2L0tjb25maWc6MTc3OmNvbmZpZyBJUFY2X1NJVF82UkRcXG5uZXQvaXB2Ni9LY29uZmlnLTE3OC1cXHRib29sIFxcXCJJUHY2OiBJUHY2IFJhcGlkIERlcGxveW1lbnQgKDZSRClcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTE5NS1cXG5uZXQvaXB2Ni9LY29uZmlnOjE5Njpjb25maWcgSVBWNl9ORElTQ19OT0RFVFlQRVxcbm5ldC9pcHY2L0tjb25maWctMTk3LVxcdGJvb2xcXG5uZXQvaXB2Ni9LY29uZmlnLTE5OC1cXG5uZXQvaXB2Ni9LY29uZmlnOjE5OTpjb25maWcgSVBWNl9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogSVAtaW4tSVB2NiB0dW5uZWwgKFJGQzI0NzMpXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMDktXFxubmV0L2lwdjYvS2NvbmZpZzoyMTA6Y29uZmlnIElQVjZfR1JFXFxubmV0L2lwdjYvS2NvbmZpZy0yMTEtXFx0dHJpc3RhdGUgXFxcIklQdjY6IEdSRSB0dW5uZWxcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIyNy1cXG5uZXQvaXB2Ni9LY29uZmlnOjIyODpjb25maWcgSVBWNl9GT1VcXG5uZXQvaXB2Ni9LY29uZmlnLTIyOS1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMzEtXFxubmV0L2lwdjYvS2NvbmZpZzoyMzI6Y29uZmlnIElQVjZfRk9VX1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMjMzLVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIzNi1cXG5uZXQvaXB2Ni9LY29uZmlnOjIzNzpjb25maWcgSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG5uZXQvaXB2Ni9LY29uZmlnLTIzOC1cXHRib29sIFxcXCJJUHY2OiBNdWx0aXBsZSBSb3V0aW5nIFRhYmxlc1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjQyLVxcbm5ldC9pcHY2L0tjb25maWc6MjQzOmNvbmZpZyBJUFY2X1NVQlRSRUVTXFxubmV0L2lwdjYvS2NvbmZpZy0yNDQtXFx0Ym9vbCBcXFwiSVB2Njogc291cmNlIGFkZHJlc3MgYmFzZWQgcm91dGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjU2LVxcbm5ldC9pcHY2L0tjb25maWc6MjU3OmNvbmZpZyBJUFY2X01ST1VURVxcbm5ldC9pcHY2L0tjb25maWctMjU4LVxcdGJvb2wgXFxcIklQdjY6IG11bHRpY2FzdCByb3V0aW5nXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yNjQtXFxubmV0L2lwdjYvS2NvbmZpZzoyNjU6Y29uZmlnIElQVjZfTVJPVVRFX01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY2L0tjb25maWctMjY2LVxcdGJvb2wgXFxcIklQdjY6IG11bHRpY2FzdCBwb2xpY3kgcm91dGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjc4LVxcbm5ldC9pcHY2L0tjb25maWc6Mjc5OmNvbmZpZyBJUFY2X1BJTVNNX1YyXFxubmV0L2lwdjYvS2NvbmZpZy0yODAtXFx0Ym9vbCBcXFwiSVB2NjogUElNLVNNIHZlcnNpb24gMiBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yODUtXFxubmV0L2lwdjYvS2NvbmZpZzoyODY6Y29uZmlnIElQVjZfU0VHNl9MV1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMjg3LVxcdGJvb2wgXFxcIklQdjY6IFNlZ21lbnQgUm91dGluZyBIZWFkZXIgZW5jYXBzdWxhdGlvbiBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yOTktXFxubmV0L2lwdjYvS2NvbmZpZzozMDA6Y29uZmlnIElQVjZfU0VHNl9ITUFDXFxubmV0L2lwdjYvS2NvbmZpZy0zMDEtXFx0Ym9vbCBcXFwiSVB2NjogU2VnbWVudCBSb3V0aW5nIEhNQUMgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMzExLVxcbm5ldC9pcHY2L0tjb25maWc6MzEyOmNvbmZpZyBJUFY2X1NFRzZfQlBGXFxubmV0L2lwdjYvS2NvbmZpZy0zMTMtXFx0ZGVmX2Jvb2wgeVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMTYtXFxubmV0L2lwdjYvS2NvbmZpZzozMTc6Y29uZmlnIElQVjZfUlBMX0xXVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0zMTgtXFx0Ym9vbCBcXFwiSVB2NjogUlBMIFNvdXJjZSBSb3V0aW5nIEhlYWRlciBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMjctXFxubmV0L2lwdjYvS2NvbmZpZzozMjg6Y29uZmlnIElQVjZfSU9BTTZfTFdUVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTMyOS1cXHRib29sIFxcXCJJUHY2OiBJT0FNIFByZS1hbGxvY2F0ZWQgVHJhY2UgaW5zZXJ0aW9uIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjQzOjM1LjAzMjM1MTAwOVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5NDAyODUyNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIFBhdGNoIG9uIElHTVAgYW5kIE1MRCBUaW1lcnMgYW5kIFdvcmtxdWV1ZXMqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRpZ2dpbmcgaW50byB0aGUgdGltaW5nIG1lY2hhbmlzbXMgZm9yIElHTVAgYW5kIE1MRCwgc3BlY2lmaWNhbGx5IG1vZGlmeWluZyBgaWdtcF9zdG9wX3RpbWVyYCwgYGlnbXBfZ3Ffc3RhcnRfdGltZXJgLCBgaWdtcF9pZmNfc3RhcnRfdGltZXJgLCBgaWdtcF9tb2RfdGltZXJgIGluIGBuZXQvaXB2NC9pZ21wLmNgIGFuZCBhIGJ1bmNoIG9mIHdvcmtxdWV1ZXMgcmVsYXRlZCB0byBNTEQgaW4gYG5ldC9pcHY2L21jYXN0LmNgOiBgbWxkX2dxX3N0YXJ0X3dvcmtgLCBgbWxkX2dxX3N0b3Bfd29ya2AsIGBtbGRfaWZjX3N0YXJ0X3dvcmtgLCBgbWxkX2lmY19zdG9wX3dvcmtgLCBgbWxkX2RhZF9zdGFydF93b3JrYCwgYG1sZF9kYWRfc3RvcF93b3JrYCwgYWxvbmcgd2l0aCBgaWdtcDZfZXZlbnRfcXVlcnlgIGFuZCBgaWdtcDZfZXZlbnRfcmVwb3J0YC4gSW50ZXJlc3RpbmcuIEl0J3MgdG91Y2hpbmcgYm90aCBJUHY0IChJR01QKSBhbmQgSVB2NiAoTUxEKSBtdWx0aWNhc3QsIHNvIHdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aXRoIGFueSBwb3RlbnRpYWwgY3Jvc3MtcHJvdG9jb2wgaW50ZXJhY3Rpb25zLlxuXG5HaXZlbiB0aGF0IE1MRCBpcyBwYXJ0IG9mIElQdjYgbXVsdGljYXN0LCBpdCdzIHdvcnRod2hpbGUgdG8gc2VlIGlmIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBwZXJ0YWluIHRvIE1MRCBpdHNlbGYuIEkgc2hvdWxkIGNoZWNrIGlmIHRoZXJlJ3MgYSBzcGVjaWZpYyBjb25maWcga25vYiBmb3IgSVB2NiBtdWx0aWNhc3QgaW4gZ2VuZXJhbC4gSSBzZWUgYElQVjZfTVJPVVRFYCBidXQgdGhhdCdzIGZvciBtdWx0aWNhc3QgKnJvdXRpbmcqIHJhdGhlciB0aGFuIHRoZSBNTEQgcHJvdG9jb2wgaXRzZWxmLiBNTEQgc2hvdWxkIGJlIGVuYWJsZWQgYXMgcGFydCBvZiBhIHN0YW5kYXJkIElQdjYgc3RhY2suIFRvIGJlIGNvbXBsZXRlbHkgc3VyZSwgSSdsbCBkb3VibGUtY2hlY2sgdGhlIGBuZXQvaXB2Ni9tY2FzdC5jYCBmaWxlIGFuZCBpdHMgTWFrZWZpbGUgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgYnVpbGQtdGltZSBvciBjb21waWxlLXRpbWUgZGVwZW5kZW5jaWVzIG9yIG9wdGlvbnMgdGhhdCBjb3VsZCBpbmZsdWVuY2UgdGhpcyBwYXRjaCdzIGJlaGF2aW9yLiBJIG5lZWQgdG8gYmUgY2VydGFpbiBhYm91dCB0aGUgZGVwZW5kZW5jaWVzIGJlZm9yZSBzaWduaW5nIG9mZiBvbiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTY5LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjQzOjM5Ljk3MjYzODY1M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg1Njg0MjE3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtY2FzdC5vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODk4IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5hcmNoL3NoL2RyaXZlcnMvcGNpL01ha2VmaWxlPTEyPW9iai0kKENPTkZJR19DUFVfU1VCVFlQRV9TSDc3ODYpXFx0Kz0gcGNpZS1zaDc3ODYubyBvcHMtc2g3Nzg2Lm9cXG5hcmNoL3NoL2RyaXZlcnMvcGNpL01ha2VmaWxlLTEzLVxcbmFyY2gvc2gvZHJpdmVycy9wY2kvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX1NIX0RSRUFNQ0FTVClcXHRcXHQrPSBvcHMtZHJlYW1jYXN0Lm8gZml4dXBzLWRyZWFtY2FzdC5vIFxcXFxcXG5hcmNoL3NoL2RyaXZlcnMvcGNpL01ha2VmaWxlOjE1OlxcdFxcdFxcdFxcdFxcdCAgIHBjaS1kcmVhbWNhc3Qub1xcbmFyY2gvc2gvZHJpdmVycy9wY2kvTWFrZWZpbGUtMTYtb2JqLSQoQ09ORklHX1NIX1NFQ1VSRUVER0U1NDEwKVxcdFxcdCs9IGZpeHVwcy1zbmFwZ2Vhci5vXFxuLS1cXG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmM9NTE9c3RhdGljIGludCBjbl9maWx0ZXIoc3RydWN0IHNvY2sgKmRzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYy01My1cXHRfX3UzMiB3aGF0LCBleGl0X2NvZGUsICpwdHI7XFxuZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jOjU0OlxcdGVudW0gcHJvY19jbl9tY2FzdF9vcCBtY19vcDtcXG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmMtNTUtXFx0dWludHB0cl90IHZhbDtcXG4tLVxcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYy02My1cXHR2YWwgPSAoKHN0cnVjdCBwcm9jX2lucHV0ICopKGRzay1cXHUwMDNlc2tfdXNlcl9kYXRhKSktXFx1MDAzZWV2ZW50X3R5cGU7XFxuZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jOjY0OlxcdG1jX29wID0gKChzdHJ1Y3QgcHJvY19pbnB1dCAqKShkc2stXFx1MDAzZXNrX3VzZXJfZGF0YSkpLVxcdTAwM2VtY2FzdF9vcDtcXG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmMtNjUtXFxuLS1cXG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmM9Mzk1PXN0YXRpYyB2b2lkIGNuX3Byb2NfbWNhc3RfY3RsKHN0cnVjdCBjbl9tc2cgKm1zZyxcXG4tLVxcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYy0zOTcte1xcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYzozOTg6XFx0ZW51bSBwcm9jX2NuX21jYXN0X29wIG1jX29wID0gMCwgcHJldl9tY19vcCA9IDA7XFxuZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jLTM5OS1cXHRzdHJ1Y3QgcHJvY19pbnB1dCAqcGlucHV0ID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYy00MTQtXFx0XFx0cGlucHV0ID0gKHN0cnVjdCBwcm9jX2lucHV0ICopbXNnLVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYzo0MTU6XFx0XFx0bWNfb3AgPSBwaW5wdXQtXFx1MDAzZW1jYXN0X29wO1xcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYy00MTYtXFx0XFx0ZXZfdHlwZSA9IHBpbnB1dC1cXHUwMDNlZXZlbnRfdHlwZTtcXG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmMtNDE3LVxcdH0gZWxzZSBpZiAobXNnLVxcdTAwM2VsZW4gPT0gc2l6ZW9mKG1jX29wKSkge1xcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYzo0MTg6XFx0XFx0bWNfb3AgPSAqKChlbnVtIHByb2NfY25fbWNhc3Rfb3AgKiltc2ctXFx1MDAzZWRhdGEpO1xcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYy00MTktXFx0XFx0ZXZfdHlwZSA9IFBST0NfRVZFTlRfQUxMO1xcbi0tXFxuZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jLTQzOS1cXHRcXHRcXHRwcmV2X21jX29wID1cXG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmM6NDQwOlxcdFxcdFxcdCgoc3RydWN0IHByb2NfaW5wdXQgKikoc2stXFx1MDAzZXNrX3VzZXJfZGF0YSkpLVxcdTAwM2VtY2FzdF9vcDtcXG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmMtNDQxLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYy00NDMtXFx0XFx0XFx0ZXZfdHlwZTtcXG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmM6NDQ0OlxcdFxcdCgoc3RydWN0IHByb2NfaW5wdXQgKikoc2stXFx1MDAzZXNrX3VzZXJfZGF0YSkpLVxcdTAwM2VtY2FzdF9vcCA9IG1jX29wO1xcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYy00NDUtXFx0fVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9NYWtlZmlsZT05PW9iai0kKENPTkZJR19JTkZJTklCQU5EX1JETUFWVCkgKz0gcmRtYXZ0Lm9cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L01ha2VmaWxlLTEwLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvTWFrZWZpbGU6MTE6cmRtYXZ0LXkgOj0gdnQubyBhaC5vIGNxLm8gbWFkLm8gbWNhc3QubyBtbWFwLm8gbXIubyBwZC5vIHFwLm8gXFxcXFxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvTWFrZWZpbGUtMTItXFx0cmMubyBzcnEubyB0cmFjZS5vXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL01ha2VmaWxlPTQ9cmRtYV9yeGUteSA6PSBcXFxcXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL01ha2VmaWxlLTIxLVxcdHJ4ZV9pY3JjLm8gXFxcXFxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvTWFrZWZpbGU6MjI6XFx0cnhlX21jYXN0Lm8gXFxcXFxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvTWFrZWZpbGUtMjMtXFx0cnhlX3Rhc2subyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeC5oPTEzNDU9c3RydWN0IGJueDJ4IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4LmgtMTc5Mi1cXHQvKiBNQ0FTVCBvYmplY3QgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeC5oOjE3OTM6XFx0c3RydWN0IGJueDJ4X21jYXN0X29ialxcdFxcdFxcdG1jYXN0X29iajtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeC5oLTE3OTQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYz0yMTU3PXZvaWQgYm54Mnhfc3F1ZWV6ZV9vYmplY3RzKHN0cnVjdCBibngyeCAqYnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy0yMTg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jOjIxODY6XFx0LyoqKioqKioqKioqKioqKioqIE5vdyBjbGVhbiBtY2FzdCBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6MjE4NzpcXHRycGFyYW0ubWNhc3Rfb2JqID0gXFx1MDAyNmJwLVxcdTAwM2VtY2FzdF9vYmo7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtMjE4OC1cXHRfX3NldF9iaXQoUkFNUk9EX0RSVl9DTFJfT05MWSwgXFx1MDAyNnJwYXJhbS5yYW1yb2RfZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmg9MTEyMj1zdGF0aWMgaW5saW5lIHZvaWQgYm54MnhfaW5pdF9icF9vYmpzKHN0cnVjdCBibngyeCAqYnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uaC0xMTI3LVxcdC8qIG11bHRpY2FzdCBjb25maWd1cmF0aW9uIGNvbnRyb2xsaW5nIG9iamVjdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5oOjExMjg6XFx0Ym54MnhfaW5pdF9tY2FzdF9vYmooYnAsIFxcdTAwMjZicC1cXHUwMDNlbWNhc3Rfb2JqLCBicC1cXHUwMDNlZnAtXFx1MDAzZWNsX2lkLCBicC1cXHUwMDNlZnAtXFx1MDAzZWNpZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uaC0xMTI5LVxcdFxcdFxcdCAgICAgQlBfRlVOQyhicCksIEJQX0ZVTkMoYnApLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jPTUyODA9c3RhdGljIHZvaWQgYm54MnhfaGFuZGxlX21jYXN0X2VxZShzdHJ1Y3QgYm54MnggKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTUyODYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jOjUyODc6XFx0cnBhcmFtLm1jYXN0X29iaiA9IFxcdTAwMjZicC1cXHUwMDNlbWNhc3Rfb2JqO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy01Mjg4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTUyOTEtXFx0LyogQ2xlYXIgcGVuZGluZyBzdGF0ZSBmb3IgdGhlIGxhc3QgY29tbWFuZCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYzo1MjkyOlxcdGJwLVxcdTAwM2VtY2FzdF9vYmoucmF3LmNsZWFyX3BlbmRpbmcoXFx1MDAyNmJwLVxcdTAwM2VtY2FzdF9vYmoucmF3KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtNTI5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtNTI5NC1cXHQvKiBJZiB0aGVyZSBhcmUgcGVuZGluZyBtY2FzdCBjb21tYW5kcyAtIHNlbmQgdGhlbSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYzo1Mjk1OlxcdGlmIChicC1cXHUwMDNlbWNhc3Rfb2JqLmNoZWNrX3BlbmRpbmcoXFx1MDAyNmJwLVxcdTAwM2VtY2FzdF9vYmopKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTUyOTYtXFx0XFx0cmMgPSBibngyeF9jb25maWdfbWNhc3QoYnAsIFxcdTAwMjZycGFyYW0sIEJOWDJYX01DQVNUX0NNRF9DT05UKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz05MzM3PXZvaWQgYm54MnhfY2hpcF9jbGVhbnVwKHN0cnVjdCBibngyeCAqYnAsIGludCB1bmxvYWRfbW9kZSwgYm9vbCBrZWVwX2xpbmspXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtOTM5OS1cXHQvKiBDbGVhbnVwIG11bHRpY2FzdCBjb25maWd1cmF0aW9uICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jOjk0MDA6XFx0cnBhcmFtLm1jYXN0X29iaiA9IFxcdTAwMjZicC1cXHUwMDNlbWNhc3Rfb2JqO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy05NDAxLVxcdHJjID0gYm54MnhfY29uZmlnX21jYXN0KGJwLCBcXHUwMDI2cnBhcmFtLCBCTlgyWF9NQ0FTVF9DTURfREVMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz0xMjYxOT1zdGF0aWMgaW50IGJueDJ4X3NldF9tY19saXN0X2UxeChzdHJ1Y3QgYm54MnggKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEyNjI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYzoxMjYyNjpcXHRycGFyYW0ubWNhc3Rfb2JqID0gXFx1MDAyNmJwLVxcdTAwM2VtY2FzdF9vYmo7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEyNjI3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jPTEyNjU0PXN0YXRpYyBpbnQgYm54Mnhfc2V0X21jX2xpc3Qoc3RydWN0IGJueDJ4ICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMjY2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM6MTI2NjU6XFx0cnBhcmFtLm1jYXN0X29iaiA9IFxcdTAwMjZicC1cXHUwMDNlbWNhc3Rfb2JqO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMjY2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MjY0OD1zdGF0aWMgaW50IGJueDJ4X21jYXN0X3dhaXQoc3RydWN0IGJueDJ4ICpicCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjI2NDk6XFx0XFx0XFx0ICAgIHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0yNjUwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MjY3MT1zdGF0aWMgaW50IGJueDJ4X21jYXN0X2VucXVldWVfY21kKHN0cnVjdCBibngyeCAqYnAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzoyNjcyOlxcdFxcdFxcdFxcdCAgIHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0yNjczLVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBibngyeF9tY2FzdF9yYW1yb2RfcGFyYW1zICpwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0yNzc2LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6Mjc3NzpzdGF0aWMgaW5saW5lIGludCBibngyeF9tY2FzdF9nZXRfbmV4dF9iaW4oc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbywgaW50IGxhc3QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0yNzc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMjgwMy0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjI4MDQ6c3RhdGljIGlubGluZSBpbnQgYm54MnhfbWNhc3RfY2xlYXJfZmlyc3RfYmluKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0yODA1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMjgxMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjI4MTQ6c3RhdGljIGlubGluZSB1OCBibngyeF9tY2FzdF9nZXRfcnhfdHhfZmxhZyhzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMjgxNS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTI4MzA9c3RhdGljIHZvaWQgYm54MnhfbWNhc3Rfc2V0X29uZV9ydWxlX2UyKHN0cnVjdCBibngyeCAqYnAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzoyODMxOlxcdFxcdFxcdFxcdFxcdHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8sIGludCBpZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0yODMyLVxcdFxcdFxcdFxcdFxcdHVuaW9uIGJueDJ4X21jYXN0X2NvbmZpZ19kYXRhICpjZmdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MjkwMz1zdGF0aWMgaW5saW5lIGludCBibngyeF9tY2FzdF9oYW5kbGVfcmVzdG9yZV9jbWRfZTIoXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzoyOTA0OlxcdHN0cnVjdCBibngyeCAqYnAsIHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8gLCBpbnQgc3RhcnRfYmluLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMjkwNS1cXHRpbnQgKnJkYXRhX2lkeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MjkzND1zdGF0aWMgaW5saW5lIHZvaWQgYm54MnhfbWNhc3RfaGRsX3BlbmRpbmdfYWRkX2UyKHN0cnVjdCBibngyeCAqYnAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzoyOTM1OlxcdHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8sIHN0cnVjdCBibngyeF9wZW5kaW5nX21jYXN0X2NtZCAqY21kX3BvcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTI5MzYtXFx0aW50ICpsaW5lX2lkeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9Mjk2OT1zdGF0aWMgaW5saW5lIHZvaWQgYm54MnhfbWNhc3RfaGRsX3BlbmRpbmdfZGVsX2UyKHN0cnVjdCBibngyeCAqYnAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzoyOTcwOlxcdHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8sIHN0cnVjdCBibngyeF9wZW5kaW5nX21jYXN0X2NtZCAqY21kX3BvcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTI5NzEtXFx0aW50ICpsaW5lX2lkeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9Mjk5OT1zdGF0aWMgaW5saW5lIHZvaWQgYm54MnhfbWNhc3RfaGRsX3BlbmRpbmdfcmVzdG9yZV9lMihzdHJ1Y3QgYm54MnggKmJwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MzAwMDpcXHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLCBzdHJ1Y3QgYm54MnhfcGVuZGluZ19tY2FzdF9jbWQgKmNtZF9wb3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zMDAxLVxcdGludCAqbGluZV9pZHgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTMwMTU9Ym54MnhfbWNhc3RfaGRsX3BlbmRpbmdfc2V0X2UyX2NvbnZlcnQoc3RydWN0IGJueDJ4ICpicCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjMwMTY6XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zMDE3LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgYm54MnhfcGVuZGluZ19tY2FzdF9jbWQgKmNtZF9wb3MpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTMwODI9Ym54MnhfbWNhc3RfaGRsX3BlbmRpbmdfc2V0X2UyKHN0cnVjdCBibngyeCAqYnAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozMDgzOlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzA4NC1cXHRcXHRcXHQgICAgICAgc3RydWN0IGJueDJ4X3BlbmRpbmdfbWNhc3RfY21kICpjbWRfcG9zLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zMTE4PXN0YXRpYyBpbmxpbmUgaW50IGJueDJ4X21jYXN0X2hhbmRsZV9wZW5kaW5nX2NtZHNfZTIoc3RydWN0IGJueDJ4ICpicCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzEyMi1cXHRpbnQgY250ID0gMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjMxMjM6XFx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyA9IHAtXFx1MDAzZW1jYXN0X29iajtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMxMjQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTMxNjc9c3RhdGljIGlubGluZSB2b2lkIGJueDJ4X21jYXN0X2hkbF9hZGQoc3RydWN0IGJueDJ4ICpicCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjMxNjg6XFx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbywgc3RydWN0IGJueDJ4X21jYXN0X3JhbXJvZF9wYXJhbXMgKnAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zMTY5LVxcdGludCAqbGluZV9pZHgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTMxODg9c3RhdGljIGlubGluZSB2b2lkIGJueDJ4X21jYXN0X2hkbF9kZWwoc3RydWN0IGJueDJ4ICpicCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjMxODk6XFx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbywgc3RydWN0IGJueDJ4X21jYXN0X3JhbXJvZF9wYXJhbXMgKnAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zMTkwLVxcdGludCAqbGluZV9pZHgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTMyMTg9c3RhdGljIGlubGluZSBpbnQgYm54MnhfbWNhc3RfaGFuZGxlX2N1cnJlbnRfY21kKHN0cnVjdCBibngyeCAqYnAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMyMjIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MzIyMzpcXHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvID0gcC1cXHUwMDNlbWNhc3Rfb2JqO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzIyNC1cXHRpbnQgY250ID0gc3RhcnRfY250O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zMjUyPXN0YXRpYyBpbnQgYm54MnhfbWNhc3RfdmFsaWRhdGVfZTIoc3RydWN0IGJueDJ4ICpicCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzI1NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozMjU2OlxcdHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8gPSBwLVxcdTAwM2VtY2FzdF9vYmo7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zMjU3LVxcdGludCByZWdfc3ogPSBvLVxcdTAwM2VnZXRfcmVnaXN0cnlfc2l6ZShvKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MzMxMD1zdGF0aWMgdm9pZCBibngyeF9tY2FzdF9yZXZlcnRfZTIoc3RydWN0IGJueDJ4ICpicCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzMxNC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozMzE1OlxcdHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8gPSBwLVxcdTAwM2VtY2FzdF9vYmo7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zMzE2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zMzMxPXN0YXRpYyBpbmxpbmUgdm9pZCBibngyeF9tY2FzdF9zZXRfcmRhdGFfaGRyX2UyKHN0cnVjdCBibngyeCAqYnAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMzMzQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MzMzNTpcXHRzdHJ1Y3QgYm54MnhfcmF3X29iaiAqciA9IFxcdTAwMjZwLVxcdTAwM2VtY2FzdF9vYmotXFx1MDAzZXJhdztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMzMzYtXFx0c3RydWN0IGV0aF9tdWx0aWNhc3RfcnVsZXNfcmFtcm9kX2RhdGEgKmRhdGEgPVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zMzU2PXN0YXRpYyBpbmxpbmUgaW50IGJueDJ4X21jYXN0X3JlZnJlc2hfcmVnaXN0cnlfZTIoc3RydWN0IGJueDJ4ICpicCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjMzNTc6XFx0XFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzM1OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTMzNzM9c3RhdGljIGludCBibngyeF9tY2FzdF9zZXR1cF9lMihzdHJ1Y3QgYm54MnggKmJwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zMzc2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjMzNzc6XFx0c3RydWN0IGJueDJ4X3Jhd19vYmogKnJhdyA9IFxcdTAwMjZwLVxcdTAwM2VtY2FzdF9vYmotXFx1MDAzZXJhdztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjMzNzg6XFx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyA9IHAtXFx1MDAzZW1jYXN0X29iajtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMzNzktXFx0c3RydWN0IGV0aF9tdWx0aWNhc3RfcnVsZXNfcmFtcm9kX2RhdGEgKmRhdGEgPVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zNDg4PXN0YXRpYyBpbmxpbmUgdm9pZCBibngyeF9tY2FzdF9oZGxfYWRkX2UxaChzdHJ1Y3QgYm54MnggKmJwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MzQ4OTpcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzQ5MC1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYm54MnhfbWNhc3RfcmFtcm9kX3BhcmFtcyAqcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MzUwOT1zdGF0aWMgaW5saW5lIHZvaWQgYm54MnhfbWNhc3RfaGRsX3Jlc3RvcmVfZTFoKHN0cnVjdCBibngyeCAqYnAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozNTEwOlxcdHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8sIHN0cnVjdCBibngyeF9tY2FzdF9yYW1yb2RfcGFyYW1zICpwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzUxMS1cXHR1MzIgKm1jX2ZpbHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MzUyNz1zdGF0aWMgaW50IGJueDJ4X21jYXN0X3NldHVwX2UxaChzdHJ1Y3QgYm54MnggKmJwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNTMxLVxcdGludCBpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MzUzMjpcXHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvID0gcC1cXHUwMDNlbWNhc3Rfb2JqO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzUzMy1cXHRzdHJ1Y3QgYm54MnhfcmF3X29iaiAqciA9IFxcdTAwMjZvLVxcdTAwM2VyYXc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTM1ODE9c3RhdGljIGludCBibngyeF9tY2FzdF92YWxpZGF0ZV9lMShzdHJ1Y3QgYm54MnggKmJwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNTg0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjM1ODU6XFx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyA9IHAtXFx1MDAzZW1jYXN0X29iajtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM1ODYtXFx0aW50IHJlZ19zeiA9IG8tXFx1MDAzZWdldF9yZWdpc3RyeV9zaXplKG8pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zNjQxPXN0YXRpYyB2b2lkIGJueDJ4X21jYXN0X3JldmVydF9lMShzdHJ1Y3QgYm54MnggKmJwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNjQ1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjM2NDY6XFx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyA9IHAtXFx1MDAzZW1jYXN0X29iajtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM2NDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTM2NTg9c3RhdGljIHZvaWQgYm54MnhfbWNhc3Rfc2V0X29uZV9ydWxlX2UxKHN0cnVjdCBibngyeCAqYnAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozNjU5OlxcdFxcdFxcdFxcdFxcdHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8sIGludCBpZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNjYwLVxcdFxcdFxcdFxcdFxcdHVuaW9uIGJueDJ4X21jYXN0X2NvbmZpZ19kYXRhICpjZmdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MzY5Mj1zdGF0aWMgaW5saW5lIHZvaWQgYm54MnhfbWNhc3Rfc2V0X3JkYXRhX2hkcl9lMShzdHJ1Y3QgYm54MnggKmJwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNjk1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjM2OTY6XFx0c3RydWN0IGJueDJ4X3Jhd19vYmogKnIgPSBcXHUwMDI2cC1cXHUwMDNlbWNhc3Rfb2JqLVxcdTAwM2VyYXc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNjk3LVxcdHN0cnVjdCBtYWNfY29uZmlndXJhdGlvbl9jbWQgKmRhdGEgPVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zNzI1PXN0YXRpYyBpbmxpbmUgaW50IGJueDJ4X21jYXN0X2hhbmRsZV9yZXN0b3JlX2NtZF9lMShcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjM3MjY6XFx0c3RydWN0IGJueDJ4ICpicCwgc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyAsIGludCBzdGFydF9pZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNzI3LVxcdGludCAqcmRhdGFfaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zNzQ5PXN0YXRpYyBpbmxpbmUgaW50IGJueDJ4X21jYXN0X2hhbmRsZV9wZW5kaW5nX2NtZHNfZTEoXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM3NTMtXFx0c3RydWN0IGJueDJ4X21jYXN0X21hY19lbGVtICpwbWFjX3BvcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjM3NTQ6XFx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyA9IHAtXFx1MDAzZW1jYXN0X29iajtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM3NTUtXFx0dW5pb24gYm54MnhfbWNhc3RfY29uZmlnX2RhdGEgY2ZnX2RhdGEgPSB7TlVMTH07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTM4MzA9c3RhdGljIGlubGluZSBpbnQgYm54MnhfbWNhc3RfcmVmcmVzaF9yZWdpc3RyeV9lMShzdHJ1Y3QgYm54MnggKmJwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MzgzMTpcXHRcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zODMyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9Mzg3Nz1zdGF0aWMgaW50IGJueDJ4X21jYXN0X3NldHVwX2UxKHN0cnVjdCBibngyeCAqYnAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM4ODAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6Mzg4MTpcXHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvID0gcC1cXHUwMDNlbWNhc3Rfb2JqO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzg4Mi1cXHRzdHJ1Y3QgYm54MnhfcmF3X29iaiAqcmF3ID0gXFx1MDAyNm8tXFx1MDAzZXJhdztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzk1NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjM5NTY6c3RhdGljIGludCBibngyeF9tY2FzdF9nZXRfcmVnaXN0cnlfc2l6ZV9leGFjdChzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzk1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM5NjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozOTYxOnN0YXRpYyBpbnQgYm54MnhfbWNhc3RfZ2V0X3JlZ2lzdHJ5X3NpemVfYXByb3goc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM5NjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zOTY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6Mzk2NjpzdGF0aWMgdm9pZCBibngyeF9tY2FzdF9zZXRfcmVnaXN0cnlfc2l6ZV9leGFjdChzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzk2Ny1cXHRcXHRcXHRcXHRcXHRcXHRpbnQgbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzk3MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjM5NzI6c3RhdGljIHZvaWQgYm54MnhfbWNhc3Rfc2V0X3JlZ2lzdHJ5X3NpemVfYXByb3goc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM5NzMtXFx0XFx0XFx0XFx0XFx0XFx0aW50IG4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTM5Nzg9aW50IGJueDJ4X2NvbmZpZ19tY2FzdChzdHJ1Y3QgYm54MnggKmJwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zOTgxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjM5ODI6XFx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyA9IHAtXFx1MDAzZW1jYXN0X29iajtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM5ODMtXFx0c3RydWN0IGJueDJ4X3Jhd19vYmogKnIgPSBcXHUwMDI2by1cXHUwMDNlcmF3O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDA3LVxcdCAgICAoKG8tXFx1MDAzZW1heF9jbWRfbGVuIFxcdTAwM2UgMCkgXFx1MDAyNlxcdTAwMjYgKG8tXFx1MDAzZXRvdGFsX3BlbmRpbmdfbnVtIFxcdTAwM2Ugby1cXHUwMDNlbWF4X2NtZF9sZW4pKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDAwODpcXHRcXHRyYyA9IG8tXFx1MDAzZWVucXVldWVfY21kKGJwLCBwLVxcdTAwM2VtY2FzdF9vYmosIHAsIGNtZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDA5LVxcdFxcdGlmIChyYyBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwNDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDQ0OnN0YXRpYyB2b2lkIGJueDJ4X21jYXN0X2NsZWFyX3NjaGVkKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDQ1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQwNTE6c3RhdGljIHZvaWQgYm54MnhfbWNhc3Rfc2V0X3NjaGVkKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQwNTg6c3RhdGljIGJvb2wgYm54MnhfbWNhc3RfY2hlY2tfc2NoZWQoc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwNTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDA2MzpzdGF0aWMgYm9vbCBibngyeF9tY2FzdF9jaGVja19wZW5kaW5nKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQwNjg6dm9pZCBibngyeF9pbml0X21jYXN0X29iaihzdHJ1Y3QgYm54MnggKmJwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDA2OTpcXHRcXHRcXHQgIHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm1jYXN0X29iaixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwNzAtXFx0XFx0XFx0ICB1OCBtY2FzdF9jbF9pZCwgdTMyIG1jYXN0X2NpZCwgdTggZnVuY19pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA3My17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDc0OlxcdG1lbXNldChtY2FzdF9vYmosIDAsIHNpemVvZigqbWNhc3Rfb2JqKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDA3NjpcXHRibngyeF9pbml0X3Jhd19vYmooXFx1MDAyNm1jYXN0X29iai1cXHUwMDNlcmF3LCBtY2FzdF9jbF9pZCwgbWNhc3RfY2lkLCBmdW5jX2lkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA3Ny1cXHRcXHRcXHQgICByZGF0YSwgcmRhdGFfbWFwcGluZywgc3RhdGUsIHBzdGF0ZSwgdHlwZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDA3OTpcXHRtY2FzdF9vYmotXFx1MDAzZWVuZ2luZV9pZCA9IGVuZ2luZV9pZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDgxOlxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZtY2FzdF9vYmotXFx1MDAzZXBlbmRpbmdfY21kc19oZWFkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDgzOlxcdG1jYXN0X29iai1cXHUwMDNlc2NoZWRfc3RhdGUgPSBCTlgyWF9GSUxURVJfTUNBU1RfU0NIRUQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDg0OlxcdG1jYXN0X29iai1cXHUwMDNlY2hlY2tfc2NoZWQgPSBibngyeF9tY2FzdF9jaGVja19zY2hlZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQwODU6XFx0bWNhc3Rfb2JqLVxcdTAwM2VzZXRfc2NoZWQgPSBibngyeF9tY2FzdF9zZXRfc2NoZWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDg2OlxcdG1jYXN0X29iai1cXHUwMDNlY2xlYXJfc2NoZWQgPSBibngyeF9tY2FzdF9jbGVhcl9zY2hlZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDg4LVxcdGlmIChDSElQX0lTX0UxKGJwKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDA4OTpcXHRcXHRtY2FzdF9vYmotXFx1MDAzZWNvbmZpZ19tY2FzdCAgICAgID0gYm54MnhfbWNhc3Rfc2V0dXBfZTE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDkwOlxcdFxcdG1jYXN0X29iai1cXHUwMDNlZW5xdWV1ZV9jbWQgICAgICAgPSBibngyeF9tY2FzdF9lbnF1ZXVlX2NtZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQwOTE6XFx0XFx0bWNhc3Rfb2JqLVxcdTAwM2VoZGxfcmVzdG9yZSAgICAgICA9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDkyLVxcdFxcdFxcdGJueDJ4X21jYXN0X2hhbmRsZV9yZXN0b3JlX2NtZF9lMTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQwOTM6XFx0XFx0bWNhc3Rfb2JqLVxcdTAwM2VjaGVja19wZW5kaW5nICAgICA9IGJueDJ4X21jYXN0X2NoZWNrX3BlbmRpbmc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA5NS1cXHRcXHRpZiAoQ0hJUF9SRVZfSVNfU0xPVyhicCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDk2OlxcdFxcdFxcdG1jYXN0X29iai1cXHUwMDNlbWF4X2NtZF9sZW4gPSBCTlgyWF9NQVhfRU1VTF9NVUxUSTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwOTctXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDA5ODpcXHRcXHRcXHRtY2FzdF9vYmotXFx1MDAzZW1heF9jbWRfbGVuID0gQk5YMlhfTUFYX01VTFRJQ0FTVDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwOTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTAwOlxcdFxcdG1jYXN0X29iai1cXHUwMDNld2FpdF9jb21wICAgICAgICAgPSBibngyeF9tY2FzdF93YWl0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDEwMTpcXHRcXHRtY2FzdF9vYmotXFx1MDAzZXNldF9vbmVfcnVsZSAgICAgID0gYm54MnhfbWNhc3Rfc2V0X29uZV9ydWxlX2UxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDEwMjpcXHRcXHRtY2FzdF9vYmotXFx1MDAzZXZhbGlkYXRlICAgICAgICAgID0gYm54MnhfbWNhc3RfdmFsaWRhdGVfZTE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTAzOlxcdFxcdG1jYXN0X29iai1cXHUwMDNlcmV2ZXJ0ICAgICAgICAgICAgPSBibngyeF9tY2FzdF9yZXZlcnRfZTE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTA0OlxcdFxcdG1jYXN0X29iai1cXHUwMDNlZ2V0X3JlZ2lzdHJ5X3NpemUgPVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDEwNS1cXHRcXHRcXHRibngyeF9tY2FzdF9nZXRfcmVnaXN0cnlfc2l6ZV9leGFjdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMDY6XFx0XFx0bWNhc3Rfb2JqLVxcdTAwM2VzZXRfcmVnaXN0cnlfc2l6ZSA9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MTA3LVxcdFxcdFxcdGJueDJ4X21jYXN0X3NldF9yZWdpc3RyeV9zaXplX2V4YWN0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MTExLVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDExMjpcXHRcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2bWNhc3Rfb2JqLVxcdTAwM2VyZWdpc3RyeS5leGFjdF9tYXRjaC5tYWNzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQxMTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MTE0LVxcdH0gZWxzZSBpZiAoQ0hJUF9JU19FMUgoYnApKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTE1OlxcdFxcdG1jYXN0X29iai1cXHUwMDNlY29uZmlnX21jYXN0ICA9IGJueDJ4X21jYXN0X3NldHVwX2UxaDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMTY6XFx0XFx0bWNhc3Rfb2JqLVxcdTAwM2VlbnF1ZXVlX2NtZCAgID0gTlVMTDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMTc6XFx0XFx0bWNhc3Rfb2JqLVxcdTAwM2VoZGxfcmVzdG9yZSAgID0gTlVMTDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMTg6XFx0XFx0bWNhc3Rfb2JqLVxcdTAwM2VjaGVja19wZW5kaW5nID0gYm54MnhfbWNhc3RfY2hlY2tfcGVuZGluZztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQxMTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQxMjItXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTIzOlxcdFxcdG1jYXN0X29iai1cXHUwMDNlbWF4X2NtZF9sZW4gICAgICAgPSAtMTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMjQ6XFx0XFx0bWNhc3Rfb2JqLVxcdTAwM2V3YWl0X2NvbXAgICAgICAgICA9IGJueDJ4X21jYXN0X3dhaXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTI1OlxcdFxcdG1jYXN0X29iai1cXHUwMDNlc2V0X29uZV9ydWxlICAgICAgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDEyNjpcXHRcXHRtY2FzdF9vYmotXFx1MDAzZXZhbGlkYXRlICAgICAgICAgID0gYm54MnhfbWNhc3RfdmFsaWRhdGVfZTFoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDEyNzpcXHRcXHRtY2FzdF9vYmotXFx1MDAzZXJldmVydCAgICAgICAgICAgID0gYm54MnhfbWNhc3RfcmV2ZXJ0X2UxaDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMjg6XFx0XFx0bWNhc3Rfb2JqLVxcdTAwM2VnZXRfcmVnaXN0cnlfc2l6ZSA9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MTI5LVxcdFxcdFxcdGJueDJ4X21jYXN0X2dldF9yZWdpc3RyeV9zaXplX2Fwcm94O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDEzMDpcXHRcXHRtY2FzdF9vYmotXFx1MDAzZXNldF9yZWdpc3RyeV9zaXplID1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQxMzEtXFx0XFx0XFx0Ym54MnhfbWNhc3Rfc2V0X3JlZ2lzdHJ5X3NpemVfYXByb3g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MTMyLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTMzOlxcdFxcdG1jYXN0X29iai1cXHUwMDNlY29uZmlnX21jYXN0ICAgICAgPSBibngyeF9tY2FzdF9zZXR1cF9lMjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMzQ6XFx0XFx0bWNhc3Rfb2JqLVxcdTAwM2VlbnF1ZXVlX2NtZCAgICAgICA9IGJueDJ4X21jYXN0X2VucXVldWVfY21kO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDEzNTpcXHRcXHRtY2FzdF9vYmotXFx1MDAzZWhkbF9yZXN0b3JlICAgICAgID1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQxMzYtXFx0XFx0XFx0Ym54MnhfbWNhc3RfaGFuZGxlX3Jlc3RvcmVfY21kX2UyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDEzNzpcXHRcXHRtY2FzdF9vYmotXFx1MDAzZWNoZWNrX3BlbmRpbmcgICAgID0gYm54MnhfbWNhc3RfY2hlY2tfcGVuZGluZztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQxMzgtXFx0XFx0LyogVE9ETzogVGhlcmUgc2hvdWxkIGJlIGEgcHJvcGVyIEhTSSBkZWZpbmUgZm9yIHRoaXMgbnVtYmVyISEhXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MTM5LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDE0MDpcXHRcXHRtY2FzdF9vYmotXFx1MDAzZW1heF9jbWRfbGVuICAgICAgID0gMTY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTQxOlxcdFxcdG1jYXN0X29iai1cXHUwMDNld2FpdF9jb21wICAgICAgICAgPSBibngyeF9tY2FzdF93YWl0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDE0MjpcXHRcXHRtY2FzdF9vYmotXFx1MDAzZXNldF9vbmVfcnVsZSAgICAgID0gYm54MnhfbWNhc3Rfc2V0X29uZV9ydWxlX2UyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDE0MzpcXHRcXHRtY2FzdF9vYmotXFx1MDAzZXZhbGlkYXRlICAgICAgICAgID0gYm54MnhfbWNhc3RfdmFsaWRhdGVfZTI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTQ0OlxcdFxcdG1jYXN0X29iai1cXHUwMDNlcmV2ZXJ0ICAgICAgICAgICAgPSBibngyeF9tY2FzdF9yZXZlcnRfZTI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTQ1OlxcdFxcdG1jYXN0X29iai1cXHUwMDNlZ2V0X3JlZ2lzdHJ5X3NpemUgPVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDE0Ni1cXHRcXHRcXHRibngyeF9tY2FzdF9nZXRfcmVnaXN0cnlfc2l6ZV9hcHJveDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxNDc6XFx0XFx0bWNhc3Rfb2JqLVxcdTAwM2VzZXRfcmVnaXN0cnlfc2l6ZSA9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MTQ4LVxcdFxcdFxcdGJueDJ4X21jYXN0X3NldF9yZWdpc3RyeV9zaXplX2Fwcm94O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaD01MTg9c3RydWN0IGJueDJ4X21jYXN0X3JhbXJvZF9wYXJhbXMge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg6NTE5OlxcdHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm1jYXN0X29iajtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oLTUyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg9NTM2PWVudW0gYm54MnhfbWNhc3RfY21kIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNTUxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg6NTUyOnN0cnVjdCBibngyeF9tY2FzdF9vYmoge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNTUzLVxcdHN0cnVjdCBibngyeF9yYXdfb2JqIHJhdztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNjA3LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg6NjA4OlxcdGludCAoKmhkbF9yZXN0b3JlKShzdHJ1Y3QgYm54MnggKmJwLCBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNjA5LVxcdFxcdFxcdCAgIGludCBzdGFydF9iaW4sIGludCAqcmRhdGFfaWR4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oLTYxMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oOjYxMTpcXHRpbnQgKCplbnF1ZXVlX2NtZCkoc3RydWN0IGJueDJ4ICpicCwgc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oLTYxMi1cXHRcXHRcXHQgICBzdHJ1Y3QgYm54MnhfbWNhc3RfcmFtcm9kX3BhcmFtcyAqcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNjE1LVxcdHZvaWQgKCpzZXRfb25lX3J1bGUpKHN0cnVjdCBibngyeCAqYnAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaDo2MTY6XFx0XFx0XFx0ICAgICBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLCBpbnQgaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNjE3LVxcdFxcdFxcdCAgICAgdW5pb24gYm54MnhfbWNhc3RfY29uZmlnX2RhdGEgKmNmZ19kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC02MjItXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaDo2MjM6XFx0Ym9vbCAoKmNoZWNrX3BlbmRpbmcpKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNjI0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC02MjctXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaDo2Mjg6XFx0dm9pZCAoKnNldF9zY2hlZCkoc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaDo2Mjk6XFx0dm9pZCAoKmNsZWFyX3NjaGVkKShzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oOjYzMDpcXHRib29sICgqY2hlY2tfc2NoZWQpKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNjMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNjMyLVxcdC8qIFdhaXQgdW50aWwgYWxsIHBlbmRpbmcgY29tbWFuZHMgY29tcGxldGUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oOjYzMzpcXHRpbnQgKCp3YWl0X2NvbXApKHN0cnVjdCBibngyeCAqYnAsIHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNjM0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC02NTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaDo2NTI6XFx0aW50ICgqZ2V0X3JlZ2lzdHJ5X3NpemUpKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg6NjUzOlxcdHZvaWQgKCpzZXRfcmVnaXN0cnlfc2l6ZSkoc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbywgaW50IG4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNjU0LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oPTE0NjM9aW50IGJueDJ4X2NvbmZpZ19yeF9tb2RlKHN0cnVjdCBibngyeCAqYnAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oLTE0NjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaDoxNDY4OnZvaWQgYm54MnhfaW5pdF9tY2FzdF9vYmooc3RydWN0IGJueDJ4ICpicCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oOjE0Njk6XFx0XFx0XFx0ICBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICptY2FzdF9vYmosXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC0xNDcwLVxcdFxcdFxcdCAgdTggbWNhc3RfY2xfaWQsIHUzMiBtY2FzdF9jaWQsIHU4IGZ1bmNfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcmlvdi5jPTUzNz1pbnQgYm54MnhfdmZfbWNhc3Qoc3RydWN0IGJueDJ4ICpicCwgc3RydWN0IGJueDJ4X3ZpcnRmICp2ZixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmMtNTQ3LVxcdG1lbXNldChcXHUwMDI2bWNhc3QsIDAsIHNpemVvZihzdHJ1Y3QgYm54MnhfbWNhc3RfcmFtcm9kX3BhcmFtcykpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmM6NTQ4OlxcdG1jYXN0Lm1jYXN0X29iaiA9IFxcdTAwMjZ2Zi1cXHUwMDNlbWNhc3Rfb2JqO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmMtNTQ5LVxcdGlmIChkcnZfb25seSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmM9MTUzNz1pbnQgYm54MnhfaW92X25pY19pbml0KHN0cnVjdCBibngyeCAqYnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcmlvdi5jLTE1NzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuYzoxNTc5OlxcdFxcdC8qICBpbml0IG1jYXN0IG9iamVjdCAtIFRoaXMgb2JqZWN0IHdpbGwgYmUgcmUtaW5pdGlhbGl6ZWRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcmlvdi5jLTE1ODAtXFx0XFx0ICogIGR1cmluZyBWRi1BQ1FVSVJFIHdpdGggdGhlIHByb3BlciBjbF9pZCBhbmQgY2lkLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuYy0xNTgzLVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmM6MTU4NDpcXHRcXHRibngyeF9pbml0X21jYXN0X29iaihicCwgXFx1MDAyNnZmLVxcdTAwM2VtY2FzdF9vYmosIDB4RkYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuYy0xNTg1LVxcdFxcdFxcdFxcdCAgICAgMHhGRiwgMHhGRiwgMHhGRixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmM9MTY5OD12b2lkIGJueDJ4X3ZmX2hhbmRsZV9tY2FzdF9lcWUoc3RydWN0IGJueDJ4ICpicCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmMtMTcwMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcmlvdi5jOjE3MDQ6XFx0cnBhcmFtLm1jYXN0X29iaiA9IFxcdTAwMjZ2Zi1cXHUwMDNlbWNhc3Rfb2JqO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmM6MTcwNTpcXHR2Zi1cXHUwMDNlbWNhc3Rfb2JqLnJhdy5jbGVhcl9wZW5kaW5nKFxcdTAwMjZ2Zi1cXHUwMDNlbWNhc3Rfb2JqLnJhdyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuYy0xNzA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmMtMTcwNy1cXHQvKiBJZiB0aGVyZSBhcmUgcGVuZGluZyBtY2FzdCBjb21tYW5kcyAtIHNlbmQgdGhlbSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmM6MTcwODpcXHRpZiAodmYtXFx1MDAzZW1jYXN0X29iai5jaGVja19wZW5kaW5nKFxcdTAwMjZ2Zi1cXHUwMDNlbWNhc3Rfb2JqKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmMtMTcwOS1cXHRcXHRyYyA9IGJueDJ4X2NvbmZpZ19tY2FzdChicCwgXFx1MDAyNnJwYXJhbSwgQk5YMlhfTUNBU1RfQ01EX0NPTlQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuaD0xMjg9c3RydWN0IGJueDJ4X3ZpcnRmIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmgtMjAzLVxcdC8qIE1DQVNUIG9iamVjdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92Lmg6MjA0OlxcdHN0cnVjdCBibngyeF9tY2FzdF9vYmpcXHRcXHRtY2FzdF9vYmo7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuaC0yMDUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF92ZnBmLmM9NTQ0PXN0YXRpYyB2b2lkIGJueDJ4X2xlYWRpbmdfdmZxX2luaXQoc3RydWN0IGJueDJ4ICpicCwgc3RydWN0IGJueDJ4X3ZpcnRmICp2ZixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3ZmcGYuYy01NzgtXFx0LyogbWNhc3QgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF92ZnBmLmM6NTc5OlxcdGJueDJ4X2luaXRfbWNhc3Rfb2JqKGJwLCBcXHUwMDI2dmYtXFx1MDAzZW1jYXN0X29iaiwgY2xfaWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfdmZwZi5jLTU4MC1cXHRcXHRcXHQgICAgIHEtXFx1MDAzZWNpZCwgZnVuY19pZCwgZnVuY19pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0Lmg9Njc2PXN0cnVjdCBiZmlfZW5ldF9zdGF0c190eGYge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaC02ODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaDo2ODE6XFx0dTY0IG1jYXN0X29jdGV0cztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9iZmlfZW5ldC5oLTY4Mi1cXHR1NjQgbWNhc3Q7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9iZmlfZW5ldC5oPTY5NT1zdHJ1Y3QgYmZpX2VuZXRfc3RhdHNfcnhmIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0LmgtNjk5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0Lmg6NzAwOlxcdHU2NCBtY2FzdF9vY3RldHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaC03MDEtXFx0dTY0IG1jYXN0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaD03MTE9c3RydWN0IGJmaV9lbmV0X3N0YXRzX2ZjX3R4IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0LmgtNzE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0Lmg6NzE2OlxcdHU2NCB0eGZfbWNhc3Rfb2N0ZXRzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0LmgtNzE3LVxcdHU2NCB0eGZfbWNhc3Q7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9iZmlfZW5ldC5oPTczMD1zdHJ1Y3QgYmZpX2VuZXRfc3RhdHNfZmNfcngge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaC03MzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaDo3MzU6XFx0dTY0IHJ4Zl9tY2FzdF9vY3RldHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaC03MzYtXFx0dTY0IHJ4Zl9tY2FzdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0Lmg9NzQ1PXN0cnVjdCBiZmlfZW5ldF9zdGF0c19yYWQge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaC03NTQtXFx0dTY0IHJ4X21jYXN0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0Lmg6NzU1OlxcdHU2NCByeF9tY2FzdF9vY3RldHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaC03NTYtXFx0dTY0IHJ4X21jYXN0X3ZsYW47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9ibmFkX2V0aHRvb2wuYz0yOT1zdGF0aWMgY29uc3QgY2hhciAqYm5hZF9uZXRfc3RhdHNfc3RyaW5nc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYm5hZF9ldGh0b29sLmMtMTg2LVxcdFxcXCJyYWRfcnhfbWNhc3RcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JuYWRfZXRodG9vbC5jOjE4NzpcXHRcXFwicmFkX3J4X21jYXN0X29jdGV0c1xcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYm5hZF9ldGh0b29sLmMtMTg4LVxcdFxcXCJyYWRfcnhfbWNhc3RfdmxhblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9ibmFkX2V0aHRvb2wuYy0yMDAtXFx0XFxcInJsYl9yYWRfcnhfbWNhc3RcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JuYWRfZXRodG9vbC5jOjIwMTpcXHRcXFwicmxiX3JhZF9yeF9tY2FzdF9vY3RldHNcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JuYWRfZXRodG9vbC5jLTIwMi1cXHRcXFwicmxiX3JhZF9yeF9tY2FzdF92bGFuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JuYWRfZXRodG9vbC5jLTIxMC1cXHRcXFwiZmNfcnhfdWNhc3RfdmxhblxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYm5hZF9ldGh0b29sLmM6MjExOlxcdFxcXCJmY19yeF9tY2FzdF9vY3RldHNcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JuYWRfZXRodG9vbC5jLTIxMi1cXHRcXFwiZmNfcnhfbWNhc3RcXFwiLFxcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjQzOjQyLjgyOTQ4ODI1NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDc2MTA1NTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczpcblxuKipEZWJ1Z2dpbmcgYSBTdHViYm9ybiBCdWlsZCBPdXRwdXQqKlxuXG5BbHJpZ2h0LCB0aGUgYnVpbGQgaXMgc3BpdHRpbmcgb3V0IHRoZXNlIGlycml0YXRpbmcgXCJtY2FzdC5vXCIgZmlsZXMgYW5kIG5vdGhpbmcgbW9yZS4gVGhhdCdzIGNsZWFybHkgbm90IHJpZ2h0LiBNeSBndXQgdGVsbHMgbWUgc29tZXRoaW5nIGlzIG9mZiBpbiB0aGUgbmV0d29ya2luZyByZWFsbS4gTGV0J3MgZGlnIGluLiBHaXZlbiB0aGF0IHRoZXNlIGFyZSAqbWNhc3QqIHJlbGF0ZWQsIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gdGhlIElQdjYgbmV0d29ya2luZyBjb2RlLiBNeSBtZW1vcnkgaXMgcGluZ2luZyB0b3dhcmRzIHRoZSBrZXJuZWwncyBgbmV0L2lwdjZgIGRpcmVjdG9yeSwgYW5kIHNwZWNpZmljYWxseSBpdHMgYE1ha2VmaWxlYC4gVGhhdCdzIHdoZXJlIEknbGwgcHJvYmFibHkgZmluZCB0aGUgcnVsZXMgdGhhdCBkZWZpbmUgaG93IGBtY2FzdC5vYCBpcyBidWlsdCwgb3IgKnNob3VsZCogYmUgYnVpbHQuIEhvcGVmdWxseSBJIGNhbiB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmN5IGNoYWluIGFuZCBzZWUgd2hlcmUgaXQncyBnb2luZyB3cm9uZy4gVGltZSB0byBncmFiIHRoYXQgTWFrZWZpbGUgYW5kIGdldCB0byB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDczNCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjQzOjQ2LjMwNTU5NjkyMVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1MDk2MTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1jYXN0Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvTWFrZWZpbGU9OD1pcHY2LXkgOj1cXHRhZl9pbmV0Ni5vIGFueWNhc3QubyBpcDZfb3V0cHV0Lm8gaXA2X2lucHV0Lm8gYWRkcmNvbmYubyBcXFxcXFxuLS1cXG5uZXQvaXB2Ni9NYWtlZmlsZS0xMC1cXHRcXHRyb3V0ZS5vIGlwNl9maWIubyBpcHY2X3NvY2tnbHVlLm8gbmRpc2MubyB1ZHAubyBcXFxcXFxubmV0L2lwdjYvTWFrZWZpbGU6MTE6XFx0XFx0cmF3Lm8gaWNtcC5vIG1jYXN0Lm8gcmVhc3NlbWJseS5vIHRjcF9pcHY2Lm8gcGluZy5vIFxcXFxcXG5uZXQvaXB2Ni9NYWtlZmlsZS0xMi1cXHRcXHRleHRoZHJzLm8gZGF0YWdyYW0ubyBpcDZfZmxvd2xhYmVsLm8gaW5ldDZfY29ubmVjdGlvbl9zb2NrLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODo0Mzo0Ni40NDA2OTkzOTFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc2ODgwMTg1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhpbmtpbmcsIGZvcm1hdHRlZCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmV0d29yayBNb2R1bGUgRGVwZW5kZW5jaWVzOiBBIFF1aWNrIE1lbnRhbCBNYXAqKlxuXG5SaWdodCwgc28gSSdtIHByb2Nlc3NpbmcgdGhlIGtlcm5lbCBtb2R1bGUgZGVwZW5kZW5jaWVzIGhlcmUuIFRoZSBgbWNhc3Qub2AgbW9kdWxlIGlzIGZ1bmRhbWVudGFsbHkgcGFydCBvZiB0aGUgSVB2NiBzdGFjaywgZGlyZWN0bHkgYnVpbHQgaW50byBgaXB2Ni5vYC4gTWFrZXMgc2Vuc2UsIG11bHRpY2FzdCBzdXBwb3J0IGZvciBJUHY2IGlzIGNvcmUuIEFuZCB0aGUgY29uZGl0aW9uYWwgZm9yIHRoaXMgYmVoYXZpb3IgaXMgY2xlYXJseSBgQ09ORklHX0lQVjZgLiBFYXN5IGVub3VnaC5cblxuTm93LCBgaWdtcC5vYCBpcyBhIHNpbWlsYXIgc2l0dWF0aW9uLCBpdCBpcyBidWlsdCBpbnRvIGBpcHY0Lm9gLiBUaGlzIHNlZW1zIG5vcm1hbCBiZWNhdXNlIElHTVAgaXMgSW50ZXJuZXQgR3JvdXAgTWFuYWdlbWVudCBQcm90b2NvbCAoZm9yIElQIE11bHRpY2FzdCBvbiBJUHY0KS4gV2UgbmVlZCB0byByZW1lbWJlciB0aGF0IHRoaXMgZGVwZW5kZW5jeSBpcyBjb250cm9sbGVkIGJ5IGJvdGggYENPTkZJR19JTkVUYCwgd2hpY2ggZW5hYmxlcyBnZW5lcmFsIElQdjQgc3VwcG9ydCwgKmFuZCogc3BlY2lmaWNhbGx5IGBDT05GSUdfSVBfTVVMVElDQVNUYCB0byBpbmNsdWRlIElHTVAsIGJlY2F1c2UgeW91IHdvdWxkbid0IG5lY2Vzc2FyaWx5IHdhbnQgbXVsdGljYXN0IGVuYWJsZWQgaWYgeW91IGRpZG4ndCBoYXZlIElHTVAgb24gSVB2NC4gVGhlc2UgY29uZmlndXJhdGlvbnMgYXJlIHRoZSBrZXlzIHRoYXQgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlc2UgbmV0d29yay1yZWxhdGVkIGNvbXBvbmVudHMgYXJlIGluY2x1ZGVkIGluIHRoZSBmaW5hbCBrZXJuZWwgaW1hZ2UuIEdvdCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUxNDIsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODo0Mzo1MC4yMDk1MDQ0NDRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTkyNjcxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZ21wLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcXFxcbi0tXFxubmV0L2lwdjQvTWFrZWZpbGUtMTMtXFx0ICAgICB0Y3Bfb2ZmbG9hZC5vIHRjcF9wbGIubyBkYXRhZ3JhbS5vIHJhdy5vIHVkcC5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZToxNDpcXHQgICAgIHVkcF9vZmZsb2FkLm8gYXJwLm8gaWNtcC5vIGRldmluZXQubyBhZl9pbmV0Lm8gaWdtcC5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xNS1cXHQgICAgIGZpYl9mcm9udGVuZC5vIGZpYl9zZW1hbnRpY3MubyBmaWJfdHJpZS5vIGZpYl9ub3RpZmllci5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6NDM6NTAuMzM1NDQxNTM1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NjM5NjQ0ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgVW5jb25kaXRpb25hbCBJR01QIE1vZHVsZSBCdWlsZCoqXG5cbkhtbSwgc28gYGlnbXAub2Agc2VlbXMgdG8gYmUgZ2V0dGluZyBjb21waWxlZCByZWdhcmRsZXNzIGlmIGBDT05GSUdfSU5FVGAgaXMgc2V0PyBUaGF0IGRvZXNuJ3QgcXVpdGUgc2l0IHJpZ2h0IHdpdGggbWUuIEknZCBleHBlY3QgbW9yZSBncmFudWxhciBjb250cm9sIG92ZXIgdGhhdCwgZXNwZWNpYWxseSBmb3IgZW1iZWRkZWQgc3lzdGVtcyB3aGVyZSBldmVyeSBieXRlIGNvdW50cy4gSXQncyB1c3VhbGx5IGJldHRlciB0byBoYXZlIG1vcmUgZmluZS1ncmFpbmVkIG1vZHVsZSBjb250cm9sIHRvIG1pbmltaXplIHRoZSBrZXJuZWwgZm9vdHByaW50LlxuXG5SaWdodCwgbGV0J3MgY29uZmlybSB0aGlzIHN1c3BpY2lvbi4gVGltZSB0byBkaXZlIGludG8gdGhlIGhlYXJ0IG9mIHRoZSBJUHY0IG5ldHdvcmtpbmcgYnVpbGQgcHJvY2Vzcy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBgbmV0L2lwdjQvTWFrZWZpbGVgIGFuZCBzZWUgZXhhY3RseSB3aGF0J3MgZHJpdmluZyB0aGUgaW5jbHVzaW9uIG9mIGBpZ21wLm9gLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgYSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBibG9jaywgcGVyaGFwcyBzb21ldGhpbmcgbGlrZSBgaWZlcSAoJChDT05GSUdfSUdNUCkseSlgIHRoYXQgdHJpZ2dlcnMgaXRzIGJ1aWxkLiBJZiBJIGRvbid0LCB0aGVuIHRoYXQncyBhIHByb2JsZW0gdGhhdCBuZWVkcyBhZGRyZXNzaW5nLCBvciBwZXJoYXBzIGFuIGFjY2VwdGFibGUgdHJhZGUtb2ZmIGlmIHRoZSBkZXBlbmRlbmNpZXMgYXJlIHJlYWxseSB0aWdodC4gTGV0J3Mgc2VlIHdoYXQgdGhlIG1ha2VmaWxlIGFjdHVhbGx5IHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NjE1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6NDM6NTMuODk5NDA5NDUzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzNzUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY0L01ha2VmaWxlXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBNYWtlZmlsZSBmb3IgdGhlIExpbnV4IFRDUC9JUCAoSU5FVCkgbGF5ZXIuXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxcXFxuICAgNzpcXHRcXHQgICAgIGlwX2lucHV0Lm8gaXBfZnJhZ21lbnQubyBpcF9mb3J3YXJkLm8gaXBfb3B0aW9ucy5vIFxcXFxcXG4gICA4OlxcdFxcdCAgICAgaXBfb3V0cHV0Lm8gaXBfc29ja2dsdWUubyBpbmV0X2hhc2h0YWJsZXMubyBcXFxcXFxuICAgOTpcXHRcXHQgICAgIGluZXRfdGltZXdhaXRfc29jay5vIGluZXRfY29ubmVjdGlvbl9zb2NrLm8gXFxcXFxcbiAgMTA6XFx0XFx0ICAgICB0Y3AubyB0Y3BfaW5wdXQubyB0Y3Bfb3V0cHV0Lm8gdGNwX3RpbWVyLm8gdGNwX2lwdjQubyBcXFxcXFxuICAxMTpcXHRcXHQgICAgIHRjcF9taW5pc29ja3MubyB0Y3BfY29uZy5vIHRjcF9tZXRyaWNzLm8gdGNwX2Zhc3RvcGVuLm8gXFxcXFxcbiAgMTI6XFx0XFx0ICAgICB0Y3BfcmVjb3ZlcnkubyB0Y3BfdWxwLm8gXFxcXFxcbiAgMTM6XFx0XFx0ICAgICB0Y3Bfb2ZmbG9hZC5vIHRjcF9wbGIubyBkYXRhZ3JhbS5vIHJhdy5vIHVkcC5vIFxcXFxcXG4gIDE0OlxcdFxcdCAgICAgdWRwX29mZmxvYWQubyBhcnAubyBpY21wLm8gZGV2aW5ldC5vIGFmX2luZXQubyBpZ21wLm8gXFxcXFxcbiAgMTU6XFx0XFx0ICAgICBmaWJfZnJvbnRlbmQubyBmaWJfc2VtYW50aWNzLm8gZmliX3RyaWUubyBmaWJfbm90aWZpZXIubyBcXFxcXFxuICAxNjpcXHRcXHQgICAgIGluZXRfZnJhZ21lbnQubyBwaW5nLm8gaXBfdHVubmVsX2NvcmUubyBncmVfb2ZmbG9hZC5vIFxcXFxcXG4gIDE3OlxcdFxcdCAgICAgbWV0cmljcy5vIG5ldGxpbmsubyBuZXh0aG9wLm8gdWRwX3R1bm5lbF9zdHViLm9cXG4gIDE4OlxcdFxcbiAgMTk6XFx0b2JqLSQoQ09ORklHX05FVF9JUF9UVU5ORUwpICs9IGlwX3R1bm5lbC5vXFxuICAyMDpcXHRvYmotJChDT05GSUdfU1lTQ1RMKSArPSBzeXNjdGxfbmV0X2lwdjQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODo0Mzo1My44OTk1MDQ5NTNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ2ODQ5NDg3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqRXhhbWluaW5nIHRoZSBJR01QIE1vZHVsZSdzIENvbmRpdGlvbmFsIEJ1aWxkKipcblxuUmlnaHQsIHNvIGBpZ21wLm9gIHNlZW1zIHRvIGJlIGdldHRpbmcgY29tcGlsZWQgcmVnYXJkbGVzcy4gQnV0IEkga25vdyB0aGF0IHRoZSByZWFsIGNvbnRyb2wgbGllcyB3aXRoIGBDT05GSUdfSVBfTVVMVElDQVNUYC4gSXQncyB0aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQgcmVhbGx5IHVubG9ja3MgdGhlIG11bHRpY2FzdCByb3V0aW5nIGFuZCBmZWF0dXJlIHNldC4gU28sIHRoZSBrZXkgaXMgZ29pbmcgdG8gYmUgaW4gYG5ldC9pcHY0L2lnbXAuY2AuIFRoYXQncyB3aGVyZSBJIG5lZWQgdG8gbG9vayB0byBzZWUgaG93IGBDT05GSUdfSVBfTVVMVElDQVNUYCBpcyB1c2VkLCBhbmQgaG93IGl0IGFjdHVhbGx5IGltcGFjdHMgdGhlIGJ1aWxkIG9yIGVuYWJsaW5nIG9mIHNwZWNpZmljIElHTVAgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIGtlcm5lbC4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgaXQncyBndWFyZGluZyBhbnkgY3JpdGljYWwgc2VjdGlvbnMgb3IgZGVmaW5lcyB0aGF0IHVsdGltYXRlbHkgbWFrZSBgaWdtcC5vYCAqdXNlZnVsKiBiZXlvbmQgYSBzaW1wbGUgb2JqZWN0IGZpbGUuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoYXQgc291cmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjM1NSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6NDM6NTcuMzY4MDAyOTRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5MzY2NTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19JUF9NVUxUSUNBU1RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvaWdtcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L2lnbXAuYy0xMDktXFxubmV0L2lwdjQvaWdtcC5jOjExMDojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxcbm5ldC9pcHY0L2lnbXAuYy0xMTEtLyogUGFyYW1ldGVyIG5hbWVzIGFuZCB2YWx1ZXMgYXJlIHRha2VuIGZyb20gaWdtcC12Mi0wNiBkcmFmdCAqL1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jPTIwMT1zdGF0aWMgdm9pZCBpcF9zZl9saXN0X2NsZWFyX2FsbChzdHJ1Y3QgaXBfc2ZfbGlzdCAqcHNmKVxcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTIxMS1cXG5uZXQvaXB2NC9pZ21wLmM6MjEyOiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXFxubmV0L2lwdjQvaWdtcC5jLTIxMy1cXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz0xMTkzPXN0YXRpYyB2b2lkIGlwX21jX2ZpbHRlcl9kZWwoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgYWRkcilcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0xMjAxLVxcbm5ldC9pcHY0L2lnbXAuYzoxMjAyOiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXFxubmV0L2lwdjQvaWdtcC5jLTEyMDMtLypcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz0xMzIyPXN0YXRpYyB2b2lkIF9faWdtcF9ncm91cF9kcm9wcGVkKHN0cnVjdCBpcF9tY19saXN0ICppbSwgZ2ZwX3QgZ2ZwKVxcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTEzMjQtXFx0c3RydWN0IGluX2RldmljZSAqaW5fZGV2ID0gaW0tXFx1MDAzZWludGVyZmFjZTtcXG5uZXQvaXB2NC9pZ21wLmM6MTMyNTojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxcbm5ldC9pcHY0L2lnbXAuYy0xMzI2LVxcdHN0cnVjdCBuZXQgKm5ldCA9IGRldl9uZXQoaW5fZGV2LVxcdTAwM2VkZXYpO1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTEzMzQtXFxubmV0L2lwdjQvaWdtcC5jOjEzMzU6I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1RcXG5uZXQvaXB2NC9pZ21wLmMtMTMzNi1cXHRpZiAoaW0tXFx1MDAzZW11bHRpYWRkciA9PSBJR01QX0FMTF9IT1NUUylcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz0xMzY2PXN0YXRpYyB2b2lkIGlnbXBfZ3JvdXBfYWRkZWQoc3RydWN0IGlwX21jX2xpc3QgKmltKVxcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTEzNjgtXFx0c3RydWN0IGluX2RldmljZSAqaW5fZGV2ID0gaW0tXFx1MDAzZWludGVyZmFjZTtcXG5uZXQvaXB2NC9pZ21wLmM6MTM2OTojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxcbm5ldC9pcHY0L2lnbXAuYy0xMzcwLVxcdHN0cnVjdCBuZXQgKm5ldCA9IGRldl9uZXQoaW5fZGV2LVxcdTAwM2VkZXYpO1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTEzNzctXFxubmV0L2lwdjQvaWdtcC5jOjEzNzg6I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1RcXG5uZXQvaXB2NC9pZ21wLmMtMTM3OS1cXHRpZiAoaW0tXFx1MDAzZW11bHRpYWRkciA9PSBJR01QX0FMTF9IT1NUUylcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz0xNTMyPXN0YXRpYyB2b2lkIF9fX19pcF9tY19pbmNfZ3JvdXAoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgYWRkcixcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0xNTc3LVxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZpbS1cXHUwMDNlbG9jayk7XFxubmV0L2lwdjQvaWdtcC5jOjE1Nzg6I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1RcXG5uZXQvaXB2NC9pZ21wLmMtMTU3OS1cXHR0aW1lcl9zZXR1cChcXHUwMDI2aW0tXFx1MDAzZXRpbWVyLCBpZ21wX3RpbWVyX2V4cGlyZSwgMCk7XFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMTU4Ny1cXG5uZXQvaXB2NC9pZ21wLmM6MTU4ODojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxcbm5ldC9pcHY0L2lnbXAuYy0xNTg5LVxcdGlnbXB2M19kZWxfZGVscmVjKGluX2RldiwgaW0pO1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jPTE3NTY9c3RhdGljIHZvaWQgaXBfbWNfcmVqb2luX2dyb3VwcyhzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpXFxubmV0L2lwdjQvaWdtcC5jLTE3NTcte1xcbm5ldC9pcHY0L2lnbXAuYzoxNzU4OiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXFxubmV0L2lwdjQvaWdtcC5jLTE3NTktXFx0c3RydWN0IGlwX21jX2xpc3QgKmltO1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jPTE4Mzg9dm9pZCBpcF9tY19yZW1hcChzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMTg0NC1cXHRmb3JfZWFjaF9wbWNfcnRubChpbl9kZXYsIHBtYykge1xcbm5ldC9pcHY0L2lnbXAuYzoxODQ1OiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXFxubmV0L2lwdjQvaWdtcC5jLTE4NDYtXFx0XFx0aWdtcHYzX2RlbF9kZWxyZWMoaW5fZGV2LCBwbWMpO1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jPTE4NTQ9dm9pZCBpcF9tY19kb3duKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldilcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0xODYyLVxcbm5ldC9pcHY0L2lnbXAuYzoxODYzOiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXFxubmV0L2lwdjQvaWdtcC5jLTE4NjQtXFx0V1JJVEVfT05DRShpbl9kZXYtXFx1MDAzZW1yX2lmY19jb3VudCwgMCk7XFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMTg3NC1cXG5uZXQvaXB2NC9pZ21wLmM6MTg3NTojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxcbm5ldC9pcHY0L2lnbXAuYy0xODc2LXN0YXRpYyB2b2lkIGlwX21jX3Jlc2V0KHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldilcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz0xODkwPXZvaWQgaXBfbWNfaW5pdF9kZXYoc3RydWN0IGluX2RldmljZSAqaW5fZGV2KVxcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTE4OTMtXFxubmV0L2lwdjQvaWdtcC5jOjE4OTQ6I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1RcXG5uZXQvaXB2NC9pZ21wLmMtMTg5NS1cXHR0aW1lcl9zZXR1cChcXHUwMDI2aW5fZGV2LVxcdTAwM2Vtcl9ncV90aW1lciwgaWdtcF9ncV90aW1lcl9leHBpcmUsIDApO1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jPTE5MDU9dm9pZCBpcF9tY191cChzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMTkxNC1cXHRmb3JfZWFjaF9wbWNfcnRubChpbl9kZXYsIHBtYykge1xcbm5ldC9pcHY0L2lnbXAuYzoxOTE1OiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXFxubmV0L2lwdjQvaWdtcC5jLTE5MTYtXFx0XFx0aWdtcHYzX2RlbF9kZWxyZWMoaW5fZGV2LCBwbWMpO1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jPTE5MjY9dm9pZCBpcF9tY19kZXN0cm95X2RldihzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMTkzMy1cXHRpcF9tY19kb3duKGluX2Rldik7XFxubmV0L2lwdjQvaWdtcC5jOjE5MzQ6I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1RcXG5uZXQvaXB2NC9pZ21wLmMtMTkzNS1cXHRpZ21wdjNfY2xlYXJfZGVscmVjKGluX2Rldik7XFxuLS1cXG5uZXQvaXB2NC9pZ21wLmM9MTk4Mz1zdGF0aWMgaW50IGlwX21jX2RlbDFfc3JjKHN0cnVjdCBpcF9tY19saXN0ICpwbWMsIGludCBzZm1vZGUsXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMjAwMy1cXHRpZiAoIXBzZi1cXHUwMDNlc2ZfY291bnRbTUNBU1RfSU5DTFVERV0gXFx1MDAyNlxcdTAwMjYgIXBzZi1cXHUwMDNlc2ZfY291bnRbTUNBU1RfRVhDTFVERV0pIHtcXG5uZXQvaXB2NC9pZ21wLmM6MjAwNDojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxcbm5ldC9pcHY0L2lnbXAuYy0yMDA1LVxcdFxcdHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldiA9IHBtYy1cXHUwMDNlaW50ZXJmYWNlO1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTIwMTMtXFx0XFx0XFx0cG1jLVxcdTAwM2Vzb3VyY2VzID0gcHNmLVxcdTAwM2VzZl9uZXh0O1xcbm5ldC9pcHY0L2lnbXAuYzoyMDE0OiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXFxubmV0L2lwdjQvaWdtcC5jLTIwMTUtXFx0XFx0aWYgKHBzZi1cXHUwMDNlc2Zfb2xkaW4gXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0yMDI3LVxcbm5ldC9pcHY0L2lnbXAuYzoyMDI4OiNpZm5kZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxcbm5ldC9pcHY0L2lnbXAuYy0yMDI5LSNkZWZpbmUgaWdtcF9pZmNfZXZlbnQoeClcXHRkbyB7IH0gd2hpbGUgKDApXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmM9MjAzMj1zdGF0aWMgaW50IGlwX21jX2RlbF9zcmMoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgKnBtY2EsIGludCBzZm1vZGUsXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMjA1Mi1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG5uZXQvaXB2NC9pZ21wLmM6MjA1MzojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxcbm5ldC9pcHY0L2lnbXAuYy0yMDU0LVxcdHNmX21hcmtzdGF0ZShwbWMpO1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTIwNzItXFx0ICAgIHBtYy1cXHUwMDNlc2Zjb3VudFtNQ0FTVF9JTkNMVURFXSkge1xcbm5ldC9pcHY0L2lnbXAuYzoyMDczOiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXFxubmV0L2lwdjQvaWdtcC5jLTIwNzQtXFx0XFx0c3RydWN0IGlwX3NmX2xpc3QgKnBzZjtcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0yMDc5LVxcdFxcdHBtYy1cXHUwMDNlc2Ztb2RlID0gTUNBU1RfSU5DTFVERTtcXG5uZXQvaXB2NC9pZ21wLmM6MjA4MDojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxcbm5ldC9pcHY0L2lnbXAuYy0yMDgxLVxcdFxcdHBtYy1cXHUwMDNlY3Jjb3VudCA9IGluX2Rldi1cXHUwMDNlbXJfcXJ2ID86IFJFQURfT05DRShuZXQtXFx1MDAzZWlwdjQuc3lzY3RsX2lnbXBfcXJ2KTtcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz0yMDk4PXN0YXRpYyBpbnQgaXBfbWNfYWRkMV9zcmMoc3RydWN0IGlwX21jX2xpc3QgKnBtYywgaW50IHNmbW9kZSxcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0yMTI1LVxcbm5ldC9pcHY0L2lnbXAuYzoyMTI2OiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXFxubmV0L2lwdjQvaWdtcC5jLTIxMjctc3RhdGljIHZvaWQgc2ZfbWFya3N0YXRlKHN0cnVjdCBpcF9tY19saXN0ICpwbWMpXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmM9MjIwND1zdGF0aWMgaW50IGlwX21jX2FkZF9zcmMoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgKnBtY2EsIGludCBzZm1vZGUsXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMjIyNS1cXG5uZXQvaXB2NC9pZ21wLmM6MjIyNjojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxcbm5ldC9pcHY0L2lnbXAuYy0yMjI3LVxcdHNmX21hcmtzdGF0ZShwbWMpO1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTIyNDUtXFx0fSBlbHNlIGlmIChpc2V4Y2x1ZGUgIT0gKHBtYy1cXHUwMDNlc2Zjb3VudFtNQ0FTVF9FWENMVURFXSAhPSAwKSkge1xcbm5ldC9pcHY0L2lnbXAuYzoyMjQ2OiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXFxubmV0L2lwdjQvaWdtcC5jLTIyNDctXFx0XFx0c3RydWN0IGlwX3NmX2xpc3QgKnBzZjtcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0yMjU2LVxcdFxcdFxcdHBtYy1cXHUwMDNlc2Ztb2RlID0gTUNBU1RfSU5DTFVERTtcXG5uZXQvaXB2NC9pZ21wLmM6MjI1NzojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxcbm5ldC9pcHY0L2lnbXAuYy0yMjU4LVxcdFxcdC8qIGVsc2Ugbm8gZmlsdGVyczsga2VlcCBvbGQgbW9kZSBmb3IgcmVwb3J0cyAqL1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jPTI5NzE9c3RhdGljIGludCBpZ21wX21jX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KVxcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTI5ODItXFxubmV0L2lwdjQvaWdtcC5jOjI5ODM6I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1RcXG5uZXQvaXB2NC9pZ21wLmMtMjk4NC1cXHRcXHRxdWVyaWVyID0gSUdNUF9WMV9TRUVOKHN0YXRlLVxcdTAwM2Vpbl9kZXYpID8gXFxcIlYxXFxcIiA6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjQzOjU3LjQ2NzM3NjExMloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzM5NzMwNzM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIElHTVAgVGltZXIgTWFuYWdlbWVudCoqXG5cblJpZ2h0LCBzbyBgQ09ORklHX0lQX01VTFRJQ0FTVGAgZW5hYmxlcyBJR01QIHRpbWVycyBhbmQgcmVwb3J0IGZ1bmN0aW9uYWxpdHkuIFRoYXQncyBzdGFuZGFyZCBmYXJlLiBCdXQsIGEgbmFnZ2luZyBxdWVzdGlvbiBwb3BwZWQgaW50byBteSBoZWFkLi4uIEkgdGhvdWdodCBJIHJlbWVtYmVyZWQgc2VlaW5nIHNvbWV0aGluZyBvZGQgaW4gdGhlIGtlcm5lbCBjb2RlLiBTcGVjaWZpY2FsbHksIHRoZSBgaWdtcF9zdG9wX3RpbWVyYCBmdW5jdGlvbi4gSXMgaXQgZGVmaW5lZCBjb25kaXRpb25hbGx5LCBiYXNlZCBvbiB0aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBvciBpcyBpdCBhbHdheXMgcHJlc2VudCBpbiBgbmV0L2lwdjQvaWdtcC5jYD8gSXQncyBiZWVuIGEgd2hpbGUgc2luY2UgSSd2ZSBkaXZlZCBkZWVwIGludG8gdGhhdCBjb2RlLCBzbyBJIHNob3VsZCBwcm9iYWJseSB2ZXJpZnkgdGhhdCBhc3N1bXB0aW9uLiBJIHdhbnQgdG8gYmUgY2VydGFpbiBhYm91dCB0aGUgcHJlc2VuY2Ugb3IgYWJzZW5jZSBvZiB0aGF0IGZ1bmN0aW9uLiBMZXQncyBwdWxsIHVwIHRoZSBzb3VyY2UgYW5kIGRvdWJsZS1jaGVjay4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgdGhhdCB0aW1lciBpcyBtYW5hZ2VkIGZyb20gYSBzeXN0ZW1zIHByb2dyYW1taW5nIHN0YW5kcG9pbnQsIHNvIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG1pZ2h0IGhhdmUgc29tZSBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMgb3IgdW5pbnRlbmRlZCBzaWRlIGVmZmVjdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NDYyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6NDQ6MDEuMjA3MTA5OTg4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDA0NTgzOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWdtcF9zdG9wX3RpbWVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L2lnbXAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9pZ21wLmM9MjAxPXN0YXRpYyB2b2lkIGlwX3NmX2xpc3RfY2xlYXJfYWxsKHN0cnVjdCBpcF9zZl9saXN0ICpwc2YpXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMjE3LVxcbm5ldC9pcHY0L2lnbXAuYzoyMTg6c3RhdGljIHZvaWQgaWdtcF9zdG9wX3RpbWVyKHN0cnVjdCBpcF9tY19saXN0ICppbSlcXG5uZXQvaXB2NC9pZ21wLmMtMjE5LXtcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz05NDk9c3RhdGljIGJvb2wgaWdtcF9oZWFyZF9yZXBvcnQoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgZ3JvdXApXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtOTY0LVxcdFxcdGlmIChpbS1cXHUwMDNlbXVsdGlhZGRyID09IGdyb3VwKSB7XFxubmV0L2lwdjQvaWdtcC5jOjk2NTpcXHRcXHRcXHRpZ21wX3N0b3BfdGltZXIoaW0pO1xcbm5ldC9pcHY0L2lnbXAuYy05NjYtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvaXB2NC9pZ21wLmM9MTMyMj1zdGF0aWMgdm9pZCBfX2lnbXBfZ3JvdXBfZHJvcHBlZChzdHJ1Y3QgaXBfbWNfbGlzdCAqaW0sIGdmcF90IGdmcClcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0xMzQyLVxcdHJlcG9ydGVyID0gUkVBRF9PTkNFKGltLVxcdTAwM2VyZXBvcnRlcik7XFxubmV0L2lwdjQvaWdtcC5jOjEzNDM6XFx0aWdtcF9zdG9wX3RpbWVyKGltKTtcXG5uZXQvaXB2NC9pZ21wLmMtMTM0NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6NDQ6MDEuMzQ3NTc4NDI3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NDI3MTU2NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBDb2RlYmFzZTogRmluZGluZyBgaWdtcF9zdG9wX3RpbWVyYCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBgaWdtcF9zdG9wX3RpbWVyYCBmdW5jdGlvbiBpcyBiZWluZyBoYW5kbGVkLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gcGlucG9pbnQgaXRzIGRlZmluaXRpb24uIFdoZXJlIGlzIHRoaXMgdGhpbmcgYWN0dWFsbHkgKmRlY2xhcmVkKj8gVGhhdCdzIHRoZSBjcnVjaWFsIGZpcnN0IHN0ZXAuIEkgbmVlZCB0byB0cmFjZSBpdHMgb3JpZ2lucywgdW5kZXJzdGFuZCBpdHMgc2NvcGUsIGFuZCBzZWUgd2hhdCB0aGUgdW5kZXJseWluZyBkYXRhIHN0cnVjdHVyZXMgYXJlLiBPbmNlIEkgaGF2ZSB0aGUgZGVmaW5pdGlvbiBpbiBoYW5kLCBJIGNhbiBiZWdpbiB0byBhc3Nlc3MgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgSUdNUCBmcmFtZXdvcmsgYW5kIGhvdyBpdCBjb250cmlidXRlcyB0byBtdWx0aWNhc3QgbWFuYWdlbWVudC4gTGV0J3Mgc2VlIGlmIEkgY2FuIHVzZSBteSBJREUgdG8ganVtcCByaWdodCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAwOTMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODo0NDowNC4yOTAyOTg2MDNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA0MTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY0L2lnbXAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMTAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMTA6XFx0fVxcbiAyMTE6XFx0XFxuIDIxMjpcXHQjaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxcbiAyMTM6XFx0XFxuIDIxNDpcXHQvKlxcbiAyMTU6XFx0ICpcXHRUaW1lciBtYW5hZ2VtZW50XFxuIDIxNjpcXHQgKi9cXG4gMjE3OlxcdFxcbiAyMTg6XFx0c3RhdGljIHZvaWQgaWdtcF9zdG9wX3RpbWVyKHN0cnVjdCBpcF9tY19saXN0ICppbSlcXG4gMjE5OlxcdHtcXG4gMjIwOlxcdFxcdGJvb2wgcHV0ID0gZmFsc2U7XFxuIDIyMTpcXHRcXG4gMjIyOlxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2aW0tXFx1MDAzZWxvY2spO1xcbiAyMjM6XFx0XFx0aWYgKHRpbWVyX2RlbGV0ZShcXHUwMDI2aW0tXFx1MDAzZXRpbWVyKSlcXG4gMjI0OlxcdFxcdFxcdHB1dCA9IHRydWU7XFxuIDIyNTpcXHRcXHRXUklURV9PTkNFKGltLVxcdTAwM2V0bV9ydW5uaW5nLCAwKTtcXG4gMjI2OlxcdFxcdFdSSVRFX09OQ0UoaW0tXFx1MDAzZXJlcG9ydGVyLCAwKTtcXG4gMjI3OlxcdFxcdGltLVxcdTAwM2V1bnNvbGljaXRfY291bnQgPSAwO1xcbiAyMjg6XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmltLVxcdTAwM2Vsb2NrKTtcXG4gMjI5OlxcdFxcbiAyMzA6XFx0XFx0aWYgKHB1dClcXG4gMjMxOlxcdFxcdFxcdGlwX21hX3B1dChpbSk7XFxuIDIzMjpcXHR9XFxuIDIzMzpcXHRcXG4gMjM0OlxcdC8qIEl0IG11c3QgYmUgY2FsbGVkIHdpdGggbG9ja2VkIGltLVxcdTAwM2Vsb2NrICovXFxuIDIzNTpcXHRzdGF0aWMgdm9pZCBpZ21wX3N0YXJ0X3RpbWVyKHN0cnVjdCBpcF9tY19saXN0ICppbSwgaW50IG1heF9kZWxheSlcXG4gMjM2OlxcdHtcXG4gMjM3OlxcdFxcdGludCB0diA9IGdldF9yYW5kb21fdTMyX2JlbG93KG1heF9kZWxheSk7XFxuIDIzODpcXHRcXG4gMjM5OlxcdFxcdFdSSVRFX09OQ0UoaW0tXFx1MDAzZXRtX3J1bm5pbmcsIDEpO1xcbiAyNDA6XFx0XFx0aWYgKHJlZmNvdW50X2luY19ub3RfemVybyhcXHUwMDI2aW0tXFx1MDAzZXJlZmNudCkpIHtcXG4gMjQxOlxcdFxcdFxcdGlmIChtb2RfdGltZXIoXFx1MDAyNmltLVxcdTAwM2V0aW1lciwgamlmZmllcyArIHR2ICsgMikpXFxuIDI0MjpcXHRcXHRcXHRcXHRpcF9tYV9wdXQoaW0pO1xcbiAyNDM6XFx0XFx0fVxcbiAyNDQ6XFx0fVxcbiAyNDU6XFx0XFxuIDI0NjpcXHRzdGF0aWMgdm9pZCBpZ21wX2dxX3N0YXJ0X3RpbWVyKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldilcXG4gMjQ3OlxcdHtcXG4gMjQ4OlxcdFxcdGludCB0diA9IGdldF9yYW5kb21fdTMyX2JlbG93KFJFQURfT05DRShpbl9kZXYtXFx1MDAzZW1yX21heGRlbGF5KSk7XFxuIDI0OTpcXHRcXHR1bnNpZ25lZCBsb25nIGV4cCA9IGppZmZpZXMgKyB0diArIDI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjQ0OjA0LjI5MDUwNDkwM1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzM4MTU0NDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk11bHRpY2FzdCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIG11bHRpY2FzdC1yZWxhdGVkIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5IGBpZ21wX3N0b3BfdGltZXJgIGFuZCB0aGUgb3RoZXJzIHdpdGhpbiB0aGF0IGJsb2NrLiBUaGUgY29kZSBpcyBjbGVhcmx5IHVzaW5nIGFuIGAjaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVGAgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZS4gVGhhdCdzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBpbmRpY2F0b3Ig4oCTIGBDT05GSUdfSVBfTVVMVElDQVNUYCAqaGFzKiB0byBiZSBlbmFibGVkIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHkgdG8gYmUgY29tcGlsZWQuIE5vIHN1cnByaXNlcyB0aGVyZS5cblxuTm93LCBJJ20gc2hpZnRpbmcgZ2VhcnMgYW5kIHRoaW5raW5nIGFib3V0IElQdjYgbXVsdGljYXN0IHN1cHBvcnQuIEkgbmVlZCB0byBjaGVjayBvdXQgYG5ldC9pcHY2L21jYXN0LmNgLiBIbW0sIEkgcmVjYWxsIHNlZWluZyBzb21lIGRlcGVuZGVuY2llcyB0aGVyZS4uLiBBaCwgeWVzISBgbWNhc3Qub2AgaXMgYnVpbHQgd2hlbiBgQ09ORklHX0lQVjZgIGlzIGVuYWJsZWQuIFRoYXQgY29uZmlybXMgdGhlIGRlcGVuZGVuY3kgb24gSVB2Ni4gQnV0IGlzIGBtY2FzdC5jYCBlbnRpcmVseSBkZXBlbmRlbnQsIG9yIGFyZSB0aGVyZSBtb3JlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24ga25vYnMgaW5zaWRlIGl0PyBJJ2xsIG5lZWQgdG8gZGlnIGEgbGl0dGxlIGRlZXBlciBpbnRvIHRoZSBmaWxlIGl0c2VsZi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA4OTEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODo0NDowOC4wMjg2NjI3ODhaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExOTkxMzcwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L21jYXN0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvbWNhc3QuYz0yOTA5PXN0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgaWdtcDZfbmV0ZGV2X25vdGlmaWVyID0ge1xcbi0tXFxubmV0L2lwdjYvbWNhc3QuYy0yOTEyLVxcbm5ldC9pcHY2L21jYXN0LmM6MjkxMzojaWZkZWYgQ09ORklHX1BST0NfRlNcXG5uZXQvaXB2Ni9tY2FzdC5jLTI5MTQtc3RydWN0IGlnbXA2X21jX2l0ZXJfc3RhdGUge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODo0NDowOC4xNDg1ODE0OTlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ0Mjg4NjM5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFN0cmF0ZWd5IGZvciBgbmV0L2lwdjYvbWNhc3QuY2AqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIERpdmluZyBpbnRvIGBuZXQvaXB2Ni9tY2FzdC5jYCwgSSd2ZSBjb25maXJtZWQgdGhlcmUgYXJlIG5vIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHdpdGhpbiB0aGUgZmlsZSBpdHNlbGYgKm90aGVyKiB0aGFuIGBDT05GSUdfUFJPQ19GU2AuIFRoYXQgbmFycm93cyBkb3duIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgdG8gYElQX01VTFRJQ0FTVGAgYW5kIGBJUFY2YCBhcyB0aGUgZXNzZW50aWFsIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBtb2R1bGUuXG5cbk5vdywgdGhlIGNvcmUgb2YgdGhpcyBhc3Nlc3NtZW50IGlzIHRvIGRldGVybWluZSB0aGUgb3B0aW1hbCBmb2N1cyBmb3IgZnV6emluZyBlZmZvcnRzLiBUaGUgZGlmZiBpZGVudGlmaWVzIGEgc2V0IG9mIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZCwgYW5kIHRoYXQgaXMgd2hlcmUgdGhlIGV4cGxvcmF0aW9uIHdpbGwgY29udGludWU6XG5cbiogICBgaWdtcF9zdG9wX3RpbWVyYFxuKiAgIGBpZ21wX2dxX3N0YXJ0X3RpbWVyYFxuKiAgIGBpZ21wX2lmY19zdGFydF90aW1lcmBcbiogICBgaWdtcF9tb2RfdGltZXJgXG4qICAgYG1sZF9ncV9zdGFydF93b3JrYFxuKiAgIGBtbGRfZ3Ffc3RvcF93b3JrYFxuKiAgIGBtbGRfaWZjX3N0YXJ0X3dvcmtgXG4qICAgYG1sZF9pZmNfc3RvcF93b3JrYFxuKiAgIGBtbGRfZGFkX3N0YXJ0X3dvcmtgXG4qICAgYG1sZF9kYWRfc3RvcF93b3JrYFxuKiAgIGBpZ21wNl9ldmVudF9xdWVyeWBcbiogICBgaWdtcDZfZXZlbnRfcmVwb3J0YFxuXG5UaGVzZSB0d2VsdmUgZnVuY3Rpb25zIGp1bXAgb3V0IGltbWVkaWF0ZWx5IGFzIHByaW1lIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcgd2l0aCBgRm9jdXNTeW1ib2xzYC4gVGhleSByZXByZXNlbnQga2V5IGFyZWFzIHdoZXJlIG11bHRpY2FzdCBiZWhhdmlvciBoYXMgYmVlbiB0b3VjaGVkLiBUaGUgYWltIGlzIHRvIHZlcmlmeSB0aGF0IHRoZXkgYXJlIHJlYWNoYWJsZSBhbmQgbm90IHRyaXZpYWxseSBnZW5lcmljLlxuXG5Gcm9tIHRoZSBjb2RlLCBgaWdtcDZfZXZlbnRfcXVlcnlgIGFuZCBgaWdtcDZfZXZlbnRfcmVwb3J0YCBhcmUgY2xlYXJseSB0cmlnZ2VyZWQgdXBvbiB0aGUgcmVjZXB0aW9uIG9mIElHTVAvTUxEIHBhY2tldHMsIG1ha2luZyB0aGVtIGV4Y2VsbGVudCB0YXJnZXRzLiBgaWdtcF9zdG9wX3RpbWVyYCwgYGlnbXBfZ3Ffc3RhcnRfdGltZXJgLCBgaWdtcF9pZmNfc3RhcnRfdGltZXJgLCBhbmQgYGlnbXBfbW9kX3RpbWVyYCBhcmUgcmVsYXRlZCB0byBJR01QIHN0YXRlIHRyYW5zaXRpb25zLCBhbmQgc2ltaWxhcmx5LCBgbWxkX2dxX3N0YXJ0X3dvcmtgLCBgbWxkX2lmY19zdGFydF93b3JrYCwgYW5kIGBtbGRfZGFkX3N0YXJ0X3dvcmtgIGFyZSBsaW5rZWQgdG8gTUxEIHN0YXRlIHRyYW5zaXRpb25zLlxuXG5TbywgdGhlIGxpc3QgdG8gdGFyZ2V0IGlzOlxuXG4qICAgYGlnbXBfc3RvcF90aW1lcmBcbiogICBgaWdtcF9ncV9zdGFydF90aW1lcmBcbiogICBgaWdtcF9pZmNfc3RhcnRfdGltZXJgXG4qICAgYGlnbXBfbW9kX3RpbWVyYFxuKiAgIGBtbGRfZ3Ffc3RhcnRfd29ya2BcbiogICBgbWxkX2dxX3N0b3Bfd29ya2BcbiogICBgbWxkX2lmY19zdGFydF93b3JrYFxuKiAgIGBtbGRfaWZjX3N0b3Bfd29ya2BcbiogICBgbWxkX2RhZF9zdGFydF93b3JrYFxuKiAgIGBtbGRfZGFkX3N0b3Bfd29ya2BcbiogICBgaWdtcDZfZXZlbnRfcXVlcnlgXG4qICAgYGlnbXA2X2V2ZW50X3JlcG9ydGBcblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhlcmUgYXJlbid0IGFueSBvdGhlciBzdWJ0bHkgbW9kaWZpZWQgZnVuY3Rpb25zIGhpZGluZyBpbiB0aGUgZGlmZiB0aGF0IG1pZ2h0IGFsc28gYmUgcmVsZXZhbnQsIHNvIEknbGwgcmV2aWV3IHRoZSBwYXRjaCBhZ2FpbiBmb3IgYW55IG1pc3NlZCBjYW5kaWRhdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTMzNCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODo0NDoxNS41OTE0NzA1ODNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MDAxMDI1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbl9kZXZfaG9sZF9zYWZlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbGludXgvaW5ldGRldmljZS5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvaW5ldGRldmljZS5oPTI4Nz1zdGF0aWMgaW5saW5lIHZvaWQgaW5fZGV2X3B1dChzdHJ1Y3QgaW5fZGV2aWNlICppZGV2KVxcbi0tXFxuaW5jbHVkZS9saW51eC9pbmV0ZGV2aWNlLmgtMjk1LVxcbmluY2x1ZGUvbGludXgvaW5ldGRldmljZS5oOjI5NjpzdGF0aWMgaW5saW5lIGJvb2wgaW5fZGV2X2hvbGRfc2FmZShzdHJ1Y3QgaW5fZGV2aWNlICppZGV2KVxcbmluY2x1ZGUvbGludXgvaW5ldGRldmljZS5oLTI5Ny17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjQ0OjE2LjA2MTQ4NTI4N1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4ODQzODEyNjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIE5ldHdvcmtpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBpbl9kZXZfaG9sZF9zYWZlYCBhbmQgYGluNl9kZXZfaG9sZF9zYWZlYCBhcmUgaW5saW5lIGZ1bmN0aW9ucy4gVGh1cywgdGhleSBkb24ndCByZWFsbHkgbmVlZCB0byBiZSBsaXN0ZWQgaW4gYEZvY3VzU3ltYm9sc2AuIFRoZXkgYXJlIGJlaW5nIHVzZWQgdG8gZWxpbWluYXRlIGEgcmFjZSBjb25kaXRpb24g4oCTIHRoYXQncyB0aGUgY29yZSBvZiB0aGlzIGNoYW5nZS4gSXQgc2VlbXMgbGlrZSB0aGUgZXhpc3RpbmcgY29kZSBoYWQgYSBwcm9ibGVtIHdoZXJlIGEgdGltZXIgb3Igd29ya3F1ZXVlIGNvdWxkIGdldCBzY2hlZHVsZWQgb24gYSBkZXZpY2UgKGBpbl9kZXZgIG9yIGBpbmV0Nl9kZXZgKSB0aGF0J3MgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgZGVzdHJveWVkLiBUaGlzIGlzIGEgY2xhc3NpYyByZWNpcGUgZm9yIGEgdXNlLWFmdGVyLWZyZWUgb3IgcmVmY291bnQgaXNzdWVzLiBUaGUgZml4IGxldmVyYWdlcyBgaW5fZGV2X2hvbGRfc2FmZWAgKHdoaWNoIHJlbGllcyBvbiBgcmVmY291bnRfaW5jX25vdF96ZXJvYCkgdG8gcHJldmVudCB0aGUgcmVmZXJlbmNlIGZyb20gYmVpbmcgdGFrZW4gaWYgdGhlIGRldmljZSBpcyBhbHJlYWR5IG9uIGl0cyB3YXkgb3V0LlxuXG5GdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBtb2RpZmljYXRpb24gaW4gY29yZSBuZXR3b3JraW5nIGxvZ2ljIOKAkyBzcGVjaWZpY2FsbHkgYXJvdW5kIElHTVAgYW5kIE1MRCB0aW1lciBhbmQgd29ya3F1ZXVlIG1hbmFnZW1lbnQuIFRoZSBjaGFuZ2UgaW52b2x2ZXMgYGluX2Rldl9ob2xkX3NhZmVgIGFuZCB0aGUgc2FmZXIgY291bnRlcnBhcnQsIHNvIGRlZmluaXRlbHkgc29tZXRoaW5nIHRvIGZ1enouXG5cbkxldCBtZSBicmVhayBkb3duIHdoYXQgSSBzZWUgYXMgdGhlIGltcG9ydGFudCBwaWVjZXM6XG5cbiogICAqKldvcnRoRnV6emluZyoqOiBBYnNvbHV0ZWx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGFuZCB3ZSBuZWVkIHRvIHZlcmlmeSBpdHMgaW1wYWN0IG9uIHN0YWJpbGl0eSBhbmQgY29ycmVjdG5lc3MuXG4qICAgKipGb2N1cyBTeW1ib2xzKio6IEknZCBwYXkgZXh0cmEgYXR0ZW50aW9uIHRvIGBpZ21wX3N0b3BfdGltZXJgLCBgaWdtcF9ncV9zdGFydF90aW1lcmAsIGBpZ21wX2lmY19zdGFydF90aW1lcmAsIGBpZ21wX21vZF90aW1lcmAsIGBtbGRfZ3Ffc3RhcnRfd29ya2AsIGBtbGRfZ3Ffc3RvcF93b3JrYCwgYG1sZF9pZmNfc3RhcnRfd29ya2AsIGBtbGRfaWZjX3N0b3Bfd29ya2AsIGBtbGRfZGFkX3N0YXJ0X3dvcmtgLCBgbWxkX2RhZF9zdG9wX3dvcmtgLCBgaWdtcDZfZXZlbnRfcXVlcnlgLCBhbmQgYGlnbXA2X2V2ZW50X3JlcG9ydGAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIGRpcmVjdGx5IHRvdWNoZWQgYnkgdGhlIHBhdGNoIGFuZCB0aGF0IG1hbmFnZSBjcml0aWNhbCB0aW1lciBhbmQgd29ya3F1ZXVlIG9wZXJhdGlvbnMuXG4qICAgKipFbmFibGUgQ29uZmlncyoqOiBgSVBfTVVMVElDQVNUYCBhbmQgYElQVjZgIGFyZSByZWxldmFudCBiZWNhdXNlIHRoZSBwYXRjaCBpbXBhY3RzIElHTVAgYW5kIE1MRCwgd2hpY2ggYXJlIGNvcmUgY29tcG9uZW50cyBvZiBtdWx0aWNhc3QgYW5kIElQdjYgZnVuY3Rpb25hbGl0eSByZXNwZWN0aXZlbHkuXG5cbkVzc2VudGlhbGx5LCB0aGlzIHBhdGNoIG1vZGlmaWVzIHRoZSB3YXkgSUdNUCBhbmQgTUxEIHRpbWVycyBhbmQgd29ya3F1ZXVlcyBhY3F1aXJlIGFuZCByZWxlYXNlIGRldmljZSByZWZlcmVuY2VzLCBhbmQgZGVmZXJzIGBpcF9tYV9wdXRgIGFuZCBgaW42X2Rldl9wdXRgIGluIGNlcnRhaW4gc2NlbmFyaW9zLiBUaGlzIHByb3RlY3RzIGFnYWluc3QgdXNlLWFmdGVyLWZyZWUgYnVncyB0aGF0IGNvdWxkIGFyaXNlIHdoZW4gZGV2aWNlcyBhcmUgYmVpbmcgZGVzdHJveWVkLCBzbyBpdCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgbmVlZHMgdG8gYmUgZXh0ZW5zaXZlbHkgZnV6emVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjY0NiwiT3V0cHV0VG9rZW5zIjozMTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6NDQ6MjQuOTA1MzAwMzQ1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3MjA0ODc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9NVUxUSUNBU1RcIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZ21wX3N0b3BfdGltZXJcIixcbiAgICBcImlnbXBfZ3Ffc3RhcnRfdGltZXJcIixcbiAgICBcImlnbXBfaWZjX3N0YXJ0X3RpbWVyXCIsXG4gICAgXCJpZ21wX21vZF90aW1lclwiLFxuICAgIFwibWxkX2dxX3N0YXJ0X3dvcmtcIixcbiAgICBcIm1sZF9ncV9zdG9wX3dvcmtcIixcbiAgICBcIm1sZF9pZmNfc3RhcnRfd29ya1wiLFxuICAgIFwibWxkX2lmY19zdG9wX3dvcmtcIixcbiAgICBcIm1sZF9kYWRfc3RhcnRfd29ya1wiLFxuICAgIFwibWxkX2RhZF9zdG9wX3dvcmtcIixcbiAgICBcImlnbXA2X2V2ZW50X3F1ZXJ5XCIsXG4gICAgXCJpZ21wNl9ldmVudF9yZXBvcnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBJR01QIGFuZCBNTEQgdGltZXIgYW5kIHdvcmtxdWV1ZSBoYW5kbGluZyB0byB1c2UgYGluX2Rldl9ob2xkX3NhZmVgIGFuZCBgaW42X2Rldl9ob2xkX3NhZmVgICh3aGljaCB1c2UgYHJlZmNvdW50X2luY19ub3RfemVyb2ApIGluc3RlYWQgb2YgYGluX2Rldl9ob2xkYCBhbmQgYGluNl9kZXZfaG9sZGAuIEl0IGFsc28gZGVmZXJzIGBpcF9tYV9wdXRgIGFuZCBgaW42X2Rldl9wdXRgIG91dHNpZGUgb2Ygc3BpbmxvY2tzIGluIHNvbWUgY2FzZXMuIFRoaXMgZml4ZXMgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJlZmNvdW50IGJ1Z3Mgd2hlbiB0aW1lcnMvd29ya3F1ZXVlcyBhcmUgc2NoZWR1bGVkIHdoaWxlIHRoZSBkZXZpY2UgaXMgYmVpbmcgZGVzdHJveWVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JraW5nIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9NVUxUSUNBU1RcIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZ21wX3N0b3BfdGltZXJcIixcbiAgICBcImlnbXBfZ3Ffc3RhcnRfdGltZXJcIixcbiAgICBcImlnbXBfaWZjX3N0YXJ0X3RpbWVyXCIsXG4gICAgXCJpZ21wX21vZF90aW1lclwiLFxuICAgIFwibWxkX2dxX3N0YXJ0X3dvcmtcIixcbiAgICBcIm1sZF9ncV9zdG9wX3dvcmtcIixcbiAgICBcIm1sZF9pZmNfc3RhcnRfd29ya1wiLFxuICAgIFwibWxkX2lmY19zdG9wX3dvcmtcIixcbiAgICBcIm1sZF9kYWRfc3RhcnRfd29ya1wiLFxuICAgIFwibWxkX2RhZF9zdG9wX3dvcmtcIixcbiAgICBcImlnbXA2X2V2ZW50X3F1ZXJ5XCIsXG4gICAgXCJpZ21wNl9ldmVudF9yZXBvcnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBJR01QIGFuZCBNTEQgdGltZXIgYW5kIHdvcmtxdWV1ZSBoYW5kbGluZyB0byB1c2UgYGluX2Rldl9ob2xkX3NhZmVgIGFuZCBgaW42X2Rldl9ob2xkX3NhZmVgICh3aGljaCB1c2UgYHJlZmNvdW50X2luY19ub3RfemVyb2ApIGluc3RlYWQgb2YgYGluX2Rldl9ob2xkYCBhbmQgYGluNl9kZXZfaG9sZGAuIEl0IGFsc28gZGVmZXJzIGBpcF9tYV9wdXRgIGFuZCBgaW42X2Rldl9wdXRgIG91dHNpZGUgb2Ygc3BpbmxvY2tzIGluIHNvbWUgY2FzZXMuIFRoaXMgZml4ZXMgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJlZmNvdW50IGJ1Z3Mgd2hlbiB0aW1lcnMvd29ya3F1ZXVlcyBhcmUgc2NoZWR1bGVkIHdoaWxlIHRoZSBkZXZpY2UgaXMgYmVpbmcgZGVzdHJveWVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JraW5nIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowqpfzj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-05 18:25:22 +0000 UTC FinishedAt: 2026-07-05 18:44:26 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d7a8d500d7e42837bd8dce40cb52c97c6e8706a9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_MULTICAST", "IPV6" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d7a8d500d7e42837bd8dce40cb52c97c6e8706a9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_MULTICAST", "IPV6" ], "series_id": "22cdc8b4-8aad-4651-af3f-022d23cf9352" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "igmp_stop_timer", "igmp_gq_start_timer", "igmp_ifc_start_timer", "igmp_mod_timer", "mld_gq_start_work", "mld_gq_stop_work", "mld_ifc_start_work", "mld_ifc_stop_work", "mld_dad_start_work", "mld_dad_stop_work", "igmp6_event_query", "igmp6_event_report" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX01VTFRJQ0FTVCYjMzQ7LAogICAgJiMzNDtJUFY2JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWdtcF9zdG9wX3RpbWVyJiMzNDssCiAgICAmIzM0O2lnbXBfZ3Ffc3RhcnRfdGltZXImIzM0OywKICAgICYjMzQ7aWdtcF9pZmNfc3RhcnRfdGltZXImIzM0OywKICAgICYjMzQ7aWdtcF9tb2RfdGltZXImIzM0OywKICAgICYjMzQ7bWxkX2dxX3N0YXJ0X3dvcmsmIzM0OywKICAgICYjMzQ7bWxkX2dxX3N0b3Bfd29yayYjMzQ7LAogICAgJiMzNDttbGRfaWZjX3N0YXJ0X3dvcmsmIzM0OywKICAgICYjMzQ7bWxkX2lmY19zdG9wX3dvcmsmIzM0OywKICAgICYjMzQ7bWxkX2RhZF9zdGFydF93b3JrJiMzNDssCiAgICAmIzM0O21sZF9kYWRfc3RvcF93b3JrJiMzNDssCiAgICAmIzM0O2lnbXA2X2V2ZW50X3F1ZXJ5JiMzNDssCiAgICAmIzM0O2lnbXA2X2V2ZW50X3JlcG9ydCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBJR01QIGFuZCBNTEQgdGltZXIgYW5kIHdvcmtxdWV1ZSBoYW5kbGluZyB0byB1c2UgYGluX2Rldl9ob2xkX3NhZmVgIGFuZCBgaW42X2Rldl9ob2xkX3NhZmVgICh3aGljaCB1c2UgYHJlZmNvdW50X2luY19ub3RfemVyb2ApIGluc3RlYWQgb2YgYGluX2Rldl9ob2xkYCBhbmQgYGluNl9kZXZfaG9sZGAuIEl0IGFsc28gZGVmZXJzIGBpcF9tYV9wdXRgIGFuZCBgaW42X2Rldl9wdXRgIG91dHNpZGUgb2Ygc3BpbmxvY2tzIGluIHNvbWUgY2FzZXMuIFRoaXMgZml4ZXMgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJlZmNvdW50IGJ1Z3Mgd2hlbiB0aW1lcnMvd29ya3F1ZXVlcyBhcmUgc2NoZWR1bGVkIHdoaWxlIHRoZSBkZXZpY2UgaXMgYmVpbmcgZGVzdHJveWVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JraW5nIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxODo0MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGY5ZGNhMjA4MGM4MDNjMjM2MDVmNzE2ZWJjYjczNDZjYTU4ODI1MGZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCA1IDE4OjQzOjEyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaW5ldGRldmljZS5oIGIvaW5jbHVkZS9saW51eC9pbmV0ZGV2aWNlLmhcbmluZGV4IGRjY2JlYjI1ZjcwMTQxLi42MDMyZWVhMjUzOWE2MCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvaW5ldGRldmljZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2luZXRkZXZpY2UuaFxuQEAgLTI5Myw2ICYjNDM7MjkzLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbl9kZXZfcHV0KHN0cnVjdCBpbl9kZXZpY2UgKmlkZXYpXG4gI2RlZmluZSBfX2luX2Rldl9wdXQoaWRldikgIHJlZmNvdW50X2RlYyhcdTAwMjYoaWRldiktXHUwMDNlcmVmY250KVxuICNkZWZpbmUgaW5fZGV2X2hvbGQoaWRldikgICByZWZjb3VudF9pbmMoXHUwMDI2KGlkZXYpLVx1MDAzZXJlZmNudClcbiBcbiYjNDM7c3RhdGljIGlubGluZSBib29sIGluX2Rldl9ob2xkX3NhZmUoc3RydWN0IGluX2RldmljZSAqaWRldilcbiYjNDM7e1xuJiM0MztcdHJldHVybiByZWZjb3VudF9pbmNfbm90X3plcm8oXHUwMDI2aWRldi1cdTAwM2VyZWZjbnQpO1xuJiM0Mzt9XG4mIzQzO1xuICNlbmRpZiAvKiBfX0tFUk5FTF9fICovXG4gXG4gc3RhdGljIF9faW5saW5lX18gX19iZTMyIGluZXRfbWFrZV9tYXNrKGludCBsb2dtYXNrKVxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2FkZHJjb25mLmggYi9pbmNsdWRlL25ldC9hZGRyY29uZi5oXG5pbmRleCA1MzliYmJlNTRiMTRlOC4uOGNlZDI3YTgyMjliNmUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9hZGRyY29uZi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9hZGRyY29uZi5oXG5AQCAtNDQ2LDYgJiM0Mzs0NDYsMTEgQEAgc3RhdGljIGlubGluZSB2b2lkIGluNl9kZXZfaG9sZChzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KVxuIFx0cmVmY291bnRfaW5jKFx1MDAyNmlkZXYtXHUwMDNlcmVmY250KTtcbiB9XG4gXG4mIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBpbjZfZGV2X2hvbGRfc2FmZShzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIHJlZmNvdW50X2luY19ub3RfemVybyhcdTAwMjZpZGV2LVx1MDAzZXJlZmNudCk7XG4mIzQzO31cbiYjNDM7XG4gLyogY2FsbGVkIHdpdGggcmN1X3JlYWRfbG9jayBoZWxkICovXG4gc3RhdGljIGlubGluZSBib29sIGlwNl9pZ25vcmVfbGlua2Rvd24oY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiB7XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaWdtcC5jIGIvbmV0L2lwdjQvaWdtcC5jXG5pbmRleCBiNjMzN2E0N2MxNDE4NS4uOTU3MDEzZTdmN2EyNWYgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9pZ21wLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2lnbXAuY1xuQEAgLTIxNywxMyAmIzQzOzIxNywxOCBAQCBzdGF0aWMgdm9pZCBpcF9zZl9saXN0X2NsZWFyX2FsbChzdHJ1Y3QgaXBfc2ZfbGlzdCAqcHNmKVxuIFxuIHN0YXRpYyB2b2lkIGlnbXBfc3RvcF90aW1lcihzdHJ1Y3QgaXBfbWNfbGlzdCAqaW0pXG4ge1xuJiM0MztcdGJvb2wgcHV0ID0gZmFsc2U7XG4mIzQzO1xuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmltLVx1MDAzZWxvY2spO1xuIFx0aWYgKHRpbWVyX2RlbGV0ZShcdTAwMjZpbS1cdTAwM2V0aW1lcikpXG4tXHRcdHJlZmNvdW50X2RlYyhcdTAwMjZpbS1cdTAwM2VyZWZjbnQpO1xuJiM0MztcdFx0cHV0ID0gdHJ1ZTtcbiBcdFdSSVRFX09OQ0UoaW0tXHUwMDNldG1fcnVubmluZywgMCk7XG4gXHRXUklURV9PTkNFKGltLVx1MDAzZXJlcG9ydGVyLCAwKTtcbiBcdGltLVx1MDAzZXVuc29saWNpdF9jb3VudCA9IDA7XG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZpbS1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHB1dClcbiYjNDM7XHRcdGlwX21hX3B1dChpbSk7XG4gfVxuIFxuIC8qIEl0IG11c3QgYmUgY2FsbGVkIHdpdGggbG9ja2VkIGltLVx1MDAzZWxvY2sgKi9cbkBAIC0yNDgsMjAgJiM0MzsyNTMsMjYgQEAgc3RhdGljIHZvaWQgaWdtcF9ncV9zdGFydF90aW1lcihzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpXG4gXHRcdHJldHVybjtcbiBcbiBcdGluX2Rldi1cdTAwM2Vtcl9ncV9ydW5uaW5nID0gMTtcbi1cdGlmICghbW9kX3RpbWVyKFx1MDAyNmluX2Rldi1cdTAwM2Vtcl9ncV90aW1lciwgZXhwKSlcbi1cdFx0aW5fZGV2X2hvbGQoaW5fZGV2KTtcbiYjNDM7XHRpZiAoaW5fZGV2X2hvbGRfc2FmZShpbl9kZXYpKSB7XG4mIzQzO1x0XHRpZiAobW9kX3RpbWVyKFx1MDAyNmluX2Rldi1cdTAwM2Vtcl9ncV90aW1lciwgZXhwKSlcbiYjNDM7XHRcdFx0aW5fZGV2X3B1dChpbl9kZXYpO1xuJiM0MztcdH1cbiB9XG4gXG4gc3RhdGljIHZvaWQgaWdtcF9pZmNfc3RhcnRfdGltZXIoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBpbnQgZGVsYXkpXG4ge1xuLVx0aW50IHR2ID0gZ2V0X3JhbmRvbV91MzJfYmVsb3coZGVsYXkpO1xuJiM0MztcdGlmIChpbl9kZXZfaG9sZF9zYWZlKGluX2RldikpIHtcbiYjNDM7XHRcdGludCB0diA9IGdldF9yYW5kb21fdTMyX2JlbG93KGRlbGF5KTtcbiBcbi1cdGlmICghbW9kX3RpbWVyKFx1MDAyNmluX2Rldi1cdTAwM2Vtcl9pZmNfdGltZXIsIGppZmZpZXMmIzQzO3R2JiM0MzsyKSlcbi1cdFx0aW5fZGV2X2hvbGQoaW5fZGV2KTtcbiYjNDM7XHRcdGlmIChtb2RfdGltZXIoXHUwMDI2aW5fZGV2LVx1MDAzZW1yX2lmY190aW1lciwgamlmZmllcyAmIzQzOyB0diAmIzQzOyAyKSlcbiYjNDM7XHRcdFx0aW5fZGV2X3B1dChpbl9kZXYpO1xuJiM0MztcdH1cbiB9XG4gXG4gc3RhdGljIHZvaWQgaWdtcF9tb2RfdGltZXIoc3RydWN0IGlwX21jX2xpc3QgKmltLCBpbnQgbWF4X2RlbGF5KVxuIHtcbiYjNDM7XHRib29sIHB1dCA9IGZhbHNlO1xuJiM0MztcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZpbS1cdTAwM2Vsb2NrKTtcbiBcdGltLVx1MDAzZXVuc29saWNpdF9jb3VudCA9IDA7XG4gXHRpZiAodGltZXJfZGVsZXRlKFx1MDAyNmltLVx1MDAzZXRpbWVyKSkge1xuQEAgLTI3MSwxMCAmIzQzOzI4MiwxMyBAQCBzdGF0aWMgdm9pZCBpZ21wX21vZF90aW1lcihzdHJ1Y3QgaXBfbWNfbGlzdCAqaW0sIGludCBtYXhfZGVsYXkpXG4gXHRcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2aW0tXHUwMDNlbG9jayk7XG4gXHRcdFx0cmV0dXJuO1xuIFx0XHR9XG4tXHRcdHJlZmNvdW50X2RlYyhcdTAwMjZpbS1cdTAwM2VyZWZjbnQpO1xuJiM0MztcdFx0cHV0ID0gdHJ1ZTtcbiBcdH1cbiBcdGlnbXBfc3RhcnRfdGltZXIoaW0sIG1heF9kZWxheSk7XG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZpbS1cdTAwM2Vsb2NrKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHB1dClcbiYjNDM7XHRcdGlwX21hX3B1dChpbSk7XG4gfVxuIFxuIFxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L21jYXN0LmMgYi9uZXQvaXB2Ni9tY2FzdC5jXG5pbmRleCAwNGI4MTFiM2JlOTc4ZS4uNGQyYjkzNzdiYTJkZTUgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9tY2FzdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9tY2FzdC5jXG5AQCAtMTA4Myw4ICYjNDM7MTA4MywxMCBAQCBzdGF0aWMgdm9pZCBtbGRfZ3Ffc3RhcnRfd29yayhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KVxuIFx0bWNfYXNzZXJ0X2xvY2tlZChpZGV2KTtcbiBcbiBcdGlkZXYtXHUwMDNlbWNfZ3FfcnVubmluZyA9IDE7XG4tXHRpZiAoIW1vZF9kZWxheWVkX3dvcmsobWxkX3dxLCBcdTAwMjZpZGV2LVx1MDAzZW1jX2dxX3dvcmssIHR2ICYjNDM7IDIpKVxuLVx0XHRpbjZfZGV2X2hvbGQoaWRldik7XG4mIzQzO1x0aWYgKGluNl9kZXZfaG9sZF9zYWZlKGlkZXYpKSB7XG4mIzQzO1x0XHRpZiAobW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFx1MDAyNmlkZXYtXHUwMDNlbWNfZ3Ffd29yaywgdHYgJiM0MzsgMikpXG4mIzQzO1x0XHRcdGluNl9kZXZfcHV0KGlkZXYpO1xuJiM0MztcdH1cbiB9XG4gXG4gc3RhdGljIHZvaWQgbWxkX2dxX3N0b3Bfd29yayhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KVxuQEAgLTExMDIsOCAmIzQzOzExMDQsMTAgQEAgc3RhdGljIHZvaWQgbWxkX2lmY19zdGFydF93b3JrKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYsIHVuc2lnbmVkIGxvbmcgZGVsYXkpXG4gXG4gXHRtY19hc3NlcnRfbG9ja2VkKGlkZXYpO1xuIFxuLVx0aWYgKCFtb2RfZGVsYXllZF93b3JrKG1sZF93cSwgXHUwMDI2aWRldi1cdTAwM2VtY19pZmNfd29yaywgdHYgJiM0MzsgMikpXG4tXHRcdGluNl9kZXZfaG9sZChpZGV2KTtcbiYjNDM7XHRpZiAoaW42X2Rldl9ob2xkX3NhZmUoaWRldikpIHtcbiYjNDM7XHRcdGlmIChtb2RfZGVsYXllZF93b3JrKG1sZF93cSwgXHUwMDI2aWRldi1cdTAwM2VtY19pZmNfd29yaywgdHYgJiM0MzsgMikpXG4mIzQzO1x0XHRcdGluNl9kZXZfcHV0KGlkZXYpO1xuJiM0MztcdH1cbiB9XG4gXG4gc3RhdGljIHZvaWQgbWxkX2lmY19zdG9wX3dvcmsoc3RydWN0IGluZXQ2X2RldiAqaWRldilcbkBAIC0xMTIxLDggJiM0MzsxMTI1LDEwIEBAIHN0YXRpYyB2b2lkIG1sZF9kYWRfc3RhcnRfd29yayhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2LCB1bnNpZ25lZCBsb25nIGRlbGF5KVxuIFxuIFx0bWNfYXNzZXJ0X2xvY2tlZChpZGV2KTtcbiBcbi1cdGlmICghbW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFx1MDAyNmlkZXYtXHUwMDNlbWNfZGFkX3dvcmssIHR2ICYjNDM7IDIpKVxuLVx0XHRpbjZfZGV2X2hvbGQoaWRldik7XG4mIzQzO1x0aWYgKGluNl9kZXZfaG9sZF9zYWZlKGlkZXYpKSB7XG4mIzQzO1x0XHRpZiAobW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFx1MDAyNmlkZXYtXHUwMDNlbWNfZGFkX3dvcmssIHR2ICYjNDM7IDIpKVxuJiM0MztcdFx0XHRpbjZfZGV2X3B1dChpZGV2KTtcbiYjNDM7XHR9XG4gfVxuIFxuIHN0YXRpYyB2b2lkIG1sZF9kYWRfc3RvcF93b3JrKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpXG5AQCAtMTM5NSwxOCAmIzQzOzE0MDEsMjMgQEAgc3RhdGljIHZvaWQgbWxkX3Byb2Nlc3NfdjIoc3RydWN0IGluZXQ2X2RldiAqaWRldiwgc3RydWN0IG1sZDJfcXVlcnkgKm1sZCxcbiB2b2lkIGlnbXA2X2V2ZW50X3F1ZXJ5KHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0c3RydWN0IGluZXQ2X2RldiAqaWRldiA9IF9faW42X2Rldl9nZXQoc2tiLVx1MDAzZWRldik7XG4mIzQzO1x0Ym9vbCBwdXQgPSBmYWxzZTtcbiBcbiBcdGlmICghaWRldiB8fCBpZGV2LVx1MDAzZWRlYWQpXG4gXHRcdGdvdG8gb3V0O1xuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmlkZXYtXHUwMDNlbWNfcXVlcnlfbG9jayk7XG4tXHRpZiAoc2tiX3F1ZXVlX2xlbihcdTAwMjZpZGV2LVx1MDAzZW1jX3F1ZXJ5X3F1ZXVlKSBcdTAwM2MgTUxEX01BWF9TS0JTKSB7XG4mIzQzO1x0aWYgKHNrYl9xdWV1ZV9sZW4oXHUwMDI2aWRldi1cdTAwM2VtY19xdWVyeV9xdWV1ZSkgXHUwMDNjIE1MRF9NQVhfU0tCUyBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgaW42X2Rldl9ob2xkX3NhZmUoaWRldikpIHtcbiBcdFx0X19za2JfcXVldWVfdGFpbChcdTAwMjZpZGV2LVx1MDAzZW1jX3F1ZXJ5X3F1ZXVlLCBza2IpO1xuLVx0XHRpZiAoIW1vZF9kZWxheWVkX3dvcmsobWxkX3dxLCBcdTAwMjZpZGV2LVx1MDAzZW1jX3F1ZXJ5X3dvcmssIDApKVxuLVx0XHRcdGluNl9kZXZfaG9sZChpZGV2KTtcbiYjNDM7XHRcdGlmIChtb2RfZGVsYXllZF93b3JrKG1sZF93cSwgXHUwMDI2aWRldi1cdTAwM2VtY19xdWVyeV93b3JrLCAwKSlcbiYjNDM7XHRcdFx0cHV0ID0gdHJ1ZTtcbiBcdFx0c2tiID0gTlVMTDtcbiBcdH1cbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmlkZXYtXHUwMDNlbWNfcXVlcnlfbG9jayk7XG4mIzQzO1xuJiM0MztcdGlmIChwdXQpXG4mIzQzO1x0XHRpbjZfZGV2X3B1dChpZGV2KTtcbiBvdXQ6XG4gXHRrZnJlZV9za2Ioc2tiKTtcbiB9XG5AQCAtMTU3MCwxOCAmIzQzOzE1ODEsMjMgQEAgc3RhdGljIHZvaWQgbWxkX3F1ZXJ5X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIHZvaWQgaWdtcDZfZXZlbnRfcmVwb3J0KHN0cnVjdCBza19idWZmICpza2IpXG4ge1xuIFx0c3RydWN0IGluZXQ2X2RldiAqaWRldiA9IF9faW42X2Rldl9nZXQoc2tiLVx1MDAzZWRldik7XG4mIzQzO1x0Ym9vbCBwdXQgPSBmYWxzZTtcbiBcbiBcdGlmICghaWRldiB8fCBpZGV2LVx1MDAzZWRlYWQpXG4gXHRcdGdvdG8gb3V0O1xuIFxuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmlkZXYtXHUwMDNlbWNfcmVwb3J0X2xvY2spO1xuLVx0aWYgKHNrYl9xdWV1ZV9sZW4oXHUwMDI2aWRldi1cdTAwM2VtY19yZXBvcnRfcXVldWUpIFx1MDAzYyBNTERfTUFYX1NLQlMpIHtcbiYjNDM7XHRpZiAoc2tiX3F1ZXVlX2xlbihcdTAwMjZpZGV2LVx1MDAzZW1jX3JlcG9ydF9xdWV1ZSkgXHUwMDNjIE1MRF9NQVhfU0tCUyBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgaW42X2Rldl9ob2xkX3NhZmUoaWRldikpIHtcbiBcdFx0X19za2JfcXVldWVfdGFpbChcdTAwMjZpZGV2LVx1MDAzZW1jX3JlcG9ydF9xdWV1ZSwgc2tiKTtcbi1cdFx0aWYgKCFtb2RfZGVsYXllZF93b3JrKG1sZF93cSwgXHUwMDI2aWRldi1cdTAwM2VtY19yZXBvcnRfd29yaywgMCkpXG4tXHRcdFx0aW42X2Rldl9ob2xkKGlkZXYpO1xuJiM0MztcdFx0aWYgKG1vZF9kZWxheWVkX3dvcmsobWxkX3dxLCBcdTAwMjZpZGV2LVx1MDAzZW1jX3JlcG9ydF93b3JrLCAwKSlcbiYjNDM7XHRcdFx0cHV0ID0gdHJ1ZTtcbiBcdFx0c2tiID0gTlVMTDtcbiBcdH1cbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmlkZXYtXHUwMDNlbWNfcmVwb3J0X2xvY2spO1xuJiM0MztcbiYjNDM7XHRpZiAocHV0KVxuJiM0MztcdFx0aW42X2Rldl9wdXQoaWRldik7XG4gb3V0OlxuIFx0a2ZyZWVfc2tiKHNrYik7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjQzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX01VTFRJQ0FTVCYjMzQ7LAogICAgJiMzNDtJUFY2JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWdtcF9zdG9wX3RpbWVyJiMzNDssCiAgICAmIzM0O2lnbXBfZ3Ffc3RhcnRfdGltZXImIzM0OywKICAgICYjMzQ7aWdtcF9pZmNfc3RhcnRfdGltZXImIzM0OywKICAgICYjMzQ7aWdtcF9tb2RfdGltZXImIzM0OywKICAgICYjMzQ7bWxkX2dxX3N0YXJ0X3dvcmsmIzM0OywKICAgICYjMzQ7bWxkX2dxX3N0b3Bfd29yayYjMzQ7LAogICAgJiMzNDttbGRfaWZjX3N0YXJ0X3dvcmsmIzM0OywKICAgICYjMzQ7bWxkX2lmY19zdG9wX3dvcmsmIzM0OywKICAgICYjMzQ7bWxkX2RhZF9zdGFydF93b3JrJiMzNDssCiAgICAmIzM0O21sZF9kYWRfc3RvcF93b3JrJiMzNDssCiAgICAmIzM0O2lnbXA2X2V2ZW50X3F1ZXJ5JiMzNDssCiAgICAmIzM0O2lnbXA2X2V2ZW50X3JlcG9ydCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBJR01QIGFuZCBNTEQgdGltZXIgYW5kIHdvcmtxdWV1ZSBoYW5kbGluZyB0byB1c2UgYGluX2Rldl9ob2xkX3NhZmVgIGFuZCBgaW42X2Rldl9ob2xkX3NhZmVgICh3aGljaCB1c2UgYHJlZmNvdW50X2luY19ub3RfemVyb2ApIGluc3RlYWQgb2YgYGluX2Rldl9ob2xkYCBhbmQgYGluNl9kZXZfaG9sZGAuIEl0IGFsc28gZGVmZXJzIGBpcF9tYV9wdXRgIGFuZCBgaW42X2Rldl9wdXRgIG91dHNpZGUgb2Ygc3BpbmxvY2tzIGluIHNvbWUgY2FzZXMuIFRoaXMgZml4ZXMgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJlZmNvdW50IGJ1Z3Mgd2hlbiB0aW1lcnMvd29ya3F1ZXVlcyBhcmUgc2NoZWR1bGVkIHdoaWxlIHRoZSBkZXZpY2UgaXMgYmVpbmcgZGVzdHJveWVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JraW5nIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZjlkY2EyMDgwYzgwM2MyMzYwNWY3MTZlYmNiNzM0NmNhNTg4MjUwZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gSnVsIDUgMTg6NDM6MTIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2luZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvaW5ldGRldmljZS5oCmluZGV4IGRjY2JlYjI1ZjcwMTQxLi42MDMyZWVhMjUzOWE2MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9pbmV0ZGV2aWNlLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9pbmV0ZGV2aWNlLmgKQEAgLTI5Myw2ICYjNDM7MjkzLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbl9kZXZfcHV0KHN0cnVjdCBpbl9kZXZpY2UgKmlkZXYpCiAjZGVmaW5lIF9faW5fZGV2X3B1dChpZGV2KSAgcmVmY291bnRfZGVjKCZhbXA7KGlkZXYpLSZndDtyZWZjbnQpCiAjZGVmaW5lIGluX2Rldl9ob2xkKGlkZXYpICAgcmVmY291bnRfaW5jKCZhbXA7KGlkZXYpLSZndDtyZWZjbnQpCiAKJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgaW5fZGV2X2hvbGRfc2FmZShzdHJ1Y3QgaW5fZGV2aWNlICppZGV2KQomIzQzO3sKJiM0MzsJcmV0dXJuIHJlZmNvdW50X2luY19ub3RfemVybygmYW1wO2lkZXYtJmd0O3JlZmNudCk7CiYjNDM7fQomIzQzOwogI2VuZGlmIC8qIF9fS0VSTkVMX18gKi8KIAogc3RhdGljIF9faW5saW5lX18gX19iZTMyIGluZXRfbWFrZV9tYXNrKGludCBsb2dtYXNrKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvYWRkcmNvbmYuaCBiL2luY2x1ZGUvbmV0L2FkZHJjb25mLmgKaW5kZXggNTM5YmJiZTU0YjE0ZTguLjhjZWQyN2E4MjI5YjZlIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9hZGRyY29uZi5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2FkZHJjb25mLmgKQEAgLTQ0Niw2ICYjNDM7NDQ2LDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbjZfZGV2X2hvbGQoc3RydWN0IGluZXQ2X2RldiAqaWRldikKIAlyZWZjb3VudF9pbmMoJmFtcDtpZGV2LSZndDtyZWZjbnQpOwogfQogCiYjNDM7c3RhdGljIGlubGluZSBib29sIGluNl9kZXZfaG9sZF9zYWZlKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpCiYjNDM7ewomIzQzOwlyZXR1cm4gcmVmY291bnRfaW5jX25vdF96ZXJvKCZhbXA7aWRldi0mZ3Q7cmVmY250KTsKJiM0Mzt9CiYjNDM7CiAvKiBjYWxsZWQgd2l0aCByY3VfcmVhZF9sb2NrIGhlbGQgKi8KIHN0YXRpYyBpbmxpbmUgYm9vbCBpcDZfaWdub3JlX2xpbmtkb3duKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiB7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pZ21wLmMgYi9uZXQvaXB2NC9pZ21wLmMKaW5kZXggYjYzMzdhNDdjMTQxODUuLjk1NzAxM2U3ZjdhMjVmIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pZ21wLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvaWdtcC5jCkBAIC0yMTcsMTMgJiM0MzsyMTcsMTggQEAgc3RhdGljIHZvaWQgaXBfc2ZfbGlzdF9jbGVhcl9hbGwoc3RydWN0IGlwX3NmX2xpc3QgKnBzZikKIAogc3RhdGljIHZvaWQgaWdtcF9zdG9wX3RpbWVyKHN0cnVjdCBpcF9tY19saXN0ICppbSkKIHsKJiM0MzsJYm9vbCBwdXQgPSBmYWxzZTsKJiM0MzsKIAlzcGluX2xvY2tfYmgoJmFtcDtpbS0mZ3Q7bG9jayk7CiAJaWYgKHRpbWVyX2RlbGV0ZSgmYW1wO2ltLSZndDt0aW1lcikpCi0JCXJlZmNvdW50X2RlYygmYW1wO2ltLSZndDtyZWZjbnQpOwomIzQzOwkJcHV0ID0gdHJ1ZTsKIAlXUklURV9PTkNFKGltLSZndDt0bV9ydW5uaW5nLCAwKTsKIAlXUklURV9PTkNFKGltLSZndDtyZXBvcnRlciwgMCk7CiAJaW0tJmd0O3Vuc29saWNpdF9jb3VudCA9IDA7CiAJc3Bpbl91bmxvY2tfYmgoJmFtcDtpbS0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CWlmIChwdXQpCiYjNDM7CQlpcF9tYV9wdXQoaW0pOwogfQogCiAvKiBJdCBtdXN0IGJlIGNhbGxlZCB3aXRoIGxvY2tlZCBpbS0mZ3Q7bG9jayAqLwpAQCAtMjQ4LDIwICYjNDM7MjUzLDI2IEBAIHN0YXRpYyB2b2lkIGlnbXBfZ3Ffc3RhcnRfdGltZXIoc3RydWN0IGluX2RldmljZSAqaW5fZGV2KQogCQlyZXR1cm47CiAKIAlpbl9kZXYtJmd0O21yX2dxX3J1bm5pbmcgPSAxOwotCWlmICghbW9kX3RpbWVyKCZhbXA7aW5fZGV2LSZndDttcl9ncV90aW1lciwgZXhwKSkKLQkJaW5fZGV2X2hvbGQoaW5fZGV2KTsKJiM0MzsJaWYgKGluX2Rldl9ob2xkX3NhZmUoaW5fZGV2KSkgewomIzQzOwkJaWYgKG1vZF90aW1lcigmYW1wO2luX2Rldi0mZ3Q7bXJfZ3FfdGltZXIsIGV4cCkpCiYjNDM7CQkJaW5fZGV2X3B1dChpbl9kZXYpOwomIzQzOwl9CiB9CiAKIHN0YXRpYyB2b2lkIGlnbXBfaWZjX3N0YXJ0X3RpbWVyKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldiwgaW50IGRlbGF5KQogewotCWludCB0diA9IGdldF9yYW5kb21fdTMyX2JlbG93KGRlbGF5KTsKJiM0MzsJaWYgKGluX2Rldl9ob2xkX3NhZmUoaW5fZGV2KSkgewomIzQzOwkJaW50IHR2ID0gZ2V0X3JhbmRvbV91MzJfYmVsb3coZGVsYXkpOwogCi0JaWYgKCFtb2RfdGltZXIoJmFtcDtpbl9kZXYtJmd0O21yX2lmY190aW1lciwgamlmZmllcyYjNDM7dHYmIzQzOzIpKQotCQlpbl9kZXZfaG9sZChpbl9kZXYpOwomIzQzOwkJaWYgKG1vZF90aW1lcigmYW1wO2luX2Rldi0mZ3Q7bXJfaWZjX3RpbWVyLCBqaWZmaWVzICYjNDM7IHR2ICYjNDM7IDIpKQomIzQzOwkJCWluX2Rldl9wdXQoaW5fZGV2KTsKJiM0MzsJfQogfQogCiBzdGF0aWMgdm9pZCBpZ21wX21vZF90aW1lcihzdHJ1Y3QgaXBfbWNfbGlzdCAqaW0sIGludCBtYXhfZGVsYXkpCiB7CiYjNDM7CWJvb2wgcHV0ID0gZmFsc2U7CiYjNDM7CiAJc3Bpbl9sb2NrX2JoKCZhbXA7aW0tJmd0O2xvY2spOwogCWltLSZndDt1bnNvbGljaXRfY291bnQgPSAwOwogCWlmICh0aW1lcl9kZWxldGUoJmFtcDtpbS0mZ3Q7dGltZXIpKSB7CkBAIC0yNzEsMTAgJiM0MzsyODIsMTMgQEAgc3RhdGljIHZvaWQgaWdtcF9tb2RfdGltZXIoc3RydWN0IGlwX21jX2xpc3QgKmltLCBpbnQgbWF4X2RlbGF5KQogCQkJc3Bpbl91bmxvY2tfYmgoJmFtcDtpbS0mZ3Q7bG9jayk7CiAJCQlyZXR1cm47CiAJCX0KLQkJcmVmY291bnRfZGVjKCZhbXA7aW0tJmd0O3JlZmNudCk7CiYjNDM7CQlwdXQgPSB0cnVlOwogCX0KIAlpZ21wX3N0YXJ0X3RpbWVyKGltLCBtYXhfZGVsYXkpOwogCXNwaW5fdW5sb2NrX2JoKCZhbXA7aW0tJmd0O2xvY2spOwomIzQzOwomIzQzOwlpZiAocHV0KQomIzQzOwkJaXBfbWFfcHV0KGltKTsKIH0KIAogCmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9tY2FzdC5jIGIvbmV0L2lwdjYvbWNhc3QuYwppbmRleCAwNGI4MTFiM2JlOTc4ZS4uNGQyYjkzNzdiYTJkZTUgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L21jYXN0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvbWNhc3QuYwpAQCAtMTA4Myw4ICYjNDM7MTA4MywxMCBAQCBzdGF0aWMgdm9pZCBtbGRfZ3Ffc3RhcnRfd29yayhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KQogCW1jX2Fzc2VydF9sb2NrZWQoaWRldik7CiAKIAlpZGV2LSZndDttY19ncV9ydW5uaW5nID0gMTsKLQlpZiAoIW1vZF9kZWxheWVkX3dvcmsobWxkX3dxLCAmYW1wO2lkZXYtJmd0O21jX2dxX3dvcmssIHR2ICYjNDM7IDIpKQotCQlpbjZfZGV2X2hvbGQoaWRldik7CiYjNDM7CWlmIChpbjZfZGV2X2hvbGRfc2FmZShpZGV2KSkgewomIzQzOwkJaWYgKG1vZF9kZWxheWVkX3dvcmsobWxkX3dxLCAmYW1wO2lkZXYtJmd0O21jX2dxX3dvcmssIHR2ICYjNDM7IDIpKQomIzQzOwkJCWluNl9kZXZfcHV0KGlkZXYpOwomIzQzOwl9CiB9CiAKIHN0YXRpYyB2b2lkIG1sZF9ncV9zdG9wX3dvcmsoc3RydWN0IGluZXQ2X2RldiAqaWRldikKQEAgLTExMDIsOCAmIzQzOzExMDQsMTAgQEAgc3RhdGljIHZvaWQgbWxkX2lmY19zdGFydF93b3JrKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYsIHVuc2lnbmVkIGxvbmcgZGVsYXkpCiAKIAltY19hc3NlcnRfbG9ja2VkKGlkZXYpOwogCi0JaWYgKCFtb2RfZGVsYXllZF93b3JrKG1sZF93cSwgJmFtcDtpZGV2LSZndDttY19pZmNfd29yaywgdHYgJiM0MzsgMikpCi0JCWluNl9kZXZfaG9sZChpZGV2KTsKJiM0MzsJaWYgKGluNl9kZXZfaG9sZF9zYWZlKGlkZXYpKSB7CiYjNDM7CQlpZiAobW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsICZhbXA7aWRldi0mZ3Q7bWNfaWZjX3dvcmssIHR2ICYjNDM7IDIpKQomIzQzOwkJCWluNl9kZXZfcHV0KGlkZXYpOwomIzQzOwl9CiB9CiAKIHN0YXRpYyB2b2lkIG1sZF9pZmNfc3RvcF93b3JrKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpCkBAIC0xMTIxLDggJiM0MzsxMTI1LDEwIEBAIHN0YXRpYyB2b2lkIG1sZF9kYWRfc3RhcnRfd29yayhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2LCB1bnNpZ25lZCBsb25nIGRlbGF5KQogCiAJbWNfYXNzZXJ0X2xvY2tlZChpZGV2KTsKIAotCWlmICghbW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsICZhbXA7aWRldi0mZ3Q7bWNfZGFkX3dvcmssIHR2ICYjNDM7IDIpKQotCQlpbjZfZGV2X2hvbGQoaWRldik7CiYjNDM7CWlmIChpbjZfZGV2X2hvbGRfc2FmZShpZGV2KSkgewomIzQzOwkJaWYgKG1vZF9kZWxheWVkX3dvcmsobWxkX3dxLCAmYW1wO2lkZXYtJmd0O21jX2RhZF93b3JrLCB0diAmIzQzOyAyKSkKJiM0MzsJCQlpbjZfZGV2X3B1dChpZGV2KTsKJiM0MzsJfQogfQogCiBzdGF0aWMgdm9pZCBtbGRfZGFkX3N0b3Bfd29yayhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KQpAQCAtMTM5NSwxOCAmIzQzOzE0MDEsMjMgQEAgc3RhdGljIHZvaWQgbWxkX3Byb2Nlc3NfdjIoc3RydWN0IGluZXQ2X2RldiAqaWRldiwgc3RydWN0IG1sZDJfcXVlcnkgKm1sZCwKIHZvaWQgaWdtcDZfZXZlbnRfcXVlcnkoc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2ID0gX19pbjZfZGV2X2dldChza2ItJmd0O2Rldik7CiYjNDM7CWJvb2wgcHV0ID0gZmFsc2U7CiAKIAlpZiAoIWlkZXYgfHwgaWRldi0mZ3Q7ZGVhZCkKIAkJZ290byBvdXQ7CiAKIAlzcGluX2xvY2tfYmgoJmFtcDtpZGV2LSZndDttY19xdWVyeV9sb2NrKTsKLQlpZiAoc2tiX3F1ZXVlX2xlbigmYW1wO2lkZXYtJmd0O21jX3F1ZXJ5X3F1ZXVlKSAmbHQ7IE1MRF9NQVhfU0tCUykgewomIzQzOwlpZiAoc2tiX3F1ZXVlX2xlbigmYW1wO2lkZXYtJmd0O21jX3F1ZXJ5X3F1ZXVlKSAmbHQ7IE1MRF9NQVhfU0tCUyAmYW1wOyZhbXA7CiYjNDM7CSAgICBpbjZfZGV2X2hvbGRfc2FmZShpZGV2KSkgewogCQlfX3NrYl9xdWV1ZV90YWlsKCZhbXA7aWRldi0mZ3Q7bWNfcXVlcnlfcXVldWUsIHNrYik7Ci0JCWlmICghbW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsICZhbXA7aWRldi0mZ3Q7bWNfcXVlcnlfd29yaywgMCkpCi0JCQlpbjZfZGV2X2hvbGQoaWRldik7CiYjNDM7CQlpZiAobW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsICZhbXA7aWRldi0mZ3Q7bWNfcXVlcnlfd29yaywgMCkpCiYjNDM7CQkJcHV0ID0gdHJ1ZTsKIAkJc2tiID0gTlVMTDsKIAl9CiAJc3Bpbl91bmxvY2tfYmgoJmFtcDtpZGV2LSZndDttY19xdWVyeV9sb2NrKTsKJiM0MzsKJiM0MzsJaWYgKHB1dCkKJiM0MzsJCWluNl9kZXZfcHV0KGlkZXYpOwogb3V0OgogCWtmcmVlX3NrYihza2IpOwogfQpAQCAtMTU3MCwxOCAmIzQzOzE1ODEsMjMgQEAgc3RhdGljIHZvaWQgbWxkX3F1ZXJ5X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogdm9pZCBpZ21wNl9ldmVudF9yZXBvcnQoc3RydWN0IHNrX2J1ZmYgKnNrYikKIHsKIAlzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2ID0gX19pbjZfZGV2X2dldChza2ItJmd0O2Rldik7CiYjNDM7CWJvb2wgcHV0ID0gZmFsc2U7CiAKIAlpZiAoIWlkZXYgfHwgaWRldi0mZ3Q7ZGVhZCkKIAkJZ290byBvdXQ7CiAKIAlzcGluX2xvY2tfYmgoJmFtcDtpZGV2LSZndDttY19yZXBvcnRfbG9jayk7Ci0JaWYgKHNrYl9xdWV1ZV9sZW4oJmFtcDtpZGV2LSZndDttY19yZXBvcnRfcXVldWUpICZsdDsgTUxEX01BWF9TS0JTKSB7CiYjNDM7CWlmIChza2JfcXVldWVfbGVuKCZhbXA7aWRldi0mZ3Q7bWNfcmVwb3J0X3F1ZXVlKSAmbHQ7IE1MRF9NQVhfU0tCUyAmYW1wOyZhbXA7CiYjNDM7CSAgICBpbjZfZGV2X2hvbGRfc2FmZShpZGV2KSkgewogCQlfX3NrYl9xdWV1ZV90YWlsKCZhbXA7aWRldi0mZ3Q7bWNfcmVwb3J0X3F1ZXVlLCBza2IpOwotCQlpZiAoIW1vZF9kZWxheWVkX3dvcmsobWxkX3dxLCAmYW1wO2lkZXYtJmd0O21jX3JlcG9ydF93b3JrLCAwKSkKLQkJCWluNl9kZXZfaG9sZChpZGV2KTsKJiM0MzsJCWlmIChtb2RfZGVsYXllZF93b3JrKG1sZF93cSwgJmFtcDtpZGV2LSZndDttY19yZXBvcnRfd29yaywgMCkpCiYjNDM7CQkJcHV0ID0gdHJ1ZTsKIAkJc2tiID0gTlVMTDsKIAl9CiAJc3Bpbl91bmxvY2tfYmgoJmFtcDtpZGV2LSZndDttY19yZXBvcnRfbG9jayk7CiYjNDM7CiYjNDM7CWlmIChwdXQpCiYjNDM7CQlpbjZfZGV2X3B1dChpZGV2KTsKIG91dDoKIAlrZnJlZV9za2Ioc2tiKTsKIH0KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMyNAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDMzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBDb3JlIE5ldHdvcmtpbmcgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgdGhlIGhhbmRsaW5nIG9mIElHTVAgKElQdjQgbXVsdGljYXN0KSBhbmQgTUxEIChJUHY2IG11bHRpY2FzdCkgdGltZXJzIGFuZCB3b3JrcXVldWVzLiBUaGUgY29yZSBjaGFuZ2UgaXMgdG8gcmVwbGFjZSBgaW5fZGV2X2hvbGRgIGFuZCBgaW42X2Rldl9ob2xkYCB3aXRoIGBpbl9kZXZfaG9sZF9zYWZlYCBhbmQgYGluNl9kZXZfaG9sZF9zYWZlYCwgbGV2ZXJhZ2luZyBgcmVmY291bnRfaW5jX25vdF96ZXJvYCBpbnN0ZWFkLiBQbHVzLCBpdCYjMzk7cyBkZWZlcnJpbmcgYGlwX21hX3B1dGAgYW5kIGBpbjZfZGV2X3B1dGAgb3V0c2lkZSBvZiBzcGlubG9ja3MgaW4gc29tZSBzY2VuYXJpb3MuIEZ1bmN0aW9uYWxseSwgdGhpcyBpbXBhY3RzIGhvdyB0aGUgbmV0d29ya2luZyBzdGFjayBoYW5kbGVzIHRoZXNlIG11bHRpY2FzdCBwcm90b2NvbHMgYXQgdGhlaXIgY29yZS4KClRoZSBhaW0gaGVyZSBpcyBjbGVhcmx5IHRvIGVsaW1pbmF0ZSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgb3IgcmVmY291bnQgaXNzdWVzIHRoYXQgY291bGQgYXJpc2Ugd2hlbiB0aW1lcnMgb3Igd29ya3F1ZXVlcyBhcmUgYWN0aXZlIGFuZCBzY2hlZHVsZWQgZHVyaW5nIGEgZGV2aWNlJiMzOTtzIGRlc3RydWN0aW9uLiBUaGlzIGlzIHNtYXJ0OyByZXNvdXJjZSBtYW5hZ2VtZW50IGluIHRoaXMgYXJlYSBjYW4gYmUgdHJpY2t5LgoKTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBjb25maWdzIHJlbGF0ZWQgdG8gSUdNUCBhbmQgTUxEIGFyZSBpbiBwbGFjZS4gSUdNUCBpcyBuYXR1cmFsbHkgdGllZCB0byBJUHY0IG11bHRpY2FzdCwgd2hpY2ggbWVhbnMgSSBzaG91bGQgYmUgbG9va2luZyBhdCBgQ09ORklHX0lQX01VTFRJQ0FTVGAuIEZvciBNTEQsIHdoaWNoIGlzIElQdjYmIzM5O3MgbXVsdGljYXN0IGNvdW50ZXJwYXJ0LCBJJiMzOTttIGV4cGVjdGluZyBgQ09ORklHX0lQVjZgIHRvIGJlIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24uCgpMZXQmIzM5O3MgZmluZCB0aGUgcmVsZXZhbnQgcGllY2VzIG9mIGNvZGUuIEkgbmVlZCB0byBzZWFyY2ggZm9yIGFsbCBpbnN0YW5jZXMgb2YgYGlnbXBfc3RvcF90aW1lcmAsIGBpZ21wX2dxX3N0YXJ0X3RpbWVyYCwgYGlnbXBfaWZjX3N0YXJ0X3RpbWVyYCwgYGlnbXBfbW9kX3RpbWVyYCwgYG1sZF9ncV9zdGFydF93b3JrYCwgYG1sZF9pZmNfc3RhcnRfd29ya2AsIGBtbGRfZGFkX3N0YXJ0X3dvcmtgLCBgaWdtcDZfZXZlbnRfcXVlcnlgLCBhbmQgYGlnbXA2X2V2ZW50X3JlcG9ydGAuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSB0aW1lciBhbmQgd29ya3F1ZXVlIG1lY2hhbmljcyB0aGlzIHBhdGNoIHRvdWNoZXMuCgpGaW5hbGx5LCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhvc2UgY29uZmlndXJhdGlvbnMgYXJlIGNvcnJlY3RseSBzZXQuIFRoaXMgd2lsbCBiZSB0aGUga2V5IHRvIGFzc2Vzc2luZyBpZiB0aGUgY2hhbmdlcyBhcmUgY29ycmVjdGx5IGltcGxlbWVudGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lnbXBfc3RvcF90aW1lciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9pZ21wLmM9MjAxPXN0YXRpYyB2b2lkIGlwX3NmX2xpc3RfY2xlYXJfYWxsKHN0cnVjdCBpcF9zZl9saXN0ICpwc2YpXG4tLVxubmV0L2lwdjQvaWdtcC5jLTIxNy1cbm5ldC9pcHY0L2lnbXAuYzoyMTg6c3RhdGljIHZvaWQgaWdtcF9zdG9wX3RpbWVyKHN0cnVjdCBpcF9tY19saXN0ICppbSlcbm5ldC9pcHY0L2lnbXAuYy0yMTkte1xuLS1cbm5ldC9pcHY0L2lnbXAuYz05NDk9c3RhdGljIGJvb2wgaWdtcF9oZWFyZF9yZXBvcnQoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgZ3JvdXApXG4tLVxubmV0L2lwdjQvaWdtcC5jLTk2NC1cdFx0aWYgKGltLVx1MDAzZW11bHRpYWRkciA9PSBncm91cCkge1xubmV0L2lwdjQvaWdtcC5jOjk2NTpcdFx0XHRpZ21wX3N0b3BfdGltZXIoaW0pO1xubmV0L2lwdjQvaWdtcC5jLTk2Ni1cdFx0XHRicmVhaztcbi0tXG5uZXQvaXB2NC9pZ21wLmM9MTMyMj1zdGF0aWMgdm9pZCBfX2lnbXBfZ3JvdXBfZHJvcHBlZChzdHJ1Y3QgaXBfbWNfbGlzdCAqaW0sIGdmcF90IGdmcClcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTM0Mi1cdHJlcG9ydGVyID0gUkVBRF9PTkNFKGltLVx1MDAzZXJlcG9ydGVyKTtcbm5ldC9pcHY0L2lnbXAuYzoxMzQzOlx0aWdtcF9zdG9wX3RpbWVyKGltKTtcbm5ldC9pcHY0L2lnbXAuYy0xMzQ0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjQzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0NTQKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjoKCioqS2NvbmZpZyBhbmQgSVBfTVVMVElDQVNUOiBBIFF1aWNrIENoZWNrKioKCk9rYXksIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgYElQX01VTFRJQ0FTVGAgaXMgZW5hYmxlZCBpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIEJlZm9yZSBJIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgY29kZSBpdHNlbGYsIGxldCYjMzk7cyB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgS2NvbmZpZyBmaWxlcy4gVGhhdCYjMzk7cyB0aGUgZmlyc3QgYW5kIG1vc3QgbG9naWNhbCBwbGFjZSB0byB2ZXJpZnkgaWYgdGhpcyBmZWF0dXJlIGlzIGV2ZW4gKmF2YWlsYWJsZSogdG8gbWUgaW4gdGhpcyBidWlsZC4gSSYjMzk7ZCB0eXBpY2FsbHkgc3RhcnQgd2l0aCB0aGUgbW9zdCByZWxldmFudCBLY29uZmlnIGZpbGUgZm9yIG5ldHdvcmsgY29uZmlndXJhdGlvbnMgYW5kIG11bHRpY2FzdCBzdXBwb3J0LCBidXQgSSYjMzk7bGwgbmVlZCB0byBrbm93IHRoZSBzcGVjaWZpYyBwbGF0Zm9ybSB0byBiZSBleGFjdC4gVGhpcyBpcyBhIHByZWxpbWluYXJ5IGNoZWNrIHRvIHJ1bGUgb3V0IGFueSBpbW1lZGlhdGUgaXNzdWVzIG9yIGNvbmZpcm0gaXQmIzM5O3MgYmVlbiBleHBsaWNpdGx5IGRpc2FibGVkLiBJZiBpdCYjMzk7cyBub3QgcHJlc2VudCBvciBkaXNhYmxlZCwgdGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgZWZmb3J0cyBmaXJzdCB0byBmaWd1cmUgb3V0IHRoZSByZWFzb24gYmVoaW5kIHRoYXQgY2hvaWNlLiBJZiBpdCAqaXMqIGVuYWJsZWQsIHRoZW4gSSBjYW4gbW92ZSBvbiB0byB0aGUgYWN0dWFsIGNvZGUuIFRoaXMgaW5pdGlhbCBzdGVwIGNvdWxkIHNhdmUgbWUgYSBsb3Qgb2YgdGltZSBkb3duIHRoZSByb2FkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9NVUxUSUNBU1QmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZy00LSNcbm5ldC9pcHY0L0tjb25maWc6NTpjb25maWcgSVBfTVVMVElDQVNUXG5uZXQvaXB2NC9LY29uZmlnLTYtXHRib29sIFwmIzM0O0lQOiBtdWx0aWNhc3RpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxODo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzYwCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ2hlY2tpbmcgS2NvbmZpZyBmb3IgSVB2NiBTdXBwb3J0KioKClJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSB0aGUgSVB2NiBjb25maWd1cmF0aW9uIHdpdGhpbiB0aGUgY3VycmVudCBLY29uZmlnIHNldHVwLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlcy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhlIG9idmlvdXMgZmxhZ3MgYW5kIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIElQdjYg4oCTIGBDT05GSUdfSVBWNmAsIGBDT05GSUdfSVBWNl9TTkRCVUZgLCBwZXJoYXBzIGV2ZW4gdGhlIG1vcmUgZ3JhbnVsYXIgb3B0aW9ucyBmb3Igc3BlY2lmaWMgSVB2NiBleHRlbnNpb25zIG9yIHByb3RvY29sIGltcGxlbWVudGF0aW9ucy4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGRlZmF1bHQgc3RhdGUgb2YgdGhlc2Ugb3B0aW9ucyBhbmQgc2VlIGlmIHRoZXkmIzM5O3JlIHByb3Blcmx5IGd1YXJkZWQgYnkgYW55IGZlYXR1cmUtc3BlY2lmaWMgc2VsZWN0aW9ucyBvciBhcmNoaXRlY3R1cmUgY29uc3RyYWludHMuIElzIHRoZXJlIGFueXRoaW5nIHVudXN1YWwgb3Igbm9uLW9idmlvdXMgdGhhdCBJIG5lZWQgdG8gYmUgb24gdGhlIGxvb2tvdXQgZm9yPyBJJiMzOTtsbCBhbHNvIGdsYW5jZSBhdCBkZXBlbmRlbmNpZXMgdG8gZW5zdXJlIHRoZSBuZWNlc3NhcnkgdW5kZXJseWluZyBuZXR3b3JraW5nIGNvbXBvbmVudHMgYXJlIGluIHBsYWNlLiBHb3QgdG8gbWFrZSBzdXJlIGV2ZXJ5dGhpbmcmIzM5O3Mgd2lyZWQgdXAgY29ycmVjdGx5IGJlZm9yZSBJIGNhbiBtb3ZlIGZvcndhcmQuIFRoaXMgaW5pdGlhbCBjaGVjayB3aWxsIGdpdmUgbWUgdGhlIGluZm9ybWF0aW9uIHRvIG1ha2UgYSBxdWljayBkZXRlcm1pbmF0aW9uIGlmIGl0JiMzOTtzIHRoZXJlLCBpZiBpdCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIG9yIGlmIEkgbmVlZCB0byBhZGRyZXNzIGFueSBhcHBhcmVudCBtaXNzaW5nIGNvbmZpZ3VyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjQzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUFY2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWctNS1cbm5ldC9pcHY2L0tjb25maWc6NjptZW51Y29uZmlnIElQVjZcbm5ldC9pcHY2L0tjb25maWctNy1cdGJvb2wgXCYjMzQ7VGhlIElQdjYgcHJvdG9jb2xcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTE5PWlmIElQVjZcbm5ldC9pcHY2L0tjb25maWctMjAtXG5uZXQvaXB2Ni9LY29uZmlnOjIxOmNvbmZpZyBJUFY2X1JPVVRFUl9QUkVGXG5uZXQvaXB2Ni9LY29uZmlnLTIyLVx0Ym9vbCBcJiMzNDtJUHY2OiBSb3V0ZXIgUHJlZmVyZW5jZSAoUkZDIDQxOTEpIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTMwLVxubmV0L2lwdjYvS2NvbmZpZzozMTpjb25maWcgSVBWNl9ST1VURV9JTkZPXG5uZXQvaXB2Ni9LY29uZmlnLTMyLVx0Ym9vbCBcJiMzNDtJUHY2OiBSb3V0ZSBJbmZvcm1hdGlvbiAoUkZDIDQxOTEpIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTM4LVxubmV0L2lwdjYvS2NvbmZpZzozOTpjb25maWcgSVBWNl9PUFRJTUlTVElDX0RBRFxubmV0L2lwdjYvS2NvbmZpZy00MC1cdGJvb2wgXCYjMzQ7SVB2NjogRW5hYmxlIFJGQyA0NDI5IE9wdGltaXN0aWMgREFEXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZz0xMDI9Y29uZmlnIElORVQ2X0lQQ09NUFxuLS1cbm5ldC9pcHY2L0tjb25maWctMTExLVxubmV0L2lwdjYvS2NvbmZpZzoxMTI6Y29uZmlnIElQVjZfTUlQNlxubmV0L2lwdjYvS2NvbmZpZy0xMTMtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBNb2JpbGl0eVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMTE5LVxubmV0L2lwdjYvS2NvbmZpZzoxMjA6Y29uZmlnIElQVjZfSUxBXG5uZXQvaXB2Ni9LY29uZmlnLTEyMS1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IElkZW50aWZpZXIgTG9jYXRvciBBZGRyZXNzaW5nIChJTEEpXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZz0xNDY9Y29uZmlnIElORVQ2X1RVTk5FTFxuLS1cbm5ldC9pcHY2L0tjb25maWctMTQ5LVxubmV0L2lwdjYvS2NvbmZpZzoxNTA6Y29uZmlnIElQVjZfVlRJXG5uZXQvaXB2Ni9LY29uZmlnLTE1MS1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgKHNlY3VyZSkgSVB2NjogdHVubmVsaW5nXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xNjEtXG5uZXQvaXB2Ni9LY29uZmlnOjE2Mjpjb25maWcgSVBWNl9TSVRcbm5ldC9pcHY2L0tjb25maWctMTYzLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogSVB2Ni1pbi1JUHY0IHR1bm5lbCAoU0lUIGRyaXZlcilcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE3Ni1cbm5ldC9pcHY2L0tjb25maWc6MTc3OmNvbmZpZyBJUFY2X1NJVF82UkRcbm5ldC9pcHY2L0tjb25maWctMTc4LVx0Ym9vbCBcJiMzNDtJUHY2OiBJUHY2IFJhcGlkIERlcGxveW1lbnQgKDZSRClcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE5NS1cbm5ldC9pcHY2L0tjb25maWc6MTk2OmNvbmZpZyBJUFY2X05ESVNDX05PREVUWVBFXG5uZXQvaXB2Ni9LY29uZmlnLTE5Ny1cdGJvb2xcbm5ldC9pcHY2L0tjb25maWctMTk4LVxubmV0L2lwdjYvS2NvbmZpZzoxOTk6Y29uZmlnIElQVjZfVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTIwMC1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IElQLWluLUlQdjYgdHVubmVsIChSRkMyNDczKVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjA5LVxubmV0L2lwdjYvS2NvbmZpZzoyMTA6Y29uZmlnIElQVjZfR1JFXG5uZXQvaXB2Ni9LY29uZmlnLTIxMS1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IEdSRSB0dW5uZWxcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTIyNy1cbm5ldC9pcHY2L0tjb25maWc6MjI4OmNvbmZpZyBJUFY2X0ZPVVxubmV0L2lwdjYvS2NvbmZpZy0yMjktXHR0cmlzdGF0ZVxuLS1cbm5ldC9pcHY2L0tjb25maWctMjMxLVxubmV0L2lwdjYvS2NvbmZpZzoyMzI6Y29uZmlnIElQVjZfRk9VX1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0yMzMtXHR0cmlzdGF0ZVxuLS1cbm5ldC9pcHY2L0tjb25maWctMjM2LVxubmV0L2lwdjYvS2NvbmZpZzoyMzc6Y29uZmlnIElQVjZfTVVMVElQTEVfVEFCTEVTXG5uZXQvaXB2Ni9LY29uZmlnLTIzOC1cdGJvb2wgXCYjMzQ7SVB2NjogTXVsdGlwbGUgUm91dGluZyBUYWJsZXNcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI0Mi1cbm5ldC9pcHY2L0tjb25maWc6MjQzOmNvbmZpZyBJUFY2X1NVQlRSRUVTXG5uZXQvaXB2Ni9LY29uZmlnLTI0NC1cdGJvb2wgXCYjMzQ7SVB2Njogc291cmNlIGFkZHJlc3MgYmFzZWQgcm91dGluZ1wmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjU2LVxubmV0L2lwdjYvS2NvbmZpZzoyNTc6Y29uZmlnIElQVjZfTVJPVVRFXG5uZXQvaXB2Ni9LY29uZmlnLTI1OC1cdGJvb2wgXCYjMzQ7SVB2NjogbXVsdGljYXN0IHJvdXRpbmdcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI2NC1cbm5ldC9pcHY2L0tjb25maWc6MjY1OmNvbmZpZyBJUFY2X01ST1VURV9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY2L0tjb25maWctMjY2LVx0Ym9vbCBcJiMzNDtJUHY2OiBtdWx0aWNhc3QgcG9saWN5IHJvdXRpbmdcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI3OC1cbm5ldC9pcHY2L0tjb25maWc6Mjc5OmNvbmZpZyBJUFY2X1BJTVNNX1YyXG5uZXQvaXB2Ni9LY29uZmlnLTI4MC1cdGJvb2wgXCYjMzQ7SVB2NjogUElNLVNNIHZlcnNpb24gMiBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yODUtXG5uZXQvaXB2Ni9LY29uZmlnOjI4Njpjb25maWcgSVBWNl9TRUc2X0xXVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTI4Ny1cdGJvb2wgXCYjMzQ7SVB2NjogU2VnbWVudCBSb3V0aW5nIEhlYWRlciBlbmNhcHN1bGF0aW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI5OS1cbm5ldC9pcHY2L0tjb25maWc6MzAwOmNvbmZpZyBJUFY2X1NFRzZfSE1BQ1xubmV0L2lwdjYvS2NvbmZpZy0zMDEtXHRib29sIFwmIzM0O0lQdjY6IFNlZ21lbnQgUm91dGluZyBITUFDIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTMxMS1cbm5ldC9pcHY2L0tjb25maWc6MzEyOmNvbmZpZyBJUFY2X1NFRzZfQlBGXG5uZXQvaXB2Ni9LY29uZmlnLTMxMy1cdGRlZl9ib29sIHlcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTMxNi1cbm5ldC9pcHY2L0tjb25maWc6MzE3OmNvbmZpZyBJUFY2X1JQTF9MV1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0zMTgtXHRib29sIFwmIzM0O0lQdjY6IFJQTCBTb3VyY2UgUm91dGluZyBIZWFkZXIgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMzI3LVxubmV0L2lwdjYvS2NvbmZpZzozMjg6Y29uZmlnIElQVjZfSU9BTTZfTFdUVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMzI5LVx0Ym9vbCBcJiMzNDtJUHY2OiBJT0FNIFByZS1hbGxvY2F0ZWQgVHJhY2UgaW5zZXJ0aW9uIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxODo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTY5CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMjQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIHRoZSBQYXRjaCBvbiBJR01QIGFuZCBNTEQgVGltZXJzIGFuZCBXb3JrcXVldWVzKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgZGlnZ2luZyBpbnRvIHRoZSB0aW1pbmcgbWVjaGFuaXNtcyBmb3IgSUdNUCBhbmQgTUxELCBzcGVjaWZpY2FsbHkgbW9kaWZ5aW5nIGBpZ21wX3N0b3BfdGltZXJgLCBgaWdtcF9ncV9zdGFydF90aW1lcmAsIGBpZ21wX2lmY19zdGFydF90aW1lcmAsIGBpZ21wX21vZF90aW1lcmAgaW4gYG5ldC9pcHY0L2lnbXAuY2AgYW5kIGEgYnVuY2ggb2Ygd29ya3F1ZXVlcyByZWxhdGVkIHRvIE1MRCBpbiBgbmV0L2lwdjYvbWNhc3QuY2A6IGBtbGRfZ3Ffc3RhcnRfd29ya2AsIGBtbGRfZ3Ffc3RvcF93b3JrYCwgYG1sZF9pZmNfc3RhcnRfd29ya2AsIGBtbGRfaWZjX3N0b3Bfd29ya2AsIGBtbGRfZGFkX3N0YXJ0X3dvcmtgLCBgbWxkX2RhZF9zdG9wX3dvcmtgLCBhbG9uZyB3aXRoIGBpZ21wNl9ldmVudF9xdWVyeWAgYW5kIGBpZ21wNl9ldmVudF9yZXBvcnRgLiBJbnRlcmVzdGluZy4gSXQmIzM5O3MgdG91Y2hpbmcgYm90aCBJUHY0IChJR01QKSBhbmQgSVB2NiAoTUxEKSBtdWx0aWNhc3QsIHNvIHdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aXRoIGFueSBwb3RlbnRpYWwgY3Jvc3MtcHJvdG9jb2wgaW50ZXJhY3Rpb25zLgoKR2l2ZW4gdGhhdCBNTEQgaXMgcGFydCBvZiBJUHY2IG11bHRpY2FzdCwgaXQmIzM5O3Mgd29ydGh3aGlsZSB0byBzZWUgaWYgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHBlcnRhaW4gdG8gTUxEIGl0c2VsZi4gSSBzaG91bGQgY2hlY2sgaWYgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyBjb25maWcga25vYiBmb3IgSVB2NiBtdWx0aWNhc3QgaW4gZ2VuZXJhbC4gSSBzZWUgYElQVjZfTVJPVVRFYCBidXQgdGhhdCYjMzk7cyBmb3IgbXVsdGljYXN0ICpyb3V0aW5nKiByYXRoZXIgdGhhbiB0aGUgTUxEIHByb3RvY29sIGl0c2VsZi4gTUxEIHNob3VsZCBiZSBlbmFibGVkIGFzIHBhcnQgb2YgYSBzdGFuZGFyZCBJUHY2IHN0YWNrLiBUbyBiZSBjb21wbGV0ZWx5IHN1cmUsIEkmIzM5O2xsIGRvdWJsZS1jaGVjayB0aGUgYG5ldC9pcHY2L21jYXN0LmNgIGZpbGUgYW5kIGl0cyBNYWtlZmlsZSB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBidWlsZC10aW1lIG9yIGNvbXBpbGUtdGltZSBkZXBlbmRlbmNpZXMgb3Igb3B0aW9ucyB0aGF0IGNvdWxkIGluZmx1ZW5jZSB0aGlzIHBhdGNoJiMzOTtzIGJlaGF2aW9yLiBJIG5lZWQgdG8gYmUgY2VydGFpbiBhYm91dCB0aGUgZGVwZW5kZW5jaWVzIGJlZm9yZSBzaWduaW5nIG9mZiBvbiB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxODo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttY2FzdC5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA4OTggbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmFyY2gvc2gvZHJpdmVycy9wY2kvTWFrZWZpbGU9MTI9b2JqLSQoQ09ORklHX0NQVV9TVUJUWVBFX1NINzc4NilcdCYjNDM7PSBwY2llLXNoNzc4Ni5vIG9wcy1zaDc3ODYub1xuYXJjaC9zaC9kcml2ZXJzL3BjaS9NYWtlZmlsZS0xMy1cbmFyY2gvc2gvZHJpdmVycy9wY2kvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX1NIX0RSRUFNQ0FTVClcdFx0JiM0Mzs9IG9wcy1kcmVhbWNhc3QubyBmaXh1cHMtZHJlYW1jYXN0Lm8gXFxcbmFyY2gvc2gvZHJpdmVycy9wY2kvTWFrZWZpbGU6MTU6XHRcdFx0XHRcdCAgIHBjaS1kcmVhbWNhc3Qub1xuYXJjaC9zaC9kcml2ZXJzL3BjaS9NYWtlZmlsZS0xNi1vYmotJChDT05GSUdfU0hfU0VDVVJFRURHRTU0MTApXHRcdCYjNDM7PSBmaXh1cHMtc25hcGdlYXIub1xuLS1cbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYz01MT1zdGF0aWMgaW50IGNuX2ZpbHRlcihzdHJ1Y3Qgc29jayAqZHNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB2b2lkICpkYXRhKVxuLS1cbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYy01My1cdF9fdTMyIHdoYXQsIGV4aXRfY29kZSwgKnB0cjtcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYzo1NDpcdGVudW0gcHJvY19jbl9tY2FzdF9vcCBtY19vcDtcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYy01NS1cdHVpbnRwdHJfdCB2YWw7XG4tLVxuZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jLTYzLVx0dmFsID0gKChzdHJ1Y3QgcHJvY19pbnB1dCAqKShkc2stXHUwMDNlc2tfdXNlcl9kYXRhKSktXHUwMDNlZXZlbnRfdHlwZTtcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYzo2NDpcdG1jX29wID0gKChzdHJ1Y3QgcHJvY19pbnB1dCAqKShkc2stXHUwMDNlc2tfdXNlcl9kYXRhKSktXHUwMDNlbWNhc3Rfb3A7XG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmMtNjUtXG4tLVxuZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jPTM5NT1zdGF0aWMgdm9pZCBjbl9wcm9jX21jYXN0X2N0bChzdHJ1Y3QgY25fbXNnICptc2csXG4tLVxuZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jLTM5Ny17XG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmM6Mzk4Olx0ZW51bSBwcm9jX2NuX21jYXN0X29wIG1jX29wID0gMCwgcHJldl9tY19vcCA9IDA7XG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmMtMzk5LVx0c3RydWN0IHByb2NfaW5wdXQgKnBpbnB1dCA9IE5VTEw7XG4tLVxuZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jLTQxNC1cdFx0cGlucHV0ID0gKHN0cnVjdCBwcm9jX2lucHV0ICopbXNnLVx1MDAzZWRhdGE7XG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmM6NDE1Olx0XHRtY19vcCA9IHBpbnB1dC1cdTAwM2VtY2FzdF9vcDtcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYy00MTYtXHRcdGV2X3R5cGUgPSBwaW5wdXQtXHUwMDNlZXZlbnRfdHlwZTtcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYy00MTctXHR9IGVsc2UgaWYgKG1zZy1cdTAwM2VsZW4gPT0gc2l6ZW9mKG1jX29wKSkge1xuZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jOjQxODpcdFx0bWNfb3AgPSAqKChlbnVtIHByb2NfY25fbWNhc3Rfb3AgKiltc2ctXHUwMDNlZGF0YSk7XG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmMtNDE5LVx0XHRldl90eXBlID0gUFJPQ19FVkVOVF9BTEw7XG4tLVxuZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jLTQzOS1cdFx0XHRwcmV2X21jX29wID1cbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYzo0NDA6XHRcdFx0KChzdHJ1Y3QgcHJvY19pbnB1dCAqKShzay1cdTAwM2Vza191c2VyX2RhdGEpKS1cdTAwM2VtY2FzdF9vcDtcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYy00NDEtXHRcdH1cbi0tXG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmMtNDQzLVx0XHRcdGV2X3R5cGU7XG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmM6NDQ0Olx0XHQoKHN0cnVjdCBwcm9jX2lucHV0ICopKHNrLVx1MDAzZXNrX3VzZXJfZGF0YSkpLVx1MDAzZW1jYXN0X29wID0gbWNfb3A7XG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmMtNDQ1LVx0fVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvTWFrZWZpbGU9OT1vYmotJChDT05GSUdfSU5GSU5JQkFORF9SRE1BVlQpICYjNDM7PSByZG1hdnQub1xuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9NYWtlZmlsZS0xMC1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvTWFrZWZpbGU6MTE6cmRtYXZ0LXkgOj0gdnQubyBhaC5vIGNxLm8gbWFkLm8gbWNhc3QubyBtbWFwLm8gbXIubyBwZC5vIHFwLm8gXFxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvTWFrZWZpbGUtMTItXHRyYy5vIHNycS5vIHRyYWNlLm9cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL01ha2VmaWxlPTQ9cmRtYV9yeGUteSA6PSBcXFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvTWFrZWZpbGUtMjEtXHRyeGVfaWNyYy5vIFxcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL01ha2VmaWxlOjIyOlx0cnhlX21jYXN0Lm8gXFxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvTWFrZWZpbGUtMjMtXHRyeGVfdGFzay5vIFxcXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnguaD0xMzQ1PXN0cnVjdCBibngyeCB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnguaC0xNzkyLVx0LyogTUNBU1Qgb2JqZWN0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeC5oOjE3OTM6XHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqXHRcdFx0bWNhc3Rfb2JqO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnguaC0xNzk0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jPTIxNTc9dm9pZCBibngyeF9zcXVlZXplX29iamVjdHMoc3RydWN0IGJueDJ4ICpicClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy0yMTg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6MjE4NjpcdC8qKioqKioqKioqKioqKioqKiBOb3cgY2xlYW4gbWNhc3Qgb2JqZWN0ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6MjE4NzpcdHJwYXJhbS5tY2FzdF9vYmogPSBcdTAwMjZicC1cdTAwM2VtY2FzdF9vYmo7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy0yMTg4LVx0X19zZXRfYml0KFJBTVJPRF9EUlZfQ0xSX09OTFksIFx1MDAyNnJwYXJhbS5yYW1yb2RfZmxhZ3MpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5oPTExMjI9c3RhdGljIGlubGluZSB2b2lkIGJueDJ4X2luaXRfYnBfb2JqcyhzdHJ1Y3QgYm54MnggKmJwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5oLTExMjctXHQvKiBtdWx0aWNhc3QgY29uZmlndXJhdGlvbiBjb250cm9sbGluZyBvYmplY3QgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5oOjExMjg6XHRibngyeF9pbml0X21jYXN0X29iaihicCwgXHUwMDI2YnAtXHUwMDNlbWNhc3Rfb2JqLCBicC1cdTAwM2VmcC1cdTAwM2VjbF9pZCwgYnAtXHUwMDNlZnAtXHUwMDNlY2lkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmgtMTEyOS1cdFx0XHQgICAgIEJQX0ZVTkMoYnApLCBCUF9GVU5DKGJwKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM9NTI4MD1zdGF0aWMgdm9pZCBibngyeF9oYW5kbGVfbWNhc3RfZXFlKHN0cnVjdCBibngyeCAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTUyODYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM6NTI4NzpcdHJwYXJhbS5tY2FzdF9vYmogPSBcdTAwMjZicC1cdTAwM2VtY2FzdF9vYmo7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtNTI4OC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtNTI5MS1cdC8qIENsZWFyIHBlbmRpbmcgc3RhdGUgZm9yIHRoZSBsYXN0IGNvbW1hbmQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYzo1MjkyOlx0YnAtXHUwMDNlbWNhc3Rfb2JqLnJhdy5jbGVhcl9wZW5kaW5nKFx1MDAyNmJwLVx1MDAzZW1jYXN0X29iai5yYXcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTUyOTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtNTI5NC1cdC8qIElmIHRoZXJlIGFyZSBwZW5kaW5nIG1jYXN0IGNvbW1hbmRzIC0gc2VuZCB0aGVtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM6NTI5NTpcdGlmIChicC1cdTAwM2VtY2FzdF9vYmouY2hlY2tfcGVuZGluZyhcdTAwMjZicC1cdTAwM2VtY2FzdF9vYmopKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtNTI5Ni1cdFx0cmMgPSBibngyeF9jb25maWdfbWNhc3QoYnAsIFx1MDAyNnJwYXJhbSwgQk5YMlhfTUNBU1RfQ01EX0NPTlQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz05MzM3PXZvaWQgYm54MnhfY2hpcF9jbGVhbnVwKHN0cnVjdCBibngyeCAqYnAsIGludCB1bmxvYWRfbW9kZSwgYm9vbCBrZWVwX2xpbmspXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTkzOTktXHQvKiBDbGVhbnVwIG11bHRpY2FzdCBjb25maWd1cmF0aW9uICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM6OTQwMDpcdHJwYXJhbS5tY2FzdF9vYmogPSBcdTAwMjZicC1cdTAwM2VtY2FzdF9vYmo7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtOTQwMS1cdHJjID0gYm54MnhfY29uZmlnX21jYXN0KGJwLCBcdTAwMjZycGFyYW0sIEJOWDJYX01DQVNUX0NNRF9ERUwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz0xMjYxOT1zdGF0aWMgaW50IGJueDJ4X3NldF9tY19saXN0X2UxeChzdHJ1Y3QgYm54MnggKmJwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMjYyNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYzoxMjYyNjpcdHJwYXJhbS5tY2FzdF9vYmogPSBcdTAwMjZicC1cdTAwM2VtY2FzdF9vYmo7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTI2MjctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jPTEyNjU0PXN0YXRpYyBpbnQgYm54Mnhfc2V0X21jX2xpc3Qoc3RydWN0IGJueDJ4ICpicClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTI2NjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM6MTI2NjU6XHRycGFyYW0ubWNhc3Rfb2JqID0gXHUwMDI2YnAtXHUwMDNlbWNhc3Rfb2JqO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEyNjY2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MjY0OD1zdGF0aWMgaW50IGJueDJ4X21jYXN0X3dhaXQoc3RydWN0IGJueDJ4ICpicCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MjY0OTpcdFx0XHQgICAgc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMjY1MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0yNjcxPXN0YXRpYyBpbnQgYm54MnhfbWNhc3RfZW5xdWV1ZV9jbWQoc3RydWN0IGJueDJ4ICpicCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MjY3MjpcdFx0XHRcdCAgIHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTI2NzMtXHRcdFx0XHQgICBzdHJ1Y3QgYm54MnhfbWNhc3RfcmFtcm9kX3BhcmFtcyAqcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTI3NzYtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjI3Nzc6c3RhdGljIGlubGluZSBpbnQgYm54MnhfbWNhc3RfZ2V0X25leHRfYmluKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8sIGludCBsYXN0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0yNzc4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTI4MDMtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjI4MDQ6c3RhdGljIGlubGluZSBpbnQgYm54MnhfbWNhc3RfY2xlYXJfZmlyc3RfYmluKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTI4MDUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMjgxMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MjgxNDpzdGF0aWMgaW5saW5lIHU4IGJueDJ4X21jYXN0X2dldF9yeF90eF9mbGFnKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTI4MTUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MjgzMD1zdGF0aWMgdm9pZCBibngyeF9tY2FzdF9zZXRfb25lX3J1bGVfZTIoc3RydWN0IGJueDJ4ICpicCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MjgzMTpcdFx0XHRcdFx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbywgaW50IGlkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMjgzMi1cdFx0XHRcdFx0dW5pb24gYm54MnhfbWNhc3RfY29uZmlnX2RhdGEgKmNmZ19kYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MjkwMz1zdGF0aWMgaW5saW5lIGludCBibngyeF9tY2FzdF9oYW5kbGVfcmVzdG9yZV9jbWRfZTIoXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjI5MDQ6XHRzdHJ1Y3QgYm54MnggKmJwLCBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvICwgaW50IHN0YXJ0X2JpbixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMjkwNS1cdGludCAqcmRhdGFfaWR4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MjkzND1zdGF0aWMgaW5saW5lIHZvaWQgYm54MnhfbWNhc3RfaGRsX3BlbmRpbmdfYWRkX2UyKHN0cnVjdCBibngyeCAqYnAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjI5MzU6XHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLCBzdHJ1Y3QgYm54MnhfcGVuZGluZ19tY2FzdF9jbWQgKmNtZF9wb3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTI5MzYtXHRpbnQgKmxpbmVfaWR4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9Mjk2OT1zdGF0aWMgaW5saW5lIHZvaWQgYm54MnhfbWNhc3RfaGRsX3BlbmRpbmdfZGVsX2UyKHN0cnVjdCBibngyeCAqYnAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjI5NzA6XHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLCBzdHJ1Y3QgYm54MnhfcGVuZGluZ19tY2FzdF9jbWQgKmNtZF9wb3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTI5NzEtXHRpbnQgKmxpbmVfaWR4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9Mjk5OT1zdGF0aWMgaW5saW5lIHZvaWQgYm54MnhfbWNhc3RfaGRsX3BlbmRpbmdfcmVzdG9yZV9lMihzdHJ1Y3QgYm54MnggKmJwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozMDAwOlx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbywgc3RydWN0IGJueDJ4X3BlbmRpbmdfbWNhc3RfY21kICpjbWRfcG9zLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zMDAxLVx0aW50ICpsaW5lX2lkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTMwMTU9Ym54MnhfbWNhc3RfaGRsX3BlbmRpbmdfc2V0X2UyX2NvbnZlcnQoc3RydWN0IGJueDJ4ICpicCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MzAxNjpcdFx0XHRcdCAgICAgICBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zMDE3LVx0XHRcdFx0ICAgICAgIHN0cnVjdCBibngyeF9wZW5kaW5nX21jYXN0X2NtZCAqY21kX3Bvcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTMwODI9Ym54MnhfbWNhc3RfaGRsX3BlbmRpbmdfc2V0X2UyKHN0cnVjdCBibngyeCAqYnAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjMwODM6XHRcdFx0ICAgICAgIHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMwODQtXHRcdFx0ICAgICAgIHN0cnVjdCBibngyeF9wZW5kaW5nX21jYXN0X2NtZCAqY21kX3Bvcyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTMxMTg9c3RhdGljIGlubGluZSBpbnQgYm54MnhfbWNhc3RfaGFuZGxlX3BlbmRpbmdfY21kc19lMihzdHJ1Y3QgYm54MnggKmJwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzEyMi1cdGludCBjbnQgPSAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozMTIzOlx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyA9IHAtXHUwMDNlbWNhc3Rfb2JqO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zMTI0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MzE2Nz1zdGF0aWMgaW5saW5lIHZvaWQgYm54MnhfbWNhc3RfaGRsX2FkZChzdHJ1Y3QgYm54MnggKmJwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozMTY4Olx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbywgc3RydWN0IGJueDJ4X21jYXN0X3JhbXJvZF9wYXJhbXMgKnAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMxNjktXHRpbnQgKmxpbmVfaWR4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MzE4OD1zdGF0aWMgaW5saW5lIHZvaWQgYm54MnhfbWNhc3RfaGRsX2RlbChzdHJ1Y3QgYm54MnggKmJwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozMTg5Olx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbywgc3RydWN0IGJueDJ4X21jYXN0X3JhbXJvZF9wYXJhbXMgKnAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMxOTAtXHRpbnQgKmxpbmVfaWR4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MzIxOD1zdGF0aWMgaW5saW5lIGludCBibngyeF9tY2FzdF9oYW5kbGVfY3VycmVudF9jbWQoc3RydWN0IGJueDJ4ICpicCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMyMjIte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozMjIzOlx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyA9IHAtXHUwMDNlbWNhc3Rfb2JqO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zMjI0LVx0aW50IGNudCA9IHN0YXJ0X2NudDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTMyNTI9c3RhdGljIGludCBibngyeF9tY2FzdF92YWxpZGF0ZV9lMihzdHJ1Y3QgYm54MnggKmJwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzI1NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjMyNTY6XHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvID0gcC1cdTAwM2VtY2FzdF9vYmo7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMyNTctXHRpbnQgcmVnX3N6ID0gby1cdTAwM2VnZXRfcmVnaXN0cnlfc2l6ZShvKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTMzMTA9c3RhdGljIHZvaWQgYm54MnhfbWNhc3RfcmV2ZXJ0X2UyKHN0cnVjdCBibngyeCAqYnAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zMzE0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MzMxNTpcdHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8gPSBwLVx1MDAzZW1jYXN0X29iajtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzMxNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTMzMzE9c3RhdGljIGlubGluZSB2b2lkIGJueDJ4X21jYXN0X3NldF9yZGF0YV9oZHJfZTIoc3RydWN0IGJueDJ4ICpicCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMzMzQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozMzM1Olx0c3RydWN0IGJueDJ4X3Jhd19vYmogKnIgPSBcdTAwMjZwLVx1MDAzZW1jYXN0X29iai1cdTAwM2VyYXc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMzMzYtXHRzdHJ1Y3QgZXRoX211bHRpY2FzdF9ydWxlc19yYW1yb2RfZGF0YSAqZGF0YSA9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zMzU2PXN0YXRpYyBpbmxpbmUgaW50IGJueDJ4X21jYXN0X3JlZnJlc2hfcmVnaXN0cnlfZTIoc3RydWN0IGJueDJ4ICpicCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MzM1NzpcdFx0XHRcdFx0XHQgIHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMzNTgte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MzM3Mz1zdGF0aWMgaW50IGJueDJ4X21jYXN0X3NldHVwX2UyKHN0cnVjdCBibngyeCAqYnAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zMzc2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MzM3NzpcdHN0cnVjdCBibngyeF9yYXdfb2JqICpyYXcgPSBcdTAwMjZwLVx1MDAzZW1jYXN0X29iai1cdTAwM2VyYXc7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjMzNzg6XHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvID0gcC1cdTAwM2VtY2FzdF9vYmo7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMzNzktXHRzdHJ1Y3QgZXRoX211bHRpY2FzdF9ydWxlc19yYW1yb2RfZGF0YSAqZGF0YSA9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zNDg4PXN0YXRpYyBpbmxpbmUgdm9pZCBibngyeF9tY2FzdF9oZGxfYWRkX2UxaChzdHJ1Y3QgYm54MnggKmJwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozNDg5Olx0XHRcdFx0XHQgICBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNDkwLVx0XHRcdFx0XHQgICBzdHJ1Y3QgYm54MnhfbWNhc3RfcmFtcm9kX3BhcmFtcyAqcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTM1MDk9c3RhdGljIGlubGluZSB2b2lkIGJueDJ4X21jYXN0X2hkbF9yZXN0b3JlX2UxaChzdHJ1Y3QgYm54MnggKmJwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozNTEwOlx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbywgc3RydWN0IGJueDJ4X21jYXN0X3JhbXJvZF9wYXJhbXMgKnAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM1MTEtXHR1MzIgKm1jX2ZpbHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTM1Mjc9c3RhdGljIGludCBibngyeF9tY2FzdF9zZXR1cF9lMWgoc3RydWN0IGJueDJ4ICpicCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM1MzEtXHRpbnQgaTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MzUzMjpcdHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8gPSBwLVx1MDAzZW1jYXN0X29iajtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzUzMy1cdHN0cnVjdCBibngyeF9yYXdfb2JqICpyID0gXHUwMDI2by1cdTAwM2VyYXc7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zNTgxPXN0YXRpYyBpbnQgYm54MnhfbWNhc3RfdmFsaWRhdGVfZTEoc3RydWN0IGJueDJ4ICpicCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM1ODQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozNTg1Olx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyA9IHAtXHUwMDNlbWNhc3Rfb2JqO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNTg2LVx0aW50IHJlZ19zeiA9IG8tXHUwMDNlZ2V0X3JlZ2lzdHJ5X3NpemUobyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zNjQxPXN0YXRpYyB2b2lkIGJueDJ4X21jYXN0X3JldmVydF9lMShzdHJ1Y3QgYm54MnggKmJwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzY0NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjM2NDY6XHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvID0gcC1cdTAwM2VtY2FzdF9vYmo7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM2NDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zNjU4PXN0YXRpYyB2b2lkIGJueDJ4X21jYXN0X3NldF9vbmVfcnVsZV9lMShzdHJ1Y3QgYm54MnggKmJwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozNjU5Olx0XHRcdFx0XHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLCBpbnQgaWR4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNjYwLVx0XHRcdFx0XHR1bmlvbiBibngyeF9tY2FzdF9jb25maWdfZGF0YSAqY2ZnX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zNjkyPXN0YXRpYyBpbmxpbmUgdm9pZCBibngyeF9tY2FzdF9zZXRfcmRhdGFfaGRyX2UxKHN0cnVjdCBibngyeCAqYnAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNjk1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MzY5NjpcdHN0cnVjdCBibngyeF9yYXdfb2JqICpyID0gXHUwMDI2cC1cdTAwM2VtY2FzdF9vYmotXHUwMDNlcmF3O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNjk3LVx0c3RydWN0IG1hY19jb25maWd1cmF0aW9uX2NtZCAqZGF0YSA9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zNzI1PXN0YXRpYyBpbmxpbmUgaW50IGJueDJ4X21jYXN0X2hhbmRsZV9yZXN0b3JlX2NtZF9lMShcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MzcyNjpcdHN0cnVjdCBibngyeCAqYnAsIHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8gLCBpbnQgc3RhcnRfaWR4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNzI3LVx0aW50ICpyZGF0YV9pZHgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zNzQ5PXN0YXRpYyBpbmxpbmUgaW50IGJueDJ4X21jYXN0X2hhbmRsZV9wZW5kaW5nX2NtZHNfZTEoXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNzUzLVx0c3RydWN0IGJueDJ4X21jYXN0X21hY19lbGVtICpwbWFjX3BvcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6Mzc1NDpcdHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8gPSBwLVx1MDAzZW1jYXN0X29iajtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzc1NS1cdHVuaW9uIGJueDJ4X21jYXN0X2NvbmZpZ19kYXRhIGNmZ19kYXRhID0ge05VTEx9O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MzgzMD1zdGF0aWMgaW5saW5lIGludCBibngyeF9tY2FzdF9yZWZyZXNoX3JlZ2lzdHJ5X2UxKHN0cnVjdCBibngyeCAqYnAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjM4MzE6XHRcdFx0XHRcdFx0ICBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zODMyLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTM4Nzc9c3RhdGljIGludCBibngyeF9tY2FzdF9zZXR1cF9lMShzdHJ1Y3QgYm54MnggKmJwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzg4MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjM4ODE6XHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvID0gcC1cdTAwM2VtY2FzdF9vYmo7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM4ODItXHRzdHJ1Y3QgYm54MnhfcmF3X29iaiAqcmF3ID0gXHUwMDI2by1cdTAwM2VyYXc7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zOTU1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozOTU2OnN0YXRpYyBpbnQgYm54MnhfbWNhc3RfZ2V0X3JlZ2lzdHJ5X3NpemVfZXhhY3Qoc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzk1Ny17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zOTYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozOTYxOnN0YXRpYyBpbnQgYm54MnhfbWNhc3RfZ2V0X3JlZ2lzdHJ5X3NpemVfYXByb3goc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzk2Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zOTY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozOTY2OnN0YXRpYyB2b2lkIGJueDJ4X21jYXN0X3NldF9yZWdpc3RyeV9zaXplX2V4YWN0KHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM5NjctXHRcdFx0XHRcdFx0aW50IG4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zOTcxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozOTcyOnN0YXRpYyB2b2lkIGJueDJ4X21jYXN0X3NldF9yZWdpc3RyeV9zaXplX2Fwcm94KHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM5NzMtXHRcdFx0XHRcdFx0aW50IG4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zOTc4PWludCBibngyeF9jb25maWdfbWNhc3Qoc3RydWN0IGJueDJ4ICpicCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM5ODEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozOTgyOlx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyA9IHAtXHUwMDNlbWNhc3Rfb2JqO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zOTgzLVx0c3RydWN0IGJueDJ4X3Jhd19vYmogKnIgPSBcdTAwMjZvLVx1MDAzZXJhdztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwMDctXHQgICAgKChvLVx1MDAzZW1heF9jbWRfbGVuIFx1MDAzZSAwKSBcdTAwMjZcdTAwMjYgKG8tXHUwMDNldG90YWxfcGVuZGluZ19udW0gXHUwMDNlIG8tXHUwMDNlbWF4X2NtZF9sZW4pKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDA4Olx0XHRyYyA9IG8tXHUwMDNlZW5xdWV1ZV9jbWQoYnAsIHAtXHUwMDNlbWNhc3Rfb2JqLCBwLCBjbWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDA5LVx0XHRpZiAocmMgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDQzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDQ0OnN0YXRpYyB2b2lkIGJueDJ4X21jYXN0X2NsZWFyX3NjaGVkKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwNDUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDA1MTpzdGF0aWMgdm9pZCBibngyeF9tY2FzdF9zZXRfc2NoZWQoc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA1Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDU4OnN0YXRpYyBib29sIGJueDJ4X21jYXN0X2NoZWNrX3NjaGVkKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwNTkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDA2MzpzdGF0aWMgYm9vbCBibngyeF9tY2FzdF9jaGVja19wZW5kaW5nKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwNjQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDA2ODp2b2lkIGJueDJ4X2luaXRfbWNhc3Rfb2JqKHN0cnVjdCBibngyeCAqYnAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQwNjk6XHRcdFx0ICBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICptY2FzdF9vYmosXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwNzAtXHRcdFx0ICB1OCBtY2FzdF9jbF9pZCwgdTMyIG1jYXN0X2NpZCwgdTggZnVuY19pZCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwNzMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDc0Olx0bWVtc2V0KG1jYXN0X29iaiwgMCwgc2l6ZW9mKCptY2FzdF9vYmopKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA3NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDA3NjpcdGJueDJ4X2luaXRfcmF3X29iaihcdTAwMjZtY2FzdF9vYmotXHUwMDNlcmF3LCBtY2FzdF9jbF9pZCwgbWNhc3RfY2lkLCBmdW5jX2lkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDc3LVx0XHRcdCAgIHJkYXRhLCByZGF0YV9tYXBwaW5nLCBzdGF0ZSwgcHN0YXRlLCB0eXBlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDA3OTpcdG1jYXN0X29iai1cdTAwM2VlbmdpbmVfaWQgPSBlbmdpbmVfaWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwODAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQwODE6XHRJTklUX0xJU1RfSEVBRChcdTAwMjZtY2FzdF9vYmotXHUwMDNlcGVuZGluZ19jbWRzX2hlYWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDgzOlx0bWNhc3Rfb2JqLVx1MDAzZXNjaGVkX3N0YXRlID0gQk5YMlhfRklMVEVSX01DQVNUX1NDSEVEO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDg0Olx0bWNhc3Rfb2JqLVx1MDAzZWNoZWNrX3NjaGVkID0gYm54MnhfbWNhc3RfY2hlY2tfc2NoZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQwODU6XHRtY2FzdF9vYmotXHUwMDNlc2V0X3NjaGVkID0gYm54MnhfbWNhc3Rfc2V0X3NjaGVkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDg2Olx0bWNhc3Rfb2JqLVx1MDAzZWNsZWFyX3NjaGVkID0gYm54MnhfbWNhc3RfY2xlYXJfc2NoZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwODgtXHRpZiAoQ0hJUF9JU19FMShicCkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDA4OTpcdFx0bWNhc3Rfb2JqLVx1MDAzZWNvbmZpZ19tY2FzdCAgICAgID0gYm54MnhfbWNhc3Rfc2V0dXBfZTE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQwOTA6XHRcdG1jYXN0X29iai1cdTAwM2VlbnF1ZXVlX2NtZCAgICAgICA9IGJueDJ4X21jYXN0X2VucXVldWVfY21kO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDkxOlx0XHRtY2FzdF9vYmotXHUwMDNlaGRsX3Jlc3RvcmUgICAgICAgPVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDkyLVx0XHRcdGJueDJ4X21jYXN0X2hhbmRsZV9yZXN0b3JlX2NtZF9lMTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDA5MzpcdFx0bWNhc3Rfb2JqLVx1MDAzZWNoZWNrX3BlbmRpbmcgICAgID0gYm54MnhfbWNhc3RfY2hlY2tfcGVuZGluZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA5NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA5NS1cdFx0aWYgKENISVBfUkVWX0lTX1NMT1coYnApKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDk2Olx0XHRcdG1jYXN0X29iai1cdTAwM2VtYXhfY21kX2xlbiA9IEJOWDJYX01BWF9FTVVMX01VTFRJO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDk3LVx0XHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQwOTg6XHRcdFx0bWNhc3Rfb2JqLVx1MDAzZW1heF9jbWRfbGVuID0gQk5YMlhfTUFYX01VTFRJQ0FTVDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA5OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDEwMDpcdFx0bWNhc3Rfb2JqLVx1MDAzZXdhaXRfY29tcCAgICAgICAgID0gYm54MnhfbWNhc3Rfd2FpdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDEwMTpcdFx0bWNhc3Rfb2JqLVx1MDAzZXNldF9vbmVfcnVsZSAgICAgID0gYm54MnhfbWNhc3Rfc2V0X29uZV9ydWxlX2UxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTAyOlx0XHRtY2FzdF9vYmotXHUwMDNldmFsaWRhdGUgICAgICAgICAgPSBibngyeF9tY2FzdF92YWxpZGF0ZV9lMTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDEwMzpcdFx0bWNhc3Rfb2JqLVx1MDAzZXJldmVydCAgICAgICAgICAgID0gYm54MnhfbWNhc3RfcmV2ZXJ0X2UxO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTA0Olx0XHRtY2FzdF9vYmotXHUwMDNlZ2V0X3JlZ2lzdHJ5X3NpemUgPVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MTA1LVx0XHRcdGJueDJ4X21jYXN0X2dldF9yZWdpc3RyeV9zaXplX2V4YWN0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTA2Olx0XHRtY2FzdF9vYmotXHUwMDNlc2V0X3JlZ2lzdHJ5X3NpemUgPVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MTA3LVx0XHRcdGJueDJ4X21jYXN0X3NldF9yZWdpc3RyeV9zaXplX2V4YWN0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDExMS1cdFx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMTI6XHRcdElOSVRfTElTVF9IRUFEKFx1MDAyNm1jYXN0X29iai1cdTAwM2VyZWdpc3RyeS5leGFjdF9tYXRjaC5tYWNzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDExMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDExNC1cdH0gZWxzZSBpZiAoQ0hJUF9JU19FMUgoYnApKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMTU6XHRcdG1jYXN0X29iai1cdTAwM2Vjb25maWdfbWNhc3QgID0gYm54MnhfbWNhc3Rfc2V0dXBfZTFoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTE2Olx0XHRtY2FzdF9vYmotXHUwMDNlZW5xdWV1ZV9jbWQgICA9IE5VTEw7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMTc6XHRcdG1jYXN0X29iai1cdTAwM2VoZGxfcmVzdG9yZSAgID0gTlVMTDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDExODpcdFx0bWNhc3Rfb2JqLVx1MDAzZWNoZWNrX3BlbmRpbmcgPSBibngyeF9tY2FzdF9jaGVja19wZW5kaW5nO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MTE5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDEyMi1cdFx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMjM6XHRcdG1jYXN0X29iai1cdTAwM2VtYXhfY21kX2xlbiAgICAgICA9IC0xO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTI0Olx0XHRtY2FzdF9vYmotXHUwMDNld2FpdF9jb21wICAgICAgICAgPSBibngyeF9tY2FzdF93YWl0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTI1Olx0XHRtY2FzdF9vYmotXHUwMDNlc2V0X29uZV9ydWxlICAgICAgPSBOVUxMO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTI2Olx0XHRtY2FzdF9vYmotXHUwMDNldmFsaWRhdGUgICAgICAgICAgPSBibngyeF9tY2FzdF92YWxpZGF0ZV9lMWg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMjc6XHRcdG1jYXN0X29iai1cdTAwM2VyZXZlcnQgICAgICAgICAgICA9IGJueDJ4X21jYXN0X3JldmVydF9lMWg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMjg6XHRcdG1jYXN0X29iai1cdTAwM2VnZXRfcmVnaXN0cnlfc2l6ZSA9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQxMjktXHRcdFx0Ym54MnhfbWNhc3RfZ2V0X3JlZ2lzdHJ5X3NpemVfYXByb3g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMzA6XHRcdG1jYXN0X29iai1cdTAwM2VzZXRfcmVnaXN0cnlfc2l6ZSA9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQxMzEtXHRcdFx0Ym54MnhfbWNhc3Rfc2V0X3JlZ2lzdHJ5X3NpemVfYXByb3g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQxMzItXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTMzOlx0XHRtY2FzdF9vYmotXHUwMDNlY29uZmlnX21jYXN0ICAgICAgPSBibngyeF9tY2FzdF9zZXR1cF9lMjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDEzNDpcdFx0bWNhc3Rfb2JqLVx1MDAzZWVucXVldWVfY21kICAgICAgID0gYm54MnhfbWNhc3RfZW5xdWV1ZV9jbWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMzU6XHRcdG1jYXN0X29iai1cdTAwM2VoZGxfcmVzdG9yZSAgICAgICA9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQxMzYtXHRcdFx0Ym54MnhfbWNhc3RfaGFuZGxlX3Jlc3RvcmVfY21kX2UyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTM3Olx0XHRtY2FzdF9vYmotXHUwMDNlY2hlY2tfcGVuZGluZyAgICAgPSBibngyeF9tY2FzdF9jaGVja19wZW5kaW5nO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MTM4LVx0XHQvKiBUT0RPOiBUaGVyZSBzaG91bGQgYmUgYSBwcm9wZXIgSFNJIGRlZmluZSBmb3IgdGhpcyBudW1iZXIhISFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDEzOS1cdFx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxNDA6XHRcdG1jYXN0X29iai1cdTAwM2VtYXhfY21kX2xlbiAgICAgICA9IDE2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTQxOlx0XHRtY2FzdF9vYmotXHUwMDNld2FpdF9jb21wICAgICAgICAgPSBibngyeF9tY2FzdF93YWl0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTQyOlx0XHRtY2FzdF9vYmotXHUwMDNlc2V0X29uZV9ydWxlICAgICAgPSBibngyeF9tY2FzdF9zZXRfb25lX3J1bGVfZTI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxNDM6XHRcdG1jYXN0X29iai1cdTAwM2V2YWxpZGF0ZSAgICAgICAgICA9IGJueDJ4X21jYXN0X3ZhbGlkYXRlX2UyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTQ0Olx0XHRtY2FzdF9vYmotXHUwMDNlcmV2ZXJ0ICAgICAgICAgICAgPSBibngyeF9tY2FzdF9yZXZlcnRfZTI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxNDU6XHRcdG1jYXN0X29iai1cdTAwM2VnZXRfcmVnaXN0cnlfc2l6ZSA9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQxNDYtXHRcdFx0Ym54MnhfbWNhc3RfZ2V0X3JlZ2lzdHJ5X3NpemVfYXByb3g7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxNDc6XHRcdG1jYXN0X29iai1cdTAwM2VzZXRfcmVnaXN0cnlfc2l6ZSA9XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQxNDgtXHRcdFx0Ym54MnhfbWNhc3Rfc2V0X3JlZ2lzdHJ5X3NpemVfYXByb3g7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaD01MTg9c3RydWN0IGJueDJ4X21jYXN0X3JhbXJvZF9wYXJhbXMge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaDo1MTk6XHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICptY2FzdF9vYmo7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oLTUyMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oPTUzNj1lbnVtIGJueDJ4X21jYXN0X2NtZCB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC01NTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oOjU1MjpzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNTUzLVx0c3RydWN0IGJueDJ4X3Jhd19vYmogcmF3O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNjA3LVx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oOjYwODpcdGludCAoKmhkbF9yZXN0b3JlKShzdHJ1Y3QgYm54MnggKmJwLCBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC02MDktXHRcdFx0ICAgaW50IHN0YXJ0X2JpbiwgaW50ICpyZGF0YV9pZHgpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC02MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oOjYxMTpcdGludCAoKmVucXVldWVfY21kKShzdHJ1Y3QgYm54MnggKmJwLCBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC02MTItXHRcdFx0ICAgc3RydWN0IGJueDJ4X21jYXN0X3JhbXJvZF9wYXJhbXMgKnAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC02MTUtXHR2b2lkICgqc2V0X29uZV9ydWxlKShzdHJ1Y3QgYm54MnggKmJwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaDo2MTY6XHRcdFx0ICAgICBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLCBpbnQgaWR4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC02MTctXHRcdFx0ICAgICB1bmlvbiBibngyeF9tY2FzdF9jb25maWdfZGF0YSAqY2ZnX2RhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC02MjItXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg6NjIzOlx0Ym9vbCAoKmNoZWNrX3BlbmRpbmcpKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC02MjQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC02MjctXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg6NjI4Olx0dm9pZCAoKnNldF9zY2hlZCkoc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oOjYyOTpcdHZvaWQgKCpjbGVhcl9zY2hlZCkoc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oOjYzMDpcdGJvb2wgKCpjaGVja19zY2hlZCkoc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oLTYzMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNjMyLVx0LyogV2FpdCB1bnRpbCBhbGwgcGVuZGluZyBjb21tYW5kcyBjb21wbGV0ZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaDo2MzM6XHRpbnQgKCp3YWl0X2NvbXApKHN0cnVjdCBibngyeCAqYnAsIHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC02MzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC02NTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oOjY1MjpcdGludCAoKmdldF9yZWdpc3RyeV9zaXplKShzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg6NjUzOlx0dm9pZCAoKnNldF9yZWdpc3RyeV9zaXplKShzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLCBpbnQgbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oLTY1NC19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg9MTQ2Mz1pbnQgYm54MnhfY29uZmlnX3J4X21vZGUoc3RydWN0IGJueDJ4ICpicCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oLTE0NjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oOjE0Njg6dm9pZCBibngyeF9pbml0X21jYXN0X29iaihzdHJ1Y3QgYm54MnggKmJwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaDoxNDY5Olx0XHRcdCAgc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbWNhc3Rfb2JqLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC0xNDcwLVx0XHRcdCAgdTggbWNhc3RfY2xfaWQsIHUzMiBtY2FzdF9jaWQsIHU4IGZ1bmNfaWQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuYz01Mzc9aW50IGJueDJ4X3ZmX21jYXN0KHN0cnVjdCBibngyeCAqYnAsIHN0cnVjdCBibngyeF92aXJ0ZiAqdmYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuYy01NDctXHRtZW1zZXQoXHUwMDI2bWNhc3QsIDAsIHNpemVvZihzdHJ1Y3QgYm54MnhfbWNhc3RfcmFtcm9kX3BhcmFtcykpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuYzo1NDg6XHRtY2FzdC5tY2FzdF9vYmogPSBcdTAwMjZ2Zi1cdTAwM2VtY2FzdF9vYmo7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcmlvdi5jLTU0OS1cdGlmIChkcnZfb25seSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcmlvdi5jPTE1Mzc9aW50IGJueDJ4X2lvdl9uaWNfaW5pdChzdHJ1Y3QgYm54MnggKmJwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmMtMTU3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmM6MTU3OTpcdFx0LyogIGluaXQgbWNhc3Qgb2JqZWN0IC0gVGhpcyBvYmplY3Qgd2lsbCBiZSByZS1pbml0aWFsaXplZFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuYy0xNTgwLVx0XHQgKiAgZHVyaW5nIFZGLUFDUVVJUkUgd2l0aCB0aGUgcHJvcGVyIGNsX2lkIGFuZCBjaWQuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuYy0xNTgzLVx0XHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmM6MTU4NDpcdFx0Ym54MnhfaW5pdF9tY2FzdF9vYmooYnAsIFx1MDAyNnZmLVx1MDAzZW1jYXN0X29iaiwgMHhGRixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmMtMTU4NS1cdFx0XHRcdCAgICAgMHhGRiwgMHhGRiwgMHhGRixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcmlvdi5jPTE2OTg9dm9pZCBibngyeF92Zl9oYW5kbGVfbWNhc3RfZXFlKHN0cnVjdCBibngyeCAqYnAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuYy0xNzAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuYzoxNzA0Olx0cnBhcmFtLm1jYXN0X29iaiA9IFx1MDAyNnZmLVx1MDAzZW1jYXN0X29iajtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmM6MTcwNTpcdHZmLVx1MDAzZW1jYXN0X29iai5yYXcuY2xlYXJfcGVuZGluZyhcdTAwMjZ2Zi1cdTAwM2VtY2FzdF9vYmoucmF3KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmMtMTcwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmMtMTcwNy1cdC8qIElmIHRoZXJlIGFyZSBwZW5kaW5nIG1jYXN0IGNvbW1hbmRzIC0gc2VuZCB0aGVtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcmlvdi5jOjE3MDg6XHRpZiAodmYtXHUwMDNlbWNhc3Rfb2JqLmNoZWNrX3BlbmRpbmcoXHUwMDI2dmYtXHUwMDNlbWNhc3Rfb2JqKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuYy0xNzA5LVx0XHRyYyA9IGJueDJ4X2NvbmZpZ19tY2FzdChicCwgXHUwMDI2cnBhcmFtLCBCTlgyWF9NQ0FTVF9DTURfQ09OVCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuaD0xMjg9c3RydWN0IGJueDJ4X3ZpcnRmIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcmlvdi5oLTIwMy1cdC8qIE1DQVNUIG9iamVjdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuaDoyMDQ6XHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqXHRcdG1jYXN0X29iajtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmgtMjA1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3ZmcGYuYz01NDQ9c3RhdGljIHZvaWQgYm54MnhfbGVhZGluZ192ZnFfaW5pdChzdHJ1Y3QgYm54MnggKmJwLCBzdHJ1Y3QgYm54MnhfdmlydGYgKnZmLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3ZmcGYuYy01NzgtXHQvKiBtY2FzdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfdmZwZi5jOjU3OTpcdGJueDJ4X2luaXRfbWNhc3Rfb2JqKGJwLCBcdTAwMjZ2Zi1cdTAwM2VtY2FzdF9vYmosIGNsX2lkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfdmZwZi5jLTU4MC1cdFx0XHQgICAgIHEtXHUwMDNlY2lkLCBmdW5jX2lkLCBmdW5jX2lkLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0Lmg9Njc2PXN0cnVjdCBiZmlfZW5ldF9zdGF0c190eGYge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0LmgtNjgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaDo2ODE6XHR1NjQgbWNhc3Rfb2N0ZXRzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaC02ODItXHR1NjQgbWNhc3Q7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaD02OTU9c3RydWN0IGJmaV9lbmV0X3N0YXRzX3J4ZiB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaC02OTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9iZmlfZW5ldC5oOjcwMDpcdHU2NCBtY2FzdF9vY3RldHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9iZmlfZW5ldC5oLTcwMS1cdHU2NCBtY2FzdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9iZmlfZW5ldC5oPTcxMT1zdHJ1Y3QgYmZpX2VuZXRfc3RhdHNfZmNfdHgge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0LmgtNzE1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaDo3MTY6XHR1NjQgdHhmX21jYXN0X29jdGV0cztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0LmgtNzE3LVx0dTY0IHR4Zl9tY2FzdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9iZmlfZW5ldC5oPTczMD1zdHJ1Y3QgYmZpX2VuZXRfc3RhdHNfZmNfcngge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0LmgtNzM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaDo3MzU6XHR1NjQgcnhmX21jYXN0X29jdGV0cztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0LmgtNzM2LVx0dTY0IHJ4Zl9tY2FzdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9iZmlfZW5ldC5oPTc0NT1zdHJ1Y3QgYmZpX2VuZXRfc3RhdHNfcmFkIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9iZmlfZW5ldC5oLTc1NC1cdHU2NCByeF9tY2FzdDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0Lmg6NzU1Olx0dTY0IHJ4X21jYXN0X29jdGV0cztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0LmgtNzU2LVx0dTY0IHJ4X21jYXN0X3ZsYW47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYm5hZF9ldGh0b29sLmM9Mjk9c3RhdGljIGNvbnN0IGNoYXIgKmJuYWRfbmV0X3N0YXRzX3N0cmluZ3NbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9ibmFkX2V0aHRvb2wuYy0xODYtXHRcJiMzNDtyYWRfcnhfbWNhc3RcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9ibmFkX2V0aHRvb2wuYzoxODc6XHRcJiMzNDtyYWRfcnhfbWNhc3Rfb2N0ZXRzXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYm5hZF9ldGh0b29sLmMtMTg4LVx0XCYjMzQ7cmFkX3J4X21jYXN0X3ZsYW5cJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYm5hZF9ldGh0b29sLmMtMjAwLVx0XCYjMzQ7cmxiX3JhZF9yeF9tY2FzdFwmIzM0OyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JuYWRfZXRodG9vbC5jOjIwMTpcdFwmIzM0O3JsYl9yYWRfcnhfbWNhc3Rfb2N0ZXRzXCYjMzQ7LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYm5hZF9ldGh0b29sLmMtMjAyLVx0XCYjMzQ7cmxiX3JhZF9yeF9tY2FzdF92bGFuXCYjMzQ7LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JuYWRfZXRodG9vbC5jLTIxMC1cdFwmIzM0O2ZjX3J4X3VjYXN0X3ZsYW5cJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9ibmFkX2V0aHRvb2wuYzoyMTE6XHRcJiMzNDtmY19yeF9tY2FzdF9vY3RldHNcJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9ibmFkX2V0aHRvb2wuYy0yMTItXHRcJiMzNDtmY19yeF9tY2FzdFwmIzM0Oyxcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ3MzQKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzOgoKKipEZWJ1Z2dpbmcgYSBTdHViYm9ybiBCdWlsZCBPdXRwdXQqKgoKQWxyaWdodCwgdGhlIGJ1aWxkIGlzIHNwaXR0aW5nIG91dCB0aGVzZSBpcnJpdGF0aW5nICYjMzQ7bWNhc3QubyYjMzQ7IGZpbGVzIGFuZCBub3RoaW5nIG1vcmUuIFRoYXQmIzM5O3MgY2xlYXJseSBub3QgcmlnaHQuIE15IGd1dCB0ZWxscyBtZSBzb21ldGhpbmcgaXMgb2ZmIGluIHRoZSBuZXR3b3JraW5nIHJlYWxtLiBMZXQmIzM5O3MgZGlnIGluLiBHaXZlbiB0aGF0IHRoZXNlIGFyZSAqbWNhc3QqIHJlbGF0ZWQsIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gdGhlIElQdjYgbmV0d29ya2luZyBjb2RlLiBNeSBtZW1vcnkgaXMgcGluZ2luZyB0b3dhcmRzIHRoZSBrZXJuZWwmIzM5O3MgYG5ldC9pcHY2YCBkaXJlY3RvcnksIGFuZCBzcGVjaWZpY2FsbHkgaXRzIGBNYWtlZmlsZWAuIFRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgcHJvYmFibHkgZmluZCB0aGUgcnVsZXMgdGhhdCBkZWZpbmUgaG93IGBtY2FzdC5vYCBpcyBidWlsdCwgb3IgKnNob3VsZCogYmUgYnVpbHQuIEhvcGVmdWxseSBJIGNhbiB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmN5IGNoYWluIGFuZCBzZWUgd2hlcmUgaXQmIzM5O3MgZ29pbmcgd3JvbmcuIFRpbWUgdG8gZ3JhYiB0aGF0IE1ha2VmaWxlIGFuZCBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWNhc3QubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L01ha2VmaWxlPTg9aXB2Ni15IDo9XHRhZl9pbmV0Ni5vIGFueWNhc3QubyBpcDZfb3V0cHV0Lm8gaXA2X2lucHV0Lm8gYWRkcmNvbmYubyBcXFxuLS1cbm5ldC9pcHY2L01ha2VmaWxlLTEwLVx0XHRyb3V0ZS5vIGlwNl9maWIubyBpcHY2X3NvY2tnbHVlLm8gbmRpc2MubyB1ZHAubyBcXFxubmV0L2lwdjYvTWFrZWZpbGU6MTE6XHRcdHJhdy5vIGljbXAubyBtY2FzdC5vIHJlYXNzZW1ibHkubyB0Y3BfaXB2Ni5vIHBpbmcubyBcXFxubmV0L2lwdjYvTWFrZWZpbGUtMTItXHRcdGV4dGhkcnMubyBkYXRhZ3JhbS5vIGlwNl9mbG93bGFiZWwubyBpbmV0Nl9jb25uZWN0aW9uX3NvY2subyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxODo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTE0MgoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhpbmtpbmcsIGZvcm1hdHRlZCBhcyByZXF1ZXN0ZWQ6CgoqKk5ldHdvcmsgTW9kdWxlIERlcGVuZGVuY2llczogQSBRdWljayBNZW50YWwgTWFwKioKClJpZ2h0LCBzbyBJJiMzOTttIHByb2Nlc3NpbmcgdGhlIGtlcm5lbCBtb2R1bGUgZGVwZW5kZW5jaWVzIGhlcmUuIFRoZSBgbWNhc3Qub2AgbW9kdWxlIGlzIGZ1bmRhbWVudGFsbHkgcGFydCBvZiB0aGUgSVB2NiBzdGFjaywgZGlyZWN0bHkgYnVpbHQgaW50byBgaXB2Ni5vYC4gTWFrZXMgc2Vuc2UsIG11bHRpY2FzdCBzdXBwb3J0IGZvciBJUHY2IGlzIGNvcmUuIEFuZCB0aGUgY29uZGl0aW9uYWwgZm9yIHRoaXMgYmVoYXZpb3IgaXMgY2xlYXJseSBgQ09ORklHX0lQVjZgLiBFYXN5IGVub3VnaC4KCk5vdywgYGlnbXAub2AgaXMgYSBzaW1pbGFyIHNpdHVhdGlvbiwgaXQgaXMgYnVpbHQgaW50byBgaXB2NC5vYC4gVGhpcyBzZWVtcyBub3JtYWwgYmVjYXVzZSBJR01QIGlzIEludGVybmV0IEdyb3VwIE1hbmFnZW1lbnQgUHJvdG9jb2wgKGZvciBJUCBNdWx0aWNhc3Qgb24gSVB2NCkuIFdlIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCB0aGlzIGRlcGVuZGVuY3kgaXMgY29udHJvbGxlZCBieSBib3RoIGBDT05GSUdfSU5FVGAsIHdoaWNoIGVuYWJsZXMgZ2VuZXJhbCBJUHY0IHN1cHBvcnQsICphbmQqIHNwZWNpZmljYWxseSBgQ09ORklHX0lQX01VTFRJQ0FTVGAgdG8gaW5jbHVkZSBJR01QLCBiZWNhdXNlIHlvdSB3b3VsZG4mIzM5O3QgbmVjZXNzYXJpbHkgd2FudCBtdWx0aWNhc3QgZW5hYmxlZCBpZiB5b3UgZGlkbiYjMzk7dCBoYXZlIElHTVAgb24gSVB2NC4gVGhlc2UgY29uZmlndXJhdGlvbnMgYXJlIHRoZSBrZXlzIHRoYXQgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlc2UgbmV0d29yay1yZWxhdGVkIGNvbXBvbmVudHMgYXJlIGluY2x1ZGVkIGluIHRoZSBmaW5hbCBrZXJuZWwgaW1hZ2UuIEdvdCBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWdtcC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcbi0tXG5uZXQvaXB2NC9NYWtlZmlsZS0xMy1cdCAgICAgdGNwX29mZmxvYWQubyB0Y3BfcGxiLm8gZGF0YWdyYW0ubyByYXcubyB1ZHAubyBcXFxubmV0L2lwdjQvTWFrZWZpbGU6MTQ6XHQgICAgIHVkcF9vZmZsb2FkLm8gYXJwLm8gaWNtcC5vIGRldmluZXQubyBhZl9pbmV0Lm8gaWdtcC5vIFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xNS1cdCAgICAgZmliX2Zyb250ZW5kLm8gZmliX3NlbWFudGljcy5vIGZpYl90cmllLm8gZmliX25vdGlmaWVyLm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU2MTUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBVbmNvbmRpdGlvbmFsIElHTVAgTW9kdWxlIEJ1aWxkKioKCkhtbSwgc28gYGlnbXAub2Agc2VlbXMgdG8gYmUgZ2V0dGluZyBjb21waWxlZCByZWdhcmRsZXNzIGlmIGBDT05GSUdfSU5FVGAgaXMgc2V0PyBUaGF0IGRvZXNuJiMzOTt0IHF1aXRlIHNpdCByaWdodCB3aXRoIG1lLiBJJiMzOTtkIGV4cGVjdCBtb3JlIGdyYW51bGFyIGNvbnRyb2wgb3ZlciB0aGF0LCBlc3BlY2lhbGx5IGZvciBlbWJlZGRlZCBzeXN0ZW1zIHdoZXJlIGV2ZXJ5IGJ5dGUgY291bnRzLiBJdCYjMzk7cyB1c3VhbGx5IGJldHRlciB0byBoYXZlIG1vcmUgZmluZS1ncmFpbmVkIG1vZHVsZSBjb250cm9sIHRvIG1pbmltaXplIHRoZSBrZXJuZWwgZm9vdHByaW50LgoKUmlnaHQsIGxldCYjMzk7cyBjb25maXJtIHRoaXMgc3VzcGljaW9uLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgaGVhcnQgb2YgdGhlIElQdjQgbmV0d29ya2luZyBidWlsZCBwcm9jZXNzLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBgbmV0L2lwdjQvTWFrZWZpbGVgIGFuZCBzZWUgZXhhY3RseSB3aGF0JiMzOTtzIGRyaXZpbmcgdGhlIGluY2x1c2lvbiBvZiBgaWdtcC5vYC4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBhIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJsb2NrLCBwZXJoYXBzIHNvbWV0aGluZyBsaWtlIGBpZmVxICgkKENPTkZJR19JR01QKSx5KWAgdGhhdCB0cmlnZ2VycyBpdHMgYnVpbGQuIElmIEkgZG9uJiMzOTt0LCB0aGVuIHRoYXQmIzM5O3MgYSBwcm9ibGVtIHRoYXQgbmVlZHMgYWRkcmVzc2luZywgb3IgcGVyaGFwcyBhbiBhY2NlcHRhYmxlIHRyYWRlLW9mZiBpZiB0aGUgZGVwZW5kZW5jaWVzIGFyZSByZWFsbHkgdGlnaHQuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgbWFrZWZpbGUgYWN0dWFsbHkgcmV2ZWFscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBNYWtlZmlsZSBmb3IgdGhlIExpbnV4IFRDUC9JUCAoSU5FVCkgbGF5ZXIuXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxuICAgNzpcdFx0ICAgICBpcF9pbnB1dC5vIGlwX2ZyYWdtZW50Lm8gaXBfZm9yd2FyZC5vIGlwX29wdGlvbnMubyBcXFxuICAgODpcdFx0ICAgICBpcF9vdXRwdXQubyBpcF9zb2NrZ2x1ZS5vIGluZXRfaGFzaHRhYmxlcy5vIFxcXG4gICA5Olx0XHQgICAgIGluZXRfdGltZXdhaXRfc29jay5vIGluZXRfY29ubmVjdGlvbl9zb2NrLm8gXFxcbiAgMTA6XHRcdCAgICAgdGNwLm8gdGNwX2lucHV0Lm8gdGNwX291dHB1dC5vIHRjcF90aW1lci5vIHRjcF9pcHY0Lm8gXFxcbiAgMTE6XHRcdCAgICAgdGNwX21pbmlzb2Nrcy5vIHRjcF9jb25nLm8gdGNwX21ldHJpY3MubyB0Y3BfZmFzdG9wZW4ubyBcXFxuICAxMjpcdFx0ICAgICB0Y3BfcmVjb3ZlcnkubyB0Y3BfdWxwLm8gXFxcbiAgMTM6XHRcdCAgICAgdGNwX29mZmxvYWQubyB0Y3BfcGxiLm8gZGF0YWdyYW0ubyByYXcubyB1ZHAubyBcXFxuICAxNDpcdFx0ICAgICB1ZHBfb2ZmbG9hZC5vIGFycC5vIGljbXAubyBkZXZpbmV0Lm8gYWZfaW5ldC5vIGlnbXAubyBcXFxuICAxNTpcdFx0ICAgICBmaWJfZnJvbnRlbmQubyBmaWJfc2VtYW50aWNzLm8gZmliX3RyaWUubyBmaWJfbm90aWZpZXIubyBcXFxuICAxNjpcdFx0ICAgICBpbmV0X2ZyYWdtZW50Lm8gcGluZy5vIGlwX3R1bm5lbF9jb3JlLm8gZ3JlX29mZmxvYWQubyBcXFxuICAxNzpcdFx0ICAgICBtZXRyaWNzLm8gbmV0bGluay5vIG5leHRob3AubyB1ZHBfdHVubmVsX3N0dWIub1xuICAxODpcdFxuICAxOTpcdG9iai0kKENPTkZJR19ORVRfSVBfVFVOTkVMKSAmIzQzOz0gaXBfdHVubmVsLm9cbiAgMjA6XHRvYmotJChDT05GSUdfU1lTQ1RMKSAmIzQzOz0gc3lzY3RsX25ldF9pcHY0Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTg6NDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjYzNTUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipFeGFtaW5pbmcgdGhlIElHTVAgTW9kdWxlJiMzOTtzIENvbmRpdGlvbmFsIEJ1aWxkKioKClJpZ2h0LCBzbyBgaWdtcC5vYCBzZWVtcyB0byBiZSBnZXR0aW5nIGNvbXBpbGVkIHJlZ2FyZGxlc3MuIEJ1dCBJIGtub3cgdGhhdCB0aGUgcmVhbCBjb250cm9sIGxpZXMgd2l0aCBgQ09ORklHX0lQX01VTFRJQ0FTVGAuIEl0JiMzOTtzIHRoYXQgY29uZmlndXJhdGlvbiBvcHRpb24gdGhhdCByZWFsbHkgdW5sb2NrcyB0aGUgbXVsdGljYXN0IHJvdXRpbmcgYW5kIGZlYXR1cmUgc2V0LiBTbywgdGhlIGtleSBpcyBnb2luZyB0byBiZSBpbiBgbmV0L2lwdjQvaWdtcC5jYC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gbG9vayB0byBzZWUgaG93IGBDT05GSUdfSVBfTVVMVElDQVNUYCBpcyB1c2VkLCBhbmQgaG93IGl0IGFjdHVhbGx5IGltcGFjdHMgdGhlIGJ1aWxkIG9yIGVuYWJsaW5nIG9mIHNwZWNpZmljIElHTVAgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIGtlcm5lbC4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgaXQmIzM5O3MgZ3VhcmRpbmcgYW55IGNyaXRpY2FsIHNlY3Rpb25zIG9yIGRlZmluZXMgdGhhdCB1bHRpbWF0ZWx5IG1ha2UgYGlnbXAub2AgKnVzZWZ1bCogYmV5b25kIGEgc2ltcGxlIG9iamVjdCBmaWxlLiBUaW1lIHRvIGRpdmUgaW50byB0aGF0IHNvdXJjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTg6NDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0lQX01VTFRJQ0FTVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L2lnbXAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9pZ21wLmMtMTA5LVxubmV0L2lwdjQvaWdtcC5jOjExMDojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxubmV0L2lwdjQvaWdtcC5jLTExMS0vKiBQYXJhbWV0ZXIgbmFtZXMgYW5kIHZhbHVlcyBhcmUgdGFrZW4gZnJvbSBpZ21wLXYyLTA2IGRyYWZ0ICovXG4tLVxubmV0L2lwdjQvaWdtcC5jPTIwMT1zdGF0aWMgdm9pZCBpcF9zZl9saXN0X2NsZWFyX2FsbChzdHJ1Y3QgaXBfc2ZfbGlzdCAqcHNmKVxuLS1cbm5ldC9pcHY0L2lnbXAuYy0yMTEtXG5uZXQvaXB2NC9pZ21wLmM6MjEyOiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXG5uZXQvaXB2NC9pZ21wLmMtMjEzLVxuLS1cbm5ldC9pcHY0L2lnbXAuYz0xMTkzPXN0YXRpYyB2b2lkIGlwX21jX2ZpbHRlcl9kZWwoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgYWRkcilcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTIwMS1cbm5ldC9pcHY0L2lnbXAuYzoxMjAyOiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXG5uZXQvaXB2NC9pZ21wLmMtMTIwMy0vKlxuLS1cbm5ldC9pcHY0L2lnbXAuYz0xMzIyPXN0YXRpYyB2b2lkIF9faWdtcF9ncm91cF9kcm9wcGVkKHN0cnVjdCBpcF9tY19saXN0ICppbSwgZ2ZwX3QgZ2ZwKVxuLS1cbm5ldC9pcHY0L2lnbXAuYy0xMzI0LVx0c3RydWN0IGluX2RldmljZSAqaW5fZGV2ID0gaW0tXHUwMDNlaW50ZXJmYWNlO1xubmV0L2lwdjQvaWdtcC5jOjEzMjU6I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1Rcbm5ldC9pcHY0L2lnbXAuYy0xMzI2LVx0c3RydWN0IG5ldCAqbmV0ID0gZGV2X25ldChpbl9kZXYtXHUwMDNlZGV2KTtcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTMzNC1cbm5ldC9pcHY0L2lnbXAuYzoxMzM1OiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXG5uZXQvaXB2NC9pZ21wLmMtMTMzNi1cdGlmIChpbS1cdTAwM2VtdWx0aWFkZHIgPT0gSUdNUF9BTExfSE9TVFMpXG4tLVxubmV0L2lwdjQvaWdtcC5jPTEzNjY9c3RhdGljIHZvaWQgaWdtcF9ncm91cF9hZGRlZChzdHJ1Y3QgaXBfbWNfbGlzdCAqaW0pXG4tLVxubmV0L2lwdjQvaWdtcC5jLTEzNjgtXHRzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYgPSBpbS1cdTAwM2VpbnRlcmZhY2U7XG5uZXQvaXB2NC9pZ21wLmM6MTM2OTojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxubmV0L2lwdjQvaWdtcC5jLTEzNzAtXHRzdHJ1Y3QgbmV0ICpuZXQgPSBkZXZfbmV0KGluX2Rldi1cdTAwM2VkZXYpO1xuLS1cbm5ldC9pcHY0L2lnbXAuYy0xMzc3LVxubmV0L2lwdjQvaWdtcC5jOjEzNzg6I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1Rcbm5ldC9pcHY0L2lnbXAuYy0xMzc5LVx0aWYgKGltLVx1MDAzZW11bHRpYWRkciA9PSBJR01QX0FMTF9IT1NUUylcbi0tXG5uZXQvaXB2NC9pZ21wLmM9MTUzMj1zdGF0aWMgdm9pZCBfX19faXBfbWNfaW5jX2dyb3VwKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldiwgX19iZTMyIGFkZHIsXG4tLVxubmV0L2lwdjQvaWdtcC5jLTE1NzctXHRzcGluX2xvY2tfaW5pdChcdTAwMjZpbS1cdTAwM2Vsb2NrKTtcbm5ldC9pcHY0L2lnbXAuYzoxNTc4OiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXG5uZXQvaXB2NC9pZ21wLmMtMTU3OS1cdHRpbWVyX3NldHVwKFx1MDAyNmltLVx1MDAzZXRpbWVyLCBpZ21wX3RpbWVyX2V4cGlyZSwgMCk7XG4tLVxubmV0L2lwdjQvaWdtcC5jLTE1ODctXG5uZXQvaXB2NC9pZ21wLmM6MTU4ODojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxubmV0L2lwdjQvaWdtcC5jLTE1ODktXHRpZ21wdjNfZGVsX2RlbHJlYyhpbl9kZXYsIGltKTtcbi0tXG5uZXQvaXB2NC9pZ21wLmM9MTc1Nj1zdGF0aWMgdm9pZCBpcF9tY19yZWpvaW5fZ3JvdXBzKHN0cnVjdCBpbl9kZXZpY2UgKmluX2Rldilcbm5ldC9pcHY0L2lnbXAuYy0xNzU3LXtcbm5ldC9pcHY0L2lnbXAuYzoxNzU4OiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXG5uZXQvaXB2NC9pZ21wLmMtMTc1OS1cdHN0cnVjdCBpcF9tY19saXN0ICppbTtcbi0tXG5uZXQvaXB2NC9pZ21wLmM9MTgzOD12b2lkIGlwX21jX3JlbWFwKHN0cnVjdCBpbl9kZXZpY2UgKmluX2Rldilcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTg0NC1cdGZvcl9lYWNoX3BtY19ydG5sKGluX2RldiwgcG1jKSB7XG5uZXQvaXB2NC9pZ21wLmM6MTg0NTojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxubmV0L2lwdjQvaWdtcC5jLTE4NDYtXHRcdGlnbXB2M19kZWxfZGVscmVjKGluX2RldiwgcG1jKTtcbi0tXG5uZXQvaXB2NC9pZ21wLmM9MTg1ND12b2lkIGlwX21jX2Rvd24oc3RydWN0IGluX2RldmljZSAqaW5fZGV2KVxuLS1cbm5ldC9pcHY0L2lnbXAuYy0xODYyLVxubmV0L2lwdjQvaWdtcC5jOjE4NjM6I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1Rcbm5ldC9pcHY0L2lnbXAuYy0xODY0LVx0V1JJVEVfT05DRShpbl9kZXYtXHUwMDNlbXJfaWZjX2NvdW50LCAwKTtcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTg3NC1cbm5ldC9pcHY0L2lnbXAuYzoxODc1OiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXG5uZXQvaXB2NC9pZ21wLmMtMTg3Ni1zdGF0aWMgdm9pZCBpcF9tY19yZXNldChzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpXG4tLVxubmV0L2lwdjQvaWdtcC5jPTE4OTA9dm9pZCBpcF9tY19pbml0X2RldihzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpXG4tLVxubmV0L2lwdjQvaWdtcC5jLTE4OTMtXG5uZXQvaXB2NC9pZ21wLmM6MTg5NDojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxubmV0L2lwdjQvaWdtcC5jLTE4OTUtXHR0aW1lcl9zZXR1cChcdTAwMjZpbl9kZXYtXHUwMDNlbXJfZ3FfdGltZXIsIGlnbXBfZ3FfdGltZXJfZXhwaXJlLCAwKTtcbi0tXG5uZXQvaXB2NC9pZ21wLmM9MTkwNT12b2lkIGlwX21jX3VwKHN0cnVjdCBpbl9kZXZpY2UgKmluX2Rldilcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTkxNC1cdGZvcl9lYWNoX3BtY19ydG5sKGluX2RldiwgcG1jKSB7XG5uZXQvaXB2NC9pZ21wLmM6MTkxNTojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxubmV0L2lwdjQvaWdtcC5jLTE5MTYtXHRcdGlnbXB2M19kZWxfZGVscmVjKGluX2RldiwgcG1jKTtcbi0tXG5uZXQvaXB2NC9pZ21wLmM9MTkyNj12b2lkIGlwX21jX2Rlc3Ryb3lfZGV2KHN0cnVjdCBpbl9kZXZpY2UgKmluX2Rldilcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMTkzMy1cdGlwX21jX2Rvd24oaW5fZGV2KTtcbm5ldC9pcHY0L2lnbXAuYzoxOTM0OiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXG5uZXQvaXB2NC9pZ21wLmMtMTkzNS1cdGlnbXB2M19jbGVhcl9kZWxyZWMoaW5fZGV2KTtcbi0tXG5uZXQvaXB2NC9pZ21wLmM9MTk4Mz1zdGF0aWMgaW50IGlwX21jX2RlbDFfc3JjKHN0cnVjdCBpcF9tY19saXN0ICpwbWMsIGludCBzZm1vZGUsXG4tLVxubmV0L2lwdjQvaWdtcC5jLTIwMDMtXHRpZiAoIXBzZi1cdTAwM2VzZl9jb3VudFtNQ0FTVF9JTkNMVURFXSBcdTAwMjZcdTAwMjYgIXBzZi1cdTAwM2VzZl9jb3VudFtNQ0FTVF9FWENMVURFXSkge1xubmV0L2lwdjQvaWdtcC5jOjIwMDQ6I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1Rcbm5ldC9pcHY0L2lnbXAuYy0yMDA1LVx0XHRzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYgPSBwbWMtXHUwMDNlaW50ZXJmYWNlO1xuLS1cbm5ldC9pcHY0L2lnbXAuYy0yMDEzLVx0XHRcdHBtYy1cdTAwM2Vzb3VyY2VzID0gcHNmLVx1MDAzZXNmX25leHQ7XG5uZXQvaXB2NC9pZ21wLmM6MjAxNDojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxubmV0L2lwdjQvaWdtcC5jLTIwMTUtXHRcdGlmIChwc2YtXHUwMDNlc2Zfb2xkaW4gXHUwMDI2XHUwMDI2XG4tLVxubmV0L2lwdjQvaWdtcC5jLTIwMjctXG5uZXQvaXB2NC9pZ21wLmM6MjAyODojaWZuZGVmIENPTkZJR19JUF9NVUxUSUNBU1Rcbm5ldC9pcHY0L2lnbXAuYy0yMDI5LSNkZWZpbmUgaWdtcF9pZmNfZXZlbnQoeClcdGRvIHsgfSB3aGlsZSAoMClcbi0tXG5uZXQvaXB2NC9pZ21wLmM9MjAzMj1zdGF0aWMgaW50IGlwX21jX2RlbF9zcmMoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgKnBtY2EsIGludCBzZm1vZGUsXG4tLVxubmV0L2lwdjQvaWdtcC5jLTIwNTItXHRyY3VfcmVhZF91bmxvY2soKTtcbm5ldC9pcHY0L2lnbXAuYzoyMDUzOiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXG5uZXQvaXB2NC9pZ21wLmMtMjA1NC1cdHNmX21hcmtzdGF0ZShwbWMpO1xuLS1cbm5ldC9pcHY0L2lnbXAuYy0yMDcyLVx0ICAgIHBtYy1cdTAwM2VzZmNvdW50W01DQVNUX0lOQ0xVREVdKSB7XG5uZXQvaXB2NC9pZ21wLmM6MjA3MzojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxubmV0L2lwdjQvaWdtcC5jLTIwNzQtXHRcdHN0cnVjdCBpcF9zZl9saXN0ICpwc2Y7XG4tLVxubmV0L2lwdjQvaWdtcC5jLTIwNzktXHRcdHBtYy1cdTAwM2VzZm1vZGUgPSBNQ0FTVF9JTkNMVURFO1xubmV0L2lwdjQvaWdtcC5jOjIwODA6I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1Rcbm5ldC9pcHY0L2lnbXAuYy0yMDgxLVx0XHRwbWMtXHUwMDNlY3Jjb3VudCA9IGluX2Rldi1cdTAwM2Vtcl9xcnYgPzogUkVBRF9PTkNFKG5ldC1cdTAwM2VpcHY0LnN5c2N0bF9pZ21wX3Fydik7XG4tLVxubmV0L2lwdjQvaWdtcC5jPTIwOTg9c3RhdGljIGludCBpcF9tY19hZGQxX3NyYyhzdHJ1Y3QgaXBfbWNfbGlzdCAqcG1jLCBpbnQgc2Ztb2RlLFxuLS1cbm5ldC9pcHY0L2lnbXAuYy0yMTI1LVxubmV0L2lwdjQvaWdtcC5jOjIxMjY6I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1Rcbm5ldC9pcHY0L2lnbXAuYy0yMTI3LXN0YXRpYyB2b2lkIHNmX21hcmtzdGF0ZShzdHJ1Y3QgaXBfbWNfbGlzdCAqcG1jKVxuLS1cbm5ldC9pcHY0L2lnbXAuYz0yMjA0PXN0YXRpYyBpbnQgaXBfbWNfYWRkX3NyYyhzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYsIF9fYmUzMiAqcG1jYSwgaW50IHNmbW9kZSxcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMjIyNS1cbm5ldC9pcHY0L2lnbXAuYzoyMjI2OiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXG5uZXQvaXB2NC9pZ21wLmMtMjIyNy1cdHNmX21hcmtzdGF0ZShwbWMpO1xuLS1cbm5ldC9pcHY0L2lnbXAuYy0yMjQ1LVx0fSBlbHNlIGlmIChpc2V4Y2x1ZGUgIT0gKHBtYy1cdTAwM2VzZmNvdW50W01DQVNUX0VYQ0xVREVdICE9IDApKSB7XG5uZXQvaXB2NC9pZ21wLmM6MjI0NjojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxubmV0L2lwdjQvaWdtcC5jLTIyNDctXHRcdHN0cnVjdCBpcF9zZl9saXN0ICpwc2Y7XG4tLVxubmV0L2lwdjQvaWdtcC5jLTIyNTYtXHRcdFx0cG1jLVx1MDAzZXNmbW9kZSA9IE1DQVNUX0lOQ0xVREU7XG5uZXQvaXB2NC9pZ21wLmM6MjI1NzojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxubmV0L2lwdjQvaWdtcC5jLTIyNTgtXHRcdC8qIGVsc2Ugbm8gZmlsdGVyczsga2VlcCBvbGQgbW9kZSBmb3IgcmVwb3J0cyAqL1xuLS1cbm5ldC9pcHY0L2lnbXAuYz0yOTcxPXN0YXRpYyBpbnQgaWdtcF9tY19zZXFfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnNlcSwgdm9pZCAqdilcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMjk4Mi1cbm5ldC9pcHY0L2lnbXAuYzoyOTgzOiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXG5uZXQvaXB2NC9pZ21wLmMtMjk4NC1cdFx0cXVlcmllciA9IElHTVBfVjFfU0VFTihzdGF0ZS1cdTAwM2Vpbl9kZXYpID8gXCYjMzQ7VjFcJiMzNDsgOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxODo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTQ2MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgSUdNUCBUaW1lciBNYW5hZ2VtZW50KioKClJpZ2h0LCBzbyBgQ09ORklHX0lQX01VTFRJQ0FTVGAgZW5hYmxlcyBJR01QIHRpbWVycyBhbmQgcmVwb3J0IGZ1bmN0aW9uYWxpdHkuIFRoYXQmIzM5O3Mgc3RhbmRhcmQgZmFyZS4gQnV0LCBhIG5hZ2dpbmcgcXVlc3Rpb24gcG9wcGVkIGludG8gbXkgaGVhZC4uLiBJIHRob3VnaHQgSSByZW1lbWJlcmVkIHNlZWluZyBzb21ldGhpbmcgb2RkIGluIHRoZSBrZXJuZWwgY29kZS4gU3BlY2lmaWNhbGx5LCB0aGUgYGlnbXBfc3RvcF90aW1lcmAgZnVuY3Rpb24uIElzIGl0IGRlZmluZWQgY29uZGl0aW9uYWxseSwgYmFzZWQgb24gdGhhdCBjb25maWd1cmF0aW9uIG9wdGlvbiwgb3IgaXMgaXQgYWx3YXlzIHByZXNlbnQgaW4gYG5ldC9pcHY0L2lnbXAuY2A/IEl0JiMzOTtzIGJlZW4gYSB3aGlsZSBzaW5jZSBJJiMzOTt2ZSBkaXZlZCBkZWVwIGludG8gdGhhdCBjb2RlLCBzbyBJIHNob3VsZCBwcm9iYWJseSB2ZXJpZnkgdGhhdCBhc3N1bXB0aW9uLiBJIHdhbnQgdG8gYmUgY2VydGFpbiBhYm91dCB0aGUgcHJlc2VuY2Ugb3IgYWJzZW5jZSBvZiB0aGF0IGZ1bmN0aW9uLiBMZXQmIzM5O3MgcHVsbCB1cCB0aGUgc291cmNlIGFuZCBkb3VibGUtY2hlY2suIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyB0aGF0IHRpbWVyIGlzIG1hbmFnZWQgZnJvbSBhIHN5c3RlbXMgcHJvZ3JhbW1pbmcgc3RhbmRwb2ludCwgc28gY29uZGl0aW9uYWwgY29tcGlsYXRpb24gbWlnaHQgaGF2ZSBzb21lIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucyBvciB1bmludGVuZGVkIHNpZGUgZWZmZWN0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTg6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWdtcF9zdG9wX3RpbWVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvaWdtcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L2lnbXAuYz0yMDE9c3RhdGljIHZvaWQgaXBfc2ZfbGlzdF9jbGVhcl9hbGwoc3RydWN0IGlwX3NmX2xpc3QgKnBzZilcbi0tXG5uZXQvaXB2NC9pZ21wLmMtMjE3LVxubmV0L2lwdjQvaWdtcC5jOjIxODpzdGF0aWMgdm9pZCBpZ21wX3N0b3BfdGltZXIoc3RydWN0IGlwX21jX2xpc3QgKmltKVxubmV0L2lwdjQvaWdtcC5jLTIxOS17XG4tLVxubmV0L2lwdjQvaWdtcC5jPTk0OT1zdGF0aWMgYm9vbCBpZ21wX2hlYXJkX3JlcG9ydChzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYsIF9fYmUzMiBncm91cClcbi0tXG5uZXQvaXB2NC9pZ21wLmMtOTY0LVx0XHRpZiAoaW0tXHUwMDNlbXVsdGlhZGRyID09IGdyb3VwKSB7XG5uZXQvaXB2NC9pZ21wLmM6OTY1Olx0XHRcdGlnbXBfc3RvcF90aW1lcihpbSk7XG5uZXQvaXB2NC9pZ21wLmMtOTY2LVx0XHRcdGJyZWFrO1xuLS1cbm5ldC9pcHY0L2lnbXAuYz0xMzIyPXN0YXRpYyB2b2lkIF9faWdtcF9ncm91cF9kcm9wcGVkKHN0cnVjdCBpcF9tY19saXN0ICppbSwgZ2ZwX3QgZ2ZwKVxuLS1cbm5ldC9pcHY0L2lnbXAuYy0xMzQyLVx0cmVwb3J0ZXIgPSBSRUFEX09OQ0UoaW0tXHUwMDNlcmVwb3J0ZXIpO1xubmV0L2lwdjQvaWdtcC5jOjEzNDM6XHRpZ21wX3N0b3BfdGltZXIoaW0pO1xubmV0L2lwdjQvaWdtcC5jLTEzNDQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMDkzCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKk5hdmlnYXRpbmcgdGhlIENvZGViYXNlOiBGaW5kaW5nIGBpZ21wX3N0b3BfdGltZXJgKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgYGlnbXBfc3RvcF90aW1lcmAgZnVuY3Rpb24gaXMgYmVpbmcgaGFuZGxlZC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIHBpbnBvaW50IGl0cyBkZWZpbml0aW9uLiBXaGVyZSBpcyB0aGlzIHRoaW5nIGFjdHVhbGx5ICpkZWNsYXJlZCo/IFRoYXQmIzM5O3MgdGhlIGNydWNpYWwgZmlyc3Qgc3RlcC4gSSBuZWVkIHRvIHRyYWNlIGl0cyBvcmlnaW5zLCB1bmRlcnN0YW5kIGl0cyBzY29wZSwgYW5kIHNlZSB3aGF0IHRoZSB1bmRlcmx5aW5nIGRhdGEgc3RydWN0dXJlcyBhcmUuIE9uY2UgSSBoYXZlIHRoZSBkZWZpbml0aW9uIGluIGhhbmQsIEkgY2FuIGJlZ2luIHRvIGFzc2VzcyBpdHMgcm9sZSB3aXRoaW4gdGhlIGxhcmdlciBJR01QIGZyYW1ld29yayBhbmQgaG93IGl0IGNvbnRyaWJ1dGVzIHRvIG11bHRpY2FzdCBtYW5hZ2VtZW50LiBMZXQmIzM5O3Mgc2VlIGlmIEkgY2FuIHVzZSBteSBJREUgdG8ganVtcCByaWdodCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDUgMTg6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2NC9pZ21wLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIxMDpcdH1cbiAyMTE6XHRcbiAyMTI6XHQjaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxuIDIxMzpcdFxuIDIxNDpcdC8qXG4gMjE1Olx0ICpcdFRpbWVyIG1hbmFnZW1lbnRcbiAyMTY6XHQgKi9cbiAyMTc6XHRcbiAyMTg6XHRzdGF0aWMgdm9pZCBpZ21wX3N0b3BfdGltZXIoc3RydWN0IGlwX21jX2xpc3QgKmltKVxuIDIxOTpcdHtcbiAyMjA6XHRcdGJvb2wgcHV0ID0gZmFsc2U7XG4gMjIxOlx0XG4gMjIyOlx0XHRzcGluX2xvY2tfYmgoXHUwMDI2aW0tXHUwMDNlbG9jayk7XG4gMjIzOlx0XHRpZiAodGltZXJfZGVsZXRlKFx1MDAyNmltLVx1MDAzZXRpbWVyKSlcbiAyMjQ6XHRcdFx0cHV0ID0gdHJ1ZTtcbiAyMjU6XHRcdFdSSVRFX09OQ0UoaW0tXHUwMDNldG1fcnVubmluZywgMCk7XG4gMjI2Olx0XHRXUklURV9PTkNFKGltLVx1MDAzZXJlcG9ydGVyLCAwKTtcbiAyMjc6XHRcdGltLVx1MDAzZXVuc29saWNpdF9jb3VudCA9IDA7XG4gMjI4Olx0XHRzcGluX3VubG9ja19iaChcdTAwMjZpbS1cdTAwM2Vsb2NrKTtcbiAyMjk6XHRcbiAyMzA6XHRcdGlmIChwdXQpXG4gMjMxOlx0XHRcdGlwX21hX3B1dChpbSk7XG4gMjMyOlx0fVxuIDIzMzpcdFxuIDIzNDpcdC8qIEl0IG11c3QgYmUgY2FsbGVkIHdpdGggbG9ja2VkIGltLVx1MDAzZWxvY2sgKi9cbiAyMzU6XHRzdGF0aWMgdm9pZCBpZ21wX3N0YXJ0X3RpbWVyKHN0cnVjdCBpcF9tY19saXN0ICppbSwgaW50IG1heF9kZWxheSlcbiAyMzY6XHR7XG4gMjM3Olx0XHRpbnQgdHYgPSBnZXRfcmFuZG9tX3UzMl9iZWxvdyhtYXhfZGVsYXkpO1xuIDIzODpcdFxuIDIzOTpcdFx0V1JJVEVfT05DRShpbS1cdTAwM2V0bV9ydW5uaW5nLCAxKTtcbiAyNDA6XHRcdGlmIChyZWZjb3VudF9pbmNfbm90X3plcm8oXHUwMDI2aW0tXHUwMDNlcmVmY250KSkge1xuIDI0MTpcdFx0XHRpZiAobW9kX3RpbWVyKFx1MDAyNmltLVx1MDAzZXRpbWVyLCBqaWZmaWVzICYjNDM7IHR2ICYjNDM7IDIpKVxuIDI0MjpcdFx0XHRcdGlwX21hX3B1dChpbSk7XG4gMjQzOlx0XHR9XG4gMjQ0Olx0fVxuIDI0NTpcdFxuIDI0NjpcdHN0YXRpYyB2b2lkIGlnbXBfZ3Ffc3RhcnRfdGltZXIoc3RydWN0IGluX2RldmljZSAqaW5fZGV2KVxuIDI0NzpcdHtcbiAyNDg6XHRcdGludCB0diA9IGdldF9yYW5kb21fdTMyX2JlbG93KFJFQURfT05DRShpbl9kZXYtXHUwMDNlbXJfbWF4ZGVsYXkpKTtcbiAyNDk6XHRcdHVuc2lnbmVkIGxvbmcgZXhwID0gamlmZmllcyAmIzQzOyB0diAmIzQzOyAyO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxODo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDg5MQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNdWx0aWNhc3QgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIG11bHRpY2FzdC1yZWxhdGVkIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5IGBpZ21wX3N0b3BfdGltZXJgIGFuZCB0aGUgb3RoZXJzIHdpdGhpbiB0aGF0IGJsb2NrLiBUaGUgY29kZSBpcyBjbGVhcmx5IHVzaW5nIGFuIGAjaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVGAgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZS4gVGhhdCYjMzk7cyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgaW5kaWNhdG9yIOKAkyBgQ09ORklHX0lQX01VTFRJQ0FTVGAgKmhhcyogdG8gYmUgZW5hYmxlZCBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5IHRvIGJlIGNvbXBpbGVkLiBObyBzdXJwcmlzZXMgdGhlcmUuCgpOb3csIEkmIzM5O20gc2hpZnRpbmcgZ2VhcnMgYW5kIHRoaW5raW5nIGFib3V0IElQdjYgbXVsdGljYXN0IHN1cHBvcnQuIEkgbmVlZCB0byBjaGVjayBvdXQgYG5ldC9pcHY2L21jYXN0LmNgLiBIbW0sIEkgcmVjYWxsIHNlZWluZyBzb21lIGRlcGVuZGVuY2llcyB0aGVyZS4uLiBBaCwgeWVzISBgbWNhc3Qub2AgaXMgYnVpbHQgd2hlbiBgQ09ORklHX0lQVjZgIGlzIGVuYWJsZWQuIFRoYXQgY29uZmlybXMgdGhlIGRlcGVuZGVuY3kgb24gSVB2Ni4gQnV0IGlzIGBtY2FzdC5jYCBlbnRpcmVseSBkZXBlbmRlbnQsIG9yIGFyZSB0aGVyZSBtb3JlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24ga25vYnMgaW5zaWRlIGl0PyBJJiMzOTtsbCBuZWVkIHRvIGRpZyBhIGxpdHRsZSBkZWVwZXIgaW50byB0aGUgZmlsZSBpdHNlbGYuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9tY2FzdC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L21jYXN0LmM9MjkwOT1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGlnbXA2X25ldGRldl9ub3RpZmllciA9IHtcbi0tXG5uZXQvaXB2Ni9tY2FzdC5jLTI5MTItXG5uZXQvaXB2Ni9tY2FzdC5jOjI5MTM6I2lmZGVmIENPTkZJR19QUk9DX0ZTXG5uZXQvaXB2Ni9tY2FzdC5jLTI5MTQtc3RydWN0IGlnbXA2X21jX2l0ZXJfc3RhdGUge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNSAxODo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTMzNAoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDUwNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFN0cmF0ZWd5IGZvciBgbmV0L2lwdjYvbWNhc3QuY2AqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRGl2aW5nIGludG8gYG5ldC9pcHY2L21jYXN0LmNgLCBJJiMzOTt2ZSBjb25maXJtZWQgdGhlcmUgYXJlIG5vIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHdpdGhpbiB0aGUgZmlsZSBpdHNlbGYgKm90aGVyKiB0aGFuIGBDT05GSUdfUFJPQ19GU2AuIFRoYXQgbmFycm93cyBkb3duIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgdG8gYElQX01VTFRJQ0FTVGAgYW5kIGBJUFY2YCBhcyB0aGUgZXNzZW50aWFsIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBtb2R1bGUuCgpOb3csIHRoZSBjb3JlIG9mIHRoaXMgYXNzZXNzbWVudCBpcyB0byBkZXRlcm1pbmUgdGhlIG9wdGltYWwgZm9jdXMgZm9yIGZ1enppbmcgZWZmb3J0cy4gVGhlIGRpZmYgaWRlbnRpZmllcyBhIHNldCBvZiBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gbW9kaWZpZWQsIGFuZCB0aGF0IGlzIHdoZXJlIHRoZSBleHBsb3JhdGlvbiB3aWxsIGNvbnRpbnVlOgoKKiAgIGBpZ21wX3N0b3BfdGltZXJgCiogICBgaWdtcF9ncV9zdGFydF90aW1lcmAKKiAgIGBpZ21wX2lmY19zdGFydF90aW1lcmAKKiAgIGBpZ21wX21vZF90aW1lcmAKKiAgIGBtbGRfZ3Ffc3RhcnRfd29ya2AKKiAgIGBtbGRfZ3Ffc3RvcF93b3JrYAoqICAgYG1sZF9pZmNfc3RhcnRfd29ya2AKKiAgIGBtbGRfaWZjX3N0b3Bfd29ya2AKKiAgIGBtbGRfZGFkX3N0YXJ0X3dvcmtgCiogICBgbWxkX2RhZF9zdG9wX3dvcmtgCiogICBgaWdtcDZfZXZlbnRfcXVlcnlgCiogICBgaWdtcDZfZXZlbnRfcmVwb3J0YAoKVGhlc2UgdHdlbHZlIGZ1bmN0aW9ucyBqdW1wIG91dCBpbW1lZGlhdGVseSBhcyBwcmltZSBjYW5kaWRhdGVzIGZvciBmdXp6aW5nIHdpdGggYEZvY3VzU3ltYm9sc2AuIFRoZXkgcmVwcmVzZW50IGtleSBhcmVhcyB3aGVyZSBtdWx0aWNhc3QgYmVoYXZpb3IgaGFzIGJlZW4gdG91Y2hlZC4gVGhlIGFpbSBpcyB0byB2ZXJpZnkgdGhhdCB0aGV5IGFyZSByZWFjaGFibGUgYW5kIG5vdCB0cml2aWFsbHkgZ2VuZXJpYy4KCkZyb20gdGhlIGNvZGUsIGBpZ21wNl9ldmVudF9xdWVyeWAgYW5kIGBpZ21wNl9ldmVudF9yZXBvcnRgIGFyZSBjbGVhcmx5IHRyaWdnZXJlZCB1cG9uIHRoZSByZWNlcHRpb24gb2YgSUdNUC9NTEQgcGFja2V0cywgbWFraW5nIHRoZW0gZXhjZWxsZW50IHRhcmdldHMuIGBpZ21wX3N0b3BfdGltZXJgLCBgaWdtcF9ncV9zdGFydF90aW1lcmAsIGBpZ21wX2lmY19zdGFydF90aW1lcmAsIGFuZCBgaWdtcF9tb2RfdGltZXJgIGFyZSByZWxhdGVkIHRvIElHTVAgc3RhdGUgdHJhbnNpdGlvbnMsIGFuZCBzaW1pbGFybHksIGBtbGRfZ3Ffc3RhcnRfd29ya2AsIGBtbGRfaWZjX3N0YXJ0X3dvcmtgLCBhbmQgYG1sZF9kYWRfc3RhcnRfd29ya2AgYXJlIGxpbmtlZCB0byBNTEQgc3RhdGUgdHJhbnNpdGlvbnMuCgpTbywgdGhlIGxpc3QgdG8gdGFyZ2V0IGlzOgoKKiAgIGBpZ21wX3N0b3BfdGltZXJgCiogICBgaWdtcF9ncV9zdGFydF90aW1lcmAKKiAgIGBpZ21wX2lmY19zdGFydF90aW1lcmAKKiAgIGBpZ21wX21vZF90aW1lcmAKKiAgIGBtbGRfZ3Ffc3RhcnRfd29ya2AKKiAgIGBtbGRfZ3Ffc3RvcF93b3JrYAoqICAgYG1sZF9pZmNfc3RhcnRfd29ya2AKKiAgIGBtbGRfaWZjX3N0b3Bfd29ya2AKKiAgIGBtbGRfZGFkX3N0YXJ0X3dvcmtgCiogICBgbWxkX2RhZF9zdG9wX3dvcmtgCiogICBgaWdtcDZfZXZlbnRfcXVlcnlgCiogICBgaWdtcDZfZXZlbnRfcmVwb3J0YAoKSSBuZWVkIHRvIGNvbmZpcm0gdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgc3VidGx5IG1vZGlmaWVkIGZ1bmN0aW9ucyBoaWRpbmcgaW4gdGhlIGRpZmYgdGhhdCBtaWdodCBhbHNvIGJlIHJlbGV2YW50LCBzbyBJJiMzOTtsbCByZXZpZXcgdGhlIHBhdGNoIGFnYWluIGZvciBhbnkgbWlzc2VkIGNhbmRpZGF0ZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2luX2Rldl9ob2xkX3NhZmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2luZXRkZXZpY2UuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2luZXRkZXZpY2UuaD0yODc9c3RhdGljIGlubGluZSB2b2lkIGluX2Rldl9wdXQoc3RydWN0IGluX2RldmljZSAqaWRldilcbi0tXG5pbmNsdWRlL2xpbnV4L2luZXRkZXZpY2UuaC0yOTUtXG5pbmNsdWRlL2xpbnV4L2luZXRkZXZpY2UuaDoyOTY6c3RhdGljIGlubGluZSBib29sIGluX2Rldl9ob2xkX3NhZmUoc3RydWN0IGluX2RldmljZSAqaWRldilcbmluY2x1ZGUvbGludXgvaW5ldGRldmljZS5oLTI5Ny17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNjQ2CgkJCQkJCQlvdXRwdXQ6IDMxMAoJCQkJCQkJdGhvdWdodHM6IDQzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBOZXR3b3JraW5nIFBhdGNoKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCwgbXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYGluX2Rldl9ob2xkX3NhZmVgIGFuZCBgaW42X2Rldl9ob2xkX3NhZmVgIGFyZSBpbmxpbmUgZnVuY3Rpb25zLiBUaHVzLCB0aGV5IGRvbiYjMzk7dCByZWFsbHkgbmVlZCB0byBiZSBsaXN0ZWQgaW4gYEZvY3VzU3ltYm9sc2AuIFRoZXkgYXJlIGJlaW5nIHVzZWQgdG8gZWxpbWluYXRlIGEgcmFjZSBjb25kaXRpb24g4oCTIHRoYXQmIzM5O3MgdGhlIGNvcmUgb2YgdGhpcyBjaGFuZ2UuIEl0IHNlZW1zIGxpa2UgdGhlIGV4aXN0aW5nIGNvZGUgaGFkIGEgcHJvYmxlbSB3aGVyZSBhIHRpbWVyIG9yIHdvcmtxdWV1ZSBjb3VsZCBnZXQgc2NoZWR1bGVkIG9uIGEgZGV2aWNlIChgaW5fZGV2YCBvciBgaW5ldDZfZGV2YCkgdGhhdCYjMzk7cyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuIFRoaXMgaXMgYSBjbGFzc2ljIHJlY2lwZSBmb3IgYSB1c2UtYWZ0ZXItZnJlZSBvciByZWZjb3VudCBpc3N1ZXMuIFRoZSBmaXggbGV2ZXJhZ2VzIGBpbl9kZXZfaG9sZF9zYWZlYCAod2hpY2ggcmVsaWVzIG9uIGByZWZjb3VudF9pbmNfbm90X3plcm9gKSB0byBwcmV2ZW50IHRoZSByZWZlcmVuY2UgZnJvbSBiZWluZyB0YWtlbiBpZiB0aGUgZGV2aWNlIGlzIGFscmVhZHkgb24gaXRzIHdheSBvdXQuCgpGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBtb2RpZmljYXRpb24gaW4gY29yZSBuZXR3b3JraW5nIGxvZ2ljIOKAkyBzcGVjaWZpY2FsbHkgYXJvdW5kIElHTVAgYW5kIE1MRCB0aW1lciBhbmQgd29ya3F1ZXVlIG1hbmFnZW1lbnQuIFRoZSBjaGFuZ2UgaW52b2x2ZXMgYGluX2Rldl9ob2xkX3NhZmVgIGFuZCB0aGUgc2FmZXIgY291bnRlcnBhcnQsIHNvIGRlZmluaXRlbHkgc29tZXRoaW5nIHRvIGZ1enouCgpMZXQgbWUgYnJlYWsgZG93biB3aGF0IEkgc2VlIGFzIHRoZSBpbXBvcnRhbnQgcGllY2VzOgoKKiAgICoqV29ydGhGdXp6aW5nKio6IEFic29sdXRlbHkuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIHdlIG5lZWQgdG8gdmVyaWZ5IGl0cyBpbXBhY3Qgb24gc3RhYmlsaXR5IGFuZCBjb3JyZWN0bmVzcy4KKiAgICoqRm9jdXMgU3ltYm9scyoqOiBJJiMzOTtkIHBheSBleHRyYSBhdHRlbnRpb24gdG8gYGlnbXBfc3RvcF90aW1lcmAsIGBpZ21wX2dxX3N0YXJ0X3RpbWVyYCwgYGlnbXBfaWZjX3N0YXJ0X3RpbWVyYCwgYGlnbXBfbW9kX3RpbWVyYCwgYG1sZF9ncV9zdGFydF93b3JrYCwgYG1sZF9ncV9zdG9wX3dvcmtgLCBgbWxkX2lmY19zdGFydF93b3JrYCwgYG1sZF9pZmNfc3RvcF93b3JrYCwgYG1sZF9kYWRfc3RhcnRfd29ya2AsIGBtbGRfZGFkX3N0b3Bfd29ya2AsIGBpZ21wNl9ldmVudF9xdWVyeWAsIGFuZCBgaWdtcDZfZXZlbnRfcmVwb3J0YC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgZGlyZWN0bHkgdG91Y2hlZCBieSB0aGUgcGF0Y2ggYW5kIHRoYXQgbWFuYWdlIGNyaXRpY2FsIHRpbWVyIGFuZCB3b3JrcXVldWUgb3BlcmF0aW9ucy4KKiAgICoqRW5hYmxlIENvbmZpZ3MqKjogYElQX01VTFRJQ0FTVGAgYW5kIGBJUFY2YCBhcmUgcmVsZXZhbnQgYmVjYXVzZSB0aGUgcGF0Y2ggaW1wYWN0cyBJR01QIGFuZCBNTEQsIHdoaWNoIGFyZSBjb3JlIGNvbXBvbmVudHMgb2YgbXVsdGljYXN0IGFuZCBJUHY2IGZ1bmN0aW9uYWxpdHkgcmVzcGVjdGl2ZWx5LgoKRXNzZW50aWFsbHksIHRoaXMgcGF0Y2ggbW9kaWZpZXMgdGhlIHdheSBJR01QIGFuZCBNTEQgdGltZXJzIGFuZCB3b3JrcXVldWVzIGFjcXVpcmUgYW5kIHJlbGVhc2UgZGV2aWNlIHJlZmVyZW5jZXMsIGFuZCBkZWZlcnMgYGlwX21hX3B1dGAgYW5kIGBpbjZfZGV2X3B1dGAgaW4gY2VydGFpbiBzY2VuYXJpb3MuIFRoaXMgcHJvdGVjdHMgYWdhaW5zdCB1c2UtYWZ0ZXItZnJlZSBidWdzIHRoYXQgY291bGQgYXJpc2Ugd2hlbiBkZXZpY2VzIGFyZSBiZWluZyBkZXN0cm95ZWQsIHNvIGl0IGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBuZWVkcyB0byBiZSBleHRlbnNpdmVseSBmdXp6ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA1IDE4OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9NVUxUSUNBU1QmIzM0OywKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lnbXBfc3RvcF90aW1lciYjMzQ7LAogICAgJiMzNDtpZ21wX2dxX3N0YXJ0X3RpbWVyJiMzNDssCiAgICAmIzM0O2lnbXBfaWZjX3N0YXJ0X3RpbWVyJiMzNDssCiAgICAmIzM0O2lnbXBfbW9kX3RpbWVyJiMzNDssCiAgICAmIzM0O21sZF9ncV9zdGFydF93b3JrJiMzNDssCiAgICAmIzM0O21sZF9ncV9zdG9wX3dvcmsmIzM0OywKICAgICYjMzQ7bWxkX2lmY19zdGFydF93b3JrJiMzNDssCiAgICAmIzM0O21sZF9pZmNfc3RvcF93b3JrJiMzNDssCiAgICAmIzM0O21sZF9kYWRfc3RhcnRfd29yayYjMzQ7LAogICAgJiMzNDttbGRfZGFkX3N0b3Bfd29yayYjMzQ7LAogICAgJiMzNDtpZ21wNl9ldmVudF9xdWVyeSYjMzQ7LAogICAgJiMzNDtpZ21wNl9ldmVudF9yZXBvcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgSUdNUCBhbmQgTUxEIHRpbWVyIGFuZCB3b3JrcXVldWUgaGFuZGxpbmcgdG8gdXNlIGBpbl9kZXZfaG9sZF9zYWZlYCBhbmQgYGluNl9kZXZfaG9sZF9zYWZlYCAod2hpY2ggdXNlIGByZWZjb3VudF9pbmNfbm90X3plcm9gKSBpbnN0ZWFkIG9mIGBpbl9kZXZfaG9sZGAgYW5kIGBpbjZfZGV2X2hvbGRgLiBJdCBhbHNvIGRlZmVycyBgaXBfbWFfcHV0YCBhbmQgYGluNl9kZXZfcHV0YCBvdXRzaWRlIG9mIHNwaW5sb2NrcyBpbiBzb21lIGNhc2VzLiBUaGlzIGZpeGVzIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByZWZjb3VudCBidWdzIHdoZW4gdGltZXJzL3dvcmtxdWV1ZXMgYXJlIHNjaGVkdWxlZCB3aGlsZSB0aGUgZGV2aWNlIGlzIGJlaW5nIGRlc3Ryb3llZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29ya2luZyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX01VTFRJQ0FTVCYjMzQ7LAogICAgJiMzNDtJUFY2JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWdtcF9zdG9wX3RpbWVyJiMzNDssCiAgICAmIzM0O2lnbXBfZ3Ffc3RhcnRfdGltZXImIzM0OywKICAgICYjMzQ7aWdtcF9pZmNfc3RhcnRfdGltZXImIzM0OywKICAgICYjMzQ7aWdtcF9tb2RfdGltZXImIzM0OywKICAgICYjMzQ7bWxkX2dxX3N0YXJ0X3dvcmsmIzM0OywKICAgICYjMzQ7bWxkX2dxX3N0b3Bfd29yayYjMzQ7LAogICAgJiMzNDttbGRfaWZjX3N0YXJ0X3dvcmsmIzM0OywKICAgICYjMzQ7bWxkX2lmY19zdG9wX3dvcmsmIzM0OywKICAgICYjMzQ7bWxkX2RhZF9zdGFydF93b3JrJiMzNDssCiAgICAmIzM0O21sZF9kYWRfc3RvcF93b3JrJiMzNDssCiAgICAmIzM0O2lnbXA2X2V2ZW50X3F1ZXJ5JiMzNDssCiAgICAmIzM0O2lnbXA2X2V2ZW50X3JlcG9ydCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBJR01QIGFuZCBNTEQgdGltZXIgYW5kIHdvcmtxdWV1ZSBoYW5kbGluZyB0byB1c2UgYGluX2Rldl9ob2xkX3NhZmVgIGFuZCBgaW42X2Rldl9ob2xkX3NhZmVgICh3aGljaCB1c2UgYHJlZmNvdW50X2luY19ub3RfemVyb2ApIGluc3RlYWQgb2YgYGluX2Rldl9ob2xkYCBhbmQgYGluNl9kZXZfaG9sZGAuIEl0IGFsc28gZGVmZXJzIGBpcF9tYV9wdXRgIGFuZCBgaW42X2Rldl9wdXRgIG91dHNpZGUgb2Ygc3BpbmxvY2tzIGluIHNvbWUgY2FzZXMuIFRoaXMgZml4ZXMgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJlZmNvdW50IGJ1Z3Mgd2hlbiB0aW1lcnMvd29ya3F1ZXVlcyBhcmUgc2NoZWR1bGVkIHdoaWxlIHRoZSBkZXZpY2UgaXMgYmVpbmcgZGVzdHJveWVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JraW5nIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjQzOjEzLjcyNjg5OTc1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzEzMjU2MjA0OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfTVVMVElDQVNUXCIsXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWdtcF9zdG9wX3RpbWVyXCIsXG4gICAgXCJpZ21wX2dxX3N0YXJ0X3RpbWVyXCIsXG4gICAgXCJpZ21wX2lmY19zdGFydF90aW1lclwiLFxuICAgIFwiaWdtcF9tb2RfdGltZXJcIixcbiAgICBcIm1sZF9ncV9zdGFydF93b3JrXCIsXG4gICAgXCJtbGRfZ3Ffc3RvcF93b3JrXCIsXG4gICAgXCJtbGRfaWZjX3N0YXJ0X3dvcmtcIixcbiAgICBcIm1sZF9pZmNfc3RvcF93b3JrXCIsXG4gICAgXCJtbGRfZGFkX3N0YXJ0X3dvcmtcIixcbiAgICBcIm1sZF9kYWRfc3RvcF93b3JrXCIsXG4gICAgXCJpZ21wNl9ldmVudF9xdWVyeVwiLFxuICAgIFwiaWdtcDZfZXZlbnRfcmVwb3J0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgSUdNUCBhbmQgTUxEIHRpbWVyIGFuZCB3b3JrcXVldWUgaGFuZGxpbmcgdG8gdXNlIGBpbl9kZXZfaG9sZF9zYWZlYCBhbmQgYGluNl9kZXZfaG9sZF9zYWZlYCAod2hpY2ggdXNlIGByZWZjb3VudF9pbmNfbm90X3plcm9gKSBpbnN0ZWFkIG9mIGBpbl9kZXZfaG9sZGAgYW5kIGBpbjZfZGV2X2hvbGRgLiBJdCBhbHNvIGRlZmVycyBgaXBfbWFfcHV0YCBhbmQgYGluNl9kZXZfcHV0YCBvdXRzaWRlIG9mIHNwaW5sb2NrcyBpbiBzb21lIGNhc2VzLiBUaGlzIGZpeGVzIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByZWZjb3VudCBidWdzIHdoZW4gdGltZXJzL3dvcmtxdWV1ZXMgYXJlIHNjaGVkdWxlZCB3aGlsZSB0aGUgZGV2aWNlIGlzIGJlaW5nIGRlc3Ryb3llZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29ya2luZyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjQzOjEzLjcyNjkwNjA3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDgwNzcyOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmOWRjYTIwODBjODAzYzIzNjA1ZjcxNmViY2I3MzQ2Y2E1ODgyNTBmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDUgMTg6NDM6MTIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9pbmV0ZGV2aWNlLmggYi9pbmNsdWRlL2xpbnV4L2luZXRkZXZpY2UuaFxcbmluZGV4IGRjY2JlYjI1ZjcwMTQxLi42MDMyZWVhMjUzOWE2MCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2luZXRkZXZpY2UuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvaW5ldGRldmljZS5oXFxuQEAgLTI5Myw2ICsyOTMsMTEgQEAgc3RhdGljIGlubGluZSB2b2lkIGluX2Rldl9wdXQoc3RydWN0IGluX2RldmljZSAqaWRldilcXG4gI2RlZmluZSBfX2luX2Rldl9wdXQoaWRldikgIHJlZmNvdW50X2RlYyhcXHUwMDI2KGlkZXYpLVxcdTAwM2VyZWZjbnQpXFxuICNkZWZpbmUgaW5fZGV2X2hvbGQoaWRldikgICByZWZjb3VudF9pbmMoXFx1MDAyNihpZGV2KS1cXHUwMDNlcmVmY250KVxcbiBcXG4rc3RhdGljIGlubGluZSBib29sIGluX2Rldl9ob2xkX3NhZmUoc3RydWN0IGluX2RldmljZSAqaWRldilcXG4re1xcbitcXHRyZXR1cm4gcmVmY291bnRfaW5jX25vdF96ZXJvKFxcdTAwMjZpZGV2LVxcdTAwM2VyZWZjbnQpO1xcbit9XFxuK1xcbiAjZW5kaWYgLyogX19LRVJORUxfXyAqL1xcbiBcXG4gc3RhdGljIF9faW5saW5lX18gX19iZTMyIGluZXRfbWFrZV9tYXNrKGludCBsb2dtYXNrKVxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9hZGRyY29uZi5oIGIvaW5jbHVkZS9uZXQvYWRkcmNvbmYuaFxcbmluZGV4IDUzOWJiYmU1NGIxNGU4Li44Y2VkMjdhODIyOWI2ZSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9hZGRyY29uZi5oXFxuKysrIGIvaW5jbHVkZS9uZXQvYWRkcmNvbmYuaFxcbkBAIC00NDYsNiArNDQ2LDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbjZfZGV2X2hvbGQoc3RydWN0IGluZXQ2X2RldiAqaWRldilcXG4gXFx0cmVmY291bnRfaW5jKFxcdTAwMjZpZGV2LVxcdTAwM2VyZWZjbnQpO1xcbiB9XFxuIFxcbitzdGF0aWMgaW5saW5lIGJvb2wgaW42X2Rldl9ob2xkX3NhZmUoc3RydWN0IGluZXQ2X2RldiAqaWRldilcXG4re1xcbitcXHRyZXR1cm4gcmVmY291bnRfaW5jX25vdF96ZXJvKFxcdTAwMjZpZGV2LVxcdTAwM2VyZWZjbnQpO1xcbit9XFxuK1xcbiAvKiBjYWxsZWQgd2l0aCByY3VfcmVhZF9sb2NrIGhlbGQgKi9cXG4gc3RhdGljIGlubGluZSBib29sIGlwNl9pZ25vcmVfbGlua2Rvd24oY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4ge1xcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pZ21wLmMgYi9uZXQvaXB2NC9pZ21wLmNcXG5pbmRleCBiNjMzN2E0N2MxNDE4NS4uOTU3MDEzZTdmN2EyNWYgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjQvaWdtcC5jXFxuKysrIGIvbmV0L2lwdjQvaWdtcC5jXFxuQEAgLTIxNywxMyArMjE3LDE4IEBAIHN0YXRpYyB2b2lkIGlwX3NmX2xpc3RfY2xlYXJfYWxsKHN0cnVjdCBpcF9zZl9saXN0ICpwc2YpXFxuIFxcbiBzdGF0aWMgdm9pZCBpZ21wX3N0b3BfdGltZXIoc3RydWN0IGlwX21jX2xpc3QgKmltKVxcbiB7XFxuK1xcdGJvb2wgcHV0ID0gZmFsc2U7XFxuK1xcbiBcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmltLVxcdTAwM2Vsb2NrKTtcXG4gXFx0aWYgKHRpbWVyX2RlbGV0ZShcXHUwMDI2aW0tXFx1MDAzZXRpbWVyKSlcXG4tXFx0XFx0cmVmY291bnRfZGVjKFxcdTAwMjZpbS1cXHUwMDNlcmVmY250KTtcXG4rXFx0XFx0cHV0ID0gdHJ1ZTtcXG4gXFx0V1JJVEVfT05DRShpbS1cXHUwMDNldG1fcnVubmluZywgMCk7XFxuIFxcdFdSSVRFX09OQ0UoaW0tXFx1MDAzZXJlcG9ydGVyLCAwKTtcXG4gXFx0aW0tXFx1MDAzZXVuc29saWNpdF9jb3VudCA9IDA7XFxuIFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZpbS1cXHUwMDNlbG9jayk7XFxuK1xcbitcXHRpZiAocHV0KVxcbitcXHRcXHRpcF9tYV9wdXQoaW0pO1xcbiB9XFxuIFxcbiAvKiBJdCBtdXN0IGJlIGNhbGxlZCB3aXRoIGxvY2tlZCBpbS1cXHUwMDNlbG9jayAqL1xcbkBAIC0yNDgsMjAgKzI1MywyNiBAQCBzdGF0aWMgdm9pZCBpZ21wX2dxX3N0YXJ0X3RpbWVyKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldilcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0aW5fZGV2LVxcdTAwM2Vtcl9ncV9ydW5uaW5nID0gMTtcXG4tXFx0aWYgKCFtb2RfdGltZXIoXFx1MDAyNmluX2Rldi1cXHUwMDNlbXJfZ3FfdGltZXIsIGV4cCkpXFxuLVxcdFxcdGluX2Rldl9ob2xkKGluX2Rldik7XFxuK1xcdGlmIChpbl9kZXZfaG9sZF9zYWZlKGluX2RldikpIHtcXG4rXFx0XFx0aWYgKG1vZF90aW1lcihcXHUwMDI2aW5fZGV2LVxcdTAwM2Vtcl9ncV90aW1lciwgZXhwKSlcXG4rXFx0XFx0XFx0aW5fZGV2X3B1dChpbl9kZXYpO1xcbitcXHR9XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGlnbXBfaWZjX3N0YXJ0X3RpbWVyKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldiwgaW50IGRlbGF5KVxcbiB7XFxuLVxcdGludCB0diA9IGdldF9yYW5kb21fdTMyX2JlbG93KGRlbGF5KTtcXG4rXFx0aWYgKGluX2Rldl9ob2xkX3NhZmUoaW5fZGV2KSkge1xcbitcXHRcXHRpbnQgdHYgPSBnZXRfcmFuZG9tX3UzMl9iZWxvdyhkZWxheSk7XFxuIFxcbi1cXHRpZiAoIW1vZF90aW1lcihcXHUwMDI2aW5fZGV2LVxcdTAwM2Vtcl9pZmNfdGltZXIsIGppZmZpZXMrdHYrMikpXFxuLVxcdFxcdGluX2Rldl9ob2xkKGluX2Rldik7XFxuK1xcdFxcdGlmIChtb2RfdGltZXIoXFx1MDAyNmluX2Rldi1cXHUwMDNlbXJfaWZjX3RpbWVyLCBqaWZmaWVzICsgdHYgKyAyKSlcXG4rXFx0XFx0XFx0aW5fZGV2X3B1dChpbl9kZXYpO1xcbitcXHR9XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGlnbXBfbW9kX3RpbWVyKHN0cnVjdCBpcF9tY19saXN0ICppbSwgaW50IG1heF9kZWxheSlcXG4ge1xcbitcXHRib29sIHB1dCA9IGZhbHNlO1xcbitcXG4gXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZpbS1cXHUwMDNlbG9jayk7XFxuIFxcdGltLVxcdTAwM2V1bnNvbGljaXRfY291bnQgPSAwO1xcbiBcXHRpZiAodGltZXJfZGVsZXRlKFxcdTAwMjZpbS1cXHUwMDNldGltZXIpKSB7XFxuQEAgLTI3MSwxMCArMjgyLDEzIEBAIHN0YXRpYyB2b2lkIGlnbXBfbW9kX3RpbWVyKHN0cnVjdCBpcF9tY19saXN0ICppbSwgaW50IG1heF9kZWxheSlcXG4gXFx0XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmltLVxcdTAwM2Vsb2NrKTtcXG4gXFx0XFx0XFx0cmV0dXJuO1xcbiBcXHRcXHR9XFxuLVxcdFxcdHJlZmNvdW50X2RlYyhcXHUwMDI2aW0tXFx1MDAzZXJlZmNudCk7XFxuK1xcdFxcdHB1dCA9IHRydWU7XFxuIFxcdH1cXG4gXFx0aWdtcF9zdGFydF90aW1lcihpbSwgbWF4X2RlbGF5KTtcXG4gXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmltLVxcdTAwM2Vsb2NrKTtcXG4rXFxuK1xcdGlmIChwdXQpXFxuK1xcdFxcdGlwX21hX3B1dChpbSk7XFxuIH1cXG4gXFxuIFxcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9tY2FzdC5jIGIvbmV0L2lwdjYvbWNhc3QuY1xcbmluZGV4IDA0YjgxMWIzYmU5NzhlLi40ZDJiOTM3N2JhMmRlNSAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2Ni9tY2FzdC5jXFxuKysrIGIvbmV0L2lwdjYvbWNhc3QuY1xcbkBAIC0xMDgzLDggKzEwODMsMTAgQEAgc3RhdGljIHZvaWQgbWxkX2dxX3N0YXJ0X3dvcmsoc3RydWN0IGluZXQ2X2RldiAqaWRldilcXG4gXFx0bWNfYXNzZXJ0X2xvY2tlZChpZGV2KTtcXG4gXFxuIFxcdGlkZXYtXFx1MDAzZW1jX2dxX3J1bm5pbmcgPSAxO1xcbi1cXHRpZiAoIW1vZF9kZWxheWVkX3dvcmsobWxkX3dxLCBcXHUwMDI2aWRldi1cXHUwMDNlbWNfZ3Ffd29yaywgdHYgKyAyKSlcXG4tXFx0XFx0aW42X2Rldl9ob2xkKGlkZXYpO1xcbitcXHRpZiAoaW42X2Rldl9ob2xkX3NhZmUoaWRldikpIHtcXG4rXFx0XFx0aWYgKG1vZF9kZWxheWVkX3dvcmsobWxkX3dxLCBcXHUwMDI2aWRldi1cXHUwMDNlbWNfZ3Ffd29yaywgdHYgKyAyKSlcXG4rXFx0XFx0XFx0aW42X2Rldl9wdXQoaWRldik7XFxuK1xcdH1cXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgbWxkX2dxX3N0b3Bfd29yayhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KVxcbkBAIC0xMTAyLDggKzExMDQsMTAgQEAgc3RhdGljIHZvaWQgbWxkX2lmY19zdGFydF93b3JrKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYsIHVuc2lnbmVkIGxvbmcgZGVsYXkpXFxuIFxcbiBcXHRtY19hc3NlcnRfbG9ja2VkKGlkZXYpO1xcbiBcXG4tXFx0aWYgKCFtb2RfZGVsYXllZF93b3JrKG1sZF93cSwgXFx1MDAyNmlkZXYtXFx1MDAzZW1jX2lmY193b3JrLCB0diArIDIpKVxcbi1cXHRcXHRpbjZfZGV2X2hvbGQoaWRldik7XFxuK1xcdGlmIChpbjZfZGV2X2hvbGRfc2FmZShpZGV2KSkge1xcbitcXHRcXHRpZiAobW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFxcdTAwMjZpZGV2LVxcdTAwM2VtY19pZmNfd29yaywgdHYgKyAyKSlcXG4rXFx0XFx0XFx0aW42X2Rldl9wdXQoaWRldik7XFxuK1xcdH1cXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgbWxkX2lmY19zdG9wX3dvcmsoc3RydWN0IGluZXQ2X2RldiAqaWRldilcXG5AQCAtMTEyMSw4ICsxMTI1LDEwIEBAIHN0YXRpYyB2b2lkIG1sZF9kYWRfc3RhcnRfd29yayhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2LCB1bnNpZ25lZCBsb25nIGRlbGF5KVxcbiBcXG4gXFx0bWNfYXNzZXJ0X2xvY2tlZChpZGV2KTtcXG4gXFxuLVxcdGlmICghbW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFxcdTAwMjZpZGV2LVxcdTAwM2VtY19kYWRfd29yaywgdHYgKyAyKSlcXG4tXFx0XFx0aW42X2Rldl9ob2xkKGlkZXYpO1xcbitcXHRpZiAoaW42X2Rldl9ob2xkX3NhZmUoaWRldikpIHtcXG4rXFx0XFx0aWYgKG1vZF9kZWxheWVkX3dvcmsobWxkX3dxLCBcXHUwMDI2aWRldi1cXHUwMDNlbWNfZGFkX3dvcmssIHR2ICsgMikpXFxuK1xcdFxcdFxcdGluNl9kZXZfcHV0KGlkZXYpO1xcbitcXHR9XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIG1sZF9kYWRfc3RvcF93b3JrKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpXFxuQEAgLTEzOTUsMTggKzE0MDEsMjMgQEAgc3RhdGljIHZvaWQgbWxkX3Byb2Nlc3NfdjIoc3RydWN0IGluZXQ2X2RldiAqaWRldiwgc3RydWN0IG1sZDJfcXVlcnkgKm1sZCxcXG4gdm9pZCBpZ21wNl9ldmVudF9xdWVyeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiB7XFxuIFxcdHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYgPSBfX2luNl9kZXZfZ2V0KHNrYi1cXHUwMDNlZGV2KTtcXG4rXFx0Ym9vbCBwdXQgPSBmYWxzZTtcXG4gXFxuIFxcdGlmICghaWRldiB8fCBpZGV2LVxcdTAwM2VkZWFkKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFxuIFxcdHNwaW5fbG9ja19iaChcXHUwMDI2aWRldi1cXHUwMDNlbWNfcXVlcnlfbG9jayk7XFxuLVxcdGlmIChza2JfcXVldWVfbGVuKFxcdTAwMjZpZGV2LVxcdTAwM2VtY19xdWVyeV9xdWV1ZSkgXFx1MDAzYyBNTERfTUFYX1NLQlMpIHtcXG4rXFx0aWYgKHNrYl9xdWV1ZV9sZW4oXFx1MDAyNmlkZXYtXFx1MDAzZW1jX3F1ZXJ5X3F1ZXVlKSBcXHUwMDNjIE1MRF9NQVhfU0tCUyBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgaW42X2Rldl9ob2xkX3NhZmUoaWRldikpIHtcXG4gXFx0XFx0X19za2JfcXVldWVfdGFpbChcXHUwMDI2aWRldi1cXHUwMDNlbWNfcXVlcnlfcXVldWUsIHNrYik7XFxuLVxcdFxcdGlmICghbW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFxcdTAwMjZpZGV2LVxcdTAwM2VtY19xdWVyeV93b3JrLCAwKSlcXG4tXFx0XFx0XFx0aW42X2Rldl9ob2xkKGlkZXYpO1xcbitcXHRcXHRpZiAobW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFxcdTAwMjZpZGV2LVxcdTAwM2VtY19xdWVyeV93b3JrLCAwKSlcXG4rXFx0XFx0XFx0cHV0ID0gdHJ1ZTtcXG4gXFx0XFx0c2tiID0gTlVMTDtcXG4gXFx0fVxcbiBcXHRzcGluX3VubG9ja19iaChcXHUwMDI2aWRldi1cXHUwMDNlbWNfcXVlcnlfbG9jayk7XFxuK1xcbitcXHRpZiAocHV0KVxcbitcXHRcXHRpbjZfZGV2X3B1dChpZGV2KTtcXG4gb3V0OlxcbiBcXHRrZnJlZV9za2Ioc2tiKTtcXG4gfVxcbkBAIC0xNTcwLDE4ICsxNTgxLDIzIEBAIHN0YXRpYyB2b2lkIG1sZF9xdWVyeV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gdm9pZCBpZ21wNl9ldmVudF9yZXBvcnQoc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4ge1xcbiBcXHRzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2ID0gX19pbjZfZGV2X2dldChza2ItXFx1MDAzZWRldik7XFxuK1xcdGJvb2wgcHV0ID0gZmFsc2U7XFxuIFxcbiBcXHRpZiAoIWlkZXYgfHwgaWRldi1cXHUwMDNlZGVhZClcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcbiBcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmlkZXYtXFx1MDAzZW1jX3JlcG9ydF9sb2NrKTtcXG4tXFx0aWYgKHNrYl9xdWV1ZV9sZW4oXFx1MDAyNmlkZXYtXFx1MDAzZW1jX3JlcG9ydF9xdWV1ZSkgXFx1MDAzYyBNTERfTUFYX1NLQlMpIHtcXG4rXFx0aWYgKHNrYl9xdWV1ZV9sZW4oXFx1MDAyNmlkZXYtXFx1MDAzZW1jX3JlcG9ydF9xdWV1ZSkgXFx1MDAzYyBNTERfTUFYX1NLQlMgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIGluNl9kZXZfaG9sZF9zYWZlKGlkZXYpKSB7XFxuIFxcdFxcdF9fc2tiX3F1ZXVlX3RhaWwoXFx1MDAyNmlkZXYtXFx1MDAzZW1jX3JlcG9ydF9xdWV1ZSwgc2tiKTtcXG4tXFx0XFx0aWYgKCFtb2RfZGVsYXllZF93b3JrKG1sZF93cSwgXFx1MDAyNmlkZXYtXFx1MDAzZW1jX3JlcG9ydF93b3JrLCAwKSlcXG4tXFx0XFx0XFx0aW42X2Rldl9ob2xkKGlkZXYpO1xcbitcXHRcXHRpZiAobW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFxcdTAwMjZpZGV2LVxcdTAwM2VtY19yZXBvcnRfd29yaywgMCkpXFxuK1xcdFxcdFxcdHB1dCA9IHRydWU7XFxuIFxcdFxcdHNrYiA9IE5VTEw7XFxuIFxcdH1cXG4gXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmlkZXYtXFx1MDAzZW1jX3JlcG9ydF9sb2NrKTtcXG4rXFxuK1xcdGlmIChwdXQpXFxuK1xcdFxcdGluNl9kZXZfcHV0KGlkZXYpO1xcbiBvdXQ6XFxuIFxcdGtmcmVlX3NrYihza2IpO1xcbiB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjQzOjE0LjMzNzE2Mjg2NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA3MTUzNDc5NDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfTVVMVElDQVNUXCIsXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWdtcF9zdG9wX3RpbWVyXCIsXG4gICAgXCJpZ21wX2dxX3N0YXJ0X3RpbWVyXCIsXG4gICAgXCJpZ21wX2lmY19zdGFydF90aW1lclwiLFxuICAgIFwiaWdtcF9tb2RfdGltZXJcIixcbiAgICBcIm1sZF9ncV9zdGFydF93b3JrXCIsXG4gICAgXCJtbGRfZ3Ffc3RvcF93b3JrXCIsXG4gICAgXCJtbGRfaWZjX3N0YXJ0X3dvcmtcIixcbiAgICBcIm1sZF9pZmNfc3RvcF93b3JrXCIsXG4gICAgXCJtbGRfZGFkX3N0YXJ0X3dvcmtcIixcbiAgICBcIm1sZF9kYWRfc3RvcF93b3JrXCIsXG4gICAgXCJpZ21wNl9ldmVudF9xdWVyeVwiLFxuICAgIFwiaWdtcDZfZXZlbnRfcmVwb3J0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgSUdNUCBhbmQgTUxEIHRpbWVyIGFuZCB3b3JrcXVldWUgaGFuZGxpbmcgdG8gdXNlIGBpbl9kZXZfaG9sZF9zYWZlYCBhbmQgYGluNl9kZXZfaG9sZF9zYWZlYCAod2hpY2ggdXNlIGByZWZjb3VudF9pbmNfbm90X3plcm9gKSBpbnN0ZWFkIG9mIGBpbl9kZXZfaG9sZGAgYW5kIGBpbjZfZGV2X2hvbGRgLiBJdCBhbHNvIGRlZmVycyBgaXBfbWFfcHV0YCBhbmQgYGluNl9kZXZfcHV0YCBvdXRzaWRlIG9mIHNwaW5sb2NrcyBpbiBzb21lIGNhc2VzLiBUaGlzIGZpeGVzIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByZWZjb3VudCBidWdzIHdoZW4gdGltZXJzL3dvcmtxdWV1ZXMgYXJlIHNjaGVkdWxlZCB3aGlsZSB0aGUgZGV2aWNlIGlzIGJlaW5nIGRlc3Ryb3llZC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgbmV0d29ya2luZyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjlkY2EyMDgwYzgwM2MyMzYwNWY3MTZlYmNiNzM0NmNhNTg4MjUwZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gSnVsIDUgMTg6NDM6MTIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2luZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvaW5ldGRldmljZS5oXG5pbmRleCBkY2NiZWIyNWY3MDE0MS4uNjAzMmVlYTI1MzlhNjAgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2luZXRkZXZpY2UuaFxuKysrIGIvaW5jbHVkZS9saW51eC9pbmV0ZGV2aWNlLmhcbkBAIC0yOTMsNiArMjkzLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbl9kZXZfcHV0KHN0cnVjdCBpbl9kZXZpY2UgKmlkZXYpXG4gI2RlZmluZSBfX2luX2Rldl9wdXQoaWRldikgIHJlZmNvdW50X2RlYyhcdTAwMjYoaWRldiktXHUwMDNlcmVmY250KVxuICNkZWZpbmUgaW5fZGV2X2hvbGQoaWRldikgICByZWZjb3VudF9pbmMoXHUwMDI2KGlkZXYpLVx1MDAzZXJlZmNudClcbiBcbitzdGF0aWMgaW5saW5lIGJvb2wgaW5fZGV2X2hvbGRfc2FmZShzdHJ1Y3QgaW5fZGV2aWNlICppZGV2KVxuK3tcbitcdHJldHVybiByZWZjb3VudF9pbmNfbm90X3plcm8oXHUwMDI2aWRldi1cdTAwM2VyZWZjbnQpO1xuK31cbitcbiAjZW5kaWYgLyogX19LRVJORUxfXyAqL1xuIFxuIHN0YXRpYyBfX2lubGluZV9fIF9fYmUzMiBpbmV0X21ha2VfbWFzayhpbnQgbG9nbWFzaylcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9hZGRyY29uZi5oIGIvaW5jbHVkZS9uZXQvYWRkcmNvbmYuaFxuaW5kZXggNTM5YmJiZTU0YjE0ZTguLjhjZWQyN2E4MjI5YjZlIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvYWRkcmNvbmYuaFxuKysrIGIvaW5jbHVkZS9uZXQvYWRkcmNvbmYuaFxuQEAgLTQ0Niw2ICs0NDYsMTEgQEAgc3RhdGljIGlubGluZSB2b2lkIGluNl9kZXZfaG9sZChzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2KVxuIFx0cmVmY291bnRfaW5jKFx1MDAyNmlkZXYtXHUwMDNlcmVmY250KTtcbiB9XG4gXG4rc3RhdGljIGlubGluZSBib29sIGluNl9kZXZfaG9sZF9zYWZlKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpXG4re1xuK1x0cmV0dXJuIHJlZmNvdW50X2luY19ub3RfemVybyhcdTAwMjZpZGV2LVx1MDAzZXJlZmNudCk7XG4rfVxuK1xuIC8qIGNhbGxlZCB3aXRoIHJjdV9yZWFkX2xvY2sgaGVsZCAqL1xuIHN0YXRpYyBpbmxpbmUgYm9vbCBpcDZfaWdub3JlX2xpbmtkb3duKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lnbXAuYyBiL25ldC9pcHY0L2lnbXAuY1xuaW5kZXggYjYzMzdhNDdjMTQxODUuLjk1NzAxM2U3ZjdhMjVmIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaWdtcC5jXG4rKysgYi9uZXQvaXB2NC9pZ21wLmNcbkBAIC0yMTcsMTMgKzIxNywxOCBAQCBzdGF0aWMgdm9pZCBpcF9zZl9saXN0X2NsZWFyX2FsbChzdHJ1Y3QgaXBfc2ZfbGlzdCAqcHNmKVxuIFxuIHN0YXRpYyB2b2lkIGlnbXBfc3RvcF90aW1lcihzdHJ1Y3QgaXBfbWNfbGlzdCAqaW0pXG4ge1xuK1x0Ym9vbCBwdXQgPSBmYWxzZTtcbitcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZpbS1cdTAwM2Vsb2NrKTtcbiBcdGlmICh0aW1lcl9kZWxldGUoXHUwMDI2aW0tXHUwMDNldGltZXIpKVxuLVx0XHRyZWZjb3VudF9kZWMoXHUwMDI2aW0tXHUwMDNlcmVmY250KTtcbitcdFx0cHV0ID0gdHJ1ZTtcbiBcdFdSSVRFX09OQ0UoaW0tXHUwMDNldG1fcnVubmluZywgMCk7XG4gXHRXUklURV9PTkNFKGltLVx1MDAzZXJlcG9ydGVyLCAwKTtcbiBcdGltLVx1MDAzZXVuc29saWNpdF9jb3VudCA9IDA7XG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZpbS1cdTAwM2Vsb2NrKTtcbitcbitcdGlmIChwdXQpXG4rXHRcdGlwX21hX3B1dChpbSk7XG4gfVxuIFxuIC8qIEl0IG11c3QgYmUgY2FsbGVkIHdpdGggbG9ja2VkIGltLVx1MDAzZWxvY2sgKi9cbkBAIC0yNDgsMjAgKzI1MywyNiBAQCBzdGF0aWMgdm9pZCBpZ21wX2dxX3N0YXJ0X3RpbWVyKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldilcbiBcdFx0cmV0dXJuO1xuIFxuIFx0aW5fZGV2LVx1MDAzZW1yX2dxX3J1bm5pbmcgPSAxO1xuLVx0aWYgKCFtb2RfdGltZXIoXHUwMDI2aW5fZGV2LVx1MDAzZW1yX2dxX3RpbWVyLCBleHApKVxuLVx0XHRpbl9kZXZfaG9sZChpbl9kZXYpO1xuK1x0aWYgKGluX2Rldl9ob2xkX3NhZmUoaW5fZGV2KSkge1xuK1x0XHRpZiAobW9kX3RpbWVyKFx1MDAyNmluX2Rldi1cdTAwM2Vtcl9ncV90aW1lciwgZXhwKSlcbitcdFx0XHRpbl9kZXZfcHV0KGluX2Rldik7XG4rXHR9XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGlnbXBfaWZjX3N0YXJ0X3RpbWVyKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldiwgaW50IGRlbGF5KVxuIHtcbi1cdGludCB0diA9IGdldF9yYW5kb21fdTMyX2JlbG93KGRlbGF5KTtcbitcdGlmIChpbl9kZXZfaG9sZF9zYWZlKGluX2RldikpIHtcbitcdFx0aW50IHR2ID0gZ2V0X3JhbmRvbV91MzJfYmVsb3coZGVsYXkpO1xuIFxuLVx0aWYgKCFtb2RfdGltZXIoXHUwMDI2aW5fZGV2LVx1MDAzZW1yX2lmY190aW1lciwgamlmZmllcyt0disyKSlcbi1cdFx0aW5fZGV2X2hvbGQoaW5fZGV2KTtcbitcdFx0aWYgKG1vZF90aW1lcihcdTAwMjZpbl9kZXYtXHUwMDNlbXJfaWZjX3RpbWVyLCBqaWZmaWVzICsgdHYgKyAyKSlcbitcdFx0XHRpbl9kZXZfcHV0KGluX2Rldik7XG4rXHR9XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGlnbXBfbW9kX3RpbWVyKHN0cnVjdCBpcF9tY19saXN0ICppbSwgaW50IG1heF9kZWxheSlcbiB7XG4rXHRib29sIHB1dCA9IGZhbHNlO1xuK1xuIFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmltLVx1MDAzZWxvY2spO1xuIFx0aW0tXHUwMDNldW5zb2xpY2l0X2NvdW50ID0gMDtcbiBcdGlmICh0aW1lcl9kZWxldGUoXHUwMDI2aW0tXHUwMDNldGltZXIpKSB7XG5AQCAtMjcxLDEwICsyODIsMTMgQEAgc3RhdGljIHZvaWQgaWdtcF9tb2RfdGltZXIoc3RydWN0IGlwX21jX2xpc3QgKmltLCBpbnQgbWF4X2RlbGF5KVxuIFx0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmltLVx1MDAzZWxvY2spO1xuIFx0XHRcdHJldHVybjtcbiBcdFx0fVxuLVx0XHRyZWZjb3VudF9kZWMoXHUwMDI2aW0tXHUwMDNlcmVmY250KTtcbitcdFx0cHV0ID0gdHJ1ZTtcbiBcdH1cbiBcdGlnbXBfc3RhcnRfdGltZXIoaW0sIG1heF9kZWxheSk7XG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZpbS1cdTAwM2Vsb2NrKTtcbitcbitcdGlmIChwdXQpXG4rXHRcdGlwX21hX3B1dChpbSk7XG4gfVxuIFxuIFxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L21jYXN0LmMgYi9uZXQvaXB2Ni9tY2FzdC5jXG5pbmRleCAwNGI4MTFiM2JlOTc4ZS4uNGQyYjkzNzdiYTJkZTUgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9tY2FzdC5jXG4rKysgYi9uZXQvaXB2Ni9tY2FzdC5jXG5AQCAtMTA4Myw4ICsxMDgzLDEwIEBAIHN0YXRpYyB2b2lkIG1sZF9ncV9zdGFydF93b3JrKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpXG4gXHRtY19hc3NlcnRfbG9ja2VkKGlkZXYpO1xuIFxuIFx0aWRldi1cdTAwM2VtY19ncV9ydW5uaW5nID0gMTtcbi1cdGlmICghbW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFx1MDAyNmlkZXYtXHUwMDNlbWNfZ3Ffd29yaywgdHYgKyAyKSlcbi1cdFx0aW42X2Rldl9ob2xkKGlkZXYpO1xuK1x0aWYgKGluNl9kZXZfaG9sZF9zYWZlKGlkZXYpKSB7XG4rXHRcdGlmIChtb2RfZGVsYXllZF93b3JrKG1sZF93cSwgXHUwMDI2aWRldi1cdTAwM2VtY19ncV93b3JrLCB0diArIDIpKVxuK1x0XHRcdGluNl9kZXZfcHV0KGlkZXYpO1xuK1x0fVxuIH1cbiBcbiBzdGF0aWMgdm9pZCBtbGRfZ3Ffc3RvcF93b3JrKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpXG5AQCAtMTEwMiw4ICsxMTA0LDEwIEBAIHN0YXRpYyB2b2lkIG1sZF9pZmNfc3RhcnRfd29yayhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2LCB1bnNpZ25lZCBsb25nIGRlbGF5KVxuIFxuIFx0bWNfYXNzZXJ0X2xvY2tlZChpZGV2KTtcbiBcbi1cdGlmICghbW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFx1MDAyNmlkZXYtXHUwMDNlbWNfaWZjX3dvcmssIHR2ICsgMikpXG4tXHRcdGluNl9kZXZfaG9sZChpZGV2KTtcbitcdGlmIChpbjZfZGV2X2hvbGRfc2FmZShpZGV2KSkge1xuK1x0XHRpZiAobW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFx1MDAyNmlkZXYtXHUwMDNlbWNfaWZjX3dvcmssIHR2ICsgMikpXG4rXHRcdFx0aW42X2Rldl9wdXQoaWRldik7XG4rXHR9XG4gfVxuIFxuIHN0YXRpYyB2b2lkIG1sZF9pZmNfc3RvcF93b3JrKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpXG5AQCAtMTEyMSw4ICsxMTI1LDEwIEBAIHN0YXRpYyB2b2lkIG1sZF9kYWRfc3RhcnRfd29yayhzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2LCB1bnNpZ25lZCBsb25nIGRlbGF5KVxuIFxuIFx0bWNfYXNzZXJ0X2xvY2tlZChpZGV2KTtcbiBcbi1cdGlmICghbW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFx1MDAyNmlkZXYtXHUwMDNlbWNfZGFkX3dvcmssIHR2ICsgMikpXG4tXHRcdGluNl9kZXZfaG9sZChpZGV2KTtcbitcdGlmIChpbjZfZGV2X2hvbGRfc2FmZShpZGV2KSkge1xuK1x0XHRpZiAobW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFx1MDAyNmlkZXYtXHUwMDNlbWNfZGFkX3dvcmssIHR2ICsgMikpXG4rXHRcdFx0aW42X2Rldl9wdXQoaWRldik7XG4rXHR9XG4gfVxuIFxuIHN0YXRpYyB2b2lkIG1sZF9kYWRfc3RvcF93b3JrKHN0cnVjdCBpbmV0Nl9kZXYgKmlkZXYpXG5AQCAtMTM5NSwxOCArMTQwMSwyMyBAQCBzdGF0aWMgdm9pZCBtbGRfcHJvY2Vzc192MihzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2LCBzdHJ1Y3QgbWxkMl9xdWVyeSAqbWxkLFxuIHZvaWQgaWdtcDZfZXZlbnRfcXVlcnkoc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2ID0gX19pbjZfZGV2X2dldChza2ItXHUwMDNlZGV2KTtcbitcdGJvb2wgcHV0ID0gZmFsc2U7XG4gXG4gXHRpZiAoIWlkZXYgfHwgaWRldi1cdTAwM2VkZWFkKVxuIFx0XHRnb3RvIG91dDtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZpZGV2LVx1MDAzZW1jX3F1ZXJ5X2xvY2spO1xuLVx0aWYgKHNrYl9xdWV1ZV9sZW4oXHUwMDI2aWRldi1cdTAwM2VtY19xdWVyeV9xdWV1ZSkgXHUwMDNjIE1MRF9NQVhfU0tCUykge1xuK1x0aWYgKHNrYl9xdWV1ZV9sZW4oXHUwMDI2aWRldi1cdTAwM2VtY19xdWVyeV9xdWV1ZSkgXHUwMDNjIE1MRF9NQVhfU0tCUyBcdTAwMjZcdTAwMjZcbitcdCAgICBpbjZfZGV2X2hvbGRfc2FmZShpZGV2KSkge1xuIFx0XHRfX3NrYl9xdWV1ZV90YWlsKFx1MDAyNmlkZXYtXHUwMDNlbWNfcXVlcnlfcXVldWUsIHNrYik7XG4tXHRcdGlmICghbW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFx1MDAyNmlkZXYtXHUwMDNlbWNfcXVlcnlfd29yaywgMCkpXG4tXHRcdFx0aW42X2Rldl9ob2xkKGlkZXYpO1xuK1x0XHRpZiAobW9kX2RlbGF5ZWRfd29yayhtbGRfd3EsIFx1MDAyNmlkZXYtXHUwMDNlbWNfcXVlcnlfd29yaywgMCkpXG4rXHRcdFx0cHV0ID0gdHJ1ZTtcbiBcdFx0c2tiID0gTlVMTDtcbiBcdH1cbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmlkZXYtXHUwMDNlbWNfcXVlcnlfbG9jayk7XG4rXG4rXHRpZiAocHV0KVxuK1x0XHRpbjZfZGV2X3B1dChpZGV2KTtcbiBvdXQ6XG4gXHRrZnJlZV9za2Ioc2tiKTtcbiB9XG5AQCAtMTU3MCwxOCArMTU4MSwyMyBAQCBzdGF0aWMgdm9pZCBtbGRfcXVlcnlfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gdm9pZCBpZ21wNl9ldmVudF9yZXBvcnQoc3RydWN0IHNrX2J1ZmYgKnNrYilcbiB7XG4gXHRzdHJ1Y3QgaW5ldDZfZGV2ICppZGV2ID0gX19pbjZfZGV2X2dldChza2ItXHUwMDNlZGV2KTtcbitcdGJvb2wgcHV0ID0gZmFsc2U7XG4gXG4gXHRpZiAoIWlkZXYgfHwgaWRldi1cdTAwM2VkZWFkKVxuIFx0XHRnb3RvIG91dDtcbiBcbiBcdHNwaW5fbG9ja19iaChcdTAwMjZpZGV2LVx1MDAzZW1jX3JlcG9ydF9sb2NrKTtcbi1cdGlmIChza2JfcXVldWVfbGVuKFx1MDAyNmlkZXYtXHUwMDNlbWNfcmVwb3J0X3F1ZXVlKSBcdTAwM2MgTUxEX01BWF9TS0JTKSB7XG4rXHRpZiAoc2tiX3F1ZXVlX2xlbihcdTAwMjZpZGV2LVx1MDAzZW1jX3JlcG9ydF9xdWV1ZSkgXHUwMDNjIE1MRF9NQVhfU0tCUyBcdTAwMjZcdTAwMjZcbitcdCAgICBpbjZfZGV2X2hvbGRfc2FmZShpZGV2KSkge1xuIFx0XHRfX3NrYl9xdWV1ZV90YWlsKFx1MDAyNmlkZXYtXHUwMDNlbWNfcmVwb3J0X3F1ZXVlLCBza2IpO1xuLVx0XHRpZiAoIW1vZF9kZWxheWVkX3dvcmsobWxkX3dxLCBcdTAwMjZpZGV2LVx1MDAzZW1jX3JlcG9ydF93b3JrLCAwKSlcbi1cdFx0XHRpbjZfZGV2X2hvbGQoaWRldik7XG4rXHRcdGlmIChtb2RfZGVsYXllZF93b3JrKG1sZF93cSwgXHUwMDI2aWRldi1cdTAwM2VtY19yZXBvcnRfd29yaywgMCkpXG4rXHRcdFx0cHV0ID0gdHJ1ZTtcbiBcdFx0c2tiID0gTlVMTDtcbiBcdH1cbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmlkZXYtXHUwMDNlbWNfcmVwb3J0X2xvY2spO1xuK1xuK1x0aWYgKHB1dClcbitcdFx0aW42X2Rldl9wdXQoaWRldik7XG4gb3V0OlxuIFx0a2ZyZWVfc2tiKHNrYik7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6NDM6MTQuMzM3MTY1MjY0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk4Mzk1NzkxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBDb3JlIE5ldHdvcmtpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIHRoZSBoYW5kbGluZyBvZiBJR01QIChJUHY0IG11bHRpY2FzdCkgYW5kIE1MRCAoSVB2NiBtdWx0aWNhc3QpIHRpbWVycyBhbmQgd29ya3F1ZXVlcy4gVGhlIGNvcmUgY2hhbmdlIGlzIHRvIHJlcGxhY2UgYGluX2Rldl9ob2xkYCBhbmQgYGluNl9kZXZfaG9sZGAgd2l0aCBgaW5fZGV2X2hvbGRfc2FmZWAgYW5kIGBpbjZfZGV2X2hvbGRfc2FmZWAsIGxldmVyYWdpbmcgYHJlZmNvdW50X2luY19ub3RfemVyb2AgaW5zdGVhZC4gUGx1cywgaXQncyBkZWZlcnJpbmcgYGlwX21hX3B1dGAgYW5kIGBpbjZfZGV2X3B1dGAgb3V0c2lkZSBvZiBzcGlubG9ja3MgaW4gc29tZSBzY2VuYXJpb3MuIEZ1bmN0aW9uYWxseSwgdGhpcyBpbXBhY3RzIGhvdyB0aGUgbmV0d29ya2luZyBzdGFjayBoYW5kbGVzIHRoZXNlIG11bHRpY2FzdCBwcm90b2NvbHMgYXQgdGhlaXIgY29yZS5cblxuVGhlIGFpbSBoZXJlIGlzIGNsZWFybHkgdG8gZWxpbWluYXRlIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBvciByZWZjb3VudCBpc3N1ZXMgdGhhdCBjb3VsZCBhcmlzZSB3aGVuIHRpbWVycyBvciB3b3JrcXVldWVzIGFyZSBhY3RpdmUgYW5kIHNjaGVkdWxlZCBkdXJpbmcgYSBkZXZpY2UncyBkZXN0cnVjdGlvbi4gVGhpcyBpcyBzbWFydDsgcmVzb3VyY2UgbWFuYWdlbWVudCBpbiB0aGlzIGFyZWEgY2FuIGJlIHRyaWNreS5cblxuTm93LCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBjb25maWdzIHJlbGF0ZWQgdG8gSUdNUCBhbmQgTUxEIGFyZSBpbiBwbGFjZS4gSUdNUCBpcyBuYXR1cmFsbHkgdGllZCB0byBJUHY0IG11bHRpY2FzdCwgd2hpY2ggbWVhbnMgSSBzaG91bGQgYmUgbG9va2luZyBhdCBgQ09ORklHX0lQX01VTFRJQ0FTVGAuIEZvciBNTEQsIHdoaWNoIGlzIElQdjYncyBtdWx0aWNhc3QgY291bnRlcnBhcnQsIEknbSBleHBlY3RpbmcgYENPTkZJR19JUFY2YCB0byBiZSB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9uLlxuXG5MZXQncyBmaW5kIHRoZSByZWxldmFudCBwaWVjZXMgb2YgY29kZS4gSSBuZWVkIHRvIHNlYXJjaCBmb3IgYWxsIGluc3RhbmNlcyBvZiBgaWdtcF9zdG9wX3RpbWVyYCwgYGlnbXBfZ3Ffc3RhcnRfdGltZXJgLCBgaWdtcF9pZmNfc3RhcnRfdGltZXJgLCBgaWdtcF9tb2RfdGltZXJgLCBgbWxkX2dxX3N0YXJ0X3dvcmtgLCBgbWxkX2lmY19zdGFydF93b3JrYCwgYG1sZF9kYWRfc3RhcnRfd29ya2AsIGBpZ21wNl9ldmVudF9xdWVyeWAsIGFuZCBgaWdtcDZfZXZlbnRfcmVwb3J0YC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2Qgb3ZlcnZpZXcgb2YgdGhlIHRpbWVyIGFuZCB3b3JrcXVldWUgbWVjaGFuaWNzIHRoaXMgcGF0Y2ggdG91Y2hlcy5cblxuRmluYWxseSwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRob3NlIGNvbmZpZ3VyYXRpb25zIGFyZSBjb3JyZWN0bHkgc2V0LiBUaGlzIHdpbGwgYmUgdGhlIGtleSB0byBhc3Nlc3NpbmcgaWYgdGhlIGNoYW5nZXMgYXJlIGNvcnJlY3RseSBpbXBsZW1lbnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDMyNCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzNywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjQzOjIwLjMyMTEyNTc1OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTQ5MTQxOTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlnbXBfc3RvcF90aW1lclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9pZ21wLmM9MjAxPXN0YXRpYyB2b2lkIGlwX3NmX2xpc3RfY2xlYXJfYWxsKHN0cnVjdCBpcF9zZl9saXN0ICpwc2YpXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMjE3LVxcbm5ldC9pcHY0L2lnbXAuYzoyMTg6c3RhdGljIHZvaWQgaWdtcF9zdG9wX3RpbWVyKHN0cnVjdCBpcF9tY19saXN0ICppbSlcXG5uZXQvaXB2NC9pZ21wLmMtMjE5LXtcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz05NDk9c3RhdGljIGJvb2wgaWdtcF9oZWFyZF9yZXBvcnQoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgZ3JvdXApXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtOTY0LVxcdFxcdGlmIChpbS1cXHUwMDNlbXVsdGlhZGRyID09IGdyb3VwKSB7XFxubmV0L2lwdjQvaWdtcC5jOjk2NTpcXHRcXHRcXHRpZ21wX3N0b3BfdGltZXIoaW0pO1xcbm5ldC9pcHY0L2lnbXAuYy05NjYtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvaXB2NC9pZ21wLmM9MTMyMj1zdGF0aWMgdm9pZCBfX2lnbXBfZ3JvdXBfZHJvcHBlZChzdHJ1Y3QgaXBfbWNfbGlzdCAqaW0sIGdmcF90IGdmcClcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0xMzQyLVxcdHJlcG9ydGVyID0gUkVBRF9PTkNFKGltLVxcdTAwM2VyZXBvcnRlcik7XFxubmV0L2lwdjQvaWdtcC5jOjEzNDM6XFx0aWdtcF9zdG9wX3RpbWVyKGltKTtcXG5uZXQvaXB2NC9pZ21wLmMtMTM0NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6NDM6MjMuNDcwMjczMDU5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAyOTQxODg5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOlxuXG4qKktjb25maWcgYW5kIElQX01VTFRJQ0FTVDogQSBRdWljayBDaGVjayoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBtYWtlIHN1cmUgYElQX01VTFRJQ0FTVGAgaXMgZW5hYmxlZCBpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIEJlZm9yZSBJIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgY29kZSBpdHNlbGYsIGxldCdzIHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBLY29uZmlnIGZpbGVzLiBUaGF0J3MgdGhlIGZpcnN0IGFuZCBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gdmVyaWZ5IGlmIHRoaXMgZmVhdHVyZSBpcyBldmVuICphdmFpbGFibGUqIHRvIG1lIGluIHRoaXMgYnVpbGQuIEknZCB0eXBpY2FsbHkgc3RhcnQgd2l0aCB0aGUgbW9zdCByZWxldmFudCBLY29uZmlnIGZpbGUgZm9yIG5ldHdvcmsgY29uZmlndXJhdGlvbnMgYW5kIG11bHRpY2FzdCBzdXBwb3J0LCBidXQgSSdsbCBuZWVkIHRvIGtub3cgdGhlIHNwZWNpZmljIHBsYXRmb3JtIHRvIGJlIGV4YWN0LiBUaGlzIGlzIGEgcHJlbGltaW5hcnkgY2hlY2sgdG8gcnVsZSBvdXQgYW55IGltbWVkaWF0ZSBpc3N1ZXMgb3IgY29uZmlybSBpdCdzIGJlZW4gZXhwbGljaXRseSBkaXNhYmxlZC4gSWYgaXQncyBub3QgcHJlc2VudCBvciBkaXNhYmxlZCwgdGhhdCdzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBlZmZvcnRzIGZpcnN0IHRvIGZpZ3VyZSBvdXQgdGhlIHJlYXNvbiBiZWhpbmQgdGhhdCBjaG9pY2UuIElmIGl0ICppcyogZW5hYmxlZCwgdGhlbiBJIGNhbiBtb3ZlIG9uIHRvIHRoZSBhY3R1YWwgY29kZS4gVGhpcyBpbml0aWFsIHN0ZXAgY291bGQgc2F2ZSBtZSBhIGxvdCBvZiB0aW1lIGRvd24gdGhlIHJvYWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0NTQsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODo0MzoyNi40OTk2OTQ3NzhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc1NDQ2NzEzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBfTVVMVElDQVNUXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWctNC0jXFxubmV0L2lwdjQvS2NvbmZpZzo1OmNvbmZpZyBJUF9NVUxUSUNBU1RcXG5uZXQvaXB2NC9LY29uZmlnLTYtXFx0Ym9vbCBcXFwiSVA6IG11bHRpY2FzdGluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6NDM6MjkuMjU0MTY4NjI5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIzNzQ2NTk3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ2hlY2tpbmcgS2NvbmZpZyBmb3IgSVB2NiBTdXBwb3J0KipcblxuUmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgdGhlIElQdjYgY29uZmlndXJhdGlvbiB3aXRoaW4gdGhlIGN1cnJlbnQgS2NvbmZpZyBzZXR1cC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaXZlIHJpZ2h0IGludG8gdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZXMuIEknbGwgYmUgbG9va2luZyBmb3IgdGhlIG9idmlvdXMgZmxhZ3MgYW5kIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIElQdjYg4oCTIGBDT05GSUdfSVBWNmAsIGBDT05GSUdfSVBWNl9TTkRCVUZgLCBwZXJoYXBzIGV2ZW4gdGhlIG1vcmUgZ3JhbnVsYXIgb3B0aW9ucyBmb3Igc3BlY2lmaWMgSVB2NiBleHRlbnNpb25zIG9yIHByb3RvY29sIGltcGxlbWVudGF0aW9ucy4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlIGRlZmF1bHQgc3RhdGUgb2YgdGhlc2Ugb3B0aW9ucyBhbmQgc2VlIGlmIHRoZXkncmUgcHJvcGVybHkgZ3VhcmRlZCBieSBhbnkgZmVhdHVyZS1zcGVjaWZpYyBzZWxlY3Rpb25zIG9yIGFyY2hpdGVjdHVyZSBjb25zdHJhaW50cy4gSXMgdGhlcmUgYW55dGhpbmcgdW51c3VhbCBvciBub24tb2J2aW91cyB0aGF0IEkgbmVlZCB0byBiZSBvbiB0aGUgbG9va291dCBmb3I/IEknbGwgYWxzbyBnbGFuY2UgYXQgZGVwZW5kZW5jaWVzIHRvIGVuc3VyZSB0aGUgbmVjZXNzYXJ5IHVuZGVybHlpbmcgbmV0d29ya2luZyBjb21wb25lbnRzIGFyZSBpbiBwbGFjZS4gR290IHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nJ3Mgd2lyZWQgdXAgY29ycmVjdGx5IGJlZm9yZSBJIGNhbiBtb3ZlIGZvcndhcmQuIFRoaXMgaW5pdGlhbCBjaGVjayB3aWxsIGdpdmUgbWUgdGhlIGluZm9ybWF0aW9uIHRvIG1ha2UgYSBxdWljayBkZXRlcm1pbmF0aW9uIGlmIGl0J3MgdGhlcmUsIGlmIGl0IGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgb3IgaWYgSSBuZWVkIHRvIGFkZHJlc3MgYW55IGFwcGFyZW50IG1pc3NpbmcgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3NjAsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODo0MzozMi40OTE2MzcxNTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU0MDcwNzcyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBWNlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9LY29uZmlnLTUtXFxubmV0L2lwdjYvS2NvbmZpZzo2Om1lbnVjb25maWcgSVBWNlxcbm5ldC9pcHY2L0tjb25maWctNy1cXHRib29sIFxcXCJUaGUgSVB2NiBwcm90b2NvbFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9MTk9aWYgSVBWNlxcbm5ldC9pcHY2L0tjb25maWctMjAtXFxubmV0L2lwdjYvS2NvbmZpZzoyMTpjb25maWcgSVBWNl9ST1VURVJfUFJFRlxcbm5ldC9pcHY2L0tjb25maWctMjItXFx0Ym9vbCBcXFwiSVB2NjogUm91dGVyIFByZWZlcmVuY2UgKFJGQyA0MTkxKSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMC1cXG5uZXQvaXB2Ni9LY29uZmlnOjMxOmNvbmZpZyBJUFY2X1JPVVRFX0lORk9cXG5uZXQvaXB2Ni9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIklQdjY6IFJvdXRlIEluZm9ybWF0aW9uIChSRkMgNDE5MSkgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMzgtXFxubmV0L2lwdjYvS2NvbmZpZzozOTpjb25maWcgSVBWNl9PUFRJTUlTVElDX0RBRFxcbm5ldC9pcHY2L0tjb25maWctNDAtXFx0Ym9vbCBcXFwiSVB2NjogRW5hYmxlIFJGQyA0NDI5IE9wdGltaXN0aWMgREFEXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xMDI9Y29uZmlnIElORVQ2X0lQQ09NUFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xMTEtXFxubmV0L2lwdjYvS2NvbmZpZzoxMTI6Y29uZmlnIElQVjZfTUlQNlxcbm5ldC9pcHY2L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBNb2JpbGl0eVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTE5LVxcbm5ldC9pcHY2L0tjb25maWc6MTIwOmNvbmZpZyBJUFY2X0lMQVxcbm5ldC9pcHY2L0tjb25maWctMTIxLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBJZGVudGlmaWVyIExvY2F0b3IgQWRkcmVzc2luZyAoSUxBKVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9MTQ2PWNvbmZpZyBJTkVUNl9UVU5ORUxcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTQ5LVxcbm5ldC9pcHY2L0tjb25maWc6MTUwOmNvbmZpZyBJUFY2X1ZUSVxcbm5ldC9pcHY2L0tjb25maWctMTUxLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIChzZWN1cmUpIElQdjY6IHR1bm5lbGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTYxLVxcbm5ldC9pcHY2L0tjb25maWc6MTYyOmNvbmZpZyBJUFY2X1NJVFxcbm5ldC9pcHY2L0tjb25maWctMTYzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBJUHY2LWluLUlQdjQgdHVubmVsIChTSVQgZHJpdmVyKVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTc2LVxcbm5ldC9pcHY2L0tjb25maWc6MTc3OmNvbmZpZyBJUFY2X1NJVF82UkRcXG5uZXQvaXB2Ni9LY29uZmlnLTE3OC1cXHRib29sIFxcXCJJUHY2OiBJUHY2IFJhcGlkIERlcGxveW1lbnQgKDZSRClcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTE5NS1cXG5uZXQvaXB2Ni9LY29uZmlnOjE5Njpjb25maWcgSVBWNl9ORElTQ19OT0RFVFlQRVxcbm5ldC9pcHY2L0tjb25maWctMTk3LVxcdGJvb2xcXG5uZXQvaXB2Ni9LY29uZmlnLTE5OC1cXG5uZXQvaXB2Ni9LY29uZmlnOjE5OTpjb25maWcgSVBWNl9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogSVAtaW4tSVB2NiB0dW5uZWwgKFJGQzI0NzMpXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMDktXFxubmV0L2lwdjYvS2NvbmZpZzoyMTA6Y29uZmlnIElQVjZfR1JFXFxubmV0L2lwdjYvS2NvbmZpZy0yMTEtXFx0dHJpc3RhdGUgXFxcIklQdjY6IEdSRSB0dW5uZWxcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIyNy1cXG5uZXQvaXB2Ni9LY29uZmlnOjIyODpjb25maWcgSVBWNl9GT1VcXG5uZXQvaXB2Ni9LY29uZmlnLTIyOS1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMzEtXFxubmV0L2lwdjYvS2NvbmZpZzoyMzI6Y29uZmlnIElQVjZfRk9VX1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMjMzLVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIzNi1cXG5uZXQvaXB2Ni9LY29uZmlnOjIzNzpjb25maWcgSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG5uZXQvaXB2Ni9LY29uZmlnLTIzOC1cXHRib29sIFxcXCJJUHY2OiBNdWx0aXBsZSBSb3V0aW5nIFRhYmxlc1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjQyLVxcbm5ldC9pcHY2L0tjb25maWc6MjQzOmNvbmZpZyBJUFY2X1NVQlRSRUVTXFxubmV0L2lwdjYvS2NvbmZpZy0yNDQtXFx0Ym9vbCBcXFwiSVB2Njogc291cmNlIGFkZHJlc3MgYmFzZWQgcm91dGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjU2LVxcbm5ldC9pcHY2L0tjb25maWc6MjU3OmNvbmZpZyBJUFY2X01ST1VURVxcbm5ldC9pcHY2L0tjb25maWctMjU4LVxcdGJvb2wgXFxcIklQdjY6IG11bHRpY2FzdCByb3V0aW5nXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yNjQtXFxubmV0L2lwdjYvS2NvbmZpZzoyNjU6Y29uZmlnIElQVjZfTVJPVVRFX01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY2L0tjb25maWctMjY2LVxcdGJvb2wgXFxcIklQdjY6IG11bHRpY2FzdCBwb2xpY3kgcm91dGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjc4LVxcbm5ldC9pcHY2L0tjb25maWc6Mjc5OmNvbmZpZyBJUFY2X1BJTVNNX1YyXFxubmV0L2lwdjYvS2NvbmZpZy0yODAtXFx0Ym9vbCBcXFwiSVB2NjogUElNLVNNIHZlcnNpb24gMiBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yODUtXFxubmV0L2lwdjYvS2NvbmZpZzoyODY6Y29uZmlnIElQVjZfU0VHNl9MV1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMjg3LVxcdGJvb2wgXFxcIklQdjY6IFNlZ21lbnQgUm91dGluZyBIZWFkZXIgZW5jYXBzdWxhdGlvbiBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yOTktXFxubmV0L2lwdjYvS2NvbmZpZzozMDA6Y29uZmlnIElQVjZfU0VHNl9ITUFDXFxubmV0L2lwdjYvS2NvbmZpZy0zMDEtXFx0Ym9vbCBcXFwiSVB2NjogU2VnbWVudCBSb3V0aW5nIEhNQUMgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMzExLVxcbm5ldC9pcHY2L0tjb25maWc6MzEyOmNvbmZpZyBJUFY2X1NFRzZfQlBGXFxubmV0L2lwdjYvS2NvbmZpZy0zMTMtXFx0ZGVmX2Jvb2wgeVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMTYtXFxubmV0L2lwdjYvS2NvbmZpZzozMTc6Y29uZmlnIElQVjZfUlBMX0xXVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0zMTgtXFx0Ym9vbCBcXFwiSVB2NjogUlBMIFNvdXJjZSBSb3V0aW5nIEhlYWRlciBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMjctXFxubmV0L2lwdjYvS2NvbmZpZzozMjg6Y29uZmlnIElQVjZfSU9BTTZfTFdUVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTMyOS1cXHRib29sIFxcXCJJUHY2OiBJT0FNIFByZS1hbGxvY2F0ZWQgVHJhY2UgaW5zZXJ0aW9uIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjQzOjM1LjAzMjM1MTAwOVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5NDAyODUyNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbXBhY3Qgb2YgdGhlIFBhdGNoIG9uIElHTVAgYW5kIE1MRCBUaW1lcnMgYW5kIFdvcmtxdWV1ZXMqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRpZ2dpbmcgaW50byB0aGUgdGltaW5nIG1lY2hhbmlzbXMgZm9yIElHTVAgYW5kIE1MRCwgc3BlY2lmaWNhbGx5IG1vZGlmeWluZyBgaWdtcF9zdG9wX3RpbWVyYCwgYGlnbXBfZ3Ffc3RhcnRfdGltZXJgLCBgaWdtcF9pZmNfc3RhcnRfdGltZXJgLCBgaWdtcF9tb2RfdGltZXJgIGluIGBuZXQvaXB2NC9pZ21wLmNgIGFuZCBhIGJ1bmNoIG9mIHdvcmtxdWV1ZXMgcmVsYXRlZCB0byBNTEQgaW4gYG5ldC9pcHY2L21jYXN0LmNgOiBgbWxkX2dxX3N0YXJ0X3dvcmtgLCBgbWxkX2dxX3N0b3Bfd29ya2AsIGBtbGRfaWZjX3N0YXJ0X3dvcmtgLCBgbWxkX2lmY19zdG9wX3dvcmtgLCBgbWxkX2RhZF9zdGFydF93b3JrYCwgYG1sZF9kYWRfc3RvcF93b3JrYCwgYWxvbmcgd2l0aCBgaWdtcDZfZXZlbnRfcXVlcnlgIGFuZCBgaWdtcDZfZXZlbnRfcmVwb3J0YC4gSW50ZXJlc3RpbmcuIEl0J3MgdG91Y2hpbmcgYm90aCBJUHY0IChJR01QKSBhbmQgSVB2NiAoTUxEKSBtdWx0aWNhc3QsIHNvIHdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB3aXRoIGFueSBwb3RlbnRpYWwgY3Jvc3MtcHJvdG9jb2wgaW50ZXJhY3Rpb25zLlxuXG5HaXZlbiB0aGF0IE1MRCBpcyBwYXJ0IG9mIElQdjYgbXVsdGljYXN0LCBpdCdzIHdvcnRod2hpbGUgdG8gc2VlIGlmIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBwZXJ0YWluIHRvIE1MRCBpdHNlbGYuIEkgc2hvdWxkIGNoZWNrIGlmIHRoZXJlJ3MgYSBzcGVjaWZpYyBjb25maWcga25vYiBmb3IgSVB2NiBtdWx0aWNhc3QgaW4gZ2VuZXJhbC4gSSBzZWUgYElQVjZfTVJPVVRFYCBidXQgdGhhdCdzIGZvciBtdWx0aWNhc3QgKnJvdXRpbmcqIHJhdGhlciB0aGFuIHRoZSBNTEQgcHJvdG9jb2wgaXRzZWxmLiBNTEQgc2hvdWxkIGJlIGVuYWJsZWQgYXMgcGFydCBvZiBhIHN0YW5kYXJkIElQdjYgc3RhY2suIFRvIGJlIGNvbXBsZXRlbHkgc3VyZSwgSSdsbCBkb3VibGUtY2hlY2sgdGhlIGBuZXQvaXB2Ni9tY2FzdC5jYCBmaWxlIGFuZCBpdHMgTWFrZWZpbGUgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgYnVpbGQtdGltZSBvciBjb21waWxlLXRpbWUgZGVwZW5kZW5jaWVzIG9yIG9wdGlvbnMgdGhhdCBjb3VsZCBpbmZsdWVuY2UgdGhpcyBwYXRjaCdzIGJlaGF2aW9yLiBJIG5lZWQgdG8gYmUgY2VydGFpbiBhYm91dCB0aGUgZGVwZW5kZW5jaWVzIGJlZm9yZSBzaWduaW5nIG9mZiBvbiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTY5LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjQzOjM5Ljk3MjYzODY1M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg1Njg0MjE3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtY2FzdC5vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODk4IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5hcmNoL3NoL2RyaXZlcnMvcGNpL01ha2VmaWxlPTEyPW9iai0kKENPTkZJR19DUFVfU1VCVFlQRV9TSDc3ODYpXFx0Kz0gcGNpZS1zaDc3ODYubyBvcHMtc2g3Nzg2Lm9cXG5hcmNoL3NoL2RyaXZlcnMvcGNpL01ha2VmaWxlLTEzLVxcbmFyY2gvc2gvZHJpdmVycy9wY2kvTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX1NIX0RSRUFNQ0FTVClcXHRcXHQrPSBvcHMtZHJlYW1jYXN0Lm8gZml4dXBzLWRyZWFtY2FzdC5vIFxcXFxcXG5hcmNoL3NoL2RyaXZlcnMvcGNpL01ha2VmaWxlOjE1OlxcdFxcdFxcdFxcdFxcdCAgIHBjaS1kcmVhbWNhc3Qub1xcbmFyY2gvc2gvZHJpdmVycy9wY2kvTWFrZWZpbGUtMTYtb2JqLSQoQ09ORklHX1NIX1NFQ1VSRUVER0U1NDEwKVxcdFxcdCs9IGZpeHVwcy1zbmFwZ2Vhci5vXFxuLS1cXG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmM9NTE9c3RhdGljIGludCBjbl9maWx0ZXIoc3RydWN0IHNvY2sgKmRzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYy01My1cXHRfX3UzMiB3aGF0LCBleGl0X2NvZGUsICpwdHI7XFxuZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jOjU0OlxcdGVudW0gcHJvY19jbl9tY2FzdF9vcCBtY19vcDtcXG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmMtNTUtXFx0dWludHB0cl90IHZhbDtcXG4tLVxcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYy02My1cXHR2YWwgPSAoKHN0cnVjdCBwcm9jX2lucHV0ICopKGRzay1cXHUwMDNlc2tfdXNlcl9kYXRhKSktXFx1MDAzZWV2ZW50X3R5cGU7XFxuZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jOjY0OlxcdG1jX29wID0gKChzdHJ1Y3QgcHJvY19pbnB1dCAqKShkc2stXFx1MDAzZXNrX3VzZXJfZGF0YSkpLVxcdTAwM2VtY2FzdF9vcDtcXG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmMtNjUtXFxuLS1cXG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmM9Mzk1PXN0YXRpYyB2b2lkIGNuX3Byb2NfbWNhc3RfY3RsKHN0cnVjdCBjbl9tc2cgKm1zZyxcXG4tLVxcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYy0zOTcte1xcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYzozOTg6XFx0ZW51bSBwcm9jX2NuX21jYXN0X29wIG1jX29wID0gMCwgcHJldl9tY19vcCA9IDA7XFxuZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jLTM5OS1cXHRzdHJ1Y3QgcHJvY19pbnB1dCAqcGlucHV0ID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYy00MTQtXFx0XFx0cGlucHV0ID0gKHN0cnVjdCBwcm9jX2lucHV0ICopbXNnLVxcdTAwM2VkYXRhO1xcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYzo0MTU6XFx0XFx0bWNfb3AgPSBwaW5wdXQtXFx1MDAzZW1jYXN0X29wO1xcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYy00MTYtXFx0XFx0ZXZfdHlwZSA9IHBpbnB1dC1cXHUwMDNlZXZlbnRfdHlwZTtcXG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmMtNDE3LVxcdH0gZWxzZSBpZiAobXNnLVxcdTAwM2VsZW4gPT0gc2l6ZW9mKG1jX29wKSkge1xcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYzo0MTg6XFx0XFx0bWNfb3AgPSAqKChlbnVtIHByb2NfY25fbWNhc3Rfb3AgKiltc2ctXFx1MDAzZWRhdGEpO1xcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYy00MTktXFx0XFx0ZXZfdHlwZSA9IFBST0NfRVZFTlRfQUxMO1xcbi0tXFxuZHJpdmVycy9jb25uZWN0b3IvY25fcHJvYy5jLTQzOS1cXHRcXHRcXHRwcmV2X21jX29wID1cXG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmM6NDQwOlxcdFxcdFxcdCgoc3RydWN0IHByb2NfaW5wdXQgKikoc2stXFx1MDAzZXNrX3VzZXJfZGF0YSkpLVxcdTAwM2VtY2FzdF9vcDtcXG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmMtNDQxLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYy00NDMtXFx0XFx0XFx0ZXZfdHlwZTtcXG5kcml2ZXJzL2Nvbm5lY3Rvci9jbl9wcm9jLmM6NDQ0OlxcdFxcdCgoc3RydWN0IHByb2NfaW5wdXQgKikoc2stXFx1MDAzZXNrX3VzZXJfZGF0YSkpLVxcdTAwM2VtY2FzdF9vcCA9IG1jX29wO1xcbmRyaXZlcnMvY29ubmVjdG9yL2NuX3Byb2MuYy00NDUtXFx0fVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3JkbWF2dC9NYWtlZmlsZT05PW9iai0kKENPTkZJR19JTkZJTklCQU5EX1JETUFWVCkgKz0gcmRtYXZ0Lm9cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcmRtYXZ0L01ha2VmaWxlLTEwLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvTWFrZWZpbGU6MTE6cmRtYXZ0LXkgOj0gdnQubyBhaC5vIGNxLm8gbWFkLm8gbWNhc3QubyBtbWFwLm8gbXIubyBwZC5vIHFwLm8gXFxcXFxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yZG1hdnQvTWFrZWZpbGUtMTItXFx0cmMubyBzcnEubyB0cmFjZS5vXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL01ha2VmaWxlPTQ9cmRtYV9yeGUteSA6PSBcXFxcXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL01ha2VmaWxlLTIxLVxcdHJ4ZV9pY3JjLm8gXFxcXFxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvTWFrZWZpbGU6MjI6XFx0cnhlX21jYXN0Lm8gXFxcXFxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvTWFrZWZpbGUtMjMtXFx0cnhlX3Rhc2subyBcXFxcXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeC5oPTEzNDU9c3RydWN0IGJueDJ4IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4LmgtMTc5Mi1cXHQvKiBNQ0FTVCBvYmplY3QgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeC5oOjE3OTM6XFx0c3RydWN0IGJueDJ4X21jYXN0X29ialxcdFxcdFxcdG1jYXN0X29iajtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeC5oLTE3OTQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYz0yMTU3PXZvaWQgYm54Mnhfc3F1ZWV6ZV9vYmplY3RzKHN0cnVjdCBibngyeCAqYnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uYy0yMTg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5jOjIxODY6XFx0LyoqKioqKioqKioqKioqKioqIE5vdyBjbGVhbiBtY2FzdCBvYmplY3QgKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmM6MjE4NzpcXHRycGFyYW0ubWNhc3Rfb2JqID0gXFx1MDAyNmJwLVxcdTAwM2VtY2FzdF9vYmo7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmMtMjE4OC1cXHRfX3NldF9iaXQoUkFNUk9EX0RSVl9DTFJfT05MWSwgXFx1MDAyNnJwYXJhbS5yYW1yb2RfZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfY21uLmg9MTEyMj1zdGF0aWMgaW5saW5lIHZvaWQgYm54MnhfaW5pdF9icF9vYmpzKHN0cnVjdCBibngyeCAqYnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uaC0xMTI3LVxcdC8qIG11bHRpY2FzdCBjb25maWd1cmF0aW9uIGNvbnRyb2xsaW5nIG9iamVjdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X2Ntbi5oOjExMjg6XFx0Ym54MnhfaW5pdF9tY2FzdF9vYmooYnAsIFxcdTAwMjZicC1cXHUwMDNlbWNhc3Rfb2JqLCBicC1cXHUwMDNlZnAtXFx1MDAzZWNsX2lkLCBicC1cXHUwMDNlZnAtXFx1MDAzZWNpZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9jbW4uaC0xMTI5LVxcdFxcdFxcdCAgICAgQlBfRlVOQyhicCksIEJQX0ZVTkMoYnApLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jPTUyODA9c3RhdGljIHZvaWQgYm54MnhfaGFuZGxlX21jYXN0X2VxZShzdHJ1Y3QgYm54MnggKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTUyODYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jOjUyODc6XFx0cnBhcmFtLm1jYXN0X29iaiA9IFxcdTAwMjZicC1cXHUwMDNlbWNhc3Rfb2JqO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy01Mjg4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTUyOTEtXFx0LyogQ2xlYXIgcGVuZGluZyBzdGF0ZSBmb3IgdGhlIGxhc3QgY29tbWFuZCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYzo1MjkyOlxcdGJwLVxcdTAwM2VtY2FzdF9vYmoucmF3LmNsZWFyX3BlbmRpbmcoXFx1MDAyNmJwLVxcdTAwM2VtY2FzdF9vYmoucmF3KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtNTI5My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtNTI5NC1cXHQvKiBJZiB0aGVyZSBhcmUgcGVuZGluZyBtY2FzdCBjb21tYW5kcyAtIHNlbmQgdGhlbSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYzo1Mjk1OlxcdGlmIChicC1cXHUwMDNlbWNhc3Rfb2JqLmNoZWNrX3BlbmRpbmcoXFx1MDAyNmJwLVxcdTAwM2VtY2FzdF9vYmopKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTUyOTYtXFx0XFx0cmMgPSBibngyeF9jb25maWdfbWNhc3QoYnAsIFxcdTAwMjZycGFyYW0sIEJOWDJYX01DQVNUX0NNRF9DT05UKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz05MzM3PXZvaWQgYm54MnhfY2hpcF9jbGVhbnVwKHN0cnVjdCBibngyeCAqYnAsIGludCB1bmxvYWRfbW9kZSwgYm9vbCBrZWVwX2xpbmspXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtOTM5OS1cXHQvKiBDbGVhbnVwIG11bHRpY2FzdCBjb25maWd1cmF0aW9uICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jOjk0MDA6XFx0cnBhcmFtLm1jYXN0X29iaiA9IFxcdTAwMjZicC1cXHUwMDNlbWNhc3Rfb2JqO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy05NDAxLVxcdHJjID0gYm54MnhfY29uZmlnX21jYXN0KGJwLCBcXHUwMDI2cnBhcmFtLCBCTlgyWF9NQ0FTVF9DTURfREVMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz0xMjYxOT1zdGF0aWMgaW50IGJueDJ4X3NldF9tY19saXN0X2UxeChzdHJ1Y3QgYm54MnggKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEyNjI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYzoxMjYyNjpcXHRycGFyYW0ubWNhc3Rfb2JqID0gXFx1MDAyNmJwLVxcdTAwM2VtY2FzdF9vYmo7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEyNjI3LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jPTEyNjU0PXN0YXRpYyBpbnQgYm54Mnhfc2V0X21jX2xpc3Qoc3RydWN0IGJueDJ4ICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMjY2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM6MTI2NjU6XFx0cnBhcmFtLm1jYXN0X29iaiA9IFxcdTAwMjZicC1cXHUwMDNlbWNhc3Rfb2JqO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMjY2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MjY0OD1zdGF0aWMgaW50IGJueDJ4X21jYXN0X3dhaXQoc3RydWN0IGJueDJ4ICpicCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjI2NDk6XFx0XFx0XFx0ICAgIHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0yNjUwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MjY3MT1zdGF0aWMgaW50IGJueDJ4X21jYXN0X2VucXVldWVfY21kKHN0cnVjdCBibngyeCAqYnAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzoyNjcyOlxcdFxcdFxcdFxcdCAgIHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0yNjczLVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBibngyeF9tY2FzdF9yYW1yb2RfcGFyYW1zICpwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0yNzc2LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6Mjc3NzpzdGF0aWMgaW5saW5lIGludCBibngyeF9tY2FzdF9nZXRfbmV4dF9iaW4oc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbywgaW50IGxhc3QpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0yNzc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMjgwMy0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjI4MDQ6c3RhdGljIGlubGluZSBpbnQgYm54MnhfbWNhc3RfY2xlYXJfZmlyc3RfYmluKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0yODA1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMjgxMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjI4MTQ6c3RhdGljIGlubGluZSB1OCBibngyeF9tY2FzdF9nZXRfcnhfdHhfZmxhZyhzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMjgxNS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTI4MzA9c3RhdGljIHZvaWQgYm54MnhfbWNhc3Rfc2V0X29uZV9ydWxlX2UyKHN0cnVjdCBibngyeCAqYnAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzoyODMxOlxcdFxcdFxcdFxcdFxcdHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8sIGludCBpZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0yODMyLVxcdFxcdFxcdFxcdFxcdHVuaW9uIGJueDJ4X21jYXN0X2NvbmZpZ19kYXRhICpjZmdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MjkwMz1zdGF0aWMgaW5saW5lIGludCBibngyeF9tY2FzdF9oYW5kbGVfcmVzdG9yZV9jbWRfZTIoXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzoyOTA0OlxcdHN0cnVjdCBibngyeCAqYnAsIHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8gLCBpbnQgc3RhcnRfYmluLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMjkwNS1cXHRpbnQgKnJkYXRhX2lkeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MjkzND1zdGF0aWMgaW5saW5lIHZvaWQgYm54MnhfbWNhc3RfaGRsX3BlbmRpbmdfYWRkX2UyKHN0cnVjdCBibngyeCAqYnAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzoyOTM1OlxcdHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8sIHN0cnVjdCBibngyeF9wZW5kaW5nX21jYXN0X2NtZCAqY21kX3BvcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTI5MzYtXFx0aW50ICpsaW5lX2lkeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9Mjk2OT1zdGF0aWMgaW5saW5lIHZvaWQgYm54MnhfbWNhc3RfaGRsX3BlbmRpbmdfZGVsX2UyKHN0cnVjdCBibngyeCAqYnAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzoyOTcwOlxcdHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8sIHN0cnVjdCBibngyeF9wZW5kaW5nX21jYXN0X2NtZCAqY21kX3BvcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTI5NzEtXFx0aW50ICpsaW5lX2lkeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9Mjk5OT1zdGF0aWMgaW5saW5lIHZvaWQgYm54MnhfbWNhc3RfaGRsX3BlbmRpbmdfcmVzdG9yZV9lMihzdHJ1Y3QgYm54MnggKmJwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MzAwMDpcXHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLCBzdHJ1Y3QgYm54MnhfcGVuZGluZ19tY2FzdF9jbWQgKmNtZF9wb3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zMDAxLVxcdGludCAqbGluZV9pZHgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTMwMTU9Ym54MnhfbWNhc3RfaGRsX3BlbmRpbmdfc2V0X2UyX2NvbnZlcnQoc3RydWN0IGJueDJ4ICpicCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjMwMTY6XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zMDE3LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgYm54MnhfcGVuZGluZ19tY2FzdF9jbWQgKmNtZF9wb3MpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTMwODI9Ym54MnhfbWNhc3RfaGRsX3BlbmRpbmdfc2V0X2UyKHN0cnVjdCBibngyeCAqYnAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozMDgzOlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzA4NC1cXHRcXHRcXHQgICAgICAgc3RydWN0IGJueDJ4X3BlbmRpbmdfbWNhc3RfY21kICpjbWRfcG9zLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zMTE4PXN0YXRpYyBpbmxpbmUgaW50IGJueDJ4X21jYXN0X2hhbmRsZV9wZW5kaW5nX2NtZHNfZTIoc3RydWN0IGJueDJ4ICpicCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzEyMi1cXHRpbnQgY250ID0gMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjMxMjM6XFx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyA9IHAtXFx1MDAzZW1jYXN0X29iajtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMxMjQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTMxNjc9c3RhdGljIGlubGluZSB2b2lkIGJueDJ4X21jYXN0X2hkbF9hZGQoc3RydWN0IGJueDJ4ICpicCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjMxNjg6XFx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbywgc3RydWN0IGJueDJ4X21jYXN0X3JhbXJvZF9wYXJhbXMgKnAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zMTY5LVxcdGludCAqbGluZV9pZHgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTMxODg9c3RhdGljIGlubGluZSB2b2lkIGJueDJ4X21jYXN0X2hkbF9kZWwoc3RydWN0IGJueDJ4ICpicCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjMxODk6XFx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbywgc3RydWN0IGJueDJ4X21jYXN0X3JhbXJvZF9wYXJhbXMgKnAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zMTkwLVxcdGludCAqbGluZV9pZHgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTMyMTg9c3RhdGljIGlubGluZSBpbnQgYm54MnhfbWNhc3RfaGFuZGxlX2N1cnJlbnRfY21kKHN0cnVjdCBibngyeCAqYnAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMyMjIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MzIyMzpcXHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvID0gcC1cXHUwMDNlbWNhc3Rfb2JqO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzIyNC1cXHRpbnQgY250ID0gc3RhcnRfY250O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zMjUyPXN0YXRpYyBpbnQgYm54MnhfbWNhc3RfdmFsaWRhdGVfZTIoc3RydWN0IGJueDJ4ICpicCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzI1NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozMjU2OlxcdHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8gPSBwLVxcdTAwM2VtY2FzdF9vYmo7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zMjU3LVxcdGludCByZWdfc3ogPSBvLVxcdTAwM2VnZXRfcmVnaXN0cnlfc2l6ZShvKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MzMxMD1zdGF0aWMgdm9pZCBibngyeF9tY2FzdF9yZXZlcnRfZTIoc3RydWN0IGJueDJ4ICpicCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzMxNC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozMzE1OlxcdHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8gPSBwLVxcdTAwM2VtY2FzdF9vYmo7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zMzE2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zMzMxPXN0YXRpYyBpbmxpbmUgdm9pZCBibngyeF9tY2FzdF9zZXRfcmRhdGFfaGRyX2UyKHN0cnVjdCBibngyeCAqYnAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMzMzQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MzMzNTpcXHRzdHJ1Y3QgYm54MnhfcmF3X29iaiAqciA9IFxcdTAwMjZwLVxcdTAwM2VtY2FzdF9vYmotXFx1MDAzZXJhdztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMzMzYtXFx0c3RydWN0IGV0aF9tdWx0aWNhc3RfcnVsZXNfcmFtcm9kX2RhdGEgKmRhdGEgPVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zMzU2PXN0YXRpYyBpbmxpbmUgaW50IGJueDJ4X21jYXN0X3JlZnJlc2hfcmVnaXN0cnlfZTIoc3RydWN0IGJueDJ4ICpicCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjMzNTc6XFx0XFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzM1OC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTMzNzM9c3RhdGljIGludCBibngyeF9tY2FzdF9zZXR1cF9lMihzdHJ1Y3QgYm54MnggKmJwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zMzc2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjMzNzc6XFx0c3RydWN0IGJueDJ4X3Jhd19vYmogKnJhdyA9IFxcdTAwMjZwLVxcdTAwM2VtY2FzdF9vYmotXFx1MDAzZXJhdztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjMzNzg6XFx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyA9IHAtXFx1MDAzZW1jYXN0X29iajtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTMzNzktXFx0c3RydWN0IGV0aF9tdWx0aWNhc3RfcnVsZXNfcmFtcm9kX2RhdGEgKmRhdGEgPVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zNDg4PXN0YXRpYyBpbmxpbmUgdm9pZCBibngyeF9tY2FzdF9oZGxfYWRkX2UxaChzdHJ1Y3QgYm54MnggKmJwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MzQ4OTpcXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzQ5MC1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYm54MnhfbWNhc3RfcmFtcm9kX3BhcmFtcyAqcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MzUwOT1zdGF0aWMgaW5saW5lIHZvaWQgYm54MnhfbWNhc3RfaGRsX3Jlc3RvcmVfZTFoKHN0cnVjdCBibngyeCAqYnAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozNTEwOlxcdHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8sIHN0cnVjdCBibngyeF9tY2FzdF9yYW1yb2RfcGFyYW1zICpwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzUxMS1cXHR1MzIgKm1jX2ZpbHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MzUyNz1zdGF0aWMgaW50IGJueDJ4X21jYXN0X3NldHVwX2UxaChzdHJ1Y3QgYm54MnggKmJwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNTMxLVxcdGludCBpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MzUzMjpcXHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvID0gcC1cXHUwMDNlbWNhc3Rfb2JqO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzUzMy1cXHRzdHJ1Y3QgYm54MnhfcmF3X29iaiAqciA9IFxcdTAwMjZvLVxcdTAwM2VyYXc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTM1ODE9c3RhdGljIGludCBibngyeF9tY2FzdF92YWxpZGF0ZV9lMShzdHJ1Y3QgYm54MnggKmJwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNTg0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjM1ODU6XFx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyA9IHAtXFx1MDAzZW1jYXN0X29iajtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM1ODYtXFx0aW50IHJlZ19zeiA9IG8tXFx1MDAzZWdldF9yZWdpc3RyeV9zaXplKG8pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zNjQxPXN0YXRpYyB2b2lkIGJueDJ4X21jYXN0X3JldmVydF9lMShzdHJ1Y3QgYm54MnggKmJwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNjQ1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjM2NDY6XFx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyA9IHAtXFx1MDAzZW1jYXN0X29iajtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM2NDctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTM2NTg9c3RhdGljIHZvaWQgYm54MnhfbWNhc3Rfc2V0X29uZV9ydWxlX2UxKHN0cnVjdCBibngyeCAqYnAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozNjU5OlxcdFxcdFxcdFxcdFxcdHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8sIGludCBpZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNjYwLVxcdFxcdFxcdFxcdFxcdHVuaW9uIGJueDJ4X21jYXN0X2NvbmZpZ19kYXRhICpjZmdfZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9MzY5Mj1zdGF0aWMgaW5saW5lIHZvaWQgYm54MnhfbWNhc3Rfc2V0X3JkYXRhX2hkcl9lMShzdHJ1Y3QgYm54MnggKmJwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNjk1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjM2OTY6XFx0c3RydWN0IGJueDJ4X3Jhd19vYmogKnIgPSBcXHUwMDI2cC1cXHUwMDNlbWNhc3Rfb2JqLVxcdTAwM2VyYXc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNjk3LVxcdHN0cnVjdCBtYWNfY29uZmlndXJhdGlvbl9jbWQgKmRhdGEgPVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zNzI1PXN0YXRpYyBpbmxpbmUgaW50IGJueDJ4X21jYXN0X2hhbmRsZV9yZXN0b3JlX2NtZF9lMShcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjM3MjY6XFx0c3RydWN0IGJueDJ4ICpicCwgc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyAsIGludCBzdGFydF9pZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zNzI3LVxcdGludCAqcmRhdGFfaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYz0zNzQ5PXN0YXRpYyBpbmxpbmUgaW50IGJueDJ4X21jYXN0X2hhbmRsZV9wZW5kaW5nX2NtZHNfZTEoXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM3NTMtXFx0c3RydWN0IGJueDJ4X21jYXN0X21hY19lbGVtICpwbWFjX3BvcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjM3NTQ6XFx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyA9IHAtXFx1MDAzZW1jYXN0X29iajtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM3NTUtXFx0dW5pb24gYm54MnhfbWNhc3RfY29uZmlnX2RhdGEgY2ZnX2RhdGEgPSB7TlVMTH07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTM4MzA9c3RhdGljIGlubGluZSBpbnQgYm54MnhfbWNhc3RfcmVmcmVzaF9yZWdpc3RyeV9lMShzdHJ1Y3QgYm54MnggKmJwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6MzgzMTpcXHRcXHRcXHRcXHRcXHRcXHQgIHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zODMyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM9Mzg3Nz1zdGF0aWMgaW50IGJueDJ4X21jYXN0X3NldHVwX2UxKHN0cnVjdCBibngyeCAqYnAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM4ODAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6Mzg4MTpcXHRzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvID0gcC1cXHUwMDNlbWNhc3Rfb2JqO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzg4Mi1cXHRzdHJ1Y3QgYm54MnhfcmF3X29iaiAqcmF3ID0gXFx1MDAyNm8tXFx1MDAzZXJhdztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzk1NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjM5NTY6c3RhdGljIGludCBibngyeF9tY2FzdF9nZXRfcmVnaXN0cnlfc2l6ZV9leGFjdChzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzk1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM5NjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzozOTYxOnN0YXRpYyBpbnQgYm54MnhfbWNhc3RfZ2V0X3JlZ2lzdHJ5X3NpemVfYXByb3goc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM5NjIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zOTY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6Mzk2NjpzdGF0aWMgdm9pZCBibngyeF9tY2FzdF9zZXRfcmVnaXN0cnlfc2l6ZV9leGFjdChzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzk2Ny1cXHRcXHRcXHRcXHRcXHRcXHRpbnQgbilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtMzk3MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjM5NzI6c3RhdGljIHZvaWQgYm54MnhfbWNhc3Rfc2V0X3JlZ2lzdHJ5X3NpemVfYXByb3goc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM5NzMtXFx0XFx0XFx0XFx0XFx0XFx0aW50IG4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jPTM5Nzg9aW50IGJueDJ4X2NvbmZpZ19tY2FzdChzdHJ1Y3QgYm54MnggKmJwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy0zOTgxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjM5ODI6XFx0c3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyA9IHAtXFx1MDAzZW1jYXN0X29iajtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTM5ODMtXFx0c3RydWN0IGJueDJ4X3Jhd19vYmogKnIgPSBcXHUwMDI2by1cXHUwMDNlcmF3O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDA3LVxcdCAgICAoKG8tXFx1MDAzZW1heF9jbWRfbGVuIFxcdTAwM2UgMCkgXFx1MDAyNlxcdTAwMjYgKG8tXFx1MDAzZXRvdGFsX3BlbmRpbmdfbnVtIFxcdTAwM2Ugby1cXHUwMDNlbWF4X2NtZF9sZW4pKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDAwODpcXHRcXHRyYyA9IG8tXFx1MDAzZWVucXVldWVfY21kKGJwLCBwLVxcdTAwM2VtY2FzdF9vYmosIHAsIGNtZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDA5LVxcdFxcdGlmIChyYyBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwNDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDQ0OnN0YXRpYyB2b2lkIGJueDJ4X21jYXN0X2NsZWFyX3NjaGVkKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDQ1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQwNTE6c3RhdGljIHZvaWQgYm54MnhfbWNhc3Rfc2V0X3NjaGVkKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDUyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQwNTg6c3RhdGljIGJvb2wgYm54MnhfbWNhc3RfY2hlY2tfc2NoZWQoc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwNTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDA2MzpzdGF0aWMgYm9vbCBibngyeF9tY2FzdF9jaGVja19wZW5kaW5nKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQwNjg6dm9pZCBibngyeF9pbml0X21jYXN0X29iaihzdHJ1Y3QgYm54MnggKmJwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDA2OTpcXHRcXHRcXHQgIHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm1jYXN0X29iaixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwNzAtXFx0XFx0XFx0ICB1OCBtY2FzdF9jbF9pZCwgdTMyIG1jYXN0X2NpZCwgdTggZnVuY19pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA3My17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDc0OlxcdG1lbXNldChtY2FzdF9vYmosIDAsIHNpemVvZigqbWNhc3Rfb2JqKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDc1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDA3NjpcXHRibngyeF9pbml0X3Jhd19vYmooXFx1MDAyNm1jYXN0X29iai1cXHUwMDNlcmF3LCBtY2FzdF9jbF9pZCwgbWNhc3RfY2lkLCBmdW5jX2lkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA3Ny1cXHRcXHRcXHQgICByZGF0YSwgcmRhdGFfbWFwcGluZywgc3RhdGUsIHBzdGF0ZSwgdHlwZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDA3OTpcXHRtY2FzdF9vYmotXFx1MDAzZWVuZ2luZV9pZCA9IGVuZ2luZV9pZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDgxOlxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZtY2FzdF9vYmotXFx1MDAzZXBlbmRpbmdfY21kc19oZWFkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwODItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDgzOlxcdG1jYXN0X29iai1cXHUwMDNlc2NoZWRfc3RhdGUgPSBCTlgyWF9GSUxURVJfTUNBU1RfU0NIRUQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDg0OlxcdG1jYXN0X29iai1cXHUwMDNlY2hlY2tfc2NoZWQgPSBibngyeF9tY2FzdF9jaGVja19zY2hlZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQwODU6XFx0bWNhc3Rfb2JqLVxcdTAwM2VzZXRfc2NoZWQgPSBibngyeF9tY2FzdF9zZXRfc2NoZWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDg2OlxcdG1jYXN0X29iai1cXHUwMDNlY2xlYXJfc2NoZWQgPSBibngyeF9tY2FzdF9jbGVhcl9zY2hlZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDg4LVxcdGlmIChDSElQX0lTX0UxKGJwKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDA4OTpcXHRcXHRtY2FzdF9vYmotXFx1MDAzZWNvbmZpZ19tY2FzdCAgICAgID0gYm54MnhfbWNhc3Rfc2V0dXBfZTE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDkwOlxcdFxcdG1jYXN0X29iai1cXHUwMDNlZW5xdWV1ZV9jbWQgICAgICAgPSBibngyeF9tY2FzdF9lbnF1ZXVlX2NtZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQwOTE6XFx0XFx0bWNhc3Rfb2JqLVxcdTAwM2VoZGxfcmVzdG9yZSAgICAgICA9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDkyLVxcdFxcdFxcdGJueDJ4X21jYXN0X2hhbmRsZV9yZXN0b3JlX2NtZF9lMTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQwOTM6XFx0XFx0bWNhc3Rfb2JqLVxcdTAwM2VjaGVja19wZW5kaW5nICAgICA9IGJueDJ4X21jYXN0X2NoZWNrX3BlbmRpbmc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MDk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDA5NS1cXHRcXHRpZiAoQ0hJUF9SRVZfSVNfU0xPVyhicCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MDk2OlxcdFxcdFxcdG1jYXN0X29iai1cXHUwMDNlbWF4X2NtZF9sZW4gPSBCTlgyWF9NQVhfRU1VTF9NVUxUSTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwOTctXFx0XFx0ZWxzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDA5ODpcXHRcXHRcXHRtY2FzdF9vYmotXFx1MDAzZW1heF9jbWRfbGVuID0gQk5YMlhfTUFYX01VTFRJQ0FTVDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQwOTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTAwOlxcdFxcdG1jYXN0X29iai1cXHUwMDNld2FpdF9jb21wICAgICAgICAgPSBibngyeF9tY2FzdF93YWl0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDEwMTpcXHRcXHRtY2FzdF9vYmotXFx1MDAzZXNldF9vbmVfcnVsZSAgICAgID0gYm54MnhfbWNhc3Rfc2V0X29uZV9ydWxlX2UxO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDEwMjpcXHRcXHRtY2FzdF9vYmotXFx1MDAzZXZhbGlkYXRlICAgICAgICAgID0gYm54MnhfbWNhc3RfdmFsaWRhdGVfZTE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTAzOlxcdFxcdG1jYXN0X29iai1cXHUwMDNlcmV2ZXJ0ICAgICAgICAgICAgPSBibngyeF9tY2FzdF9yZXZlcnRfZTE7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTA0OlxcdFxcdG1jYXN0X29iai1cXHUwMDNlZ2V0X3JlZ2lzdHJ5X3NpemUgPVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDEwNS1cXHRcXHRcXHRibngyeF9tY2FzdF9nZXRfcmVnaXN0cnlfc2l6ZV9leGFjdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMDY6XFx0XFx0bWNhc3Rfb2JqLVxcdTAwM2VzZXRfcmVnaXN0cnlfc2l6ZSA9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MTA3LVxcdFxcdFxcdGJueDJ4X21jYXN0X3NldF9yZWdpc3RyeV9zaXplX2V4YWN0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MTExLVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDExMjpcXHRcXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2bWNhc3Rfb2JqLVxcdTAwM2VyZWdpc3RyeS5leGFjdF9tYXRjaC5tYWNzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQxMTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MTE0LVxcdH0gZWxzZSBpZiAoQ0hJUF9JU19FMUgoYnApKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTE1OlxcdFxcdG1jYXN0X29iai1cXHUwMDNlY29uZmlnX21jYXN0ICA9IGJueDJ4X21jYXN0X3NldHVwX2UxaDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMTY6XFx0XFx0bWNhc3Rfb2JqLVxcdTAwM2VlbnF1ZXVlX2NtZCAgID0gTlVMTDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMTc6XFx0XFx0bWNhc3Rfb2JqLVxcdTAwM2VoZGxfcmVzdG9yZSAgID0gTlVMTDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMTg6XFx0XFx0bWNhc3Rfb2JqLVxcdTAwM2VjaGVja19wZW5kaW5nID0gYm54MnhfbWNhc3RfY2hlY2tfcGVuZGluZztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQxMTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQxMjItXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTIzOlxcdFxcdG1jYXN0X29iai1cXHUwMDNlbWF4X2NtZF9sZW4gICAgICAgPSAtMTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMjQ6XFx0XFx0bWNhc3Rfb2JqLVxcdTAwM2V3YWl0X2NvbXAgICAgICAgICA9IGJueDJ4X21jYXN0X3dhaXQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTI1OlxcdFxcdG1jYXN0X29iai1cXHUwMDNlc2V0X29uZV9ydWxlICAgICAgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDEyNjpcXHRcXHRtY2FzdF9vYmotXFx1MDAzZXZhbGlkYXRlICAgICAgICAgID0gYm54MnhfbWNhc3RfdmFsaWRhdGVfZTFoO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDEyNzpcXHRcXHRtY2FzdF9vYmotXFx1MDAzZXJldmVydCAgICAgICAgICAgID0gYm54MnhfbWNhc3RfcmV2ZXJ0X2UxaDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMjg6XFx0XFx0bWNhc3Rfb2JqLVxcdTAwM2VnZXRfcmVnaXN0cnlfc2l6ZSA9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MTI5LVxcdFxcdFxcdGJueDJ4X21jYXN0X2dldF9yZWdpc3RyeV9zaXplX2Fwcm94O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDEzMDpcXHRcXHRtY2FzdF9vYmotXFx1MDAzZXNldF9yZWdpc3RyeV9zaXplID1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQxMzEtXFx0XFx0XFx0Ym54MnhfbWNhc3Rfc2V0X3JlZ2lzdHJ5X3NpemVfYXByb3g7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MTMyLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTMzOlxcdFxcdG1jYXN0X29iai1cXHUwMDNlY29uZmlnX21jYXN0ICAgICAgPSBibngyeF9tY2FzdF9zZXR1cF9lMjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxMzQ6XFx0XFx0bWNhc3Rfb2JqLVxcdTAwM2VlbnF1ZXVlX2NtZCAgICAgICA9IGJueDJ4X21jYXN0X2VucXVldWVfY21kO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDEzNTpcXHRcXHRtY2FzdF9vYmotXFx1MDAzZWhkbF9yZXN0b3JlICAgICAgID1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQxMzYtXFx0XFx0XFx0Ym54MnhfbWNhc3RfaGFuZGxlX3Jlc3RvcmVfY21kX2UyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDEzNzpcXHRcXHRtY2FzdF9vYmotXFx1MDAzZWNoZWNrX3BlbmRpbmcgICAgID0gYm54MnhfbWNhc3RfY2hlY2tfcGVuZGluZztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jLTQxMzgtXFx0XFx0LyogVE9ETzogVGhlcmUgc2hvdWxkIGJlIGEgcHJvcGVyIEhTSSBkZWZpbmUgZm9yIHRoaXMgbnVtYmVyISEhXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MTM5LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDE0MDpcXHRcXHRtY2FzdF9vYmotXFx1MDAzZW1heF9jbWRfbGVuICAgICAgID0gMTY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTQxOlxcdFxcdG1jYXN0X29iai1cXHUwMDNld2FpdF9jb21wICAgICAgICAgPSBibngyeF9tY2FzdF93YWl0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDE0MjpcXHRcXHRtY2FzdF9vYmotXFx1MDAzZXNldF9vbmVfcnVsZSAgICAgID0gYm54MnhfbWNhc3Rfc2V0X29uZV9ydWxlX2UyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmM6NDE0MzpcXHRcXHRtY2FzdF9vYmotXFx1MDAzZXZhbGlkYXRlICAgICAgICAgID0gYm54MnhfbWNhc3RfdmFsaWRhdGVfZTI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTQ0OlxcdFxcdG1jYXN0X29iai1cXHUwMDNlcmV2ZXJ0ICAgICAgICAgICAgPSBibngyeF9tY2FzdF9yZXZlcnRfZTI7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYzo0MTQ1OlxcdFxcdG1jYXN0X29iai1cXHUwMDNlZ2V0X3JlZ2lzdHJ5X3NpemUgPVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmMtNDE0Ni1cXHRcXHRcXHRibngyeF9tY2FzdF9nZXRfcmVnaXN0cnlfc2l6ZV9hcHJveDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5jOjQxNDc6XFx0XFx0bWNhc3Rfb2JqLVxcdTAwM2VzZXRfcmVnaXN0cnlfc2l6ZSA9XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuYy00MTQ4LVxcdFxcdFxcdGJueDJ4X21jYXN0X3NldF9yZWdpc3RyeV9zaXplX2Fwcm94O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaD01MTg9c3RydWN0IGJueDJ4X21jYXN0X3JhbXJvZF9wYXJhbXMge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg6NTE5OlxcdHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm1jYXN0X29iajtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oLTUyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg9NTM2PWVudW0gYm54MnhfbWNhc3RfY21kIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNTUxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg6NTUyOnN0cnVjdCBibngyeF9tY2FzdF9vYmoge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNTUzLVxcdHN0cnVjdCBibngyeF9yYXdfb2JqIHJhdztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNjA3LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg6NjA4OlxcdGludCAoKmhkbF9yZXN0b3JlKShzdHJ1Y3QgYm54MnggKmJwLCBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNjA5LVxcdFxcdFxcdCAgIGludCBzdGFydF9iaW4sIGludCAqcmRhdGFfaWR4KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oLTYxMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oOjYxMTpcXHRpbnQgKCplbnF1ZXVlX2NtZCkoc3RydWN0IGJueDJ4ICpicCwgc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oLTYxMi1cXHRcXHRcXHQgICBzdHJ1Y3QgYm54MnhfbWNhc3RfcmFtcm9kX3BhcmFtcyAqcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNjE1LVxcdHZvaWQgKCpzZXRfb25lX3J1bGUpKHN0cnVjdCBibngyeCAqYnAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaDo2MTY6XFx0XFx0XFx0ICAgICBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvLCBpbnQgaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNjE3LVxcdFxcdFxcdCAgICAgdW5pb24gYm54MnhfbWNhc3RfY29uZmlnX2RhdGEgKmNmZ19kYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC02MjItXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaDo2MjM6XFx0Ym9vbCAoKmNoZWNrX3BlbmRpbmcpKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNjI0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC02MjctXFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaDo2Mjg6XFx0dm9pZCAoKnNldF9zY2hlZCkoc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaDo2Mjk6XFx0dm9pZCAoKmNsZWFyX3NjaGVkKShzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICpvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oOjYzMDpcXHRib29sICgqY2hlY2tfc2NoZWQpKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNjMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNjMyLVxcdC8qIFdhaXQgdW50aWwgYWxsIHBlbmRpbmcgY29tbWFuZHMgY29tcGxldGUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oOjYzMzpcXHRpbnQgKCp3YWl0X2NvbXApKHN0cnVjdCBibngyeCAqYnAsIHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNjM0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC02NTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaDo2NTI6XFx0aW50ICgqZ2V0X3JlZ2lzdHJ5X3NpemUpKHN0cnVjdCBibngyeF9tY2FzdF9vYmogKm8pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmg6NjUzOlxcdHZvaWQgKCpzZXRfcmVnaXN0cnlfc2l6ZSkoc3RydWN0IGJueDJ4X21jYXN0X29iaiAqbywgaW50IG4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NwLmgtNjU0LX07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oPTE0NjM9aW50IGJueDJ4X2NvbmZpZ19yeF9tb2RlKHN0cnVjdCBibngyeCAqYnAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oLTE0NjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaDoxNDY4OnZvaWQgYm54MnhfaW5pdF9tY2FzdF9vYmooc3RydWN0IGJueDJ4ICpicCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcC5oOjE0Njk6XFx0XFx0XFx0ICBzdHJ1Y3QgYm54MnhfbWNhc3Rfb2JqICptY2FzdF9vYmosXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3AuaC0xNDcwLVxcdFxcdFxcdCAgdTggbWNhc3RfY2xfaWQsIHUzMiBtY2FzdF9jaWQsIHU4IGZ1bmNfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcmlvdi5jPTUzNz1pbnQgYm54MnhfdmZfbWNhc3Qoc3RydWN0IGJueDJ4ICpicCwgc3RydWN0IGJueDJ4X3ZpcnRmICp2ZixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmMtNTQ3LVxcdG1lbXNldChcXHUwMDI2bWNhc3QsIDAsIHNpemVvZihzdHJ1Y3QgYm54MnhfbWNhc3RfcmFtcm9kX3BhcmFtcykpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmM6NTQ4OlxcdG1jYXN0Lm1jYXN0X29iaiA9IFxcdTAwMjZ2Zi1cXHUwMDNlbWNhc3Rfb2JqO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmMtNTQ5LVxcdGlmIChkcnZfb25seSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmM9MTUzNz1pbnQgYm54MnhfaW92X25pY19pbml0KHN0cnVjdCBibngyeCAqYnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcmlvdi5jLTE1NzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuYzoxNTc5OlxcdFxcdC8qICBpbml0IG1jYXN0IG9iamVjdCAtIFRoaXMgb2JqZWN0IHdpbGwgYmUgcmUtaW5pdGlhbGl6ZWRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcmlvdi5jLTE1ODAtXFx0XFx0ICogIGR1cmluZyBWRi1BQ1FVSVJFIHdpdGggdGhlIHByb3BlciBjbF9pZCBhbmQgY2lkLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuYy0xNTgzLVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmM6MTU4NDpcXHRcXHRibngyeF9pbml0X21jYXN0X29iaihicCwgXFx1MDAyNnZmLVxcdTAwM2VtY2FzdF9vYmosIDB4RkYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuYy0xNTg1LVxcdFxcdFxcdFxcdCAgICAgMHhGRiwgMHhGRiwgMHhGRixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmM9MTY5OD12b2lkIGJueDJ4X3ZmX2hhbmRsZV9tY2FzdF9lcWUoc3RydWN0IGJueDJ4ICpicCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmMtMTcwMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9zcmlvdi5jOjE3MDQ6XFx0cnBhcmFtLm1jYXN0X29iaiA9IFxcdTAwMjZ2Zi1cXHUwMDNlbWNhc3Rfb2JqO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmM6MTcwNTpcXHR2Zi1cXHUwMDNlbWNhc3Rfb2JqLnJhdy5jbGVhcl9wZW5kaW5nKFxcdTAwMjZ2Zi1cXHUwMDNlbWNhc3Rfb2JqLnJhdyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuYy0xNzA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmMtMTcwNy1cXHQvKiBJZiB0aGVyZSBhcmUgcGVuZGluZyBtY2FzdCBjb21tYW5kcyAtIHNlbmQgdGhlbSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmM6MTcwODpcXHRpZiAodmYtXFx1MDAzZW1jYXN0X29iai5jaGVja19wZW5kaW5nKFxcdTAwMjZ2Zi1cXHUwMDNlbWNhc3Rfb2JqKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmMtMTcwOS1cXHRcXHRyYyA9IGJueDJ4X2NvbmZpZ19tY2FzdChicCwgXFx1MDAyNnJwYXJhbSwgQk5YMlhfTUNBU1RfQ01EX0NPTlQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuaD0xMjg9c3RydWN0IGJueDJ4X3ZpcnRmIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92LmgtMjAzLVxcdC8qIE1DQVNUIG9iamVjdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3NyaW92Lmg6MjA0OlxcdHN0cnVjdCBibngyeF9tY2FzdF9vYmpcXHRcXHRtY2FzdF9vYmo7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54Mnhfc3Jpb3YuaC0yMDUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF92ZnBmLmM9NTQ0PXN0YXRpYyB2b2lkIGJueDJ4X2xlYWRpbmdfdmZxX2luaXQoc3RydWN0IGJueDJ4ICpicCwgc3RydWN0IGJueDJ4X3ZpcnRmICp2ZixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X3ZmcGYuYy01NzgtXFx0LyogbWNhc3QgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF92ZnBmLmM6NTc5OlxcdGJueDJ4X2luaXRfbWNhc3Rfb2JqKGJwLCBcXHUwMDI2dmYtXFx1MDAzZW1jYXN0X29iaiwgY2xfaWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfdmZwZi5jLTU4MC1cXHRcXHRcXHQgICAgIHEtXFx1MDAzZWNpZCwgZnVuY19pZCwgZnVuY19pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0Lmg9Njc2PXN0cnVjdCBiZmlfZW5ldF9zdGF0c190eGYge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaC02ODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaDo2ODE6XFx0dTY0IG1jYXN0X29jdGV0cztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9iZmlfZW5ldC5oLTY4Mi1cXHR1NjQgbWNhc3Q7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9iZmlfZW5ldC5oPTY5NT1zdHJ1Y3QgYmZpX2VuZXRfc3RhdHNfcnhmIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0LmgtNjk5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0Lmg6NzAwOlxcdHU2NCBtY2FzdF9vY3RldHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaC03MDEtXFx0dTY0IG1jYXN0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaD03MTE9c3RydWN0IGJmaV9lbmV0X3N0YXRzX2ZjX3R4IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0LmgtNzE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0Lmg6NzE2OlxcdHU2NCB0eGZfbWNhc3Rfb2N0ZXRzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0LmgtNzE3LVxcdHU2NCB0eGZfbWNhc3Q7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9iZmlfZW5ldC5oPTczMD1zdHJ1Y3QgYmZpX2VuZXRfc3RhdHNfZmNfcngge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaC03MzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaDo3MzU6XFx0dTY0IHJ4Zl9tY2FzdF9vY3RldHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaC03MzYtXFx0dTY0IHJ4Zl9tY2FzdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0Lmg9NzQ1PXN0cnVjdCBiZmlfZW5ldF9zdGF0c19yYWQge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaC03NTQtXFx0dTY0IHJ4X21jYXN0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JmaV9lbmV0Lmg6NzU1OlxcdHU2NCByeF9tY2FzdF9vY3RldHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYmZpX2VuZXQuaC03NTYtXFx0dTY0IHJ4X21jYXN0X3ZsYW47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9ibmFkX2V0aHRvb2wuYz0yOT1zdGF0aWMgY29uc3QgY2hhciAqYm5hZF9uZXRfc3RhdHNfc3RyaW5nc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYm5hZF9ldGh0b29sLmMtMTg2LVxcdFxcXCJyYWRfcnhfbWNhc3RcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JuYWRfZXRodG9vbC5jOjE4NzpcXHRcXFwicmFkX3J4X21jYXN0X29jdGV0c1xcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYm5hZF9ldGh0b29sLmMtMTg4LVxcdFxcXCJyYWRfcnhfbWNhc3RfdmxhblxcXCIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9jYWRlL2JuYS9ibmFkX2V0aHRvb2wuYy0yMDAtXFx0XFxcInJsYl9yYWRfcnhfbWNhc3RcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JuYWRfZXRodG9vbC5jOjIwMTpcXHRcXFwicmxiX3JhZF9yeF9tY2FzdF9vY3RldHNcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JuYWRfZXRodG9vbC5jLTIwMi1cXHRcXFwicmxiX3JhZF9yeF9tY2FzdF92bGFuXFxcIixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JuYWRfZXRodG9vbC5jLTIxMC1cXHRcXFwiZmNfcnhfdWNhc3RfdmxhblxcXCIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvY2FkZS9ibmEvYm5hZF9ldGh0b29sLmM6MjExOlxcdFxcXCJmY19yeF9tY2FzdF9vY3RldHNcXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2NhZGUvYm5hL2JuYWRfZXRodG9vbC5jLTIxMi1cXHRcXFwiZmNfcnhfbWNhc3RcXFwiLFxcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjQzOjQyLjgyOTQ4ODI1NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDc2MTA1NTk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczpcblxuKipEZWJ1Z2dpbmcgYSBTdHViYm9ybiBCdWlsZCBPdXRwdXQqKlxuXG5BbHJpZ2h0LCB0aGUgYnVpbGQgaXMgc3BpdHRpbmcgb3V0IHRoZXNlIGlycml0YXRpbmcgXCJtY2FzdC5vXCIgZmlsZXMgYW5kIG5vdGhpbmcgbW9yZS4gVGhhdCdzIGNsZWFybHkgbm90IHJpZ2h0LiBNeSBndXQgdGVsbHMgbWUgc29tZXRoaW5nIGlzIG9mZiBpbiB0aGUgbmV0d29ya2luZyByZWFsbS4gTGV0J3MgZGlnIGluLiBHaXZlbiB0aGF0IHRoZXNlIGFyZSAqbWNhc3QqIHJlbGF0ZWQsIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gdGhlIElQdjYgbmV0d29ya2luZyBjb2RlLiBNeSBtZW1vcnkgaXMgcGluZ2luZyB0b3dhcmRzIHRoZSBrZXJuZWwncyBgbmV0L2lwdjZgIGRpcmVjdG9yeSwgYW5kIHNwZWNpZmljYWxseSBpdHMgYE1ha2VmaWxlYC4gVGhhdCdzIHdoZXJlIEknbGwgcHJvYmFibHkgZmluZCB0aGUgcnVsZXMgdGhhdCBkZWZpbmUgaG93IGBtY2FzdC5vYCBpcyBidWlsdCwgb3IgKnNob3VsZCogYmUgYnVpbHQuIEhvcGVmdWxseSBJIGNhbiB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmN5IGNoYWluIGFuZCBzZWUgd2hlcmUgaXQncyBnb2luZyB3cm9uZy4gVGltZSB0byBncmFiIHRoYXQgTWFrZWZpbGUgYW5kIGdldCB0byB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDczNCwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjQzOjQ2LjMwNTU5NjkyMVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1MDk2MTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1jYXN0Lm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvTWFrZWZpbGU9OD1pcHY2LXkgOj1cXHRhZl9pbmV0Ni5vIGFueWNhc3QubyBpcDZfb3V0cHV0Lm8gaXA2X2lucHV0Lm8gYWRkcmNvbmYubyBcXFxcXFxuLS1cXG5uZXQvaXB2Ni9NYWtlZmlsZS0xMC1cXHRcXHRyb3V0ZS5vIGlwNl9maWIubyBpcHY2X3NvY2tnbHVlLm8gbmRpc2MubyB1ZHAubyBcXFxcXFxubmV0L2lwdjYvTWFrZWZpbGU6MTE6XFx0XFx0cmF3Lm8gaWNtcC5vIG1jYXN0Lm8gcmVhc3NlbWJseS5vIHRjcF9pcHY2Lm8gcGluZy5vIFxcXFxcXG5uZXQvaXB2Ni9NYWtlZmlsZS0xMi1cXHRcXHRleHRoZHJzLm8gZGF0YWdyYW0ubyBpcDZfZmxvd2xhYmVsLm8gaW5ldDZfY29ubmVjdGlvbl9zb2NrLm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODo0Mzo0Ni40NDA2OTkzOTFaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc2ODgwMTg1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhpbmtpbmcsIGZvcm1hdHRlZCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmV0d29yayBNb2R1bGUgRGVwZW5kZW5jaWVzOiBBIFF1aWNrIE1lbnRhbCBNYXAqKlxuXG5SaWdodCwgc28gSSdtIHByb2Nlc3NpbmcgdGhlIGtlcm5lbCBtb2R1bGUgZGVwZW5kZW5jaWVzIGhlcmUuIFRoZSBgbWNhc3Qub2AgbW9kdWxlIGlzIGZ1bmRhbWVudGFsbHkgcGFydCBvZiB0aGUgSVB2NiBzdGFjaywgZGlyZWN0bHkgYnVpbHQgaW50byBgaXB2Ni5vYC4gTWFrZXMgc2Vuc2UsIG11bHRpY2FzdCBzdXBwb3J0IGZvciBJUHY2IGlzIGNvcmUuIEFuZCB0aGUgY29uZGl0aW9uYWwgZm9yIHRoaXMgYmVoYXZpb3IgaXMgY2xlYXJseSBgQ09ORklHX0lQVjZgLiBFYXN5IGVub3VnaC5cblxuTm93LCBgaWdtcC5vYCBpcyBhIHNpbWlsYXIgc2l0dWF0aW9uLCBpdCBpcyBidWlsdCBpbnRvIGBpcHY0Lm9gLiBUaGlzIHNlZW1zIG5vcm1hbCBiZWNhdXNlIElHTVAgaXMgSW50ZXJuZXQgR3JvdXAgTWFuYWdlbWVudCBQcm90b2NvbCAoZm9yIElQIE11bHRpY2FzdCBvbiBJUHY0KS4gV2UgbmVlZCB0byByZW1lbWJlciB0aGF0IHRoaXMgZGVwZW5kZW5jeSBpcyBjb250cm9sbGVkIGJ5IGJvdGggYENPTkZJR19JTkVUYCwgd2hpY2ggZW5hYmxlcyBnZW5lcmFsIElQdjQgc3VwcG9ydCwgKmFuZCogc3BlY2lmaWNhbGx5IGBDT05GSUdfSVBfTVVMVElDQVNUYCB0byBpbmNsdWRlIElHTVAsIGJlY2F1c2UgeW91IHdvdWxkbid0IG5lY2Vzc2FyaWx5IHdhbnQgbXVsdGljYXN0IGVuYWJsZWQgaWYgeW91IGRpZG4ndCBoYXZlIElHTVAgb24gSVB2NC4gVGhlc2UgY29uZmlndXJhdGlvbnMgYXJlIHRoZSBrZXlzIHRoYXQgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlc2UgbmV0d29yay1yZWxhdGVkIGNvbXBvbmVudHMgYXJlIGluY2x1ZGVkIGluIHRoZSBmaW5hbCBrZXJuZWwgaW1hZ2UuIEdvdCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUxNDIsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODo0Mzo1MC4yMDk1MDQ0NDRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTkyNjcxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZ21wLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9Nj1vYmoteSAgICAgOj0gcm91dGUubyBpbmV0cGVlci5vIHByb3RvY29sLm8gXFxcXFxcbi0tXFxubmV0L2lwdjQvTWFrZWZpbGUtMTMtXFx0ICAgICB0Y3Bfb2ZmbG9hZC5vIHRjcF9wbGIubyBkYXRhZ3JhbS5vIHJhdy5vIHVkcC5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZToxNDpcXHQgICAgIHVkcF9vZmZsb2FkLm8gYXJwLm8gaWNtcC5vIGRldmluZXQubyBhZl9pbmV0Lm8gaWdtcC5vIFxcXFxcXG5uZXQvaXB2NC9NYWtlZmlsZS0xNS1cXHQgICAgIGZpYl9mcm9udGVuZC5vIGZpYl9zZW1hbnRpY3MubyBmaWJfdHJpZS5vIGZpYl9ub3RpZmllci5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6NDM6NTAuMzM1NDQxNTM1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NjM5NjQ0ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgVW5jb25kaXRpb25hbCBJR01QIE1vZHVsZSBCdWlsZCoqXG5cbkhtbSwgc28gYGlnbXAub2Agc2VlbXMgdG8gYmUgZ2V0dGluZyBjb21waWxlZCByZWdhcmRsZXNzIGlmIGBDT05GSUdfSU5FVGAgaXMgc2V0PyBUaGF0IGRvZXNuJ3QgcXVpdGUgc2l0IHJpZ2h0IHdpdGggbWUuIEknZCBleHBlY3QgbW9yZSBncmFudWxhciBjb250cm9sIG92ZXIgdGhhdCwgZXNwZWNpYWxseSBmb3IgZW1iZWRkZWQgc3lzdGVtcyB3aGVyZSBldmVyeSBieXRlIGNvdW50cy4gSXQncyB1c3VhbGx5IGJldHRlciB0byBoYXZlIG1vcmUgZmluZS1ncmFpbmVkIG1vZHVsZSBjb250cm9sIHRvIG1pbmltaXplIHRoZSBrZXJuZWwgZm9vdHByaW50LlxuXG5SaWdodCwgbGV0J3MgY29uZmlybSB0aGlzIHN1c3BpY2lvbi4gVGltZSB0byBkaXZlIGludG8gdGhlIGhlYXJ0IG9mIHRoZSBJUHY0IG5ldHdvcmtpbmcgYnVpbGQgcHJvY2Vzcy4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBgbmV0L2lwdjQvTWFrZWZpbGVgIGFuZCBzZWUgZXhhY3RseSB3aGF0J3MgZHJpdmluZyB0aGUgaW5jbHVzaW9uIG9mIGBpZ21wLm9gLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgYSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBibG9jaywgcGVyaGFwcyBzb21ldGhpbmcgbGlrZSBgaWZlcSAoJChDT05GSUdfSUdNUCkseSlgIHRoYXQgdHJpZ2dlcnMgaXRzIGJ1aWxkLiBJZiBJIGRvbid0LCB0aGVuIHRoYXQncyBhIHByb2JsZW0gdGhhdCBuZWVkcyBhZGRyZXNzaW5nLCBvciBwZXJoYXBzIGFuIGFjY2VwdGFibGUgdHJhZGUtb2ZmIGlmIHRoZSBkZXBlbmRlbmNpZXMgYXJlIHJlYWxseSB0aWdodC4gTGV0J3Mgc2VlIHdoYXQgdGhlIG1ha2VmaWxlIGFjdHVhbGx5IHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NjE1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6NDM6NTMuODk5NDA5NDUzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzNzUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY0L01ha2VmaWxlXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBNYWtlZmlsZSBmb3IgdGhlIExpbnV4IFRDUC9JUCAoSU5FVCkgbGF5ZXIuXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG9iai15ICAgICA6PSByb3V0ZS5vIGluZXRwZWVyLm8gcHJvdG9jb2wubyBcXFxcXFxuICAgNzpcXHRcXHQgICAgIGlwX2lucHV0Lm8gaXBfZnJhZ21lbnQubyBpcF9mb3J3YXJkLm8gaXBfb3B0aW9ucy5vIFxcXFxcXG4gICA4OlxcdFxcdCAgICAgaXBfb3V0cHV0Lm8gaXBfc29ja2dsdWUubyBpbmV0X2hhc2h0YWJsZXMubyBcXFxcXFxuICAgOTpcXHRcXHQgICAgIGluZXRfdGltZXdhaXRfc29jay5vIGluZXRfY29ubmVjdGlvbl9zb2NrLm8gXFxcXFxcbiAgMTA6XFx0XFx0ICAgICB0Y3AubyB0Y3BfaW5wdXQubyB0Y3Bfb3V0cHV0Lm8gdGNwX3RpbWVyLm8gdGNwX2lwdjQubyBcXFxcXFxuICAxMTpcXHRcXHQgICAgIHRjcF9taW5pc29ja3MubyB0Y3BfY29uZy5vIHRjcF9tZXRyaWNzLm8gdGNwX2Zhc3RvcGVuLm8gXFxcXFxcbiAgMTI6XFx0XFx0ICAgICB0Y3BfcmVjb3ZlcnkubyB0Y3BfdWxwLm8gXFxcXFxcbiAgMTM6XFx0XFx0ICAgICB0Y3Bfb2ZmbG9hZC5vIHRjcF9wbGIubyBkYXRhZ3JhbS5vIHJhdy5vIHVkcC5vIFxcXFxcXG4gIDE0OlxcdFxcdCAgICAgdWRwX29mZmxvYWQubyBhcnAubyBpY21wLm8gZGV2aW5ldC5vIGFmX2luZXQubyBpZ21wLm8gXFxcXFxcbiAgMTU6XFx0XFx0ICAgICBmaWJfZnJvbnRlbmQubyBmaWJfc2VtYW50aWNzLm8gZmliX3RyaWUubyBmaWJfbm90aWZpZXIubyBcXFxcXFxuICAxNjpcXHRcXHQgICAgIGluZXRfZnJhZ21lbnQubyBwaW5nLm8gaXBfdHVubmVsX2NvcmUubyBncmVfb2ZmbG9hZC5vIFxcXFxcXG4gIDE3OlxcdFxcdCAgICAgbWV0cmljcy5vIG5ldGxpbmsubyBuZXh0aG9wLm8gdWRwX3R1bm5lbF9zdHViLm9cXG4gIDE4OlxcdFxcbiAgMTk6XFx0b2JqLSQoQ09ORklHX05FVF9JUF9UVU5ORUwpICs9IGlwX3R1bm5lbC5vXFxuICAyMDpcXHRvYmotJChDT05GSUdfU1lTQ1RMKSArPSBzeXNjdGxfbmV0X2lwdjQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODo0Mzo1My44OTk1MDQ5NTNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ2ODQ5NDg3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6XG5cbioqRXhhbWluaW5nIHRoZSBJR01QIE1vZHVsZSdzIENvbmRpdGlvbmFsIEJ1aWxkKipcblxuUmlnaHQsIHNvIGBpZ21wLm9gIHNlZW1zIHRvIGJlIGdldHRpbmcgY29tcGlsZWQgcmVnYXJkbGVzcy4gQnV0IEkga25vdyB0aGF0IHRoZSByZWFsIGNvbnRyb2wgbGllcyB3aXRoIGBDT05GSUdfSVBfTVVMVElDQVNUYC4gSXQncyB0aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRoYXQgcmVhbGx5IHVubG9ja3MgdGhlIG11bHRpY2FzdCByb3V0aW5nIGFuZCBmZWF0dXJlIHNldC4gU28sIHRoZSBrZXkgaXMgZ29pbmcgdG8gYmUgaW4gYG5ldC9pcHY0L2lnbXAuY2AuIFRoYXQncyB3aGVyZSBJIG5lZWQgdG8gbG9vayB0byBzZWUgaG93IGBDT05GSUdfSVBfTVVMVElDQVNUYCBpcyB1c2VkLCBhbmQgaG93IGl0IGFjdHVhbGx5IGltcGFjdHMgdGhlIGJ1aWxkIG9yIGVuYWJsaW5nIG9mIHNwZWNpZmljIElHTVAgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIGtlcm5lbC4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgaXQncyBndWFyZGluZyBhbnkgY3JpdGljYWwgc2VjdGlvbnMgb3IgZGVmaW5lcyB0aGF0IHVsdGltYXRlbHkgbWFrZSBgaWdtcC5vYCAqdXNlZnVsKiBiZXlvbmQgYSBzaW1wbGUgb2JqZWN0IGZpbGUuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoYXQgc291cmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjM1NSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6NDM6NTcuMzY4MDAyOTRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5MzY2NTkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19JUF9NVUxUSUNBU1RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvaWdtcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L2lnbXAuYy0xMDktXFxubmV0L2lwdjQvaWdtcC5jOjExMDojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxcbm5ldC9pcHY0L2lnbXAuYy0xMTEtLyogUGFyYW1ldGVyIG5hbWVzIGFuZCB2YWx1ZXMgYXJlIHRha2VuIGZyb20gaWdtcC12Mi0wNiBkcmFmdCAqL1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jPTIwMT1zdGF0aWMgdm9pZCBpcF9zZl9saXN0X2NsZWFyX2FsbChzdHJ1Y3QgaXBfc2ZfbGlzdCAqcHNmKVxcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTIxMS1cXG5uZXQvaXB2NC9pZ21wLmM6MjEyOiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXFxubmV0L2lwdjQvaWdtcC5jLTIxMy1cXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz0xMTkzPXN0YXRpYyB2b2lkIGlwX21jX2ZpbHRlcl9kZWwoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgYWRkcilcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0xMjAxLVxcbm5ldC9pcHY0L2lnbXAuYzoxMjAyOiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXFxubmV0L2lwdjQvaWdtcC5jLTEyMDMtLypcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz0xMzIyPXN0YXRpYyB2b2lkIF9faWdtcF9ncm91cF9kcm9wcGVkKHN0cnVjdCBpcF9tY19saXN0ICppbSwgZ2ZwX3QgZ2ZwKVxcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTEzMjQtXFx0c3RydWN0IGluX2RldmljZSAqaW5fZGV2ID0gaW0tXFx1MDAzZWludGVyZmFjZTtcXG5uZXQvaXB2NC9pZ21wLmM6MTMyNTojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxcbm5ldC9pcHY0L2lnbXAuYy0xMzI2LVxcdHN0cnVjdCBuZXQgKm5ldCA9IGRldl9uZXQoaW5fZGV2LVxcdTAwM2VkZXYpO1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTEzMzQtXFxubmV0L2lwdjQvaWdtcC5jOjEzMzU6I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1RcXG5uZXQvaXB2NC9pZ21wLmMtMTMzNi1cXHRpZiAoaW0tXFx1MDAzZW11bHRpYWRkciA9PSBJR01QX0FMTF9IT1NUUylcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz0xMzY2PXN0YXRpYyB2b2lkIGlnbXBfZ3JvdXBfYWRkZWQoc3RydWN0IGlwX21jX2xpc3QgKmltKVxcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTEzNjgtXFx0c3RydWN0IGluX2RldmljZSAqaW5fZGV2ID0gaW0tXFx1MDAzZWludGVyZmFjZTtcXG5uZXQvaXB2NC9pZ21wLmM6MTM2OTojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxcbm5ldC9pcHY0L2lnbXAuYy0xMzcwLVxcdHN0cnVjdCBuZXQgKm5ldCA9IGRldl9uZXQoaW5fZGV2LVxcdTAwM2VkZXYpO1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTEzNzctXFxubmV0L2lwdjQvaWdtcC5jOjEzNzg6I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1RcXG5uZXQvaXB2NC9pZ21wLmMtMTM3OS1cXHRpZiAoaW0tXFx1MDAzZW11bHRpYWRkciA9PSBJR01QX0FMTF9IT1NUUylcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz0xNTMyPXN0YXRpYyB2b2lkIF9fX19pcF9tY19pbmNfZ3JvdXAoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgYWRkcixcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0xNTc3LVxcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZpbS1cXHUwMDNlbG9jayk7XFxubmV0L2lwdjQvaWdtcC5jOjE1Nzg6I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1RcXG5uZXQvaXB2NC9pZ21wLmMtMTU3OS1cXHR0aW1lcl9zZXR1cChcXHUwMDI2aW0tXFx1MDAzZXRpbWVyLCBpZ21wX3RpbWVyX2V4cGlyZSwgMCk7XFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMTU4Ny1cXG5uZXQvaXB2NC9pZ21wLmM6MTU4ODojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxcbm5ldC9pcHY0L2lnbXAuYy0xNTg5LVxcdGlnbXB2M19kZWxfZGVscmVjKGluX2RldiwgaW0pO1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jPTE3NTY9c3RhdGljIHZvaWQgaXBfbWNfcmVqb2luX2dyb3VwcyhzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpXFxubmV0L2lwdjQvaWdtcC5jLTE3NTcte1xcbm5ldC9pcHY0L2lnbXAuYzoxNzU4OiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXFxubmV0L2lwdjQvaWdtcC5jLTE3NTktXFx0c3RydWN0IGlwX21jX2xpc3QgKmltO1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jPTE4Mzg9dm9pZCBpcF9tY19yZW1hcChzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMTg0NC1cXHRmb3JfZWFjaF9wbWNfcnRubChpbl9kZXYsIHBtYykge1xcbm5ldC9pcHY0L2lnbXAuYzoxODQ1OiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXFxubmV0L2lwdjQvaWdtcC5jLTE4NDYtXFx0XFx0aWdtcHYzX2RlbF9kZWxyZWMoaW5fZGV2LCBwbWMpO1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jPTE4NTQ9dm9pZCBpcF9tY19kb3duKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldilcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0xODYyLVxcbm5ldC9pcHY0L2lnbXAuYzoxODYzOiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXFxubmV0L2lwdjQvaWdtcC5jLTE4NjQtXFx0V1JJVEVfT05DRShpbl9kZXYtXFx1MDAzZW1yX2lmY19jb3VudCwgMCk7XFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMTg3NC1cXG5uZXQvaXB2NC9pZ21wLmM6MTg3NTojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxcbm5ldC9pcHY0L2lnbXAuYy0xODc2LXN0YXRpYyB2b2lkIGlwX21jX3Jlc2V0KHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldilcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz0xODkwPXZvaWQgaXBfbWNfaW5pdF9kZXYoc3RydWN0IGluX2RldmljZSAqaW5fZGV2KVxcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTE4OTMtXFxubmV0L2lwdjQvaWdtcC5jOjE4OTQ6I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1RcXG5uZXQvaXB2NC9pZ21wLmMtMTg5NS1cXHR0aW1lcl9zZXR1cChcXHUwMDI2aW5fZGV2LVxcdTAwM2Vtcl9ncV90aW1lciwgaWdtcF9ncV90aW1lcl9leHBpcmUsIDApO1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jPTE5MDU9dm9pZCBpcF9tY191cChzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMTkxNC1cXHRmb3JfZWFjaF9wbWNfcnRubChpbl9kZXYsIHBtYykge1xcbm5ldC9pcHY0L2lnbXAuYzoxOTE1OiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXFxubmV0L2lwdjQvaWdtcC5jLTE5MTYtXFx0XFx0aWdtcHYzX2RlbF9kZWxyZWMoaW5fZGV2LCBwbWMpO1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jPTE5MjY9dm9pZCBpcF9tY19kZXN0cm95X2RldihzdHJ1Y3QgaW5fZGV2aWNlICppbl9kZXYpXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMTkzMy1cXHRpcF9tY19kb3duKGluX2Rldik7XFxubmV0L2lwdjQvaWdtcC5jOjE5MzQ6I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1RcXG5uZXQvaXB2NC9pZ21wLmMtMTkzNS1cXHRpZ21wdjNfY2xlYXJfZGVscmVjKGluX2Rldik7XFxuLS1cXG5uZXQvaXB2NC9pZ21wLmM9MTk4Mz1zdGF0aWMgaW50IGlwX21jX2RlbDFfc3JjKHN0cnVjdCBpcF9tY19saXN0ICpwbWMsIGludCBzZm1vZGUsXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMjAwMy1cXHRpZiAoIXBzZi1cXHUwMDNlc2ZfY291bnRbTUNBU1RfSU5DTFVERV0gXFx1MDAyNlxcdTAwMjYgIXBzZi1cXHUwMDNlc2ZfY291bnRbTUNBU1RfRVhDTFVERV0pIHtcXG5uZXQvaXB2NC9pZ21wLmM6MjAwNDojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxcbm5ldC9pcHY0L2lnbXAuYy0yMDA1LVxcdFxcdHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldiA9IHBtYy1cXHUwMDNlaW50ZXJmYWNlO1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTIwMTMtXFx0XFx0XFx0cG1jLVxcdTAwM2Vzb3VyY2VzID0gcHNmLVxcdTAwM2VzZl9uZXh0O1xcbm5ldC9pcHY0L2lnbXAuYzoyMDE0OiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXFxubmV0L2lwdjQvaWdtcC5jLTIwMTUtXFx0XFx0aWYgKHBzZi1cXHUwMDNlc2Zfb2xkaW4gXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0yMDI3LVxcbm5ldC9pcHY0L2lnbXAuYzoyMDI4OiNpZm5kZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxcbm5ldC9pcHY0L2lnbXAuYy0yMDI5LSNkZWZpbmUgaWdtcF9pZmNfZXZlbnQoeClcXHRkbyB7IH0gd2hpbGUgKDApXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmM9MjAzMj1zdGF0aWMgaW50IGlwX21jX2RlbF9zcmMoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgKnBtY2EsIGludCBzZm1vZGUsXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMjA1Mi1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG5uZXQvaXB2NC9pZ21wLmM6MjA1MzojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxcbm5ldC9pcHY0L2lnbXAuYy0yMDU0LVxcdHNmX21hcmtzdGF0ZShwbWMpO1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTIwNzItXFx0ICAgIHBtYy1cXHUwMDNlc2Zjb3VudFtNQ0FTVF9JTkNMVURFXSkge1xcbm5ldC9pcHY0L2lnbXAuYzoyMDczOiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXFxubmV0L2lwdjQvaWdtcC5jLTIwNzQtXFx0XFx0c3RydWN0IGlwX3NmX2xpc3QgKnBzZjtcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0yMDc5LVxcdFxcdHBtYy1cXHUwMDNlc2Ztb2RlID0gTUNBU1RfSU5DTFVERTtcXG5uZXQvaXB2NC9pZ21wLmM6MjA4MDojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxcbm5ldC9pcHY0L2lnbXAuYy0yMDgxLVxcdFxcdHBtYy1cXHUwMDNlY3Jjb3VudCA9IGluX2Rldi1cXHUwMDNlbXJfcXJ2ID86IFJFQURfT05DRShuZXQtXFx1MDAzZWlwdjQuc3lzY3RsX2lnbXBfcXJ2KTtcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz0yMDk4PXN0YXRpYyBpbnQgaXBfbWNfYWRkMV9zcmMoc3RydWN0IGlwX21jX2xpc3QgKnBtYywgaW50IHNmbW9kZSxcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0yMTI1LVxcbm5ldC9pcHY0L2lnbXAuYzoyMTI2OiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXFxubmV0L2lwdjQvaWdtcC5jLTIxMjctc3RhdGljIHZvaWQgc2ZfbWFya3N0YXRlKHN0cnVjdCBpcF9tY19saXN0ICpwbWMpXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmM9MjIwND1zdGF0aWMgaW50IGlwX21jX2FkZF9zcmMoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgKnBtY2EsIGludCBzZm1vZGUsXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMjIyNS1cXG5uZXQvaXB2NC9pZ21wLmM6MjIyNjojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxcbm5ldC9pcHY0L2lnbXAuYy0yMjI3LVxcdHNmX21hcmtzdGF0ZShwbWMpO1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTIyNDUtXFx0fSBlbHNlIGlmIChpc2V4Y2x1ZGUgIT0gKHBtYy1cXHUwMDNlc2Zjb3VudFtNQ0FTVF9FWENMVURFXSAhPSAwKSkge1xcbm5ldC9pcHY0L2lnbXAuYzoyMjQ2OiNpZmRlZiBDT05GSUdfSVBfTVVMVElDQVNUXFxubmV0L2lwdjQvaWdtcC5jLTIyNDctXFx0XFx0c3RydWN0IGlwX3NmX2xpc3QgKnBzZjtcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0yMjU2LVxcdFxcdFxcdHBtYy1cXHUwMDNlc2Ztb2RlID0gTUNBU1RfSU5DTFVERTtcXG5uZXQvaXB2NC9pZ21wLmM6MjI1NzojaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxcbm5ldC9pcHY0L2lnbXAuYy0yMjU4LVxcdFxcdC8qIGVsc2Ugbm8gZmlsdGVyczsga2VlcCBvbGQgbW9kZSBmb3IgcmVwb3J0cyAqL1xcbi0tXFxubmV0L2lwdjQvaWdtcC5jPTI5NzE9c3RhdGljIGludCBpZ21wX21jX3NlcV9zaG93KHN0cnVjdCBzZXFfZmlsZSAqc2VxLCB2b2lkICp2KVxcbi0tXFxubmV0L2lwdjQvaWdtcC5jLTI5ODItXFxubmV0L2lwdjQvaWdtcC5jOjI5ODM6I2lmZGVmIENPTkZJR19JUF9NVUxUSUNBU1RcXG5uZXQvaXB2NC9pZ21wLmMtMjk4NC1cXHRcXHRxdWVyaWVyID0gSUdNUF9WMV9TRUVOKHN0YXRlLVxcdTAwM2Vpbl9kZXYpID8gXFxcIlYxXFxcIiA6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjQzOjU3LjQ2NzM3NjExMloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzM5NzMwNzM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIElHTVAgVGltZXIgTWFuYWdlbWVudCoqXG5cblJpZ2h0LCBzbyBgQ09ORklHX0lQX01VTFRJQ0FTVGAgZW5hYmxlcyBJR01QIHRpbWVycyBhbmQgcmVwb3J0IGZ1bmN0aW9uYWxpdHkuIFRoYXQncyBzdGFuZGFyZCBmYXJlLiBCdXQsIGEgbmFnZ2luZyBxdWVzdGlvbiBwb3BwZWQgaW50byBteSBoZWFkLi4uIEkgdGhvdWdodCBJIHJlbWVtYmVyZWQgc2VlaW5nIHNvbWV0aGluZyBvZGQgaW4gdGhlIGtlcm5lbCBjb2RlLiBTcGVjaWZpY2FsbHksIHRoZSBgaWdtcF9zdG9wX3RpbWVyYCBmdW5jdGlvbi4gSXMgaXQgZGVmaW5lZCBjb25kaXRpb25hbGx5LCBiYXNlZCBvbiB0aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBvciBpcyBpdCBhbHdheXMgcHJlc2VudCBpbiBgbmV0L2lwdjQvaWdtcC5jYD8gSXQncyBiZWVuIGEgd2hpbGUgc2luY2UgSSd2ZSBkaXZlZCBkZWVwIGludG8gdGhhdCBjb2RlLCBzbyBJIHNob3VsZCBwcm9iYWJseSB2ZXJpZnkgdGhhdCBhc3N1bXB0aW9uLiBJIHdhbnQgdG8gYmUgY2VydGFpbiBhYm91dCB0aGUgcHJlc2VuY2Ugb3IgYWJzZW5jZSBvZiB0aGF0IGZ1bmN0aW9uLiBMZXQncyBwdWxsIHVwIHRoZSBzb3VyY2UgYW5kIGRvdWJsZS1jaGVjay4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgdGhhdCB0aW1lciBpcyBtYW5hZ2VkIGZyb20gYSBzeXN0ZW1zIHByb2dyYW1taW5nIHN0YW5kcG9pbnQsIHNvIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG1pZ2h0IGhhdmUgc29tZSBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMgb3IgdW5pbnRlbmRlZCBzaWRlIGVmZmVjdHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NDYyLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6NDQ6MDEuMjA3MTA5OTg4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDA0NTgzOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWdtcF9zdG9wX3RpbWVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L2lnbXAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9pZ21wLmM9MjAxPXN0YXRpYyB2b2lkIGlwX3NmX2xpc3RfY2xlYXJfYWxsKHN0cnVjdCBpcF9zZl9saXN0ICpwc2YpXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtMjE3LVxcbm5ldC9pcHY0L2lnbXAuYzoyMTg6c3RhdGljIHZvaWQgaWdtcF9zdG9wX3RpbWVyKHN0cnVjdCBpcF9tY19saXN0ICppbSlcXG5uZXQvaXB2NC9pZ21wLmMtMjE5LXtcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYz05NDk9c3RhdGljIGJvb2wgaWdtcF9oZWFyZF9yZXBvcnQoc3RydWN0IGluX2RldmljZSAqaW5fZGV2LCBfX2JlMzIgZ3JvdXApXFxuLS1cXG5uZXQvaXB2NC9pZ21wLmMtOTY0LVxcdFxcdGlmIChpbS1cXHUwMDNlbXVsdGlhZGRyID09IGdyb3VwKSB7XFxubmV0L2lwdjQvaWdtcC5jOjk2NTpcXHRcXHRcXHRpZ21wX3N0b3BfdGltZXIoaW0pO1xcbm5ldC9pcHY0L2lnbXAuYy05NjYtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQvaXB2NC9pZ21wLmM9MTMyMj1zdGF0aWMgdm9pZCBfX2lnbXBfZ3JvdXBfZHJvcHBlZChzdHJ1Y3QgaXBfbWNfbGlzdCAqaW0sIGdmcF90IGdmcClcXG4tLVxcbm5ldC9pcHY0L2lnbXAuYy0xMzQyLVxcdHJlcG9ydGVyID0gUkVBRF9PTkNFKGltLVxcdTAwM2VyZXBvcnRlcik7XFxubmV0L2lwdjQvaWdtcC5jOjEzNDM6XFx0aWdtcF9zdG9wX3RpbWVyKGltKTtcXG5uZXQvaXB2NC9pZ21wLmMtMTM0NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6NDQ6MDEuMzQ3NTc4NDI3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5NDI3MTU2NjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipOYXZpZ2F0aW5nIHRoZSBDb2RlYmFzZTogRmluZGluZyBgaWdtcF9zdG9wX3RpbWVyYCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBgaWdtcF9zdG9wX3RpbWVyYCBmdW5jdGlvbiBpcyBiZWluZyBoYW5kbGVkLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gcGlucG9pbnQgaXRzIGRlZmluaXRpb24uIFdoZXJlIGlzIHRoaXMgdGhpbmcgYWN0dWFsbHkgKmRlY2xhcmVkKj8gVGhhdCdzIHRoZSBjcnVjaWFsIGZpcnN0IHN0ZXAuIEkgbmVlZCB0byB0cmFjZSBpdHMgb3JpZ2lucywgdW5kZXJzdGFuZCBpdHMgc2NvcGUsIGFuZCBzZWUgd2hhdCB0aGUgdW5kZXJseWluZyBkYXRhIHN0cnVjdHVyZXMgYXJlLiBPbmNlIEkgaGF2ZSB0aGUgZGVmaW5pdGlvbiBpbiBoYW5kLCBJIGNhbiBiZWdpbiB0byBhc3Nlc3MgaXRzIHJvbGUgd2l0aGluIHRoZSBsYXJnZXIgSUdNUCBmcmFtZXdvcmsgYW5kIGhvdyBpdCBjb250cmlidXRlcyB0byBtdWx0aWNhc3QgbWFuYWdlbWVudC4gTGV0J3Mgc2VlIGlmIEkgY2FuIHVzZSBteSBJREUgdG8ganVtcCByaWdodCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAwOTMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODo0NDowNC4yOTAyOTg2MDNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA0MTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY0L2lnbXAuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMTAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyMTA6XFx0fVxcbiAyMTE6XFx0XFxuIDIxMjpcXHQjaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVFxcbiAyMTM6XFx0XFxuIDIxNDpcXHQvKlxcbiAyMTU6XFx0ICpcXHRUaW1lciBtYW5hZ2VtZW50XFxuIDIxNjpcXHQgKi9cXG4gMjE3OlxcdFxcbiAyMTg6XFx0c3RhdGljIHZvaWQgaWdtcF9zdG9wX3RpbWVyKHN0cnVjdCBpcF9tY19saXN0ICppbSlcXG4gMjE5OlxcdHtcXG4gMjIwOlxcdFxcdGJvb2wgcHV0ID0gZmFsc2U7XFxuIDIyMTpcXHRcXG4gMjIyOlxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2aW0tXFx1MDAzZWxvY2spO1xcbiAyMjM6XFx0XFx0aWYgKHRpbWVyX2RlbGV0ZShcXHUwMDI2aW0tXFx1MDAzZXRpbWVyKSlcXG4gMjI0OlxcdFxcdFxcdHB1dCA9IHRydWU7XFxuIDIyNTpcXHRcXHRXUklURV9PTkNFKGltLVxcdTAwM2V0bV9ydW5uaW5nLCAwKTtcXG4gMjI2OlxcdFxcdFdSSVRFX09OQ0UoaW0tXFx1MDAzZXJlcG9ydGVyLCAwKTtcXG4gMjI3OlxcdFxcdGltLVxcdTAwM2V1bnNvbGljaXRfY291bnQgPSAwO1xcbiAyMjg6XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmltLVxcdTAwM2Vsb2NrKTtcXG4gMjI5OlxcdFxcbiAyMzA6XFx0XFx0aWYgKHB1dClcXG4gMjMxOlxcdFxcdFxcdGlwX21hX3B1dChpbSk7XFxuIDIzMjpcXHR9XFxuIDIzMzpcXHRcXG4gMjM0OlxcdC8qIEl0IG11c3QgYmUgY2FsbGVkIHdpdGggbG9ja2VkIGltLVxcdTAwM2Vsb2NrICovXFxuIDIzNTpcXHRzdGF0aWMgdm9pZCBpZ21wX3N0YXJ0X3RpbWVyKHN0cnVjdCBpcF9tY19saXN0ICppbSwgaW50IG1heF9kZWxheSlcXG4gMjM2OlxcdHtcXG4gMjM3OlxcdFxcdGludCB0diA9IGdldF9yYW5kb21fdTMyX2JlbG93KG1heF9kZWxheSk7XFxuIDIzODpcXHRcXG4gMjM5OlxcdFxcdFdSSVRFX09OQ0UoaW0tXFx1MDAzZXRtX3J1bm5pbmcsIDEpO1xcbiAyNDA6XFx0XFx0aWYgKHJlZmNvdW50X2luY19ub3RfemVybyhcXHUwMDI2aW0tXFx1MDAzZXJlZmNudCkpIHtcXG4gMjQxOlxcdFxcdFxcdGlmIChtb2RfdGltZXIoXFx1MDAyNmltLVxcdTAwM2V0aW1lciwgamlmZmllcyArIHR2ICsgMikpXFxuIDI0MjpcXHRcXHRcXHRcXHRpcF9tYV9wdXQoaW0pO1xcbiAyNDM6XFx0XFx0fVxcbiAyNDQ6XFx0fVxcbiAyNDU6XFx0XFxuIDI0NjpcXHRzdGF0aWMgdm9pZCBpZ21wX2dxX3N0YXJ0X3RpbWVyKHN0cnVjdCBpbl9kZXZpY2UgKmluX2RldilcXG4gMjQ3OlxcdHtcXG4gMjQ4OlxcdFxcdGludCB0diA9IGdldF9yYW5kb21fdTMyX2JlbG93KFJFQURfT05DRShpbl9kZXYtXFx1MDAzZW1yX21heGRlbGF5KSk7XFxuIDI0OTpcXHRcXHR1bnNpZ25lZCBsb25nIGV4cCA9IGppZmZpZXMgKyB0diArIDI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjQ0OjA0LjI5MDUwNDkwM1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzM4MTU0NDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk11bHRpY2FzdCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIG11bHRpY2FzdC1yZWxhdGVkIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5IGBpZ21wX3N0b3BfdGltZXJgIGFuZCB0aGUgb3RoZXJzIHdpdGhpbiB0aGF0IGJsb2NrLiBUaGUgY29kZSBpcyBjbGVhcmx5IHVzaW5nIGFuIGAjaWZkZWYgQ09ORklHX0lQX01VTFRJQ0FTVGAgcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZS4gVGhhdCdzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBpbmRpY2F0b3Ig4oCTIGBDT05GSUdfSVBfTVVMVElDQVNUYCAqaGFzKiB0byBiZSBlbmFibGVkIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHkgdG8gYmUgY29tcGlsZWQuIE5vIHN1cnByaXNlcyB0aGVyZS5cblxuTm93LCBJJ20gc2hpZnRpbmcgZ2VhcnMgYW5kIHRoaW5raW5nIGFib3V0IElQdjYgbXVsdGljYXN0IHN1cHBvcnQuIEkgbmVlZCB0byBjaGVjayBvdXQgYG5ldC9pcHY2L21jYXN0LmNgLiBIbW0sIEkgcmVjYWxsIHNlZWluZyBzb21lIGRlcGVuZGVuY2llcyB0aGVyZS4uLiBBaCwgeWVzISBgbWNhc3Qub2AgaXMgYnVpbHQgd2hlbiBgQ09ORklHX0lQVjZgIGlzIGVuYWJsZWQuIFRoYXQgY29uZmlybXMgdGhlIGRlcGVuZGVuY3kgb24gSVB2Ni4gQnV0IGlzIGBtY2FzdC5jYCBlbnRpcmVseSBkZXBlbmRlbnQsIG9yIGFyZSB0aGVyZSBtb3JlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24ga25vYnMgaW5zaWRlIGl0PyBJJ2xsIG5lZWQgdG8gZGlnIGEgbGl0dGxlIGRlZXBlciBpbnRvIHRoZSBmaWxlIGl0c2VsZi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA4OTEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODo0NDowOC4wMjg2NjI3ODhaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExOTkxMzcwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY2L21jYXN0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvbWNhc3QuYz0yOTA5PXN0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgaWdtcDZfbmV0ZGV2X25vdGlmaWVyID0ge1xcbi0tXFxubmV0L2lwdjYvbWNhc3QuYy0yOTEyLVxcbm5ldC9pcHY2L21jYXN0LmM6MjkxMzojaWZkZWYgQ09ORklHX1BST0NfRlNcXG5uZXQvaXB2Ni9tY2FzdC5jLTI5MTQtc3RydWN0IGlnbXA2X21jX2l0ZXJfc3RhdGUge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODo0NDowOC4xNDg1ODE0OTlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzQ0Mjg4NjM5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFN0cmF0ZWd5IGZvciBgbmV0L2lwdjYvbWNhc3QuY2AqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIERpdmluZyBpbnRvIGBuZXQvaXB2Ni9tY2FzdC5jYCwgSSd2ZSBjb25maXJtZWQgdGhlcmUgYXJlIG5vIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHdpdGhpbiB0aGUgZmlsZSBpdHNlbGYgKm90aGVyKiB0aGFuIGBDT05GSUdfUFJPQ19GU2AuIFRoYXQgbmFycm93cyBkb3duIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMgdG8gYElQX01VTFRJQ0FTVGAgYW5kIGBJUFY2YCBhcyB0aGUgZXNzZW50aWFsIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBtb2R1bGUuXG5cbk5vdywgdGhlIGNvcmUgb2YgdGhpcyBhc3Nlc3NtZW50IGlzIHRvIGRldGVybWluZSB0aGUgb3B0aW1hbCBmb2N1cyBmb3IgZnV6emluZyBlZmZvcnRzLiBUaGUgZGlmZiBpZGVudGlmaWVzIGEgc2V0IG9mIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZCwgYW5kIHRoYXQgaXMgd2hlcmUgdGhlIGV4cGxvcmF0aW9uIHdpbGwgY29udGludWU6XG5cbiogICBgaWdtcF9zdG9wX3RpbWVyYFxuKiAgIGBpZ21wX2dxX3N0YXJ0X3RpbWVyYFxuKiAgIGBpZ21wX2lmY19zdGFydF90aW1lcmBcbiogICBgaWdtcF9tb2RfdGltZXJgXG4qICAgYG1sZF9ncV9zdGFydF93b3JrYFxuKiAgIGBtbGRfZ3Ffc3RvcF93b3JrYFxuKiAgIGBtbGRfaWZjX3N0YXJ0X3dvcmtgXG4qICAgYG1sZF9pZmNfc3RvcF93b3JrYFxuKiAgIGBtbGRfZGFkX3N0YXJ0X3dvcmtgXG4qICAgYG1sZF9kYWRfc3RvcF93b3JrYFxuKiAgIGBpZ21wNl9ldmVudF9xdWVyeWBcbiogICBgaWdtcDZfZXZlbnRfcmVwb3J0YFxuXG5UaGVzZSB0d2VsdmUgZnVuY3Rpb25zIGp1bXAgb3V0IGltbWVkaWF0ZWx5IGFzIHByaW1lIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcgd2l0aCBgRm9jdXNTeW1ib2xzYC4gVGhleSByZXByZXNlbnQga2V5IGFyZWFzIHdoZXJlIG11bHRpY2FzdCBiZWhhdmlvciBoYXMgYmVlbiB0b3VjaGVkLiBUaGUgYWltIGlzIHRvIHZlcmlmeSB0aGF0IHRoZXkgYXJlIHJlYWNoYWJsZSBhbmQgbm90IHRyaXZpYWxseSBnZW5lcmljLlxuXG5Gcm9tIHRoZSBjb2RlLCBgaWdtcDZfZXZlbnRfcXVlcnlgIGFuZCBgaWdtcDZfZXZlbnRfcmVwb3J0YCBhcmUgY2xlYXJseSB0cmlnZ2VyZWQgdXBvbiB0aGUgcmVjZXB0aW9uIG9mIElHTVAvTUxEIHBhY2tldHMsIG1ha2luZyB0aGVtIGV4Y2VsbGVudCB0YXJnZXRzLiBgaWdtcF9zdG9wX3RpbWVyYCwgYGlnbXBfZ3Ffc3RhcnRfdGltZXJgLCBgaWdtcF9pZmNfc3RhcnRfdGltZXJgLCBhbmQgYGlnbXBfbW9kX3RpbWVyYCBhcmUgcmVsYXRlZCB0byBJR01QIHN0YXRlIHRyYW5zaXRpb25zLCBhbmQgc2ltaWxhcmx5LCBgbWxkX2dxX3N0YXJ0X3dvcmtgLCBgbWxkX2lmY19zdGFydF93b3JrYCwgYW5kIGBtbGRfZGFkX3N0YXJ0X3dvcmtgIGFyZSBsaW5rZWQgdG8gTUxEIHN0YXRlIHRyYW5zaXRpb25zLlxuXG5TbywgdGhlIGxpc3QgdG8gdGFyZ2V0IGlzOlxuXG4qICAgYGlnbXBfc3RvcF90aW1lcmBcbiogICBgaWdtcF9ncV9zdGFydF90aW1lcmBcbiogICBgaWdtcF9pZmNfc3RhcnRfdGltZXJgXG4qICAgYGlnbXBfbW9kX3RpbWVyYFxuKiAgIGBtbGRfZ3Ffc3RhcnRfd29ya2BcbiogICBgbWxkX2dxX3N0b3Bfd29ya2BcbiogICBgbWxkX2lmY19zdGFydF93b3JrYFxuKiAgIGBtbGRfaWZjX3N0b3Bfd29ya2BcbiogICBgbWxkX2RhZF9zdGFydF93b3JrYFxuKiAgIGBtbGRfZGFkX3N0b3Bfd29ya2BcbiogICBgaWdtcDZfZXZlbnRfcXVlcnlgXG4qICAgYGlnbXA2X2V2ZW50X3JlcG9ydGBcblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhlcmUgYXJlbid0IGFueSBvdGhlciBzdWJ0bHkgbW9kaWZpZWQgZnVuY3Rpb25zIGhpZGluZyBpbiB0aGUgZGlmZiB0aGF0IG1pZ2h0IGFsc28gYmUgcmVsZXZhbnQsIHNvIEknbGwgcmV2aWV3IHRoZSBwYXRjaCBhZ2FpbiBmb3IgYW55IG1pc3NlZCBjYW5kaWRhdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTMzNCwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wNVQxODo0NDoxNS41OTE0NzA1ODNaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MDAxMDI1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpbl9kZXZfaG9sZF9zYWZlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbGludXgvaW5ldGRldmljZS5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvaW5ldGRldmljZS5oPTI4Nz1zdGF0aWMgaW5saW5lIHZvaWQgaW5fZGV2X3B1dChzdHJ1Y3QgaW5fZGV2aWNlICppZGV2KVxcbi0tXFxuaW5jbHVkZS9saW51eC9pbmV0ZGV2aWNlLmgtMjk1LVxcbmluY2x1ZGUvbGludXgvaW5ldGRldmljZS5oOjI5NjpzdGF0aWMgaW5saW5lIGJvb2wgaW5fZGV2X2hvbGRfc2FmZShzdHJ1Y3QgaW5fZGV2aWNlICppZGV2KVxcbmluY2x1ZGUvbGludXgvaW5ldGRldmljZS5oLTI5Ny17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA1VDE4OjQ0OjE2LjA2MTQ4NTI4N1oiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4ODQzODEyNjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIE5ldHdvcmtpbmcgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBpbl9kZXZfaG9sZF9zYWZlYCBhbmQgYGluNl9kZXZfaG9sZF9zYWZlYCBhcmUgaW5saW5lIGZ1bmN0aW9ucy4gVGh1cywgdGhleSBkb24ndCByZWFsbHkgbmVlZCB0byBiZSBsaXN0ZWQgaW4gYEZvY3VzU3ltYm9sc2AuIFRoZXkgYXJlIGJlaW5nIHVzZWQgdG8gZWxpbWluYXRlIGEgcmFjZSBjb25kaXRpb24g4oCTIHRoYXQncyB0aGUgY29yZSBvZiB0aGlzIGNoYW5nZS4gSXQgc2VlbXMgbGlrZSB0aGUgZXhpc3RpbmcgY29kZSBoYWQgYSBwcm9ibGVtIHdoZXJlIGEgdGltZXIgb3Igd29ya3F1ZXVlIGNvdWxkIGdldCBzY2hlZHVsZWQgb24gYSBkZXZpY2UgKGBpbl9kZXZgIG9yIGBpbmV0Nl9kZXZgKSB0aGF0J3MgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgZGVzdHJveWVkLiBUaGlzIGlzIGEgY2xhc3NpYyByZWNpcGUgZm9yIGEgdXNlLWFmdGVyLWZyZWUgb3IgcmVmY291bnQgaXNzdWVzLiBUaGUgZml4IGxldmVyYWdlcyBgaW5fZGV2X2hvbGRfc2FmZWAgKHdoaWNoIHJlbGllcyBvbiBgcmVmY291bnRfaW5jX25vdF96ZXJvYCkgdG8gcHJldmVudCB0aGUgcmVmZXJlbmNlIGZyb20gYmVpbmcgdGFrZW4gaWYgdGhlIGRldmljZSBpcyBhbHJlYWR5IG9uIGl0cyB3YXkgb3V0LlxuXG5GdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBtb2RpZmljYXRpb24gaW4gY29yZSBuZXR3b3JraW5nIGxvZ2ljIOKAkyBzcGVjaWZpY2FsbHkgYXJvdW5kIElHTVAgYW5kIE1MRCB0aW1lciBhbmQgd29ya3F1ZXVlIG1hbmFnZW1lbnQuIFRoZSBjaGFuZ2UgaW52b2x2ZXMgYGluX2Rldl9ob2xkX3NhZmVgIGFuZCB0aGUgc2FmZXIgY291bnRlcnBhcnQsIHNvIGRlZmluaXRlbHkgc29tZXRoaW5nIHRvIGZ1enouXG5cbkxldCBtZSBicmVhayBkb3duIHdoYXQgSSBzZWUgYXMgdGhlIGltcG9ydGFudCBwaWVjZXM6XG5cbiogICAqKldvcnRoRnV6emluZyoqOiBBYnNvbHV0ZWx5LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGFuZCB3ZSBuZWVkIHRvIHZlcmlmeSBpdHMgaW1wYWN0IG9uIHN0YWJpbGl0eSBhbmQgY29ycmVjdG5lc3MuXG4qICAgKipGb2N1cyBTeW1ib2xzKio6IEknZCBwYXkgZXh0cmEgYXR0ZW50aW9uIHRvIGBpZ21wX3N0b3BfdGltZXJgLCBgaWdtcF9ncV9zdGFydF90aW1lcmAsIGBpZ21wX2lmY19zdGFydF90aW1lcmAsIGBpZ21wX21vZF90aW1lcmAsIGBtbGRfZ3Ffc3RhcnRfd29ya2AsIGBtbGRfZ3Ffc3RvcF93b3JrYCwgYG1sZF9pZmNfc3RhcnRfd29ya2AsIGBtbGRfaWZjX3N0b3Bfd29ya2AsIGBtbGRfZGFkX3N0YXJ0X3dvcmtgLCBgbWxkX2RhZF9zdG9wX3dvcmtgLCBgaWdtcDZfZXZlbnRfcXVlcnlgLCBhbmQgYGlnbXA2X2V2ZW50X3JlcG9ydGAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIGRpcmVjdGx5IHRvdWNoZWQgYnkgdGhlIHBhdGNoIGFuZCB0aGF0IG1hbmFnZSBjcml0aWNhbCB0aW1lciBhbmQgd29ya3F1ZXVlIG9wZXJhdGlvbnMuXG4qICAgKipFbmFibGUgQ29uZmlncyoqOiBgSVBfTVVMVElDQVNUYCBhbmQgYElQVjZgIGFyZSByZWxldmFudCBiZWNhdXNlIHRoZSBwYXRjaCBpbXBhY3RzIElHTVAgYW5kIE1MRCwgd2hpY2ggYXJlIGNvcmUgY29tcG9uZW50cyBvZiBtdWx0aWNhc3QgYW5kIElQdjYgZnVuY3Rpb25hbGl0eSByZXNwZWN0aXZlbHkuXG5cbkVzc2VudGlhbGx5LCB0aGlzIHBhdGNoIG1vZGlmaWVzIHRoZSB3YXkgSUdNUCBhbmQgTUxEIHRpbWVycyBhbmQgd29ya3F1ZXVlcyBhY3F1aXJlIGFuZCByZWxlYXNlIGRldmljZSByZWZlcmVuY2VzLCBhbmQgZGVmZXJzIGBpcF9tYV9wdXRgIGFuZCBgaW42X2Rldl9wdXRgIGluIGNlcnRhaW4gc2NlbmFyaW9zLiBUaGlzIHByb3RlY3RzIGFnYWluc3QgdXNlLWFmdGVyLWZyZWUgYnVncyB0aGF0IGNvdWxkIGFyaXNlIHdoZW4gZGV2aWNlcyBhcmUgYmVpbmcgZGVzdHJveWVkLCBzbyBpdCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgbmVlZHMgdG8gYmUgZXh0ZW5zaXZlbHkgZnV6emVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjY0NiwiT3V0cHV0VG9rZW5zIjozMTAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDVUMTg6NDQ6MjQuOTA1MzAwMzQ1WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3MjA0ODc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9NVUxUSUNBU1RcIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZ21wX3N0b3BfdGltZXJcIixcbiAgICBcImlnbXBfZ3Ffc3RhcnRfdGltZXJcIixcbiAgICBcImlnbXBfaWZjX3N0YXJ0X3RpbWVyXCIsXG4gICAgXCJpZ21wX21vZF90aW1lclwiLFxuICAgIFwibWxkX2dxX3N0YXJ0X3dvcmtcIixcbiAgICBcIm1sZF9ncV9zdG9wX3dvcmtcIixcbiAgICBcIm1sZF9pZmNfc3RhcnRfd29ya1wiLFxuICAgIFwibWxkX2lmY19zdG9wX3dvcmtcIixcbiAgICBcIm1sZF9kYWRfc3RhcnRfd29ya1wiLFxuICAgIFwibWxkX2RhZF9zdG9wX3dvcmtcIixcbiAgICBcImlnbXA2X2V2ZW50X3F1ZXJ5XCIsXG4gICAgXCJpZ21wNl9ldmVudF9yZXBvcnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBJR01QIGFuZCBNTEQgdGltZXIgYW5kIHdvcmtxdWV1ZSBoYW5kbGluZyB0byB1c2UgYGluX2Rldl9ob2xkX3NhZmVgIGFuZCBgaW42X2Rldl9ob2xkX3NhZmVgICh3aGljaCB1c2UgYHJlZmNvdW50X2luY19ub3RfemVyb2ApIGluc3RlYWQgb2YgYGluX2Rldl9ob2xkYCBhbmQgYGluNl9kZXZfaG9sZGAuIEl0IGFsc28gZGVmZXJzIGBpcF9tYV9wdXRgIGFuZCBgaW42X2Rldl9wdXRgIG91dHNpZGUgb2Ygc3BpbmxvY2tzIGluIHNvbWUgY2FzZXMuIFRoaXMgZml4ZXMgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJlZmNvdW50IGJ1Z3Mgd2hlbiB0aW1lcnMvd29ya3F1ZXVlcyBhcmUgc2NoZWR1bGVkIHdoaWxlIHRoZSBkZXZpY2UgaXMgYmVpbmcgZGVzdHJveWVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JraW5nIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9NVUxUSUNBU1RcIixcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZ21wX3N0b3BfdGltZXJcIixcbiAgICBcImlnbXBfZ3Ffc3RhcnRfdGltZXJcIixcbiAgICBcImlnbXBfaWZjX3N0YXJ0X3RpbWVyXCIsXG4gICAgXCJpZ21wX21vZF90aW1lclwiLFxuICAgIFwibWxkX2dxX3N0YXJ0X3dvcmtcIixcbiAgICBcIm1sZF9ncV9zdG9wX3dvcmtcIixcbiAgICBcIm1sZF9pZmNfc3RhcnRfd29ya1wiLFxuICAgIFwibWxkX2lmY19zdG9wX3dvcmtcIixcbiAgICBcIm1sZF9kYWRfc3RhcnRfd29ya1wiLFxuICAgIFwibWxkX2RhZF9zdG9wX3dvcmtcIixcbiAgICBcImlnbXA2X2V2ZW50X3F1ZXJ5XCIsXG4gICAgXCJpZ21wNl9ldmVudF9yZXBvcnRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBJR01QIGFuZCBNTEQgdGltZXIgYW5kIHdvcmtxdWV1ZSBoYW5kbGluZyB0byB1c2UgYGluX2Rldl9ob2xkX3NhZmVgIGFuZCBgaW42X2Rldl9ob2xkX3NhZmVgICh3aGljaCB1c2UgYHJlZmNvdW50X2luY19ub3RfemVyb2ApIGluc3RlYWQgb2YgYGluX2Rldl9ob2xkYCBhbmQgYGluNl9kZXZfaG9sZGAuIEl0IGFsc28gZGVmZXJzIGBpcF9tYV9wdXRgIGFuZCBgaW42X2Rldl9wdXRgIG91dHNpZGUgb2Ygc3BpbmxvY2tzIGluIHNvbWUgY2FzZXMuIFRoaXMgZml4ZXMgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIG9yIHJlZmNvdW50IGJ1Z3Mgd2hlbiB0aW1lcnMvd29ya3F1ZXVlcyBhcmUgc2NoZWR1bGVkIHdoaWxlIHRoZSBkZXZpY2UgaXMgYmVpbmcgZGVzdHJveWVkLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBuZXR3b3JraW5nIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowqpfzj[1] Phase: Succeeded StartedAt: 2026-07-05 18:44:36 +0000 UTC FinishedAt: 2026-07-05 18:44:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpfzj[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-05 18:44:36 +0000 UTC FinishedAt: 2026-07-05 18:44:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpfzj[2] Phase: Succeeded StartedAt: 2026-07-05 18:44:36 +0000 UTC FinishedAt: 2026-07-05 23:05:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-05 18:44:36 +0000 UTC FinishedAt: 2026-07-05 23:05:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-05 18:44:36 +0000 UTC FinishedAt: 2026-07-05 18:44:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-05 18:44:36 +0000 UTC FinishedAt: 2026-07-05 18:44:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowqpfzj/series-workflowqpfzj-convert-artifact-972095055/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-05 18:44:57 +0000 UTC FinishedAt: 2026-07-05 19:19:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-05 18:44:57 +0000 UTC FinishedAt: 2026-07-05 19:19:38 +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:*65ee8381-9992-48bf-935d-4ad8f8529140,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-workflowqpfzj/series-workflowqpfzj-convert-artifact-972095055/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": "2ae5e1bf-f5e9-4090-834e-4a2ab5d9fe4e", "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-workflowqpfzj/series-workflowqpfzj-build-action-4218670485/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-05 18:44:57 +0000 UTC FinishedAt: 2026-07-05 19:19:28 +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:*65ee8381-9992-48bf-935d-4ad8f8529140,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-workflowqpfzj/series-workflowqpfzj-convert-artifact-972095055/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": "2ae5e1bf-f5e9-4090-834e-4a2ab5d9fe4e", "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-workflowqpfzj/series-workflowqpfzj-build-action-4218670485/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-05 19:19:38 +0000 UTC FinishedAt: 2026-07-05 19:19:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-05 19:19:38 +0000 UTC FinishedAt: 2026-07-05 19:19:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-05 19:19:38 +0000 UTC FinishedAt: 2026-07-05 19:20:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-05 19:19:38 +0000 UTC FinishedAt: 2026-07-05 19:19:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflowqpfzj/series-workflowqpfzj-convert-artifact-1453623710/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-05 19:20:12 +0000 UTC FinishedAt: 2026-07-05 19:23:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-05 19:20:12 +0000 UTC FinishedAt: 2026-07-05 19:23:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2ae5e1bf-f5e9-4090-834e-4a2ab5d9fe4e,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-workflowqpfzj/series-workflowqpfzj-build-action-4218670485/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-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-05 19:23:25 +0000 UTC FinishedAt: 2026-07-05 19:23:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-05 19:23:25 +0000 UTC FinishedAt: 2026-07-05 19:23:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-05 19:23:25 +0000 UTC FinishedAt: 2026-07-05 19:57:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-05 19:23:25 +0000 UTC FinishedAt: 2026-07-05 19:57:43 +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:*65ee8381-9992-48bf-935d-4ad8f8529140,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-workflowqpfzj/series-workflowqpfzj-convert-artifact-1453623710/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": "48ed95c7-cbab-49b8-a6b4-cfc0f6107fb2", "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-workflowqpfzj/series-workflowqpfzj-build-action-1587427186/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-05 19:23:25 +0000 UTC FinishedAt: 2026-07-05 19:57:33 +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:*65ee8381-9992-48bf-935d-4ad8f8529140,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-workflowqpfzj/series-workflowqpfzj-convert-artifact-1453623710/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": "48ed95c7-cbab-49b8-a6b4-cfc0f6107fb2", "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-workflowqpfzj/series-workflowqpfzj-build-action-1587427186/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-05 19:57:43 +0000 UTC FinishedAt: 2026-07-05 19:57:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-05 19:57:43 +0000 UTC FinishedAt: 2026-07-05 19:57:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-05 19:57:43 +0000 UTC FinishedAt: 2026-07-05 20:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-05 19:57:43 +0000 UTC FinishedAt: 2026-07-05 19:59:50 +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:*48ed95c7-cbab-49b8-a6b4-cfc0f6107fb2,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-workflowqpfzj/series-workflowqpfzj-build-action-1587427186/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-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-05 20:00:00 +0000 UTC FinishedAt: 2026-07-05 23:05:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-05 20:00:00 +0000 UTC FinishedAt: 2026-07-05 23:05:21 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*2ae5e1bf-f5e9-4090-834e-4a2ab5d9fe4e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*48ed95c7-cbab-49b8-a6b4-cfc0f6107fb2,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-workflowqpfzj/series-workflowqpfzj-build-action-4218670485/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-workflowqpfzj/series-workflowqpfzj-build-action-1587427186/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-05 20:00:00 +0000 UTC FinishedAt: 2026-07-05 20:00:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-05 20:00:00 +0000 UTC FinishedAt: 2026-07-05 20:00:07 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowqpfzj/series-workflowqpfzj-convert-artifact-2224339107/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-05 20:00:00 +0000 UTC FinishedAt: 2026-07-05 20:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-05 20:00:00 +0000 UTC FinishedAt: 2026-07-05 20:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-05 20:00:00 +0000 UTC FinishedAt: 2026-07-05 20:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-05 20:00:10 +0000 UTC FinishedAt: 2026-07-05 23:05:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqpfzj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["igmp_stop_timer","igmp_gq_start_timer","igmp_ifc_start_timer","igmp_mod_timer","mld_gq_start_work","mld_gq_stop_work","mld_ifc_start_work","mld_ifc_stop_work","mld_dad_start_work","mld_dad_stop_work","igmp6_event_query","igmp6_event_report"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d7a8d500d7e42837bd8dce40cb52c97c6e8706a9","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_MULTICAST","IPV6"],"series_id":"22cdc8b4-8aad-4651-af3f-022d23cf9352","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-05 20:00:10 +0000 UTC FinishedAt: 2026-07-05 23:05:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2ae5e1bf-f5e9-4090-834e-4a2ab5d9fe4e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*48ed95c7-cbab-49b8-a6b4-cfc0f6107fb2,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-workflowqpfzj/series-workflowqpfzj-build-action-4218670485/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-workflowqpfzj/series-workflowqpfzj-build-action-1587427186/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-workflowqpfzj/series-workflowqpfzj-convert-artifact-2224339107/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,}