Name: series-workflowznmqb Phase: Running StartedAt: 2026-09-13 20:35:42 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznmqb[0] Phase: Succeeded StartedAt: 2026-09-13 20:35:42 +0000 UTC FinishedAt: 2026-09-13 20:41:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznmqb[0].run-triage Phase: Succeeded StartedAt: 2026-09-13 20:35:42 +0000 UTC FinishedAt: 2026-09-13 20:41:21 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "df2908090cda368b01ff43709f51890076c56157", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_DIGITAL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "df2908090cda368b01ff43709f51890076c56157", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_DIGITAL" ], "series_id": "0bafa68c-9c65-471f-8aa7-7445c6dde10d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "digital_tg_recv_dep_req", "digital_tg_send_dep_res" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "", "base_commit": "df2908090cda368b01ff43709f51890076c56157", "base_tree": "axboe" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQyYjMzQ7LAogICAgJiMzNDtORkNfRElHSVRBTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxJiMzNDssCiAgICAmIzM0O2RpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtaXNzaW5nIGJvdW5kcyBjaGVjayBpbiBuZXQvbmZjL2RpZ2l0YWxfZGVwLmMgd2l0aGluIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKCkuIFByZXZpb3VzbHksIHdoZW4gRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikgd2FzIHRydWUsIHJlc3AtXHUwMDNlZGF0YVszXSB3YXMgYWNjZXNzZWQgd2l0aG91dCBjaGVja2luZyBpZiByZXNwLVx1MDAzZWxlbiB3YXMgYXQgbGVhc3QgNCBieXRlcyAoc2l6ZSAmIzQzOyAxKSwgcG90ZW50aWFsbHkgcmVzdWx0aW5nIGluIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBvbiB0aGUgcmVjZWl2ZWQgc2tiIGJ1ZmZlci4gVGhlIHBhdGNoIGFkZHMgYHJlc3AtXHUwMDNlbGVuIFx1MDAzYyBzaXplICYjNDM7IDFgIHRvIHByZXZlbnQgdGhpcyBvdXQtb2YtYm91bmRzIHJlYWQuXG5cblRoaXMgaXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHksIHdoaWNoIGlzIGRldGVjdGFibGUgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbWFuaXB1bGF0ZSB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5LCBkb2VzIG5vdCBjb3B5IGtlcm5lbCBkYXRhIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgYmFzZWQgb24gdW5pbml0aWFsaXplZCBmaWVsZHMuIFRodXMsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBib3VuZHMgY2hlY2sgYW5kIHZhbGlkYXRpb24gbG9naWMgaW4gZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoKSB3aGVuIGhhbmRsaW5nIERFUCAoRGF0YSBFeGNoYW5nZSBQcm90b2NvbCkgcmVxdWVzdCBmcmFtZXMgd2l0aCB0aGUgRElEIGJpdCBzZXQgaW4gdGhlIE5GQyBkaWdpdGFsIHByb3RvY29sIHN0YWNrLiBQcmV2aW91c2x5LCByZWFkaW5nIHJlc3AtXHUwMDNlZGF0YVszXSBjb3VsZCBjYXVzZSBhbiBvdXQtb2YtYm91bmRzIGFjY2VzcyBpZiByZXNwLVx1MDAzZWxlbiB3YXMgaW5zdWZmaWNpZW50LiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBORkMgdGFyZ2V0IG1vZGUgY29tbXVuaWNhdGlvbiB2aWEgZW11bGF0ZWQgdmlydHVhbCBkZXZpY2VzIChuZmNzaW0pIG9yIFVTQiBORkMgZGV2aWNlcyAocG9ydDEwMCkgc3VwcG9ydGVkIGluIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjM5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTg3OTJkMTE1MDNmZmM0NTFkYTU3YTU5NDBiOWE2NmU4ZDY2ZjhiYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDEzIDIwOjM5OjE2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZmMvZGlnaXRhbF9kZXAuYyBiL25ldC9uZmMvZGlnaXRhbF9kZXAuY1xuaW5kZXggMzk4MmZhMDg0NzM3Zi4uYWU1NDA3ZmNhMTJkNCAxMDA2NDRcbi0tLSBhL25ldC9uZmMvZGlnaXRhbF9kZXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25mYy9kaWdpdGFsX2RlcC5jXG5AQCAtMTExNywxMiAmIzQzOzExMTcsMTIgQEAgc3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxuIFx0cGZiID0gZGVwX3JlcS1cdTAwM2VwZmI7XG4gXG4gXHRpZiAoRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikpIHtcbi1cdFx0aWYgKGRkZXYtXHUwMDNlZGlkIFx1MDAyNlx1MDAyNiAoZGRldi1cdTAwM2VkaWQgPT0gcmVzcC1cdTAwM2VkYXRhWzNdKSkge1xuLVx0XHRcdHNpemUmIzQzOyYjNDM7O1xuLVx0XHR9IGVsc2Uge1xuJiM0MztcdFx0aWYgKHJlc3AtXHUwMDNlbGVuIFx1MDAzYyBzaXplICYjNDM7IDEgfHwgIWRkZXYtXHUwMDNlZGlkIHx8XG4mIzQzO1x0XHQgICAgZGRldi1cdTAwM2VkaWQgIT0gcmVzcC1cdTAwM2VkYXRhW3NpemVdKSB7XG4gXHRcdFx0cmMgPSAtRUlPO1xuIFx0XHRcdGdvdG8gZXhpdDtcbiBcdFx0fVxuJiM0MztcdFx0c2l6ZSYjNDM7JiM0Mzs7XG4gXHR9IGVsc2UgaWYgKGRkZXYtXHUwMDNlZGlkKSB7XG4gXHRcdHJjID0gLUVJTztcbiBcdFx0Z290byBleGl0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjM5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQyYjMzQ7LAogICAgJiMzNDtORkNfRElHSVRBTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxJiMzNDssCiAgICAmIzM0O2RpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYm91bmRzIGNoZWNrIGFuZCB2YWxpZGF0aW9uIGxvZ2ljIGluIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKCkgd2hlbiBoYW5kbGluZyBERVAgKERhdGEgRXhjaGFuZ2UgUHJvdG9jb2wpIHJlcXVlc3QgZnJhbWVzIHdpdGggdGhlIERJRCBiaXQgc2V0IGluIHRoZSBORkMgZGlnaXRhbCBwcm90b2NvbCBzdGFjay4gUHJldmlvdXNseSwgcmVhZGluZyByZXNwLVx1MDAzZWRhdGFbM10gY291bGQgY2F1c2UgYW4gb3V0LW9mLWJvdW5kcyBhY2Nlc3MgaWYgcmVzcC1cdTAwM2VsZW4gd2FzIGluc3VmZmljaWVudC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgTkZDIHRhcmdldCBtb2RlIGNvbW11bmljYXRpb24gdmlhIGVtdWxhdGVkIHZpcnR1YWwgZGV2aWNlcyAobmZjc2ltKSBvciBVU0IgTkZDIGRldmljZXMgKHBvcnQxMDApIHN1cHBvcnRlZCBpbiBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDE4NzkyZDExNTAzZmZjNDUxZGE1N2E1OTQwYjlhNjZlOGQ2NmY4YmIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIFNlcCAxMyAyMDozOToxNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZmMvZGlnaXRhbF9kZXAuYyBiL25ldC9uZmMvZGlnaXRhbF9kZXAuYwppbmRleCAzOTgyZmEwODQ3MzdmLi5hZTU0MDdmY2ExMmQ0IDEwMDY0NAotLS0gYS9uZXQvbmZjL2RpZ2l0YWxfZGVwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25mYy9kaWdpdGFsX2RlcC5jCkBAIC0xMTE3LDEyICYjNDM7MTExNywxMiBAQCBzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsCiAJcGZiID0gZGVwX3JlcS0mZ3Q7cGZiOwogCiAJaWYgKERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpKSB7Ci0JCWlmIChkZGV2LSZndDtkaWQgJmFtcDsmYW1wOyAoZGRldi0mZ3Q7ZGlkID09IHJlc3AtJmd0O2RhdGFbM10pKSB7Ci0JCQlzaXplJiM0MzsmIzQzOzsKLQkJfSBlbHNlIHsKJiM0MzsJCWlmIChyZXNwLSZndDtsZW4gJmx0OyBzaXplICYjNDM7IDEgfHwgIWRkZXYtJmd0O2RpZCB8fAomIzQzOwkJICAgIGRkZXYtJmd0O2RpZCAhPSByZXNwLSZndDtkYXRhW3NpemVdKSB7CiAJCQlyYyA9IC1FSU87CiAJCQlnb3RvIGV4aXQ7CiAJCX0KJiM0MzsJCXNpemUmIzQzOyYjNDM7OwogCX0gZWxzZSBpZiAoZGRldi0mZ3Q7ZGlkKSB7CiAJCXJjID0gLUVJTzsKIAkJZ290byBleGl0Owo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTU5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTkZDIERpZ2l0YWwgREVQIFJlcXVlc3QgSGFuZGxpbmcqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBJIHNlZSB0aGV5JiMzOTtyZSBtb2RpZnlpbmcgYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2AsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAxMTE3LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBUaGlzIGxvb2tzIGxpa2UgaXQmIzM5O3MgZGVhbGluZyB3aXRoIERldmljZSBJRCAoRElEKSBoYW5kbGluZyB3aXRoaW4gdGhlIERpZ2l0YWwgREVQIHByb3RvY29sLiBUaGUgY29yZSBvZiB0aGlzIGZ1bmN0aW9uLCBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgLCBzZWVtcyB0byBiZSBwcm9jZXNzaW5nIGEgcmVjZWl2ZWQgREVQIHJlcXVlc3QgZnJvbSBhIHRhcmdldCBkZXZpY2UuCgpUaGUgbWFpbiBwb2ludCBvZiB0aGUgZGlmZiBpcyBpbiBob3cgdGhleSB2YWxpZGF0ZSB0aGUgRElELiBQcmV2aW91c2x5LCBpdCBjaGVja2VkIGlmIGBkZGV2LSZndDtkaWRgIGV4aXN0ZWQgYW5kIG1hdGNoZWQgYHJlc3AtJmd0O2RhdGFbM11gIHdoZW4gdGhlIERJRCBiaXQgd2FzIHNldCBpbiBgcGZiYC4gTm93LCBpdCBzZWVtcyBsaWtlIHRoZSBjaGVjayBpcyBtb3JlIHJvYnVzdC4gSXQmIzM5O3MgdmVyaWZ5aW5nIGByZXNwLSZndDtsZW5gIGlzIHN1ZmZpY2llbnQgdG8gaG9sZCB0aGUgRElELCB0aGVuIGNoZWNrcyBpZiBgZGRldi0mZ3Q7ZGlkYCBpcyBudWxsLCBvciBpdCBjaGVja3MgZm9yIGEgbWlzbWF0Y2ggYmV0d2VlbiBgZGRldi0mZ3Q7ZGlkYCBhbmQgYHJlc3AtJmd0O2RhdGFbc2l6ZV1gLCBpbW1lZGlhdGVseSByZXR1cm5pbmcgYC1FSU9gIGlmIGl0IGZhaWxzLiBUaGUgYHNpemUmIzQzOyYjNDM7YCBpcyBub3cgYWZ0ZXIgdGhpcyBjaGVjay4gVGhpcyBhcHBlYXJzIHRvIGJlIGEgYnVnIGZpeCBvciBzZWN1cml0eSBlbmhhbmNlbWVudCwgYmVjYXVzZSB0aGUgb2xkIGxvZ2ljLCBpZiB0aGUgRElEIHdhcyBub3QgcHJlc2VudCwgd291bGQmIzM5O3ZlIGluY3JlbWVudGVkIHRoZSBzaXplIHdpdGhvdXQgdGhlIGNoZWNrIGFuZCBwb3RlbnRpYWxseSBsZWQgdG8gYW4gb3V0LW9mLWJvdW5kcyByZWFkIG9yIG1lbW9yeSBjb3JydXB0aW9uLiBUaGlzIGNoYW5nZSBsaWtlbHkgYWRkcmVzc2VzIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgb3IgbG9naWMgZXJyb3Igd2hlcmUgYW4gYXR0YWNrZXIgY291bGQgc2VuZCBhIG1hbGZvcm1lZCByZXF1ZXN0IGFuZCBwb3NzaWJseSB0cmlnZ2VyIGFuIGlzc3VlIGlmIHRoZSBgRElEYCB3YXMgbm90IGZvdW5kLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGNvZGUgZm9yIHNpbWlsYXIgcGF0dGVybnMuIEl0JiMzOTtzIHBvc3NpYmxlIHRoZXJlIGFyZSBvdGhlciBzaW1pbGFyIGlzc3VlcyBpbiB0aGlzIG1vZHVsZSB0aGF0IGFsc28gbmVlZCB0byBiZSBhZGRyZXNzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmZjL2RpZ2l0YWxfZGVwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzExMDA6XHRcdFx0Z290byBleGl0O1xuMTEwMTpcdFx0fVxuMTEwMjpcdFxuMTEwMzpcdFx0aWYgKHJlc3AtXHUwMDNlbGVuIFx1MDAzZSBkZGV2LVx1MDAzZWxvY2FsX3BheWxvYWRfbWF4KSB7XG4xMTA0Olx0XHRcdHJjID0gLUVNU0dTSVpFO1xuMTEwNTpcdFx0XHRnb3RvIGV4aXQ7XG4xMTA2Olx0XHR9XG4xMTA3Olx0XG4xMTA4Olx0XHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcbjExMDk6XHRcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilyZXNwLVx1MDAzZWRhdGE7XG4xMTEwOlx0XG4xMTExOlx0XHRpZiAocmVzcC1cdTAwM2VsZW4gXHUwMDNjIHNpemUgfHwgZGVwX3JlcS1cdTAwM2VkaXIgIT0gRElHSVRBTF9ORkNfREVQX0ZSQU1FX0RJUl9PVVQgfHxcbjExMTI6XHRcdCAgICBkZXBfcmVxLVx1MDAzZWNtZCAhPSBESUdJVEFMX0NNRF9ERVBfUkVRKSB7XG4xMTEzOlx0XHRcdHJjID0gLUVJTztcbjExMTQ6XHRcdFx0Z290byBleGl0O1xuMTExNTpcdFx0fVxuMTExNjpcdFxuMTExNzpcdFx0cGZiID0gZGVwX3JlcS1cdTAwM2VwZmI7XG4xMTE4Olx0XG4xMTE5Olx0XHRpZiAoRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikpIHtcbjExMjA6XHRcdFx0aWYgKHJlc3AtXHUwMDNlbGVuIFx1MDAzYyBzaXplICYjNDM7IDEgfHwgIWRkZXYtXHUwMDNlZGlkIHx8XG4xMTIxOlx0XHRcdCAgICBkZGV2LVx1MDAzZWRpZCAhPSByZXNwLVx1MDAzZWRhdGFbc2l6ZV0pIHtcbjExMjI6XHRcdFx0XHRyYyA9IC1FSU87XG4xMTIzOlx0XHRcdFx0Z290byBleGl0O1xuMTEyNDpcdFx0XHR9XG4xMTI1Olx0XHRcdHNpemUmIzQzOyYjNDM7O1xuMTEyNjpcdFx0fSBlbHNlIGlmIChkZGV2LVx1MDAzZWRpZCkge1xuMTEyNzpcdFx0XHRyYyA9IC1FSU87XG4xMTI4Olx0XHRcdGdvdG8gZXhpdDtcbjExMjk6XHRcdH1cbjExMzA6XHRcbjExMzE6XHRcdGlmIChESUdJVEFMX05GQ19ERVBfTkFEX0JJVF9TRVQocGZiKSkge1xuMTEzMjpcdFx0XHRyYyA9IC1FSU87XG4xMTMzOlx0XHRcdGdvdG8gZXhpdDtcbjExMzQ6XHRcdH1cbjExMzU6XHRcbjExMzY6XHRcdGlmIChzaXplIFx1MDAzZSByZXNwLVx1MDAzZWxlbikge1xuMTEzNzpcdFx0XHRyYyA9IC1FSU87XG4xMTM4Olx0XHRcdGdvdG8gZXhpdDtcbjExMzk6XHRcdH1cbjExNDA6XHRcbjExNDE6XHRcdHNrYl9wdWxsKHJlc3AsIHNpemUpO1xuMTE0MjpcdFxuMTE0MzpcdFx0c3dpdGNoIChESUdJVEFMX05GQ19ERVBfUEZCX1RZUEUocGZiKSkge1xuMTE0NDpcdFx0Y2FzZSBESUdJVEFMX05GQ19ERVBfUEZCX0lfUERVOlxuMTE0NTpcdFx0XHRwcl9kZWJ1ZyhcJiMzNDtESUdJVEFMX05GQ19ERVBfUEZCX0lfUERVXFxuXCYjMzQ7KTtcbjExNDY6XHRcbjExNDc6XHRcdFx0aWYgKGRkZXYtXHUwMDNlYXRuX2NvdW50KSB7XG4xMTQ4Olx0XHRcdFx0LyogVGhlIHRhcmdldCBoYXMgcmVjZWl2ZWQgKGFuZCByZXBsaWVkIHRvKSBhdCBsZWFzdCBvbmVcbjExNDk6XHRcdFx0XHQgKiBBVE4gREVQX1JFUS5cbjExNTA6XHRcdFx0XHQgKi9cbjExNTE6XHRcdFx0XHRkZGV2LVx1MDAzZWF0bl9jb3VudCA9IDA7XG4xMTUyOlx0XG4xMTUzOlx0XHRcdFx0LyogcG5pIG9mIHJlc3AgUERVIGVxdWFsIHRvIHRoZSB0YXJnZXQgY3VycmVudCBwbmkgLSAxXG4xMTU0Olx0XHRcdFx0ICogbWVhbnMgcmVzcCBpcyB0aGUgcHJldmlvdXMgREVQX1JFUSBQRFUgcmVjZWl2ZWQgZnJvbVxuMTE1NTpcdFx0XHRcdCAqIHRoZSBpbml0aWF0b3Igc28gdGhlIHRhcmdldCByZXBsaWVzIHdpdGggc2F2ZWRfc2tiXG4xMTU2Olx0XHRcdFx0ICogd2hpY2ggaXMgdGhlIHByZXZpb3VzIERFUF9SRVMgc2F2ZWQgaW5cbjExNTc6XHRcdFx0XHQgKiBkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcygpLlxuMTE1ODpcdFx0XHRcdCAqL1xuMTE1OTpcdFx0XHRcdGlmIChESUdJVEFMX05GQ19ERVBfUEZCX1BOSShwZmIpID09XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU4NgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTkZDIERpZ2l0YWwgUHJvdG9jb2wgU3RhY2sqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGZvY3VzIHJpZ2h0IG5vdyBpcyBvbiB1bmRlcnN0YW5kaW5nIHRoZSBgbmV0L25mYy9kaWdpdGFsX2RlcC5jYCBmaWxlLiBUaGlzIGlzIHBhcnQgb2YgdGhlIE5GQyBkaWdpdGFsIHByb3RvY29sIHN0YWNrLCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl0IGZpdHMgaW50byB0aGUgYmlnZ2VyIHBpY3R1cmUuIEZpcnN0LCBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgQ09ORklHX05GQ19ESUdJVEFMYCBpcyBlbmFibGVkIGFuZCB1bmRlcnN0YW5kIGl0cyBzaWduaWZpY2FuY2UuCgpJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSwgYW5kIGhvdyB0byB2ZXJpZnkgaWYgdGhpcyBpcyBpbiB1c2UuIEkgd2lsbCBuZXh0IGxvb2sgYXQgaG93IHRoaXMgZmVhdHVyZSBnZXRzIHVzZWQgd2l0aGluIHRoZSBrZXJuZWwgYW5kIGl0cyBhc3NvY2lhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTW9zdCBpbXBvcnRhbnRseSwgSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGlzIGNvbXBvbmVudCBpcyBhY2Nlc3NpYmxlIG9yIHRlc3RhYmxlIHdpdGhpbiBlbnZpcm9ubWVudHMgbGlrZSBzeXprYWxsZXIgb3IgdmlydHVhbGl6ZWQgc3lzdGVtcy4gSXMgaXQgZXZlbiByZWFjaGFibGU/CgpUbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUsIEkgc2hvdWxkIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIHdpdGhpbiB0aGUgYG5ldC9uZmNgIGRpcmVjdG9yeS4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBlbmFibGluZyBjb25kaXRpb25zIHdpbGwgYmUgZGVmaW5lZC4gVGhhdCBzaG91bGQgcG9pbnQgbWUgaW4gdGhlIHJpZ2h0IGRpcmVjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZDX0RJR0lUQUwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvS2NvbmZpZz02PW1lbnVjb25maWcgTkZDXG4tLVxubmV0L25mYy9LY29uZmlnLTE2LVxubmV0L25mYy9LY29uZmlnOjE3OmNvbmZpZyBORkNfRElHSVRBTFxubmV0L25mYy9LY29uZmlnLTE4LVx0ZGVwZW5kcyBvbiBORkNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTc0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgTkZDIEtjb25maWcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHB1bGwgdXAgdGhlIGBuZXQvbmZjL0tjb25maWdgIGZpbGUuIEkmIzM5O20gYXNzdW1pbmcgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgc3RhbmRhcmQgTGludXgga2VybmVsIHNvdXJjZSBoZXJlLCBzbyB0aGlzIGlzIHdoZXJlIHdlJiMzOTtsbCBmaW5kIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gTmVhciBGaWVsZCBDb21tdW5pY2F0aW9uLiBJJiMzOTttIGltbWVkaWF0ZWx5IGxvb2tpbmcgZm9yIHRoZSBnZW5lcmFsIHN0cnVjdHVyZS4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIHRoZSBzdGFuZGFyZCBgY29uZmlnYCBibG9ja3MsIGBib29sYCwgYHRyaXN0YXRlYCwgYW5kIGBzdHJpbmdgIGRlZmluaXRpb25zLiBJIGFudGljaXBhdGUgc2VlaW5nIGRlcGVuZGVuY2llcywgbGlrZWx5IG9uIG90aGVyIG5ldHdvcmstcmVsYXRlZCBmZWF0dXJlcyBvciBwb3RlbnRpYWxseSBldmVuIGhhcmR3YXJlIGRyaXZlcnMsIGVzcGVjaWFsbHkgaWYgTkZDIGNvbnRyb2xsZXIgc3VwcG9ydCBpcyBtb2R1bGFyaXplZC4KCkkmIzM5O20ga2VlcGluZyBhbiBleWUgb3V0IGZvciBob3cgdGhleSYjMzk7dmUgb3JnYW5pemVkIHRoZSBvcHRpb25zLiBBcmUgdGhleSBncm91cGVkIGJ5IE5GQyBwcm90b2NvbCBzdGFuZGFyZHMgKGUuZy4sIE5GQy1BLCBORkMtQiwgTkZDLUYpPyBCeSBjb250cm9sbGVyIHR5cGU/IE9yIG1heWJlIGJ5IGZlYXR1cmUgc2V0LCBsaWtlIHJlYWRlci93cml0ZXIgZnVuY3Rpb25hbGl0eSB2ZXJzdXMgcGVlci10by1wZWVyPyBUaGUgb3JnYW5pemF0aW9uIHdpbGwgdGVsbCBtZSBhIGxvdCBhYm91dCB0aGUgZGVzaWduIHBoaWxvc29waHkuCgpNeSBmb2N1cyB3aWxsIGJlIG9uIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGRlZmF1bHRzLiBXaGF0IG90aGVyIGtlcm5lbCBmZWF0dXJlcyBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIE5GQyB0byB3b3JrPyBBcmUgdGhlcmUgYW55IGhhcmQgZGVwZW5kZW5jaWVzLCBvciBhcmUgbW9zdCB0aGluZ3MgY29uZmlndXJhYmxlPyBVbmRlcnN0YW5kaW5nIHRoZSBkZWZhdWx0cyBpcyBrZXkgYmVjYXVzZSB0aGV5IGRpY3RhdGUgdGhlICYjMzQ7b3V0LW9mLXRoZS1ib3gmIzM0OyBiZWhhdmlvci4gQXJlIHRoZSBkZWZhdWx0cyBzZW5zaWJsZSBmcm9tIGEgc2VjdXJpdHkgYW5kIHVzYWJpbGl0eSBzdGFuZHBvaW50PyBUaGF0JiMzOTtzIHdoYXQgSSYjMzk7bGwgYmUgbG9va2luZyBhdC4KCkkmIzM5O2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55ICYjMzQ7ZXhwZXJ0JiMzNDsgb3B0aW9ucywgaWYgdGhlcmUgYXJlIGFueSwgYW5kIGhvdyB0aGV5IGFyZSBleHBsYWluZWQuIEFyZSB0aGVyZSBjbGVhciBkZXNjcmlwdGlvbnMgb2YgdGhlIGltcGFjdCBvZiB0aGVzZSBvcHRpb25zPyBJIHdhbnQgdG8gc2VlIGlmIHRoZSBLY29uZmlnIHByb3ZpZGVzIHN1ZmZpY2llbnQgZ3VpZGFuY2UgZm9yIHRob3NlIHdobyBtaWdodCB3YW50IHRvIGN1c3RvbWl6ZSB0aGUgTkZDIHN0YWNrIGZvciB0aGVpciBzcGVjaWZpYyBlbWJlZGRlZCBkZXZpY2Ugb3IgYXBwbGljYXRpb24uIEZpbmFsbHksIEkmIzM5O2xsIHNraW0gZm9yIGFueSBkZXByZWNhdGlvbiB3YXJuaW5ncyBvciBhbnl0aGluZyB0aGF0IHBvaW50cyB0byBzb21lIG9mIHRoZSBjb2RlIGJlaW5nIHJlcGxhY2VkIG9yIHVuZGVyIGRldmVsb3BtZW50LiBBbHdheXMgaW50ZXJlc3RpbmcgdG8gbm90ZSB0aGUgJiMzNDtUT0RPJiMzNDsgZW50cmllcyBhcyB3ZWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25mYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTkZDIHN1YnN5c3RlbSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgTkZDXG4gICA3Olx0XHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXG4gICA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtORkMgc3Vic3lzdGVtIHN1cHBvcnRcJiMzNDtcbiAgIDk6XHRcdGRlZmF1bHQgblxuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHN1cHBvcnQgZm9yIE5GQyAoTmVhciBmaWVsZFxuICAxMjpcdFx0ICBjb21tdW5pY2F0aW9uKSBkZXZpY2VzLlxuICAxMzpcdFxuICAxNDpcdFx0ICBUbyBjb21waWxlIHRoaXMgc3VwcG9ydCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsXG4gIDE1Olx0XHQgIGJlIGNhbGxlZCBuZmMuXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIE5GQ19ESUdJVEFMXG4gIDE4Olx0XHRkZXBlbmRzIG9uIE5GQ1xuICAxOTpcdFx0c2VsZWN0IENSQ19DQ0lUVFxuICAyMDpcdFx0c2VsZWN0IENSQ19JVFVfVFxuICAyMTpcdFx0dHJpc3RhdGUgXCYjMzQ7TkZDIERpZ2l0YWwgUHJvdG9jb2wgc3RhY2sgc3VwcG9ydFwmIzM0O1xuICAyMjpcdFx0ZGVmYXVsdCBuXG4gIDIzOlx0XHRoZWxwXG4gIDI0Olx0XHQgIFNheSBZIGlmIHlvdSB3YW50IHRvIGJ1aWxkIE5GQyBkaWdpdGFsIHByb3RvY29sIHN0YWNrIHN1cHBvcnQuXG4gIDI1Olx0XHQgIFRoaXMgaXMgbmVlZGVkIGJ5IE5GQyBjaGlwc2V0cyB3aG9zZSBmaXJtd2FyZSBvbmx5IGltcGxlbWVudFxuICAyNjpcdFx0ICB0aGUgTkZDIGFuYWxvZyBsYXllci5cbiAgMjc6XHRcbiAgMjg6XHRcdCAgVG8gY29tcGlsZSB0aGlzIHN1cHBvcnQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbFxuICAyOTpcdFx0ICBiZSBjYWxsZWQgbmZjX2RpZ2l0YWwuXG4gIDMwOlx0XG4gIDMxOlx0c291cmNlIFwmIzM0O25ldC9uZmMvbmNpL0tjb25maWdcJiMzNDtcbiAgMzI6XHRzb3VyY2UgXCYjMzQ7bmV0L25mYy9oY2kvS2NvbmZpZ1wmIzM0O1xuICAzMzpcdFxuICAzNDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25mYy9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg0MAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IERlY29kaW5nIE5GQ19ESUdJVEFMIFVzYWdlKioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuICYjMzQ7TkZDX0RJR0lUQUwuJiMzNDsgVGhhdCBpbW1lZGlhdGVseSBzaWduYWxzIGEgc3BlY2lmaWMgYXBwbGljYXRpb24gb3IgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIE5GQyAoTmVhciBGaWVsZCBDb21tdW5pY2F0aW9uKSBlY29zeXN0ZW0uIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkmIzM5O20gdGhpbmtpbmcgdGhpcyBsaWtlbHkgcmVmZXJzIHRvIGEgZGlnaXRhbCByZXByZXNlbnRhdGlvbiBvciBpbnRlcmZhY2UgcmVsYXRpbmcgdG8gTkZDLCBsaWtlbHkgZm9yIGEgcGFydGljdWxhciBkZXZpY2UgZHJpdmVyIG9yIHNvZnR3YXJlIHN0YWNrLiBNeSBtaW5kIGltbWVkaWF0ZWx5IHN0YXJ0cyBydW5uaW5nIHRocm91Z2ggdGhlIHBvdGVudGlhbCBjb250ZXh0cy4gSXMgdGhpcyByZWxhdGVkIHRvIHNlY3VyZSBlbGVtZW50IGludGVyYWN0aW9ucz8gQ29udGFjdGxlc3MgcGF5bWVudCBpbXBsZW1lbnRhdGlvbj8gUGVyaGFwcyBpdCYjMzk7cyB0aWVkIHRvIGEgc3BlY2lmaWMgcmVhZGVyIG1vZHVsZSBvciBhIGN1c3RvbSBORkMgcHJvdG9jb2w/IFRoZSBzcGVjaWZpY2l0eSBvZiAmIzM0O0RJR0lUQUwmIzM0OyBmZWVscyBsaWtlIGl0JiMzOTtzIHBvaW50aW5nIHRvd2FyZHMgYSBkaWdpdGFsIGVuY29kaW5nIG9yIGRhdGEgZm9ybWF0IGxheWVyLiBTbywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRyaXZlcnMgdGhhdCAqYWN0dWFsbHkqIGxldmVyYWdlIHRoaXMgZGlnaXRhbCBpbnRlcmZhY2UuIFRoYXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLiBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmchCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19ORkNfRElHSVRBTHxuZmNfZGlnaXRhbCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTEwMCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuYXJjaC9hcm0vY29uZmlncy9leHlub3NfZGVmY29uZmlnPTc3PUNPTkZJR19ORkM9eVxuYXJjaC9hcm0vY29uZmlncy9leHlub3NfZGVmY29uZmlnOjc4OkNPTkZJR19ORkNfRElHSVRBTD1tXG5hcmNoL2FybS9jb25maWdzL2V4eW5vc19kZWZjb25maWctNzktQ09ORklHX05GQ19OQ0k9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjdfZGVmY29uZmlnPTE2OD1DT05GSUdfTkZDPW1cbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjdfZGVmY29uZmlnOjE2OTpDT05GSUdfTkZDX0RJR0lUQUw9bVxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWctMTcwLUNPTkZJR19ORkNfTkNJPW1cbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xNS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE2OiNkZWZpbmUgTkZDU0lNX0VSUihkLCBmbXQsIGFyZ3MuLi4pIG5mY19lcnIoXHUwMDI2ZC1cdTAwM2VuZmNfZGlnaXRhbF9kZXYtXHUwMDNlbmZjX2Rldi1cdTAwM2VkZXYsIFxcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xNy1cdFx0XHRcdFx0ICAgIFwmIzM0OyVzOiBcJiMzNDsgZm10LCBfX2Z1bmNfXywgIyMgYXJncylcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE4LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTk6I2RlZmluZSBORkNTSU1fREJHKGQsIGZtdCwgYXJncy4uLikgZGV2X2RiZyhcdTAwMjZkLVx1MDAzZW5mY19kaWdpdGFsX2Rldi1cdTAwM2VuZmNfZGV2LVx1MDAzZWRldiwgXFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwLVx0XHRcdFx0XHQgICAgXCYjMzQ7JXM6IFwmIzM0OyBmbXQsIF9fZnVuY19fLCAjIyBhcmdzKVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jPTMxPXN0cnVjdCBuZmNzaW0ge1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzI6XHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpuZmNfZGlnaXRhbF9kZXY7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMy1cbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00NS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQ2Olx0bmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2I7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy00Ny1cdHZvaWQgKmFyZztcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYz0xODI9c3RhdGljIHZvaWQgbmZjc2ltX3JlY3Zfd3Eoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE5Ny1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE5ODpcdGRldi1cdTAwM2VjYihkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2LCBkZXYtXHUwMDNlYXJnLCBza2IpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTk5LX1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwMC1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjIwMTpzdGF0aWMgaW50IG5mY3NpbV9zZW5kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyMDI6XHRcdCAgICAgICB1MTYgdGltZW91dCwgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZylcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwMy17XG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyMDQ6XHRzdHJ1Y3QgbmZjc2ltICpkZXYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwNS1cdHU4IGRlbGF5O1xuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIzOS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI0MDpzdGF0aWMgdm9pZCBuZmNzaW1fYWJvcnRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNDEte1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjQyOlx0Y29uc3Qgc3RydWN0IG5mY3NpbSAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNDMtXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjQ2LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjQ3OnN0YXRpYyBpbnQgbmZjc2ltX3N3aXRjaF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBib29sIG9uKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjQ4LXtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI0OTpcdHN0cnVjdCBuZmNzaW0gKmRldiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjUwLVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI1NS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI1NjpzdGF0aWMgaW50IG5mY3NpbV9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI1Ny1cdFx0XHRcdFx0ICBpbnQgdHlwZSwgaW50IHBhcmFtKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjU4LXtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI1OTpcdHN0cnVjdCBuZmNzaW0gKmRldiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjYwLVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI3OC1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI3OTpzdGF0aWMgaW50IG5mY3NpbV9pbl9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjgwLVx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdGltZW91dCxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI4MTpcdFx0XHQgICAgICAgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZylcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI4Mi17XG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjg1LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mjg2OnN0YXRpYyBpbnQgbmZjc2ltX3RnX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjg3LVx0XHRcdFx0XHQgIGludCB0eXBlLCBpbnQgcGFyYW0pXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yODgte1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mjg5Olx0c3RydWN0IG5mY3NpbSAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yOTAtXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzA4LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzA5OnN0YXRpYyBpbnQgbmZjc2ltX3RnX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMTAtXHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzExOlx0XHRcdCAgICAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzEyLXtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMTUtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMTY6c3RhdGljIGludCBuZmNzaW1fdGdfbGlzdGVuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHUxNiB0aW1lb3V0LFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzE3Olx0XHRcdCAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzE4LXtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMjEtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMjI6c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfZGlnaXRhbF9vcHMgbmZjc2ltX2RpZ2l0YWxfb3BzID0ge1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzIzLVx0LmluX2NvbmZpZ3VyZV9odyA9IG5mY3NpbV9pbl9jb25maWd1cmVfaHcsXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM9MzQ2PXN0YXRpYyB2b2lkIG5mY3NpbV9kZWJ1Z2ZzX2luaXRfZGV2KHN0cnVjdCBuZmNzaW0gKmRldilcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNTctXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozNTg6XHRpZHggPSBkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2LVx1MDAzZW5mY19kZXYtXHUwMDNlaWR4O1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzU5LVx0biA9IHNucHJpbnRmKGRldm5hbWUsIHNpemVvZihkZXZuYW1lKSwgXCYjMzQ7bmZjJWRcJiMzNDssIGlkeCk7XG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM9MzcwPXN0YXRpYyBzdHJ1Y3QgbmZjc2ltICpuZmNzaW1fZGV2aWNlX25ldyhzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmtfaW4sXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzgyLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzgzOlx0ZGV2LVx1MDAzZW5mY19kaWdpdGFsX2RldiA9XG5kcml2ZXJzL25mYy9uZmNzaW0uYzozODQ6XHRcdFx0bmZjX2RpZ2l0YWxfYWxsb2NhdGVfZGV2aWNlKFx1MDAyNm5mY3NpbV9kaWdpdGFsX29wcyxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM4NS1cdFx0XHRcdFx0XHQgICAgTkZDX1BST1RPX05GQ19ERVBfTUFTSyxcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zODctXHRcdFx0XHRcdFx0ICAgIDAsIDApO1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mzg4Olx0aWYgKCFkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KSB7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zODktXHRcdGtmcmVlKGRldik7XG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzkyLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzkzOlx0bmZjX2RpZ2l0YWxfc2V0X2RydmRhdGEoZGV2LVx1MDAzZW5mY19kaWdpdGFsX2RldiwgZGV2KTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM5NC1cbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zOTctXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozOTg6XHRyYyA9IG5mY19kaWdpdGFsX3JlZ2lzdGVyX2RldmljZShkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM5OS1cdGlmIChyYykge1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDAwLVx0XHRwcl9lcnIoXCYjMzQ7Q291bGQgbm90IHJlZ2lzdGVyIGRpZ2l0YWwgZGV2aWNlICglZClcXG5cJiMzNDssIHJjKTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQwMTpcdFx0bmZjX2RpZ2l0YWxfZnJlZV9kZXZpY2UoZGV2LVx1MDAzZW5mY19kaWdpdGFsX2Rldik7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy00MDItXHRcdGtmcmVlKGRldik7XG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM9NDEyPXN0YXRpYyB2b2lkIG5mY3NpbV9kZXZpY2VfZnJlZShzdHJ1Y3QgbmZjc2ltICpkZXYpXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00MTMte1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDE0Olx0bmZjX2RpZ2l0YWxfdW5yZWdpc3Rlcl9kZXZpY2UoZGV2LVx1MDAzZW5mY19kaWdpdGFsX2Rldik7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy00MTUtXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDIyLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDIzOlx0bmZjX2RpZ2l0YWxfZnJlZV9kZXZpY2UoZGV2LVx1MDAzZW5mY19kaWdpdGFsX2Rldik7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy00MjQtXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTIyMT1pbl9wcm90b2NvbHNbXVtQT1JUMTAwX0lOX01BWF9OVU1fUFJPVE9DT0xTICYjNDM7IDFdID0ge1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yODgtXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QxVF0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mjg5Olx0XHQvKiBuZmNfZGlnaXRhbF9mcmFtaW5nX25mY2Ffc2hvcnQgKi9cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yOTAtXHRcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9DUkMsICAgICAgICAgIDIgfSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjk2LVx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UMlRdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI5NzpcdFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNhX3N0YW5kYXJkICovXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjk4LVx0XHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfQ1JDLCAgIDEgfSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzAyLVx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UNFRdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMwMzpcdFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNhX3N0YW5kYXJkX3dpdGhfY3JjX2EgKi9cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMDQtXHRcdHsgUE9SVDEwMF9JTl9QUk9UX0VORCwgICAgICAgMCB9LFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMDYtXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX05GQ19ERVBdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMwNzpcdFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNhX3N0YW5kYXJkICovXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzA4LVx0XHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsIDAgfSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzMyLVx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDRl9UM1RdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMzMzpcdFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNmICovXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzM0LVx0XHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsIDAgfSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzM2LVx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDRl9ORkNfREVQXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMzc6XHRcdC8qIG5mY19kaWdpdGFsX2ZyYW1pbmdfbmZjZiAqL1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTMzOC1cdFx0eyBQT1JUMTAwX0lOX1BST1RfSU5JVElBTF9HVUFSRF9USU1FLCAgICAgMTggfSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzg0LVx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQl9UNFRdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM4NTpcdFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNiICovXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzg2LVx0XHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsICAgICAgICAgICAgICAgICAgICAgMCB9LFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz00Mzk9c3RydWN0IHBvcnQxMDAge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQ0MDpcdHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKm5mY19kaWdpdGFsX2RldjtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00NDEtXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTQ5Nj1zdHJ1Y3QgcG9ydDEwMF9jYl9hcmcge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQ5NzpcdG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNvbXBsZXRlX2NiO1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQ5OC1cdHZvaWQgKmNvbXBsZXRlX2FyZztcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9OTMxPXN0YXRpYyB2b2lkIHBvcnQxMDBfc2VuZF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTk1NC1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo5NTU6c3RhdGljIHZvaWQgcG9ydDEwMF9hYm9ydF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy05NTYte1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjk1NzpcdHN0cnVjdCBwb3J0MTAwICpkZXYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy05NTgtXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTEwMjU9c3RhdGljIHUxNiBwb3J0MTAwX2dldF9maXJtd2FyZV92ZXJzaW9uKHN0cnVjdCBwb3J0MTAwICpkZXYpXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEwNDYtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTA0NzpzdGF0aWMgaW50IHBvcnQxMDBfc3dpdGNoX3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGJvb2wgb24pXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTA0OC17XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTA0OTpcdHN0cnVjdCBwb3J0MTAwICpkZXYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMDUwLVx0c3RydWN0IHNrX2J1ZmYgKnNrYiwgKnJlc3A7XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEwNzEtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTA3MjpzdGF0aWMgaW50IHBvcnQxMDBfaW5fc2V0X3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmKVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEwNzMte1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEwNzQ6XHRzdHJ1Y3QgcG9ydDEwMCAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTA3NS1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExMDAtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTEwMTpzdGF0aWMgaW50IHBvcnQxMDBfaW5fc2V0X2ZyYW1pbmcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHBhcmFtKVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExMDIte1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjExMDM6XHRzdHJ1Y3QgcG9ydDEwMCAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTEwNC1cdGNvbnN0IHN0cnVjdCBwb3J0MTAwX3Byb3RvY29sICpwcm90b2NvbHM7XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExNDItXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTE0MzpzdGF0aWMgaW50IHBvcnQxMDBfaW5fY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExNDQtXHRcdFx0XHQgICBpbnQgcGFyYW0pXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTExNTU9c3RhdGljIHZvaWQgcG9ydDEwMF9pbl9jb21tX3JmX2NvbXBsZXRlKHN0cnVjdCBwb3J0MTAwICpkZXYsIHZvaWQgKmFyZyxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTE1OC1cdGNvbnN0IHN0cnVjdCBwb3J0MTAwX2NiX2FyZyAqY2JfYXJnID0gYXJnO1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjExNTk6XHRuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiA9IGNiX2FyZy1cdTAwM2Vjb21wbGV0ZV9jYjtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMTYwLVx0dTMyIHN0YXR1cztcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIwMC1leGl0OlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEyMDE6XHRjYihkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2LCBjYl9hcmctXHUwMDNlY29tcGxldGVfYXJnLCByZXNwKTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjAyLVxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjA1LVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEyMDY6c3RhdGljIGludCBwb3J0MTAwX2luX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIwNy1cdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IF90aW1lb3V0LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEyMDg6XHRcdFx0ICAgICAgIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLCB2b2lkICphcmcpXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIwOS17XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTIxMDpcdHN0cnVjdCBwb3J0MTAwICpkZXYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjExLVx0c3RydWN0IHBvcnQxMDBfY2JfYXJnICpjYl9hcmc7XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMjgtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTIyOTpzdGF0aWMgaW50IHBvcnQxMDBfdGdfc2V0X3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmKVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMzAte1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEyMzE6XHRzdHJ1Y3QgcG9ydDEwMCAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIzMi1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyNTctXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTI1ODpzdGF0aWMgaW50IHBvcnQxMDBfdGdfc2V0X2ZyYW1pbmcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHBhcmFtKVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyNTkte1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEyNjA6XHRzdHJ1Y3QgcG9ydDEwMCAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTI2MS1cdGNvbnN0IHN0cnVjdCBwb3J0MTAwX3Byb3RvY29sICpwcm90b2NvbHM7XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyOTktXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTMwMDpzdGF0aWMgaW50IHBvcnQxMDBfdGdfY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzMDEtXHRcdFx0XHQgICBpbnQgcGFyYW0pXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTEzMzI9c3RhdGljIHZvaWQgcG9ydDEwMF90Z19jb21tX3JmX2NvbXBsZXRlKHN0cnVjdCBwb3J0MTAwICpkZXYsIHZvaWQgKmFyZyxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTMzNi1cdGNvbnN0IHN0cnVjdCBwb3J0MTAwX2NiX2FyZyAqY2JfYXJnID0gYXJnO1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEzMzc6XHRuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiA9IGNiX2FyZy1cdTAwM2Vjb21wbGV0ZV9jYjtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzM4LVx0c3RydWN0IHBvcnQxMDBfdGdfY29tbV9yZl9yZXMgKmhkcjtcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTM2Ni1leGl0OlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEzNjc6XHRjYihkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2LCBjYl9hcmctXHUwMDNlY29tcGxldGVfYXJnLCByZXNwKTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzY4LVxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzcxLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEzNzI6c3RhdGljIGludCBwb3J0MTAwX3RnX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTM3My1cdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHRpbWVvdXQsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTM3NDpcdFx0XHQgICAgICAgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZylcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzc1LXtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMzc2Olx0c3RydWN0IHBvcnQxMDAgKmRldiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzNzctXHRzdHJ1Y3QgcG9ydDEwMF90Z19jb21tX3JmX2NtZCAqaGRyO1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzk5LVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE0MDA6c3RhdGljIGludCBwb3J0MTAwX2xpc3Rlbl9tZGFhKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTQwMS1cdFx0XHQgICAgICAgc3RydWN0IGRpZ2l0YWxfdGdfbWRhYV9wYXJhbXMgKnBhcmFtcyxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDAyLVx0XHRcdCAgICAgICB1MTYgdGltZW91dCxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNDAzOlx0XHRcdCAgICAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0MDQte1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE0MDU6XHRzdHJ1Y3QgcG9ydDEwMCAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTQwNi1cdHN0cnVjdCBwb3J0MTAwX3RnX2NvbW1fcmZfY21kICpoZHI7XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0NTUtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTQ1NjpzdGF0aWMgaW50IHBvcnQxMDBfbGlzdGVuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHUxNiB0aW1lb3V0LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE0NTc6XHRcdFx0ICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0NTgte1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE0NTk6XHRjb25zdCBzdHJ1Y3QgcG9ydDEwMCAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTQ2MC1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0NjgtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTQ2OTpzdGF0aWMgY29uc3Qgc3RydWN0IG5mY19kaWdpdGFsX29wcyBwb3J0MTAwX2RpZ2l0YWxfb3BzID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0NzAtXHQuaW5fY29uZmlndXJlX2h3ID0gcG9ydDEwMF9pbl9jb25maWd1cmVfaHcsXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTE0ODk9c3RhdGljIGludCBwb3J0MTAwX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UsXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE1NzEtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTU3MjpcdGRldi1cdTAwM2VuZmNfZGlnaXRhbF9kZXYgPSBuZmNfZGlnaXRhbF9hbGxvY2F0ZV9kZXZpY2UoXHUwMDI2cG9ydDEwMF9kaWdpdGFsX29wcyxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTczLVx0XHRcdFx0XHRcdFx0ICAgUE9SVDEwMF9QUk9UT0NPTFMsXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE1NzYtXHRcdFx0XHRcdFx0XHQgICBkZXYtXHUwMDNlc2tiX3RhaWxyb29tKTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNTc3Olx0aWYgKCFkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTU3OC1cdFx0bmZjX2VycihcdTAwMjZpbnRlcmZhY2UtXHUwMDNlZGV2LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE1Nzk6XHRcdFx0XCYjMzQ7Q291bGQgbm90IGFsbG9jYXRlIG5mY19kaWdpdGFsX2RldlxcblwmIzM0Oyk7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTU4MC1cdFx0cmMgPSAtRU5PTUVNO1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTgzLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE1ODQ6XHRuZmNfZGlnaXRhbF9zZXRfcGFyZW50X2RldihkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2LCBcdTAwMjZpbnRlcmZhY2UtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNTg1Olx0bmZjX2RpZ2l0YWxfc2V0X2RydmRhdGEoZGV2LVx1MDAzZW5mY19kaWdpdGFsX2RldiwgZGV2KTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTg2LVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE1ODc6XHRyYyA9IG5mY19kaWdpdGFsX3JlZ2lzdGVyX2RldmljZShkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTg4LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE1OTYtZnJlZV9uZmNfZGV2OlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE1OTc6XHRuZmNfZGlnaXRhbF9mcmVlX2RldmljZShkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTk4LVxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xNjA4PXN0YXRpYyB2b2lkIHBvcnQxMDBfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNjE0LVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE2MTU6XHRuZmNfZGlnaXRhbF91bnJlZ2lzdGVyX2RldmljZShkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNjE2Olx0bmZjX2RpZ2l0YWxfZnJlZV9kZXZpY2UoZGV2LVx1MDAzZW5mY19kaWdpdGFsX2Rldik7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTYxNy1cbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTE4NT1zdHJ1Y3Qgc3Q5NV9kaWdpdGFsX2NtZF9jb21wbGV0ZV9hcmcge1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xODYtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiX3Jlc3A7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjE4NzpcdG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNvbXBsZXRlX2NiO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xODgtXHR2b2lkICpjYl91c3Jhcmc7XG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYz0yMTc9c3RydWN0IHN0OTVoZl9jb250ZXh0IHtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMjE4LVx0c3RydWN0IHN0OTVoZl9zcGlfY29udGV4dCBzcGljb250ZXh0O1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoyMTk6XHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2O1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0yMjAtXHRzdHJ1Y3QgbmZjX2RldiAqbmZjZGV2O1xuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9NTMxPXN0YXRpYyBpbnQgaXNvMTQ0NDNfY29uZmlnX2ZkdChzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0OTVjb250ZXh0LCBpbnQgd3R4bSlcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTUzNC1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnN0OTVjb250ZXh0LVx1MDAzZXNwaWNvbnRleHQuc3BpZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6NTM1Olx0c3RydWN0IG5mY19kaWdpdGFsX2RldiAqbmZjZGRldiA9IHN0OTVjb250ZXh0LVx1MDAzZWRkZXY7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTUzNi1cdHVuc2lnbmVkIGNoYXIgcHBfdHlwZWI7XG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYz02MDI9c3RhdGljIGludCBzdDk1aGZfaGFuZGxlX3d0eChzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0Y29udGV4dCxcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTYwOC1cdHN0cnVjdCBwYXJhbV9saXN0IG5ld19wYXJhbXNbMV07XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjYwOTpcdHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKm5mY2RkZXYgPSBzdGNvbnRleHQtXHUwMDNlZGRldjtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNjEwLVx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2c3Rjb250ZXh0LVx1MDAzZW5mY2Rldi1cdTAwM2VkZXY7XG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYz02OTM9c3RhdGljIGludCBzdDk1aGZfcmVzcG9uc2VfaGFuZGxlcihzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0Y29udGV4dCxcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTY5OS1cdHVuc2lnbmVkIGNoYXIgdmFsX21tO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo3MDA6XHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpuZmNkZGV2ID0gc3Rjb250ZXh0LVx1MDAzZWRkZXY7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTcwMS1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnN0Y29udGV4dC1cdTAwM2VuZmNkZXYtXHUwMDNlZGV2O1xuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9NzY2PXN0YXRpYyBpcnFyZXR1cm5fdCBzdDk1aGZfaXJxX3RocmVhZF9oYW5kbGVyKGludCBpcnEsIHZvaWQgICpzdDk1aGZjb250ZXh0KVxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtODY4LS8qIE5GQyBvcHMgZnVuY3Rpb25zIGRlZmluaXRpb24gKi9cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6ODY5OnN0YXRpYyBpbnQgc3Q5NWhmX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy04NzAtXHRcdFx0XHQgIGludCB0eXBlLFxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtODcyLXtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6ODczOlx0c3RydWN0IHN0OTVoZl9jb250ZXh0ICpzdGNvbnRleHQgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtODc0LVxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9OTAxPXN0YXRpYyBpbnQgcmZfb2ZmKHN0cnVjdCBzdDk1aGZfY29udGV4dCAqc3Rjb250ZXh0KVxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTE0LVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo5MTU6c3RhdGljIGludCBzdDk1aGZfaW5fc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTE2LVx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTkxNy1cdFx0XHQgICAgICB1MTYgdGltZW91dCxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6OTE4Olx0XHRcdCAgICAgIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05MTktXHRcdFx0ICAgICAgdm9pZCAqYXJnKVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05MjAte1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo5MjE6XHRzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0Y29udGV4dCA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05MjItXHRpbnQgcmM7XG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05ODgtLyogcDJwIHdpbGwgYmUgc3VwcG9ydGVkIGluIGEgbGF0ZXIgcmVsZWFzZSAhICovXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjk4OTpzdGF0aWMgaW50IHN0OTVoZl90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTkwLVx0XHRcdFx0ICBpbnQgdHlwZSxcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTk5NS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6OTk2OnN0YXRpYyBpbnQgc3Q5NWhmX3RnX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTk5Ny1cdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05OTgtXHRcdFx0ICAgICAgdTE2IHRpbWVvdXQsXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjk5OTpcdFx0XHQgICAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYixcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAwMC1cdFx0XHQgICAgICB2b2lkICphcmcpXG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMDA0LVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMDA1OnN0YXRpYyBpbnQgc3Q5NWhmX3RnX2xpc3RlbihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMDA2LVx0XHRcdCAgICB1MTYgdGltZW91dCxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MTAwNzpcdFx0XHQgICAgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMDgtXHRcdFx0ICAgIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMTItXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjEwMTM6c3RhdGljIGludCBzdDk1aGZfdGdfZ2V0X3JmX3RlY2goc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggKnJmX3RlY2gpXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMTQte1xuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAxNy1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MTAxODpzdGF0aWMgaW50IHN0OTVoZl9zd2l0Y2hfcmYoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgYm9vbCBvbilcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAxOS17XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMjAtXHR1OCByZl90ZWNoO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMDIxOlx0c3RydWN0IHN0OTVoZl9jb250ZXh0ICpzdGNvbnRleHQgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAyMi1cbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMzMtLyogVE9ETyBzdDk1aGZfYWJvcnRfY21kICovXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjEwMzQ6c3RhdGljIHZvaWQgc3Q5NWhmX2Fib3J0X2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMDM1LXtcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMzctXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjEwMzg6c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfZGlnaXRhbF9vcHMgc3Q5NWhmX25mY19kaWdpdGFsX29wcyA9IHtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAzOS1cdC5pbl9jb25maWd1cmVfaHcgPSBzdDk1aGZfaW5fY29uZmlndXJlX2h3LFxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9MTA2Mz1zdGF0aWMgaW50IHN0OTVoZl9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqbmZjX3NwaV9kZXYpXG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMTU5LVx0LyogY3JlYXRlIE5GQyBkZXYgb2JqZWN0IGFuZCByZWdpc3RlciB3aXRoIE5GQyBTdWJzeXN0ZW0gKi9cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MTE2MDpcdHN0OTVjb250ZXh0LVx1MDAzZWRkZXYgPSBuZmNfZGlnaXRhbF9hbGxvY2F0ZV9kZXZpY2UoXHUwMDI2c3Q5NWhmX25mY19kaWdpdGFsX29wcyxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTE2MS1cdFx0XHRcdFx0XHRcdFNUOTVIRl9TVVBQT1JURURfUFJPVCxcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTExNzAtXHRzdDk1Y29udGV4dC1cdTAwM2VuZmNkZXYgPSBzdDk1Y29udGV4dC1cdTAwM2VkZGV2LVx1MDAzZW5mY19kZXY7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjExNzE6XHRuZmNfZGlnaXRhbF9zZXRfcGFyZW50X2RldihzdDk1Y29udGV4dC1cdTAwM2VkZGV2LCBcdTAwMjZuZmNfc3BpX2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMTcyLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMTczOlx0cmV0ID0gIG5mY19kaWdpdGFsX3JlZ2lzdGVyX2RldmljZShzdDk1Y29udGV4dC1cdTAwM2VkZGV2KTtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTE3NC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTExNzktXHQvKiBzdG9yZSBzdDk1Y29udGV4dCBpbiBuZmMgZGV2aWNlIG9iamVjdCAqL1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMTgwOlx0bmZjX2RpZ2l0YWxfc2V0X2RydmRhdGEoc3Q5NWNvbnRleHQtXHUwMDNlZGRldiwgc3Q5NWNvbnRleHQpO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMTgxLVxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTE4Ny1lcnJfZnJlZV9kaWdpdGFsX2RldmljZTpcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MTE4ODpcdG5mY19kaWdpdGFsX2ZyZWVfZGV2aWNlKHN0OTVjb250ZXh0LVx1MDAzZWRkZXYpO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMTg5LWVycl9kaXNhYmxlX3JlZ3VsYXRvcjpcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTExOTY9c3RhdGljIHZvaWQgc3Q5NWhmX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqbmZjX3NwaV9kZXYpXG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMjA3LVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMjA4Olx0bmZjX2RpZ2l0YWxfdW5yZWdpc3Rlcl9kZXZpY2Uoc3Rjb250ZXh0LVx1MDAzZWRkZXYpO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMjA5Olx0bmZjX2RpZ2l0YWxfZnJlZV9kZXZpY2Uoc3Rjb250ZXh0LVx1MDAzZWRkZXYpO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMjEwLVx0c3Rjb250ZXh0LVx1MDAzZW5mY2Rldl9mcmVlID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTQzMD1zdHJ1Y3QgdHJmNzk3MGEge1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDM1LVx0c3RydWN0IHJlZ3VsYXRvclx0XHQqdmRkaW9fcmVndWxhdG9yO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0MzY6XHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2XHRcdCpkZGV2O1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MzctXHR1MzJcdFx0XHRcdHF1aXJrcztcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ0MS1cdHN0cnVjdCBza19idWZmXHRcdFx0KnJ4X3NrYjtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDQyOlx0bmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3RcdGNiO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00NDMtXHR2b2lkXHRcdFx0XHQqY2JfYXJnO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTE0Nz1zdGF0aWMgaW50IHRyZjc5NzBhX3N3aXRjaF9yZl9vbihzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNzEtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExNzI6c3RhdGljIGludCB0cmY3OTcwYV9zd2l0Y2hfcmYoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgYm9vbCBvbilcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE3My17XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExNzQ6XHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTc1LVx0aW50IHJldCA9IDA7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0xMzEyPXN0YXRpYyBpbnQgdHJmNzk3MGFfaW5fY29uZmlnX2ZyYW1pbmcoc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCBmcmFtaW5nKVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM4Ni1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM4NzpzdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgdHlwZSxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM4OC1cdFx0XHRcdCAgICBpbnQgcGFyYW0pXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzODkte1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzkwOlx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM5MS1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0xNDM5PXN0YXRpYyBpbnQgdHJmNzk3MGFfcGVyX2NtZF9jb25maWcoc3RydWN0IHRyZjc5NzBhICp0cmYsXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTA3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTA4OnN0YXRpYyBpbnQgdHJmNzk3MGFfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUwOS1cdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTEwOlx0XHRcdCAgICAgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUxMS17XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1MTI6XHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTEzLVx0dTggcHJlZml4WzVdO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTY3MD1zdGF0aWMgaW50IHRyZjc5NzBhX3RnX2NvbmZpZ19mcmFtaW5nKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgZnJhbWluZylcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3MjgtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE3Mjk6c3RhdGljIGludCB0cmY3OTcwYV90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3MzAtXHRcdFx0XHQgICAgaW50IHBhcmFtKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNzMxLXtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTczMjpcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3MzMtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTc2NC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTc2NTpzdGF0aWMgaW50IF90cmY3OTcwYV90Z19saXN0ZW4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTE2IHRpbWVvdXQsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE3NjY6XHRcdFx0ICAgICAgIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLCB2b2lkICphcmcsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3NjctXHRcdFx0ICAgICAgIGJvb2wgbW9kZV9kZXRlY3QpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3Njgte1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNzY5Olx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTc3MC1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODQzLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODQ0OnN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfbGlzdGVuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHUxNiB0aW1lb3V0LFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODQ1Olx0XHRcdCAgICAgIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLCB2b2lkICphcmcpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4NDYte1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODQ3Olx0Y29uc3Qgc3RydWN0IHRyZjc5NzBhICp0cmYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTg0OC1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4NTQtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE4NTU6c3RhdGljIGludCB0cmY3OTcwYV90Z19saXN0ZW5fbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTg1NjpcdFx0XHRcdCB1MTYgdGltZW91dCwgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4NTctXHRcdFx0XHQgdm9pZCAqYXJnKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODU4LXtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTg1OTpcdGNvbnN0IHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4NjAtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTg3Ny1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTg3ODpzdGF0aWMgaW50IHRyZjc5NzBhX3RnX2dldF9yZl90ZWNoKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4ICpyZl90ZWNoKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODc5LXtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTg4MDpcdGNvbnN0IHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4ODEtXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODg5LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODkwOnN0YXRpYyB2b2lkIHRyZjc5NzBhX2Fib3J0X2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODkxLXtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTg5MjpcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4OTMtXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xOTE2LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxOTE3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZjX2RpZ2l0YWxfb3BzIHRyZjc5NzBhX25mY19vcHMgPSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE5MTgtXHQuaW5fY29uZmlndXJlX2h3XHQ9IHRyZjc5NzBhX2luX2NvbmZpZ3VyZV9odyxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTIwNDU9c3RhdGljIGludCB0cmY3OTcwYV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjE3My1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MjE3NDpcdHRyZi1cdTAwM2VkZGV2ID0gbmZjX2RpZ2l0YWxfYWxsb2NhdGVfZGV2aWNlKFx1MDAyNnRyZjc5NzBhX25mY19vcHMsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTIxNzUtXHRcdFx0XHRcdFx0VFJGNzk3MEFfU1VQUE9SVEVEX1BST1RPQ09MUyxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTIxODQtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjIxODU6XHRuZmNfZGlnaXRhbF9zZXRfcGFyZW50X2Rldih0cmYtXHUwMDNlZGRldiwgdHJmLVx1MDAzZWRldik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjIxODY6XHRuZmNfZGlnaXRhbF9zZXRfZHJ2ZGF0YSh0cmYtXHUwMDNlZGRldiwgdHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjE4Ny1cdHNwaV9zZXRfZHJ2ZGF0YShzcGksIHRyZik7XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MzcyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiBORkMgRHJpdmVyIExhbmRzY2FwZSoqCgpPa2F5LCBoZXJlJiMzOTtzIHdoYXQmIzM5O3MgZ29pbmcgb24uIEkmIzM5O20gbG9va2luZyBhdCBgcG9ydDEwMC5jYCDigJMgYWgsIHJpZ2h0LCB0aGF0JiMzOTtzIGEgVVNCIGRyaXZlciwgc3BlY2lmaWNhbGx5IGxvY2F0ZWQgaW4gdGhlIGBkcml2ZXJzL25mY2AgZGlyZWN0b3J5LiBTZWVtcyBsaWtlIHRoZSBVU0IgTkZDIGRyaXZlci4gSW50ZXJlc3RpbmchIEFuZCB0aGVuIHRoZXJlJiMzOTtzIGBkcml2ZXJzL25mYy9uZmNzaW0uY2AsIHdoaWNoLCBiYXNlZCBvbiB0aGUgbmFtZSwgbXVzdCBiZSBhIHZpcnR1YWwgb3Igc2ltdWxhdGVkIE5GQyBkcml2ZXIuIFRoaXMgaXMgaGVscGZ1bCB0byBrbm93LiBJJiMzOTt2ZSBiZWVuIG1lYW5pbmcgdG8gZGl2ZSBkZWVwZXIgaW50byB0aGUgTkZDIGxhbmRzY2FwZSBpbiB0aGUga2VybmVsLgoKTm93LCBjb25zaWRlcmluZyB0aGUgY2FwYWJpbGl0aWVzIG9mIHN5emthbGxlciwgaXQgc3VwcG9ydHMgVVNCIGZ1enppbmcsIHNwZWNpZmljYWxseSB1dGlsaXppbmcgUmF3IEdhZGdldCBvciBVU0IgZW11bGF0aW9uLiBUaGlzIGlzIHBlcmZlY3QhIFRoYXQgbWVhbnMgaXQgY2FuIHBvdGVudGlhbGx5IGVtdWxhdGUgdGhlIGBwb3J0MTAwYCBVU0IgZGV2aWNlLCBvciBldmVuIHRoZSBgbmZjc2ltYCB2aXJ0dWFsIGRldmljZS4gSXQgY2FuIGFsc28gbGlrZWx5IGludGVyYWN0IHdpdGggTkZDIG5ldGxpbmsgLyBzb2NrZXRzIChgQUZfTkZDYCksIHdoaWNoIGlzIGFub3RoZXIgYXZlbnVlIHRvIGV4cGxvcmUuCgpSaWdodCwgdGltZSB0byBkaWcgZGVlcGVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb24gY2FsbHMsIHNvIGxldCYjMzk7cyBzdGFydCBieSBjaGVja2luZyBob3cgYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYCBpcyBhY3R1YWxseSBpbnZva2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9kaWdpdGFsX2RlcC5jPTEwNj1zdGF0aWMgdm9pZCBkaWdpdGFsX2luX3JlY3ZfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3LVx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDg6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwOS1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTk3OD1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hY2soc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAxMi1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDEzOlx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHNrYiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAxNC1cdFx0XHRcdCBkYXRhX2V4Y2gpO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDI0PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUxLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNTI6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUzLVx0XHRcdFx0IE5VTEwpO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDYwPXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDY5LVx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIGRkZXYtXHUwMDNlc2F2ZWRfc2tiLCAxNTAwLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNzA6XHRcdFx0XHQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsIE5VTEwpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNzEtXHRpZiAocmMpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNzYtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA3NzpzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3OC1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTI5Nz1pbnQgZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMzMS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzMyOlx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHRtcF9za2IsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMzMtXHRcdFx0XHQgTlVMTCk7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEzNDg9c3RhdGljIHZvaWQgZGlnaXRhbF90Z19zZW5kX3BzbF9yZXNfY29tcGxldGUoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM1OS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzYwOlx0ZGlnaXRhbF90Z19saXN0ZW4oZGRldiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsIE5VTEwpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNjEtXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTE0Njc9c3RhdGljIHZvaWQgZGlnaXRhbF90Z19zZW5kX2F0cl9yZXNfY29tcGxldGUoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ4NS1cdGVsc2Vcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNDg2Olx0XHRkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0ODctfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTc5MwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDU4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERFUF9SRVEgRnJhbWUgSGFuZGxpbmcgaW4gRGlnaXRhbCBORkMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgZm9jdXMgaXMgb24gYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYCwgd2hpY2ggaGFuZGxlcyB0aGUgaW5jb21pbmcgREVQX1JFUSBmcmFtZXMgaW4gdGFyZ2V0IG1vZGUgd2l0aGluIGBkaWdpdGFsX2RlcC5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBzcGVjaWZpYyBjaGFuZ2UuIEZpcnN0LCBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb21taXQgaXRzZWxmIHRvIGdyYXNwIHRoZSBidWcgdGhhdCYjMzk7cyBiZWluZyBmaXhlZCBvciB0aGUgY2hhbmdlIGludHJvZHVjZWQuIEkgY291bGQgdXNlIGBnaXQgbG9nYCBpZiBuZWNlc3NhcnksIG9yIHNpbXBseSBleGFtaW5lIHRoZSBjb21taXQgbWVzc2FnZSBhbmQgdGhlIGRpZmYgZGlyZWN0bHkuCgpUaGUgcHJvdmlkZWQgZGlmZiBnaXZlcyBtZSB0aGUgbWVhdCBvZiB0aGUgY2hhbmdlLiBJdCBzZWVtcyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIERldmljZSBJRCAoRElEKSBoYW5kbGluZyB3aXRoaW4gdGhlIERFUF9SRVEgZnJhbWUuIEluaXRpYWxseSwgdGhlIGNvZGUgaGFkIGEgY29uZGl0aW9uYWwgY2hlY2sgZm9yIHRoZSBESUQgYml0IGJlaW5nIHNldCBpbiB0aGUgUHJvdG9jb2wgRm9ybWF0IEJ5dGUgKFBGQikuIElmIHRoZSBESUQgYml0IHdhcyBzZXQsIGFuZCB0aGUgYGRkZXYtJmd0O2RpZGAgd2FzIHZhbGlkLCBpdCBwZXJmb3JtZWQgYSBjaGVjayBvbiB0aGUgaW5jb21pbmcgZGF0YS4gVGhlIG9yaWdpbmFsIGNoZWNrIHdhcyBmbGF3ZWQuIFRoZSB1cGRhdGVkIHZlcnNpb24gbm93IGV4cGxpY2l0bHkgY2hlY2tzIHRoYXQgdGhlIHJlc3BvbnNlIGxlbmd0aCAoYHJlc3AtJmd0O2xlbmApIGlzIHN1ZmZpY2llbnQgdG8gaW5jbHVkZSB0aGUgRElEIGJ5dGUuIEl0IGFsc28gZW5zdXJlcyB0aGF0IHRoZSBgZGRldi0mZ3Q7ZGlkYCBpcyB2YWxpZCBhbmQgdGhhdCB0aGUgaW5jb21pbmcgRElEIG1hdGNoZXMgdGhlIGV4cGVjdGVkIHZhbHVlLCBlZmZlY3RpdmVseSBpbXByb3ZpbmcgdGhlIHJvYnVzdG5lc3Mgb2YgdGhlIERJRCB2YWxpZGF0aW9uLiBUaGlzIGFwcGVhcnMgdG8gYmUgYSBjcnVjaWFsIGZpeCBmb3IgZW5zdXJpbmcgY29ycmVjdCBESUQgcHJvY2Vzc2luZy4KCk5vdywgSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGdyYXNwIHRoZSBjb250ZXh0IG9mIHRoaXMgY2hhbmdlIHdpdGhpbiBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgLiBJIGNhbiBzZWUgdGhlIGNvZGUgc3RhcnRzIGJ5IGNoZWNraW5nIHRoZSBiYXNpYyBmcmFtZSBzdHJ1Y3R1cmUg4oCTIHNpemUsIGRpcmVjdGlvbiwgYW5kIGNvbW1hbmQuIFRoZW4sIGl0IHByb2NlZWRzIHRvIGV2YWx1YXRlIHRoZSBQRkIsIGFuZCB0aGUgRElEIGNoZWNrIGlzIGRvbmUgaWYgdGhlIGJpdCBpcyBzZXQgaW4gdGhlIFBGQi4gSXQgY2FsY3VsYXRlcyB0aGUgYHNpemVgIG9mIHRoZSBzdHJ1Y3R1cmUuIEkgc2hvdWxkIGNoZWNrIHdoYXQgYHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcylgIGFjdHVhbGx5IGlzLiBJJiMzOTtsbCBuZWVkIHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb2YgdGhhdCBzdHJ1Y3R1cmUgdG8gZnVsbHkgdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGdvaW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9kaWdpdGFsX2RlcC5jPTk0PXN0cnVjdCBkaWdpdGFsX3BzbF9yZXMge1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05OS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDA6c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMge1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMS1cdHU4IGRpcjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MjAwPWRpZ2l0YWxfc2VuZF9kZXBfZGF0YV9wcmVwKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MjAxOlx0XHRcdCAgIHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxX3Jlcyxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0yMDItXHRcdFx0ICAgc3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2gpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTUyOT1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9hY2soc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTMxLXtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1MzI6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01MzMtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01MzktXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTQwOlx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NDEtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTQyOlx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU0My1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTY2PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX25hY2soc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTY4LXtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1Njk6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzAtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzYtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTc3Olx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzgtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTc5Olx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU4MC1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTk4PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MDAte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYwMTpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYwMi1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYwOC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MDk6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYxMC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MTE6XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjEyLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz02Mjk9c3RhdGljIGludCBkaWdpdGFsX2luX3NlbmRfcnRveChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MzEte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYzMjpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYzMy1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTY0Ni1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2NDc6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTY0OC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2NDk6XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjUwLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz02ODY9c3RhdGljIHZvaWQgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02ODktXHRzdHJ1Y3QgZGlnaXRhbF9kYXRhX2V4Y2ggKmRhdGFfZXhjaCA9IGFyZztcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2OTA6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3Jlcztcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02OTEtXHR1OCBwZmI7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTc1NS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo3NTY6XHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo3NTc6XHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopcmVzcC1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTc1OC1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTA0PWludCBkaWdpdGFsX2luX3NlbmRfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05MDcte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjkwODpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkwOS1cdHN0cnVjdCBza19idWZmICpjaGFpbmluZ19za2IsICp0bXBfc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05MTEtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTEyOlx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05MTMtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTE0Olx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxNS1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTc4PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2FjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODAte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk4MTpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk4Mi1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk4OC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5ODk6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk5MC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5OTE6XHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTkyLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDI0PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMjUte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMjY6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3Jlcztcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDI3LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAzMy1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDM0Olx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDM1LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMzY6XHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAzNy1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTA3Nz1zdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwODAtXHRpbnQgcmM7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA4MTpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwODItXHR1OCBwZmI7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExMDctXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTEwODpcdHNpemUgPSBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjExMDk6XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopcmVzcC1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExMTAtXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEyOTc9aW50IGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTI5OC17XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTI5OTpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMDAtXHRzdHJ1Y3Qgc2tfYnVmZiAqY2hhaW5pbmdfc2tiLCAqdG1wX3NrYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwMi1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzAzOlx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzA0LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzMDU6XHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMzNzgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgYGRpZ2l0YWxfZGVwX3JlcV9yZXNgIFN0cnVjdCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXNgIGRlZmluaXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRvIHF1aWNrbHkgYXNzZXNzIGl0cyBwdXJwb3NlLiBJJiMzOTttIGV4cGVjdGluZyB0aGlzIHRvIGxpa2VseSBlbmNhcHN1bGF0ZSB0aGUgZGF0YSBleGNoYW5nZWQgZHVyaW5nIGEgZGlnaXRhbCBkZXBvc2l0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIGN5Y2xlLCBtYXliZSBmb3IgZmluYW5jaWFsIHRyYW5zYWN0aW9ucywgQVBJIGNhbGxzLCBvciBzaW1pbGFyLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBrZXkgZmllbGRzIHRoYXQgcHJvdmlkZSBjbHVlcyBhYm91dCB0aGUgc3RydWN0dXJlLiBJJiMzOTtsbCBtZW50YWxseSBtYXAgb3V0LCBiYXNlZCBvbiBpbmR1c3RyeSBzdGFuZGFyZHMsIHdoYXQgZXNzZW50aWFsIGNvbXBvbmVudHMgYXJlIGxpa2VseSB0byBiZSBwcmVzZW50OiBpZGVudGlmaWVycywgdGltZXN0YW1wcywgcmVxdWVzdCBkYXRhLCByZXNwb25zZSBjb2RlcywgYW55IHRyYW5zYWN0aW9uIGRldGFpbHMsIHBvdGVudGlhbGx5IGVycm9yIG1lc3NhZ2VzIGlmIHRoZSByZXNwb25zZSByZXByZXNlbnRzIGZhaWx1cmUsIGFuZCBwZXJoYXBzIGV2ZW4gc2VjdXJpdHktcmVsYXRlZCBmaWVsZHMgbGlrZSBzaWduYXR1cmVzIG9yIGhhc2hlcy4gSSYjMzk7bGwgbmVlZCB0byByYXBpZGx5IGludGVycHJldCB0aGUgc3RydWN0dXJlIGFuZCBob3cgaXQgcmVsYXRlcyB0byBicm9hZGVyIHN5c3RlbXMgSSBhbSBmYW1pbGlhciB3aXRoLiBNeSBwcmltYXJ5IGNvbnNpZGVyYXRpb25zIHdpbGwgaW52b2x2ZSBwb3RlbnRpYWwgYXJlYXMgZm9yIG9wdGltaXphdGlvbiwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLCBvciBwb3NzaWJsZSBpbmVmZmljaWVuY2llcy4gTXkgc2Vjb25kYXJ5IGNvbnNpZGVyYXRpb25zIHdpbGwgbG9vayBpbnRvIGRhdGEgdHlwZSB1c2FnZSwgcGFkZGluZywgYW5kIGFsaWdubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmZjL2RpZ2l0YWxfZGVwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5OCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDk4Olx0fSBfX3BhY2tlZDtcbiAgOTk6XHRcbiAxMDA6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyB7XG4gMTAxOlx0XHR1OCBkaXI7XG4gMTAyOlx0XHR1OCBjbWQ7XG4gMTAzOlx0XHR1OCBwZmI7XG4gMTA0Olx0fSBfX3BhY2tlZDtcbiAxMDU6XHRcbiAxMDY6XHRzdGF0aWMgdm9pZCBkaWdpdGFsX2luX3JlY3ZfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG4gMTA3Olx0XHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzc5OQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzYCBmb3IgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdGllcyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzYC4gSSBzZWUgYGRpcmAgKDEgYnl0ZSksIGBjbWRgICgxIGJ5dGUpLCBhbmQgYHBmYmAgKDEgYnl0ZSkuIFRoYXQgc3VtcyB1cCB0byBhIHNpemUgb2YgMyBieXRlcywgZ290IGl0LiBOb3csIGxldCYjMzk7cyByZXdpbmQgYW5kIGxvb2sgYXQgdGhlIGNvZGUgKmJlZm9yZSogdGhpcyBjb21taXQsIHNwZWNpZmljYWxseSB0aGlzIGxpbmU6IGBpZiAoZGRldi0mZ3Q7ZGlkICZhbXA7JmFtcDsgKGRkZXYtJmd0O2RpZCA9PSByZXNwLSZndDtkYXRhWzNdKSlgLiBIbW0uLi4gdGhhdCBgcmVzcC0mZ3Q7ZGF0YVszXWAgaXMgbWFraW5nIG1lIHR3aXRjaC4gSWYgYHJlc3AtJmd0O2xlbmAgaGFwcGVucyB0byBiZSBleGFjdGx5IDMsIHdlJiMzOTtyZSBzdGFyaW5nIGF0IGFuIG91dC1vZi1ib3VuZHMgcmVhZCByaWdodCBpbiB0aGUgZmFjZS4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgbWlzdGFrZSEKCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcsIEkgbmVlZCB0byBjaGVjayBob3cgYGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzYCBoYW5kbGVzIHRoaXMgdG9vLiBPa2F5LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgbGluZXMgNzUwLTc4MCwganVzdCB0byBjb25maXJtIHRoYXQgdGhpcyBpcyBub3QgYW4gaXNzdWUgdGhlcmUgYXMgd2VsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmZjL2RpZ2l0YWxfZGVwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3NTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDc1MDpcdFxuIDc1MTpcdFx0aWYgKHJlc3AtXHUwMDNlbGVuIFx1MDAzZSBkZGV2LVx1MDAzZWxvY2FsX3BheWxvYWRfbWF4KSB7XG4gNzUyOlx0XHRcdHJjID0gLUVNU0dTSVpFO1xuIDc1MzpcdFx0XHRnb3RvIGV4aXQ7XG4gNzU0Olx0XHR9XG4gNzU1Olx0XG4gNzU2Olx0XHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcbiA3NTc6XHRcdGRlcF9yZXMgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilyZXNwLVx1MDAzZWRhdGE7XG4gNzU4Olx0XG4gNzU5Olx0XHRpZiAocmVzcC1cdTAwM2VsZW4gXHUwMDNjIHNpemUgfHwgZGVwX3Jlcy1cdTAwM2VkaXIgIT0gRElHSVRBTF9ORkNfREVQX0ZSQU1FX0RJUl9JTiB8fFxuIDc2MDpcdFx0ICAgIGRlcF9yZXMtXHUwMDNlY21kICE9IERJR0lUQUxfQ01EX0RFUF9SRVMpIHtcbiA3NjE6XHRcdFx0cmMgPSAtRUlPO1xuIDc2MjpcdFx0XHRnb3RvIGVycm9yO1xuIDc2MzpcdFx0fVxuIDc2NDpcdFxuIDc2NTpcdFx0cGZiID0gZGVwX3Jlcy1cdTAwM2VwZmI7XG4gNzY2Olx0XG4gNzY3Olx0XHRpZiAoRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikpIHtcbiA3Njg6XHRcdFx0UFJPVE9DT0xfRVJSKFwmIzM0OzE0LjguMi4xXCYjMzQ7KTtcbiA3Njk6XHRcdFx0cmMgPSAtRUlPO1xuIDc3MDpcdFx0XHRnb3RvIGVycm9yO1xuIDc3MTpcdFx0fVxuIDc3MjpcdFxuIDc3MzpcdFx0aWYgKERJR0lUQUxfTkZDX0RFUF9OQURfQklUX1NFVChwZmIpKSB7XG4gNzc0Olx0XHRcdHJjID0gLUVJTztcbiA3NzU6XHRcdFx0Z290byBleGl0O1xuIDc3NjpcdFx0fVxuIDc3NzpcdFxuIDc3ODpcdFx0aWYgKHNpemUgXHUwMDNlIHJlc3AtXHUwMDNlbGVuKSB7XG4gNzc5Olx0XHRcdHJjID0gLUVJTztcbiA3ODA6XHRcdFx0Z290byBlcnJvcjtcbiA3ODE6XHRcdH1cbiA3ODI6XHRcbiA3ODM6XHRcdHNrYl9wdWxsKHJlc3AsIHNpemUpO1xuIDc4NDpcdFxuIDc4NTpcdFx0c3dpdGNoIChESUdJVEFMX05GQ19ERVBfUEZCX1RZUEUocGZiKSkge1xuIDc4NjpcdFx0Y2FzZSBESUdJVEFMX05GQ19ERVBfUEZCX0lfUERVOlxuIDc4NzpcdFx0XHRpZiAoRElHSVRBTF9ORkNfREVQX1BGQl9QTkkocGZiKSAhPSBkZGV2LVx1MDAzZWN1cnJfbmZjX2RlcF9wbmkpIHtcbiA3ODg6XHRcdFx0XHRQUk9UT0NPTF9FUlIoXCYjMzQ7MTQuMTIuMy4zXCYjMzQ7KTtcbiA3ODk6XHRcdFx0XHRyYyA9IC1FSU87XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0Nzk5CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBORkMgREVQIEZyYW1lIFByb2Nlc3NpbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgIGZ1bmN0aW9uIGluIGBuZXQvbmZjL2RpZ2l0YWxfZGVwLmNgLiBUaGlzIHNuaXBwZXQgaXMgaW50ZXJlc3Rpbmc7IGl0JiMzOTtzIHRoZSBjb3JlIG9mIGhvdyBEaWdpdGFsIFRhcmdldCBtb2RlIHJlcXVlc3RzIGFyZSBoYW5kbGVkLiBUaGUgY29kZSBjaGVja3MgYSBjb3VwbGUgb2Yga2V5IGNvbmRpdGlvbnMgYmFzZWQgb24gdGhlIFByb3RvY29sIEZyYW1lIEJpdCAoUEZCKToKCklmIHRoZSBEaWdpdGFsIElkZW50aWZpY2F0aW9uIChESUQpIGJpdCBpcyBzZXQgaW4gdGhlIFBGQiwgdGhlbiBpdCBtYWtlcyBjZXJ0YWluIGFzc2VydGlvbnMgYWJvdXQgdGhlIGluY29taW5nIHJlc3BvbnNlIGRhdGEuIFNwZWNpZmljYWxseSwgaXQgdmVyaWZpZXMgdGhhdCB0aGUgcmVzcG9uc2UgbGVuZ3RoIGlzIHN1ZmZpY2llbnQgdG8gaW5jbHVkZSB0aGUgRElELCB0aGUgZGV2aWNlIGhhcyBhIHZhbGlkIERJRCwgYW5kIHRoZSByZXNwb25zZSBESUQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgRElELiBBbiBgRUlPYCBlcnJvciBpcyByZXR1cm5lZCBhbmQgZXhlY3V0aW9uIGp1bXBzIHRvIHRoZSBgZXhpdGAgbGFiZWwgaWYgdGhlc2UgY2hlY2tzIGZhaWwuIElmIHRoZSBESUQgYml0IGlzIG5vdCBzZXQsIGJ1dCB0aGUgZGV2aWNlICpkb2VzKiBoYXZlIGEgRElEIGFzc2lnbmVkLCBpdCYjMzk7cyBhbHNvIGNvbnNpZGVyZWQgYW4gZXJyb3IsIGFuZCBgRUlPYCBpcyByZXR1cm5lZC4KCk5vdywgbGV0JiMzOTtzIGZpZ3VyZSBvdXQgKndoZXJlKiB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5IGdldHMgY2FsbGVkLiBUaW1lIHRvIHRyYWNlIHRoZSBjYWxsZXJzOiBMb29rcyBsaWtlIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgaXMgdXNlZCBpbiBtdWx0aXBsZSBzY2VuYXJpb3M6IEl0JiMzOTtzIHRoZSBjYWxsYmFjayBmb3Igc2VuZGluZyBhbiBBQ0sgKGBkaWdpdGFsX3RnX3NlbmRfYWNrYCksIHNlbmRpbmcgYW4gQVROIChgZGlnaXRhbF90Z19zZW5kX2F0bmApLCBzZW5kaW5nIGEgc2F2ZWQgU0tCIChgZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYmApLCBhbmQgc2VuZGluZyBhIERFUCByZXNwb25zZSAoYGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzYCkuIEludHJpZ3VpbmdseSwgaXQmIzM5O3MgYWxzbyBjYWxsZWQgdmlhIGBkaWdpdGFsX3RnX2xpc3RlbmAgaW4gYGRpZ2l0YWxfdGdfc2VuZF9wc2xfcmVzX2NvbXBsZXRlYCwgYW5kIGRpcmVjdGx5IGluIGBkaWdpdGFsX3RnX3NlbmRfYXRyX3Jlc19jb21wbGV0ZWAuCgpUbyBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29kZSBmbG93IGFuZCB1c2UgY2FzZXMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgdGFyZ2V0IG1vZGUgaXMgZW50ZXJlZCBvciBob3cgdGhlIE5GQyBkaWdpdGFsIGRldmljZSAoYGRkZXZgKSBpcyB1c2VkLiBJJiMzOTtsbCBzZWFyY2ggZm9yIG9jY3VycmVuY2VzIG9mIGBkaWdpdGFsX3RnX2Agd2l0aGluIHJlbGV2YW50IGZpbGVzLCBzcGVjaWZpY2FsbHkgYG5ldC9uZmMvZGlnaXRhbF8qLmNgIGFuZCBgbmV0L25mYy9kaWdpdGFsX2NvcmUuY2AsIHRvIGJ1aWxkIGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZSBmdW5jdGlvbiYjMzk7cyBicm9hZGVyIGNvbnRleHQgYW5kIGlkZW50aWZ5IHRoZSBwb3NzaWJsZSBlbnRyeSBwb2ludHMgZm9yIHRoZXNlIG9wZXJhdGlvbnMuIFRoaXMgd2lsbCBoZWxwIGRldGVybWluZSB0aGUgcG9zc2libGUgc3RhdGVzIHRoYXQgbmVlZCB0byBiZSBjb25zaWRlcmVkIHdoZW4gZGVidWdnaW5nIHRoaXMgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RpZ2l0YWxfdGdfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2RpZ2l0YWwuaD00OD1pbnQgZGlnaXRhbF9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCBjbWRfdHlwZSxcbm5ldC9uZmMvZGlnaXRhbC5oOjQ5Olx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBkaWdpdGFsX3RnX21kYWFfcGFyYW1zICpwYXJhbXMsXG5uZXQvbmZjL2RpZ2l0YWwuaC01MC1cdFx0ICAgICB1MTYgdGltZW91dCwgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY21kX2NiLFxuLS1cbm5ldC9uZmMvZGlnaXRhbC5oPTgzPWludCBkaWdpdGFsX2luX3NlbmRfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbC5oLTg2LVxubmV0L25mYy9kaWdpdGFsLmg6ODc6aW50IGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLCBpbnQgcGFyYW0pO1xubmV0L25mYy9kaWdpdGFsLmg6ODg6c3RhdGljIGlubGluZSBpbnQgZGlnaXRhbF90Z19zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxubmV0L25mYy9kaWdpdGFsLmgtODktXHRcdFx0c3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHRpbWVvdXQsXG4tLVxubmV0L25mYy9kaWdpdGFsLmgtOTUtXG5uZXQvbmZjL2RpZ2l0YWwuaDo5Njp2b2lkIGRpZ2l0YWxfdGdfcmVjdl9zZW5zX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWwuaC05Ny1cdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XG5uZXQvbmZjL2RpZ2l0YWwuaC05OC1cbm5ldC9uZmMvZGlnaXRhbC5oOjk5OnZvaWQgZGlnaXRhbF90Z19yZWN2X3NlbnNmX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWwuaC0xMDAtXHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcbm5ldC9uZmMvZGlnaXRhbC5oLTEwMS1cbm5ldC9uZmMvZGlnaXRhbC5oOjEwMjpzdGF0aWMgaW5saW5lIGludCBkaWdpdGFsX3RnX2xpc3RlbihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1MTYgdGltZW91dCxcbm5ldC9uZmMvZGlnaXRhbC5oLTEwMy1cdFx0XHRcdCAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxuLS1cbm5ldC9uZmMvZGlnaXRhbC5oLTEwOC1cbm5ldC9uZmMvZGlnaXRhbC5oOjEwOTp2b2lkIGRpZ2l0YWxfdGdfcmVjdl9hdHJfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbm5ldC9uZmMvZGlnaXRhbC5oLTExMC1cdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcbm5ldC9uZmMvZGlnaXRhbC5oLTExMS1cbm5ldC9uZmMvZGlnaXRhbC5oOjExMjppbnQgZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5uZXQvbmZjL2RpZ2l0YWwuaC0xMTMtXG5uZXQvbmZjL2RpZ2l0YWwuaDoxMTQ6aW50IGRpZ2l0YWxfdGdfbGlzdGVuX25mY2Eoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmZfdGVjaCk7XG5uZXQvbmZjL2RpZ2l0YWwuaDoxMTU6aW50IGRpZ2l0YWxfdGdfbGlzdGVuX25mY2Yoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmZfdGVjaCk7XG5uZXQvbmZjL2RpZ2l0YWwuaDoxMTY6dm9pZCBkaWdpdGFsX3RnX3JlY3ZfbWRfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbm5ldC9uZmMvZGlnaXRhbC5oLTExNy1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM9Mjc9c3RydWN0IGRpZ2l0YWxfY21kIHtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTM1LVx0c3RydWN0IHNrX2J1ZmYgKnJlc3A7XG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjM2Olx0c3RydWN0IGRpZ2l0YWxfdGdfbWRhYV9wYXJhbXMgKm1kYWFfcGFyYW1zO1xubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0zNy1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTE1Mj1zdGF0aWMgdm9pZCBkaWdpdGFsX3dxX2NtZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0xNTUtXHRzdHJ1Y3QgZGlnaXRhbF9jbWQgKmNtZDtcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6MTU2Olx0c3RydWN0IGRpZ2l0YWxfdGdfbWRhYV9wYXJhbXMgKnBhcmFtcztcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMTU3LVx0c3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiA9IGNvbnRhaW5lcl9vZih3b3JrLFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM9MjI3PWludCBkaWdpdGFsX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IGNtZF90eXBlLFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzoyMjg6XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGRpZ2l0YWxfdGdfbWRhYV9wYXJhbXMgKnBhcmFtcyxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjI5LVx0XHQgICAgIHUxNiB0aW1lb3V0LCBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjbWRfY2IsXG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYz0yNTU9aW50IGRpZ2l0YWxfaW5fY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLCBpbnQgcGFyYW0pXG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0yNjUtXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjI2NjppbnQgZGlnaXRhbF90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsIGludCBwYXJhbSlcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjY3LXtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTI3Ni1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6Mjc3OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19saXN0ZW5fbWRhYShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZl90ZWNoKVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0yNzgte1xubmV0L25mYy9kaWdpdGFsX2NvcmUuYzoyNzk6XHRzdHJ1Y3QgZGlnaXRhbF90Z19tZGFhX3BhcmFtcyAqcGFyYW1zO1xubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0yODAtXHRpbnQgcmM7XG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0yOTUtXHRyYyA9IGRpZ2l0YWxfc2VuZF9jbWQoZGRldiwgRElHSVRBTF9DTURfVEdfTElTVEVOX01EQUEsIE5VTEwsIHBhcmFtcyxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6Mjk2Olx0XHRcdCAgICAgIDUwMCwgZGlnaXRhbF90Z19yZWN2X2F0cl9yZXEsIE5VTEwpO1xubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0yOTctXHRpZiAocmMpXG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0zMDItXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjMwMzpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfbGlzdGVuX21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmX3RlY2gpXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTMwNC17XG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTMwNS1cdHJldHVybiBkaWdpdGFsX3NlbmRfY21kKGRkZXYsIERJR0lUQUxfQ01EX1RHX0xJU1RFTl9NRCwgTlVMTCwgTlVMTCwgNTAwLFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzozMDY6XHRcdFx0XHRkaWdpdGFsX3RnX3JlY3ZfbWRfcmVxLCBOVUxMKTtcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMzA3LX1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTQ3Nj1zdGF0aWMgaW50IGRpZ2l0YWxfc3RhcnRfcG9sbChzdHJ1Y3QgbmZjX2RldiAqbmZjX2RldiwgX191MzIgaW1fcHJvdG9jb2xzLFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTI4LVx0XHRcdGRpZ2l0YWxfYWRkX3BvbGxfdGVjaChkZGV2LCAwLFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo1Mjk6XHRcdFx0XHRcdCAgICAgIGRpZ2l0YWxfdGdfbGlzdGVuX21kYWEpO1xubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01MzAtXHRcdH0gZWxzZSBpZiAoZGRldi1cdTAwM2VvcHMtXHUwMDNldGdfbGlzdGVuX21kKSB7XG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTUzMS1cdFx0XHRkaWdpdGFsX2FkZF9wb2xsX3RlY2goZGRldiwgMCxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6NTMyOlx0XHRcdFx0XHQgICAgICBkaWdpdGFsX3RnX2xpc3Rlbl9tZCk7XG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTUzMy1cdFx0fSBlbHNlIHtcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTM0LVx0XHRcdGRpZ2l0YWxfYWRkX3BvbGxfdGVjaChkZGV2LCBORkNfRElHSVRBTF9SRl9URUNIXzEwNkEsXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjUzNTpcdFx0XHRcdFx0ICAgICAgZGlnaXRhbF90Z19saXN0ZW5fbmZjYSk7XG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTUzNi1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTM3LVx0XHRcdGRpZ2l0YWxfYWRkX3BvbGxfdGVjaChkZGV2LCBORkNfRElHSVRBTF9SRl9URUNIXzIxMkYsXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjUzODpcdFx0XHRcdFx0ICAgICAgZGlnaXRhbF90Z19saXN0ZW5fbmZjZik7XG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTUzOS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTQwLVx0XHRcdGRpZ2l0YWxfYWRkX3BvbGxfdGVjaChkZGV2LCBORkNfRElHSVRBTF9SRl9URUNIXzQyNEYsXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjU0MTpcdFx0XHRcdFx0ICAgICAgZGlnaXRhbF90Z19saXN0ZW5fbmZjZik7XG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTU0Mi1cdFx0fVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM9NjQxPXN0YXRpYyB2b2lkIGRpZ2l0YWxfZGVhY3RpdmF0ZV90YXJnZXQoc3RydWN0IG5mY19kZXYgKm5mY19kZXYsXG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy02NTUtXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjY1NjpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZChzdHJ1Y3QgbmZjX2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy02NTcte1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNjU5LVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo2NjA6XHRyZXR1cm4gZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoZGRldiwgc2tiKTtcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNjYxLX1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTc0ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5mY19vcHMgZGlnaXRhbF9uZmNfb3BzID0ge1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNzUyLVx0LmRlYWN0aXZhdGVfdGFyZ2V0ID0gZGlnaXRhbF9kZWFjdGl2YXRlX3RhcmdldCxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6NzUzOlx0LnRtX3NlbmQgPSBkaWdpdGFsX3RnX3NlbmQsXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTc1NC1cdC5pbV90cmFuc2NlaXZlID0gZGlnaXRhbF9pbl9zZW5kLFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDY9c3RhdGljIHZvaWQgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNy1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA4OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDktXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz05MDQ9aW50IGRpZ2l0YWxfaW5fc2VuZF9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk1MC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5NTE6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19zZXRfcmZfdGVjaChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZl90ZWNoKVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk1Mi17XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk3Ny1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5Nzg6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTc5LVx0XHRcdCAgICAgICBzdHJ1Y3QgZGlnaXRhbF9kYXRhX2V4Y2ggKmRhdGFfZXhjaClcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAxMi1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDEzOlx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHNrYiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAxNC1cdFx0XHRcdCBkYXRhX2V4Y2gpO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDIzLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMjQ6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYXRuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAyNS17XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNTEtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA1MjpcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNTMtXHRcdFx0XHQgTlVMTCk7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNTktXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA2MDpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9zYXZlZF9za2Ioc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDYxLXtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA2OC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDY5Olx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIGRkZXYtXHUwMDNlc2F2ZWRfc2tiLCAxNTAwLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNzA6XHRcdFx0XHQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsIE5VTEwpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNzEtXHRpZiAocmMpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNzYtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA3NzpzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3OC1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTE1Ni1cdFx0XHQgKiB3aGljaCBpcyB0aGUgcHJldmlvdXMgREVQX1JFUyBzYXZlZCBpblxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjExNTc6XHRcdFx0ICogZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoKS5cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTU4LVx0XHRcdCAqL1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTYwLVx0XHRcdCAgRElHSVRBTF9ORkNfREVQX1BGQl9QTkkoZGRldi1cdTAwM2VjdXJyX25mY19kZXBfcG5pIC0gMSkpIHtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMTYxOlx0XHRcdFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfc2F2ZWRfc2tiKGRkZXYpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExNjItXHRcdFx0XHRpZiAocmMpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExODQtXHRcdHJlc3AgPSBkaWdpdGFsX3JlY3ZfZGVwX2RhdGFfZ2F0aGVyKGRkZXYsIHBmYiwgcmVzcCxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMTg1Olx0XHRcdFx0XHRcdCAgICBkaWdpdGFsX3RnX3NlbmRfYWNrLCBOVUxMKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTg2LVx0XHRpZiAoSVNfRVJSKHJlc3ApKSB7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyMTAtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTIxMTpcdFx0XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9zYXZlZF9za2IoZGRldik7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTIxMi1cdFx0XHRpZiAocmMpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyMzAtXHRcdFx0XHRcdFx0ZGRldi1cdTAwM2VjdXJyX25mY19kZXBfcG5pKSB7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTIzMTpcdFx0XHRcdHJjID0gZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYihkZGV2KTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjMyLVx0XHRcdFx0aWYgKHJjKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjU0LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEyNTU6XHRcdHJjID0gZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoZGRldiwgZGRldi1cdTAwM2VjaGFpbmluZ19za2IpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyNTYtXHRcdGlmIChyYylcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTI2NS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMjY2Olx0XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9hdG4oZGRldik7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTI2Ny1cdFx0aWYgKHJjKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjk2LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEyOTc6aW50IGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTI5OC17XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMzEtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTMzMjpcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCB0bXBfc2tiLCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzMzLVx0XHRcdFx0IE5VTEwpO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzQ3LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzNDg6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19zZW5kX3BzbF9yZXNfY29tcGxldGUoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzQ5LVx0XHRcdFx0XHQgICAgIHZvaWQgKmFyZywgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNTUtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTM1NjpcdGRpZ2l0YWxfdGdfc2V0X3JmX3RlY2goZGRldiwgcmZfdGVjaCk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM1Ny1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzU4Olx0ZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0gsIHJmX3RlY2gpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNTktXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTM2MDpcdGRpZ2l0YWxfdGdfbGlzdGVuKGRkZXYsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLCBOVUxMKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzYxLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzY0LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzNjU6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfcHNsX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCBkaWQsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM2Ni1cdFx0XHRcdCAgIHU4IHJmX3RlY2gpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzODktXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTM5MDpcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDAsIGRpZ2l0YWxfdGdfc2VuZF9wc2xfcmVzX2NvbXBsZXRlLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzOTEtXHRcdFx0XHQgKHZvaWQgKikodW5zaWduZWQgbG9uZylyZl90ZWNoKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM5Ny1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzk4OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9wc2xfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzk5LVx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDYwLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjE0NjE6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9wc2xfcmVzKGRkZXYsIHBzbF9yZXEtXHUwMDNlZGlkLCByZl90ZWNoKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDYyLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDY2LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjE0Njc6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19zZW5kX2F0cl9yZXNfY29tcGxldGUoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDY4LVx0XHRcdFx0XHQgICAgIHZvaWQgKmFyZywgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0ODMtXHRpZiAocmVzcC1cdTAwM2VkYXRhW29mZnNldF0gPT0gRElHSVRBTF9DTURfUFNMX1JFUSlcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNDg0Olx0XHRkaWdpdGFsX3RnX3JlY3ZfcHNsX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0ODUtXHRlbHNlXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTQ4NjpcdFx0ZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoZGRldiwgYXJnLCByZXNwKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg3LX1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg4LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjE0ODk6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYXRyX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0OTAtXHRcdFx0XHQgICBzdHJ1Y3QgZGlnaXRhbF9hdHJfcmVxICphdHJfcmVxKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNTMyLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjE1MzM6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCA5OTksXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTUzNDpcdFx0XHRcdCBkaWdpdGFsX3RnX3NlbmRfYXRyX3Jlc19jb21wbGV0ZSwgTlVMTCk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTUzNS1cdGlmIChyYylcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTU0MC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNTQxOnZvaWQgZGlnaXRhbF90Z19yZWN2X2F0cl9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE1NDItXHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTU2MS1cdFx0bWluX3NpemUgPSBESUdJVEFMX0FUUl9SRVFfTUlOX1NJWkUgJiM0MzsgMjtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNTYyOlx0XHRkaWdpdGFsX3RnX3NldF9yZl90ZWNoKGRkZXYsIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QSk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTU2My1cdH0gZWxzZSB7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTU2NC1cdFx0bWluX3NpemUgPSBESUdJVEFMX0FUUl9SRVFfTUlOX1NJWkUgJiM0MzsgMTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNTY1Olx0XHRkaWdpdGFsX3RnX3NldF9yZl90ZWNoKGRkZXYsIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMjEyRik7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTU2Ni1cdH1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTYwNS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNjA2Olx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORyxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNjA3LVx0XHRcdFx0ICAgICBORkNfRElHSVRBTF9GUkFNSU5HX05GQ19ERVBfQUNUSVZBVEVEKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTYxMC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNjExOlx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfYXRyX3JlcyhkZGV2LCBhdHJfcmVxKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNjEyLVx0aWYgKHJjKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM9ODk1PWludCBkaWdpdGFsX2luX3NlbmRfaXNvMTU2OTNfaW52X3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZl90ZWNoKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTM0LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzo5MzU6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfc2VsX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05MzYte1xuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTQ4LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzo5NDk6XHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KGRkZXYsIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HLFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05NTAtXHRcdFx0XHQgICAgIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9BTlRJQ09MX0NPTVBMRVRFKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTk1NS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6OTU2Olx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHNrYiwgMzAwLCBkaWdpdGFsX3RnX3JlY3ZfYXRyX3JlcSxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTU3LVx0XHRcdFx0IE5VTEwpO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTYzLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzo5NjQ6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X3NlbF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05NjUtXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05ODQtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjk4NTpcdHJjID0gZGlnaXRhbF90Z19zZW5kX3NlbF9yZXMoZGRldik7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTk4Ni1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTk5My1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6OTk0OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX3NkZF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTk1LXtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwMTMtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEwMTQ6XHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KGRkZXYsIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HLFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDE1LVx0XHRcdFx0TkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NUQU5EQVJEX1dJVEhfQ1JDX0EpO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTAyMC1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTAyMTpcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDMwMCwgZGlnaXRhbF90Z19yZWN2X3NlbF9yZXEsXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwMjItXHRcdFx0XHQgTlVMTCk7XG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDI4LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMDI5OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9zZGRfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTAzMC1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwNDgtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEwNDk6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9zZGRfcmVzKGRkZXYpO1xubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDUwLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA1Ny1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTA1ODpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9zZW5zX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDU5LXtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwNzItXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEwNzM6XHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KGRkZXYsIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HLFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDc0LVx0XHRcdFx0ICAgICBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkQpO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA3OS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTA4MDpcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDMwMCwgZGlnaXRhbF90Z19yZWN2X3NkZF9yZXEsXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwODEtXHRcdFx0XHQgTlVMTCk7XG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDg3LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMDg4OnZvaWQgZGlnaXRhbF90Z19yZWN2X3NlbnNfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA4OS1cdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExMDctXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjExMDg6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9zZW5zX3JlcyhkZGV2KTtcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTEwOS1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExMTYtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjExMTc6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2F0cl9vcl9zZW5zZl9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTExOC1cdFx0dm9pZCAqYXJnLCBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExMjEtXHRcdFx0KHJlc3AtXHUwMDNlZGF0YVsxXSA9PSBESUdJVEFMX0NNRF9TRU5TRl9SRVEpKVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMTIyOlx0XHRkaWdpdGFsX3RnX3JlY3Zfc2Vuc2ZfcmVxKGRkZXYsIGFyZywgcmVzcCk7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExMjMtXHRlbHNlXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjExMjQ6XHRcdGRpZ2l0YWxfdGdfcmVjdl9hdHJfcmVxKGRkZXYsIGFyZywgcmVzcCk7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExMjUtXG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTI4LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMTI5OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX3NlbnNmX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTMwLVx0XHRcdCAgICAgIHN0cnVjdCBkaWdpdGFsX3NlbnNmX3JlcSAqc2Vuc2ZfcmVxKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTE3Mi1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTE3MzpcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDMwMCxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTE3NDpcdFx0XHRcdCBkaWdpdGFsX3RnX3JlY3ZfYXRyX29yX3NlbnNmX3JlcSwgTlVMTCk7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExNzUtXHRpZiAocmMpXG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTgwLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMTgxOnZvaWQgZGlnaXRhbF90Z19yZWN2X3NlbnNmX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExODItXHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpyZXNwKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIxMy1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTIxNDpcdHJjID0gZGlnaXRhbF90Z19zZW5kX3NlbnNmX3JlcyhkZGV2LCBzZW5zZl9yZXEpO1xubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjE1LVxuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIyMi1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTIyMzpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfY29uZmlnX25mY2Eoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIyNC17XG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjI2LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjI3Olx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfUkZfVEVDSCxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIyOC1cdFx0XHRcdCAgICAgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMzEtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyMzI6XHRyZXR1cm4gZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkcsXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMzMtXHRcdFx0XHQgICAgICAgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX05GQ19ERVApO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIzNS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTIzNjppbnQgZGlnaXRhbF90Z19saXN0ZW5fbmZjYShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZl90ZWNoKVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjM3LXtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMzktXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyNDA6XHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlnX25mY2EoZGRldik7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNDEtXHRpZiAocmMpXG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjQzLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjQ0Olx0cmV0dXJuIGRpZ2l0YWxfdGdfbGlzdGVuKGRkZXYsIDMwMCwgZGlnaXRhbF90Z19yZWN2X3NlbnNfcmVxLCBOVUxMKTtcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI0NS19XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNDYtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyNDc6c3RhdGljIGludCBkaWdpdGFsX3RnX2NvbmZpZ19uZmNmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmX3RlY2gpXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNDgte1xuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI1MC1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI1MTpcdHJjID0gZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0gsIHJmX3RlY2gpO1xubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjUyLVx0aWYgKHJjKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI1NC1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI1NTpcdHJldHVybiBkaWdpdGFsX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORyxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI1Ni1cdFx0XHRcdCAgICAgICBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0ZfTkZDX0RFUCk7XG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjU4LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjU5OmludCBkaWdpdGFsX3RnX2xpc3Rlbl9uZmNmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmX3RlY2gpXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNjAte1xuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI2Mi1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI2MzpcdHJjID0gZGlnaXRhbF90Z19jb25maWdfbmZjZihkZGV2LCByZl90ZWNoKTtcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI2NC1cdGlmIChyYylcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNjYtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyNjc6XHRyZXR1cm4gZGlnaXRhbF90Z19saXN0ZW4oZGRldiwgMzAwLCBkaWdpdGFsX3RnX3JlY3Zfc2Vuc2ZfcmVxLCBOVUxMKTtcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI2OC19XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNjktXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyNzA6dm9pZCBkaWdpdGFsX3RnX3JlY3ZfbWRfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI3MS1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjg2LVx0Y2FzZSBORkNfRElHSVRBTF9SRl9URUNIXzEwNkE6XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyODc6XHRcdHJjID0gZGlnaXRhbF90Z19jb25maWdfbmZjYShkZGV2KTtcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI4OC1cdFx0aWYgKHJjKVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjg5LVx0XHRcdGdvdG8gZXhpdF9mcmVlX3NrYjtcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI5MDpcdFx0ZGlnaXRhbF90Z19yZWN2X3NlbnNfcmVxKGRkZXYsIGFyZywgcmVzcCk7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyOTEtXHRcdGJyZWFrO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI5My1cdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF80MjRGOlxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjk0Olx0XHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlnX25mY2YoZGRldiwgcmZfdGVjaCk7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyOTUtXHRcdGlmIChyYylcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI5Ni1cdFx0XHRnb3RvIGV4aXRfZnJlZV9za2I7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyOTc6XHRcdGRpZ2l0YWxfdGdfcmVjdl9zZW5zZl9yZXEoZGRldiwgYXJnLCByZXNwKTtcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI5OC1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0Njg4CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJhY2luZyB0aGUgRGlnaXRhbCBORkMgU2VuZCBGdW5jdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGBkaWdpdGFsX3RnX3NlbmRgIGlzLCBhcyBJIHN1c3BlY3RlZCwgaW1wbGVtZW50ZWQgYXMgYGRldi0mZ3Q7b3BzLSZndDt0bV9zZW5kYCB3aXRoaW4gdGhlIGBkaWdpdGFsX25mY19vcHNgIHN0cnVjdHVyZS4gVGhhdCYjMzk7cyBnb29kLCB0aGF0IGNvbmZpcm1zIHRoZSBjb3JlIHJlbGF0aW9uc2hpcC4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHF1ZXN0aW9uOiAqd2hlcmUqIGlzIHRoaXMgYHRtX3NlbmRgIGZ1bmN0aW9uIGFjdHVhbGx5IGJlaW5nIGNhbGxlZCBmcm9tPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gVGltZSB0byBkaXZlIGludG8gdGhlIGBuZXQvbmZjYCBkaXJlY3RvcnkgYW5kIHNwZWNpZmljYWxseSBleGFtaW5lIHRoZSBgdG1fc2VuZGAgZnVuY3Rpb24mIzM5O3MgdXNhZ2UuIFRoYXQmIzM5O3Mgd2hlcmUgSSBzaG91bGQgZmluZCB0aGUgYW5zd2VyIHRvIG15IHF1ZXN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0bV9zZW5kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2NvcmUuYz00ODg9aW50IG5mY19kYXRhX2V4Y2hhbmdlKHN0cnVjdCBuZmNfZGV2ICpkZXYsIHUzMiB0YXJnZXRfaWR4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZmMvY29yZS5jLTUxOS1cdFx0XHRcdCAgbXNlY3NfdG9famlmZmllcyhORkNfQ0hFQ0tfUFJFU19GUkVRX01TKSk7XG5uZXQvbmZjL2NvcmUuYzo1MjA6XHR9IGVsc2UgaWYgKGRldi1cdTAwM2VyZl9tb2RlID09IE5GQ19SRl9UQVJHRVQgXHUwMDI2XHUwMDI2IGRldi1cdTAwM2VvcHMtXHUwMDNldG1fc2VuZCAhPSBOVUxMKSB7XG5uZXQvbmZjL2NvcmUuYzo1MjE6XHRcdHJjID0gZGV2LVx1MDAzZW9wcy1cdTAwM2V0bV9zZW5kKGRldiwgc2tiKTtcbm5ldC9uZmMvY29yZS5jLTUyMi1cdH0gZWxzZSB7XG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYz03NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfb3BzIGRpZ2l0YWxfbmZjX29wcyA9IHtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTc1Mi1cdC5kZWFjdGl2YXRlX3RhcmdldCA9IGRpZ2l0YWxfZGVhY3RpdmF0ZV90YXJnZXQsXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjc1MzpcdC50bV9zZW5kID0gZGlnaXRhbF90Z19zZW5kLFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy03NTQtXHQuaW1fdHJhbnNjZWl2ZSA9IGRpZ2l0YWxfaW5fc2VuZCxcbi0tXG5uZXQvbmZjL2hjaS9jb3JlLmM9NzIyPXN0YXRpYyBpbnQgaGNpX3RyYW5zY2VpdmUoc3RydWN0IG5mY19kZXYgKm5mY19kZXYsIHN0cnVjdCBuZmNfdGFyZ2V0ICp0YXJnZXQsXG4tLVxubmV0L25mYy9oY2kvY29yZS5jLTc2Ny1cbm5ldC9uZmMvaGNpL2NvcmUuYzo3Njg6c3RhdGljIGludCBoY2lfdG1fc2VuZChzdHJ1Y3QgbmZjX2RldiAqbmZjX2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9uZmMvaGNpL2NvcmUuYy03Njkte1xuLS1cbm5ldC9uZmMvaGNpL2NvcmUuYy03NzEtXG5uZXQvbmZjL2hjaS9jb3JlLmM6NzcyOlx0aWYgKCFoZGV2LVx1MDAzZW9wcy1cdTAwM2V0bV9zZW5kKSB7XG5uZXQvbmZjL2hjaS9jb3JlLmMtNzczLVx0XHRrZnJlZV9za2Ioc2tiKTtcbi0tXG5uZXQvbmZjL2hjaS9jb3JlLmMtNzc2LVxubmV0L25mYy9oY2kvY29yZS5jOjc3NzpcdHJldHVybiBoZGV2LVx1MDAzZW9wcy1cdTAwM2V0bV9zZW5kKGhkZXYsIHNrYik7XG5uZXQvbmZjL2hjaS9jb3JlLmMtNzc4LX1cbi0tXG5uZXQvbmZjL2hjaS9jb3JlLmM9OTQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZjX29wcyBoY2lfbmZjX29wcyA9IHtcbi0tXG5uZXQvbmZjL2hjaS9jb3JlLmMtOTUwLVx0LmltX3RyYW5zY2VpdmUgPSBoY2lfdHJhbnNjZWl2ZSxcbm5ldC9uZmMvaGNpL2NvcmUuYzo5NTE6XHQudG1fc2VuZCA9IGhjaV90bV9zZW5kLFxubmV0L25mYy9oY2kvY29yZS5jLTk1Mi1cdC5jaGVja19wcmVzZW5jZSA9IGhjaV9jaGVja19wcmVzZW5jZSxcbi0tXG5uZXQvbmZjL25jaS9jb3JlLmM9MTA0MD1zdGF0aWMgaW50IG5jaV90cmFuc2NlaXZlKHN0cnVjdCBuZmNfZGV2ICpuZmNfZGV2LCBzdHJ1Y3QgbmZjX3RhcmdldCAqdGFyZ2V0LFxuLS1cbm5ldC9uZmMvbmNpL2NvcmUuYy0xMDc3LVxubmV0L25mYy9uY2kvY29yZS5jOjEwNzg6c3RhdGljIGludCBuY2lfdG1fc2VuZChzdHJ1Y3QgbmZjX2RldiAqbmZjX2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9uZmMvbmNpL2NvcmUuYy0xMDc5LXtcbi0tXG5uZXQvbmZjL25jaS9jb3JlLmM9MTE0OT1zdGF0aWMgY29uc3Qgc3RydWN0IG5mY19vcHMgbmNpX25mY19vcHMgPSB7XG4tLVxubmV0L25mYy9uY2kvY29yZS5jLTExNTgtXHQuaW1fdHJhbnNjZWl2ZSA9IG5jaV90cmFuc2NlaXZlLFxubmV0L25mYy9uY2kvY29yZS5jOjExNTk6XHQudG1fc2VuZCA9IG5jaV90bV9zZW5kLFxubmV0L25mYy9uY2kvY29yZS5jLTExNjAtXHQuZW5hYmxlX3NlID0gbmNpX2VuYWJsZV9zZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU4NzEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqVHJhY2luZyB0aGUgRGF0YSBGbG93IGluIE5GQyBDb21tdW5pY2F0aW9uKioKCk9rYXksIHNvIGBuZmNfZGF0YV9leGNoYW5nZWAgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uLCBsaWtlbHkgdGhlIGhlYXJ0IG9mIHRoZSBORkMgZGF0YSB0cmFuc2ZlciBwcm9jZXNzLiBNeSBpbml0aWFsIGh1bmNoLCBnaXZlbiBpdHMgbmFtZSBhbmQgdGhlIHR5cGljYWwgYXJjaGl0ZWN0dXJlLCBpcyB0aGF0IGl0JiMzOTtzIGdldHRpbmcgaW52b2tlZCBlaXRoZXIgdGhyb3VnaCBOZXRsaW5rLCB0aGUgZXN0YWJsaXNoZWQgaW50ZXIta2VybmVsIGNvbW11bmljYXRpb24gcGF0aHdheSwgb3IgbW9yZSBkaXJlY3RseSB0aHJvdWdoIGEgc29ja2V0IGxheWVyLCBoYW5kbGluZyB0aGUgdXNlci1zcGFjZSBpbnRlcmFjdGlvbi4gVGhhdCYjMzk7cyB0aGUgZXhwZWN0ZWQgaGlnaC1sZXZlbCB2aWV3LCBhdCBsZWFzdC4gTm93LCB0aGUgcmVhbCB0YXNrIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IGNhbGwgY2hhaW4uIExldCYjMzk7cyBkaWcgZGVlcGVyIGFuZCB0cmFjZSBiYWNrIGFsbCB0aGUgY2FsbHMgdG8gYG5mY19kYXRhX2V4Y2hhbmdlYC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGVycyB3aWxsIGlsbHVtaW5hdGUgcHJlY2lzZWx5IHdoaWNoIHBhcnQgb2YgdGhlIHN5c3RlbSBpbml0aWF0ZXMgdGhlIGRhdGEgZXhjaGFuZ2UgYW5kIHdoYXQgY29udGV4dCBpdCYjMzk7cyBvcGVyYXRpbmcgd2l0aGluLiBJdOKAmXMgYWxzbyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbGluZyBjb250ZXh0cy4gRm9yIGluc3RhbmNlLCBpcyB0aGlzIGEgYmxvY2tpbmcgb3Igbm9uLWJsb2NraW5nIGNhbGw/IEFyZSB0aGVyZSBhbnkgbG9ja3MgaGVsZCBkdXJpbmcgdGhpcyBjYWxsPyBUaGlzIGlzIHdoZXJlIHRoZSBkZWJ1Z2dpbmcgYmVnaW5zIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZmNfZGF0YV9leGNoYW5nZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9jb3JlLmM9NDQyPWludCBuZmNfZGVhY3RpdmF0ZV90YXJnZXQoc3RydWN0IG5mY19kZXYgKmRldiwgdTMyIHRhcmdldF9pZHgsIHU4IG1vZGUpXG4tLVxubmV0L25mYy9jb3JlLmMtNDc3LS8qKlxubmV0L25mYy9jb3JlLmM6NDc4OiAqIG5mY19kYXRhX2V4Y2hhbmdlIC0gdHJhbnNjZWl2ZSBkYXRhXG5uZXQvbmZjL2NvcmUuYy00NzktICpcbi0tXG5uZXQvbmZjL2NvcmUuYy00ODctICovXG5uZXQvbmZjL2NvcmUuYzo0ODg6aW50IG5mY19kYXRhX2V4Y2hhbmdlKHN0cnVjdCBuZmNfZGV2ICpkZXYsIHUzMiB0YXJnZXRfaWR4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25mYy9jb3JlLmMtNDg5LVx0XHQgICAgICBkYXRhX2V4Y2hhbmdlX2NiX3QgY2IsIHZvaWQgKmNiX2NvbnRleHQpXG4tLVxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmM9MzcxPWludCBuZmNfbGxjcF9zZW5kX3N5bW0oc3RydWN0IG5mY19kZXYgKmRldilcbi0tXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYy0zOTgtXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYzozOTk6XHRlcnIgPSBuZmNfZGF0YV9leGNoYW5nZShkZXYsIGxvY2FsLVx1MDAzZXRhcmdldF9pZHgsIHNrYixcbm5ldC9uZmMvbGxjcF9jb21tYW5kcy5jLTQwMC1cdFx0XHRcdCBuZmNfbGxjcF9yZWN2LCBsb2NhbCk7XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz03NjE9c3RhdGljIHZvaWQgbmZjX2xsY3BfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy03OTYtXG5uZXQvbmZjL2xsY3BfY29yZS5jOjc5NzpcdFx0XHRyZXQgPSBuZmNfZGF0YV9leGNoYW5nZShsb2NhbC1cdTAwM2VkZXYsIGxvY2FsLVx1MDAzZXRhcmdldF9pZHgsXG5uZXQvbmZjL2xsY3BfY29yZS5jLTc5OC1cdFx0XHRcdFx0XHRza2IsIG5mY19sbGNwX3JlY3YsIGxvY2FsKTtcbi0tXG5uZXQvbmZjL25mYy5oPTE0Mz1pbnQgbmZjX2RlYWN0aXZhdGVfdGFyZ2V0KHN0cnVjdCBuZmNfZGV2ICpkZXYsIHUzMiB0YXJnZXRfaWR4LCB1OCBtb2RlKTtcbm5ldC9uZmMvbmZjLmgtMTQ0LVxubmV0L25mYy9uZmMuaDoxNDU6aW50IG5mY19kYXRhX2V4Y2hhbmdlKHN0cnVjdCBuZmNfZGV2ICpkZXYsIHUzMiB0YXJnZXRfaWR4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25mYy9uZmMuaC0xNDYtXHRcdCAgICAgIGRhdGFfZXhjaGFuZ2VfY2JfdCBjYiwgdm9pZCAqY2JfY29udGV4dCk7XG4tLVxubmV0L25mYy9yYXdzb2NrLmM9MTg4PXN0YXRpYyB2b2lkIHJhd3NvY2tfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L25mYy9yYXdzb2NrLmMtMjA2LVx0c29ja19ob2xkKHNrKTtcbm5ldC9uZmMvcmF3c29jay5jOjIwNzpcdHJjID0gbmZjX2RhdGFfZXhjaGFuZ2UoZGV2LCB0YXJnZXRfaWR4LCBza2IsXG5uZXQvbmZjL3Jhd3NvY2suYy0yMDgtXHRcdFx0ICAgICAgIHJhd3NvY2tfZGF0YV9leGNoYW5nZV9jb21wbGV0ZSwgc2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjg1NgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDQzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBORkMgU3Vic3lzdGVtJiMzOTtzIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIE5GQyBjb2RlIGFuZCBJIHNlZSB0aGF0IHJhdyBzb2NrZXRzIChgcmF3c29jay5jYCkgYW5kIExMQ1AgKGBsbGNwX2NvcmUuY2ApIGFyZSB1c2luZyBgbmZjX2RhdGFfZXhjaGFuZ2VgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBhbmQgcmlnaHQgYXdheSBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBiaWdnZXIgcGljdHVyZS4gSSBrbm93IHN5emthbGxlciBoYXMgc29tZSBzZXJpb3VzIE5GQyBjb3ZlcmFnZSwgdXNpbmcgQUZfTkZDIHNvY2tldHMsIG5ldGxpbmsgY29tbWFuZHMgbGlrZSBgTkZDX0NNRF9TVEFSVF9QT0xMYCBhbmQgYE5GQ19DTURfREVQX0xJTktfVVBgLCBhbmQgZXZlbiBVU0IgZW11bGF0aW9uIHdpdGggcG9ydDEwMCBvciBuZmNzaW0uIEFuZCBpdCYjMzk7cyBjbGVhcmx5IGZ1enppbmcgTkZDIHByZXR0eSBleHRlbnNpdmVseS4gSSBtZWFuLCB0aGUgbnVtYmVyIG9mIENWRXMgYW5kIGJ1Z3MgaXQmIzM5O3MgZm91bmQgaW4gYG5ldC9uZmNgIGlzIGltcHJlc3NpdmUuCgpHaXZlbiBhbGwgb2YgdGhhdCwgbXkgbmV4dCBzdGVwIGlzIHRvIHNlZSBpZiBzeXprYWxsZXIgaGFzIGZsYWdnZWQgYW55dGhpbmcgaW4gYGRpZ2l0YWxfZGVwLmNgIG9yIHdpdGhpbiBgbmV0L25mY2AgbW9yZSBicm9hZGx5LiBBaCwgaGVyZSYjMzk7cyBhIGNvbW1pdCB0aGF0IGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIG9yIGxvZ2ljIGVycm9yIGluIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAuCgpOb3csIGxldCYjMzk7cyBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyIHRoZSByZWxldmFudCBzZWN0aW9ucy4gTXkgZm9jdXMgaXMgb24gcmVhY2hhYmlsaXR5LiBJcyBgZGlnaXRhbF9kZXAuY2AgYWN0dWFsbHkgcmVhY2hhYmxlPyBBYnNvbHV0ZWx5LCB2aWEgdGhlIE5GQyBzdWJzeXN0ZW0sIEFGX05GQyBzb2NrZXRzLCBuZXRsaW5rLCBvciBldmVuIGVtdWxhdGVkIFVTQiBkZXZpY2VzIGxpa2UgcG9ydDEwMCwgb3IgbmZjc2ltLiBUaGF0JiMzOTtzIGEgc29saWQgc3RhcnQuCgpUaGUgc2Vjb25kIGNyaXRpY2FsIHRoaW5nIEkmIzM5O20gY29uc2lkZXJpbmcgaXMgdGhhdCBmdXp6aW5nIGlzIHZhbHVhYmxlIGJlY2F1c2UgdGhlIGNvZGUgY2FuIGJlIG1hZGUgdG8gZXhlY3V0ZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR0NFIG9yIFFFTVUsIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwLiBUaGF0IHNvdW5kcyBpZGVhbC4KCkFuZCBmaW5hbGx5LCB0aGUgJiMzOTtXb3J0aEZ1enppbmcmIzM5OyBjcml0ZXJpYS4gVGhhdCYjMzk7cyB3aGF0IEkmIzM5O20gbG9va2luZyBmb3IgLSBjYW4gdGhlIHBhdGNoIHRvdWNoIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZyBjb3JlIHN1YnN5c3RlbXMsIGFuZCBkcml2ZXJzIHRoYXQgYXJlIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMsIGxpa2UgdGhlIFVTQiBnYWRnZXQsIG5ldGxpbmssIGFuZCBzb2NrZXRzLiBXZWxsLCB0aGUgYG5ldC9uZmNgIGNvZGUgKmlzKiBwYXJ0IG9mIExpbnV4IG5ldHdvcmtpbmcgKG5ldC8pLCBzby4uLgoKJiMzNDtXb3J0aEZ1enppbmc6IHRydWUhJiMzNDsgQmluZ28uCgpOb3cgdG8gc2VlIHdoYXQgS2NvbmZpZyBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgYGRpZ2l0YWxfZGVwLm9gJiMzOTtzIGNvbXBpbGF0aW9uIC0gbGV0JiMzOTtzIHRyYWNlIHRocm91Z2ggYG5ldC9uZmMvTWFrZWZpbGVgIHRvIGNvbmZpcm0gdGhlIGJ1aWxkIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGlnaXRhbF9kZXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvTWFrZWZpbGU9MTE9bmZjLW9ianMgOj0gY29yZS5vIG5ldGxpbmsubyBhZl9uZmMubyByYXdzb2NrLm8gbGxjcF9jb3JlLm8gbGxjcF9jb21tYW5kcy5vIFxcXG4tLVxubmV0L25mYy9NYWtlZmlsZS0xMy1cbm5ldC9uZmMvTWFrZWZpbGU6MTQ6bmZjX2RpZ2l0YWwtb2JqcyA6PSBkaWdpdGFsX2NvcmUubyBkaWdpdGFsX3RlY2hub2xvZ3kubyBkaWdpdGFsX2RlcC5vXG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYz01ODY9c3RhdGljIGludCBkaWdpdGFsX2Rldl9kb3duKHN0cnVjdCBuZmNfZGV2ICpuZmNfZGV2KVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTk0LVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo1OTU6c3RhdGljIGludCBkaWdpdGFsX2RlcF9saW5rX3VwKHN0cnVjdCBuZmNfZGV2ICpuZmNfZGV2LFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01OTYtXHRcdFx0ICAgICAgIHN0cnVjdCBuZmNfdGFyZ2V0ICp0YXJnZXQsXG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy02MDktXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjYxMDpzdGF0aWMgaW50IGRpZ2l0YWxfZGVwX2xpbmtfZG93bihzdHJ1Y3QgbmZjX2RldiAqbmZjX2Rldilcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNjExLXtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTc0ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5mY19vcHMgZGlnaXRhbF9uZmNfb3BzID0ge1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNzQ4LVx0LnN0b3BfcG9sbCA9IGRpZ2l0YWxfc3RvcF9wb2xsLFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo3NDk6XHQuZGVwX2xpbmtfdXAgPSBkaWdpdGFsX2RlcF9saW5rX3VwLFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo3NTA6XHQuZGVwX2xpbmtfZG93biA9IGRpZ2l0YWxfZGVwX2xpbmtfZG93bixcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNzUxLVx0LmFjdGl2YXRlX3RhcmdldCA9IGRpZ2l0YWxfYWN0aXZhdGVfdGFyZ2V0LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz05ND1zdHJ1Y3QgZGlnaXRhbF9wc2xfcmVzIHtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTktXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTAwOnN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzIHtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDEtXHR1OCBkaXI7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTIwMD1kaWdpdGFsX3NlbmRfZGVwX2RhdGFfcHJlcChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjIwMTpcdFx0XHQgICBzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcV9yZXMsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMjAyLVx0XHRcdCAgIHN0cnVjdCBkaWdpdGFsX2RhdGFfZXhjaCAqZGF0YV9leGNoKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz01Mjk9c3RhdGljIGludCBkaWdpdGFsX2luX3NlbmRfYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTUzMS17XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTMyOlx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTMzLVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTM5LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU0MDpcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTQxLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU0MjpcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXHUwMDNlZGF0YTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NDMtXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTU2Nj1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9uYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU2OC17XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTY5Olx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTcwLVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTc2LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU3NzpcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTc4LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU3OTpcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXHUwMDNlZGF0YTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01ODAtXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTU5OD1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9hdG4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjAwLXtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MDE6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MDItXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MDgtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjA5Olx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MTAtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjExOlx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYxMi1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NjI5PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX3J0b3goc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjMxLXtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MzI6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MzMtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NDYtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjQ3Olx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NDgtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjQ5Olx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTY1MC1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9Njg2PXN0YXRpYyB2b2lkIGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjg5LVx0c3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2ggPSBhcmc7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjkwOlx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXM7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjkxLVx0dTggcGZiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy03NTUtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NzU2Olx0c2l6ZSA9IHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3Jlcyk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NzU3Olx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXJlc3AtXHUwMDNlZGF0YTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy03NTgtXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTkwND1pbnQgZGlnaXRhbF9pbl9zZW5kX2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTA3LXtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5MDg6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05MDktXHRzdHJ1Y3Qgc2tfYnVmZiAqY2hhaW5pbmdfc2tiLCAqdG1wX3NrYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTExLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjkxMjpcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTEzLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjkxNDpcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXHUwMDNlZGF0YTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05MTUtXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTk3OD1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hY2soc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTgwLXtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5ODE6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3Jlcztcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODItXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODgtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTg5Olx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05OTAtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTkxOlx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk5Mi1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTAyND1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hdG4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDI1LXtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDI2Olx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXM7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAyNy1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMzMtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTAzNDpcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAzNS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDM2Olx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMzctXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEwNzc9c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDgwLVx0aW50IHJjO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwODE6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDgyLVx0dTggcGZiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTA3LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjExMDg6XHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMTA5Olx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXJlc3AtXHUwMDNlZGF0YTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTEwLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMjk3PWludCBkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyOTgte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEyOTk6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3Jlcztcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzAwLVx0c3RydWN0IHNrX2J1ZmYgKmNoYWluaW5nX3NrYiwgKnRtcF9za2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMDItXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTMwMzpcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwNC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzA1Olx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMDYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwODQyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgaXQ6CgoqKkRpdmluZyBpbnRvIHRoZSBORkMgTWFrZWZpbGUqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBwcm9jZXNzIGZvciB0aGUgTkZDIGNvbXBvbmVudHMsIHNvIGxldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBgbmV0L25mYy9NYWtlZmlsZWAuIFRoaXMgZmlsZSBpcyB0aGUgY2VudHJhbCBwb2ludCBvZiBjb250cm9sLCByaWdodD8gSXQmIzM5O3Mgd2hlcmUgdGhlIGRlcGVuZGVuY2llcywgY29tcGlsYXRpb24gZmxhZ3MsIGFuZCBsaW5raW5nIGFyZSBhbGwgb3JjaGVzdHJhdGVkIGZvciB0aGVzZSBORkMtcmVsYXRlZCBtb2R1bGVzLiBJIG5lZWQgdG8gc2VlIGhvdyB0aGUga2VybmVsIGJ1aWxkcyB0aGVzZSB0aGluZ3MsIGFueSBzcGVjaWZpYyBtb2R1bGVzIGl0JiMzOTtzIGNyZWF0aW5nLCBhbmQgaG93IHRoZXkgaW50ZXJhY3QuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHdoZXRoZXIgdGhlcmUgYXJlIGFueSB1bnVzdWFsIGJ1aWxkIGZsYWdzIG9yIGN1c3RvbSBydWxlcyB0aGF0IG1pZ2h0IGluZGljYXRlIHBsYXRmb3JtLXNwZWNpZmljIG9wdGltaXphdGlvbnMgb3IgcG90ZW50aWFsIGFyZWFzIG9mIGludGVyZXN0IGZvciBwZXJmb3JtYW5jZSB0dW5pbmcgb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSByZXNlYXJjaC4gTGV0JiMzOTtzIHNlZSB3aGF0IGdlbXMgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25mYy9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBNYWtlZmlsZSBmb3IgdGhlIExpbnV4IE5GQyBzdWJzeXN0ZW0uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG9iai0kKENPTkZJR19ORkMpICYjNDM7PSBuZmMub1xuICAgNzpcdG9iai0kKENPTkZJR19ORkNfTkNJKSAmIzQzOz0gbmNpL1xuICAgODpcdG9iai0kKENPTkZJR19ORkNfSENJKSAmIzQzOz0gaGNpL1xuICAgOTpcdG9iai0kKENPTkZJR19ORkNfRElHSVRBTCkgJiM0Mzs9IG5mY19kaWdpdGFsLm9cbiAgMTA6XHRcbiAgMTE6XHRuZmMtb2JqcyA6PSBjb3JlLm8gbmV0bGluay5vIGFmX25mYy5vIHJhd3NvY2subyBsbGNwX2NvcmUubyBsbGNwX2NvbW1hbmRzLm8gXFxcbiAgMTI6XHRcdFx0bGxjcF9zb2NrLm9cbiAgMTM6XHRcbiAgMTQ6XHRuZmNfZGlnaXRhbC1vYmpzIDo9IGRpZ2l0YWxfY29yZS5vIGRpZ2l0YWxfdGVjaG5vbG9neS5vIGRpZ2l0YWxfZGVwLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDEyODQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBORkMgRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbmZjX2RpZ2l0YWwub2AgbW9kdWxlIGFuZCBpbW1lZGlhdGVseSwgSSBzZWUgYSBjbGVhciBkZXBlbmRlbmN5IHBhdGguIEl0IG5lZWRzIGBDT05GSUdfTkZDX0RJR0lUQUxgLCB3aGljaCBpdHNlbGYgaXMgY29udGluZ2VudCBvbiBgQ09ORklHX05GQ2AuIFRoYXQmIzM5O3Mgc3RhbmRhcmQgS2NvbmZpZyBzdHVmZi4gR290dGEgbWFrZSBzdXJlIHRoZSBiYXNlIE5GQyBmdW5jdGlvbmFsaXR5IGlzIGVuYWJsZWQgYmVmb3JlIHdlIGV2ZW4gdGhpbmsgYWJvdXQgdGhlIGRpZ2l0YWwgbGF5ZXIuCgpUaGVuIEkgcXVpY2tseSB3YW50IHRvIHVuZGVyc3RhbmQgKndoYXQqIHVzZXMgdGhpcyBgbmZjX2RpZ2l0YWxgIHBhcnQuIFRoZSBkZXBlbmRlbmN5IGxpc3QgdGVsbHMgbWUgaXQmIzM5O3MgdXNlZCBieSBgQ09ORklHX05GQ19TSU1gLCB0aGUgbmZjc2ltIGRyaXZlciwgYW5kIGFsc28gYENPTkZJR19ORkNfUE9SVDEwMGAsIHRoZSBwb3J0MTAwIGRyaXZlci4gQWxyaWdodCwgdXNlZnVsIHRvIGtub3cuIAoKVG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBteSBuZXh0IHN0ZXAgaXMgb2J2aW91c2x5IHRvIGdvIGFuZCBpbnNwZWN0IHRoZSBgZHJpdmVycy9uZmMvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIHNlZSB0aGUgY29udGV4dCBvZiB0aGVzZSBjb25maWdzLCBhbnkgYWRkaXRpb25hbCBkZXBlbmRlbmNpZXMgb3IgY29uc3RyYWludHMsIGRlZmF1bHQgdmFsdWVzLCBoZWxwIHRleHQg4oCTIHRoZSB3aG9sZSBzaGViYW5nLiBHb3R0YSBoYXZlIHRoZSBmdWxsIHBpY3R1cmUgYmVmb3JlIEkgbWFrZSBhbnkganVkZ2VtZW50cyBvciBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQT1JUMTAwfE5GQ1NJTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA2ODIgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmZjL0tjb25maWc9MzE9Y29uZmlnIE5GQ19TSU1cbi0tXG5kcml2ZXJzL25mYy9LY29uZmlnLTQxLVxuZHJpdmVycy9uZmMvS2NvbmZpZzo0Mjpjb25maWcgTkZDX1BPUlQxMDBcbmRyaXZlcnMvbmZjL0tjb25maWctNDMtXHR0cmlzdGF0ZSBcJiMzNDtTb255IE5GQyBQb3J0LTEwMCBTZXJpZXMgVVNCIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvTWFrZWZpbGU9MTE9b2JqLSQoQ09ORklHX05GQ19TSU0pXHRcdCYjNDM7PSBuZmNzaW0ub1xuZHJpdmVycy9uZmMvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX05GQ19QT1JUMTAwKVx0JiM0Mzs9IHBvcnQxMDAub1xuZHJpdmVycy9uZmMvTWFrZWZpbGUtMTMtb2JqLSQoQ09ORklHX05GQ19NUlZMKVx0XHQmIzQzOz0gbmZjbXJ2bC9cbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xNS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE2OiNkZWZpbmUgTkZDU0lNX0VSUihkLCBmbXQsIGFyZ3MuLi4pIG5mY19lcnIoXHUwMDI2ZC1cdTAwM2VuZmNfZGlnaXRhbF9kZXYtXHUwMDNlbmZjX2Rldi1cdTAwM2VkZXYsIFxcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xNy1cdFx0XHRcdFx0ICAgIFwmIzM0OyVzOiBcJiMzNDsgZm10LCBfX2Z1bmNfXywgIyMgYXJncylcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE4LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTk6I2RlZmluZSBORkNTSU1fREJHKGQsIGZtdCwgYXJncy4uLikgZGV2X2RiZyhcdTAwMjZkLVx1MDAzZW5mY19kaWdpdGFsX2Rldi1cdTAwM2VuZmNfZGV2LVx1MDAzZWRldiwgXFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwLVx0XHRcdFx0XHQgICAgXCYjMzQ7JXM6IFwmIzM0OyBmbXQsIF9fZnVuY19fLCAjIyBhcmdzKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjEtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyMjojZGVmaW5lIE5GQ1NJTV9WRVJTSU9OIFwmIzM0OzAuMlwmIzM0O1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjMtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyNDojZGVmaW5lIE5GQ1NJTV9NT0RFX05PTkVcdDBcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI1OiNkZWZpbmUgTkZDU0lNX01PREVfSU5JVElBVE9SXHQxXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyNjojZGVmaW5lIE5GQ1NJTV9NT0RFX1RBUkdFVFx0MlxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjctXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyODojZGVmaW5lIE5GQ1NJTV9DQVBBQklMSVRJRVMgKE5GQ19ESUdJVEFMX0RSVl9DQVBTX0lOX0NSQyAgIHwgXFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI5LVx0XHRcdCAgICAgTkZDX0RJR0lUQUxfRFJWX0NBUFNfVEdfQ1JDKVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jPTEwND1zdGF0aWMgdm9pZCBuZmNzaW1fbGlua19yZWN2X2NhbmNlbChzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmspXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTA3LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTA4Olx0bGluay1cdTAwM2Vtb2RlID0gTkZDU0lNX01PREVfTk9ORTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTEwOS1cbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYz0xMTU9c3RhdGljIHZvaWQgbmZjc2ltX2xpbmtfc2h1dGRvd24oc3RydWN0IG5mY3NpbV9saW5rICpsaW5rKVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTExOS1cdGxpbmstXHUwMDNlc2h1dGRvd24gPSAxO1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTIwOlx0bGluay1cdTAwM2Vtb2RlID0gTkZDU0lNX01PREVfTk9ORTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTEyMS1cbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYz0xODI9c3RhdGljIHZvaWQgbmZjc2ltX3JlY3Zfd3Eoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE5MC1cdGlmICghZGV2LVx1MDAzZXVwKSB7XG5kcml2ZXJzL25mYy9uZmNzaW0uYzoxOTE6XHRcdE5GQ1NJTV9FUlIoZGV2LCBcJiMzNDtEZXZpY2UgaXMgZG93blxcblwmIzM0Oyk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xOTItXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM9MjAxPXN0YXRpYyBpbnQgbmZjc2ltX3NlbmQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yMDctXHRpZiAoIWRldi1cdTAwM2V1cCkge1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjA4Olx0XHRORkNTSU1fRVJSKGRldiwgXCYjMzQ7RGV2aWNlIGlzIGRvd25cXG5cJiMzNDspO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjA5LVx0XHRyZXR1cm4gLUVOT0RFVjtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yMTgtXHRpZiAoZGV2LVx1MDAzZWRyb3BmcmFtZSkge1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjE5Olx0XHRORkNTSU1fREJHKGRldiwgXCYjMzQ7ZHJvcHBpbmcgZnJhbWUgKG91dCBvZiAlZClcXG5cJiMzNDssIGRldi1cdTAwM2Vkcm9wZnJhbWUpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjIwLVx0XHRkZXZfa2ZyZWVfc2tiKHNrYik7XG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM9MjU2PXN0YXRpYyBpbnQgbmZjc2ltX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI2My1cdFx0ZGV2LVx1MDAzZXVwID0gdHJ1ZTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI2NDpcdFx0ZGV2LVx1MDAzZW1vZGUgPSBORkNTSU1fTU9ERV9JTklUSUFUT1I7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNjUtXHRcdGRldi1cdTAwM2VyZl90ZWNoID0gcGFyYW07XG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjcxLVx0ZGVmYXVsdDpcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI3MjpcdFx0TkZDU0lNX0VSUihkZXYsIFwmIzM0O0ludmFsaWQgY29uZmlndXJhdGlvbiB0eXBlOiAlZFxcblwmIzM0OywgdHlwZSk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNzMtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jPTI4Nj1zdGF0aWMgaW50IG5mY3NpbV90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yOTMtXHRcdGRldi1cdTAwM2V1cCA9IHRydWU7XG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyOTQ6XHRcdGRldi1cdTAwM2Vtb2RlID0gTkZDU0lNX01PREVfVEFSR0VUO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjk1LVx0XHRkZXYtXHUwMDNlcmZfdGVjaCA9IHBhcmFtO1xuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMwMS1cdGRlZmF1bHQ6XG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMDI6XHRcdE5GQ1NJTV9FUlIoZGV2LCBcJiMzNDtJbnZhbGlkIGNvbmZpZ3VyYXRpb24gdHlwZTogJWRcXG5cJiMzNDssIHR5cGUpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzAzLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYz0zNDY9c3RhdGljIHZvaWQgbmZjc2ltX2RlYnVnZnNfaW5pdF9kZXYoc3RydWN0IG5mY3NpbSAqZGV2KVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM1My1cdGlmICghbmZjc2ltX2RlYnVnZnNfcm9vdCkge1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzU0Olx0XHRORkNTSU1fRVJSKGRldiwgXCYjMzQ7bmZjc2ltIGRlYnVnZnMgbm90IGluaXRpYWxpemVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM1NS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM2MC1cdGlmIChuIFx1MDAzZT0gc2l6ZW9mKGRldm5hbWUpKSB7XG5kcml2ZXJzL25mYy9uZmNzaW0uYzozNjE6XHRcdE5GQ1NJTV9FUlIoZGV2LCBcJiMzNDtDb3VsZCBub3QgY29tcHV0ZSBkZXYgbmFtZSBmb3IgZGV2ICVkXFxuXCYjMzQ7LCBpZHgpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzYyLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM9MzcwPXN0YXRpYyBzdHJ1Y3QgbmZjc2ltICpuZmNzaW1fZGV2aWNlX25ldyhzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmtfaW4sXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzg1LVx0XHRcdFx0XHRcdCAgICBORkNfUFJPVE9fTkZDX0RFUF9NQVNLLFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mzg2Olx0XHRcdFx0XHRcdCAgICBORkNTSU1fQ0FQQUJJTElUSUVTLFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzg3LVx0XHRcdFx0XHRcdCAgICAwLCAwKTtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYz00MzE9c3RhdGljIGludCBfX2luaXQgbmZjc2ltX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00NTgtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0NTk6XHRwcl9pbmZvKFwmIzM0O25mY3NpbSBcJiMzNDsgTkZDU0lNX1ZFUlNJT04gXCYjMzQ7IGluaXRpYWxpemVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ2MC1cbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYz00OTE9bW9kdWxlX2V4aXQobmZjc2ltX2V4aXQpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDkyLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDkzOk1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtORkNTaW0gZHJpdmVyIHZlciBcJiMzNDsgTkZDU0lNX1ZFUlNJT04pO1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDk0Ok1PRFVMRV9WRVJTSU9OKE5GQ1NJTV9WRVJTSU9OKTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ5NS1NT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xOC1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxOTojZGVmaW5lIFBPUlQxMDBfUFJPVE9DT0xTIChORkNfUFJPVE9fSkVXRUxfTUFTSyAgICB8IFxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjAtXHRcdFx0ICAgTkZDX1BST1RPX01JRkFSRV9NQVNLICAgfCBcXFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yNS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNjojZGVmaW5lIFBPUlQxMDBfQ0FQQUJJTElUSUVTIChORkNfRElHSVRBTF9EUlZfQ0FQU19JTl9DUkMgfCBcXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI3LVx0XHRcdCAgICAgIE5GQ19ESUdJVEFMX0RSVl9DQVBTX1RHX0NSQylcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjktLyogU3RhbmRhcmQgcG9ydDEwMCBmcmFtZSBkZWZpbml0aW9ucyAqL1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMwOiNkZWZpbmUgUE9SVDEwMF9GUkFNRV9IRUFERVJfTEVOIChzaXplb2Yoc3RydWN0IHBvcnQxMDBfZnJhbWUpIFxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzEtXHRcdFx0XHQgICYjNDM7IDIpIC8qIGRhdGFbMF0gQ0MsIGRhdGFbMV0gU0NDICovXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzI6I2RlZmluZSBQT1JUMTAwX0ZSQU1FX1RBSUxfTEVOIDIgLyogZGF0YVtsZW5dIERDUywgZGF0YVtsZW4gJiM0MzsgMV0gcG9zdGFtYmxlKi9cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMy1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNDojZGVmaW5lIFBPUlQxMDBfQ09NTV9SRl9IRUFEX01BWF9MRU4gKHNpemVvZihzdHJ1Y3QgcG9ydDEwMF90Z19jb21tX3JmX2NtZCkpXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzUtXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM3LSAqIE1heCBleHRlbmRlZCBmcmFtZSBwYXlsb2FkIGxlbiwgZXhjbHVkaW5nIENDIGFuZCBTQ0NcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozODogKiB3aGljaCBhcmUgYWxyZWFkeSBpbiBQT1JUMTAwX0ZSQU1FX0hFQURFUl9MRU4uXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzktICovXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDA6I2RlZmluZSBQT1JUMTAwX0ZSQU1FX01BWF9QQVlMT0FEX0xFTiAxMDAxXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDEtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDI6I2RlZmluZSBQT1JUMTAwX0ZSQU1FX0FDS19TSVpFIDYgLyogUHJlYW1ibGUgKDEpLCBTb1BDICgyKSwgQUNLIENvZGUgKDIpLFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQzLVx0XHRcdFx0ICAgIFBvc3RhbWJsZSAoMSkgKi9cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0NDpzdGF0aWMgdTggYWNrX2ZyYW1lW1BPUlQxMDBfRlJBTUVfQUNLX1NJWkVdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQ1LVx0MHgwMCwgMHgwMCwgMHhmZiwgMHgwMCwgMHhmZiwgMHgwMFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00Ny1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0ODojZGVmaW5lIFBPUlQxMDBfRlJBTUVfQ0hFQ0tTVU0oZikgKGYtXHUwMDNlZGF0YVtsZTE2X3RvX2NwdShmLVx1MDAzZWRhdGFsZW4pXSlcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0OTojZGVmaW5lIFBPUlQxMDBfRlJBTUVfUE9TVEFNQkxFKGYpIChmLVx1MDAzZWRhdGFbbGUxNl90b19jcHUoZi1cdTAwM2VkYXRhbGVuKSAmIzQzOyAxXSlcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy01MC1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy01MS0vKiBzdGFydCBvZiBmcmFtZSAqL1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjUyOiNkZWZpbmUgUE9SVDEwMF9GUkFNRV9TT0ZcdDB4MDBGRlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjUzOiNkZWZpbmUgUE9SVDEwMF9GUkFNRV9FWFRcdDB4RkZGRlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjU0OiNkZWZpbmUgUE9SVDEwMF9GUkFNRV9BQ0tcdDB4MDBGRlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTU1LVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTU2LS8qIFBvcnQtMTAwIGNvbW1hbmQ6IGluIG9yIG91dCAqL1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjU3OiNkZWZpbmUgUE9SVDEwMF9GUkFNRV9ESVJFQ1RJT04oZikgKGYtXHUwMDNlZGF0YVswXSkgLyogQ0MgKi9cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo1ODojZGVmaW5lIFBPUlQxMDBfRlJBTUVfRElSX09VVCAweEQ2XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NTk6I2RlZmluZSBQT1JUMTAwX0ZSQU1FX0RJUl9JTiAgMHhEN1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTYwLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTYxLS8qIFBvcnQtMTAwIHN1Yi1jb21tYW5kICovXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NjI6I2RlZmluZSBQT1JUMTAwX0ZSQU1FX0NNRChmKSAoZi1cdTAwM2VkYXRhWzFdKSAvKiBTQ0MgKi9cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy02My1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo2NDojZGVmaW5lIFBPUlQxMDBfQ01EX0dFVF9GSVJNV0FSRV9WRVJTSU9OIDB4MjBcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo2NTojZGVmaW5lIFBPUlQxMDBfQ01EX0dFVF9DT01NQU5EX1RZUEUgICAgIDB4MjhcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo2NjojZGVmaW5lIFBPUlQxMDBfQ01EX1NFVF9DT01NQU5EX1RZUEUgICAgIDB4MkFcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy02Ny1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo2ODojZGVmaW5lIFBPUlQxMDBfQ01EX0lOX1NFVF9SRiAgICAgICAweDAwXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Njk6I2RlZmluZSBQT1JUMTAwX0NNRF9JTl9TRVRfUFJPVE9DT0wgMHgwMlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjcwOiNkZWZpbmUgUE9SVDEwMF9DTURfSU5fQ09NTV9SRiAgICAgIDB4MDRcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy03MS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo3MjojZGVmaW5lIFBPUlQxMDBfQ01EX1RHX1NFVF9SRiAgICAgICAweDQwXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NzM6I2RlZmluZSBQT1JUMTAwX0NNRF9UR19TRVRfUFJPVE9DT0wgMHg0MlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjc0OiNkZWZpbmUgUE9SVDEwMF9DTURfVEdfU0VUX1JGX09GRiAgIDB4NDZcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo3NTojZGVmaW5lIFBPUlQxMDBfQ01EX1RHX0NPTU1fUkYgICAgICAweDQ4XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNzYtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Nzc6I2RlZmluZSBQT1JUMTAwX0NNRF9TV0lUQ0hfUkYgICAgICAgMHgwNlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTc4LVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjc5OiNkZWZpbmUgUE9SVDEwMF9DTURfUkVTUE9OU0UoY21kKSAoY21kICYjNDM7IDEpXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtODAtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6ODE6I2RlZmluZSBQT1JUMTAwX0NNRF9UWVBFX0lTX1NVUFBPUlRFRChtYXNrLCBjbWRfdHlwZSkgXFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy04Mi1cdCgobWFzaykgXHUwMDI2ICgweDAxIFx1MDAzY1x1MDAzYyAoY21kX3R5cGUpKSlcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo4MzojZGVmaW5lIFBPUlQxMDBfQ01EX1RZUEVfMFx0MFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjg0OiNkZWZpbmUgUE9SVDEwMF9DTURfVFlQRV8xXHQxXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtODUtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6ODY6I2RlZmluZSBQT1JUMTAwX0NNRF9TVEFUVVNfT0sgICAgICAweDAwXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6ODc6I2RlZmluZSBQT1JUMTAwX0NNRF9TVEFUVVNfVElNRU9VVCAweDgwXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtODgtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6ODk6I2RlZmluZSBQT1JUMTAwX01EQUFfVEdUX0hBU19CRUVOX0FDVElWQVRFRF9NQVNLIDB4MDFcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo5MDojZGVmaW5lIFBPUlQxMDBfTURBQV9UR1RfV0FTX0FDVElWQVRFRF9NQVNLICAgICAgMHgwMlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTkxLVxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xMDY9c3RydWN0IHBvcnQxMDBfaW5fcmZfc2V0dGluZyB7XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExMi1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMTM6I2RlZmluZSBQT1JUMTAwX0NPTU1fVFlQRV9JTl8yMTJGIDB4MDFcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMTQ6I2RlZmluZSBQT1JUMTAwX0NPTU1fVFlQRV9JTl80MjRGIDB4MDJcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMTU6I2RlZmluZSBQT1JUMTAwX0NPTU1fVFlQRV9JTl8xMDZBIDB4MDNcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMTY6I2RlZmluZSBQT1JUMTAwX0NPTU1fVFlQRV9JTl8xMDZCIDB4MDdcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMTctXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTE4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcG9ydDEwMF9pbl9yZl9zZXR0aW5nIGluX3JmX3NldHRpbmdzW10gPSB7XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMC1cdFx0LmluX3NlbmRfc2V0X251bWJlciA9IDEsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTIxOlx0XHQuaW5fc2VuZF9jb21tX3R5cGUgID0gUE9SVDEwMF9DT01NX1RZUEVfSU5fMjEyRixcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjItXHRcdC5pbl9yZWN2X3NldF9udW1iZXIgPSAxNSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMjM6XHRcdC5pbl9yZWN2X2NvbW1fdHlwZSAgPSBQT1JUMTAwX0NPTU1fVFlQRV9JTl8yMTJGLFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyNC1cdH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyNi1cdFx0LmluX3NlbmRfc2V0X251bWJlciA9IDEsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTI3Olx0XHQuaW5fc2VuZF9jb21tX3R5cGUgID0gUE9SVDEwMF9DT01NX1RZUEVfSU5fNDI0RixcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjgtXHRcdC5pbl9yZWN2X3NldF9udW1iZXIgPSAxNSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMjk6XHRcdC5pbl9yZWN2X2NvbW1fdHlwZSAgPSBQT1JUMTAwX0NPTU1fVFlQRV9JTl80MjRGLFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzMC1cdH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzMi1cdFx0LmluX3NlbmRfc2V0X251bWJlciA9IDIsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTMzOlx0XHQuaW5fc2VuZF9jb21tX3R5cGUgID0gUE9SVDEwMF9DT01NX1RZUEVfSU5fMTA2QSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzQtXHRcdC5pbl9yZWN2X3NldF9udW1iZXIgPSAxNSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMzU6XHRcdC5pbl9yZWN2X2NvbW1fdHlwZSAgPSBQT1JUMTAwX0NPTU1fVFlQRV9JTl8xMDZBLFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzNi1cdH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzOC1cdFx0LmluX3NlbmRfc2V0X251bWJlciA9IDMsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTM5Olx0XHQuaW5fc2VuZF9jb21tX3R5cGUgID0gUE9SVDEwMF9DT01NX1RZUEVfSU5fMTA2QixcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDAtXHRcdC5pbl9yZWN2X3NldF9udW1iZXIgPSAxNSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNDE6XHRcdC5pbl9yZWN2X2NvbW1fdHlwZSAgPSBQT1JUMTAwX0NPTU1fVFlQRV9JTl8xMDZCLFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0Mi1cdH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTE1OD1zdHJ1Y3QgcG9ydDEwMF90Z19yZl9zZXR0aW5nIHtcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTYyLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE2MzojZGVmaW5lIFBPUlQxMDBfQ09NTV9UWVBFX1RHXzEwNkEgMHgwQlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE2NDojZGVmaW5lIFBPUlQxMDBfQ09NTV9UWVBFX1RHXzIxMkYgMHgwQ1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE2NTojZGVmaW5lIFBPUlQxMDBfQ09NTV9UWVBFX1RHXzQyNEYgMHgwRFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE2Ni1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xNjc9c3RhdGljIGNvbnN0IHN0cnVjdCBwb3J0MTAwX3RnX3JmX3NldHRpbmcgdGdfcmZfc2V0dGluZ3NbXSA9IHtcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTY5LVx0XHQudGdfc2V0X251bWJlciA9IDgsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTcwOlx0XHQudGdfY29tbV90eXBlID0gUE9SVDEwMF9DT01NX1RZUEVfVEdfMTA2QSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNzEtXHR9LFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNzMtXHRcdC50Z19zZXRfbnVtYmVyID0gOCxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNzQ6XHRcdC50Z19jb21tX3R5cGUgPSBQT1JUMTAwX0NPTU1fVFlQRV9UR18yMTJGLFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE3NS1cdH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE3Ny1cdFx0LnRnX3NldF9udW1iZXIgPSA4LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE3ODpcdFx0LnRnX2NvbW1fdHlwZSA9IFBPUlQxMDBfQ09NTV9UWVBFX1RHXzQyNEYsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTc5LVx0fSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTg0LVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE4NTojZGVmaW5lIFBPUlQxMDBfSU5fUFJPVF9JTklUSUFMX0dVQVJEX1RJTUUgICAgICAweDAwXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTg2OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0FERF9DUkMgICAgICAgICAgICAgICAgIDB4MDFcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxODc6I2RlZmluZSBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfQ1JDICAgICAgICAgICAgICAgMHgwMlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE4ODojZGVmaW5lIFBPUlQxMDBfSU5fUFJPVF9NVUxUSV9DQVJEICAgICAgICAgICAgICAweDAzXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTg5OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0FERF9QQVJJVFkgICAgICAgICAgICAgIDB4MDRcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxOTA6I2RlZmluZSBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfUEFSSVRZICAgICAgICAgICAgMHgwNVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE5MTojZGVmaW5lIFBPUlQxMDBfSU5fUFJPVF9CSVRXSVNFX0FDX1JFQ1ZfTU9ERSAgICAweDA2XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTkyOiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX1ZBTElEX0JJVF9OVU1CRVIgICAgICAgIDB4MDdcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxOTM6I2RlZmluZSBQT1JUMTAwX0lOX1BST1RfQ1JZUFRPMSAgICAgICAgICAgICAgICAgMHgwOFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE5NDojZGVmaW5lIFBPUlQxMDBfSU5fUFJPVF9BRERfU09GICAgICAgICAgICAgICAgICAweDA5XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTk1OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX1NPRiAgICAgICAgICAgICAgIDB4MEFcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxOTY6I2RlZmluZSBQT1JUMTAwX0lOX1BST1RfQUREX0VPRiAgICAgICAgICAgICAgICAgMHgwQlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE5NzojZGVmaW5lIFBPUlQxMDBfSU5fUFJPVF9DSEVDS19FT0YgICAgICAgICAgICAgICAweDBDXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTk4OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0RFQUZfVElNRSAgICAgICAgICAgICAgIDB4MEVcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxOTk6I2RlZmluZSBQT1JUMTAwX0lOX1BST1RfQ1JNICAgICAgICAgICAgICAgICAgICAgMHgwRlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIwMDojZGVmaW5lIFBPUlQxMDBfSU5fUFJPVF9DUk1fTUlOX0xFTiAgICAgICAgICAgICAweDEwXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjAxOiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX1QxX1RBR19GUkFNRSAgICAgICAgICAgIDB4MTFcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMDI6I2RlZmluZSBQT1JUMTAwX0lOX1BST1RfUkZDQSAgICAgICAgICAgICAgICAgICAgMHgxMlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIwMzojZGVmaW5lIFBPUlQxMDBfSU5fUFJPVF9HVUFSRF9USU1FX0FUX0lOSVRJQVRPUiAweDEzXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjA0OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0VORCAgICAgICAgICAgICAgICAgICAgIDB4MTRcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yMDUtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjA2OiNkZWZpbmUgUE9SVDEwMF9JTl9NQVhfTlVNX1BST1RPQ09MUyAgICAgICAgICAgIDE5XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjA3LVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIwODojZGVmaW5lIFBPUlQxMDBfVEdfUFJPVF9UVSAgICAgICAgICAgMHgwMFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIwOTojZGVmaW5lIFBPUlQxMDBfVEdfUFJPVF9SRl9PRkYgICAgICAgMHgwMVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIxMDojZGVmaW5lIFBPUlQxMDBfVEdfUFJPVF9DUk0gICAgICAgICAgMHgwMlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIxMTojZGVmaW5lIFBPUlQxMDBfVEdfUFJPVF9FTkQgICAgICAgICAgMHgwM1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTIxMi1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMTM6I2RlZmluZSBQT1JUMTAwX1RHX01BWF9OVU1fUFJPVE9DT0xTIDNcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yMTQtXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTIyMD1zdGF0aWMgY29uc3Qgc3RydWN0IHBvcnQxMDBfcHJvdG9jb2xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMjE6aW5fcHJvdG9jb2xzW11bUE9SVDEwMF9JTl9NQVhfTlVNX1BST1RPQ09MUyAmIzQzOyAxXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yMjItXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NIT1JUXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMjM6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0lOSVRJQUxfR1VBUkRfVElNRSwgICAgICA2IH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjI0Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfQ1JDLCAgICAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIyNTpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfQ1JDLCAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMjY6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX01VTFRJX0NBUkQsICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjI3Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfUEFSSVRZLCAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIyODpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfUEFSSVRZLCAgICAgICAgICAgIDEgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMjk6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0JJVFdJU0VfQUNfUkVDVl9NT0RFLCAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjMwOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9WQUxJRF9CSVRfTlVNQkVSLCAgICAgICAgNyB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIzMTpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ1JZUFRPMSwgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMzI6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9TT0YsICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjMzOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19TT0YsICAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIzNDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX0VPRiwgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMzU6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX0VPRiwgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjM2Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9ERUFGX1RJTUUsICAgICAgICAgICAgICAgNCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIzNzpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ1JNLCAgICAgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMzg6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NSTV9NSU5fTEVOLCAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjM5Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9UMV9UQUdfRlJBTUUsICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI0MDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfUkZDQSwgICAgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNDE6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0dVQVJEX1RJTUVfQVRfSU5JVElBVE9SLCA2IH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjQyOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsICAgICAgICAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI0My1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjQ0LVx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9TVEFOREFSRF0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjQ1Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9JTklUSUFMX0dVQVJEX1RJTUUsICAgICAgNiB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI0NjpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX0NSQywgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNDc6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX0NSQywgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjQ4Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9NVUxUSV9DQVJELCAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI0OTpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX1BBUklUWSwgICAgICAgICAgICAgIDEgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNTA6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX1BBUklUWSwgICAgICAgICAgICAxIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjUxOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9CSVRXSVNFX0FDX1JFQ1ZfTU9ERSwgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI1MjpcdFx0eyBQT1JUMTAwX0lOX1BST1RfVkFMSURfQklUX05VTUJFUiwgICAgICAgIDggfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNTM6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NSWVBUTzEsICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjU0Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfU09GLCAgICAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI1NTpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfU09GLCAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNTY6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9FT0YsICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjU3Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19FT0YsICAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI1ODpcdFx0eyBQT1JUMTAwX0lOX1BST1RfREVBRl9USU1FLCAgICAgICAgICAgICAgIDQgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNTk6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NSTSwgICAgICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjYwOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9DUk1fTUlOX0xFTiwgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI2MTpcdFx0eyBQT1JUMTAwX0lOX1BST1RfVDFfVEFHX0ZSQU1FLCAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNjI6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX1JGQ0EsICAgICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjYzOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9HVUFSRF9USU1FX0FUX0lOSVRJQVRPUiwgNiB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI2NDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAgICAgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yNjUtXHR9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI2Ni1cdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkRfV0lUSF9DUkNfQV0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjY3Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9JTklUSUFMX0dVQVJEX1RJTUUsICAgICAgNiB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI2ODpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX0NSQywgICAgICAgICAgICAgICAgIDEgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNjk6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX0NSQywgICAgICAgICAgICAgICAxIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjcwOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9NVUxUSV9DQVJELCAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI3MTpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX1BBUklUWSwgICAgICAgICAgICAgIDEgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNzI6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX1BBUklUWSwgICAgICAgICAgICAxIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjczOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9CSVRXSVNFX0FDX1JFQ1ZfTU9ERSwgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI3NDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfVkFMSURfQklUX05VTUJFUiwgICAgICAgIDggfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNzU6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NSWVBUTzEsICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mjc2Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfU09GLCAgICAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI3NzpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfU09GLCAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNzg6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9FT0YsICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mjc5Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19FT0YsICAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI4MDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfREVBRl9USU1FLCAgICAgICAgICAgICAgIDQgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyODE6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NSTSwgICAgICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjgyOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9DUk1fTUlOX0xFTiwgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI4MzpcdFx0eyBQT1JUMTAwX0lOX1BST1RfVDFfVEFHX0ZSQU1FLCAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyODQ6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX1JGQ0EsICAgICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mjg1Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9HVUFSRF9USU1FX0FUX0lOSVRJQVRPUiwgNiB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI4NjpcdFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAgICAgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yODctXHR9LFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yODktXHRcdC8qIG5mY19kaWdpdGFsX2ZyYW1pbmdfbmZjYV9zaG9ydCAqL1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI5MDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX0NSQywgICAgICAgICAgMiB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI5MTpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfQ1JDLCAgICAgICAgMiB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI5MjpcdFx0eyBQT1JUMTAwX0lOX1BST1RfVkFMSURfQklUX05VTUJFUiwgOCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI5MzpcdFx0eyBQT1JUMTAwX0lOX1BST1RfVDFfVEFHX0ZSQU1FLCAgICAgMiB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI5NDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI5NS1cdH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI5Ny1cdFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNhX3N0YW5kYXJkICovXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mjk4Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfQ1JDLCAgIDEgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyOTk6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX0NSQywgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMwMDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzAxLVx0fSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzAzLVx0XHQvKiBuZmNfZGlnaXRhbF9mcmFtaW5nX25mY2Ffc3RhbmRhcmRfd2l0aF9jcmNfYSAqL1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMwNDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzA1LVx0fSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzA3LVx0XHQvKiBuZmNfZGlnaXRhbF9mcmFtaW5nX25mY2Ffc3RhbmRhcmQgKi9cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMDg6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0VORCwgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTMwOS1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzEwLVx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDRl0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzExOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9JTklUSUFMX0dVQVJEX1RJTUUsICAgICAxOCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMxMjpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX0NSQywgICAgICAgICAgICAgICAgIDEgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMTM6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX0NSQywgICAgICAgICAgICAgICAxIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzE0Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9NVUxUSV9DQVJELCAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMxNTpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX1BBUklUWSwgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMTY6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX1BBUklUWSwgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzE3Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9CSVRXSVNFX0FDX1JFQ1ZfTU9ERSwgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMxODpcdFx0eyBQT1JUMTAwX0lOX1BST1RfVkFMSURfQklUX05VTUJFUiwgICAgICAgIDggfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMTk6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NSWVBUTzEsICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzIwOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfU09GLCAgICAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMyMTpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfU09GLCAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMjI6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9FT0YsICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzIzOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19FT0YsICAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMyNDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfREVBRl9USU1FLCAgICAgICAgICAgICAgIDQgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMjU6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NSTSwgICAgICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzI2Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9DUk1fTUlOX0xFTiwgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMyNzpcdFx0eyBQT1JUMTAwX0lOX1BST1RfVDFfVEFHX0ZSQU1FLCAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMjg6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX1JGQ0EsICAgICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzI5Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9HVUFSRF9USU1FX0FUX0lOSVRJQVRPUiwgNiB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMzMDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAgICAgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMzEtXHR9LFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMzMtXHRcdC8qIG5mY19kaWdpdGFsX2ZyYW1pbmdfbmZjZiAqL1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMzNDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzM1LVx0fSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzM3LVx0XHQvKiBuZmNfZGlnaXRhbF9mcmFtaW5nX25mY2YgKi9cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMzg6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0lOSVRJQUxfR1VBUkRfVElNRSwgICAgIDE4IH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzM5Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfQ1JDLCAgICAgICAgICAgICAgICAgMSB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM0MDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfQ1JDLCAgICAgICAgICAgICAgIDEgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNDE6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX01VTFRJX0NBUkQsICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzQyOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfUEFSSVRZLCAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM0MzpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfUEFSSVRZLCAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNDQ6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0JJVFdJU0VfQUNfUkVDVl9NT0RFLCAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzQ1Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9WQUxJRF9CSVRfTlVNQkVSLCAgICAgICAgOCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM0NjpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ1JZUFRPMSwgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNDc6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9TT0YsICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzQ4Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19TT0YsICAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM0OTpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX0VPRiwgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNTA6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX0VPRiwgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzUxOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9ERUFGX1RJTUUsICAgICAgICAgICAgICAgNCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM1MjpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ1JNLCAgICAgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNTM6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NSTV9NSU5fTEVOLCAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzU0Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9UMV9UQUdfRlJBTUUsICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM1NTpcdFx0eyBQT1JUMTAwX0lOX1BST1RfUkZDQSwgICAgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNTY6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0dVQVJEX1RJTUVfQVRfSU5JVElBVE9SLCA2IH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzU3Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsICAgICAgICAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM1OC1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzU5LVx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDX0RFUF9BQ1RJVkFURURdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM2MDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzYxLVx0fSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zNjItXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNCXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNjM6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0lOSVRJQUxfR1VBUkRfVElNRSwgICAgIDIwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzY0Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfQ1JDLCAgICAgICAgICAgICAgICAgMSB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM2NTpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfQ1JDLCAgICAgICAgICAgICAgIDEgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNjY6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX01VTFRJX0NBUkQsICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzY3Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfUEFSSVRZLCAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM2ODpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfUEFSSVRZLCAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNjk6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0JJVFdJU0VfQUNfUkVDVl9NT0RFLCAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzcwOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9WQUxJRF9CSVRfTlVNQkVSLCAgICAgICAgOCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM3MTpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ1JZUFRPMSwgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNzI6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9TT0YsICAgICAgICAgICAgICAgICAxIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzczOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19TT0YsICAgICAgICAgICAgICAgMSB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM3NDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX0VPRiwgICAgICAgICAgICAgICAgIDEgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNzU6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX0VPRiwgICAgICAgICAgICAgICAxIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mzc2Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9ERUFGX1RJTUUsICAgICAgICAgICAgICAgNCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM3NzpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ1JNLCAgICAgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNzg6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NSTV9NSU5fTEVOLCAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mzc5Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9UMV9UQUdfRlJBTUUsICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM4MDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfUkZDQSwgICAgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozODE6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0dVQVJEX1RJTUVfQVRfSU5JVElBVE9SLCA2IH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzgyOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsICAgICAgICAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM4My1cdH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM4NS1cdFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNiICovXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mzg2Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsICAgICAgICAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM4Ny1cdH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM4OS1cdFtORkNfRElHSVRBTF9GUkFNSU5HX0xBU1RdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM5MDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzkxLVx0fSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9Mzk0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcG9ydDEwMF9wcm90b2NvbFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM5NTp0Z19wcm90b2NvbHNbXVtQT1JUMTAwX1RHX01BWF9OVU1fUFJPVE9DT0xTICYjNDM7IDFdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM5Ni1cdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU0hPUlRdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM5NzpcdFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzk4LVx0fSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zOTktXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NUQU5EQVJEXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MDA6XHRcdHsgUE9SVDEwMF9UR19QUk9UX0VORCwgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQwMS1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDAyLVx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9TVEFOREFSRF9XSVRIX0NSQ19BXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MDM6XHRcdHsgUE9SVDEwMF9UR19QUk9UX0VORCwgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQwNC1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDA1LVx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UMVRdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQwNjpcdFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDA3LVx0fSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MDgtXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QyVF0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDA5Olx0XHR7IFBPUlQxMDBfVEdfUFJPVF9FTkQsIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MTAtXHR9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQxMS1cdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfTkZDX0RFUF0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDEyOlx0XHR7IFBPUlQxMDBfVEdfUFJPVF9UVSwgICAgIDEgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MTM6XHRcdHsgUE9SVDEwMF9UR19QUk9UX1JGX09GRiwgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQxNDpcdFx0eyBQT1JUMTAwX1RHX1BST1RfQ1JNLCAgICA3IH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDE1Olx0XHR7IFBPUlQxMDBfVEdfUFJPVF9FTkQsICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MTYtXHR9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQxNy1cdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0ZdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQxODpcdFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDE5LVx0fSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MjAtXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNGX1QzVF0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDIxOlx0XHR7IFBPUlQxMDBfVEdfUFJPVF9FTkQsIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MjItXHR9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQyMy1cdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0ZfTkZDX0RFUF0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDI0Olx0XHR7IFBPUlQxMDBfVEdfUFJPVF9UVSwgICAgIDEgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MjU6XHRcdHsgUE9SVDEwMF9UR19QUk9UX1JGX09GRiwgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQyNjpcdFx0eyBQT1JUMTAwX1RHX1BST1RfQ1JNLCAgICA3IH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDI3Olx0XHR7IFBPUlQxMDBfVEdfUFJPVF9FTkQsICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MjgtXHR9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQyOS1cdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ19ERVBfQUNUSVZBVEVEXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MzA6XHRcdHsgUE9SVDEwMF9UR19QUk9UX1JGX09GRiwgMSB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQzMTpcdFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDMyLVx0fSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDM0LVx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTEFTVF0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDM1Olx0XHR7IFBPUlQxMDBfVEdfUFJPVF9FTkQsICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MzYtXHR9LFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz01NDA9c3RhdGljIHZvaWQgcG9ydDEwMF90eF9mcmFtZV9pbml0KHZvaWQgKl9mcmFtZSwgdTggY21kX2NvZGUpXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTU0NC1cdGZyYW1lLVx1MDAzZXByZWFtYmxlID0gMDtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo1NDU6XHRmcmFtZS1cdTAwM2VzdGFydF9mcmFtZSA9IGNwdV90b19iZTE2KFBPUlQxMDBfRlJBTUVfU09GKTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo1NDY6XHRmcmFtZS1cdTAwM2VleHRlbmRlZF9mcmFtZSA9IGNwdV90b19iZTE2KFBPUlQxMDBfRlJBTUVfRVhUKTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo1NDc6XHRQT1JUMTAwX0ZSQU1FX0RJUkVDVElPTihmcmFtZSkgPSBQT1JUMTAwX0ZSQU1FX0RJUl9PVVQ7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NTQ4Olx0UE9SVDEwMF9GUkFNRV9DTUQoZnJhbWUpID0gY21kX2NvZGU7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNTQ5LVx0ZnJhbWUtXHUwMDNlZGF0YWxlbiA9IGNwdV90b19sZTE2KDIpO1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz01NTI9c3RhdGljIHZvaWQgcG9ydDEwMF90eF9mcmFtZV9maW5pc2godm9pZCAqX2ZyYW1lKVxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy01NTctXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NTU4Olx0UE9SVDEwMF9GUkFNRV9DSEVDS1NVTShmcmFtZSkgPVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTU1OS1cdFx0cG9ydDEwMF9kYXRhX2NoZWNrc3VtKGZyYW1lLVx1MDAzZWRhdGEsIGxlMTZfdG9fY3B1KGZyYW1lLVx1MDAzZWRhdGFsZW4pKTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy01NjAtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NTYxOlx0UE9SVDEwMF9GUkFNRV9QT1NUQU1CTEUoZnJhbWUpID0gMDtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy01NjItfVxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz01NzE9c3RhdGljIGJvb2wgcG9ydDEwMF9yeF9mcmFtZV9pc192YWxpZChjb25zdCB2b2lkICpfZnJhbWUpXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTU3NS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo1NzY6XHRpZiAoZnJhbWUtXHUwMDNlc3RhcnRfZnJhbWUgIT0gY3B1X3RvX2JlMTYoUE9SVDEwMF9GUkFNRV9TT0YpIHx8XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU4MjkKCQkJCQkJCW91dHB1dDogMTY4CgkJCQkJCQl0aG91Z2h0czogMTYzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiBORkMgRGlnaXRhbCBUYXJnZXQgREVQIFJlcXVlc3QgSGFuZGxpbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBpcyB0byBkZXRlcm1pbmUgdGhlIGltcGFjdCBvZiB0aGlzIHBhdGNoIGFuZCB3aGV0aGVyIGZ1enppbmcgaXMgd2FycmFudGVkLiBJIHNlZSB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYENPTkZJR19ORkNgIGFuZCBgQ09ORklHX05GQ19ESUdJVEFMYC4gTG9va2luZyBhdCBgZHJpdmVycy9uZmMvS2NvbmZpZ2AsIGl0JiMzOTtzIGV2aWRlbnQgdGhhdCBgTkZDX1NJTWAgYW5kIGBORkNfUE9SVDEwMGAgYXJlIGFsc28gcmVsZXZhbnQsIGJ1dCB0aGUgY29yZSBidWlsZGluZyBibG9ja3MgYXJlIGBORkNgIGFuZCBgTkZDX0RJR0lUQUxgLCB3aGljaCBkaXJlY3RseSBlbmFibGUgdGhlIGRpZ2l0YWwgTkZDIHByb3RvY29sIHN0YWNrLCBzcGVjaWZpY2FsbHkgYGRpZ2l0YWxfZGVwLmNgLgoKVGhlIGhlYXJ0IG9mIHRoaXMgcGF0Y2ggbGllcyB3aXRoaW4gYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2AsIHNwZWNpZmljYWxseSB0aGUgYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYCBmdW5jdGlvbi4gSXQmIzM5O3MgbWFya2VkIGBzdGF0aWNgLCBidXQsIGNydWNpYWxseSwgaXQmIzM5O3Mgbm90IGlubGluZWQgYmVjYXVzZSBpdHMgYWRkcmVzcyBpcyB0YWtlbiBhbmQgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlcjogdGhpcyBtZWFucyBpdCBnZW5lcmF0ZXMgYSB1bmlxdWUgc3ltYm9sIGFuZCBpcyBkZWZpbml0ZWx5IGEgc3BlY2lmaWMgcG9pbnQgdG8gdGFyZ2V0LiBPdGhlciByZWxhdGVkIGZ1bmN0aW9ucyBpbiBgZGlnaXRhbF9kZXAuY2AsIHN1Y2ggYXMgYGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzYCwgYGRpZ2l0YWxfdGdfc2VuZF9hdHJfcmVzX2NvbXBsZXRlYCwgYW5kIGBkaWdpdGFsX3RnX3NlbmRfcHNsX3Jlc19jb21wbGV0ZWAgYXJlIGFsc28gaW4gdGhpcyBzYW1lIGNvZGUuCgpUaGlzIHBhdGNoIGRpcmVjdGx5IG1vZGlmaWVzIHRoZSBsb2dpYyB3aXRoaW4gYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYCBhbmQsIGFmdGVyIGNhcmVmdWxseSByZXZpZXdpbmcgdGhlIGNvZGUsIGl0IGJlY29tZXMgY2xlYXIgd2hhdCYjMzk7cyBoYXBwZW5pbmcuIFRoZSBvcmlnaW5hbCBjb2RlIGhhZCBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eS4gU3BlY2lmaWNhbGx5LCB3aGVuIGhhbmRsaW5nIGEgREVQIChEYXRhIEV4Y2hhbmdlIFByb3RvY29sKSByZXF1ZXN0IHdoZXJlIHRoZSBESUQgKERldmljZSBJRCkgYml0IGlzIHNldCwgaXQgdXNlZCBhIGhhcmRjb2RlZCBpbmRleCBgM2AgdG8gYWNjZXNzIHRoZSByZXNwb25zZSBkYXRhLCBldmVuIHdoZW4gdGhlIGByZXNwLSZndDtsZW5gIHdhcyBzbWFsbGVyIHRoYW4gdGhhdCBpbmRleC4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGJ5IGNoZWNraW5nIHRoZSBib3VuZHMgb2YgYHJlc3AtJmd0O2RhdGFgIGJlZm9yZSByZWFkaW5nLCBlbnN1cmluZyB0aGUgaW5kZXggaXMgd2l0aGluIHRoZSB2YWxpZCByYW5nZSBhbmQgdXNpbmcgdGhlIGNvcnJlY3QgaW5kZXggdmlhIHRoZSBgc2l6ZWAgdmFyaWFibGUuIFRoaXMgYXZvaWRzIHRoZSBvdXQtb2YtYm91bmRzIHJlYWQgYW5kIGZpeGVzIHRoZSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSwgYnV0IGlzIHN0aWxsIHJlYWNoYWJsZSBjb2RlLgoKTm93LCBjb25zaWRlcmluZyB0aGUgcGF0Y2gmIzM5O3MgY2hhbmdlcywgdGhlIGNvcmUgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGFyZSBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgIGFuZCBwb3RlbnRpYWxseSBgZGlnaXRhbF90Z19zZW5kX2RlcF9yZXNgLiBUaGVzZSBhcmUgdGhlIHByZWNpc2UgZnVuY3Rpb25zIHdoZXJlIHRoZSBtb2RpZmllZCBsb2dpYyBpcyBpbXBsZW1lbnRlZCwgbWFraW5nIHRoZW0gdGhlIG1vc3QgcmVsZXZhbnQgZm9yIHRlc3RpbmcuCgpUbyBlbmFibGUgdGhlIGNvZGUgaW4gdGhpcyBwYXRjaCwgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9ucyBhcmUgbmVjZXNzYXJ5OiBgTkZDYCBhbmQgYE5GQ19ESUdJVEFMYC4KClRoZXJlZm9yZSwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgZnV6emluZyB0aGlzIGNvZGUgaXMgZXNzZW50aWFsLiBUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgdGFuZ2libGUgYnVnIGluIGtlcm5lbCBuZXR3b3JraW5nIE5GQyBwcm90b2NvbCBzdGFjayAoYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2ApIHRoYXQgZGlyZWN0bHkgaW52b2x2ZXMgcGFja2V0IHZhbGlkYXRpb24gYW5kIGNoZWNraW5nIGJvdW5kcyBmb3IgREVQIHJlcXVlc3QgZnJhbWVzIGluIE5GQyB0YXJnZXQgbW9kZS4gSXQmIzM5O3MgYSBjbGVhciB2dWxuZXJhYmlsaXR5IHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB0aHJvdWdoIGEgdmFyaWV0eSBvZiBORkMgZGlnaXRhbCBkZXZpY2VzLCBtYWtpbmcgZnV6emluZyBib3RoIHByYWN0aWNhbCBhbmQgY3JpdGljYWwuIEkgdGhpbmsgd2UgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDssCiAgICAmIzM0O05GQ19ESUdJVEFMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEmIzM0OywKICAgICYjMzQ7ZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBib3VuZHMgY2hlY2sgYW5kIHZhbGlkYXRpb24gbG9naWMgaW4gZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoKSB3aGVuIGhhbmRsaW5nIERFUCAoRGF0YSBFeGNoYW5nZSBQcm90b2NvbCkgcmVxdWVzdCBmcmFtZXMgd2l0aCB0aGUgRElEIGJpdCBzZXQgaW4gdGhlIE5GQyBkaWdpdGFsIHByb3RvY29sIHN0YWNrLiBQcmV2aW91c2x5LCByZWFkaW5nIHJlc3AtXHUwMDNlZGF0YVszXSBjb3VsZCBjYXVzZSBhbiBvdXQtb2YtYm91bmRzIGFjY2VzcyBpZiByZXNwLVx1MDAzZWxlbiB3YXMgaW5zdWZmaWNpZW50LiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBORkMgdGFyZ2V0IG1vZGUgY29tbXVuaWNhdGlvbiB2aWEgZW11bGF0ZWQgdmlydHVhbCBkZXZpY2VzIChuZmNzaW0pIG9yIFVTQiBORkMgZGV2aWNlcyAocG9ydDEwMCkgc3VwcG9ydGVkIGluIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkMmIzM0OywKICAgICYjMzQ7TkZDX0RJR0lUQUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSYjMzQ7LAogICAgJiMzNDtkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJvdW5kcyBjaGVjayBhbmQgdmFsaWRhdGlvbiBsb2dpYyBpbiBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSgpIHdoZW4gaGFuZGxpbmcgREVQIChEYXRhIEV4Y2hhbmdlIFByb3RvY29sKSByZXF1ZXN0IGZyYW1lcyB3aXRoIHRoZSBESUQgYml0IHNldCBpbiB0aGUgTkZDIGRpZ2l0YWwgcHJvdG9jb2wgc3RhY2suIFByZXZpb3VzbHksIHJlYWRpbmcgcmVzcC1cdTAwM2VkYXRhWzNdIGNvdWxkIGNhdXNlIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlmIHJlc3AtXHUwMDNlbGVuIHdhcyBpbnN1ZmZpY2llbnQuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIE5GQyB0YXJnZXQgbW9kZSBjb21tdW5pY2F0aW9uIHZpYSBlbXVsYXRlZCB2aXJ0dWFsIGRldmljZXMgKG5mY3NpbSkgb3IgVVNCIE5GQyBkZXZpY2VzIChwb3J0MTAwKSBzdXBwb3J0ZWQgaW4gZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjQwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6NDA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1pc3NpbmcgYm91bmRzIGNoZWNrIGluIG5ldC9uZmMvZGlnaXRhbF9kZXAuYyB3aXRoaW4gZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoKS4gUHJldmlvdXNseSwgd2hlbiBESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSB3YXMgdHJ1ZSwgcmVzcC1cdTAwM2VkYXRhWzNdIHdhcyBhY2Nlc3NlZCB3aXRob3V0IGNoZWNraW5nIGlmIHJlc3AtXHUwMDNlbGVuIHdhcyBhdCBsZWFzdCA0IGJ5dGVzIChzaXplICYjNDM7IDEpLCBwb3RlbnRpYWxseSByZXN1bHRpbmcgaW4gYW4gb3V0LW9mLWJvdW5kcyByZWFkIG9uIHRoZSByZWNlaXZlZCBza2IgYnVmZmVyLiBUaGUgcGF0Y2ggYWRkcyBgcmVzcC1cdTAwM2VsZW4gXHUwMDNjIHNpemUgJiM0MzsgMWAgdG8gcHJldmVudCB0aGlzIG91dC1vZi1ib3VuZHMgcmVhZC5cblxuVGhpcyBpcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSwgd2hpY2ggaXMgZGV0ZWN0YWJsZSBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBtYW5pcHVsYXRlIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnksIGRvZXMgbm90IGNvcHkga2VybmVsIGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIGZpZWxkcy4gVGh1cywgS01TQU4gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTg3OTJkMTE1MDNmZmM0NTFkYTU3YTU5NDBiOWE2NmU4ZDY2ZjhiYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gU2VwIDEzIDIwOjM5OjE2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25mYy9kaWdpdGFsX2RlcC5jIGIvbmV0L25mYy9kaWdpdGFsX2RlcC5jCmluZGV4IDM5ODJmYTA4NDczN2YuLmFlNTQwN2ZjYTEyZDQgMTAwNjQ0Ci0tLSBhL25ldC9uZmMvZGlnaXRhbF9kZXAuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmZjL2RpZ2l0YWxfZGVwLmMKQEAgLTExMTcsMTIgJiM0MzsxMTE3LDEyIEBAIHN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZywKIAlwZmIgPSBkZXBfcmVxLSZndDtwZmI7CiAKIAlpZiAoRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikpIHsKLQkJaWYgKGRkZXYtJmd0O2RpZCAmYW1wOyZhbXA7IChkZGV2LSZndDtkaWQgPT0gcmVzcC0mZ3Q7ZGF0YVszXSkpIHsKLQkJCXNpemUmIzQzOyYjNDM7OwotCQl9IGVsc2UgewomIzQzOwkJaWYgKHJlc3AtJmd0O2xlbiAmbHQ7IHNpemUgJiM0MzsgMSB8fCAhZGRldi0mZ3Q7ZGlkIHx8CiYjNDM7CQkgICAgZGRldi0mZ3Q7ZGlkICE9IHJlc3AtJmd0O2RhdGFbc2l6ZV0pIHsKIAkJCXJjID0gLUVJTzsKIAkJCWdvdG8gZXhpdDsKIAkJfQomIzQzOwkJc2l6ZSYjNDM7JiM0Mzs7CiAJfSBlbHNlIGlmIChkZGV2LSZndDtkaWQpIHsKIAkJcmMgPSAtRUlPOwogCQlnb3RvIGV4aXQ7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTcxCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4KCioqQW5hbHl6aW5nIHRoaXMgUGF0Y2g6IEEgRm9jdXNlZCBBcHByb2FjaCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gcGlucG9pbnQgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBiZWluZyBhbHRlcmVkIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgKndoeSouIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgemVyb2luZyBpbiBvbiBgbmV0L25mYy9kaWdpdGFsX2RlcC5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDExMTcuIEkmIzM5O2xsIHByb2JhYmx5IGZpcmUgdXAgZWl0aGVyIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCDigJMgd2hhdGV2ZXImIzM5O3MgcXVpY2tlc3QgYW5kIG1vc3QgZWZmaWNpZW50IGdpdmVuIG15IGN1cnJlbnQgZW52aXJvbm1lbnQg4oCTIHRvIGV4dHJhY3QgdGhhdCBzZWN0aW9uIG9mIHRoZSBjb2RlIGFuZCBnZXQgYSBjbGVhcmVyIHBpY3R1cmUuIE15IGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgaW50ZW50IG9mIHRoZSBjaGFuZ2UgYmVmb3JlIEkgZ28gYW55IGRlZXBlci4gVGhpcyBpbml0aWFsIGZvY3VzZWQgZXhhbWluYXRpb24gd2lsbCBnaXZlIG1lIGEgY3JpdGljYWwgZm91bmRhdGlvbiBmb3IgZnVydGhlciBhbmFseXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmZjL2RpZ2l0YWxfZGVwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDk1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDU1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEwOTU6XHRcdH1cbjEwOTY6XHRcbjEwOTc6XHRcdHJjID0gZGlnaXRhbF9za2JfcHVsbF9kZXBfc29kKGRkZXYsIHJlc3ApO1xuMTA5ODpcdFx0aWYgKHJjKSB7XG4xMDk5Olx0XHRcdFBST1RPQ09MX0VSUihcJiMzNDsxNC40LjEuMlwmIzM0Oyk7XG4xMTAwOlx0XHRcdGdvdG8gZXhpdDtcbjExMDE6XHRcdH1cbjExMDI6XHRcbjExMDM6XHRcdGlmIChyZXNwLVx1MDAzZWxlbiBcdTAwM2UgZGRldi1cdTAwM2Vsb2NhbF9wYXlsb2FkX21heCkge1xuMTEwNDpcdFx0XHRyYyA9IC1FTVNHU0laRTtcbjExMDU6XHRcdFx0Z290byBleGl0O1xuMTEwNjpcdFx0fVxuMTEwNzpcdFxuMTEwODpcdFx0c2l6ZSA9IHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3Jlcyk7XG4xMTA5Olx0XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopcmVzcC1cdTAwM2VkYXRhO1xuMTExMDpcdFxuMTExMTpcdFx0aWYgKHJlc3AtXHUwMDNlbGVuIFx1MDAzYyBzaXplIHx8IGRlcF9yZXEtXHUwMDNlZGlyICE9IERJR0lUQUxfTkZDX0RFUF9GUkFNRV9ESVJfT1VUIHx8XG4xMTEyOlx0XHQgICAgZGVwX3JlcS1cdTAwM2VjbWQgIT0gRElHSVRBTF9DTURfREVQX1JFUSkge1xuMTExMzpcdFx0XHRyYyA9IC1FSU87XG4xMTE0Olx0XHRcdGdvdG8gZXhpdDtcbjExMTU6XHRcdH1cbjExMTY6XHRcbjExMTc6XHRcdHBmYiA9IGRlcF9yZXEtXHUwMDNlcGZiO1xuMTExODpcdFxuMTExOTpcdFx0aWYgKERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpKSB7XG4xMTIwOlx0XHRcdGlmIChyZXNwLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZSAmIzQzOyAxIHx8ICFkZGV2LVx1MDAzZWRpZCB8fFxuMTEyMTpcdFx0XHQgICAgZGRldi1cdTAwM2VkaWQgIT0gcmVzcC1cdTAwM2VkYXRhW3NpemVdKSB7XG4xMTIyOlx0XHRcdFx0cmMgPSAtRUlPO1xuMTEyMzpcdFx0XHRcdGdvdG8gZXhpdDtcbjExMjQ6XHRcdFx0fVxuMTEyNTpcdFx0XHRzaXplJiM0MzsmIzQzOztcbjExMjY6XHRcdH0gZWxzZSBpZiAoZGRldi1cdTAwM2VkaWQpIHtcbjExMjc6XHRcdFx0cmMgPSAtRUlPO1xuMTEyODpcdFx0XHRnb3RvIGV4aXQ7XG4xMTI5Olx0XHR9XG4xMTMwOlx0XG4xMTMxOlx0XHRpZiAoRElHSVRBTF9ORkNfREVQX05BRF9CSVRfU0VUKHBmYikpIHtcbjExMzI6XHRcdFx0cmMgPSAtRUlPO1xuMTEzMzpcdFx0XHRnb3RvIGV4aXQ7XG4xMTM0Olx0XHR9XG4xMTM1Olx0XG4xMTM2Olx0XHRpZiAoc2l6ZSBcdTAwM2UgcmVzcC1cdTAwM2VsZW4pIHtcbjExMzc6XHRcdFx0cmMgPSAtRUlPO1xuMTEzODpcdFx0XHRnb3RvIGV4aXQ7XG4xMTM5Olx0XHR9XG4xMTQwOlx0XG4xMTQxOlx0XHRza2JfcHVsbChyZXNwLCBzaXplKTtcbjExNDI6XHRcbjExNDM6XHRcdHN3aXRjaCAoRElHSVRBTF9ORkNfREVQX1BGQl9UWVBFKHBmYikpIHtcbjExNDQ6XHRcdGNhc2UgRElHSVRBTF9ORkNfREVQX1BGQl9JX1BEVTpcbjExNDU6XHRcdFx0cHJfZGVidWcoXCYjMzQ7RElHSVRBTF9ORkNfREVQX1BGQl9JX1BEVVxcblwmIzM0Oyk7XG4xMTQ2Olx0XG4xMTQ3Olx0XHRcdGlmIChkZGV2LVx1MDAzZWF0bl9jb3VudCkge1xuMTE0ODpcdFx0XHRcdC8qIFRoZSB0YXJnZXQgaGFzIHJlY2VpdmVkIChhbmQgcmVwbGllZCB0bykgYXQgbGVhc3Qgb25lXG4xMTQ5Olx0XHRcdFx0ICogQVROIERFUF9SRVEuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMTUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRGlnaXRhbCBORkMgREVQIEJ1ZyBGaXgqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgZXhhY3RseSB3aGF0IGJ1ZyBpcyBiZWluZyBhZGRyZXNzZWQsIHNwZWNpZmljYWxseSB3aXRoaW4gYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2AuIEkmIzM5O20gc2VlaW5nIGEgY29kZSBzbmlwcGV0IGhlcmUuLi4gaXQgbG9va3MgbGlrZSBhIGNvbmRpdGlvbmFsIGJsb2NrIGRlYWxpbmcgd2l0aCBEZXZpY2UgSUQgKERJRCkgaGFuZGxpbmcgaW4gdGhlIERpZ2l0YWwgTkZDIERFUCBwcm90b2NvbC4gSSBzZWUgdGhlICYjMzQ7UHJldmlvdXNseSYjMzQ7IGNvZGUgYmxvY2ssIGFuZCBJIG5lZWQgdG8gcGllY2UgdG9nZXRoZXIgdGhlIG9yaWdpbmFsIGxvZ2ljLiBPa2F5LCBpZiB0aGUgYERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpYCBtYWNybyBpcyB0cnVlLCB0aGVuIHdlIGhhdmUgYSBESUQuIFRoZSBjb2RlIGNoZWNrcyBpZiB0aGUgZGV2aWNlIGFscmVhZHkgaGFzIGEgYGRkZXYtJmd0O2RpZGAgc2V0IGFuZCBpZiB0aGUgRElEIGluIHRoZSByZXNwb25zZSBgcmVzcC0mZ3Q7ZGF0YVszXWAgbWF0Y2hlcy4gSWYgdGhleSBtYXRjaCwgdGhlbiBgc2l6ZSYjNDM7JiM0MztgLiBJZiB0aGV5ICpkb24mIzM5O3QqIG1hdGNoLCBpdCYjMzk7cyBhbiBJL08gZXJyb3IgKGAtRUlPYCksIGFuZCB3ZSBqdW1wIHRvIHRoZSBleGl0LiBPdGhlcndpc2UsIGlmIHRoZXJlJiMzOTtzIGEgZGV2aWNlIERJRCBzZXQgKGBkZGV2LSZndDtkaWRgKSwgYnV0IGBESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKWAgaXMgKm5vdCogc2V0LCB0aGlzIGFnYWluIHJhaXNlcyBhbiBJL08gZXJyb3IuIEkgZ2V0IHRoZSBiYXNpYyBnaXN0IG9mIHRoaXMsIGJ1dCBob2xkIG9uLi4uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeS4gV2hhdCBleGFjdGx5IGlzIGByZXNwLSZndDtkYXRhWzNdYCBzdXBwb3NlZCB0byBiZSBoZXJlPyBJdCBmZWVscyBsaWtlIHNvbWV0aGluZyBpcyBtaXNzaW5nLiBJIHNob3VsZCBjaGVjayB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgYHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzYCBzdHJ1Y3R1cmUgcmlnaHQgYXdheSB0byBwcm9wZXJseSB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9kaWdpdGFsX2RlcC5jPTk0PXN0cnVjdCBkaWdpdGFsX3BzbF9yZXMge1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05OS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDA6c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMge1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMS1cdHU4IGRpcjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MjAwPWRpZ2l0YWxfc2VuZF9kZXBfZGF0YV9wcmVwKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MjAxOlx0XHRcdCAgIHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxX3Jlcyxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0yMDItXHRcdFx0ICAgc3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2gpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTUyOT1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9hY2soc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTMxLXtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1MzI6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01MzMtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01MzktXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTQwOlx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NDEtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTQyOlx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU0My1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTY2PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX25hY2soc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTY4LXtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1Njk6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzAtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzYtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTc3Olx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzgtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTc5Olx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU4MC1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTk4PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MDAte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYwMTpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYwMi1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYwOC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MDk6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYxMC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MTE6XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjEyLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz02Mjk9c3RhdGljIGludCBkaWdpdGFsX2luX3NlbmRfcnRveChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MzEte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYzMjpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYzMy1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTY0Ni1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2NDc6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTY0OC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2NDk6XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjUwLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz02ODY9c3RhdGljIHZvaWQgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02ODktXHRzdHJ1Y3QgZGlnaXRhbF9kYXRhX2V4Y2ggKmRhdGFfZXhjaCA9IGFyZztcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2OTA6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3Jlcztcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02OTEtXHR1OCBwZmI7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTc1NS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo3NTY6XHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo3NTc6XHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopcmVzcC1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTc1OC1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTA0PWludCBkaWdpdGFsX2luX3NlbmRfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05MDcte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjkwODpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkwOS1cdHN0cnVjdCBza19idWZmICpjaGFpbmluZ19za2IsICp0bXBfc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05MTEtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTEyOlx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05MTMtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTE0Olx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxNS1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTc4PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2FjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODAte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk4MTpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk4Mi1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk4OC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5ODk6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk5MC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5OTE6XHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTkyLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDI0PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMjUte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMjY6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3Jlcztcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDI3LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAzMy1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDM0Olx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDM1LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMzY6XHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAzNy1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTA3Nz1zdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwODAtXHRpbnQgcmM7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA4MTpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwODItXHR1OCBwZmI7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExMDctXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTEwODpcdHNpemUgPSBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjExMDk6XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopcmVzcC1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExMTAtXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEyOTc9aW50IGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTI5OC17XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTI5OTpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMDAtXHRzdHJ1Y3Qgc2tfYnVmZiAqY2hhaW5pbmdfc2tiLCAqdG1wX3NrYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwMi1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzAzOlx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzA0LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzMDU6XHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjMwOAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBgZGlnaXRhbF9kZXAuY2AgQ29kZSoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2AgZmlsZSwgc3BlY2lmaWNhbGx5IGxpbmVzIDk1IHRocm91Z2ggMTEwLiBLbm93aW5nIHRoZSBORkMgc3RhY2sgcHJldHR5IHdlbGwsIEkgY2FuIGxpa2VseSBndWVzcyB3aGF0JiMzOTtzIGdvaW5nIG9uIGluIHRoYXQgc2VjdGlvbi4gR2l2ZW4gdGhlIGNvbnRleHQsIEkmIzM5O20gcHJvYmFibHkgbG9va2luZyBhdCBzb21lIGNvcmUgZGlnaXRhbCBkYXRhIGV4Y2hhbmdlIGZ1bmN0aW9uLCBwb3NzaWJseSBpbml0aWFsaXphdGlvbiwgZXJyb3IgaGFuZGxpbmcsIG9yIHRoZSBkaXNwYXRjaGluZyBsb2dpYyBmb3IgdGhlIHByb3RvY29sLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoZXJlJiMzOTtzIGEgZ29vZCBjaGFuY2UgdGhpcyBpcyB0aGUgaGVhcnQgb2YgdGhlIERpZ2l0YWwgRGF0YSBFeGNoYW5nZSAoRERFUCkgbGF5ZXIuIFRoaXMgcGFydCBpcyBsaWtlbHkgY3J1Y2lhbCBmb3IgZGV0ZXJtaW5pbmcgaG93IGRpZmZlcmVudCBORkMgcmVhZGVycyBhbmQgZGV2aWNlcyBjb21tdW5pY2F0ZS4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGlzIGNvZGUgaXMgZnVuY3Rpb25pbmcgYXMgZXhwZWN0ZWQgaW4gY2FzZSB0aGVyZSBhcmUgYnVncyB0byBiZSBmb3VuZC4gVGltZSB0byBnZXQgbXkgZXllcyBvbiBpdCBhbmQgc2VlIHdoYXQgaXQmIzM5O3MgZG9pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25mYy9kaWdpdGFsX2RlcC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA5NTpcdFx0dTggZGlyO1xuICA5NjpcdFx0dTggY21kO1xuICA5NzpcdFx0dTggZGlkO1xuICA5ODpcdH0gX19wYWNrZWQ7XG4gIDk5Olx0XG4gMTAwOlx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMge1xuIDEwMTpcdFx0dTggZGlyO1xuIDEwMjpcdFx0dTggY21kO1xuIDEwMzpcdFx0dTggcGZiO1xuIDEwNDpcdH0gX19wYWNrZWQ7XG4gMTA1Olx0XG4gMTA2Olx0c3RhdGljIHZvaWQgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxuIDEwNzpcdFx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcbiAxMDg6XHRzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG4gMTA5Olx0XHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xuIDExMDpcdFxuIDExMTpcdHN0YXRpYyBjb25zdCB1OCBkaWdpdGFsX3BheWxvYWRfYml0c19tYXBbNF0gPSB7XG4gMTEyOlx0XHRbMF0gPSA2NCxcbiAxMTM6XHRcdFsxXSA9IDEyOCxcbiAxMTQ6XHRcdFsyXSA9IDE5MixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg3MgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDQ0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBhIFBvdGVudGlhbCBPdXQtb2YtQm91bmRzIFJlYWQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UmIzM5O3ZlIGdvdCBhIHN0cnVjdHVyZSwgYHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzYCwgd2hpY2ggaXMsIGFzIGV4cGVjdGVkLCBvZiBzaXplIDMgYnl0ZXM6IGBkaXJgLCBgY21kYCwgYW5kIGBwZmJgLiBTaW1wbGUgZW5vdWdoLiBUaGUgY29kZSB0aGVuIHVzZXMgYHNpemVvZmAgdG8gZGV0ZXJtaW5lIHRoaXMgc2l6ZS4KCk5vdywgaW4gdGhlIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgZnVuY3Rpb24sIHRoZXJlJiMzOTtzIGFuIGluaXRpYWwgY2hlY2sgZW5zdXJpbmcgYHJlc3AtJmd0O2xlbiAmZ3Q7PSAzYC4gVGhpcyBzZWVtcyByZWFzb25hYmxlLCBndWFyYW50ZWVpbmcgd2UgaGF2ZSBhdCBsZWFzdCB0aGUgYmFzaWMgc3RydWN0dXJlIGRhdGEuIEhvd2V2ZXIsIGhlcmUmIzM5O3Mgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gV2UgY2hlY2sgaWYgYSBzcGVjaWZpYyBiaXQgaXMgc2V0IGluIGBwZmJgIHVzaW5nIGBESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKWAuIElmIHRoYXQgYml0IGlzIGluZGVlZCBzZXQsIGl0IHRoZW4gcHJvY2VlZHMgdG8gcmVhZCBgcmVzcC0mZ3Q7ZGF0YVszXWAgd2l0aG91dCAqZmlyc3QqIHZlcmlmeWluZyB0aGF0IGByZXNwLSZndDtsZW5gIGlzLCBhdCBtaW5pbXVtLCA0ISBJdCBhbHNvIGNoZWNrcyBgZGRldi0mZ3Q7ZGlkYCBidXQgbm90IHRoZSBsZW5ndGghCgpTcGVjaWZpY2FsbHksIHRoZSBjb2RlIHRoZW4gY2hlY2tzIGBkZGV2LSZndDtkaWQgJmFtcDsmYW1wOyAoZGRldi0mZ3Q7ZGlkID09IHJlc3AtJmd0O2RhdGFbM10pYC4gSWYgdGhpcyBjb25kaXRpb24gaG9sZHMsIGl0IGluY3JlbWVudHMgdGhlIHNpemUuIEhvd2V2ZXIsIHdoYXQgaWYgYHJlc3AtJmd0O2xlbmAgaXMgcHJlY2lzZWx5IDM/IFRoZW4gYHJlc3AtJmd0O2RhdGFbM11gIGJlY29tZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkISBUaGlzIGlzIGEgY2xhc3NpYyBidWZmZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSwgZXZlbiBpZiBpdCYjMzk7cyBhIHNtYWxsIG9uZS4gVGhlIHN1Z2dlc3RlZCBwYXRjaCBpcyBzcG90IG9uLiBJdCBjb3JyZWN0bHkgaW5jbHVkZXMgYSBsZW5ndGggY2hlY2suIEl0IG5vdyBjaGVja3MgZm9yOiBgcmVzcC0mZ3Q7bGVuICZsdDsgc2l6ZSAmIzQzOyAxYCBiZWZvcmUgYWNjZXNzaW5nIGByZXNwLSZndDtkYXRhW3NpemVdYC4KCkZpbmFsbHksIGl0JiMzOTtzIGFsc28gd29ydGggY2hlY2tpbmcgYGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzYCB0byBzZWUgaWYgdGhlcmUmIzM5O3Mgc2ltaWxhciBsb2dpYyB0aGVyZSB0aGF0IG5lZWRzIHRvIGJlIGFkZHJlc3NlZC4gV2Ugc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgZml4IHRvIGVuc3VyZSB0aGUgaXNzdWUgaXMgY29tcGxldGVseSBlbGltaW5hdGVkIGZyb20gdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9kaWdpdGFsX2RlcC5jLTUyLSNkZWZpbmUgRElHSVRBTF9ORkNfREVQX05BRF9CSVRfU0VUKHBmYikgKChwZmIpIFx1MDAyNiAweDA4KVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjUzOiNkZWZpbmUgRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikgKChwZmIpIFx1MDAyNiBESUdJVEFMX05GQ19ERVBfUEZCX0RJRF9CSVQpXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTQtI2RlZmluZSBESUdJVEFMX05GQ19ERVBfUEZCX1BOSShwZmIpICAgICAoKHBmYikgXHUwMDI2IDB4MDMpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTY4Nj1zdGF0aWMgdm9pZCBkaWdpdGFsX2luX3JlY3ZfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTc2Ni1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo3Njc6XHRpZiAoRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikpIHtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy03NjgtXHRcdFBST1RPQ09MX0VSUihcJiMzNDsxNC44LjIuMVwmIzM0Oyk7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEwNzc9c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTE4LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjExMTk6XHRpZiAoRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikpIHtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTIwLVx0XHRpZiAocmVzcC1cdTAwM2VsZW4gXHUwMDNjIHNpemUgJiM0MzsgMSB8fCAhZGRldi1cdTAwM2VkaWQgfHxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODE2NgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGRlZXAgaW4gbXkgZG9tYWluIGV4cGVydGlzZSBhbmQgYW5hbHl6aW5nIHRoYXQgY29kZSBzbmlwcGV0OgoKKipEZWNvZGluZyBgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXNgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXNgIHNpdHVhdGlvbi4gTGluZXMgNzY2LTc3NS4uLiByaWdodC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoYXQmIzM5O3MgdGhlIGNvbnRleHQgaGVyZT8gSXMgdGhpcyBhIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyLCBhIHNwZWNpZmljIGRyaXZlciwgb3Igc29tZSBjb3JlIGNvbW11bmljYXRpb24gcHJvdG9jb2w/IEtub3dpbmcgdGhhdCB3aWxsIGRyYXN0aWNhbGx5IGFmZmVjdCBob3cgSSBhcHByb2FjaCB0aGlzLiBCYXNlZCBvbiB0aGUgdmFyaWFibGUgbmFtZSwgSSYjMzk7bSBndWVzc2luZyBpdCBkZWFscyB3aXRoIGRpZ2l0YWwgaW5wdXQgcmVjZXB0aW9uIGFuZCwgY3J1Y2lhbGx5LCBzb21lIGtpbmQgb2YgZGVwZW5kZW5jeSByZXNvbHV0aW9uLiAmIzM0O0RlcGVuZGVuY3kgcmVzb2x1dGlvbiYjMzQ7IGlzIHRoZSBrZXkuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgZGF0YSBpbnRlZ3JpdHkgY2hlY2s/IEhhcmR3YXJlIGhhbmRzaGFrZSBzeW5jaHJvbml6YXRpb24/IE9yIG1heWJlIGludGVycnVwdCBoYW5kbGluZyBzeW5jaHJvbml6YXRpb24/CgpJIG5lZWQgdG8gcXVpY2tseSBncmFzcCB0aGUgbG9naWNhbCBmbG93OiB3aGF0IHNpZ25hbHMgb3IgZXZlbnRzIGFyZSBpbml0aWF0aW5nIHRoaXM/IElzIGl0IGEgcmlzaW5nIGVkZ2UsIGEgZmFsbGluZyBlZGdlLCBhIHNwZWNpZmljIGJpdCBwYXR0ZXJuPyBXaGF0JiMzOTtzIGJlaW5nICpyZXNvbHZlZCo/IElzIGl0IGEgcmVzb3VyY2UgY29udGVudGlvbiBpc3N1ZT8gQSB0aW1pbmcgcHJvYmxlbSB3aXRoIGV4dGVybmFsIGRpZ2l0YWwgaW5wdXQ/IEFyZSB3ZSBkZWFsaW5nIHdpdGggYW4gaW50ZXJydXB0IHRoYXQgbmVlZHMgdG8gYWNrbm93bGVkZ2UgYSBoYXJkd2FyZSBzaWduYWwsIGFuZCB3ZSBhcmUgbWFuYWdpbmcgdGhlIHJlcXVpcmVkIGRlcGVuZGVuY2llcz8KCkkmIzM5O20gbWVudGFsbHkgc3RlcHBpbmcgdGhyb3VnaCBlYWNoIGxpbmUuIExpbmUgNzY2OiB3aGF0IHN0YXJ0cyBpdCBhbGw/IFRoZW4gSSYjMzk7bGwgd29yayBmb3J3YXJkLiBEb2VzIHRoZSBjb2RlIGJyYW5jaD8gSSYjMzk7bSBsb29raW5nIGZvciBhbnkgY29uZGl0aW9uYWwgc3RhdGVtZW50cyDigJMgaWZzLCB3aGlsZXMsIHN3aXRjaGVzIOKAkyB0aGF0IGltcGFjdCBleGVjdXRpb24gcGF0aCwgYmVjYXVzZSB0aG9zZSB3aWxsIGJlIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQgcG9zc2libGUgcmFjZSBjb25kaXRpb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3JzLiBJJiMzOTtsbCBtZW50YWxseSBzdWJzdGl0dXRlIHZhcmlhYmxlcyB0byB1bmRlcnN0YW5kIGhvdyBkYXRhIGlzIHVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVwZW5kYW5jaWVzLgoKSSYjMzk7bSBtZW50YWxseSBidWlsZGluZyB0aGUgY29udHJvbCBmbG93LiBFcnJvciBoYW5kbGluZyB3aWxsIGJlIGNyaXRpY2FsLCBzbyBJJiMzOTttIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGVycm9yIGNvZGVzIG9yIGZsYWdzIHRoYXQgbWlnaHQgYmUgc2V0IG9yIGNoZWNrZWQuIFdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgZmFpbHVyZSBtb2Rlcz8gRG9lcyBpdCBsb2cgZXJyb3JzPyBUaGlzIGlzIGxpa2VseSBhIGNyaXRpY2FsIHNlY3Rpb24gb2YgdGhlIGNvZGUsIGdpdmVuIHRoZSBkZXBlbmRlbmN5IGFzcGVjdCBvZiBpdCwgc28gcmFjZSBjb25kaXRpb25zIGFyZSBvbiBteSBtaW5kLiBBbnkgcG9zc2liaWxpdHkgb2YgYSBtdXRleCBvciBpbnRlcnJ1cHQgZGlzYWJsZSB3aXRoaW4gdGhpcyBzZWN0aW9uIG9mIGNvZGU/CgpJbiBhIGdvb2QgZGVzaWduLCB0aGlzIHJlc29sdXRpb24gc3RlcCBzaG91bGQgYmUgYXRvbWljIG9yIGhpZ2hseSB0aW1lLXNlbnNpdGl2ZSB0byBwcmV2ZW50IGNvcnJ1cHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25mYy9kaWdpdGFsX2RlcC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzY1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA3NjU6XHRcdHBmYiA9IGRlcF9yZXMtXHUwMDNlcGZiO1xuIDc2NjpcdFxuIDc2NzpcdFx0aWYgKERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpKSB7XG4gNzY4Olx0XHRcdFBST1RPQ09MX0VSUihcJiMzNDsxNC44LjIuMVwmIzM0Oyk7XG4gNzY5Olx0XHRcdHJjID0gLUVJTztcbiA3NzA6XHRcdFx0Z290byBlcnJvcjtcbiA3NzE6XHRcdH1cbiA3NzI6XHRcbiA3NzM6XHRcdGlmIChESUdJVEFMX05GQ19ERVBfTkFEX0JJVF9TRVQocGZiKSkge1xuIDc3NDpcdFx0XHRyYyA9IC1FSU87XG4gNzc1Olx0XHRcdGdvdG8gZXhpdDtcbiA3NzY6XHRcdH1cbiA3Nzc6XHRcbiA3Nzg6XHRcdGlmIChzaXplIFx1MDAzZSByZXNwLVx1MDAzZWxlbikge1xuIDc3OTpcdFx0XHRyYyA9IC1FSU87XG4gNzgwOlx0XHRcdGdvdG8gZXJyb3I7XG4gNzgxOlx0XHR9XG4gNzgyOlx0XG4gNzgzOlx0XHRza2JfcHVsbChyZXNwLCBzaXplKTtcbiA3ODQ6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODkzNgoJCQkJCQkJb3V0cHV0OiAyMDYKCQkJCQkJCXRob3VnaHRzOiAxMjg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktNU0FOIEFzc2Vzc21lbnQ6IERpZ2l0YWwgTkZDIERFUCBSZXF1ZXN0IEhhbmRsaW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEluIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAsIHRoZSBjb3JlIGlzc3VlIHdhcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQuIFByZXZpb3VzbHksIHRoZSBjb2RlIGFjY2Vzc2VkIGByZXNwLSZndDtkYXRhWzNdYCB3aXRob3V0IHZlcmlmeWluZyBpZiBgcmVzcC0mZ3Q7bGVuYCB3YXMgbG9uZyBlbm91Z2guIElmIGByZXNwLSZndDtsZW5gIHdhcyAzLCB3ZSBoYWQgYSBjbGFzc2ljIG91dC1vZi1ib3VuZHMgcmVhZCBzY2VuYXJpby4gVGhlIHBhdGNoIGFkZHMgYSBjcnVjaWFsIGJvdW5kcyBjaGVjazogYGlmIChyZXNwLSZndDtsZW4gJmx0OyBzaXplICYjNDM7IDEgLi4uKWAgYmVmb3JlIGFjY2Vzc2luZyB0aGUgYHJlc3AtJmd0O2RhdGFgIGJ1ZmZlci4gIGBzaXplYCBpcyB0aGVuIGluY3JlbWVudGVkLCBhbmQgdGhlcmUmIzM5O3MgYSBmaW5hbCBjaGVjayBgaWYgKHNpemUgJmd0OyByZXNwLSZndDtsZW4pYCBsYXRlci4gVGhpcyBlbnN1cmVzIGFsbCBhY2Nlc3NlcyBzdGF5IHdpdGhpbiB0aGUgYWxsb2NhdGVkIGByZXNwLSZndDtkYXRhYCBib3VuZGFyaWVzLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uOiBkb2VzIHRoaXMgd2FycmFudCBhIEtNU0FOIHJ1bj8gVGhlIGFuc3dlciBpcyBhIGNsZWFyICYjMzQ7bm8mIzM0Oy4gTGV0JiMzOTtzIHJ1biB0aHJvdWdoIHRoZSBjaGVja2xpc3Q6CgoqICAgKipObyB1c2VyLXNwYWNlIGluZm9ybWF0aW9uIGxlYWtzOioqIE5vIGBjb3B5X3RvX3VzZXJgLCBgcHV0X3VzZXJgLCBuZXRsaW5rIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCwgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzIGFyZSBpbnZvbHZlZCB3aGVyZSBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIG1lbW9yeSBjb3VsZCBiZSBleHBvc2VkIHRvIHRoZSB1c2VyLgoqICAgKipObyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBvciBicmFuY2hpbmc6KiogQWxsIHZhcmlhYmxlcyB1c2VkIGluIGNvbmRpdGlvbmFsIGxvZ2ljIChgcmVzcC0mZ3Q7bGVuYCwgYHNpemVgLCBgZGRldi0mZ3Q7ZGlkYCwgYHJlc3AtJmd0O2RhdGFbc2l6ZV1gKSBhcmUgZWl0aGVyIGluaXRpYWxpemVkIG9yIGRlcml2ZWQgZnJvbSBpbml0aWFsaXplZCB2YWx1ZXMuIFRoZSBjb2RlICpmaXhlcyogYSBib3VuZHMgaXNzdWUgcmF0aGVyIHRoYW4gaW50cm9kdWNpbmcgYSBuZXcgb25lLgoqICAgKipObyBuZXcgYWxsb2NhdGlvbnMgb3IgaW5pdGlhbGl6YXRpb24gcmlza3M6KiogVGhlIHBhdGNoIGRvZXNuJiMzOTt0IGFkZCBhbnkgbmV3IGFsbG9jYXRpb25zIG9yIGNoYW5nZSBleGlzdGluZyBvbmVzIGluIGEgd2F5IHRoYXQgY291bGQgbGVhZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeS4KKiAgICoqVGhlIHBhdGNoICpzdHJlbmd0aGVucyogYm91bmRzIGNoZWNrczoqKiBJdCAqYWRkcyogYSBjaGVjazogYHJlc3AtJmd0O2xlbiAmbHQ7IHNpemUgJiM0MzsgMWAsIGFuZCB1c2VzIGBzaXplYCBpbnN0ZWFkIG9mIGhhcmRjb2RlZCBgM2AsIGVuc3VyaW5nIGFsbCBhY2Nlc3NlcyBhcmUgd2l0aGluIHRoZSBib3VuZHMgb2YgYHJlc3BgLiBUaGUgaW5pdGlhbCBjaGVjayB3YXMgbWlzc2luZywgbWVhbmluZyB0aGF0IHdhcyB0aGUgdnVsbmVyYWJpbGl0eS4KCldlIG5lZWQgdG8gYmUgY3J5c3RhbCBjbGVhciBvbiB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBLQVNBTiBhbmQgS01TQU4uICBLQVNBTiBpcyBkZXNpZ25lZCB0byBjYXRjaCBvdXQtb2YtYm91bmRzIHJlYWRzIGFuZCB3cml0ZXMsIHdoaWNoIGlzICpleGFjdGx5KiB0aGUgdHlwZSBvZiBidWcgdGhpcyBwYXRjaCBhZGRyZXNzZXMuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggc2tiIGRhdGEgKHJlY2VpdmVkIGZyb20gYSBkZXZpY2Ugb3Igc29ja2V0KS4gVGhpcyBkYXRhIGlzIGluaXRpYWxpemVkIHdpdGggdGhlIHJlY2VpdmVkIHBhY2tldC4gQW55IGF0dGVtcHQgdG8gcmVhZCBiZXlvbmQgdGhlIGJvdW5kYXJpZXMgb2YgdGhpcyBkYXRhIGlzIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzLCB3aGljaCBLQVNBTiBpcyBidWlsdCB0byBkZXRlY3QuIEtNU0FOLCBvbiB0aGUgb3RoZXIgaGFuZCwgZGVhbHMgd2l0aCB1c2VzIG9mICp1bmluaXRpYWxpemVkKiBtZW1vcnkuCgpUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrcyBvZiB1c2luZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmUmIzM5O3Mgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrLCB3aGljaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gVGhlIGVudGlyZSBwcm9ibGVtIGlzIHRoYXQgYHJlc3AtJmd0O2RhdGFgIG1heSBiZSBhY2Nlc3NlZCBvdXQtb2YtYm91bmRzLiBUaGUgcGF0Y2ggZW5mb3JjZXMgYSBjaGVjayB0byBrZWVwIGl0IGluLWJvdW5kcy4KClRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gYXZvaWQgS01TQU4gaWYgdGhlIGlzc3VlIGlzIGNhdWdodCBieSBLQVNBTiwgYW5kIHRoaXMgaXMgZGVmaW5pdGl2ZWx5IGEgS0FTQU4gYnVnLiBUaGlzIGlzc3VlIGlzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBhbmQgaXMgKm5vdCogYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuIFRoZSBwYXRjaCBhZGRyZXNzZXMgYW5kIHByZXZlbnRzIGFuIG91dC1vZi1ib3VuZHMgcmVhZC4gIEtNU0FOIGlzIG5vdCBuZWVkZWQgaGVyZS4gVGhlIHJlYXNvbmluZyBpcyBjbGVhciwgZGV0YWlsZWQsIGFjY3VyYXRlLCBhbmQgaGlnaGxpZ2h0cyB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBLQVNBTiBhbmQgS01TQU4uIFRoZSBhbnN3ZXIgaXMgTmVlZHNLTVNBTiA9IGZhbHNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1pc3NpbmcgYm91bmRzIGNoZWNrIGluIG5ldC9uZmMvZGlnaXRhbF9kZXAuYyB3aXRoaW4gZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoKS4gUHJldmlvdXNseSwgd2hlbiBESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSB3YXMgdHJ1ZSwgcmVzcC1cdTAwM2VkYXRhWzNdIHdhcyBhY2Nlc3NlZCB3aXRob3V0IGNoZWNraW5nIGlmIHJlc3AtXHUwMDNlbGVuIHdhcyBhdCBsZWFzdCA0IGJ5dGVzIChzaXplICYjNDM7IDEpLCBwb3RlbnRpYWxseSByZXN1bHRpbmcgaW4gYW4gb3V0LW9mLWJvdW5kcyByZWFkIG9uIHRoZSByZWNlaXZlZCBza2IgYnVmZmVyLiBUaGUgcGF0Y2ggYWRkcyBgcmVzcC1cdTAwM2VsZW4gXHUwMDNjIHNpemUgJiM0MzsgMWAgdG8gcHJldmVudCB0aGlzIG91dC1vZi1ib3VuZHMgcmVhZC5cblxuVGhpcyBpcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSwgd2hpY2ggaXMgZGV0ZWN0YWJsZSBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBtYW5pcHVsYXRlIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnksIGRvZXMgbm90IGNvcHkga2VybmVsIGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIGZpZWxkcy4gVGh1cywgS01TQU4gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtaXNzaW5nIGJvdW5kcyBjaGVjayBpbiBuZXQvbmZjL2RpZ2l0YWxfZGVwLmMgd2l0aGluIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKCkuIFByZXZpb3VzbHksIHdoZW4gRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikgd2FzIHRydWUsIHJlc3AtXHUwMDNlZGF0YVszXSB3YXMgYWNjZXNzZWQgd2l0aG91dCBjaGVja2luZyBpZiByZXNwLVx1MDAzZWxlbiB3YXMgYXQgbGVhc3QgNCBieXRlcyAoc2l6ZSAmIzQzOyAxKSwgcG90ZW50aWFsbHkgcmVzdWx0aW5nIGluIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBvbiB0aGUgcmVjZWl2ZWQgc2tiIGJ1ZmZlci4gVGhlIHBhdGNoIGFkZHMgYHJlc3AtXHUwMDNlbGVuIFx1MDAzYyBzaXplICYjNDM7IDFgIHRvIHByZXZlbnQgdGhpcyBvdXQtb2YtYm91bmRzIHJlYWQuXG5cblRoaXMgaXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHksIHdoaWNoIGlzIGRldGVjdGFibGUgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbWFuaXB1bGF0ZSB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5LCBkb2VzIG5vdCBjb3B5IGtlcm5lbCBkYXRhIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgYmFzZWQgb24gdW5pbml0aWFsaXplZCBmaWVsZHMuIFRodXMsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6Mzk6MTcuNzIyNDY4MzUyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExODA4MTQ5MDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ1wiLFxuICAgIFwiTkZDX0RJR0lUQUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcVwiLFxuICAgIFwiZGlnaXRhbF90Z19zZW5kX2RlcF9yZXNcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWlzc2luZyBib3VuZHMgY2hlY2sgaW4gbmV0L25mYy9kaWdpdGFsX2RlcC5jIHdpdGhpbiBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSgpLiBQcmV2aW91c2x5LCB3aGVuIERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpIHdhcyB0cnVlLCByZXNwLVxcdTAwM2VkYXRhWzNdIHdhcyBhY2Nlc3NlZCB3aXRob3V0IGNoZWNraW5nIGlmIHJlc3AtXFx1MDAzZWxlbiB3YXMgYXQgbGVhc3QgNCBieXRlcyAoc2l6ZSArIDEpLCBwb3RlbnRpYWxseSByZXN1bHRpbmcgaW4gYW4gb3V0LW9mLWJvdW5kcyByZWFkIG9uIHRoZSByZWNlaXZlZCBza2IgYnVmZmVyLiBUaGUgcGF0Y2ggYWRkcyBgcmVzcC1cXHUwMDNlbGVuIFxcdTAwM2Mgc2l6ZSArIDFgIHRvIHByZXZlbnQgdGhpcyBvdXQtb2YtYm91bmRzIHJlYWQuXFxuXFxuVGhpcyBpcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSwgd2hpY2ggaXMgZGV0ZWN0YWJsZSBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBtYW5pcHVsYXRlIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnksIGRvZXMgbm90IGNvcHkga2VybmVsIGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIGZpZWxkcy4gVGh1cywgS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYm91bmRzIGNoZWNrIGFuZCB2YWxpZGF0aW9uIGxvZ2ljIGluIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKCkgd2hlbiBoYW5kbGluZyBERVAgKERhdGEgRXhjaGFuZ2UgUHJvdG9jb2wpIHJlcXVlc3QgZnJhbWVzIHdpdGggdGhlIERJRCBiaXQgc2V0IGluIHRoZSBORkMgZGlnaXRhbCBwcm90b2NvbCBzdGFjay4gUHJldmlvdXNseSwgcmVhZGluZyByZXNwLVxcdTAwM2VkYXRhWzNdIGNvdWxkIGNhdXNlIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlmIHJlc3AtXFx1MDAzZWxlbiB3YXMgaW5zdWZmaWNpZW50LiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBORkMgdGFyZ2V0IG1vZGUgY29tbXVuaWNhdGlvbiB2aWEgZW11bGF0ZWQgdmlydHVhbCBkZXZpY2VzIChuZmNzaW0pIG9yIFVTQiBORkMgZGV2aWNlcyAocG9ydDEwMCkgc3VwcG9ydGVkIGluIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDozOToxNy43MjI0NzM0NzJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTc1ODgzMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxODc5MmQxMTUwM2ZmYzQ1MWRhNTdhNTk0MGI5YTY2ZThkNjZmOGJiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gU2VwIDEzIDIwOjM5OjE2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9uZmMvZGlnaXRhbF9kZXAuYyBiL25ldC9uZmMvZGlnaXRhbF9kZXAuY1xcbmluZGV4IDM5ODJmYTA4NDczN2YuLmFlNTQwN2ZjYTEyZDQgMTAwNjQ0XFxuLS0tIGEvbmV0L25mYy9kaWdpdGFsX2RlcC5jXFxuKysrIGIvbmV0L25mYy9kaWdpdGFsX2RlcC5jXFxuQEAgLTExMTcsMTIgKzExMTcsMTIgQEAgc3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbiBcXHRwZmIgPSBkZXBfcmVxLVxcdTAwM2VwZmI7XFxuIFxcbiBcXHRpZiAoRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikpIHtcXG4tXFx0XFx0aWYgKGRkZXYtXFx1MDAzZWRpZCBcXHUwMDI2XFx1MDAyNiAoZGRldi1cXHUwMDNlZGlkID09IHJlc3AtXFx1MDAzZWRhdGFbM10pKSB7XFxuLVxcdFxcdFxcdHNpemUrKztcXG4tXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0aWYgKHJlc3AtXFx1MDAzZWxlbiBcXHUwMDNjIHNpemUgKyAxIHx8ICFkZGV2LVxcdTAwM2VkaWQgfHxcXG4rXFx0XFx0ICAgIGRkZXYtXFx1MDAzZWRpZCAhPSByZXNwLVxcdTAwM2VkYXRhW3NpemVdKSB7XFxuIFxcdFxcdFxcdHJjID0gLUVJTztcXG4gXFx0XFx0XFx0Z290byBleGl0O1xcbiBcXHRcXHR9XFxuK1xcdFxcdHNpemUrKztcXG4gXFx0fSBlbHNlIGlmIChkZGV2LVxcdTAwM2VkaWQpIHtcXG4gXFx0XFx0cmMgPSAtRUlPO1xcbiBcXHRcXHRnb3RvIGV4aXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjM5OjE5LjE4MDcwMjc3N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NzM1Njk2NTQ3ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZDXCIsXG4gICAgXCJORkNfRElHSVRBTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxXCIsXG4gICAgXCJkaWdpdGFsX3RnX3NlbmRfZGVwX3Jlc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYm91bmRzIGNoZWNrIGFuZCB2YWxpZGF0aW9uIGxvZ2ljIGluIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKCkgd2hlbiBoYW5kbGluZyBERVAgKERhdGEgRXhjaGFuZ2UgUHJvdG9jb2wpIHJlcXVlc3QgZnJhbWVzIHdpdGggdGhlIERJRCBiaXQgc2V0IGluIHRoZSBORkMgZGlnaXRhbCBwcm90b2NvbCBzdGFjay4gUHJldmlvdXNseSwgcmVhZGluZyByZXNwLVxcdTAwM2VkYXRhWzNdIGNvdWxkIGNhdXNlIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlmIHJlc3AtXFx1MDAzZWxlbiB3YXMgaW5zdWZmaWNpZW50LiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBORkMgdGFyZ2V0IG1vZGUgY29tbXVuaWNhdGlvbiB2aWEgZW11bGF0ZWQgdmlydHVhbCBkZXZpY2VzIChuZmNzaW0pIG9yIFVTQiBORkMgZGV2aWNlcyAocG9ydDEwMCkgc3VwcG9ydGVkIGluIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDE4NzkyZDExNTAzZmZjNDUxZGE1N2E1OTQwYjlhNjZlOGQ2NmY4YmJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCAxMyAyMDozOToxNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZmMvZGlnaXRhbF9kZXAuYyBiL25ldC9uZmMvZGlnaXRhbF9kZXAuY1xuaW5kZXggMzk4MmZhMDg0NzM3Zi4uYWU1NDA3ZmNhMTJkNCAxMDA2NDRcbi0tLSBhL25ldC9uZmMvZGlnaXRhbF9kZXAuY1xuKysrIGIvbmV0L25mYy9kaWdpdGFsX2RlcC5jXG5AQCAtMTExNywxMiArMTExNywxMiBAQCBzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG4gXHRwZmIgPSBkZXBfcmVxLVx1MDAzZXBmYjtcbiBcbiBcdGlmIChESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSkge1xuLVx0XHRpZiAoZGRldi1cdTAwM2VkaWQgXHUwMDI2XHUwMDI2IChkZGV2LVx1MDAzZWRpZCA9PSByZXNwLVx1MDAzZWRhdGFbM10pKSB7XG4tXHRcdFx0c2l6ZSsrO1xuLVx0XHR9IGVsc2Uge1xuK1x0XHRpZiAocmVzcC1cdTAwM2VsZW4gXHUwMDNjIHNpemUgKyAxIHx8ICFkZGV2LVx1MDAzZWRpZCB8fFxuK1x0XHQgICAgZGRldi1cdTAwM2VkaWQgIT0gcmVzcC1cdTAwM2VkYXRhW3NpemVdKSB7XG4gXHRcdFx0cmMgPSAtRUlPO1xuIFx0XHRcdGdvdG8gZXhpdDtcbiBcdFx0fVxuK1x0XHRzaXplKys7XG4gXHR9IGVsc2UgaWYgKGRkZXYtXHUwMDNlZGlkKSB7XG4gXHRcdHJjID0gLUVJTztcbiBcdFx0Z290byBleGl0O1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6Mzk6MTkuMTgwNzA0NTg3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NjM0MjQ0ODA3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5GQyBEaWdpdGFsIERFUCBSZXF1ZXN0IEhhbmRsaW5nKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEkgc2VlIHRoZXkncmUgbW9kaWZ5aW5nIGBuZXQvbmZjL2RpZ2l0YWxfZGVwLmNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMTExNy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gVGhpcyBsb29rcyBsaWtlIGl0J3MgZGVhbGluZyB3aXRoIERldmljZSBJRCAoRElEKSBoYW5kbGluZyB3aXRoaW4gdGhlIERpZ2l0YWwgREVQIHByb3RvY29sLiBUaGUgY29yZSBvZiB0aGlzIGZ1bmN0aW9uLCBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgLCBzZWVtcyB0byBiZSBwcm9jZXNzaW5nIGEgcmVjZWl2ZWQgREVQIHJlcXVlc3QgZnJvbSBhIHRhcmdldCBkZXZpY2UuXG5cblRoZSBtYWluIHBvaW50IG9mIHRoZSBkaWZmIGlzIGluIGhvdyB0aGV5IHZhbGlkYXRlIHRoZSBESUQuIFByZXZpb3VzbHksIGl0IGNoZWNrZWQgaWYgYGRkZXYtXHUwMDNlZGlkYCBleGlzdGVkIGFuZCBtYXRjaGVkIGByZXNwLVx1MDAzZWRhdGFbM11gIHdoZW4gdGhlIERJRCBiaXQgd2FzIHNldCBpbiBgcGZiYC4gTm93LCBpdCBzZWVtcyBsaWtlIHRoZSBjaGVjayBpcyBtb3JlIHJvYnVzdC4gSXQncyB2ZXJpZnlpbmcgYHJlc3AtXHUwMDNlbGVuYCBpcyBzdWZmaWNpZW50IHRvIGhvbGQgdGhlIERJRCwgdGhlbiBjaGVja3MgaWYgYGRkZXYtXHUwMDNlZGlkYCBpcyBudWxsLCBvciBpdCBjaGVja3MgZm9yIGEgbWlzbWF0Y2ggYmV0d2VlbiBgZGRldi1cdTAwM2VkaWRgIGFuZCBgcmVzcC1cdTAwM2VkYXRhW3NpemVdYCwgaW1tZWRpYXRlbHkgcmV0dXJuaW5nIGAtRUlPYCBpZiBpdCBmYWlscy4gVGhlIGBzaXplKytgIGlzIG5vdyBhZnRlciB0aGlzIGNoZWNrLiBUaGlzIGFwcGVhcnMgdG8gYmUgYSBidWcgZml4IG9yIHNlY3VyaXR5IGVuaGFuY2VtZW50LCBiZWNhdXNlIHRoZSBvbGQgbG9naWMsIGlmIHRoZSBESUQgd2FzIG5vdCBwcmVzZW50LCB3b3VsZCd2ZSBpbmNyZW1lbnRlZCB0aGUgc2l6ZSB3aXRob3V0IHRoZSBjaGVjayBhbmQgcG90ZW50aWFsbHkgbGVkIHRvIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBvciBtZW1vcnkgY29ycnVwdGlvbi4gVGhpcyBjaGFuZ2UgbGlrZWx5IGFkZHJlc3NlcyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IG9yIGxvZ2ljIGVycm9yIHdoZXJlIGFuIGF0dGFja2VyIGNvdWxkIHNlbmQgYSBtYWxmb3JtZWQgcmVxdWVzdCBhbmQgcG9zc2libHkgdHJpZ2dlciBhbiBpc3N1ZSBpZiB0aGUgYERJRGAgd2FzIG5vdCBmb3VuZC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGNvZGUgZm9yIHNpbWlsYXIgcGF0dGVybnMuIEl0J3MgcG9zc2libGUgdGhlcmUgYXJlIG90aGVyIHNpbWlsYXIgaXNzdWVzIGluIHRoaXMgbW9kdWxlIHRoYXQgYWxzbyBuZWVkIHRvIGJlIGFkZHJlc3NlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk1OSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjM5OjI1LjUyMzE1NTY5NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwOTU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmZjL2RpZ2l0YWxfZGVwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTEwMCxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTEwMDpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTEwMTpcXHRcXHR9XFxuMTEwMjpcXHRcXG4xMTAzOlxcdFxcdGlmIChyZXNwLVxcdTAwM2VsZW4gXFx1MDAzZSBkZGV2LVxcdTAwM2Vsb2NhbF9wYXlsb2FkX21heCkge1xcbjExMDQ6XFx0XFx0XFx0cmMgPSAtRU1TR1NJWkU7XFxuMTEwNTpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTEwNjpcXHRcXHR9XFxuMTEwNzpcXHRcXG4xMTA4OlxcdFxcdHNpemUgPSBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpO1xcbjExMDk6XFx0XFx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXJlc3AtXFx1MDAzZWRhdGE7XFxuMTExMDpcXHRcXG4xMTExOlxcdFxcdGlmIChyZXNwLVxcdTAwM2VsZW4gXFx1MDAzYyBzaXplIHx8IGRlcF9yZXEtXFx1MDAzZWRpciAhPSBESUdJVEFMX05GQ19ERVBfRlJBTUVfRElSX09VVCB8fFxcbjExMTI6XFx0XFx0ICAgIGRlcF9yZXEtXFx1MDAzZWNtZCAhPSBESUdJVEFMX0NNRF9ERVBfUkVRKSB7XFxuMTExMzpcXHRcXHRcXHRyYyA9IC1FSU87XFxuMTExNDpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTExNTpcXHRcXHR9XFxuMTExNjpcXHRcXG4xMTE3OlxcdFxcdHBmYiA9IGRlcF9yZXEtXFx1MDAzZXBmYjtcXG4xMTE4OlxcdFxcbjExMTk6XFx0XFx0aWYgKERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpKSB7XFxuMTEyMDpcXHRcXHRcXHRpZiAocmVzcC1cXHUwMDNlbGVuIFxcdTAwM2Mgc2l6ZSArIDEgfHwgIWRkZXYtXFx1MDAzZWRpZCB8fFxcbjExMjE6XFx0XFx0XFx0ICAgIGRkZXYtXFx1MDAzZWRpZCAhPSByZXNwLVxcdTAwM2VkYXRhW3NpemVdKSB7XFxuMTEyMjpcXHRcXHRcXHRcXHRyYyA9IC1FSU87XFxuMTEyMzpcXHRcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTEyNDpcXHRcXHRcXHR9XFxuMTEyNTpcXHRcXHRcXHRzaXplKys7XFxuMTEyNjpcXHRcXHR9IGVsc2UgaWYgKGRkZXYtXFx1MDAzZWRpZCkge1xcbjExMjc6XFx0XFx0XFx0cmMgPSAtRUlPO1xcbjExMjg6XFx0XFx0XFx0Z290byBleGl0O1xcbjExMjk6XFx0XFx0fVxcbjExMzA6XFx0XFxuMTEzMTpcXHRcXHRpZiAoRElHSVRBTF9ORkNfREVQX05BRF9CSVRfU0VUKHBmYikpIHtcXG4xMTMyOlxcdFxcdFxcdHJjID0gLUVJTztcXG4xMTMzOlxcdFxcdFxcdGdvdG8gZXhpdDtcXG4xMTM0OlxcdFxcdH1cXG4xMTM1OlxcdFxcbjExMzY6XFx0XFx0aWYgKHNpemUgXFx1MDAzZSByZXNwLVxcdTAwM2VsZW4pIHtcXG4xMTM3OlxcdFxcdFxcdHJjID0gLUVJTztcXG4xMTM4OlxcdFxcdFxcdGdvdG8gZXhpdDtcXG4xMTM5OlxcdFxcdH1cXG4xMTQwOlxcdFxcbjExNDE6XFx0XFx0c2tiX3B1bGwocmVzcCwgc2l6ZSk7XFxuMTE0MjpcXHRcXG4xMTQzOlxcdFxcdHN3aXRjaCAoRElHSVRBTF9ORkNfREVQX1BGQl9UWVBFKHBmYikpIHtcXG4xMTQ0OlxcdFxcdGNhc2UgRElHSVRBTF9ORkNfREVQX1BGQl9JX1BEVTpcXG4xMTQ1OlxcdFxcdFxcdHByX2RlYnVnKFxcXCJESUdJVEFMX05GQ19ERVBfUEZCX0lfUERVXFxcXG5cXFwiKTtcXG4xMTQ2OlxcdFxcbjExNDc6XFx0XFx0XFx0aWYgKGRkZXYtXFx1MDAzZWF0bl9jb3VudCkge1xcbjExNDg6XFx0XFx0XFx0XFx0LyogVGhlIHRhcmdldCBoYXMgcmVjZWl2ZWQgKGFuZCByZXBsaWVkIHRvKSBhdCBsZWFzdCBvbmVcXG4xMTQ5OlxcdFxcdFxcdFxcdCAqIEFUTiBERVBfUkVRLlxcbjExNTA6XFx0XFx0XFx0XFx0ICovXFxuMTE1MTpcXHRcXHRcXHRcXHRkZGV2LVxcdTAwM2VhdG5fY291bnQgPSAwO1xcbjExNTI6XFx0XFxuMTE1MzpcXHRcXHRcXHRcXHQvKiBwbmkgb2YgcmVzcCBQRFUgZXF1YWwgdG8gdGhlIHRhcmdldCBjdXJyZW50IHBuaSAtIDFcXG4xMTU0OlxcdFxcdFxcdFxcdCAqIG1lYW5zIHJlc3AgaXMgdGhlIHByZXZpb3VzIERFUF9SRVEgUERVIHJlY2VpdmVkIGZyb21cXG4xMTU1OlxcdFxcdFxcdFxcdCAqIHRoZSBpbml0aWF0b3Igc28gdGhlIHRhcmdldCByZXBsaWVzIHdpdGggc2F2ZWRfc2tiXFxuMTE1NjpcXHRcXHRcXHRcXHQgKiB3aGljaCBpcyB0aGUgcHJldmlvdXMgREVQX1JFUyBzYXZlZCBpblxcbjExNTc6XFx0XFx0XFx0XFx0ICogZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoKS5cXG4xMTU4OlxcdFxcdFxcdFxcdCAqL1xcbjExNTk6XFx0XFx0XFx0XFx0aWYgKERJR0lUQUxfTkZDX0RFUF9QRkJfUE5JKHBmYikgPT1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6Mzk6MjUuNTIzMjY3NDE0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6Mjk3NDIxNjQ5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5GQyBEaWdpdGFsIFByb3RvY29sIFN0YWNrKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gTXkgZm9jdXMgcmlnaHQgbm93IGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGBuZXQvbmZjL2RpZ2l0YWxfZGVwLmNgIGZpbGUuIFRoaXMgaXMgcGFydCBvZiB0aGUgTkZDIGRpZ2l0YWwgcHJvdG9jb2wgc3RhY2ssIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgaXQgZml0cyBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS4gRmlyc3QsIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgYENPTkZJR19ORkNfRElHSVRBTGAgaXMgZW5hYmxlZCBhbmQgdW5kZXJzdGFuZCBpdHMgc2lnbmlmaWNhbmNlLlxuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSwgYW5kIGhvdyB0byB2ZXJpZnkgaWYgdGhpcyBpcyBpbiB1c2UuIEkgd2lsbCBuZXh0IGxvb2sgYXQgaG93IHRoaXMgZmVhdHVyZSBnZXRzIHVzZWQgd2l0aGluIHRoZSBrZXJuZWwgYW5kIGl0cyBhc3NvY2lhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTW9zdCBpbXBvcnRhbnRseSwgSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGlzIGNvbXBvbmVudCBpcyBhY2Nlc3NpYmxlIG9yIHRlc3RhYmxlIHdpdGhpbiBlbnZpcm9ubWVudHMgbGlrZSBzeXprYWxsZXIgb3IgdmlydHVhbGl6ZWQgc3lzdGVtcy4gSXMgaXQgZXZlbiByZWFjaGFibGU/XG5cblRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSwgSSBzaG91bGQgY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgd2l0aGluIHRoZSBgbmV0L25mY2AgZGlyZWN0b3J5LiBUaGF0J3Mgd2hlcmUgdGhlIGRlcGVuZGVuY2llcyBhbmQgZW5hYmxpbmcgY29uZGl0aW9ucyB3aWxsIGJlIGRlZmluZWQuIFRoYXQgc2hvdWxkIHBvaW50IG1lIGluIHRoZSByaWdodCBkaXJlY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1ODYsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjM5OjI4LjQ5NzQ4NjA1NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDU5NzgwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZDX0RJR0lUQUxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL0tjb25maWc9Nj1tZW51Y29uZmlnIE5GQ1xcbi0tXFxubmV0L25mYy9LY29uZmlnLTE2LVxcbm5ldC9uZmMvS2NvbmZpZzoxNzpjb25maWcgTkZDX0RJR0lUQUxcXG5uZXQvbmZjL0tjb25maWctMTgtXFx0ZGVwZW5kcyBvbiBORkNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6Mzk6MjguNTUyMDg5NTA2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6Mjg5NzMzNTU3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgTkZDIEtjb25maWcqKlxuXG5BbHJpZ2h0LCBsZXQncyBwdWxsIHVwIHRoZSBgbmV0L25mYy9LY29uZmlnYCBmaWxlLiBJJ20gYXNzdW1pbmcgd2UncmUgZGVhbGluZyB3aXRoIHRoZSBzdGFuZGFyZCBMaW51eCBrZXJuZWwgc291cmNlIGhlcmUsIHNvIHRoaXMgaXMgd2hlcmUgd2UnbGwgZmluZCBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIE5lYXIgRmllbGQgQ29tbXVuaWNhdGlvbi4gSSdtIGltbWVkaWF0ZWx5IGxvb2tpbmcgZm9yIHRoZSBnZW5lcmFsIHN0cnVjdHVyZS4gSSdtIGV4cGVjdGluZyB0byBzZWUgdGhlIHN0YW5kYXJkIGBjb25maWdgIGJsb2NrcywgYGJvb2xgLCBgdHJpc3RhdGVgLCBhbmQgYHN0cmluZ2AgZGVmaW5pdGlvbnMuIEkgYW50aWNpcGF0ZSBzZWVpbmcgZGVwZW5kZW5jaWVzLCBsaWtlbHkgb24gb3RoZXIgbmV0d29yay1yZWxhdGVkIGZlYXR1cmVzIG9yIHBvdGVudGlhbGx5IGV2ZW4gaGFyZHdhcmUgZHJpdmVycywgZXNwZWNpYWxseSBpZiBORkMgY29udHJvbGxlciBzdXBwb3J0IGlzIG1vZHVsYXJpemVkLlxuXG5JJ20ga2VlcGluZyBhbiBleWUgb3V0IGZvciBob3cgdGhleSd2ZSBvcmdhbml6ZWQgdGhlIG9wdGlvbnMuIEFyZSB0aGV5IGdyb3VwZWQgYnkgTkZDIHByb3RvY29sIHN0YW5kYXJkcyAoZS5nLiwgTkZDLUEsIE5GQy1CLCBORkMtRik/IEJ5IGNvbnRyb2xsZXIgdHlwZT8gT3IgbWF5YmUgYnkgZmVhdHVyZSBzZXQsIGxpa2UgcmVhZGVyL3dyaXRlciBmdW5jdGlvbmFsaXR5IHZlcnN1cyBwZWVyLXRvLXBlZXI/IFRoZSBvcmdhbml6YXRpb24gd2lsbCB0ZWxsIG1lIGEgbG90IGFib3V0IHRoZSBkZXNpZ24gcGhpbG9zb3BoeS5cblxuTXkgZm9jdXMgd2lsbCBiZSBvbiB0aGUgZGVwZW5kZW5jaWVzIGFuZCBkZWZhdWx0cy4gV2hhdCBvdGhlciBrZXJuZWwgZmVhdHVyZXMgbmVlZCB0byBiZSBlbmFibGVkIGZvciBORkMgdG8gd29yaz8gQXJlIHRoZXJlIGFueSBoYXJkIGRlcGVuZGVuY2llcywgb3IgYXJlIG1vc3QgdGhpbmdzIGNvbmZpZ3VyYWJsZT8gVW5kZXJzdGFuZGluZyB0aGUgZGVmYXVsdHMgaXMga2V5IGJlY2F1c2UgdGhleSBkaWN0YXRlIHRoZSBcIm91dC1vZi10aGUtYm94XCIgYmVoYXZpb3IuIEFyZSB0aGUgZGVmYXVsdHMgc2Vuc2libGUgZnJvbSBhIHNlY3VyaXR5IGFuZCB1c2FiaWxpdHkgc3RhbmRwb2ludD8gVGhhdCdzIHdoYXQgSSdsbCBiZSBsb29raW5nIGF0LlxuXG5JJ2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IFwiZXhwZXJ0XCIgb3B0aW9ucywgaWYgdGhlcmUgYXJlIGFueSwgYW5kIGhvdyB0aGV5IGFyZSBleHBsYWluZWQuIEFyZSB0aGVyZSBjbGVhciBkZXNjcmlwdGlvbnMgb2YgdGhlIGltcGFjdCBvZiB0aGVzZSBvcHRpb25zPyBJIHdhbnQgdG8gc2VlIGlmIHRoZSBLY29uZmlnIHByb3ZpZGVzIHN1ZmZpY2llbnQgZ3VpZGFuY2UgZm9yIHRob3NlIHdobyBtaWdodCB3YW50IHRvIGN1c3RvbWl6ZSB0aGUgTkZDIHN0YWNrIGZvciB0aGVpciBzcGVjaWZpYyBlbWJlZGRlZCBkZXZpY2Ugb3IgYXBwbGljYXRpb24uIEZpbmFsbHksIEknbGwgc2tpbSBmb3IgYW55IGRlcHJlY2F0aW9uIHdhcm5pbmdzIG9yIGFueXRoaW5nIHRoYXQgcG9pbnRzIHRvIHNvbWUgb2YgdGhlIGNvZGUgYmVpbmcgcmVwbGFjZWQgb3IgdW5kZXIgZGV2ZWxvcG1lbnQuIEFsd2F5cyBpbnRlcmVzdGluZyB0byBub3RlIHRoZSBcIlRPRE9cIiBlbnRyaWVzIGFzIHdlbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5NzQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDozOTozMS40NDk0MjgwMThaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTE5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmZjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTkZDIHN1YnN5c3RlbSBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnVjb25maWcgTkZDXFxuICAgNzpcXHRcXHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXFxuICAgODpcXHRcXHR0cmlzdGF0ZSBcXFwiTkZDIHN1YnN5c3RlbSBzdXBwb3J0XFxcIlxcbiAgIDk6XFx0XFx0ZGVmYXVsdCBuXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gYnVpbGQgc3VwcG9ydCBmb3IgTkZDIChOZWFyIGZpZWxkXFxuICAxMjpcXHRcXHQgIGNvbW11bmljYXRpb24pIGRldmljZXMuXFxuICAxMzpcXHRcXG4gIDE0OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIHN1cHBvcnQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbFxcbiAgMTU6XFx0XFx0ICBiZSBjYWxsZWQgbmZjLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRjb25maWcgTkZDX0RJR0lUQUxcXG4gIDE4OlxcdFxcdGRlcGVuZHMgb24gTkZDXFxuICAxOTpcXHRcXHRzZWxlY3QgQ1JDX0NDSVRUXFxuICAyMDpcXHRcXHRzZWxlY3QgQ1JDX0lUVV9UXFxuICAyMTpcXHRcXHR0cmlzdGF0ZSBcXFwiTkZDIERpZ2l0YWwgUHJvdG9jb2wgc3RhY2sgc3VwcG9ydFxcXCJcXG4gIDIyOlxcdFxcdGRlZmF1bHQgblxcbiAgMjM6XFx0XFx0aGVscFxcbiAgMjQ6XFx0XFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byBidWlsZCBORkMgZGlnaXRhbCBwcm90b2NvbCBzdGFjayBzdXBwb3J0LlxcbiAgMjU6XFx0XFx0ICBUaGlzIGlzIG5lZWRlZCBieSBORkMgY2hpcHNldHMgd2hvc2UgZmlybXdhcmUgb25seSBpbXBsZW1lbnRcXG4gIDI2OlxcdFxcdCAgdGhlIE5GQyBhbmFsb2cgbGF5ZXIuXFxuICAyNzpcXHRcXG4gIDI4OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIHN1cHBvcnQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbFxcbiAgMjk6XFx0XFx0ICBiZSBjYWxsZWQgbmZjX2RpZ2l0YWwuXFxuICAzMDpcXHRcXG4gIDMxOlxcdHNvdXJjZSBcXFwibmV0L25mYy9uY2kvS2NvbmZpZ1xcXCJcXG4gIDMyOlxcdHNvdXJjZSBcXFwibmV0L25mYy9oY2kvS2NvbmZpZ1xcXCJcXG4gIDMzOlxcdFxcbiAgMzQ6XFx0c291cmNlIFxcXCJkcml2ZXJzL25mYy9LY29uZmlnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDozOTozMS40NDk0OTEzNThaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyNjU4NDA0NjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBEZWNvZGluZyBORkNfRElHSVRBTCBVc2FnZSoqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcy4gXCJORkNfRElHSVRBTC5cIiBUaGF0IGltbWVkaWF0ZWx5IHNpZ25hbHMgYSBzcGVjaWZpYyBhcHBsaWNhdGlvbiBvciBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgTkZDIChOZWFyIEZpZWxkIENvbW11bmljYXRpb24pIGVjb3N5c3RlbS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSdtIHRoaW5raW5nIHRoaXMgbGlrZWx5IHJlZmVycyB0byBhIGRpZ2l0YWwgcmVwcmVzZW50YXRpb24gb3IgaW50ZXJmYWNlIHJlbGF0aW5nIHRvIE5GQywgbGlrZWx5IGZvciBhIHBhcnRpY3VsYXIgZGV2aWNlIGRyaXZlciBvciBzb2Z0d2FyZSBzdGFjay4gTXkgbWluZCBpbW1lZGlhdGVseSBzdGFydHMgcnVubmluZyB0aHJvdWdoIHRoZSBwb3RlbnRpYWwgY29udGV4dHMuIElzIHRoaXMgcmVsYXRlZCB0byBzZWN1cmUgZWxlbWVudCBpbnRlcmFjdGlvbnM/IENvbnRhY3RsZXNzIHBheW1lbnQgaW1wbGVtZW50YXRpb24/IFBlcmhhcHMgaXQncyB0aWVkIHRvIGEgc3BlY2lmaWMgcmVhZGVyIG1vZHVsZSBvciBhIGN1c3RvbSBORkMgcHJvdG9jb2w/IFRoZSBzcGVjaWZpY2l0eSBvZiBcIkRJR0lUQUxcIiBmZWVscyBsaWtlIGl0J3MgcG9pbnRpbmcgdG93YXJkcyBhIGRpZ2l0YWwgZW5jb2Rpbmcgb3IgZGF0YSBmb3JtYXQgbGF5ZXIuIFNvLCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZHJpdmVycyB0aGF0ICphY3R1YWxseSogbGV2ZXJhZ2UgdGhpcyBkaWdpdGFsIGludGVyZmFjZS4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gVGltZSB0byBzdGFydCBkaWdnaW5nIVxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODQwLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDozOTozNC4xMDc4OTgxMjlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTAwMTM3OTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX05GQ19ESUdJVEFMfG5mY19kaWdpdGFsXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTEwMCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuYXJjaC9hcm0vY29uZmlncy9leHlub3NfZGVmY29uZmlnPTc3PUNPTkZJR19ORkM9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvZXh5bm9zX2RlZmNvbmZpZzo3ODpDT05GSUdfTkZDX0RJR0lUQUw9bVxcbmFyY2gvYXJtL2NvbmZpZ3MvZXh5bm9zX2RlZmNvbmZpZy03OS1DT05GSUdfTkZDX05DST15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZz0xNjg9Q09ORklHX05GQz1tXFxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWc6MTY5OkNPTkZJR19ORkNfRElHSVRBTD1tXFxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWctMTcwLUNPTkZJR19ORkNfTkNJPW1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE1LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE2OiNkZWZpbmUgTkZDU0lNX0VSUihkLCBmbXQsIGFyZ3MuLi4pIG5mY19lcnIoXFx1MDAyNmQtXFx1MDAzZW5mY19kaWdpdGFsX2Rldi1cXHUwMDNlbmZjX2Rldi1cXHUwMDNlZGV2LCBcXFxcXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTctXFx0XFx0XFx0XFx0XFx0ICAgIFxcXCIlczogXFxcIiBmbXQsIF9fZnVuY19fLCAjIyBhcmdzKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE4LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE5OiNkZWZpbmUgTkZDU0lNX0RCRyhkLCBmbXQsIGFyZ3MuLi4pIGRldl9kYmcoXFx1MDAyNmQtXFx1MDAzZW5mY19kaWdpdGFsX2Rldi1cXHUwMDNlbmZjX2Rldi1cXHUwMDNlZGV2LCBcXFxcXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjAtXFx0XFx0XFx0XFx0XFx0ICAgIFxcXCIlczogXFxcIiBmbXQsIF9fZnVuY19fLCAjIyBhcmdzKVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM9MzE9c3RydWN0IG5mY3NpbSB7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzI6XFx0c3RydWN0IG5mY19kaWdpdGFsX2RldiAqbmZjX2RpZ2l0YWxfZGV2O1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMzLVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDUtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDY6XFx0bmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2I7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDctXFx0dm9pZCAqYXJnO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM9MTgyPXN0YXRpYyB2b2lkIG5mY3NpbV9yZWN2X3dxKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE5Ny1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoxOTg6XFx0ZGV2LVxcdTAwM2VjYihkZXYtXFx1MDAzZW5mY19kaWdpdGFsX2RldiwgZGV2LVxcdTAwM2VhcmcsIHNrYik7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTk5LX1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yMDAtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjAxOnN0YXRpYyBpbnQgbmZjc2ltX3NlbmQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyMDI6XFx0XFx0ICAgICAgIHUxNiB0aW1lb3V0LCBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwMy17XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjA0OlxcdHN0cnVjdCBuZmNzaW0gKmRldiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwNS1cXHR1OCBkZWxheTtcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIzOS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyNDA6c3RhdGljIHZvaWQgbmZjc2ltX2Fib3J0X2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI0MS17XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjQyOlxcdGNvbnN0IHN0cnVjdCBuZmNzaW0gKmRldiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI0My1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI0Ni1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyNDc6c3RhdGljIGludCBuZmNzaW1fc3dpdGNoX3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGJvb2wgb24pXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjQ4LXtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyNDk6XFx0c3RydWN0IG5mY3NpbSAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjUwLVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjU1LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI1NjpzdGF0aWMgaW50IG5mY3NpbV9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNTctXFx0XFx0XFx0XFx0XFx0ICBpbnQgdHlwZSwgaW50IHBhcmFtKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI1OC17XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjU5OlxcdHN0cnVjdCBuZmNzaW0gKmRldiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI2MC1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI3OC1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyNzk6c3RhdGljIGludCBuZmNzaW1faW5fc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yODAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI4MTpcXHRcXHRcXHQgICAgICAgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZylcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yODIte1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjg1LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI4NjpzdGF0aWMgaW50IG5mY3NpbV90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yODctXFx0XFx0XFx0XFx0XFx0ICBpbnQgdHlwZSwgaW50IHBhcmFtKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI4OC17XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mjg5OlxcdHN0cnVjdCBuZmNzaW0gKmRldiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI5MC1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMwOC1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMDk6c3RhdGljIGludCBuZmNzaW1fdGdfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMTAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjMxMTpcXHRcXHRcXHQgICAgICAgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZylcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMTIte1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzE1LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjMxNjpzdGF0aWMgaW50IG5mY3NpbV90Z19saXN0ZW4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTE2IHRpbWVvdXQsXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzE3OlxcdFxcdFxcdCAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMxOC17XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMjEtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzIyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZjX2RpZ2l0YWxfb3BzIG5mY3NpbV9kaWdpdGFsX29wcyA9IHtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMjMtXFx0LmluX2NvbmZpZ3VyZV9odyA9IG5mY3NpbV9pbl9jb25maWd1cmVfaHcsXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYz0zNDY9c3RhdGljIHZvaWQgbmZjc2ltX2RlYnVnZnNfaW5pdF9kZXYoc3RydWN0IG5mY3NpbSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzU3LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM1ODpcXHRpZHggPSBkZXYtXFx1MDAzZW5mY19kaWdpdGFsX2Rldi1cXHUwMDNlbmZjX2Rldi1cXHUwMDNlaWR4O1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM1OS1cXHRuID0gc25wcmludGYoZGV2bmFtZSwgc2l6ZW9mKGRldm5hbWUpLCBcXFwibmZjJWRcXFwiLCBpZHgpO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM9MzcwPXN0YXRpYyBzdHJ1Y3QgbmZjc2ltICpuZmNzaW1fZGV2aWNlX25ldyhzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmtfaW4sXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zODItXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzgzOlxcdGRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2ID1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozODQ6XFx0XFx0XFx0bmZjX2RpZ2l0YWxfYWxsb2NhdGVfZGV2aWNlKFxcdTAwMjZuZmNzaW1fZGlnaXRhbF9vcHMsXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzg1LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBORkNfUFJPVE9fTkZDX0RFUF9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzg3LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAwLCAwKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozODg6XFx0aWYgKCFkZXYtXFx1MDAzZW5mY19kaWdpdGFsX2Rldikge1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM4OS1cXHRcXHRrZnJlZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzkyLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM5MzpcXHRuZmNfZGlnaXRhbF9zZXRfZHJ2ZGF0YShkZXYtXFx1MDAzZW5mY19kaWdpdGFsX2RldiwgZGV2KTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zOTQtXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zOTctXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mzk4OlxcdHJjID0gbmZjX2RpZ2l0YWxfcmVnaXN0ZXJfZGV2aWNlKGRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zOTktXFx0aWYgKHJjKSB7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDAwLVxcdFxcdHByX2VycihcXFwiQ291bGQgbm90IHJlZ2lzdGVyIGRpZ2l0YWwgZGV2aWNlICglZClcXFxcblxcXCIsIHJjKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0MDE6XFx0XFx0bmZjX2RpZ2l0YWxfZnJlZV9kZXZpY2UoZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQwMi1cXHRcXHRrZnJlZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM9NDEyPXN0YXRpYyB2b2lkIG5mY3NpbV9kZXZpY2VfZnJlZShzdHJ1Y3QgbmZjc2ltICpkZXYpXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDEzLXtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0MTQ6XFx0bmZjX2RpZ2l0YWxfdW5yZWdpc3Rlcl9kZXZpY2UoZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQxNS1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQyMi1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0MjM6XFx0bmZjX2RpZ2l0YWxfZnJlZV9kZXZpY2UoZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQyNC1cXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0yMjE9aW5fcHJvdG9jb2xzW11bUE9SVDEwMF9JTl9NQVhfTlVNX1BST1RPQ09MUyArIDFdID0ge1xcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI4OC1cXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QxVF0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI4OTpcXHRcXHQvKiBuZmNfZGlnaXRhbF9mcmFtaW5nX25mY2Ffc2hvcnQgKi9cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjkwLVxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9DUkMsICAgICAgICAgIDIgfSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yOTYtXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UMlRdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyOTc6XFx0XFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNhX3N0YW5kYXJkICovXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI5OC1cXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfQ1JDLCAgIDEgfSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMDItXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UNFRdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMDM6XFx0XFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNhX3N0YW5kYXJkX3dpdGhfY3JjX2EgKi9cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzA0LVxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0VORCwgICAgICAgMCB9LFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTMwNi1cXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX05GQ19ERVBdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMDc6XFx0XFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNhX3N0YW5kYXJkICovXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTMwOC1cXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsIDAgfSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMzItXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDRl9UM1RdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMzM6XFx0XFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNmICovXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTMzNC1cXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsIDAgfSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMzYtXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDRl9ORkNfREVQXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzM3OlxcdFxcdC8qIG5mY19kaWdpdGFsX2ZyYW1pbmdfbmZjZiAqL1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMzgtXFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfSU5JVElBTF9HVUFSRF9USU1FLCAgICAgMTggfSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zODQtXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQl9UNFRdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozODU6XFx0XFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNiICovXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM4Ni1cXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsICAgICAgICAgICAgICAgICAgICAgMCB9LFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTQzOT1zdHJ1Y3QgcG9ydDEwMCB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQ0MDpcXHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpuZmNfZGlnaXRhbF9kZXY7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQ0MS1cXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz00OTY9c3RydWN0IHBvcnQxMDBfY2JfYXJnIHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDk3OlxcdG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNvbXBsZXRlX2NiO1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00OTgtXFx0dm9pZCAqY29tcGxldGVfYXJnO1xcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTkzMT1zdGF0aWMgdm9pZCBwb3J0MTAwX3NlbmRfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTk1NC1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6OTU1OnN0YXRpYyB2b2lkIHBvcnQxMDBfYWJvcnRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTk1Ni17XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjk1NzpcXHRzdHJ1Y3QgcG9ydDEwMCAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTk1OC1cXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xMDI1PXN0YXRpYyB1MTYgcG9ydDEwMF9nZXRfZmlybXdhcmVfdmVyc2lvbihzdHJ1Y3QgcG9ydDEwMCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEwNDYtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEwNDc6c3RhdGljIGludCBwb3J0MTAwX3N3aXRjaF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBib29sIG9uKVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMDQ4LXtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTA0OTpcXHRzdHJ1Y3QgcG9ydDEwMCAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEwNTAtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYiwgKnJlc3A7XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTA3MS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTA3MjpzdGF0aWMgaW50IHBvcnQxMDBfaW5fc2V0X3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmKVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMDczLXtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTA3NDpcXHRzdHJ1Y3QgcG9ydDEwMCAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEwNzUtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMTAwLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMTAxOnN0YXRpYyBpbnQgcG9ydDEwMF9pbl9zZXRfZnJhbWluZyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgcGFyYW0pXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExMDIte1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMTAzOlxcdHN0cnVjdCBwb3J0MTAwICpkZXYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTEwNC1cXHRjb25zdCBzdHJ1Y3QgcG9ydDEwMF9wcm90b2NvbCAqcHJvdG9jb2xzO1xcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExNDItXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjExNDM6c3RhdGljIGludCBwb3J0MTAwX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgdHlwZSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTE0NC1cXHRcXHRcXHRcXHQgICBpbnQgcGFyYW0pXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTE1NT1zdGF0aWMgdm9pZCBwb3J0MTAwX2luX2NvbW1fcmZfY29tcGxldGUoc3RydWN0IHBvcnQxMDAgKmRldiwgdm9pZCAqYXJnLFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExNTgtXFx0Y29uc3Qgc3RydWN0IHBvcnQxMDBfY2JfYXJnICpjYl9hcmcgPSBhcmc7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjExNTk6XFx0bmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IgPSBjYl9hcmctXFx1MDAzZWNvbXBsZXRlX2NiO1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMTYwLVxcdHUzMiBzdGF0dXM7XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIwMC1leGl0OlxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMjAxOlxcdGNiKGRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2LCBjYl9hcmctXFx1MDAzZWNvbXBsZXRlX2FyZywgcmVzcCk7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMDItXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIwNS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTIwNjpzdGF0aWMgaW50IHBvcnQxMDBfaW5fc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIwNy1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IF90aW1lb3V0LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMjA4OlxcdFxcdFxcdCAgICAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjA5LXtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTIxMDpcXHRzdHJ1Y3QgcG9ydDEwMCAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMTEtXFx0c3RydWN0IHBvcnQxMDBfY2JfYXJnICpjYl9hcmc7XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIyOC1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTIyOTpzdGF0aWMgaW50IHBvcnQxMDBfdGdfc2V0X3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmKVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjMwLXtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTIzMTpcXHRzdHJ1Y3QgcG9ydDEwMCAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMzItXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjU3LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMjU4OnN0YXRpYyBpbnQgcG9ydDEwMF90Z19zZXRfZnJhbWluZyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgcGFyYW0pXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyNTkte1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMjYwOlxcdHN0cnVjdCBwb3J0MTAwICpkZXYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTI2MS1cXHRjb25zdCBzdHJ1Y3QgcG9ydDEwMF9wcm90b2NvbCAqcHJvdG9jb2xzO1xcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyOTktXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEzMDA6c3RhdGljIGludCBwb3J0MTAwX3RnX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgdHlwZSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTMwMS1cXHRcXHRcXHRcXHQgICBpbnQgcGFyYW0pXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTMzMj1zdGF0aWMgdm9pZCBwb3J0MTAwX3RnX2NvbW1fcmZfY29tcGxldGUoc3RydWN0IHBvcnQxMDAgKmRldiwgdm9pZCAqYXJnLFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzMzYtXFx0Y29uc3Qgc3RydWN0IHBvcnQxMDBfY2JfYXJnICpjYl9hcmcgPSBhcmc7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEzMzc6XFx0bmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IgPSBjYl9hcmctXFx1MDAzZWNvbXBsZXRlX2NiO1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzM4LVxcdHN0cnVjdCBwb3J0MTAwX3RnX2NvbW1fcmZfcmVzICpoZHI7XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTM2Ni1leGl0OlxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMzY3OlxcdGNiKGRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2LCBjYl9hcmctXFx1MDAzZWNvbXBsZXRlX2FyZywgcmVzcCk7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzNjgtXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTM3MS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTM3MjpzdGF0aWMgaW50IHBvcnQxMDBfdGdfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTM3My1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHRpbWVvdXQsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEzNzQ6XFx0XFx0XFx0ICAgICAgIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLCB2b2lkICphcmcpXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzNzUte1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMzc2OlxcdHN0cnVjdCBwb3J0MTAwICpkZXYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTM3Ny1cXHRzdHJ1Y3QgcG9ydDEwMF90Z19jb21tX3JmX2NtZCAqaGRyO1xcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzOTktXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE0MDA6c3RhdGljIGludCBwb3J0MTAwX2xpc3Rlbl9tZGFhKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0MDEtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBkaWdpdGFsX3RnX21kYWFfcGFyYW1zICpwYXJhbXMsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0MDItXFx0XFx0XFx0ICAgICAgIHUxNiB0aW1lb3V0LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNDAzOlxcdFxcdFxcdCAgICAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDA0LXtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTQwNTpcXHRzdHJ1Y3QgcG9ydDEwMCAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0MDYtXFx0c3RydWN0IHBvcnQxMDBfdGdfY29tbV9yZl9jbWQgKmhkcjtcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDU1LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNDU2OnN0YXRpYyBpbnQgcG9ydDEwMF9saXN0ZW4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTE2IHRpbWVvdXQsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE0NTc6XFx0XFx0XFx0ICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDU4LXtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTQ1OTpcXHRjb25zdCBzdHJ1Y3QgcG9ydDEwMCAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0NjAtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDY4LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNDY5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZjX2RpZ2l0YWxfb3BzIHBvcnQxMDBfZGlnaXRhbF9vcHMgPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0NzAtXFx0LmluX2NvbmZpZ3VyZV9odyA9IHBvcnQxMDBfaW5fY29uZmlndXJlX2h3LFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTE0ODk9c3RhdGljIGludCBwb3J0MTAwX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UsXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTU3MS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTU3MjpcXHRkZXYtXFx1MDAzZW5mY19kaWdpdGFsX2RldiA9IG5mY19kaWdpdGFsX2FsbG9jYXRlX2RldmljZShcXHUwMDI2cG9ydDEwMF9kaWdpdGFsX29wcyxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTU3My1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBQT1JUMTAwX1BST1RPQ09MUyxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTc2LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIGRldi1cXHUwMDNlc2tiX3RhaWxyb29tKTtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTU3NzpcXHRpZiAoIWRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE1NzgtXFx0XFx0bmZjX2VycihcXHUwMDI2aW50ZXJmYWNlLVxcdTAwM2VkZXYsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE1Nzk6XFx0XFx0XFx0XFxcIkNvdWxkIG5vdCBhbGxvY2F0ZSBuZmNfZGlnaXRhbF9kZXZcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTgwLVxcdFxcdHJjID0gLUVOT01FTTtcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTgzLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNTg0OlxcdG5mY19kaWdpdGFsX3NldF9wYXJlbnRfZGV2KGRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2LCBcXHUwMDI2aW50ZXJmYWNlLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNTg1OlxcdG5mY19kaWdpdGFsX3NldF9kcnZkYXRhKGRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2LCBkZXYpO1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTg2LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNTg3OlxcdHJjID0gbmZjX2RpZ2l0YWxfcmVnaXN0ZXJfZGV2aWNlKGRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KTtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTU4OC1cXHRpZiAocmMpIHtcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTk2LWZyZWVfbmZjX2RldjpcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTU5NzpcXHRuZmNfZGlnaXRhbF9mcmVlX2RldmljZShkZXYtXFx1MDAzZW5mY19kaWdpdGFsX2Rldik7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE1OTgtXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTYwOD1zdGF0aWMgdm9pZCBwb3J0MTAwX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNjE0LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNjE1OlxcdG5mY19kaWdpdGFsX3VucmVnaXN0ZXJfZGV2aWNlKGRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KTtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTYxNjpcXHRuZmNfZGlnaXRhbF9mcmVlX2RldmljZShkZXYtXFx1MDAzZW5mY19kaWdpdGFsX2Rldik7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE2MTctXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTE4NT1zdHJ1Y3Qgc3Q5NV9kaWdpdGFsX2NtZF9jb21wbGV0ZV9hcmcge1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTg2LVxcdHN0cnVjdCBza19idWZmICpza2JfcmVzcDtcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjE4NzpcXHRuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjb21wbGV0ZV9jYjtcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTE4OC1cXHR2b2lkICpjYl91c3Jhcmc7XFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTIxNz1zdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQge1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMjE4LVxcdHN0cnVjdCBzdDk1aGZfc3BpX2NvbnRleHQgc3BpY29udGV4dDtcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjIxOTpcXHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2O1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMjIwLVxcdHN0cnVjdCBuZmNfZGV2ICpuZmNkZXY7XFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTUzMT1zdGF0aWMgaW50IGlzbzE0NDQzX2NvbmZpZ19mZHQoc3RydWN0IHN0OTVoZl9jb250ZXh0ICpzdDk1Y29udGV4dCwgaW50IHd0eG0pXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTUzNC1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2c3Q5NWNvbnRleHQtXFx1MDAzZXNwaWNvbnRleHQuc3BpZGV2LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo1MzU6XFx0c3RydWN0IG5mY19kaWdpdGFsX2RldiAqbmZjZGRldiA9IHN0OTVjb250ZXh0LVxcdTAwM2VkZGV2O1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNTM2LVxcdHVuc2lnbmVkIGNoYXIgcHBfdHlwZWI7XFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTYwMj1zdGF0aWMgaW50IHN0OTVoZl9oYW5kbGVfd3R4KHN0cnVjdCBzdDk1aGZfY29udGV4dCAqc3Rjb250ZXh0LFxcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy02MDgtXFx0c3RydWN0IHBhcmFtX2xpc3QgbmV3X3BhcmFtc1sxXTtcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjYwOTpcXHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpuZmNkZGV2ID0gc3Rjb250ZXh0LVxcdTAwM2VkZGV2O1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNjEwLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZzdGNvbnRleHQtXFx1MDAzZW5mY2Rldi1cXHUwMDNlZGV2O1xcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYz02OTM9c3RhdGljIGludCBzdDk1aGZfcmVzcG9uc2VfaGFuZGxlcihzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0Y29udGV4dCxcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNjk5LVxcdHVuc2lnbmVkIGNoYXIgdmFsX21tO1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6NzAwOlxcdHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKm5mY2RkZXYgPSBzdGNvbnRleHQtXFx1MDAzZWRkZXY7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy03MDEtXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnN0Y29udGV4dC1cXHUwMDNlbmZjZGV2LVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTc2Nj1zdGF0aWMgaXJxcmV0dXJuX3Qgc3Q5NWhmX2lycV90aHJlYWRfaGFuZGxlcihpbnQgaXJxLCB2b2lkICAqc3Q5NWhmY29udGV4dClcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtODY4LS8qIE5GQyBvcHMgZnVuY3Rpb25zIGRlZmluaXRpb24gKi9cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjg2OTpzdGF0aWMgaW50IHN0OTVoZl9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTg3MC1cXHRcXHRcXHRcXHQgIGludCB0eXBlLFxcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy04NzIte1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6ODczOlxcdHN0cnVjdCBzdDk1aGZfY29udGV4dCAqc3Rjb250ZXh0ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy04NzQtXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTkwMT1zdGF0aWMgaW50IHJmX29mZihzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0Y29udGV4dClcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTE0LVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6OTE1OnN0YXRpYyBpbnQgc3Q5NWhmX2luX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05MTYtXFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTkxNy1cXHRcXHRcXHQgICAgICB1MTYgdGltZW91dCxcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjkxODpcXHRcXHRcXHQgICAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYixcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTkxOS1cXHRcXHRcXHQgICAgICB2b2lkICphcmcpXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05MjAte1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6OTIxOlxcdHN0cnVjdCBzdDk1aGZfY29udGV4dCAqc3Rjb250ZXh0ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05MjItXFx0aW50IHJjO1xcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05ODgtLyogcDJwIHdpbGwgYmUgc3VwcG9ydGVkIGluIGEgbGF0ZXIgcmVsZWFzZSAhICovXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo5ODk6c3RhdGljIGludCBzdDk1aGZfdGdfY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05OTAtXFx0XFx0XFx0XFx0ICBpbnQgdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTk1LVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6OTk2OnN0YXRpYyBpbnQgc3Q5NWhmX3RnX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05OTctXFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTk5OC1cXHRcXHRcXHQgICAgICB1MTYgdGltZW91dCxcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjk5OTpcXHRcXHRcXHQgICAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYixcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMDAtXFx0XFx0XFx0ICAgICAgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMDA0LVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MTAwNTpzdGF0aWMgaW50IHN0OTVoZl90Z19saXN0ZW4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMDYtXFx0XFx0XFx0ICAgIHUxNiB0aW1lb3V0LFxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MTAwNzpcXHRcXHRcXHQgICAgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMDA4LVxcdFxcdFxcdCAgICB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMTItXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMDEzOnN0YXRpYyBpbnQgc3Q5NWhmX3RnX2dldF9yZl90ZWNoKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4ICpyZl90ZWNoKVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAxNC17XFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMTctXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMDE4OnN0YXRpYyBpbnQgc3Q5NWhmX3N3aXRjaF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBib29sIG9uKVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAxOS17XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMDIwLVxcdHU4IHJmX3RlY2g7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMDIxOlxcdHN0cnVjdCBzdDk1aGZfY29udGV4dCAqc3Rjb250ZXh0ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMDIyLVxcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMDMzLS8qIFRPRE8gc3Q5NWhmX2Fib3J0X2NtZCAqL1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MTAzNDpzdGF0aWMgdm9pZCBzdDk1aGZfYWJvcnRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMDM1LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAzNy1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjEwMzg6c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfZGlnaXRhbF9vcHMgc3Q5NWhmX25mY19kaWdpdGFsX29wcyA9IHtcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMzktXFx0LmluX2NvbmZpZ3VyZV9odyA9IHN0OTVoZl9pbl9jb25maWd1cmVfaHcsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTEwNjM9c3RhdGljIGludCBzdDk1aGZfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKm5mY19zcGlfZGV2KVxcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMTU5LVxcdC8qIGNyZWF0ZSBORkMgZGV2IG9iamVjdCBhbmQgcmVnaXN0ZXIgd2l0aCBORkMgU3Vic3lzdGVtICovXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMTYwOlxcdHN0OTVjb250ZXh0LVxcdTAwM2VkZGV2ID0gbmZjX2RpZ2l0YWxfYWxsb2NhdGVfZGV2aWNlKFxcdTAwMjZzdDk1aGZfbmZjX2RpZ2l0YWxfb3BzLFxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTE2MS1cXHRcXHRcXHRcXHRcXHRcXHRcXHRTVDk1SEZfU1VQUE9SVEVEX1BST1QsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTExNzAtXFx0c3Q5NWNvbnRleHQtXFx1MDAzZW5mY2RldiA9IHN0OTVjb250ZXh0LVxcdTAwM2VkZGV2LVxcdTAwM2VuZmNfZGV2O1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MTE3MTpcXHRuZmNfZGlnaXRhbF9zZXRfcGFyZW50X2RldihzdDk1Y29udGV4dC1cXHUwMDNlZGRldiwgXFx1MDAyNm5mY19zcGlfZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTE3Mi1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjExNzM6XFx0cmV0ID0gIG5mY19kaWdpdGFsX3JlZ2lzdGVyX2RldmljZShzdDk1Y29udGV4dC1cXHUwMDNlZGRldik7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMTc0LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTE3OS1cXHQvKiBzdG9yZSBzdDk1Y29udGV4dCBpbiBuZmMgZGV2aWNlIG9iamVjdCAqL1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MTE4MDpcXHRuZmNfZGlnaXRhbF9zZXRfZHJ2ZGF0YShzdDk1Y29udGV4dC1cXHUwMDNlZGRldiwgc3Q5NWNvbnRleHQpO1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTE4MS1cXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTE4Ny1lcnJfZnJlZV9kaWdpdGFsX2RldmljZTpcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjExODg6XFx0bmZjX2RpZ2l0YWxfZnJlZV9kZXZpY2Uoc3Q5NWNvbnRleHQtXFx1MDAzZWRkZXYpO1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTE4OS1lcnJfZGlzYWJsZV9yZWd1bGF0b3I6XFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTExOTY9c3RhdGljIHZvaWQgc3Q5NWhmX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqbmZjX3NwaV9kZXYpXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEyMDctXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMjA4OlxcdG5mY19kaWdpdGFsX3VucmVnaXN0ZXJfZGV2aWNlKHN0Y29udGV4dC1cXHUwMDNlZGRldik7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMjA5OlxcdG5mY19kaWdpdGFsX2ZyZWVfZGV2aWNlKHN0Y29udGV4dC1cXHUwMDNlZGRldik7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMjEwLVxcdHN0Y29udGV4dC1cXHUwMDNlbmZjZGV2X2ZyZWUgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz00MzA9c3RydWN0IHRyZjc5NzBhIHtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDM1LVxcdHN0cnVjdCByZWd1bGF0b3JcXHRcXHQqdmRkaW9fcmVndWxhdG9yO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDM2OlxcdHN0cnVjdCBuZmNfZGlnaXRhbF9kZXZcXHRcXHQqZGRldjtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQzNy1cXHR1MzJcXHRcXHRcXHRcXHRxdWlya3M7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ0MS1cXHRzdHJ1Y3Qgc2tfYnVmZlxcdFxcdFxcdCpyeF9za2I7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0NDI6XFx0bmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3RcXHRjYjtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ0My1cXHR2b2lkXFx0XFx0XFx0XFx0KmNiX2FyZztcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTE0Nz1zdGF0aWMgaW50IHRyZjc5NzBhX3N3aXRjaF9yZl9vbihzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE3MS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExNzI6c3RhdGljIGludCB0cmY3OTcwYV9zd2l0Y2hfcmYoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgYm9vbCBvbilcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNzMte1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE3NDpcXHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE3NS1cXHRpbnQgcmV0ID0gMDtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTMxMj1zdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ19mcmFtaW5nKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgZnJhbWluZylcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM4Ni1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzODc6c3RhdGljIGludCB0cmY3OTcwYV9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzg4LVxcdFxcdFxcdFxcdCAgICBpbnQgcGFyYW0pXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzg5LXtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzOTA6XFx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzOTEtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTQzOT1zdGF0aWMgaW50IHRyZjc5NzBhX3Blcl9jbWRfY29uZmlnKHN0cnVjdCB0cmY3OTcwYSAqdHJmLFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTA3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTUwODpzdGF0aWMgaW50IHRyZjc5NzBhX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTA5LVxcdFxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHRpbWVvdXQsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTEwOlxcdFxcdFxcdCAgICAgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZylcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1MTEte1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTUxMjpcXHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUxMy1cXHR1OCBwcmVmaXhbNV07XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTE2NzA9c3RhdGljIGludCB0cmY3OTcwYV90Z19jb25maWdfZnJhbWluZyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IGZyYW1pbmcpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3MjgtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNzI5OnN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTczMC1cXHRcXHRcXHRcXHQgICAgaW50IHBhcmFtKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTczMS17XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNzMyOlxcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNzMzLVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3NjQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNzY1OnN0YXRpYyBpbnQgX3RyZjc5NzBhX3RnX2xpc3RlbihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1MTYgdGltZW91dCxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE3NjY6XFx0XFx0XFx0ICAgICAgIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLCB2b2lkICphcmcsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNzY3LVxcdFxcdFxcdCAgICAgICBib29sIG1vZGVfZGV0ZWN0KVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTc2OC17XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNzY5OlxcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNzcwLVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4NDMtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODQ0OnN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfbGlzdGVuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHUxNiB0aW1lb3V0LFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTg0NTpcXHRcXHRcXHQgICAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTg0Ni17XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODQ3OlxcdGNvbnN0IHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODQ4LVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODU0LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTg1NTpzdGF0aWMgaW50IHRyZjc5NzBhX3RnX2xpc3Rlbl9tZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTg1NjpcXHRcXHRcXHRcXHQgdTE2IHRpbWVvdXQsIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTg1Ny1cXHRcXHRcXHRcXHQgdm9pZCAqYXJnKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTg1OC17XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODU5OlxcdGNvbnN0IHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODYwLVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4NzctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODc4OnN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfZ2V0X3JmX3RlY2goc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggKnJmX3RlY2gpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODc5LXtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE4ODA6XFx0Y29uc3Qgc3RydWN0IHRyZjc5NzBhICp0cmYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4ODEtXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4ODktXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODkwOnN0YXRpYyB2b2lkIHRyZjc5NzBhX2Fib3J0X2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTg5MS17XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODkyOlxcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODkzLVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xOTE2LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTkxNzpzdGF0aWMgY29uc3Qgc3RydWN0IG5mY19kaWdpdGFsX29wcyB0cmY3OTcwYV9uZmNfb3BzID0ge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTkxOC1cXHQuaW5fY29uZmlndXJlX2h3XFx0PSB0cmY3OTcwYV9pbl9jb25maWd1cmVfaHcsXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTIwNDU9c3RhdGljIGludCB0cmY3OTcwYV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yMTczLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MjE3NDpcXHR0cmYtXFx1MDAzZWRkZXYgPSBuZmNfZGlnaXRhbF9hbGxvY2F0ZV9kZXZpY2UoXFx1MDAyNnRyZjc5NzBhX25mY19vcHMsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yMTc1LVxcdFxcdFxcdFxcdFxcdFxcdFRSRjc5NzBBX1NVUFBPUlRFRF9QUk9UT0NPTFMsXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTIxODQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoyMTg1OlxcdG5mY19kaWdpdGFsX3NldF9wYXJlbnRfZGV2KHRyZi1cXHUwMDNlZGRldiwgdHJmLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MjE4NjpcXHRuZmNfZGlnaXRhbF9zZXRfZHJ2ZGF0YSh0cmYtXFx1MDAzZWRkZXYsIHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yMTg3LVxcdHNwaV9zZXRfZHJ2ZGF0YShzcGksIHRyZik7XFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6Mzk6MzYuNTE3OTI5NjIxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjMyOTY1MzY3NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIE5GQyBEcml2ZXIgTGFuZHNjYXBlKipcblxuT2theSwgaGVyZSdzIHdoYXQncyBnb2luZyBvbi4gSSdtIGxvb2tpbmcgYXQgYHBvcnQxMDAuY2Ag4oCTIGFoLCByaWdodCwgdGhhdCdzIGEgVVNCIGRyaXZlciwgc3BlY2lmaWNhbGx5IGxvY2F0ZWQgaW4gdGhlIGBkcml2ZXJzL25mY2AgZGlyZWN0b3J5LiBTZWVtcyBsaWtlIHRoZSBVU0IgTkZDIGRyaXZlci4gSW50ZXJlc3RpbmchIEFuZCB0aGVuIHRoZXJlJ3MgYGRyaXZlcnMvbmZjL25mY3NpbS5jYCwgd2hpY2gsIGJhc2VkIG9uIHRoZSBuYW1lLCBtdXN0IGJlIGEgdmlydHVhbCBvciBzaW11bGF0ZWQgTkZDIGRyaXZlci4gVGhpcyBpcyBoZWxwZnVsIHRvIGtub3cuIEkndmUgYmVlbiBtZWFuaW5nIHRvIGRpdmUgZGVlcGVyIGludG8gdGhlIE5GQyBsYW5kc2NhcGUgaW4gdGhlIGtlcm5lbC5cblxuTm93LCBjb25zaWRlcmluZyB0aGUgY2FwYWJpbGl0aWVzIG9mIHN5emthbGxlciwgaXQgc3VwcG9ydHMgVVNCIGZ1enppbmcsIHNwZWNpZmljYWxseSB1dGlsaXppbmcgUmF3IEdhZGdldCBvciBVU0IgZW11bGF0aW9uLiBUaGlzIGlzIHBlcmZlY3QhIFRoYXQgbWVhbnMgaXQgY2FuIHBvdGVudGlhbGx5IGVtdWxhdGUgdGhlIGBwb3J0MTAwYCBVU0IgZGV2aWNlLCBvciBldmVuIHRoZSBgbmZjc2ltYCB2aXJ0dWFsIGRldmljZS4gSXQgY2FuIGFsc28gbGlrZWx5IGludGVyYWN0IHdpdGggTkZDIG5ldGxpbmsgLyBzb2NrZXRzIChgQUZfTkZDYCksIHdoaWNoIGlzIGFub3RoZXIgYXZlbnVlIHRvIGV4cGxvcmUuXG5cblJpZ2h0LCB0aW1lIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbiBjYWxscywgc28gbGV0J3Mgc3RhcnQgYnkgY2hlY2tpbmcgaG93IGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgaXMgYWN0dWFsbHkgaW52b2tlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgzNzIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6Mzk6MzkuODE0NDY4MjE5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODM4NTYyMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDY9c3RhdGljIHZvaWQgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDctXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA4OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA5LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTc4PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2FjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMTItXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMTM6XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHNrYiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMTQtXFx0XFx0XFx0XFx0IGRhdGFfZXhjaCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTAyND1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hdG4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUxLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDUyOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUzLVxcdFxcdFxcdFxcdCBOVUxMKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDYwPXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNjktXFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIGRkZXYtXFx1MDAzZXNhdmVkX3NrYiwgMTUwMCxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA3MDpcXHRcXHRcXHRcXHQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDcxLVxcdGlmIChyYylcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDc2LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDc3OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3OC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTI5Nz1pbnQgZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzMxLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzMyOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCB0bXBfc2tiLCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMzMy1cXHRcXHRcXHRcXHQgTlVMTCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTM0OD1zdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3NlbmRfcHNsX3Jlc19jb21wbGV0ZShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNTktXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzNjA6XFx0ZGlnaXRhbF90Z19saXN0ZW4oZGRldiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzYxLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTE0Njc9c3RhdGljIHZvaWQgZGlnaXRhbF90Z19zZW5kX2F0cl9yZXNfY29tcGxldGUoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg1LVxcdGVsc2VcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTQ4NjpcXHRcXHRkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg3LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6Mzk6MzkuODYyODU3MzIxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjM5NTU3NzA0MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBERVBfUkVRIEZyYW1lIEhhbmRsaW5nIGluIERpZ2l0YWwgTkZDKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBmb2N1cyBpcyBvbiBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgLCB3aGljaCBoYW5kbGVzIHRoZSBpbmNvbWluZyBERVBfUkVRIGZyYW1lcyBpbiB0YXJnZXQgbW9kZSB3aXRoaW4gYGRpZ2l0YWxfZGVwLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHNwZWNpZmljIGNoYW5nZS4gRmlyc3QsIEknbGwgbmVlZCB0byBjaGVjayB0aGUgY29tbWl0IGl0c2VsZiB0byBncmFzcCB0aGUgYnVnIHRoYXQncyBiZWluZyBmaXhlZCBvciB0aGUgY2hhbmdlIGludHJvZHVjZWQuIEkgY291bGQgdXNlIGBnaXQgbG9nYCBpZiBuZWNlc3NhcnksIG9yIHNpbXBseSBleGFtaW5lIHRoZSBjb21taXQgbWVzc2FnZSBhbmQgdGhlIGRpZmYgZGlyZWN0bHkuXG5cblRoZSBwcm92aWRlZCBkaWZmIGdpdmVzIG1lIHRoZSBtZWF0IG9mIHRoZSBjaGFuZ2UuIEl0IHNlZW1zIHdlJ3JlIGRlYWxpbmcgd2l0aCBEZXZpY2UgSUQgKERJRCkgaGFuZGxpbmcgd2l0aGluIHRoZSBERVBfUkVRIGZyYW1lLiBJbml0aWFsbHksIHRoZSBjb2RlIGhhZCBhIGNvbmRpdGlvbmFsIGNoZWNrIGZvciB0aGUgRElEIGJpdCBiZWluZyBzZXQgaW4gdGhlIFByb3RvY29sIEZvcm1hdCBCeXRlIChQRkIpLiBJZiB0aGUgRElEIGJpdCB3YXMgc2V0LCBhbmQgdGhlIGBkZGV2LVx1MDAzZWRpZGAgd2FzIHZhbGlkLCBpdCBwZXJmb3JtZWQgYSBjaGVjayBvbiB0aGUgaW5jb21pbmcgZGF0YS4gVGhlIG9yaWdpbmFsIGNoZWNrIHdhcyBmbGF3ZWQuIFRoZSB1cGRhdGVkIHZlcnNpb24gbm93IGV4cGxpY2l0bHkgY2hlY2tzIHRoYXQgdGhlIHJlc3BvbnNlIGxlbmd0aCAoYHJlc3AtXHUwMDNlbGVuYCkgaXMgc3VmZmljaWVudCB0byBpbmNsdWRlIHRoZSBESUQgYnl0ZS4gSXQgYWxzbyBlbnN1cmVzIHRoYXQgdGhlIGBkZGV2LVx1MDAzZWRpZGAgaXMgdmFsaWQgYW5kIHRoYXQgdGhlIGluY29taW5nIERJRCBtYXRjaGVzIHRoZSBleHBlY3RlZCB2YWx1ZSwgZWZmZWN0aXZlbHkgaW1wcm92aW5nIHRoZSByb2J1c3RuZXNzIG9mIHRoZSBESUQgdmFsaWRhdGlvbi4gVGhpcyBhcHBlYXJzIHRvIGJlIGEgY3J1Y2lhbCBmaXggZm9yIGVuc3VyaW5nIGNvcnJlY3QgRElEIHByb2Nlc3NpbmcuXG5cbk5vdywgSSdtIGdvaW5nIHRvIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZ3Jhc3AgdGhlIGNvbnRleHQgb2YgdGhpcyBjaGFuZ2Ugd2l0aGluIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAuIEkgY2FuIHNlZSB0aGUgY29kZSBzdGFydHMgYnkgY2hlY2tpbmcgdGhlIGJhc2ljIGZyYW1lIHN0cnVjdHVyZSDigJMgc2l6ZSwgZGlyZWN0aW9uLCBhbmQgY29tbWFuZC4gVGhlbiwgaXQgcHJvY2VlZHMgdG8gZXZhbHVhdGUgdGhlIFBGQiwgYW5kIHRoZSBESUQgY2hlY2sgaXMgZG9uZSBpZiB0aGUgYml0IGlzIHNldCBpbiB0aGUgUEZCLiBJdCBjYWxjdWxhdGVzIHRoZSBgc2l6ZWAgb2YgdGhlIHN0cnVjdHVyZS4gSSBzaG91bGQgY2hlY2sgd2hhdCBgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKWAgYWN0dWFsbHkgaXMuIEknbGwgbmVlZCB0byBmaW5kIHRoZSBkZWZpbml0aW9uIG9mIHRoYXQgc3RydWN0dXJlIHRvIGZ1bGx5IHVuZGVyc3RhbmQgd2hhdCdzIGdvaW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTc5MywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDozOTo0My44MTg2MzAxNTNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNTkyNjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9kaWdpdGFsX2RlcC5jPTk0PXN0cnVjdCBkaWdpdGFsX3BzbF9yZXMge1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk5LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDA6c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMge1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDEtXFx0dTggZGlyO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTIwMD1kaWdpdGFsX3NlbmRfZGVwX2RhdGFfcHJlcChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoyMDE6XFx0XFx0XFx0ICAgc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXFfcmVzLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0yMDItXFx0XFx0XFx0ICAgc3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2gpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTI5PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX2FjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTUzMS17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjUzMjpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTMzLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTM5LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1NDA6XFx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTQxLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1NDI6XFx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTQzLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTU2Nj1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9uYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTY4LXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTY5OlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzAtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzYtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU3NzpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU3OTpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01ODAtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTk4PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYwMC17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYwMTpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjAyLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjA4LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MDk6XFx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjEwLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MTE6XFx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjEyLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTYyOT1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9ydG94KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjMxLXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjMyOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MzMtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NDYtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY0NzpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NDgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY0OTpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NTAtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9Njg2PXN0YXRpYyB2b2lkIGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02ODktXFx0c3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2ggPSBhcmc7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY5MDpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjkxLVxcdHU4IHBmYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy03NTUtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjc1NjpcXHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NzU3OlxcdGRlcF9yZXMgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilyZXNwLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy03NTgtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTA0PWludCBkaWdpdGFsX2luX3NlbmRfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkwNy17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjkwODpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTA5LVxcdHN0cnVjdCBza19idWZmICpjaGFpbmluZ19za2IsICp0bXBfc2tiO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxMS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTEyOlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxMy1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTE0OlxcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXFx1MDAzZWRhdGE7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxNS1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz05Nzg9c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTgwLXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTgxOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODItXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk4OTpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05OTAtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk5MTpcXHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05OTItXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTAyND1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hdG4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAyNS17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMjY6XFx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXM7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMjctXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDMzLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDM0OlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMzUtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMzY6XFx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAzNy1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDc3PXN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDgwLVxcdGludCByYztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA4MTpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA4Mi1cXHR1OCBwZmI7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTEwNy1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTEwODpcXHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTEwOTpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopcmVzcC1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTExMC1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMjk3PWludCBkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjk4LXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTI5OTpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwMC1cXHRzdHJ1Y3Qgc2tfYnVmZiAqY2hhaW5pbmdfc2tiLCAqdG1wX3NrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzAyLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzAzOlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMDQtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzMDU6XFx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6Mzk6NDMuODY5MjI3NzQ1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI2MTc4MzQwNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgZGlnaXRhbF9kZXBfcmVxX3Jlc2AgU3RydWN0KipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXNgIGRlZmluaXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRvIHF1aWNrbHkgYXNzZXNzIGl0cyBwdXJwb3NlLiBJJ20gZXhwZWN0aW5nIHRoaXMgdG8gbGlrZWx5IGVuY2Fwc3VsYXRlIHRoZSBkYXRhIGV4Y2hhbmdlZCBkdXJpbmcgYSBkaWdpdGFsIGRlcG9zaXQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgY3ljbGUsIG1heWJlIGZvciBmaW5hbmNpYWwgdHJhbnNhY3Rpb25zLCBBUEkgY2FsbHMsIG9yIHNpbWlsYXIuIEknbGwgYmUgbG9va2luZyBmb3Iga2V5IGZpZWxkcyB0aGF0IHByb3ZpZGUgY2x1ZXMgYWJvdXQgdGhlIHN0cnVjdHVyZS4gSSdsbCBtZW50YWxseSBtYXAgb3V0LCBiYXNlZCBvbiBpbmR1c3RyeSBzdGFuZGFyZHMsIHdoYXQgZXNzZW50aWFsIGNvbXBvbmVudHMgYXJlIGxpa2VseSB0byBiZSBwcmVzZW50OiBpZGVudGlmaWVycywgdGltZXN0YW1wcywgcmVxdWVzdCBkYXRhLCByZXNwb25zZSBjb2RlcywgYW55IHRyYW5zYWN0aW9uIGRldGFpbHMsIHBvdGVudGlhbGx5IGVycm9yIG1lc3NhZ2VzIGlmIHRoZSByZXNwb25zZSByZXByZXNlbnRzIGZhaWx1cmUsIGFuZCBwZXJoYXBzIGV2ZW4gc2VjdXJpdHktcmVsYXRlZCBmaWVsZHMgbGlrZSBzaWduYXR1cmVzIG9yIGhhc2hlcy4gSSdsbCBuZWVkIHRvIHJhcGlkbHkgaW50ZXJwcmV0IHRoZSBzdHJ1Y3R1cmUgYW5kIGhvdyBpdCByZWxhdGVzIHRvIGJyb2FkZXIgc3lzdGVtcyBJIGFtIGZhbWlsaWFyIHdpdGguIE15IHByaW1hcnkgY29uc2lkZXJhdGlvbnMgd2lsbCBpbnZvbHZlIHBvdGVudGlhbCBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMsIG9yIHBvc3NpYmxlIGluZWZmaWNpZW5jaWVzLiBNeSBzZWNvbmRhcnkgY29uc2lkZXJhdGlvbnMgd2lsbCBsb29rIGludG8gZGF0YSB0eXBlIHVzYWdlLCBwYWRkaW5nLCBhbmQgYWxpZ25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzM3OCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjM5OjQ2LjQ4NzA2NDI0MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDA4NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25mYy9kaWdpdGFsX2RlcC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDk4LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDk4OlxcdH0gX19wYWNrZWQ7XFxuICA5OTpcXHRcXG4gMTAwOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzIHtcXG4gMTAxOlxcdFxcdHU4IGRpcjtcXG4gMTAyOlxcdFxcdHU4IGNtZDtcXG4gMTAzOlxcdFxcdHU4IHBmYjtcXG4gMTA0OlxcdH0gX19wYWNrZWQ7XFxuIDEwNTpcXHRcXG4gMTA2OlxcdHN0YXRpYyB2b2lkIGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4gMTA3OlxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjM5OjQ2LjQ4NzE2Njg4MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyMTgwNDk0MDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBgc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXNgIGZvciBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0aWVzKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzYC4gSSBzZWUgYGRpcmAgKDEgYnl0ZSksIGBjbWRgICgxIGJ5dGUpLCBhbmQgYHBmYmAgKDEgYnl0ZSkuIFRoYXQgc3VtcyB1cCB0byBhIHNpemUgb2YgMyBieXRlcywgZ290IGl0LiBOb3csIGxldCdzIHJld2luZCBhbmQgbG9vayBhdCB0aGUgY29kZSAqYmVmb3JlKiB0aGlzIGNvbW1pdCwgc3BlY2lmaWNhbGx5IHRoaXMgbGluZTogYGlmIChkZGV2LVx1MDAzZWRpZCBcdTAwMjZcdTAwMjYgKGRkZXYtXHUwMDNlZGlkID09IHJlc3AtXHUwMDNlZGF0YVszXSkpYC4gSG1tLi4uIHRoYXQgYHJlc3AtXHUwMDNlZGF0YVszXWAgaXMgbWFraW5nIG1lIHR3aXRjaC4gSWYgYHJlc3AtXHUwMDNlbGVuYCBoYXBwZW5zIHRvIGJlIGV4YWN0bHkgMywgd2UncmUgc3RhcmluZyBhdCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgcmlnaHQgaW4gdGhlIGZhY2UuIFRoYXQncyBhIGNsYXNzaWMgbWlzdGFrZSFcblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLCBJIG5lZWQgdG8gY2hlY2sgaG93IGBkaWdpdGFsX2luX3JlY3ZfZGVwX3Jlc2AgaGFuZGxlcyB0aGlzIHRvby4gT2theSwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgbGluZXMgNzUwLTc4MCwganVzdCB0byBjb25maXJtIHRoYXQgdGhpcyBpcyBub3QgYW4gaXNzdWUgdGhlcmUgYXMgd2VsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM3OTksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDozOTo0OC42Njc2NjQxODFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTM1OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25mYy9kaWdpdGFsX2RlcC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc1MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDc1MDpcXHRcXG4gNzUxOlxcdFxcdGlmIChyZXNwLVxcdTAwM2VsZW4gXFx1MDAzZSBkZGV2LVxcdTAwM2Vsb2NhbF9wYXlsb2FkX21heCkge1xcbiA3NTI6XFx0XFx0XFx0cmMgPSAtRU1TR1NJWkU7XFxuIDc1MzpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuIDc1NDpcXHRcXHR9XFxuIDc1NTpcXHRcXG4gNzU2OlxcdFxcdHNpemUgPSBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpO1xcbiA3NTc6XFx0XFx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXJlc3AtXFx1MDAzZWRhdGE7XFxuIDc1ODpcXHRcXG4gNzU5OlxcdFxcdGlmIChyZXNwLVxcdTAwM2VsZW4gXFx1MDAzYyBzaXplIHx8IGRlcF9yZXMtXFx1MDAzZWRpciAhPSBESUdJVEFMX05GQ19ERVBfRlJBTUVfRElSX0lOIHx8XFxuIDc2MDpcXHRcXHQgICAgZGVwX3Jlcy1cXHUwMDNlY21kICE9IERJR0lUQUxfQ01EX0RFUF9SRVMpIHtcXG4gNzYxOlxcdFxcdFxcdHJjID0gLUVJTztcXG4gNzYyOlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDc2MzpcXHRcXHR9XFxuIDc2NDpcXHRcXG4gNzY1OlxcdFxcdHBmYiA9IGRlcF9yZXMtXFx1MDAzZXBmYjtcXG4gNzY2OlxcdFxcbiA3Njc6XFx0XFx0aWYgKERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpKSB7XFxuIDc2ODpcXHRcXHRcXHRQUk9UT0NPTF9FUlIoXFxcIjE0LjguMi4xXFxcIik7XFxuIDc2OTpcXHRcXHRcXHRyYyA9IC1FSU87XFxuIDc3MDpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbiA3NzE6XFx0XFx0fVxcbiA3NzI6XFx0XFxuIDc3MzpcXHRcXHRpZiAoRElHSVRBTF9ORkNfREVQX05BRF9CSVRfU0VUKHBmYikpIHtcXG4gNzc0OlxcdFxcdFxcdHJjID0gLUVJTztcXG4gNzc1OlxcdFxcdFxcdGdvdG8gZXhpdDtcXG4gNzc2OlxcdFxcdH1cXG4gNzc3OlxcdFxcbiA3Nzg6XFx0XFx0aWYgKHNpemUgXFx1MDAzZSByZXNwLVxcdTAwM2VsZW4pIHtcXG4gNzc5OlxcdFxcdFxcdHJjID0gLUVJTztcXG4gNzgwOlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDc4MTpcXHRcXHR9XFxuIDc4MjpcXHRcXG4gNzgzOlxcdFxcdHNrYl9wdWxsKHJlc3AsIHNpemUpO1xcbiA3ODQ6XFx0XFxuIDc4NTpcXHRcXHRzd2l0Y2ggKERJR0lUQUxfTkZDX0RFUF9QRkJfVFlQRShwZmIpKSB7XFxuIDc4NjpcXHRcXHRjYXNlIERJR0lUQUxfTkZDX0RFUF9QRkJfSV9QRFU6XFxuIDc4NzpcXHRcXHRcXHRpZiAoRElHSVRBTF9ORkNfREVQX1BGQl9QTkkocGZiKSAhPSBkZGV2LVxcdTAwM2VjdXJyX25mY19kZXBfcG5pKSB7XFxuIDc4ODpcXHRcXHRcXHRcXHRQUk9UT0NPTF9FUlIoXFxcIjE0LjEyLjMuM1xcXCIpO1xcbiA3ODk6XFx0XFx0XFx0XFx0cmMgPSAtRUlPO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDozOTo0OC42Njc3NjExMjFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NTQ5NDI4NzM5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTkZDIERFUCBGcmFtZSBQcm9jZXNzaW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGlzIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgZnVuY3Rpb24gaW4gYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2AuIFRoaXMgc25pcHBldCBpcyBpbnRlcmVzdGluZzsgaXQncyB0aGUgY29yZSBvZiBob3cgRGlnaXRhbCBUYXJnZXQgbW9kZSByZXF1ZXN0cyBhcmUgaGFuZGxlZC4gVGhlIGNvZGUgY2hlY2tzIGEgY291cGxlIG9mIGtleSBjb25kaXRpb25zIGJhc2VkIG9uIHRoZSBQcm90b2NvbCBGcmFtZSBCaXQgKFBGQik6XG5cbklmIHRoZSBEaWdpdGFsIElkZW50aWZpY2F0aW9uIChESUQpIGJpdCBpcyBzZXQgaW4gdGhlIFBGQiwgdGhlbiBpdCBtYWtlcyBjZXJ0YWluIGFzc2VydGlvbnMgYWJvdXQgdGhlIGluY29taW5nIHJlc3BvbnNlIGRhdGEuIFNwZWNpZmljYWxseSwgaXQgdmVyaWZpZXMgdGhhdCB0aGUgcmVzcG9uc2UgbGVuZ3RoIGlzIHN1ZmZpY2llbnQgdG8gaW5jbHVkZSB0aGUgRElELCB0aGUgZGV2aWNlIGhhcyBhIHZhbGlkIERJRCwgYW5kIHRoZSByZXNwb25zZSBESUQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgRElELiBBbiBgRUlPYCBlcnJvciBpcyByZXR1cm5lZCBhbmQgZXhlY3V0aW9uIGp1bXBzIHRvIHRoZSBgZXhpdGAgbGFiZWwgaWYgdGhlc2UgY2hlY2tzIGZhaWwuIElmIHRoZSBESUQgYml0IGlzIG5vdCBzZXQsIGJ1dCB0aGUgZGV2aWNlICpkb2VzKiBoYXZlIGEgRElEIGFzc2lnbmVkLCBpdCdzIGFsc28gY29uc2lkZXJlZCBhbiBlcnJvciwgYW5kIGBFSU9gIGlzIHJldHVybmVkLlxuXG5Ob3csIGxldCdzIGZpZ3VyZSBvdXQgKndoZXJlKiB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5IGdldHMgY2FsbGVkLiBUaW1lIHRvIHRyYWNlIHRoZSBjYWxsZXJzOiBMb29rcyBsaWtlIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgaXMgdXNlZCBpbiBtdWx0aXBsZSBzY2VuYXJpb3M6IEl0J3MgdGhlIGNhbGxiYWNrIGZvciBzZW5kaW5nIGFuIEFDSyAoYGRpZ2l0YWxfdGdfc2VuZF9hY2tgKSwgc2VuZGluZyBhbiBBVE4gKGBkaWdpdGFsX3RnX3NlbmRfYXRuYCksIHNlbmRpbmcgYSBzYXZlZCBTS0IgKGBkaWdpdGFsX3RnX3NlbmRfc2F2ZWRfc2tiYCksIGFuZCBzZW5kaW5nIGEgREVQIHJlc3BvbnNlIChgZGlnaXRhbF90Z19zZW5kX2RlcF9yZXNgKS4gSW50cmlndWluZ2x5LCBpdCdzIGFsc28gY2FsbGVkIHZpYSBgZGlnaXRhbF90Z19saXN0ZW5gIGluIGBkaWdpdGFsX3RnX3NlbmRfcHNsX3Jlc19jb21wbGV0ZWAsIGFuZCBkaXJlY3RseSBpbiBgZGlnaXRhbF90Z19zZW5kX2F0cl9yZXNfY29tcGxldGVgLlxuXG5UbyBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29kZSBmbG93IGFuZCB1c2UgY2FzZXMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgdGFyZ2V0IG1vZGUgaXMgZW50ZXJlZCBvciBob3cgdGhlIE5GQyBkaWdpdGFsIGRldmljZSAoYGRkZXZgKSBpcyB1c2VkLiBJJ2xsIHNlYXJjaCBmb3Igb2NjdXJyZW5jZXMgb2YgYGRpZ2l0YWxfdGdfYCB3aXRoaW4gcmVsZXZhbnQgZmlsZXMsIHNwZWNpZmljYWxseSBgbmV0L25mYy9kaWdpdGFsXyouY2AgYW5kIGBuZXQvbmZjL2RpZ2l0YWxfY29yZS5jYCwgdG8gYnVpbGQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGZ1bmN0aW9uJ3MgYnJvYWRlciBjb250ZXh0IGFuZCBpZGVudGlmeSB0aGUgcG9zc2libGUgZW50cnkgcG9pbnRzIGZvciB0aGVzZSBvcGVyYXRpb25zLiBUaGlzIHdpbGwgaGVscCBkZXRlcm1pbmUgdGhlIHBvc3NpYmxlIHN0YXRlcyB0aGF0IG5lZWQgdG8gYmUgY29uc2lkZXJlZCB3aGVuIGRlYnVnZ2luZyB0aGlzIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDc5OSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjM5OjU0LjE2MjA1MTg3NloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUxNzA2NjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGlnaXRhbF90Z19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL2RpZ2l0YWwuaD00OD1pbnQgZGlnaXRhbF9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCBjbWRfdHlwZSxcXG5uZXQvbmZjL2RpZ2l0YWwuaDo0OTpcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBkaWdpdGFsX3RnX21kYWFfcGFyYW1zICpwYXJhbXMsXFxubmV0L25mYy9kaWdpdGFsLmgtNTAtXFx0XFx0ICAgICB1MTYgdGltZW91dCwgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY21kX2NiLFxcbi0tXFxubmV0L25mYy9kaWdpdGFsLmg9ODM9aW50IGRpZ2l0YWxfaW5fc2VuZF9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWwuaC04Ni1cXG5uZXQvbmZjL2RpZ2l0YWwuaDo4NzppbnQgZGlnaXRhbF90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsIGludCBwYXJhbSk7XFxubmV0L25mYy9kaWdpdGFsLmg6ODg6c3RhdGljIGlubGluZSBpbnQgZGlnaXRhbF90Z19zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbm5ldC9uZmMvZGlnaXRhbC5oLTg5LVxcdFxcdFxcdHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsLmgtOTUtXFxubmV0L25mYy9kaWdpdGFsLmg6OTY6dm9pZCBkaWdpdGFsX3RnX3JlY3Zfc2Vuc19yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbC5oLTk3LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcXG5uZXQvbmZjL2RpZ2l0YWwuaC05OC1cXG5uZXQvbmZjL2RpZ2l0YWwuaDo5OTp2b2lkIGRpZ2l0YWxfdGdfcmVjdl9zZW5zZl9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbC5oLTEwMC1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xcbm5ldC9uZmMvZGlnaXRhbC5oLTEwMS1cXG5uZXQvbmZjL2RpZ2l0YWwuaDoxMDI6c3RhdGljIGlubGluZSBpbnQgZGlnaXRhbF90Z19saXN0ZW4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTE2IHRpbWVvdXQsXFxubmV0L25mYy9kaWdpdGFsLmgtMTAzLVxcdFxcdFxcdFxcdCAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsLmgtMTA4LVxcbm5ldC9uZmMvZGlnaXRhbC5oOjEwOTp2b2lkIGRpZ2l0YWxfdGdfcmVjdl9hdHJfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWwuaC0xMTAtXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XFxubmV0L25mYy9kaWdpdGFsLmgtMTExLVxcbm5ldC9uZmMvZGlnaXRhbC5oOjExMjppbnQgZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxubmV0L25mYy9kaWdpdGFsLmgtMTEzLVxcbm5ldC9uZmMvZGlnaXRhbC5oOjExNDppbnQgZGlnaXRhbF90Z19saXN0ZW5fbmZjYShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZl90ZWNoKTtcXG5uZXQvbmZjL2RpZ2l0YWwuaDoxMTU6aW50IGRpZ2l0YWxfdGdfbGlzdGVuX25mY2Yoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmZfdGVjaCk7XFxubmV0L25mYy9kaWdpdGFsLmg6MTE2OnZvaWQgZGlnaXRhbF90Z19yZWN2X21kX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXFxubmV0L25mYy9kaWdpdGFsLmgtMTE3LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTI3PXN0cnVjdCBkaWdpdGFsX2NtZCB7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTM1LVxcdHN0cnVjdCBza19idWZmICpyZXNwO1xcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6MzY6XFx0c3RydWN0IGRpZ2l0YWxfdGdfbWRhYV9wYXJhbXMgKm1kYWFfcGFyYW1zO1xcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMzctXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTE1Mj1zdGF0aWMgdm9pZCBkaWdpdGFsX3dxX2NtZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTE1NS1cXHRzdHJ1Y3QgZGlnaXRhbF9jbWQgKmNtZDtcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjE1NjpcXHRzdHJ1Y3QgZGlnaXRhbF90Z19tZGFhX3BhcmFtcyAqcGFyYW1zO1xcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMTU3LVxcdHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYgPSBjb250YWluZXJfb2Yod29yayxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM9MjI3PWludCBkaWdpdGFsX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IGNtZF90eXBlLFxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6MjI4OlxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGRpZ2l0YWxfdGdfbWRhYV9wYXJhbXMgKnBhcmFtcyxcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTIyOS1cXHRcXHQgICAgIHUxNiB0aW1lb3V0LCBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjbWRfY2IsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTI1NT1pbnQgZGlnaXRhbF9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsIGludCBwYXJhbSlcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjY1LVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6MjY2OmludCBkaWdpdGFsX3RnX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgdHlwZSwgaW50IHBhcmFtKVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjY3LXtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjc2LVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6Mjc3OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19saXN0ZW5fbWRhYShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZl90ZWNoKVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjc4LXtcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjI3OTpcXHRzdHJ1Y3QgZGlnaXRhbF90Z19tZGFhX3BhcmFtcyAqcGFyYW1zO1xcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjgwLVxcdGludCByYztcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjk1LVxcdHJjID0gZGlnaXRhbF9zZW5kX2NtZChkZGV2LCBESUdJVEFMX0NNRF9UR19MSVNURU5fTURBQSwgTlVMTCwgcGFyYW1zLFxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6Mjk2OlxcdFxcdFxcdCAgICAgIDUwMCwgZGlnaXRhbF90Z19yZWN2X2F0cl9yZXEsIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjk3LVxcdGlmIChyYylcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMzAyLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6MzAzOnN0YXRpYyBpbnQgZGlnaXRhbF90Z19saXN0ZW5fbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmZfdGVjaClcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTMwNC17XFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0zMDUtXFx0cmV0dXJuIGRpZ2l0YWxfc2VuZF9jbWQoZGRldiwgRElHSVRBTF9DTURfVEdfTElTVEVOX01ELCBOVUxMLCBOVUxMLCA1MDAsXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzozMDY6XFx0XFx0XFx0XFx0ZGlnaXRhbF90Z19yZWN2X21kX3JlcSwgTlVMTCk7XFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0zMDctfVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYz00NzY9c3RhdGljIGludCBkaWdpdGFsX3N0YXJ0X3BvbGwoc3RydWN0IG5mY19kZXYgKm5mY19kZXYsIF9fdTMyIGltX3Byb3RvY29scyxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTI4LVxcdFxcdFxcdGRpZ2l0YWxfYWRkX3BvbGxfdGVjaChkZGV2LCAwLFxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6NTI5OlxcdFxcdFxcdFxcdFxcdCAgICAgIGRpZ2l0YWxfdGdfbGlzdGVuX21kYWEpO1xcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTMwLVxcdFxcdH0gZWxzZSBpZiAoZGRldi1cXHUwMDNlb3BzLVxcdTAwM2V0Z19saXN0ZW5fbWQpIHtcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTUzMS1cXHRcXHRcXHRkaWdpdGFsX2FkZF9wb2xsX3RlY2goZGRldiwgMCxcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjUzMjpcXHRcXHRcXHRcXHRcXHQgICAgICBkaWdpdGFsX3RnX2xpc3Rlbl9tZCk7XFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01MzMtXFx0XFx0fSBlbHNlIHtcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTUzNC1cXHRcXHRcXHRkaWdpdGFsX2FkZF9wb2xsX3RlY2goZGRldiwgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBLFxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6NTM1OlxcdFxcdFxcdFxcdFxcdCAgICAgIGRpZ2l0YWxfdGdfbGlzdGVuX25mY2EpO1xcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTM2LVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTM3LVxcdFxcdFxcdGRpZ2l0YWxfYWRkX3BvbGxfdGVjaChkZGV2LCBORkNfRElHSVRBTF9SRl9URUNIXzIxMkYsXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo1Mzg6XFx0XFx0XFx0XFx0XFx0ICAgICAgZGlnaXRhbF90Z19saXN0ZW5fbmZjZik7XFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01MzktXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01NDAtXFx0XFx0XFx0ZGlnaXRhbF9hZGRfcG9sbF90ZWNoKGRkZXYsIE5GQ19ESUdJVEFMX1JGX1RFQ0hfNDI0RixcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjU0MTpcXHRcXHRcXHRcXHRcXHQgICAgICBkaWdpdGFsX3RnX2xpc3Rlbl9uZmNmKTtcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTU0Mi1cXHRcXHR9XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTY0MT1zdGF0aWMgdm9pZCBkaWdpdGFsX2RlYWN0aXZhdGVfdGFyZ2V0KHN0cnVjdCBuZmNfZGV2ICpuZmNfZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy02NTUtXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo2NTY6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmQoc3RydWN0IG5mY19kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTY1Ny17XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTY1OS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjY2MDpcXHRyZXR1cm4gZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoZGRldiwgc2tiKTtcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTY2MS19XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTc0ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5mY19vcHMgZGlnaXRhbF9uZmNfb3BzID0ge1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy03NTItXFx0LmRlYWN0aXZhdGVfdGFyZ2V0ID0gZGlnaXRhbF9kZWFjdGl2YXRlX3RhcmdldCxcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjc1MzpcXHQudG1fc2VuZCA9IGRpZ2l0YWxfdGdfc2VuZCxcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTc1NC1cXHQuaW1fdHJhbnNjZWl2ZSA9IGRpZ2l0YWxfaW5fc2VuZCxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDY9c3RhdGljIHZvaWQgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDctXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA4OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA5LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTA0PWludCBkaWdpdGFsX2luX3NlbmRfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk1MC1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTUxOnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfc2V0X3JmX3RlY2goc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmZfdGVjaClcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTUyLXtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05NzctXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk3ODpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hY2soc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTc5LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZGlnaXRhbF9kYXRhX2V4Y2ggKmRhdGFfZXhjaClcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDEyLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDEzOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDE0LVxcdFxcdFxcdFxcdCBkYXRhX2V4Y2gpO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMjMtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMjQ6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYXRuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMjUte1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNTEtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNTI6XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHNrYiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNTMtXFx0XFx0XFx0XFx0IE5VTEwpO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNTktXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNjA6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfc2F2ZWRfc2tiKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNjEte1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNjgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNjk6XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIGRkZXYtXFx1MDAzZXNhdmVkX3NrYiwgMTUwMCxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA3MDpcXHRcXHRcXHRcXHQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDcxLVxcdGlmIChyYylcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDc2LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDc3OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3OC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTE1Ni1cXHRcXHRcXHQgKiB3aGljaCBpcyB0aGUgcHJldmlvdXMgREVQX1JFUyBzYXZlZCBpblxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMTU3OlxcdFxcdFxcdCAqIGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKCkuXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExNTgtXFx0XFx0XFx0ICovXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTE2MC1cXHRcXHRcXHQgIERJR0lUQUxfTkZDX0RFUF9QRkJfUE5JKGRkZXYtXFx1MDAzZWN1cnJfbmZjX2RlcF9wbmkgLSAxKSkge1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMTYxOlxcdFxcdFxcdFxcdHJjID0gZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYihkZGV2KTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTE2Mi1cXHRcXHRcXHRcXHRpZiAocmMpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTE4NC1cXHRcXHRyZXNwID0gZGlnaXRhbF9yZWN2X2RlcF9kYXRhX2dhdGhlcihkZGV2LCBwZmIsIHJlc3AsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjExODU6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIGRpZ2l0YWxfdGdfc2VuZF9hY2ssIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTg2LVxcdFxcdGlmIChJU19FUlIocmVzcCkpIHtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjEwLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMjExOlxcdFxcdFxcdHJjID0gZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYihkZGV2KTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTIxMi1cXHRcXHRcXHRpZiAocmMpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTIzMC1cXHRcXHRcXHRcXHRcXHRcXHRkZGV2LVxcdTAwM2VjdXJyX25mY19kZXBfcG5pKSB7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEyMzE6XFx0XFx0XFx0XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfc2F2ZWRfc2tiKGRkZXYpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjMyLVxcdFxcdFxcdFxcdGlmIChyYylcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjU0LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMjU1OlxcdFxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoZGRldiwgZGRldi1cXHUwMDNlY2hhaW5pbmdfc2tiKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTI1Ni1cXHRcXHRpZiAocmMpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTI2NS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTI2NjpcXHRcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9hdG4oZGRldik7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyNjctXFx0XFx0aWYgKHJjKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyOTYtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEyOTc6aW50IGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyOTgte1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMzEtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzMzI6XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHRtcF9za2IsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzMzLVxcdFxcdFxcdFxcdCBOVUxMKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzQ3LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzQ4OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfc2VuZF9wc2xfcmVzX2NvbXBsZXRlKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNDktXFx0XFx0XFx0XFx0XFx0ICAgICB2b2lkICphcmcsIHN0cnVjdCBza19idWZmICpyZXNwKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNTUtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzNTY6XFx0ZGlnaXRhbF90Z19zZXRfcmZfdGVjaChkZGV2LCByZl90ZWNoKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM1Ny1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTM1ODpcXHRkaWdpdGFsX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfUkZfVEVDSCwgcmZfdGVjaCk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNTktXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzNjA6XFx0ZGlnaXRhbF90Z19saXN0ZW4oZGRldiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzYxLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNjQtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzNjU6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfcHNsX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCBkaWQsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNjYtXFx0XFx0XFx0XFx0ICAgdTggcmZfdGVjaClcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzg5LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzkwOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDAsIGRpZ2l0YWxfdGdfc2VuZF9wc2xfcmVzX2NvbXBsZXRlLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzkxLVxcdFxcdFxcdFxcdCAodm9pZCAqKSh1bnNpZ25lZCBsb25nKXJmX3RlY2gpO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzOTctXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzOTg6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X3BzbF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzk5LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDYwLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNDYxOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX3BzbF9yZXMoZGRldiwgcHNsX3JlcS1cXHUwMDNlZGlkLCByZl90ZWNoKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ2Mi1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDY2LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNDY3OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfc2VuZF9hdHJfcmVzX2NvbXBsZXRlKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0NjgtXFx0XFx0XFx0XFx0XFx0ICAgICB2b2lkICphcmcsIHN0cnVjdCBza19idWZmICpyZXNwKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0ODMtXFx0aWYgKHJlc3AtXFx1MDAzZWRhdGFbb2Zmc2V0XSA9PSBESUdJVEFMX0NNRF9QU0xfUkVRKVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNDg0OlxcdFxcdGRpZ2l0YWxfdGdfcmVjdl9wc2xfcmVxKGRkZXYsIGFyZywgcmVzcCk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0ODUtXFx0ZWxzZVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNDg2OlxcdFxcdGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKGRkZXYsIGFyZywgcmVzcCk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0ODctfVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg4LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNDg5OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2F0cl9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ5MC1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZGlnaXRhbF9hdHJfcmVxICphdHJfcmVxKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE1MzItXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjE1MzM6XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHNrYiwgOTk5LFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNTM0OlxcdFxcdFxcdFxcdCBkaWdpdGFsX3RnX3NlbmRfYXRyX3Jlc19jb21wbGV0ZSwgTlVMTCk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE1MzUtXFx0aWYgKHJjKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE1NDAtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjE1NDE6dm9pZCBkaWdpdGFsX3RnX3JlY3ZfYXRyX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE1NDItXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNTYxLVxcdFxcdG1pbl9zaXplID0gRElHSVRBTF9BVFJfUkVRX01JTl9TSVpFICsgMjtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTU2MjpcXHRcXHRkaWdpdGFsX3RnX3NldF9yZl90ZWNoKGRkZXYsIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE1NjMtXFx0fSBlbHNlIHtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTU2NC1cXHRcXHRtaW5fc2l6ZSA9IERJR0lUQUxfQVRSX1JFUV9NSU5fU0laRSArIDE7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjE1NjU6XFx0XFx0ZGlnaXRhbF90Z19zZXRfcmZfdGVjaChkZGV2LCBORkNfRElHSVRBTF9SRl9URUNIXzIxMkYpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNTY2LVxcdH1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNjA1LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNjA2OlxcdHJjID0gZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkcsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE2MDctXFx0XFx0XFx0XFx0ICAgICBORkNfRElHSVRBTF9GUkFNSU5HX05GQ19ERVBfQUNUSVZBVEVEKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNjEwLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNjExOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2F0cl9yZXMoZGRldiwgYXRyX3JlcSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE2MTItXFx0aWYgKHJjKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYz04OTU9aW50IGRpZ2l0YWxfaW5fc2VuZF9pc28xNTY5M19pbnZfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmX3RlY2gpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTkzNC1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjkzNTpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9zZWxfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05MzYte1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05NDgtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzo5NDk6XFx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORyxcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTk1MC1cXHRcXHRcXHRcXHQgICAgIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9BTlRJQ09MX0NPTVBMRVRFKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTU1LVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6OTU2OlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDMwMCwgZGlnaXRhbF90Z19yZWN2X2F0cl9yZXEsXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05NTctXFx0XFx0XFx0XFx0IE5VTEwpO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05NjMtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzo5NjQ6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X3NlbF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTY1LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTg0LVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6OTg1OlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX3NlbF9yZXMoZGRldik7XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05ODYtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTk5My1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjk5NDpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9zZGRfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05OTUte1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDEzLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTAxNDpcXHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KGRkZXYsIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HLFxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTAxNS1cXHRcXHRcXHRcXHRORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkRfV0lUSF9DUkNfQSk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwMjAtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMDIxOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDMwMCwgZGlnaXRhbF90Z19yZWN2X3NlbF9yZXEsXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDIyLVxcdFxcdFxcdFxcdCBOVUxMKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTAyOC1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEwMjk6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X3NkZF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTAzMC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwNDgtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMDQ5OlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX3NkZF9yZXMoZGRldik7XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDUwLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDU3LVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTA1ODpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9zZW5zX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA1OS17XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwNzItXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMDczOlxcdHJjID0gZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkcsXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDc0LVxcdFxcdFxcdFxcdCAgICAgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NUQU5EQVJEKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA3OS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEwODA6XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHNrYiwgMzAwLCBkaWdpdGFsX3RnX3JlY3Zfc2RkX3JlcSxcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwODEtXFx0XFx0XFx0XFx0IE5VTEwpO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDg3LVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTA4ODp2b2lkIGRpZ2l0YWxfdGdfcmVjdl9zZW5zX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDg5LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpyZXNwKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTA3LVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTEwODpcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9zZW5zX3JlcyhkZGV2KTtcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExMDktXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExMTYtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMTE3OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9hdHJfb3Jfc2Vuc2ZfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTE4LVxcdFxcdHZvaWQgKmFyZywgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExMjEtXFx0XFx0XFx0KHJlc3AtXFx1MDAzZWRhdGFbMV0gPT0gRElHSVRBTF9DTURfU0VOU0ZfUkVRKSlcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjExMjI6XFx0XFx0ZGlnaXRhbF90Z19yZWN2X3NlbnNmX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTEyMy1cXHRlbHNlXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMTI0OlxcdFxcdGRpZ2l0YWxfdGdfcmVjdl9hdHJfcmVxKGRkZXYsIGFyZywgcmVzcCk7XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTI1LVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTI4LVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTEyOTpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9zZW5zZl9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExMzAtXFx0XFx0XFx0ICAgICAgc3RydWN0IGRpZ2l0YWxfc2Vuc2ZfcmVxICpzZW5zZl9yZXEpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExNzItXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMTczOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDMwMCxcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjExNzQ6XFx0XFx0XFx0XFx0IGRpZ2l0YWxfdGdfcmVjdl9hdHJfb3Jfc2Vuc2ZfcmVxLCBOVUxMKTtcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExNzUtXFx0aWYgKHJjKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTgwLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTE4MTp2b2lkIGRpZ2l0YWxfdGdfcmVjdl9zZW5zZl9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTE4Mi1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMTMtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjE0OlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX3NlbnNmX3JlcyhkZGV2LCBzZW5zZl9yZXEpO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIxNS1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIyMi1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyMjM6c3RhdGljIGludCBkaWdpdGFsX3RnX2NvbmZpZ19uZmNhKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjI0LXtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIyNi1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyMjc6XFx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfUkZfVEVDSCxcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMjgtXFx0XFx0XFx0XFx0ICAgICBORkNfRElHSVRBTF9SRl9URUNIXzEwNkEpO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjMxLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTIzMjpcXHRyZXR1cm4gZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkcsXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjMzLVxcdFxcdFxcdFxcdCAgICAgICBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfTkZDX0RFUCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMzUtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjM2OmludCBkaWdpdGFsX3RnX2xpc3Rlbl9uZmNhKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmX3RlY2gpXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjM3LXtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIzOS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyNDA6XFx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ19uZmNhKGRkZXYpO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI0MS1cXHRpZiAocmMpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNDMtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjQ0OlxcdHJldHVybiBkaWdpdGFsX3RnX2xpc3RlbihkZGV2LCAzMDAsIGRpZ2l0YWxfdGdfcmVjdl9zZW5zX3JlcSwgTlVMTCk7XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjQ1LX1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNDYtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjQ3OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19jb25maWdfbmZjZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZl90ZWNoKVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI0OC17XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNTAtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjUxOlxcdHJjID0gZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0gsIHJmX3RlY2gpO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI1Mi1cXHRpZiAocmMpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNTQtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjU1OlxcdHJldHVybiBkaWdpdGFsX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORyxcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNTYtXFx0XFx0XFx0XFx0ICAgICAgIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDRl9ORkNfREVQKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI1OC1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyNTk6aW50IGRpZ2l0YWxfdGdfbGlzdGVuX25mY2Yoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmZfdGVjaClcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNjAte1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjYyLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI2MzpcXHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlnX25mY2YoZGRldiwgcmZfdGVjaCk7XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjY0LVxcdGlmIChyYylcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI2Ni1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyNjc6XFx0cmV0dXJuIGRpZ2l0YWxfdGdfbGlzdGVuKGRkZXYsIDMwMCwgZGlnaXRhbF90Z19yZWN2X3NlbnNmX3JlcSwgTlVMTCk7XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjY4LX1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNjktXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjcwOnZvaWQgZGlnaXRhbF90Z19yZWN2X21kX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjcxLVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI4Ni1cXHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QTpcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyODc6XFx0XFx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ19uZmNhKGRkZXYpO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI4OC1cXHRcXHRpZiAocmMpXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjg5LVxcdFxcdFxcdGdvdG8gZXhpdF9mcmVlX3NrYjtcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyOTA6XFx0XFx0ZGlnaXRhbF90Z19yZWN2X3NlbnNfcmVxKGRkZXYsIGFyZywgcmVzcCk7XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjkxLVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjkzLVxcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF80MjRGOlxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI5NDpcXHRcXHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlnX25mY2YoZGRldiwgcmZfdGVjaCk7XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjk1LVxcdFxcdGlmIChyYylcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyOTYtXFx0XFx0XFx0Z290byBleGl0X2ZyZWVfc2tiO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI5NzpcXHRcXHRkaWdpdGFsX3RnX3JlY3Zfc2Vuc2ZfcmVxKGRkZXYsIGFyZywgcmVzcCk7XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjk4LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDozOTo1NC4yMTcyMjg1ODdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6ODE3NzQ1NTI5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipUcmFjaW5nIHRoZSBEaWdpdGFsIE5GQyBTZW5kIEZ1bmN0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGBkaWdpdGFsX3RnX3NlbmRgIGlzLCBhcyBJIHN1c3BlY3RlZCwgaW1wbGVtZW50ZWQgYXMgYGRldi1cdTAwM2VvcHMtXHUwMDNldG1fc2VuZGAgd2l0aGluIHRoZSBgZGlnaXRhbF9uZmNfb3BzYCBzdHJ1Y3R1cmUuIFRoYXQncyBnb29kLCB0aGF0IGNvbmZpcm1zIHRoZSBjb3JlIHJlbGF0aW9uc2hpcC4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHF1ZXN0aW9uOiAqd2hlcmUqIGlzIHRoaXMgYHRtX3NlbmRgIGZ1bmN0aW9uIGFjdHVhbGx5IGJlaW5nIGNhbGxlZCBmcm9tPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gVGltZSB0byBkaXZlIGludG8gdGhlIGBuZXQvbmZjYCBkaXJlY3RvcnkgYW5kIHNwZWNpZmljYWxseSBleGFtaW5lIHRoZSBgdG1fc2VuZGAgZnVuY3Rpb24ncyB1c2FnZS4gVGhhdCdzIHdoZXJlIEkgc2hvdWxkIGZpbmQgdGhlIGFuc3dlciB0byBteSBxdWVzdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ2ODgsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDo0MDowMi4zOTQ2ODcxOTlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDQ0OTU3NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidG1fc2VuZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvY29yZS5jPTQ4OD1pbnQgbmZjX2RhdGFfZXhjaGFuZ2Uoc3RydWN0IG5mY19kZXYgKmRldiwgdTMyIHRhcmdldF9pZHgsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmZjL2NvcmUuYy01MTktXFx0XFx0XFx0XFx0ICBtc2Vjc190b19qaWZmaWVzKE5GQ19DSEVDS19QUkVTX0ZSRVFfTVMpKTtcXG5uZXQvbmZjL2NvcmUuYzo1MjA6XFx0fSBlbHNlIGlmIChkZXYtXFx1MDAzZXJmX21vZGUgPT0gTkZDX1JGX1RBUkdFVCBcXHUwMDI2XFx1MDAyNiBkZXYtXFx1MDAzZW9wcy1cXHUwMDNldG1fc2VuZCAhPSBOVUxMKSB7XFxubmV0L25mYy9jb3JlLmM6NTIxOlxcdFxcdHJjID0gZGV2LVxcdTAwM2VvcHMtXFx1MDAzZXRtX3NlbmQoZGV2LCBza2IpO1xcbm5ldC9uZmMvY29yZS5jLTUyMi1cXHR9IGVsc2Uge1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYz03NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfb3BzIGRpZ2l0YWxfbmZjX29wcyA9IHtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNzUyLVxcdC5kZWFjdGl2YXRlX3RhcmdldCA9IGRpZ2l0YWxfZGVhY3RpdmF0ZV90YXJnZXQsXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo3NTM6XFx0LnRtX3NlbmQgPSBkaWdpdGFsX3RnX3NlbmQsXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy03NTQtXFx0LmltX3RyYW5zY2VpdmUgPSBkaWdpdGFsX2luX3NlbmQsXFxuLS1cXG5uZXQvbmZjL2hjaS9jb3JlLmM9NzIyPXN0YXRpYyBpbnQgaGNpX3RyYW5zY2VpdmUoc3RydWN0IG5mY19kZXYgKm5mY19kZXYsIHN0cnVjdCBuZmNfdGFyZ2V0ICp0YXJnZXQsXFxuLS1cXG5uZXQvbmZjL2hjaS9jb3JlLmMtNzY3LVxcbm5ldC9uZmMvaGNpL2NvcmUuYzo3Njg6c3RhdGljIGludCBoY2lfdG1fc2VuZChzdHJ1Y3QgbmZjX2RldiAqbmZjX2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvbmZjL2hjaS9jb3JlLmMtNzY5LXtcXG4tLVxcbm5ldC9uZmMvaGNpL2NvcmUuYy03NzEtXFxubmV0L25mYy9oY2kvY29yZS5jOjc3MjpcXHRpZiAoIWhkZXYtXFx1MDAzZW9wcy1cXHUwMDNldG1fc2VuZCkge1xcbm5ldC9uZmMvaGNpL2NvcmUuYy03NzMtXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuLS1cXG5uZXQvbmZjL2hjaS9jb3JlLmMtNzc2LVxcbm5ldC9uZmMvaGNpL2NvcmUuYzo3Nzc6XFx0cmV0dXJuIGhkZXYtXFx1MDAzZW9wcy1cXHUwMDNldG1fc2VuZChoZGV2LCBza2IpO1xcbm5ldC9uZmMvaGNpL2NvcmUuYy03NzgtfVxcbi0tXFxubmV0L25mYy9oY2kvY29yZS5jPTk0MT1zdGF0aWMgY29uc3Qgc3RydWN0IG5mY19vcHMgaGNpX25mY19vcHMgPSB7XFxuLS1cXG5uZXQvbmZjL2hjaS9jb3JlLmMtOTUwLVxcdC5pbV90cmFuc2NlaXZlID0gaGNpX3RyYW5zY2VpdmUsXFxubmV0L25mYy9oY2kvY29yZS5jOjk1MTpcXHQudG1fc2VuZCA9IGhjaV90bV9zZW5kLFxcbm5ldC9uZmMvaGNpL2NvcmUuYy05NTItXFx0LmNoZWNrX3ByZXNlbmNlID0gaGNpX2NoZWNrX3ByZXNlbmNlLFxcbi0tXFxubmV0L25mYy9uY2kvY29yZS5jPTEwNDA9c3RhdGljIGludCBuY2lfdHJhbnNjZWl2ZShzdHJ1Y3QgbmZjX2RldiAqbmZjX2Rldiwgc3RydWN0IG5mY190YXJnZXQgKnRhcmdldCxcXG4tLVxcbm5ldC9uZmMvbmNpL2NvcmUuYy0xMDc3LVxcbm5ldC9uZmMvbmNpL2NvcmUuYzoxMDc4OnN0YXRpYyBpbnQgbmNpX3RtX3NlbmQoc3RydWN0IG5mY19kZXYgKm5mY19kZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L25mYy9uY2kvY29yZS5jLTEwNzkte1xcbi0tXFxubmV0L25mYy9uY2kvY29yZS5jPTExNDk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfb3BzIG5jaV9uZmNfb3BzID0ge1xcbi0tXFxubmV0L25mYy9uY2kvY29yZS5jLTExNTgtXFx0LmltX3RyYW5zY2VpdmUgPSBuY2lfdHJhbnNjZWl2ZSxcXG5uZXQvbmZjL25jaS9jb3JlLmM6MTE1OTpcXHQudG1fc2VuZCA9IG5jaV90bV9zZW5kLFxcbm5ldC9uZmMvbmNpL2NvcmUuYy0xMTYwLVxcdC5lbmFibGVfc2UgPSBuY2lfZW5hYmxlX3NlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDo0MDowMy41MzkxOTIzNTVaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjEwNzk2NjQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqVHJhY2luZyB0aGUgRGF0YSBGbG93IGluIE5GQyBDb21tdW5pY2F0aW9uKipcblxuT2theSwgc28gYG5mY19kYXRhX2V4Y2hhbmdlYCBpcyBhIGNydWNpYWwgZnVuY3Rpb24sIGxpa2VseSB0aGUgaGVhcnQgb2YgdGhlIE5GQyBkYXRhIHRyYW5zZmVyIHByb2Nlc3MuIE15IGluaXRpYWwgaHVuY2gsIGdpdmVuIGl0cyBuYW1lIGFuZCB0aGUgdHlwaWNhbCBhcmNoaXRlY3R1cmUsIGlzIHRoYXQgaXQncyBnZXR0aW5nIGludm9rZWQgZWl0aGVyIHRocm91Z2ggTmV0bGluaywgdGhlIGVzdGFibGlzaGVkIGludGVyLWtlcm5lbCBjb21tdW5pY2F0aW9uIHBhdGh3YXksIG9yIG1vcmUgZGlyZWN0bHkgdGhyb3VnaCBhIHNvY2tldCBsYXllciwgaGFuZGxpbmcgdGhlIHVzZXItc3BhY2UgaW50ZXJhY3Rpb24uIFRoYXQncyB0aGUgZXhwZWN0ZWQgaGlnaC1sZXZlbCB2aWV3LCBhdCBsZWFzdC4gTm93LCB0aGUgcmVhbCB0YXNrIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IGNhbGwgY2hhaW4uIExldCdzIGRpZyBkZWVwZXIgYW5kIHRyYWNlIGJhY2sgYWxsIHRoZSBjYWxscyB0byBgbmZjX2RhdGFfZXhjaGFuZ2VgLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsZXJzIHdpbGwgaWxsdW1pbmF0ZSBwcmVjaXNlbHkgd2hpY2ggcGFydCBvZiB0aGUgc3lzdGVtIGluaXRpYXRlcyB0aGUgZGF0YSBleGNoYW5nZSBhbmQgd2hhdCBjb250ZXh0IGl0J3Mgb3BlcmF0aW5nIHdpdGhpbi4gSXTigJlzIGFsc28gaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgY29udGV4dHMuIEZvciBpbnN0YW5jZSwgaXMgdGhpcyBhIGJsb2NraW5nIG9yIG5vbi1ibG9ja2luZyBjYWxsPyBBcmUgdGhlcmUgYW55IGxvY2tzIGhlbGQgZHVyaW5nIHRoaXMgY2FsbD8gVGhpcyBpcyB3aGVyZSB0aGUgZGVidWdnaW5nIGJlZ2lucyFcblxuXG4iLCJJbnB1dFRva2VucyI6MzU4NzEsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDo0MDowNS42NDcxNjE3NDVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5ODE5OTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mY19kYXRhX2V4Y2hhbmdlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9jb3JlLmM9NDQyPWludCBuZmNfZGVhY3RpdmF0ZV90YXJnZXQoc3RydWN0IG5mY19kZXYgKmRldiwgdTMyIHRhcmdldF9pZHgsIHU4IG1vZGUpXFxuLS1cXG5uZXQvbmZjL2NvcmUuYy00NzctLyoqXFxubmV0L25mYy9jb3JlLmM6NDc4OiAqIG5mY19kYXRhX2V4Y2hhbmdlIC0gdHJhbnNjZWl2ZSBkYXRhXFxubmV0L25mYy9jb3JlLmMtNDc5LSAqXFxuLS1cXG5uZXQvbmZjL2NvcmUuYy00ODctICovXFxubmV0L25mYy9jb3JlLmM6NDg4OmludCBuZmNfZGF0YV9leGNoYW5nZShzdHJ1Y3QgbmZjX2RldiAqZGV2LCB1MzIgdGFyZ2V0X2lkeCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmZjL2NvcmUuYy00ODktXFx0XFx0ICAgICAgZGF0YV9leGNoYW5nZV9jYl90IGNiLCB2b2lkICpjYl9jb250ZXh0KVxcbi0tXFxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmM9MzcxPWludCBuZmNfbGxjcF9zZW5kX3N5bW0oc3RydWN0IG5mY19kZXYgKmRldilcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb21tYW5kcy5jLTM5OC1cXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYzozOTk6XFx0ZXJyID0gbmZjX2RhdGFfZXhjaGFuZ2UoZGV2LCBsb2NhbC1cXHUwMDNldGFyZ2V0X2lkeCwgc2tiLFxcbm5ldC9uZmMvbGxjcF9jb21tYW5kcy5jLTQwMC1cXHRcXHRcXHRcXHQgbmZjX2xsY3BfcmVjdiwgbG9jYWwpO1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz03NjE9c3RhdGljIHZvaWQgbmZjX2xsY3BfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTc5Ni1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjc5NzpcXHRcXHRcXHRyZXQgPSBuZmNfZGF0YV9leGNoYW5nZShsb2NhbC1cXHUwMDNlZGV2LCBsb2NhbC1cXHUwMDNldGFyZ2V0X2lkeCxcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTc5OC1cXHRcXHRcXHRcXHRcXHRcXHRza2IsIG5mY19sbGNwX3JlY3YsIGxvY2FsKTtcXG4tLVxcbm5ldC9uZmMvbmZjLmg9MTQzPWludCBuZmNfZGVhY3RpdmF0ZV90YXJnZXQoc3RydWN0IG5mY19kZXYgKmRldiwgdTMyIHRhcmdldF9pZHgsIHU4IG1vZGUpO1xcbm5ldC9uZmMvbmZjLmgtMTQ0LVxcbm5ldC9uZmMvbmZjLmg6MTQ1OmludCBuZmNfZGF0YV9leGNoYW5nZShzdHJ1Y3QgbmZjX2RldiAqZGV2LCB1MzIgdGFyZ2V0X2lkeCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmZjL25mYy5oLTE0Ni1cXHRcXHQgICAgICBkYXRhX2V4Y2hhbmdlX2NiX3QgY2IsIHZvaWQgKmNiX2NvbnRleHQpO1xcbi0tXFxubmV0L25mYy9yYXdzb2NrLmM9MTg4PXN0YXRpYyB2b2lkIHJhd3NvY2tfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvbmZjL3Jhd3NvY2suYy0yMDYtXFx0c29ja19ob2xkKHNrKTtcXG5uZXQvbmZjL3Jhd3NvY2suYzoyMDc6XFx0cmMgPSBuZmNfZGF0YV9leGNoYW5nZShkZXYsIHRhcmdldF9pZHgsIHNrYixcXG5uZXQvbmZjL3Jhd3NvY2suYy0yMDgtXFx0XFx0XFx0ICAgICAgIHJhd3NvY2tfZGF0YV9leGNoYW5nZV9jb21wbGV0ZSwgc2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDo0MDowNS42OTY5ODY2NDdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NDQ3OTMxMTIwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBORkMgU3Vic3lzdGVtJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIE5GQyBjb2RlIGFuZCBJIHNlZSB0aGF0IHJhdyBzb2NrZXRzIChgcmF3c29jay5jYCkgYW5kIExMQ1AgKGBsbGNwX2NvcmUuY2ApIGFyZSB1c2luZyBgbmZjX2RhdGFfZXhjaGFuZ2VgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGFuZCByaWdodCBhd2F5IEknbSB0aGlua2luZyBhYm91dCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkga25vdyBzeXprYWxsZXIgaGFzIHNvbWUgc2VyaW91cyBORkMgY292ZXJhZ2UsIHVzaW5nIEFGX05GQyBzb2NrZXRzLCBuZXRsaW5rIGNvbW1hbmRzIGxpa2UgYE5GQ19DTURfU1RBUlRfUE9MTGAgYW5kIGBORkNfQ01EX0RFUF9MSU5LX1VQYCwgYW5kIGV2ZW4gVVNCIGVtdWxhdGlvbiB3aXRoIHBvcnQxMDAgb3IgbmZjc2ltLiBBbmQgaXQncyBjbGVhcmx5IGZ1enppbmcgTkZDIHByZXR0eSBleHRlbnNpdmVseS4gSSBtZWFuLCB0aGUgbnVtYmVyIG9mIENWRXMgYW5kIGJ1Z3MgaXQncyBmb3VuZCBpbiBgbmV0L25mY2AgaXMgaW1wcmVzc2l2ZS5cblxuR2l2ZW4gYWxsIG9mIHRoYXQsIG15IG5leHQgc3RlcCBpcyB0byBzZWUgaWYgc3l6a2FsbGVyIGhhcyBmbGFnZ2VkIGFueXRoaW5nIGluIGBkaWdpdGFsX2RlcC5jYCBvciB3aXRoaW4gYG5ldC9uZmNgIG1vcmUgYnJvYWRseS4gQWgsIGhlcmUncyBhIGNvbW1pdCB0aGF0IGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIG9yIGxvZ2ljIGVycm9yIGluIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAuXG5cbk5vdywgbGV0J3Mgc3RlcCBiYWNrIGFuZCBjb25zaWRlciB0aGUgcmVsZXZhbnQgc2VjdGlvbnMuIE15IGZvY3VzIGlzIG9uIHJlYWNoYWJpbGl0eS4gSXMgYGRpZ2l0YWxfZGVwLmNgIGFjdHVhbGx5IHJlYWNoYWJsZT8gQWJzb2x1dGVseSwgdmlhIHRoZSBORkMgc3Vic3lzdGVtLCBBRl9ORkMgc29ja2V0cywgbmV0bGluaywgb3IgZXZlbiBlbXVsYXRlZCBVU0IgZGV2aWNlcyBsaWtlIHBvcnQxMDAsIG9yIG5mY3NpbS4gVGhhdCdzIGEgc29saWQgc3RhcnQuXG5cblRoZSBzZWNvbmQgY3JpdGljYWwgdGhpbmcgSSdtIGNvbnNpZGVyaW5nIGlzIHRoYXQgZnV6emluZyBpcyB2YWx1YWJsZSBiZWNhdXNlIHRoZSBjb2RlIGNhbiBiZSBtYWRlIHRvIGV4ZWN1dGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIEdDRSBvciBRRU1VLCB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcC4gVGhhdCBzb3VuZHMgaWRlYWwuXG5cbkFuZCBmaW5hbGx5LCB0aGUgJ1dvcnRoRnV6emluZycgY3JpdGVyaWEuIFRoYXQncyB3aGF0IEknbSBsb29raW5nIGZvciAtIGNhbiB0aGUgcGF0Y2ggdG91Y2ggcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nIGNvcmUgc3Vic3lzdGVtcywgYW5kIGRyaXZlcnMgdGhhdCBhcmUgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcywgbGlrZSB0aGUgVVNCIGdhZGdldCwgbmV0bGluaywgYW5kIHNvY2tldHMuIFdlbGwsIHRoZSBgbmV0L25mY2AgY29kZSAqaXMqIHBhcnQgb2YgTGludXggbmV0d29ya2luZyAobmV0LyksIHNvLi4uXG5cblwiV29ydGhGdXp6aW5nOiB0cnVlIVwiIEJpbmdvLlxuXG5Ob3cgdG8gc2VlIHdoYXQgS2NvbmZpZyBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgYGRpZ2l0YWxfZGVwLm9gJ3MgY29tcGlsYXRpb24gLSBsZXQncyB0cmFjZSB0aHJvdWdoIGBuZXQvbmZjL01ha2VmaWxlYCB0byBjb25maXJtIHRoZSBidWlsZCBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2ODU2LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjQwOjEwLjE3NjMwMTM2NVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4NzUwNDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGlnaXRhbF9kZXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL01ha2VmaWxlPTExPW5mYy1vYmpzIDo9IGNvcmUubyBuZXRsaW5rLm8gYWZfbmZjLm8gcmF3c29jay5vIGxsY3BfY29yZS5vIGxsY3BfY29tbWFuZHMubyBcXFxcXFxuLS1cXG5uZXQvbmZjL01ha2VmaWxlLTEzLVxcbm5ldC9uZmMvTWFrZWZpbGU6MTQ6bmZjX2RpZ2l0YWwtb2JqcyA6PSBkaWdpdGFsX2NvcmUubyBkaWdpdGFsX3RlY2hub2xvZ3kubyBkaWdpdGFsX2RlcC5vXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTU4Nj1zdGF0aWMgaW50IGRpZ2l0YWxfZGV2X2Rvd24oc3RydWN0IG5mY19kZXYgKm5mY19kZXYpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTU5NC1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjU5NTpzdGF0aWMgaW50IGRpZ2l0YWxfZGVwX2xpbmtfdXAoc3RydWN0IG5mY19kZXYgKm5mY19kZXYsXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01OTYtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZmNfdGFyZ2V0ICp0YXJnZXQsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTYwOS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjYxMDpzdGF0aWMgaW50IGRpZ2l0YWxfZGVwX2xpbmtfZG93bihzdHJ1Y3QgbmZjX2RldiAqbmZjX2RldilcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTYxMS17XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTc0ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5mY19vcHMgZGlnaXRhbF9uZmNfb3BzID0ge1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy03NDgtXFx0LnN0b3BfcG9sbCA9IGRpZ2l0YWxfc3RvcF9wb2xsLFxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6NzQ5OlxcdC5kZXBfbGlua191cCA9IGRpZ2l0YWxfZGVwX2xpbmtfdXAsXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo3NTA6XFx0LmRlcF9saW5rX2Rvd24gPSBkaWdpdGFsX2RlcF9saW5rX2Rvd24sXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy03NTEtXFx0LmFjdGl2YXRlX3RhcmdldCA9IGRpZ2l0YWxfYWN0aXZhdGVfdGFyZ2V0LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTk0PXN0cnVjdCBkaWdpdGFsX3BzbF9yZXMge1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk5LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDA6c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMge1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDEtXFx0dTggZGlyO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTIwMD1kaWdpdGFsX3NlbmRfZGVwX2RhdGFfcHJlcChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoyMDE6XFx0XFx0XFx0ICAgc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXFfcmVzLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0yMDItXFx0XFx0XFx0ICAgc3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2gpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTI5PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX2FjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTUzMS17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjUzMjpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTMzLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTM5LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1NDA6XFx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTQxLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1NDI6XFx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTQzLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTU2Nj1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9uYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTY4LXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTY5OlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzAtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzYtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU3NzpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU3OTpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01ODAtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTk4PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYwMC17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYwMTpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjAyLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjA4LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MDk6XFx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjEwLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MTE6XFx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjEyLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTYyOT1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9ydG94KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjMxLXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjMyOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MzMtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NDYtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY0NzpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NDgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY0OTpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NTAtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9Njg2PXN0YXRpYyB2b2lkIGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02ODktXFx0c3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2ggPSBhcmc7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY5MDpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjkxLVxcdHU4IHBmYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy03NTUtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjc1NjpcXHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NzU3OlxcdGRlcF9yZXMgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilyZXNwLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy03NTgtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTA0PWludCBkaWdpdGFsX2luX3NlbmRfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkwNy17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjkwODpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTA5LVxcdHN0cnVjdCBza19idWZmICpjaGFpbmluZ19za2IsICp0bXBfc2tiO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxMS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTEyOlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxMy1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTE0OlxcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXFx1MDAzZWRhdGE7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxNS1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz05Nzg9c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTgwLXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTgxOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODItXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk4OTpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05OTAtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk5MTpcXHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05OTItXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTAyND1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hdG4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAyNS17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMjY6XFx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXM7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMjctXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDMzLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDM0OlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMzUtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMzY6XFx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAzNy1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDc3PXN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDgwLVxcdGludCByYztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA4MTpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA4Mi1cXHR1OCBwZmI7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTEwNy1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTEwODpcXHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTEwOTpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopcmVzcC1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTExMC1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMjk3PWludCBkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjk4LXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTI5OTpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwMC1cXHRzdHJ1Y3Qgc2tfYnVmZiAqY2hhaW5pbmdfc2tiLCAqdG1wX3NrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzAyLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzAzOlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMDQtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzMDU6XFx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6NDA6MTAuMjIzMTgzMzE4WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjExMzE4ODY5NTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyBpdDpcblxuKipEaXZpbmcgaW50byB0aGUgTkZDIE1ha2VmaWxlKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBwcm9jZXNzIGZvciB0aGUgTkZDIGNvbXBvbmVudHMsIHNvIGxldCdzIHN0YXJ0IHdpdGggdGhlIGBuZXQvbmZjL01ha2VmaWxlYC4gVGhpcyBmaWxlIGlzIHRoZSBjZW50cmFsIHBvaW50IG9mIGNvbnRyb2wsIHJpZ2h0PyBJdCdzIHdoZXJlIHRoZSBkZXBlbmRlbmNpZXMsIGNvbXBpbGF0aW9uIGZsYWdzLCBhbmQgbGlua2luZyBhcmUgYWxsIG9yY2hlc3RyYXRlZCBmb3IgdGhlc2UgTkZDLXJlbGF0ZWQgbW9kdWxlcy4gSSBuZWVkIHRvIHNlZSBob3cgdGhlIGtlcm5lbCBidWlsZHMgdGhlc2UgdGhpbmdzLCBhbnkgc3BlY2lmaWMgbW9kdWxlcyBpdCdzIGNyZWF0aW5nLCBhbmQgaG93IHRoZXkgaW50ZXJhY3QuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gd2hldGhlciB0aGVyZSBhcmUgYW55IHVudXN1YWwgYnVpbGQgZmxhZ3Mgb3IgY3VzdG9tIHJ1bGVzIHRoYXQgbWlnaHQgaW5kaWNhdGUgcGxhdGZvcm0tc3BlY2lmaWMgb3B0aW1pemF0aW9ucyBvciBwb3RlbnRpYWwgYXJlYXMgb2YgaW50ZXJlc3QgZm9yIHBlcmZvcm1hbmNlIHR1bmluZyBvciBzZWN1cml0eSB2dWxuZXJhYmlsaXR5IHJlc2VhcmNoLiBMZXQncyBzZWUgd2hhdCBnZW1zIHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDg0MiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjQwOjIxLjU0MjA1NTQxMVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjEyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmZjL01ha2VmaWxlXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBNYWtlZmlsZSBmb3IgdGhlIExpbnV4IE5GQyBzdWJzeXN0ZW0uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG9iai0kKENPTkZJR19ORkMpICs9IG5mYy5vXFxuICAgNzpcXHRvYmotJChDT05GSUdfTkZDX05DSSkgKz0gbmNpL1xcbiAgIDg6XFx0b2JqLSQoQ09ORklHX05GQ19IQ0kpICs9IGhjaS9cXG4gICA5OlxcdG9iai0kKENPTkZJR19ORkNfRElHSVRBTCkgKz0gbmZjX2RpZ2l0YWwub1xcbiAgMTA6XFx0XFxuICAxMTpcXHRuZmMtb2JqcyA6PSBjb3JlLm8gbmV0bGluay5vIGFmX25mYy5vIHJhd3NvY2subyBsbGNwX2NvcmUubyBsbGNwX2NvbW1hbmRzLm8gXFxcXFxcbiAgMTI6XFx0XFx0XFx0bGxjcF9zb2NrLm9cXG4gIDEzOlxcdFxcbiAgMTQ6XFx0bmZjX2RpZ2l0YWwtb2JqcyA6PSBkaWdpdGFsX2NvcmUubyBkaWdpdGFsX3RlY2hub2xvZ3kubyBkaWdpdGFsX2RlcC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjQwOjIxLjU0MjEzOTcwMVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyMzI5MjEzNjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIE5GQyBEcml2ZXIgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbmZjX2RpZ2l0YWwub2AgbW9kdWxlIGFuZCBpbW1lZGlhdGVseSwgSSBzZWUgYSBjbGVhciBkZXBlbmRlbmN5IHBhdGguIEl0IG5lZWRzIGBDT05GSUdfTkZDX0RJR0lUQUxgLCB3aGljaCBpdHNlbGYgaXMgY29udGluZ2VudCBvbiBgQ09ORklHX05GQ2AuIFRoYXQncyBzdGFuZGFyZCBLY29uZmlnIHN0dWZmLiBHb3R0YSBtYWtlIHN1cmUgdGhlIGJhc2UgTkZDIGZ1bmN0aW9uYWxpdHkgaXMgZW5hYmxlZCBiZWZvcmUgd2UgZXZlbiB0aGluayBhYm91dCB0aGUgZGlnaXRhbCBsYXllci5cblxuVGhlbiBJIHF1aWNrbHkgd2FudCB0byB1bmRlcnN0YW5kICp3aGF0KiB1c2VzIHRoaXMgYG5mY19kaWdpdGFsYCBwYXJ0LiBUaGUgZGVwZW5kZW5jeSBsaXN0IHRlbGxzIG1lIGl0J3MgdXNlZCBieSBgQ09ORklHX05GQ19TSU1gLCB0aGUgbmZjc2ltIGRyaXZlciwgYW5kIGFsc28gYENPTkZJR19ORkNfUE9SVDEwMGAsIHRoZSBwb3J0MTAwIGRyaXZlci4gQWxyaWdodCwgdXNlZnVsIHRvIGtub3cuIFxuXG5UbyBmdWxseSB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIG15IG5leHQgc3RlcCBpcyBvYnZpb3VzbHkgdG8gZ28gYW5kIGluc3BlY3QgdGhlIGBkcml2ZXJzL25mYy9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gc2VlIHRoZSBjb250ZXh0IG9mIHRoZXNlIGNvbmZpZ3MsIGFueSBhZGRpdGlvbmFsIGRlcGVuZGVuY2llcyBvciBjb25zdHJhaW50cywgZGVmYXVsdCB2YWx1ZXMsIGhlbHAgdGV4dCDigJMgdGhlIHdob2xlIHNoZWJhbmcuIEdvdHRhIGhhdmUgdGhlIGZ1bGwgcGljdHVyZSBiZWZvcmUgSSBtYWtlIGFueSBqdWRnZW1lbnRzIG9yIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMjg0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDo0MDoyMy44NzEzNTY0NjVaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMjg2NzY0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQT1JUMTAwfE5GQ1NJTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25mY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDY4MiBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZmMvS2NvbmZpZz0zMT1jb25maWcgTkZDX1NJTVxcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZy00MS1cXG5kcml2ZXJzL25mYy9LY29uZmlnOjQyOmNvbmZpZyBORkNfUE9SVDEwMFxcbmRyaXZlcnMvbmZjL0tjb25maWctNDMtXFx0dHJpc3RhdGUgXFxcIlNvbnkgTkZDIFBvcnQtMTAwIFNlcmllcyBVU0IgZGV2aWNlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9NYWtlZmlsZT0xMT1vYmotJChDT05GSUdfTkZDX1NJTSlcXHRcXHQrPSBuZmNzaW0ub1xcbmRyaXZlcnMvbmZjL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19ORkNfUE9SVDEwMClcXHQrPSBwb3J0MTAwLm9cXG5kcml2ZXJzL25mYy9NYWtlZmlsZS0xMy1vYmotJChDT05GSUdfTkZDX01SVkwpXFx0XFx0Kz0gbmZjbXJ2bC9cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE1LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE2OiNkZWZpbmUgTkZDU0lNX0VSUihkLCBmbXQsIGFyZ3MuLi4pIG5mY19lcnIoXFx1MDAyNmQtXFx1MDAzZW5mY19kaWdpdGFsX2Rldi1cXHUwMDNlbmZjX2Rldi1cXHUwMDNlZGV2LCBcXFxcXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTctXFx0XFx0XFx0XFx0XFx0ICAgIFxcXCIlczogXFxcIiBmbXQsIF9fZnVuY19fLCAjIyBhcmdzKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE4LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE5OiNkZWZpbmUgTkZDU0lNX0RCRyhkLCBmbXQsIGFyZ3MuLi4pIGRldl9kYmcoXFx1MDAyNmQtXFx1MDAzZW5mY19kaWdpdGFsX2Rldi1cXHUwMDNlbmZjX2Rldi1cXHUwMDNlZGV2LCBcXFxcXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjAtXFx0XFx0XFx0XFx0XFx0ICAgIFxcXCIlczogXFxcIiBmbXQsIF9fZnVuY19fLCAjIyBhcmdzKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIxLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjIyOiNkZWZpbmUgTkZDU0lNX1ZFUlNJT04gXFxcIjAuMlxcXCJcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yMy1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyNDojZGVmaW5lIE5GQ1NJTV9NT0RFX05PTkVcXHQwXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjU6I2RlZmluZSBORkNTSU1fTU9ERV9JTklUSUFUT1JcXHQxXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjY6I2RlZmluZSBORkNTSU1fTU9ERV9UQVJHRVRcXHQyXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjctXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mjg6I2RlZmluZSBORkNTSU1fQ0FQQUJJTElUSUVTIChORkNfRElHSVRBTF9EUlZfQ0FQU19JTl9DUkMgICB8IFxcXFxcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yOS1cXHRcXHRcXHQgICAgIE5GQ19ESUdJVEFMX0RSVl9DQVBTX1RHX0NSQylcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jPTEwND1zdGF0aWMgdm9pZCBuZmNzaW1fbGlua19yZWN2X2NhbmNlbChzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmspXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xMDctXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTA4OlxcdGxpbmstXFx1MDAzZW1vZGUgPSBORkNTSU1fTU9ERV9OT05FO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTEwOS1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jPTExNT1zdGF0aWMgdm9pZCBuZmNzaW1fbGlua19zaHV0ZG93bihzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmspXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xMTktXFx0bGluay1cXHUwMDNlc2h1dGRvd24gPSAxO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjEyMDpcXHRsaW5rLVxcdTAwM2Vtb2RlID0gTkZDU0lNX01PREVfTk9ORTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xMjEtXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYz0xODI9c3RhdGljIHZvaWQgbmZjc2ltX3JlY3Zfd3Eoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTkwLVxcdGlmICghZGV2LVxcdTAwM2V1cCkge1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE5MTpcXHRcXHRORkNTSU1fRVJSKGRldiwgXFxcIkRldmljZSBpcyBkb3duXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xOTItXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYz0yMDE9c3RhdGljIGludCBuZmNzaW1fc2VuZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjA3LVxcdGlmICghZGV2LVxcdTAwM2V1cCkge1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjIwODpcXHRcXHRORkNTSU1fRVJSKGRldiwgXFxcIkRldmljZSBpcyBkb3duXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yMDktXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yMTgtXFx0aWYgKGRldi1cXHUwMDNlZHJvcGZyYW1lKSB7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjE5OlxcdFxcdE5GQ1NJTV9EQkcoZGV2LCBcXFwiZHJvcHBpbmcgZnJhbWUgKG91dCBvZiAlZClcXFxcblxcXCIsIGRldi1cXHUwMDNlZHJvcGZyYW1lKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yMjAtXFx0XFx0ZGV2X2tmcmVlX3NrYihza2IpO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM9MjU2PXN0YXRpYyBpbnQgbmZjc2ltX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjYzLVxcdFxcdGRldi1cXHUwMDNldXAgPSB0cnVlO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI2NDpcXHRcXHRkZXYtXFx1MDAzZW1vZGUgPSBORkNTSU1fTU9ERV9JTklUSUFUT1I7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjY1LVxcdFxcdGRldi1cXHUwMDNlcmZfdGVjaCA9IHBhcmFtO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjcxLVxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjcyOlxcdFxcdE5GQ1NJTV9FUlIoZGV2LCBcXFwiSW52YWxpZCBjb25maWd1cmF0aW9uIHR5cGU6ICVkXFxcXG5cXFwiLCB0eXBlKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNzMtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYz0yODY9c3RhdGljIGludCBuZmNzaW1fdGdfY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yOTMtXFx0XFx0ZGV2LVxcdTAwM2V1cCA9IHRydWU7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mjk0OlxcdFxcdGRldi1cXHUwMDNlbW9kZSA9IE5GQ1NJTV9NT0RFX1RBUkdFVDtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yOTUtXFx0XFx0ZGV2LVxcdTAwM2VyZl90ZWNoID0gcGFyYW07XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMDEtXFx0ZGVmYXVsdDpcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMDI6XFx0XFx0TkZDU0lNX0VSUihkZXYsIFxcXCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24gdHlwZTogJWRcXFxcblxcXCIsIHR5cGUpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMwMy1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jPTM0Nj1zdGF0aWMgdm9pZCBuZmNzaW1fZGVidWdmc19pbml0X2RldihzdHJ1Y3QgbmZjc2ltICpkZXYpXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNTMtXFx0aWYgKCFuZmNzaW1fZGVidWdmc19yb290KSB7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzU0OlxcdFxcdE5GQ1NJTV9FUlIoZGV2LCBcXFwibmZjc2ltIGRlYnVnZnMgbm90IGluaXRpYWxpemVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNTUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzYwLVxcdGlmIChuIFxcdTAwM2U9IHNpemVvZihkZXZuYW1lKSkge1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM2MTpcXHRcXHRORkNTSU1fRVJSKGRldiwgXFxcIkNvdWxkIG5vdCBjb21wdXRlIGRldiBuYW1lIGZvciBkZXYgJWRcXFxcblxcXCIsIGlkeCk7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzYyLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jPTM3MD1zdGF0aWMgc3RydWN0IG5mY3NpbSAqbmZjc2ltX2RldmljZV9uZXcoc3RydWN0IG5mY3NpbV9saW5rICpsaW5rX2luLFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzg1LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBORkNfUFJPVE9fTkZDX0RFUF9NQVNLLFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM4NjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgTkZDU0lNX0NBUEFCSUxJVElFUyxcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zODctXFx0XFx0XFx0XFx0XFx0XFx0ICAgIDAsIDApO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM9NDMxPXN0YXRpYyBpbnQgX19pbml0IG5mY3NpbV9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00NTgtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDU5OlxcdHByX2luZm8oXFxcIm5mY3NpbSBcXFwiIE5GQ1NJTV9WRVJTSU9OIFxcXCIgaW5pdGlhbGl6ZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ2MC1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jPTQ5MT1tb2R1bGVfZXhpdChuZmNzaW1fZXhpdCk7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDkyLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQ5MzpNT0RVTEVfREVTQ1JJUFRJT04oXFxcIk5GQ1NpbSBkcml2ZXIgdmVyIFxcXCIgTkZDU0lNX1ZFUlNJT04pO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQ5NDpNT0RVTEVfVkVSU0lPTihORkNTSU1fVkVSU0lPTik7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDk1LU1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xOC1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTk6I2RlZmluZSBQT1JUMTAwX1BST1RPQ09MUyAoTkZDX1BST1RPX0pFV0VMX01BU0sgICAgfCBcXFxcXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTIwLVxcdFxcdFxcdCAgIE5GQ19QUk9UT19NSUZBUkVfTUFTSyAgIHwgXFxcXFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI1LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNjojZGVmaW5lIFBPUlQxMDBfQ0FQQUJJTElUSUVTIChORkNfRElHSVRBTF9EUlZfQ0FQU19JTl9DUkMgfCBcXFxcXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI3LVxcdFxcdFxcdCAgICAgIE5GQ19ESUdJVEFMX0RSVl9DQVBTX1RHX0NSQylcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yOS0vKiBTdGFuZGFyZCBwb3J0MTAwIGZyYW1lIGRlZmluaXRpb25zICovXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMwOiNkZWZpbmUgUE9SVDEwMF9GUkFNRV9IRUFERVJfTEVOIChzaXplb2Yoc3RydWN0IHBvcnQxMDBfZnJhbWUpIFxcXFxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzEtXFx0XFx0XFx0XFx0ICArIDIpIC8qIGRhdGFbMF0gQ0MsIGRhdGFbMV0gU0NDICovXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMyOiNkZWZpbmUgUE9SVDEwMF9GUkFNRV9UQUlMX0xFTiAyIC8qIGRhdGFbbGVuXSBEQ1MsIGRhdGFbbGVuICsgMV0gcG9zdGFtYmxlKi9cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzMtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM0OiNkZWZpbmUgUE9SVDEwMF9DT01NX1JGX0hFQURfTUFYX0xFTiAoc2l6ZW9mKHN0cnVjdCBwb3J0MTAwX3RnX2NvbW1fcmZfY21kKSlcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzUtXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzctICogTWF4IGV4dGVuZGVkIGZyYW1lIHBheWxvYWQgbGVuLCBleGNsdWRpbmcgQ0MgYW5kIFNDQ1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozODogKiB3aGljaCBhcmUgYWxyZWFkeSBpbiBQT1JUMTAwX0ZSQU1FX0hFQURFUl9MRU4uXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM5LSAqL1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MDojZGVmaW5lIFBPUlQxMDBfRlJBTUVfTUFYX1BBWUxPQURfTEVOIDEwMDFcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDEtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQyOiNkZWZpbmUgUE9SVDEwMF9GUkFNRV9BQ0tfU0laRSA2IC8qIFByZWFtYmxlICgxKSwgU29QQyAoMiksIEFDSyBDb2RlICgyKSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDMtXFx0XFx0XFx0XFx0ICAgIFBvc3RhbWJsZSAoMSkgKi9cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDQ6c3RhdGljIHU4IGFja19mcmFtZVtQT1JUMTAwX0ZSQU1FX0FDS19TSVpFXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDUtXFx0MHgwMCwgMHgwMCwgMHhmZiwgMHgwMCwgMHhmZiwgMHgwMFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQ3LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0ODojZGVmaW5lIFBPUlQxMDBfRlJBTUVfQ0hFQ0tTVU0oZikgKGYtXFx1MDAzZWRhdGFbbGUxNl90b19jcHUoZi1cXHUwMDNlZGF0YWxlbildKVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0OTojZGVmaW5lIFBPUlQxMDBfRlJBTUVfUE9TVEFNQkxFKGYpIChmLVxcdTAwM2VkYXRhW2xlMTZfdG9fY3B1KGYtXFx1MDAzZWRhdGFsZW4pICsgMV0pXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTUwLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy01MS0vKiBzdGFydCBvZiBmcmFtZSAqL1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo1MjojZGVmaW5lIFBPUlQxMDBfRlJBTUVfU09GXFx0MHgwMEZGXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjUzOiNkZWZpbmUgUE9SVDEwMF9GUkFNRV9FWFRcXHQweEZGRkZcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NTQ6I2RlZmluZSBQT1JUMTAwX0ZSQU1FX0FDS1xcdDB4MDBGRlxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy01NS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNTYtLyogUG9ydC0xMDAgY29tbWFuZDogaW4gb3Igb3V0ICovXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjU3OiNkZWZpbmUgUE9SVDEwMF9GUkFNRV9ESVJFQ1RJT04oZikgKGYtXFx1MDAzZWRhdGFbMF0pIC8qIENDICovXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjU4OiNkZWZpbmUgUE9SVDEwMF9GUkFNRV9ESVJfT1VUIDB4RDZcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NTk6I2RlZmluZSBQT1JUMTAwX0ZSQU1FX0RJUl9JTiAgMHhEN1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy02MC1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNjEtLyogUG9ydC0xMDAgc3ViLWNvbW1hbmQgKi9cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NjI6I2RlZmluZSBQT1JUMTAwX0ZSQU1FX0NNRChmKSAoZi1cXHUwMDNlZGF0YVsxXSkgLyogU0NDICovXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTYzLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo2NDojZGVmaW5lIFBPUlQxMDBfQ01EX0dFVF9GSVJNV0FSRV9WRVJTSU9OIDB4MjBcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NjU6I2RlZmluZSBQT1JUMTAwX0NNRF9HRVRfQ09NTUFORF9UWVBFICAgICAweDI4XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjY2OiNkZWZpbmUgUE9SVDEwMF9DTURfU0VUX0NPTU1BTkRfVFlQRSAgICAgMHgyQVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy02Ny1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Njg6I2RlZmluZSBQT1JUMTAwX0NNRF9JTl9TRVRfUkYgICAgICAgMHgwMFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo2OTojZGVmaW5lIFBPUlQxMDBfQ01EX0lOX1NFVF9QUk9UT0NPTCAweDAyXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjcwOiNkZWZpbmUgUE9SVDEwMF9DTURfSU5fQ09NTV9SRiAgICAgIDB4MDRcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNzEtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjcyOiNkZWZpbmUgUE9SVDEwMF9DTURfVEdfU0VUX1JGICAgICAgIDB4NDBcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NzM6I2RlZmluZSBQT1JUMTAwX0NNRF9UR19TRVRfUFJPVE9DT0wgMHg0MlxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo3NDojZGVmaW5lIFBPUlQxMDBfQ01EX1RHX1NFVF9SRl9PRkYgICAweDQ2XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjc1OiNkZWZpbmUgUE9SVDEwMF9DTURfVEdfQ09NTV9SRiAgICAgIDB4NDhcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNzYtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjc3OiNkZWZpbmUgUE9SVDEwMF9DTURfU1dJVENIX1JGICAgICAgIDB4MDZcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNzgtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjc5OiNkZWZpbmUgUE9SVDEwMF9DTURfUkVTUE9OU0UoY21kKSAoY21kICsgMSlcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtODAtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjgxOiNkZWZpbmUgUE9SVDEwMF9DTURfVFlQRV9JU19TVVBQT1JURUQobWFzaywgY21kX3R5cGUpIFxcXFxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtODItXFx0KChtYXNrKSBcXHUwMDI2ICgweDAxIFxcdTAwM2NcXHUwMDNjIChjbWRfdHlwZSkpKVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo4MzojZGVmaW5lIFBPUlQxMDBfQ01EX1RZUEVfMFxcdDBcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6ODQ6I2RlZmluZSBQT1JUMTAwX0NNRF9UWVBFXzFcXHQxXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTg1LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo4NjojZGVmaW5lIFBPUlQxMDBfQ01EX1NUQVRVU19PSyAgICAgIDB4MDBcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6ODc6I2RlZmluZSBQT1JUMTAwX0NNRF9TVEFUVVNfVElNRU9VVCAweDgwXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTg4LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo4OTojZGVmaW5lIFBPUlQxMDBfTURBQV9UR1RfSEFTX0JFRU5fQUNUSVZBVEVEX01BU0sgMHgwMVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo5MDojZGVmaW5lIFBPUlQxMDBfTURBQV9UR1RfV0FTX0FDVElWQVRFRF9NQVNLICAgICAgMHgwMlxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy05MS1cXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xMDY9c3RydWN0IHBvcnQxMDBfaW5fcmZfc2V0dGluZyB7XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTEyLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMTM6I2RlZmluZSBQT1JUMTAwX0NPTU1fVFlQRV9JTl8yMTJGIDB4MDFcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTE0OiNkZWZpbmUgUE9SVDEwMF9DT01NX1RZUEVfSU5fNDI0RiAweDAyXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjExNTojZGVmaW5lIFBPUlQxMDBfQ09NTV9UWVBFX0lOXzEwNkEgMHgwM1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMTY6I2RlZmluZSBQT1JUMTAwX0NPTU1fVFlQRV9JTl8xMDZCIDB4MDdcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTE3LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xMTg9c3RhdGljIGNvbnN0IHN0cnVjdCBwb3J0MTAwX2luX3JmX3NldHRpbmcgaW5fcmZfc2V0dGluZ3NbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjAtXFx0XFx0LmluX3NlbmRfc2V0X251bWJlciA9IDEsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEyMTpcXHRcXHQuaW5fc2VuZF9jb21tX3R5cGUgID0gUE9SVDEwMF9DT01NX1RZUEVfSU5fMjEyRixcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIyLVxcdFxcdC5pbl9yZWN2X3NldF9udW1iZXIgPSAxNSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTIzOlxcdFxcdC5pbl9yZWN2X2NvbW1fdHlwZSAgPSBQT1JUMTAwX0NPTU1fVFlQRV9JTl8yMTJGLFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjQtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjYtXFx0XFx0LmluX3NlbmRfc2V0X251bWJlciA9IDEsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEyNzpcXHRcXHQuaW5fc2VuZF9jb21tX3R5cGUgID0gUE9SVDEwMF9DT01NX1RZUEVfSU5fNDI0RixcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTI4LVxcdFxcdC5pbl9yZWN2X3NldF9udW1iZXIgPSAxNSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTI5OlxcdFxcdC5pbl9yZWN2X2NvbW1fdHlwZSAgPSBQT1JUMTAwX0NPTU1fVFlQRV9JTl80MjRGLFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzAtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzItXFx0XFx0LmluX3NlbmRfc2V0X251bWJlciA9IDIsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEzMzpcXHRcXHQuaW5fc2VuZF9jb21tX3R5cGUgID0gUE9SVDEwMF9DT01NX1RZUEVfSU5fMTA2QSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTM0LVxcdFxcdC5pbl9yZWN2X3NldF9udW1iZXIgPSAxNSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTM1OlxcdFxcdC5pbl9yZWN2X2NvbW1fdHlwZSAgPSBQT1JUMTAwX0NPTU1fVFlQRV9JTl8xMDZBLFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzYtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzgtXFx0XFx0LmluX3NlbmRfc2V0X251bWJlciA9IDMsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEzOTpcXHRcXHQuaW5fc2VuZF9jb21tX3R5cGUgID0gUE9SVDEwMF9DT01NX1RZUEVfSU5fMTA2QixcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTQwLVxcdFxcdC5pbl9yZWN2X3NldF9udW1iZXIgPSAxNSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTQxOlxcdFxcdC5pbl9yZWN2X2NvbW1fdHlwZSAgPSBQT1JUMTAwX0NPTU1fVFlQRV9JTl8xMDZCLFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDItXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xNTg9c3RydWN0IHBvcnQxMDBfdGdfcmZfc2V0dGluZyB7XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTYyLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNjM6I2RlZmluZSBQT1JUMTAwX0NPTU1fVFlQRV9UR18xMDZBIDB4MEJcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTY0OiNkZWZpbmUgUE9SVDEwMF9DT01NX1RZUEVfVEdfMjEyRiAweDBDXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE2NTojZGVmaW5lIFBPUlQxMDBfQ09NTV9UWVBFX1RHXzQyNEYgMHgwRFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNjYtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTE2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHBvcnQxMDBfdGdfcmZfc2V0dGluZyB0Z19yZl9zZXR0aW5nc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE2OS1cXHRcXHQudGdfc2V0X251bWJlciA9IDgsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE3MDpcXHRcXHQudGdfY29tbV90eXBlID0gUE9SVDEwMF9DT01NX1RZUEVfVEdfMTA2QSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTcxLVxcdH0sXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTczLVxcdFxcdC50Z19zZXRfbnVtYmVyID0gOCxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTc0OlxcdFxcdC50Z19jb21tX3R5cGUgPSBQT1JUMTAwX0NPTU1fVFlQRV9UR18yMTJGLFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNzUtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNzctXFx0XFx0LnRnX3NldF9udW1iZXIgPSA4LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNzg6XFx0XFx0LnRnX2NvbW1fdHlwZSA9IFBPUlQxMDBfQ09NTV9UWVBFX1RHXzQyNEYsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE3OS1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE4NC1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTg1OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0lOSVRJQUxfR1VBUkRfVElNRSAgICAgIDB4MDBcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTg2OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0FERF9DUkMgICAgICAgICAgICAgICAgIDB4MDFcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTg3OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX0NSQyAgICAgICAgICAgICAgIDB4MDJcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTg4OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX01VTFRJX0NBUkQgICAgICAgICAgICAgIDB4MDNcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTg5OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0FERF9QQVJJVFkgICAgICAgICAgICAgIDB4MDRcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTkwOiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX1BBUklUWSAgICAgICAgICAgIDB4MDVcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTkxOiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0JJVFdJU0VfQUNfUkVDVl9NT0RFICAgIDB4MDZcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTkyOiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX1ZBTElEX0JJVF9OVU1CRVIgICAgICAgIDB4MDdcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTkzOiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0NSWVBUTzEgICAgICAgICAgICAgICAgIDB4MDhcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTk0OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0FERF9TT0YgICAgICAgICAgICAgICAgIDB4MDlcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTk1OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX1NPRiAgICAgICAgICAgICAgIDB4MEFcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTk2OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0FERF9FT0YgICAgICAgICAgICAgICAgIDB4MEJcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTk3OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX0VPRiAgICAgICAgICAgICAgIDB4MENcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTk4OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0RFQUZfVElNRSAgICAgICAgICAgICAgIDB4MEVcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTk5OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0NSTSAgICAgICAgICAgICAgICAgICAgIDB4MEZcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjAwOiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0NSTV9NSU5fTEVOICAgICAgICAgICAgIDB4MTBcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjAxOiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX1QxX1RBR19GUkFNRSAgICAgICAgICAgIDB4MTFcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjAyOiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX1JGQ0EgICAgICAgICAgICAgICAgICAgIDB4MTJcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjAzOiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0dVQVJEX1RJTUVfQVRfSU5JVElBVE9SIDB4MTNcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjA0OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0VORCAgICAgICAgICAgICAgICAgICAgIDB4MTRcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjA1LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMDY6I2RlZmluZSBQT1JUMTAwX0lOX01BWF9OVU1fUFJPVE9DT0xTICAgICAgICAgICAgMTlcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjA3LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMDg6I2RlZmluZSBQT1JUMTAwX1RHX1BST1RfVFUgICAgICAgICAgIDB4MDBcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjA5OiNkZWZpbmUgUE9SVDEwMF9UR19QUk9UX1JGX09GRiAgICAgICAweDAxXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIxMDojZGVmaW5lIFBPUlQxMDBfVEdfUFJPVF9DUk0gICAgICAgICAgMHgwMlxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMTE6I2RlZmluZSBQT1JUMTAwX1RHX1BST1RfRU5EICAgICAgICAgIDB4MDNcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjEyLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMTM6I2RlZmluZSBQT1JUMTAwX1RHX01BWF9OVU1fUFJPVE9DT0xTIDNcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjE0LVxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTIyMD1zdGF0aWMgY29uc3Qgc3RydWN0IHBvcnQxMDBfcHJvdG9jb2xcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjIxOmluX3Byb3RvY29sc1tdW1BPUlQxMDBfSU5fTUFYX05VTV9QUk9UT0NPTFMgKyAxXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjIyLVxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU0hPUlRdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMjM6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfSU5JVElBTF9HVUFSRF9USU1FLCAgICAgIDYgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjI0OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9DUkMsICAgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIyNTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19DUkMsICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMjY6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfTVVMVElfQ0FSRCwgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjI3OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9QQVJJVFksICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIyODpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19QQVJJVFksICAgICAgICAgICAgMSB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMjk6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQklUV0lTRV9BQ19SRUNWX01PREUsICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjMwOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX1ZBTElEX0JJVF9OVU1CRVIsICAgICAgICA3IH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIzMTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DUllQVE8xLCAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMzI6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX1NPRiwgICAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjMzOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX1NPRiwgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIzNDpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfRU9GLCAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMzU6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfRU9GLCAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjM2OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0RFQUZfVElNRSwgICAgICAgICAgICAgICA0IH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIzNzpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DUk0sICAgICAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMzg6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQ1JNX01JTl9MRU4sICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjM5OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX1QxX1RBR19GUkFNRSwgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI0MDpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9SRkNBLCAgICAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNDE6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfR1VBUkRfVElNRV9BVF9JTklUSUFUT1IsIDYgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjQyOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0VORCwgICAgICAgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI0My1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yNDQtXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9TVEFOREFSRF0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI0NTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9JTklUSUFMX0dVQVJEX1RJTUUsICAgICAgNiB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNDY6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX0NSQywgICAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjQ3OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX0NSQywgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI0ODpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9NVUxUSV9DQVJELCAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNDk6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX1BBUklUWSwgICAgICAgICAgICAgIDEgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjUwOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX1BBUklUWSwgICAgICAgICAgICAxIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI1MTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9CSVRXSVNFX0FDX1JFQ1ZfTU9ERSwgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNTI6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfVkFMSURfQklUX05VTUJFUiwgICAgICAgIDggfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjUzOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NSWVBUTzEsICAgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI1NDpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfU09GLCAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNTU6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfU09GLCAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjU2OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9FT0YsICAgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI1NzpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19FT0YsICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNTg6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfREVBRl9USU1FLCAgICAgICAgICAgICAgIDQgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjU5OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NSTSwgICAgICAgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI2MDpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DUk1fTUlOX0xFTiwgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNjE6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfVDFfVEFHX0ZSQU1FLCAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjYyOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX1JGQ0EsICAgICAgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI2MzpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9HVUFSRF9USU1FX0FUX0lOSVRJQVRPUiwgNiB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNjQ6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAgICAgICAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjY1LVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI2Ni1cXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NUQU5EQVJEX1dJVEhfQ1JDX0FdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNjc6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfSU5JVElBTF9HVUFSRF9USU1FLCAgICAgIDYgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjY4OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9DUkMsICAgICAgICAgICAgICAgICAxIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI2OTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19DUkMsICAgICAgICAgICAgICAgMSB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNzA6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfTVVMVElfQ0FSRCwgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjcxOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9QQVJJVFksICAgICAgICAgICAgICAxIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI3MjpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19QQVJJVFksICAgICAgICAgICAgMSB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNzM6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQklUV0lTRV9BQ19SRUNWX01PREUsICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mjc0OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX1ZBTElEX0JJVF9OVU1CRVIsICAgICAgICA4IH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI3NTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DUllQVE8xLCAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNzY6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX1NPRiwgICAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mjc3OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX1NPRiwgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI3ODpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfRU9GLCAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNzk6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfRU9GLCAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjgwOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0RFQUZfVElNRSwgICAgICAgICAgICAgICA0IH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI4MTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DUk0sICAgICAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyODI6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQ1JNX01JTl9MRU4sICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjgzOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX1QxX1RBR19GUkFNRSwgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI4NDpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9SRkNBLCAgICAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyODU6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfR1VBUkRfVElNRV9BVF9JTklUSUFUT1IsIDYgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mjg2OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0VORCwgICAgICAgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI4Ny1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI4OS1cXHRcXHQvKiBuZmNfZGlnaXRhbF9mcmFtaW5nX25mY2Ffc2hvcnQgKi9cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjkwOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9DUkMsICAgICAgICAgIDIgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjkxOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX0NSQywgICAgICAgIDIgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjkyOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX1ZBTElEX0JJVF9OVU1CRVIsIDggfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjkzOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX1QxX1RBR19GUkFNRSwgICAgIDIgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mjk0OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0VORCwgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjk1LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjk3LVxcdFxcdC8qIG5mY19kaWdpdGFsX2ZyYW1pbmdfbmZjYV9zdGFuZGFyZCAqL1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyOTg6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX0NSQywgICAxIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI5OTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19DUkMsIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzAwOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0VORCwgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMDEtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMDMtXFx0XFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNhX3N0YW5kYXJkX3dpdGhfY3JjX2EgKi9cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzA0OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0VORCwgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMDUtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMDctXFx0XFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNhX3N0YW5kYXJkICovXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMwODpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzA5LVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTMxMC1cXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNGXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzExOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0lOSVRJQUxfR1VBUkRfVElNRSwgICAgIDE4IH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMxMjpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfQ1JDLCAgICAgICAgICAgICAgICAgMSB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMTM6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfQ1JDLCAgICAgICAgICAgICAgIDEgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzE0OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX01VTFRJX0NBUkQsICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMxNTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfUEFSSVRZLCAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMTY6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfUEFSSVRZLCAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzE3OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0JJVFdJU0VfQUNfUkVDVl9NT0RFLCAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMxODpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9WQUxJRF9CSVRfTlVNQkVSLCAgICAgICAgOCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMTk6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQ1JZUFRPMSwgICAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzIwOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9TT0YsICAgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMyMTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19TT0YsICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMjI6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX0VPRiwgICAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzIzOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX0VPRiwgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMyNDpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9ERUFGX1RJTUUsICAgICAgICAgICAgICAgNCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMjU6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQ1JNLCAgICAgICAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzI2OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NSTV9NSU5fTEVOLCAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMyNzpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9UMV9UQUdfRlJBTUUsICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMjg6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfUkZDQSwgICAgICAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzI5OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0dVQVJEX1RJTUVfQVRfSU5JVElBVE9SLCA2IH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMzMDpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsICAgICAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMzEtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMzMtXFx0XFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNmICovXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMzNDpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzM1LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzM3LVxcdFxcdC8qIG5mY19kaWdpdGFsX2ZyYW1pbmdfbmZjZiAqL1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMzg6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfSU5JVElBTF9HVUFSRF9USU1FLCAgICAgMTggfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzM5OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9DUkMsICAgICAgICAgICAgICAgICAxIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM0MDpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19DUkMsICAgICAgICAgICAgICAgMSB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNDE6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfTVVMVElfQ0FSRCwgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzQyOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9QQVJJVFksICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM0MzpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19QQVJJVFksICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNDQ6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQklUV0lTRV9BQ19SRUNWX01PREUsICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzQ1OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX1ZBTElEX0JJVF9OVU1CRVIsICAgICAgICA4IH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM0NjpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DUllQVE8xLCAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNDc6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX1NPRiwgICAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzQ4OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX1NPRiwgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM0OTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfRU9GLCAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNTA6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfRU9GLCAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzUxOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0RFQUZfVElNRSwgICAgICAgICAgICAgICA0IH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM1MjpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DUk0sICAgICAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNTM6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQ1JNX01JTl9MRU4sICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzU0OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX1QxX1RBR19GUkFNRSwgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM1NTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9SRkNBLCAgICAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNTY6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfR1VBUkRfVElNRV9BVF9JTklUSUFUT1IsIDYgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzU3OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0VORCwgICAgICAgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM1OC1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zNTktXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDX0RFUF9BQ1RJVkFURURdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNjA6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM2MS1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zNjItXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQl0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM2MzpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9JTklUSUFMX0dVQVJEX1RJTUUsICAgICAyMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNjQ6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX0NSQywgICAgICAgICAgICAgICAgIDEgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzY1OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX0NSQywgICAgICAgICAgICAgICAxIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM2NjpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9NVUxUSV9DQVJELCAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNjc6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX1BBUklUWSwgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzY4OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX1BBUklUWSwgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM2OTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9CSVRXSVNFX0FDX1JFQ1ZfTU9ERSwgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNzA6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfVkFMSURfQklUX05VTUJFUiwgICAgICAgIDggfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzcxOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NSWVBUTzEsICAgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM3MjpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfU09GLCAgICAgICAgICAgICAgICAgMSB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNzM6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfU09GLCAgICAgICAgICAgICAgIDEgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mzc0OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9FT0YsICAgICAgICAgICAgICAgICAxIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM3NTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19FT0YsICAgICAgICAgICAgICAgMSB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNzY6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfREVBRl9USU1FLCAgICAgICAgICAgICAgIDQgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mzc3OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NSTSwgICAgICAgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM3ODpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DUk1fTUlOX0xFTiwgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNzk6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfVDFfVEFHX0ZSQU1FLCAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzgwOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX1JGQ0EsICAgICAgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM4MTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9HVUFSRF9USU1FX0FUX0lOSVRJQVRPUiwgNiB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozODI6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAgICAgICAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzgzLVxcdH0sXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzg1LVxcdFxcdC8qIG5mY19kaWdpdGFsX2ZyYW1pbmdfbmZjYiAqL1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozODY6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAgICAgICAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzg3LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzg5LVxcdFtORkNfRElHSVRBTF9GUkFNSU5HX0xBU1RdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozOTA6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM5MS1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTM5ND1zdGF0aWMgY29uc3Qgc3RydWN0IHBvcnQxMDBfcHJvdG9jb2xcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mzk1OnRnX3Byb3RvY29sc1tdW1BPUlQxMDBfVEdfTUFYX05VTV9QUk9UT0NPTFMgKyAxXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzk2LVxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU0hPUlRdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozOTc6XFx0XFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM5OC1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zOTktXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9TVEFOREFSRF0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQwMDpcXHRcXHR7IFBPUlQxMDBfVEdfUFJPVF9FTkQsIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDAxLVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQwMi1cXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NUQU5EQVJEX1dJVEhfQ1JDX0FdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MDM6XFx0XFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQwNC1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MDUtXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UMVRdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MDY6XFx0XFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQwNy1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MDgtXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UMlRdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MDk6XFx0XFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQxMC1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MTEtXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9ORkNfREVQXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDEyOlxcdFxcdHsgUE9SVDEwMF9UR19QUk9UX1RVLCAgICAgMSB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MTM6XFx0XFx0eyBQT1JUMTAwX1RHX1BST1RfUkZfT0ZGLCAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQxNDpcXHRcXHR7IFBPUlQxMDBfVEdfUFJPVF9DUk0sICAgIDcgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDE1OlxcdFxcdHsgUE9SVDEwMF9UR19QUk9UX0VORCwgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MTYtXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDE3LVxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0ZdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MTg6XFx0XFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQxOS1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MjAtXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDRl9UM1RdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MjE6XFx0XFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQyMi1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MjMtXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDRl9ORkNfREVQXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDI0OlxcdFxcdHsgUE9SVDEwMF9UR19QUk9UX1RVLCAgICAgMSB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MjU6XFx0XFx0eyBQT1JUMTAwX1RHX1BST1RfUkZfT0ZGLCAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQyNjpcXHRcXHR7IFBPUlQxMDBfVEdfUFJPVF9DUk0sICAgIDcgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDI3OlxcdFxcdHsgUE9SVDEwMF9UR19QUk9UX0VORCwgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MjgtXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDI5LVxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ19ERVBfQUNUSVZBVEVEXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDMwOlxcdFxcdHsgUE9SVDEwMF9UR19QUk9UX1JGX09GRiwgMSB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MzE6XFx0XFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQzMi1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQzNC1cXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19MQVNUXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDM1OlxcdFxcdHsgUE9SVDEwMF9UR19QUk9UX0VORCwgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MzYtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz01NDA9c3RhdGljIHZvaWQgcG9ydDEwMF90eF9mcmFtZV9pbml0KHZvaWQgKl9mcmFtZSwgdTggY21kX2NvZGUpXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNTQ0LVxcdGZyYW1lLVxcdTAwM2VwcmVhbWJsZSA9IDA7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjU0NTpcXHRmcmFtZS1cXHUwMDNlc3RhcnRfZnJhbWUgPSBjcHVfdG9fYmUxNihQT1JUMTAwX0ZSQU1FX1NPRik7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjU0NjpcXHRmcmFtZS1cXHUwMDNlZXh0ZW5kZWRfZnJhbWUgPSBjcHVfdG9fYmUxNihQT1JUMTAwX0ZSQU1FX0VYVCk7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjU0NzpcXHRQT1JUMTAwX0ZSQU1FX0RJUkVDVElPTihmcmFtZSkgPSBQT1JUMTAwX0ZSQU1FX0RJUl9PVVQ7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjU0ODpcXHRQT1JUMTAwX0ZSQU1FX0NNRChmcmFtZSkgPSBjbWRfY29kZTtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNTQ5LVxcdGZyYW1lLVxcdTAwM2VkYXRhbGVuID0gY3B1X3RvX2xlMTYoMik7XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9NTUyPXN0YXRpYyB2b2lkIHBvcnQxMDBfdHhfZnJhbWVfZmluaXNoKHZvaWQgKl9mcmFtZSlcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy01NTctXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjU1ODpcXHRQT1JUMTAwX0ZSQU1FX0NIRUNLU1VNKGZyYW1lKSA9XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTU1OS1cXHRcXHRwb3J0MTAwX2RhdGFfY2hlY2tzdW0oZnJhbWUtXFx1MDAzZWRhdGEsIGxlMTZfdG9fY3B1KGZyYW1lLVxcdTAwM2VkYXRhbGVuKSk7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTU2MC1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NTYxOlxcdFBPUlQxMDBfRlJBTUVfUE9TVEFNQkxFKGZyYW1lKSA9IDA7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTU2Mi19XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9NTcxPXN0YXRpYyBib29sIHBvcnQxMDBfcnhfZnJhbWVfaXNfdmFsaWQoY29uc3Qgdm9pZCAqX2ZyYW1lKVxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTU3NS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NTc2OlxcdGlmIChmcmFtZS1cXHUwMDNlc3RhcnRfZnJhbWUgIT0gY3B1X3RvX2JlMTYoUE9SVDEwMF9GUkFNRV9TT0YpIHx8XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjQwOjI0LjE5NDIzMTQ3M1oiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo4NDgwMTczNTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIE5GQyBEaWdpdGFsIFRhcmdldCBERVAgUmVxdWVzdCBIYW5kbGluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBpcyB0byBkZXRlcm1pbmUgdGhlIGltcGFjdCBvZiB0aGlzIHBhdGNoIGFuZCB3aGV0aGVyIGZ1enppbmcgaXMgd2FycmFudGVkLiBJIHNlZSB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYENPTkZJR19ORkNgIGFuZCBgQ09ORklHX05GQ19ESUdJVEFMYC4gTG9va2luZyBhdCBgZHJpdmVycy9uZmMvS2NvbmZpZ2AsIGl0J3MgZXZpZGVudCB0aGF0IGBORkNfU0lNYCBhbmQgYE5GQ19QT1JUMTAwYCBhcmUgYWxzbyByZWxldmFudCwgYnV0IHRoZSBjb3JlIGJ1aWxkaW5nIGJsb2NrcyBhcmUgYE5GQ2AgYW5kIGBORkNfRElHSVRBTGAsIHdoaWNoIGRpcmVjdGx5IGVuYWJsZSB0aGUgZGlnaXRhbCBORkMgcHJvdG9jb2wgc3RhY2ssIHNwZWNpZmljYWxseSBgZGlnaXRhbF9kZXAuY2AuXG5cblRoZSBoZWFydCBvZiB0aGlzIHBhdGNoIGxpZXMgd2l0aGluIGBuZXQvbmZjL2RpZ2l0YWxfZGVwLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgZnVuY3Rpb24uIEl0J3MgbWFya2VkIGBzdGF0aWNgLCBidXQsIGNydWNpYWxseSwgaXQncyBub3QgaW5saW5lZCBiZWNhdXNlIGl0cyBhZGRyZXNzIGlzIHRha2VuIGFuZCBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyOiB0aGlzIG1lYW5zIGl0IGdlbmVyYXRlcyBhIHVuaXF1ZSBzeW1ib2wgYW5kIGlzIGRlZmluaXRlbHkgYSBzcGVjaWZpYyBwb2ludCB0byB0YXJnZXQuIE90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIGluIGBkaWdpdGFsX2RlcC5jYCwgc3VjaCBhcyBgZGlnaXRhbF90Z19zZW5kX2RlcF9yZXNgLCBgZGlnaXRhbF90Z19zZW5kX2F0cl9yZXNfY29tcGxldGVgLCBhbmQgYGRpZ2l0YWxfdGdfc2VuZF9wc2xfcmVzX2NvbXBsZXRlYCBhcmUgYWxzbyBpbiB0aGlzIHNhbWUgY29kZS5cblxuVGhpcyBwYXRjaCBkaXJlY3RseSBtb2RpZmllcyB0aGUgbG9naWMgd2l0aGluIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgYW5kLCBhZnRlciBjYXJlZnVsbHkgcmV2aWV3aW5nIHRoZSBjb2RlLCBpdCBiZWNvbWVzIGNsZWFyIHdoYXQncyBoYXBwZW5pbmcuIFRoZSBvcmlnaW5hbCBjb2RlIGhhZCBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eS4gU3BlY2lmaWNhbGx5LCB3aGVuIGhhbmRsaW5nIGEgREVQIChEYXRhIEV4Y2hhbmdlIFByb3RvY29sKSByZXF1ZXN0IHdoZXJlIHRoZSBESUQgKERldmljZSBJRCkgYml0IGlzIHNldCwgaXQgdXNlZCBhIGhhcmRjb2RlZCBpbmRleCBgM2AgdG8gYWNjZXNzIHRoZSByZXNwb25zZSBkYXRhLCBldmVuIHdoZW4gdGhlIGByZXNwLVx1MDAzZWxlbmAgd2FzIHNtYWxsZXIgdGhhbiB0aGF0IGluZGV4LiBUaGlzIHBhdGNoIGZpeGVzIHRoaXMgYnkgY2hlY2tpbmcgdGhlIGJvdW5kcyBvZiBgcmVzcC1cdTAwM2VkYXRhYCBiZWZvcmUgcmVhZGluZywgZW5zdXJpbmcgdGhlIGluZGV4IGlzIHdpdGhpbiB0aGUgdmFsaWQgcmFuZ2UgYW5kIHVzaW5nIHRoZSBjb3JyZWN0IGluZGV4IHZpYSB0aGUgYHNpemVgIHZhcmlhYmxlLiBUaGlzIGF2b2lkcyB0aGUgb3V0LW9mLWJvdW5kcyByZWFkIGFuZCBmaXhlcyB0aGUgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHksIGJ1dCBpcyBzdGlsbCByZWFjaGFibGUgY29kZS5cblxuTm93LCBjb25zaWRlcmluZyB0aGUgcGF0Y2gncyBjaGFuZ2VzLCB0aGUgY29yZSBmdW5jdGlvbnMgdG8gZm9jdXMgb24gYXJlIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgYW5kIHBvdGVudGlhbGx5IGBkaWdpdGFsX3RnX3NlbmRfZGVwX3Jlc2AuIFRoZXNlIGFyZSB0aGUgcHJlY2lzZSBmdW5jdGlvbnMgd2hlcmUgdGhlIG1vZGlmaWVkIGxvZ2ljIGlzIGltcGxlbWVudGVkLCBtYWtpbmcgdGhlbSB0aGUgbW9zdCByZWxldmFudCBmb3IgdGVzdGluZy5cblxuVG8gZW5hYmxlIHRoZSBjb2RlIGluIHRoaXMgcGF0Y2gsIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbnMgYXJlIG5lY2Vzc2FyeTogYE5GQ2AgYW5kIGBORkNfRElHSVRBTGAuXG5cblRoZXJlZm9yZSwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgZnV6emluZyB0aGlzIGNvZGUgaXMgZXNzZW50aWFsLiBUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgdGFuZ2libGUgYnVnIGluIGtlcm5lbCBuZXR3b3JraW5nIE5GQyBwcm90b2NvbCBzdGFjayAoYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2ApIHRoYXQgZGlyZWN0bHkgaW52b2x2ZXMgcGFja2V0IHZhbGlkYXRpb24gYW5kIGNoZWNraW5nIGJvdW5kcyBmb3IgREVQIHJlcXVlc3QgZnJhbWVzIGluIE5GQyB0YXJnZXQgbW9kZS4gSXQncyBhIGNsZWFyIHZ1bG5lcmFiaWxpdHkgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHRocm91Z2ggYSB2YXJpZXR5IG9mIE5GQyBkaWdpdGFsIGRldmljZXMsIG1ha2luZyBmdXp6aW5nIGJvdGggcHJhY3RpY2FsIGFuZCBjcml0aWNhbC4gSSB0aGluayB3ZSBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1ODI5LCJPdXRwdXRUb2tlbnMiOjE2OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6NDA6MzIuNjc0NDA3MTY2WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU5NDcwMzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ1wiLFxuICAgIFwiTkZDX0RJR0lUQUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcVwiLFxuICAgIFwiZGlnaXRhbF90Z19zZW5kX2RlcF9yZXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJvdW5kcyBjaGVjayBhbmQgdmFsaWRhdGlvbiBsb2dpYyBpbiBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSgpIHdoZW4gaGFuZGxpbmcgREVQIChEYXRhIEV4Y2hhbmdlIFByb3RvY29sKSByZXF1ZXN0IGZyYW1lcyB3aXRoIHRoZSBESUQgYml0IHNldCBpbiB0aGUgTkZDIGRpZ2l0YWwgcHJvdG9jb2wgc3RhY2suIFByZXZpb3VzbHksIHJlYWRpbmcgcmVzcC1cXHUwMDNlZGF0YVszXSBjb3VsZCBjYXVzZSBhbiBvdXQtb2YtYm91bmRzIGFjY2VzcyBpZiByZXNwLVxcdTAwM2VsZW4gd2FzIGluc3VmZmljaWVudC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgTkZDIHRhcmdldCBtb2RlIGNvbW11bmljYXRpb24gdmlhIGVtdWxhdGVkIHZpcnR1YWwgZGV2aWNlcyAobmZjc2ltKSBvciBVU0IgTkZDIGRldmljZXMgKHBvcnQxMDApIHN1cHBvcnRlZCBpbiBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19ESUdJVEFMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFcIixcbiAgICBcImRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBib3VuZHMgY2hlY2sgYW5kIHZhbGlkYXRpb24gbG9naWMgaW4gZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoKSB3aGVuIGhhbmRsaW5nIERFUCAoRGF0YSBFeGNoYW5nZSBQcm90b2NvbCkgcmVxdWVzdCBmcmFtZXMgd2l0aCB0aGUgRElEIGJpdCBzZXQgaW4gdGhlIE5GQyBkaWdpdGFsIHByb3RvY29sIHN0YWNrLiBQcmV2aW91c2x5LCByZWFkaW5nIHJlc3AtXFx1MDAzZWRhdGFbM10gY291bGQgY2F1c2UgYW4gb3V0LW9mLWJvdW5kcyBhY2Nlc3MgaWYgcmVzcC1cXHUwMDNlbGVuIHdhcyBpbnN1ZmZpY2llbnQuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIE5GQyB0YXJnZXQgbW9kZSBjb21tdW5pY2F0aW9uIHZpYSBlbXVsYXRlZCB2aXJ0dWFsIGRldmljZXMgKG5mY3NpbSkgb3IgVVNCIE5GQyBkZXZpY2VzIChwb3J0MTAwKSBzdXBwb3J0ZWQgaW4gZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjQwOjMyLjc1MDM2MjA2M1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY3ODAyNDYwNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDo0MDozMi43NTA4NjY2MDNaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjozNjc3OTczNjMzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtaXNzaW5nIGJvdW5kcyBjaGVjayBpbiBuZXQvbmZjL2RpZ2l0YWxfZGVwLmMgd2l0aGluIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKCkuIFByZXZpb3VzbHksIHdoZW4gRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikgd2FzIHRydWUsIHJlc3AtXFx1MDAzZWRhdGFbM10gd2FzIGFjY2Vzc2VkIHdpdGhvdXQgY2hlY2tpbmcgaWYgcmVzcC1cXHUwMDNlbGVuIHdhcyBhdCBsZWFzdCA0IGJ5dGVzIChzaXplICsgMSksIHBvdGVudGlhbGx5IHJlc3VsdGluZyBpbiBhbiBvdXQtb2YtYm91bmRzIHJlYWQgb24gdGhlIHJlY2VpdmVkIHNrYiBidWZmZXIuIFRoZSBwYXRjaCBhZGRzIGByZXNwLVxcdTAwM2VsZW4gXFx1MDAzYyBzaXplICsgMWAgdG8gcHJldmVudCB0aGlzIG91dC1vZi1ib3VuZHMgcmVhZC5cXG5cXG5UaGlzIGlzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCB2dWxuZXJhYmlsaXR5LCB3aGljaCBpcyBkZXRlY3RhYmxlIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIG1hbmlwdWxhdGUgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSwgZG9lcyBub3QgY29weSBrZXJuZWwgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgY29udHJvbCBmbG93IGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgZmllbGRzLiBUaHVzLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTg3OTJkMTE1MDNmZmM0NTFkYTU3YTU5NDBiOWE2NmU4ZDY2ZjhiYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDEzIDIwOjM5OjE2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25mYy9kaWdpdGFsX2RlcC5jIGIvbmV0L25mYy9kaWdpdGFsX2RlcC5jXG5pbmRleCAzOTgyZmEwODQ3MzdmLi5hZTU0MDdmY2ExMmQ0IDEwMDY0NFxuLS0tIGEvbmV0L25mYy9kaWdpdGFsX2RlcC5jXG4rKysgYi9uZXQvbmZjL2RpZ2l0YWxfZGVwLmNcbkBAIC0xMTE3LDEyICsxMTE3LDEyIEBAIHN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbiBcdHBmYiA9IGRlcF9yZXEtXHUwMDNlcGZiO1xuIFxuIFx0aWYgKERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpKSB7XG4tXHRcdGlmIChkZGV2LVx1MDAzZWRpZCBcdTAwMjZcdTAwMjYgKGRkZXYtXHUwMDNlZGlkID09IHJlc3AtXHUwMDNlZGF0YVszXSkpIHtcbi1cdFx0XHRzaXplKys7XG4tXHRcdH0gZWxzZSB7XG4rXHRcdGlmIChyZXNwLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZSArIDEgfHwgIWRkZXYtXHUwMDNlZGlkIHx8XG4rXHRcdCAgICBkZGV2LVx1MDAzZWRpZCAhPSByZXNwLVx1MDAzZWRhdGFbc2l6ZV0pIHtcbiBcdFx0XHRyYyA9IC1FSU87XG4gXHRcdFx0Z290byBleGl0O1xuIFx0XHR9XG4rXHRcdHNpemUrKztcbiBcdH0gZWxzZSBpZiAoZGRldi1cdTAwM2VkaWQpIHtcbiBcdFx0cmMgPSAtRUlPO1xuIFx0XHRnb3RvIGV4aXQ7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDo0MDozMi43NTA4Njc1MTNaIiwiU2VxIjozNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NDY2NjMwNzE4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuXG5cbioqQW5hbHl6aW5nIHRoaXMgUGF0Y2g6IEEgRm9jdXNlZCBBcHByb2FjaCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBwaW5wb2ludCB0aGUgY29yZSBvZiB0aGUgY2hhbmdlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgYmVpbmcgYWx0ZXJlZCBhbmQsIG1vcmUgaW1wb3J0YW50bHksICp3aHkqLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgemVyb2luZyBpbiBvbiBgbmV0L25mYy9kaWdpdGFsX2RlcC5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDExMTcuIEknbGwgcHJvYmFibHkgZmlyZSB1cCBlaXRoZXIgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIOKAkyB3aGF0ZXZlcidzIHF1aWNrZXN0IGFuZCBtb3N0IGVmZmljaWVudCBnaXZlbiBteSBjdXJyZW50IGVudmlyb25tZW50IOKAkyB0byBleHRyYWN0IHRoYXQgc2VjdGlvbiBvZiB0aGUgY29kZSBhbmQgZ2V0IGEgY2xlYXJlciBwaWN0dXJlLiBNeSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgYW5kIGludGVudCBvZiB0aGUgY2hhbmdlIGJlZm9yZSBJIGdvIGFueSBkZWVwZXIuIFRoaXMgaW5pdGlhbCBmb2N1c2VkIGV4YW1pbmF0aW9uIHdpbGwgZ2l2ZSBtZSBhIGNyaXRpY2FsIGZvdW5kYXRpb24gZm9yIGZ1cnRoZXIgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNzEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjQwOjM3LjQxNzE3Nzk5MloiLCJTZXEiOjM2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzY5NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25mYy9kaWdpdGFsX2RlcC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwOTUsXG4gIFwiTGluZUNvdW50XCI6IDU1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEwOTU6XFx0XFx0fVxcbjEwOTY6XFx0XFxuMTA5NzpcXHRcXHRyYyA9IGRpZ2l0YWxfc2tiX3B1bGxfZGVwX3NvZChkZGV2LCByZXNwKTtcXG4xMDk4OlxcdFxcdGlmIChyYykge1xcbjEwOTk6XFx0XFx0XFx0UFJPVE9DT0xfRVJSKFxcXCIxNC40LjEuMlxcXCIpO1xcbjExMDA6XFx0XFx0XFx0Z290byBleGl0O1xcbjExMDE6XFx0XFx0fVxcbjExMDI6XFx0XFxuMTEwMzpcXHRcXHRpZiAocmVzcC1cXHUwMDNlbGVuIFxcdTAwM2UgZGRldi1cXHUwMDNlbG9jYWxfcGF5bG9hZF9tYXgpIHtcXG4xMTA0OlxcdFxcdFxcdHJjID0gLUVNU0dTSVpFO1xcbjExMDU6XFx0XFx0XFx0Z290byBleGl0O1xcbjExMDY6XFx0XFx0fVxcbjExMDc6XFx0XFxuMTEwODpcXHRcXHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcXG4xMTA5OlxcdFxcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilyZXNwLVxcdTAwM2VkYXRhO1xcbjExMTA6XFx0XFxuMTExMTpcXHRcXHRpZiAocmVzcC1cXHUwMDNlbGVuIFxcdTAwM2Mgc2l6ZSB8fCBkZXBfcmVxLVxcdTAwM2VkaXIgIT0gRElHSVRBTF9ORkNfREVQX0ZSQU1FX0RJUl9PVVQgfHxcXG4xMTEyOlxcdFxcdCAgICBkZXBfcmVxLVxcdTAwM2VjbWQgIT0gRElHSVRBTF9DTURfREVQX1JFUSkge1xcbjExMTM6XFx0XFx0XFx0cmMgPSAtRUlPO1xcbjExMTQ6XFx0XFx0XFx0Z290byBleGl0O1xcbjExMTU6XFx0XFx0fVxcbjExMTY6XFx0XFxuMTExNzpcXHRcXHRwZmIgPSBkZXBfcmVxLVxcdTAwM2VwZmI7XFxuMTExODpcXHRcXG4xMTE5OlxcdFxcdGlmIChESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSkge1xcbjExMjA6XFx0XFx0XFx0aWYgKHJlc3AtXFx1MDAzZWxlbiBcXHUwMDNjIHNpemUgKyAxIHx8ICFkZGV2LVxcdTAwM2VkaWQgfHxcXG4xMTIxOlxcdFxcdFxcdCAgICBkZGV2LVxcdTAwM2VkaWQgIT0gcmVzcC1cXHUwMDNlZGF0YVtzaXplXSkge1xcbjExMjI6XFx0XFx0XFx0XFx0cmMgPSAtRUlPO1xcbjExMjM6XFx0XFx0XFx0XFx0Z290byBleGl0O1xcbjExMjQ6XFx0XFx0XFx0fVxcbjExMjU6XFx0XFx0XFx0c2l6ZSsrO1xcbjExMjY6XFx0XFx0fSBlbHNlIGlmIChkZGV2LVxcdTAwM2VkaWQpIHtcXG4xMTI3OlxcdFxcdFxcdHJjID0gLUVJTztcXG4xMTI4OlxcdFxcdFxcdGdvdG8gZXhpdDtcXG4xMTI5OlxcdFxcdH1cXG4xMTMwOlxcdFxcbjExMzE6XFx0XFx0aWYgKERJR0lUQUxfTkZDX0RFUF9OQURfQklUX1NFVChwZmIpKSB7XFxuMTEzMjpcXHRcXHRcXHRyYyA9IC1FSU87XFxuMTEzMzpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTEzNDpcXHRcXHR9XFxuMTEzNTpcXHRcXG4xMTM2OlxcdFxcdGlmIChzaXplIFxcdTAwM2UgcmVzcC1cXHUwMDNlbGVuKSB7XFxuMTEzNzpcXHRcXHRcXHRyYyA9IC1FSU87XFxuMTEzODpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTEzOTpcXHRcXHR9XFxuMTE0MDpcXHRcXG4xMTQxOlxcdFxcdHNrYl9wdWxsKHJlc3AsIHNpemUpO1xcbjExNDI6XFx0XFxuMTE0MzpcXHRcXHRzd2l0Y2ggKERJR0lUQUxfTkZDX0RFUF9QRkJfVFlQRShwZmIpKSB7XFxuMTE0NDpcXHRcXHRjYXNlIERJR0lUQUxfTkZDX0RFUF9QRkJfSV9QRFU6XFxuMTE0NTpcXHRcXHRcXHRwcl9kZWJ1ZyhcXFwiRElHSVRBTF9ORkNfREVQX1BGQl9JX1BEVVxcXFxuXFxcIik7XFxuMTE0NjpcXHRcXG4xMTQ3OlxcdFxcdFxcdGlmIChkZGV2LVxcdTAwM2VhdG5fY291bnQpIHtcXG4xMTQ4OlxcdFxcdFxcdFxcdC8qIFRoZSB0YXJnZXQgaGFzIHJlY2VpdmVkIChhbmQgcmVwbGllZCB0bykgYXQgbGVhc3Qgb25lXFxuMTE0OTpcXHRcXHRcXHRcXHQgKiBBVE4gREVQX1JFUS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6NDA6MzcuNDE3NTU3NDAyWiIsIlNlcSI6MzcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjM2MTcxNDYzNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgRGlnaXRhbCBORkMgREVQIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgYW5kIGV4YWN0bHkgd2hhdCBidWcgaXMgYmVpbmcgYWRkcmVzc2VkLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBuZXQvbmZjL2RpZ2l0YWxfZGVwLmNgLiBJJ20gc2VlaW5nIGEgY29kZSBzbmlwcGV0IGhlcmUuLi4gaXQgbG9va3MgbGlrZSBhIGNvbmRpdGlvbmFsIGJsb2NrIGRlYWxpbmcgd2l0aCBEZXZpY2UgSUQgKERJRCkgaGFuZGxpbmcgaW4gdGhlIERpZ2l0YWwgTkZDIERFUCBwcm90b2NvbC4gSSBzZWUgdGhlIFwiUHJldmlvdXNseVwiIGNvZGUgYmxvY2ssIGFuZCBJIG5lZWQgdG8gcGllY2UgdG9nZXRoZXIgdGhlIG9yaWdpbmFsIGxvZ2ljLiBPa2F5LCBpZiB0aGUgYERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpYCBtYWNybyBpcyB0cnVlLCB0aGVuIHdlIGhhdmUgYSBESUQuIFRoZSBjb2RlIGNoZWNrcyBpZiB0aGUgZGV2aWNlIGFscmVhZHkgaGFzIGEgYGRkZXYtXHUwMDNlZGlkYCBzZXQgYW5kIGlmIHRoZSBESUQgaW4gdGhlIHJlc3BvbnNlIGByZXNwLVx1MDAzZWRhdGFbM11gIG1hdGNoZXMuIElmIHRoZXkgbWF0Y2gsIHRoZW4gYHNpemUrK2AuIElmIHRoZXkgKmRvbid0KiBtYXRjaCwgaXQncyBhbiBJL08gZXJyb3IgKGAtRUlPYCksIGFuZCB3ZSBqdW1wIHRvIHRoZSBleGl0LiBPdGhlcndpc2UsIGlmIHRoZXJlJ3MgYSBkZXZpY2UgRElEIHNldCAoYGRkZXYtXHUwMDNlZGlkYCksIGJ1dCBgRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYilgIGlzICpub3QqIHNldCwgdGhpcyBhZ2FpbiByYWlzZXMgYW4gSS9PIGVycm9yLiBJIGdldCB0aGUgYmFzaWMgZ2lzdCBvZiB0aGlzLCBidXQgaG9sZCBvbi4uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkuIFdoYXQgZXhhY3RseSBpcyBgcmVzcC1cdTAwM2VkYXRhWzNdYCBzdXBwb3NlZCB0byBiZSBoZXJlPyBJdCBmZWVscyBsaWtlIHNvbWV0aGluZyBpcyBtaXNzaW5nLiBJIHNob3VsZCBjaGVjayB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgYHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzYCBzdHJ1Y3R1cmUgcmlnaHQgYXdheSB0byBwcm9wZXJseSB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMTUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDo0MDo0MS4wMzQ3MDY5MjFaIiwiU2VxIjozOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MDMxNDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9kaWdpdGFsX2RlcC5jPTk0PXN0cnVjdCBkaWdpdGFsX3BzbF9yZXMge1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk5LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDA6c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMge1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDEtXFx0dTggZGlyO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTIwMD1kaWdpdGFsX3NlbmRfZGVwX2RhdGFfcHJlcChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoyMDE6XFx0XFx0XFx0ICAgc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXFfcmVzLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0yMDItXFx0XFx0XFx0ICAgc3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2gpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTI5PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX2FjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTUzMS17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjUzMjpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTMzLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTM5LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1NDA6XFx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTQxLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1NDI6XFx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTQzLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTU2Nj1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9uYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTY4LXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTY5OlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzAtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzYtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU3NzpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU3OTpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01ODAtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTk4PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYwMC17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYwMTpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjAyLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjA4LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MDk6XFx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjEwLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MTE6XFx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjEyLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTYyOT1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9ydG94KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjMxLXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjMyOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MzMtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NDYtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY0NzpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NDgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY0OTpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NTAtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9Njg2PXN0YXRpYyB2b2lkIGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02ODktXFx0c3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2ggPSBhcmc7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY5MDpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjkxLVxcdHU4IHBmYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy03NTUtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjc1NjpcXHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NzU3OlxcdGRlcF9yZXMgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilyZXNwLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy03NTgtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTA0PWludCBkaWdpdGFsX2luX3NlbmRfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkwNy17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjkwODpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTA5LVxcdHN0cnVjdCBza19idWZmICpjaGFpbmluZ19za2IsICp0bXBfc2tiO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxMS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTEyOlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxMy1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTE0OlxcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXFx1MDAzZWRhdGE7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxNS1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz05Nzg9c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTgwLXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTgxOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODItXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk4OTpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05OTAtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk5MTpcXHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05OTItXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTAyND1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hdG4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAyNS17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMjY6XFx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXM7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMjctXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDMzLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDM0OlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMzUtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMzY6XFx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAzNy1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDc3PXN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDgwLVxcdGludCByYztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA4MTpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA4Mi1cXHR1OCBwZmI7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTEwNy1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTEwODpcXHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTEwOTpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopcmVzcC1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTExMC1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMjk3PWludCBkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjk4LXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTI5OTpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwMC1cXHRzdHJ1Y3Qgc2tfYnVmZiAqY2hhaW5pbmdfc2tiLCAqdG1wX3NrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzAyLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzAzOlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMDQtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzMDU6XFx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6NDA6NDEuMDg4NzQ0OTcyWiIsIlNlcSI6MzksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjcwODQ1NzYyNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBgZGlnaXRhbF9kZXAuY2AgQ29kZSoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBuZXQvbmZjL2RpZ2l0YWxfZGVwLmNgIGZpbGUsIHNwZWNpZmljYWxseSBsaW5lcyA5NSB0aHJvdWdoIDExMC4gS25vd2luZyB0aGUgTkZDIHN0YWNrIHByZXR0eSB3ZWxsLCBJIGNhbiBsaWtlbHkgZ3Vlc3Mgd2hhdCdzIGdvaW5nIG9uIGluIHRoYXQgc2VjdGlvbi4gR2l2ZW4gdGhlIGNvbnRleHQsIEknbSBwcm9iYWJseSBsb29raW5nIGF0IHNvbWUgY29yZSBkaWdpdGFsIGRhdGEgZXhjaGFuZ2UgZnVuY3Rpb24sIHBvc3NpYmx5IGluaXRpYWxpemF0aW9uLCBlcnJvciBoYW5kbGluZywgb3IgdGhlIGRpc3BhdGNoaW5nIGxvZ2ljIGZvciB0aGUgcHJvdG9jb2wuIE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhlcmUncyBhIGdvb2QgY2hhbmNlIHRoaXMgaXMgdGhlIGhlYXJ0IG9mIHRoZSBEaWdpdGFsIERhdGEgRXhjaGFuZ2UgKERERVApIGxheWVyLiBUaGlzIHBhcnQgaXMgbGlrZWx5IGNydWNpYWwgZm9yIGRldGVybWluaW5nIGhvdyBkaWZmZXJlbnQgTkZDIHJlYWRlcnMgYW5kIGRldmljZXMgY29tbXVuaWNhdGUuIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgdGhpcyBjb2RlIGlzIGZ1bmN0aW9uaW5nIGFzIGV4cGVjdGVkIGluIGNhc2UgdGhlcmUgYXJlIGJ1Z3MgdG8gYmUgZm91bmQuIFRpbWUgdG8gZ2V0IG15IGV5ZXMgb24gaXQgYW5kIHNlZSB3aGF0IGl0J3MgZG9pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzMDgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDo0MDo0OC4xNzMzMjM5OTFaIiwiU2VxIjo0MCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg1ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25mYy9kaWdpdGFsX2RlcC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDk1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDk1OlxcdFxcdHU4IGRpcjtcXG4gIDk2OlxcdFxcdHU4IGNtZDtcXG4gIDk3OlxcdFxcdHU4IGRpZDtcXG4gIDk4OlxcdH0gX19wYWNrZWQ7XFxuICA5OTpcXHRcXG4gMTAwOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzIHtcXG4gMTAxOlxcdFxcdHU4IGRpcjtcXG4gMTAyOlxcdFxcdHU4IGNtZDtcXG4gMTAzOlxcdFxcdHU4IHBmYjtcXG4gMTA0OlxcdH0gX19wYWNrZWQ7XFxuIDEwNTpcXHRcXG4gMTA2OlxcdHN0YXRpYyB2b2lkIGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4gMTA3OlxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XFxuIDEwODpcXHRzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXFxuIDEwOTpcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xcbiAxMTA6XFx0XFxuIDExMTpcXHRzdGF0aWMgY29uc3QgdTggZGlnaXRhbF9wYXlsb2FkX2JpdHNfbWFwWzRdID0ge1xcbiAxMTI6XFx0XFx0WzBdID0gNjQsXFxuIDExMzpcXHRcXHRbMV0gPSAxMjgsXFxuIDExNDpcXHRcXHRbMl0gPSAxOTIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjQwOjQ4LjE3MzQxNDE3MVoiLCJTZXEiOjQxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo2Njk0Mjk0MzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIGEgUG90ZW50aWFsIE91dC1vZi1Cb3VuZHMgUmVhZCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UndmUgZ290IGEgc3RydWN0dXJlLCBgc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXNgLCB3aGljaCBpcywgYXMgZXhwZWN0ZWQsIG9mIHNpemUgMyBieXRlczogYGRpcmAsIGBjbWRgLCBhbmQgYHBmYmAuIFNpbXBsZSBlbm91Z2guIFRoZSBjb2RlIHRoZW4gdXNlcyBgc2l6ZW9mYCB0byBkZXRlcm1pbmUgdGhpcyBzaXplLlxuXG5Ob3csIGluIHRoZSBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgIGZ1bmN0aW9uLCB0aGVyZSdzIGFuIGluaXRpYWwgY2hlY2sgZW5zdXJpbmcgYHJlc3AtXHUwMDNlbGVuIFx1MDAzZT0gM2AuIFRoaXMgc2VlbXMgcmVhc29uYWJsZSwgZ3VhcmFudGVlaW5nIHdlIGhhdmUgYXQgbGVhc3QgdGhlIGJhc2ljIHN0cnVjdHVyZSBkYXRhLiBIb3dldmVyLCBoZXJlJ3Mgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gV2UgY2hlY2sgaWYgYSBzcGVjaWZpYyBiaXQgaXMgc2V0IGluIGBwZmJgIHVzaW5nIGBESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKWAuIElmIHRoYXQgYml0IGlzIGluZGVlZCBzZXQsIGl0IHRoZW4gcHJvY2VlZHMgdG8gcmVhZCBgcmVzcC1cdTAwM2VkYXRhWzNdYCB3aXRob3V0ICpmaXJzdCogdmVyaWZ5aW5nIHRoYXQgYHJlc3AtXHUwMDNlbGVuYCBpcywgYXQgbWluaW11bSwgNCEgSXQgYWxzbyBjaGVja3MgYGRkZXYtXHUwMDNlZGlkYCBidXQgbm90IHRoZSBsZW5ndGghXG5cblNwZWNpZmljYWxseSwgdGhlIGNvZGUgdGhlbiBjaGVja3MgYGRkZXYtXHUwMDNlZGlkIFx1MDAyNlx1MDAyNiAoZGRldi1cdTAwM2VkaWQgPT0gcmVzcC1cdTAwM2VkYXRhWzNdKWAuIElmIHRoaXMgY29uZGl0aW9uIGhvbGRzLCBpdCBpbmNyZW1lbnRzIHRoZSBzaXplLiBIb3dldmVyLCB3aGF0IGlmIGByZXNwLVx1MDAzZWxlbmAgaXMgcHJlY2lzZWx5IDM/IFRoZW4gYHJlc3AtXHUwMDNlZGF0YVszXWAgYmVjb21lcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQhIFRoaXMgaXMgYSBjbGFzc2ljIGJ1ZmZlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5LCBldmVuIGlmIGl0J3MgYSBzbWFsbCBvbmUuIFRoZSBzdWdnZXN0ZWQgcGF0Y2ggaXMgc3BvdCBvbi4gSXQgY29ycmVjdGx5IGluY2x1ZGVzIGEgbGVuZ3RoIGNoZWNrLiBJdCBub3cgY2hlY2tzIGZvcjogYHJlc3AtXHUwMDNlbGVuIFx1MDAzYyBzaXplICsgMWAgYmVmb3JlIGFjY2Vzc2luZyBgcmVzcC1cdTAwM2VkYXRhW3NpemVdYC5cblxuRmluYWxseSwgaXQncyBhbHNvIHdvcnRoIGNoZWNraW5nIGBkaWdpdGFsX2luX3JlY3ZfZGVwX3Jlc2AgdG8gc2VlIGlmIHRoZXJlJ3Mgc2ltaWxhciBsb2dpYyB0aGVyZSB0aGF0IG5lZWRzIHRvIGJlIGFkZHJlc3NlZC4gV2Ugc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgZml4IHRvIGVuc3VyZSB0aGUgaXNzdWUgaXMgY29tcGxldGVseSBlbGltaW5hdGVkIGZyb20gdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NzIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDo0MDo1NC44Njc3MTEzNzRaIiwiU2VxIjo0MiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0OTk4NzExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkRJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01Mi0jZGVmaW5lIERJR0lUQUxfTkZDX0RFUF9OQURfQklUX1NFVChwZmIpICgocGZiKSBcXHUwMDI2IDB4MDgpXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjUzOiNkZWZpbmUgRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikgKChwZmIpIFxcdTAwMjYgRElHSVRBTF9ORkNfREVQX1BGQl9ESURfQklUKVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NC0jZGVmaW5lIERJR0lUQUxfTkZDX0RFUF9QRkJfUE5JKHBmYikgICAgICgocGZiKSBcXHUwMDI2IDB4MDMpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9Njg2PXN0YXRpYyB2b2lkIGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy03NjYtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjc2NzpcXHRpZiAoRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikpIHtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNzY4LVxcdFxcdFBST1RPQ09MX0VSUihcXFwiMTQuOC4yLjFcXFwiKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDc3PXN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTE4LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMTE5OlxcdGlmIChESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSkge1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTIwLVxcdFxcdGlmIChyZXNwLVxcdTAwM2VsZW4gXFx1MDAzYyBzaXplICsgMSB8fCAhZGRldi1cXHUwMDNlZGlkIHx8XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjQwOjU0LjkyMjcyMDQ0NVoiLCJTZXEiOjQzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjozMzg1ODU5Nzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBkZWVwIGluIG15IGRvbWFpbiBleHBlcnRpc2UgYW5kIGFuYWx5emluZyB0aGF0IGNvZGUgc25pcHBldDpcblxuKipEZWNvZGluZyBgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXNgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzYCBzaXR1YXRpb24uIExpbmVzIDc2Ni03NzUuLi4gcmlnaHQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0J3MgdGhlIGNvbnRleHQgaGVyZT8gSXMgdGhpcyBhIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyLCBhIHNwZWNpZmljIGRyaXZlciwgb3Igc29tZSBjb3JlIGNvbW11bmljYXRpb24gcHJvdG9jb2w/IEtub3dpbmcgdGhhdCB3aWxsIGRyYXN0aWNhbGx5IGFmZmVjdCBob3cgSSBhcHByb2FjaCB0aGlzLiBCYXNlZCBvbiB0aGUgdmFyaWFibGUgbmFtZSwgSSdtIGd1ZXNzaW5nIGl0IGRlYWxzIHdpdGggZGlnaXRhbCBpbnB1dCByZWNlcHRpb24gYW5kLCBjcnVjaWFsbHksIHNvbWUga2luZCBvZiBkZXBlbmRlbmN5IHJlc29sdXRpb24uIFwiRGVwZW5kZW5jeSByZXNvbHV0aW9uXCIgaXMgdGhlIGtleS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBkYXRhIGludGVncml0eSBjaGVjaz8gSGFyZHdhcmUgaGFuZHNoYWtlIHN5bmNocm9uaXphdGlvbj8gT3IgbWF5YmUgaW50ZXJydXB0IGhhbmRsaW5nIHN5bmNocm9uaXphdGlvbj9cblxuSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGxvZ2ljYWwgZmxvdzogd2hhdCBzaWduYWxzIG9yIGV2ZW50cyBhcmUgaW5pdGlhdGluZyB0aGlzPyBJcyBpdCBhIHJpc2luZyBlZGdlLCBhIGZhbGxpbmcgZWRnZSwgYSBzcGVjaWZpYyBiaXQgcGF0dGVybj8gV2hhdCdzIGJlaW5nICpyZXNvbHZlZCo/IElzIGl0IGEgcmVzb3VyY2UgY29udGVudGlvbiBpc3N1ZT8gQSB0aW1pbmcgcHJvYmxlbSB3aXRoIGV4dGVybmFsIGRpZ2l0YWwgaW5wdXQ/IEFyZSB3ZSBkZWFsaW5nIHdpdGggYW4gaW50ZXJydXB0IHRoYXQgbmVlZHMgdG8gYWNrbm93bGVkZ2UgYSBoYXJkd2FyZSBzaWduYWwsIGFuZCB3ZSBhcmUgbWFuYWdpbmcgdGhlIHJlcXVpcmVkIGRlcGVuZGVuY2llcz9cblxuSSdtIG1lbnRhbGx5IHN0ZXBwaW5nIHRocm91Z2ggZWFjaCBsaW5lLiBMaW5lIDc2Njogd2hhdCBzdGFydHMgaXQgYWxsPyBUaGVuIEknbGwgd29yayBmb3J3YXJkLiBEb2VzIHRoZSBjb2RlIGJyYW5jaD8gSSdtIGxvb2tpbmcgZm9yIGFueSBjb25kaXRpb25hbCBzdGF0ZW1lbnRzIOKAkyBpZnMsIHdoaWxlcywgc3dpdGNoZXMg4oCTIHRoYXQgaW1wYWN0IGV4ZWN1dGlvbiBwYXRoLCBiZWNhdXNlIHRob3NlIHdpbGwgYmUgY3JpdGljYWwgdG8gdW5kZXJzdGFuZCBwb3NzaWJsZSByYWNlIGNvbmRpdGlvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvcnMuIEknbGwgbWVudGFsbHkgc3Vic3RpdHV0ZSB2YXJpYWJsZXMgdG8gdW5kZXJzdGFuZCBob3cgZGF0YSBpcyB1c2VkIHRvIHJlc29sdmUgdGhlIGRlcGVuZGFuY2llcy5cblxuSSdtIG1lbnRhbGx5IGJ1aWxkaW5nIHRoZSBjb250cm9sIGZsb3cuIEVycm9yIGhhbmRsaW5nIHdpbGwgYmUgY3JpdGljYWwsIHNvIEknbSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBlcnJvciBjb2RlcyBvciBmbGFncyB0aGF0IG1pZ2h0IGJlIHNldCBvciBjaGVja2VkLiBXaGF0IGFyZSB0aGUgcG90ZW50aWFsIGZhaWx1cmUgbW9kZXM/IERvZXMgaXQgbG9nIGVycm9ycz8gVGhpcyBpcyBsaWtlbHkgYSBjcml0aWNhbCBzZWN0aW9uIG9mIHRoZSBjb2RlLCBnaXZlbiB0aGUgZGVwZW5kZW5jeSBhc3BlY3Qgb2YgaXQsIHNvIHJhY2UgY29uZGl0aW9ucyBhcmUgb24gbXkgbWluZC4gQW55IHBvc3NpYmlsaXR5IG9mIGEgbXV0ZXggb3IgaW50ZXJydXB0IGRpc2FibGUgd2l0aGluIHRoaXMgc2VjdGlvbiBvZiBjb2RlP1xuXG5JbiBhIGdvb2QgZGVzaWduLCB0aGlzIHJlc29sdXRpb24gc3RlcCBzaG91bGQgYmUgYXRvbWljIG9yIGhpZ2hseSB0aW1lLXNlbnNpdGl2ZSB0byBwcmV2ZW50IGNvcnJ1cHRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxNjYsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDo0MDo1OC4zMDg1ODMzMjlaIiwiU2VxIjo0NCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODk2MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25mYy9kaWdpdGFsX2RlcC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc2NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDc2NTpcXHRcXHRwZmIgPSBkZXBfcmVzLVxcdTAwM2VwZmI7XFxuIDc2NjpcXHRcXG4gNzY3OlxcdFxcdGlmIChESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSkge1xcbiA3Njg6XFx0XFx0XFx0UFJPVE9DT0xfRVJSKFxcXCIxNC44LjIuMVxcXCIpO1xcbiA3Njk6XFx0XFx0XFx0cmMgPSAtRUlPO1xcbiA3NzA6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4gNzcxOlxcdFxcdH1cXG4gNzcyOlxcdFxcbiA3NzM6XFx0XFx0aWYgKERJR0lUQUxfTkZDX0RFUF9OQURfQklUX1NFVChwZmIpKSB7XFxuIDc3NDpcXHRcXHRcXHRyYyA9IC1FSU87XFxuIDc3NTpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuIDc3NjpcXHRcXHR9XFxuIDc3NzpcXHRcXG4gNzc4OlxcdFxcdGlmIChzaXplIFxcdTAwM2UgcmVzcC1cXHUwMDNlbGVuKSB7XFxuIDc3OTpcXHRcXHRcXHRyYyA9IC1FSU87XFxuIDc4MDpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbiA3ODE6XFx0XFx0fVxcbiA3ODI6XFx0XFxuIDc4MzpcXHRcXHRza2JfcHVsbChyZXNwLCBzaXplKTtcXG4gNzg0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDo0MDo1OC4zMDg2NzQzMDlaIiwiU2VxIjo0NSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTEyMjE5MDg3MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS01TQU4gQXNzZXNzbWVudDogRGlnaXRhbCBORkMgREVQIFJlcXVlc3QgSGFuZGxpbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEluIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAsIHRoZSBjb3JlIGlzc3VlIHdhcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQuIFByZXZpb3VzbHksIHRoZSBjb2RlIGFjY2Vzc2VkIGByZXNwLVx1MDAzZWRhdGFbM11gIHdpdGhvdXQgdmVyaWZ5aW5nIGlmIGByZXNwLVx1MDAzZWxlbmAgd2FzIGxvbmcgZW5vdWdoLiBJZiBgcmVzcC1cdTAwM2VsZW5gIHdhcyAzLCB3ZSBoYWQgYSBjbGFzc2ljIG91dC1vZi1ib3VuZHMgcmVhZCBzY2VuYXJpby4gVGhlIHBhdGNoIGFkZHMgYSBjcnVjaWFsIGJvdW5kcyBjaGVjazogYGlmIChyZXNwLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZSArIDEgLi4uKWAgYmVmb3JlIGFjY2Vzc2luZyB0aGUgYHJlc3AtXHUwMDNlZGF0YWAgYnVmZmVyLiAgYHNpemVgIGlzIHRoZW4gaW5jcmVtZW50ZWQsIGFuZCB0aGVyZSdzIGEgZmluYWwgY2hlY2sgYGlmIChzaXplIFx1MDAzZSByZXNwLVx1MDAzZWxlbilgIGxhdGVyLiBUaGlzIGVuc3VyZXMgYWxsIGFjY2Vzc2VzIHN0YXkgd2l0aGluIHRoZSBhbGxvY2F0ZWQgYHJlc3AtXHUwMDNlZGF0YWAgYm91bmRhcmllcy5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uOiBkb2VzIHRoaXMgd2FycmFudCBhIEtNU0FOIHJ1bj8gVGhlIGFuc3dlciBpcyBhIGNsZWFyIFwibm9cIi4gTGV0J3MgcnVuIHRocm91Z2ggdGhlIGNoZWNrbGlzdDpcblxuKiAgICoqTm8gdXNlci1zcGFjZSBpbmZvcm1hdGlvbiBsZWFrczoqKiBObyBgY29weV90b191c2VyYCwgYHB1dF91c2VyYCwgbmV0bGluayBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycyBhcmUgaW52b2x2ZWQgd2hlcmUgcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBtZW1vcnkgY291bGQgYmUgZXhwb3NlZCB0byB0aGUgdXNlci5cbiogICAqKk5vIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG9yIGJyYW5jaGluZzoqKiBBbGwgdmFyaWFibGVzIHVzZWQgaW4gY29uZGl0aW9uYWwgbG9naWMgKGByZXNwLVx1MDAzZWxlbmAsIGBzaXplYCwgYGRkZXYtXHUwMDNlZGlkYCwgYHJlc3AtXHUwMDNlZGF0YVtzaXplXWApIGFyZSBlaXRoZXIgaW5pdGlhbGl6ZWQgb3IgZGVyaXZlZCBmcm9tIGluaXRpYWxpemVkIHZhbHVlcy4gVGhlIGNvZGUgKmZpeGVzKiBhIGJvdW5kcyBpc3N1ZSByYXRoZXIgdGhhbiBpbnRyb2R1Y2luZyBhIG5ldyBvbmUuXG4qICAgKipObyBuZXcgYWxsb2NhdGlvbnMgb3IgaW5pdGlhbGl6YXRpb24gcmlza3M6KiogVGhlIHBhdGNoIGRvZXNuJ3QgYWRkIGFueSBuZXcgYWxsb2NhdGlvbnMgb3IgY2hhbmdlIGV4aXN0aW5nIG9uZXMgaW4gYSB3YXkgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LlxuKiAgICoqVGhlIHBhdGNoICpzdHJlbmd0aGVucyogYm91bmRzIGNoZWNrczoqKiBJdCAqYWRkcyogYSBjaGVjazogYHJlc3AtXHUwMDNlbGVuIFx1MDAzYyBzaXplICsgMWAsIGFuZCB1c2VzIGBzaXplYCBpbnN0ZWFkIG9mIGhhcmRjb2RlZCBgM2AsIGVuc3VyaW5nIGFsbCBhY2Nlc3NlcyBhcmUgd2l0aGluIHRoZSBib3VuZHMgb2YgYHJlc3BgLiBUaGUgaW5pdGlhbCBjaGVjayB3YXMgbWlzc2luZywgbWVhbmluZyB0aGF0IHdhcyB0aGUgdnVsbmVyYWJpbGl0eS5cblxuV2UgbmVlZCB0byBiZSBjcnlzdGFsIGNsZWFyIG9uIHRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIEtBU0FOIGFuZCBLTVNBTi4gIEtBU0FOIGlzIGRlc2lnbmVkIHRvIGNhdGNoIG91dC1vZi1ib3VuZHMgcmVhZHMgYW5kIHdyaXRlcywgd2hpY2ggaXMgKmV4YWN0bHkqIHRoZSB0eXBlIG9mIGJ1ZyB0aGlzIHBhdGNoIGFkZHJlc3Nlcy4gV2UncmUgZGVhbGluZyB3aXRoIHNrYiBkYXRhIChyZWNlaXZlZCBmcm9tIGEgZGV2aWNlIG9yIHNvY2tldCkuIFRoaXMgZGF0YSBpcyBpbml0aWFsaXplZCB3aXRoIHRoZSByZWNlaXZlZCBwYWNrZXQuIEFueSBhdHRlbXB0IHRvIHJlYWQgYmV5b25kIHRoZSBib3VuZGFyaWVzIG9mIHRoaXMgZGF0YSBpcyBhbiBvdXQtb2YtYm91bmRzIGFjY2Vzcywgd2hpY2ggS0FTQU4gaXMgYnVpbHQgdG8gZGV0ZWN0LiBLTVNBTiwgb24gdGhlIG90aGVyIGhhbmQsIGRlYWxzIHdpdGggdXNlcyBvZiAqdW5pbml0aWFsaXplZCogbWVtb3J5LlxuXG5UaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrcyBvZiB1c2luZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmUncyBubyB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2ssIHdoaWNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzLiBUaGUgZW50aXJlIHByb2JsZW0gaXMgdGhhdCBgcmVzcC1cdTAwM2VkYXRhYCBtYXkgYmUgYWNjZXNzZWQgb3V0LW9mLWJvdW5kcy4gVGhlIHBhdGNoIGVuZm9yY2VzIGEgY2hlY2sgdG8ga2VlcCBpdCBpbi1ib3VuZHMuXG5cblRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gYXZvaWQgS01TQU4gaWYgdGhlIGlzc3VlIGlzIGNhdWdodCBieSBLQVNBTiwgYW5kIHRoaXMgaXMgZGVmaW5pdGl2ZWx5IGEgS0FTQU4gYnVnLiBUaGlzIGlzc3VlIGlzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBhbmQgaXMgKm5vdCogYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuIFRoZSBwYXRjaCBhZGRyZXNzZXMgYW5kIHByZXZlbnRzIGFuIG91dC1vZi1ib3VuZHMgcmVhZC4gIEtNU0FOIGlzIG5vdCBuZWVkZWQgaGVyZS4gVGhlIHJlYXNvbmluZyBpcyBjbGVhciwgZGV0YWlsZWQsIGFjY3VyYXRlLCBhbmQgaGlnaGxpZ2h0cyB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBLQVNBTiBhbmQgS01TQU4uIFRoZSBhbnN3ZXIgaXMgTmVlZHNLTVNBTiA9IGZhbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTM2LCJPdXRwdXRUb2tlbnMiOjIwNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyODUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDo0MTowOS41MzA1ODYwNjFaIiwiU2VxIjo0NiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTI4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWlzc2luZyBib3VuZHMgY2hlY2sgaW4gbmV0L25mYy9kaWdpdGFsX2RlcC5jIHdpdGhpbiBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSgpLiBQcmV2aW91c2x5LCB3aGVuIERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpIHdhcyB0cnVlLCByZXNwLVxcdTAwM2VkYXRhWzNdIHdhcyBhY2Nlc3NlZCB3aXRob3V0IGNoZWNraW5nIGlmIHJlc3AtXFx1MDAzZWxlbiB3YXMgYXQgbGVhc3QgNCBieXRlcyAoc2l6ZSArIDEpLCBwb3RlbnRpYWxseSByZXN1bHRpbmcgaW4gYW4gb3V0LW9mLWJvdW5kcyByZWFkIG9uIHRoZSByZWNlaXZlZCBza2IgYnVmZmVyLiBUaGUgcGF0Y2ggYWRkcyBgcmVzcC1cXHUwMDNlbGVuIFxcdTAwM2Mgc2l6ZSArIDFgIHRvIHByZXZlbnQgdGhpcyBvdXQtb2YtYm91bmRzIHJlYWQuXFxuXFxuVGhpcyBpcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSwgd2hpY2ggaXMgZGV0ZWN0YWJsZSBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBtYW5pcHVsYXRlIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnksIGRvZXMgbm90IGNvcHkga2VybmVsIGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIGZpZWxkcy4gVGh1cywgS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWlzc2luZyBib3VuZHMgY2hlY2sgaW4gbmV0L25mYy9kaWdpdGFsX2RlcC5jIHdpdGhpbiBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSgpLiBQcmV2aW91c2x5LCB3aGVuIERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpIHdhcyB0cnVlLCByZXNwLVxcdTAwM2VkYXRhWzNdIHdhcyBhY2Nlc3NlZCB3aXRob3V0IGNoZWNraW5nIGlmIHJlc3AtXFx1MDAzZWxlbiB3YXMgYXQgbGVhc3QgNCBieXRlcyAoc2l6ZSArIDEpLCBwb3RlbnRpYWxseSByZXN1bHRpbmcgaW4gYW4gb3V0LW9mLWJvdW5kcyByZWFkIG9uIHRoZSByZWNlaXZlZCBza2IgYnVmZmVyLiBUaGUgcGF0Y2ggYWRkcyBgcmVzcC1cXHUwMDNlbGVuIFxcdTAwM2Mgc2l6ZSArIDFgIHRvIHByZXZlbnQgdGhpcyBvdXQtb2YtYm91bmRzIHJlYWQuXFxuXFxuVGhpcyBpcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSwgd2hpY2ggaXMgZGV0ZWN0YWJsZSBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBtYW5pcHVsYXRlIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnksIGRvZXMgbm90IGNvcHkga2VybmVsIGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIGZpZWxkcy4gVGh1cywgS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowznmqb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-13 20:35:42 +0000 UTC FinishedAt: 2026-09-13 20:41:12 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "df2908090cda368b01ff43709f51890076c56157", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_DIGITAL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "df2908090cda368b01ff43709f51890076c56157", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_DIGITAL" ], "series_id": "0bafa68c-9c65-471f-8aa7-7445c6dde10d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "digital_tg_recv_dep_req", "digital_tg_send_dep_res" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "", "base_commit": "df2908090cda368b01ff43709f51890076c56157", "base_tree": "axboe" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjM5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQyYjMzQ7LAogICAgJiMzNDtORkNfRElHSVRBTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxJiMzNDssCiAgICAmIzM0O2RpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtaXNzaW5nIGJvdW5kcyBjaGVjayBpbiBuZXQvbmZjL2RpZ2l0YWxfZGVwLmMgd2l0aGluIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKCkuIFByZXZpb3VzbHksIHdoZW4gRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikgd2FzIHRydWUsIHJlc3AtXHUwMDNlZGF0YVszXSB3YXMgYWNjZXNzZWQgd2l0aG91dCBjaGVja2luZyBpZiByZXNwLVx1MDAzZWxlbiB3YXMgYXQgbGVhc3QgNCBieXRlcyAoc2l6ZSAmIzQzOyAxKSwgcG90ZW50aWFsbHkgcmVzdWx0aW5nIGluIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBvbiB0aGUgcmVjZWl2ZWQgc2tiIGJ1ZmZlci4gVGhlIHBhdGNoIGFkZHMgYHJlc3AtXHUwMDNlbGVuIFx1MDAzYyBzaXplICYjNDM7IDFgIHRvIHByZXZlbnQgdGhpcyBvdXQtb2YtYm91bmRzIHJlYWQuXG5cblRoaXMgaXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHksIHdoaWNoIGlzIGRldGVjdGFibGUgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbWFuaXB1bGF0ZSB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5LCBkb2VzIG5vdCBjb3B5IGtlcm5lbCBkYXRhIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgYmFzZWQgb24gdW5pbml0aWFsaXplZCBmaWVsZHMuIFRodXMsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBib3VuZHMgY2hlY2sgYW5kIHZhbGlkYXRpb24gbG9naWMgaW4gZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoKSB3aGVuIGhhbmRsaW5nIERFUCAoRGF0YSBFeGNoYW5nZSBQcm90b2NvbCkgcmVxdWVzdCBmcmFtZXMgd2l0aCB0aGUgRElEIGJpdCBzZXQgaW4gdGhlIE5GQyBkaWdpdGFsIHByb3RvY29sIHN0YWNrLiBQcmV2aW91c2x5LCByZWFkaW5nIHJlc3AtXHUwMDNlZGF0YVszXSBjb3VsZCBjYXVzZSBhbiBvdXQtb2YtYm91bmRzIGFjY2VzcyBpZiByZXNwLVx1MDAzZWxlbiB3YXMgaW5zdWZmaWNpZW50LiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBORkMgdGFyZ2V0IG1vZGUgY29tbXVuaWNhdGlvbiB2aWEgZW11bGF0ZWQgdmlydHVhbCBkZXZpY2VzIChuZmNzaW0pIG9yIFVTQiBORkMgZGV2aWNlcyAocG9ydDEwMCkgc3VwcG9ydGVkIGluIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjM5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTg3OTJkMTE1MDNmZmM0NTFkYTU3YTU5NDBiOWE2NmU4ZDY2ZjhiYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDEzIDIwOjM5OjE2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZmMvZGlnaXRhbF9kZXAuYyBiL25ldC9uZmMvZGlnaXRhbF9kZXAuY1xuaW5kZXggMzk4MmZhMDg0NzM3Zi4uYWU1NDA3ZmNhMTJkNCAxMDA2NDRcbi0tLSBhL25ldC9uZmMvZGlnaXRhbF9kZXAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25mYy9kaWdpdGFsX2RlcC5jXG5AQCAtMTExNywxMiAmIzQzOzExMTcsMTIgQEAgc3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxuIFx0cGZiID0gZGVwX3JlcS1cdTAwM2VwZmI7XG4gXG4gXHRpZiAoRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikpIHtcbi1cdFx0aWYgKGRkZXYtXHUwMDNlZGlkIFx1MDAyNlx1MDAyNiAoZGRldi1cdTAwM2VkaWQgPT0gcmVzcC1cdTAwM2VkYXRhWzNdKSkge1xuLVx0XHRcdHNpemUmIzQzOyYjNDM7O1xuLVx0XHR9IGVsc2Uge1xuJiM0MztcdFx0aWYgKHJlc3AtXHUwMDNlbGVuIFx1MDAzYyBzaXplICYjNDM7IDEgfHwgIWRkZXYtXHUwMDNlZGlkIHx8XG4mIzQzO1x0XHQgICAgZGRldi1cdTAwM2VkaWQgIT0gcmVzcC1cdTAwM2VkYXRhW3NpemVdKSB7XG4gXHRcdFx0cmMgPSAtRUlPO1xuIFx0XHRcdGdvdG8gZXhpdDtcbiBcdFx0fVxuJiM0MztcdFx0c2l6ZSYjNDM7JiM0Mzs7XG4gXHR9IGVsc2UgaWYgKGRkZXYtXHUwMDNlZGlkKSB7XG4gXHRcdHJjID0gLUVJTztcbiBcdFx0Z290byBleGl0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjM5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQyYjMzQ7LAogICAgJiMzNDtORkNfRElHSVRBTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxJiMzNDssCiAgICAmIzM0O2RpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYm91bmRzIGNoZWNrIGFuZCB2YWxpZGF0aW9uIGxvZ2ljIGluIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKCkgd2hlbiBoYW5kbGluZyBERVAgKERhdGEgRXhjaGFuZ2UgUHJvdG9jb2wpIHJlcXVlc3QgZnJhbWVzIHdpdGggdGhlIERJRCBiaXQgc2V0IGluIHRoZSBORkMgZGlnaXRhbCBwcm90b2NvbCBzdGFjay4gUHJldmlvdXNseSwgcmVhZGluZyByZXNwLVx1MDAzZWRhdGFbM10gY291bGQgY2F1c2UgYW4gb3V0LW9mLWJvdW5kcyBhY2Nlc3MgaWYgcmVzcC1cdTAwM2VsZW4gd2FzIGluc3VmZmljaWVudC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgTkZDIHRhcmdldCBtb2RlIGNvbW11bmljYXRpb24gdmlhIGVtdWxhdGVkIHZpcnR1YWwgZGV2aWNlcyAobmZjc2ltKSBvciBVU0IgTkZDIGRldmljZXMgKHBvcnQxMDApIHN1cHBvcnRlZCBpbiBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDE4NzkyZDExNTAzZmZjNDUxZGE1N2E1OTQwYjlhNjZlOGQ2NmY4YmIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIFNlcCAxMyAyMDozOToxNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZmMvZGlnaXRhbF9kZXAuYyBiL25ldC9uZmMvZGlnaXRhbF9kZXAuYwppbmRleCAzOTgyZmEwODQ3MzdmLi5hZTU0MDdmY2ExMmQ0IDEwMDY0NAotLS0gYS9uZXQvbmZjL2RpZ2l0YWxfZGVwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25mYy9kaWdpdGFsX2RlcC5jCkBAIC0xMTE3LDEyICYjNDM7MTExNywxMiBAQCBzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsCiAJcGZiID0gZGVwX3JlcS0mZ3Q7cGZiOwogCiAJaWYgKERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpKSB7Ci0JCWlmIChkZGV2LSZndDtkaWQgJmFtcDsmYW1wOyAoZGRldi0mZ3Q7ZGlkID09IHJlc3AtJmd0O2RhdGFbM10pKSB7Ci0JCQlzaXplJiM0MzsmIzQzOzsKLQkJfSBlbHNlIHsKJiM0MzsJCWlmIChyZXNwLSZndDtsZW4gJmx0OyBzaXplICYjNDM7IDEgfHwgIWRkZXYtJmd0O2RpZCB8fAomIzQzOwkJICAgIGRkZXYtJmd0O2RpZCAhPSByZXNwLSZndDtkYXRhW3NpemVdKSB7CiAJCQlyYyA9IC1FSU87CiAJCQlnb3RvIGV4aXQ7CiAJCX0KJiM0MzsJCXNpemUmIzQzOyYjNDM7OwogCX0gZWxzZSBpZiAoZGRldi0mZ3Q7ZGlkKSB7CiAJCXJjID0gLUVJTzsKIAkJZ290byBleGl0Owo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTU5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTkZDIERpZ2l0YWwgREVQIFJlcXVlc3QgSGFuZGxpbmcqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBJIHNlZSB0aGV5JiMzOTtyZSBtb2RpZnlpbmcgYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2AsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSAxMTE3LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHRoZSBjb250ZXh0LiBUaGlzIGxvb2tzIGxpa2UgaXQmIzM5O3MgZGVhbGluZyB3aXRoIERldmljZSBJRCAoRElEKSBoYW5kbGluZyB3aXRoaW4gdGhlIERpZ2l0YWwgREVQIHByb3RvY29sLiBUaGUgY29yZSBvZiB0aGlzIGZ1bmN0aW9uLCBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgLCBzZWVtcyB0byBiZSBwcm9jZXNzaW5nIGEgcmVjZWl2ZWQgREVQIHJlcXVlc3QgZnJvbSBhIHRhcmdldCBkZXZpY2UuCgpUaGUgbWFpbiBwb2ludCBvZiB0aGUgZGlmZiBpcyBpbiBob3cgdGhleSB2YWxpZGF0ZSB0aGUgRElELiBQcmV2aW91c2x5LCBpdCBjaGVja2VkIGlmIGBkZGV2LSZndDtkaWRgIGV4aXN0ZWQgYW5kIG1hdGNoZWQgYHJlc3AtJmd0O2RhdGFbM11gIHdoZW4gdGhlIERJRCBiaXQgd2FzIHNldCBpbiBgcGZiYC4gTm93LCBpdCBzZWVtcyBsaWtlIHRoZSBjaGVjayBpcyBtb3JlIHJvYnVzdC4gSXQmIzM5O3MgdmVyaWZ5aW5nIGByZXNwLSZndDtsZW5gIGlzIHN1ZmZpY2llbnQgdG8gaG9sZCB0aGUgRElELCB0aGVuIGNoZWNrcyBpZiBgZGRldi0mZ3Q7ZGlkYCBpcyBudWxsLCBvciBpdCBjaGVja3MgZm9yIGEgbWlzbWF0Y2ggYmV0d2VlbiBgZGRldi0mZ3Q7ZGlkYCBhbmQgYHJlc3AtJmd0O2RhdGFbc2l6ZV1gLCBpbW1lZGlhdGVseSByZXR1cm5pbmcgYC1FSU9gIGlmIGl0IGZhaWxzLiBUaGUgYHNpemUmIzQzOyYjNDM7YCBpcyBub3cgYWZ0ZXIgdGhpcyBjaGVjay4gVGhpcyBhcHBlYXJzIHRvIGJlIGEgYnVnIGZpeCBvciBzZWN1cml0eSBlbmhhbmNlbWVudCwgYmVjYXVzZSB0aGUgb2xkIGxvZ2ljLCBpZiB0aGUgRElEIHdhcyBub3QgcHJlc2VudCwgd291bGQmIzM5O3ZlIGluY3JlbWVudGVkIHRoZSBzaXplIHdpdGhvdXQgdGhlIGNoZWNrIGFuZCBwb3RlbnRpYWxseSBsZWQgdG8gYW4gb3V0LW9mLWJvdW5kcyByZWFkIG9yIG1lbW9yeSBjb3JydXB0aW9uLiBUaGlzIGNoYW5nZSBsaWtlbHkgYWRkcmVzc2VzIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkgb3IgbG9naWMgZXJyb3Igd2hlcmUgYW4gYXR0YWNrZXIgY291bGQgc2VuZCBhIG1hbGZvcm1lZCByZXF1ZXN0IGFuZCBwb3NzaWJseSB0cmlnZ2VyIGFuIGlzc3VlIGlmIHRoZSBgRElEYCB3YXMgbm90IGZvdW5kLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGNvZGUgZm9yIHNpbWlsYXIgcGF0dGVybnMuIEl0JiMzOTtzIHBvc3NpYmxlIHRoZXJlIGFyZSBvdGhlciBzaW1pbGFyIGlzc3VlcyBpbiB0aGlzIG1vZHVsZSB0aGF0IGFsc28gbmVlZCB0byBiZSBhZGRyZXNzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmZjL2RpZ2l0YWxfZGVwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzExMDA6XHRcdFx0Z290byBleGl0O1xuMTEwMTpcdFx0fVxuMTEwMjpcdFxuMTEwMzpcdFx0aWYgKHJlc3AtXHUwMDNlbGVuIFx1MDAzZSBkZGV2LVx1MDAzZWxvY2FsX3BheWxvYWRfbWF4KSB7XG4xMTA0Olx0XHRcdHJjID0gLUVNU0dTSVpFO1xuMTEwNTpcdFx0XHRnb3RvIGV4aXQ7XG4xMTA2Olx0XHR9XG4xMTA3Olx0XG4xMTA4Olx0XHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcbjExMDk6XHRcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilyZXNwLVx1MDAzZWRhdGE7XG4xMTEwOlx0XG4xMTExOlx0XHRpZiAocmVzcC1cdTAwM2VsZW4gXHUwMDNjIHNpemUgfHwgZGVwX3JlcS1cdTAwM2VkaXIgIT0gRElHSVRBTF9ORkNfREVQX0ZSQU1FX0RJUl9PVVQgfHxcbjExMTI6XHRcdCAgICBkZXBfcmVxLVx1MDAzZWNtZCAhPSBESUdJVEFMX0NNRF9ERVBfUkVRKSB7XG4xMTEzOlx0XHRcdHJjID0gLUVJTztcbjExMTQ6XHRcdFx0Z290byBleGl0O1xuMTExNTpcdFx0fVxuMTExNjpcdFxuMTExNzpcdFx0cGZiID0gZGVwX3JlcS1cdTAwM2VwZmI7XG4xMTE4Olx0XG4xMTE5Olx0XHRpZiAoRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikpIHtcbjExMjA6XHRcdFx0aWYgKHJlc3AtXHUwMDNlbGVuIFx1MDAzYyBzaXplICYjNDM7IDEgfHwgIWRkZXYtXHUwMDNlZGlkIHx8XG4xMTIxOlx0XHRcdCAgICBkZGV2LVx1MDAzZWRpZCAhPSByZXNwLVx1MDAzZWRhdGFbc2l6ZV0pIHtcbjExMjI6XHRcdFx0XHRyYyA9IC1FSU87XG4xMTIzOlx0XHRcdFx0Z290byBleGl0O1xuMTEyNDpcdFx0XHR9XG4xMTI1Olx0XHRcdHNpemUmIzQzOyYjNDM7O1xuMTEyNjpcdFx0fSBlbHNlIGlmIChkZGV2LVx1MDAzZWRpZCkge1xuMTEyNzpcdFx0XHRyYyA9IC1FSU87XG4xMTI4Olx0XHRcdGdvdG8gZXhpdDtcbjExMjk6XHRcdH1cbjExMzA6XHRcbjExMzE6XHRcdGlmIChESUdJVEFMX05GQ19ERVBfTkFEX0JJVF9TRVQocGZiKSkge1xuMTEzMjpcdFx0XHRyYyA9IC1FSU87XG4xMTMzOlx0XHRcdGdvdG8gZXhpdDtcbjExMzQ6XHRcdH1cbjExMzU6XHRcbjExMzY6XHRcdGlmIChzaXplIFx1MDAzZSByZXNwLVx1MDAzZWxlbikge1xuMTEzNzpcdFx0XHRyYyA9IC1FSU87XG4xMTM4Olx0XHRcdGdvdG8gZXhpdDtcbjExMzk6XHRcdH1cbjExNDA6XHRcbjExNDE6XHRcdHNrYl9wdWxsKHJlc3AsIHNpemUpO1xuMTE0MjpcdFxuMTE0MzpcdFx0c3dpdGNoIChESUdJVEFMX05GQ19ERVBfUEZCX1RZUEUocGZiKSkge1xuMTE0NDpcdFx0Y2FzZSBESUdJVEFMX05GQ19ERVBfUEZCX0lfUERVOlxuMTE0NTpcdFx0XHRwcl9kZWJ1ZyhcJiMzNDtESUdJVEFMX05GQ19ERVBfUEZCX0lfUERVXFxuXCYjMzQ7KTtcbjExNDY6XHRcbjExNDc6XHRcdFx0aWYgKGRkZXYtXHUwMDNlYXRuX2NvdW50KSB7XG4xMTQ4Olx0XHRcdFx0LyogVGhlIHRhcmdldCBoYXMgcmVjZWl2ZWQgKGFuZCByZXBsaWVkIHRvKSBhdCBsZWFzdCBvbmVcbjExNDk6XHRcdFx0XHQgKiBBVE4gREVQX1JFUS5cbjExNTA6XHRcdFx0XHQgKi9cbjExNTE6XHRcdFx0XHRkZGV2LVx1MDAzZWF0bl9jb3VudCA9IDA7XG4xMTUyOlx0XG4xMTUzOlx0XHRcdFx0LyogcG5pIG9mIHJlc3AgUERVIGVxdWFsIHRvIHRoZSB0YXJnZXQgY3VycmVudCBwbmkgLSAxXG4xMTU0Olx0XHRcdFx0ICogbWVhbnMgcmVzcCBpcyB0aGUgcHJldmlvdXMgREVQX1JFUSBQRFUgcmVjZWl2ZWQgZnJvbVxuMTE1NTpcdFx0XHRcdCAqIHRoZSBpbml0aWF0b3Igc28gdGhlIHRhcmdldCByZXBsaWVzIHdpdGggc2F2ZWRfc2tiXG4xMTU2Olx0XHRcdFx0ICogd2hpY2ggaXMgdGhlIHByZXZpb3VzIERFUF9SRVMgc2F2ZWQgaW5cbjExNTc6XHRcdFx0XHQgKiBkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcygpLlxuMTE1ODpcdFx0XHRcdCAqL1xuMTE1OTpcdFx0XHRcdGlmIChESUdJVEFMX05GQ19ERVBfUEZCX1BOSShwZmIpID09XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU4NgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTkZDIERpZ2l0YWwgUHJvdG9jb2wgU3RhY2sqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGZvY3VzIHJpZ2h0IG5vdyBpcyBvbiB1bmRlcnN0YW5kaW5nIHRoZSBgbmV0L25mYy9kaWdpdGFsX2RlcC5jYCBmaWxlLiBUaGlzIGlzIHBhcnQgb2YgdGhlIE5GQyBkaWdpdGFsIHByb3RvY29sIHN0YWNrLCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl0IGZpdHMgaW50byB0aGUgYmlnZ2VyIHBpY3R1cmUuIEZpcnN0LCBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgQ09ORklHX05GQ19ESUdJVEFMYCBpcyBlbmFibGVkIGFuZCB1bmRlcnN0YW5kIGl0cyBzaWduaWZpY2FuY2UuCgpJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSwgYW5kIGhvdyB0byB2ZXJpZnkgaWYgdGhpcyBpcyBpbiB1c2UuIEkgd2lsbCBuZXh0IGxvb2sgYXQgaG93IHRoaXMgZmVhdHVyZSBnZXRzIHVzZWQgd2l0aGluIHRoZSBrZXJuZWwgYW5kIGl0cyBhc3NvY2lhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTW9zdCBpbXBvcnRhbnRseSwgSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGlzIGNvbXBvbmVudCBpcyBhY2Nlc3NpYmxlIG9yIHRlc3RhYmxlIHdpdGhpbiBlbnZpcm9ubWVudHMgbGlrZSBzeXprYWxsZXIgb3IgdmlydHVhbGl6ZWQgc3lzdGVtcy4gSXMgaXQgZXZlbiByZWFjaGFibGU/CgpUbyBnZXQgYSBjbGVhcmVyIHBpY3R1cmUsIEkgc2hvdWxkIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIHdpdGhpbiB0aGUgYG5ldC9uZmNgIGRpcmVjdG9yeS4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBlbmFibGluZyBjb25kaXRpb25zIHdpbGwgYmUgZGVmaW5lZC4gVGhhdCBzaG91bGQgcG9pbnQgbWUgaW4gdGhlIHJpZ2h0IGRpcmVjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZDX0RJR0lUQUwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvS2NvbmZpZz02PW1lbnVjb25maWcgTkZDXG4tLVxubmV0L25mYy9LY29uZmlnLTE2LVxubmV0L25mYy9LY29uZmlnOjE3OmNvbmZpZyBORkNfRElHSVRBTFxubmV0L25mYy9LY29uZmlnLTE4LVx0ZGVwZW5kcyBvbiBORkNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTc0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgTkZDIEtjb25maWcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHB1bGwgdXAgdGhlIGBuZXQvbmZjL0tjb25maWdgIGZpbGUuIEkmIzM5O20gYXNzdW1pbmcgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgc3RhbmRhcmQgTGludXgga2VybmVsIHNvdXJjZSBoZXJlLCBzbyB0aGlzIGlzIHdoZXJlIHdlJiMzOTtsbCBmaW5kIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gTmVhciBGaWVsZCBDb21tdW5pY2F0aW9uLiBJJiMzOTttIGltbWVkaWF0ZWx5IGxvb2tpbmcgZm9yIHRoZSBnZW5lcmFsIHN0cnVjdHVyZS4gSSYjMzk7bSBleHBlY3RpbmcgdG8gc2VlIHRoZSBzdGFuZGFyZCBgY29uZmlnYCBibG9ja3MsIGBib29sYCwgYHRyaXN0YXRlYCwgYW5kIGBzdHJpbmdgIGRlZmluaXRpb25zLiBJIGFudGljaXBhdGUgc2VlaW5nIGRlcGVuZGVuY2llcywgbGlrZWx5IG9uIG90aGVyIG5ldHdvcmstcmVsYXRlZCBmZWF0dXJlcyBvciBwb3RlbnRpYWxseSBldmVuIGhhcmR3YXJlIGRyaXZlcnMsIGVzcGVjaWFsbHkgaWYgTkZDIGNvbnRyb2xsZXIgc3VwcG9ydCBpcyBtb2R1bGFyaXplZC4KCkkmIzM5O20ga2VlcGluZyBhbiBleWUgb3V0IGZvciBob3cgdGhleSYjMzk7dmUgb3JnYW5pemVkIHRoZSBvcHRpb25zLiBBcmUgdGhleSBncm91cGVkIGJ5IE5GQyBwcm90b2NvbCBzdGFuZGFyZHMgKGUuZy4sIE5GQy1BLCBORkMtQiwgTkZDLUYpPyBCeSBjb250cm9sbGVyIHR5cGU/IE9yIG1heWJlIGJ5IGZlYXR1cmUgc2V0LCBsaWtlIHJlYWRlci93cml0ZXIgZnVuY3Rpb25hbGl0eSB2ZXJzdXMgcGVlci10by1wZWVyPyBUaGUgb3JnYW5pemF0aW9uIHdpbGwgdGVsbCBtZSBhIGxvdCBhYm91dCB0aGUgZGVzaWduIHBoaWxvc29waHkuCgpNeSBmb2N1cyB3aWxsIGJlIG9uIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGRlZmF1bHRzLiBXaGF0IG90aGVyIGtlcm5lbCBmZWF0dXJlcyBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIE5GQyB0byB3b3JrPyBBcmUgdGhlcmUgYW55IGhhcmQgZGVwZW5kZW5jaWVzLCBvciBhcmUgbW9zdCB0aGluZ3MgY29uZmlndXJhYmxlPyBVbmRlcnN0YW5kaW5nIHRoZSBkZWZhdWx0cyBpcyBrZXkgYmVjYXVzZSB0aGV5IGRpY3RhdGUgdGhlICYjMzQ7b3V0LW9mLXRoZS1ib3gmIzM0OyBiZWhhdmlvci4gQXJlIHRoZSBkZWZhdWx0cyBzZW5zaWJsZSBmcm9tIGEgc2VjdXJpdHkgYW5kIHVzYWJpbGl0eSBzdGFuZHBvaW50PyBUaGF0JiMzOTtzIHdoYXQgSSYjMzk7bGwgYmUgbG9va2luZyBhdC4KCkkmIzM5O2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55ICYjMzQ7ZXhwZXJ0JiMzNDsgb3B0aW9ucywgaWYgdGhlcmUgYXJlIGFueSwgYW5kIGhvdyB0aGV5IGFyZSBleHBsYWluZWQuIEFyZSB0aGVyZSBjbGVhciBkZXNjcmlwdGlvbnMgb2YgdGhlIGltcGFjdCBvZiB0aGVzZSBvcHRpb25zPyBJIHdhbnQgdG8gc2VlIGlmIHRoZSBLY29uZmlnIHByb3ZpZGVzIHN1ZmZpY2llbnQgZ3VpZGFuY2UgZm9yIHRob3NlIHdobyBtaWdodCB3YW50IHRvIGN1c3RvbWl6ZSB0aGUgTkZDIHN0YWNrIGZvciB0aGVpciBzcGVjaWZpYyBlbWJlZGRlZCBkZXZpY2Ugb3IgYXBwbGljYXRpb24uIEZpbmFsbHksIEkmIzM5O2xsIHNraW0gZm9yIGFueSBkZXByZWNhdGlvbiB3YXJuaW5ncyBvciBhbnl0aGluZyB0aGF0IHBvaW50cyB0byBzb21lIG9mIHRoZSBjb2RlIGJlaW5nIHJlcGxhY2VkIG9yIHVuZGVyIGRldmVsb3BtZW50LiBBbHdheXMgaW50ZXJlc3RpbmcgdG8gbm90ZSB0aGUgJiMzNDtUT0RPJiMzNDsgZW50cmllcyBhcyB3ZWxsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25mYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgTkZDIHN1YnN5c3RlbSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgTkZDXG4gICA3Olx0XHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXG4gICA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtORkMgc3Vic3lzdGVtIHN1cHBvcnRcJiMzNDtcbiAgIDk6XHRcdGRlZmF1bHQgblxuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHN1cHBvcnQgZm9yIE5GQyAoTmVhciBmaWVsZFxuICAxMjpcdFx0ICBjb21tdW5pY2F0aW9uKSBkZXZpY2VzLlxuICAxMzpcdFxuICAxNDpcdFx0ICBUbyBjb21waWxlIHRoaXMgc3VwcG9ydCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsXG4gIDE1Olx0XHQgIGJlIGNhbGxlZCBuZmMuXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIE5GQ19ESUdJVEFMXG4gIDE4Olx0XHRkZXBlbmRzIG9uIE5GQ1xuICAxOTpcdFx0c2VsZWN0IENSQ19DQ0lUVFxuICAyMDpcdFx0c2VsZWN0IENSQ19JVFVfVFxuICAyMTpcdFx0dHJpc3RhdGUgXCYjMzQ7TkZDIERpZ2l0YWwgUHJvdG9jb2wgc3RhY2sgc3VwcG9ydFwmIzM0O1xuICAyMjpcdFx0ZGVmYXVsdCBuXG4gIDIzOlx0XHRoZWxwXG4gIDI0Olx0XHQgIFNheSBZIGlmIHlvdSB3YW50IHRvIGJ1aWxkIE5GQyBkaWdpdGFsIHByb3RvY29sIHN0YWNrIHN1cHBvcnQuXG4gIDI1Olx0XHQgIFRoaXMgaXMgbmVlZGVkIGJ5IE5GQyBjaGlwc2V0cyB3aG9zZSBmaXJtd2FyZSBvbmx5IGltcGxlbWVudFxuICAyNjpcdFx0ICB0aGUgTkZDIGFuYWxvZyBsYXllci5cbiAgMjc6XHRcbiAgMjg6XHRcdCAgVG8gY29tcGlsZSB0aGlzIHN1cHBvcnQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbFxuICAyOTpcdFx0ICBiZSBjYWxsZWQgbmZjX2RpZ2l0YWwuXG4gIDMwOlx0XG4gIDMxOlx0c291cmNlIFwmIzM0O25ldC9uZmMvbmNpL0tjb25maWdcJiMzNDtcbiAgMzI6XHRzb3VyY2UgXCYjMzQ7bmV0L25mYy9oY2kvS2NvbmZpZ1wmIzM0O1xuICAzMzpcdFxuICAzNDpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25mYy9LY29uZmlnXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg0MAoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IERlY29kaW5nIE5GQ19ESUdJVEFMIFVzYWdlKioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuICYjMzQ7TkZDX0RJR0lUQUwuJiMzNDsgVGhhdCBpbW1lZGlhdGVseSBzaWduYWxzIGEgc3BlY2lmaWMgYXBwbGljYXRpb24gb3IgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIE5GQyAoTmVhciBGaWVsZCBDb21tdW5pY2F0aW9uKSBlY29zeXN0ZW0uIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkmIzM5O20gdGhpbmtpbmcgdGhpcyBsaWtlbHkgcmVmZXJzIHRvIGEgZGlnaXRhbCByZXByZXNlbnRhdGlvbiBvciBpbnRlcmZhY2UgcmVsYXRpbmcgdG8gTkZDLCBsaWtlbHkgZm9yIGEgcGFydGljdWxhciBkZXZpY2UgZHJpdmVyIG9yIHNvZnR3YXJlIHN0YWNrLiBNeSBtaW5kIGltbWVkaWF0ZWx5IHN0YXJ0cyBydW5uaW5nIHRocm91Z2ggdGhlIHBvdGVudGlhbCBjb250ZXh0cy4gSXMgdGhpcyByZWxhdGVkIHRvIHNlY3VyZSBlbGVtZW50IGludGVyYWN0aW9ucz8gQ29udGFjdGxlc3MgcGF5bWVudCBpbXBsZW1lbnRhdGlvbj8gUGVyaGFwcyBpdCYjMzk7cyB0aWVkIHRvIGEgc3BlY2lmaWMgcmVhZGVyIG1vZHVsZSBvciBhIGN1c3RvbSBORkMgcHJvdG9jb2w/IFRoZSBzcGVjaWZpY2l0eSBvZiAmIzM0O0RJR0lUQUwmIzM0OyBmZWVscyBsaWtlIGl0JiMzOTtzIHBvaW50aW5nIHRvd2FyZHMgYSBkaWdpdGFsIGVuY29kaW5nIG9yIGRhdGEgZm9ybWF0IGxheWVyLiBTbywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRyaXZlcnMgdGhhdCAqYWN0dWFsbHkqIGxldmVyYWdlIHRoaXMgZGlnaXRhbCBpbnRlcmZhY2UuIFRoYXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzLiBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmchCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19ORkNfRElHSVRBTHxuZmNfZGlnaXRhbCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTEwMCBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuYXJjaC9hcm0vY29uZmlncy9leHlub3NfZGVmY29uZmlnPTc3PUNPTkZJR19ORkM9eVxuYXJjaC9hcm0vY29uZmlncy9leHlub3NfZGVmY29uZmlnOjc4OkNPTkZJR19ORkNfRElHSVRBTD1tXG5hcmNoL2FybS9jb25maWdzL2V4eW5vc19kZWZjb25maWctNzktQ09ORklHX05GQ19OQ0k9eVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjdfZGVmY29uZmlnPTE2OD1DT05GSUdfTkZDPW1cbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjdfZGVmY29uZmlnOjE2OTpDT05GSUdfTkZDX0RJR0lUQUw9bVxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWctMTcwLUNPTkZJR19ORkNfTkNJPW1cbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xNS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE2OiNkZWZpbmUgTkZDU0lNX0VSUihkLCBmbXQsIGFyZ3MuLi4pIG5mY19lcnIoXHUwMDI2ZC1cdTAwM2VuZmNfZGlnaXRhbF9kZXYtXHUwMDNlbmZjX2Rldi1cdTAwM2VkZXYsIFxcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xNy1cdFx0XHRcdFx0ICAgIFwmIzM0OyVzOiBcJiMzNDsgZm10LCBfX2Z1bmNfXywgIyMgYXJncylcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE4LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTk6I2RlZmluZSBORkNTSU1fREJHKGQsIGZtdCwgYXJncy4uLikgZGV2X2RiZyhcdTAwMjZkLVx1MDAzZW5mY19kaWdpdGFsX2Rldi1cdTAwM2VuZmNfZGV2LVx1MDAzZWRldiwgXFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwLVx0XHRcdFx0XHQgICAgXCYjMzQ7JXM6IFwmIzM0OyBmbXQsIF9fZnVuY19fLCAjIyBhcmdzKVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jPTMxPXN0cnVjdCBuZmNzaW0ge1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzI6XHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpuZmNfZGlnaXRhbF9kZXY7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMy1cbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00NS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQ2Olx0bmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2I7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy00Ny1cdHZvaWQgKmFyZztcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYz0xODI9c3RhdGljIHZvaWQgbmZjc2ltX3JlY3Zfd3Eoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE5Ny1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE5ODpcdGRldi1cdTAwM2VjYihkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2LCBkZXYtXHUwMDNlYXJnLCBza2IpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTk5LX1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwMC1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjIwMTpzdGF0aWMgaW50IG5mY3NpbV9zZW5kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyMDI6XHRcdCAgICAgICB1MTYgdGltZW91dCwgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZylcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwMy17XG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyMDQ6XHRzdHJ1Y3QgbmZjc2ltICpkZXYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwNS1cdHU4IGRlbGF5O1xuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIzOS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI0MDpzdGF0aWMgdm9pZCBuZmNzaW1fYWJvcnRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNDEte1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjQyOlx0Y29uc3Qgc3RydWN0IG5mY3NpbSAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNDMtXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjQ2LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjQ3OnN0YXRpYyBpbnQgbmZjc2ltX3N3aXRjaF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBib29sIG9uKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjQ4LXtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI0OTpcdHN0cnVjdCBuZmNzaW0gKmRldiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjUwLVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI1NS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI1NjpzdGF0aWMgaW50IG5mY3NpbV9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI1Ny1cdFx0XHRcdFx0ICBpbnQgdHlwZSwgaW50IHBhcmFtKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjU4LXtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI1OTpcdHN0cnVjdCBuZmNzaW0gKmRldiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjYwLVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI3OC1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI3OTpzdGF0aWMgaW50IG5mY3NpbV9pbl9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjgwLVx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdGltZW91dCxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI4MTpcdFx0XHQgICAgICAgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZylcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI4Mi17XG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjg1LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mjg2OnN0YXRpYyBpbnQgbmZjc2ltX3RnX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjg3LVx0XHRcdFx0XHQgIGludCB0eXBlLCBpbnQgcGFyYW0pXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yODgte1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mjg5Olx0c3RydWN0IG5mY3NpbSAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yOTAtXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzA4LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzA5OnN0YXRpYyBpbnQgbmZjc2ltX3RnX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMTAtXHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzExOlx0XHRcdCAgICAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzEyLXtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMTUtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMTY6c3RhdGljIGludCBuZmNzaW1fdGdfbGlzdGVuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHUxNiB0aW1lb3V0LFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzE3Olx0XHRcdCAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzE4LXtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMjEtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMjI6c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfZGlnaXRhbF9vcHMgbmZjc2ltX2RpZ2l0YWxfb3BzID0ge1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzIzLVx0LmluX2NvbmZpZ3VyZV9odyA9IG5mY3NpbV9pbl9jb25maWd1cmVfaHcsXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM9MzQ2PXN0YXRpYyB2b2lkIG5mY3NpbV9kZWJ1Z2ZzX2luaXRfZGV2KHN0cnVjdCBuZmNzaW0gKmRldilcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNTctXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozNTg6XHRpZHggPSBkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2LVx1MDAzZW5mY19kZXYtXHUwMDNlaWR4O1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzU5LVx0biA9IHNucHJpbnRmKGRldm5hbWUsIHNpemVvZihkZXZuYW1lKSwgXCYjMzQ7bmZjJWRcJiMzNDssIGlkeCk7XG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM9MzcwPXN0YXRpYyBzdHJ1Y3QgbmZjc2ltICpuZmNzaW1fZGV2aWNlX25ldyhzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmtfaW4sXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzgyLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzgzOlx0ZGV2LVx1MDAzZW5mY19kaWdpdGFsX2RldiA9XG5kcml2ZXJzL25mYy9uZmNzaW0uYzozODQ6XHRcdFx0bmZjX2RpZ2l0YWxfYWxsb2NhdGVfZGV2aWNlKFx1MDAyNm5mY3NpbV9kaWdpdGFsX29wcyxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM4NS1cdFx0XHRcdFx0XHQgICAgTkZDX1BST1RPX05GQ19ERVBfTUFTSyxcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zODctXHRcdFx0XHRcdFx0ICAgIDAsIDApO1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mzg4Olx0aWYgKCFkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KSB7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zODktXHRcdGtmcmVlKGRldik7XG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzkyLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzkzOlx0bmZjX2RpZ2l0YWxfc2V0X2RydmRhdGEoZGV2LVx1MDAzZW5mY19kaWdpdGFsX2RldiwgZGV2KTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM5NC1cbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zOTctXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozOTg6XHRyYyA9IG5mY19kaWdpdGFsX3JlZ2lzdGVyX2RldmljZShkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM5OS1cdGlmIChyYykge1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDAwLVx0XHRwcl9lcnIoXCYjMzQ7Q291bGQgbm90IHJlZ2lzdGVyIGRpZ2l0YWwgZGV2aWNlICglZClcXG5cJiMzNDssIHJjKTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQwMTpcdFx0bmZjX2RpZ2l0YWxfZnJlZV9kZXZpY2UoZGV2LVx1MDAzZW5mY19kaWdpdGFsX2Rldik7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy00MDItXHRcdGtmcmVlKGRldik7XG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM9NDEyPXN0YXRpYyB2b2lkIG5mY3NpbV9kZXZpY2VfZnJlZShzdHJ1Y3QgbmZjc2ltICpkZXYpXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00MTMte1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDE0Olx0bmZjX2RpZ2l0YWxfdW5yZWdpc3Rlcl9kZXZpY2UoZGV2LVx1MDAzZW5mY19kaWdpdGFsX2Rldik7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy00MTUtXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDIyLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDIzOlx0bmZjX2RpZ2l0YWxfZnJlZV9kZXZpY2UoZGV2LVx1MDAzZW5mY19kaWdpdGFsX2Rldik7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy00MjQtXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTIyMT1pbl9wcm90b2NvbHNbXVtQT1JUMTAwX0lOX01BWF9OVU1fUFJPVE9DT0xTICYjNDM7IDFdID0ge1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yODgtXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QxVF0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mjg5Olx0XHQvKiBuZmNfZGlnaXRhbF9mcmFtaW5nX25mY2Ffc2hvcnQgKi9cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yOTAtXHRcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9DUkMsICAgICAgICAgIDIgfSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjk2LVx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UMlRdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI5NzpcdFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNhX3N0YW5kYXJkICovXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjk4LVx0XHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfQ1JDLCAgIDEgfSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzAyLVx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UNFRdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMwMzpcdFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNhX3N0YW5kYXJkX3dpdGhfY3JjX2EgKi9cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMDQtXHRcdHsgUE9SVDEwMF9JTl9QUk9UX0VORCwgICAgICAgMCB9LFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMDYtXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX05GQ19ERVBdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMwNzpcdFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNhX3N0YW5kYXJkICovXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzA4LVx0XHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsIDAgfSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzMyLVx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDRl9UM1RdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMzMzpcdFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNmICovXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzM0LVx0XHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsIDAgfSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzM2LVx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDRl9ORkNfREVQXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMzc6XHRcdC8qIG5mY19kaWdpdGFsX2ZyYW1pbmdfbmZjZiAqL1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTMzOC1cdFx0eyBQT1JUMTAwX0lOX1BST1RfSU5JVElBTF9HVUFSRF9USU1FLCAgICAgMTggfSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzg0LVx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQl9UNFRdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM4NTpcdFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNiICovXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzg2LVx0XHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsICAgICAgICAgICAgICAgICAgICAgMCB9LFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz00Mzk9c3RydWN0IHBvcnQxMDAge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQ0MDpcdHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKm5mY19kaWdpdGFsX2RldjtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00NDEtXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTQ5Nj1zdHJ1Y3QgcG9ydDEwMF9jYl9hcmcge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQ5NzpcdG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNvbXBsZXRlX2NiO1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQ5OC1cdHZvaWQgKmNvbXBsZXRlX2FyZztcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9OTMxPXN0YXRpYyB2b2lkIHBvcnQxMDBfc2VuZF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTk1NC1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo5NTU6c3RhdGljIHZvaWQgcG9ydDEwMF9hYm9ydF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy05NTYte1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjk1NzpcdHN0cnVjdCBwb3J0MTAwICpkZXYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy05NTgtXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTEwMjU9c3RhdGljIHUxNiBwb3J0MTAwX2dldF9maXJtd2FyZV92ZXJzaW9uKHN0cnVjdCBwb3J0MTAwICpkZXYpXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEwNDYtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTA0NzpzdGF0aWMgaW50IHBvcnQxMDBfc3dpdGNoX3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGJvb2wgb24pXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTA0OC17XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTA0OTpcdHN0cnVjdCBwb3J0MTAwICpkZXYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMDUwLVx0c3RydWN0IHNrX2J1ZmYgKnNrYiwgKnJlc3A7XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEwNzEtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTA3MjpzdGF0aWMgaW50IHBvcnQxMDBfaW5fc2V0X3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmKVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEwNzMte1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEwNzQ6XHRzdHJ1Y3QgcG9ydDEwMCAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTA3NS1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExMDAtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTEwMTpzdGF0aWMgaW50IHBvcnQxMDBfaW5fc2V0X2ZyYW1pbmcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHBhcmFtKVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExMDIte1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjExMDM6XHRzdHJ1Y3QgcG9ydDEwMCAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTEwNC1cdGNvbnN0IHN0cnVjdCBwb3J0MTAwX3Byb3RvY29sICpwcm90b2NvbHM7XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExNDItXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTE0MzpzdGF0aWMgaW50IHBvcnQxMDBfaW5fY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExNDQtXHRcdFx0XHQgICBpbnQgcGFyYW0pXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTExNTU9c3RhdGljIHZvaWQgcG9ydDEwMF9pbl9jb21tX3JmX2NvbXBsZXRlKHN0cnVjdCBwb3J0MTAwICpkZXYsIHZvaWQgKmFyZyxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTE1OC1cdGNvbnN0IHN0cnVjdCBwb3J0MTAwX2NiX2FyZyAqY2JfYXJnID0gYXJnO1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjExNTk6XHRuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiA9IGNiX2FyZy1cdTAwM2Vjb21wbGV0ZV9jYjtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMTYwLVx0dTMyIHN0YXR1cztcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIwMC1leGl0OlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEyMDE6XHRjYihkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2LCBjYl9hcmctXHUwMDNlY29tcGxldGVfYXJnLCByZXNwKTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjAyLVxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjA1LVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEyMDY6c3RhdGljIGludCBwb3J0MTAwX2luX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIwNy1cdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IF90aW1lb3V0LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEyMDg6XHRcdFx0ICAgICAgIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLCB2b2lkICphcmcpXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIwOS17XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTIxMDpcdHN0cnVjdCBwb3J0MTAwICpkZXYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjExLVx0c3RydWN0IHBvcnQxMDBfY2JfYXJnICpjYl9hcmc7XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMjgtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTIyOTpzdGF0aWMgaW50IHBvcnQxMDBfdGdfc2V0X3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmKVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMzAte1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEyMzE6XHRzdHJ1Y3QgcG9ydDEwMCAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIzMi1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyNTctXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTI1ODpzdGF0aWMgaW50IHBvcnQxMDBfdGdfc2V0X2ZyYW1pbmcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHBhcmFtKVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyNTkte1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEyNjA6XHRzdHJ1Y3QgcG9ydDEwMCAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTI2MS1cdGNvbnN0IHN0cnVjdCBwb3J0MTAwX3Byb3RvY29sICpwcm90b2NvbHM7XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyOTktXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTMwMDpzdGF0aWMgaW50IHBvcnQxMDBfdGdfY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzMDEtXHRcdFx0XHQgICBpbnQgcGFyYW0pXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTEzMzI9c3RhdGljIHZvaWQgcG9ydDEwMF90Z19jb21tX3JmX2NvbXBsZXRlKHN0cnVjdCBwb3J0MTAwICpkZXYsIHZvaWQgKmFyZyxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTMzNi1cdGNvbnN0IHN0cnVjdCBwb3J0MTAwX2NiX2FyZyAqY2JfYXJnID0gYXJnO1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEzMzc6XHRuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiA9IGNiX2FyZy1cdTAwM2Vjb21wbGV0ZV9jYjtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzM4LVx0c3RydWN0IHBvcnQxMDBfdGdfY29tbV9yZl9yZXMgKmhkcjtcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTM2Ni1leGl0OlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEzNjc6XHRjYihkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2LCBjYl9hcmctXHUwMDNlY29tcGxldGVfYXJnLCByZXNwKTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzY4LVxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzcxLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEzNzI6c3RhdGljIGludCBwb3J0MTAwX3RnX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTM3My1cdFx0XHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHRpbWVvdXQsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTM3NDpcdFx0XHQgICAgICAgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZylcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzc1LXtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMzc2Olx0c3RydWN0IHBvcnQxMDAgKmRldiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzNzctXHRzdHJ1Y3QgcG9ydDEwMF90Z19jb21tX3JmX2NtZCAqaGRyO1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzk5LVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE0MDA6c3RhdGljIGludCBwb3J0MTAwX2xpc3Rlbl9tZGFhKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTQwMS1cdFx0XHQgICAgICAgc3RydWN0IGRpZ2l0YWxfdGdfbWRhYV9wYXJhbXMgKnBhcmFtcyxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDAyLVx0XHRcdCAgICAgICB1MTYgdGltZW91dCxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNDAzOlx0XHRcdCAgICAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0MDQte1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE0MDU6XHRzdHJ1Y3QgcG9ydDEwMCAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTQwNi1cdHN0cnVjdCBwb3J0MTAwX3RnX2NvbW1fcmZfY21kICpoZHI7XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0NTUtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTQ1NjpzdGF0aWMgaW50IHBvcnQxMDBfbGlzdGVuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHUxNiB0aW1lb3V0LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE0NTc6XHRcdFx0ICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0NTgte1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE0NTk6XHRjb25zdCBzdHJ1Y3QgcG9ydDEwMCAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTQ2MC1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0NjgtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTQ2OTpzdGF0aWMgY29uc3Qgc3RydWN0IG5mY19kaWdpdGFsX29wcyBwb3J0MTAwX2RpZ2l0YWxfb3BzID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0NzAtXHQuaW5fY29uZmlndXJlX2h3ID0gcG9ydDEwMF9pbl9jb25maWd1cmVfaHcsXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTE0ODk9c3RhdGljIGludCBwb3J0MTAwX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UsXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE1NzEtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTU3MjpcdGRldi1cdTAwM2VuZmNfZGlnaXRhbF9kZXYgPSBuZmNfZGlnaXRhbF9hbGxvY2F0ZV9kZXZpY2UoXHUwMDI2cG9ydDEwMF9kaWdpdGFsX29wcyxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTczLVx0XHRcdFx0XHRcdFx0ICAgUE9SVDEwMF9QUk9UT0NPTFMsXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE1NzYtXHRcdFx0XHRcdFx0XHQgICBkZXYtXHUwMDNlc2tiX3RhaWxyb29tKTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNTc3Olx0aWYgKCFkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTU3OC1cdFx0bmZjX2VycihcdTAwMjZpbnRlcmZhY2UtXHUwMDNlZGV2LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE1Nzk6XHRcdFx0XCYjMzQ7Q291bGQgbm90IGFsbG9jYXRlIG5mY19kaWdpdGFsX2RldlxcblwmIzM0Oyk7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTU4MC1cdFx0cmMgPSAtRU5PTUVNO1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTgzLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE1ODQ6XHRuZmNfZGlnaXRhbF9zZXRfcGFyZW50X2RldihkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2LCBcdTAwMjZpbnRlcmZhY2UtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNTg1Olx0bmZjX2RpZ2l0YWxfc2V0X2RydmRhdGEoZGV2LVx1MDAzZW5mY19kaWdpdGFsX2RldiwgZGV2KTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTg2LVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE1ODc6XHRyYyA9IG5mY19kaWdpdGFsX3JlZ2lzdGVyX2RldmljZShkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTg4LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE1OTYtZnJlZV9uZmNfZGV2OlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE1OTc6XHRuZmNfZGlnaXRhbF9mcmVlX2RldmljZShkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTk4LVxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xNjA4PXN0YXRpYyB2b2lkIHBvcnQxMDBfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNjE0LVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE2MTU6XHRuZmNfZGlnaXRhbF91bnJlZ2lzdGVyX2RldmljZShkZXYtXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNjE2Olx0bmZjX2RpZ2l0YWxfZnJlZV9kZXZpY2UoZGV2LVx1MDAzZW5mY19kaWdpdGFsX2Rldik7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTYxNy1cbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTE4NT1zdHJ1Y3Qgc3Q5NV9kaWdpdGFsX2NtZF9jb21wbGV0ZV9hcmcge1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xODYtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiX3Jlc3A7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjE4NzpcdG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNvbXBsZXRlX2NiO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xODgtXHR2b2lkICpjYl91c3Jhcmc7XG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYz0yMTc9c3RydWN0IHN0OTVoZl9jb250ZXh0IHtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMjE4LVx0c3RydWN0IHN0OTVoZl9zcGlfY29udGV4dCBzcGljb250ZXh0O1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoyMTk6XHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2O1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0yMjAtXHRzdHJ1Y3QgbmZjX2RldiAqbmZjZGV2O1xuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9NTMxPXN0YXRpYyBpbnQgaXNvMTQ0NDNfY29uZmlnX2ZkdChzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0OTVjb250ZXh0LCBpbnQgd3R4bSlcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTUzNC1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnN0OTVjb250ZXh0LVx1MDAzZXNwaWNvbnRleHQuc3BpZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6NTM1Olx0c3RydWN0IG5mY19kaWdpdGFsX2RldiAqbmZjZGRldiA9IHN0OTVjb250ZXh0LVx1MDAzZWRkZXY7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTUzNi1cdHVuc2lnbmVkIGNoYXIgcHBfdHlwZWI7XG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYz02MDI9c3RhdGljIGludCBzdDk1aGZfaGFuZGxlX3d0eChzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0Y29udGV4dCxcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTYwOC1cdHN0cnVjdCBwYXJhbV9saXN0IG5ld19wYXJhbXNbMV07XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjYwOTpcdHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKm5mY2RkZXYgPSBzdGNvbnRleHQtXHUwMDNlZGRldjtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNjEwLVx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2c3Rjb250ZXh0LVx1MDAzZW5mY2Rldi1cdTAwM2VkZXY7XG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYz02OTM9c3RhdGljIGludCBzdDk1aGZfcmVzcG9uc2VfaGFuZGxlcihzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0Y29udGV4dCxcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTY5OS1cdHVuc2lnbmVkIGNoYXIgdmFsX21tO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo3MDA6XHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpuZmNkZGV2ID0gc3Rjb250ZXh0LVx1MDAzZWRkZXY7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTcwMS1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnN0Y29udGV4dC1cdTAwM2VuZmNkZXYtXHUwMDNlZGV2O1xuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9NzY2PXN0YXRpYyBpcnFyZXR1cm5fdCBzdDk1aGZfaXJxX3RocmVhZF9oYW5kbGVyKGludCBpcnEsIHZvaWQgICpzdDk1aGZjb250ZXh0KVxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtODY4LS8qIE5GQyBvcHMgZnVuY3Rpb25zIGRlZmluaXRpb24gKi9cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6ODY5OnN0YXRpYyBpbnQgc3Q5NWhmX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy04NzAtXHRcdFx0XHQgIGludCB0eXBlLFxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtODcyLXtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6ODczOlx0c3RydWN0IHN0OTVoZl9jb250ZXh0ICpzdGNvbnRleHQgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtODc0LVxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9OTAxPXN0YXRpYyBpbnQgcmZfb2ZmKHN0cnVjdCBzdDk1aGZfY29udGV4dCAqc3Rjb250ZXh0KVxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTE0LVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo5MTU6c3RhdGljIGludCBzdDk1aGZfaW5fc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTE2LVx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTkxNy1cdFx0XHQgICAgICB1MTYgdGltZW91dCxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6OTE4Olx0XHRcdCAgICAgIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05MTktXHRcdFx0ICAgICAgdm9pZCAqYXJnKVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05MjAte1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo5MjE6XHRzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0Y29udGV4dCA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05MjItXHRpbnQgcmM7XG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05ODgtLyogcDJwIHdpbGwgYmUgc3VwcG9ydGVkIGluIGEgbGF0ZXIgcmVsZWFzZSAhICovXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjk4OTpzdGF0aWMgaW50IHN0OTVoZl90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTkwLVx0XHRcdFx0ICBpbnQgdHlwZSxcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTk5NS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6OTk2OnN0YXRpYyBpbnQgc3Q5NWhmX3RnX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTk5Ny1cdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05OTgtXHRcdFx0ICAgICAgdTE2IHRpbWVvdXQsXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjk5OTpcdFx0XHQgICAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYixcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAwMC1cdFx0XHQgICAgICB2b2lkICphcmcpXG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMDA0LVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMDA1OnN0YXRpYyBpbnQgc3Q5NWhmX3RnX2xpc3RlbihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMDA2LVx0XHRcdCAgICB1MTYgdGltZW91dCxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MTAwNzpcdFx0XHQgICAgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMDgtXHRcdFx0ICAgIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMTItXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjEwMTM6c3RhdGljIGludCBzdDk1aGZfdGdfZ2V0X3JmX3RlY2goc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggKnJmX3RlY2gpXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMTQte1xuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAxNy1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MTAxODpzdGF0aWMgaW50IHN0OTVoZl9zd2l0Y2hfcmYoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgYm9vbCBvbilcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAxOS17XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMjAtXHR1OCByZl90ZWNoO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMDIxOlx0c3RydWN0IHN0OTVoZl9jb250ZXh0ICpzdGNvbnRleHQgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAyMi1cbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMzMtLyogVE9ETyBzdDk1aGZfYWJvcnRfY21kICovXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjEwMzQ6c3RhdGljIHZvaWQgc3Q5NWhmX2Fib3J0X2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMDM1LXtcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMzctXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjEwMzg6c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfZGlnaXRhbF9vcHMgc3Q5NWhmX25mY19kaWdpdGFsX29wcyA9IHtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAzOS1cdC5pbl9jb25maWd1cmVfaHcgPSBzdDk1aGZfaW5fY29uZmlndXJlX2h3LFxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM9MTA2Mz1zdGF0aWMgaW50IHN0OTVoZl9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqbmZjX3NwaV9kZXYpXG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMTU5LVx0LyogY3JlYXRlIE5GQyBkZXYgb2JqZWN0IGFuZCByZWdpc3RlciB3aXRoIE5GQyBTdWJzeXN0ZW0gKi9cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MTE2MDpcdHN0OTVjb250ZXh0LVx1MDAzZWRkZXYgPSBuZmNfZGlnaXRhbF9hbGxvY2F0ZV9kZXZpY2UoXHUwMDI2c3Q5NWhmX25mY19kaWdpdGFsX29wcyxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTE2MS1cdFx0XHRcdFx0XHRcdFNUOTVIRl9TVVBQT1JURURfUFJPVCxcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTExNzAtXHRzdDk1Y29udGV4dC1cdTAwM2VuZmNkZXYgPSBzdDk1Y29udGV4dC1cdTAwM2VkZGV2LVx1MDAzZW5mY19kZXY7XG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjExNzE6XHRuZmNfZGlnaXRhbF9zZXRfcGFyZW50X2RldihzdDk1Y29udGV4dC1cdTAwM2VkZGV2LCBcdTAwMjZuZmNfc3BpX2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMTcyLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMTczOlx0cmV0ID0gIG5mY19kaWdpdGFsX3JlZ2lzdGVyX2RldmljZShzdDk1Y29udGV4dC1cdTAwM2VkZGV2KTtcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTE3NC1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTExNzktXHQvKiBzdG9yZSBzdDk1Y29udGV4dCBpbiBuZmMgZGV2aWNlIG9iamVjdCAqL1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMTgwOlx0bmZjX2RpZ2l0YWxfc2V0X2RydmRhdGEoc3Q5NWNvbnRleHQtXHUwMDNlZGRldiwgc3Q5NWNvbnRleHQpO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMTgxLVxuLS1cbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTE4Ny1lcnJfZnJlZV9kaWdpdGFsX2RldmljZTpcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MTE4ODpcdG5mY19kaWdpdGFsX2ZyZWVfZGV2aWNlKHN0OTVjb250ZXh0LVx1MDAzZWRkZXYpO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMTg5LWVycl9kaXNhYmxlX3JlZ3VsYXRvcjpcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTExOTY9c3RhdGljIHZvaWQgc3Q5NWhmX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqbmZjX3NwaV9kZXYpXG4tLVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMjA3LVxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMjA4Olx0bmZjX2RpZ2l0YWxfdW5yZWdpc3Rlcl9kZXZpY2Uoc3Rjb250ZXh0LVx1MDAzZWRkZXYpO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMjA5Olx0bmZjX2RpZ2l0YWxfZnJlZV9kZXZpY2Uoc3Rjb250ZXh0LVx1MDAzZWRkZXYpO1xuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMjEwLVx0c3Rjb250ZXh0LVx1MDAzZW5mY2Rldl9mcmVlID0gdHJ1ZTtcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTQzMD1zdHJ1Y3QgdHJmNzk3MGEge1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDM1LVx0c3RydWN0IHJlZ3VsYXRvclx0XHQqdmRkaW9fcmVndWxhdG9yO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0MzY6XHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2XHRcdCpkZGV2O1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00MzctXHR1MzJcdFx0XHRcdHF1aXJrcztcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ0MS1cdHN0cnVjdCBza19idWZmXHRcdFx0KnJ4X3NrYjtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDQyOlx0bmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3RcdGNiO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy00NDMtXHR2b2lkXHRcdFx0XHQqY2JfYXJnO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTE0Nz1zdGF0aWMgaW50IHRyZjc5NzBhX3N3aXRjaF9yZl9vbihzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNzEtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExNzI6c3RhdGljIGludCB0cmY3OTcwYV9zd2l0Y2hfcmYoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgYm9vbCBvbilcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE3My17XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExNzQ6XHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMTc1LVx0aW50IHJldCA9IDA7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0xMzEyPXN0YXRpYyBpbnQgdHJmNzk3MGFfaW5fY29uZmlnX2ZyYW1pbmcoc3RydWN0IHRyZjc5NzBhICp0cmYsIGludCBmcmFtaW5nKVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM4Ni1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTM4NzpzdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgdHlwZSxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM4OC1cdFx0XHRcdCAgICBpbnQgcGFyYW0pXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzODkte1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxMzkwOlx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM5MS1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz0xNDM5PXN0YXRpYyBpbnQgdHJmNzk3MGFfcGVyX2NtZF9jb25maWcoc3RydWN0IHRyZjc5NzBhICp0cmYsXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTA3LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTA4OnN0YXRpYyBpbnQgdHJmNzk3MGFfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUwOS1cdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTEwOlx0XHRcdCAgICAgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZylcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUxMS17XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE1MTI6XHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTEzLVx0dTggcHJlZml4WzVdO1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTY3MD1zdGF0aWMgaW50IHRyZjc5NzBhX3RnX2NvbmZpZ19mcmFtaW5nKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgZnJhbWluZylcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3MjgtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE3Mjk6c3RhdGljIGludCB0cmY3OTcwYV90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3MzAtXHRcdFx0XHQgICAgaW50IHBhcmFtKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNzMxLXtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTczMjpcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3MzMtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTc2NC1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTc2NTpzdGF0aWMgaW50IF90cmY3OTcwYV90Z19saXN0ZW4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTE2IHRpbWVvdXQsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE3NjY6XHRcdFx0ICAgICAgIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLCB2b2lkICphcmcsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3NjctXHRcdFx0ICAgICAgIGJvb2wgbW9kZV9kZXRlY3QpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3Njgte1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNzY5Olx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTc3MC1cdGludCByZXQ7XG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODQzLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODQ0OnN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfbGlzdGVuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHUxNiB0aW1lb3V0LFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODQ1Olx0XHRcdCAgICAgIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLCB2b2lkICphcmcpXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4NDYte1xuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODQ3Olx0Y29uc3Qgc3RydWN0IHRyZjc5NzBhICp0cmYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTg0OC1cbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4NTQtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE4NTU6c3RhdGljIGludCB0cmY3OTcwYV90Z19saXN0ZW5fbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTg1NjpcdFx0XHRcdCB1MTYgdGltZW91dCwgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4NTctXHRcdFx0XHQgdm9pZCAqYXJnKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODU4LXtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTg1OTpcdGNvbnN0IHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4NjAtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTg3Ny1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTg3ODpzdGF0aWMgaW50IHRyZjc5NzBhX3RnX2dldF9yZl90ZWNoKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4ICpyZl90ZWNoKVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODc5LXtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTg4MDpcdGNvbnN0IHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4ODEtXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODg5LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODkwOnN0YXRpYyB2b2lkIHRyZjc5NzBhX2Fib3J0X2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODkxLXtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTg5MjpcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4OTMtXG4tLVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xOTE2LVxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxOTE3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZjX2RpZ2l0YWxfb3BzIHRyZjc5NzBhX25mY19vcHMgPSB7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE5MTgtXHQuaW5fY29uZmlndXJlX2h3XHQ9IHRyZjc5NzBhX2luX2NvbmZpZ3VyZV9odyxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTIwNDU9c3RhdGljIGludCB0cmY3OTcwYV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxuLS1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjE3My1cbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MjE3NDpcdHRyZi1cdTAwM2VkZGV2ID0gbmZjX2RpZ2l0YWxfYWxsb2NhdGVfZGV2aWNlKFx1MDAyNnRyZjc5NzBhX25mY19vcHMsXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTIxNzUtXHRcdFx0XHRcdFx0VFJGNzk3MEFfU1VQUE9SVEVEX1BST1RPQ09MUyxcbi0tXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTIxODQtXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjIxODU6XHRuZmNfZGlnaXRhbF9zZXRfcGFyZW50X2Rldih0cmYtXHUwMDNlZGRldiwgdHJmLVx1MDAzZWRldik7XG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjIxODY6XHRuZmNfZGlnaXRhbF9zZXRfZHJ2ZGF0YSh0cmYtXHUwMDNlZGRldiwgdHJmKTtcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMjE4Ny1cdHNwaV9zZXRfZHJ2ZGF0YShzcGksIHRyZik7XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MzcyCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiBORkMgRHJpdmVyIExhbmRzY2FwZSoqCgpPa2F5LCBoZXJlJiMzOTtzIHdoYXQmIzM5O3MgZ29pbmcgb24uIEkmIzM5O20gbG9va2luZyBhdCBgcG9ydDEwMC5jYCDigJMgYWgsIHJpZ2h0LCB0aGF0JiMzOTtzIGEgVVNCIGRyaXZlciwgc3BlY2lmaWNhbGx5IGxvY2F0ZWQgaW4gdGhlIGBkcml2ZXJzL25mY2AgZGlyZWN0b3J5LiBTZWVtcyBsaWtlIHRoZSBVU0IgTkZDIGRyaXZlci4gSW50ZXJlc3RpbmchIEFuZCB0aGVuIHRoZXJlJiMzOTtzIGBkcml2ZXJzL25mYy9uZmNzaW0uY2AsIHdoaWNoLCBiYXNlZCBvbiB0aGUgbmFtZSwgbXVzdCBiZSBhIHZpcnR1YWwgb3Igc2ltdWxhdGVkIE5GQyBkcml2ZXIuIFRoaXMgaXMgaGVscGZ1bCB0byBrbm93LiBJJiMzOTt2ZSBiZWVuIG1lYW5pbmcgdG8gZGl2ZSBkZWVwZXIgaW50byB0aGUgTkZDIGxhbmRzY2FwZSBpbiB0aGUga2VybmVsLgoKTm93LCBjb25zaWRlcmluZyB0aGUgY2FwYWJpbGl0aWVzIG9mIHN5emthbGxlciwgaXQgc3VwcG9ydHMgVVNCIGZ1enppbmcsIHNwZWNpZmljYWxseSB1dGlsaXppbmcgUmF3IEdhZGdldCBvciBVU0IgZW11bGF0aW9uLiBUaGlzIGlzIHBlcmZlY3QhIFRoYXQgbWVhbnMgaXQgY2FuIHBvdGVudGlhbGx5IGVtdWxhdGUgdGhlIGBwb3J0MTAwYCBVU0IgZGV2aWNlLCBvciBldmVuIHRoZSBgbmZjc2ltYCB2aXJ0dWFsIGRldmljZS4gSXQgY2FuIGFsc28gbGlrZWx5IGludGVyYWN0IHdpdGggTkZDIG5ldGxpbmsgLyBzb2NrZXRzIChgQUZfTkZDYCksIHdoaWNoIGlzIGFub3RoZXIgYXZlbnVlIHRvIGV4cGxvcmUuCgpSaWdodCwgdGltZSB0byBkaWcgZGVlcGVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVuY3Rpb24gY2FsbHMsIHNvIGxldCYjMzk7cyBzdGFydCBieSBjaGVja2luZyBob3cgYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYCBpcyBhY3R1YWxseSBpbnZva2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9kaWdpdGFsX2RlcC5jPTEwNj1zdGF0aWMgdm9pZCBkaWdpdGFsX2luX3JlY3ZfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3LVx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDg6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwOS1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTk3OD1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hY2soc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAxMi1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDEzOlx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHNrYiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAxNC1cdFx0XHRcdCBkYXRhX2V4Y2gpO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDI0PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUxLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNTI6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUzLVx0XHRcdFx0IE5VTEwpO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDYwPXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDY5LVx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIGRkZXYtXHUwMDNlc2F2ZWRfc2tiLCAxNTAwLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNzA6XHRcdFx0XHQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsIE5VTEwpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNzEtXHRpZiAocmMpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNzYtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA3NzpzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3OC1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTI5Nz1pbnQgZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMzMS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzMyOlx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHRtcF9za2IsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMzMtXHRcdFx0XHQgTlVMTCk7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEzNDg9c3RhdGljIHZvaWQgZGlnaXRhbF90Z19zZW5kX3BzbF9yZXNfY29tcGxldGUoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM1OS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzYwOlx0ZGlnaXRhbF90Z19saXN0ZW4oZGRldiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsIE5VTEwpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNjEtXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTE0Njc9c3RhdGljIHZvaWQgZGlnaXRhbF90Z19zZW5kX2F0cl9yZXNfY29tcGxldGUoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ4NS1cdGVsc2Vcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNDg2Olx0XHRkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0ODctfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTc5MwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDU4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERFUF9SRVEgRnJhbWUgSGFuZGxpbmcgaW4gRGlnaXRhbCBORkMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgZm9jdXMgaXMgb24gYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYCwgd2hpY2ggaGFuZGxlcyB0aGUgaW5jb21pbmcgREVQX1JFUSBmcmFtZXMgaW4gdGFyZ2V0IG1vZGUgd2l0aGluIGBkaWdpdGFsX2RlcC5jYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBzcGVjaWZpYyBjaGFuZ2UuIEZpcnN0LCBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb21taXQgaXRzZWxmIHRvIGdyYXNwIHRoZSBidWcgdGhhdCYjMzk7cyBiZWluZyBmaXhlZCBvciB0aGUgY2hhbmdlIGludHJvZHVjZWQuIEkgY291bGQgdXNlIGBnaXQgbG9nYCBpZiBuZWNlc3NhcnksIG9yIHNpbXBseSBleGFtaW5lIHRoZSBjb21taXQgbWVzc2FnZSBhbmQgdGhlIGRpZmYgZGlyZWN0bHkuCgpUaGUgcHJvdmlkZWQgZGlmZiBnaXZlcyBtZSB0aGUgbWVhdCBvZiB0aGUgY2hhbmdlLiBJdCBzZWVtcyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIERldmljZSBJRCAoRElEKSBoYW5kbGluZyB3aXRoaW4gdGhlIERFUF9SRVEgZnJhbWUuIEluaXRpYWxseSwgdGhlIGNvZGUgaGFkIGEgY29uZGl0aW9uYWwgY2hlY2sgZm9yIHRoZSBESUQgYml0IGJlaW5nIHNldCBpbiB0aGUgUHJvdG9jb2wgRm9ybWF0IEJ5dGUgKFBGQikuIElmIHRoZSBESUQgYml0IHdhcyBzZXQsIGFuZCB0aGUgYGRkZXYtJmd0O2RpZGAgd2FzIHZhbGlkLCBpdCBwZXJmb3JtZWQgYSBjaGVjayBvbiB0aGUgaW5jb21pbmcgZGF0YS4gVGhlIG9yaWdpbmFsIGNoZWNrIHdhcyBmbGF3ZWQuIFRoZSB1cGRhdGVkIHZlcnNpb24gbm93IGV4cGxpY2l0bHkgY2hlY2tzIHRoYXQgdGhlIHJlc3BvbnNlIGxlbmd0aCAoYHJlc3AtJmd0O2xlbmApIGlzIHN1ZmZpY2llbnQgdG8gaW5jbHVkZSB0aGUgRElEIGJ5dGUuIEl0IGFsc28gZW5zdXJlcyB0aGF0IHRoZSBgZGRldi0mZ3Q7ZGlkYCBpcyB2YWxpZCBhbmQgdGhhdCB0aGUgaW5jb21pbmcgRElEIG1hdGNoZXMgdGhlIGV4cGVjdGVkIHZhbHVlLCBlZmZlY3RpdmVseSBpbXByb3ZpbmcgdGhlIHJvYnVzdG5lc3Mgb2YgdGhlIERJRCB2YWxpZGF0aW9uLiBUaGlzIGFwcGVhcnMgdG8gYmUgYSBjcnVjaWFsIGZpeCBmb3IgZW5zdXJpbmcgY29ycmVjdCBESUQgcHJvY2Vzc2luZy4KCk5vdywgSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGdyYXNwIHRoZSBjb250ZXh0IG9mIHRoaXMgY2hhbmdlIHdpdGhpbiBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgLiBJIGNhbiBzZWUgdGhlIGNvZGUgc3RhcnRzIGJ5IGNoZWNraW5nIHRoZSBiYXNpYyBmcmFtZSBzdHJ1Y3R1cmUg4oCTIHNpemUsIGRpcmVjdGlvbiwgYW5kIGNvbW1hbmQuIFRoZW4sIGl0IHByb2NlZWRzIHRvIGV2YWx1YXRlIHRoZSBQRkIsIGFuZCB0aGUgRElEIGNoZWNrIGlzIGRvbmUgaWYgdGhlIGJpdCBpcyBzZXQgaW4gdGhlIFBGQi4gSXQgY2FsY3VsYXRlcyB0aGUgYHNpemVgIG9mIHRoZSBzdHJ1Y3R1cmUuIEkgc2hvdWxkIGNoZWNrIHdoYXQgYHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcylgIGFjdHVhbGx5IGlzLiBJJiMzOTtsbCBuZWVkIHRvIGZpbmQgdGhlIGRlZmluaXRpb24gb2YgdGhhdCBzdHJ1Y3R1cmUgdG8gZnVsbHkgdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGdvaW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9kaWdpdGFsX2RlcC5jPTk0PXN0cnVjdCBkaWdpdGFsX3BzbF9yZXMge1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05OS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDA6c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMge1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMS1cdHU4IGRpcjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MjAwPWRpZ2l0YWxfc2VuZF9kZXBfZGF0YV9wcmVwKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MjAxOlx0XHRcdCAgIHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxX3Jlcyxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0yMDItXHRcdFx0ICAgc3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2gpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTUyOT1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9hY2soc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTMxLXtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1MzI6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01MzMtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01MzktXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTQwOlx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NDEtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTQyOlx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU0My1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTY2PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX25hY2soc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTY4LXtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1Njk6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzAtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzYtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTc3Olx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzgtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTc5Olx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU4MC1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTk4PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MDAte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYwMTpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYwMi1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYwOC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MDk6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYxMC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MTE6XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjEyLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz02Mjk9c3RhdGljIGludCBkaWdpdGFsX2luX3NlbmRfcnRveChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MzEte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYzMjpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYzMy1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTY0Ni1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2NDc6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTY0OC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2NDk6XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjUwLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz02ODY9c3RhdGljIHZvaWQgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02ODktXHRzdHJ1Y3QgZGlnaXRhbF9kYXRhX2V4Y2ggKmRhdGFfZXhjaCA9IGFyZztcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2OTA6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3Jlcztcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02OTEtXHR1OCBwZmI7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTc1NS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo3NTY6XHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo3NTc6XHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopcmVzcC1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTc1OC1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTA0PWludCBkaWdpdGFsX2luX3NlbmRfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05MDcte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjkwODpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkwOS1cdHN0cnVjdCBza19idWZmICpjaGFpbmluZ19za2IsICp0bXBfc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05MTEtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTEyOlx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05MTMtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTE0Olx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxNS1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTc4PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2FjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODAte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk4MTpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk4Mi1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk4OC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5ODk6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk5MC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5OTE6XHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTkyLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDI0PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMjUte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMjY6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3Jlcztcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDI3LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAzMy1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDM0Olx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDM1LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMzY6XHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAzNy1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTA3Nz1zdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwODAtXHRpbnQgcmM7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA4MTpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwODItXHR1OCBwZmI7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExMDctXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTEwODpcdHNpemUgPSBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjExMDk6XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopcmVzcC1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExMTAtXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEyOTc9aW50IGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTI5OC17XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTI5OTpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMDAtXHRzdHJ1Y3Qgc2tfYnVmZiAqY2hhaW5pbmdfc2tiLCAqdG1wX3NrYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwMi1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzAzOlx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzA0LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzMDU6XHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMzNzgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgYGRpZ2l0YWxfZGVwX3JlcV9yZXNgIFN0cnVjdCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXNgIGRlZmluaXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRvIHF1aWNrbHkgYXNzZXNzIGl0cyBwdXJwb3NlLiBJJiMzOTttIGV4cGVjdGluZyB0aGlzIHRvIGxpa2VseSBlbmNhcHN1bGF0ZSB0aGUgZGF0YSBleGNoYW5nZWQgZHVyaW5nIGEgZGlnaXRhbCBkZXBvc2l0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIGN5Y2xlLCBtYXliZSBmb3IgZmluYW5jaWFsIHRyYW5zYWN0aW9ucywgQVBJIGNhbGxzLCBvciBzaW1pbGFyLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBrZXkgZmllbGRzIHRoYXQgcHJvdmlkZSBjbHVlcyBhYm91dCB0aGUgc3RydWN0dXJlLiBJJiMzOTtsbCBtZW50YWxseSBtYXAgb3V0LCBiYXNlZCBvbiBpbmR1c3RyeSBzdGFuZGFyZHMsIHdoYXQgZXNzZW50aWFsIGNvbXBvbmVudHMgYXJlIGxpa2VseSB0byBiZSBwcmVzZW50OiBpZGVudGlmaWVycywgdGltZXN0YW1wcywgcmVxdWVzdCBkYXRhLCByZXNwb25zZSBjb2RlcywgYW55IHRyYW5zYWN0aW9uIGRldGFpbHMsIHBvdGVudGlhbGx5IGVycm9yIG1lc3NhZ2VzIGlmIHRoZSByZXNwb25zZSByZXByZXNlbnRzIGZhaWx1cmUsIGFuZCBwZXJoYXBzIGV2ZW4gc2VjdXJpdHktcmVsYXRlZCBmaWVsZHMgbGlrZSBzaWduYXR1cmVzIG9yIGhhc2hlcy4gSSYjMzk7bGwgbmVlZCB0byByYXBpZGx5IGludGVycHJldCB0aGUgc3RydWN0dXJlIGFuZCBob3cgaXQgcmVsYXRlcyB0byBicm9hZGVyIHN5c3RlbXMgSSBhbSBmYW1pbGlhciB3aXRoLiBNeSBwcmltYXJ5IGNvbnNpZGVyYXRpb25zIHdpbGwgaW52b2x2ZSBwb3RlbnRpYWwgYXJlYXMgZm9yIG9wdGltaXphdGlvbiwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzLCBvciBwb3NzaWJsZSBpbmVmZmljaWVuY2llcy4gTXkgc2Vjb25kYXJ5IGNvbnNpZGVyYXRpb25zIHdpbGwgbG9vayBpbnRvIGRhdGEgdHlwZSB1c2FnZSwgcGFkZGluZywgYW5kIGFsaWdubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmZjL2RpZ2l0YWxfZGVwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5OCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDk4Olx0fSBfX3BhY2tlZDtcbiAgOTk6XHRcbiAxMDA6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyB7XG4gMTAxOlx0XHR1OCBkaXI7XG4gMTAyOlx0XHR1OCBjbWQ7XG4gMTAzOlx0XHR1OCBwZmI7XG4gMTA0Olx0fSBfX3BhY2tlZDtcbiAxMDU6XHRcbiAxMDY6XHRzdGF0aWMgdm9pZCBkaWdpdGFsX2luX3JlY3ZfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG4gMTA3Olx0XHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzc5OQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzYCBmb3IgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdGllcyoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzYC4gSSBzZWUgYGRpcmAgKDEgYnl0ZSksIGBjbWRgICgxIGJ5dGUpLCBhbmQgYHBmYmAgKDEgYnl0ZSkuIFRoYXQgc3VtcyB1cCB0byBhIHNpemUgb2YgMyBieXRlcywgZ290IGl0LiBOb3csIGxldCYjMzk7cyByZXdpbmQgYW5kIGxvb2sgYXQgdGhlIGNvZGUgKmJlZm9yZSogdGhpcyBjb21taXQsIHNwZWNpZmljYWxseSB0aGlzIGxpbmU6IGBpZiAoZGRldi0mZ3Q7ZGlkICZhbXA7JmFtcDsgKGRkZXYtJmd0O2RpZCA9PSByZXNwLSZndDtkYXRhWzNdKSlgLiBIbW0uLi4gdGhhdCBgcmVzcC0mZ3Q7ZGF0YVszXWAgaXMgbWFraW5nIG1lIHR3aXRjaC4gSWYgYHJlc3AtJmd0O2xlbmAgaGFwcGVucyB0byBiZSBleGFjdGx5IDMsIHdlJiMzOTtyZSBzdGFyaW5nIGF0IGFuIG91dC1vZi1ib3VuZHMgcmVhZCByaWdodCBpbiB0aGUgZmFjZS4gVGhhdCYjMzk7cyBhIGNsYXNzaWMgbWlzdGFrZSEKCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcsIEkgbmVlZCB0byBjaGVjayBob3cgYGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzYCBoYW5kbGVzIHRoaXMgdG9vLiBPa2F5LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgbGluZXMgNzUwLTc4MCwganVzdCB0byBjb25maXJtIHRoYXQgdGhpcyBpcyBub3QgYW4gaXNzdWUgdGhlcmUgYXMgd2VsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmZjL2RpZ2l0YWxfZGVwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3NTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDc1MDpcdFxuIDc1MTpcdFx0aWYgKHJlc3AtXHUwMDNlbGVuIFx1MDAzZSBkZGV2LVx1MDAzZWxvY2FsX3BheWxvYWRfbWF4KSB7XG4gNzUyOlx0XHRcdHJjID0gLUVNU0dTSVpFO1xuIDc1MzpcdFx0XHRnb3RvIGV4aXQ7XG4gNzU0Olx0XHR9XG4gNzU1Olx0XG4gNzU2Olx0XHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcbiA3NTc6XHRcdGRlcF9yZXMgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilyZXNwLVx1MDAzZWRhdGE7XG4gNzU4Olx0XG4gNzU5Olx0XHRpZiAocmVzcC1cdTAwM2VsZW4gXHUwMDNjIHNpemUgfHwgZGVwX3Jlcy1cdTAwM2VkaXIgIT0gRElHSVRBTF9ORkNfREVQX0ZSQU1FX0RJUl9JTiB8fFxuIDc2MDpcdFx0ICAgIGRlcF9yZXMtXHUwMDNlY21kICE9IERJR0lUQUxfQ01EX0RFUF9SRVMpIHtcbiA3NjE6XHRcdFx0cmMgPSAtRUlPO1xuIDc2MjpcdFx0XHRnb3RvIGVycm9yO1xuIDc2MzpcdFx0fVxuIDc2NDpcdFxuIDc2NTpcdFx0cGZiID0gZGVwX3Jlcy1cdTAwM2VwZmI7XG4gNzY2Olx0XG4gNzY3Olx0XHRpZiAoRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikpIHtcbiA3Njg6XHRcdFx0UFJPVE9DT0xfRVJSKFwmIzM0OzE0LjguMi4xXCYjMzQ7KTtcbiA3Njk6XHRcdFx0cmMgPSAtRUlPO1xuIDc3MDpcdFx0XHRnb3RvIGVycm9yO1xuIDc3MTpcdFx0fVxuIDc3MjpcdFxuIDc3MzpcdFx0aWYgKERJR0lUQUxfTkZDX0RFUF9OQURfQklUX1NFVChwZmIpKSB7XG4gNzc0Olx0XHRcdHJjID0gLUVJTztcbiA3NzU6XHRcdFx0Z290byBleGl0O1xuIDc3NjpcdFx0fVxuIDc3NzpcdFxuIDc3ODpcdFx0aWYgKHNpemUgXHUwMDNlIHJlc3AtXHUwMDNlbGVuKSB7XG4gNzc5Olx0XHRcdHJjID0gLUVJTztcbiA3ODA6XHRcdFx0Z290byBlcnJvcjtcbiA3ODE6XHRcdH1cbiA3ODI6XHRcbiA3ODM6XHRcdHNrYl9wdWxsKHJlc3AsIHNpemUpO1xuIDc4NDpcdFxuIDc4NTpcdFx0c3dpdGNoIChESUdJVEFMX05GQ19ERVBfUEZCX1RZUEUocGZiKSkge1xuIDc4NjpcdFx0Y2FzZSBESUdJVEFMX05GQ19ERVBfUEZCX0lfUERVOlxuIDc4NzpcdFx0XHRpZiAoRElHSVRBTF9ORkNfREVQX1BGQl9QTkkocGZiKSAhPSBkZGV2LVx1MDAzZWN1cnJfbmZjX2RlcF9wbmkpIHtcbiA3ODg6XHRcdFx0XHRQUk9UT0NPTF9FUlIoXCYjMzQ7MTQuMTIuMy4zXCYjMzQ7KTtcbiA3ODk6XHRcdFx0XHRyYyA9IC1FSU87XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0Nzk5CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNDQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBORkMgREVQIEZyYW1lIFByb2Nlc3NpbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgIGZ1bmN0aW9uIGluIGBuZXQvbmZjL2RpZ2l0YWxfZGVwLmNgLiBUaGlzIHNuaXBwZXQgaXMgaW50ZXJlc3Rpbmc7IGl0JiMzOTtzIHRoZSBjb3JlIG9mIGhvdyBEaWdpdGFsIFRhcmdldCBtb2RlIHJlcXVlc3RzIGFyZSBoYW5kbGVkLiBUaGUgY29kZSBjaGVja3MgYSBjb3VwbGUgb2Yga2V5IGNvbmRpdGlvbnMgYmFzZWQgb24gdGhlIFByb3RvY29sIEZyYW1lIEJpdCAoUEZCKToKCklmIHRoZSBEaWdpdGFsIElkZW50aWZpY2F0aW9uIChESUQpIGJpdCBpcyBzZXQgaW4gdGhlIFBGQiwgdGhlbiBpdCBtYWtlcyBjZXJ0YWluIGFzc2VydGlvbnMgYWJvdXQgdGhlIGluY29taW5nIHJlc3BvbnNlIGRhdGEuIFNwZWNpZmljYWxseSwgaXQgdmVyaWZpZXMgdGhhdCB0aGUgcmVzcG9uc2UgbGVuZ3RoIGlzIHN1ZmZpY2llbnQgdG8gaW5jbHVkZSB0aGUgRElELCB0aGUgZGV2aWNlIGhhcyBhIHZhbGlkIERJRCwgYW5kIHRoZSByZXNwb25zZSBESUQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgRElELiBBbiBgRUlPYCBlcnJvciBpcyByZXR1cm5lZCBhbmQgZXhlY3V0aW9uIGp1bXBzIHRvIHRoZSBgZXhpdGAgbGFiZWwgaWYgdGhlc2UgY2hlY2tzIGZhaWwuIElmIHRoZSBESUQgYml0IGlzIG5vdCBzZXQsIGJ1dCB0aGUgZGV2aWNlICpkb2VzKiBoYXZlIGEgRElEIGFzc2lnbmVkLCBpdCYjMzk7cyBhbHNvIGNvbnNpZGVyZWQgYW4gZXJyb3IsIGFuZCBgRUlPYCBpcyByZXR1cm5lZC4KCk5vdywgbGV0JiMzOTtzIGZpZ3VyZSBvdXQgKndoZXJlKiB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5IGdldHMgY2FsbGVkLiBUaW1lIHRvIHRyYWNlIHRoZSBjYWxsZXJzOiBMb29rcyBsaWtlIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgaXMgdXNlZCBpbiBtdWx0aXBsZSBzY2VuYXJpb3M6IEl0JiMzOTtzIHRoZSBjYWxsYmFjayBmb3Igc2VuZGluZyBhbiBBQ0sgKGBkaWdpdGFsX3RnX3NlbmRfYWNrYCksIHNlbmRpbmcgYW4gQVROIChgZGlnaXRhbF90Z19zZW5kX2F0bmApLCBzZW5kaW5nIGEgc2F2ZWQgU0tCIChgZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYmApLCBhbmQgc2VuZGluZyBhIERFUCByZXNwb25zZSAoYGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzYCkuIEludHJpZ3VpbmdseSwgaXQmIzM5O3MgYWxzbyBjYWxsZWQgdmlhIGBkaWdpdGFsX3RnX2xpc3RlbmAgaW4gYGRpZ2l0YWxfdGdfc2VuZF9wc2xfcmVzX2NvbXBsZXRlYCwgYW5kIGRpcmVjdGx5IGluIGBkaWdpdGFsX3RnX3NlbmRfYXRyX3Jlc19jb21wbGV0ZWAuCgpUbyBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29kZSBmbG93IGFuZCB1c2UgY2FzZXMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgdGFyZ2V0IG1vZGUgaXMgZW50ZXJlZCBvciBob3cgdGhlIE5GQyBkaWdpdGFsIGRldmljZSAoYGRkZXZgKSBpcyB1c2VkLiBJJiMzOTtsbCBzZWFyY2ggZm9yIG9jY3VycmVuY2VzIG9mIGBkaWdpdGFsX3RnX2Agd2l0aGluIHJlbGV2YW50IGZpbGVzLCBzcGVjaWZpY2FsbHkgYG5ldC9uZmMvZGlnaXRhbF8qLmNgIGFuZCBgbmV0L25mYy9kaWdpdGFsX2NvcmUuY2AsIHRvIGJ1aWxkIGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZSBmdW5jdGlvbiYjMzk7cyBicm9hZGVyIGNvbnRleHQgYW5kIGlkZW50aWZ5IHRoZSBwb3NzaWJsZSBlbnRyeSBwb2ludHMgZm9yIHRoZXNlIG9wZXJhdGlvbnMuIFRoaXMgd2lsbCBoZWxwIGRldGVybWluZSB0aGUgcG9zc2libGUgc3RhdGVzIHRoYXQgbmVlZCB0byBiZSBjb25zaWRlcmVkIHdoZW4gZGVidWdnaW5nIHRoaXMgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RpZ2l0YWxfdGdfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2RpZ2l0YWwuaD00OD1pbnQgZGlnaXRhbF9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCBjbWRfdHlwZSxcbm5ldC9uZmMvZGlnaXRhbC5oOjQ5Olx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBkaWdpdGFsX3RnX21kYWFfcGFyYW1zICpwYXJhbXMsXG5uZXQvbmZjL2RpZ2l0YWwuaC01MC1cdFx0ICAgICB1MTYgdGltZW91dCwgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY21kX2NiLFxuLS1cbm5ldC9uZmMvZGlnaXRhbC5oPTgzPWludCBkaWdpdGFsX2luX3NlbmRfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbC5oLTg2LVxubmV0L25mYy9kaWdpdGFsLmg6ODc6aW50IGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLCBpbnQgcGFyYW0pO1xubmV0L25mYy9kaWdpdGFsLmg6ODg6c3RhdGljIGlubGluZSBpbnQgZGlnaXRhbF90Z19zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxubmV0L25mYy9kaWdpdGFsLmgtODktXHRcdFx0c3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHRpbWVvdXQsXG4tLVxubmV0L25mYy9kaWdpdGFsLmgtOTUtXG5uZXQvbmZjL2RpZ2l0YWwuaDo5Njp2b2lkIGRpZ2l0YWxfdGdfcmVjdl9zZW5zX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWwuaC05Ny1cdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XG5uZXQvbmZjL2RpZ2l0YWwuaC05OC1cbm5ldC9uZmMvZGlnaXRhbC5oOjk5OnZvaWQgZGlnaXRhbF90Z19yZWN2X3NlbnNmX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWwuaC0xMDAtXHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcbm5ldC9uZmMvZGlnaXRhbC5oLTEwMS1cbm5ldC9uZmMvZGlnaXRhbC5oOjEwMjpzdGF0aWMgaW5saW5lIGludCBkaWdpdGFsX3RnX2xpc3RlbihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1MTYgdGltZW91dCxcbm5ldC9uZmMvZGlnaXRhbC5oLTEwMy1cdFx0XHRcdCAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxuLS1cbm5ldC9uZmMvZGlnaXRhbC5oLTEwOC1cbm5ldC9uZmMvZGlnaXRhbC5oOjEwOTp2b2lkIGRpZ2l0YWxfdGdfcmVjdl9hdHJfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbm5ldC9uZmMvZGlnaXRhbC5oLTExMC1cdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcbm5ldC9uZmMvZGlnaXRhbC5oLTExMS1cbm5ldC9uZmMvZGlnaXRhbC5oOjExMjppbnQgZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5uZXQvbmZjL2RpZ2l0YWwuaC0xMTMtXG5uZXQvbmZjL2RpZ2l0YWwuaDoxMTQ6aW50IGRpZ2l0YWxfdGdfbGlzdGVuX25mY2Eoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmZfdGVjaCk7XG5uZXQvbmZjL2RpZ2l0YWwuaDoxMTU6aW50IGRpZ2l0YWxfdGdfbGlzdGVuX25mY2Yoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmZfdGVjaCk7XG5uZXQvbmZjL2RpZ2l0YWwuaDoxMTY6dm9pZCBkaWdpdGFsX3RnX3JlY3ZfbWRfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbm5ldC9uZmMvZGlnaXRhbC5oLTExNy1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM9Mjc9c3RydWN0IGRpZ2l0YWxfY21kIHtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTM1LVx0c3RydWN0IHNrX2J1ZmYgKnJlc3A7XG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjM2Olx0c3RydWN0IGRpZ2l0YWxfdGdfbWRhYV9wYXJhbXMgKm1kYWFfcGFyYW1zO1xubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0zNy1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTE1Mj1zdGF0aWMgdm9pZCBkaWdpdGFsX3dxX2NtZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0xNTUtXHRzdHJ1Y3QgZGlnaXRhbF9jbWQgKmNtZDtcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6MTU2Olx0c3RydWN0IGRpZ2l0YWxfdGdfbWRhYV9wYXJhbXMgKnBhcmFtcztcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMTU3LVx0c3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiA9IGNvbnRhaW5lcl9vZih3b3JrLFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM9MjI3PWludCBkaWdpdGFsX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IGNtZF90eXBlLFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzoyMjg6XHRcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGRpZ2l0YWxfdGdfbWRhYV9wYXJhbXMgKnBhcmFtcyxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjI5LVx0XHQgICAgIHUxNiB0aW1lb3V0LCBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjbWRfY2IsXG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYz0yNTU9aW50IGRpZ2l0YWxfaW5fY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLCBpbnQgcGFyYW0pXG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0yNjUtXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjI2NjppbnQgZGlnaXRhbF90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsIGludCBwYXJhbSlcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjY3LXtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTI3Ni1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6Mjc3OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19saXN0ZW5fbWRhYShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZl90ZWNoKVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0yNzgte1xubmV0L25mYy9kaWdpdGFsX2NvcmUuYzoyNzk6XHRzdHJ1Y3QgZGlnaXRhbF90Z19tZGFhX3BhcmFtcyAqcGFyYW1zO1xubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0yODAtXHRpbnQgcmM7XG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0yOTUtXHRyYyA9IGRpZ2l0YWxfc2VuZF9jbWQoZGRldiwgRElHSVRBTF9DTURfVEdfTElTVEVOX01EQUEsIE5VTEwsIHBhcmFtcyxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6Mjk2Olx0XHRcdCAgICAgIDUwMCwgZGlnaXRhbF90Z19yZWN2X2F0cl9yZXEsIE5VTEwpO1xubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0yOTctXHRpZiAocmMpXG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0zMDItXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjMwMzpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfbGlzdGVuX21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmX3RlY2gpXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTMwNC17XG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTMwNS1cdHJldHVybiBkaWdpdGFsX3NlbmRfY21kKGRkZXYsIERJR0lUQUxfQ01EX1RHX0xJU1RFTl9NRCwgTlVMTCwgTlVMTCwgNTAwLFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzozMDY6XHRcdFx0XHRkaWdpdGFsX3RnX3JlY3ZfbWRfcmVxLCBOVUxMKTtcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMzA3LX1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTQ3Nj1zdGF0aWMgaW50IGRpZ2l0YWxfc3RhcnRfcG9sbChzdHJ1Y3QgbmZjX2RldiAqbmZjX2RldiwgX191MzIgaW1fcHJvdG9jb2xzLFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTI4LVx0XHRcdGRpZ2l0YWxfYWRkX3BvbGxfdGVjaChkZGV2LCAwLFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo1Mjk6XHRcdFx0XHRcdCAgICAgIGRpZ2l0YWxfdGdfbGlzdGVuX21kYWEpO1xubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01MzAtXHRcdH0gZWxzZSBpZiAoZGRldi1cdTAwM2VvcHMtXHUwMDNldGdfbGlzdGVuX21kKSB7XG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTUzMS1cdFx0XHRkaWdpdGFsX2FkZF9wb2xsX3RlY2goZGRldiwgMCxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6NTMyOlx0XHRcdFx0XHQgICAgICBkaWdpdGFsX3RnX2xpc3Rlbl9tZCk7XG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTUzMy1cdFx0fSBlbHNlIHtcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTM0LVx0XHRcdGRpZ2l0YWxfYWRkX3BvbGxfdGVjaChkZGV2LCBORkNfRElHSVRBTF9SRl9URUNIXzEwNkEsXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjUzNTpcdFx0XHRcdFx0ICAgICAgZGlnaXRhbF90Z19saXN0ZW5fbmZjYSk7XG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTUzNi1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTM3LVx0XHRcdGRpZ2l0YWxfYWRkX3BvbGxfdGVjaChkZGV2LCBORkNfRElHSVRBTF9SRl9URUNIXzIxMkYsXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjUzODpcdFx0XHRcdFx0ICAgICAgZGlnaXRhbF90Z19saXN0ZW5fbmZjZik7XG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTUzOS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTQwLVx0XHRcdGRpZ2l0YWxfYWRkX3BvbGxfdGVjaChkZGV2LCBORkNfRElHSVRBTF9SRl9URUNIXzQyNEYsXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjU0MTpcdFx0XHRcdFx0ICAgICAgZGlnaXRhbF90Z19saXN0ZW5fbmZjZik7XG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTU0Mi1cdFx0fVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM9NjQxPXN0YXRpYyB2b2lkIGRpZ2l0YWxfZGVhY3RpdmF0ZV90YXJnZXQoc3RydWN0IG5mY19kZXYgKm5mY19kZXYsXG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy02NTUtXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjY1NjpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZChzdHJ1Y3QgbmZjX2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy02NTcte1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNjU5LVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo2NjA6XHRyZXR1cm4gZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoZGRldiwgc2tiKTtcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNjYxLX1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTc0ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5mY19vcHMgZGlnaXRhbF9uZmNfb3BzID0ge1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNzUyLVx0LmRlYWN0aXZhdGVfdGFyZ2V0ID0gZGlnaXRhbF9kZWFjdGl2YXRlX3RhcmdldCxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6NzUzOlx0LnRtX3NlbmQgPSBkaWdpdGFsX3RnX3NlbmQsXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTc1NC1cdC5pbV90cmFuc2NlaXZlID0gZGlnaXRhbF9pbl9zZW5kLFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDY9c3RhdGljIHZvaWQgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNy1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA4OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDktXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz05MDQ9aW50IGRpZ2l0YWxfaW5fc2VuZF9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk1MC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5NTE6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19zZXRfcmZfdGVjaChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZl90ZWNoKVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk1Mi17XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk3Ny1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5Nzg6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTc5LVx0XHRcdCAgICAgICBzdHJ1Y3QgZGlnaXRhbF9kYXRhX2V4Y2ggKmRhdGFfZXhjaClcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAxMi1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDEzOlx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHNrYiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAxNC1cdFx0XHRcdCBkYXRhX2V4Y2gpO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDIzLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMjQ6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYXRuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAyNS17XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNTEtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA1MjpcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNTMtXHRcdFx0XHQgTlVMTCk7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNTktXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA2MDpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9zYXZlZF9za2Ioc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDYxLXtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA2OC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDY5Olx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIGRkZXYtXHUwMDNlc2F2ZWRfc2tiLCAxNTAwLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNzA6XHRcdFx0XHQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsIE5VTEwpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNzEtXHRpZiAocmMpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNzYtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA3NzpzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3OC1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTE1Ni1cdFx0XHQgKiB3aGljaCBpcyB0aGUgcHJldmlvdXMgREVQX1JFUyBzYXZlZCBpblxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjExNTc6XHRcdFx0ICogZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoKS5cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTU4LVx0XHRcdCAqL1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTYwLVx0XHRcdCAgRElHSVRBTF9ORkNfREVQX1BGQl9QTkkoZGRldi1cdTAwM2VjdXJyX25mY19kZXBfcG5pIC0gMSkpIHtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMTYxOlx0XHRcdFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfc2F2ZWRfc2tiKGRkZXYpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExNjItXHRcdFx0XHRpZiAocmMpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExODQtXHRcdHJlc3AgPSBkaWdpdGFsX3JlY3ZfZGVwX2RhdGFfZ2F0aGVyKGRkZXYsIHBmYiwgcmVzcCxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMTg1Olx0XHRcdFx0XHRcdCAgICBkaWdpdGFsX3RnX3NlbmRfYWNrLCBOVUxMKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTg2LVx0XHRpZiAoSVNfRVJSKHJlc3ApKSB7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyMTAtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTIxMTpcdFx0XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9zYXZlZF9za2IoZGRldik7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTIxMi1cdFx0XHRpZiAocmMpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyMzAtXHRcdFx0XHRcdFx0ZGRldi1cdTAwM2VjdXJyX25mY19kZXBfcG5pKSB7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTIzMTpcdFx0XHRcdHJjID0gZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYihkZGV2KTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjMyLVx0XHRcdFx0aWYgKHJjKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjU0LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEyNTU6XHRcdHJjID0gZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoZGRldiwgZGRldi1cdTAwM2VjaGFpbmluZ19za2IpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyNTYtXHRcdGlmIChyYylcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTI2NS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMjY2Olx0XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9hdG4oZGRldik7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTI2Ny1cdFx0aWYgKHJjKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjk2LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEyOTc6aW50IGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTI5OC17XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMzEtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTMzMjpcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCB0bXBfc2tiLCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzMzLVx0XHRcdFx0IE5VTEwpO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzQ3LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzNDg6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19zZW5kX3BzbF9yZXNfY29tcGxldGUoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzQ5LVx0XHRcdFx0XHQgICAgIHZvaWQgKmFyZywgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNTUtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTM1NjpcdGRpZ2l0YWxfdGdfc2V0X3JmX3RlY2goZGRldiwgcmZfdGVjaCk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM1Ny1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzU4Olx0ZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0gsIHJmX3RlY2gpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNTktXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTM2MDpcdGRpZ2l0YWxfdGdfbGlzdGVuKGRkZXYsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLCBOVUxMKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzYxLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzY0LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzNjU6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfcHNsX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCBkaWQsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM2Ni1cdFx0XHRcdCAgIHU4IHJmX3RlY2gpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzODktXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTM5MDpcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDAsIGRpZ2l0YWxfdGdfc2VuZF9wc2xfcmVzX2NvbXBsZXRlLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzOTEtXHRcdFx0XHQgKHZvaWQgKikodW5zaWduZWQgbG9uZylyZl90ZWNoKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM5Ny1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzk4OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9wc2xfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzk5LVx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDYwLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjE0NjE6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9wc2xfcmVzKGRkZXYsIHBzbF9yZXEtXHUwMDNlZGlkLCByZl90ZWNoKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDYyLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDY2LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjE0Njc6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19zZW5kX2F0cl9yZXNfY29tcGxldGUoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDY4LVx0XHRcdFx0XHQgICAgIHZvaWQgKmFyZywgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0ODMtXHRpZiAocmVzcC1cdTAwM2VkYXRhW29mZnNldF0gPT0gRElHSVRBTF9DTURfUFNMX1JFUSlcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNDg0Olx0XHRkaWdpdGFsX3RnX3JlY3ZfcHNsX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0ODUtXHRlbHNlXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTQ4NjpcdFx0ZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoZGRldiwgYXJnLCByZXNwKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg3LX1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg4LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjE0ODk6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYXRyX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0OTAtXHRcdFx0XHQgICBzdHJ1Y3QgZGlnaXRhbF9hdHJfcmVxICphdHJfcmVxKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNTMyLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjE1MzM6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9jbWQoZGRldiwgc2tiLCA5OTksXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTUzNDpcdFx0XHRcdCBkaWdpdGFsX3RnX3NlbmRfYXRyX3Jlc19jb21wbGV0ZSwgTlVMTCk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTUzNS1cdGlmIChyYylcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTU0MC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNTQxOnZvaWQgZGlnaXRhbF90Z19yZWN2X2F0cl9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE1NDItXHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTU2MS1cdFx0bWluX3NpemUgPSBESUdJVEFMX0FUUl9SRVFfTUlOX1NJWkUgJiM0MzsgMjtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNTYyOlx0XHRkaWdpdGFsX3RnX3NldF9yZl90ZWNoKGRkZXYsIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QSk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTU2My1cdH0gZWxzZSB7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTU2NC1cdFx0bWluX3NpemUgPSBESUdJVEFMX0FUUl9SRVFfTUlOX1NJWkUgJiM0MzsgMTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNTY1Olx0XHRkaWdpdGFsX3RnX3NldF9yZl90ZWNoKGRkZXYsIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMjEyRik7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTU2Ni1cdH1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTYwNS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNjA2Olx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORyxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNjA3LVx0XHRcdFx0ICAgICBORkNfRElHSVRBTF9GUkFNSU5HX05GQ19ERVBfQUNUSVZBVEVEKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTYxMC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNjExOlx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfYXRyX3JlcyhkZGV2LCBhdHJfcmVxKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNjEyLVx0aWYgKHJjKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM9ODk1PWludCBkaWdpdGFsX2luX3NlbmRfaXNvMTU2OTNfaW52X3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZl90ZWNoKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTM0LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzo5MzU6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfc2VsX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05MzYte1xuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTQ4LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzo5NDk6XHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KGRkZXYsIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HLFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05NTAtXHRcdFx0XHQgICAgIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9BTlRJQ09MX0NPTVBMRVRFKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTk1NS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6OTU2Olx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHNrYiwgMzAwLCBkaWdpdGFsX3RnX3JlY3ZfYXRyX3JlcSxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTU3LVx0XHRcdFx0IE5VTEwpO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTYzLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzo5NjQ6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X3NlbF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05NjUtXHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05ODQtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjk4NTpcdHJjID0gZGlnaXRhbF90Z19zZW5kX3NlbF9yZXMoZGRldik7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTk4Ni1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTk5My1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6OTk0OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX3NkZF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTk1LXtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwMTMtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEwMTQ6XHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KGRkZXYsIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HLFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDE1LVx0XHRcdFx0TkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NUQU5EQVJEX1dJVEhfQ1JDX0EpO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTAyMC1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTAyMTpcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDMwMCwgZGlnaXRhbF90Z19yZWN2X3NlbF9yZXEsXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwMjItXHRcdFx0XHQgTlVMTCk7XG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDI4LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMDI5OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9zZGRfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTAzMC1cdFx0XHRcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwNDgtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEwNDk6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9zZGRfcmVzKGRkZXYpO1xubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDUwLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA1Ny1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTA1ODpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9zZW5zX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDU5LXtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwNzItXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEwNzM6XHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KGRkZXYsIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HLFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDc0LVx0XHRcdFx0ICAgICBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkQpO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA3OS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTA4MDpcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDMwMCwgZGlnaXRhbF90Z19yZWN2X3NkZF9yZXEsXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwODEtXHRcdFx0XHQgTlVMTCk7XG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDg3LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMDg4OnZvaWQgZGlnaXRhbF90Z19yZWN2X3NlbnNfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA4OS1cdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExMDctXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjExMDg6XHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9zZW5zX3JlcyhkZGV2KTtcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTEwOS1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExMTYtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjExMTc6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2F0cl9vcl9zZW5zZl9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTExOC1cdFx0dm9pZCAqYXJnLCBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExMjEtXHRcdFx0KHJlc3AtXHUwMDNlZGF0YVsxXSA9PSBESUdJVEFMX0NNRF9TRU5TRl9SRVEpKVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMTIyOlx0XHRkaWdpdGFsX3RnX3JlY3Zfc2Vuc2ZfcmVxKGRkZXYsIGFyZywgcmVzcCk7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExMjMtXHRlbHNlXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjExMjQ6XHRcdGRpZ2l0YWxfdGdfcmVjdl9hdHJfcmVxKGRkZXYsIGFyZywgcmVzcCk7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExMjUtXG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTI4LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMTI5OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX3NlbnNmX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTMwLVx0XHRcdCAgICAgIHN0cnVjdCBkaWdpdGFsX3NlbnNmX3JlcSAqc2Vuc2ZfcmVxKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTE3Mi1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTE3MzpcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDMwMCxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTE3NDpcdFx0XHRcdCBkaWdpdGFsX3RnX3JlY3ZfYXRyX29yX3NlbnNmX3JlcSwgTlVMTCk7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExNzUtXHRpZiAocmMpXG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTgwLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMTgxOnZvaWQgZGlnaXRhbF90Z19yZWN2X3NlbnNmX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExODItXHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpyZXNwKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIxMy1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTIxNDpcdHJjID0gZGlnaXRhbF90Z19zZW5kX3NlbnNmX3JlcyhkZGV2LCBzZW5zZl9yZXEpO1xubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjE1LVxuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIyMi1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTIyMzpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfY29uZmlnX25mY2Eoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIyNC17XG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjI2LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjI3Olx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfUkZfVEVDSCxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIyOC1cdFx0XHRcdCAgICAgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBKTtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMzEtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyMzI6XHRyZXR1cm4gZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkcsXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMzMtXHRcdFx0XHQgICAgICAgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX05GQ19ERVApO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIzNS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTIzNjppbnQgZGlnaXRhbF90Z19saXN0ZW5fbmZjYShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZl90ZWNoKVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjM3LXtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMzktXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyNDA6XHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlnX25mY2EoZGRldik7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNDEtXHRpZiAocmMpXG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjQzLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjQ0Olx0cmV0dXJuIGRpZ2l0YWxfdGdfbGlzdGVuKGRkZXYsIDMwMCwgZGlnaXRhbF90Z19yZWN2X3NlbnNfcmVxLCBOVUxMKTtcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI0NS19XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNDYtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyNDc6c3RhdGljIGludCBkaWdpdGFsX3RnX2NvbmZpZ19uZmNmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmX3RlY2gpXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNDgte1xuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI1MC1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI1MTpcdHJjID0gZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0gsIHJmX3RlY2gpO1xubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjUyLVx0aWYgKHJjKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI1NC1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI1NTpcdHJldHVybiBkaWdpdGFsX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORyxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI1Ni1cdFx0XHRcdCAgICAgICBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0ZfTkZDX0RFUCk7XG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjU4LVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjU5OmludCBkaWdpdGFsX3RnX2xpc3Rlbl9uZmNmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmX3RlY2gpXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNjAte1xuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI2Mi1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI2MzpcdHJjID0gZGlnaXRhbF90Z19jb25maWdfbmZjZihkZGV2LCByZl90ZWNoKTtcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI2NC1cdGlmIChyYylcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNjYtXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyNjc6XHRyZXR1cm4gZGlnaXRhbF90Z19saXN0ZW4oZGRldiwgMzAwLCBkaWdpdGFsX3RnX3JlY3Zfc2Vuc2ZfcmVxLCBOVUxMKTtcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI2OC19XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNjktXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyNzA6dm9pZCBkaWdpdGFsX3RnX3JlY3ZfbWRfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI3MS1cdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXG4tLVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjg2LVx0Y2FzZSBORkNfRElHSVRBTF9SRl9URUNIXzEwNkE6XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyODc6XHRcdHJjID0gZGlnaXRhbF90Z19jb25maWdfbmZjYShkZGV2KTtcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI4OC1cdFx0aWYgKHJjKVxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjg5LVx0XHRcdGdvdG8gZXhpdF9mcmVlX3NrYjtcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI5MDpcdFx0ZGlnaXRhbF90Z19yZWN2X3NlbnNfcmVxKGRkZXYsIGFyZywgcmVzcCk7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyOTEtXHRcdGJyZWFrO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI5My1cdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF80MjRGOlxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjk0Olx0XHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlnX25mY2YoZGRldiwgcmZfdGVjaCk7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyOTUtXHRcdGlmIChyYylcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI5Ni1cdFx0XHRnb3RvIGV4aXRfZnJlZV9za2I7XG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyOTc6XHRcdGRpZ2l0YWxfdGdfcmVjdl9zZW5zZl9yZXEoZGRldiwgYXJnLCByZXNwKTtcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI5OC1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0Njg4CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJhY2luZyB0aGUgRGlnaXRhbCBORkMgU2VuZCBGdW5jdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGBkaWdpdGFsX3RnX3NlbmRgIGlzLCBhcyBJIHN1c3BlY3RlZCwgaW1wbGVtZW50ZWQgYXMgYGRldi0mZ3Q7b3BzLSZndDt0bV9zZW5kYCB3aXRoaW4gdGhlIGBkaWdpdGFsX25mY19vcHNgIHN0cnVjdHVyZS4gVGhhdCYjMzk7cyBnb29kLCB0aGF0IGNvbmZpcm1zIHRoZSBjb3JlIHJlbGF0aW9uc2hpcC4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHF1ZXN0aW9uOiAqd2hlcmUqIGlzIHRoaXMgYHRtX3NlbmRgIGZ1bmN0aW9uIGFjdHVhbGx5IGJlaW5nIGNhbGxlZCBmcm9tPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gVGltZSB0byBkaXZlIGludG8gdGhlIGBuZXQvbmZjYCBkaXJlY3RvcnkgYW5kIHNwZWNpZmljYWxseSBleGFtaW5lIHRoZSBgdG1fc2VuZGAgZnVuY3Rpb24mIzM5O3MgdXNhZ2UuIFRoYXQmIzM5O3Mgd2hlcmUgSSBzaG91bGQgZmluZCB0aGUgYW5zd2VyIHRvIG15IHF1ZXN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0bV9zZW5kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2NvcmUuYz00ODg9aW50IG5mY19kYXRhX2V4Y2hhbmdlKHN0cnVjdCBuZmNfZGV2ICpkZXYsIHUzMiB0YXJnZXRfaWR4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZmMvY29yZS5jLTUxOS1cdFx0XHRcdCAgbXNlY3NfdG9famlmZmllcyhORkNfQ0hFQ0tfUFJFU19GUkVRX01TKSk7XG5uZXQvbmZjL2NvcmUuYzo1MjA6XHR9IGVsc2UgaWYgKGRldi1cdTAwM2VyZl9tb2RlID09IE5GQ19SRl9UQVJHRVQgXHUwMDI2XHUwMDI2IGRldi1cdTAwM2VvcHMtXHUwMDNldG1fc2VuZCAhPSBOVUxMKSB7XG5uZXQvbmZjL2NvcmUuYzo1MjE6XHRcdHJjID0gZGV2LVx1MDAzZW9wcy1cdTAwM2V0bV9zZW5kKGRldiwgc2tiKTtcbm5ldC9uZmMvY29yZS5jLTUyMi1cdH0gZWxzZSB7XG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYz03NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfb3BzIGRpZ2l0YWxfbmZjX29wcyA9IHtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTc1Mi1cdC5kZWFjdGl2YXRlX3RhcmdldCA9IGRpZ2l0YWxfZGVhY3RpdmF0ZV90YXJnZXQsXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjc1MzpcdC50bV9zZW5kID0gZGlnaXRhbF90Z19zZW5kLFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy03NTQtXHQuaW1fdHJhbnNjZWl2ZSA9IGRpZ2l0YWxfaW5fc2VuZCxcbi0tXG5uZXQvbmZjL2hjaS9jb3JlLmM9NzIyPXN0YXRpYyBpbnQgaGNpX3RyYW5zY2VpdmUoc3RydWN0IG5mY19kZXYgKm5mY19kZXYsIHN0cnVjdCBuZmNfdGFyZ2V0ICp0YXJnZXQsXG4tLVxubmV0L25mYy9oY2kvY29yZS5jLTc2Ny1cbm5ldC9uZmMvaGNpL2NvcmUuYzo3Njg6c3RhdGljIGludCBoY2lfdG1fc2VuZChzdHJ1Y3QgbmZjX2RldiAqbmZjX2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9uZmMvaGNpL2NvcmUuYy03Njkte1xuLS1cbm5ldC9uZmMvaGNpL2NvcmUuYy03NzEtXG5uZXQvbmZjL2hjaS9jb3JlLmM6NzcyOlx0aWYgKCFoZGV2LVx1MDAzZW9wcy1cdTAwM2V0bV9zZW5kKSB7XG5uZXQvbmZjL2hjaS9jb3JlLmMtNzczLVx0XHRrZnJlZV9za2Ioc2tiKTtcbi0tXG5uZXQvbmZjL2hjaS9jb3JlLmMtNzc2LVxubmV0L25mYy9oY2kvY29yZS5jOjc3NzpcdHJldHVybiBoZGV2LVx1MDAzZW9wcy1cdTAwM2V0bV9zZW5kKGhkZXYsIHNrYik7XG5uZXQvbmZjL2hjaS9jb3JlLmMtNzc4LX1cbi0tXG5uZXQvbmZjL2hjaS9jb3JlLmM9OTQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZjX29wcyBoY2lfbmZjX29wcyA9IHtcbi0tXG5uZXQvbmZjL2hjaS9jb3JlLmMtOTUwLVx0LmltX3RyYW5zY2VpdmUgPSBoY2lfdHJhbnNjZWl2ZSxcbm5ldC9uZmMvaGNpL2NvcmUuYzo5NTE6XHQudG1fc2VuZCA9IGhjaV90bV9zZW5kLFxubmV0L25mYy9oY2kvY29yZS5jLTk1Mi1cdC5jaGVja19wcmVzZW5jZSA9IGhjaV9jaGVja19wcmVzZW5jZSxcbi0tXG5uZXQvbmZjL25jaS9jb3JlLmM9MTA0MD1zdGF0aWMgaW50IG5jaV90cmFuc2NlaXZlKHN0cnVjdCBuZmNfZGV2ICpuZmNfZGV2LCBzdHJ1Y3QgbmZjX3RhcmdldCAqdGFyZ2V0LFxuLS1cbm5ldC9uZmMvbmNpL2NvcmUuYy0xMDc3LVxubmV0L25mYy9uY2kvY29yZS5jOjEwNzg6c3RhdGljIGludCBuY2lfdG1fc2VuZChzdHJ1Y3QgbmZjX2RldiAqbmZjX2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9uZmMvbmNpL2NvcmUuYy0xMDc5LXtcbi0tXG5uZXQvbmZjL25jaS9jb3JlLmM9MTE0OT1zdGF0aWMgY29uc3Qgc3RydWN0IG5mY19vcHMgbmNpX25mY19vcHMgPSB7XG4tLVxubmV0L25mYy9uY2kvY29yZS5jLTExNTgtXHQuaW1fdHJhbnNjZWl2ZSA9IG5jaV90cmFuc2NlaXZlLFxubmV0L25mYy9uY2kvY29yZS5jOjExNTk6XHQudG1fc2VuZCA9IG5jaV90bV9zZW5kLFxubmV0L25mYy9uY2kvY29yZS5jLTExNjAtXHQuZW5hYmxlX3NlID0gbmNpX2VuYWJsZV9zZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU4NzEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqVHJhY2luZyB0aGUgRGF0YSBGbG93IGluIE5GQyBDb21tdW5pY2F0aW9uKioKCk9rYXksIHNvIGBuZmNfZGF0YV9leGNoYW5nZWAgaXMgYSBjcnVjaWFsIGZ1bmN0aW9uLCBsaWtlbHkgdGhlIGhlYXJ0IG9mIHRoZSBORkMgZGF0YSB0cmFuc2ZlciBwcm9jZXNzLiBNeSBpbml0aWFsIGh1bmNoLCBnaXZlbiBpdHMgbmFtZSBhbmQgdGhlIHR5cGljYWwgYXJjaGl0ZWN0dXJlLCBpcyB0aGF0IGl0JiMzOTtzIGdldHRpbmcgaW52b2tlZCBlaXRoZXIgdGhyb3VnaCBOZXRsaW5rLCB0aGUgZXN0YWJsaXNoZWQgaW50ZXIta2VybmVsIGNvbW11bmljYXRpb24gcGF0aHdheSwgb3IgbW9yZSBkaXJlY3RseSB0aHJvdWdoIGEgc29ja2V0IGxheWVyLCBoYW5kbGluZyB0aGUgdXNlci1zcGFjZSBpbnRlcmFjdGlvbi4gVGhhdCYjMzk7cyB0aGUgZXhwZWN0ZWQgaGlnaC1sZXZlbCB2aWV3LCBhdCBsZWFzdC4gTm93LCB0aGUgcmVhbCB0YXNrIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IGNhbGwgY2hhaW4uIExldCYjMzk7cyBkaWcgZGVlcGVyIGFuZCB0cmFjZSBiYWNrIGFsbCB0aGUgY2FsbHMgdG8gYG5mY19kYXRhX2V4Y2hhbmdlYC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGVycyB3aWxsIGlsbHVtaW5hdGUgcHJlY2lzZWx5IHdoaWNoIHBhcnQgb2YgdGhlIHN5c3RlbSBpbml0aWF0ZXMgdGhlIGRhdGEgZXhjaGFuZ2UgYW5kIHdoYXQgY29udGV4dCBpdCYjMzk7cyBvcGVyYXRpbmcgd2l0aGluLiBJdOKAmXMgYWxzbyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbGluZyBjb250ZXh0cy4gRm9yIGluc3RhbmNlLCBpcyB0aGlzIGEgYmxvY2tpbmcgb3Igbm9uLWJsb2NraW5nIGNhbGw/IEFyZSB0aGVyZSBhbnkgbG9ja3MgaGVsZCBkdXJpbmcgdGhpcyBjYWxsPyBUaGlzIGlzIHdoZXJlIHRoZSBkZWJ1Z2dpbmcgYmVnaW5zIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZmNfZGF0YV9leGNoYW5nZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9jb3JlLmM9NDQyPWludCBuZmNfZGVhY3RpdmF0ZV90YXJnZXQoc3RydWN0IG5mY19kZXYgKmRldiwgdTMyIHRhcmdldF9pZHgsIHU4IG1vZGUpXG4tLVxubmV0L25mYy9jb3JlLmMtNDc3LS8qKlxubmV0L25mYy9jb3JlLmM6NDc4OiAqIG5mY19kYXRhX2V4Y2hhbmdlIC0gdHJhbnNjZWl2ZSBkYXRhXG5uZXQvbmZjL2NvcmUuYy00NzktICpcbi0tXG5uZXQvbmZjL2NvcmUuYy00ODctICovXG5uZXQvbmZjL2NvcmUuYzo0ODg6aW50IG5mY19kYXRhX2V4Y2hhbmdlKHN0cnVjdCBuZmNfZGV2ICpkZXYsIHUzMiB0YXJnZXRfaWR4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25mYy9jb3JlLmMtNDg5LVx0XHQgICAgICBkYXRhX2V4Y2hhbmdlX2NiX3QgY2IsIHZvaWQgKmNiX2NvbnRleHQpXG4tLVxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmM9MzcxPWludCBuZmNfbGxjcF9zZW5kX3N5bW0oc3RydWN0IG5mY19kZXYgKmRldilcbi0tXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYy0zOTgtXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYzozOTk6XHRlcnIgPSBuZmNfZGF0YV9leGNoYW5nZShkZXYsIGxvY2FsLVx1MDAzZXRhcmdldF9pZHgsIHNrYixcbm5ldC9uZmMvbGxjcF9jb21tYW5kcy5jLTQwMC1cdFx0XHRcdCBuZmNfbGxjcF9yZWN2LCBsb2NhbCk7XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz03NjE9c3RhdGljIHZvaWQgbmZjX2xsY3BfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy03OTYtXG5uZXQvbmZjL2xsY3BfY29yZS5jOjc5NzpcdFx0XHRyZXQgPSBuZmNfZGF0YV9leGNoYW5nZShsb2NhbC1cdTAwM2VkZXYsIGxvY2FsLVx1MDAzZXRhcmdldF9pZHgsXG5uZXQvbmZjL2xsY3BfY29yZS5jLTc5OC1cdFx0XHRcdFx0XHRza2IsIG5mY19sbGNwX3JlY3YsIGxvY2FsKTtcbi0tXG5uZXQvbmZjL25mYy5oPTE0Mz1pbnQgbmZjX2RlYWN0aXZhdGVfdGFyZ2V0KHN0cnVjdCBuZmNfZGV2ICpkZXYsIHUzMiB0YXJnZXRfaWR4LCB1OCBtb2RlKTtcbm5ldC9uZmMvbmZjLmgtMTQ0LVxubmV0L25mYy9uZmMuaDoxNDU6aW50IG5mY19kYXRhX2V4Y2hhbmdlKHN0cnVjdCBuZmNfZGV2ICpkZXYsIHUzMiB0YXJnZXRfaWR4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25mYy9uZmMuaC0xNDYtXHRcdCAgICAgIGRhdGFfZXhjaGFuZ2VfY2JfdCBjYiwgdm9pZCAqY2JfY29udGV4dCk7XG4tLVxubmV0L25mYy9yYXdzb2NrLmM9MTg4PXN0YXRpYyB2b2lkIHJhd3NvY2tfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxubmV0L25mYy9yYXdzb2NrLmMtMjA2LVx0c29ja19ob2xkKHNrKTtcbm5ldC9uZmMvcmF3c29jay5jOjIwNzpcdHJjID0gbmZjX2RhdGFfZXhjaGFuZ2UoZGV2LCB0YXJnZXRfaWR4LCBza2IsXG5uZXQvbmZjL3Jhd3NvY2suYy0yMDgtXHRcdFx0ICAgICAgIHJhd3NvY2tfZGF0YV9leGNoYW5nZV9jb21wbGV0ZSwgc2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjg1NgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDQzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBORkMgU3Vic3lzdGVtJiMzOTtzIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIE5GQyBjb2RlIGFuZCBJIHNlZSB0aGF0IHJhdyBzb2NrZXRzIChgcmF3c29jay5jYCkgYW5kIExMQ1AgKGBsbGNwX2NvcmUuY2ApIGFyZSB1c2luZyBgbmZjX2RhdGFfZXhjaGFuZ2VgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBhbmQgcmlnaHQgYXdheSBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBiaWdnZXIgcGljdHVyZS4gSSBrbm93IHN5emthbGxlciBoYXMgc29tZSBzZXJpb3VzIE5GQyBjb3ZlcmFnZSwgdXNpbmcgQUZfTkZDIHNvY2tldHMsIG5ldGxpbmsgY29tbWFuZHMgbGlrZSBgTkZDX0NNRF9TVEFSVF9QT0xMYCBhbmQgYE5GQ19DTURfREVQX0xJTktfVVBgLCBhbmQgZXZlbiBVU0IgZW11bGF0aW9uIHdpdGggcG9ydDEwMCBvciBuZmNzaW0uIEFuZCBpdCYjMzk7cyBjbGVhcmx5IGZ1enppbmcgTkZDIHByZXR0eSBleHRlbnNpdmVseS4gSSBtZWFuLCB0aGUgbnVtYmVyIG9mIENWRXMgYW5kIGJ1Z3MgaXQmIzM5O3MgZm91bmQgaW4gYG5ldC9uZmNgIGlzIGltcHJlc3NpdmUuCgpHaXZlbiBhbGwgb2YgdGhhdCwgbXkgbmV4dCBzdGVwIGlzIHRvIHNlZSBpZiBzeXprYWxsZXIgaGFzIGZsYWdnZWQgYW55dGhpbmcgaW4gYGRpZ2l0YWxfZGVwLmNgIG9yIHdpdGhpbiBgbmV0L25mY2AgbW9yZSBicm9hZGx5LiBBaCwgaGVyZSYjMzk7cyBhIGNvbW1pdCB0aGF0IGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIG9yIGxvZ2ljIGVycm9yIGluIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAuCgpOb3csIGxldCYjMzk7cyBzdGVwIGJhY2sgYW5kIGNvbnNpZGVyIHRoZSByZWxldmFudCBzZWN0aW9ucy4gTXkgZm9jdXMgaXMgb24gcmVhY2hhYmlsaXR5LiBJcyBgZGlnaXRhbF9kZXAuY2AgYWN0dWFsbHkgcmVhY2hhYmxlPyBBYnNvbHV0ZWx5LCB2aWEgdGhlIE5GQyBzdWJzeXN0ZW0sIEFGX05GQyBzb2NrZXRzLCBuZXRsaW5rLCBvciBldmVuIGVtdWxhdGVkIFVTQiBkZXZpY2VzIGxpa2UgcG9ydDEwMCwgb3IgbmZjc2ltLiBUaGF0JiMzOTtzIGEgc29saWQgc3RhcnQuCgpUaGUgc2Vjb25kIGNyaXRpY2FsIHRoaW5nIEkmIzM5O20gY29uc2lkZXJpbmcgaXMgdGhhdCBmdXp6aW5nIGlzIHZhbHVhYmxlIGJlY2F1c2UgdGhlIGNvZGUgY2FuIGJlIG1hZGUgdG8gZXhlY3V0ZSBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgR0NFIG9yIFFFTVUsIHVzaW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwLiBUaGF0IHNvdW5kcyBpZGVhbC4KCkFuZCBmaW5hbGx5LCB0aGUgJiMzOTtXb3J0aEZ1enppbmcmIzM5OyBjcml0ZXJpYS4gVGhhdCYjMzk7cyB3aGF0IEkmIzM5O20gbG9va2luZyBmb3IgLSBjYW4gdGhlIHBhdGNoIHRvdWNoIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZyBjb3JlIHN1YnN5c3RlbXMsIGFuZCBkcml2ZXJzIHRoYXQgYXJlIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMsIGxpa2UgdGhlIFVTQiBnYWRnZXQsIG5ldGxpbmssIGFuZCBzb2NrZXRzLiBXZWxsLCB0aGUgYG5ldC9uZmNgIGNvZGUgKmlzKiBwYXJ0IG9mIExpbnV4IG5ldHdvcmtpbmcgKG5ldC8pLCBzby4uLgoKJiMzNDtXb3J0aEZ1enppbmc6IHRydWUhJiMzNDsgQmluZ28uCgpOb3cgdG8gc2VlIHdoYXQgS2NvbmZpZyBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgYGRpZ2l0YWxfZGVwLm9gJiMzOTtzIGNvbXBpbGF0aW9uIC0gbGV0JiMzOTtzIHRyYWNlIHRocm91Z2ggYG5ldC9uZmMvTWFrZWZpbGVgIHRvIGNvbmZpcm0gdGhlIGJ1aWxkIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGlnaXRhbF9kZXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvTWFrZWZpbGU9MTE9bmZjLW9ianMgOj0gY29yZS5vIG5ldGxpbmsubyBhZl9uZmMubyByYXdzb2NrLm8gbGxjcF9jb3JlLm8gbGxjcF9jb21tYW5kcy5vIFxcXG4tLVxubmV0L25mYy9NYWtlZmlsZS0xMy1cbm5ldC9uZmMvTWFrZWZpbGU6MTQ6bmZjX2RpZ2l0YWwtb2JqcyA6PSBkaWdpdGFsX2NvcmUubyBkaWdpdGFsX3RlY2hub2xvZ3kubyBkaWdpdGFsX2RlcC5vXG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYz01ODY9c3RhdGljIGludCBkaWdpdGFsX2Rldl9kb3duKHN0cnVjdCBuZmNfZGV2ICpuZmNfZGV2KVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTk0LVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo1OTU6c3RhdGljIGludCBkaWdpdGFsX2RlcF9saW5rX3VwKHN0cnVjdCBuZmNfZGV2ICpuZmNfZGV2LFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01OTYtXHRcdFx0ICAgICAgIHN0cnVjdCBuZmNfdGFyZ2V0ICp0YXJnZXQsXG4tLVxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy02MDktXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjYxMDpzdGF0aWMgaW50IGRpZ2l0YWxfZGVwX2xpbmtfZG93bihzdHJ1Y3QgbmZjX2RldiAqbmZjX2Rldilcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNjExLXtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTc0ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5mY19vcHMgZGlnaXRhbF9uZmNfb3BzID0ge1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNzQ4LVx0LnN0b3BfcG9sbCA9IGRpZ2l0YWxfc3RvcF9wb2xsLFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo3NDk6XHQuZGVwX2xpbmtfdXAgPSBkaWdpdGFsX2RlcF9saW5rX3VwLFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo3NTA6XHQuZGVwX2xpbmtfZG93biA9IGRpZ2l0YWxfZGVwX2xpbmtfZG93bixcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNzUxLVx0LmFjdGl2YXRlX3RhcmdldCA9IGRpZ2l0YWxfYWN0aXZhdGVfdGFyZ2V0LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz05ND1zdHJ1Y3QgZGlnaXRhbF9wc2xfcmVzIHtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTktXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTAwOnN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzIHtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDEtXHR1OCBkaXI7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTIwMD1kaWdpdGFsX3NlbmRfZGVwX2RhdGFfcHJlcChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjIwMTpcdFx0XHQgICBzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcV9yZXMsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMjAyLVx0XHRcdCAgIHN0cnVjdCBkaWdpdGFsX2RhdGFfZXhjaCAqZGF0YV9leGNoKVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz01Mjk9c3RhdGljIGludCBkaWdpdGFsX2luX3NlbmRfYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTUzMS17XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTMyOlx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTMzLVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTM5LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU0MDpcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTQxLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU0MjpcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXHUwMDNlZGF0YTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NDMtXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTU2Nj1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9uYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU2OC17XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTY5Olx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTcwLVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTc2LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU3NzpcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTc4LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU3OTpcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXHUwMDNlZGF0YTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01ODAtXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTU5OD1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9hdG4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjAwLXtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MDE6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MDItXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MDgtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjA5Olx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MTAtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjExOlx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYxMi1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NjI5PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX3J0b3goc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjMxLXtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MzI6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MzMtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NDYtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjQ3Olx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NDgtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjQ5Olx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTY1MC1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9Njg2PXN0YXRpYyB2b2lkIGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjg5LVx0c3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2ggPSBhcmc7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjkwOlx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXM7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjkxLVx0dTggcGZiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy03NTUtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NzU2Olx0c2l6ZSA9IHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3Jlcyk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NzU3Olx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXJlc3AtXHUwMDNlZGF0YTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy03NTgtXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTkwND1pbnQgZGlnaXRhbF9pbl9zZW5kX2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTA3LXtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5MDg6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05MDktXHRzdHJ1Y3Qgc2tfYnVmZiAqY2hhaW5pbmdfc2tiLCAqdG1wX3NrYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTExLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjkxMjpcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTEzLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjkxNDpcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXHUwMDNlZGF0YTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05MTUtXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTk3OD1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hY2soc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTgwLXtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5ODE6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3Jlcztcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODItXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODgtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTg5Olx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05OTAtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTkxOlx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk5Mi1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTAyND1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hdG4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDI1LXtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDI2Olx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXM7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAyNy1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMzMtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTAzNDpcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAzNS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDM2Olx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMzctXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEwNzc9c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDgwLVx0aW50IHJjO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwODE6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDgyLVx0dTggcGZiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTA3LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjExMDg6XHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMTA5Olx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXJlc3AtXHUwMDNlZGF0YTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTEwLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMjk3PWludCBkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyOTgte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEyOTk6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3Jlcztcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzAwLVx0c3RydWN0IHNrX2J1ZmYgKmNoYWluaW5nX3NrYiwgKnRtcF9za2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMDItXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTMwMzpcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwNC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzA1Olx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMDYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwODQyCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgaXQ6CgoqKkRpdmluZyBpbnRvIHRoZSBORkMgTWFrZWZpbGUqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBwcm9jZXNzIGZvciB0aGUgTkZDIGNvbXBvbmVudHMsIHNvIGxldCYjMzk7cyBzdGFydCB3aXRoIHRoZSBgbmV0L25mYy9NYWtlZmlsZWAuIFRoaXMgZmlsZSBpcyB0aGUgY2VudHJhbCBwb2ludCBvZiBjb250cm9sLCByaWdodD8gSXQmIzM5O3Mgd2hlcmUgdGhlIGRlcGVuZGVuY2llcywgY29tcGlsYXRpb24gZmxhZ3MsIGFuZCBsaW5raW5nIGFyZSBhbGwgb3JjaGVzdHJhdGVkIGZvciB0aGVzZSBORkMtcmVsYXRlZCBtb2R1bGVzLiBJIG5lZWQgdG8gc2VlIGhvdyB0aGUga2VybmVsIGJ1aWxkcyB0aGVzZSB0aGluZ3MsIGFueSBzcGVjaWZpYyBtb2R1bGVzIGl0JiMzOTtzIGNyZWF0aW5nLCBhbmQgaG93IHRoZXkgaW50ZXJhY3QuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIHdoZXRoZXIgdGhlcmUgYXJlIGFueSB1bnVzdWFsIGJ1aWxkIGZsYWdzIG9yIGN1c3RvbSBydWxlcyB0aGF0IG1pZ2h0IGluZGljYXRlIHBsYXRmb3JtLXNwZWNpZmljIG9wdGltaXphdGlvbnMgb3IgcG90ZW50aWFsIGFyZWFzIG9mIGludGVyZXN0IGZvciBwZXJmb3JtYW5jZSB0dW5pbmcgb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSByZXNlYXJjaC4gTGV0JiMzOTtzIHNlZSB3aGF0IGdlbXMgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25mYy9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBNYWtlZmlsZSBmb3IgdGhlIExpbnV4IE5GQyBzdWJzeXN0ZW0uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG9iai0kKENPTkZJR19ORkMpICYjNDM7PSBuZmMub1xuICAgNzpcdG9iai0kKENPTkZJR19ORkNfTkNJKSAmIzQzOz0gbmNpL1xuICAgODpcdG9iai0kKENPTkZJR19ORkNfSENJKSAmIzQzOz0gaGNpL1xuICAgOTpcdG9iai0kKENPTkZJR19ORkNfRElHSVRBTCkgJiM0Mzs9IG5mY19kaWdpdGFsLm9cbiAgMTA6XHRcbiAgMTE6XHRuZmMtb2JqcyA6PSBjb3JlLm8gbmV0bGluay5vIGFmX25mYy5vIHJhd3NvY2subyBsbGNwX2NvcmUubyBsbGNwX2NvbW1hbmRzLm8gXFxcbiAgMTI6XHRcdFx0bGxjcF9zb2NrLm9cbiAgMTM6XHRcbiAgMTQ6XHRuZmNfZGlnaXRhbC1vYmpzIDo9IGRpZ2l0YWxfY29yZS5vIGRpZ2l0YWxfdGVjaG5vbG9neS5vIGRpZ2l0YWxfZGVwLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDEyODQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBORkMgRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbmZjX2RpZ2l0YWwub2AgbW9kdWxlIGFuZCBpbW1lZGlhdGVseSwgSSBzZWUgYSBjbGVhciBkZXBlbmRlbmN5IHBhdGguIEl0IG5lZWRzIGBDT05GSUdfTkZDX0RJR0lUQUxgLCB3aGljaCBpdHNlbGYgaXMgY29udGluZ2VudCBvbiBgQ09ORklHX05GQ2AuIFRoYXQmIzM5O3Mgc3RhbmRhcmQgS2NvbmZpZyBzdHVmZi4gR290dGEgbWFrZSBzdXJlIHRoZSBiYXNlIE5GQyBmdW5jdGlvbmFsaXR5IGlzIGVuYWJsZWQgYmVmb3JlIHdlIGV2ZW4gdGhpbmsgYWJvdXQgdGhlIGRpZ2l0YWwgbGF5ZXIuCgpUaGVuIEkgcXVpY2tseSB3YW50IHRvIHVuZGVyc3RhbmQgKndoYXQqIHVzZXMgdGhpcyBgbmZjX2RpZ2l0YWxgIHBhcnQuIFRoZSBkZXBlbmRlbmN5IGxpc3QgdGVsbHMgbWUgaXQmIzM5O3MgdXNlZCBieSBgQ09ORklHX05GQ19TSU1gLCB0aGUgbmZjc2ltIGRyaXZlciwgYW5kIGFsc28gYENPTkZJR19ORkNfUE9SVDEwMGAsIHRoZSBwb3J0MTAwIGRyaXZlci4gQWxyaWdodCwgdXNlZnVsIHRvIGtub3cuIAoKVG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBteSBuZXh0IHN0ZXAgaXMgb2J2aW91c2x5IHRvIGdvIGFuZCBpbnNwZWN0IHRoZSBgZHJpdmVycy9uZmMvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIHNlZSB0aGUgY29udGV4dCBvZiB0aGVzZSBjb25maWdzLCBhbnkgYWRkaXRpb25hbCBkZXBlbmRlbmNpZXMgb3IgY29uc3RyYWludHMsIGRlZmF1bHQgdmFsdWVzLCBoZWxwIHRleHQg4oCTIHRoZSB3aG9sZSBzaGViYW5nLiBHb3R0YSBoYXZlIHRoZSBmdWxsIHBpY3R1cmUgYmVmb3JlIEkgbWFrZSBhbnkganVkZ2VtZW50cyBvciBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQT1JUMTAwfE5GQ1NJTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA2ODIgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmZjL0tjb25maWc9MzE9Y29uZmlnIE5GQ19TSU1cbi0tXG5kcml2ZXJzL25mYy9LY29uZmlnLTQxLVxuZHJpdmVycy9uZmMvS2NvbmZpZzo0Mjpjb25maWcgTkZDX1BPUlQxMDBcbmRyaXZlcnMvbmZjL0tjb25maWctNDMtXHR0cmlzdGF0ZSBcJiMzNDtTb255IE5GQyBQb3J0LTEwMCBTZXJpZXMgVVNCIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvTWFrZWZpbGU9MTE9b2JqLSQoQ09ORklHX05GQ19TSU0pXHRcdCYjNDM7PSBuZmNzaW0ub1xuZHJpdmVycy9uZmMvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX05GQ19QT1JUMTAwKVx0JiM0Mzs9IHBvcnQxMDAub1xuZHJpdmVycy9uZmMvTWFrZWZpbGUtMTMtb2JqLSQoQ09ORklHX05GQ19NUlZMKVx0XHQmIzQzOz0gbmZjbXJ2bC9cbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xNS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE2OiNkZWZpbmUgTkZDU0lNX0VSUihkLCBmbXQsIGFyZ3MuLi4pIG5mY19lcnIoXHUwMDI2ZC1cdTAwM2VuZmNfZGlnaXRhbF9kZXYtXHUwMDNlbmZjX2Rldi1cdTAwM2VkZXYsIFxcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xNy1cdFx0XHRcdFx0ICAgIFwmIzM0OyVzOiBcJiMzNDsgZm10LCBfX2Z1bmNfXywgIyMgYXJncylcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE4LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTk6I2RlZmluZSBORkNTSU1fREJHKGQsIGZtdCwgYXJncy4uLikgZGV2X2RiZyhcdTAwMjZkLVx1MDAzZW5mY19kaWdpdGFsX2Rldi1cdTAwM2VuZmNfZGV2LVx1MDAzZWRldiwgXFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwLVx0XHRcdFx0XHQgICAgXCYjMzQ7JXM6IFwmIzM0OyBmbXQsIF9fZnVuY19fLCAjIyBhcmdzKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjEtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyMjojZGVmaW5lIE5GQ1NJTV9WRVJTSU9OIFwmIzM0OzAuMlwmIzM0O1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjMtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyNDojZGVmaW5lIE5GQ1NJTV9NT0RFX05PTkVcdDBcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI1OiNkZWZpbmUgTkZDU0lNX01PREVfSU5JVElBVE9SXHQxXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyNjojZGVmaW5lIE5GQ1NJTV9NT0RFX1RBUkdFVFx0MlxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjctXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyODojZGVmaW5lIE5GQ1NJTV9DQVBBQklMSVRJRVMgKE5GQ19ESUdJVEFMX0RSVl9DQVBTX0lOX0NSQyAgIHwgXFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI5LVx0XHRcdCAgICAgTkZDX0RJR0lUQUxfRFJWX0NBUFNfVEdfQ1JDKVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jPTEwND1zdGF0aWMgdm9pZCBuZmNzaW1fbGlua19yZWN2X2NhbmNlbChzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmspXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTA3LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTA4Olx0bGluay1cdTAwM2Vtb2RlID0gTkZDU0lNX01PREVfTk9ORTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTEwOS1cbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYz0xMTU9c3RhdGljIHZvaWQgbmZjc2ltX2xpbmtfc2h1dGRvd24oc3RydWN0IG5mY3NpbV9saW5rICpsaW5rKVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTExOS1cdGxpbmstXHUwMDNlc2h1dGRvd24gPSAxO1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTIwOlx0bGluay1cdTAwM2Vtb2RlID0gTkZDU0lNX01PREVfTk9ORTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTEyMS1cbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYz0xODI9c3RhdGljIHZvaWQgbmZjc2ltX3JlY3Zfd3Eoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE5MC1cdGlmICghZGV2LVx1MDAzZXVwKSB7XG5kcml2ZXJzL25mYy9uZmNzaW0uYzoxOTE6XHRcdE5GQ1NJTV9FUlIoZGV2LCBcJiMzNDtEZXZpY2UgaXMgZG93blxcblwmIzM0Oyk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xOTItXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM9MjAxPXN0YXRpYyBpbnQgbmZjc2ltX3NlbmQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yMDctXHRpZiAoIWRldi1cdTAwM2V1cCkge1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjA4Olx0XHRORkNTSU1fRVJSKGRldiwgXCYjMzQ7RGV2aWNlIGlzIGRvd25cXG5cJiMzNDspO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjA5LVx0XHRyZXR1cm4gLUVOT0RFVjtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yMTgtXHRpZiAoZGV2LVx1MDAzZWRyb3BmcmFtZSkge1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjE5Olx0XHRORkNTSU1fREJHKGRldiwgXCYjMzQ7ZHJvcHBpbmcgZnJhbWUgKG91dCBvZiAlZClcXG5cJiMzNDssIGRldi1cdTAwM2Vkcm9wZnJhbWUpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjIwLVx0XHRkZXZfa2ZyZWVfc2tiKHNrYik7XG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM9MjU2PXN0YXRpYyBpbnQgbmZjc2ltX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI2My1cdFx0ZGV2LVx1MDAzZXVwID0gdHJ1ZTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI2NDpcdFx0ZGV2LVx1MDAzZW1vZGUgPSBORkNTSU1fTU9ERV9JTklUSUFUT1I7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNjUtXHRcdGRldi1cdTAwM2VyZl90ZWNoID0gcGFyYW07XG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjcxLVx0ZGVmYXVsdDpcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI3MjpcdFx0TkZDU0lNX0VSUihkZXYsIFwmIzM0O0ludmFsaWQgY29uZmlndXJhdGlvbiB0eXBlOiAlZFxcblwmIzM0OywgdHlwZSk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNzMtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jPTI4Nj1zdGF0aWMgaW50IG5mY3NpbV90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yOTMtXHRcdGRldi1cdTAwM2V1cCA9IHRydWU7XG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyOTQ6XHRcdGRldi1cdTAwM2Vtb2RlID0gTkZDU0lNX01PREVfVEFSR0VUO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjk1LVx0XHRkZXYtXHUwMDNlcmZfdGVjaCA9IHBhcmFtO1xuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMwMS1cdGRlZmF1bHQ6XG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMDI6XHRcdE5GQ1NJTV9FUlIoZGV2LCBcJiMzNDtJbnZhbGlkIGNvbmZpZ3VyYXRpb24gdHlwZTogJWRcXG5cJiMzNDssIHR5cGUpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzAzLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYz0zNDY9c3RhdGljIHZvaWQgbmZjc2ltX2RlYnVnZnNfaW5pdF9kZXYoc3RydWN0IG5mY3NpbSAqZGV2KVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM1My1cdGlmICghbmZjc2ltX2RlYnVnZnNfcm9vdCkge1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzU0Olx0XHRORkNTSU1fRVJSKGRldiwgXCYjMzQ7bmZjc2ltIGRlYnVnZnMgbm90IGluaXRpYWxpemVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM1NS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM2MC1cdGlmIChuIFx1MDAzZT0gc2l6ZW9mKGRldm5hbWUpKSB7XG5kcml2ZXJzL25mYy9uZmNzaW0uYzozNjE6XHRcdE5GQ1NJTV9FUlIoZGV2LCBcJiMzNDtDb3VsZCBub3QgY29tcHV0ZSBkZXYgbmFtZSBmb3IgZGV2ICVkXFxuXCYjMzQ7LCBpZHgpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzYyLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM9MzcwPXN0YXRpYyBzdHJ1Y3QgbmZjc2ltICpuZmNzaW1fZGV2aWNlX25ldyhzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmtfaW4sXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzg1LVx0XHRcdFx0XHRcdCAgICBORkNfUFJPVE9fTkZDX0RFUF9NQVNLLFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mzg2Olx0XHRcdFx0XHRcdCAgICBORkNTSU1fQ0FQQUJJTElUSUVTLFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzg3LVx0XHRcdFx0XHRcdCAgICAwLCAwKTtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYz00MzE9c3RhdGljIGludCBfX2luaXQgbmZjc2ltX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00NTgtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0NTk6XHRwcl9pbmZvKFwmIzM0O25mY3NpbSBcJiMzNDsgTkZDU0lNX1ZFUlNJT04gXCYjMzQ7IGluaXRpYWxpemVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ2MC1cbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYz00OTE9bW9kdWxlX2V4aXQobmZjc2ltX2V4aXQpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDkyLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDkzOk1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtORkNTaW0gZHJpdmVyIHZlciBcJiMzNDsgTkZDU0lNX1ZFUlNJT04pO1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDk0Ok1PRFVMRV9WRVJTSU9OKE5GQ1NJTV9WRVJTSU9OKTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ5NS1NT0RVTEVfTElDRU5TRShcJiMzNDtHUExcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xOC1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxOTojZGVmaW5lIFBPUlQxMDBfUFJPVE9DT0xTIChORkNfUFJPVE9fSkVXRUxfTUFTSyAgICB8IFxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjAtXHRcdFx0ICAgTkZDX1BST1RPX01JRkFSRV9NQVNLICAgfCBcXFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yNS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNjojZGVmaW5lIFBPUlQxMDBfQ0FQQUJJTElUSUVTIChORkNfRElHSVRBTF9EUlZfQ0FQU19JTl9DUkMgfCBcXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI3LVx0XHRcdCAgICAgIE5GQ19ESUdJVEFMX0RSVl9DQVBTX1RHX0NSQylcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjktLyogU3RhbmRhcmQgcG9ydDEwMCBmcmFtZSBkZWZpbml0aW9ucyAqL1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMwOiNkZWZpbmUgUE9SVDEwMF9GUkFNRV9IRUFERVJfTEVOIChzaXplb2Yoc3RydWN0IHBvcnQxMDBfZnJhbWUpIFxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzEtXHRcdFx0XHQgICYjNDM7IDIpIC8qIGRhdGFbMF0gQ0MsIGRhdGFbMV0gU0NDICovXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzI6I2RlZmluZSBQT1JUMTAwX0ZSQU1FX1RBSUxfTEVOIDIgLyogZGF0YVtsZW5dIERDUywgZGF0YVtsZW4gJiM0MzsgMV0gcG9zdGFtYmxlKi9cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMy1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNDojZGVmaW5lIFBPUlQxMDBfQ09NTV9SRl9IRUFEX01BWF9MRU4gKHNpemVvZihzdHJ1Y3QgcG9ydDEwMF90Z19jb21tX3JmX2NtZCkpXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzUtXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM3LSAqIE1heCBleHRlbmRlZCBmcmFtZSBwYXlsb2FkIGxlbiwgZXhjbHVkaW5nIENDIGFuZCBTQ0NcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozODogKiB3aGljaCBhcmUgYWxyZWFkeSBpbiBQT1JUMTAwX0ZSQU1FX0hFQURFUl9MRU4uXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzktICovXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDA6I2RlZmluZSBQT1JUMTAwX0ZSQU1FX01BWF9QQVlMT0FEX0xFTiAxMDAxXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDEtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDI6I2RlZmluZSBQT1JUMTAwX0ZSQU1FX0FDS19TSVpFIDYgLyogUHJlYW1ibGUgKDEpLCBTb1BDICgyKSwgQUNLIENvZGUgKDIpLFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQzLVx0XHRcdFx0ICAgIFBvc3RhbWJsZSAoMSkgKi9cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0NDpzdGF0aWMgdTggYWNrX2ZyYW1lW1BPUlQxMDBfRlJBTUVfQUNLX1NJWkVdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQ1LVx0MHgwMCwgMHgwMCwgMHhmZiwgMHgwMCwgMHhmZiwgMHgwMFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00Ny1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0ODojZGVmaW5lIFBPUlQxMDBfRlJBTUVfQ0hFQ0tTVU0oZikgKGYtXHUwMDNlZGF0YVtsZTE2X3RvX2NwdShmLVx1MDAzZWRhdGFsZW4pXSlcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0OTojZGVmaW5lIFBPUlQxMDBfRlJBTUVfUE9TVEFNQkxFKGYpIChmLVx1MDAzZWRhdGFbbGUxNl90b19jcHUoZi1cdTAwM2VkYXRhbGVuKSAmIzQzOyAxXSlcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy01MC1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy01MS0vKiBzdGFydCBvZiBmcmFtZSAqL1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjUyOiNkZWZpbmUgUE9SVDEwMF9GUkFNRV9TT0ZcdDB4MDBGRlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjUzOiNkZWZpbmUgUE9SVDEwMF9GUkFNRV9FWFRcdDB4RkZGRlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjU0OiNkZWZpbmUgUE9SVDEwMF9GUkFNRV9BQ0tcdDB4MDBGRlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTU1LVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTU2LS8qIFBvcnQtMTAwIGNvbW1hbmQ6IGluIG9yIG91dCAqL1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjU3OiNkZWZpbmUgUE9SVDEwMF9GUkFNRV9ESVJFQ1RJT04oZikgKGYtXHUwMDNlZGF0YVswXSkgLyogQ0MgKi9cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo1ODojZGVmaW5lIFBPUlQxMDBfRlJBTUVfRElSX09VVCAweEQ2XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NTk6I2RlZmluZSBQT1JUMTAwX0ZSQU1FX0RJUl9JTiAgMHhEN1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTYwLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTYxLS8qIFBvcnQtMTAwIHN1Yi1jb21tYW5kICovXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NjI6I2RlZmluZSBQT1JUMTAwX0ZSQU1FX0NNRChmKSAoZi1cdTAwM2VkYXRhWzFdKSAvKiBTQ0MgKi9cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy02My1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo2NDojZGVmaW5lIFBPUlQxMDBfQ01EX0dFVF9GSVJNV0FSRV9WRVJTSU9OIDB4MjBcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo2NTojZGVmaW5lIFBPUlQxMDBfQ01EX0dFVF9DT01NQU5EX1RZUEUgICAgIDB4MjhcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo2NjojZGVmaW5lIFBPUlQxMDBfQ01EX1NFVF9DT01NQU5EX1RZUEUgICAgIDB4MkFcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy02Ny1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo2ODojZGVmaW5lIFBPUlQxMDBfQ01EX0lOX1NFVF9SRiAgICAgICAweDAwXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Njk6I2RlZmluZSBQT1JUMTAwX0NNRF9JTl9TRVRfUFJPVE9DT0wgMHgwMlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjcwOiNkZWZpbmUgUE9SVDEwMF9DTURfSU5fQ09NTV9SRiAgICAgIDB4MDRcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy03MS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo3MjojZGVmaW5lIFBPUlQxMDBfQ01EX1RHX1NFVF9SRiAgICAgICAweDQwXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NzM6I2RlZmluZSBQT1JUMTAwX0NNRF9UR19TRVRfUFJPVE9DT0wgMHg0MlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjc0OiNkZWZpbmUgUE9SVDEwMF9DTURfVEdfU0VUX1JGX09GRiAgIDB4NDZcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo3NTojZGVmaW5lIFBPUlQxMDBfQ01EX1RHX0NPTU1fUkYgICAgICAweDQ4XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNzYtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Nzc6I2RlZmluZSBQT1JUMTAwX0NNRF9TV0lUQ0hfUkYgICAgICAgMHgwNlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTc4LVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjc5OiNkZWZpbmUgUE9SVDEwMF9DTURfUkVTUE9OU0UoY21kKSAoY21kICYjNDM7IDEpXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtODAtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6ODE6I2RlZmluZSBQT1JUMTAwX0NNRF9UWVBFX0lTX1NVUFBPUlRFRChtYXNrLCBjbWRfdHlwZSkgXFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy04Mi1cdCgobWFzaykgXHUwMDI2ICgweDAxIFx1MDAzY1x1MDAzYyAoY21kX3R5cGUpKSlcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo4MzojZGVmaW5lIFBPUlQxMDBfQ01EX1RZUEVfMFx0MFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjg0OiNkZWZpbmUgUE9SVDEwMF9DTURfVFlQRV8xXHQxXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtODUtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6ODY6I2RlZmluZSBQT1JUMTAwX0NNRF9TVEFUVVNfT0sgICAgICAweDAwXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6ODc6I2RlZmluZSBQT1JUMTAwX0NNRF9TVEFUVVNfVElNRU9VVCAweDgwXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtODgtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6ODk6I2RlZmluZSBQT1JUMTAwX01EQUFfVEdUX0hBU19CRUVOX0FDVElWQVRFRF9NQVNLIDB4MDFcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo5MDojZGVmaW5lIFBPUlQxMDBfTURBQV9UR1RfV0FTX0FDVElWQVRFRF9NQVNLICAgICAgMHgwMlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTkxLVxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xMDY9c3RydWN0IHBvcnQxMDBfaW5fcmZfc2V0dGluZyB7XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExMi1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMTM6I2RlZmluZSBQT1JUMTAwX0NPTU1fVFlQRV9JTl8yMTJGIDB4MDFcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMTQ6I2RlZmluZSBQT1JUMTAwX0NPTU1fVFlQRV9JTl80MjRGIDB4MDJcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMTU6I2RlZmluZSBQT1JUMTAwX0NPTU1fVFlQRV9JTl8xMDZBIDB4MDNcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMTY6I2RlZmluZSBQT1JUMTAwX0NPTU1fVFlQRV9JTl8xMDZCIDB4MDdcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMTctXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTE4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcG9ydDEwMF9pbl9yZl9zZXR0aW5nIGluX3JmX3NldHRpbmdzW10gPSB7XG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMC1cdFx0LmluX3NlbmRfc2V0X251bWJlciA9IDEsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTIxOlx0XHQuaW5fc2VuZF9jb21tX3R5cGUgID0gUE9SVDEwMF9DT01NX1RZUEVfSU5fMjEyRixcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjItXHRcdC5pbl9yZWN2X3NldF9udW1iZXIgPSAxNSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMjM6XHRcdC5pbl9yZWN2X2NvbW1fdHlwZSAgPSBQT1JUMTAwX0NPTU1fVFlQRV9JTl8yMTJGLFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyNC1cdH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyNi1cdFx0LmluX3NlbmRfc2V0X251bWJlciA9IDEsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTI3Olx0XHQuaW5fc2VuZF9jb21tX3R5cGUgID0gUE9SVDEwMF9DT01NX1RZUEVfSU5fNDI0RixcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjgtXHRcdC5pbl9yZWN2X3NldF9udW1iZXIgPSAxNSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMjk6XHRcdC5pbl9yZWN2X2NvbW1fdHlwZSAgPSBQT1JUMTAwX0NPTU1fVFlQRV9JTl80MjRGLFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzMC1cdH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzMi1cdFx0LmluX3NlbmRfc2V0X251bWJlciA9IDIsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTMzOlx0XHQuaW5fc2VuZF9jb21tX3R5cGUgID0gUE9SVDEwMF9DT01NX1RZUEVfSU5fMTA2QSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzQtXHRcdC5pbl9yZWN2X3NldF9udW1iZXIgPSAxNSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMzU6XHRcdC5pbl9yZWN2X2NvbW1fdHlwZSAgPSBQT1JUMTAwX0NPTU1fVFlQRV9JTl8xMDZBLFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzNi1cdH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzOC1cdFx0LmluX3NlbmRfc2V0X251bWJlciA9IDMsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTM5Olx0XHQuaW5fc2VuZF9jb21tX3R5cGUgID0gUE9SVDEwMF9DT01NX1RZUEVfSU5fMTA2QixcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDAtXHRcdC5pbl9yZWN2X3NldF9udW1iZXIgPSAxNSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNDE6XHRcdC5pbl9yZWN2X2NvbW1fdHlwZSAgPSBQT1JUMTAwX0NPTU1fVFlQRV9JTl8xMDZCLFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0Mi1cdH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTE1OD1zdHJ1Y3QgcG9ydDEwMF90Z19yZl9zZXR0aW5nIHtcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTYyLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE2MzojZGVmaW5lIFBPUlQxMDBfQ09NTV9UWVBFX1RHXzEwNkEgMHgwQlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE2NDojZGVmaW5lIFBPUlQxMDBfQ09NTV9UWVBFX1RHXzIxMkYgMHgwQ1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE2NTojZGVmaW5lIFBPUlQxMDBfQ09NTV9UWVBFX1RHXzQyNEYgMHgwRFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE2Ni1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xNjc9c3RhdGljIGNvbnN0IHN0cnVjdCBwb3J0MTAwX3RnX3JmX3NldHRpbmcgdGdfcmZfc2V0dGluZ3NbXSA9IHtcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTY5LVx0XHQudGdfc2V0X251bWJlciA9IDgsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTcwOlx0XHQudGdfY29tbV90eXBlID0gUE9SVDEwMF9DT01NX1RZUEVfVEdfMTA2QSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNzEtXHR9LFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNzMtXHRcdC50Z19zZXRfbnVtYmVyID0gOCxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNzQ6XHRcdC50Z19jb21tX3R5cGUgPSBQT1JUMTAwX0NPTU1fVFlQRV9UR18yMTJGLFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE3NS1cdH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE3Ny1cdFx0LnRnX3NldF9udW1iZXIgPSA4LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE3ODpcdFx0LnRnX2NvbW1fdHlwZSA9IFBPUlQxMDBfQ09NTV9UWVBFX1RHXzQyNEYsXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTc5LVx0fSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTg0LVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE4NTojZGVmaW5lIFBPUlQxMDBfSU5fUFJPVF9JTklUSUFMX0dVQVJEX1RJTUUgICAgICAweDAwXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTg2OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0FERF9DUkMgICAgICAgICAgICAgICAgIDB4MDFcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxODc6I2RlZmluZSBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfQ1JDICAgICAgICAgICAgICAgMHgwMlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE4ODojZGVmaW5lIFBPUlQxMDBfSU5fUFJPVF9NVUxUSV9DQVJEICAgICAgICAgICAgICAweDAzXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTg5OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0FERF9QQVJJVFkgICAgICAgICAgICAgIDB4MDRcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxOTA6I2RlZmluZSBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfUEFSSVRZICAgICAgICAgICAgMHgwNVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE5MTojZGVmaW5lIFBPUlQxMDBfSU5fUFJPVF9CSVRXSVNFX0FDX1JFQ1ZfTU9ERSAgICAweDA2XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTkyOiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX1ZBTElEX0JJVF9OVU1CRVIgICAgICAgIDB4MDdcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxOTM6I2RlZmluZSBQT1JUMTAwX0lOX1BST1RfQ1JZUFRPMSAgICAgICAgICAgICAgICAgMHgwOFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE5NDojZGVmaW5lIFBPUlQxMDBfSU5fUFJPVF9BRERfU09GICAgICAgICAgICAgICAgICAweDA5XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTk1OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX1NPRiAgICAgICAgICAgICAgIDB4MEFcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxOTY6I2RlZmluZSBQT1JUMTAwX0lOX1BST1RfQUREX0VPRiAgICAgICAgICAgICAgICAgMHgwQlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE5NzojZGVmaW5lIFBPUlQxMDBfSU5fUFJPVF9DSEVDS19FT0YgICAgICAgICAgICAgICAweDBDXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTk4OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0RFQUZfVElNRSAgICAgICAgICAgICAgIDB4MEVcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxOTk6I2RlZmluZSBQT1JUMTAwX0lOX1BST1RfQ1JNICAgICAgICAgICAgICAgICAgICAgMHgwRlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIwMDojZGVmaW5lIFBPUlQxMDBfSU5fUFJPVF9DUk1fTUlOX0xFTiAgICAgICAgICAgICAweDEwXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjAxOiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX1QxX1RBR19GUkFNRSAgICAgICAgICAgIDB4MTFcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMDI6I2RlZmluZSBQT1JUMTAwX0lOX1BST1RfUkZDQSAgICAgICAgICAgICAgICAgICAgMHgxMlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIwMzojZGVmaW5lIFBPUlQxMDBfSU5fUFJPVF9HVUFSRF9USU1FX0FUX0lOSVRJQVRPUiAweDEzXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjA0OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0VORCAgICAgICAgICAgICAgICAgICAgIDB4MTRcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yMDUtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjA2OiNkZWZpbmUgUE9SVDEwMF9JTl9NQVhfTlVNX1BST1RPQ09MUyAgICAgICAgICAgIDE5XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjA3LVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIwODojZGVmaW5lIFBPUlQxMDBfVEdfUFJPVF9UVSAgICAgICAgICAgMHgwMFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIwOTojZGVmaW5lIFBPUlQxMDBfVEdfUFJPVF9SRl9PRkYgICAgICAgMHgwMVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIxMDojZGVmaW5lIFBPUlQxMDBfVEdfUFJPVF9DUk0gICAgICAgICAgMHgwMlxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIxMTojZGVmaW5lIFBPUlQxMDBfVEdfUFJPVF9FTkQgICAgICAgICAgMHgwM1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTIxMi1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMTM6I2RlZmluZSBQT1JUMTAwX1RHX01BWF9OVU1fUFJPVE9DT0xTIDNcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yMTQtXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTIyMD1zdGF0aWMgY29uc3Qgc3RydWN0IHBvcnQxMDBfcHJvdG9jb2xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMjE6aW5fcHJvdG9jb2xzW11bUE9SVDEwMF9JTl9NQVhfTlVNX1BST1RPQ09MUyAmIzQzOyAxXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yMjItXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NIT1JUXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMjM6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0lOSVRJQUxfR1VBUkRfVElNRSwgICAgICA2IH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjI0Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfQ1JDLCAgICAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIyNTpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfQ1JDLCAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMjY6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX01VTFRJX0NBUkQsICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjI3Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfUEFSSVRZLCAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIyODpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfUEFSSVRZLCAgICAgICAgICAgIDEgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMjk6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0JJVFdJU0VfQUNfUkVDVl9NT0RFLCAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjMwOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9WQUxJRF9CSVRfTlVNQkVSLCAgICAgICAgNyB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIzMTpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ1JZUFRPMSwgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMzI6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9TT0YsICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjMzOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19TT0YsICAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIzNDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX0VPRiwgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMzU6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX0VPRiwgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjM2Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9ERUFGX1RJTUUsICAgICAgICAgICAgICAgNCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIzNzpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ1JNLCAgICAgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMzg6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NSTV9NSU5fTEVOLCAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjM5Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9UMV9UQUdfRlJBTUUsICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI0MDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfUkZDQSwgICAgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNDE6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0dVQVJEX1RJTUVfQVRfSU5JVElBVE9SLCA2IH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjQyOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsICAgICAgICAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI0My1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjQ0LVx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9TVEFOREFSRF0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjQ1Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9JTklUSUFMX0dVQVJEX1RJTUUsICAgICAgNiB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI0NjpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX0NSQywgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNDc6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX0NSQywgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjQ4Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9NVUxUSV9DQVJELCAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI0OTpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX1BBUklUWSwgICAgICAgICAgICAgIDEgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNTA6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX1BBUklUWSwgICAgICAgICAgICAxIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjUxOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9CSVRXSVNFX0FDX1JFQ1ZfTU9ERSwgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI1MjpcdFx0eyBQT1JUMTAwX0lOX1BST1RfVkFMSURfQklUX05VTUJFUiwgICAgICAgIDggfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNTM6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NSWVBUTzEsICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjU0Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfU09GLCAgICAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI1NTpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfU09GLCAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNTY6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9FT0YsICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjU3Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19FT0YsICAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI1ODpcdFx0eyBQT1JUMTAwX0lOX1BST1RfREVBRl9USU1FLCAgICAgICAgICAgICAgIDQgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNTk6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NSTSwgICAgICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjYwOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9DUk1fTUlOX0xFTiwgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI2MTpcdFx0eyBQT1JUMTAwX0lOX1BST1RfVDFfVEFHX0ZSQU1FLCAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNjI6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX1JGQ0EsICAgICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjYzOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9HVUFSRF9USU1FX0FUX0lOSVRJQVRPUiwgNiB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI2NDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAgICAgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yNjUtXHR9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI2Ni1cdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkRfV0lUSF9DUkNfQV0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjY3Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9JTklUSUFMX0dVQVJEX1RJTUUsICAgICAgNiB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI2ODpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX0NSQywgICAgICAgICAgICAgICAgIDEgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNjk6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX0NSQywgICAgICAgICAgICAgICAxIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjcwOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9NVUxUSV9DQVJELCAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI3MTpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX1BBUklUWSwgICAgICAgICAgICAgIDEgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNzI6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX1BBUklUWSwgICAgICAgICAgICAxIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjczOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9CSVRXSVNFX0FDX1JFQ1ZfTU9ERSwgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI3NDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfVkFMSURfQklUX05VTUJFUiwgICAgICAgIDggfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNzU6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NSWVBUTzEsICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mjc2Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfU09GLCAgICAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI3NzpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfU09GLCAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNzg6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9FT0YsICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mjc5Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19FT0YsICAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI4MDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfREVBRl9USU1FLCAgICAgICAgICAgICAgIDQgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyODE6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NSTSwgICAgICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjgyOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9DUk1fTUlOX0xFTiwgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI4MzpcdFx0eyBQT1JUMTAwX0lOX1BST1RfVDFfVEFHX0ZSQU1FLCAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyODQ6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX1JGQ0EsICAgICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mjg1Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9HVUFSRF9USU1FX0FUX0lOSVRJQVRPUiwgNiB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI4NjpcdFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAgICAgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yODctXHR9LFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yODktXHRcdC8qIG5mY19kaWdpdGFsX2ZyYW1pbmdfbmZjYV9zaG9ydCAqL1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI5MDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX0NSQywgICAgICAgICAgMiB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI5MTpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfQ1JDLCAgICAgICAgMiB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI5MjpcdFx0eyBQT1JUMTAwX0lOX1BST1RfVkFMSURfQklUX05VTUJFUiwgOCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI5MzpcdFx0eyBQT1JUMTAwX0lOX1BST1RfVDFfVEFHX0ZSQU1FLCAgICAgMiB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI5NDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI5NS1cdH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI5Ny1cdFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNhX3N0YW5kYXJkICovXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mjk4Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfQ1JDLCAgIDEgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyOTk6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX0NSQywgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMwMDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzAxLVx0fSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzAzLVx0XHQvKiBuZmNfZGlnaXRhbF9mcmFtaW5nX25mY2Ffc3RhbmRhcmRfd2l0aF9jcmNfYSAqL1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMwNDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzA1LVx0fSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzA3LVx0XHQvKiBuZmNfZGlnaXRhbF9mcmFtaW5nX25mY2Ffc3RhbmRhcmQgKi9cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMDg6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0VORCwgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTMwOS1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzEwLVx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDRl0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzExOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9JTklUSUFMX0dVQVJEX1RJTUUsICAgICAxOCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMxMjpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX0NSQywgICAgICAgICAgICAgICAgIDEgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMTM6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX0NSQywgICAgICAgICAgICAgICAxIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzE0Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9NVUxUSV9DQVJELCAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMxNTpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX1BBUklUWSwgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMTY6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX1BBUklUWSwgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzE3Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9CSVRXSVNFX0FDX1JFQ1ZfTU9ERSwgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMxODpcdFx0eyBQT1JUMTAwX0lOX1BST1RfVkFMSURfQklUX05VTUJFUiwgICAgICAgIDggfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMTk6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NSWVBUTzEsICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzIwOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfU09GLCAgICAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMyMTpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfU09GLCAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMjI6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9FT0YsICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzIzOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19FT0YsICAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMyNDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfREVBRl9USU1FLCAgICAgICAgICAgICAgIDQgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMjU6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NSTSwgICAgICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzI2Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9DUk1fTUlOX0xFTiwgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMyNzpcdFx0eyBQT1JUMTAwX0lOX1BST1RfVDFfVEFHX0ZSQU1FLCAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMjg6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX1JGQ0EsICAgICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzI5Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9HVUFSRF9USU1FX0FUX0lOSVRJQVRPUiwgNiB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMzMDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAgICAgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMzEtXHR9LFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMzMtXHRcdC8qIG5mY19kaWdpdGFsX2ZyYW1pbmdfbmZjZiAqL1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMzNDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzM1LVx0fSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzM3LVx0XHQvKiBuZmNfZGlnaXRhbF9mcmFtaW5nX25mY2YgKi9cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMzg6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0lOSVRJQUxfR1VBUkRfVElNRSwgICAgIDE4IH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzM5Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfQ1JDLCAgICAgICAgICAgICAgICAgMSB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM0MDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfQ1JDLCAgICAgICAgICAgICAgIDEgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNDE6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX01VTFRJX0NBUkQsICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzQyOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfUEFSSVRZLCAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM0MzpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfUEFSSVRZLCAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNDQ6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0JJVFdJU0VfQUNfUkVDVl9NT0RFLCAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzQ1Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9WQUxJRF9CSVRfTlVNQkVSLCAgICAgICAgOCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM0NjpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ1JZUFRPMSwgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNDc6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9TT0YsICAgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzQ4Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19TT0YsICAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM0OTpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX0VPRiwgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNTA6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX0VPRiwgICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzUxOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9ERUFGX1RJTUUsICAgICAgICAgICAgICAgNCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM1MjpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ1JNLCAgICAgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNTM6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NSTV9NSU5fTEVOLCAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzU0Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9UMV9UQUdfRlJBTUUsICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM1NTpcdFx0eyBQT1JUMTAwX0lOX1BST1RfUkZDQSwgICAgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNTY6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0dVQVJEX1RJTUVfQVRfSU5JVElBVE9SLCA2IH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzU3Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsICAgICAgICAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM1OC1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzU5LVx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDX0RFUF9BQ1RJVkFURURdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM2MDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzYxLVx0fSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zNjItXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNCXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNjM6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0lOSVRJQUxfR1VBUkRfVElNRSwgICAgIDIwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzY0Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfQ1JDLCAgICAgICAgICAgICAgICAgMSB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM2NTpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfQ1JDLCAgICAgICAgICAgICAgIDEgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNjY6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX01VTFRJX0NBUkQsICAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzY3Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfUEFSSVRZLCAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM2ODpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfUEFSSVRZLCAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNjk6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0JJVFdJU0VfQUNfUkVDVl9NT0RFLCAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzcwOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9WQUxJRF9CSVRfTlVNQkVSLCAgICAgICAgOCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM3MTpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ1JZUFRPMSwgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNzI6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9TT0YsICAgICAgICAgICAgICAgICAxIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzczOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19TT0YsICAgICAgICAgICAgICAgMSB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM3NDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX0VPRiwgICAgICAgICAgICAgICAgIDEgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNzU6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX0VPRiwgICAgICAgICAgICAgICAxIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mzc2Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9ERUFGX1RJTUUsICAgICAgICAgICAgICAgNCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM3NzpcdFx0eyBQT1JUMTAwX0lOX1BST1RfQ1JNLCAgICAgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNzg6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0NSTV9NSU5fTEVOLCAgICAgICAgICAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mzc5Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9UMV9UQUdfRlJBTUUsICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM4MDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfUkZDQSwgICAgICAgICAgICAgICAgICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozODE6XHRcdHsgUE9SVDEwMF9JTl9QUk9UX0dVQVJEX1RJTUVfQVRfSU5JVElBVE9SLCA2IH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzgyOlx0XHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsICAgICAgICAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM4My1cdH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM4NS1cdFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNiICovXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mzg2Olx0XHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsICAgICAgICAgICAgICAgICAgICAgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM4Ny1cdH0sXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM4OS1cdFtORkNfRElHSVRBTF9GUkFNSU5HX0xBU1RdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM5MDpcdFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzkxLVx0fSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9Mzk0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcG9ydDEwMF9wcm90b2NvbFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM5NTp0Z19wcm90b2NvbHNbXVtQT1JUMTAwX1RHX01BWF9OVU1fUFJPVE9DT0xTICYjNDM7IDFdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM5Ni1cdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU0hPUlRdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM5NzpcdFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzk4LVx0fSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zOTktXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NUQU5EQVJEXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MDA6XHRcdHsgUE9SVDEwMF9UR19QUk9UX0VORCwgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQwMS1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDAyLVx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9TVEFOREFSRF9XSVRIX0NSQ19BXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MDM6XHRcdHsgUE9SVDEwMF9UR19QUk9UX0VORCwgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQwNC1cdH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDA1LVx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UMVRdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQwNjpcdFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDA3LVx0fSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MDgtXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QyVF0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDA5Olx0XHR7IFBPUlQxMDBfVEdfUFJPVF9FTkQsIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MTAtXHR9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQxMS1cdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfTkZDX0RFUF0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDEyOlx0XHR7IFBPUlQxMDBfVEdfUFJPVF9UVSwgICAgIDEgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MTM6XHRcdHsgUE9SVDEwMF9UR19QUk9UX1JGX09GRiwgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQxNDpcdFx0eyBQT1JUMTAwX1RHX1BST1RfQ1JNLCAgICA3IH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDE1Olx0XHR7IFBPUlQxMDBfVEdfUFJPVF9FTkQsICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MTYtXHR9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQxNy1cdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0ZdID0ge1xuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQxODpcdFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDE5LVx0fSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MjAtXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNGX1QzVF0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDIxOlx0XHR7IFBPUlQxMDBfVEdfUFJPVF9FTkQsIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MjItXHR9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQyMy1cdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0ZfTkZDX0RFUF0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDI0Olx0XHR7IFBPUlQxMDBfVEdfUFJPVF9UVSwgICAgIDEgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MjU6XHRcdHsgUE9SVDEwMF9UR19QUk9UX1JGX09GRiwgMCB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQyNjpcdFx0eyBQT1JUMTAwX1RHX1BST1RfQ1JNLCAgICA3IH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDI3Olx0XHR7IFBPUlQxMDBfVEdfUFJPVF9FTkQsICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MjgtXHR9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQyOS1cdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ19ERVBfQUNUSVZBVEVEXSA9IHtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MzA6XHRcdHsgUE9SVDEwMF9UR19QUk9UX1JGX09GRiwgMSB9LFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQzMTpcdFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAgICAwIH0sXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDMyLVx0fSxcbi0tXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDM0LVx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTEFTVF0gPSB7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDM1Olx0XHR7IFBPUlQxMDBfVEdfUFJPVF9FTkQsICAgIDAgfSxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MzYtXHR9LFxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz01NDA9c3RhdGljIHZvaWQgcG9ydDEwMF90eF9mcmFtZV9pbml0KHZvaWQgKl9mcmFtZSwgdTggY21kX2NvZGUpXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTU0NC1cdGZyYW1lLVx1MDAzZXByZWFtYmxlID0gMDtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo1NDU6XHRmcmFtZS1cdTAwM2VzdGFydF9mcmFtZSA9IGNwdV90b19iZTE2KFBPUlQxMDBfRlJBTUVfU09GKTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo1NDY6XHRmcmFtZS1cdTAwM2VleHRlbmRlZF9mcmFtZSA9IGNwdV90b19iZTE2KFBPUlQxMDBfRlJBTUVfRVhUKTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo1NDc6XHRQT1JUMTAwX0ZSQU1FX0RJUkVDVElPTihmcmFtZSkgPSBQT1JUMTAwX0ZSQU1FX0RJUl9PVVQ7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NTQ4Olx0UE9SVDEwMF9GUkFNRV9DTUQoZnJhbWUpID0gY21kX2NvZGU7XG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNTQ5LVx0ZnJhbWUtXHUwMDNlZGF0YWxlbiA9IGNwdV90b19sZTE2KDIpO1xuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz01NTI9c3RhdGljIHZvaWQgcG9ydDEwMF90eF9mcmFtZV9maW5pc2godm9pZCAqX2ZyYW1lKVxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy01NTctXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NTU4Olx0UE9SVDEwMF9GUkFNRV9DSEVDS1NVTShmcmFtZSkgPVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTU1OS1cdFx0cG9ydDEwMF9kYXRhX2NoZWNrc3VtKGZyYW1lLVx1MDAzZWRhdGEsIGxlMTZfdG9fY3B1KGZyYW1lLVx1MDAzZWRhdGFsZW4pKTtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy01NjAtXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NTYxOlx0UE9SVDEwMF9GUkFNRV9QT1NUQU1CTEUoZnJhbWUpID0gMDtcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy01NjItfVxuLS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz01NzE9c3RhdGljIGJvb2wgcG9ydDEwMF9yeF9mcmFtZV9pc192YWxpZChjb25zdCB2b2lkICpfZnJhbWUpXG4tLVxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTU3NS1cbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo1NzY6XHRpZiAoZnJhbWUtXHUwMDNlc3RhcnRfZnJhbWUgIT0gY3B1X3RvX2JlMTYoUE9SVDEwMF9GUkFNRV9TT0YpIHx8XG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU4MjkKCQkJCQkJCW91dHB1dDogMTY4CgkJCQkJCQl0aG91Z2h0czogMTYzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiBORkMgRGlnaXRhbCBUYXJnZXQgREVQIFJlcXVlc3QgSGFuZGxpbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBpcyB0byBkZXRlcm1pbmUgdGhlIGltcGFjdCBvZiB0aGlzIHBhdGNoIGFuZCB3aGV0aGVyIGZ1enppbmcgaXMgd2FycmFudGVkLiBJIHNlZSB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYENPTkZJR19ORkNgIGFuZCBgQ09ORklHX05GQ19ESUdJVEFMYC4gTG9va2luZyBhdCBgZHJpdmVycy9uZmMvS2NvbmZpZ2AsIGl0JiMzOTtzIGV2aWRlbnQgdGhhdCBgTkZDX1NJTWAgYW5kIGBORkNfUE9SVDEwMGAgYXJlIGFsc28gcmVsZXZhbnQsIGJ1dCB0aGUgY29yZSBidWlsZGluZyBibG9ja3MgYXJlIGBORkNgIGFuZCBgTkZDX0RJR0lUQUxgLCB3aGljaCBkaXJlY3RseSBlbmFibGUgdGhlIGRpZ2l0YWwgTkZDIHByb3RvY29sIHN0YWNrLCBzcGVjaWZpY2FsbHkgYGRpZ2l0YWxfZGVwLmNgLgoKVGhlIGhlYXJ0IG9mIHRoaXMgcGF0Y2ggbGllcyB3aXRoaW4gYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2AsIHNwZWNpZmljYWxseSB0aGUgYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYCBmdW5jdGlvbi4gSXQmIzM5O3MgbWFya2VkIGBzdGF0aWNgLCBidXQsIGNydWNpYWxseSwgaXQmIzM5O3Mgbm90IGlubGluZWQgYmVjYXVzZSBpdHMgYWRkcmVzcyBpcyB0YWtlbiBhbmQgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlcjogdGhpcyBtZWFucyBpdCBnZW5lcmF0ZXMgYSB1bmlxdWUgc3ltYm9sIGFuZCBpcyBkZWZpbml0ZWx5IGEgc3BlY2lmaWMgcG9pbnQgdG8gdGFyZ2V0LiBPdGhlciByZWxhdGVkIGZ1bmN0aW9ucyBpbiBgZGlnaXRhbF9kZXAuY2AsIHN1Y2ggYXMgYGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzYCwgYGRpZ2l0YWxfdGdfc2VuZF9hdHJfcmVzX2NvbXBsZXRlYCwgYW5kIGBkaWdpdGFsX3RnX3NlbmRfcHNsX3Jlc19jb21wbGV0ZWAgYXJlIGFsc28gaW4gdGhpcyBzYW1lIGNvZGUuCgpUaGlzIHBhdGNoIGRpcmVjdGx5IG1vZGlmaWVzIHRoZSBsb2dpYyB3aXRoaW4gYGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxYCBhbmQsIGFmdGVyIGNhcmVmdWxseSByZXZpZXdpbmcgdGhlIGNvZGUsIGl0IGJlY29tZXMgY2xlYXIgd2hhdCYjMzk7cyBoYXBwZW5pbmcuIFRoZSBvcmlnaW5hbCBjb2RlIGhhZCBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eS4gU3BlY2lmaWNhbGx5LCB3aGVuIGhhbmRsaW5nIGEgREVQIChEYXRhIEV4Y2hhbmdlIFByb3RvY29sKSByZXF1ZXN0IHdoZXJlIHRoZSBESUQgKERldmljZSBJRCkgYml0IGlzIHNldCwgaXQgdXNlZCBhIGhhcmRjb2RlZCBpbmRleCBgM2AgdG8gYWNjZXNzIHRoZSByZXNwb25zZSBkYXRhLCBldmVuIHdoZW4gdGhlIGByZXNwLSZndDtsZW5gIHdhcyBzbWFsbGVyIHRoYW4gdGhhdCBpbmRleC4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGJ5IGNoZWNraW5nIHRoZSBib3VuZHMgb2YgYHJlc3AtJmd0O2RhdGFgIGJlZm9yZSByZWFkaW5nLCBlbnN1cmluZyB0aGUgaW5kZXggaXMgd2l0aGluIHRoZSB2YWxpZCByYW5nZSBhbmQgdXNpbmcgdGhlIGNvcnJlY3QgaW5kZXggdmlhIHRoZSBgc2l6ZWAgdmFyaWFibGUuIFRoaXMgYXZvaWRzIHRoZSBvdXQtb2YtYm91bmRzIHJlYWQgYW5kIGZpeGVzIHRoZSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eSwgYnV0IGlzIHN0aWxsIHJlYWNoYWJsZSBjb2RlLgoKTm93LCBjb25zaWRlcmluZyB0aGUgcGF0Y2gmIzM5O3MgY2hhbmdlcywgdGhlIGNvcmUgZnVuY3Rpb25zIHRvIGZvY3VzIG9uIGFyZSBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgIGFuZCBwb3RlbnRpYWxseSBgZGlnaXRhbF90Z19zZW5kX2RlcF9yZXNgLiBUaGVzZSBhcmUgdGhlIHByZWNpc2UgZnVuY3Rpb25zIHdoZXJlIHRoZSBtb2RpZmllZCBsb2dpYyBpcyBpbXBsZW1lbnRlZCwgbWFraW5nIHRoZW0gdGhlIG1vc3QgcmVsZXZhbnQgZm9yIHRlc3RpbmcuCgpUbyBlbmFibGUgdGhlIGNvZGUgaW4gdGhpcyBwYXRjaCwgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9ucyBhcmUgbmVjZXNzYXJ5OiBgTkZDYCBhbmQgYE5GQ19ESUdJVEFMYC4KClRoZXJlZm9yZSwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgZnV6emluZyB0aGlzIGNvZGUgaXMgZXNzZW50aWFsLiBUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgdGFuZ2libGUgYnVnIGluIGtlcm5lbCBuZXR3b3JraW5nIE5GQyBwcm90b2NvbCBzdGFjayAoYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2ApIHRoYXQgZGlyZWN0bHkgaW52b2x2ZXMgcGFja2V0IHZhbGlkYXRpb24gYW5kIGNoZWNraW5nIGJvdW5kcyBmb3IgREVQIHJlcXVlc3QgZnJhbWVzIGluIE5GQyB0YXJnZXQgbW9kZS4gSXQmIzM5O3MgYSBjbGVhciB2dWxuZXJhYmlsaXR5IHRoYXQgY2FuIGJlIHRyaWdnZXJlZCB0aHJvdWdoIGEgdmFyaWV0eSBvZiBORkMgZGlnaXRhbCBkZXZpY2VzLCBtYWtpbmcgZnV6emluZyBib3RoIHByYWN0aWNhbCBhbmQgY3JpdGljYWwuIEkgdGhpbmsgd2UgaGF2ZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDssCiAgICAmIzM0O05GQ19ESUdJVEFMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEmIzM0OywKICAgICYjMzQ7ZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBib3VuZHMgY2hlY2sgYW5kIHZhbGlkYXRpb24gbG9naWMgaW4gZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoKSB3aGVuIGhhbmRsaW5nIERFUCAoRGF0YSBFeGNoYW5nZSBQcm90b2NvbCkgcmVxdWVzdCBmcmFtZXMgd2l0aCB0aGUgRElEIGJpdCBzZXQgaW4gdGhlIE5GQyBkaWdpdGFsIHByb3RvY29sIHN0YWNrLiBQcmV2aW91c2x5LCByZWFkaW5nIHJlc3AtXHUwMDNlZGF0YVszXSBjb3VsZCBjYXVzZSBhbiBvdXQtb2YtYm91bmRzIGFjY2VzcyBpZiByZXNwLVx1MDAzZWxlbiB3YXMgaW5zdWZmaWNpZW50LiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBORkMgdGFyZ2V0IG1vZGUgY29tbXVuaWNhdGlvbiB2aWEgZW11bGF0ZWQgdmlydHVhbCBkZXZpY2VzIChuZmNzaW0pIG9yIFVTQiBORkMgZGV2aWNlcyAocG9ydDEwMCkgc3VwcG9ydGVkIGluIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkMmIzM0OywKICAgICYjMzQ7TkZDX0RJR0lUQUwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSYjMzQ7LAogICAgJiMzNDtkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJvdW5kcyBjaGVjayBhbmQgdmFsaWRhdGlvbiBsb2dpYyBpbiBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSgpIHdoZW4gaGFuZGxpbmcgREVQIChEYXRhIEV4Y2hhbmdlIFByb3RvY29sKSByZXF1ZXN0IGZyYW1lcyB3aXRoIHRoZSBESUQgYml0IHNldCBpbiB0aGUgTkZDIGRpZ2l0YWwgcHJvdG9jb2wgc3RhY2suIFByZXZpb3VzbHksIHJlYWRpbmcgcmVzcC1cdTAwM2VkYXRhWzNdIGNvdWxkIGNhdXNlIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlmIHJlc3AtXHUwMDNlbGVuIHdhcyBpbnN1ZmZpY2llbnQuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIE5GQyB0YXJnZXQgbW9kZSBjb21tdW5pY2F0aW9uIHZpYSBlbXVsYXRlZCB2aXJ0dWFsIGRldmljZXMgKG5mY3NpbSkgb3IgVVNCIE5GQyBkZXZpY2VzIChwb3J0MTAwKSBzdXBwb3J0ZWQgaW4gZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjQwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6NDA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1pc3NpbmcgYm91bmRzIGNoZWNrIGluIG5ldC9uZmMvZGlnaXRhbF9kZXAuYyB3aXRoaW4gZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoKS4gUHJldmlvdXNseSwgd2hlbiBESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSB3YXMgdHJ1ZSwgcmVzcC1cdTAwM2VkYXRhWzNdIHdhcyBhY2Nlc3NlZCB3aXRob3V0IGNoZWNraW5nIGlmIHJlc3AtXHUwMDNlbGVuIHdhcyBhdCBsZWFzdCA0IGJ5dGVzIChzaXplICYjNDM7IDEpLCBwb3RlbnRpYWxseSByZXN1bHRpbmcgaW4gYW4gb3V0LW9mLWJvdW5kcyByZWFkIG9uIHRoZSByZWNlaXZlZCBza2IgYnVmZmVyLiBUaGUgcGF0Y2ggYWRkcyBgcmVzcC1cdTAwM2VsZW4gXHUwMDNjIHNpemUgJiM0MzsgMWAgdG8gcHJldmVudCB0aGlzIG91dC1vZi1ib3VuZHMgcmVhZC5cblxuVGhpcyBpcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSwgd2hpY2ggaXMgZGV0ZWN0YWJsZSBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBtYW5pcHVsYXRlIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnksIGRvZXMgbm90IGNvcHkga2VybmVsIGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIGZpZWxkcy4gVGh1cywgS01TQU4gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTg3OTJkMTE1MDNmZmM0NTFkYTU3YTU5NDBiOWE2NmU4ZDY2ZjhiYgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gU2VwIDEzIDIwOjM5OjE2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25mYy9kaWdpdGFsX2RlcC5jIGIvbmV0L25mYy9kaWdpdGFsX2RlcC5jCmluZGV4IDM5ODJmYTA4NDczN2YuLmFlNTQwN2ZjYTEyZDQgMTAwNjQ0Ci0tLSBhL25ldC9uZmMvZGlnaXRhbF9kZXAuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmZjL2RpZ2l0YWxfZGVwLmMKQEAgLTExMTcsMTIgJiM0MzsxMTE3LDEyIEBAIHN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZywKIAlwZmIgPSBkZXBfcmVxLSZndDtwZmI7CiAKIAlpZiAoRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikpIHsKLQkJaWYgKGRkZXYtJmd0O2RpZCAmYW1wOyZhbXA7IChkZGV2LSZndDtkaWQgPT0gcmVzcC0mZ3Q7ZGF0YVszXSkpIHsKLQkJCXNpemUmIzQzOyYjNDM7OwotCQl9IGVsc2UgewomIzQzOwkJaWYgKHJlc3AtJmd0O2xlbiAmbHQ7IHNpemUgJiM0MzsgMSB8fCAhZGRldi0mZ3Q7ZGlkIHx8CiYjNDM7CQkgICAgZGRldi0mZ3Q7ZGlkICE9IHJlc3AtJmd0O2RhdGFbc2l6ZV0pIHsKIAkJCXJjID0gLUVJTzsKIAkJCWdvdG8gZXhpdDsKIAkJfQomIzQzOwkJc2l6ZSYjNDM7JiM0Mzs7CiAJfSBlbHNlIGlmIChkZGV2LSZndDtkaWQpIHsKIAkJcmMgPSAtRUlPOwogCQlnb3RvIGV4aXQ7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTcxCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4KCioqQW5hbHl6aW5nIHRoaXMgUGF0Y2g6IEEgRm9jdXNlZCBBcHByb2FjaCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gcGlucG9pbnQgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBiZWluZyBhbHRlcmVkIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgKndoeSouIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgemVyb2luZyBpbiBvbiBgbmV0L25mYy9kaWdpdGFsX2RlcC5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDExMTcuIEkmIzM5O2xsIHByb2JhYmx5IGZpcmUgdXAgZWl0aGVyIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCDigJMgd2hhdGV2ZXImIzM5O3MgcXVpY2tlc3QgYW5kIG1vc3QgZWZmaWNpZW50IGdpdmVuIG15IGN1cnJlbnQgZW52aXJvbm1lbnQg4oCTIHRvIGV4dHJhY3QgdGhhdCBzZWN0aW9uIG9mIHRoZSBjb2RlIGFuZCBnZXQgYSBjbGVhcmVyIHBpY3R1cmUuIE15IGdvYWwgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgaW50ZW50IG9mIHRoZSBjaGFuZ2UgYmVmb3JlIEkgZ28gYW55IGRlZXBlci4gVGhpcyBpbml0aWFsIGZvY3VzZWQgZXhhbWluYXRpb24gd2lsbCBnaXZlIG1lIGEgY3JpdGljYWwgZm91bmRhdGlvbiBmb3IgZnVydGhlciBhbmFseXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvbmZjL2RpZ2l0YWxfZGVwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDk1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDU1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEwOTU6XHRcdH1cbjEwOTY6XHRcbjEwOTc6XHRcdHJjID0gZGlnaXRhbF9za2JfcHVsbF9kZXBfc29kKGRkZXYsIHJlc3ApO1xuMTA5ODpcdFx0aWYgKHJjKSB7XG4xMDk5Olx0XHRcdFBST1RPQ09MX0VSUihcJiMzNDsxNC40LjEuMlwmIzM0Oyk7XG4xMTAwOlx0XHRcdGdvdG8gZXhpdDtcbjExMDE6XHRcdH1cbjExMDI6XHRcbjExMDM6XHRcdGlmIChyZXNwLVx1MDAzZWxlbiBcdTAwM2UgZGRldi1cdTAwM2Vsb2NhbF9wYXlsb2FkX21heCkge1xuMTEwNDpcdFx0XHRyYyA9IC1FTVNHU0laRTtcbjExMDU6XHRcdFx0Z290byBleGl0O1xuMTEwNjpcdFx0fVxuMTEwNzpcdFxuMTEwODpcdFx0c2l6ZSA9IHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3Jlcyk7XG4xMTA5Olx0XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopcmVzcC1cdTAwM2VkYXRhO1xuMTExMDpcdFxuMTExMTpcdFx0aWYgKHJlc3AtXHUwMDNlbGVuIFx1MDAzYyBzaXplIHx8IGRlcF9yZXEtXHUwMDNlZGlyICE9IERJR0lUQUxfTkZDX0RFUF9GUkFNRV9ESVJfT1VUIHx8XG4xMTEyOlx0XHQgICAgZGVwX3JlcS1cdTAwM2VjbWQgIT0gRElHSVRBTF9DTURfREVQX1JFUSkge1xuMTExMzpcdFx0XHRyYyA9IC1FSU87XG4xMTE0Olx0XHRcdGdvdG8gZXhpdDtcbjExMTU6XHRcdH1cbjExMTY6XHRcbjExMTc6XHRcdHBmYiA9IGRlcF9yZXEtXHUwMDNlcGZiO1xuMTExODpcdFxuMTExOTpcdFx0aWYgKERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpKSB7XG4xMTIwOlx0XHRcdGlmIChyZXNwLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZSAmIzQzOyAxIHx8ICFkZGV2LVx1MDAzZWRpZCB8fFxuMTEyMTpcdFx0XHQgICAgZGRldi1cdTAwM2VkaWQgIT0gcmVzcC1cdTAwM2VkYXRhW3NpemVdKSB7XG4xMTIyOlx0XHRcdFx0cmMgPSAtRUlPO1xuMTEyMzpcdFx0XHRcdGdvdG8gZXhpdDtcbjExMjQ6XHRcdFx0fVxuMTEyNTpcdFx0XHRzaXplJiM0MzsmIzQzOztcbjExMjY6XHRcdH0gZWxzZSBpZiAoZGRldi1cdTAwM2VkaWQpIHtcbjExMjc6XHRcdFx0cmMgPSAtRUlPO1xuMTEyODpcdFx0XHRnb3RvIGV4aXQ7XG4xMTI5Olx0XHR9XG4xMTMwOlx0XG4xMTMxOlx0XHRpZiAoRElHSVRBTF9ORkNfREVQX05BRF9CSVRfU0VUKHBmYikpIHtcbjExMzI6XHRcdFx0cmMgPSAtRUlPO1xuMTEzMzpcdFx0XHRnb3RvIGV4aXQ7XG4xMTM0Olx0XHR9XG4xMTM1Olx0XG4xMTM2Olx0XHRpZiAoc2l6ZSBcdTAwM2UgcmVzcC1cdTAwM2VsZW4pIHtcbjExMzc6XHRcdFx0cmMgPSAtRUlPO1xuMTEzODpcdFx0XHRnb3RvIGV4aXQ7XG4xMTM5Olx0XHR9XG4xMTQwOlx0XG4xMTQxOlx0XHRza2JfcHVsbChyZXNwLCBzaXplKTtcbjExNDI6XHRcbjExNDM6XHRcdHN3aXRjaCAoRElHSVRBTF9ORkNfREVQX1BGQl9UWVBFKHBmYikpIHtcbjExNDQ6XHRcdGNhc2UgRElHSVRBTF9ORkNfREVQX1BGQl9JX1BEVTpcbjExNDU6XHRcdFx0cHJfZGVidWcoXCYjMzQ7RElHSVRBTF9ORkNfREVQX1BGQl9JX1BEVVxcblwmIzM0Oyk7XG4xMTQ2Olx0XG4xMTQ3Olx0XHRcdGlmIChkZGV2LVx1MDAzZWF0bl9jb3VudCkge1xuMTE0ODpcdFx0XHRcdC8qIFRoZSB0YXJnZXQgaGFzIHJlY2VpdmVkIChhbmQgcmVwbGllZCB0bykgYXQgbGVhc3Qgb25lXG4xMTQ5Olx0XHRcdFx0ICogQVROIERFUF9SRVEuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyMTUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRGlnaXRhbCBORkMgREVQIEJ1ZyBGaXgqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgZXhhY3RseSB3aGF0IGJ1ZyBpcyBiZWluZyBhZGRyZXNzZWQsIHNwZWNpZmljYWxseSB3aXRoaW4gYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2AuIEkmIzM5O20gc2VlaW5nIGEgY29kZSBzbmlwcGV0IGhlcmUuLi4gaXQgbG9va3MgbGlrZSBhIGNvbmRpdGlvbmFsIGJsb2NrIGRlYWxpbmcgd2l0aCBEZXZpY2UgSUQgKERJRCkgaGFuZGxpbmcgaW4gdGhlIERpZ2l0YWwgTkZDIERFUCBwcm90b2NvbC4gSSBzZWUgdGhlICYjMzQ7UHJldmlvdXNseSYjMzQ7IGNvZGUgYmxvY2ssIGFuZCBJIG5lZWQgdG8gcGllY2UgdG9nZXRoZXIgdGhlIG9yaWdpbmFsIGxvZ2ljLiBPa2F5LCBpZiB0aGUgYERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpYCBtYWNybyBpcyB0cnVlLCB0aGVuIHdlIGhhdmUgYSBESUQuIFRoZSBjb2RlIGNoZWNrcyBpZiB0aGUgZGV2aWNlIGFscmVhZHkgaGFzIGEgYGRkZXYtJmd0O2RpZGAgc2V0IGFuZCBpZiB0aGUgRElEIGluIHRoZSByZXNwb25zZSBgcmVzcC0mZ3Q7ZGF0YVszXWAgbWF0Y2hlcy4gSWYgdGhleSBtYXRjaCwgdGhlbiBgc2l6ZSYjNDM7JiM0MztgLiBJZiB0aGV5ICpkb24mIzM5O3QqIG1hdGNoLCBpdCYjMzk7cyBhbiBJL08gZXJyb3IgKGAtRUlPYCksIGFuZCB3ZSBqdW1wIHRvIHRoZSBleGl0LiBPdGhlcndpc2UsIGlmIHRoZXJlJiMzOTtzIGEgZGV2aWNlIERJRCBzZXQgKGBkZGV2LSZndDtkaWRgKSwgYnV0IGBESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKWAgaXMgKm5vdCogc2V0LCB0aGlzIGFnYWluIHJhaXNlcyBhbiBJL08gZXJyb3IuIEkgZ2V0IHRoZSBiYXNpYyBnaXN0IG9mIHRoaXMsIGJ1dCBob2xkIG9uLi4uIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeS4gV2hhdCBleGFjdGx5IGlzIGByZXNwLSZndDtkYXRhWzNdYCBzdXBwb3NlZCB0byBiZSBoZXJlPyBJdCBmZWVscyBsaWtlIHNvbWV0aGluZyBpcyBtaXNzaW5nLiBJIHNob3VsZCBjaGVjayB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgYHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzYCBzdHJ1Y3R1cmUgcmlnaHQgYXdheSB0byBwcm9wZXJseSB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9kaWdpdGFsX2RlcC5jPTk0PXN0cnVjdCBkaWdpdGFsX3BzbF9yZXMge1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05OS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDA6c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMge1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMS1cdHU4IGRpcjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MjAwPWRpZ2l0YWxfc2VuZF9kZXBfZGF0YV9wcmVwKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MjAxOlx0XHRcdCAgIHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxX3Jlcyxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0yMDItXHRcdFx0ICAgc3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2gpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTUyOT1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9hY2soc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTMxLXtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1MzI6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01MzMtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01MzktXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTQwOlx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NDEtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTQyOlx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU0My1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTY2PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX25hY2soc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTY4LXtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1Njk6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzAtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzYtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTc3Olx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzgtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTc5Olx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTU4MC1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTk4PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MDAte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYwMTpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYwMi1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYwOC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MDk6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYxMC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MTE6XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjEyLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz02Mjk9c3RhdGljIGludCBkaWdpdGFsX2luX3NlbmRfcnRveChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MzEte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYzMjpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYzMy1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTY0Ni1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2NDc6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTY0OC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2NDk6XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjUwLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz02ODY9c3RhdGljIHZvaWQgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02ODktXHRzdHJ1Y3QgZGlnaXRhbF9kYXRhX2V4Y2ggKmRhdGFfZXhjaCA9IGFyZztcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2OTA6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3Jlcztcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02OTEtXHR1OCBwZmI7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTc1NS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo3NTY6XHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo3NTc6XHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopcmVzcC1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTc1OC1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTA0PWludCBkaWdpdGFsX2luX3NlbmRfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05MDcte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjkwODpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkwOS1cdHN0cnVjdCBza19idWZmICpjaGFpbmluZ19za2IsICp0bXBfc2tiO1xuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05MTEtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTEyOlx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05MTMtXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTE0Olx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxNS1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTc4PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2FjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODAte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk4MTpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk4Mi1cdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk4OC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5ODk6XHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk5MC1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo5OTE6XHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTkyLVxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDI0PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMjUte1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMjY6XHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3Jlcztcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDI3LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAzMy1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDM0Olx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDM1LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMzY6XHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAzNy1cbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTA3Nz1zdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwODAtXHRpbnQgcmM7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA4MTpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwODItXHR1OCBwZmI7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExMDctXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTEwODpcdHNpemUgPSBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jOjExMDk6XHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopcmVzcC1cdTAwM2VkYXRhO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExMTAtXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEyOTc9aW50IGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTI5OC17XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTI5OTpcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMDAtXHRzdHJ1Y3Qgc2tfYnVmZiAqY2hhaW5pbmdfc2tiLCAqdG1wX3NrYjtcbi0tXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwMi1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzAzOlx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzA0LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzMDU6XHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVx1MDAzZWRhdGE7XG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjMwOAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBgZGlnaXRhbF9kZXAuY2AgQ29kZSoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2AgZmlsZSwgc3BlY2lmaWNhbGx5IGxpbmVzIDk1IHRocm91Z2ggMTEwLiBLbm93aW5nIHRoZSBORkMgc3RhY2sgcHJldHR5IHdlbGwsIEkgY2FuIGxpa2VseSBndWVzcyB3aGF0JiMzOTtzIGdvaW5nIG9uIGluIHRoYXQgc2VjdGlvbi4gR2l2ZW4gdGhlIGNvbnRleHQsIEkmIzM5O20gcHJvYmFibHkgbG9va2luZyBhdCBzb21lIGNvcmUgZGlnaXRhbCBkYXRhIGV4Y2hhbmdlIGZ1bmN0aW9uLCBwb3NzaWJseSBpbml0aWFsaXphdGlvbiwgZXJyb3IgaGFuZGxpbmcsIG9yIHRoZSBkaXNwYXRjaGluZyBsb2dpYyBmb3IgdGhlIHByb3RvY29sLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoZXJlJiMzOTtzIGEgZ29vZCBjaGFuY2UgdGhpcyBpcyB0aGUgaGVhcnQgb2YgdGhlIERpZ2l0YWwgRGF0YSBFeGNoYW5nZSAoRERFUCkgbGF5ZXIuIFRoaXMgcGFydCBpcyBsaWtlbHkgY3J1Y2lhbCBmb3IgZGV0ZXJtaW5pbmcgaG93IGRpZmZlcmVudCBORkMgcmVhZGVycyBhbmQgZGV2aWNlcyBjb21tdW5pY2F0ZS4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGlzIGNvZGUgaXMgZnVuY3Rpb25pbmcgYXMgZXhwZWN0ZWQgaW4gY2FzZSB0aGVyZSBhcmUgYnVncyB0byBiZSBmb3VuZC4gVGltZSB0byBnZXQgbXkgZXllcyBvbiBpdCBhbmQgc2VlIHdoYXQgaXQmIzM5O3MgZG9pbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25mYy9kaWdpdGFsX2RlcC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA5NTpcdFx0dTggZGlyO1xuICA5NjpcdFx0dTggY21kO1xuICA5NzpcdFx0dTggZGlkO1xuICA5ODpcdH0gX19wYWNrZWQ7XG4gIDk5Olx0XG4gMTAwOlx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMge1xuIDEwMTpcdFx0dTggZGlyO1xuIDEwMjpcdFx0dTggY21kO1xuIDEwMzpcdFx0dTggcGZiO1xuIDEwNDpcdH0gX19wYWNrZWQ7XG4gMTA1Olx0XG4gMTA2Olx0c3RhdGljIHZvaWQgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxuIDEwNzpcdFx0XHRcdFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcbiAxMDg6XHRzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG4gMTA5Olx0XHRcdFx0XHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xuIDExMDpcdFxuIDExMTpcdHN0YXRpYyBjb25zdCB1OCBkaWdpdGFsX3BheWxvYWRfYml0c19tYXBbNF0gPSB7XG4gMTEyOlx0XHRbMF0gPSA2NCxcbiAxMTM6XHRcdFsxXSA9IDEyOCxcbiAxMTQ6XHRcdFsyXSA9IDE5MixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjg3MgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDQ0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBhIFBvdGVudGlhbCBPdXQtb2YtQm91bmRzIFJlYWQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UmIzM5O3ZlIGdvdCBhIHN0cnVjdHVyZSwgYHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzYCwgd2hpY2ggaXMsIGFzIGV4cGVjdGVkLCBvZiBzaXplIDMgYnl0ZXM6IGBkaXJgLCBgY21kYCwgYW5kIGBwZmJgLiBTaW1wbGUgZW5vdWdoLiBUaGUgY29kZSB0aGVuIHVzZXMgYHNpemVvZmAgdG8gZGV0ZXJtaW5lIHRoaXMgc2l6ZS4KCk5vdywgaW4gdGhlIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgZnVuY3Rpb24sIHRoZXJlJiMzOTtzIGFuIGluaXRpYWwgY2hlY2sgZW5zdXJpbmcgYHJlc3AtJmd0O2xlbiAmZ3Q7PSAzYC4gVGhpcyBzZWVtcyByZWFzb25hYmxlLCBndWFyYW50ZWVpbmcgd2UgaGF2ZSBhdCBsZWFzdCB0aGUgYmFzaWMgc3RydWN0dXJlIGRhdGEuIEhvd2V2ZXIsIGhlcmUmIzM5O3Mgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gV2UgY2hlY2sgaWYgYSBzcGVjaWZpYyBiaXQgaXMgc2V0IGluIGBwZmJgIHVzaW5nIGBESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKWAuIElmIHRoYXQgYml0IGlzIGluZGVlZCBzZXQsIGl0IHRoZW4gcHJvY2VlZHMgdG8gcmVhZCBgcmVzcC0mZ3Q7ZGF0YVszXWAgd2l0aG91dCAqZmlyc3QqIHZlcmlmeWluZyB0aGF0IGByZXNwLSZndDtsZW5gIGlzLCBhdCBtaW5pbXVtLCA0ISBJdCBhbHNvIGNoZWNrcyBgZGRldi0mZ3Q7ZGlkYCBidXQgbm90IHRoZSBsZW5ndGghCgpTcGVjaWZpY2FsbHksIHRoZSBjb2RlIHRoZW4gY2hlY2tzIGBkZGV2LSZndDtkaWQgJmFtcDsmYW1wOyAoZGRldi0mZ3Q7ZGlkID09IHJlc3AtJmd0O2RhdGFbM10pYC4gSWYgdGhpcyBjb25kaXRpb24gaG9sZHMsIGl0IGluY3JlbWVudHMgdGhlIHNpemUuIEhvd2V2ZXIsIHdoYXQgaWYgYHJlc3AtJmd0O2xlbmAgaXMgcHJlY2lzZWx5IDM/IFRoZW4gYHJlc3AtJmd0O2RhdGFbM11gIGJlY29tZXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkISBUaGlzIGlzIGEgY2xhc3NpYyBidWZmZXIgb3ZlcmZsb3cgdnVsbmVyYWJpbGl0eSwgZXZlbiBpZiBpdCYjMzk7cyBhIHNtYWxsIG9uZS4gVGhlIHN1Z2dlc3RlZCBwYXRjaCBpcyBzcG90IG9uLiBJdCBjb3JyZWN0bHkgaW5jbHVkZXMgYSBsZW5ndGggY2hlY2suIEl0IG5vdyBjaGVja3MgZm9yOiBgcmVzcC0mZ3Q7bGVuICZsdDsgc2l6ZSAmIzQzOyAxYCBiZWZvcmUgYWNjZXNzaW5nIGByZXNwLSZndDtkYXRhW3NpemVdYC4KCkZpbmFsbHksIGl0JiMzOTtzIGFsc28gd29ydGggY2hlY2tpbmcgYGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzYCB0byBzZWUgaWYgdGhlcmUmIzM5O3Mgc2ltaWxhciBsb2dpYyB0aGVyZSB0aGF0IG5lZWRzIHRvIGJlIGFkZHJlc3NlZC4gV2Ugc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgZml4IHRvIGVuc3VyZSB0aGUgaXNzdWUgaXMgY29tcGxldGVseSBlbGltaW5hdGVkIGZyb20gdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0RJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9kaWdpdGFsX2RlcC5jLTUyLSNkZWZpbmUgRElHSVRBTF9ORkNfREVQX05BRF9CSVRfU0VUKHBmYikgKChwZmIpIFx1MDAyNiAweDA4KVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjUzOiNkZWZpbmUgRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikgKChwZmIpIFx1MDAyNiBESUdJVEFMX05GQ19ERVBfUEZCX0RJRF9CSVQpXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTQtI2RlZmluZSBESUdJVEFMX05GQ19ERVBfUEZCX1BOSShwZmIpICAgICAoKHBmYikgXHUwMDI2IDB4MDMpXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTY4Nj1zdGF0aWMgdm9pZCBkaWdpdGFsX2luX3JlY3ZfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTc2Ni1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo3Njc6XHRpZiAoRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikpIHtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy03NjgtXHRcdFBST1RPQ09MX0VSUihcJiMzNDsxNC44LjIuMVwmIzM0Oyk7XG4tLVxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTEwNzc9c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxuLS1cbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTE4LVxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjExMTk6XHRpZiAoRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikpIHtcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTIwLVx0XHRpZiAocmVzcC1cdTAwM2VsZW4gXHUwMDNjIHNpemUgJiM0MzsgMSB8fCAhZGRldi1cdTAwM2VkaWQgfHxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODE2NgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGRlZXAgaW4gbXkgZG9tYWluIGV4cGVydGlzZSBhbmQgYW5hbHl6aW5nIHRoYXQgY29kZSBzbmlwcGV0OgoKKipEZWNvZGluZyBgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXNgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXNgIHNpdHVhdGlvbi4gTGluZXMgNzY2LTc3NS4uLiByaWdodC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIHdoYXQmIzM5O3MgdGhlIGNvbnRleHQgaGVyZT8gSXMgdGhpcyBhIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyLCBhIHNwZWNpZmljIGRyaXZlciwgb3Igc29tZSBjb3JlIGNvbW11bmljYXRpb24gcHJvdG9jb2w/IEtub3dpbmcgdGhhdCB3aWxsIGRyYXN0aWNhbGx5IGFmZmVjdCBob3cgSSBhcHByb2FjaCB0aGlzLiBCYXNlZCBvbiB0aGUgdmFyaWFibGUgbmFtZSwgSSYjMzk7bSBndWVzc2luZyBpdCBkZWFscyB3aXRoIGRpZ2l0YWwgaW5wdXQgcmVjZXB0aW9uIGFuZCwgY3J1Y2lhbGx5LCBzb21lIGtpbmQgb2YgZGVwZW5kZW5jeSByZXNvbHV0aW9uLiAmIzM0O0RlcGVuZGVuY3kgcmVzb2x1dGlvbiYjMzQ7IGlzIHRoZSBrZXkuIEFyZSB3ZSB0YWxraW5nIGFib3V0IGEgZGF0YSBpbnRlZ3JpdHkgY2hlY2s/IEhhcmR3YXJlIGhhbmRzaGFrZSBzeW5jaHJvbml6YXRpb24/IE9yIG1heWJlIGludGVycnVwdCBoYW5kbGluZyBzeW5jaHJvbml6YXRpb24/CgpJIG5lZWQgdG8gcXVpY2tseSBncmFzcCB0aGUgbG9naWNhbCBmbG93OiB3aGF0IHNpZ25hbHMgb3IgZXZlbnRzIGFyZSBpbml0aWF0aW5nIHRoaXM/IElzIGl0IGEgcmlzaW5nIGVkZ2UsIGEgZmFsbGluZyBlZGdlLCBhIHNwZWNpZmljIGJpdCBwYXR0ZXJuPyBXaGF0JiMzOTtzIGJlaW5nICpyZXNvbHZlZCo/IElzIGl0IGEgcmVzb3VyY2UgY29udGVudGlvbiBpc3N1ZT8gQSB0aW1pbmcgcHJvYmxlbSB3aXRoIGV4dGVybmFsIGRpZ2l0YWwgaW5wdXQ/IEFyZSB3ZSBkZWFsaW5nIHdpdGggYW4gaW50ZXJydXB0IHRoYXQgbmVlZHMgdG8gYWNrbm93bGVkZ2UgYSBoYXJkd2FyZSBzaWduYWwsIGFuZCB3ZSBhcmUgbWFuYWdpbmcgdGhlIHJlcXVpcmVkIGRlcGVuZGVuY2llcz8KCkkmIzM5O20gbWVudGFsbHkgc3RlcHBpbmcgdGhyb3VnaCBlYWNoIGxpbmUuIExpbmUgNzY2OiB3aGF0IHN0YXJ0cyBpdCBhbGw/IFRoZW4gSSYjMzk7bGwgd29yayBmb3J3YXJkLiBEb2VzIHRoZSBjb2RlIGJyYW5jaD8gSSYjMzk7bSBsb29raW5nIGZvciBhbnkgY29uZGl0aW9uYWwgc3RhdGVtZW50cyDigJMgaWZzLCB3aGlsZXMsIHN3aXRjaGVzIOKAkyB0aGF0IGltcGFjdCBleGVjdXRpb24gcGF0aCwgYmVjYXVzZSB0aG9zZSB3aWxsIGJlIGNyaXRpY2FsIHRvIHVuZGVyc3RhbmQgcG9zc2libGUgcmFjZSBjb25kaXRpb25zIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3JzLiBJJiMzOTtsbCBtZW50YWxseSBzdWJzdGl0dXRlIHZhcmlhYmxlcyB0byB1bmRlcnN0YW5kIGhvdyBkYXRhIGlzIHVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVwZW5kYW5jaWVzLgoKSSYjMzk7bSBtZW50YWxseSBidWlsZGluZyB0aGUgY29udHJvbCBmbG93LiBFcnJvciBoYW5kbGluZyB3aWxsIGJlIGNyaXRpY2FsLCBzbyBJJiMzOTttIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGVycm9yIGNvZGVzIG9yIGZsYWdzIHRoYXQgbWlnaHQgYmUgc2V0IG9yIGNoZWNrZWQuIFdoYXQgYXJlIHRoZSBwb3RlbnRpYWwgZmFpbHVyZSBtb2Rlcz8gRG9lcyBpdCBsb2cgZXJyb3JzPyBUaGlzIGlzIGxpa2VseSBhIGNyaXRpY2FsIHNlY3Rpb24gb2YgdGhlIGNvZGUsIGdpdmVuIHRoZSBkZXBlbmRlbmN5IGFzcGVjdCBvZiBpdCwgc28gcmFjZSBjb25kaXRpb25zIGFyZSBvbiBteSBtaW5kLiBBbnkgcG9zc2liaWxpdHkgb2YgYSBtdXRleCBvciBpbnRlcnJ1cHQgZGlzYWJsZSB3aXRoaW4gdGhpcyBzZWN0aW9uIG9mIGNvZGU/CgpJbiBhIGdvb2QgZGVzaWduLCB0aGlzIHJlc29sdXRpb24gc3RlcCBzaG91bGQgYmUgYXRvbWljIG9yIGhpZ2hseSB0aW1lLXNlbnNpdGl2ZSB0byBwcmV2ZW50IGNvcnJ1cHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDIwOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25mYy9kaWdpdGFsX2RlcC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzY1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA3NjU6XHRcdHBmYiA9IGRlcF9yZXMtXHUwMDNlcGZiO1xuIDc2NjpcdFxuIDc2NzpcdFx0aWYgKERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpKSB7XG4gNzY4Olx0XHRcdFBST1RPQ09MX0VSUihcJiMzNDsxNC44LjIuMVwmIzM0Oyk7XG4gNzY5Olx0XHRcdHJjID0gLUVJTztcbiA3NzA6XHRcdFx0Z290byBlcnJvcjtcbiA3NzE6XHRcdH1cbiA3NzI6XHRcbiA3NzM6XHRcdGlmIChESUdJVEFMX05GQ19ERVBfTkFEX0JJVF9TRVQocGZiKSkge1xuIDc3NDpcdFx0XHRyYyA9IC1FSU87XG4gNzc1Olx0XHRcdGdvdG8gZXhpdDtcbiA3NzY6XHRcdH1cbiA3Nzc6XHRcbiA3Nzg6XHRcdGlmIChzaXplIFx1MDAzZSByZXNwLVx1MDAzZWxlbikge1xuIDc3OTpcdFx0XHRyYyA9IC1FSU87XG4gNzgwOlx0XHRcdGdvdG8gZXJyb3I7XG4gNzgxOlx0XHR9XG4gNzgyOlx0XG4gNzgzOlx0XHRza2JfcHVsbChyZXNwLCBzaXplKTtcbiA3ODQ6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMjA6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODkzNgoJCQkJCQkJb3V0cHV0OiAyMDYKCQkJCQkJCXRob3VnaHRzOiAxMjg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKktNU0FOIEFzc2Vzc21lbnQ6IERpZ2l0YWwgTkZDIERFUCBSZXF1ZXN0IEhhbmRsaW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEluIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAsIHRoZSBjb3JlIGlzc3VlIHdhcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQuIFByZXZpb3VzbHksIHRoZSBjb2RlIGFjY2Vzc2VkIGByZXNwLSZndDtkYXRhWzNdYCB3aXRob3V0IHZlcmlmeWluZyBpZiBgcmVzcC0mZ3Q7bGVuYCB3YXMgbG9uZyBlbm91Z2guIElmIGByZXNwLSZndDtsZW5gIHdhcyAzLCB3ZSBoYWQgYSBjbGFzc2ljIG91dC1vZi1ib3VuZHMgcmVhZCBzY2VuYXJpby4gVGhlIHBhdGNoIGFkZHMgYSBjcnVjaWFsIGJvdW5kcyBjaGVjazogYGlmIChyZXNwLSZndDtsZW4gJmx0OyBzaXplICYjNDM7IDEgLi4uKWAgYmVmb3JlIGFjY2Vzc2luZyB0aGUgYHJlc3AtJmd0O2RhdGFgIGJ1ZmZlci4gIGBzaXplYCBpcyB0aGVuIGluY3JlbWVudGVkLCBhbmQgdGhlcmUmIzM5O3MgYSBmaW5hbCBjaGVjayBgaWYgKHNpemUgJmd0OyByZXNwLSZndDtsZW4pYCBsYXRlci4gVGhpcyBlbnN1cmVzIGFsbCBhY2Nlc3NlcyBzdGF5IHdpdGhpbiB0aGUgYWxsb2NhdGVkIGByZXNwLSZndDtkYXRhYCBib3VuZGFyaWVzLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uOiBkb2VzIHRoaXMgd2FycmFudCBhIEtNU0FOIHJ1bj8gVGhlIGFuc3dlciBpcyBhIGNsZWFyICYjMzQ7bm8mIzM0Oy4gTGV0JiMzOTtzIHJ1biB0aHJvdWdoIHRoZSBjaGVja2xpc3Q6CgoqICAgKipObyB1c2VyLXNwYWNlIGluZm9ybWF0aW9uIGxlYWtzOioqIE5vIGBjb3B5X3RvX3VzZXJgLCBgcHV0X3VzZXJgLCBuZXRsaW5rIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCwgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzIGFyZSBpbnZvbHZlZCB3aGVyZSBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIG1lbW9yeSBjb3VsZCBiZSBleHBvc2VkIHRvIHRoZSB1c2VyLgoqICAgKipObyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBvciBicmFuY2hpbmc6KiogQWxsIHZhcmlhYmxlcyB1c2VkIGluIGNvbmRpdGlvbmFsIGxvZ2ljIChgcmVzcC0mZ3Q7bGVuYCwgYHNpemVgLCBgZGRldi0mZ3Q7ZGlkYCwgYHJlc3AtJmd0O2RhdGFbc2l6ZV1gKSBhcmUgZWl0aGVyIGluaXRpYWxpemVkIG9yIGRlcml2ZWQgZnJvbSBpbml0aWFsaXplZCB2YWx1ZXMuIFRoZSBjb2RlICpmaXhlcyogYSBib3VuZHMgaXNzdWUgcmF0aGVyIHRoYW4gaW50cm9kdWNpbmcgYSBuZXcgb25lLgoqICAgKipObyBuZXcgYWxsb2NhdGlvbnMgb3IgaW5pdGlhbGl6YXRpb24gcmlza3M6KiogVGhlIHBhdGNoIGRvZXNuJiMzOTt0IGFkZCBhbnkgbmV3IGFsbG9jYXRpb25zIG9yIGNoYW5nZSBleGlzdGluZyBvbmVzIGluIGEgd2F5IHRoYXQgY291bGQgbGVhZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeS4KKiAgICoqVGhlIHBhdGNoICpzdHJlbmd0aGVucyogYm91bmRzIGNoZWNrczoqKiBJdCAqYWRkcyogYSBjaGVjazogYHJlc3AtJmd0O2xlbiAmbHQ7IHNpemUgJiM0MzsgMWAsIGFuZCB1c2VzIGBzaXplYCBpbnN0ZWFkIG9mIGhhcmRjb2RlZCBgM2AsIGVuc3VyaW5nIGFsbCBhY2Nlc3NlcyBhcmUgd2l0aGluIHRoZSBib3VuZHMgb2YgYHJlc3BgLiBUaGUgaW5pdGlhbCBjaGVjayB3YXMgbWlzc2luZywgbWVhbmluZyB0aGF0IHdhcyB0aGUgdnVsbmVyYWJpbGl0eS4KCldlIG5lZWQgdG8gYmUgY3J5c3RhbCBjbGVhciBvbiB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBLQVNBTiBhbmQgS01TQU4uICBLQVNBTiBpcyBkZXNpZ25lZCB0byBjYXRjaCBvdXQtb2YtYm91bmRzIHJlYWRzIGFuZCB3cml0ZXMsIHdoaWNoIGlzICpleGFjdGx5KiB0aGUgdHlwZSBvZiBidWcgdGhpcyBwYXRjaCBhZGRyZXNzZXMuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggc2tiIGRhdGEgKHJlY2VpdmVkIGZyb20gYSBkZXZpY2Ugb3Igc29ja2V0KS4gVGhpcyBkYXRhIGlzIGluaXRpYWxpemVkIHdpdGggdGhlIHJlY2VpdmVkIHBhY2tldC4gQW55IGF0dGVtcHQgdG8gcmVhZCBiZXlvbmQgdGhlIGJvdW5kYXJpZXMgb2YgdGhpcyBkYXRhIGlzIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzLCB3aGljaCBLQVNBTiBpcyBidWlsdCB0byBkZXRlY3QuIEtNU0FOLCBvbiB0aGUgb3RoZXIgaGFuZCwgZGVhbHMgd2l0aCB1c2VzIG9mICp1bmluaXRpYWxpemVkKiBtZW1vcnkuCgpUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrcyBvZiB1c2luZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmUmIzM5O3Mgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZSBwYXRjaCBhZGRzIGEgYm91bmRzIGNoZWNrLCB3aGljaCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIGFjY2Vzcy4gVGhlIGVudGlyZSBwcm9ibGVtIGlzIHRoYXQgYHJlc3AtJmd0O2RhdGFgIG1heSBiZSBhY2Nlc3NlZCBvdXQtb2YtYm91bmRzLiBUaGUgcGF0Y2ggZW5mb3JjZXMgYSBjaGVjayB0byBrZWVwIGl0IGluLWJvdW5kcy4KClRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gYXZvaWQgS01TQU4gaWYgdGhlIGlzc3VlIGlzIGNhdWdodCBieSBLQVNBTiwgYW5kIHRoaXMgaXMgZGVmaW5pdGl2ZWx5IGEgS0FTQU4gYnVnLiBUaGlzIGlzc3VlIGlzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBhbmQgaXMgKm5vdCogYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuIFRoZSBwYXRjaCBhZGRyZXNzZXMgYW5kIHByZXZlbnRzIGFuIG91dC1vZi1ib3VuZHMgcmVhZC4gIEtNU0FOIGlzIG5vdCBuZWVkZWQgaGVyZS4gVGhlIHJlYXNvbmluZyBpcyBjbGVhciwgZGV0YWlsZWQsIGFjY3VyYXRlLCBhbmQgaGlnaGxpZ2h0cyB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBLQVNBTiBhbmQgS01TQU4uIFRoZSBhbnN3ZXIgaXMgTmVlZHNLTVNBTiA9IGZhbHNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAyMDo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1pc3NpbmcgYm91bmRzIGNoZWNrIGluIG5ldC9uZmMvZGlnaXRhbF9kZXAuYyB3aXRoaW4gZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoKS4gUHJldmlvdXNseSwgd2hlbiBESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSB3YXMgdHJ1ZSwgcmVzcC1cdTAwM2VkYXRhWzNdIHdhcyBhY2Nlc3NlZCB3aXRob3V0IGNoZWNraW5nIGlmIHJlc3AtXHUwMDNlbGVuIHdhcyBhdCBsZWFzdCA0IGJ5dGVzIChzaXplICYjNDM7IDEpLCBwb3RlbnRpYWxseSByZXN1bHRpbmcgaW4gYW4gb3V0LW9mLWJvdW5kcyByZWFkIG9uIHRoZSByZWNlaXZlZCBza2IgYnVmZmVyLiBUaGUgcGF0Y2ggYWRkcyBgcmVzcC1cdTAwM2VsZW4gXHUwMDNjIHNpemUgJiM0MzsgMWAgdG8gcHJldmVudCB0aGlzIG91dC1vZi1ib3VuZHMgcmVhZC5cblxuVGhpcyBpcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSwgd2hpY2ggaXMgZGV0ZWN0YWJsZSBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBtYW5pcHVsYXRlIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnksIGRvZXMgbm90IGNvcHkga2VybmVsIGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIGZpZWxkcy4gVGh1cywgS01TQU4gaXMgbm90IHJlcXVpcmVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBtaXNzaW5nIGJvdW5kcyBjaGVjayBpbiBuZXQvbmZjL2RpZ2l0YWxfZGVwLmMgd2l0aGluIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKCkuIFByZXZpb3VzbHksIHdoZW4gRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikgd2FzIHRydWUsIHJlc3AtXHUwMDNlZGF0YVszXSB3YXMgYWNjZXNzZWQgd2l0aG91dCBjaGVja2luZyBpZiByZXNwLVx1MDAzZWxlbiB3YXMgYXQgbGVhc3QgNCBieXRlcyAoc2l6ZSAmIzQzOyAxKSwgcG90ZW50aWFsbHkgcmVzdWx0aW5nIGluIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBvbiB0aGUgcmVjZWl2ZWQgc2tiIGJ1ZmZlci4gVGhlIHBhdGNoIGFkZHMgYHJlc3AtXHUwMDNlbGVuIFx1MDAzYyBzaXplICYjNDM7IDFgIHRvIHByZXZlbnQgdGhpcyBvdXQtb2YtYm91bmRzIHJlYWQuXG5cblRoaXMgaXMgYW4gb3V0LW9mLWJvdW5kcyByZWFkIHZ1bG5lcmFiaWxpdHksIHdoaWNoIGlzIGRldGVjdGFibGUgYnkgS0FTQU4uIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgbWFuaXB1bGF0ZSB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5LCBkb2VzIG5vdCBjb3B5IGtlcm5lbCBkYXRhIHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgYmFzZWQgb24gdW5pbml0aWFsaXplZCBmaWVsZHMuIFRodXMsIEtNU0FOIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6Mzk6MTcuNzIyNDY4MzUyWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExODA4MTQ5MDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ1wiLFxuICAgIFwiTkZDX0RJR0lUQUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcVwiLFxuICAgIFwiZGlnaXRhbF90Z19zZW5kX2RlcF9yZXNcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWlzc2luZyBib3VuZHMgY2hlY2sgaW4gbmV0L25mYy9kaWdpdGFsX2RlcC5jIHdpdGhpbiBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSgpLiBQcmV2aW91c2x5LCB3aGVuIERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpIHdhcyB0cnVlLCByZXNwLVxcdTAwM2VkYXRhWzNdIHdhcyBhY2Nlc3NlZCB3aXRob3V0IGNoZWNraW5nIGlmIHJlc3AtXFx1MDAzZWxlbiB3YXMgYXQgbGVhc3QgNCBieXRlcyAoc2l6ZSArIDEpLCBwb3RlbnRpYWxseSByZXN1bHRpbmcgaW4gYW4gb3V0LW9mLWJvdW5kcyByZWFkIG9uIHRoZSByZWNlaXZlZCBza2IgYnVmZmVyLiBUaGUgcGF0Y2ggYWRkcyBgcmVzcC1cXHUwMDNlbGVuIFxcdTAwM2Mgc2l6ZSArIDFgIHRvIHByZXZlbnQgdGhpcyBvdXQtb2YtYm91bmRzIHJlYWQuXFxuXFxuVGhpcyBpcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSwgd2hpY2ggaXMgZGV0ZWN0YWJsZSBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBtYW5pcHVsYXRlIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnksIGRvZXMgbm90IGNvcHkga2VybmVsIGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIGZpZWxkcy4gVGh1cywgS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYm91bmRzIGNoZWNrIGFuZCB2YWxpZGF0aW9uIGxvZ2ljIGluIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKCkgd2hlbiBoYW5kbGluZyBERVAgKERhdGEgRXhjaGFuZ2UgUHJvdG9jb2wpIHJlcXVlc3QgZnJhbWVzIHdpdGggdGhlIERJRCBiaXQgc2V0IGluIHRoZSBORkMgZGlnaXRhbCBwcm90b2NvbCBzdGFjay4gUHJldmlvdXNseSwgcmVhZGluZyByZXNwLVxcdTAwM2VkYXRhWzNdIGNvdWxkIGNhdXNlIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlmIHJlc3AtXFx1MDAzZWxlbiB3YXMgaW5zdWZmaWNpZW50LiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBORkMgdGFyZ2V0IG1vZGUgY29tbXVuaWNhdGlvbiB2aWEgZW11bGF0ZWQgdmlydHVhbCBkZXZpY2VzIChuZmNzaW0pIG9yIFVTQiBORkMgZGV2aWNlcyAocG9ydDEwMCkgc3VwcG9ydGVkIGluIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDozOToxNy43MjI0NzM0NzJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTc1ODgzMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxODc5MmQxMTUwM2ZmYzQ1MWRhNTdhNTk0MGI5YTY2ZThkNjZmOGJiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gU2VwIDEzIDIwOjM5OjE2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9uZmMvZGlnaXRhbF9kZXAuYyBiL25ldC9uZmMvZGlnaXRhbF9kZXAuY1xcbmluZGV4IDM5ODJmYTA4NDczN2YuLmFlNTQwN2ZjYTEyZDQgMTAwNjQ0XFxuLS0tIGEvbmV0L25mYy9kaWdpdGFsX2RlcC5jXFxuKysrIGIvbmV0L25mYy9kaWdpdGFsX2RlcC5jXFxuQEAgLTExMTcsMTIgKzExMTcsMTIgQEAgc3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbiBcXHRwZmIgPSBkZXBfcmVxLVxcdTAwM2VwZmI7XFxuIFxcbiBcXHRpZiAoRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikpIHtcXG4tXFx0XFx0aWYgKGRkZXYtXFx1MDAzZWRpZCBcXHUwMDI2XFx1MDAyNiAoZGRldi1cXHUwMDNlZGlkID09IHJlc3AtXFx1MDAzZWRhdGFbM10pKSB7XFxuLVxcdFxcdFxcdHNpemUrKztcXG4tXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0aWYgKHJlc3AtXFx1MDAzZWxlbiBcXHUwMDNjIHNpemUgKyAxIHx8ICFkZGV2LVxcdTAwM2VkaWQgfHxcXG4rXFx0XFx0ICAgIGRkZXYtXFx1MDAzZWRpZCAhPSByZXNwLVxcdTAwM2VkYXRhW3NpemVdKSB7XFxuIFxcdFxcdFxcdHJjID0gLUVJTztcXG4gXFx0XFx0XFx0Z290byBleGl0O1xcbiBcXHRcXHR9XFxuK1xcdFxcdHNpemUrKztcXG4gXFx0fSBlbHNlIGlmIChkZGV2LVxcdTAwM2VkaWQpIHtcXG4gXFx0XFx0cmMgPSAtRUlPO1xcbiBcXHRcXHRnb3RvIGV4aXQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjM5OjE5LjE4MDcwMjc3N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6NzM1Njk2NTQ3ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZDXCIsXG4gICAgXCJORkNfRElHSVRBTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxXCIsXG4gICAgXCJkaWdpdGFsX3RnX3NlbmRfZGVwX3Jlc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYm91bmRzIGNoZWNrIGFuZCB2YWxpZGF0aW9uIGxvZ2ljIGluIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKCkgd2hlbiBoYW5kbGluZyBERVAgKERhdGEgRXhjaGFuZ2UgUHJvdG9jb2wpIHJlcXVlc3QgZnJhbWVzIHdpdGggdGhlIERJRCBiaXQgc2V0IGluIHRoZSBORkMgZGlnaXRhbCBwcm90b2NvbCBzdGFjay4gUHJldmlvdXNseSwgcmVhZGluZyByZXNwLVxcdTAwM2VkYXRhWzNdIGNvdWxkIGNhdXNlIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIGlmIHJlc3AtXFx1MDAzZWxlbiB3YXMgaW5zdWZmaWNpZW50LiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGR1cmluZyBORkMgdGFyZ2V0IG1vZGUgY29tbXVuaWNhdGlvbiB2aWEgZW11bGF0ZWQgdmlydHVhbCBkZXZpY2VzIChuZmNzaW0pIG9yIFVTQiBORkMgZGV2aWNlcyAocG9ydDEwMCkgc3VwcG9ydGVkIGluIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDE4NzkyZDExNTAzZmZjNDUxZGE1N2E1OTQwYjlhNjZlOGQ2NmY4YmJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIFNlcCAxMyAyMDozOToxNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZmMvZGlnaXRhbF9kZXAuYyBiL25ldC9uZmMvZGlnaXRhbF9kZXAuY1xuaW5kZXggMzk4MmZhMDg0NzM3Zi4uYWU1NDA3ZmNhMTJkNCAxMDA2NDRcbi0tLSBhL25ldC9uZmMvZGlnaXRhbF9kZXAuY1xuKysrIGIvbmV0L25mYy9kaWdpdGFsX2RlcC5jXG5AQCAtMTExNywxMiArMTExNywxMiBAQCBzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXG4gXHRwZmIgPSBkZXBfcmVxLVx1MDAzZXBmYjtcbiBcbiBcdGlmIChESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSkge1xuLVx0XHRpZiAoZGRldi1cdTAwM2VkaWQgXHUwMDI2XHUwMDI2IChkZGV2LVx1MDAzZWRpZCA9PSByZXNwLVx1MDAzZWRhdGFbM10pKSB7XG4tXHRcdFx0c2l6ZSsrO1xuLVx0XHR9IGVsc2Uge1xuK1x0XHRpZiAocmVzcC1cdTAwM2VsZW4gXHUwMDNjIHNpemUgKyAxIHx8ICFkZGV2LVx1MDAzZWRpZCB8fFxuK1x0XHQgICAgZGRldi1cdTAwM2VkaWQgIT0gcmVzcC1cdTAwM2VkYXRhW3NpemVdKSB7XG4gXHRcdFx0cmMgPSAtRUlPO1xuIFx0XHRcdGdvdG8gZXhpdDtcbiBcdFx0fVxuK1x0XHRzaXplKys7XG4gXHR9IGVsc2UgaWYgKGRkZXYtXHUwMDNlZGlkKSB7XG4gXHRcdHJjID0gLUVJTztcbiBcdFx0Z290byBleGl0O1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6Mzk6MTkuMTgwNzA0NTg3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NjM0MjQ0ODA3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5GQyBEaWdpdGFsIERFUCBSZXF1ZXN0IEhhbmRsaW5nKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEkgc2VlIHRoZXkncmUgbW9kaWZ5aW5nIGBuZXQvbmZjL2RpZ2l0YWxfZGVwLmNgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMTExNy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdW5kZXJzdGFuZCB0aGUgY29udGV4dC4gVGhpcyBsb29rcyBsaWtlIGl0J3MgZGVhbGluZyB3aXRoIERldmljZSBJRCAoRElEKSBoYW5kbGluZyB3aXRoaW4gdGhlIERpZ2l0YWwgREVQIHByb3RvY29sLiBUaGUgY29yZSBvZiB0aGlzIGZ1bmN0aW9uLCBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgLCBzZWVtcyB0byBiZSBwcm9jZXNzaW5nIGEgcmVjZWl2ZWQgREVQIHJlcXVlc3QgZnJvbSBhIHRhcmdldCBkZXZpY2UuXG5cblRoZSBtYWluIHBvaW50IG9mIHRoZSBkaWZmIGlzIGluIGhvdyB0aGV5IHZhbGlkYXRlIHRoZSBESUQuIFByZXZpb3VzbHksIGl0IGNoZWNrZWQgaWYgYGRkZXYtXHUwMDNlZGlkYCBleGlzdGVkIGFuZCBtYXRjaGVkIGByZXNwLVx1MDAzZWRhdGFbM11gIHdoZW4gdGhlIERJRCBiaXQgd2FzIHNldCBpbiBgcGZiYC4gTm93LCBpdCBzZWVtcyBsaWtlIHRoZSBjaGVjayBpcyBtb3JlIHJvYnVzdC4gSXQncyB2ZXJpZnlpbmcgYHJlc3AtXHUwMDNlbGVuYCBpcyBzdWZmaWNpZW50IHRvIGhvbGQgdGhlIERJRCwgdGhlbiBjaGVja3MgaWYgYGRkZXYtXHUwMDNlZGlkYCBpcyBudWxsLCBvciBpdCBjaGVja3MgZm9yIGEgbWlzbWF0Y2ggYmV0d2VlbiBgZGRldi1cdTAwM2VkaWRgIGFuZCBgcmVzcC1cdTAwM2VkYXRhW3NpemVdYCwgaW1tZWRpYXRlbHkgcmV0dXJuaW5nIGAtRUlPYCBpZiBpdCBmYWlscy4gVGhlIGBzaXplKytgIGlzIG5vdyBhZnRlciB0aGlzIGNoZWNrLiBUaGlzIGFwcGVhcnMgdG8gYmUgYSBidWcgZml4IG9yIHNlY3VyaXR5IGVuaGFuY2VtZW50LCBiZWNhdXNlIHRoZSBvbGQgbG9naWMsIGlmIHRoZSBESUQgd2FzIG5vdCBwcmVzZW50LCB3b3VsZCd2ZSBpbmNyZW1lbnRlZCB0aGUgc2l6ZSB3aXRob3V0IHRoZSBjaGVjayBhbmQgcG90ZW50aWFsbHkgbGVkIHRvIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBvciBtZW1vcnkgY29ycnVwdGlvbi4gVGhpcyBjaGFuZ2UgbGlrZWx5IGFkZHJlc3NlcyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5IG9yIGxvZ2ljIGVycm9yIHdoZXJlIGFuIGF0dGFja2VyIGNvdWxkIHNlbmQgYSBtYWxmb3JtZWQgcmVxdWVzdCBhbmQgcG9zc2libHkgdHJpZ2dlciBhbiBpc3N1ZSBpZiB0aGUgYERJRGAgd2FzIG5vdCBmb3VuZC4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgdGhlIHN1cnJvdW5kaW5nIGNvZGUgZm9yIHNpbWlsYXIgcGF0dGVybnMuIEl0J3MgcG9zc2libGUgdGhlcmUgYXJlIG90aGVyIHNpbWlsYXIgaXNzdWVzIGluIHRoaXMgbW9kdWxlIHRoYXQgYWxzbyBuZWVkIHRvIGJlIGFkZHJlc3NlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk1OSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjM5OjI1LjUyMzE1NTY5NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwOTU5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmZjL2RpZ2l0YWxfZGVwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTEwMCxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTEwMDpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTEwMTpcXHRcXHR9XFxuMTEwMjpcXHRcXG4xMTAzOlxcdFxcdGlmIChyZXNwLVxcdTAwM2VsZW4gXFx1MDAzZSBkZGV2LVxcdTAwM2Vsb2NhbF9wYXlsb2FkX21heCkge1xcbjExMDQ6XFx0XFx0XFx0cmMgPSAtRU1TR1NJWkU7XFxuMTEwNTpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTEwNjpcXHRcXHR9XFxuMTEwNzpcXHRcXG4xMTA4OlxcdFxcdHNpemUgPSBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpO1xcbjExMDk6XFx0XFx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXJlc3AtXFx1MDAzZWRhdGE7XFxuMTExMDpcXHRcXG4xMTExOlxcdFxcdGlmIChyZXNwLVxcdTAwM2VsZW4gXFx1MDAzYyBzaXplIHx8IGRlcF9yZXEtXFx1MDAzZWRpciAhPSBESUdJVEFMX05GQ19ERVBfRlJBTUVfRElSX09VVCB8fFxcbjExMTI6XFx0XFx0ICAgIGRlcF9yZXEtXFx1MDAzZWNtZCAhPSBESUdJVEFMX0NNRF9ERVBfUkVRKSB7XFxuMTExMzpcXHRcXHRcXHRyYyA9IC1FSU87XFxuMTExNDpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTExNTpcXHRcXHR9XFxuMTExNjpcXHRcXG4xMTE3OlxcdFxcdHBmYiA9IGRlcF9yZXEtXFx1MDAzZXBmYjtcXG4xMTE4OlxcdFxcbjExMTk6XFx0XFx0aWYgKERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpKSB7XFxuMTEyMDpcXHRcXHRcXHRpZiAocmVzcC1cXHUwMDNlbGVuIFxcdTAwM2Mgc2l6ZSArIDEgfHwgIWRkZXYtXFx1MDAzZWRpZCB8fFxcbjExMjE6XFx0XFx0XFx0ICAgIGRkZXYtXFx1MDAzZWRpZCAhPSByZXNwLVxcdTAwM2VkYXRhW3NpemVdKSB7XFxuMTEyMjpcXHRcXHRcXHRcXHRyYyA9IC1FSU87XFxuMTEyMzpcXHRcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTEyNDpcXHRcXHRcXHR9XFxuMTEyNTpcXHRcXHRcXHRzaXplKys7XFxuMTEyNjpcXHRcXHR9IGVsc2UgaWYgKGRkZXYtXFx1MDAzZWRpZCkge1xcbjExMjc6XFx0XFx0XFx0cmMgPSAtRUlPO1xcbjExMjg6XFx0XFx0XFx0Z290byBleGl0O1xcbjExMjk6XFx0XFx0fVxcbjExMzA6XFx0XFxuMTEzMTpcXHRcXHRpZiAoRElHSVRBTF9ORkNfREVQX05BRF9CSVRfU0VUKHBmYikpIHtcXG4xMTMyOlxcdFxcdFxcdHJjID0gLUVJTztcXG4xMTMzOlxcdFxcdFxcdGdvdG8gZXhpdDtcXG4xMTM0OlxcdFxcdH1cXG4xMTM1OlxcdFxcbjExMzY6XFx0XFx0aWYgKHNpemUgXFx1MDAzZSByZXNwLVxcdTAwM2VsZW4pIHtcXG4xMTM3OlxcdFxcdFxcdHJjID0gLUVJTztcXG4xMTM4OlxcdFxcdFxcdGdvdG8gZXhpdDtcXG4xMTM5OlxcdFxcdH1cXG4xMTQwOlxcdFxcbjExNDE6XFx0XFx0c2tiX3B1bGwocmVzcCwgc2l6ZSk7XFxuMTE0MjpcXHRcXG4xMTQzOlxcdFxcdHN3aXRjaCAoRElHSVRBTF9ORkNfREVQX1BGQl9UWVBFKHBmYikpIHtcXG4xMTQ0OlxcdFxcdGNhc2UgRElHSVRBTF9ORkNfREVQX1BGQl9JX1BEVTpcXG4xMTQ1OlxcdFxcdFxcdHByX2RlYnVnKFxcXCJESUdJVEFMX05GQ19ERVBfUEZCX0lfUERVXFxcXG5cXFwiKTtcXG4xMTQ2OlxcdFxcbjExNDc6XFx0XFx0XFx0aWYgKGRkZXYtXFx1MDAzZWF0bl9jb3VudCkge1xcbjExNDg6XFx0XFx0XFx0XFx0LyogVGhlIHRhcmdldCBoYXMgcmVjZWl2ZWQgKGFuZCByZXBsaWVkIHRvKSBhdCBsZWFzdCBvbmVcXG4xMTQ5OlxcdFxcdFxcdFxcdCAqIEFUTiBERVBfUkVRLlxcbjExNTA6XFx0XFx0XFx0XFx0ICovXFxuMTE1MTpcXHRcXHRcXHRcXHRkZGV2LVxcdTAwM2VhdG5fY291bnQgPSAwO1xcbjExNTI6XFx0XFxuMTE1MzpcXHRcXHRcXHRcXHQvKiBwbmkgb2YgcmVzcCBQRFUgZXF1YWwgdG8gdGhlIHRhcmdldCBjdXJyZW50IHBuaSAtIDFcXG4xMTU0OlxcdFxcdFxcdFxcdCAqIG1lYW5zIHJlc3AgaXMgdGhlIHByZXZpb3VzIERFUF9SRVEgUERVIHJlY2VpdmVkIGZyb21cXG4xMTU1OlxcdFxcdFxcdFxcdCAqIHRoZSBpbml0aWF0b3Igc28gdGhlIHRhcmdldCByZXBsaWVzIHdpdGggc2F2ZWRfc2tiXFxuMTE1NjpcXHRcXHRcXHRcXHQgKiB3aGljaCBpcyB0aGUgcHJldmlvdXMgREVQX1JFUyBzYXZlZCBpblxcbjExNTc6XFx0XFx0XFx0XFx0ICogZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoKS5cXG4xMTU4OlxcdFxcdFxcdFxcdCAqL1xcbjExNTk6XFx0XFx0XFx0XFx0aWYgKERJR0lUQUxfTkZDX0RFUF9QRkJfUE5JKHBmYikgPT1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6Mzk6MjUuNTIzMjY3NDE0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6Mjk3NDIxNjQ5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5GQyBEaWdpdGFsIFByb3RvY29sIFN0YWNrKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbi4gTXkgZm9jdXMgcmlnaHQgbm93IGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIGBuZXQvbmZjL2RpZ2l0YWxfZGVwLmNgIGZpbGUuIFRoaXMgaXMgcGFydCBvZiB0aGUgTkZDIGRpZ2l0YWwgcHJvdG9jb2wgc3RhY2ssIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgaXQgZml0cyBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS4gRmlyc3QsIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgYENPTkZJR19ORkNfRElHSVRBTGAgaXMgZW5hYmxlZCBhbmQgdW5kZXJzdGFuZCBpdHMgc2lnbmlmaWNhbmNlLlxuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSwgYW5kIGhvdyB0byB2ZXJpZnkgaWYgdGhpcyBpcyBpbiB1c2UuIEkgd2lsbCBuZXh0IGxvb2sgYXQgaG93IHRoaXMgZmVhdHVyZSBnZXRzIHVzZWQgd2l0aGluIHRoZSBrZXJuZWwgYW5kIGl0cyBhc3NvY2lhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4gTW9zdCBpbXBvcnRhbnRseSwgSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGlzIGNvbXBvbmVudCBpcyBhY2Nlc3NpYmxlIG9yIHRlc3RhYmxlIHdpdGhpbiBlbnZpcm9ubWVudHMgbGlrZSBzeXprYWxsZXIgb3IgdmlydHVhbGl6ZWQgc3lzdGVtcy4gSXMgaXQgZXZlbiByZWFjaGFibGU/XG5cblRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSwgSSBzaG91bGQgY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgd2l0aGluIHRoZSBgbmV0L25mY2AgZGlyZWN0b3J5LiBUaGF0J3Mgd2hlcmUgdGhlIGRlcGVuZGVuY2llcyBhbmQgZW5hYmxpbmcgY29uZGl0aW9ucyB3aWxsIGJlIGRlZmluZWQuIFRoYXQgc2hvdWxkIHBvaW50IG1lIGluIHRoZSByaWdodCBkaXJlY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1ODYsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjM5OjI4LjQ5NzQ4NjA1NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDU5NzgwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZDX0RJR0lUQUxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL0tjb25maWc9Nj1tZW51Y29uZmlnIE5GQ1xcbi0tXFxubmV0L25mYy9LY29uZmlnLTE2LVxcbm5ldC9uZmMvS2NvbmZpZzoxNzpjb25maWcgTkZDX0RJR0lUQUxcXG5uZXQvbmZjL0tjb25maWctMTgtXFx0ZGVwZW5kcyBvbiBORkNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6Mzk6MjguNTUyMDg5NTA2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6Mjg5NzMzNTU3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgTkZDIEtjb25maWcqKlxuXG5BbHJpZ2h0LCBsZXQncyBwdWxsIHVwIHRoZSBgbmV0L25mYy9LY29uZmlnYCBmaWxlLiBJJ20gYXNzdW1pbmcgd2UncmUgZGVhbGluZyB3aXRoIHRoZSBzdGFuZGFyZCBMaW51eCBrZXJuZWwgc291cmNlIGhlcmUsIHNvIHRoaXMgaXMgd2hlcmUgd2UnbGwgZmluZCBhbGwgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIE5lYXIgRmllbGQgQ29tbXVuaWNhdGlvbi4gSSdtIGltbWVkaWF0ZWx5IGxvb2tpbmcgZm9yIHRoZSBnZW5lcmFsIHN0cnVjdHVyZS4gSSdtIGV4cGVjdGluZyB0byBzZWUgdGhlIHN0YW5kYXJkIGBjb25maWdgIGJsb2NrcywgYGJvb2xgLCBgdHJpc3RhdGVgLCBhbmQgYHN0cmluZ2AgZGVmaW5pdGlvbnMuIEkgYW50aWNpcGF0ZSBzZWVpbmcgZGVwZW5kZW5jaWVzLCBsaWtlbHkgb24gb3RoZXIgbmV0d29yay1yZWxhdGVkIGZlYXR1cmVzIG9yIHBvdGVudGlhbGx5IGV2ZW4gaGFyZHdhcmUgZHJpdmVycywgZXNwZWNpYWxseSBpZiBORkMgY29udHJvbGxlciBzdXBwb3J0IGlzIG1vZHVsYXJpemVkLlxuXG5JJ20ga2VlcGluZyBhbiBleWUgb3V0IGZvciBob3cgdGhleSd2ZSBvcmdhbml6ZWQgdGhlIG9wdGlvbnMuIEFyZSB0aGV5IGdyb3VwZWQgYnkgTkZDIHByb3RvY29sIHN0YW5kYXJkcyAoZS5nLiwgTkZDLUEsIE5GQy1CLCBORkMtRik/IEJ5IGNvbnRyb2xsZXIgdHlwZT8gT3IgbWF5YmUgYnkgZmVhdHVyZSBzZXQsIGxpa2UgcmVhZGVyL3dyaXRlciBmdW5jdGlvbmFsaXR5IHZlcnN1cyBwZWVyLXRvLXBlZXI/IFRoZSBvcmdhbml6YXRpb24gd2lsbCB0ZWxsIG1lIGEgbG90IGFib3V0IHRoZSBkZXNpZ24gcGhpbG9zb3BoeS5cblxuTXkgZm9jdXMgd2lsbCBiZSBvbiB0aGUgZGVwZW5kZW5jaWVzIGFuZCBkZWZhdWx0cy4gV2hhdCBvdGhlciBrZXJuZWwgZmVhdHVyZXMgbmVlZCB0byBiZSBlbmFibGVkIGZvciBORkMgdG8gd29yaz8gQXJlIHRoZXJlIGFueSBoYXJkIGRlcGVuZGVuY2llcywgb3IgYXJlIG1vc3QgdGhpbmdzIGNvbmZpZ3VyYWJsZT8gVW5kZXJzdGFuZGluZyB0aGUgZGVmYXVsdHMgaXMga2V5IGJlY2F1c2UgdGhleSBkaWN0YXRlIHRoZSBcIm91dC1vZi10aGUtYm94XCIgYmVoYXZpb3IuIEFyZSB0aGUgZGVmYXVsdHMgc2Vuc2libGUgZnJvbSBhIHNlY3VyaXR5IGFuZCB1c2FiaWxpdHkgc3RhbmRwb2ludD8gVGhhdCdzIHdoYXQgSSdsbCBiZSBsb29raW5nIGF0LlxuXG5JJ2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IFwiZXhwZXJ0XCIgb3B0aW9ucywgaWYgdGhlcmUgYXJlIGFueSwgYW5kIGhvdyB0aGV5IGFyZSBleHBsYWluZWQuIEFyZSB0aGVyZSBjbGVhciBkZXNjcmlwdGlvbnMgb2YgdGhlIGltcGFjdCBvZiB0aGVzZSBvcHRpb25zPyBJIHdhbnQgdG8gc2VlIGlmIHRoZSBLY29uZmlnIHByb3ZpZGVzIHN1ZmZpY2llbnQgZ3VpZGFuY2UgZm9yIHRob3NlIHdobyBtaWdodCB3YW50IHRvIGN1c3RvbWl6ZSB0aGUgTkZDIHN0YWNrIGZvciB0aGVpciBzcGVjaWZpYyBlbWJlZGRlZCBkZXZpY2Ugb3IgYXBwbGljYXRpb24uIEZpbmFsbHksIEknbGwgc2tpbSBmb3IgYW55IGRlcHJlY2F0aW9uIHdhcm5pbmdzIG9yIGFueXRoaW5nIHRoYXQgcG9pbnRzIHRvIHNvbWUgb2YgdGhlIGNvZGUgYmVpbmcgcmVwbGFjZWQgb3IgdW5kZXIgZGV2ZWxvcG1lbnQuIEFsd2F5cyBpbnRlcmVzdGluZyB0byBub3RlIHRoZSBcIlRPRE9cIiBlbnRyaWVzIGFzIHdlbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5NzQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDozOTozMS40NDk0MjgwMThaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTE5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmZjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgTkZDIHN1YnN5c3RlbSBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnVjb25maWcgTkZDXFxuICAgNzpcXHRcXHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXFxuICAgODpcXHRcXHR0cmlzdGF0ZSBcXFwiTkZDIHN1YnN5c3RlbSBzdXBwb3J0XFxcIlxcbiAgIDk6XFx0XFx0ZGVmYXVsdCBuXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IHdhbnQgdG8gYnVpbGQgc3VwcG9ydCBmb3IgTkZDIChOZWFyIGZpZWxkXFxuICAxMjpcXHRcXHQgIGNvbW11bmljYXRpb24pIGRldmljZXMuXFxuICAxMzpcXHRcXG4gIDE0OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIHN1cHBvcnQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbFxcbiAgMTU6XFx0XFx0ICBiZSBjYWxsZWQgbmZjLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRjb25maWcgTkZDX0RJR0lUQUxcXG4gIDE4OlxcdFxcdGRlcGVuZHMgb24gTkZDXFxuICAxOTpcXHRcXHRzZWxlY3QgQ1JDX0NDSVRUXFxuICAyMDpcXHRcXHRzZWxlY3QgQ1JDX0lUVV9UXFxuICAyMTpcXHRcXHR0cmlzdGF0ZSBcXFwiTkZDIERpZ2l0YWwgUHJvdG9jb2wgc3RhY2sgc3VwcG9ydFxcXCJcXG4gIDIyOlxcdFxcdGRlZmF1bHQgblxcbiAgMjM6XFx0XFx0aGVscFxcbiAgMjQ6XFx0XFx0ICBTYXkgWSBpZiB5b3Ugd2FudCB0byBidWlsZCBORkMgZGlnaXRhbCBwcm90b2NvbCBzdGFjayBzdXBwb3J0LlxcbiAgMjU6XFx0XFx0ICBUaGlzIGlzIG5lZWRlZCBieSBORkMgY2hpcHNldHMgd2hvc2UgZmlybXdhcmUgb25seSBpbXBsZW1lbnRcXG4gIDI2OlxcdFxcdCAgdGhlIE5GQyBhbmFsb2cgbGF5ZXIuXFxuICAyNzpcXHRcXG4gIDI4OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIHN1cHBvcnQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbFxcbiAgMjk6XFx0XFx0ICBiZSBjYWxsZWQgbmZjX2RpZ2l0YWwuXFxuICAzMDpcXHRcXG4gIDMxOlxcdHNvdXJjZSBcXFwibmV0L25mYy9uY2kvS2NvbmZpZ1xcXCJcXG4gIDMyOlxcdHNvdXJjZSBcXFwibmV0L25mYy9oY2kvS2NvbmZpZ1xcXCJcXG4gIDMzOlxcdFxcbiAgMzQ6XFx0c291cmNlIFxcXCJkcml2ZXJzL25mYy9LY29uZmlnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDozOTozMS40NDk0OTEzNThaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyNjU4NDA0NjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBEZWNvZGluZyBORkNfRElHSVRBTCBVc2FnZSoqXG5cblJpZ2h0LCBsZXQncyBkaXZlIGludG8gdGhpcy4gXCJORkNfRElHSVRBTC5cIiBUaGF0IGltbWVkaWF0ZWx5IHNpZ25hbHMgYSBzcGVjaWZpYyBhcHBsaWNhdGlvbiBvciBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgTkZDIChOZWFyIEZpZWxkIENvbW11bmljYXRpb24pIGVjb3N5c3RlbS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSdtIHRoaW5raW5nIHRoaXMgbGlrZWx5IHJlZmVycyB0byBhIGRpZ2l0YWwgcmVwcmVzZW50YXRpb24gb3IgaW50ZXJmYWNlIHJlbGF0aW5nIHRvIE5GQywgbGlrZWx5IGZvciBhIHBhcnRpY3VsYXIgZGV2aWNlIGRyaXZlciBvciBzb2Z0d2FyZSBzdGFjay4gTXkgbWluZCBpbW1lZGlhdGVseSBzdGFydHMgcnVubmluZyB0aHJvdWdoIHRoZSBwb3RlbnRpYWwgY29udGV4dHMuIElzIHRoaXMgcmVsYXRlZCB0byBzZWN1cmUgZWxlbWVudCBpbnRlcmFjdGlvbnM/IENvbnRhY3RsZXNzIHBheW1lbnQgaW1wbGVtZW50YXRpb24/IFBlcmhhcHMgaXQncyB0aWVkIHRvIGEgc3BlY2lmaWMgcmVhZGVyIG1vZHVsZSBvciBhIGN1c3RvbSBORkMgcHJvdG9jb2w/IFRoZSBzcGVjaWZpY2l0eSBvZiBcIkRJR0lUQUxcIiBmZWVscyBsaWtlIGl0J3MgcG9pbnRpbmcgdG93YXJkcyBhIGRpZ2l0YWwgZW5jb2Rpbmcgb3IgZGF0YSBmb3JtYXQgbGF5ZXIuIFNvLCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZHJpdmVycyB0aGF0ICphY3R1YWxseSogbGV2ZXJhZ2UgdGhpcyBkaWdpdGFsIGludGVyZmFjZS4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4gVGltZSB0byBzdGFydCBkaWdnaW5nIVxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODQwLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDozOTozNC4xMDc4OTgxMjlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTAwMTM3OTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX05GQ19ESUdJVEFMfG5mY19kaWdpdGFsXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTEwMCBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuYXJjaC9hcm0vY29uZmlncy9leHlub3NfZGVmY29uZmlnPTc3PUNPTkZJR19ORkM9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvZXh5bm9zX2RlZmNvbmZpZzo3ODpDT05GSUdfTkZDX0RJR0lUQUw9bVxcbmFyY2gvYXJtL2NvbmZpZ3MvZXh5bm9zX2RlZmNvbmZpZy03OS1DT05GSUdfTkZDX05DST15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZz0xNjg9Q09ORklHX05GQz1tXFxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWc6MTY5OkNPTkZJR19ORkNfRElHSVRBTD1tXFxuYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWctMTcwLUNPTkZJR19ORkNfTkNJPW1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE1LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE2OiNkZWZpbmUgTkZDU0lNX0VSUihkLCBmbXQsIGFyZ3MuLi4pIG5mY19lcnIoXFx1MDAyNmQtXFx1MDAzZW5mY19kaWdpdGFsX2Rldi1cXHUwMDNlbmZjX2Rldi1cXHUwMDNlZGV2LCBcXFxcXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTctXFx0XFx0XFx0XFx0XFx0ICAgIFxcXCIlczogXFxcIiBmbXQsIF9fZnVuY19fLCAjIyBhcmdzKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE4LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE5OiNkZWZpbmUgTkZDU0lNX0RCRyhkLCBmbXQsIGFyZ3MuLi4pIGRldl9kYmcoXFx1MDAyNmQtXFx1MDAzZW5mY19kaWdpdGFsX2Rldi1cXHUwMDNlbmZjX2Rldi1cXHUwMDNlZGV2LCBcXFxcXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjAtXFx0XFx0XFx0XFx0XFx0ICAgIFxcXCIlczogXFxcIiBmbXQsIF9fZnVuY19fLCAjIyBhcmdzKVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM9MzE9c3RydWN0IG5mY3NpbSB7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzI6XFx0c3RydWN0IG5mY19kaWdpdGFsX2RldiAqbmZjX2RpZ2l0YWxfZGV2O1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMzLVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDUtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDY6XFx0bmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2I7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDctXFx0dm9pZCAqYXJnO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM9MTgyPXN0YXRpYyB2b2lkIG5mY3NpbV9yZWN2X3dxKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE5Ny1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoxOTg6XFx0ZGV2LVxcdTAwM2VjYihkZXYtXFx1MDAzZW5mY19kaWdpdGFsX2RldiwgZGV2LVxcdTAwM2VhcmcsIHNrYik7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTk5LX1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yMDAtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjAxOnN0YXRpYyBpbnQgbmZjc2ltX3NlbmQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyMDI6XFx0XFx0ICAgICAgIHUxNiB0aW1lb3V0LCBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwMy17XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjA0OlxcdHN0cnVjdCBuZmNzaW0gKmRldiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwNS1cXHR1OCBkZWxheTtcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIzOS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyNDA6c3RhdGljIHZvaWQgbmZjc2ltX2Fib3J0X2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI0MS17XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjQyOlxcdGNvbnN0IHN0cnVjdCBuZmNzaW0gKmRldiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI0My1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI0Ni1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyNDc6c3RhdGljIGludCBuZmNzaW1fc3dpdGNoX3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGJvb2wgb24pXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjQ4LXtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyNDk6XFx0c3RydWN0IG5mY3NpbSAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjUwLVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjU1LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI1NjpzdGF0aWMgaW50IG5mY3NpbV9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNTctXFx0XFx0XFx0XFx0XFx0ICBpbnQgdHlwZSwgaW50IHBhcmFtKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI1OC17XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjU5OlxcdHN0cnVjdCBuZmNzaW0gKmRldiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI2MC1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI3OC1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyNzk6c3RhdGljIGludCBuZmNzaW1faW5fc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yODAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI4MTpcXHRcXHRcXHQgICAgICAgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZylcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yODIte1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjg1LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI4NjpzdGF0aWMgaW50IG5mY3NpbV90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yODctXFx0XFx0XFx0XFx0XFx0ICBpbnQgdHlwZSwgaW50IHBhcmFtKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI4OC17XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mjg5OlxcdHN0cnVjdCBuZmNzaW0gKmRldiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI5MC1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMwOC1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMDk6c3RhdGljIGludCBuZmNzaW1fdGdfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMTAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjMxMTpcXHRcXHRcXHQgICAgICAgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZylcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMTIte1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzE1LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjMxNjpzdGF0aWMgaW50IG5mY3NpbV90Z19saXN0ZW4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTE2IHRpbWVvdXQsXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzE3OlxcdFxcdFxcdCAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMxOC17XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMjEtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzIyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZjX2RpZ2l0YWxfb3BzIG5mY3NpbV9kaWdpdGFsX29wcyA9IHtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMjMtXFx0LmluX2NvbmZpZ3VyZV9odyA9IG5mY3NpbV9pbl9jb25maWd1cmVfaHcsXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYz0zNDY9c3RhdGljIHZvaWQgbmZjc2ltX2RlYnVnZnNfaW5pdF9kZXYoc3RydWN0IG5mY3NpbSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzU3LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM1ODpcXHRpZHggPSBkZXYtXFx1MDAzZW5mY19kaWdpdGFsX2Rldi1cXHUwMDNlbmZjX2Rldi1cXHUwMDNlaWR4O1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM1OS1cXHRuID0gc25wcmludGYoZGV2bmFtZSwgc2l6ZW9mKGRldm5hbWUpLCBcXFwibmZjJWRcXFwiLCBpZHgpO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM9MzcwPXN0YXRpYyBzdHJ1Y3QgbmZjc2ltICpuZmNzaW1fZGV2aWNlX25ldyhzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmtfaW4sXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zODItXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzgzOlxcdGRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2ID1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozODQ6XFx0XFx0XFx0bmZjX2RpZ2l0YWxfYWxsb2NhdGVfZGV2aWNlKFxcdTAwMjZuZmNzaW1fZGlnaXRhbF9vcHMsXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzg1LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBORkNfUFJPVE9fTkZDX0RFUF9NQVNLLFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzg3LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAwLCAwKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozODg6XFx0aWYgKCFkZXYtXFx1MDAzZW5mY19kaWdpdGFsX2Rldikge1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM4OS1cXHRcXHRrZnJlZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzkyLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM5MzpcXHRuZmNfZGlnaXRhbF9zZXRfZHJ2ZGF0YShkZXYtXFx1MDAzZW5mY19kaWdpdGFsX2RldiwgZGV2KTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zOTQtXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zOTctXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mzk4OlxcdHJjID0gbmZjX2RpZ2l0YWxfcmVnaXN0ZXJfZGV2aWNlKGRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zOTktXFx0aWYgKHJjKSB7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDAwLVxcdFxcdHByX2VycihcXFwiQ291bGQgbm90IHJlZ2lzdGVyIGRpZ2l0YWwgZGV2aWNlICglZClcXFxcblxcXCIsIHJjKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0MDE6XFx0XFx0bmZjX2RpZ2l0YWxfZnJlZV9kZXZpY2UoZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQwMi1cXHRcXHRrZnJlZShkZXYpO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM9NDEyPXN0YXRpYyB2b2lkIG5mY3NpbV9kZXZpY2VfZnJlZShzdHJ1Y3QgbmZjc2ltICpkZXYpXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDEzLXtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0MTQ6XFx0bmZjX2RpZ2l0YWxfdW5yZWdpc3Rlcl9kZXZpY2UoZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQxNS1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQyMi1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0MjM6XFx0bmZjX2RpZ2l0YWxfZnJlZV9kZXZpY2UoZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQyNC1cXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0yMjE9aW5fcHJvdG9jb2xzW11bUE9SVDEwMF9JTl9NQVhfTlVNX1BST1RPQ09MUyArIDFdID0ge1xcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI4OC1cXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1QxVF0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI4OTpcXHRcXHQvKiBuZmNfZGlnaXRhbF9mcmFtaW5nX25mY2Ffc2hvcnQgKi9cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjkwLVxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9DUkMsICAgICAgICAgIDIgfSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yOTYtXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UMlRdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyOTc6XFx0XFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNhX3N0YW5kYXJkICovXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI5OC1cXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfQ1JDLCAgIDEgfSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMDItXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UNFRdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMDM6XFx0XFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNhX3N0YW5kYXJkX3dpdGhfY3JjX2EgKi9cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzA0LVxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0VORCwgICAgICAgMCB9LFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTMwNi1cXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX05GQ19ERVBdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMDc6XFx0XFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNhX3N0YW5kYXJkICovXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTMwOC1cXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsIDAgfSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMzItXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDRl9UM1RdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMzM6XFx0XFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNmICovXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTMzNC1cXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsIDAgfSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMzYtXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDRl9ORkNfREVQXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzM3OlxcdFxcdC8qIG5mY19kaWdpdGFsX2ZyYW1pbmdfbmZjZiAqL1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMzgtXFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfSU5JVElBTF9HVUFSRF9USU1FLCAgICAgMTggfSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zODQtXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQl9UNFRdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozODU6XFx0XFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNiICovXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM4Ni1cXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsICAgICAgICAgICAgICAgICAgICAgMCB9LFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTQzOT1zdHJ1Y3QgcG9ydDEwMCB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQ0MDpcXHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpuZmNfZGlnaXRhbF9kZXY7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQ0MS1cXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz00OTY9c3RydWN0IHBvcnQxMDBfY2JfYXJnIHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDk3OlxcdG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNvbXBsZXRlX2NiO1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00OTgtXFx0dm9pZCAqY29tcGxldGVfYXJnO1xcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTkzMT1zdGF0aWMgdm9pZCBwb3J0MTAwX3NlbmRfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTk1NC1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6OTU1OnN0YXRpYyB2b2lkIHBvcnQxMDBfYWJvcnRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTk1Ni17XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjk1NzpcXHRzdHJ1Y3QgcG9ydDEwMCAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTk1OC1cXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xMDI1PXN0YXRpYyB1MTYgcG9ydDEwMF9nZXRfZmlybXdhcmVfdmVyc2lvbihzdHJ1Y3QgcG9ydDEwMCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEwNDYtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEwNDc6c3RhdGljIGludCBwb3J0MTAwX3N3aXRjaF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBib29sIG9uKVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMDQ4LXtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTA0OTpcXHRzdHJ1Y3QgcG9ydDEwMCAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEwNTAtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYiwgKnJlc3A7XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTA3MS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTA3MjpzdGF0aWMgaW50IHBvcnQxMDBfaW5fc2V0X3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmKVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMDczLXtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTA3NDpcXHRzdHJ1Y3QgcG9ydDEwMCAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEwNzUtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMTAwLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMTAxOnN0YXRpYyBpbnQgcG9ydDEwMF9pbl9zZXRfZnJhbWluZyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgcGFyYW0pXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExMDIte1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMTAzOlxcdHN0cnVjdCBwb3J0MTAwICpkZXYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTEwNC1cXHRjb25zdCBzdHJ1Y3QgcG9ydDEwMF9wcm90b2NvbCAqcHJvdG9jb2xzO1xcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExNDItXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjExNDM6c3RhdGljIGludCBwb3J0MTAwX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgdHlwZSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTE0NC1cXHRcXHRcXHRcXHQgICBpbnQgcGFyYW0pXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTE1NT1zdGF0aWMgdm9pZCBwb3J0MTAwX2luX2NvbW1fcmZfY29tcGxldGUoc3RydWN0IHBvcnQxMDAgKmRldiwgdm9pZCAqYXJnLFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTExNTgtXFx0Y29uc3Qgc3RydWN0IHBvcnQxMDBfY2JfYXJnICpjYl9hcmcgPSBhcmc7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjExNTk6XFx0bmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IgPSBjYl9hcmctXFx1MDAzZWNvbXBsZXRlX2NiO1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMTYwLVxcdHUzMiBzdGF0dXM7XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIwMC1leGl0OlxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMjAxOlxcdGNiKGRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2LCBjYl9hcmctXFx1MDAzZWNvbXBsZXRlX2FyZywgcmVzcCk7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMDItXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIwNS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTIwNjpzdGF0aWMgaW50IHBvcnQxMDBfaW5fc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIwNy1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IF90aW1lb3V0LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMjA4OlxcdFxcdFxcdCAgICAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjA5LXtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTIxMDpcXHRzdHJ1Y3QgcG9ydDEwMCAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMTEtXFx0c3RydWN0IHBvcnQxMDBfY2JfYXJnICpjYl9hcmc7XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIyOC1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTIyOTpzdGF0aWMgaW50IHBvcnQxMDBfdGdfc2V0X3JmKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmKVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjMwLXtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTIzMTpcXHRzdHJ1Y3QgcG9ydDEwMCAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyMzItXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjU3LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMjU4OnN0YXRpYyBpbnQgcG9ydDEwMF90Z19zZXRfZnJhbWluZyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgcGFyYW0pXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyNTkte1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMjYwOlxcdHN0cnVjdCBwb3J0MTAwICpkZXYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTI2MS1cXHRjb25zdCBzdHJ1Y3QgcG9ydDEwMF9wcm90b2NvbCAqcHJvdG9jb2xzO1xcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEyOTktXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEzMDA6c3RhdGljIGludCBwb3J0MTAwX3RnX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgdHlwZSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTMwMS1cXHRcXHRcXHRcXHQgICBpbnQgcGFyYW0pXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTMzMj1zdGF0aWMgdm9pZCBwb3J0MTAwX3RnX2NvbW1fcmZfY29tcGxldGUoc3RydWN0IHBvcnQxMDAgKmRldiwgdm9pZCAqYXJnLFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzMzYtXFx0Y29uc3Qgc3RydWN0IHBvcnQxMDBfY2JfYXJnICpjYl9hcmcgPSBhcmc7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEzMzc6XFx0bmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IgPSBjYl9hcmctXFx1MDAzZWNvbXBsZXRlX2NiO1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzM4LVxcdHN0cnVjdCBwb3J0MTAwX3RnX2NvbW1fcmZfcmVzICpoZHI7XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTM2Ni1leGl0OlxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMzY3OlxcdGNiKGRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2LCBjYl9hcmctXFx1MDAzZWNvbXBsZXRlX2FyZywgcmVzcCk7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzNjgtXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTM3MS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTM3MjpzdGF0aWMgaW50IHBvcnQxMDBfdGdfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTM3My1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHRpbWVvdXQsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEzNzQ6XFx0XFx0XFx0ICAgICAgIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLCB2b2lkICphcmcpXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzNzUte1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMzc2OlxcdHN0cnVjdCBwb3J0MTAwICpkZXYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTM3Ny1cXHRzdHJ1Y3QgcG9ydDEwMF90Z19jb21tX3JmX2NtZCAqaGRyO1xcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTEzOTktXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE0MDA6c3RhdGljIGludCBwb3J0MTAwX2xpc3Rlbl9tZGFhKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0MDEtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBkaWdpdGFsX3RnX21kYWFfcGFyYW1zICpwYXJhbXMsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0MDItXFx0XFx0XFx0ICAgICAgIHUxNiB0aW1lb3V0LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNDAzOlxcdFxcdFxcdCAgICAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDA0LXtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTQwNTpcXHRzdHJ1Y3QgcG9ydDEwMCAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0MDYtXFx0c3RydWN0IHBvcnQxMDBfdGdfY29tbV9yZl9jbWQgKmhkcjtcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDU1LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNDU2OnN0YXRpYyBpbnQgcG9ydDEwMF9saXN0ZW4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTE2IHRpbWVvdXQsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE0NTc6XFx0XFx0XFx0ICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDU4LXtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTQ1OTpcXHRjb25zdCBzdHJ1Y3QgcG9ydDEwMCAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0NjAtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDY4LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNDY5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZjX2RpZ2l0YWxfb3BzIHBvcnQxMDBfZGlnaXRhbF9vcHMgPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE0NzAtXFx0LmluX2NvbmZpZ3VyZV9odyA9IHBvcnQxMDBfaW5fY29uZmlndXJlX2h3LFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTE0ODk9c3RhdGljIGludCBwb3J0MTAwX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UsXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTU3MS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTU3MjpcXHRkZXYtXFx1MDAzZW5mY19kaWdpdGFsX2RldiA9IG5mY19kaWdpdGFsX2FsbG9jYXRlX2RldmljZShcXHUwMDI2cG9ydDEwMF9kaWdpdGFsX29wcyxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTU3My1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgICBQT1JUMTAwX1BST1RPQ09MUyxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTc2LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIGRldi1cXHUwMDNlc2tiX3RhaWxyb29tKTtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTU3NzpcXHRpZiAoIWRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE1NzgtXFx0XFx0bmZjX2VycihcXHUwMDI2aW50ZXJmYWNlLVxcdTAwM2VkZXYsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE1Nzk6XFx0XFx0XFx0XFxcIkNvdWxkIG5vdCBhbGxvY2F0ZSBuZmNfZGlnaXRhbF9kZXZcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTgwLVxcdFxcdHJjID0gLUVOT01FTTtcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTgzLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNTg0OlxcdG5mY19kaWdpdGFsX3NldF9wYXJlbnRfZGV2KGRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2LCBcXHUwMDI2aW50ZXJmYWNlLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNTg1OlxcdG5mY19kaWdpdGFsX3NldF9kcnZkYXRhKGRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2LCBkZXYpO1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTg2LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNTg3OlxcdHJjID0gbmZjX2RpZ2l0YWxfcmVnaXN0ZXJfZGV2aWNlKGRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KTtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTU4OC1cXHRpZiAocmMpIHtcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNTk2LWZyZWVfbmZjX2RldjpcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTU5NzpcXHRuZmNfZGlnaXRhbF9mcmVlX2RldmljZShkZXYtXFx1MDAzZW5mY19kaWdpdGFsX2Rldik7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE1OTgtXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9MTYwOD1zdGF0aWMgdm9pZCBwb3J0MTAwX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNjE0LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNjE1OlxcdG5mY19kaWdpdGFsX3VucmVnaXN0ZXJfZGV2aWNlKGRldi1cXHUwMDNlbmZjX2RpZ2l0YWxfZGV2KTtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTYxNjpcXHRuZmNfZGlnaXRhbF9mcmVlX2RldmljZShkZXYtXFx1MDAzZW5mY19kaWdpdGFsX2Rldik7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE2MTctXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTE4NT1zdHJ1Y3Qgc3Q5NV9kaWdpdGFsX2NtZF9jb21wbGV0ZV9hcmcge1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTg2LVxcdHN0cnVjdCBza19idWZmICpza2JfcmVzcDtcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjE4NzpcXHRuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjb21wbGV0ZV9jYjtcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTE4OC1cXHR2b2lkICpjYl91c3Jhcmc7XFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTIxNz1zdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQge1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMjE4LVxcdHN0cnVjdCBzdDk1aGZfc3BpX2NvbnRleHQgc3BpY29udGV4dDtcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjIxOTpcXHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2O1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMjIwLVxcdHN0cnVjdCBuZmNfZGV2ICpuZmNkZXY7XFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTUzMT1zdGF0aWMgaW50IGlzbzE0NDQzX2NvbmZpZ19mZHQoc3RydWN0IHN0OTVoZl9jb250ZXh0ICpzdDk1Y29udGV4dCwgaW50IHd0eG0pXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTUzNC1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2c3Q5NWNvbnRleHQtXFx1MDAzZXNwaWNvbnRleHQuc3BpZGV2LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo1MzU6XFx0c3RydWN0IG5mY19kaWdpdGFsX2RldiAqbmZjZGRldiA9IHN0OTVjb250ZXh0LVxcdTAwM2VkZGV2O1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNTM2LVxcdHVuc2lnbmVkIGNoYXIgcHBfdHlwZWI7XFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTYwMj1zdGF0aWMgaW50IHN0OTVoZl9oYW5kbGVfd3R4KHN0cnVjdCBzdDk1aGZfY29udGV4dCAqc3Rjb250ZXh0LFxcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy02MDgtXFx0c3RydWN0IHBhcmFtX2xpc3QgbmV3X3BhcmFtc1sxXTtcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjYwOTpcXHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpuZmNkZGV2ID0gc3Rjb250ZXh0LVxcdTAwM2VkZGV2O1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNjEwLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZzdGNvbnRleHQtXFx1MDAzZW5mY2Rldi1cXHUwMDNlZGV2O1xcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYz02OTM9c3RhdGljIGludCBzdDk1aGZfcmVzcG9uc2VfaGFuZGxlcihzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0Y29udGV4dCxcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtNjk5LVxcdHVuc2lnbmVkIGNoYXIgdmFsX21tO1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6NzAwOlxcdHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKm5mY2RkZXYgPSBzdGNvbnRleHQtXFx1MDAzZWRkZXY7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy03MDEtXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnN0Y29udGV4dC1cXHUwMDNlbmZjZGV2LVxcdTAwM2VkZXY7XFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTc2Nj1zdGF0aWMgaXJxcmV0dXJuX3Qgc3Q5NWhmX2lycV90aHJlYWRfaGFuZGxlcihpbnQgaXJxLCB2b2lkICAqc3Q5NWhmY29udGV4dClcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtODY4LS8qIE5GQyBvcHMgZnVuY3Rpb25zIGRlZmluaXRpb24gKi9cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjg2OTpzdGF0aWMgaW50IHN0OTVoZl9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTg3MC1cXHRcXHRcXHRcXHQgIGludCB0eXBlLFxcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy04NzIte1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6ODczOlxcdHN0cnVjdCBzdDk1aGZfY29udGV4dCAqc3Rjb250ZXh0ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy04NzQtXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTkwMT1zdGF0aWMgaW50IHJmX29mZihzdHJ1Y3Qgc3Q5NWhmX2NvbnRleHQgKnN0Y29udGV4dClcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTE0LVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6OTE1OnN0YXRpYyBpbnQgc3Q5NWhmX2luX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05MTYtXFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTkxNy1cXHRcXHRcXHQgICAgICB1MTYgdGltZW91dCxcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjkxODpcXHRcXHRcXHQgICAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYixcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTkxOS1cXHRcXHRcXHQgICAgICB2b2lkICphcmcpXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05MjAte1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6OTIxOlxcdHN0cnVjdCBzdDk1aGZfY29udGV4dCAqc3Rjb250ZXh0ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05MjItXFx0aW50IHJjO1xcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05ODgtLyogcDJwIHdpbGwgYmUgc3VwcG9ydGVkIGluIGEgbGF0ZXIgcmVsZWFzZSAhICovXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzo5ODk6c3RhdGljIGludCBzdDk1aGZfdGdfY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05OTAtXFx0XFx0XFx0XFx0ICBpbnQgdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtOTk1LVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6OTk2OnN0YXRpYyBpbnQgc3Q5NWhmX3RnX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy05OTctXFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTk5OC1cXHRcXHRcXHQgICAgICB1MTYgdGltZW91dCxcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjk5OTpcXHRcXHRcXHQgICAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYixcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMDAtXFx0XFx0XFx0ICAgICAgdm9pZCAqYXJnKVxcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMDA0LVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MTAwNTpzdGF0aWMgaW50IHN0OTVoZl90Z19saXN0ZW4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMDYtXFx0XFx0XFx0ICAgIHUxNiB0aW1lb3V0LFxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MTAwNzpcXHRcXHRcXHQgICAgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMDA4LVxcdFxcdFxcdCAgICB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMTItXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMDEzOnN0YXRpYyBpbnQgc3Q5NWhmX3RnX2dldF9yZl90ZWNoKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4ICpyZl90ZWNoKVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAxNC17XFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMTctXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMDE4OnN0YXRpYyBpbnQgc3Q5NWhmX3N3aXRjaF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBib29sIG9uKVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAxOS17XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMDIwLVxcdHU4IHJmX3RlY2g7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMDIxOlxcdHN0cnVjdCBzdDk1aGZfY29udGV4dCAqc3Rjb250ZXh0ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMDIyLVxcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMDMzLS8qIFRPRE8gc3Q5NWhmX2Fib3J0X2NtZCAqL1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MTAzNDpzdGF0aWMgdm9pZCBzdDk1aGZfYWJvcnRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMDM1LXtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTAzNy1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjEwMzg6c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfZGlnaXRhbF9vcHMgc3Q5NWhmX25mY19kaWdpdGFsX29wcyA9IHtcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEwMzktXFx0LmluX2NvbmZpZ3VyZV9odyA9IHN0OTVoZl9pbl9jb25maWd1cmVfaHcsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTEwNjM9c3RhdGljIGludCBzdDk1aGZfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKm5mY19zcGlfZGV2KVxcbi0tXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMTU5LVxcdC8qIGNyZWF0ZSBORkMgZGV2IG9iamVjdCBhbmQgcmVnaXN0ZXIgd2l0aCBORkMgU3Vic3lzdGVtICovXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMTYwOlxcdHN0OTVjb250ZXh0LVxcdTAwM2VkZGV2ID0gbmZjX2RpZ2l0YWxfYWxsb2NhdGVfZGV2aWNlKFxcdTAwMjZzdDk1aGZfbmZjX2RpZ2l0YWxfb3BzLFxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTE2MS1cXHRcXHRcXHRcXHRcXHRcXHRcXHRTVDk1SEZfU1VQUE9SVEVEX1BST1QsXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTExNzAtXFx0c3Q5NWNvbnRleHQtXFx1MDAzZW5mY2RldiA9IHN0OTVjb250ZXh0LVxcdTAwM2VkZGV2LVxcdTAwM2VuZmNfZGV2O1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MTE3MTpcXHRuZmNfZGlnaXRhbF9zZXRfcGFyZW50X2RldihzdDk1Y29udGV4dC1cXHUwMDNlZGRldiwgXFx1MDAyNm5mY19zcGlfZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTE3Mi1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjExNzM6XFx0cmV0ID0gIG5mY19kaWdpdGFsX3JlZ2lzdGVyX2RldmljZShzdDk1Y29udGV4dC1cXHUwMDNlZGRldik7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMTc0LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTE3OS1cXHQvKiBzdG9yZSBzdDk1Y29udGV4dCBpbiBuZmMgZGV2aWNlIG9iamVjdCAqL1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmM6MTE4MDpcXHRuZmNfZGlnaXRhbF9zZXRfZHJ2ZGF0YShzdDk1Y29udGV4dC1cXHUwMDNlZGRldiwgc3Q5NWNvbnRleHQpO1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTE4MS1cXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTE4Ny1lcnJfZnJlZV9kaWdpdGFsX2RldmljZTpcXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jOjExODg6XFx0bmZjX2RpZ2l0YWxfZnJlZV9kZXZpY2Uoc3Q5NWNvbnRleHQtXFx1MDAzZWRkZXYpO1xcbmRyaXZlcnMvbmZjL3N0OTVoZi9jb3JlLmMtMTE4OS1lcnJfZGlzYWJsZV9yZWd1bGF0b3I6XFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jPTExOTY9c3RhdGljIHZvaWQgc3Q5NWhmX3JlbW92ZShzdHJ1Y3Qgc3BpX2RldmljZSAqbmZjX3NwaV9kZXYpXFxuLS1cXG5kcml2ZXJzL25mYy9zdDk1aGYvY29yZS5jLTEyMDctXFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMjA4OlxcdG5mY19kaWdpdGFsX3VucmVnaXN0ZXJfZGV2aWNlKHN0Y29udGV4dC1cXHUwMDNlZGRldik7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYzoxMjA5OlxcdG5mY19kaWdpdGFsX2ZyZWVfZGV2aWNlKHN0Y29udGV4dC1cXHUwMDNlZGRldik7XFxuZHJpdmVycy9uZmMvc3Q5NWhmL2NvcmUuYy0xMjEwLVxcdHN0Y29udGV4dC1cXHUwMDNlbmZjZGV2X2ZyZWUgPSB0cnVlO1xcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYz00MzA9c3RydWN0IHRyZjc5NzBhIHtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtNDM1LVxcdHN0cnVjdCByZWd1bGF0b3JcXHRcXHQqdmRkaW9fcmVndWxhdG9yO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6NDM2OlxcdHN0cnVjdCBuZmNfZGlnaXRhbF9kZXZcXHRcXHQqZGRldjtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQzNy1cXHR1MzJcXHRcXHRcXHRcXHRxdWlya3M7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ0MS1cXHRzdHJ1Y3Qgc2tfYnVmZlxcdFxcdFxcdCpyeF9za2I7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzo0NDI6XFx0bmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3RcXHRjYjtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTQ0My1cXHR2b2lkXFx0XFx0XFx0XFx0KmNiX2FyZztcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTE0Nz1zdGF0aWMgaW50IHRyZjc5NzBhX3N3aXRjaF9yZl9vbihzdHJ1Y3QgdHJmNzk3MGEgKnRyZilcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE3MS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjExNzI6c3RhdGljIGludCB0cmY3OTcwYV9zd2l0Y2hfcmYoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgYm9vbCBvbilcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTExNzMte1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTE3NDpcXHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTE3NS1cXHRpbnQgcmV0ID0gMDtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTMxMj1zdGF0aWMgaW50IHRyZjc5NzBhX2luX2NvbmZpZ19mcmFtaW5nKHN0cnVjdCB0cmY3OTcwYSAqdHJmLCBpbnQgZnJhbWluZylcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTM4Ni1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzODc6c3RhdGljIGludCB0cmY3OTcwYV9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzg4LVxcdFxcdFxcdFxcdCAgICBpbnQgcGFyYW0pXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xMzg5LXtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjEzOTA6XFx0c3RydWN0IHRyZjc5NzBhICp0cmYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTEzOTEtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM9MTQzOT1zdGF0aWMgaW50IHRyZjc5NzBhX3Blcl9jbWRfY29uZmlnKHN0cnVjdCB0cmY3OTcwYSAqdHJmLFxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTA3LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTUwODpzdGF0aWMgaW50IHRyZjc5NzBhX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNTA5LVxcdFxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTE2IHRpbWVvdXQsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNTEwOlxcdFxcdFxcdCAgICAgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZylcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE1MTEte1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTUxMjpcXHRzdHJ1Y3QgdHJmNzk3MGEgKnRyZiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTUxMy1cXHR1OCBwcmVmaXhbNV07XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTE2NzA9c3RhdGljIGludCB0cmY3OTcwYV90Z19jb25maWdfZnJhbWluZyhzdHJ1Y3QgdHJmNzk3MGEgKnRyZiwgaW50IGZyYW1pbmcpXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3MjgtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNzI5OnN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIGludCB0eXBlLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTczMC1cXHRcXHRcXHRcXHQgICAgaW50IHBhcmFtKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTczMS17XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNzMyOlxcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNzMzLVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE3NjQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNzY1OnN0YXRpYyBpbnQgX3RyZjc5NzBhX3RnX2xpc3RlbihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1MTYgdGltZW91dCxcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE3NjY6XFx0XFx0XFx0ICAgICAgIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLCB2b2lkICphcmcsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNzY3LVxcdFxcdFxcdCAgICAgICBib29sIG1vZGVfZGV0ZWN0KVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTc2OC17XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxNzY5OlxcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xNzcwLVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4NDMtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODQ0OnN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfbGlzdGVuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHUxNiB0aW1lb3V0LFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTg0NTpcXHRcXHRcXHQgICAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTg0Ni17XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODQ3OlxcdGNvbnN0IHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODQ4LVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODU0LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTg1NTpzdGF0aWMgaW50IHRyZjc5NzBhX3RnX2xpc3Rlbl9tZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTg1NjpcXHRcXHRcXHRcXHQgdTE2IHRpbWVvdXQsIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLFxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTg1Ny1cXHRcXHRcXHRcXHQgdm9pZCAqYXJnKVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTg1OC17XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODU5OlxcdGNvbnN0IHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODYwLVxcdGludCByZXQ7XFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4NzctXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODc4OnN0YXRpYyBpbnQgdHJmNzk3MGFfdGdfZ2V0X3JmX3RlY2goc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggKnJmX3RlY2gpXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODc5LXtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jOjE4ODA6XFx0Y29uc3Qgc3RydWN0IHRyZjc5NzBhICp0cmYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4ODEtXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTE4ODktXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODkwOnN0YXRpYyB2b2lkIHRyZjc5NzBhX2Fib3J0X2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTg5MS17XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoxODkyOlxcdHN0cnVjdCB0cmY3OTcwYSAqdHJmID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xODkzLVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0xOTE2LVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MTkxNzpzdGF0aWMgY29uc3Qgc3RydWN0IG5mY19kaWdpdGFsX29wcyB0cmY3OTcwYV9uZmNfb3BzID0ge1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmMtMTkxOC1cXHQuaW5fY29uZmlndXJlX2h3XFx0PSB0cmY3OTcwYV9pbl9jb25maWd1cmVfaHcsXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jPTIwNDU9c3RhdGljIGludCB0cmY3OTcwYV9wcm9iZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpKVxcbi0tXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yMTczLVxcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MjE3NDpcXHR0cmYtXFx1MDAzZWRkZXYgPSBuZmNfZGlnaXRhbF9hbGxvY2F0ZV9kZXZpY2UoXFx1MDAyNnRyZjc5NzBhX25mY19vcHMsXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yMTc1LVxcdFxcdFxcdFxcdFxcdFxcdFRSRjc5NzBBX1NVUFBPUlRFRF9QUk9UT0NPTFMsXFxuLS1cXG5kcml2ZXJzL25mYy90cmY3OTcwYS5jLTIxODQtXFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYzoyMTg1OlxcdG5mY19kaWdpdGFsX3NldF9wYXJlbnRfZGV2KHRyZi1cXHUwMDNlZGRldiwgdHJmLVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmZjL3RyZjc5NzBhLmM6MjE4NjpcXHRuZmNfZGlnaXRhbF9zZXRfZHJ2ZGF0YSh0cmYtXFx1MDAzZWRkZXYsIHRyZik7XFxuZHJpdmVycy9uZmMvdHJmNzk3MGEuYy0yMTg3LVxcdHNwaV9zZXRfZHJ2ZGF0YShzcGksIHRyZik7XFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6Mzk6MzYuNTE3OTI5NjIxWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjMyOTY1MzY3NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIE5GQyBEcml2ZXIgTGFuZHNjYXBlKipcblxuT2theSwgaGVyZSdzIHdoYXQncyBnb2luZyBvbi4gSSdtIGxvb2tpbmcgYXQgYHBvcnQxMDAuY2Ag4oCTIGFoLCByaWdodCwgdGhhdCdzIGEgVVNCIGRyaXZlciwgc3BlY2lmaWNhbGx5IGxvY2F0ZWQgaW4gdGhlIGBkcml2ZXJzL25mY2AgZGlyZWN0b3J5LiBTZWVtcyBsaWtlIHRoZSBVU0IgTkZDIGRyaXZlci4gSW50ZXJlc3RpbmchIEFuZCB0aGVuIHRoZXJlJ3MgYGRyaXZlcnMvbmZjL25mY3NpbS5jYCwgd2hpY2gsIGJhc2VkIG9uIHRoZSBuYW1lLCBtdXN0IGJlIGEgdmlydHVhbCBvciBzaW11bGF0ZWQgTkZDIGRyaXZlci4gVGhpcyBpcyBoZWxwZnVsIHRvIGtub3cuIEkndmUgYmVlbiBtZWFuaW5nIHRvIGRpdmUgZGVlcGVyIGludG8gdGhlIE5GQyBsYW5kc2NhcGUgaW4gdGhlIGtlcm5lbC5cblxuTm93LCBjb25zaWRlcmluZyB0aGUgY2FwYWJpbGl0aWVzIG9mIHN5emthbGxlciwgaXQgc3VwcG9ydHMgVVNCIGZ1enppbmcsIHNwZWNpZmljYWxseSB1dGlsaXppbmcgUmF3IEdhZGdldCBvciBVU0IgZW11bGF0aW9uLiBUaGlzIGlzIHBlcmZlY3QhIFRoYXQgbWVhbnMgaXQgY2FuIHBvdGVudGlhbGx5IGVtdWxhdGUgdGhlIGBwb3J0MTAwYCBVU0IgZGV2aWNlLCBvciBldmVuIHRoZSBgbmZjc2ltYCB2aXJ0dWFsIGRldmljZS4gSXQgY2FuIGFsc28gbGlrZWx5IGludGVyYWN0IHdpdGggTkZDIG5ldGxpbmsgLyBzb2NrZXRzIChgQUZfTkZDYCksIHdoaWNoIGlzIGFub3RoZXIgYXZlbnVlIHRvIGV4cGxvcmUuXG5cblJpZ2h0LCB0aW1lIHRvIGRpZyBkZWVwZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbiBjYWxscywgc28gbGV0J3Mgc3RhcnQgYnkgY2hlY2tpbmcgaG93IGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgaXMgYWN0dWFsbHkgaW52b2tlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgzNzIsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6Mzk6MzkuODE0NDY4MjE5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODM4NTYyMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDY9c3RhdGljIHZvaWQgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDctXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA4OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA5LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTc4PXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2FjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMTItXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMTM6XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHNrYiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMTQtXFx0XFx0XFx0XFx0IGRhdGFfZXhjaCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTAyND1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hdG4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUxLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDUyOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDUzLVxcdFxcdFxcdFxcdCBOVUxMKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDYwPXN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNjktXFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIGRkZXYtXFx1MDAzZXNhdmVkX3NrYiwgMTUwMCxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA3MDpcXHRcXHRcXHRcXHQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDcxLVxcdGlmIChyYylcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDc2LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDc3OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3OC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTI5Nz1pbnQgZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzMxLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzMyOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCB0bXBfc2tiLCAxNTAwLCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMzMy1cXHRcXHRcXHRcXHQgTlVMTCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTM0OD1zdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3NlbmRfcHNsX3Jlc19jb21wbGV0ZShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNTktXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzNjA6XFx0ZGlnaXRhbF90Z19saXN0ZW4oZGRldiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzYxLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTE0Njc9c3RhdGljIHZvaWQgZGlnaXRhbF90Z19zZW5kX2F0cl9yZXNfY29tcGxldGUoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg1LVxcdGVsc2VcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTQ4NjpcXHRcXHRkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg3LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6Mzk6MzkuODYyODU3MzIxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjM5NTU3NzA0MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBERVBfUkVRIEZyYW1lIEhhbmRsaW5nIGluIERpZ2l0YWwgTkZDKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBmb2N1cyBpcyBvbiBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgLCB3aGljaCBoYW5kbGVzIHRoZSBpbmNvbWluZyBERVBfUkVRIGZyYW1lcyBpbiB0YXJnZXQgbW9kZSB3aXRoaW4gYGRpZ2l0YWxfZGVwLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHNwZWNpZmljIGNoYW5nZS4gRmlyc3QsIEknbGwgbmVlZCB0byBjaGVjayB0aGUgY29tbWl0IGl0c2VsZiB0byBncmFzcCB0aGUgYnVnIHRoYXQncyBiZWluZyBmaXhlZCBvciB0aGUgY2hhbmdlIGludHJvZHVjZWQuIEkgY291bGQgdXNlIGBnaXQgbG9nYCBpZiBuZWNlc3NhcnksIG9yIHNpbXBseSBleGFtaW5lIHRoZSBjb21taXQgbWVzc2FnZSBhbmQgdGhlIGRpZmYgZGlyZWN0bHkuXG5cblRoZSBwcm92aWRlZCBkaWZmIGdpdmVzIG1lIHRoZSBtZWF0IG9mIHRoZSBjaGFuZ2UuIEl0IHNlZW1zIHdlJ3JlIGRlYWxpbmcgd2l0aCBEZXZpY2UgSUQgKERJRCkgaGFuZGxpbmcgd2l0aGluIHRoZSBERVBfUkVRIGZyYW1lLiBJbml0aWFsbHksIHRoZSBjb2RlIGhhZCBhIGNvbmRpdGlvbmFsIGNoZWNrIGZvciB0aGUgRElEIGJpdCBiZWluZyBzZXQgaW4gdGhlIFByb3RvY29sIEZvcm1hdCBCeXRlIChQRkIpLiBJZiB0aGUgRElEIGJpdCB3YXMgc2V0LCBhbmQgdGhlIGBkZGV2LVx1MDAzZWRpZGAgd2FzIHZhbGlkLCBpdCBwZXJmb3JtZWQgYSBjaGVjayBvbiB0aGUgaW5jb21pbmcgZGF0YS4gVGhlIG9yaWdpbmFsIGNoZWNrIHdhcyBmbGF3ZWQuIFRoZSB1cGRhdGVkIHZlcnNpb24gbm93IGV4cGxpY2l0bHkgY2hlY2tzIHRoYXQgdGhlIHJlc3BvbnNlIGxlbmd0aCAoYHJlc3AtXHUwMDNlbGVuYCkgaXMgc3VmZmljaWVudCB0byBpbmNsdWRlIHRoZSBESUQgYnl0ZS4gSXQgYWxzbyBlbnN1cmVzIHRoYXQgdGhlIGBkZGV2LVx1MDAzZWRpZGAgaXMgdmFsaWQgYW5kIHRoYXQgdGhlIGluY29taW5nIERJRCBtYXRjaGVzIHRoZSBleHBlY3RlZCB2YWx1ZSwgZWZmZWN0aXZlbHkgaW1wcm92aW5nIHRoZSByb2J1c3RuZXNzIG9mIHRoZSBESUQgdmFsaWRhdGlvbi4gVGhpcyBhcHBlYXJzIHRvIGJlIGEgY3J1Y2lhbCBmaXggZm9yIGVuc3VyaW5nIGNvcnJlY3QgRElEIHByb2Nlc3NpbmcuXG5cbk5vdywgSSdtIGdvaW5nIHRvIGxvb2sgYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZ3Jhc3AgdGhlIGNvbnRleHQgb2YgdGhpcyBjaGFuZ2Ugd2l0aGluIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAuIEkgY2FuIHNlZSB0aGUgY29kZSBzdGFydHMgYnkgY2hlY2tpbmcgdGhlIGJhc2ljIGZyYW1lIHN0cnVjdHVyZSDigJMgc2l6ZSwgZGlyZWN0aW9uLCBhbmQgY29tbWFuZC4gVGhlbiwgaXQgcHJvY2VlZHMgdG8gZXZhbHVhdGUgdGhlIFBGQiwgYW5kIHRoZSBESUQgY2hlY2sgaXMgZG9uZSBpZiB0aGUgYml0IGlzIHNldCBpbiB0aGUgUEZCLiBJdCBjYWxjdWxhdGVzIHRoZSBgc2l6ZWAgb2YgdGhlIHN0cnVjdHVyZS4gSSBzaG91bGQgY2hlY2sgd2hhdCBgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKWAgYWN0dWFsbHkgaXMuIEknbGwgbmVlZCB0byBmaW5kIHRoZSBkZWZpbml0aW9uIG9mIHRoYXQgc3RydWN0dXJlIHRvIGZ1bGx5IHVuZGVyc3RhbmQgd2hhdCdzIGdvaW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTc5MywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU4MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDozOTo0My44MTg2MzAxNTNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwNTkyNjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9kaWdpdGFsX2RlcC5jPTk0PXN0cnVjdCBkaWdpdGFsX3BzbF9yZXMge1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk5LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDA6c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMge1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDEtXFx0dTggZGlyO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTIwMD1kaWdpdGFsX3NlbmRfZGVwX2RhdGFfcHJlcChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoyMDE6XFx0XFx0XFx0ICAgc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXFfcmVzLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0yMDItXFx0XFx0XFx0ICAgc3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2gpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTI5PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX2FjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTUzMS17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjUzMjpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTMzLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTM5LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1NDA6XFx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTQxLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1NDI6XFx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTQzLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTU2Nj1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9uYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTY4LXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTY5OlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzAtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzYtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU3NzpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU3OTpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01ODAtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTk4PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYwMC17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYwMTpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjAyLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjA4LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MDk6XFx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjEwLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MTE6XFx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjEyLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTYyOT1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9ydG94KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjMxLXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjMyOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MzMtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NDYtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY0NzpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NDgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY0OTpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NTAtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9Njg2PXN0YXRpYyB2b2lkIGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02ODktXFx0c3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2ggPSBhcmc7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY5MDpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjkxLVxcdHU4IHBmYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy03NTUtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjc1NjpcXHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NzU3OlxcdGRlcF9yZXMgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilyZXNwLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy03NTgtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTA0PWludCBkaWdpdGFsX2luX3NlbmRfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkwNy17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjkwODpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTA5LVxcdHN0cnVjdCBza19idWZmICpjaGFpbmluZ19za2IsICp0bXBfc2tiO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxMS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTEyOlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxMy1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTE0OlxcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXFx1MDAzZWRhdGE7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxNS1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz05Nzg9c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTgwLXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTgxOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODItXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk4OTpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05OTAtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk5MTpcXHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05OTItXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTAyND1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hdG4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAyNS17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMjY6XFx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXM7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMjctXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDMzLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDM0OlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMzUtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMzY6XFx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAzNy1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDc3PXN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDgwLVxcdGludCByYztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA4MTpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA4Mi1cXHR1OCBwZmI7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTEwNy1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTEwODpcXHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTEwOTpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopcmVzcC1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTExMC1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMjk3PWludCBkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjk4LXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTI5OTpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwMC1cXHRzdHJ1Y3Qgc2tfYnVmZiAqY2hhaW5pbmdfc2tiLCAqdG1wX3NrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzAyLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzAzOlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMDQtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzMDU6XFx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6Mzk6NDMuODY5MjI3NzQ1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI2MTc4MzQwNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgZGlnaXRhbF9kZXBfcmVxX3Jlc2AgU3RydWN0KipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXNgIGRlZmluaXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIHRvIHF1aWNrbHkgYXNzZXNzIGl0cyBwdXJwb3NlLiBJJ20gZXhwZWN0aW5nIHRoaXMgdG8gbGlrZWx5IGVuY2Fwc3VsYXRlIHRoZSBkYXRhIGV4Y2hhbmdlZCBkdXJpbmcgYSBkaWdpdGFsIGRlcG9zaXQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgY3ljbGUsIG1heWJlIGZvciBmaW5hbmNpYWwgdHJhbnNhY3Rpb25zLCBBUEkgY2FsbHMsIG9yIHNpbWlsYXIuIEknbGwgYmUgbG9va2luZyBmb3Iga2V5IGZpZWxkcyB0aGF0IHByb3ZpZGUgY2x1ZXMgYWJvdXQgdGhlIHN0cnVjdHVyZS4gSSdsbCBtZW50YWxseSBtYXAgb3V0LCBiYXNlZCBvbiBpbmR1c3RyeSBzdGFuZGFyZHMsIHdoYXQgZXNzZW50aWFsIGNvbXBvbmVudHMgYXJlIGxpa2VseSB0byBiZSBwcmVzZW50OiBpZGVudGlmaWVycywgdGltZXN0YW1wcywgcmVxdWVzdCBkYXRhLCByZXNwb25zZSBjb2RlcywgYW55IHRyYW5zYWN0aW9uIGRldGFpbHMsIHBvdGVudGlhbGx5IGVycm9yIG1lc3NhZ2VzIGlmIHRoZSByZXNwb25zZSByZXByZXNlbnRzIGZhaWx1cmUsIGFuZCBwZXJoYXBzIGV2ZW4gc2VjdXJpdHktcmVsYXRlZCBmaWVsZHMgbGlrZSBzaWduYXR1cmVzIG9yIGhhc2hlcy4gSSdsbCBuZWVkIHRvIHJhcGlkbHkgaW50ZXJwcmV0IHRoZSBzdHJ1Y3R1cmUgYW5kIGhvdyBpdCByZWxhdGVzIHRvIGJyb2FkZXIgc3lzdGVtcyBJIGFtIGZhbWlsaWFyIHdpdGguIE15IHByaW1hcnkgY29uc2lkZXJhdGlvbnMgd2lsbCBpbnZvbHZlIHBvdGVudGlhbCBhcmVhcyBmb3Igb3B0aW1pemF0aW9uLCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMsIG9yIHBvc3NpYmxlIGluZWZmaWNpZW5jaWVzLiBNeSBzZWNvbmRhcnkgY29uc2lkZXJhdGlvbnMgd2lsbCBsb29rIGludG8gZGF0YSB0eXBlIHVzYWdlLCBwYWRkaW5nLCBhbmQgYWxpZ25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzM3OCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjM5OjQ2LjQ4NzA2NDI0MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDA4NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25mYy9kaWdpdGFsX2RlcC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDk4LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDk4OlxcdH0gX19wYWNrZWQ7XFxuICA5OTpcXHRcXG4gMTAwOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzIHtcXG4gMTAxOlxcdFxcdHU4IGRpcjtcXG4gMTAyOlxcdFxcdHU4IGNtZDtcXG4gMTAzOlxcdFxcdHU4IHBmYjtcXG4gMTA0OlxcdH0gX19wYWNrZWQ7XFxuIDEwNTpcXHRcXG4gMTA2OlxcdHN0YXRpYyB2b2lkIGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4gMTA3OlxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjM5OjQ2LjQ4NzE2Njg4MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyMTgwNDk0MDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBgc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXNgIGZvciBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0aWVzKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzYC4gSSBzZWUgYGRpcmAgKDEgYnl0ZSksIGBjbWRgICgxIGJ5dGUpLCBhbmQgYHBmYmAgKDEgYnl0ZSkuIFRoYXQgc3VtcyB1cCB0byBhIHNpemUgb2YgMyBieXRlcywgZ290IGl0LiBOb3csIGxldCdzIHJld2luZCBhbmQgbG9vayBhdCB0aGUgY29kZSAqYmVmb3JlKiB0aGlzIGNvbW1pdCwgc3BlY2lmaWNhbGx5IHRoaXMgbGluZTogYGlmIChkZGV2LVx1MDAzZWRpZCBcdTAwMjZcdTAwMjYgKGRkZXYtXHUwMDNlZGlkID09IHJlc3AtXHUwMDNlZGF0YVszXSkpYC4gSG1tLi4uIHRoYXQgYHJlc3AtXHUwMDNlZGF0YVszXWAgaXMgbWFraW5nIG1lIHR3aXRjaC4gSWYgYHJlc3AtXHUwMDNlbGVuYCBoYXBwZW5zIHRvIGJlIGV4YWN0bHkgMywgd2UncmUgc3RhcmluZyBhdCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgcmlnaHQgaW4gdGhlIGZhY2UuIFRoYXQncyBhIGNsYXNzaWMgbWlzdGFrZSFcblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLCBJIG5lZWQgdG8gY2hlY2sgaG93IGBkaWdpdGFsX2luX3JlY3ZfZGVwX3Jlc2AgaGFuZGxlcyB0aGlzIHRvby4gT2theSwgbGV0J3MgdGFrZSBhIGxvb2sgYXQgbGluZXMgNzUwLTc4MCwganVzdCB0byBjb25maXJtIHRoYXQgdGhpcyBpcyBub3QgYW4gaXNzdWUgdGhlcmUgYXMgd2VsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM3OTksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDozOTo0OC42Njc2NjQxODFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTM1OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25mYy9kaWdpdGFsX2RlcC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc1MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDc1MDpcXHRcXG4gNzUxOlxcdFxcdGlmIChyZXNwLVxcdTAwM2VsZW4gXFx1MDAzZSBkZGV2LVxcdTAwM2Vsb2NhbF9wYXlsb2FkX21heCkge1xcbiA3NTI6XFx0XFx0XFx0cmMgPSAtRU1TR1NJWkU7XFxuIDc1MzpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuIDc1NDpcXHRcXHR9XFxuIDc1NTpcXHRcXG4gNzU2OlxcdFxcdHNpemUgPSBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpO1xcbiA3NTc6XFx0XFx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXJlc3AtXFx1MDAzZWRhdGE7XFxuIDc1ODpcXHRcXG4gNzU5OlxcdFxcdGlmIChyZXNwLVxcdTAwM2VsZW4gXFx1MDAzYyBzaXplIHx8IGRlcF9yZXMtXFx1MDAzZWRpciAhPSBESUdJVEFMX05GQ19ERVBfRlJBTUVfRElSX0lOIHx8XFxuIDc2MDpcXHRcXHQgICAgZGVwX3Jlcy1cXHUwMDNlY21kICE9IERJR0lUQUxfQ01EX0RFUF9SRVMpIHtcXG4gNzYxOlxcdFxcdFxcdHJjID0gLUVJTztcXG4gNzYyOlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDc2MzpcXHRcXHR9XFxuIDc2NDpcXHRcXG4gNzY1OlxcdFxcdHBmYiA9IGRlcF9yZXMtXFx1MDAzZXBmYjtcXG4gNzY2OlxcdFxcbiA3Njc6XFx0XFx0aWYgKERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpKSB7XFxuIDc2ODpcXHRcXHRcXHRQUk9UT0NPTF9FUlIoXFxcIjE0LjguMi4xXFxcIik7XFxuIDc2OTpcXHRcXHRcXHRyYyA9IC1FSU87XFxuIDc3MDpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbiA3NzE6XFx0XFx0fVxcbiA3NzI6XFx0XFxuIDc3MzpcXHRcXHRpZiAoRElHSVRBTF9ORkNfREVQX05BRF9CSVRfU0VUKHBmYikpIHtcXG4gNzc0OlxcdFxcdFxcdHJjID0gLUVJTztcXG4gNzc1OlxcdFxcdFxcdGdvdG8gZXhpdDtcXG4gNzc2OlxcdFxcdH1cXG4gNzc3OlxcdFxcbiA3Nzg6XFx0XFx0aWYgKHNpemUgXFx1MDAzZSByZXNwLVxcdTAwM2VsZW4pIHtcXG4gNzc5OlxcdFxcdFxcdHJjID0gLUVJTztcXG4gNzgwOlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDc4MTpcXHRcXHR9XFxuIDc4MjpcXHRcXG4gNzgzOlxcdFxcdHNrYl9wdWxsKHJlc3AsIHNpemUpO1xcbiA3ODQ6XFx0XFxuIDc4NTpcXHRcXHRzd2l0Y2ggKERJR0lUQUxfTkZDX0RFUF9QRkJfVFlQRShwZmIpKSB7XFxuIDc4NjpcXHRcXHRjYXNlIERJR0lUQUxfTkZDX0RFUF9QRkJfSV9QRFU6XFxuIDc4NzpcXHRcXHRcXHRpZiAoRElHSVRBTF9ORkNfREVQX1BGQl9QTkkocGZiKSAhPSBkZGV2LVxcdTAwM2VjdXJyX25mY19kZXBfcG5pKSB7XFxuIDc4ODpcXHRcXHRcXHRcXHRQUk9UT0NPTF9FUlIoXFxcIjE0LjEyLjMuM1xcXCIpO1xcbiA3ODk6XFx0XFx0XFx0XFx0cmMgPSAtRUlPO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDozOTo0OC42Njc3NjExMjFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NTQ5NDI4NzM5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTkZDIERFUCBGcmFtZSBQcm9jZXNzaW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgZG93biB0aGlzIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgZnVuY3Rpb24gaW4gYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2AuIFRoaXMgc25pcHBldCBpcyBpbnRlcmVzdGluZzsgaXQncyB0aGUgY29yZSBvZiBob3cgRGlnaXRhbCBUYXJnZXQgbW9kZSByZXF1ZXN0cyBhcmUgaGFuZGxlZC4gVGhlIGNvZGUgY2hlY2tzIGEgY291cGxlIG9mIGtleSBjb25kaXRpb25zIGJhc2VkIG9uIHRoZSBQcm90b2NvbCBGcmFtZSBCaXQgKFBGQik6XG5cbklmIHRoZSBEaWdpdGFsIElkZW50aWZpY2F0aW9uIChESUQpIGJpdCBpcyBzZXQgaW4gdGhlIFBGQiwgdGhlbiBpdCBtYWtlcyBjZXJ0YWluIGFzc2VydGlvbnMgYWJvdXQgdGhlIGluY29taW5nIHJlc3BvbnNlIGRhdGEuIFNwZWNpZmljYWxseSwgaXQgdmVyaWZpZXMgdGhhdCB0aGUgcmVzcG9uc2UgbGVuZ3RoIGlzIHN1ZmZpY2llbnQgdG8gaW5jbHVkZSB0aGUgRElELCB0aGUgZGV2aWNlIGhhcyBhIHZhbGlkIERJRCwgYW5kIHRoZSByZXNwb25zZSBESUQgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgRElELiBBbiBgRUlPYCBlcnJvciBpcyByZXR1cm5lZCBhbmQgZXhlY3V0aW9uIGp1bXBzIHRvIHRoZSBgZXhpdGAgbGFiZWwgaWYgdGhlc2UgY2hlY2tzIGZhaWwuIElmIHRoZSBESUQgYml0IGlzIG5vdCBzZXQsIGJ1dCB0aGUgZGV2aWNlICpkb2VzKiBoYXZlIGEgRElEIGFzc2lnbmVkLCBpdCdzIGFsc28gY29uc2lkZXJlZCBhbiBlcnJvciwgYW5kIGBFSU9gIGlzIHJldHVybmVkLlxuXG5Ob3csIGxldCdzIGZpZ3VyZSBvdXQgKndoZXJlKiB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5IGdldHMgY2FsbGVkLiBUaW1lIHRvIHRyYWNlIHRoZSBjYWxsZXJzOiBMb29rcyBsaWtlIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgaXMgdXNlZCBpbiBtdWx0aXBsZSBzY2VuYXJpb3M6IEl0J3MgdGhlIGNhbGxiYWNrIGZvciBzZW5kaW5nIGFuIEFDSyAoYGRpZ2l0YWxfdGdfc2VuZF9hY2tgKSwgc2VuZGluZyBhbiBBVE4gKGBkaWdpdGFsX3RnX3NlbmRfYXRuYCksIHNlbmRpbmcgYSBzYXZlZCBTS0IgKGBkaWdpdGFsX3RnX3NlbmRfc2F2ZWRfc2tiYCksIGFuZCBzZW5kaW5nIGEgREVQIHJlc3BvbnNlIChgZGlnaXRhbF90Z19zZW5kX2RlcF9yZXNgKS4gSW50cmlndWluZ2x5LCBpdCdzIGFsc28gY2FsbGVkIHZpYSBgZGlnaXRhbF90Z19saXN0ZW5gIGluIGBkaWdpdGFsX3RnX3NlbmRfcHNsX3Jlc19jb21wbGV0ZWAsIGFuZCBkaXJlY3RseSBpbiBgZGlnaXRhbF90Z19zZW5kX2F0cl9yZXNfY29tcGxldGVgLlxuXG5UbyBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29kZSBmbG93IGFuZCB1c2UgY2FzZXMsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgdGFyZ2V0IG1vZGUgaXMgZW50ZXJlZCBvciBob3cgdGhlIE5GQyBkaWdpdGFsIGRldmljZSAoYGRkZXZgKSBpcyB1c2VkLiBJJ2xsIHNlYXJjaCBmb3Igb2NjdXJyZW5jZXMgb2YgYGRpZ2l0YWxfdGdfYCB3aXRoaW4gcmVsZXZhbnQgZmlsZXMsIHNwZWNpZmljYWxseSBgbmV0L25mYy9kaWdpdGFsXyouY2AgYW5kIGBuZXQvbmZjL2RpZ2l0YWxfY29yZS5jYCwgdG8gYnVpbGQgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGZ1bmN0aW9uJ3MgYnJvYWRlciBjb250ZXh0IGFuZCBpZGVudGlmeSB0aGUgcG9zc2libGUgZW50cnkgcG9pbnRzIGZvciB0aGVzZSBvcGVyYXRpb25zLiBUaGlzIHdpbGwgaGVscCBkZXRlcm1pbmUgdGhlIHBvc3NpYmxlIHN0YXRlcyB0aGF0IG5lZWQgdG8gYmUgY29uc2lkZXJlZCB3aGVuIGRlYnVnZ2luZyB0aGlzIGZ1bmN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDc5OSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjM5OjU0LjE2MjA1MTg3NloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUxNzA2NjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGlnaXRhbF90Z19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL2RpZ2l0YWwuaD00OD1pbnQgZGlnaXRhbF9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCBjbWRfdHlwZSxcXG5uZXQvbmZjL2RpZ2l0YWwuaDo0OTpcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBkaWdpdGFsX3RnX21kYWFfcGFyYW1zICpwYXJhbXMsXFxubmV0L25mYy9kaWdpdGFsLmgtNTAtXFx0XFx0ICAgICB1MTYgdGltZW91dCwgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY21kX2NiLFxcbi0tXFxubmV0L25mYy9kaWdpdGFsLmg9ODM9aW50IGRpZ2l0YWxfaW5fc2VuZF9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWwuaC04Ni1cXG5uZXQvbmZjL2RpZ2l0YWwuaDo4NzppbnQgZGlnaXRhbF90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsIGludCBwYXJhbSk7XFxubmV0L25mYy9kaWdpdGFsLmg6ODg6c3RhdGljIGlubGluZSBpbnQgZGlnaXRhbF90Z19zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbm5ldC9uZmMvZGlnaXRhbC5oLTg5LVxcdFxcdFxcdHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsLmgtOTUtXFxubmV0L25mYy9kaWdpdGFsLmg6OTY6dm9pZCBkaWdpdGFsX3RnX3JlY3Zfc2Vuc19yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbC5oLTk3LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcXG5uZXQvbmZjL2RpZ2l0YWwuaC05OC1cXG5uZXQvbmZjL2RpZ2l0YWwuaDo5OTp2b2lkIGRpZ2l0YWxfdGdfcmVjdl9zZW5zZl9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbC5oLTEwMC1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xcbm5ldC9uZmMvZGlnaXRhbC5oLTEwMS1cXG5uZXQvbmZjL2RpZ2l0YWwuaDoxMDI6c3RhdGljIGlubGluZSBpbnQgZGlnaXRhbF90Z19saXN0ZW4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTE2IHRpbWVvdXQsXFxubmV0L25mYy9kaWdpdGFsLmgtMTAzLVxcdFxcdFxcdFxcdCAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsLmgtMTA4LVxcbm5ldC9uZmMvZGlnaXRhbC5oOjEwOTp2b2lkIGRpZ2l0YWxfdGdfcmVjdl9hdHJfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWwuaC0xMTAtXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XFxubmV0L25mYy9kaWdpdGFsLmgtMTExLVxcbm5ldC9uZmMvZGlnaXRhbC5oOjExMjppbnQgZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxubmV0L25mYy9kaWdpdGFsLmgtMTEzLVxcbm5ldC9uZmMvZGlnaXRhbC5oOjExNDppbnQgZGlnaXRhbF90Z19saXN0ZW5fbmZjYShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZl90ZWNoKTtcXG5uZXQvbmZjL2RpZ2l0YWwuaDoxMTU6aW50IGRpZ2l0YWxfdGdfbGlzdGVuX25mY2Yoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmZfdGVjaCk7XFxubmV0L25mYy9kaWdpdGFsLmg6MTE2OnZvaWQgZGlnaXRhbF90Z19yZWN2X21kX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXFxubmV0L25mYy9kaWdpdGFsLmgtMTE3LVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTI3PXN0cnVjdCBkaWdpdGFsX2NtZCB7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTM1LVxcdHN0cnVjdCBza19idWZmICpyZXNwO1xcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6MzY6XFx0c3RydWN0IGRpZ2l0YWxfdGdfbWRhYV9wYXJhbXMgKm1kYWFfcGFyYW1zO1xcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMzctXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTE1Mj1zdGF0aWMgdm9pZCBkaWdpdGFsX3dxX2NtZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTE1NS1cXHRzdHJ1Y3QgZGlnaXRhbF9jbWQgKmNtZDtcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjE1NjpcXHRzdHJ1Y3QgZGlnaXRhbF90Z19tZGFhX3BhcmFtcyAqcGFyYW1zO1xcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMTU3LVxcdHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYgPSBjb250YWluZXJfb2Yod29yayxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM9MjI3PWludCBkaWdpdGFsX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IGNtZF90eXBlLFxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6MjI4OlxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGRpZ2l0YWxfdGdfbWRhYV9wYXJhbXMgKnBhcmFtcyxcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTIyOS1cXHRcXHQgICAgIHUxNiB0aW1lb3V0LCBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjbWRfY2IsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTI1NT1pbnQgZGlnaXRhbF9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgaW50IHR5cGUsIGludCBwYXJhbSlcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjY1LVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6MjY2OmludCBkaWdpdGFsX3RnX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBpbnQgdHlwZSwgaW50IHBhcmFtKVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjY3LXtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjc2LVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6Mjc3OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19saXN0ZW5fbWRhYShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZl90ZWNoKVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjc4LXtcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjI3OTpcXHRzdHJ1Y3QgZGlnaXRhbF90Z19tZGFhX3BhcmFtcyAqcGFyYW1zO1xcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjgwLVxcdGludCByYztcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjk1LVxcdHJjID0gZGlnaXRhbF9zZW5kX2NtZChkZGV2LCBESUdJVEFMX0NNRF9UR19MSVNURU5fTURBQSwgTlVMTCwgcGFyYW1zLFxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6Mjk2OlxcdFxcdFxcdCAgICAgIDUwMCwgZGlnaXRhbF90Z19yZWN2X2F0cl9yZXEsIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMjk3LVxcdGlmIChyYylcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtMzAyLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6MzAzOnN0YXRpYyBpbnQgZGlnaXRhbF90Z19saXN0ZW5fbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmZfdGVjaClcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTMwNC17XFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0zMDUtXFx0cmV0dXJuIGRpZ2l0YWxfc2VuZF9jbWQoZGRldiwgRElHSVRBTF9DTURfVEdfTElTVEVOX01ELCBOVUxMLCBOVUxMLCA1MDAsXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzozMDY6XFx0XFx0XFx0XFx0ZGlnaXRhbF90Z19yZWN2X21kX3JlcSwgTlVMTCk7XFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy0zMDctfVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYz00NzY9c3RhdGljIGludCBkaWdpdGFsX3N0YXJ0X3BvbGwoc3RydWN0IG5mY19kZXYgKm5mY19kZXYsIF9fdTMyIGltX3Byb3RvY29scyxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTI4LVxcdFxcdFxcdGRpZ2l0YWxfYWRkX3BvbGxfdGVjaChkZGV2LCAwLFxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6NTI5OlxcdFxcdFxcdFxcdFxcdCAgICAgIGRpZ2l0YWxfdGdfbGlzdGVuX21kYWEpO1xcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTMwLVxcdFxcdH0gZWxzZSBpZiAoZGRldi1cXHUwMDNlb3BzLVxcdTAwM2V0Z19saXN0ZW5fbWQpIHtcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTUzMS1cXHRcXHRcXHRkaWdpdGFsX2FkZF9wb2xsX3RlY2goZGRldiwgMCxcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjUzMjpcXHRcXHRcXHRcXHRcXHQgICAgICBkaWdpdGFsX3RnX2xpc3Rlbl9tZCk7XFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01MzMtXFx0XFx0fSBlbHNlIHtcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTUzNC1cXHRcXHRcXHRkaWdpdGFsX2FkZF9wb2xsX3RlY2goZGRldiwgTkZDX0RJR0lUQUxfUkZfVEVDSF8xMDZBLFxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6NTM1OlxcdFxcdFxcdFxcdFxcdCAgICAgIGRpZ2l0YWxfdGdfbGlzdGVuX25mY2EpO1xcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTM2LVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNTM3LVxcdFxcdFxcdGRpZ2l0YWxfYWRkX3BvbGxfdGVjaChkZGV2LCBORkNfRElHSVRBTF9SRl9URUNIXzIxMkYsXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo1Mzg6XFx0XFx0XFx0XFx0XFx0ICAgICAgZGlnaXRhbF90Z19saXN0ZW5fbmZjZik7XFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01MzktXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01NDAtXFx0XFx0XFx0ZGlnaXRhbF9hZGRfcG9sbF90ZWNoKGRkZXYsIE5GQ19ESUdJVEFMX1JGX1RFQ0hfNDI0RixcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjU0MTpcXHRcXHRcXHRcXHRcXHQgICAgICBkaWdpdGFsX3RnX2xpc3Rlbl9uZmNmKTtcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTU0Mi1cXHRcXHR9XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTY0MT1zdGF0aWMgdm9pZCBkaWdpdGFsX2RlYWN0aXZhdGVfdGFyZ2V0KHN0cnVjdCBuZmNfZGV2ICpuZmNfZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy02NTUtXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo2NTY6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmQoc3RydWN0IG5mY19kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTY1Ny17XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTY1OS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjY2MDpcXHRyZXR1cm4gZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoZGRldiwgc2tiKTtcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTY2MS19XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTc0ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5mY19vcHMgZGlnaXRhbF9uZmNfb3BzID0ge1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy03NTItXFx0LmRlYWN0aXZhdGVfdGFyZ2V0ID0gZGlnaXRhbF9kZWFjdGl2YXRlX3RhcmdldCxcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjc1MzpcXHQudG1fc2VuZCA9IGRpZ2l0YWxfdGdfc2VuZCxcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTc1NC1cXHQuaW1fdHJhbnNjZWl2ZSA9IGRpZ2l0YWxfaW5fc2VuZCxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDY9c3RhdGljIHZvaWQgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDctXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBza19idWZmICpyZXNwKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA4OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA5LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTA0PWludCBkaWdpdGFsX2luX3NlbmRfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk1MC1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTUxOnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfc2V0X3JmX3RlY2goc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmZfdGVjaClcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTUyLXtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05NzctXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk3ODpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hY2soc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTc5LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZGlnaXRhbF9kYXRhX2V4Y2ggKmRhdGFfZXhjaClcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDEyLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDEzOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDE0LVxcdFxcdFxcdFxcdCBkYXRhX2V4Y2gpO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMjMtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMjQ6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYXRuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMjUte1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNTEtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNTI6XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHNrYiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNTMtXFx0XFx0XFx0XFx0IE5VTEwpO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNTktXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNjA6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfc2F2ZWRfc2tiKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNjEte1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwNjgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwNjk6XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIGRkZXYtXFx1MDAzZXNhdmVkX3NrYiwgMTUwMCxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA3MDpcXHRcXHRcXHRcXHQgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDcxLVxcdGlmIChyYylcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDc2LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDc3OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA3OC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTE1Ni1cXHRcXHRcXHQgKiB3aGljaCBpcyB0aGUgcHJldmlvdXMgREVQX1JFUyBzYXZlZCBpblxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMTU3OlxcdFxcdFxcdCAqIGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKCkuXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTExNTgtXFx0XFx0XFx0ICovXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTE2MC1cXHRcXHRcXHQgIERJR0lUQUxfTkZDX0RFUF9QRkJfUE5JKGRkZXYtXFx1MDAzZWN1cnJfbmZjX2RlcF9wbmkgLSAxKSkge1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMTYxOlxcdFxcdFxcdFxcdHJjID0gZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYihkZGV2KTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTE2Mi1cXHRcXHRcXHRcXHRpZiAocmMpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTE4NC1cXHRcXHRyZXNwID0gZGlnaXRhbF9yZWN2X2RlcF9kYXRhX2dhdGhlcihkZGV2LCBwZmIsIHJlc3AsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjExODU6XFx0XFx0XFx0XFx0XFx0XFx0ICAgIGRpZ2l0YWxfdGdfc2VuZF9hY2ssIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTg2LVxcdFxcdGlmIChJU19FUlIocmVzcCkpIHtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjEwLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMjExOlxcdFxcdFxcdHJjID0gZGlnaXRhbF90Z19zZW5kX3NhdmVkX3NrYihkZGV2KTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTIxMi1cXHRcXHRcXHRpZiAocmMpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTIzMC1cXHRcXHRcXHRcXHRcXHRcXHRkZGV2LVxcdTAwM2VjdXJyX25mY19kZXBfcG5pKSB7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEyMzE6XFx0XFx0XFx0XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfc2F2ZWRfc2tiKGRkZXYpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjMyLVxcdFxcdFxcdFxcdGlmIChyYylcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjU0LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMjU1OlxcdFxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2RlcF9yZXMoZGRldiwgZGRldi1cXHUwMDNlY2hhaW5pbmdfc2tiKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTI1Ni1cXHRcXHRpZiAocmMpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTI2NS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTI2NjpcXHRcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9hdG4oZGRldik7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyNjctXFx0XFx0aWYgKHJjKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyOTYtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEyOTc6aW50IGRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEyOTgte1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMzEtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzMzI6XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHRtcF9za2IsIDE1MDAsIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzMzLVxcdFxcdFxcdFxcdCBOVUxMKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzQ3LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzQ4OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfc2VuZF9wc2xfcmVzX2NvbXBsZXRlKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNDktXFx0XFx0XFx0XFx0XFx0ICAgICB2b2lkICphcmcsIHN0cnVjdCBza19idWZmICpyZXNwKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNTUtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzNTY6XFx0ZGlnaXRhbF90Z19zZXRfcmZfdGVjaChkZGV2LCByZl90ZWNoKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTM1Ny1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTM1ODpcXHRkaWdpdGFsX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfUkZfVEVDSCwgcmZfdGVjaCk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNTktXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzNjA6XFx0ZGlnaXRhbF90Z19saXN0ZW4oZGRldiwgMTUwMCwgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEsIE5VTEwpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzYxLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNjQtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzNjU6c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfcHNsX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCBkaWQsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzNjYtXFx0XFx0XFx0XFx0ICAgdTggcmZfdGVjaClcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzg5LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzkwOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDAsIGRpZ2l0YWxfdGdfc2VuZF9wc2xfcmVzX2NvbXBsZXRlLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzkxLVxcdFxcdFxcdFxcdCAodm9pZCAqKSh1bnNpZ25lZCBsb25nKXJmX3RlY2gpO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzOTctXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzOTg6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X3BzbF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzk5LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDYwLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNDYxOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX3BzbF9yZXMoZGRldiwgcHNsX3JlcS1cXHUwMDNlZGlkLCByZl90ZWNoKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ2Mi1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDY2LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNDY3OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfc2VuZF9hdHJfcmVzX2NvbXBsZXRlKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0NjgtXFx0XFx0XFx0XFx0XFx0ICAgICB2b2lkICphcmcsIHN0cnVjdCBza19idWZmICpyZXNwKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0ODMtXFx0aWYgKHJlc3AtXFx1MDAzZWRhdGFbb2Zmc2V0XSA9PSBESUdJVEFMX0NNRF9QU0xfUkVRKVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNDg0OlxcdFxcdGRpZ2l0YWxfdGdfcmVjdl9wc2xfcmVxKGRkZXYsIGFyZywgcmVzcCk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0ODUtXFx0ZWxzZVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNDg2OlxcdFxcdGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKGRkZXYsIGFyZywgcmVzcCk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE0ODctfVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNDg4LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNDg5OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19zZW5kX2F0cl9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTQ5MC1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZGlnaXRhbF9hdHJfcmVxICphdHJfcmVxKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE1MzItXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjE1MzM6XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHNrYiwgOTk5LFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNTM0OlxcdFxcdFxcdFxcdCBkaWdpdGFsX3RnX3NlbmRfYXRyX3Jlc19jb21wbGV0ZSwgTlVMTCk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE1MzUtXFx0aWYgKHJjKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE1NDAtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjE1NDE6dm9pZCBkaWdpdGFsX3RnX3JlY3ZfYXRyX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE1NDItXFx0XFx0XFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNTYxLVxcdFxcdG1pbl9zaXplID0gRElHSVRBTF9BVFJfUkVRX01JTl9TSVpFICsgMjtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTU2MjpcXHRcXHRkaWdpdGFsX3RnX3NldF9yZl90ZWNoKGRkZXYsIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE1NjMtXFx0fSBlbHNlIHtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTU2NC1cXHRcXHRtaW5fc2l6ZSA9IERJR0lUQUxfQVRSX1JFUV9NSU5fU0laRSArIDE7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjE1NjU6XFx0XFx0ZGlnaXRhbF90Z19zZXRfcmZfdGVjaChkZGV2LCBORkNfRElHSVRBTF9SRl9URUNIXzIxMkYpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNTY2LVxcdH1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNjA1LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNjA2OlxcdHJjID0gZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkcsXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE2MDctXFx0XFx0XFx0XFx0ICAgICBORkNfRElHSVRBTF9GUkFNSU5HX05GQ19ERVBfQUNUSVZBVEVEKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xNjEwLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxNjExOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2F0cl9yZXMoZGRldiwgYXRyX3JlcSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTE2MTItXFx0aWYgKHJjKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYz04OTU9aW50IGRpZ2l0YWxfaW5fc2VuZF9pc28xNTY5M19pbnZfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmX3RlY2gpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTkzNC1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjkzNTpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9zZWxfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05MzYte1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05NDgtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzo5NDk6XFx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORyxcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTk1MC1cXHRcXHRcXHRcXHQgICAgIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9BTlRJQ09MX0NPTVBMRVRFKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTU1LVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6OTU2OlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDMwMCwgZGlnaXRhbF90Z19yZWN2X2F0cl9yZXEsXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05NTctXFx0XFx0XFx0XFx0IE5VTEwpO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05NjMtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzo5NjQ6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X3NlbF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTY1LVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtOTg0LVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6OTg1OlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX3NlbF9yZXMoZGRldik7XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05ODYtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTk5My1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjk5NDpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9zZGRfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy05OTUte1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDEzLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTAxNDpcXHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlndXJlX2h3KGRkZXYsIE5GQ19ESUdJVEFMX0NPTkZJR19GUkFNSU5HLFxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTAxNS1cXHRcXHRcXHRcXHRORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU1RBTkRBUkRfV0lUSF9DUkNfQSk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwMjAtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMDIxOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDMwMCwgZGlnaXRhbF90Z19yZWN2X3NlbF9yZXEsXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDIyLVxcdFxcdFxcdFxcdCBOVUxMKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTAyOC1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEwMjk6c3RhdGljIHZvaWQgZGlnaXRhbF90Z19yZWN2X3NkZF9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTAzMC1cXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwNDgtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMDQ5OlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX3NkZF9yZXMoZGRldik7XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDUwLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDU3LVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTA1ODpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9zZW5zX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2KVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA1OS17XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwNzItXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMDczOlxcdHJjID0gZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkcsXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDc0LVxcdFxcdFxcdFxcdCAgICAgTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NUQU5EQVJEKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTA3OS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEwODA6XFx0cmMgPSBkaWdpdGFsX3RnX3NlbmRfY21kKGRkZXYsIHNrYiwgMzAwLCBkaWdpdGFsX3RnX3JlY3Zfc2RkX3JlcSxcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEwODEtXFx0XFx0XFx0XFx0IE5VTEwpO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDg3LVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTA4ODp2b2lkIGRpZ2l0YWxfdGdfcmVjdl9zZW5zX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMDg5LVxcdFxcdFxcdCAgICAgIHN0cnVjdCBza19idWZmICpyZXNwKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTA3LVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTEwODpcXHRyYyA9IGRpZ2l0YWxfdGdfc2VuZF9zZW5zX3JlcyhkZGV2KTtcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExMDktXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExMTYtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMTE3OnN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9hdHJfb3Jfc2Vuc2ZfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTE4LVxcdFxcdHZvaWQgKmFyZywgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExMjEtXFx0XFx0XFx0KHJlc3AtXFx1MDAzZWRhdGFbMV0gPT0gRElHSVRBTF9DTURfU0VOU0ZfUkVRKSlcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjExMjI6XFx0XFx0ZGlnaXRhbF90Z19yZWN2X3NlbnNmX3JlcShkZGV2LCBhcmcsIHJlc3ApO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTEyMy1cXHRlbHNlXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMTI0OlxcdFxcdGRpZ2l0YWxfdGdfcmVjdl9hdHJfcmVxKGRkZXYsIGFyZywgcmVzcCk7XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTI1LVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTI4LVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTEyOTpzdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9zZW5zZl9yZXMoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExMzAtXFx0XFx0XFx0ICAgICAgc3RydWN0IGRpZ2l0YWxfc2Vuc2ZfcmVxICpzZW5zZl9yZXEpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExNzItXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMTczOlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX2NtZChkZGV2LCBza2IsIDMwMCxcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjExNzQ6XFx0XFx0XFx0XFx0IGRpZ2l0YWxfdGdfcmVjdl9hdHJfb3Jfc2Vuc2ZfcmVxLCBOVUxMKTtcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTExNzUtXFx0aWYgKHJjKVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMTgwLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTE4MTp2b2lkIGRpZ2l0YWxfdGdfcmVjdl9zZW5zZl9yZXEoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdm9pZCAqYXJnLFxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTE4Mi1cXHRcXHRcXHQgICAgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMTMtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjE0OlxcdHJjID0gZGlnaXRhbF90Z19zZW5kX3NlbnNmX3JlcyhkZGV2LCBzZW5zZl9yZXEpO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIxNS1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIyMi1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyMjM6c3RhdGljIGludCBkaWdpdGFsX3RnX2NvbmZpZ19uZmNhKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjI0LXtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIyNi1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyMjc6XFx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfUkZfVEVDSCxcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMjgtXFx0XFx0XFx0XFx0ICAgICBORkNfRElHSVRBTF9SRl9URUNIXzEwNkEpO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjMxLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTIzMjpcXHRyZXR1cm4gZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX0ZSQU1JTkcsXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjMzLVxcdFxcdFxcdFxcdCAgICAgICBORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfTkZDX0RFUCk7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyMzUtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjM2OmludCBkaWdpdGFsX3RnX2xpc3Rlbl9uZmNhKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHU4IHJmX3RlY2gpXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjM3LXtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTIzOS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyNDA6XFx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ19uZmNhKGRkZXYpO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI0MS1cXHRpZiAocmMpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNDMtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjQ0OlxcdHJldHVybiBkaWdpdGFsX3RnX2xpc3RlbihkZGV2LCAzMDAsIGRpZ2l0YWxfdGdfcmVjdl9zZW5zX3JlcSwgTlVMTCk7XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjQ1LX1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNDYtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjQ3OnN0YXRpYyBpbnQgZGlnaXRhbF90Z19jb25maWdfbmZjZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1OCByZl90ZWNoKVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI0OC17XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNTAtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjUxOlxcdHJjID0gZGlnaXRhbF90Z19jb25maWd1cmVfaHcoZGRldiwgTkZDX0RJR0lUQUxfQ09ORklHX1JGX1RFQ0gsIHJmX3RlY2gpO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI1Mi1cXHRpZiAocmMpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNTQtXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjU1OlxcdHJldHVybiBkaWdpdGFsX3RnX2NvbmZpZ3VyZV9odyhkZGV2LCBORkNfRElHSVRBTF9DT05GSUdfRlJBTUlORyxcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNTYtXFx0XFx0XFx0XFx0ICAgICAgIE5GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDRl9ORkNfREVQKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI1OC1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyNTk6aW50IGRpZ2l0YWxfdGdfbGlzdGVuX25mY2Yoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldiwgdTggcmZfdGVjaClcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNjAte1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjYyLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI2MzpcXHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlnX25mY2YoZGRldiwgcmZfdGVjaCk7XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjY0LVxcdGlmIChyYylcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI2Ni1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyNjc6XFx0cmV0dXJuIGRpZ2l0YWxfdGdfbGlzdGVuKGRkZXYsIDMwMCwgZGlnaXRhbF90Z19yZWN2X3NlbnNmX3JlcSwgTlVMTCk7XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjY4LX1cXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyNjktXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYzoxMjcwOnZvaWQgZGlnaXRhbF90Z19yZWN2X21kX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjcxLVxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcClcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI4Ni1cXHRjYXNlIE5GQ19ESUdJVEFMX1JGX1RFQ0hfMTA2QTpcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyODc6XFx0XFx0cmMgPSBkaWdpdGFsX3RnX2NvbmZpZ19uZmNhKGRkZXYpO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmMtMTI4OC1cXHRcXHRpZiAocmMpXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjg5LVxcdFxcdFxcdGdvdG8gZXhpdF9mcmVlX3NrYjtcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jOjEyOTA6XFx0XFx0ZGlnaXRhbF90Z19yZWN2X3NlbnNfcmVxKGRkZXYsIGFyZywgcmVzcCk7XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjkxLVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjkzLVxcdGNhc2UgTkZDX0RJR0lUQUxfUkZfVEVDSF80MjRGOlxcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI5NDpcXHRcXHRyYyA9IGRpZ2l0YWxfdGdfY29uZmlnX25mY2YoZGRldiwgcmZfdGVjaCk7XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjk1LVxcdFxcdGlmIChyYylcXG5uZXQvbmZjL2RpZ2l0YWxfdGVjaG5vbG9neS5jLTEyOTYtXFx0XFx0XFx0Z290byBleGl0X2ZyZWVfc2tiO1xcbm5ldC9uZmMvZGlnaXRhbF90ZWNobm9sb2d5LmM6MTI5NzpcXHRcXHRkaWdpdGFsX3RnX3JlY3Zfc2Vuc2ZfcmVxKGRkZXYsIGFyZywgcmVzcCk7XFxubmV0L25mYy9kaWdpdGFsX3RlY2hub2xvZ3kuYy0xMjk4LVxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDozOTo1NC4yMTcyMjg1ODdaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6ODE3NzQ1NTI5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipUcmFjaW5nIHRoZSBEaWdpdGFsIE5GQyBTZW5kIEZ1bmN0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGBkaWdpdGFsX3RnX3NlbmRgIGlzLCBhcyBJIHN1c3BlY3RlZCwgaW1wbGVtZW50ZWQgYXMgYGRldi1cdTAwM2VvcHMtXHUwMDNldG1fc2VuZGAgd2l0aGluIHRoZSBgZGlnaXRhbF9uZmNfb3BzYCBzdHJ1Y3R1cmUuIFRoYXQncyBnb29kLCB0aGF0IGNvbmZpcm1zIHRoZSBjb3JlIHJlbGF0aW9uc2hpcC4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHF1ZXN0aW9uOiAqd2hlcmUqIGlzIHRoaXMgYHRtX3NlbmRgIGZ1bmN0aW9uIGFjdHVhbGx5IGJlaW5nIGNhbGxlZCBmcm9tPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gVGltZSB0byBkaXZlIGludG8gdGhlIGBuZXQvbmZjYCBkaXJlY3RvcnkgYW5kIHNwZWNpZmljYWxseSBleGFtaW5lIHRoZSBgdG1fc2VuZGAgZnVuY3Rpb24ncyB1c2FnZS4gVGhhdCdzIHdoZXJlIEkgc2hvdWxkIGZpbmQgdGhlIGFuc3dlciB0byBteSBxdWVzdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ2ODgsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDo0MDowMi4zOTQ2ODcxOTlaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNDQ0OTU3NTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidG1fc2VuZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvY29yZS5jPTQ4OD1pbnQgbmZjX2RhdGFfZXhjaGFuZ2Uoc3RydWN0IG5mY19kZXYgKmRldiwgdTMyIHRhcmdldF9pZHgsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmZjL2NvcmUuYy01MTktXFx0XFx0XFx0XFx0ICBtc2Vjc190b19qaWZmaWVzKE5GQ19DSEVDS19QUkVTX0ZSRVFfTVMpKTtcXG5uZXQvbmZjL2NvcmUuYzo1MjA6XFx0fSBlbHNlIGlmIChkZXYtXFx1MDAzZXJmX21vZGUgPT0gTkZDX1JGX1RBUkdFVCBcXHUwMDI2XFx1MDAyNiBkZXYtXFx1MDAzZW9wcy1cXHUwMDNldG1fc2VuZCAhPSBOVUxMKSB7XFxubmV0L25mYy9jb3JlLmM6NTIxOlxcdFxcdHJjID0gZGV2LVxcdTAwM2VvcHMtXFx1MDAzZXRtX3NlbmQoZGV2LCBza2IpO1xcbm5ldC9uZmMvY29yZS5jLTUyMi1cXHR9IGVsc2Uge1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYz03NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfb3BzIGRpZ2l0YWxfbmZjX29wcyA9IHtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmMtNzUyLVxcdC5kZWFjdGl2YXRlX3RhcmdldCA9IGRpZ2l0YWxfZGVhY3RpdmF0ZV90YXJnZXQsXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo3NTM6XFx0LnRtX3NlbmQgPSBkaWdpdGFsX3RnX3NlbmQsXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy03NTQtXFx0LmltX3RyYW5zY2VpdmUgPSBkaWdpdGFsX2luX3NlbmQsXFxuLS1cXG5uZXQvbmZjL2hjaS9jb3JlLmM9NzIyPXN0YXRpYyBpbnQgaGNpX3RyYW5zY2VpdmUoc3RydWN0IG5mY19kZXYgKm5mY19kZXYsIHN0cnVjdCBuZmNfdGFyZ2V0ICp0YXJnZXQsXFxuLS1cXG5uZXQvbmZjL2hjaS9jb3JlLmMtNzY3LVxcbm5ldC9uZmMvaGNpL2NvcmUuYzo3Njg6c3RhdGljIGludCBoY2lfdG1fc2VuZChzdHJ1Y3QgbmZjX2RldiAqbmZjX2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQvbmZjL2hjaS9jb3JlLmMtNzY5LXtcXG4tLVxcbm5ldC9uZmMvaGNpL2NvcmUuYy03NzEtXFxubmV0L25mYy9oY2kvY29yZS5jOjc3MjpcXHRpZiAoIWhkZXYtXFx1MDAzZW9wcy1cXHUwMDNldG1fc2VuZCkge1xcbm5ldC9uZmMvaGNpL2NvcmUuYy03NzMtXFx0XFx0a2ZyZWVfc2tiKHNrYik7XFxuLS1cXG5uZXQvbmZjL2hjaS9jb3JlLmMtNzc2LVxcbm5ldC9uZmMvaGNpL2NvcmUuYzo3Nzc6XFx0cmV0dXJuIGhkZXYtXFx1MDAzZW9wcy1cXHUwMDNldG1fc2VuZChoZGV2LCBza2IpO1xcbm5ldC9uZmMvaGNpL2NvcmUuYy03NzgtfVxcbi0tXFxubmV0L25mYy9oY2kvY29yZS5jPTk0MT1zdGF0aWMgY29uc3Qgc3RydWN0IG5mY19vcHMgaGNpX25mY19vcHMgPSB7XFxuLS1cXG5uZXQvbmZjL2hjaS9jb3JlLmMtOTUwLVxcdC5pbV90cmFuc2NlaXZlID0gaGNpX3RyYW5zY2VpdmUsXFxubmV0L25mYy9oY2kvY29yZS5jOjk1MTpcXHQudG1fc2VuZCA9IGhjaV90bV9zZW5kLFxcbm5ldC9uZmMvaGNpL2NvcmUuYy05NTItXFx0LmNoZWNrX3ByZXNlbmNlID0gaGNpX2NoZWNrX3ByZXNlbmNlLFxcbi0tXFxubmV0L25mYy9uY2kvY29yZS5jPTEwNDA9c3RhdGljIGludCBuY2lfdHJhbnNjZWl2ZShzdHJ1Y3QgbmZjX2RldiAqbmZjX2Rldiwgc3RydWN0IG5mY190YXJnZXQgKnRhcmdldCxcXG4tLVxcbm5ldC9uZmMvbmNpL2NvcmUuYy0xMDc3LVxcbm5ldC9uZmMvbmNpL2NvcmUuYzoxMDc4OnN0YXRpYyBpbnQgbmNpX3RtX3NlbmQoc3RydWN0IG5mY19kZXYgKm5mY19kZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L25mYy9uY2kvY29yZS5jLTEwNzkte1xcbi0tXFxubmV0L25mYy9uY2kvY29yZS5jPTExNDk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfb3BzIG5jaV9uZmNfb3BzID0ge1xcbi0tXFxubmV0L25mYy9uY2kvY29yZS5jLTExNTgtXFx0LmltX3RyYW5zY2VpdmUgPSBuY2lfdHJhbnNjZWl2ZSxcXG5uZXQvbmZjL25jaS9jb3JlLmM6MTE1OTpcXHQudG1fc2VuZCA9IG5jaV90bV9zZW5kLFxcbm5ldC9uZmMvbmNpL2NvcmUuYy0xMTYwLVxcdC5lbmFibGVfc2UgPSBuY2lfZW5hYmxlX3NlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDo0MDowMy41MzkxOTIzNTVaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MjEwNzk2NjQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqVHJhY2luZyB0aGUgRGF0YSBGbG93IGluIE5GQyBDb21tdW5pY2F0aW9uKipcblxuT2theSwgc28gYG5mY19kYXRhX2V4Y2hhbmdlYCBpcyBhIGNydWNpYWwgZnVuY3Rpb24sIGxpa2VseSB0aGUgaGVhcnQgb2YgdGhlIE5GQyBkYXRhIHRyYW5zZmVyIHByb2Nlc3MuIE15IGluaXRpYWwgaHVuY2gsIGdpdmVuIGl0cyBuYW1lIGFuZCB0aGUgdHlwaWNhbCBhcmNoaXRlY3R1cmUsIGlzIHRoYXQgaXQncyBnZXR0aW5nIGludm9rZWQgZWl0aGVyIHRocm91Z2ggTmV0bGluaywgdGhlIGVzdGFibGlzaGVkIGludGVyLWtlcm5lbCBjb21tdW5pY2F0aW9uIHBhdGh3YXksIG9yIG1vcmUgZGlyZWN0bHkgdGhyb3VnaCBhIHNvY2tldCBsYXllciwgaGFuZGxpbmcgdGhlIHVzZXItc3BhY2UgaW50ZXJhY3Rpb24uIFRoYXQncyB0aGUgZXhwZWN0ZWQgaGlnaC1sZXZlbCB2aWV3LCBhdCBsZWFzdC4gTm93LCB0aGUgcmVhbCB0YXNrIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGV4YWN0IGNhbGwgY2hhaW4uIExldCdzIGRpZyBkZWVwZXIgYW5kIHRyYWNlIGJhY2sgYWxsIHRoZSBjYWxscyB0byBgbmZjX2RhdGFfZXhjaGFuZ2VgLiBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsZXJzIHdpbGwgaWxsdW1pbmF0ZSBwcmVjaXNlbHkgd2hpY2ggcGFydCBvZiB0aGUgc3lzdGVtIGluaXRpYXRlcyB0aGUgZGF0YSBleGNoYW5nZSBhbmQgd2hhdCBjb250ZXh0IGl0J3Mgb3BlcmF0aW5nIHdpdGhpbi4gSXTigJlzIGFsc28gaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGNhbGxpbmcgY29udGV4dHMuIEZvciBpbnN0YW5jZSwgaXMgdGhpcyBhIGJsb2NraW5nIG9yIG5vbi1ibG9ja2luZyBjYWxsPyBBcmUgdGhlcmUgYW55IGxvY2tzIGhlbGQgZHVyaW5nIHRoaXMgY2FsbD8gVGhpcyBpcyB3aGVyZSB0aGUgZGVidWdnaW5nIGJlZ2lucyFcblxuXG4iLCJJbnB1dFRva2VucyI6MzU4NzEsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDo0MDowNS42NDcxNjE3NDVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5ODE5OTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mY19kYXRhX2V4Y2hhbmdlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9jb3JlLmM9NDQyPWludCBuZmNfZGVhY3RpdmF0ZV90YXJnZXQoc3RydWN0IG5mY19kZXYgKmRldiwgdTMyIHRhcmdldF9pZHgsIHU4IG1vZGUpXFxuLS1cXG5uZXQvbmZjL2NvcmUuYy00NzctLyoqXFxubmV0L25mYy9jb3JlLmM6NDc4OiAqIG5mY19kYXRhX2V4Y2hhbmdlIC0gdHJhbnNjZWl2ZSBkYXRhXFxubmV0L25mYy9jb3JlLmMtNDc5LSAqXFxuLS1cXG5uZXQvbmZjL2NvcmUuYy00ODctICovXFxubmV0L25mYy9jb3JlLmM6NDg4OmludCBuZmNfZGF0YV9leGNoYW5nZShzdHJ1Y3QgbmZjX2RldiAqZGV2LCB1MzIgdGFyZ2V0X2lkeCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmZjL2NvcmUuYy00ODktXFx0XFx0ICAgICAgZGF0YV9leGNoYW5nZV9jYl90IGNiLCB2b2lkICpjYl9jb250ZXh0KVxcbi0tXFxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmM9MzcxPWludCBuZmNfbGxjcF9zZW5kX3N5bW0oc3RydWN0IG5mY19kZXYgKmRldilcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb21tYW5kcy5jLTM5OC1cXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYzozOTk6XFx0ZXJyID0gbmZjX2RhdGFfZXhjaGFuZ2UoZGV2LCBsb2NhbC1cXHUwMDNldGFyZ2V0X2lkeCwgc2tiLFxcbm5ldC9uZmMvbGxjcF9jb21tYW5kcy5jLTQwMC1cXHRcXHRcXHRcXHQgbmZjX2xsY3BfcmVjdiwgbG9jYWwpO1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz03NjE9c3RhdGljIHZvaWQgbmZjX2xsY3BfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTc5Ni1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjc5NzpcXHRcXHRcXHRyZXQgPSBuZmNfZGF0YV9leGNoYW5nZShsb2NhbC1cXHUwMDNlZGV2LCBsb2NhbC1cXHUwMDNldGFyZ2V0X2lkeCxcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTc5OC1cXHRcXHRcXHRcXHRcXHRcXHRza2IsIG5mY19sbGNwX3JlY3YsIGxvY2FsKTtcXG4tLVxcbm5ldC9uZmMvbmZjLmg9MTQzPWludCBuZmNfZGVhY3RpdmF0ZV90YXJnZXQoc3RydWN0IG5mY19kZXYgKmRldiwgdTMyIHRhcmdldF9pZHgsIHU4IG1vZGUpO1xcbm5ldC9uZmMvbmZjLmgtMTQ0LVxcbm5ldC9uZmMvbmZjLmg6MTQ1OmludCBuZmNfZGF0YV9leGNoYW5nZShzdHJ1Y3QgbmZjX2RldiAqZGV2LCB1MzIgdGFyZ2V0X2lkeCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5uZXQvbmZjL25mYy5oLTE0Ni1cXHRcXHQgICAgICBkYXRhX2V4Y2hhbmdlX2NiX3QgY2IsIHZvaWQgKmNiX2NvbnRleHQpO1xcbi0tXFxubmV0L25mYy9yYXdzb2NrLmM9MTg4PXN0YXRpYyB2b2lkIHJhd3NvY2tfdHhfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5uZXQvbmZjL3Jhd3NvY2suYy0yMDYtXFx0c29ja19ob2xkKHNrKTtcXG5uZXQvbmZjL3Jhd3NvY2suYzoyMDc6XFx0cmMgPSBuZmNfZGF0YV9leGNoYW5nZShkZXYsIHRhcmdldF9pZHgsIHNrYixcXG5uZXQvbmZjL3Jhd3NvY2suYy0yMDgtXFx0XFx0XFx0ICAgICAgIHJhd3NvY2tfZGF0YV9leGNoYW5nZV9jb21wbGV0ZSwgc2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDo0MDowNS42OTY5ODY2NDdaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NDQ3OTMxMTIwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBORkMgU3Vic3lzdGVtJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIE5GQyBjb2RlIGFuZCBJIHNlZSB0aGF0IHJhdyBzb2NrZXRzIChgcmF3c29jay5jYCkgYW5kIExMQ1AgKGBsbGNwX2NvcmUuY2ApIGFyZSB1c2luZyBgbmZjX2RhdGFfZXhjaGFuZ2VgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGFuZCByaWdodCBhd2F5IEknbSB0aGlua2luZyBhYm91dCB0aGUgYmlnZ2VyIHBpY3R1cmUuIEkga25vdyBzeXprYWxsZXIgaGFzIHNvbWUgc2VyaW91cyBORkMgY292ZXJhZ2UsIHVzaW5nIEFGX05GQyBzb2NrZXRzLCBuZXRsaW5rIGNvbW1hbmRzIGxpa2UgYE5GQ19DTURfU1RBUlRfUE9MTGAgYW5kIGBORkNfQ01EX0RFUF9MSU5LX1VQYCwgYW5kIGV2ZW4gVVNCIGVtdWxhdGlvbiB3aXRoIHBvcnQxMDAgb3IgbmZjc2ltLiBBbmQgaXQncyBjbGVhcmx5IGZ1enppbmcgTkZDIHByZXR0eSBleHRlbnNpdmVseS4gSSBtZWFuLCB0aGUgbnVtYmVyIG9mIENWRXMgYW5kIGJ1Z3MgaXQncyBmb3VuZCBpbiBgbmV0L25mY2AgaXMgaW1wcmVzc2l2ZS5cblxuR2l2ZW4gYWxsIG9mIHRoYXQsIG15IG5leHQgc3RlcCBpcyB0byBzZWUgaWYgc3l6a2FsbGVyIGhhcyBmbGFnZ2VkIGFueXRoaW5nIGluIGBkaWdpdGFsX2RlcC5jYCBvciB3aXRoaW4gYG5ldC9uZmNgIG1vcmUgYnJvYWRseS4gQWgsIGhlcmUncyBhIGNvbW1pdCB0aGF0IGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIG9yIGxvZ2ljIGVycm9yIGluIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAuXG5cbk5vdywgbGV0J3Mgc3RlcCBiYWNrIGFuZCBjb25zaWRlciB0aGUgcmVsZXZhbnQgc2VjdGlvbnMuIE15IGZvY3VzIGlzIG9uIHJlYWNoYWJpbGl0eS4gSXMgYGRpZ2l0YWxfZGVwLmNgIGFjdHVhbGx5IHJlYWNoYWJsZT8gQWJzb2x1dGVseSwgdmlhIHRoZSBORkMgc3Vic3lzdGVtLCBBRl9ORkMgc29ja2V0cywgbmV0bGluaywgb3IgZXZlbiBlbXVsYXRlZCBVU0IgZGV2aWNlcyBsaWtlIHBvcnQxMDAsIG9yIG5mY3NpbS4gVGhhdCdzIGEgc29saWQgc3RhcnQuXG5cblRoZSBzZWNvbmQgY3JpdGljYWwgdGhpbmcgSSdtIGNvbnNpZGVyaW5nIGlzIHRoYXQgZnV6emluZyBpcyB2YWx1YWJsZSBiZWNhdXNlIHRoZSBjb2RlIGNhbiBiZSBtYWRlIHRvIGV4ZWN1dGUgaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIEdDRSBvciBRRU1VLCB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcC4gVGhhdCBzb3VuZHMgaWRlYWwuXG5cbkFuZCBmaW5hbGx5LCB0aGUgJ1dvcnRoRnV6emluZycgY3JpdGVyaWEuIFRoYXQncyB3aGF0IEknbSBsb29raW5nIGZvciAtIGNhbiB0aGUgcGF0Y2ggdG91Y2ggcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nIGNvcmUgc3Vic3lzdGVtcywgYW5kIGRyaXZlcnMgdGhhdCBhcmUgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcywgbGlrZSB0aGUgVVNCIGdhZGdldCwgbmV0bGluaywgYW5kIHNvY2tldHMuIFdlbGwsIHRoZSBgbmV0L25mY2AgY29kZSAqaXMqIHBhcnQgb2YgTGludXggbmV0d29ya2luZyAobmV0LyksIHNvLi4uXG5cblwiV29ydGhGdXp6aW5nOiB0cnVlIVwiIEJpbmdvLlxuXG5Ob3cgdG8gc2VlIHdoYXQgS2NvbmZpZyBvcHRpb25zIGFyZSByZXF1aXJlZCB0byBlbmFibGUgYGRpZ2l0YWxfZGVwLm9gJ3MgY29tcGlsYXRpb24gLSBsZXQncyB0cmFjZSB0aHJvdWdoIGBuZXQvbmZjL01ha2VmaWxlYCB0byBjb25maXJtIHRoZSBidWlsZCBkZXBlbmRlbmNpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2ODU2LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjQwOjEwLjE3NjMwMTM2NVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY4NzUwNDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZGlnaXRhbF9kZXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL01ha2VmaWxlPTExPW5mYy1vYmpzIDo9IGNvcmUubyBuZXRsaW5rLm8gYWZfbmZjLm8gcmF3c29jay5vIGxsY3BfY29yZS5vIGxsY3BfY29tbWFuZHMubyBcXFxcXFxuLS1cXG5uZXQvbmZjL01ha2VmaWxlLTEzLVxcbm5ldC9uZmMvTWFrZWZpbGU6MTQ6bmZjX2RpZ2l0YWwtb2JqcyA6PSBkaWdpdGFsX2NvcmUubyBkaWdpdGFsX3RlY2hub2xvZ3kubyBkaWdpdGFsX2RlcC5vXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTU4Nj1zdGF0aWMgaW50IGRpZ2l0YWxfZGV2X2Rvd24oc3RydWN0IG5mY19kZXYgKm5mY19kZXYpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTU5NC1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjU5NTpzdGF0aWMgaW50IGRpZ2l0YWxfZGVwX2xpbmtfdXAoc3RydWN0IG5mY19kZXYgKm5mY19kZXYsXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy01OTYtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBuZmNfdGFyZ2V0ICp0YXJnZXQsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTYwOS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jOjYxMDpzdGF0aWMgaW50IGRpZ2l0YWxfZGVwX2xpbmtfZG93bihzdHJ1Y3QgbmZjX2RldiAqbmZjX2RldilcXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jLTYxMS17XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfY29yZS5jPTc0ND1zdGF0aWMgY29uc3Qgc3RydWN0IG5mY19vcHMgZGlnaXRhbF9uZmNfb3BzID0ge1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy03NDgtXFx0LnN0b3BfcG9sbCA9IGRpZ2l0YWxfc3RvcF9wb2xsLFxcbm5ldC9uZmMvZGlnaXRhbF9jb3JlLmM6NzQ5OlxcdC5kZXBfbGlua191cCA9IGRpZ2l0YWxfZGVwX2xpbmtfdXAsXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYzo3NTA6XFx0LmRlcF9saW5rX2Rvd24gPSBkaWdpdGFsX2RlcF9saW5rX2Rvd24sXFxubmV0L25mYy9kaWdpdGFsX2NvcmUuYy03NTEtXFx0LmFjdGl2YXRlX3RhcmdldCA9IGRpZ2l0YWxfYWN0aXZhdGVfdGFyZ2V0LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTk0PXN0cnVjdCBkaWdpdGFsX3BzbF9yZXMge1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk5LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDA6c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMge1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDEtXFx0dTggZGlyO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTIwMD1kaWdpdGFsX3NlbmRfZGVwX2RhdGFfcHJlcChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoyMDE6XFx0XFx0XFx0ICAgc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXFfcmVzLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0yMDItXFx0XFx0XFx0ICAgc3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2gpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTI5PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX2FjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTUzMS17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjUzMjpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTMzLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTM5LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1NDA6XFx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTQxLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1NDI6XFx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTQzLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTU2Nj1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9uYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTY4LXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTY5OlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzAtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzYtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU3NzpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU3OTpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01ODAtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTk4PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYwMC17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYwMTpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjAyLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjA4LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MDk6XFx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjEwLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MTE6XFx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjEyLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTYyOT1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9ydG94KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjMxLXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjMyOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MzMtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NDYtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY0NzpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NDgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY0OTpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NTAtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9Njg2PXN0YXRpYyB2b2lkIGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02ODktXFx0c3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2ggPSBhcmc7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY5MDpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjkxLVxcdHU4IHBmYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy03NTUtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjc1NjpcXHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NzU3OlxcdGRlcF9yZXMgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilyZXNwLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy03NTgtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTA0PWludCBkaWdpdGFsX2luX3NlbmRfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkwNy17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjkwODpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTA5LVxcdHN0cnVjdCBza19idWZmICpjaGFpbmluZ19za2IsICp0bXBfc2tiO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxMS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTEyOlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxMy1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTE0OlxcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXFx1MDAzZWRhdGE7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxNS1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz05Nzg9c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTgwLXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTgxOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODItXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk4OTpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05OTAtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk5MTpcXHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05OTItXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTAyND1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hdG4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAyNS17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMjY6XFx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXM7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMjctXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDMzLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDM0OlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMzUtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMzY6XFx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAzNy1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDc3PXN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDgwLVxcdGludCByYztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA4MTpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA4Mi1cXHR1OCBwZmI7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTEwNy1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTEwODpcXHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTEwOTpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopcmVzcC1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTExMC1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMjk3PWludCBkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjk4LXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTI5OTpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwMC1cXHRzdHJ1Y3Qgc2tfYnVmZiAqY2hhaW5pbmdfc2tiLCAqdG1wX3NrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzAyLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzAzOlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMDQtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzMDU6XFx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6NDA6MTAuMjIzMTgzMzE4WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjExMzE4ODY5NTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyBpdDpcblxuKipEaXZpbmcgaW50byB0aGUgTkZDIE1ha2VmaWxlKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBwcm9jZXNzIGZvciB0aGUgTkZDIGNvbXBvbmVudHMsIHNvIGxldCdzIHN0YXJ0IHdpdGggdGhlIGBuZXQvbmZjL01ha2VmaWxlYC4gVGhpcyBmaWxlIGlzIHRoZSBjZW50cmFsIHBvaW50IG9mIGNvbnRyb2wsIHJpZ2h0PyBJdCdzIHdoZXJlIHRoZSBkZXBlbmRlbmNpZXMsIGNvbXBpbGF0aW9uIGZsYWdzLCBhbmQgbGlua2luZyBhcmUgYWxsIG9yY2hlc3RyYXRlZCBmb3IgdGhlc2UgTkZDLXJlbGF0ZWQgbW9kdWxlcy4gSSBuZWVkIHRvIHNlZSBob3cgdGhlIGtlcm5lbCBidWlsZHMgdGhlc2UgdGhpbmdzLCBhbnkgc3BlY2lmaWMgbW9kdWxlcyBpdCdzIGNyZWF0aW5nLCBhbmQgaG93IHRoZXkgaW50ZXJhY3QuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gd2hldGhlciB0aGVyZSBhcmUgYW55IHVudXN1YWwgYnVpbGQgZmxhZ3Mgb3IgY3VzdG9tIHJ1bGVzIHRoYXQgbWlnaHQgaW5kaWNhdGUgcGxhdGZvcm0tc3BlY2lmaWMgb3B0aW1pemF0aW9ucyBvciBwb3RlbnRpYWwgYXJlYXMgb2YgaW50ZXJlc3QgZm9yIHBlcmZvcm1hbmNlIHR1bmluZyBvciBzZWN1cml0eSB2dWxuZXJhYmlsaXR5IHJlc2VhcmNoLiBMZXQncyBzZWUgd2hhdCBnZW1zIHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDg0MiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjQwOjIxLjU0MjA1NTQxMVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjEyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmZjL01ha2VmaWxlXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBNYWtlZmlsZSBmb3IgdGhlIExpbnV4IE5GQyBzdWJzeXN0ZW0uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG9iai0kKENPTkZJR19ORkMpICs9IG5mYy5vXFxuICAgNzpcXHRvYmotJChDT05GSUdfTkZDX05DSSkgKz0gbmNpL1xcbiAgIDg6XFx0b2JqLSQoQ09ORklHX05GQ19IQ0kpICs9IGhjaS9cXG4gICA5OlxcdG9iai0kKENPTkZJR19ORkNfRElHSVRBTCkgKz0gbmZjX2RpZ2l0YWwub1xcbiAgMTA6XFx0XFxuICAxMTpcXHRuZmMtb2JqcyA6PSBjb3JlLm8gbmV0bGluay5vIGFmX25mYy5vIHJhd3NvY2subyBsbGNwX2NvcmUubyBsbGNwX2NvbW1hbmRzLm8gXFxcXFxcbiAgMTI6XFx0XFx0XFx0bGxjcF9zb2NrLm9cXG4gIDEzOlxcdFxcbiAgMTQ6XFx0bmZjX2RpZ2l0YWwtb2JqcyA6PSBkaWdpdGFsX2NvcmUubyBkaWdpdGFsX3RlY2hub2xvZ3kubyBkaWdpdGFsX2RlcC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjQwOjIxLjU0MjEzOTcwMVoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyMzI5MjEzNjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIE5GQyBEcml2ZXIgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgbmZjX2RpZ2l0YWwub2AgbW9kdWxlIGFuZCBpbW1lZGlhdGVseSwgSSBzZWUgYSBjbGVhciBkZXBlbmRlbmN5IHBhdGguIEl0IG5lZWRzIGBDT05GSUdfTkZDX0RJR0lUQUxgLCB3aGljaCBpdHNlbGYgaXMgY29udGluZ2VudCBvbiBgQ09ORklHX05GQ2AuIFRoYXQncyBzdGFuZGFyZCBLY29uZmlnIHN0dWZmLiBHb3R0YSBtYWtlIHN1cmUgdGhlIGJhc2UgTkZDIGZ1bmN0aW9uYWxpdHkgaXMgZW5hYmxlZCBiZWZvcmUgd2UgZXZlbiB0aGluayBhYm91dCB0aGUgZGlnaXRhbCBsYXllci5cblxuVGhlbiBJIHF1aWNrbHkgd2FudCB0byB1bmRlcnN0YW5kICp3aGF0KiB1c2VzIHRoaXMgYG5mY19kaWdpdGFsYCBwYXJ0LiBUaGUgZGVwZW5kZW5jeSBsaXN0IHRlbGxzIG1lIGl0J3MgdXNlZCBieSBgQ09ORklHX05GQ19TSU1gLCB0aGUgbmZjc2ltIGRyaXZlciwgYW5kIGFsc28gYENPTkZJR19ORkNfUE9SVDEwMGAsIHRoZSBwb3J0MTAwIGRyaXZlci4gQWxyaWdodCwgdXNlZnVsIHRvIGtub3cuIFxuXG5UbyBmdWxseSB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIG15IG5leHQgc3RlcCBpcyBvYnZpb3VzbHkgdG8gZ28gYW5kIGluc3BlY3QgdGhlIGBkcml2ZXJzL25mYy9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gc2VlIHRoZSBjb250ZXh0IG9mIHRoZXNlIGNvbmZpZ3MsIGFueSBhZGRpdGlvbmFsIGRlcGVuZGVuY2llcyBvciBjb25zdHJhaW50cywgZGVmYXVsdCB2YWx1ZXMsIGhlbHAgdGV4dCDigJMgdGhlIHdob2xlIHNoZWJhbmcuIEdvdHRhIGhhdmUgdGhlIGZ1bGwgcGljdHVyZSBiZWZvcmUgSSBtYWtlIGFueSBqdWRnZW1lbnRzIG9yIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMjg0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDo0MDoyMy44NzEzNTY0NjVaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMyMjg2NzY0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQT1JUMTAwfE5GQ1NJTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25mY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDY4MiBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZmMvS2NvbmZpZz0zMT1jb25maWcgTkZDX1NJTVxcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZy00MS1cXG5kcml2ZXJzL25mYy9LY29uZmlnOjQyOmNvbmZpZyBORkNfUE9SVDEwMFxcbmRyaXZlcnMvbmZjL0tjb25maWctNDMtXFx0dHJpc3RhdGUgXFxcIlNvbnkgTkZDIFBvcnQtMTAwIFNlcmllcyBVU0IgZGV2aWNlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9NYWtlZmlsZT0xMT1vYmotJChDT05GSUdfTkZDX1NJTSlcXHRcXHQrPSBuZmNzaW0ub1xcbmRyaXZlcnMvbmZjL01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19ORkNfUE9SVDEwMClcXHQrPSBwb3J0MTAwLm9cXG5kcml2ZXJzL25mYy9NYWtlZmlsZS0xMy1vYmotJChDT05GSUdfTkZDX01SVkwpXFx0XFx0Kz0gbmZjbXJ2bC9cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE1LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE2OiNkZWZpbmUgTkZDU0lNX0VSUihkLCBmbXQsIGFyZ3MuLi4pIG5mY19lcnIoXFx1MDAyNmQtXFx1MDAzZW5mY19kaWdpdGFsX2Rldi1cXHUwMDNlbmZjX2Rldi1cXHUwMDNlZGV2LCBcXFxcXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTctXFx0XFx0XFx0XFx0XFx0ICAgIFxcXCIlczogXFxcIiBmbXQsIF9fZnVuY19fLCAjIyBhcmdzKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE4LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE5OiNkZWZpbmUgTkZDU0lNX0RCRyhkLCBmbXQsIGFyZ3MuLi4pIGRldl9kYmcoXFx1MDAyNmQtXFx1MDAzZW5mY19kaWdpdGFsX2Rldi1cXHUwMDNlbmZjX2Rldi1cXHUwMDNlZGV2LCBcXFxcXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjAtXFx0XFx0XFx0XFx0XFx0ICAgIFxcXCIlczogXFxcIiBmbXQsIF9fZnVuY19fLCAjIyBhcmdzKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIxLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjIyOiNkZWZpbmUgTkZDU0lNX1ZFUlNJT04gXFxcIjAuMlxcXCJcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yMy1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyNDojZGVmaW5lIE5GQ1NJTV9NT0RFX05PTkVcXHQwXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjU6I2RlZmluZSBORkNTSU1fTU9ERV9JTklUSUFUT1JcXHQxXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjY6I2RlZmluZSBORkNTSU1fTU9ERV9UQVJHRVRcXHQyXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjctXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mjg6I2RlZmluZSBORkNTSU1fQ0FQQUJJTElUSUVTIChORkNfRElHSVRBTF9EUlZfQ0FQU19JTl9DUkMgICB8IFxcXFxcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yOS1cXHRcXHRcXHQgICAgIE5GQ19ESUdJVEFMX0RSVl9DQVBTX1RHX0NSQylcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jPTEwND1zdGF0aWMgdm9pZCBuZmNzaW1fbGlua19yZWN2X2NhbmNlbChzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmspXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xMDctXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTA4OlxcdGxpbmstXFx1MDAzZW1vZGUgPSBORkNTSU1fTU9ERV9OT05FO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTEwOS1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jPTExNT1zdGF0aWMgdm9pZCBuZmNzaW1fbGlua19zaHV0ZG93bihzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmspXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xMTktXFx0bGluay1cXHUwMDNlc2h1dGRvd24gPSAxO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjEyMDpcXHRsaW5rLVxcdTAwM2Vtb2RlID0gTkZDU0lNX01PREVfTk9ORTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xMjEtXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYz0xODI9c3RhdGljIHZvaWQgbmZjc2ltX3JlY3Zfd3Eoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTkwLVxcdGlmICghZGV2LVxcdTAwM2V1cCkge1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE5MTpcXHRcXHRORkNTSU1fRVJSKGRldiwgXFxcIkRldmljZSBpcyBkb3duXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xOTItXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYz0yMDE9c3RhdGljIGludCBuZmNzaW1fc2VuZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjA3LVxcdGlmICghZGV2LVxcdTAwM2V1cCkge1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjIwODpcXHRcXHRORkNTSU1fRVJSKGRldiwgXFxcIkRldmljZSBpcyBkb3duXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yMDktXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yMTgtXFx0aWYgKGRldi1cXHUwMDNlZHJvcGZyYW1lKSB7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjE5OlxcdFxcdE5GQ1NJTV9EQkcoZGV2LCBcXFwiZHJvcHBpbmcgZnJhbWUgKG91dCBvZiAlZClcXFxcblxcXCIsIGRldi1cXHUwMDNlZHJvcGZyYW1lKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yMjAtXFx0XFx0ZGV2X2tmcmVlX3NrYihza2IpO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM9MjU2PXN0YXRpYyBpbnQgbmZjc2ltX2luX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjYzLVxcdFxcdGRldi1cXHUwMDNldXAgPSB0cnVlO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI2NDpcXHRcXHRkZXYtXFx1MDAzZW1vZGUgPSBORkNTSU1fTU9ERV9JTklUSUFUT1I7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjY1LVxcdFxcdGRldi1cXHUwMDNlcmZfdGVjaCA9IHBhcmFtO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjcxLVxcdGRlZmF1bHQ6XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjcyOlxcdFxcdE5GQ1NJTV9FUlIoZGV2LCBcXFwiSW52YWxpZCBjb25maWd1cmF0aW9uIHR5cGU6ICVkXFxcXG5cXFwiLCB0eXBlKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNzMtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYz0yODY9c3RhdGljIGludCBuZmNzaW1fdGdfY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yOTMtXFx0XFx0ZGV2LVxcdTAwM2V1cCA9IHRydWU7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mjk0OlxcdFxcdGRldi1cXHUwMDNlbW9kZSA9IE5GQ1NJTV9NT0RFX1RBUkdFVDtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yOTUtXFx0XFx0ZGV2LVxcdTAwM2VyZl90ZWNoID0gcGFyYW07XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMDEtXFx0ZGVmYXVsdDpcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMDI6XFx0XFx0TkZDU0lNX0VSUihkZXYsIFxcXCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24gdHlwZTogJWRcXFxcblxcXCIsIHR5cGUpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMwMy1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jPTM0Nj1zdGF0aWMgdm9pZCBuZmNzaW1fZGVidWdmc19pbml0X2RldihzdHJ1Y3QgbmZjc2ltICpkZXYpXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNTMtXFx0aWYgKCFuZmNzaW1fZGVidWdmc19yb290KSB7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzU0OlxcdFxcdE5GQ1NJTV9FUlIoZGV2LCBcXFwibmZjc2ltIGRlYnVnZnMgbm90IGluaXRpYWxpemVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNTUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzYwLVxcdGlmIChuIFxcdTAwM2U9IHNpemVvZihkZXZuYW1lKSkge1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM2MTpcXHRcXHRORkNTSU1fRVJSKGRldiwgXFxcIkNvdWxkIG5vdCBjb21wdXRlIGRldiBuYW1lIGZvciBkZXYgJWRcXFxcblxcXCIsIGlkeCk7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzYyLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jPTM3MD1zdGF0aWMgc3RydWN0IG5mY3NpbSAqbmZjc2ltX2RldmljZV9uZXcoc3RydWN0IG5mY3NpbV9saW5rICpsaW5rX2luLFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzg1LVxcdFxcdFxcdFxcdFxcdFxcdCAgICBORkNfUFJPVE9fTkZDX0RFUF9NQVNLLFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM4NjpcXHRcXHRcXHRcXHRcXHRcXHQgICAgTkZDU0lNX0NBUEFCSUxJVElFUyxcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zODctXFx0XFx0XFx0XFx0XFx0XFx0ICAgIDAsIDApO1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM9NDMxPXN0YXRpYyBpbnQgX19pbml0IG5mY3NpbV9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00NTgtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDU5OlxcdHByX2luZm8oXFxcIm5mY3NpbSBcXFwiIE5GQ1NJTV9WRVJTSU9OIFxcXCIgaW5pdGlhbGl6ZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ2MC1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jPTQ5MT1tb2R1bGVfZXhpdChuZmNzaW1fZXhpdCk7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDkyLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQ5MzpNT0RVTEVfREVTQ1JJUFRJT04oXFxcIk5GQ1NpbSBkcml2ZXIgdmVyIFxcXCIgTkZDU0lNX1ZFUlNJT04pO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQ5NDpNT0RVTEVfVkVSU0lPTihORkNTSU1fVkVSU0lPTik7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDk1LU1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xOC1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTk6I2RlZmluZSBQT1JUMTAwX1BST1RPQ09MUyAoTkZDX1BST1RPX0pFV0VMX01BU0sgICAgfCBcXFxcXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTIwLVxcdFxcdFxcdCAgIE5GQ19QUk9UT19NSUZBUkVfTUFTSyAgIHwgXFxcXFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI1LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNjojZGVmaW5lIFBPUlQxMDBfQ0FQQUJJTElUSUVTIChORkNfRElHSVRBTF9EUlZfQ0FQU19JTl9DUkMgfCBcXFxcXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI3LVxcdFxcdFxcdCAgICAgIE5GQ19ESUdJVEFMX0RSVl9DQVBTX1RHX0NSQylcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yOS0vKiBTdGFuZGFyZCBwb3J0MTAwIGZyYW1lIGRlZmluaXRpb25zICovXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMwOiNkZWZpbmUgUE9SVDEwMF9GUkFNRV9IRUFERVJfTEVOIChzaXplb2Yoc3RydWN0IHBvcnQxMDBfZnJhbWUpIFxcXFxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzEtXFx0XFx0XFx0XFx0ICArIDIpIC8qIGRhdGFbMF0gQ0MsIGRhdGFbMV0gU0NDICovXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMyOiNkZWZpbmUgUE9SVDEwMF9GUkFNRV9UQUlMX0xFTiAyIC8qIGRhdGFbbGVuXSBEQ1MsIGRhdGFbbGVuICsgMV0gcG9zdGFtYmxlKi9cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzMtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM0OiNkZWZpbmUgUE9SVDEwMF9DT01NX1JGX0hFQURfTUFYX0xFTiAoc2l6ZW9mKHN0cnVjdCBwb3J0MTAwX3RnX2NvbW1fcmZfY21kKSlcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzUtXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzctICogTWF4IGV4dGVuZGVkIGZyYW1lIHBheWxvYWQgbGVuLCBleGNsdWRpbmcgQ0MgYW5kIFNDQ1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozODogKiB3aGljaCBhcmUgYWxyZWFkeSBpbiBQT1JUMTAwX0ZSQU1FX0hFQURFUl9MRU4uXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM5LSAqL1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MDojZGVmaW5lIFBPUlQxMDBfRlJBTUVfTUFYX1BBWUxPQURfTEVOIDEwMDFcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDEtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQyOiNkZWZpbmUgUE9SVDEwMF9GUkFNRV9BQ0tfU0laRSA2IC8qIFByZWFtYmxlICgxKSwgU29QQyAoMiksIEFDSyBDb2RlICgyKSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDMtXFx0XFx0XFx0XFx0ICAgIFBvc3RhbWJsZSAoMSkgKi9cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDQ6c3RhdGljIHU4IGFja19mcmFtZVtQT1JUMTAwX0ZSQU1FX0FDS19TSVpFXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDUtXFx0MHgwMCwgMHgwMCwgMHhmZiwgMHgwMCwgMHhmZiwgMHgwMFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQ3LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0ODojZGVmaW5lIFBPUlQxMDBfRlJBTUVfQ0hFQ0tTVU0oZikgKGYtXFx1MDAzZWRhdGFbbGUxNl90b19jcHUoZi1cXHUwMDNlZGF0YWxlbildKVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0OTojZGVmaW5lIFBPUlQxMDBfRlJBTUVfUE9TVEFNQkxFKGYpIChmLVxcdTAwM2VkYXRhW2xlMTZfdG9fY3B1KGYtXFx1MDAzZWRhdGFsZW4pICsgMV0pXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTUwLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy01MS0vKiBzdGFydCBvZiBmcmFtZSAqL1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo1MjojZGVmaW5lIFBPUlQxMDBfRlJBTUVfU09GXFx0MHgwMEZGXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjUzOiNkZWZpbmUgUE9SVDEwMF9GUkFNRV9FWFRcXHQweEZGRkZcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NTQ6I2RlZmluZSBQT1JUMTAwX0ZSQU1FX0FDS1xcdDB4MDBGRlxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy01NS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNTYtLyogUG9ydC0xMDAgY29tbWFuZDogaW4gb3Igb3V0ICovXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjU3OiNkZWZpbmUgUE9SVDEwMF9GUkFNRV9ESVJFQ1RJT04oZikgKGYtXFx1MDAzZWRhdGFbMF0pIC8qIENDICovXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjU4OiNkZWZpbmUgUE9SVDEwMF9GUkFNRV9ESVJfT1VUIDB4RDZcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NTk6I2RlZmluZSBQT1JUMTAwX0ZSQU1FX0RJUl9JTiAgMHhEN1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy02MC1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNjEtLyogUG9ydC0xMDAgc3ViLWNvbW1hbmQgKi9cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NjI6I2RlZmluZSBQT1JUMTAwX0ZSQU1FX0NNRChmKSAoZi1cXHUwMDNlZGF0YVsxXSkgLyogU0NDICovXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTYzLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo2NDojZGVmaW5lIFBPUlQxMDBfQ01EX0dFVF9GSVJNV0FSRV9WRVJTSU9OIDB4MjBcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NjU6I2RlZmluZSBQT1JUMTAwX0NNRF9HRVRfQ09NTUFORF9UWVBFICAgICAweDI4XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjY2OiNkZWZpbmUgUE9SVDEwMF9DTURfU0VUX0NPTU1BTkRfVFlQRSAgICAgMHgyQVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy02Ny1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Njg6I2RlZmluZSBQT1JUMTAwX0NNRF9JTl9TRVRfUkYgICAgICAgMHgwMFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo2OTojZGVmaW5lIFBPUlQxMDBfQ01EX0lOX1NFVF9QUk9UT0NPTCAweDAyXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjcwOiNkZWZpbmUgUE9SVDEwMF9DTURfSU5fQ09NTV9SRiAgICAgIDB4MDRcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNzEtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjcyOiNkZWZpbmUgUE9SVDEwMF9DTURfVEdfU0VUX1JGICAgICAgIDB4NDBcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NzM6I2RlZmluZSBQT1JUMTAwX0NNRF9UR19TRVRfUFJPVE9DT0wgMHg0MlxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo3NDojZGVmaW5lIFBPUlQxMDBfQ01EX1RHX1NFVF9SRl9PRkYgICAweDQ2XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjc1OiNkZWZpbmUgUE9SVDEwMF9DTURfVEdfQ09NTV9SRiAgICAgIDB4NDhcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNzYtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjc3OiNkZWZpbmUgUE9SVDEwMF9DTURfU1dJVENIX1JGICAgICAgIDB4MDZcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNzgtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjc5OiNkZWZpbmUgUE9SVDEwMF9DTURfUkVTUE9OU0UoY21kKSAoY21kICsgMSlcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtODAtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjgxOiNkZWZpbmUgUE9SVDEwMF9DTURfVFlQRV9JU19TVVBQT1JURUQobWFzaywgY21kX3R5cGUpIFxcXFxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtODItXFx0KChtYXNrKSBcXHUwMDI2ICgweDAxIFxcdTAwM2NcXHUwMDNjIChjbWRfdHlwZSkpKVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo4MzojZGVmaW5lIFBPUlQxMDBfQ01EX1RZUEVfMFxcdDBcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6ODQ6I2RlZmluZSBQT1JUMTAwX0NNRF9UWVBFXzFcXHQxXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTg1LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo4NjojZGVmaW5lIFBPUlQxMDBfQ01EX1NUQVRVU19PSyAgICAgIDB4MDBcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6ODc6I2RlZmluZSBQT1JUMTAwX0NNRF9TVEFUVVNfVElNRU9VVCAweDgwXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTg4LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo4OTojZGVmaW5lIFBPUlQxMDBfTURBQV9UR1RfSEFTX0JFRU5fQUNUSVZBVEVEX01BU0sgMHgwMVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo5MDojZGVmaW5lIFBPUlQxMDBfTURBQV9UR1RfV0FTX0FDVElWQVRFRF9NQVNLICAgICAgMHgwMlxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy05MS1cXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xMDY9c3RydWN0IHBvcnQxMDBfaW5fcmZfc2V0dGluZyB7XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTEyLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMTM6I2RlZmluZSBQT1JUMTAwX0NPTU1fVFlQRV9JTl8yMTJGIDB4MDFcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTE0OiNkZWZpbmUgUE9SVDEwMF9DT01NX1RZUEVfSU5fNDI0RiAweDAyXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjExNTojZGVmaW5lIFBPUlQxMDBfQ09NTV9UWVBFX0lOXzEwNkEgMHgwM1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxMTY6I2RlZmluZSBQT1JUMTAwX0NPTU1fVFlQRV9JTl8xMDZCIDB4MDdcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTE3LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xMTg9c3RhdGljIGNvbnN0IHN0cnVjdCBwb3J0MTAwX2luX3JmX3NldHRpbmcgaW5fcmZfc2V0dGluZ3NbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjAtXFx0XFx0LmluX3NlbmRfc2V0X251bWJlciA9IDEsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEyMTpcXHRcXHQuaW5fc2VuZF9jb21tX3R5cGUgID0gUE9SVDEwMF9DT01NX1RZUEVfSU5fMjEyRixcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTIyLVxcdFxcdC5pbl9yZWN2X3NldF9udW1iZXIgPSAxNSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTIzOlxcdFxcdC5pbl9yZWN2X2NvbW1fdHlwZSAgPSBQT1JUMTAwX0NPTU1fVFlQRV9JTl8yMTJGLFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjQtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMjYtXFx0XFx0LmluX3NlbmRfc2V0X251bWJlciA9IDEsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEyNzpcXHRcXHQuaW5fc2VuZF9jb21tX3R5cGUgID0gUE9SVDEwMF9DT01NX1RZUEVfSU5fNDI0RixcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTI4LVxcdFxcdC5pbl9yZWN2X3NldF9udW1iZXIgPSAxNSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTI5OlxcdFxcdC5pbl9yZWN2X2NvbW1fdHlwZSAgPSBQT1JUMTAwX0NPTU1fVFlQRV9JTl80MjRGLFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzAtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzItXFx0XFx0LmluX3NlbmRfc2V0X251bWJlciA9IDIsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEzMzpcXHRcXHQuaW5fc2VuZF9jb21tX3R5cGUgID0gUE9SVDEwMF9DT01NX1RZUEVfSU5fMTA2QSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTM0LVxcdFxcdC5pbl9yZWN2X3NldF9udW1iZXIgPSAxNSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTM1OlxcdFxcdC5pbl9yZWN2X2NvbW1fdHlwZSAgPSBQT1JUMTAwX0NPTU1fVFlQRV9JTl8xMDZBLFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzYtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xMzgtXFx0XFx0LmluX3NlbmRfc2V0X251bWJlciA9IDMsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjEzOTpcXHRcXHQuaW5fc2VuZF9jb21tX3R5cGUgID0gUE9SVDEwMF9DT01NX1RZUEVfSU5fMTA2QixcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTQwLVxcdFxcdC5pbl9yZWN2X3NldF9udW1iZXIgPSAxNSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTQxOlxcdFxcdC5pbl9yZWN2X2NvbW1fdHlwZSAgPSBQT1JUMTAwX0NPTU1fVFlQRV9JTl8xMDZCLFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNDItXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz0xNTg9c3RydWN0IHBvcnQxMDBfdGdfcmZfc2V0dGluZyB7XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTYyLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNjM6I2RlZmluZSBQT1JUMTAwX0NPTU1fVFlQRV9UR18xMDZBIDB4MEJcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTY0OiNkZWZpbmUgUE9SVDEwMF9DT01NX1RZUEVfVEdfMjEyRiAweDBDXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE2NTojZGVmaW5lIFBPUlQxMDBfQ09NTV9UWVBFX1RHXzQyNEYgMHgwRFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNjYtXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTE2Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHBvcnQxMDBfdGdfcmZfc2V0dGluZyB0Z19yZl9zZXR0aW5nc1tdID0ge1xcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE2OS1cXHRcXHQudGdfc2V0X251bWJlciA9IDgsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjE3MDpcXHRcXHQudGdfY29tbV90eXBlID0gUE9SVDEwMF9DT01NX1RZUEVfVEdfMTA2QSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTcxLVxcdH0sXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMTczLVxcdFxcdC50Z19zZXRfbnVtYmVyID0gOCxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTc0OlxcdFxcdC50Z19jb21tX3R5cGUgPSBQT1JUMTAwX0NPTU1fVFlQRV9UR18yMTJGLFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNzUtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0xNzctXFx0XFx0LnRnX3NldF9udW1iZXIgPSA4LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoxNzg6XFx0XFx0LnRnX2NvbW1fdHlwZSA9IFBPUlQxMDBfQ09NTV9UWVBFX1RHXzQyNEYsXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE3OS1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTE4NC1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTg1OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0lOSVRJQUxfR1VBUkRfVElNRSAgICAgIDB4MDBcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTg2OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0FERF9DUkMgICAgICAgICAgICAgICAgIDB4MDFcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTg3OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX0NSQyAgICAgICAgICAgICAgIDB4MDJcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTg4OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX01VTFRJX0NBUkQgICAgICAgICAgICAgIDB4MDNcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTg5OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0FERF9QQVJJVFkgICAgICAgICAgICAgIDB4MDRcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTkwOiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX1BBUklUWSAgICAgICAgICAgIDB4MDVcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTkxOiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0JJVFdJU0VfQUNfUkVDVl9NT0RFICAgIDB4MDZcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTkyOiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX1ZBTElEX0JJVF9OVU1CRVIgICAgICAgIDB4MDdcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTkzOiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0NSWVBUTzEgICAgICAgICAgICAgICAgIDB4MDhcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTk0OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0FERF9TT0YgICAgICAgICAgICAgICAgIDB4MDlcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTk1OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX1NPRiAgICAgICAgICAgICAgIDB4MEFcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTk2OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0FERF9FT0YgICAgICAgICAgICAgICAgIDB4MEJcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTk3OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX0VPRiAgICAgICAgICAgICAgIDB4MENcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTk4OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0RFQUZfVElNRSAgICAgICAgICAgICAgIDB4MEVcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MTk5OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0NSTSAgICAgICAgICAgICAgICAgICAgIDB4MEZcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjAwOiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0NSTV9NSU5fTEVOICAgICAgICAgICAgIDB4MTBcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjAxOiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX1QxX1RBR19GUkFNRSAgICAgICAgICAgIDB4MTFcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjAyOiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX1JGQ0EgICAgICAgICAgICAgICAgICAgIDB4MTJcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjAzOiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0dVQVJEX1RJTUVfQVRfSU5JVElBVE9SIDB4MTNcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjA0OiNkZWZpbmUgUE9SVDEwMF9JTl9QUk9UX0VORCAgICAgICAgICAgICAgICAgICAgIDB4MTRcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjA1LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMDY6I2RlZmluZSBQT1JUMTAwX0lOX01BWF9OVU1fUFJPVE9DT0xTICAgICAgICAgICAgMTlcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjA3LVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMDg6I2RlZmluZSBQT1JUMTAwX1RHX1BST1RfVFUgICAgICAgICAgIDB4MDBcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjA5OiNkZWZpbmUgUE9SVDEwMF9UR19QUk9UX1JGX09GRiAgICAgICAweDAxXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIxMDojZGVmaW5lIFBPUlQxMDBfVEdfUFJPVF9DUk0gICAgICAgICAgMHgwMlxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMTE6I2RlZmluZSBQT1JUMTAwX1RHX1BST1RfRU5EICAgICAgICAgIDB4MDNcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjEyLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMTM6I2RlZmluZSBQT1JUMTAwX1RHX01BWF9OVU1fUFJPVE9DT0xTIDNcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjE0LVxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTIyMD1zdGF0aWMgY29uc3Qgc3RydWN0IHBvcnQxMDBfcHJvdG9jb2xcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjIxOmluX3Byb3RvY29sc1tdW1BPUlQxMDBfSU5fTUFYX05VTV9QUk9UT0NPTFMgKyAxXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjIyLVxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU0hPUlRdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMjM6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfSU5JVElBTF9HVUFSRF9USU1FLCAgICAgIDYgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjI0OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9DUkMsICAgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIyNTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19DUkMsICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMjY6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfTVVMVElfQ0FSRCwgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjI3OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9QQVJJVFksICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIyODpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19QQVJJVFksICAgICAgICAgICAgMSB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMjk6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQklUV0lTRV9BQ19SRUNWX01PREUsICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjMwOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX1ZBTElEX0JJVF9OVU1CRVIsICAgICAgICA3IH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIzMTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DUllQVE8xLCAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMzI6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX1NPRiwgICAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjMzOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX1NPRiwgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIzNDpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfRU9GLCAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMzU6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfRU9GLCAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjM2OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0RFQUZfVElNRSwgICAgICAgICAgICAgICA0IH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjIzNzpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DUk0sICAgICAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyMzg6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQ1JNX01JTl9MRU4sICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjM5OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX1QxX1RBR19GUkFNRSwgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI0MDpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9SRkNBLCAgICAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNDE6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfR1VBUkRfVElNRV9BVF9JTklUSUFUT1IsIDYgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjQyOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0VORCwgICAgICAgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI0My1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0yNDQtXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9TVEFOREFSRF0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI0NTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9JTklUSUFMX0dVQVJEX1RJTUUsICAgICAgNiB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNDY6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX0NSQywgICAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjQ3OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX0NSQywgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI0ODpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9NVUxUSV9DQVJELCAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNDk6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX1BBUklUWSwgICAgICAgICAgICAgIDEgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjUwOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX1BBUklUWSwgICAgICAgICAgICAxIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI1MTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9CSVRXSVNFX0FDX1JFQ1ZfTU9ERSwgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNTI6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfVkFMSURfQklUX05VTUJFUiwgICAgICAgIDggfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjUzOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NSWVBUTzEsICAgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI1NDpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfU09GLCAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNTU6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfU09GLCAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjU2OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9FT0YsICAgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI1NzpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19FT0YsICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNTg6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfREVBRl9USU1FLCAgICAgICAgICAgICAgIDQgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjU5OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NSTSwgICAgICAgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI2MDpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DUk1fTUlOX0xFTiwgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNjE6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfVDFfVEFHX0ZSQU1FLCAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjYyOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX1JGQ0EsICAgICAgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI2MzpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9HVUFSRF9USU1FX0FUX0lOSVRJQVRPUiwgNiB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNjQ6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAgICAgICAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjY1LVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI2Ni1cXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NUQU5EQVJEX1dJVEhfQ1JDX0FdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNjc6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfSU5JVElBTF9HVUFSRF9USU1FLCAgICAgIDYgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjY4OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9DUkMsICAgICAgICAgICAgICAgICAxIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI2OTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19DUkMsICAgICAgICAgICAgICAgMSB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNzA6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfTVVMVElfQ0FSRCwgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjcxOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9QQVJJVFksICAgICAgICAgICAgICAxIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI3MjpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19QQVJJVFksICAgICAgICAgICAgMSB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNzM6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQklUV0lTRV9BQ19SRUNWX01PREUsICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mjc0OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX1ZBTElEX0JJVF9OVU1CRVIsICAgICAgICA4IH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI3NTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DUllQVE8xLCAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNzY6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX1NPRiwgICAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mjc3OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX1NPRiwgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI3ODpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfRU9GLCAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyNzk6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfRU9GLCAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjgwOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0RFQUZfVElNRSwgICAgICAgICAgICAgICA0IH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI4MTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DUk0sICAgICAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyODI6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQ1JNX01JTl9MRU4sICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjgzOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX1QxX1RBR19GUkFNRSwgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI4NDpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9SRkNBLCAgICAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyODU6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfR1VBUkRfVElNRV9BVF9JTklUSUFUT1IsIDYgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mjg2OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0VORCwgICAgICAgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI4Ny1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTI4OS1cXHRcXHQvKiBuZmNfZGlnaXRhbF9mcmFtaW5nX25mY2Ffc2hvcnQgKi9cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjkwOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9DUkMsICAgICAgICAgIDIgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjkxOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX0NSQywgICAgICAgIDIgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjkyOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX1ZBTElEX0JJVF9OVU1CRVIsIDggfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MjkzOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX1QxX1RBR19GUkFNRSwgICAgIDIgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mjk0OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0VORCwgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjk1LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMjk3LVxcdFxcdC8qIG5mY19kaWdpdGFsX2ZyYW1pbmdfbmZjYV9zdGFuZGFyZCAqL1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzoyOTg6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX0NSQywgICAxIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjI5OTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19DUkMsIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzAwOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0VORCwgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMDEtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMDMtXFx0XFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNhX3N0YW5kYXJkX3dpdGhfY3JjX2EgKi9cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzA0OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0VORCwgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMDUtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMDctXFx0XFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNhX3N0YW5kYXJkICovXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMwODpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzA5LVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTMxMC1cXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNGXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzExOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0lOSVRJQUxfR1VBUkRfVElNRSwgICAgIDE4IH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMxMjpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfQ1JDLCAgICAgICAgICAgICAgICAgMSB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMTM6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfQ1JDLCAgICAgICAgICAgICAgIDEgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzE0OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX01VTFRJX0NBUkQsICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMxNTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfUEFSSVRZLCAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMTY6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfUEFSSVRZLCAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzE3OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0JJVFdJU0VfQUNfUkVDVl9NT0RFLCAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMxODpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9WQUxJRF9CSVRfTlVNQkVSLCAgICAgICAgOCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMTk6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQ1JZUFRPMSwgICAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzIwOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9TT0YsICAgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMyMTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19TT0YsICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMjI6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX0VPRiwgICAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzIzOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX0VPRiwgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMyNDpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9ERUFGX1RJTUUsICAgICAgICAgICAgICAgNCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMjU6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQ1JNLCAgICAgICAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzI2OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NSTV9NSU5fTEVOLCAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMyNzpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9UMV9UQUdfRlJBTUUsICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMjg6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfUkZDQSwgICAgICAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzI5OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0dVQVJEX1RJTUVfQVRfSU5JVElBVE9SLCA2IH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMzMDpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsICAgICAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMzEtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zMzMtXFx0XFx0LyogbmZjX2RpZ2l0YWxfZnJhbWluZ19uZmNmICovXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjMzNDpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9FTkQsIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzM1LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzM3LVxcdFxcdC8qIG5mY19kaWdpdGFsX2ZyYW1pbmdfbmZjZiAqL1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozMzg6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfSU5JVElBTF9HVUFSRF9USU1FLCAgICAgMTggfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzM5OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9DUkMsICAgICAgICAgICAgICAgICAxIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM0MDpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19DUkMsICAgICAgICAgICAgICAgMSB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNDE6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfTVVMVElfQ0FSRCwgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzQyOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9QQVJJVFksICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM0MzpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19QQVJJVFksICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNDQ6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQklUV0lTRV9BQ19SRUNWX01PREUsICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzQ1OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX1ZBTElEX0JJVF9OVU1CRVIsICAgICAgICA4IH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM0NjpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DUllQVE8xLCAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNDc6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX1NPRiwgICAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzQ4OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX1NPRiwgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM0OTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfRU9GLCAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNTA6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfRU9GLCAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzUxOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0RFQUZfVElNRSwgICAgICAgICAgICAgICA0IH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM1MjpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DUk0sICAgICAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNTM6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQ1JNX01JTl9MRU4sICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzU0OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX1QxX1RBR19GUkFNRSwgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM1NTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9SRkNBLCAgICAgICAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNTY6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfR1VBUkRfVElNRV9BVF9JTklUSUFUT1IsIDYgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzU3OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0VORCwgICAgICAgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM1OC1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zNTktXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDX0RFUF9BQ1RJVkFURURdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNjA6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM2MS1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zNjItXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQl0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM2MzpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9JTklUSUFMX0dVQVJEX1RJTUUsICAgICAyMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNjQ6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX0NSQywgICAgICAgICAgICAgICAgIDEgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzY1OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX0NSQywgICAgICAgICAgICAgICAxIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM2NjpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9NVUxUSV9DQVJELCAgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNjc6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQUREX1BBUklUWSwgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzY4OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NIRUNLX1BBUklUWSwgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM2OTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9CSVRXSVNFX0FDX1JFQ1ZfTU9ERSwgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNzA6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfVkFMSURfQklUX05VTUJFUiwgICAgICAgIDggfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzcxOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NSWVBUTzEsICAgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM3MjpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9BRERfU09GLCAgICAgICAgICAgICAgICAgMSB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNzM6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfQ0hFQ0tfU09GLCAgICAgICAgICAgICAgIDEgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mzc0OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0FERF9FT0YsICAgICAgICAgICAgICAgICAxIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM3NTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DSEVDS19FT0YsICAgICAgICAgICAgICAgMSB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNzY6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfREVBRl9USU1FLCAgICAgICAgICAgICAgIDQgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mzc3OlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX0NSTSwgICAgICAgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM3ODpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9DUk1fTUlOX0xFTiwgICAgICAgICAgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozNzk6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfVDFfVEFHX0ZSQU1FLCAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6MzgwOlxcdFxcdHsgUE9SVDEwMF9JTl9QUk9UX1JGQ0EsICAgICAgICAgICAgICAgICAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjM4MTpcXHRcXHR7IFBPUlQxMDBfSU5fUFJPVF9HVUFSRF9USU1FX0FUX0lOSVRJQVRPUiwgNiB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozODI6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAgICAgICAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzgzLVxcdH0sXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzg1LVxcdFxcdC8qIG5mY19kaWdpdGFsX2ZyYW1pbmdfbmZjYiAqL1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozODY6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAgICAgICAgICAgICAgICAgICAgIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzg3LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzg5LVxcdFtORkNfRElHSVRBTF9GUkFNSU5HX0xBU1RdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozOTA6XFx0XFx0eyBQT1JUMTAwX0lOX1BST1RfRU5ELCAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM5MS1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jPTM5ND1zdGF0aWMgY29uc3Qgc3RydWN0IHBvcnQxMDBfcHJvdG9jb2xcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6Mzk1OnRnX3Byb3RvY29sc1tdW1BPUlQxMDBfVEdfTUFYX05VTV9QUk9UT0NPTFMgKyAxXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtMzk2LVxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0FfU0hPUlRdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzozOTc6XFx0XFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTM5OC1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy0zOTktXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9TVEFOREFSRF0gPSB7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQwMDpcXHRcXHR7IFBPUlQxMDBfVEdfUFJPVF9FTkQsIDAgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDAxLVxcdH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQwMi1cXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19ORkNBX1NUQU5EQVJEX1dJVEhfQ1JDX0FdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MDM6XFx0XFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQwNC1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MDUtXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UMVRdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MDY6XFx0XFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQwNy1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MDgtXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9UMlRdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MDk6XFx0XFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQxMC1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MTEtXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDQV9ORkNfREVQXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDEyOlxcdFxcdHsgUE9SVDEwMF9UR19QUk9UX1RVLCAgICAgMSB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MTM6XFx0XFx0eyBQT1JUMTAwX1RHX1BST1RfUkZfT0ZGLCAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQxNDpcXHRcXHR7IFBPUlQxMDBfVEdfUFJPVF9DUk0sICAgIDcgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDE1OlxcdFxcdHsgUE9SVDEwMF9UR19QUk9UX0VORCwgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MTYtXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDE3LVxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ0ZdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MTg6XFx0XFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQxOS1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MjAtXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDRl9UM1RdID0ge1xcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MjE6XFx0XFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQyMi1cXHR9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MjMtXFx0W05GQ19ESUdJVEFMX0ZSQU1JTkdfTkZDRl9ORkNfREVQXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDI0OlxcdFxcdHsgUE9SVDEwMF9UR19QUk9UX1RVLCAgICAgMSB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MjU6XFx0XFx0eyBQT1JUMTAwX1RHX1BST1RfUkZfT0ZGLCAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjQyNjpcXHRcXHR7IFBPUlQxMDBfVEdfUFJPVF9DUk0sICAgIDcgfSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDI3OlxcdFxcdHsgUE9SVDEwMF9UR19QUk9UX0VORCwgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MjgtXFx0fSxcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNDI5LVxcdFtORkNfRElHSVRBTF9GUkFNSU5HX05GQ19ERVBfQUNUSVZBVEVEXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDMwOlxcdFxcdHsgUE9SVDEwMF9UR19QUk9UX1JGX09GRiwgMSB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYzo0MzE6XFx0XFx0eyBQT1JUMTAwX1RHX1BST1RfRU5ELCAgICAwIH0sXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQzMi1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTQzNC1cXHRbTkZDX0RJR0lUQUxfRlJBTUlOR19MQVNUXSA9IHtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NDM1OlxcdFxcdHsgUE9SVDEwMF9UR19QUk9UX0VORCwgICAgMCB9LFxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy00MzYtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYz01NDA9c3RhdGljIHZvaWQgcG9ydDEwMF90eF9mcmFtZV9pbml0KHZvaWQgKl9mcmFtZSwgdTggY21kX2NvZGUpXFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNTQ0LVxcdGZyYW1lLVxcdTAwM2VwcmVhbWJsZSA9IDA7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjU0NTpcXHRmcmFtZS1cXHUwMDNlc3RhcnRfZnJhbWUgPSBjcHVfdG9fYmUxNihQT1JUMTAwX0ZSQU1FX1NPRik7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjU0NjpcXHRmcmFtZS1cXHUwMDNlZXh0ZW5kZWRfZnJhbWUgPSBjcHVfdG9fYmUxNihQT1JUMTAwX0ZSQU1FX0VYVCk7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjU0NzpcXHRQT1JUMTAwX0ZSQU1FX0RJUkVDVElPTihmcmFtZSkgPSBQT1JUMTAwX0ZSQU1FX0RJUl9PVVQ7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjU0ODpcXHRQT1JUMTAwX0ZSQU1FX0NNRChmcmFtZSkgPSBjbWRfY29kZTtcXG5kcml2ZXJzL25mYy9wb3J0MTAwLmMtNTQ5LVxcdGZyYW1lLVxcdTAwM2VkYXRhbGVuID0gY3B1X3RvX2xlMTYoMik7XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9NTUyPXN0YXRpYyB2b2lkIHBvcnQxMDBfdHhfZnJhbWVfZmluaXNoKHZvaWQgKl9mcmFtZSlcXG4tLVxcbmRyaXZlcnMvbmZjL3BvcnQxMDAuYy01NTctXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jOjU1ODpcXHRQT1JUMTAwX0ZSQU1FX0NIRUNLU1VNKGZyYW1lKSA9XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTU1OS1cXHRcXHRwb3J0MTAwX2RhdGFfY2hlY2tzdW0oZnJhbWUtXFx1MDAzZWRhdGEsIGxlMTZfdG9fY3B1KGZyYW1lLVxcdTAwM2VkYXRhbGVuKSk7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTU2MC1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NTYxOlxcdFBPUlQxMDBfRlJBTUVfUE9TVEFNQkxFKGZyYW1lKSA9IDA7XFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTU2Mi19XFxuLS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM9NTcxPXN0YXRpYyBib29sIHBvcnQxMDBfcnhfZnJhbWVfaXNfdmFsaWQoY29uc3Qgdm9pZCAqX2ZyYW1lKVxcbi0tXFxuZHJpdmVycy9uZmMvcG9ydDEwMC5jLTU3NS1cXG5kcml2ZXJzL25mYy9wb3J0MTAwLmM6NTc2OlxcdGlmIChmcmFtZS1cXHUwMDNlc3RhcnRfZnJhbWUgIT0gY3B1X3RvX2JlMTYoUE9SVDEwMF9GUkFNRV9TT0YpIHx8XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjQwOjI0LjE5NDIzMTQ3M1oiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo4NDgwMTczNTIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIE5GQyBEaWdpdGFsIFRhcmdldCBERVAgUmVxdWVzdCBIYW5kbGluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBpcyB0byBkZXRlcm1pbmUgdGhlIGltcGFjdCBvZiB0aGlzIHBhdGNoIGFuZCB3aGV0aGVyIGZ1enppbmcgaXMgd2FycmFudGVkLiBJIHNlZSB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYENPTkZJR19ORkNgIGFuZCBgQ09ORklHX05GQ19ESUdJVEFMYC4gTG9va2luZyBhdCBgZHJpdmVycy9uZmMvS2NvbmZpZ2AsIGl0J3MgZXZpZGVudCB0aGF0IGBORkNfU0lNYCBhbmQgYE5GQ19QT1JUMTAwYCBhcmUgYWxzbyByZWxldmFudCwgYnV0IHRoZSBjb3JlIGJ1aWxkaW5nIGJsb2NrcyBhcmUgYE5GQ2AgYW5kIGBORkNfRElHSVRBTGAsIHdoaWNoIGRpcmVjdGx5IGVuYWJsZSB0aGUgZGlnaXRhbCBORkMgcHJvdG9jb2wgc3RhY2ssIHNwZWNpZmljYWxseSBgZGlnaXRhbF9kZXAuY2AuXG5cblRoZSBoZWFydCBvZiB0aGlzIHBhdGNoIGxpZXMgd2l0aGluIGBuZXQvbmZjL2RpZ2l0YWxfZGVwLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgZnVuY3Rpb24uIEl0J3MgbWFya2VkIGBzdGF0aWNgLCBidXQsIGNydWNpYWxseSwgaXQncyBub3QgaW5saW5lZCBiZWNhdXNlIGl0cyBhZGRyZXNzIGlzIHRha2VuIGFuZCBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyOiB0aGlzIG1lYW5zIGl0IGdlbmVyYXRlcyBhIHVuaXF1ZSBzeW1ib2wgYW5kIGlzIGRlZmluaXRlbHkgYSBzcGVjaWZpYyBwb2ludCB0byB0YXJnZXQuIE90aGVyIHJlbGF0ZWQgZnVuY3Rpb25zIGluIGBkaWdpdGFsX2RlcC5jYCwgc3VjaCBhcyBgZGlnaXRhbF90Z19zZW5kX2RlcF9yZXNgLCBgZGlnaXRhbF90Z19zZW5kX2F0cl9yZXNfY29tcGxldGVgLCBhbmQgYGRpZ2l0YWxfdGdfc2VuZF9wc2xfcmVzX2NvbXBsZXRlYCBhcmUgYWxzbyBpbiB0aGlzIHNhbWUgY29kZS5cblxuVGhpcyBwYXRjaCBkaXJlY3RseSBtb2RpZmllcyB0aGUgbG9naWMgd2l0aGluIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgYW5kLCBhZnRlciBjYXJlZnVsbHkgcmV2aWV3aW5nIHRoZSBjb2RlLCBpdCBiZWNvbWVzIGNsZWFyIHdoYXQncyBoYXBwZW5pbmcuIFRoZSBvcmlnaW5hbCBjb2RlIGhhZCBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eS4gU3BlY2lmaWNhbGx5LCB3aGVuIGhhbmRsaW5nIGEgREVQIChEYXRhIEV4Y2hhbmdlIFByb3RvY29sKSByZXF1ZXN0IHdoZXJlIHRoZSBESUQgKERldmljZSBJRCkgYml0IGlzIHNldCwgaXQgdXNlZCBhIGhhcmRjb2RlZCBpbmRleCBgM2AgdG8gYWNjZXNzIHRoZSByZXNwb25zZSBkYXRhLCBldmVuIHdoZW4gdGhlIGByZXNwLVx1MDAzZWxlbmAgd2FzIHNtYWxsZXIgdGhhbiB0aGF0IGluZGV4LiBUaGlzIHBhdGNoIGZpeGVzIHRoaXMgYnkgY2hlY2tpbmcgdGhlIGJvdW5kcyBvZiBgcmVzcC1cdTAwM2VkYXRhYCBiZWZvcmUgcmVhZGluZywgZW5zdXJpbmcgdGhlIGluZGV4IGlzIHdpdGhpbiB0aGUgdmFsaWQgcmFuZ2UgYW5kIHVzaW5nIHRoZSBjb3JyZWN0IGluZGV4IHZpYSB0aGUgYHNpemVgIHZhcmlhYmxlLiBUaGlzIGF2b2lkcyB0aGUgb3V0LW9mLWJvdW5kcyByZWFkIGFuZCBmaXhlcyB0aGUgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHksIGJ1dCBpcyBzdGlsbCByZWFjaGFibGUgY29kZS5cblxuTm93LCBjb25zaWRlcmluZyB0aGUgcGF0Y2gncyBjaGFuZ2VzLCB0aGUgY29yZSBmdW5jdGlvbnMgdG8gZm9jdXMgb24gYXJlIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAgYW5kIHBvdGVudGlhbGx5IGBkaWdpdGFsX3RnX3NlbmRfZGVwX3Jlc2AuIFRoZXNlIGFyZSB0aGUgcHJlY2lzZSBmdW5jdGlvbnMgd2hlcmUgdGhlIG1vZGlmaWVkIGxvZ2ljIGlzIGltcGxlbWVudGVkLCBtYWtpbmcgdGhlbSB0aGUgbW9zdCByZWxldmFudCBmb3IgdGVzdGluZy5cblxuVG8gZW5hYmxlIHRoZSBjb2RlIGluIHRoaXMgcGF0Y2gsIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbnMgYXJlIG5lY2Vzc2FyeTogYE5GQ2AgYW5kIGBORkNfRElHSVRBTGAuXG5cblRoZXJlZm9yZSwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgZnV6emluZyB0aGlzIGNvZGUgaXMgZXNzZW50aWFsLiBUaGUgcGF0Y2ggYWRkcmVzc2VzIGEgdGFuZ2libGUgYnVnIGluIGtlcm5lbCBuZXR3b3JraW5nIE5GQyBwcm90b2NvbCBzdGFjayAoYG5ldC9uZmMvZGlnaXRhbF9kZXAuY2ApIHRoYXQgZGlyZWN0bHkgaW52b2x2ZXMgcGFja2V0IHZhbGlkYXRpb24gYW5kIGNoZWNraW5nIGJvdW5kcyBmb3IgREVQIHJlcXVlc3QgZnJhbWVzIGluIE5GQyB0YXJnZXQgbW9kZS4gSXQncyBhIGNsZWFyIHZ1bG5lcmFiaWxpdHkgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIHRocm91Z2ggYSB2YXJpZXR5IG9mIE5GQyBkaWdpdGFsIGRldmljZXMsIG1ha2luZyBmdXp6aW5nIGJvdGggcHJhY3RpY2FsIGFuZCBjcml0aWNhbC4gSSB0aGluayB3ZSBoYXZlIGVub3VnaCBpbmZvcm1hdGlvbiB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1ODI5LCJPdXRwdXRUb2tlbnMiOjE2OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6NDA6MzIuNjc0NDA3MTY2WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU5NDcwMzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GQ1wiLFxuICAgIFwiTkZDX0RJR0lUQUxcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcVwiLFxuICAgIFwiZGlnaXRhbF90Z19zZW5kX2RlcF9yZXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJvdW5kcyBjaGVjayBhbmQgdmFsaWRhdGlvbiBsb2dpYyBpbiBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSgpIHdoZW4gaGFuZGxpbmcgREVQIChEYXRhIEV4Y2hhbmdlIFByb3RvY29sKSByZXF1ZXN0IGZyYW1lcyB3aXRoIHRoZSBESUQgYml0IHNldCBpbiB0aGUgTkZDIGRpZ2l0YWwgcHJvdG9jb2wgc3RhY2suIFByZXZpb3VzbHksIHJlYWRpbmcgcmVzcC1cXHUwMDNlZGF0YVszXSBjb3VsZCBjYXVzZSBhbiBvdXQtb2YtYm91bmRzIGFjY2VzcyBpZiByZXNwLVxcdTAwM2VsZW4gd2FzIGluc3VmZmljaWVudC4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBkdXJpbmcgTkZDIHRhcmdldCBtb2RlIGNvbW11bmljYXRpb24gdmlhIGVtdWxhdGVkIHZpcnR1YWwgZGV2aWNlcyAobmZjc2ltKSBvciBVU0IgTkZDIGRldmljZXMgKHBvcnQxMDApIHN1cHBvcnRlZCBpbiBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19ESUdJVEFMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFcIixcbiAgICBcImRpZ2l0YWxfdGdfc2VuZF9kZXBfcmVzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBib3VuZHMgY2hlY2sgYW5kIHZhbGlkYXRpb24gbG9naWMgaW4gZGlnaXRhbF90Z19yZWN2X2RlcF9yZXEoKSB3aGVuIGhhbmRsaW5nIERFUCAoRGF0YSBFeGNoYW5nZSBQcm90b2NvbCkgcmVxdWVzdCBmcmFtZXMgd2l0aCB0aGUgRElEIGJpdCBzZXQgaW4gdGhlIE5GQyBkaWdpdGFsIHByb3RvY29sIHN0YWNrLiBQcmV2aW91c2x5LCByZWFkaW5nIHJlc3AtXFx1MDAzZWRhdGFbM10gY291bGQgY2F1c2UgYW4gb3V0LW9mLWJvdW5kcyBhY2Nlc3MgaWYgcmVzcC1cXHUwMDNlbGVuIHdhcyBpbnN1ZmZpY2llbnQuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgZHVyaW5nIE5GQyB0YXJnZXQgbW9kZSBjb21tdW5pY2F0aW9uIHZpYSBlbXVsYXRlZCB2aXJ0dWFsIGRldmljZXMgKG5mY3NpbSkgb3IgVVNCIE5GQyBkZXZpY2VzIChwb3J0MTAwKSBzdXBwb3J0ZWQgaW4gZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjQwOjMyLjc1MDM2MjA2M1oiLCJTZXEiOjMzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY3ODAyNDYwNDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDo0MDozMi43NTA4NjY2MDNaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjozNjc3OTczNjMzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBtaXNzaW5nIGJvdW5kcyBjaGVjayBpbiBuZXQvbmZjL2RpZ2l0YWxfZGVwLmMgd2l0aGluIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKCkuIFByZXZpb3VzbHksIHdoZW4gRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikgd2FzIHRydWUsIHJlc3AtXFx1MDAzZWRhdGFbM10gd2FzIGFjY2Vzc2VkIHdpdGhvdXQgY2hlY2tpbmcgaWYgcmVzcC1cXHUwMDNlbGVuIHdhcyBhdCBsZWFzdCA0IGJ5dGVzIChzaXplICsgMSksIHBvdGVudGlhbGx5IHJlc3VsdGluZyBpbiBhbiBvdXQtb2YtYm91bmRzIHJlYWQgb24gdGhlIHJlY2VpdmVkIHNrYiBidWZmZXIuIFRoZSBwYXRjaCBhZGRzIGByZXNwLVxcdTAwM2VsZW4gXFx1MDAzYyBzaXplICsgMWAgdG8gcHJldmVudCB0aGlzIG91dC1vZi1ib3VuZHMgcmVhZC5cXG5cXG5UaGlzIGlzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCB2dWxuZXJhYmlsaXR5LCB3aGljaCBpcyBkZXRlY3RhYmxlIGJ5IEtBU0FOLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIG9yIG1hbmlwdWxhdGUgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSwgZG9lcyBub3QgY29weSBrZXJuZWwgZGF0YSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgYWx0ZXIgY29udHJvbCBmbG93IGJhc2VkIG9uIHVuaW5pdGlhbGl6ZWQgZmllbGRzLiBUaHVzLCBLTVNBTiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTg3OTJkMTE1MDNmZmM0NTFkYTU3YTU5NDBiOWE2NmU4ZDY2ZjhiYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDEzIDIwOjM5OjE2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25mYy9kaWdpdGFsX2RlcC5jIGIvbmV0L25mYy9kaWdpdGFsX2RlcC5jXG5pbmRleCAzOTgyZmEwODQ3MzdmLi5hZTU0MDdmY2ExMmQ0IDEwMDY0NFxuLS0tIGEvbmV0L25mYy9kaWdpdGFsX2RlcC5jXG4rKysgYi9uZXQvbmZjL2RpZ2l0YWxfZGVwLmNcbkBAIC0xMTE3LDEyICsxMTE3LDEyIEBAIHN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcbiBcdHBmYiA9IGRlcF9yZXEtXHUwMDNlcGZiO1xuIFxuIFx0aWYgKERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpKSB7XG4tXHRcdGlmIChkZGV2LVx1MDAzZWRpZCBcdTAwMjZcdTAwMjYgKGRkZXYtXHUwMDNlZGlkID09IHJlc3AtXHUwMDNlZGF0YVszXSkpIHtcbi1cdFx0XHRzaXplKys7XG4tXHRcdH0gZWxzZSB7XG4rXHRcdGlmIChyZXNwLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZSArIDEgfHwgIWRkZXYtXHUwMDNlZGlkIHx8XG4rXHRcdCAgICBkZGV2LVx1MDAzZWRpZCAhPSByZXNwLVx1MDAzZWRhdGFbc2l6ZV0pIHtcbiBcdFx0XHRyYyA9IC1FSU87XG4gXHRcdFx0Z290byBleGl0O1xuIFx0XHR9XG4rXHRcdHNpemUrKztcbiBcdH0gZWxzZSBpZiAoZGRldi1cdTAwM2VkaWQpIHtcbiBcdFx0cmMgPSAtRUlPO1xuIFx0XHRnb3RvIGV4aXQ7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDo0MDozMi43NTA4Njc1MTNaIiwiU2VxIjozNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NDY2NjMwNzE4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuXG5cbioqQW5hbHl6aW5nIHRoaXMgUGF0Y2g6IEEgRm9jdXNlZCBBcHByb2FjaCoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBwaW5wb2ludCB0aGUgY29yZSBvZiB0aGUgY2hhbmdlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgYmVpbmcgYWx0ZXJlZCBhbmQsIG1vcmUgaW1wb3J0YW50bHksICp3aHkqLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgemVyb2luZyBpbiBvbiBgbmV0L25mYy9kaWdpdGFsX2RlcC5jYCwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDExMTcuIEknbGwgcHJvYmFibHkgZmlyZSB1cCBlaXRoZXIgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIOKAkyB3aGF0ZXZlcidzIHF1aWNrZXN0IGFuZCBtb3N0IGVmZmljaWVudCBnaXZlbiBteSBjdXJyZW50IGVudmlyb25tZW50IOKAkyB0byBleHRyYWN0IHRoYXQgc2VjdGlvbiBvZiB0aGUgY29kZSBhbmQgZ2V0IGEgY2xlYXJlciBwaWN0dXJlLiBNeSBnb2FsIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgYW5kIGludGVudCBvZiB0aGUgY2hhbmdlIGJlZm9yZSBJIGdvIGFueSBkZWVwZXIuIFRoaXMgaW5pdGlhbCBmb2N1c2VkIGV4YW1pbmF0aW9uIHdpbGwgZ2l2ZSBtZSBhIGNyaXRpY2FsIGZvdW5kYXRpb24gZm9yIGZ1cnRoZXIgYW5hbHlzaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNzEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjQwOjM3LjQxNzE3Nzk5MloiLCJTZXEiOjM2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNzY5NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25mYy9kaWdpdGFsX2RlcC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEwOTUsXG4gIFwiTGluZUNvdW50XCI6IDU1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEwOTU6XFx0XFx0fVxcbjEwOTY6XFx0XFxuMTA5NzpcXHRcXHRyYyA9IGRpZ2l0YWxfc2tiX3B1bGxfZGVwX3NvZChkZGV2LCByZXNwKTtcXG4xMDk4OlxcdFxcdGlmIChyYykge1xcbjEwOTk6XFx0XFx0XFx0UFJPVE9DT0xfRVJSKFxcXCIxNC40LjEuMlxcXCIpO1xcbjExMDA6XFx0XFx0XFx0Z290byBleGl0O1xcbjExMDE6XFx0XFx0fVxcbjExMDI6XFx0XFxuMTEwMzpcXHRcXHRpZiAocmVzcC1cXHUwMDNlbGVuIFxcdTAwM2UgZGRldi1cXHUwMDNlbG9jYWxfcGF5bG9hZF9tYXgpIHtcXG4xMTA0OlxcdFxcdFxcdHJjID0gLUVNU0dTSVpFO1xcbjExMDU6XFx0XFx0XFx0Z290byBleGl0O1xcbjExMDY6XFx0XFx0fVxcbjExMDc6XFx0XFxuMTEwODpcXHRcXHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcXG4xMTA5OlxcdFxcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilyZXNwLVxcdTAwM2VkYXRhO1xcbjExMTA6XFx0XFxuMTExMTpcXHRcXHRpZiAocmVzcC1cXHUwMDNlbGVuIFxcdTAwM2Mgc2l6ZSB8fCBkZXBfcmVxLVxcdTAwM2VkaXIgIT0gRElHSVRBTF9ORkNfREVQX0ZSQU1FX0RJUl9PVVQgfHxcXG4xMTEyOlxcdFxcdCAgICBkZXBfcmVxLVxcdTAwM2VjbWQgIT0gRElHSVRBTF9DTURfREVQX1JFUSkge1xcbjExMTM6XFx0XFx0XFx0cmMgPSAtRUlPO1xcbjExMTQ6XFx0XFx0XFx0Z290byBleGl0O1xcbjExMTU6XFx0XFx0fVxcbjExMTY6XFx0XFxuMTExNzpcXHRcXHRwZmIgPSBkZXBfcmVxLVxcdTAwM2VwZmI7XFxuMTExODpcXHRcXG4xMTE5OlxcdFxcdGlmIChESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSkge1xcbjExMjA6XFx0XFx0XFx0aWYgKHJlc3AtXFx1MDAzZWxlbiBcXHUwMDNjIHNpemUgKyAxIHx8ICFkZGV2LVxcdTAwM2VkaWQgfHxcXG4xMTIxOlxcdFxcdFxcdCAgICBkZGV2LVxcdTAwM2VkaWQgIT0gcmVzcC1cXHUwMDNlZGF0YVtzaXplXSkge1xcbjExMjI6XFx0XFx0XFx0XFx0cmMgPSAtRUlPO1xcbjExMjM6XFx0XFx0XFx0XFx0Z290byBleGl0O1xcbjExMjQ6XFx0XFx0XFx0fVxcbjExMjU6XFx0XFx0XFx0c2l6ZSsrO1xcbjExMjY6XFx0XFx0fSBlbHNlIGlmIChkZGV2LVxcdTAwM2VkaWQpIHtcXG4xMTI3OlxcdFxcdFxcdHJjID0gLUVJTztcXG4xMTI4OlxcdFxcdFxcdGdvdG8gZXhpdDtcXG4xMTI5OlxcdFxcdH1cXG4xMTMwOlxcdFxcbjExMzE6XFx0XFx0aWYgKERJR0lUQUxfTkZDX0RFUF9OQURfQklUX1NFVChwZmIpKSB7XFxuMTEzMjpcXHRcXHRcXHRyYyA9IC1FSU87XFxuMTEzMzpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTEzNDpcXHRcXHR9XFxuMTEzNTpcXHRcXG4xMTM2OlxcdFxcdGlmIChzaXplIFxcdTAwM2UgcmVzcC1cXHUwMDNlbGVuKSB7XFxuMTEzNzpcXHRcXHRcXHRyYyA9IC1FSU87XFxuMTEzODpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuMTEzOTpcXHRcXHR9XFxuMTE0MDpcXHRcXG4xMTQxOlxcdFxcdHNrYl9wdWxsKHJlc3AsIHNpemUpO1xcbjExNDI6XFx0XFxuMTE0MzpcXHRcXHRzd2l0Y2ggKERJR0lUQUxfTkZDX0RFUF9QRkJfVFlQRShwZmIpKSB7XFxuMTE0NDpcXHRcXHRjYXNlIERJR0lUQUxfTkZDX0RFUF9QRkJfSV9QRFU6XFxuMTE0NTpcXHRcXHRcXHRwcl9kZWJ1ZyhcXFwiRElHSVRBTF9ORkNfREVQX1BGQl9JX1BEVVxcXFxuXFxcIik7XFxuMTE0NjpcXHRcXG4xMTQ3OlxcdFxcdFxcdGlmIChkZGV2LVxcdTAwM2VhdG5fY291bnQpIHtcXG4xMTQ4OlxcdFxcdFxcdFxcdC8qIFRoZSB0YXJnZXQgaGFzIHJlY2VpdmVkIChhbmQgcmVwbGllZCB0bykgYXQgbGVhc3Qgb25lXFxuMTE0OTpcXHRcXHRcXHRcXHQgKiBBVE4gREVQX1JFUS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6NDA6MzcuNDE3NTU3NDAyWiIsIlNlcSI6MzcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjM2MTcxNDYzNjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgRGlnaXRhbCBORkMgREVQIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBwYXRjaC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgYW5kIGV4YWN0bHkgd2hhdCBidWcgaXMgYmVpbmcgYWRkcmVzc2VkLCBzcGVjaWZpY2FsbHkgd2l0aGluIGBuZXQvbmZjL2RpZ2l0YWxfZGVwLmNgLiBJJ20gc2VlaW5nIGEgY29kZSBzbmlwcGV0IGhlcmUuLi4gaXQgbG9va3MgbGlrZSBhIGNvbmRpdGlvbmFsIGJsb2NrIGRlYWxpbmcgd2l0aCBEZXZpY2UgSUQgKERJRCkgaGFuZGxpbmcgaW4gdGhlIERpZ2l0YWwgTkZDIERFUCBwcm90b2NvbC4gSSBzZWUgdGhlIFwiUHJldmlvdXNseVwiIGNvZGUgYmxvY2ssIGFuZCBJIG5lZWQgdG8gcGllY2UgdG9nZXRoZXIgdGhlIG9yaWdpbmFsIGxvZ2ljLiBPa2F5LCBpZiB0aGUgYERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpYCBtYWNybyBpcyB0cnVlLCB0aGVuIHdlIGhhdmUgYSBESUQuIFRoZSBjb2RlIGNoZWNrcyBpZiB0aGUgZGV2aWNlIGFscmVhZHkgaGFzIGEgYGRkZXYtXHUwMDNlZGlkYCBzZXQgYW5kIGlmIHRoZSBESUQgaW4gdGhlIHJlc3BvbnNlIGByZXNwLVx1MDAzZWRhdGFbM11gIG1hdGNoZXMuIElmIHRoZXkgbWF0Y2gsIHRoZW4gYHNpemUrK2AuIElmIHRoZXkgKmRvbid0KiBtYXRjaCwgaXQncyBhbiBJL08gZXJyb3IgKGAtRUlPYCksIGFuZCB3ZSBqdW1wIHRvIHRoZSBleGl0LiBPdGhlcndpc2UsIGlmIHRoZXJlJ3MgYSBkZXZpY2UgRElEIHNldCAoYGRkZXYtXHUwMDNlZGlkYCksIGJ1dCBgRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYilgIGlzICpub3QqIHNldCwgdGhpcyBhZ2FpbiByYWlzZXMgYW4gSS9PIGVycm9yLiBJIGdldCB0aGUgYmFzaWMgZ2lzdCBvZiB0aGlzLCBidXQgaG9sZCBvbi4uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkuIFdoYXQgZXhhY3RseSBpcyBgcmVzcC1cdTAwM2VkYXRhWzNdYCBzdXBwb3NlZCB0byBiZSBoZXJlPyBJdCBmZWVscyBsaWtlIHNvbWV0aGluZyBpcyBtaXNzaW5nLiBJIHNob3VsZCBjaGVjayB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgYHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzYCBzdHJ1Y3R1cmUgcmlnaHQgYXdheSB0byBwcm9wZXJseSB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyMTUsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDo0MDo0MS4wMzQ3MDY5MjFaIiwiU2VxIjozOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0MDMxNDgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9kaWdpdGFsX2RlcC5jPTk0PXN0cnVjdCBkaWdpdGFsX3BzbF9yZXMge1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTk5LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDA6c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMge1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDEtXFx0dTggZGlyO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTIwMD1kaWdpdGFsX3NlbmRfZGVwX2RhdGFfcHJlcChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoyMDE6XFx0XFx0XFx0ICAgc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXFfcmVzLFxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0yMDItXFx0XFx0XFx0ICAgc3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2gpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTI5PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX2FjayhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTUzMS17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjUzMjpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTMzLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTM5LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1NDA6XFx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTQxLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo1NDI6XFx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTQzLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTU2Nj1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9uYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNTY4LXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NTY5OlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzAtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzYtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU3NzpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NzgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjU3OTpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01ODAtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9NTk4PXN0YXRpYyBpbnQgZGlnaXRhbF9pbl9zZW5kX2F0bihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTYwMC17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjYwMTpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjAyLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjA4LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MDk6XFx0c2tiX3B1c2goc2tiLCBzaXplb2Yoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMpKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjEwLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzo2MTE6XFx0ZGVwX3JlcSA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjEyLVxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jPTYyOT1zdGF0aWMgaW50IGRpZ2l0YWxfaW5fc2VuZF9ydG94KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjMxLXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NjMyOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVxO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02MzMtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NDYtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY0NzpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NDgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY0OTpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02NTAtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9Njg2PXN0YXRpYyB2b2lkIGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy02ODktXFx0c3RydWN0IGRpZ2l0YWxfZGF0YV9leGNoICpkYXRhX2V4Y2ggPSBhcmc7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjY5MDpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNjkxLVxcdHU4IHBmYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy03NTUtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjc1NjpcXHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6NzU3OlxcdGRlcF9yZXMgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilyZXNwLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy03NTgtXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9OTA0PWludCBkaWdpdGFsX2luX3NlbmRfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkwNy17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjkwODpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTA5LVxcdHN0cnVjdCBza19idWZmICpjaGFpbmluZ19za2IsICp0bXBfc2tiO1xcbi0tXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxMS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTEyOlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxMy1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTE0OlxcdGRlcF9yZXEgPSAoc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKilza2ItXFx1MDAzZWRhdGE7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTkxNS1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz05Nzg9c3RhdGljIGludCBkaWdpdGFsX3RnX3NlbmRfYWNrKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtOTgwLXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6OTgxOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICpkZXBfcmVzO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODItXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05ODgtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk4OTpcXHRza2JfcHVzaChza2IsIHNpemVvZihzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcykpO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05OTAtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjk5MTpcXHRkZXBfcmVzID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopc2tiLVxcdTAwM2VkYXRhO1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy05OTItXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9MTAyND1zdGF0aWMgaW50IGRpZ2l0YWxfdGdfc2VuZF9hdG4oc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAyNS17XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMjY6XFx0c3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXMgKmRlcF9yZXM7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMjctXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDMzLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMDM0OlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEwMzUtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEwMzY6XFx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTAzNy1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDc3PXN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMDgwLVxcdGludCByYztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTA4MTpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTA4Mi1cXHR1OCBwZmI7XFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTEwNy1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTEwODpcXHRzaXplID0gc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTEwOTpcXHRkZXBfcmVxID0gKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzICopcmVzcC1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTExMC1cXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMjk3PWludCBkaWdpdGFsX3RnX3NlbmRfZGVwX3JlcyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMjk4LXtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM6MTI5OTpcXHRzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqZGVwX3JlcztcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwMC1cXHRzdHJ1Y3Qgc2tfYnVmZiAqY2hhaW5pbmdfc2tiLCAqdG1wX3NrYjtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMzAyLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMzAzOlxcdHNrYl9wdXNoKHNrYiwgc2l6ZW9mKHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzKSk7XFxubmV0L25mYy9kaWdpdGFsX2RlcC5jLTEzMDQtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjEzMDU6XFx0ZGVwX3JlcyA9IChzdHJ1Y3QgZGlnaXRhbF9kZXBfcmVxX3JlcyAqKXNrYi1cXHUwMDNlZGF0YTtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtMTMwNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMjA6NDA6NDEuMDg4NzQ0OTcyWiIsIlNlcSI6MzksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjcwODQ1NzYyNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBgZGlnaXRhbF9kZXAuY2AgQ29kZSoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBuZXQvbmZjL2RpZ2l0YWxfZGVwLmNgIGZpbGUsIHNwZWNpZmljYWxseSBsaW5lcyA5NSB0aHJvdWdoIDExMC4gS25vd2luZyB0aGUgTkZDIHN0YWNrIHByZXR0eSB3ZWxsLCBJIGNhbiBsaWtlbHkgZ3Vlc3Mgd2hhdCdzIGdvaW5nIG9uIGluIHRoYXQgc2VjdGlvbi4gR2l2ZW4gdGhlIGNvbnRleHQsIEknbSBwcm9iYWJseSBsb29raW5nIGF0IHNvbWUgY29yZSBkaWdpdGFsIGRhdGEgZXhjaGFuZ2UgZnVuY3Rpb24sIHBvc3NpYmx5IGluaXRpYWxpemF0aW9uLCBlcnJvciBoYW5kbGluZywgb3IgdGhlIGRpc3BhdGNoaW5nIGxvZ2ljIGZvciB0aGUgcHJvdG9jb2wuIE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhlcmUncyBhIGdvb2QgY2hhbmNlIHRoaXMgaXMgdGhlIGhlYXJ0IG9mIHRoZSBEaWdpdGFsIERhdGEgRXhjaGFuZ2UgKERERVApIGxheWVyLiBUaGlzIHBhcnQgaXMgbGlrZWx5IGNydWNpYWwgZm9yIGRldGVybWluaW5nIGhvdyBkaWZmZXJlbnQgTkZDIHJlYWRlcnMgYW5kIGRldmljZXMgY29tbXVuaWNhdGUuIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgdGhpcyBjb2RlIGlzIGZ1bmN0aW9uaW5nIGFzIGV4cGVjdGVkIGluIGNhc2UgdGhlcmUgYXJlIGJ1Z3MgdG8gYmUgZm91bmQuIFRpbWUgdG8gZ2V0IG15IGV5ZXMgb24gaXQgYW5kIHNlZSB3aGF0IGl0J3MgZG9pbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzMDgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDo0MDo0OC4xNzMzMjM5OTFaIiwiU2VxIjo0MCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg1ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25mYy9kaWdpdGFsX2RlcC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDk1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDk1OlxcdFxcdHU4IGRpcjtcXG4gIDk2OlxcdFxcdHU4IGNtZDtcXG4gIDk3OlxcdFxcdHU4IGRpZDtcXG4gIDk4OlxcdH0gX19wYWNrZWQ7XFxuICA5OTpcXHRcXG4gMTAwOlxcdHN0cnVjdCBkaWdpdGFsX2RlcF9yZXFfcmVzIHtcXG4gMTAxOlxcdFxcdHU4IGRpcjtcXG4gMTAyOlxcdFxcdHU4IGNtZDtcXG4gMTAzOlxcdFxcdHU4IHBmYjtcXG4gMTA0OlxcdH0gX19wYWNrZWQ7XFxuIDEwNTpcXHRcXG4gMTA2OlxcdHN0YXRpYyB2b2lkIGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4gMTA3OlxcdFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3Qgc2tfYnVmZiAqcmVzcCk7XFxuIDEwODpcXHRzdGF0aWMgdm9pZCBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcShzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB2b2lkICphcmcsXFxuIDEwOTpcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IHNrX2J1ZmYgKnJlc3ApO1xcbiAxMTA6XFx0XFxuIDExMTpcXHRzdGF0aWMgY29uc3QgdTggZGlnaXRhbF9wYXlsb2FkX2JpdHNfbWFwWzRdID0ge1xcbiAxMTI6XFx0XFx0WzBdID0gNjQsXFxuIDExMzpcXHRcXHRbMV0gPSAxMjgsXFxuIDExNDpcXHRcXHRbMl0gPSAxOTIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjQwOjQ4LjE3MzQxNDE3MVoiLCJTZXEiOjQxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjo2Njk0Mjk0MzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIGEgUG90ZW50aWFsIE91dC1vZi1Cb3VuZHMgUmVhZCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gV2UndmUgZ290IGEgc3RydWN0dXJlLCBgc3RydWN0IGRpZ2l0YWxfZGVwX3JlcV9yZXNgLCB3aGljaCBpcywgYXMgZXhwZWN0ZWQsIG9mIHNpemUgMyBieXRlczogYGRpcmAsIGBjbWRgLCBhbmQgYHBmYmAuIFNpbXBsZSBlbm91Z2guIFRoZSBjb2RlIHRoZW4gdXNlcyBgc2l6ZW9mYCB0byBkZXRlcm1pbmUgdGhpcyBzaXplLlxuXG5Ob3csIGluIHRoZSBgZGlnaXRhbF90Z19yZWN2X2RlcF9yZXFgIGZ1bmN0aW9uLCB0aGVyZSdzIGFuIGluaXRpYWwgY2hlY2sgZW5zdXJpbmcgYHJlc3AtXHUwMDNlbGVuIFx1MDAzZT0gM2AuIFRoaXMgc2VlbXMgcmVhc29uYWJsZSwgZ3VhcmFudGVlaW5nIHdlIGhhdmUgYXQgbGVhc3QgdGhlIGJhc2ljIHN0cnVjdHVyZSBkYXRhLiBIb3dldmVyLCBoZXJlJ3Mgd2hlcmUgaXQgZ2V0cyBpbnRlcmVzdGluZy4gV2UgY2hlY2sgaWYgYSBzcGVjaWZpYyBiaXQgaXMgc2V0IGluIGBwZmJgIHVzaW5nIGBESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKWAuIElmIHRoYXQgYml0IGlzIGluZGVlZCBzZXQsIGl0IHRoZW4gcHJvY2VlZHMgdG8gcmVhZCBgcmVzcC1cdTAwM2VkYXRhWzNdYCB3aXRob3V0ICpmaXJzdCogdmVyaWZ5aW5nIHRoYXQgYHJlc3AtXHUwMDNlbGVuYCBpcywgYXQgbWluaW11bSwgNCEgSXQgYWxzbyBjaGVja3MgYGRkZXYtXHUwMDNlZGlkYCBidXQgbm90IHRoZSBsZW5ndGghXG5cblNwZWNpZmljYWxseSwgdGhlIGNvZGUgdGhlbiBjaGVja3MgYGRkZXYtXHUwMDNlZGlkIFx1MDAyNlx1MDAyNiAoZGRldi1cdTAwM2VkaWQgPT0gcmVzcC1cdTAwM2VkYXRhWzNdKWAuIElmIHRoaXMgY29uZGl0aW9uIGhvbGRzLCBpdCBpbmNyZW1lbnRzIHRoZSBzaXplLiBIb3dldmVyLCB3aGF0IGlmIGByZXNwLVx1MDAzZWxlbmAgaXMgcHJlY2lzZWx5IDM/IFRoZW4gYHJlc3AtXHUwMDNlZGF0YVszXWAgYmVjb21lcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQhIFRoaXMgaXMgYSBjbGFzc2ljIGJ1ZmZlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXR5LCBldmVuIGlmIGl0J3MgYSBzbWFsbCBvbmUuIFRoZSBzdWdnZXN0ZWQgcGF0Y2ggaXMgc3BvdCBvbi4gSXQgY29ycmVjdGx5IGluY2x1ZGVzIGEgbGVuZ3RoIGNoZWNrLiBJdCBub3cgY2hlY2tzIGZvcjogYHJlc3AtXHUwMDNlbGVuIFx1MDAzYyBzaXplICsgMWAgYmVmb3JlIGFjY2Vzc2luZyBgcmVzcC1cdTAwM2VkYXRhW3NpemVdYC5cblxuRmluYWxseSwgaXQncyBhbHNvIHdvcnRoIGNoZWNraW5nIGBkaWdpdGFsX2luX3JlY3ZfZGVwX3Jlc2AgdG8gc2VlIGlmIHRoZXJlJ3Mgc2ltaWxhciBsb2dpYyB0aGVyZSB0aGF0IG5lZWRzIHRvIGJlIGFkZHJlc3NlZC4gV2Ugc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCB0aGUgZml4IHRvIGVuc3VyZSB0aGUgaXNzdWUgaXMgY29tcGxldGVseSBlbGltaW5hdGVkIGZyb20gdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NzIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NDIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDo0MDo1NC44Njc3MTEzNzRaIiwiU2VxIjo0MiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0OTk4NzExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkRJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01Mi0jZGVmaW5lIERJR0lUQUxfTkZDX0RFUF9OQURfQklUX1NFVChwZmIpICgocGZiKSBcXHUwMDI2IDB4MDgpXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjUzOiNkZWZpbmUgRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikgKChwZmIpIFxcdTAwMjYgRElHSVRBTF9ORkNfREVQX1BGQl9ESURfQklUKVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy01NC0jZGVmaW5lIERJR0lUQUxfTkZDX0RFUF9QRkJfUE5JKHBmYikgICAgICgocGZiKSBcXHUwMDI2IDB4MDMpXFxuLS1cXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmM9Njg2PXN0YXRpYyB2b2lkIGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy03NjYtXFxubmV0L25mYy9kaWdpdGFsX2RlcC5jOjc2NzpcXHRpZiAoRElHSVRBTF9ORkNfREVQX0RJRF9CSVRfU0VUKHBmYikpIHtcXG5uZXQvbmZjL2RpZ2l0YWxfZGVwLmMtNzY4LVxcdFxcdFBST1RPQ09MX0VSUihcXFwiMTQuOC4yLjFcXFwiKTtcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYz0xMDc3PXN0YXRpYyB2b2lkIGRpZ2l0YWxfdGdfcmVjdl9kZXBfcmVxKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHZvaWQgKmFyZyxcXG4tLVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTE4LVxcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYzoxMTE5OlxcdGlmIChESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSkge1xcbm5ldC9uZmMvZGlnaXRhbF9kZXAuYy0xMTIwLVxcdFxcdGlmIChyZXNwLVxcdTAwM2VsZW4gXFx1MDAzYyBzaXplICsgMSB8fCAhZGRldi1cXHUwMDNlZGlkIHx8XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDIwOjQwOjU0LjkyMjcyMDQ0NVoiLCJTZXEiOjQzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjozMzg1ODU5Nzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBkZWVwIGluIG15IGRvbWFpbiBleHBlcnRpc2UgYW5kIGFuYWx5emluZyB0aGF0IGNvZGUgc25pcHBldDpcblxuKipEZWNvZGluZyBgZGlnaXRhbF9pbl9yZWN2X2RlcF9yZXNgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYGRpZ2l0YWxfaW5fcmVjdl9kZXBfcmVzYCBzaXR1YXRpb24uIExpbmVzIDc2Ni03NzUuLi4gcmlnaHQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCB3aGF0J3MgdGhlIGNvbnRleHQgaGVyZT8gSXMgdGhpcyBhIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyLCBhIHNwZWNpZmljIGRyaXZlciwgb3Igc29tZSBjb3JlIGNvbW11bmljYXRpb24gcHJvdG9jb2w/IEtub3dpbmcgdGhhdCB3aWxsIGRyYXN0aWNhbGx5IGFmZmVjdCBob3cgSSBhcHByb2FjaCB0aGlzLiBCYXNlZCBvbiB0aGUgdmFyaWFibGUgbmFtZSwgSSdtIGd1ZXNzaW5nIGl0IGRlYWxzIHdpdGggZGlnaXRhbCBpbnB1dCByZWNlcHRpb24gYW5kLCBjcnVjaWFsbHksIHNvbWUga2luZCBvZiBkZXBlbmRlbmN5IHJlc29sdXRpb24uIFwiRGVwZW5kZW5jeSByZXNvbHV0aW9uXCIgaXMgdGhlIGtleS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBkYXRhIGludGVncml0eSBjaGVjaz8gSGFyZHdhcmUgaGFuZHNoYWtlIHN5bmNocm9uaXphdGlvbj8gT3IgbWF5YmUgaW50ZXJydXB0IGhhbmRsaW5nIHN5bmNocm9uaXphdGlvbj9cblxuSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGxvZ2ljYWwgZmxvdzogd2hhdCBzaWduYWxzIG9yIGV2ZW50cyBhcmUgaW5pdGlhdGluZyB0aGlzPyBJcyBpdCBhIHJpc2luZyBlZGdlLCBhIGZhbGxpbmcgZWRnZSwgYSBzcGVjaWZpYyBiaXQgcGF0dGVybj8gV2hhdCdzIGJlaW5nICpyZXNvbHZlZCo/IElzIGl0IGEgcmVzb3VyY2UgY29udGVudGlvbiBpc3N1ZT8gQSB0aW1pbmcgcHJvYmxlbSB3aXRoIGV4dGVybmFsIGRpZ2l0YWwgaW5wdXQ/IEFyZSB3ZSBkZWFsaW5nIHdpdGggYW4gaW50ZXJydXB0IHRoYXQgbmVlZHMgdG8gYWNrbm93bGVkZ2UgYSBoYXJkd2FyZSBzaWduYWwsIGFuZCB3ZSBhcmUgbWFuYWdpbmcgdGhlIHJlcXVpcmVkIGRlcGVuZGVuY2llcz9cblxuSSdtIG1lbnRhbGx5IHN0ZXBwaW5nIHRocm91Z2ggZWFjaCBsaW5lLiBMaW5lIDc2Njogd2hhdCBzdGFydHMgaXQgYWxsPyBUaGVuIEknbGwgd29yayBmb3J3YXJkLiBEb2VzIHRoZSBjb2RlIGJyYW5jaD8gSSdtIGxvb2tpbmcgZm9yIGFueSBjb25kaXRpb25hbCBzdGF0ZW1lbnRzIOKAkyBpZnMsIHdoaWxlcywgc3dpdGNoZXMg4oCTIHRoYXQgaW1wYWN0IGV4ZWN1dGlvbiBwYXRoLCBiZWNhdXNlIHRob3NlIHdpbGwgYmUgY3JpdGljYWwgdG8gdW5kZXJzdGFuZCBwb3NzaWJsZSByYWNlIGNvbmRpdGlvbnMgb3IgdW5leHBlY3RlZCBiZWhhdmlvcnMuIEknbGwgbWVudGFsbHkgc3Vic3RpdHV0ZSB2YXJpYWJsZXMgdG8gdW5kZXJzdGFuZCBob3cgZGF0YSBpcyB1c2VkIHRvIHJlc29sdmUgdGhlIGRlcGVuZGFuY2llcy5cblxuSSdtIG1lbnRhbGx5IGJ1aWxkaW5nIHRoZSBjb250cm9sIGZsb3cuIEVycm9yIGhhbmRsaW5nIHdpbGwgYmUgY3JpdGljYWwsIHNvIEknbSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIGFueSBlcnJvciBjb2RlcyBvciBmbGFncyB0aGF0IG1pZ2h0IGJlIHNldCBvciBjaGVja2VkLiBXaGF0IGFyZSB0aGUgcG90ZW50aWFsIGZhaWx1cmUgbW9kZXM/IERvZXMgaXQgbG9nIGVycm9ycz8gVGhpcyBpcyBsaWtlbHkgYSBjcml0aWNhbCBzZWN0aW9uIG9mIHRoZSBjb2RlLCBnaXZlbiB0aGUgZGVwZW5kZW5jeSBhc3BlY3Qgb2YgaXQsIHNvIHJhY2UgY29uZGl0aW9ucyBhcmUgb24gbXkgbWluZC4gQW55IHBvc3NpYmlsaXR5IG9mIGEgbXV0ZXggb3IgaW50ZXJydXB0IGRpc2FibGUgd2l0aGluIHRoaXMgc2VjdGlvbiBvZiBjb2RlP1xuXG5JbiBhIGdvb2QgZGVzaWduLCB0aGlzIHJlc29sdXRpb24gc3RlcCBzaG91bGQgYmUgYXRvbWljIG9yIGhpZ2hseSB0aW1lLXNlbnNpdGl2ZSB0byBwcmV2ZW50IGNvcnJ1cHRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgxNjYsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDo0MDo1OC4zMDg1ODMzMjlaIiwiU2VxIjo0NCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODk2MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25mYy9kaWdpdGFsX2RlcC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDc2NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDc2NTpcXHRcXHRwZmIgPSBkZXBfcmVzLVxcdTAwM2VwZmI7XFxuIDc2NjpcXHRcXG4gNzY3OlxcdFxcdGlmIChESUdJVEFMX05GQ19ERVBfRElEX0JJVF9TRVQocGZiKSkge1xcbiA3Njg6XFx0XFx0XFx0UFJPVE9DT0xfRVJSKFxcXCIxNC44LjIuMVxcXCIpO1xcbiA3Njk6XFx0XFx0XFx0cmMgPSAtRUlPO1xcbiA3NzA6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4gNzcxOlxcdFxcdH1cXG4gNzcyOlxcdFxcbiA3NzM6XFx0XFx0aWYgKERJR0lUQUxfTkZDX0RFUF9OQURfQklUX1NFVChwZmIpKSB7XFxuIDc3NDpcXHRcXHRcXHRyYyA9IC1FSU87XFxuIDc3NTpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuIDc3NjpcXHRcXHR9XFxuIDc3NzpcXHRcXG4gNzc4OlxcdFxcdGlmIChzaXplIFxcdTAwM2UgcmVzcC1cXHUwMDNlbGVuKSB7XFxuIDc3OTpcXHRcXHRcXHRyYyA9IC1FSU87XFxuIDc4MDpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbiA3ODE6XFx0XFx0fVxcbiA3ODI6XFx0XFxuIDc4MzpcXHRcXHRza2JfcHVsbChyZXNwLCBzaXplKTtcXG4gNzg0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDo0MDo1OC4zMDg2NzQzMDlaIiwiU2VxIjo0NSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTEyMjE5MDg3MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS01TQU4gQXNzZXNzbWVudDogRGlnaXRhbCBORkMgREVQIFJlcXVlc3QgSGFuZGxpbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEluIGBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcWAsIHRoZSBjb3JlIGlzc3VlIHdhcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQuIFByZXZpb3VzbHksIHRoZSBjb2RlIGFjY2Vzc2VkIGByZXNwLVx1MDAzZWRhdGFbM11gIHdpdGhvdXQgdmVyaWZ5aW5nIGlmIGByZXNwLVx1MDAzZWxlbmAgd2FzIGxvbmcgZW5vdWdoLiBJZiBgcmVzcC1cdTAwM2VsZW5gIHdhcyAzLCB3ZSBoYWQgYSBjbGFzc2ljIG91dC1vZi1ib3VuZHMgcmVhZCBzY2VuYXJpby4gVGhlIHBhdGNoIGFkZHMgYSBjcnVjaWFsIGJvdW5kcyBjaGVjazogYGlmIChyZXNwLVx1MDAzZWxlbiBcdTAwM2Mgc2l6ZSArIDEgLi4uKWAgYmVmb3JlIGFjY2Vzc2luZyB0aGUgYHJlc3AtXHUwMDNlZGF0YWAgYnVmZmVyLiAgYHNpemVgIGlzIHRoZW4gaW5jcmVtZW50ZWQsIGFuZCB0aGVyZSdzIGEgZmluYWwgY2hlY2sgYGlmIChzaXplIFx1MDAzZSByZXNwLVx1MDAzZWxlbilgIGxhdGVyLiBUaGlzIGVuc3VyZXMgYWxsIGFjY2Vzc2VzIHN0YXkgd2l0aGluIHRoZSBhbGxvY2F0ZWQgYHJlc3AtXHUwMDNlZGF0YWAgYm91bmRhcmllcy5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uOiBkb2VzIHRoaXMgd2FycmFudCBhIEtNU0FOIHJ1bj8gVGhlIGFuc3dlciBpcyBhIGNsZWFyIFwibm9cIi4gTGV0J3MgcnVuIHRocm91Z2ggdGhlIGNoZWNrbGlzdDpcblxuKiAgICoqTm8gdXNlci1zcGFjZSBpbmZvcm1hdGlvbiBsZWFrczoqKiBObyBgY29weV90b191c2VyYCwgYHB1dF91c2VyYCwgbmV0bGluayBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycyBhcmUgaW52b2x2ZWQgd2hlcmUgcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBtZW1vcnkgY291bGQgYmUgZXhwb3NlZCB0byB0aGUgdXNlci5cbiogICAqKk5vIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIG9yIGJyYW5jaGluZzoqKiBBbGwgdmFyaWFibGVzIHVzZWQgaW4gY29uZGl0aW9uYWwgbG9naWMgKGByZXNwLVx1MDAzZWxlbmAsIGBzaXplYCwgYGRkZXYtXHUwMDNlZGlkYCwgYHJlc3AtXHUwMDNlZGF0YVtzaXplXWApIGFyZSBlaXRoZXIgaW5pdGlhbGl6ZWQgb3IgZGVyaXZlZCBmcm9tIGluaXRpYWxpemVkIHZhbHVlcy4gVGhlIGNvZGUgKmZpeGVzKiBhIGJvdW5kcyBpc3N1ZSByYXRoZXIgdGhhbiBpbnRyb2R1Y2luZyBhIG5ldyBvbmUuXG4qICAgKipObyBuZXcgYWxsb2NhdGlvbnMgb3IgaW5pdGlhbGl6YXRpb24gcmlza3M6KiogVGhlIHBhdGNoIGRvZXNuJ3QgYWRkIGFueSBuZXcgYWxsb2NhdGlvbnMgb3IgY2hhbmdlIGV4aXN0aW5nIG9uZXMgaW4gYSB3YXkgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LlxuKiAgICoqVGhlIHBhdGNoICpzdHJlbmd0aGVucyogYm91bmRzIGNoZWNrczoqKiBJdCAqYWRkcyogYSBjaGVjazogYHJlc3AtXHUwMDNlbGVuIFx1MDAzYyBzaXplICsgMWAsIGFuZCB1c2VzIGBzaXplYCBpbnN0ZWFkIG9mIGhhcmRjb2RlZCBgM2AsIGVuc3VyaW5nIGFsbCBhY2Nlc3NlcyBhcmUgd2l0aGluIHRoZSBib3VuZHMgb2YgYHJlc3BgLiBUaGUgaW5pdGlhbCBjaGVjayB3YXMgbWlzc2luZywgbWVhbmluZyB0aGF0IHdhcyB0aGUgdnVsbmVyYWJpbGl0eS5cblxuV2UgbmVlZCB0byBiZSBjcnlzdGFsIGNsZWFyIG9uIHRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIEtBU0FOIGFuZCBLTVNBTi4gIEtBU0FOIGlzIGRlc2lnbmVkIHRvIGNhdGNoIG91dC1vZi1ib3VuZHMgcmVhZHMgYW5kIHdyaXRlcywgd2hpY2ggaXMgKmV4YWN0bHkqIHRoZSB0eXBlIG9mIGJ1ZyB0aGlzIHBhdGNoIGFkZHJlc3Nlcy4gV2UncmUgZGVhbGluZyB3aXRoIHNrYiBkYXRhIChyZWNlaXZlZCBmcm9tIGEgZGV2aWNlIG9yIHNvY2tldCkuIFRoaXMgZGF0YSBpcyBpbml0aWFsaXplZCB3aXRoIHRoZSByZWNlaXZlZCBwYWNrZXQuIEFueSBhdHRlbXB0IHRvIHJlYWQgYmV5b25kIHRoZSBib3VuZGFyaWVzIG9mIHRoaXMgZGF0YSBpcyBhbiBvdXQtb2YtYm91bmRzIGFjY2Vzcywgd2hpY2ggS0FTQU4gaXMgYnVpbHQgdG8gZGV0ZWN0LiBLTVNBTiwgb24gdGhlIG90aGVyIGhhbmQsIGRlYWxzIHdpdGggdXNlcyBvZiAqdW5pbml0aWFsaXplZCogbWVtb3J5LlxuXG5UaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrcyBvZiB1c2luZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlcmUncyBubyB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhlIHBhdGNoIGFkZHMgYSBib3VuZHMgY2hlY2ssIHdoaWNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzLiBUaGUgZW50aXJlIHByb2JsZW0gaXMgdGhhdCBgcmVzcC1cdTAwM2VkYXRhYCBtYXkgYmUgYWNjZXNzZWQgb3V0LW9mLWJvdW5kcy4gVGhlIHBhdGNoIGVuZm9yY2VzIGEgY2hlY2sgdG8ga2VlcCBpdCBpbi1ib3VuZHMuXG5cblRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IHNheXMgdG8gYXZvaWQgS01TQU4gaWYgdGhlIGlzc3VlIGlzIGNhdWdodCBieSBLQVNBTiwgYW5kIHRoaXMgaXMgZGVmaW5pdGl2ZWx5IGEgS0FTQU4gYnVnLiBUaGlzIGlzc3VlIGlzIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBhbmQgaXMgKm5vdCogYW4gdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWUuIFRoZSBwYXRjaCBhZGRyZXNzZXMgYW5kIHByZXZlbnRzIGFuIG91dC1vZi1ib3VuZHMgcmVhZC4gIEtNU0FOIGlzIG5vdCBuZWVkZWQgaGVyZS4gVGhlIHJlYXNvbmluZyBpcyBjbGVhciwgZGV0YWlsZWQsIGFjY3VyYXRlLCBhbmQgaGlnaGxpZ2h0cyB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBLQVNBTiBhbmQgS01TQU4uIFRoZSBhbnN3ZXIgaXMgTmVlZHNLTVNBTiA9IGZhbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTM2LCJPdXRwdXRUb2tlbnMiOjIwNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyODUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QyMDo0MTowOS41MzA1ODYwNjFaIiwiU2VxIjo0NiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTI4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWlzc2luZyBib3VuZHMgY2hlY2sgaW4gbmV0L25mYy9kaWdpdGFsX2RlcC5jIHdpdGhpbiBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSgpLiBQcmV2aW91c2x5LCB3aGVuIERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpIHdhcyB0cnVlLCByZXNwLVxcdTAwM2VkYXRhWzNdIHdhcyBhY2Nlc3NlZCB3aXRob3V0IGNoZWNraW5nIGlmIHJlc3AtXFx1MDAzZWxlbiB3YXMgYXQgbGVhc3QgNCBieXRlcyAoc2l6ZSArIDEpLCBwb3RlbnRpYWxseSByZXN1bHRpbmcgaW4gYW4gb3V0LW9mLWJvdW5kcyByZWFkIG9uIHRoZSByZWNlaXZlZCBza2IgYnVmZmVyLiBUaGUgcGF0Y2ggYWRkcyBgcmVzcC1cXHUwMDNlbGVuIFxcdTAwM2Mgc2l6ZSArIDFgIHRvIHByZXZlbnQgdGhpcyBvdXQtb2YtYm91bmRzIHJlYWQuXFxuXFxuVGhpcyBpcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSwgd2hpY2ggaXMgZGV0ZWN0YWJsZSBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBtYW5pcHVsYXRlIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnksIGRvZXMgbm90IGNvcHkga2VybmVsIGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIGZpZWxkcy4gVGh1cywgS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWlzc2luZyBib3VuZHMgY2hlY2sgaW4gbmV0L25mYy9kaWdpdGFsX2RlcC5jIHdpdGhpbiBkaWdpdGFsX3RnX3JlY3ZfZGVwX3JlcSgpLiBQcmV2aW91c2x5LCB3aGVuIERJR0lUQUxfTkZDX0RFUF9ESURfQklUX1NFVChwZmIpIHdhcyB0cnVlLCByZXNwLVxcdTAwM2VkYXRhWzNdIHdhcyBhY2Nlc3NlZCB3aXRob3V0IGNoZWNraW5nIGlmIHJlc3AtXFx1MDAzZWxlbiB3YXMgYXQgbGVhc3QgNCBieXRlcyAoc2l6ZSArIDEpLCBwb3RlbnRpYWxseSByZXN1bHRpbmcgaW4gYW4gb3V0LW9mLWJvdW5kcyByZWFkIG9uIHRoZSByZWNlaXZlZCBza2IgYnVmZmVyLiBUaGUgcGF0Y2ggYWRkcyBgcmVzcC1cXHUwMDNlbGVuIFxcdTAwM2Mgc2l6ZSArIDFgIHRvIHByZXZlbnQgdGhpcyBvdXQtb2YtYm91bmRzIHJlYWQuXFxuXFxuVGhpcyBpcyBhbiBvdXQtb2YtYm91bmRzIHJlYWQgdnVsbmVyYWJpbGl0eSwgd2hpY2ggaXMgZGV0ZWN0YWJsZSBieSBLQVNBTi4gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBvciBtYW5pcHVsYXRlIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnksIGRvZXMgbm90IGNvcHkga2VybmVsIGRhdGEgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBiYXNlZCBvbiB1bmluaXRpYWxpemVkIGZpZWxkcy4gVGh1cywgS01TQU4gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowznmqb[1] Phase: Succeeded StartedAt: 2026-09-13 20:41:21 +0000 UTC FinishedAt: 2026-09-13 20:41:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznmqb[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-13 20:41:21 +0000 UTC FinishedAt: 2026-09-13 20:41:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznmqb[2] Phase: Running StartedAt: 2026-09-13 20:41:21 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Running StartedAt: 2026-09-13 20:41:21 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-13 20:41:21 +0000 UTC FinishedAt: 2026-09-13 20:41:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-13 20:41:21 +0000 UTC FinishedAt: 2026-09-13 20:41:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowznmqb/series-workflowznmqb-convert-artifact-2977191629/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-13 20:41:34 +0000 UTC FinishedAt: 2026-09-13 20:58:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-13 20:41:34 +0000 UTC FinishedAt: 2026-09-13 20:58:14 +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:*8eb65d59-ed31-4e63-9d3c-b7a957fd0646,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-workflowznmqb/series-workflowznmqb-convert-artifact-2977191629/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": "5827035b-b4b0-4eea-b57e-47040e553773", "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-workflowznmqb/series-workflowznmqb-build-action-862492483/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-13 20:41:34 +0000 UTC FinishedAt: 2026-09-13 20:58:04 +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:*8eb65d59-ed31-4e63-9d3c-b7a957fd0646,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-workflowznmqb/series-workflowznmqb-convert-artifact-2977191629/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": "5827035b-b4b0-4eea-b57e-47040e553773", "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-workflowznmqb/series-workflowznmqb-build-action-862492483/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-13 20:58:14 +0000 UTC FinishedAt: 2026-09-13 20:58:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-13 20:58:14 +0000 UTC FinishedAt: 2026-09-13 20:58:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-13 20:58:14 +0000 UTC FinishedAt: 2026-09-13 20:58:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-13 20:58:14 +0000 UTC FinishedAt: 2026-09-13 20:58:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowznmqb/series-workflowznmqb-convert-artifact-880489768/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-13 20:58:24 +0000 UTC FinishedAt: 2026-09-13 21:00:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-13 20:58:24 +0000 UTC FinishedAt: 2026-09-13 21:00:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5827035b-b4b0-4eea-b57e-47040e553773,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-workflowznmqb/series-workflowznmqb-build-action-862492483/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-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-13 21:00:35 +0000 UTC FinishedAt: 2026-09-13 21:00:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-13 21:00:35 +0000 UTC FinishedAt: 2026-09-13 21:00:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-13 21:00:35 +0000 UTC FinishedAt: 2026-09-13 21:17:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-13 21:00:35 +0000 UTC FinishedAt: 2026-09-13 21:17:08 +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:*8eb65d59-ed31-4e63-9d3c-b7a957fd0646,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-workflowznmqb/series-workflowznmqb-convert-artifact-880489768/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": "c0bca29f-f015-47d3-9cc3-1aa65cacb3b6", "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-workflowznmqb/series-workflowznmqb-build-action-3821286100/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-13 21:00:35 +0000 UTC FinishedAt: 2026-09-13 21:16:58 +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:*8eb65d59-ed31-4e63-9d3c-b7a957fd0646,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-workflowznmqb/series-workflowznmqb-convert-artifact-880489768/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": "c0bca29f-f015-47d3-9cc3-1aa65cacb3b6", "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-workflowznmqb/series-workflowznmqb-build-action-3821286100/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-13 21:17:08 +0000 UTC FinishedAt: 2026-09-13 21:17:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-13 21:17:08 +0000 UTC FinishedAt: 2026-09-13 21:17:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-13 21:17:08 +0000 UTC FinishedAt: 2026-09-13 21:19:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-13 21:17:08 +0000 UTC FinishedAt: 2026-09-13 21:19:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c0bca29f-f015-47d3-9cc3-1aa65cacb3b6,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-workflowznmqb/series-workflowznmqb-build-action-3821286100/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-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Running StartedAt: 2026-09-13 21:19:30 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Running StartedAt: 2026-09-13 21:19:30 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"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:*5827035b-b4b0-4eea-b57e-47040e553773,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c0bca29f-f015-47d3-9cc3-1aa65cacb3b6,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-workflowznmqb/series-workflowznmqb-build-action-862492483/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-workflowznmqb/series-workflowznmqb-build-action-3821286100/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-13 21:19:30 +0000 UTC FinishedAt: 2026-09-13 21:19:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-13 21:19:30 +0000 UTC FinishedAt: 2026-09-13 21:19:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"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-workflowznmqb/series-workflowznmqb-convert-artifact-4241527137/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-13 21:19:30 +0000 UTC FinishedAt: 2026-09-13 21:19:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-13 21:19:30 +0000 UTC FinishedAt: 2026-09-13 21:19:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-13 21:19:30 +0000 UTC FinishedAt: 2026-09-13 21:19:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Running StartedAt: 2026-09-13 21:19:40 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowznmqb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"base_commit":"df2908090cda368b01ff43709f51890076c56157","base_tree":"axboe","bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["digital_tg_recv_dep_req","digital_tg_send_dep_res"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"df2908090cda368b01ff43709f51890076c56157","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL"],"series_id":"0bafa68c-9c65-471f-8aa7-7445c6dde10d","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Running StartedAt: 2026-09-13 21:19:40 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*5827035b-b4b0-4eea-b57e-47040e553773,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c0bca29f-f015-47d3-9cc3-1aa65cacb3b6,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-workflowznmqb/series-workflowznmqb-build-action-862492483/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-workflowznmqb/series-workflowznmqb-build-action-3821286100/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-workflowznmqb/series-workflowznmqb-convert-artifact-4241527137/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil