Name: series-workflowdcljp Phase: Succeeded StartedAt: 2026-06-27 07:46:58 +0000 UTC FinishedAt: 2026-06-27 11:50:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdcljp[0] Phase: Succeeded StartedAt: 2026-06-27 07:46:58 +0000 UTC FinishedAt: 2026-06-27 07:53:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdcljp[0].run-triage Phase: Succeeded StartedAt: 2026-06-27 07:46:58 +0000 UTC FinishedAt: 2026-06-27 07:53:17 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "840ef6c78e6a2f694b578ecb9063241c992aaa9e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMORY_HOTPLUG", "MEMORY_HOTREMOVE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "840ef6c78e6a2f694b578ecb9063241c992aaa9e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMORY_HOTPLUG", "MEMORY_HOTREMOVE" ], "series_id": "a34e8989-3cf6-440e-8e69-95a31744e718" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "try_offline_node", "sync_vm_stats", "vmstat_fold_work" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RSRU1PVkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0cnlfb2ZmbGluZV9ub2RlJiMzNDssCiAgICAmIzM0O3N5bmNfdm1fc3RhdHMmIzM0OywKICAgICYjMzQ7dm1zdGF0X2ZvbGRfd29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2FsbCB0byBzeW5jX3ZtX3N0YXRzKCkgaW4gdHJ5X29mZmxpbmVfbm9kZSgpIHRvIGZvbGQgcGVuZGluZyBwZXItY3B1IHZtc3RhdCBkaWZmcyBpbnRvIGdsb2JhbCBjb3VudGVycyBiZWZvcmUgYSBOVU1BIG5vZGUgaXMgb2ZmbGluZWQuIFRoaXMgcHJldmVudHMgdGhlIHBlcmlvZGljIHZtc3RhdCBmb2xkIGZyb20gc2tpcHBpbmcgdGhlIG9mZmxpbmVkIG5vZGUgYW5kIG9ycGhhbmluZyB0aGUgcmVzaWR1YWwgc3RhdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgaG90cGx1ZyBhbmQgdm1zdGF0IGxvZ2ljLCBhbmQgaXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzeXNmcyBtZW1vcnkgaG90cGx1ZyBpbnRlcmZhY2VzLiBGdXp6aW5nIHRoaXMgY291bGQgdW5jb3ZlciByYWNlIGNvbmRpdGlvbnMgb3Igc2NoZWR1bGluZyBpc3N1ZXMgZHVyaW5nIG5vZGUgb2ZmbGluaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjUyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjhhY2Y4NDgxNmFmYjYxNWIwOGQ5NTRmYjU4NjBmZGY0ZDZhOWU5M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVuIDI3IDA3OjUyOjAzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdm1zdGF0LmggYi9pbmNsdWRlL2xpbnV4L3Ztc3RhdC5oXG5pbmRleCAzYzljMjY2Y2Y3ODJhZC4uZWExMDE3NDI3ODExMWUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3Ztc3RhdC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3Ztc3RhdC5oXG5AQCAtMjkzLDYgJiM0MzsyOTMsNyBAQCBleHRlcm4gdm9pZCBfX2RlY19ub2RlX3N0YXRlKHN0cnVjdCBwZ2xpc3RfZGF0YSAqLCBlbnVtIG5vZGVfc3RhdF9pdGVtKTtcbiBcbiB2b2lkIHF1aWV0X3Ztc3RhdCh2b2lkKTtcbiB2b2lkIGNwdV92bV9zdGF0c19mb2xkKGludCBjcHUpO1xuJiM0Mzt2b2lkIHN5bmNfdm1fc3RhdHModm9pZCk7XG4gdm9pZCByZWZyZXNoX3pvbmVfc3RhdF90aHJlc2hvbGRzKHZvaWQpO1xuIFxuIHZvaWQgZHJhaW5fem9uZXN0YXQoc3RydWN0IHpvbmUgKnpvbmUsIHN0cnVjdCBwZXJfY3B1X3pvbmVzdGF0ICopO1xuQEAgLTM5Nyw2ICYjNDM7Mzk4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIF9fZGVjX25vZGVfcGFnZV9zdGF0ZShzdHJ1Y3QgcGFnZSAqcGFnZSxcbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgcmVmcmVzaF96b25lX3N0YXRfdGhyZXNob2xkcyh2b2lkKSB7IH1cbiBzdGF0aWMgaW5saW5lIHZvaWQgY3B1X3ZtX3N0YXRzX2ZvbGQoaW50IGNwdSkgeyB9XG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBzeW5jX3ZtX3N0YXRzKHZvaWQpIHsgfVxuIHN0YXRpYyBpbmxpbmUgdm9pZCBxdWlldF92bXN0YXQodm9pZCkgeyB9XG4gc3RhdGljIGlubGluZSB2b2lkIHZtc3RhdF9mbHVzaF93b3JrcXVldWUodm9pZCkgeyB9XG4gXG5kaWZmIC0tZ2l0IGEvbW0vbWVtb3J5X2hvdHBsdWcuYyBiL21tL21lbW9yeV9ob3RwbHVnLmNcbmluZGV4IDdhYzE5ZmFiMjI2MzI0Li5kYWI0ODMxNjY3NDM5ZiAxMDA2NDRcbi0tLSBhL21tL21lbW9yeV9ob3RwbHVnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL21lbW9yeV9ob3RwbHVnLmNcbkBAIC0yMjA4LDggJiM0MzsyMjA4LDExIEBAIHZvaWQgdHJ5X29mZmxpbmVfbm9kZShpbnQgbmlkKVxuIFxuIFx0LypcbiBcdCAqIGFsbCBtZW1vcnkvY3B1IG9mIHRoaXMgbm9kZSBhcmUgcmVtb3ZlZCwgd2UgY2FuIG9mZmxpbmUgdGhpc1xuLVx0ICogbm9kZSBub3cuXG4mIzQzO1x0ICogbm9kZSBub3cuICBGb2xkIGFueSBwZW5kaW5nIHBlci1jcHUgdm1zdGF0IGRpZmZzIGludG8gdGhlIGdsb2JhbFxuJiM0MztcdCAqIGNvdW50ZXJzIGZpcnN0OiBvbmNlIHRoZSBub2RlIGxlYXZlcyB0aGUgb25saW5lIHNldCB0aGUgcGVyaW9kaWNcbiYjNDM7XHQgKiBmb2xkIHNraXBzIGl0LCBvcnBoYW5pbmcgdGhlIHJlc2lkdWFsIG9uIGEgbGF0ZXIgb25saW5lLlxuIFx0ICovXG4mIzQzO1x0c3luY192bV9zdGF0cygpO1xuIFx0bm9kZV9zZXRfb2ZmbGluZShuaWQpO1xuIFx0dW5yZWdpc3Rlcl9ub2RlKG5pZCk7XG4gfVxuZGlmZiAtLWdpdCBhL21tL3Ztc3RhdC5jIGIvbW0vdm1zdGF0LmNcbmluZGV4IGY1MzQ5NzJmNTE3ZGUwLi5hZDc3MzQzMjEyZDM3OCAxMDA2NDRcbi0tLSBhL21tL3Ztc3RhdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS92bXN0YXQuY1xuQEAgLTk0MSw2ICYjNDM7OTQxLDE2IEBAIHZvaWQgY3B1X3ZtX3N0YXRzX2ZvbGQoaW50IGNwdSlcbiBcdGZvbGRfZGlmZihnbG9iYWxfem9uZV9kaWZmLCBnbG9iYWxfbm9kZV9kaWZmKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIHZtc3RhdF9mb2xkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxuJiM0Mzt7XG4mIzQzO1x0cmVmcmVzaF9jcHVfdm1fc3RhdHMoZmFsc2UpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzt2b2lkIHN5bmNfdm1fc3RhdHModm9pZClcbiYjNDM7e1xuJiM0MztcdHNjaGVkdWxlX29uX2VhY2hfY3B1KHZtc3RhdF9mb2xkX3dvcmspO1xuJiM0Mzt9XG4mIzQzO1xuIC8qXG4gICogdGhpcyBpcyBvbmx5IGNhbGxlZCBpZiAhcG9wdWxhdGVkX3pvbmUoem9uZSksIHdoaWNoIGltcGxpZXMgbm8gb3RoZXIgdXNlcnMgb2ZcbiAgKiBwc2V0LVx1MDAzZXZtX3N0YXRfZGlmZltdIGV4aXN0LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjUyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RSRU1PVkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0cnlfb2ZmbGluZV9ub2RlJiMzNDssCiAgICAmIzM0O3N5bmNfdm1fc3RhdHMmIzM0OywKICAgICYjMzQ7dm1zdGF0X2ZvbGRfd29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2FsbCB0byBzeW5jX3ZtX3N0YXRzKCkgaW4gdHJ5X29mZmxpbmVfbm9kZSgpIHRvIGZvbGQgcGVuZGluZyBwZXItY3B1IHZtc3RhdCBkaWZmcyBpbnRvIGdsb2JhbCBjb3VudGVycyBiZWZvcmUgYSBOVU1BIG5vZGUgaXMgb2ZmbGluZWQuIFRoaXMgcHJldmVudHMgdGhlIHBlcmlvZGljIHZtc3RhdCBmb2xkIGZyb20gc2tpcHBpbmcgdGhlIG9mZmxpbmVkIG5vZGUgYW5kIG9ycGhhbmluZyB0aGUgcmVzaWR1YWwgc3RhdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgaG90cGx1ZyBhbmQgdm1zdGF0IGxvZ2ljLCBhbmQgaXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzeXNmcyBtZW1vcnkgaG90cGx1ZyBpbnRlcmZhY2VzLiBGdXp6aW5nIHRoaXMgY291bGQgdW5jb3ZlciByYWNlIGNvbmRpdGlvbnMgb3Igc2NoZWR1bGluZyBpc3N1ZXMgZHVyaW5nIG5vZGUgb2ZmbGluaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2OGFjZjg0ODE2YWZiNjE1YjA4ZDk1NGZiNTg2MGZkZjRkNmE5ZTkzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdW4gMjcgMDc6NTI6MDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3Ztc3RhdC5oIGIvaW5jbHVkZS9saW51eC92bXN0YXQuaAppbmRleCAzYzljMjY2Y2Y3ODJhZC4uZWExMDE3NDI3ODExMWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdm1zdGF0LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC92bXN0YXQuaApAQCAtMjkzLDYgJiM0MzsyOTMsNyBAQCBleHRlcm4gdm9pZCBfX2RlY19ub2RlX3N0YXRlKHN0cnVjdCBwZ2xpc3RfZGF0YSAqLCBlbnVtIG5vZGVfc3RhdF9pdGVtKTsKIAogdm9pZCBxdWlldF92bXN0YXQodm9pZCk7CiB2b2lkIGNwdV92bV9zdGF0c19mb2xkKGludCBjcHUpOwomIzQzO3ZvaWQgc3luY192bV9zdGF0cyh2b2lkKTsKIHZvaWQgcmVmcmVzaF96b25lX3N0YXRfdGhyZXNob2xkcyh2b2lkKTsKIAogdm9pZCBkcmFpbl96b25lc3RhdChzdHJ1Y3Qgem9uZSAqem9uZSwgc3RydWN0IHBlcl9jcHVfem9uZXN0YXQgKik7CkBAIC0zOTcsNiAmIzQzOzM5OCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX2RlY19ub2RlX3BhZ2Vfc3RhdGUoc3RydWN0IHBhZ2UgKnBhZ2UsCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCByZWZyZXNoX3pvbmVfc3RhdF90aHJlc2hvbGRzKHZvaWQpIHsgfQogc3RhdGljIGlubGluZSB2b2lkIGNwdV92bV9zdGF0c19mb2xkKGludCBjcHUpIHsgfQomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBzeW5jX3ZtX3N0YXRzKHZvaWQpIHsgfQogc3RhdGljIGlubGluZSB2b2lkIHF1aWV0X3Ztc3RhdCh2b2lkKSB7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCB2bXN0YXRfZmx1c2hfd29ya3F1ZXVlKHZvaWQpIHsgfQogCmRpZmYgLS1naXQgYS9tbS9tZW1vcnlfaG90cGx1Zy5jIGIvbW0vbWVtb3J5X2hvdHBsdWcuYwppbmRleCA3YWMxOWZhYjIyNjMyNC4uZGFiNDgzMTY2NzQzOWYgMTAwNjQ0Ci0tLSBhL21tL21lbW9yeV9ob3RwbHVnLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtb3J5X2hvdHBsdWcuYwpAQCAtMjIwOCw4ICYjNDM7MjIwOCwxMSBAQCB2b2lkIHRyeV9vZmZsaW5lX25vZGUoaW50IG5pZCkKIAogCS8qCiAJICogYWxsIG1lbW9yeS9jcHUgb2YgdGhpcyBub2RlIGFyZSByZW1vdmVkLCB3ZSBjYW4gb2ZmbGluZSB0aGlzCi0JICogbm9kZSBub3cuCiYjNDM7CSAqIG5vZGUgbm93LiAgRm9sZCBhbnkgcGVuZGluZyBwZXItY3B1IHZtc3RhdCBkaWZmcyBpbnRvIHRoZSBnbG9iYWwKJiM0MzsJICogY291bnRlcnMgZmlyc3Q6IG9uY2UgdGhlIG5vZGUgbGVhdmVzIHRoZSBvbmxpbmUgc2V0IHRoZSBwZXJpb2RpYwomIzQzOwkgKiBmb2xkIHNraXBzIGl0LCBvcnBoYW5pbmcgdGhlIHJlc2lkdWFsIG9uIGEgbGF0ZXIgb25saW5lLgogCSAqLwomIzQzOwlzeW5jX3ZtX3N0YXRzKCk7CiAJbm9kZV9zZXRfb2ZmbGluZShuaWQpOwogCXVucmVnaXN0ZXJfbm9kZShuaWQpOwogfQpkaWZmIC0tZ2l0IGEvbW0vdm1zdGF0LmMgYi9tbS92bXN0YXQuYwppbmRleCBmNTM0OTcyZjUxN2RlMC4uYWQ3NzM0MzIxMmQzNzggMTAwNjQ0Ci0tLSBhL21tL3Ztc3RhdC5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL3Ztc3RhdC5jCkBAIC05NDEsNiAmIzQzOzk0MSwxNiBAQCB2b2lkIGNwdV92bV9zdGF0c19mb2xkKGludCBjcHUpCiAJZm9sZF9kaWZmKGdsb2JhbF96b25lX2RpZmYsIGdsb2JhbF9ub2RlX2RpZmYpOwogfQogCiYjNDM7c3RhdGljIHZvaWQgdm1zdGF0X2ZvbGRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpCiYjNDM7ewomIzQzOwlyZWZyZXNoX2NwdV92bV9zdGF0cyhmYWxzZSk7CiYjNDM7fQomIzQzOwomIzQzO3ZvaWQgc3luY192bV9zdGF0cyh2b2lkKQomIzQzO3sKJiM0MzsJc2NoZWR1bGVfb25fZWFjaF9jcHUodm1zdGF0X2ZvbGRfd29yayk7CiYjNDM7fQomIzQzOwogLyoKICAqIHRoaXMgaXMgb25seSBjYWxsZWQgaWYgIXBvcHVsYXRlZF96b25lKHpvbmUpLCB3aGljaCBpbXBsaWVzIG5vIG90aGVyIHVzZXJzIG9mCiAgKiBwc2V0LSZndDt2bV9zdGF0X2RpZmZbXSBleGlzdC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDc6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM5NwoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDI0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBNZW1vcnkgSG90cGx1ZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQmIzM5O3MgdG91Y2hpbmcgYG1tL21lbW9yeV9ob3RwbHVnLmNgIGFuZCBgbW0vdm1zdGF0LmNgLiBSaWdodCwgaW4gYG1tL21lbW9yeV9ob3RwbHVnLmNgLCBJIHNlZSBgdHJ5X29mZmxpbmVfbm9kZWAgY2FsbHMgYHN5bmNfdm1fc3RhdHMoKWAuIEFuZCB0aGVuLCBmbGlwcGluZyBvdmVyIHRvIGBtbS92bXN0YXQuY2AsIGBzeW5jX3ZtX3N0YXRzKClgIGlzIGltcGxlbWVudGVkIHdpdGggdGhhdCBgc2NoZWR1bGVfb25fZWFjaF9jcHUodm1zdGF0X2ZvbGRfd29yaylgIGNhbGwsIHdoaWNoIHRoZW4gZ29lcyB0byBgcmVmcmVzaF9jcHVfdm1fc3RhdHMoZmFsc2UpYC4KClRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBtZW1vcnkgaG90cGx1ZyBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgd2hlbiBvZmZsaW5pbmcgYSBOVU1BIG5vZGUuIFRoZSBxdWVzdGlvbiBub3cgYmVjb21lczogaXMgdGhpcyBwYXRjaCBmdXp6YWJsZT8gTWVtb3J5IGhvdHBsdWcgaXMgYSBjcml0aWNhbCBmZWF0dXJlLCBvYnZpb3VzbHksIGJ1dCBpdCYjMzk7cyB0eXBpY2FsbHkgdHJpZ2dlcmVkIGJ5IHN5c2ZzIGludGVyYWN0aW9ucyBvciBzcGVjaWZpYyBoYXJkd2FyZSBldmVudHMsIHJpZ2h0PyBDYW4gSSB0cmlnZ2VyIHRoaXMgZnJvbSB1c2Vyc3BhY2U/IFllcywgZGVmaW5pdGVseS4gSSBjYW4gdXNlIHN5c2ZzLCBzb21ldGhpbmcgbGlrZSBgL3N5cy9kZXZpY2VzL3N5c3RlbS9ub2RlL25vZGVYL29ubGluZWAgb3IgZXZlbiBtZW1vcnkgYmxvY2tzLgoKQW5kLCBjYW4gdGhpcyBldmVuIGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSSB0aGluayBpdCBpcywgbWVtb3J5IGhvdHBsdWcgaXMgc3VwcG9ydGVkIGluIFFFTVUsIHNvIHRoYXQgc2hvdWxkbiYjMzk7dCBiZSBhIHByb2JsZW0uCgpMZXQgbWUganVzdCBjaGVjayBgdHJ5X29mZmxpbmVfbm9kZWAgaW4gYG1tL21lbW9yeV9ob3RwbHVnLmNgIGFnYWluLi4uIGdvdHRhIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0cnlfb2ZmbGluZV9ub2RlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYWNwaS9hY3BpX3Byb2Nlc3Nvci5jPTQ3Nj1zdGF0aWMgdm9pZCBhY3BpX3Byb2Nlc3Nvcl9wb3N0X2VqZWN0KHN0cnVjdCBhY3BpX2RldmljZSAqZGV2aWNlKVxuLS1cbmRyaXZlcnMvYWNwaS9hY3BpX3Byb2Nlc3Nvci5jLTUxMS1cbmRyaXZlcnMvYWNwaS9hY3BpX3Byb2Nlc3Nvci5jOjUxMjpcdHRyeV9vZmZsaW5lX25vZGUoY3B1X3RvX25vZGUocHItXHUwMDNlaWQpKTtcbmRyaXZlcnMvYWNwaS9hY3BpX3Byb2Nlc3Nvci5jLTUxMy1cbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9MjU5PXN0YXRpYyBpbmxpbmUgdm9pZCBwZ2RhdF9yZXNpemVfaW5pdChzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KSB7fVxuLS1cbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yNjMtXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MjY0OmV4dGVybiB2b2lkIHRyeV9vZmZsaW5lX25vZGUoaW50IG5pZCk7XG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjY1LWV4dGVybiBpbnQgb2ZmbGluZV9wYWdlcyh1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcyxcbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9MjY5PWV4dGVybiBpbnQgb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKTtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjcxLSNlbHNlXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MjcyOnN0YXRpYyBpbmxpbmUgdm9pZCB0cnlfb2ZmbGluZV9ub2RlKGludCBuaWQpIHt9XG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjczLVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmM9MjE2ND1zdGF0aWMgaW50IGNoZWNrX25vX21lbWJsb2NrX2Zvcl9ub2RlX2NiKHN0cnVjdCBtZW1vcnlfYmxvY2sgKm1lbSwgdm9pZCAqYXJnKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMjE3Ni0vKipcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjE3NzogKiB0cnlfb2ZmbGluZV9ub2RlXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIxNzgtICogQG5pZDogdGhlIG5vZGUgSURcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIxODQtICovXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIxODU6dm9pZCB0cnlfb2ZmbGluZV9ub2RlKGludCBuaWQpXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIxODYte1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMjIxOC19XG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIyMTk6RVhQT1JUX1NZTUJPTCh0cnlfb2ZmbGluZV9ub2RlKTtcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjIyMC1cbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTIyNDE9c3RhdGljIGludCB0cnlfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMjI4Ny1cdGlmIChuaWQgIT0gTlVNQV9OT19OT0RFKVxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMjg4Olx0XHR0cnlfb2ZmbGluZV9ub2RlKG5pZCk7XG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyODktXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzAwLSAqIGFuZCBvbmxpbmUvb2ZmbGluZSBvcGVyYXRpb25zIGJlZm9yZSB0aGlzIGNhbGwsIGFzIHJlcXVpcmVkIGJ5XG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIzMDE6ICogdHJ5X29mZmxpbmVfbm9kZSgpLlxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzAyLSAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2OTUKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE1lbW9yeSBSZW1vdmFsIFBhdGhzKioKCk9rYXksIHNvIEkmIzM5O20gdHJhY2luZyB0aGUgbWVtb3J5IHJlbW92YWwgcHJvY2VzcyBpbiB0aGUga2VybmVsLCBhbmQgaXQgbG9va3MgbGlrZSBgdHJ5X29mZmxpbmVfbm9kZWAgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGluIGEgY291cGxlIG9mIGtleSBhcmVhcy4gSSBzZWUgdGhhdCBpdCYjMzk7cyBjYWxsZWQgZnJvbSB0d28gZGlzdGluY3QgZnVuY3Rpb25zOiBgdHJ5X3JlbW92ZV9tZW1vcnlgIHdpdGhpbiBgbW0vbWVtb3J5X2hvdHBsdWcuY2Ag4oCTIHdoaWNoIGlzIGV4cGVjdGVkIOKAkyBhbmQgc3VycHJpc2luZ2x5LCBmcm9tIGBhY3BpX3Byb2Nlc3Nvcl9wb3N0X2VqZWN0YCBpbiBgZHJpdmVycy9hY3BpL2FjcGlfcHJvY2Vzc29yLmNgLiBUaGF0IEFDUEkgY2FsbCBpcyBpbnRlcmVzdGluZywgaXQgaW1wbGllcyBoYXJkd2FyZSByZW1vdmFsIG9mIG1lbW9yeSBpcyB0aWVkIGludG8gcHJvY2Vzc29yIHJlbW92YWwgZXZlbnRzIHNvbWVob3cuCgpEaWdnaW5nIGRlZXBlciBpbnRvIHRoZSBjYWxsaW5nIHN0cnVjdHVyZSwgYHRyeV9yZW1vdmVfbWVtb3J5YCBpdHNlbGYgaXMgY2FsbGVkIGJ5IGJvdGggYG9mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnlgIGFuZCBqdXN0IHBsYWluIGByZW1vdmVfbWVtb3J5YC4gQW5kICp0aGF0KiBgcmVtb3ZlX21lbW9yeWAgZnVuY3Rpb24gaXMgZXhwb3J0ZWQsIHdoaWNoIG1lYW5zIGl0JiMzOTtzIGEgcHVibGljbHkgYWNjZXNzaWJsZSBpbnRlcmZhY2UgZm9yIG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdGhhdCBsaWtlbHkgbWVhbnMgYSB2YXJpZXR5IG9mIGRldmljZSBkcml2ZXJzIHJlbHkgb24gaXQgdG8gZ3JhY2VmdWxseSBoYW5kbGUgbWVtb3J5IGJlaW5nIHRha2VuIG9mZmxpbmUuIEFuZCBpbmRlZWQsIHRoZSB0ZXh0IG1lbnRpb25zIHRoYXQgaXTigJlzIGJlaW5nIHVzZWQgYnkgdGhpbmdzIGxpa2UgdmlydGlvLW1lbSwgZGF4LCBhbmQgQUNQSS4KCkkgc2hvdWxkIGNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgdHJ5X3JlbW92ZV9tZW1vcnlgIGl0c2VsZiBpbiBgbW0vbWVtb3J5X2hvdHBsdWcuY2Agbm93IHRvIHVuZGVyc3RhbmQgdGhlIGxvZ2ljLiBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIHRoaXMgb3BlcmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RyeV9yZW1vdmVfbWVtb3J5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21lbW9yeV9ob3RwbHVnLmM9MjIyMT1zdGF0aWMgaW50IG1lbW9yeV9ibG9ja3NfaGF2ZV9hbHRtYXBzKHU2NCBzdGFydCwgdTY0IHNpemUpXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMjQwLVxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMjQxOnN0YXRpYyBpbnQgdHJ5X3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSlcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjI0Mi17XG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYz0yMzAzPXZvaWQgX19yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzA5LVx0ICovXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIzMTA6XHRpZiAodHJ5X3JlbW92ZV9tZW1vcnkoc3RhcnQsIHNpemUpKVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzExLVx0XHRCVUcoKTtcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTIzMTg9aW50IHJlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSlcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIzMjItXHRsb2NrX2RldmljZV9ob3RwbHVnKCk7XG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIzMjM6XHRyYyA9IHRyeV9yZW1vdmVfbWVtb3J5KHN0YXJ0LCBzaXplKTtcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMyNC1cdHVubG9ja19kZXZpY2VfaG90cGx1ZygpO1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmM9MjM4Mz1pbnQgb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMjQxOC1cdGlmICghcmMpIHtcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjQxOTpcdFx0cmMgPSB0cnlfcmVtb3ZlX21lbW9yeShzdGFydCwgc2l6ZSk7XG5tbS9tZW1vcnlfaG90cGx1Zy5jLTI0MjAtXHRcdGlmIChyYylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTYwCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIE1lbW9yeSBSZW1vdmFsIEVudHJ5IFBvaW50cyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBmdW5jdGlvbnMgYHJlbW92ZV9tZW1vcnlgIGFuZCBgb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeWAg4oCTIHRob3NlIGFyZSB0aGUga2V5IGVudHJ5IHBvaW50cyBmb3IgbWVtb3J5IHJlbW92YWwuIE15IHByaW1hcnkgcXVlc3Rpb24gaXMgd2hldGhlciB0aGVzZSBhcmUgZXZlbiAqYWNjZXNzaWJsZSogZnJvbSB1c2Vyc3BhY2UuIEFyZSB0aGV5IGRpcmVjdGx5IGV4cG9zZWQsIG9yIGFyZSB0aGV5IGJ1cmllZCBiZWhpbmQgb3RoZXIgbWVjaGFuaXNtcz8KCkkgbmVlZCB0byBjb25zaWRlciB0aGUgY29udGV4dCBpbiB3aGljaCBtZW1vcnkgaG90cGx1ZyBldmVudHMgYXJlIHRyaWdnZXJlZC4gSSBrbm93IGl0IGNhbiBiZSBpbml0aWF0ZWQgdGhyb3VnaCBBQ1BJIGV2ZW50cywgdmlydGlvLW1lbSwgb3IgZXZlbiBkYXguIFRoZSBxdWVzdGlvbiBpcywgY2FuICpzeXprYWxsZXIqIGJlIHVzZWQgdG8gdHJpZ2dlciBvbmUgb2YgdGhlc2UgaG90cGx1Z2dpbmcgZXZlbnRzIHdoaWNoIHdpbGwgdGhlbiwgaG9wZWZ1bGx5LCBsZWFkIHRvIHRoZSByZW1vdmFsIG9mIG1lbW9yeT8KClN5emthbGxlciBjYW4gdHJpZ2dlciBtZW1vcnkgaG90cGx1ZyBvcGVyYXRpb25zLCBzcGVjaWZpY2FsbHkgaWYgaXQgaGFzIGFjY2VzcyB0byBsb2NhdGlvbnMgbGlrZSBgL3N5cy9kZXZpY2VzL3N5c3RlbS9tZW1vcnkvbWVtb3J5WC9zdGF0ZWAuIEJ1dCBmcm9tIG15IGV4cGVyaWVuY2UsIHRoYXQgb2Z0ZW4gcmVzdWx0cyBpbiBzaW1wbHkgb2ZmbGluaW5nIGFuZCBvbmxpbmluZyBtZW1vcnkgYmxvY2tzIOKAkyBub3QgYWN0dWFsICpyZW1vdmFsKi4gVGhpcyBpcyBhIGNydWNpYWwgZGlzdGluY3Rpb24uCgpXYWl0Li4uIHNvbWV0aGluZyBjbGlja2VkLiBJIHJlbWVtYmVyIGB0cnlfb2ZmbGluZV9ub2RlYCBnZXRzIGNhbGxlZCB3aGVuIGEgbm9kZSBnb2VzIG9mZmxpbmUuIE5vdywgdGhlIGtleSBpcyB0byBkZXRlcm1pbmUgaWYgYHRyeV9vZmZsaW5lX25vZGVgIGNhbiBiZSByZWFjaGVkIGFuZCB0cmlnZ2VyZWQgdmlhIHN5c2ZzLiBUaGlzIGlzIHdoZXJlIEkmIzM5O2xsIGZvY3VzIG15IGludmVzdGlnYXRpb24gbm93LiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBwYXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jPTcyND1zdGF0aWMgaW50IHZpcnRpb19tZW1fc2JtX3JlbW92ZV9tYihzdHJ1Y3QgdmlydGlvX21lbSAqdm0sIHVuc2lnbmVkIGxvbmcgbWJfaWQpXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTczOS0gKi9cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo3NDA6c3RhdGljIGludCB2aXJ0aW9fbWVtX29mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkoc3RydWN0IHZpcnRpb19tZW0gKnZtLFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTc0MS1cdFx0XHRcdFx0XHR1aW50NjRfdCBhZGRyLFxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03NDktXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6NzUwOlx0cmMgPSBvZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KGFkZHIsIHNpemUpO1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTc1MS1cdGlmICghcmMpIHtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzY5LS8qXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6NzcwOiAqIFNlZSB2aXJ0aW9fbWVtX29mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkoKTogVHJ5IG9mZmxpbmluZyBhbmQgcmVtb3ZpbmdcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03NzEtICogYSBzaW5nbGUgTGludXggbWVtb3J5IGJsb2NrLlxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz03NzM9c3RhdGljIGludCB2aXJ0aW9fbWVtX3NibV9vZmZsaW5lX2FuZF9yZW1vdmVfbWIoc3RydWN0IHZpcnRpb19tZW0gKnZtLFxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03NzgtXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6Nzc5Olx0cmV0dXJuIHZpcnRpb19tZW1fb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSh2bSwgYWRkciwgc2l6ZSk7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzgwLX1cbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9Nzg4PXN0YXRpYyBpbnQgdmlydGlvX21lbV9zYm1fdHJ5X3JlbW92ZV91bnBsdWdnZWRfbWIoc3RydWN0IHZpcnRpb19tZW0gKnZtLFxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03OTktXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6ODAwOlx0Lyogb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSgpIHdvcmtzIGZvciBvbmxpbmUgYW5kIG9mZmxpbmUgbWVtb3J5LiAqL1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTgwMS1cdG11dGV4X3VubG9jayhcdTAwMjZ2bS1cdTAwM2Vob3RwbHVnX211dGV4KTtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtODEwLS8qXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6ODExOiAqIFNlZSB2aXJ0aW9fbWVtX29mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkoKTogVHJ5IHRvIG9mZmxpbmUgYW5kIHJlbW92ZSBhXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtODEyLSAqIGFsbCBMaW51eCBtZW1vcnkgYmxvY2tzIGNvdmVyZWQgYnkgdGhlIGJpZyBibG9jay5cbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9ODE0PXN0YXRpYyBpbnQgdmlydGlvX21lbV9iYm1fb2ZmbGluZV9hbmRfcmVtb3ZlX2JiKHN0cnVjdCB2aXJ0aW9fbWVtICp2bSxcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtODE5LVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjgyMDpcdHJldHVybiB2aXJ0aW9fbWVtX29mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkodm0sIGFkZHIsIHNpemUpO1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTgyMS19XG4tLVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oPTI2OD1leHRlcm4gdm9pZCBfX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSk7XG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MjY5OmV4dGVybiBpbnQgb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKTtcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yNzAtXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYz0yMzU5PXN0YXRpYyBpbnQgdHJ5X3Jlb25saW5lX21lbW9yeV9ibG9jayhzdHJ1Y3QgbWVtb3J5X2Jsb2NrICptZW0sIHZvaWQgKmFyZylcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIzODItICovXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIzODM6aW50IG9mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSlcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjM4NC17XG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yNDM3LX1cbm1tL21lbW9yeV9ob3RwbHVnLmM6MjQzODpFWFBPUlRfU1lNQk9MX0dQTChvZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KTtcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjQzOS0jZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RSRU1PVkUgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDIxCgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIE1lbW9yeSBNYW5hZ2VtZW50IExhYnlyaW50aCoqCgpPa2F5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBtZW1vcnkgbWFuYWdlbWVudCBhc3BlY3Qgb2YgdGhpcyBzeXN0ZW0uIFdlJiMzOTtyZSBjbGVhcmx5IGRlYWxpbmcgd2l0aCBzb21lIGZvcm0gb2YgcGVyc2lzdGVudCBzdG9yYWdlIG9yIHN0YXRlLiAgVGhlIGN1cnJlbnQgYXBwcm9hY2ggaGFzIGxpa2VseSBjb25zaWRlcmVkIHNldmVyYWwgbWV0aG9kcywgYnV0IHdoYXQgYWJvdXQgYSBwYXJ0aWN1bGFyIGFwcHJvYWNoLCBpbiB0aGlzIGluc3RhbmNlPyBJJiMzOTttIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIHRoZSBjb21tYW5kIGFuZCBjb25jZXB0IG9mIGByZW1vdmVfbWVtb3J5YC4gVGhpcyBzdWdnZXN0cyB3ZSYjMzk7cmUgbm90IGp1c3QgYXBwZW5kaW5nIGRhdGEgb3Igb3ZlcndyaXRpbmcgaW4tcGxhY2UuIFdlIG5lZWQgdG8gY29uc2lkZXIgaG93IHRoaXMgZnVuY3Rpb24gd291bGQgaW1wYWN0IHRoZSBvdmVyYWxsIHN5c3RlbS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gZXZhbHVhdGUgdGhlIGltcGxpY2F0aW9ucyBvZiByZW1vdmFsLiBGb3IgZXhhbXBsZSwgd2hhdCB3b3VsZCBiZSB0aGUgaW1wYWN0IGluIHRlcm1zIG9mIGNhc2NhZGluZyBlZmZlY3RzPyBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcyBvbiB0aGUgZGF0YSBiZWluZyByZW1vdmVkPyBIb3cgZG9lcyBpdCBpbnRlcmFjdCB3aXRoIGFueSBjYWNoaW5nIG9yIGluZGV4aW5nIG1lY2hhbmlzbXMgdGhhdCBtaWdodCBiZSBpbiBwbGFjZT8gSSBuZWVkIHRvIHRoaW5rIHRoaXMgdGhyb3VnaCBjYXJlZnVsbHksIGVzcGVjaWFsbHkgcmVnYXJkaW5nIGNvbnNpc3RlbmN5IGFuZCBhdm9pZGluZyBkYXRhIGNvcnJ1cHRpb24gb3Igb3JwaGFuZWQgcmVmZXJlbmNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDc6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVtb3ZlX21lbW9yeSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTA4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL2FybTY0L21tL21tdS5jPTE5ODQ9aW50IGFyY2hfYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLFxuLS1cbmFyY2gvYXJtNjQvbW0vbW11LmMtMjAxOC1cbmFyY2gvYXJtNjQvbW0vbW11LmM6MjAxOTp2b2lkIGFyY2hfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcbmFyY2gvYXJtNjQvbW0vbW11LmMtMjAyMC1cdFx0XHRzdHJ1Y3QgZGV2X3BhZ2VtYXAgKnBnbWFwKVxuLS1cbmFyY2gvbG9vbmdhcmNoL21tL2luaXQuYz0xMDc9aW50IGFyY2hfYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBzdHJ1Y3QgbWhwX3BhcmFtcyAqcGFyYW1zKVxuLS1cbmFyY2gvbG9vbmdhcmNoL21tL2luaXQuYy0xMjEtXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmM6MTIyOnZvaWQgYXJjaF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTEyMy1cdFx0XHRzdHJ1Y3QgZGV2X3BhZ2VtYXAgKnBnbWFwKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9tZW0uYz0xNDU9aW50IF9fcmVmIGFyY2hfYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9tZW0uYy0xNjAtXG5hcmNoL3Bvd2VycGMvbW0vbWVtLmM6MTYxOnZvaWQgX19yZWYgYXJjaF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxuYXJjaC9wb3dlcnBjL21tL21lbS5jLTE2Mi1cdFx0XHQgICAgICBzdHJ1Y3QgZGV2X3BhZ2VtYXAgKnBnbWFwKVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jPTIzMz1zdGF0aWMgaW50IHBzZXJpZXNfcmVtb3ZlX21lbWJsb2NrKHVuc2lnbmVkIGxvbmcgYmFzZSwgdW5zaWduZWQgbG9uZyBtZW1ibG9ja19zaXplKVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jLTI0OC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHNlY3Rpb25zX3Blcl9ibG9jazsgaSYjNDM7JiM0MzspIHtcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jOjI0OTpcdFx0X19yZW1vdmVfbWVtb3J5KGJhc2UsIE1JTl9NRU1PUllfQkxPQ0tfU0laRSk7XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYy0yNTAtXHRcdGJhc2UgJiM0Mzs9IE1JTl9NRU1PUllfQkxPQ0tfU0laRTtcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYz0zMDI9c3RhdGljIGludCBkbHBhcl9yZW1vdmVfbG1iKHN0cnVjdCBkcm1lbV9sbWIgKmxtYilcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYy0zMTktXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYzozMjA6XHRfX3JlbW92ZV9tZW1vcnkobG1iLVx1MDAzZWJhc2VfYWRkciwgbWVtb3J5X2Jsb2NrX3NpemUpO1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2hvdHBsdWctbWVtb3J5LmMtMzIxLVx0bWVtb3J5X2Jsb2NrX3B1dChtZW1fYmxvY2spO1xuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jPTU2ND1zdGF0aWMgaW50IGRscGFyX2FkZF9sbWIoc3RydWN0IGRybWVtX2xtYiAqbG1iKVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jLTU5Ni1cdFx0cHJfZXJyKFwmIzM0O0ZhaWxlZCB0byBvbmxpbmUgTE1CIDB4JXggb24gbm9kZSAldVxcblwmIzM0OywgbG1iLVx1MDAzZWRyY19pbmRleCwgbmlkKTtcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jOjU5NzpcdFx0X19yZW1vdmVfbWVtb3J5KGxtYi1cdTAwM2ViYXNlX2FkZHIsIGJsb2NrX3N6KTtcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jLTU5OC1cdFx0aW52YWxpZGF0ZV9sbWJfYXNzb2NpYXRpdml0eV9pbmRleChsbWIpO1xuLS1cbmFyY2gvcmlzY3YvbW0vaW5pdC5jPTE3MTM9aW50IF9fcmVmIGFyY2hfYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBzdHJ1Y3QgbWhwX3BhcmFtcyAqcGFyYW1zKVxuLS1cbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTE3MzEtXG5hcmNoL3Jpc2N2L21tL2luaXQuYzoxNzMyOnZvaWQgX19yZWYgYXJjaF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTczMy1cdFx0XHQgICAgICBzdHJ1Y3QgZGV2X3BhZ2VtYXAgKnBnbWFwKVxuLS1cbmFyY2gvczM5MC9tbS9pbml0LmM9MjYwPWludCBhcmNoX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSxcbi0tXG5hcmNoL3MzOTAvbW0vaW5pdC5jLTI4MC1cbmFyY2gvczM5MC9tbS9pbml0LmM6MjgxOnZvaWQgYXJjaF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxuYXJjaC9zMzkwL21tL2luaXQuYy0yODItXHRcdFx0c3RydWN0IGRldl9wYWdlbWFwICpwZ21hcClcbi0tXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM9MTI5NT1rZXJuZWxfcGh5c2ljYWxfbWFwcGluZ19yZW1vdmUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG4tLVxuYXJjaC94ODYvbW0vaW5pdF82NC5jLTEzMDItXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM6MTMwMzp2b2lkIF9fcmVmIGFyY2hfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcbmFyY2gveDg2L21tL2luaXRfNjQuYy0xMzA0LVx0XHRcdCAgICAgIHN0cnVjdCBkZXZfcGFnZW1hcCAqcGdtYXApXG4tLVxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jPTE2OD1zdGF0aWMgaW50IGFjcGlfbWVtb3J5X2VuYWJsZV9kZXZpY2Uoc3RydWN0IGFjcGlfbWVtb3J5X2RldmljZSAqbWVtX2RldmljZSlcbi0tXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmMtMjUyLVxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jOjI1MzpzdGF0aWMgdm9pZCBhY3BpX21lbW9yeV9yZW1vdmVfbWVtb3J5KHN0cnVjdCBhY3BpX21lbW9yeV9kZXZpY2UgKm1lbV9kZXZpY2UpXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmMtMjU0LXtcbi0tXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmMtMjYxLVx0XHRhY3BpX3VuYmluZF9tZW1vcnlfYmxvY2tzKGluZm8pO1xuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jOjI2MjpcdFx0X19yZW1vdmVfbWVtb3J5KGluZm8tXHUwMDNlc3RhcnRfYWRkciwgaW5mby1cdTAwM2VsZW5ndGgpO1xuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jLTI2My1cdFx0bGlzdF9kZWwoXHUwMDI2aW5mby1cdTAwM2VsaXN0KTtcbi0tXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmM9MzI1PXN0YXRpYyB2b2lkIGFjcGlfbWVtb3J5X2RldmljZV9yZW1vdmUoc3RydWN0IGFjcGlfZGV2aWNlICpkZXZpY2UpXG4tLVxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jLTMzMi1cdG1lbV9kZXZpY2UgPSBhY3BpX2RyaXZlcl9kYXRhKGRldmljZSk7XG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmM6MzMzOlx0YWNwaV9tZW1vcnlfcmVtb3ZlX21lbW9yeShtZW1fZGV2aWNlKTtcbmRyaXZlcnMvYWNwaS9hY3BpX21lbWhvdHBsdWcuYy0zMzQtXHRhY3BpX21lbW9yeV9kZXZpY2VfZnJlZShtZW1fZGV2aWNlKTtcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9NzgxPXN0YXRpYyBpbnQgYWRkX21lbW9yeV9ibG9jayh1bnNpZ25lZCBsb25nIGJsb2NrX2lkLCBpbnQgbmlkLCB1bnNpZ25lZCBsb25nIHN0YXRlLFxuLS1cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy04MjYtXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6ODI3OnN0YXRpYyB2b2lkIHJlbW92ZV9tZW1vcnlfYmxvY2soc3RydWN0IG1lbW9yeV9ibG9jayAqbWVtb3J5KVxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTgyOC17XG4tLVxuZHJpdmVycy9iYXNlL21lbW9yeS5jPTg1MT1pbnQgY3JlYXRlX21lbW9yeV9ibG9ja19kZXZpY2VzKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgc2l6ZSxcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtODc2LVx0XHRcdFx0Y29udGludWU7XG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6ODc3Olx0XHRcdHJlbW92ZV9tZW1vcnlfYmxvY2sobWVtKTtcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy04NzgtXHRcdH1cbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtODg5LSAqL1xuZHJpdmVycy9iYXNlL21lbW9yeS5jOjg5MDp2b2lkIHJlbW92ZV9tZW1vcnlfYmxvY2tfZGV2aWNlcyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIHNpemUpXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtODkxLXtcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtOTA2LVx0XHR1bnJlZ2lzdGVyX21lbW9yeV9ibG9ja191bmRlcl9ub2RlcyhtZW0pO1xuZHJpdmVycy9iYXNlL21lbW9yeS5jOjkwNzpcdFx0cmVtb3ZlX21lbW9yeV9ibG9jayhtZW0pO1xuZHJpdmVycy9iYXNlL21lbW9yeS5jLTkwOC1cdH1cbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2FncC5oPTk3PXN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciB7XG4tLVxuZHJpdmVycy9jaGFyL2FncC9hZ3AuaC0xMTQtXHRpbnQgKCppbnNlcnRfbWVtb3J5KShzdHJ1Y3QgYWdwX21lbW9yeSAqLCBvZmZfdCwgaW50KTtcbmRyaXZlcnMvY2hhci9hZ3AvYWdwLmg6MTE1Olx0aW50ICgqcmVtb3ZlX21lbW9yeSkoc3RydWN0IGFncF9tZW1vcnkgKiwgb2ZmX3QsIGludCk7XG5kcml2ZXJzL2NoYXIvYWdwL2FncC5oLTExNi1cdHN0cnVjdCBhZ3BfbWVtb3J5ICooKmFsbG9jX2J5X3R5cGUpIChzaXplX3QsIGludCk7XG4tLVxuZHJpdmVycy9jaGFyL2FncC9hZ3AuaD0xOTI9aW50IGFncF9nZW5lcmljX2luc2VydF9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKm1lbSwgb2ZmX3QgcGdfc3RhcnQsIGludCB0eXBlKTtcbmRyaXZlcnMvY2hhci9hZ3AvYWdwLmg6MTkzOmludCBhZ3BfZ2VuZXJpY19yZW1vdmVfbWVtb3J5KHN0cnVjdCBhZ3BfbWVtb3J5ICptZW0sIG9mZl90IHBnX3N0YXJ0LCBpbnQgdHlwZSk7XG5kcml2ZXJzL2NoYXIvYWdwL2FncC5oLTE5NC1zdHJ1Y3QgYWdwX21lbW9yeSAqYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZShzaXplX3QgcGFnZV9jb3VudCwgaW50IHR5cGUpO1xuLS1cbmRyaXZlcnMvY2hhci9hZ3AvYWxpLWFncC5jPTIwMj1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIGFsaV9nZW5lcmljX2JyaWRnZSA9IHtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2FsaS1hZ3AuYy0yMTgtXHQuaW5zZXJ0X21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX2luc2VydF9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL2FsaS1hZ3AuYzoyMTk6XHQucmVtb3ZlX21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL2FsaS1hZ3AuYy0yMjAtXHQuYWxsb2NfYnlfdHlwZVx0XHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXG4tLVxuZHJpdmVycy9jaGFyL2FncC9hbGktYWdwLmM9MjI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgYWxpX20xNTQxX2JyaWRnZSA9IHtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2FsaS1hZ3AuYy0yNDItXHQuaW5zZXJ0X21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX2luc2VydF9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL2FsaS1hZ3AuYzoyNDM6XHQucmVtb3ZlX21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL2FsaS1hZ3AuYy0yNDQtXHQuYWxsb2NfYnlfdHlwZVx0XHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXG4tLVxuZHJpdmVycy9jaGFyL2FncC9hbHBoYS1hZ3AuYz04ND1zdGF0aWMgaW50IGFscGhhX2NvcmVfYWdwX2luc2VydF9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKm1lbSwgb2ZmX3QgcGdfc3RhcnQsXG4tLVxuZHJpdmVycy9jaGFyL2FncC9hbHBoYS1hZ3AuYy0xMDUtXG5kcml2ZXJzL2NoYXIvYWdwL2FscGhhLWFncC5jOjEwNjpzdGF0aWMgaW50IGFscGhhX2NvcmVfYWdwX3JlbW92ZV9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKm1lbSwgb2ZmX3QgcGdfc3RhcnQsXG5kcml2ZXJzL2NoYXIvYWdwL2FscGhhLWFncC5jLTEwNy1cdFx0XHRcdFx0aW50IHR5cGUpXG4tLVxuZHJpdmVycy9jaGFyL2FncC9hbHBoYS1hZ3AuYz0xMjI9c3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIGFscGhhX2NvcmVfYWdwX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2FscGhhLWFncC5jLTEzOS1cdC5pbnNlcnRfbWVtb3J5XHRcdD0gYWxwaGFfY29yZV9hZ3BfaW5zZXJ0X21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3AvYWxwaGEtYWdwLmM6MTQwOlx0LnJlbW92ZV9tZW1vcnlcdFx0PSBhbHBoYV9jb3JlX2FncF9yZW1vdmVfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC9hbHBoYS1hZ3AuYy0xNDEtXHQuYWxsb2NfYnlfdHlwZVx0XHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXG4tLVxuZHJpdmVycy9jaGFyL2FncC9hbWQtazctYWdwLmM9Mjg0PXN0YXRpYyBpbnQgYW1kX2luc2VydF9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKm1lbSwgb2ZmX3QgcGdfc3RhcnQsIGludCB0eXBlKVxuLS1cbmRyaXZlcnMvY2hhci9hZ3AvYW1kLWs3LWFncC5jLTMyNS1cbmRyaXZlcnMvY2hhci9hZ3AvYW1kLWs3LWFncC5jOjMyNjpzdGF0aWMgaW50IGFtZF9yZW1vdmVfbWVtb3J5KHN0cnVjdCBhZ3BfbWVtb3J5ICptZW0sIG9mZl90IHBnX3N0YXJ0LCBpbnQgdHlwZSlcbmRyaXZlcnMvY2hhci9hZ3AvYW1kLWs3LWFncC5jLTMyNy17XG4tLVxuZHJpdmVycy9jaGFyL2FncC9hbWQtazctYWdwLmM9MzYzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgYW1kX2lyb25nYXRlX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2FtZC1rNy1hZ3AuYy0zNzktXHQuaW5zZXJ0X21lbW9yeVx0XHQ9IGFtZF9pbnNlcnRfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC9hbWQtazctYWdwLmM6MzgwOlx0LnJlbW92ZV9tZW1vcnlcdFx0PSBhbWRfcmVtb3ZlX21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3AvYW1kLWs3LWFncC5jLTM4MS1cdC5hbGxvY19ieV90eXBlXHRcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2FtZDY0LWFncC5jPTIxNj1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIGFtZF84MTUxX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2FtZDY0LWFncC5jLTIzMi1cdC5pbnNlcnRfbWVtb3J5XHRcdD0gYW1kNjRfaW5zZXJ0X21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3AvYW1kNjQtYWdwLmM6MjMzOlx0LnJlbW92ZV9tZW1vcnlcdFx0PSBhZ3BfZ2VuZXJpY19yZW1vdmVfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC9hbWQ2NC1hZ3AuYy0yMzQtXHQuYWxsb2NfYnlfdHlwZVx0XHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXG4tLVxuZHJpdmVycy9jaGFyL2FncC9hdGktYWdwLmM9MjU4PXN0YXRpYyBpbnQgYXRpX2luc2VydF9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKiBtZW0sXG4tLVxuZHJpdmVycy9jaGFyL2FncC9hdGktYWdwLmMtMzA1LVxuZHJpdmVycy9jaGFyL2FncC9hdGktYWdwLmM6MzA2OnN0YXRpYyBpbnQgYXRpX3JlbW92ZV9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKiBtZW0sIG9mZl90IHBnX3N0YXJ0LFxuZHJpdmVycy9jaGFyL2FncC9hdGktYWdwLmMtMzA3LVx0XHRcdCAgICAgaW50IHR5cGUpXG4tLVxuZHJpdmVycy9jaGFyL2FncC9hdGktYWdwLmM9NDExPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgYXRpX2dlbmVyaWNfYnJpZGdlID0ge1xuLS1cbmRyaXZlcnMvY2hhci9hZ3AvYXRpLWFncC5jLTQyNy1cdC5pbnNlcnRfbWVtb3J5XHRcdD0gYXRpX2luc2VydF9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL2F0aS1hZ3AuYzo0Mjg6XHQucmVtb3ZlX21lbW9yeVx0XHQ9IGF0aV9yZW1vdmVfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC9hdGktYWdwLmMtNDI5LVx0LmFsbG9jX2J5X3R5cGVcdFx0PSBhZ3BfZ2VuZXJpY19hbGxvY19ieV90eXBlLFxuLS1cbmRyaXZlcnMvY2hhci9hZ3AvZWZmaWNlb24tYWdwLmM9MjM3PXN0YXRpYyBpbnQgZWZmaWNlb25faW5zZXJ0X21lbW9yeShzdHJ1Y3QgYWdwX21lbW9yeSAqIG1lbSwgb2ZmX3QgcGdfc3RhcnQsIGludCB0eXBlKVxuLS1cbmRyaXZlcnMvY2hhci9hZ3AvZWZmaWNlb24tYWdwLmMtMjg1LVxuZHJpdmVycy9jaGFyL2FncC9lZmZpY2Vvbi1hZ3AuYzoyODY6c3RhdGljIGludCBlZmZpY2Vvbl9yZW1vdmVfbWVtb3J5KHN0cnVjdCBhZ3BfbWVtb3J5ICogbWVtLCBvZmZfdCBwZ19zdGFydCwgaW50IHR5cGUpXG5kcml2ZXJzL2NoYXIvYWdwL2VmZmljZW9uLWFncC5jLTI4Ny17XG4tLVxuZHJpdmVycy9jaGFyL2FncC9lZmZpY2Vvbi1hZ3AuYy0yODktXG5kcml2ZXJzL2NoYXIvYWdwL2VmZmljZW9uLWFncC5jOjI5MDpcdHByaW50ayhLRVJOX0RFQlVHIFBGWCBcJiMzNDtlZmZpY2Vvbl9yZW1vdmVfbWVtb3J5KCVseCwgJWQpXFxuXCYjMzQ7LCBwZ19zdGFydCwgY291bnQpO1xuZHJpdmVycy9jaGFyL2FncC9lZmZpY2Vvbi1hZ3AuYy0yOTEtXG4tLVxuZHJpdmVycy9jaGFyL2FncC9lZmZpY2Vvbi1hZ3AuYz0zMTM9c3RhdGljIGNvbnN0IHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciBlZmZpY2Vvbl9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9jaGFyL2FncC9lZmZpY2Vvbi1hZ3AuYy0zMzAtXHQuaW5zZXJ0X21lbW9yeVx0XHQ9IGVmZmljZW9uX2luc2VydF9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL2VmZmljZW9uLWFncC5jOjMzMTpcdC5yZW1vdmVfbWVtb3J5XHRcdD0gZWZmaWNlb25fcmVtb3ZlX21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3AvZWZmaWNlb24tYWdwLmMtMzMyLVx0LmNhbnRfdXNlX2FwZXJ0dXJlXHQ9IGZhbHNlLFx0Ly8gdHJ1ZSBtaWdodCBiZSBmYXN0ZXI/XG4tLVxuZHJpdmVycy9jaGFyL2FncC9nZW5lcmljLmM9NDQ4PWludCBhZ3BfdW5iaW5kX21lbW9yeShzdHJ1Y3QgYWdwX21lbW9yeSAqY3Vycilcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2dlbmVyaWMuYy00NTktXG5kcml2ZXJzL2NoYXIvYWdwL2dlbmVyaWMuYzo0NjA6XHRyZXRfdmFsID0gY3Vyci1cdTAwM2VicmlkZ2UtXHUwMDNlZHJpdmVyLVx1MDAzZXJlbW92ZV9tZW1vcnkoY3VyciwgY3Vyci1cdTAwM2VwZ19zdGFydCwgY3Vyci1cdTAwM2V0eXBlKTtcbmRyaXZlcnMvY2hhci9hZ3AvZ2VuZXJpYy5jLTQ2MS1cbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2dlbmVyaWMuYz0xMTA0PUVYUE9SVF9TWU1CT0woYWdwX2dlbmVyaWNfaW5zZXJ0X21lbW9yeSk7XG4tLVxuZHJpdmVycy9jaGFyL2FncC9nZW5lcmljLmMtMTEwNi1cbmRyaXZlcnMvY2hhci9hZ3AvZ2VuZXJpYy5jOjExMDc6aW50IGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKm1lbSwgb2ZmX3QgcGdfc3RhcnQsIGludCB0eXBlKVxuZHJpdmVycy9jaGFyL2FncC9nZW5lcmljLmMtMTEwOC17XG4tLVxuZHJpdmVycy9jaGFyL2FncC9nZW5lcmljLmMtMTE0Mi19XG5kcml2ZXJzL2NoYXIvYWdwL2dlbmVyaWMuYzoxMTQzOkVYUE9SVF9TWU1CT0woYWdwX2dlbmVyaWNfcmVtb3ZlX21lbW9yeSk7XG5kcml2ZXJzL2NoYXIvYWdwL2dlbmVyaWMuYy0xMTQ0LVxuLS1cbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmM9NDUwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgaW50ZWxfZ2VuZXJpY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYy00NjYtXHQuaW5zZXJ0X21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX2luc2VydF9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jOjQ2NzpcdC5yZW1vdmVfbWVtb3J5XHRcdD0gYWdwX2dlbmVyaWNfcmVtb3ZlX21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNDY4LVx0LmFsbG9jX2J5X3R5cGVcdFx0PSBhZ3BfZ2VuZXJpY19hbGxvY19ieV90eXBlLFxuLS1cbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmM9NDc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgaW50ZWxfODE1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jLTQ5My1cdC5pbnNlcnRfbWVtb3J5XHRcdD0gYWdwX2dlbmVyaWNfaW5zZXJ0X21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmM6NDk0Olx0LnJlbW92ZV9tZW1vcnlcdFx0PSBhZ3BfZ2VuZXJpY19yZW1vdmVfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYy00OTUtXHQuYWxsb2NfYnlfdHlwZVx0XHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXG4tLVxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYz01MDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciBpbnRlbF84MjBfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNTIwLVx0Lmluc2VydF9tZW1vcnlcdFx0PSBhZ3BfZ2VuZXJpY19pbnNlcnRfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYzo1MjE6XHQucmVtb3ZlX21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jLTUyMi1cdC5hbGxvY19ieV90eXBlXHRcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jPTUzMT1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIGludGVsXzgzMG1wX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jLTU0Ny1cdC5pbnNlcnRfbWVtb3J5XHRcdD0gYWdwX2dlbmVyaWNfaW5zZXJ0X21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmM6NTQ4Olx0LnJlbW92ZV9tZW1vcnlcdFx0PSBhZ3BfZ2VuZXJpY19yZW1vdmVfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYy01NDktXHQuYWxsb2NfYnlfdHlwZVx0XHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXG4tLVxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYz01NTg9c3RhdGljIGNvbnN0IHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciBpbnRlbF84NDBfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNTc0LVx0Lmluc2VydF9tZW1vcnlcdFx0PSBhZ3BfZ2VuZXJpY19pbnNlcnRfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYzo1NzU6XHQucmVtb3ZlX21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jLTU3Ni1cdC5hbGxvY19ieV90eXBlXHRcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jPTU4NT1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIGludGVsXzg0NV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYy02MDEtXHQuaW5zZXJ0X21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX2luc2VydF9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jOjYwMjpcdC5yZW1vdmVfbWVtb3J5XHRcdD0gYWdwX2dlbmVyaWNfcmVtb3ZlX21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNjAzLVx0LmFsbG9jX2J5X3R5cGVcdFx0PSBhZ3BfZ2VuZXJpY19hbGxvY19ieV90eXBlLFxuLS1cbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmM9NjEyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgaW50ZWxfODUwX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jLTYyOC1cdC5pbnNlcnRfbWVtb3J5XHRcdD0gYWdwX2dlbmVyaWNfaW5zZXJ0X21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmM6NjI5Olx0LnJlbW92ZV9tZW1vcnlcdFx0PSBhZ3BfZ2VuZXJpY19yZW1vdmVfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYy02MzAtXHQuYWxsb2NfYnlfdHlwZVx0XHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXG4tLVxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYz02Mzk9c3RhdGljIGNvbnN0IHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciBpbnRlbF84NjBfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNjU1LVx0Lmluc2VydF9tZW1vcnlcdFx0PSBhZ3BfZ2VuZXJpY19pbnNlcnRfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYzo2NTY6XHQucmVtb3ZlX21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jLTY1Ny1cdC5hbGxvY19ieV90eXBlXHRcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jPTY2Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIGludGVsXzc1MDVfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNjgyLVx0Lmluc2VydF9tZW1vcnlcdFx0PSBhZ3BfZ2VuZXJpY19pbnNlcnRfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYzo2ODM6XHQucmVtb3ZlX21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jLTY4NC1cdC5hbGxvY19ieV90eXBlXHRcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWd0dC5jPTEyMDY9c3RhdGljIGNvbnN0IHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciBpbnRlbF9mYWtlX2FncF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1ndHQuYy0xMjE4LVx0Lmluc2VydF9tZW1vcnlcdFx0PSBpbnRlbF9mYWtlX2FncF9pbnNlcnRfZW50cmllcyxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtZ3R0LmM6MTIxOTpcdC5yZW1vdmVfbWVtb3J5XHRcdD0gaW50ZWxfZmFrZV9hZ3BfcmVtb3ZlX2VudHJpZXMsXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWd0dC5jLTEyMjAtXHQuYWxsb2NfYnlfdHlwZVx0XHQ9IGludGVsX2Zha2VfYWdwX2FsbG9jX2J5X3R5cGUsXG4tLVxuZHJpdmVycy9jaGFyL2FncC9udmlkaWEtYWdwLmM9MjAyPXN0YXRpYyBpbnQgbnZpZGlhX2luc2VydF9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKm1lbSwgb2ZmX3QgcGdfc3RhcnQsIGludCB0eXBlKVxuLS1cbmRyaXZlcnMvY2hhci9hZ3AvbnZpZGlhLWFncC5jLTI0MC1cbmRyaXZlcnMvY2hhci9hZ3AvbnZpZGlhLWFncC5jOjI0MTpzdGF0aWMgaW50IG52aWRpYV9yZW1vdmVfbWVtb3J5KHN0cnVjdCBhZ3BfbWVtb3J5ICptZW0sIG9mZl90IHBnX3N0YXJ0LCBpbnQgdHlwZSlcbmRyaXZlcnMvY2hhci9hZ3AvbnZpZGlhLWFncC5jLTI0Mi17XG4tLVxuZHJpdmVycy9jaGFyL2FncC9udmlkaWEtYWdwLmM9MzExPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgbnZpZGlhX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL252aWRpYS1hZ3AuYy0zMjctXHQuaW5zZXJ0X21lbW9yeVx0XHQ9IG52aWRpYV9pbnNlcnRfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC9udmlkaWEtYWdwLmM6MzI4Olx0LnJlbW92ZV9tZW1vcnlcdFx0PSBudmlkaWFfcmVtb3ZlX21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3AvbnZpZGlhLWFncC5jLTMyOS1cdC5hbGxvY19ieV90eXBlXHRcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL3BhcmlzYy1hZ3AuYz0xNzM9c3RhdGljIGludFxuZHJpdmVycy9jaGFyL2FncC9wYXJpc2MtYWdwLmM6MTc0OnBhcmlzY19hZ3BfcmVtb3ZlX21lbW9yeShzdHJ1Y3QgYWdwX21lbW9yeSAqbWVtLCBvZmZfdCBwZ19zdGFydCwgaW50IHR5cGUpXG5kcml2ZXJzL2NoYXIvYWdwL3BhcmlzYy1hZ3AuYy0xNzUte1xuLS1cbmRyaXZlcnMvY2hhci9hZ3AvcGFyaXNjLWFncC5jPTIyNz1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIHBhcmlzY19hZ3BfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvY2hhci9hZ3AvcGFyaXNjLWFncC5jLTIzOS1cdC5pbnNlcnRfbWVtb3J5XHRcdD0gcGFyaXNjX2FncF9pbnNlcnRfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC9wYXJpc2MtYWdwLmM6MjQwOlx0LnJlbW92ZV9tZW1vcnlcdFx0PSBwYXJpc2NfYWdwX3JlbW92ZV9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL3BhcmlzYy1hZ3AuYy0yNDEtXHQuYWxsb2NfYnlfdHlwZVx0XHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXG4tLVxuZHJpdmVycy9jaGFyL2FncC9zaXMtYWdwLmM9MTIyPXN0YXRpYyBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgc2lzX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL3Npcy1hZ3AuYy0xMzgtXHQuaW5zZXJ0X21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX2luc2VydF9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL3Npcy1hZ3AuYzoxMzk6XHQucmVtb3ZlX21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL3Npcy1hZ3AuYy0xNDAtXHQuYWxsb2NfYnlfdHlwZVx0XHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXG4tLVxuZHJpdmVycy9jaGFyL2FncC9zd29ya3MtYWdwLmM9MzE2PXN0YXRpYyBpbnQgc2VydmVyd29ya3NfaW5zZXJ0X21lbW9yeShzdHJ1Y3QgYWdwX21lbW9yeSAqbWVtLFxuLS1cbmRyaXZlcnMvY2hhci9hZ3Avc3dvcmtzLWFncC5jLTM1Ni1cbmRyaXZlcnMvY2hhci9hZ3Avc3dvcmtzLWFncC5jOjM1NzpzdGF0aWMgaW50IHNlcnZlcndvcmtzX3JlbW92ZV9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKm1lbSwgb2ZmX3QgcGdfc3RhcnQsXG5kcml2ZXJzL2NoYXIvYWdwL3N3b3Jrcy1hZ3AuYy0zNTgtXHRcdFx0ICAgICBpbnQgdHlwZSlcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL3N3b3Jrcy1hZ3AuYz00MTk9c3RhdGljIGNvbnN0IHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciBzd29ya3NfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvY2hhci9hZ3Avc3dvcmtzLWFncC5jLTQzNC1cdC5pbnNlcnRfbWVtb3J5XHRcdD0gc2VydmVyd29ya3NfaW5zZXJ0X21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3Avc3dvcmtzLWFncC5jOjQzNTpcdC5yZW1vdmVfbWVtb3J5XHRcdD0gc2VydmVyd29ya3NfcmVtb3ZlX21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3Avc3dvcmtzLWFncC5jLTQzNi1cdC5hbGxvY19ieV90eXBlXHRcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL3VuaW5vcnRoLWFncC5jPTE1MD1zdGF0aWMgaW50IHVuaW5vcnRoX2luc2VydF9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKm1lbSwgb2ZmX3QgcGdfc3RhcnQsIGludCB0eXBlKVxuLS1cbmRyaXZlcnMvY2hhci9hZ3AvdW5pbm9ydGgtYWdwLmMtMTk5LVxuZHJpdmVycy9jaGFyL2FncC91bmlub3J0aC1hZ3AuYzoyMDA6c3RhdGljIGludCB1bmlub3J0aF9yZW1vdmVfbWVtb3J5KHN0cnVjdCBhZ3BfbWVtb3J5ICptZW0sIG9mZl90IHBnX3N0YXJ0LCBpbnQgdHlwZSlcbmRyaXZlcnMvY2hhci9hZ3AvdW5pbm9ydGgtYWdwLmMtMjAxLXtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL3VuaW5vcnRoLWFncC5jPTUwOT1jb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgdW5pbm9ydGhfYWdwX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL3VuaW5vcnRoLWFncC5jLTUyNC1cdC5pbnNlcnRfbWVtb3J5XHRcdD0gdW5pbm9ydGhfaW5zZXJ0X21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3AvdW5pbm9ydGgtYWdwLmM6NTI1Olx0LnJlbW92ZV9tZW1vcnlcdFx0PSB1bmlub3J0aF9yZW1vdmVfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC91bmlub3J0aC1hZ3AuYy01MjYtXHQuYWxsb2NfYnlfdHlwZVx0XHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXG4tLVxuZHJpdmVycy9jaGFyL2FncC91bmlub3J0aC1hZ3AuYz01Mzc9Y29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIHUzX2FncF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9jaGFyL2FncC91bmlub3J0aC1hZ3AuYy01NTItXHQuaW5zZXJ0X21lbW9yeVx0XHQ9IHVuaW5vcnRoX2luc2VydF9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL3VuaW5vcnRoLWFncC5jOjU1MzpcdC5yZW1vdmVfbWVtb3J5XHRcdD0gdW5pbm9ydGhfcmVtb3ZlX21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3AvdW5pbm9ydGgtYWdwLmMtNTU0LVx0LmFsbG9jX2J5X3R5cGVcdFx0PSBhZ3BfZ2VuZXJpY19hbGxvY19ieV90eXBlLFxuLS1cbmRyaXZlcnMvY2hhci9hZ3AvdmlhLWFncC5jPTE3MD1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIHZpYV9hZ3AzX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL3ZpYS1hZ3AuYy0xODYtXHQuaW5zZXJ0X21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX2luc2VydF9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL3ZpYS1hZ3AuYzoxODc6XHQucmVtb3ZlX21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL3ZpYS1hZ3AuYy0xODgtXHQuYWxsb2NfYnlfdHlwZVx0XHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXG4tLVxuZHJpdmVycy9jaGFyL2FncC92aWEtYWdwLmM9MTk3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgdmlhX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL3ZpYS1hZ3AuYy0yMTMtXHQuaW5zZXJ0X21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX2luc2VydF9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL3ZpYS1hZ3AuYzoyMTQ6XHQucmVtb3ZlX21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL3ZpYS1hZ3AuYy0yMTUtXHQuYWxsb2NfYnlfdHlwZVx0XHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXG4tLVxuZHJpdmVycy9kYXgva21lbS5jPTIwOT1zdGF0aWMgdm9pZCBkZXZfZGF4X2ttZW1fcmVtb3ZlKHN0cnVjdCBkZXZfZGF4ICpkZXZfZGF4KVxuLS1cbmRyaXZlcnMvZGF4L2ttZW0uYy0yMTctXHQgKiBXZSBoYXZlIG9uZSBzaG90IGZvciByZW1vdmluZyBtZW1vcnksIGlmIHNvbWUgbWVtb3J5IGJsb2NrcyB3ZXJlIG5vdFxuZHJpdmVycy9kYXgva21lbS5jOjIxODpcdCAqIG9mZmxpbmUgcHJpb3IgdG8gY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHJlbW92ZV9tZW1vcnkoKSB3aWxsIGZhaWwsIGFuZFxuZHJpdmVycy9kYXgva21lbS5jLTIxOS1cdCAqIHRoZXJlIGlzIG5vIHdheSB0byBob3RyZW1vdmUgdGhpcyBtZW1vcnkgdW50aWwgcmVib290IGJlY2F1c2UgZGV2aWNlXG4tLVxuZHJpdmVycy9kYXgva21lbS5jLTIzNS1cbmRyaXZlcnMvZGF4L2ttZW0uYzoyMzY6XHRcdHJjID0gcmVtb3ZlX21lbW9yeShyYW5nZS5zdGFydCwgcmFuZ2VfbGVuKFx1MDAyNnJhbmdlKSk7XG5kcml2ZXJzL2RheC9rbWVtLmMtMjM3LVx0XHRpZiAocmMgPT0gMCkge1xuLS1cbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIvZWZpc3R1Yi5oPTQwNT11bmlvbiBlZmlfZHhlX3NlcnZpY2VzX3RhYmxlIHtcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9saWJzdHViL2VmaXN0dWIuaC00MTAtXHRcdHZvaWQgKmZyZWVfbWVtb3J5X3NwYWNlO1xuZHJpdmVycy9maXJtd2FyZS9lZmkvbGlic3R1Yi9lZmlzdHViLmg6NDExOlx0XHR2b2lkICpyZW1vdmVfbWVtb3J5X3NwYWNlO1xuZHJpdmVycy9maXJtd2FyZS9lZmkvbGlic3R1Yi9lZmlzdHViLmgtNDEyLVx0XHRlZmlfc3RhdHVzX3QgKF9fZWZpYXBpICpnZXRfbWVtb3J5X3NwYWNlX2Rlc2NyaXB0b3IpKGVmaV9waHlzaWNhbF9hZGRyX3QsXG4tLVxuZHJpdmVycy9maXJtd2FyZS9lZmkvbGlic3R1Yi9lZmlzdHViLmgtNDMzLVx0XHR1MzIgZnJlZV9tZW1vcnlfc3BhY2U7XG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9saWJzdHViL2VmaXN0dWIuaDo0MzQ6XHRcdHUzMiByZW1vdmVfbWVtb3J5X3NwYWNlO1xuZHJpdmVycy9maXJtd2FyZS9lZmkvbGlic3R1Yi9lZmlzdHViLmgtNDM1LVx0XHR1MzIgZ2V0X21lbW9yeV9zcGFjZV9kZXNjcmlwdG9yO1xuLS1cbmRyaXZlcnMvczM5MC9jaGFyL3NjbHBfbWVtLmM9MTg5PXN0YXRpYyBzc2l6ZV90IHNjbHBfY29uZmlnX21lbV9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvczM5MC9jaGFyL3NjbHBfbWVtLmMtMjQ3LVx0XHRzY2xwX21lbV9jaGFuZ2Vfc3RhdGUoYWRkciwgYmxvY2tfc2l6ZSwgMCk7XG5kcml2ZXJzL3MzOTAvY2hhci9zY2xwX21lbS5jOjI0ODpcdFx0X19yZW1vdmVfbWVtb3J5KGFkZHIsIGJsb2NrX3NpemUpO1xuZHJpdmVycy9zMzkwL2NoYXIvc2NscF9tZW0uYy0yNDktI2lmZGVmIENPTkZJR19LQVNBTlxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz02ODM9c3RhdGljIGludCB2aXJ0aW9fbWVtX2JibV9hZGRfYmIoc3RydWN0IHZpcnRpb19tZW0gKnZtLCB1bnNpZ25lZCBsb25nIGJiX2lkKVxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy02OTktICovXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6NzAwOnN0YXRpYyBpbnQgdmlydGlvX21lbV9yZW1vdmVfbWVtb3J5KHN0cnVjdCB2aXJ0aW9fbWVtICp2bSwgdWludDY0X3QgYWRkcixcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03MDEtXHRcdFx0XHQgICAgdWludDY0X3Qgc2l6ZSlcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzA2LVx0XHRhZGRyICYjNDM7IHNpemUgLSAxKTtcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo3MDc6XHRyYyA9IHJlbW92ZV9tZW1vcnkoYWRkciwgc2l6ZSk7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzA4LVx0aWYgKCFyYykge1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03MjEtLypcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo3MjI6ICogU2VlIHZpcnRpb19tZW1fcmVtb3ZlX21lbW9yeSgpOiBUcnkgcmVtb3ZpbmcgYSBzaW5nbGUgTGludXggbWVtb3J5IGJsb2NrLlxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTcyMy0gKi9cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz03MjQ9c3RhdGljIGludCB2aXJ0aW9fbWVtX3NibV9yZW1vdmVfbWIoc3RydWN0IHZpcnRpb19tZW0gKnZtLCB1bnNpZ25lZCBsb25nIG1iX2lkKVxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03MjgtXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6NzI5Olx0cmV0dXJuIHZpcnRpb19tZW1fcmVtb3ZlX21lbW9yeSh2bSwgYWRkciwgc2l6ZSk7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzMwLX1cbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzM5LSAqL1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjc0MDpzdGF0aWMgaW50IHZpcnRpb19tZW1fb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeShzdHJ1Y3QgdmlydGlvX21lbSAqdm0sXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzQxLVx0XHRcdFx0XHRcdHVpbnQ2NF90IGFkZHIsXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTc0OS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo3NTA6XHRyYyA9IG9mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkoYWRkciwgc2l6ZSk7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzUxLVx0aWYgKCFyYykge1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03NjktLypcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo3NzA6ICogU2VlIHZpcnRpb19tZW1fb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSgpOiBUcnkgb2ZmbGluaW5nIGFuZCByZW1vdmluZ1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTc3MS0gKiBhIHNpbmdsZSBMaW51eCBtZW1vcnkgYmxvY2suXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jPTc3Mz1zdGF0aWMgaW50IHZpcnRpb19tZW1fc2JtX29mZmxpbmVfYW5kX3JlbW92ZV9tYihzdHJ1Y3QgdmlydGlvX21lbSAqdm0sXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTc3OC1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo3Nzk6XHRyZXR1cm4gdmlydGlvX21lbV9vZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KHZtLCBhZGRyLCBzaXplKTtcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03ODAtfVxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz03ODg9c3RhdGljIGludCB2aXJ0aW9fbWVtX3NibV90cnlfcmVtb3ZlX3VucGx1Z2dlZF9tYihzdHJ1Y3QgdmlydGlvX21lbSAqdm0sXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTc5OS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo4MDA6XHQvKiBvZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KCkgd29ya3MgZm9yIG9ubGluZSBhbmQgb2ZmbGluZSBtZW1vcnkuICovXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtODAxLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZtLVx1MDAzZWhvdHBsdWdfbXV0ZXgpO1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy04MTAtLypcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo4MTE6ICogU2VlIHZpcnRpb19tZW1fb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSgpOiBUcnkgdG8gb2ZmbGluZSBhbmQgcmVtb3ZlIGFcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy04MTItICogYWxsIExpbnV4IG1lbW9yeSBibG9ja3MgY292ZXJlZCBieSB0aGUgYmlnIGJsb2NrLlxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz04MTQ9c3RhdGljIGludCB2aXJ0aW9fbWVtX2JibV9vZmZsaW5lX2FuZF9yZW1vdmVfYmIoc3RydWN0IHZpcnRpb19tZW0gKnZtLFxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy04MTktXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6ODIwOlx0cmV0dXJuIHZpcnRpb19tZW1fb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSh2bSwgYWRkciwgc2l6ZSk7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtODIxLX1cbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oPTE1NT1pbnQgY3JlYXRlX21lbW9yeV9ibG9ja19kZXZpY2VzKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgc2l6ZSxcbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oLTE1Ny1cdFx0XHRcdHN0cnVjdCBtZW1vcnlfZ3JvdXAgKmdyb3VwKTtcbmluY2x1ZGUvbGludXgvbWVtb3J5Lmg6MTU4OnZvaWQgcmVtb3ZlX21lbW9yeV9ibG9ja19kZXZpY2VzKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7XG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oLTE1OS1leHRlcm4gdm9pZCBtZW1vcnlfZGV2X2luaXQodm9pZCk7XG4tLVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oPTEzMz1zdGF0aWMgaW5saW5lIGJvb2wgbW92YWJsZV9ub2RlX2lzX2VuYWJsZWQodm9pZClcbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMTM3LVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjEzODpleHRlcm4gdm9pZCBhcmNoX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSwgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXAsXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMTM5LVx0XHRcdCAgICAgICBzdHJ1Y3QgZGV2X3BhZ2VtYXAgKnBnbWFwKTtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9MjY1PWV4dGVybiBpbnQgb2ZmbGluZV9wYWdlcyh1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcyxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yNjYtXHRcdFx0IHN0cnVjdCB6b25lICp6b25lLCBzdHJ1Y3QgbWVtb3J5X2dyb3VwICpncm91cCk7XG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MjY3OmV4dGVybiBpbnQgcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKTtcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDoyNjg6ZXh0ZXJuIHZvaWQgX19yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpO1xuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjI2OTpleHRlcm4gaW50IG9mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSk7XG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjcwLVxuLS1cbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaD0yNzQ9c3RhdGljIGlubGluZSBpbnQgb2ZmbGluZV9wYWdlcyh1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcyxcbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjc5LVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjI4MDpzdGF0aWMgaW5saW5lIGludCByZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjgxLXtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjg0LVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjI4NTpzdGF0aWMgaW5saW5lIHZvaWQgX19yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpIHt9XG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjg2LSNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRSAqL1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmM9MTQwNj1zdGF0aWMgdm9pZCBhbHRtYXBfZnJlZShzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcClcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE0MTEtXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE0MTI6c3RhdGljIHZvaWQgcmVtb3ZlX21lbW9yeV9ibG9ja3NfYW5kX2FsdG1hcHModTY0IHN0YXJ0LCB1NjQgc2l6ZSlcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTQxMy17XG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNDMzLVxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNDM0Olx0XHRyZW1vdmVfbWVtb3J5X2Jsb2NrX2RldmljZXMoY3VyX3N0YXJ0LCBtZW1ibG9ja19zaXplKTtcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTQzNTpcdFx0YXJjaF9yZW1vdmVfbWVtb3J5KGN1cl9zdGFydCwgbWVtYmxvY2tfc2l6ZSwgYWx0bWFwLCBOVUxMKTtcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTQzNi1cdFx0YWx0bWFwX2ZyZWUoYWx0bWFwKTtcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTE0NDA9c3RhdGljIGludCBjcmVhdGVfYWx0bWFwc19hbmRfbWVtb3J5X2Jsb2NrcyhpbnQgbmlkLCBzdHJ1Y3QgbWVtb3J5X2dyb3VwICpncm91cCxcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE0NzQtXHRcdGlmIChyZXQpIHtcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTQ3NTpcdFx0XHRhcmNoX3JlbW92ZV9tZW1vcnkoY3VyX3N0YXJ0LCBtZW1ibG9ja19zaXplLCBwYXJhbXMuYWx0bWFwLCBOVUxMKTtcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTQ3Ni1cdFx0XHRhbHRtYXBfZnJlZShwYXJhbXMuYWx0bWFwKTtcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE0ODMtXHRpZiAocmV0IFx1MDAyNlx1MDAyNiBjdXJfc3RhcnQgIT0gc3RhcnQpXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE0ODQ6XHRcdHJlbW92ZV9tZW1vcnlfYmxvY2tzX2FuZF9hbHRtYXBzKHN0YXJ0LCBjdXJfc3RhcnQgLSBzdGFydCk7XG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE0ODUtXHRyZXR1cm4gcmV0O1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmM9MTQ5ND1pbnQgYWRkX21lbW9yeV9yZXNvdXJjZShpbnQgbmlkLCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcywgbWhwX3QgbWhwX2ZsYWdzKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMTU2MC1cdFx0aWYgKHJldCkge1xubW0vbWVtb3J5X2hvdHBsdWcuYzoxNTYxOlx0XHRcdGFyY2hfcmVtb3ZlX21lbW9yeShzdGFydCwgc2l6ZSwgcGFyYW1zLmFsdG1hcCwgTlVMTCk7XG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE1NjItXHRcdFx0Z290byBlcnJvcjtcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTIyMjE9c3RhdGljIGludCBtZW1vcnlfYmxvY2tzX2hhdmVfYWx0bWFwcyh1NjQgc3RhcnQsIHU2NCBzaXplKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMjI0MC1cbm1tL21lbW9yeV9ob3RwbHVnLmM6MjI0MTpzdGF0aWMgaW50IHRyeV9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyNDIte1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMjI3NC1cdFx0ICovXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIyNzU6XHRcdHJlbW92ZV9tZW1vcnlfYmxvY2tfZGV2aWNlcyhzdGFydCwgc2l6ZSk7XG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIyNzY6XHRcdGFyY2hfcmVtb3ZlX21lbW9yeShzdGFydCwgc2l6ZSwgTlVMTCwgTlVMTCk7XG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyNzctXHR9IGVsc2Uge1xubW0vbWVtb3J5X2hvdHBsdWcuYy0yMjc4LVx0XHQvKiBhbGwgbWVtYmxvY2tzIGluIHRoZSByYW5nZSBoYXZlIGFsdG1hcHMgKi9cbm1tL21lbW9yeV9ob3RwbHVnLmM6MjI3OTpcdFx0cmVtb3ZlX21lbW9yeV9ibG9ja3NfYW5kX2FsdG1hcHMoc3RhcnQsIHNpemUpO1xubW0vbWVtb3J5X2hvdHBsdWcuYy0yMjgwLVx0fVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMjI5NC0vKipcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjI5NTogKiBfX3JlbW92ZV9tZW1vcnkgLSBSZW1vdmUgbWVtb3J5IGlmIGV2ZXJ5IG1lbW9yeSBibG9jayBpcyBvZmZsaW5lXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyOTYtICogQHN0YXJ0OiBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSByZWdpb24gdG8gcmVtb3ZlXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzAyLSAqL1xubW0vbWVtb3J5X2hvdHBsdWcuYzoyMzAzOnZvaWQgX19yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIzMDQte1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMwOS1cdCAqL1xubW0vbWVtb3J5X2hvdHBsdWcuYzoyMzEwOlx0aWYgKHRyeV9yZW1vdmVfbWVtb3J5KHN0YXJ0LCBzaXplKSlcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMxMS1cdFx0QlVHKCk7XG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzE3LSAqL1xubW0vbWVtb3J5X2hvdHBsdWcuYzoyMzE4OmludCByZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIzMTkte1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMyMi1cdGxvY2tfZGV2aWNlX2hvdHBsdWcoKTtcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjMyMzpcdHJjID0gdHJ5X3JlbW92ZV9tZW1vcnkoc3RhcnQsIHNpemUpO1xubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzI0LVx0dW5sb2NrX2RldmljZV9ob3RwbHVnKCk7XG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzI3LX1cbm1tL21lbW9yeV9ob3RwbHVnLmM6MjMyODpFWFBPUlRfU1lNQk9MX0dQTChyZW1vdmVfbWVtb3J5KTtcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMyOS1cbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTIzNTk9c3RhdGljIGludCB0cnlfcmVvbmxpbmVfbWVtb3J5X2Jsb2NrKHN0cnVjdCBtZW1vcnlfYmxvY2sgKm1lbSwgdm9pZCAqYXJnKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMjM4Mi0gKi9cbm1tL21lbW9yeV9ob3RwbHVnLmM6MjM4MzppbnQgb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzg0LXtcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTI0MTgtXHRpZiAoIXJjKSB7XG5tbS9tZW1vcnlfaG90cGx1Zy5jOjI0MTk6XHRcdHJjID0gdHJ5X3JlbW92ZV9tZW1vcnkoc3RhcnQsIHNpemUpO1xubW0vbWVtb3J5X2hvdHBsdWcuYy0yNDIwLVx0XHRpZiAocmMpXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yNDM3LX1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzQxOQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDI3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgTWVtb3J5IEhvdHBsdWcgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgSSBzZWUgYHJlbW92ZV9tZW1vcnlgIGFuZCBgb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeWAgYXJlIGV4cG9ydGVkLiBJJiMzOTttIGFsc28gc2VlaW5nIGB0cnlfb2ZmbGluZV9ub2RlYCBnZXQgY2FsbGVkIGZyb20gYGFjcGlfcHJvY2Vzc29yX3Bvc3RfZWplY3RgIOKAkyBpbnRlcmVzdGluZy4gV2FpdCwgYHRyeV9vZmZsaW5lX25vZGVgIGdldHMgY2FsbGVkIHdoZW4gYSBub2RlIGhhcyAqbm8qIG1lbW9yeSBvciBDUFVzIGxlZnQsIHJpZ2h0PyBTbyB0aGUgY3J1Y2lhbCBxdWVzdGlvbiBpcywgaXMgYHRyeV9vZmZsaW5lX25vZGVgIGFjdHVhbGx5ICpyZWFjaGFibGUqIGluIHRoaXMgY29udGV4dD8gQWgsIHllcywgbWVtb3J5IGhvdHBsdWcgbWFrZXMgaXQgcmVhY2hhYmxlLgoKQnV0LCBhbmQgdGhpcyBpcyBpbXBvcnRhbnQsIHRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IGludHJvZHVjZXMgYHN5bmNfdm1fc3RhdHMoKWAgYmVmb3JlIGBub2RlX3NldF9vZmZsaW5lKG5pZClgLiBUaGUgY29tbWl0IG1lc3NhZ2UgaXMgdmVyeSBjbGVhcjogJiMzNDtGb2xkIGFueSBwZW5kaW5nIHBlci1jcHUgdm1zdGF0IGRpZmZzIGludG8gdGhlIGdsb2JhbCBjb3VudGVycyBmaXJzdDogb25jZSB0aGUgbm9kZSBsZWF2ZXMgdGhlIG9ubGluZSBzZXQgdGhlIHBlcmlvZGljIGZvbGQgc2tpcHMgaXQsIG9ycGhhbmluZyB0aGUgcmVzaWR1YWwgb24gYSBsYXRlciBvbmxpbmUuJiMzNDsgVGhhdCBtYWtlcyBzZW5zZSwgdGhleSYjMzk7cmUgcHJldmVudGluZyBvcnBoYW5lZCB2bXN0YXQgZGlmZnMuIFRoaXMgaXMgZGVmaW5pdGVseSBhICpmdW5jdGlvbmFsKiBjaGFuZ2U7IHdlJiMzOTtyZSBmaXhpbmcgYSBwb3RlbnRpYWwgYnVnIHdoZXJlIHRoZXNlIGRpZmZzIGNvdWxkIGJlIGxvc3QuCgpTbywgaXMgaXQgd29ydGggZnV6emluZz8gQWJzb2x1dGVseSwgdGhpcyBpcyBjb3JlIGtlcm5lbCBsb2dpYy4gR2l2ZW4gdGhpcywgSSBuZWVkIHRvIGZvY3VzIG9uIGEgZmV3IGtleSBmdW5jdGlvbnM6IGB0cnlfb2ZmbGluZV9ub2RlYCwgYHN5bmNfdm1fc3RhdHNgLCBhbmQgYHZtc3RhdF9mb2xkX3dvcmtgLgoKQW5kIG9mIGNvdXJzZSwgd2hhdCBjb25maWdzIGFyZSBuZWVkZWQgdG8gbWFrZSB0aGlzIGNvZGUgYWN0aXZlPyBJIG5lZWQgYENPTkZJR19NRU1PUllfSE9UUExVR2AgYW5kIGBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRWAuIEkmIzM5O2xsIGRvdWJsZS1jaGVjayBgbW0vbWVtb3J5X2hvdHBsdWcuY2AgYW5kIGBtbS92bXN0YXQuY2AgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19NRU1PUllfSE9UUExVRyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNzQ1IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL21lbW9yeS1ob3RwbHVnLnJzdD0yNzY9VGhlIGZvbGxvd2luZyBmaWxlcyBhcmUgY3VycmVudGx5IGRlZmluZWQ6XG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3QtMzAwLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3Q6MzAxOlx0XHQgICAgICAgQXZhaWxhYmlsaXR5IGRlcGVuZHMgb24gdGhlIENPTkZJR19NRU1PUllfSE9UUExVRyBrZXJuZWxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vbWVtb3J5LWhvdHBsdWcucnN0LTMwMi1cdFx0ICAgICAgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLlxuLS1cbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdD0yMTA9R2VuZXJhbFxuLS1cbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yNDYtICBBIGxvY2sgdGhhdCBwcm90ZWN0cyB0aGUgZmllbGRzIGRlZmluaW5nIHRoZSBub2RlIGV4dGVudHMuIE9ubHkgZGVmaW5lZCB3aGVuXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q6MjQ3OiAgYXQgbGVhc3Qgb25lIG9mIGBgQ09ORklHX01FTU9SWV9IT1RQTFVHYGAgb3JcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yNDgtICBgYENPTkZJR19ERUZFUlJFRF9TVFJVQ1RfUEFHRV9JTklUYGAgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBlbmFibGVkLlxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTI0OS0gIGBgcGdkYXRfcmVzaXplX2xvY2soKWBgIGFuZCBgYHBnZGF0X3Jlc2l6ZV91bmxvY2soKWBgIGFyZSBwcm92aWRlZCB0b1xuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjI1MDogIG1hbmlwdWxhdGUgYGBub2RlX3NpemVfbG9ja2BgIHdpdGhvdXQgY2hlY2tpbmcgZm9yIGBgQ09ORklHX01FTU9SWV9IT1RQTFVHYGBcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yNTEtICBvciBgYENPTkZJR19ERUZFUlJFRF9TVFJVQ1RfUEFHRV9JTklUYGAuXG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0PTM3Nz1HZW5lcmFsXG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTQ4OC0gIGVhcmx5IGJvb3QsIGV4Y2x1ZGluZyBob3RwbHVnZ2VkIG1lbW9yeS4gRGVmaW5lZCBvbmx5IHdoZW5cbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdDo0ODk6ICBgYENPTkZJR19NRU1PUllfSE9UUExVR2BgIGlzIGVuYWJsZWQgYW5kIGluaXRpYWxpemVkIGJ5XG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtNDkwLSAgYGBjYWxjdWxhdGVfbm9kZV90b3RhbHBhZ2VzKClgYC5cbi0tXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtNTA4LSAgdGhlIG1haW4gYWxsb2NhdG9yIHBhdGguIEhvd2V2ZXIsIHRoZSBzZXFsb2NrIGlzIHdyaXR0ZW4gcXVpdGUgaW5mcmVxdWVudGx5LlxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjUwOTogIERlZmluZWQgb25seSB3aGVuIGBgQ09ORklHX01FTU9SWV9IT1RQTFVHYGAgaXMgZW5hYmxlZC5cbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC01MTAtXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdD0yMDU9bm9kZV96b25lbGlzdHPlvJXnlKjjgIJcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTIzNC1gYG5vZGVfc2l6ZV9sb2NrYGBcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q6MjM1OuS4gOS4quS/neaKpOWumuS5ieiKgueCueiMg+WbtOWtl+auteeahOmUgeOAguS7heWcqOW8gOWQr+S6hiBgYENPTkZJR19NRU1PUllfSE9UUExVR2BgIOaIllxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yMzYtYGBDT05GSUdfREVGRVJSRURfU1RSVUNUX1BBR0VfSU5JVGBgIOmFjee9rumAiemhueS4reeahOafkOS4gOS4quaXtuaJjeWumuS5ieOAguaPkFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yMzct5L6b5LqGIGBgcGdkYXRfcmVzaXplX2xvY2soKWBgIOWSjCBgYHBnZGF0X3Jlc2l6ZV91bmxvY2soKWBgIOeUqOadpeaTjeS9nFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdDoyMzg6YGBub2RlX3NpemVfbG9ja2Bg77yM6ICM5peg6ZyA5qOA5p+lIGBgQ09ORklHX01FTU9SWV9IT1RQTFVHYGAg5oiWXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTIzOS1gYENPTkZJR19ERUZFUlJFRF9TVFJVQ1RfUEFHRV9JTklUYGAg6YCJ6aG544CCXG4tLVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz0xMzA9Q09ORklHX0JMS19JTkxJTkVfRU5DUllQVElPTj15XG4tLVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy0xMzItIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjEzMzpDT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy0xMzQtQ09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxuLS1cbmFyY2gvYXJtNjQvbW0vbW11LmM9MTQyNT12b2lkIF9faW5pdCBwYWdpbmdfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtNjQvbW0vbW11LmMtMTQzNC1cbmFyY2gvYXJtNjQvbW0vbW11LmM6MTQzNTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL2FybTY0L21tL21tdS5jLTE0MzYtc3RhdGljIHZvaWQgZnJlZV9ob3RwbHVnX3BhZ2VfcmFuZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIHNpemVfdCBzaXplLFxuLS1cbmFyY2gvYXJtNjQvbW0vbW11LmM9MTc4ND1pbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIGludCBub2RlLFxuLS1cbmFyY2gvYXJtNjQvbW0vbW11LmMtMTc5Ny1cbmFyY2gvYXJtNjQvbW0vbW11LmM6MTc5ODojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL2FybTY0L21tL21tdS5jLTE3OTktdm9pZCB2bWVtbWFwX2ZyZWUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXG4tLVxuYXJjaC9hcm02NC9tbS9tbXUuYy0xODA2LX1cbmFyY2gvYXJtNjQvbW0vbW11LmM6MTgwNzojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXG5hcmNoL2FybTY0L21tL21tdS5jLTE4MDgtXG4tLVxuYXJjaC9hcm02NC9tbS9tbXUuYz0xODkxPWludCBwdWRfZnJlZV9wbWRfcGFnZShwdWRfdCAqcHVkcCwgdW5zaWduZWQgbG9uZyBhZGRyKVxuLS1cbmFyY2gvYXJtNjQvbW0vbW11LmMtMTkzOS1cbmFyY2gvYXJtNjQvbW0vbW11LmM6MTk0MDojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL2FybTY0L21tL21tdS5jLTE5NDEtc3RhdGljIHZvaWQgX19yZW1vdmVfcGdkX21hcHBpbmcocGdkX3QgKnBnZGlyLCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1NjQgc2l6ZSlcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnPTk3PUNPTkZJR19aU01BTExPQz15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTk4LSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzo5OTpDT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZy0xMDAtIyBDT05GSUdfTUhQX0RFRkFVTFRfT05MSU5FX1RZUEVfT0ZGTElORSBpcyBub3Qgc2V0XG4tLVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZz0xMTI9Q09ORklHX1pTTUFMTE9DPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTEzLSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzoxMTQ6Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTE1LSMgQ09ORklHX01IUF9ERUZBVUxUX09OTElORV9UWVBFX09GRkxJTkUgaXMgbm90IHNldFxuLS1cbmFyY2gvbG9vbmdhcmNoL21tL2luaXQuYz02ND12b2lkIF9faW5pdCBmaXhyYW5nZV9pbml0KHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBwZ2RfdCAqcGdkX2Jhc2UpXG4tLVxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTEwNS1cbmFyY2gvbG9vbmdhcmNoL21tL2luaXQuYzoxMDY6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTEwNy1pbnQgYXJjaF9hZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCBtaHBfcGFyYW1zICpwYXJhbXMpXG4tLVxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jPTE0Mz1pbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXG4tLVxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTE1Mi1cbmFyY2gvbG9vbmdhcmNoL21tL2luaXQuYzoxNTM6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTE1NC12b2lkIHZtZW1tYXBfZnJlZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXApXG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc9NTc9Q09ORklHX05VTUE9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6NTg6Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnLTU5LUNPTkZJR19NRU1PUllfSE9UUkVNT1ZFPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc9ODY9Q09ORklHX1NIVUZGTEVfUEFHRV9BTExPQ0FUT1I9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnLTg3LSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnOjg4OkNPTkZJR19NRU1PUllfSE9UUExVRz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctODktQ09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGd0YWJsZS5oPTEwMTU9c3RhdGljIGlubGluZSBpbnQgX19tZW1pbml0IHZtZW1tYXBfY3JlYXRlX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUuaC0xMDIzLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ3RhYmxlLmg6MTAyNDojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUuaC0xMDI1LXN0YXRpYyBpbmxpbmUgdm9pZCB2bWVtbWFwX3JlbW92ZV9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9yYWRpeC5oPTMzMz1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcmFkaXhfX2dldF90cmVlX3NpemUodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4LmgtMzQ4LVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9yYWRpeC5oOjM0OTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4LmgtMzUwLWludCByYWRpeF9fY3JlYXRlX3NlY3Rpb25fbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4Lmg9MzUyPWludCByYWRpeF9fcmVtb3ZlX3NlY3Rpb25fbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7XG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4Lmg6MzUzOiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaC0zNTQtXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21hY2hkZXAuaD0yNj1zdHJ1Y3QgbWFjaGRlcF9jYWxscyB7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21hY2hkZXAuaC0zMy0jZW5kaWZcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9tYWNoZGVwLmg6MzQ6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21hY2hkZXAuaC0zNS1cdHVuc2lnbmVkIGxvbmdcdCgqbWVtb3J5X2Jsb2NrX3NpemUpKHZvaWQpO1xuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9tbXpvbmUuaD0yOD1leHRlcm4gY3B1bWFza192YXJfdCBub2RlX3RvX2NwdW1hc2tfbWFwW107XG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbW16b25lLmg6Mjk6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21tem9uZS5oLTMwLWV4dGVybiB1bnNpZ25lZCBsb25nIG1heF9wZm47XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NwYXJzZW1lbS5oLTE0LVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NwYXJzZW1lbS5oOjE1OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9zcGFyc2VtZW0uaC0xNi1leHRlcm4gaW50IHJlbW92ZV9zZWN0aW9uX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpO1xuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9zcGFyc2VtZW0uaD0yMz1zdGF0aWMgaW5saW5lIGludCBob3RfYWRkX3Njbl90b19uaWQodW5zaWduZWQgbG9uZyBzY25fYWRkcilcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc3BhcnNlbWVtLmgtMjctI2VuZGlmIC8qIENPTkZJR19OVU1BICovXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc3BhcnNlbWVtLmg6Mjg6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NwYXJzZW1lbS5oLTI5LSNlbmRpZiAvKiBfX0tFUk5FTF9fICovXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zZXR1cF82NC5jPTgzMj12b2lkIF9faW5pdCBzZXR1cF9wZXJfY3B1X2FyZWFzKHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zZXR1cF82NC5jLTg4MS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvc2V0dXBfNjQuYzo4ODI6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9zZXR1cF82NC5jLTg4My11bnNpZ25lZCBsb25nIG1lbW9yeV9ibG9ja19zaXplX2J5dGVzKHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL2tleGVjL2NyYXNoLmM9NDcyPXVuc2lnbmVkIGludCBhcmNoX2NyYXNoX2dldF9lbGZjb3JlaGRyX3NpemUodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMva2V4ZWMvY3Jhc2guYy00NzctXHRwaGRyX2NudCA9IG51bV9wb3NzaWJsZV9jcHVzKCkgJiM0MzsgMTtcbmFyY2gvcG93ZXJwYy9rZXhlYy9jcmFzaC5jOjQ3ODpcdGlmIChJU19FTkFCTEVEKENPTkZJR19NRU1PUllfSE9UUExVRykpXG5hcmNoL3Bvd2VycGMva2V4ZWMvY3Jhc2guYy00NzktXHRcdHBoZHJfY250ICYjNDM7PSBDT05GSUdfQ1JBU0hfTUFYX01FTU9SWV9SQU5HRVM7XG4tLVxuYXJjaC9wb3dlcnBjL2tleGVjL2ZpbGVfbG9hZF82NC5jPTM3Nz1zdGF0aWMgdW5zaWduZWQgaW50IGtkdW1wX2V4dHJhX2VsZmNvcmVoZHJfc2l6ZShzdHJ1Y3QgY3Jhc2hfbWVtICpjbWVtKVxuYXJjaC9wb3dlcnBjL2tleGVjL2ZpbGVfbG9hZF82NC5jLTM3OC17XG5hcmNoL3Bvd2VycGMva2V4ZWMvZmlsZV9sb2FkXzY0LmM6Mzc5OiNpZiBkZWZpbmVkKENPTkZJR19DUkFTSF9IT1RQTFVHKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfTUVNT1JZX0hPVFBMVUcpXG5hcmNoL3Bvd2VycGMva2V4ZWMvZmlsZV9sb2FkXzY0LmMtMzgwLVx0dW5zaWduZWQgaW50IGV4dHJhX3N6ID0gMDtcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmM9MTA3PWludCBfX21lbWluaXQgaGFzaF9fdm1lbW1hcF9jcmVhdGVfbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYy0xMjktXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmM6MTMwOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYy0xMzEtdm9pZCBoYXNoX192bWVtbWFwX3JlbW92ZV9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYz0xMTk2PXN0YXRpYyB1bnNpZ25lZCBsb25nIF9faW5pdCBodGFiX2dldF90YWJsZV9zaXplKHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0xMjEwLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYzoxMjExOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTIxMi1zdGF0aWMgaW50IHJlc2l6ZV9ocHRfZm9yX2hvdHBsdWcodW5zaWduZWQgbG9uZyBuZXdfbWVtX3NpemUpXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYz0xMjYyPWludCBoYXNoX19yZW1vdmVfc2VjdGlvbl9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTI3NS19XG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jOjEyNzY6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0xMjc3LVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM9Mjc1PW5vdHJhY2Ugdm9pZCBtbXVfY2xlYW51cF9hbGwodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jLTI4NC1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM6Mjg1OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmMtMjg2LWludCBfX21lbWluaXQgY3JlYXRlX3NlY3Rpb25fbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jPTI5NT1pbnQgX19tZW1pbml0IHJlbW92ZV9zZWN0aW9uX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYy0zMDEtfVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYzozMDI6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYy0zMDMtXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYz02Nzk9bm90cmFjZSB2b2lkIHJhZGl4X19tbXVfY2xlYW51cF9hbGwodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTY5MS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM6NjkyOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtNjkzLXN0YXRpYyB2b2lkIGZyZWVfcHRlX3RhYmxlKHB0ZV90ICpwdGVfc3RhcnQsIHBtZF90ICpwbWQpXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYz05NDY9aW50IF9fbWVtaW5pdCByYWRpeF9fcmVtb3ZlX3NlY3Rpb25fbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTk1MC19XG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jOjk1MTojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTk1Mi1cbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jPTEzMDY9aW50IF9fbWVtaW5pdCB2bWVtbWFwX3BvcHVsYXRlX2NvbXBvdW5kX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtMTQxMy1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM6MTQxNDojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTE0MTUtdm9pZCBfX21lbWluaXQgcmFkaXhfX3ZtZW1tYXBfcmVtb3ZlX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBwYWdlX3NpemUpXG4tLVxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYz0yNzY9aW50IF9fbWVtaW5pdCB2bWVtbWFwX3BvcHVsYXRlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBpbnQgbm9kZSxcbi0tXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jLTI4Ny1cbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmM6Mjg4OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmMtMjg5LXN0YXRpYyB1bnNpZ25lZCBsb25nIHZtZW1tYXBfbGlzdF9mcmVlKHVuc2lnbmVkIGxvbmcgc3RhcnQpXG4tLVxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYz00NjY9c3RhdGljIGludCBfX2luaXQgZHRfc2Nhbl9tbXVfcGlkX3dpZHRoKHVuc2lnbmVkIGxvbmcgbm9kZSxcbi0tXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jLTQ5OC0gKi9cbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmM6NDk5OiNpZm5kZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jLTUwMC0jZGVmaW5lIERFRkFVTFRfTUVNT1JZX0JMT0NLX1NJWkVcdFNaXzE2TVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9tZW0uYz01Mj1FWFBPUlRfU1lNQk9MKF9fcGh5c19tZW1fYWNjZXNzX3Byb3QpO1xuYXJjaC9wb3dlcnBjL21tL21lbS5jLTUzLVxuYXJjaC9wb3dlcnBjL21tL21lbS5jOjU0OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9tbS9tZW0uYy01NS1zdGF0aWMgREVGSU5FX01VVEVYKGxpbmVhcl9tYXBwaW5nX211dGV4KTtcbi0tXG5hcmNoL3Bvd2VycGMvbW0vbW11X2RlY2wuaD0xNzQ9c3RhdGljIGlubGluZSBib29sIGRlYnVnX3BhZ2VhbGxvY19lbmFibGVkX29yX2tmZW5jZSh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9tbXVfZGVjbC5oLTE3OC1cbmFyY2gvcG93ZXJwYy9tbS9tbXVfZGVjbC5oOjE3OTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3Bvd2VycGMvbW0vbW11X2RlY2wuaC0xODAtaW50IGNyZWF0ZV9zZWN0aW9uX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXG4tLVxuYXJjaC9wb3dlcnBjL21tL25vaGFzaC9ib29rM2VfcGd0YWJsZS5jPTIzPWludCBfX21lbWluaXQgdm1lbW1hcF9jcmVhdGVfbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvYm9vazNlX3BndGFibGUuYy00Ni1cbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvYm9vazNlX3BndGFibGUuYzo0NzojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL2Jvb2szZV9wZ3RhYmxlLmMtNDgtdm9pZCB2bWVtbWFwX3JlbW92ZV9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4tLVxuYXJjaC9wb3dlcnBjL21tL251bWEuYz0xMjQxPWVhcmx5X3BhcmFtKFwmIzM0O251bWFcJiMzNDssIGVhcmx5X251bWEpO1xuYXJjaC9wb3dlcnBjL21tL251bWEuYy0xMjQyLVxuYXJjaC9wb3dlcnBjL21tL251bWEuYzoxMjQzOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9tbS9udW1hLmMtMTI0NC0vKlxuLS1cbmFyY2gvcG93ZXJwYy9tbS9udW1hLmM9MTM2NT11NjQgbWVtb3J5X2hvdHBsdWdfbWF4KHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL21tL251bWEuYy0xMzY4LX1cbmFyY2gvcG93ZXJwYy9tbS9udW1hLmM6MTM2OTojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXG5hcmNoL3Bvd2VycGMvbW0vbnVtYS5jLTEzNzAtXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3NldHVwLmM9NDM3PXN0YXRpYyB2b2lkIHBudl9rZXhlY19jcHVfZG93bihpbnQgY3Jhc2hfc2h1dGRvd24sIGludCBzZWNvbmRhcnkpXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3NldHVwLmMtNDgyLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3NldHVwLmM6NDgzOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9zZXR1cC5jLTQ4NC1zdGF0aWMgdW5zaWduZWQgbG9uZyBwbnZfbWVtb3J5X2Jsb2NrX3NpemUodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvc2V0dXAuYz01Njk9ZGVmaW5lX21hY2hpbmUocG93ZXJudikge1xuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9zZXR1cC5jLTU4NC0jZW5kaWZcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9zZXR1cC5jOjU4NTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvc2V0dXAuYy01ODYtXHQubWVtb3J5X2Jsb2NrX3NpemVcdD0gcG52X21lbW9yeV9ibG9ja19zaXplLFxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9NYWtlZmlsZT0xNz1vYmotJChDT05GSUdfSE9UUExVR19DUFUpXHQmIzQzOz0gaG90cGx1Zy1jcHUub1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19NRU1PUllfSE9UUExVRylcdCYjNDM7PSBob3RwbHVnLW1lbW9yeS5vIHBtZW0ub1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL01ha2VmaWxlLTE5LVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9pb21tdS5jPTEyODY9c3RhdGljIHBoeXNfYWRkcl90IGRkd19tZW1vcnlfaG90cGx1Z19tYXgodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaW9tbXUuYy0xMjg5LVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2lvbW11LmM6MTI5MDojaWYgZGVmaW5lZChDT05GSUdfTlVNQSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX01FTU9SWV9IT1RQTFVHKVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2lvbW11LmMtMTI5MS1cdG1heF9hZGRyID0gaG90X2FkZF9kcmNvbmZfbWVtb3J5X21heCgpO1xuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9wc2VyaWVzLmg9NjA9aW50IGhhbmRsZV9kbHBhcl9lcnJvcmxvZyhzdHJ1Y3QgcHNlcmllc19ocF9lcnJvcmxvZyAqaHBfZXJybG9nKTtcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9wc2VyaWVzLmgtNjEtXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvcHNlcmllcy5oOjYyOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9wc2VyaWVzLmgtNjMtaW50IGRscGFyX21lbW9yeShzdHJ1Y3QgcHNlcmllc19ocF9lcnJvcmxvZyAqaHBfZWxvZyk7XG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NldHVwLmM9MTExOD1zdGF0aWMgaW50IHBTZXJpZXNfcGNpX3Byb2JlX21vZGUoc3RydWN0IHBjaV9idXMgKmJ1cylcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYy0xMTI0LVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NldHVwLmM6MTEyNTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYy0xMTI2LXN0YXRpYyB1bnNpZ25lZCBsb25nIHBzZXJpZXNfbWVtb3J5X2Jsb2NrX3NpemUodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYz0xMTM5PWRlZmluZV9tYWNoaW5lKHBzZXJpZXMpIHtcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYy0xMTYxLSNlbmRpZlxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NldHVwLmM6MTE2MjojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYy0xMTYzLVx0Lm1lbW9yeV9ibG9ja19zaXplXHQ9IHBzZXJpZXNfbWVtb3J5X2Jsb2NrX3NpemUsXG4tLVxuYXJjaC9yaXNjdi9tbS9pbml0LmM9MTQyOT12b2lkIF9faW5pdCBwZ3RhYmxlX2NhY2hlX2luaXQodm9pZClcbi0tXG5hcmNoL3Jpc2N2L21tL2luaXQuYy0xNDMzLVx0XHRwcmVhbGxvY2F0ZV9wZ2RfcGFnZXNfcmFuZ2UoTU9EVUxFU19WQUREUiwgTU9EVUxFU19FTkQsIFwmIzM0O2JwZi9tb2R1bGVzXCYjMzQ7KTtcbmFyY2gvcmlzY3YvbW0vaW5pdC5jOjE0MzQ6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfTUVNT1JZX0hPVFBMVUcpKSB7XG5hcmNoL3Jpc2N2L21tL2luaXQuYy0xNDM1LVx0XHRwcmVhbGxvY2F0ZV9wZ2RfcGFnZXNfcmFuZ2UoVk1FTU1BUF9TVEFSVCwgVk1FTU1BUF9FTkQsIFwmIzM0O3ZtZW1tYXBcJiMzNDspO1xuLS1cbmFyY2gvcmlzY3YvbW0vaW5pdC5jPTE0NDc9c3RydWN0IGV4ZWNtZW1faW5mbyBfX2luaXQgKmV4ZWNtZW1fYXJjaF9zZXR1cCh2b2lkKVxuLS1cbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTE0NzYtXG5hcmNoL3Jpc2N2L21tL2luaXQuYzoxNDc3OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTE0Nzgtc3RhdGljIHZvaWQgX19tZW1pbml0IGZyZWVfcHRlX3RhYmxlKHB0ZV90ICpwdGVfc3RhcnQsIHBtZF90ICpwbWQpXG4tLVxuYXJjaC9yaXNjdi9tbS9pbml0LmM9MTc0MD12b2lkIF9fcmVmIHZtZW1tYXBfZnJlZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXApXG4tLVxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTc0My19XG5hcmNoL3Jpc2N2L21tL2luaXQuYzoxNzQ0OiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9MTAzPUNPTkZJR19TTFVCX1NUQVRTPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xMDQtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6MTA1OkNPTkZJR19NRU1PUllfSE9UUExVRz15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctMTA2LUNPTkZJR19NRU1PUllfSE9UUkVNT1ZFPXlcbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9OTY9Q09ORklHX1NMQUJfQlVDS0VUUz15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctOTctIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6OTg6Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy05OS1DT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XG4tLVxuYXJjaC9zMzkwL21tL2luaXQuYz0xODg9dm9pZCBfX2luaXQgc2V0dXBfcGVyX2NwdV9hcmVhcyh2b2lkKVxuLS1cbmFyY2gvczM5MC9tbS9pbml0LmMtMjA5LVxuYXJjaC9zMzkwL21tL2luaXQuYzoyMTA6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9zMzkwL21tL2luaXQuYy0yMTEtXG4tLVxuYXJjaC9zMzkwL21tL2luaXQuYz0yODE9dm9pZCBhcmNoX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSwgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXAsXG4tLVxuYXJjaC9zMzkwL21tL2luaXQuYy0yODktfVxuYXJjaC9zMzkwL21tL2luaXQuYzoyOTA6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xuYXJjaC9zMzkwL21tL2luaXQuYy0yOTEtXG4tLVxuYXJjaC9zMzkwL21tL3ZtZW0uYz01MTM9aW50IF9fbWVtaW5pdCB2bWVtbWFwX3BvcHVsYXRlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBpbnQgbm9kZSxcbi0tXG5hcmNoL3MzOTAvbW0vdm1lbS5jLTUyNi1cbmFyY2gvczM5MC9tbS92bWVtLmM6NTI3OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvczM5MC9tbS92bWVtLmMtNTI4LVxuLS1cbmFyY2gveDg2L2tlcm5lbC9jcmFzaC5jPTQxNj1pbnQgY3Jhc2hfbG9hZF9zZWdtZW50cyhzdHJ1Y3Qga2ltYWdlICppbWFnZSlcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvY3Jhc2guYy00MzYtXHQgKi9cbmFyY2gveDg2L2tlcm5lbC9jcmFzaC5jOjQzNzpcdGlmIChJU19FTkFCTEVEKENPTkZJR19NRU1PUllfSE9UUExVRykpXG5hcmNoL3g4Ni9rZXJuZWwvY3Jhc2guYy00MzgtXHRcdHBudW0gPSAyICYjNDM7IENPTkZJR19OUl9DUFVTX0RFRkFVTFQgJiM0MzsgQ09ORklHX0NSQVNIX01BWF9NRU1PUllfUkFOR0VTO1xuLS1cbmFyY2gveDg2L2tlcm5lbC9jcmFzaC5jPTQ5ND11bnNpZ25lZCBpbnQgYXJjaF9jcmFzaF9nZXRfZWxmY29yZWhkcl9zaXplKHZvaWQpXG4tLVxuYXJjaC94ODYva2VybmVsL2NyYXNoLmMtNDk5LVx0c3ogPSAyICYjNDM7IENPTkZJR19OUl9DUFVTX0RFRkFVTFQ7XG5hcmNoL3g4Ni9rZXJuZWwvY3Jhc2guYzo1MDA6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfTUVNT1JZX0hPVFBMVUcpKVxuYXJjaC94ODYva2VybmVsL2NyYXNoLmMtNTAxLVx0XHRzeiAmIzQzOz0gQ09ORklHX0NSQVNIX01BWF9NRU1PUllfUkFOR0VTO1xuLS1cbmFyY2gveDg2L2tlcm5lbC9lODIwLmM9OTA5PV9faW5pdCBzdGF0aWMgaW50IHBhcnNlX21lbW9wdChjaGFyICpwKVxuLS1cbmFyY2gveDg2L2tlcm5lbC9lODIwLmMtOTM0LVxuYXJjaC94ODYva2VybmVsL2U4MjAuYzo5MzU6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC94ODYva2VybmVsL2U4MjAuYy05MzYtXHRtYXhfbWVtX3NpemUgPSBtZW1fc2l6ZTtcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvZTgyMC5jPTEyODg9X19pbml0IHZvaWQgZTgyMF9fbWVtYmxvY2tfc2V0dXAodm9pZClcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvZTgyMC5jLTEyOTItXG5hcmNoL3g4Ni9rZXJuZWwvZTgyMC5jOjEyOTM6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC94ODYva2VybmVsL2U4MjAuYy0xMjk0LVx0Lypcbi0tXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM9ODU0PXN0YXRpYyB2b2lkIF9fbWVtaW5pdCB2bWVtbWFwX2ZsdXNoX3VudXNlZF9wbWQodm9pZClcbi0tXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmMtODY1LVxuYXJjaC94ODYvbW0vaW5pdF82NC5jOjg2NjojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmMtODY3LS8qIFJldHVybnMgdHJ1ZSBpZiB0aGUgUE1EIGlzIGNvbXBsZXRlbHkgdW51c2VkIGFuZCB0aHVzIGl0IGNhbiBiZSBmcmVlZCAqL1xuLS1cbmFyY2gveDg2L21tL2luaXRfNjQuYz05MTg9c3RhdGljIHZvaWQgX19tZW1pbml0IHZtZW1tYXBfdXNlX25ld19zdWJfcG1kKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxuLS1cbmFyY2gveDg2L21tL2luaXRfNjQuYy05NDctICovXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM6OTQ4OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gveDg2L21tL2luaXRfNjQuYy05NDktLypcbi0tXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM9MTMwMz12b2lkIF9fcmVmIGFyY2hfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcbi0tXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmMtMTMxMS19XG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM6MTMxMjojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmMtMTMxMy1cbi0tXG5hcmNoL3g4Ni94ZW4vc2V0dXAuYz01Mzc9c3RhdGljIHZvaWQgX19pbml0IHhlbl9hbGlnbl9hbmRfYWRkX2U4MjBfcmVnaW9uKHBoeXNfYWRkcl90IHN0YXJ0LFxuLS1cbmFyY2gveDg2L3hlbi9zZXR1cC5jLTU0NS1cdFx0ZW5kIFx1MDAyNj0gfigocGh5c19hZGRyX3QpUEFHRV9TSVpFIC0gMSk7XG5hcmNoL3g4Ni94ZW4vc2V0dXAuYzo1NDY6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC94ODYveGVuL3NldHVwLmMtNTQ3LVx0XHQvKlxuLS1cbmFyY2gveDg2L3hlbi9zZXR1cC5jPTc5ND1jaGFyICogX19pbml0IHhlbl9tZW1vcnlfc2V0dXAodm9pZClcbi0tXG5hcmNoL3g4Ni94ZW4vc2V0dXAuYy04MTMtXG5hcmNoL3g4Ni94ZW4vc2V0dXAuYzo4MTQ6I2lmIGRlZmluZWQoQ09ORklHX01FTU9SWV9IT1RQTFVHKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfWEVOX0JBTExPT04pXG5hcmNoL3g4Ni94ZW4vc2V0dXAuYy04MTUtXHR4ZW5fc2F2ZWRfbWF4X21lbV9zaXplID0gbWF4X21lbV9zaXplO1xuLS1cbmRyaXZlcnMvYWNwaS9udW1hL3NyYXQuYz0zNTk9YWNwaV9wYXJzZV9tZW1vcnlfYWZmaW5pdHkodW5pb24gYWNwaV9zdWJ0YWJsZV9oZWFkZXJzICpoZWFkZXIsXG4tLVxuZHJpdmVycy9hY3BpL251bWEvc3JhdC5jLTM3OS1cdFx0cmV0dXJuIDA7XG5kcml2ZXJzL2FjcGkvbnVtYS9zcmF0LmM6MzgwOlx0aG90cGx1Z2dhYmxlID0gSVNfRU5BQkxFRChDT05GSUdfTUVNT1JZX0hPVFBMVUcpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9hY3BpL251bWEvc3JhdC5jLTM4MS1cdFx0KG1hLVx1MDAzZWZsYWdzIFx1MDAyNiBBQ1BJX1NSQVRfTUVNX0hPVF9QTFVHR0FCTEUpO1xuLS1cbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jPTQyOD1zdGF0aWMgdTMyIGNhbGN1bGF0ZV9zdXBwb3J0KHZvaWQpXG4tLVxuZHJpdmVycy9hY3BpL3BjaV9yb290LmMtNDUxLSAqIEJhY2tncm91bmQgb24gaG90cGx1ZyBzdXBwb3J0LCBhbmQgbWFraW5nIGl0IGRlcGVuZCBvbiBvbmx5XG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYzo0NTI6ICogQ09ORklHX0hPVFBMVUdfUENJX1BDSUUgdnMuIGFsc28gY29uc2lkZXJpbmcgQ09ORklHX01FTU9SWV9IT1RQTFVHOlxuZHJpdmVycy9hY3BpL3BjaV9yb290LmMtNDUzLSAqXG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYzo0NTQ6ICogQ09ORklHX0FDUElfSE9UUExVR19NRU1PUlkgZG9lcyBkZXBlbmQgb24gQ09ORklHX01FTU9SWV9IT1RQTFVHLCBidXRcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jLTQ1NS0gKiB0aGVyZSBpcyBubyBleGlzdGluZyBfT1NDIGZvciBtZW1vcnkgaG90cGx1ZyBzdXBwb3J0LiBUaGUgcmVhc29uIGlzIHRoYXRcbi0tXG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYy00NzAtICogbm90IHN1cHBvcnQgYmxvY2tpbmcgaG90cGx1ZywgaXMgdG8gcmVxdWlyZSB0aGUgbWVtb3J5IGRldmljZSB0byBiZVxuZHJpdmVycy9hY3BpL3BjaV9yb290LmM6NDcxOiAqIGRpc2FibGVkIGJlZm9yZSBob3RwbHVnIGlzIGF0dGVtcHRlZC4gV2hlbiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgaXNcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jLTQ3Mi0gKiBkaXNhYmxlZCB0aGF0IHN0ZXAgd2lsbCBmYWlsIGFuZCB0aGUgcmVtb3ZlIGF0dGVtcHQgY2FuY2VsbGVkIGJ5IHRoZVxuZHJpdmVycy9hY3BpL3BjaV9yb290LmMtNDczLSAqIHVzZXIuIElmIHRoYXQgaXMgbm90IGhvbm9yZWQgYW5kIHRoZSBjYXJkIGlzIHJlbW92ZWQgYW55d2F5IHRoZW4gaXRcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jOjQ3NDogKiBkb2VzIG5vdCBtYXR0ZXIgaWYgQ09ORklHX01FTU9SWV9IT1RQTFVHIGlzIGVuYWJsZWQgb3Igbm90LCBpdCB3aWxsXG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYy00NzUtICogY2F1c2UgYSBjcmFzaCBhbmQgb3RoZXIgYmFkbmVzcy5cbi0tXG5kcml2ZXJzL2Jhc2UvTWFrZWZpbGU9MTU9b2JqLSQoQ09ORklHX05VTUEpXHQmIzQzOz0gbm9kZS5vXG5kcml2ZXJzL2Jhc2UvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX01FTU9SWV9IT1RQTFVHKSAmIzQzOz0gbWVtb3J5Lm9cbmRyaXZlcnMvYmFzZS9NYWtlZmlsZS0xNy1pZmVxICgkKENPTkZJR19TWVNGUykseSlcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9MjA3PWludCBtZW1vcnlfbm90aWZ5KGVudW0gbWVtb3J5X2Jsb2NrX3N0YXRlIHN0YXRlLCB2b2lkICp2KVxuLS1cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy0yMTEtXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6MjEyOiNpZiBkZWZpbmVkKENPTkZJR19NRU1PUllfRkFJTFVSRSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX01FTU9SWV9IT1RQTFVHKVxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTIxMy1zdGF0aWMgdW5zaWduZWQgbG9uZyBtZW1ibGtfbnJfcG9pc29uKHN0cnVjdCBtZW1vcnlfYmxvY2sgKm1lbSk7XG4tLVxuZHJpdmVycy9iYXNlL21lbW9yeS5jPTExOTY9aW50IHdhbGtfZHluYW1pY19tZW1vcnlfZ3JvdXBzKGludCBuaWQsIHdhbGtfbWVtb3J5X2dyb3Vwc19mdW5jX3QgZnVuYyxcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtMTIxNy1cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYzoxMjE4OiNpZiBkZWZpbmVkKENPTkZJR19NRU1PUllfRkFJTFVSRSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX01FTU9SWV9IT1RQTFVHKVxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTEyMTktdm9pZCBtZW1ibGtfbnJfcG9pc29uX2luYyh1bnNpZ25lZCBsb25nIHBmbilcbi0tXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jPTEwOT1zdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqbm9kZV9hY2Nlc3Nfbm9kZV9ncm91cHNbXSA9IHtcbi0tXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jLTExNC1cbmRyaXZlcnMvYmFzZS9ub2RlLmM6MTE1OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmRyaXZlcnMvYmFzZS9ub2RlLmMtMTE2LXN0YXRpYyBCTE9DS0lOR19OT1RJRklFUl9IRUFEKG5vZGVfY2hhaW4pO1xuLS1cbmRyaXZlcnMvYmFzZS9ub2RlLmM9NzY0PWludCB1bnJlZ2lzdGVyX2NwdV91bmRlcl9ub2RlKHVuc2lnbmVkIGludCBjcHUsIHVuc2lnbmVkIGludCBuaWQpXG4tLVxuZHJpdmVycy9iYXNlL25vZGUuYy03ODItXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jOjc4MzojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jLTc4NC1zdGF0aWMgdm9pZCBkb19yZWdpc3Rlcl9tZW1vcnlfYmxvY2tfdW5kZXJfbm9kZShpbnQgbmlkLFxuLS1cbmRyaXZlcnMvYmFzZS9ub2RlLmM9ODY0PXZvaWQgcmVnaXN0ZXJfbWVtb3J5X2Jsb2Nrc191bmRlcl9ub2RlX2hvdHBsdWcoaW50IG5pZCwgdW5zaWduZWQgbG9uZyBzdGFydF9wZm4sXG4tLVxuZHJpdmVycy9iYXNlL25vZGUuYy04NzAtfVxuZHJpdmVycy9iYXNlL25vZGUuYzo4NzE6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xuZHJpdmVycy9iYXNlL25vZGUuYy04NzItXG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmM9NTc5PXN0YXRpYyB2b2lkIGRpc2FibGVfcGFnZV9yZXBvcnRpbmcodm9pZCk7XG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy01ODAtXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYzo1ODE6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuZHJpdmVycy9odi9odl9iYWxsb29uLmMtNTgyLXN0YXRpYyBpbmxpbmUgYm9vbCBoYXNfcGZuX2lzX2JhY2tlZChzdHJ1Y3QgaHZfaG90YWRkX3N0YXRlICpoYXMsXG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmM9OTY4PXN0YXRpYyB2b2lkIGhvdF9hZGRfcmVxKHN0cnVjdCB3b3JrX3N0cnVjdCAqZHVtbXkpXG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtOTcwLVx0c3RydWN0IGRtX2hvdF9hZGRfcmVzcG9uc2UgcmVzcDtcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjk3MTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy05NzItXHR1bnNpZ25lZCBsb25nIHBnX3N0YXJ0LCBwZm5fY250O1xuLS1cbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTk4MC1cbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjk4MTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy05ODItXHRwZ19zdGFydCA9IGRtLVx1MDAzZWhhX3dyay5oYV9wYWdlX3JhbmdlLmZpbmZvLnN0YXJ0X3BhZ2U7XG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmM9MTkzNj1zdGF0aWMgaW50IGJhbGxvb25fcHJvYmUoc3RydWN0IGh2X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTE5NDQtXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYzoxOTQ1OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTE5NDYtXHQvKlxuLS1cbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTE5NzUtXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYzoxOTc2OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTE5NzctXHRzZXRfb25saW5lX3BhZ2VfY2FsbGJhY2soXHUwMDI2aHZfb25saW5lX3BhZ2UpO1xuLS1cbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTIwMDctY29ubmVjdF9lcnJvcjpcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjIwMDg6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMjAwOS1cdHVucmVnaXN0ZXJfbWVtb3J5X25vdGlmaWVyKFx1MDAyNmh2X21lbW9yeV9uYik7XG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmM9MjAxNT1zdGF0aWMgdm9pZCBiYWxsb29uX3JlbW92ZShzdHJ1Y3QgaHZfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMjAzOC1cdFx0dm1idXNfY2xvc2UoZGV2LVx1MDAzZWNoYW5uZWwpO1xuZHJpdmVycy9odi9odl9iYWxsb29uLmM6MjAzOTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy0yMDQwLVx0XHR1bnJlZ2lzdGVyX21lbW9yeV9ub3RpZmllcihcdTAwMjZodl9tZW1vcnlfbmIpO1xuLS1cbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jPTIwNzY9c3RhdGljIGludCBiYWxsb29uX3Jlc3VtZShzdHJ1Y3QgaHZfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMjEwMS1cdGRpc2FibGVfcGFnZV9yZXBvcnRpbmcoKTtcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjIxMDI6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMjEwMy1cdHVucmVnaXN0ZXJfbWVtb3J5X25vdGlmaWVyKFx1MDAyNmh2X21lbW9yeV9uYik7XG4tLVxuZHJpdmVycy9zMzkwL2NoYXIvTWFrZWZpbGU9MjA9b2JqLXkgJiM0Mzs9IGN0cmxjaGFyLm8ga2V5Ym9hcmQubyBkZWZrZXltYXAubyBzY2xwLm8gc2NscF9ydy5vIHNjbHBfcXVpZXNjZS5vIFxcXG4tLVxuZHJpdmVycy9zMzkwL2NoYXIvTWFrZWZpbGUtMjMtXG5kcml2ZXJzL3MzOTAvY2hhci9NYWtlZmlsZToyNDpvYmotJChDT05GSUdfTUVNT1JZX0hPVFBMVUcpICYjNDM7PSBzY2xwX21lbS5vXG5kcml2ZXJzL3MzOTAvY2hhci9NYWtlZmlsZS0yNS1vYmotJChDT05GSUdfVE4zMjcwKSAmIzQzOz0gcmF3MzI3MC5vIGNvbjMyNzAub1xuLS1cbmRyaXZlcnMveGVuL3hlbi1iYWxsb29uLmMtNTMtXG5kcml2ZXJzL3hlbi94ZW4tYmFsbG9vbi5jOjU0OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmRyaXZlcnMveGVuL3hlbi1iYWxsb29uLmMtNTUtdTY0IHhlbl9zYXZlZF9tYXhfbWVtX3NpemUgPSAwO1xuLS1cbmRyaXZlcnMveGVuL3hlbi1iYWxsb29uLmM9NjM9c3RhdGljIHZvaWQgd2F0Y2hfdGFyZ2V0KHN0cnVjdCB4ZW5idXNfd2F0Y2ggKndhdGNoLFxuLS1cbmRyaXZlcnMveGVuL3hlbi1iYWxsb29uLmMtNzAtXG5kcml2ZXJzL3hlbi94ZW4tYmFsbG9vbi5jOjcxOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmRyaXZlcnMveGVuL3hlbi1iYWxsb29uLmMtNzItXHQvKiBUaGUgYmFsbG9vbiBkcml2ZXIgd2lsbCB0YWtlIGNhcmUgb2YgYWRkaW5nIG1lbW9yeSBub3cuICovXG4tLVxuaW5jbHVkZS9saW51eC9pbml0LmgtODAtXG5pbmNsdWRlL2xpbnV4L2luaXQuaDo4MTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5pbmNsdWRlL2xpbnV4L2luaXQuaC04Mi0jZGVmaW5lIF9fbWVtaW5pdFxuLS1cbmluY2x1ZGUvbGludXgvaW9wb3J0Lmg9Mzk0PWV4dGVybiB2b2lkIHJlbGVhc2VfbWVtX3JlZ2lvbl9hZGp1c3RhYmxlKHJlc291cmNlX3NpemVfdCwgcmVzb3VyY2Vfc2l6ZV90KTtcbmluY2x1ZGUvbGludXgvaW9wb3J0LmgtMzk1LSNlbmRpZlxuaW5jbHVkZS9saW51eC9pb3BvcnQuaDozOTY6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuaW5jbHVkZS9saW51eC9pb3BvcnQuaC0zOTctZXh0ZXJuIHZvaWQgbWVyZ2Vfc3lzdGVtX3JhbV9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKnJlcyk7XG4tLVxuaW5jbHVkZS9saW51eC9tZW1vcnkuaD03OD1zdHJ1Y3QgbWVtb3J5X2Jsb2NrIHtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oLTkzLVx0c3RydWN0IGxpc3RfaGVhZCBncm91cF9uZXh0O1x0LyogbmV4dCBibG9jayBpbnNpZGUgbWVtb3J5IGdyb3VwICovXG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oOjk0OiNpZiBkZWZpbmVkKENPTkZJR19NRU1PUllfRkFJTFVSRSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX01FTU9SWV9IT1RQTFVHKVxuaW5jbHVkZS9saW51eC9tZW1vcnkuaC05NS1cdGF0b21pY19sb25nX3QgbnJfaHdwb2lzb247XG4tLVxuaW5jbHVkZS9saW51eC9tZW1vcnkuaD0xMDk9c3RydWN0IG1lbV9zZWN0aW9uO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NjEzCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqTWVtb3J5IEhvdHBsdWcgQ29uZmlndXJhdGlvbiBJbnZlc3RpZ2F0aW9uKioKCkFscmlnaHQsIHNvIGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgIGlzIHRoZSBwcmltYXJ5IHN3aXRjaC4gVGhhdCYjMzk7cyB0aGUgZ2l2ZW4uIE5vdywgdGhlIG5leHQgcXVlc3Rpb24gaXMgYWx3YXlzOiBkbyBJICphbHNvKiBuZWVkIGBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRWA/IEFyZSB0aG9zZSBmdW5jdGlvbmFsbHkgZGlzdGluY3Qgb3IganVzdCBsb2dpY2FsbHkgZGlmZmVyZW50PyBJIG5lZWQgdG8gY2xhcmlmeSB0aGUgcmVsYXRpb25zaGlwIHRoZXJlLgoKVG8gYW5zd2VyIHRoYXQsIEkmIzM5O20gdGhpbmtpbmcgSSBzaG91bGQgZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSBjb2RlLiBUaGUgc3RhbmRhcmQgZ28tdG8gaW4gdGhlc2Ugc2l0dWF0aW9ucyBpcyBgbW0vbWVtb3J5X2hvdHBsdWcuY2AuIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBjb3JlIG1lbW9yeSBob3RwbHVnIGxvZ2ljIHVzdWFsbHkgcmVzaWRlcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgdHJ5X29mZmxpbmVfbm9kZWAuIFRoYXQgZnVuY3Rpb24gaXMgY3JpdGljYWw7IGl04oCZcyB0aGUgZ2F0ZXdheSB0byB0YWtpbmcgYSBub2RlIG9mZmxpbmUuIFVuZGVyc3RhbmRpbmcgaXRzIGNoZWNrcyBhbmQgcHJlY29uZGl0aW9ucyB3aWxsIGdpdmUgbWUgYSB2ZXJ5IGNsZWFyIHBpY3R1cmUgb2Ygd2hlbiBob3RyZW1vdmUgZnVuY3Rpb25hbGl0eSBpcyBhY3R1YWxseSAqcmVxdWlyZWQqIHRvIGV4aXN0IGFuZCBiZSBlbmFibGVkIGFuZCB0aGUgcmVsYXRpb25zaGlwIHRoYXQgaGFzIHdpdGggdGhlIGJhc2UgaG90cGx1ZyBjb25maWd1cmF0aW9uLiBUaGlzIHNob3VsZCBjbGFyaWZ5IHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBxdWlja2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfTUVNT1JZX0hPVFJFTU9WRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL21lbW9yeS1ob3RwbHVnLnJzdD0zMzY9VGhlIGZvbGxvd2luZyBmaWxlcyBhcmUgY3VycmVudGx5IGRlZmluZWQ6XG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3QtMzc3LVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3Q6Mzc4Olx0XHQgICAgQXZhaWxhYmlsaXR5IGRlcGVuZHMgb24gdGhlIENPTkZJR19NRU1PUllfSE9UUkVNT1ZFXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL21lbW9yeS1ob3RwbHVnLnJzdC0zNzktXHRcdCAgICBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24uXG4tLVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz0xMzM9Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc6MTM0OkNPTkZJR19NRU1PUllfSE9UUkVNT1ZFPXlcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWctMTM1LUNPTkZJR19LU009eVxuLS1cbmFyY2gvYXJtNjQvbW0vbW11LmM9MjI0Nj1zdGF0aWMgaW50IF9faW5pdCBwcmV2ZW50X21lbW9yeV9yZW1vdmVfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtNjQvbW0vbW11LmMtMjI0OS1cbmFyY2gvYXJtNjQvbW0vbW11LmM6MjI1MDpcdGlmICghSVNfRU5BQkxFRChDT05GSUdfTUVNT1JZX0hPVFJFTU9WRSkpXG5hcmNoL2FybTY0L21tL21tdS5jLTIyNTEtXHRcdHJldHVybiByZXQ7XG4tLVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz0xMDE9Q09ORklHX01IUF9ERUZBVUxUX09OTElORV9UWVBFX09OTElORV9BVVRPPXlcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTEwMy0jIENPTkZJR19NSFBfREVGQVVMVF9PTkxJTkVfVFlQRV9PTkxJTkVfTU9WQUJMRSBpcyBub3Qgc2V0XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnOjEwNDpDT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTEwNS1DT05GSUdfS1NNPXlcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTExNj1DT05GSUdfTUhQX0RFRkFVTFRfT05MSU5FX1RZUEVfT05MSU5FX0FVVE89eVxuLS1cbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTE4LSMgQ09ORklHX01IUF9ERUZBVUxUX09OTElORV9UWVBFX09OTElORV9NT1ZBQkxFIGlzIG5vdCBzZXRcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6MTE5OkNPTkZJR19NRU1PUllfSE9UUkVNT1ZFPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTIwLUNPTkZJR19LU009eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnPTU4PUNPTkZJR19NRU1PUllfSE9UUExVRz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZzo1OTpDT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZy02MC1DT05GSUdfS1NNPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc9ODg9Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZzo4OTpDT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctOTAtQ09ORklHX0tTTT15XG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2hvdHBsdWctbWVtb3J5LmM9MjIyPXN0YXRpYyBpbnQgZGxwYXJfb25saW5lX2xtYihzdHJ1Y3QgZHJtZW1fbG1iICpsbWIpXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2hvdHBsdWctbWVtb3J5LmMtMjI2LVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2hvdHBsdWctbWVtb3J5LmM6MjI3OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2hvdHBsdWctbWVtb3J5LmMtMjI4LXN0YXRpYyBpbnQgZGxwYXJfb2ZmbGluZV9sbWIoc3RydWN0IGRybWVtX2xtYiAqbG1iKVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jPTU1OD1zdGF0aWMgaW50IGRscGFyX21lbW9yeV9yZW1vdmVfYnlfaWModTMyIGxtYnNfdG9fcmVtb3ZlLCB1MzIgZHJjX2luZGV4KVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jLTU2MS19XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYzo1NjI6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUkVNT1ZFICovXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYy01NjMtXG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTEwNT1DT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjEwNjpDT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctMTA3LUNPTkZJR19LU009eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz05OD1DT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjk5OkNPTkZJR19NRU1PUllfSE9UUkVNT1ZFPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy0xMDAtQ09ORklHX0tTTT15XG4tLVxuYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL2FjcGkuYz0xNTc9YWNwaV9waHlzaWNhbF9hZGRyZXNzIGdldF9yc2RwX2FkZHIodm9pZClcbi0tXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvYWNwaS5jLTE3MS1cbmFyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9hY3BpLmM6MTcyOiNpZiBkZWZpbmVkKENPTkZJR19SQU5ET01JWkVfQkFTRSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX01FTU9SWV9IT1RSRU1PVkUpXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvYWNwaS5jLTE3My0vKlxuLS1cbmFyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9hY3BpLmM9MjcwPWludCBjb3VudF9pbW1vdmFibGVfbWVtX3JlZ2lvbnModm9pZClcbi0tXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvYWNwaS5jLTMxNi19XG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvYWNwaS5jOjMxNzojZW5kaWYgLyogQ09ORklHX1JBTkRPTUlaRV9CQVNFIFx1MDAyNlx1MDAyNiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRSAqL1xuLS1cbmFyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9rYXNsci5jPTU5Nj1zdGF0aWMgYm9vbCBwcm9jZXNzX21lbV9yZWdpb24oc3RydWN0IG1lbV92ZWN0b3IgKnJlZ2lvbixcbi0tXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQva2FzbHIuYy02MTQtXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQva2FzbHIuYzo2MTU6I2lmIGRlZmluZWQoQ09ORklHX01FTU9SWV9IT1RSRU1PVkUpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19BQ1BJKVxuYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL2thc2xyLmMtNjE2LVx0Lypcbi0tXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvbWlzYy5oPTE3MT1zdGF0aWMgaW5saW5lIGFjcGlfcGh5c2ljYWxfYWRkcmVzcyBnZXRfcnNkcF9hZGRyKHZvaWQpIHsgcmV0dXJuIDA7IH1cbi0tXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvbWlzYy5oLTE3My1cbmFyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9taXNjLmg6MTc0OiNpZiBkZWZpbmVkKENPTkZJR19SQU5ET01JWkVfQkFTRSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX01FTU9SWV9IT1RSRU1PVkUpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19BQ1BJKVxuYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL21pc2MuaC0xNzUtZXh0ZXJuIHN0cnVjdCBtZW1fdmVjdG9yIGltbW92YWJsZV9tZW1bTUFYX05VTU5PREVTKjJdO1xuLS1cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz0xNTg9c3RhdGljIHNzaXplX3QgcGh5c19pbmRleF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtMTY3LSAqIExlZ2FjeSBpbnRlcmZhY2UgdGhhdCB3ZSBjYW5ub3QgcmVtb3ZlLiBBbHdheXMgaW5kaWNhdGUgXCYjMzQ7cmVtb3ZhYmxlXCYjMzQ7XG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6MTY4OiAqIHdpdGggQ09ORklHX01FTU9SWV9IT1RSRU1PVkUgLSBiYWQgaGV1cmlzdGljLlxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTE2OS0gKi9cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz0xNzA9c3RhdGljIHNzaXplX3QgcmVtb3ZhYmxlX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtMTcyLXtcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYzoxNzM6XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0OyVkXFxuXCYjMzQ7LCAoaW50KUlTX0VOQUJMRUQoQ09ORklHX01FTU9SWV9IT1RSRU1PVkUpKTtcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy0xNzQtfVxuLS1cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz00NDE9c3RhdGljIHNzaXplX3QgcGh5c19kZXZpY2Vfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTQ1MC1cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYzo0NTE6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUkVNT1ZFXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtNDUyLXN0YXRpYyBpbnQgcHJpbnRfYWxsb3dlZF96b25lKGNoYXIgKmJ1ZiwgaW50IGxlbiwgaW50IG5pZCxcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9NjYyPXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICptZW1vcnlfbWVtYmxrX2F0dHJzW10gPSB7XG4tLVxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTY2Ni1cdFx1MDAyNmRldl9hdHRyX3JlbW92YWJsZS5hdHRyLFxuZHJpdmVycy9iYXNlL21lbW9yeS5jOjY2NzojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RSRU1PVkVcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy02NjgtXHRcdTAwMjZkZXZfYXR0cl92YWxpZF96b25lcy5hdHRyLFxuLS1cbmRyaXZlcnMvZGF4L2ttZW0uYz02OD1zdGF0aWMgaW50IGRldl9kYXhfa21lbV9wcm9iZShzdHJ1Y3QgZGV2X2RheCAqZGV2X2RheClcbi0tXG5kcml2ZXJzL2RheC9rbWVtLmMtMjA3LVxuZHJpdmVycy9kYXgva21lbS5jOjIwODojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RSRU1PVkVcbmRyaXZlcnMvZGF4L2ttZW0uYy0yMDktc3RhdGljIHZvaWQgZGV2X2RheF9rbWVtX3JlbW92ZShzdHJ1Y3QgZGV2X2RheCAqZGV2X2RheClcbi0tXG5kcml2ZXJzL2RheC9rbWVtLmM9MjY2PXN0YXRpYyB2b2lkIGRldl9kYXhfa21lbV9yZW1vdmUoc3RydWN0IGRldl9kYXggKmRldl9kYXgpXG4tLVxuZHJpdmVycy9kYXgva21lbS5jLTI3Ni19XG5kcml2ZXJzL2RheC9rbWVtLmM6Mjc3OiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRSAqL1xuZHJpdmVycy9kYXgva21lbS5jLTI3OC1cbi0tXG5pbmNsdWRlL2xpbnV4L2lvcG9ydC5oPTM5MT1leHRlcm4gdm9pZCBfX3JlbGVhc2VfcmVnaW9uKHN0cnVjdCByZXNvdXJjZSAqLCByZXNvdXJjZV9zaXplX3QsXG5pbmNsdWRlL2xpbnV4L2lvcG9ydC5oLTM5Mi1cdFx0XHRcdHJlc291cmNlX3NpemVfdCk7XG5pbmNsdWRlL2xpbnV4L2lvcG9ydC5oOjM5MzojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RSRU1PVkVcbmluY2x1ZGUvbGludXgvaW9wb3J0LmgtMzk0LWV4dGVybiB2b2lkIHJlbGVhc2VfbWVtX3JlZ2lvbl9hZGp1c3RhYmxlKHJlc291cmNlX3NpemVfdCwgcmVzb3VyY2Vfc2l6ZV90KTtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9MjU5PXN0YXRpYyBpbmxpbmUgdm9pZCBwZ2RhdF9yZXNpemVfaW5pdChzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KSB7fVxuLS1cbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yNjEtXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MjYyOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI2My1cbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9Mjg1PXN0YXRpYyBpbmxpbmUgdm9pZCBfX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSkge31cbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDoyODY6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUkVNT1ZFICovXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjg3LVxuLS1cbmtlcm5lbC9jb25maWdzL3hlbi5jb25maWc9MTU9Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcbmtlcm5lbC9jb25maWdzL3hlbi5jb25maWc6MTY6Q09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxua2VybmVsL2NvbmZpZ3MveGVuLmNvbmZpZy0xNy1DT05GSUdfWk9ORV9ERVZJQ0U9eVxuLS1cbmtlcm5lbC9yZXNvdXJjZS5jPTE0NDY9RVhQT1JUX1NZTUJPTChfX3JlbGVhc2VfcmVnaW9uKTtcbmtlcm5lbC9yZXNvdXJjZS5jLTE0NDctXG5rZXJuZWwvcmVzb3VyY2UuYzoxNDQ4OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRVxua2VybmVsL3Jlc291cmNlLmMtMTQ0OS1zdGF0aWMgdm9pZCBhcHBlbmRfY2hpbGRfdG9fcGFyZW50KHN0cnVjdCByZXNvdXJjZSAqbmV3X3BhcmVudCwgc3RydWN0IHJlc291cmNlICpuZXdfY2hpbGQpXG4tLVxua2VybmVsL3Jlc291cmNlLmM9MTUwNz12b2lkIHJlbGVhc2VfbWVtX3JlZ2lvbl9hZGp1c3RhYmxlKHJlc291cmNlX3NpemVfdCBzdGFydCwgcmVzb3VyY2Vfc2l6ZV90IHNpemUpXG4tLVxua2VybmVsL3Jlc291cmNlLmMtMTU5Ni19XG5rZXJuZWwvcmVzb3VyY2UuYzoxNTk3OiNlbmRpZlx0LyogQ09ORklHX01FTU9SWV9IT1RSRU1PVkUgKi9cbmtlcm5lbC9yZXNvdXJjZS5jLTE1OTgtXG4tLVxubW0va3NtLmM9MzI2OT12b2lkIGZvbGlvX21pZ3JhdGVfa3NtKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0va3NtLmMtMzI5Mi1cbm1tL2tzbS5jOjMyOTM6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUkVNT1ZFXG5tbS9rc20uYy0zMjk0LXN0YXRpYyB2b2lkIHdhaXRfd2hpbGVfb2ZmbGluaW5nKHZvaWQpXG4tLVxubW0va3NtLmM9MzQxNz1zdGF0aWMgdm9pZCB3YWl0X3doaWxlX29mZmxpbmluZyh2b2lkKVxuLS1cbm1tL2tzbS5jLTM0MTktfVxubW0va3NtLmM6MzQyMDojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RSRU1PVkUgKi9cbm1tL2tzbS5jLTM0MjEtXG4tLVxubW0va3NtLmM9Mzk3Nz1zdGF0aWMgaW50IF9faW5pdCBrc21faW5pdCh2b2lkKVxuLS1cbm1tL2tzbS5jLTQwMDktXG5tbS9rc20uYzo0MDEwOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRVxubW0va3NtLmMtNDAxMS1cdC8qIFRoZXJlIGlzIG5vIHNpZ25pZmljYW5jZSB0byB0aGlzIHByaW9yaXR5IDEwMCAqL1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmM9MTcyMT1ib29sIG1ocF9yYW5nZV9hbGxvd2VkKHU2NCBzdGFydCwgdTY0IHNpemUsIGJvb2wgbmVlZF9tYXBwaW5nKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMTczMy1cbm1tL21lbW9yeV9ob3RwbHVnLmM6MTczNDojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RSRU1PVkVcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTczNS0vKlxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmM9MjQzOD1FWFBPUlRfU1lNQk9MX0dQTChvZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KTtcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjQzOTojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RSRU1PVkUgKi9cbi0tXG5tbS9wYWdlX2FsbG9jLmM9NDM3ND1zdGF0aWMgdW5zaWduZWQgaW50IHpvbmVsaXN0X2l0ZXJfYmVnaW4odm9pZClcbm1tL3BhZ2VfYWxsb2MuYy00Mzc1LXtcbm1tL3BhZ2VfYWxsb2MuYzo0Mzc2Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01FTU9SWV9IT1RSRU1PVkUpKVxubW0vcGFnZV9hbGxvYy5jLTQzNzctXHRcdHJldHVybiByZWFkX3NlcWJlZ2luKFx1MDAyNnpvbmVsaXN0X3VwZGF0ZV9zZXEpO1xuLS1cbm1tL3BhZ2VfYWxsb2MuYz00MzgyPXN0YXRpYyB1bnNpZ25lZCBpbnQgY2hlY2tfcmV0cnlfem9uZWxpc3QodW5zaWduZWQgaW50IHNlcSlcbm1tL3BhZ2VfYWxsb2MuYy00MzgzLXtcbm1tL3BhZ2VfYWxsb2MuYzo0Mzg0Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01FTU9SWV9IT1RSRU1PVkUpKVxubW0vcGFnZV9hbGxvYy5jLTQzODUtXHRcdHJldHVybiByZWFkX3NlcXJldHJ5KFx1MDAyNnpvbmVsaXN0X3VwZGF0ZV9zZXEsIHNlcSk7XG4tLVxubW0vcGFnZV9hbGxvYy5jPTc1MTc9dm9pZCB6b25lX3BjcF9yZXNldChzdHJ1Y3Qgem9uZSAqem9uZSlcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNzUzNS1cbm1tL3BhZ2VfYWxsb2MuYzo3NTM2OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRVxubW0vcGFnZV9hbGxvYy5jLTc1MzctLypcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLmFhcmNoNjQ9OTA9Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2NDo5MTpDT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLmFhcmNoNjQtOTItQ09ORklHX05BTUVTUEFDRVM9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuczM5MHg9NzY9Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuczM5MHg6Nzc6Q09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweC03OC1DT05GSUdfTkFNRVNQQUNFUz15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbWVtb3J5LWhvdHBsdWcvY29uZmlnPTM9Q09ORklHX01FTU9SWV9OT1RJRklFUl9FUlJPUl9JTkpFQ1Q9bVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbWVtb3J5LWhvdHBsdWcvY29uZmlnOjQ6Q09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Zzb2NrL2NvbmZpZz0xMDk9Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Zzb2NrL2NvbmZpZzoxMTA6Q09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdnNvY2svY29uZmlnLTExMS1DT05GSUdfWk9ORV9ERVZJQ0U9eVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjY5NwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipEaXZpbmcgaW50byB0aGUgYG1lbW9yeV9ob3RwbHVnYCBDb2RlKioKCkFscmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYHRyeV9vZmZsaW5lX25vZGVgLiBUaGF0IGZ1bmN0aW9uIGlzIGRlZmluaXRlbHkgdGllZCB0byBtZW1vcnkgaG90LXJlbW92ZSBmdW5jdGlvbmFsaXR5LiBJJiMzOTttIHByZXR0eSBzdXJlIEkgc2F3IGl0IGluIGBpbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmhgIHVuZGVyIHRoYXQgYCNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRWAgZ3VhcmQuIEl0JiMzOTtzIGEga2V5IGZ1bmN0aW9uIGZvciBvZmZsaW5pbmcgYSBub2RlLCBzbyBpdCBtYWtlcyBzZW5zZSBpdCYjMzk7cyBjb25kaXRpb25hbCBsaWtlIHRoYXQuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBzaG91bGQgcXVpY2tseSBqdW1wIHRvIHRoYXQgaGVhZGVyIGZpbGUgYW5kIGRvdWJsZSBjaGVjayB0aGUgY29udGV4dC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXJvdW5kIGxpbmUgMjYyIHRvIGdldCB0aGUgcHJlY2lzZSBsb2NhdGlvbiBhbmQgbWFrZSBzdXJlIG15IG1lbnRhbCBtYXAgaXMgYWNjdXJhdGUuIEkgd2FudCB0byBzZWUgaG93IHRoYXQgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIG90aGVyIGRlZmluaXRpb25zIGFyb3VuZCBpdC4gR290dGEgZ2V0IHRoZSBmdWxsIHBpY3R1cmUsIGV2ZW4gZm9yIHNvbWV0aGluZyBJICp0aGluayogSSBhbHJlYWR5IGtub3chIEJldHRlciBzYWZlIHRoYW4gc29ycnkgd2hlbiB5b3UmIzM5O3JlIGRlYWxpbmcgd2l0aCBtZW1vcnkgbWFuYWdlbWVudCBhdCB0aGlzIGxldmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0cnlfb2ZmbGluZV9ub2RlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaD0yNTk9c3RhdGljIGlubGluZSB2b2lkIHBnZGF0X3Jlc2l6ZV9pbml0KHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpIHt9XG4tLVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI2My1cbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDoyNjQ6ZXh0ZXJuIHZvaWQgdHJ5X29mZmxpbmVfbm9kZShpbnQgbmlkKTtcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yNjUtZXh0ZXJuIGludCBvZmZsaW5lX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLFxuLS1cbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaD0yNjk9ZXh0ZXJuIGludCBvZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpO1xuLS1cbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yNzEtI2Vsc2VcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDoyNzI6c3RhdGljIGlubGluZSB2b2lkIHRyeV9vZmZsaW5lX25vZGUoaW50IG5pZCkge31cbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yNzMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMjI3CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMzM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBNZW1vcnkgSG90cGx1ZyBhbmQgVk0gU3RhdGlzdGljcyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgdHJ5X29mZmxpbmVfbm9kZWAgaXMgb25seSBkZWZpbmVkIGlmIGBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRWAgaXMgZW5hYmxlZC4gU2VlbXMgcHJldHR5IG9idmlvdXMsIGJ1dCBhbHdheXMgZ29vZCB0byBjaGVjay4gVGhlcmVmb3JlLCBpdCBvYnZpb3VzbHkgbmVlZHMgYENPTkZJR19NRU1PUllfSE9UUkVNT1ZFYCB0byBiZSBlbmFibGVkLCBhbmQgc2luY2UgbWVtb3J5IGhvdHJlbW92ZSBpbXBsaWVzIGhvdHBsdWcsIGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgIGlzIGFsc28gbmVjZXNzYXJ5LgoKTm93LCBJIHdhcyBsb29raW5nIGF0IGBzeW5jX3ZtX3N0YXRzYCwgYW5kIGl0JiMzOTtzIGxvY2F0ZWQgaW4gYG1tL3Ztc3RhdC5jYC4gSSBrbm93IHRoYXQgZmlsZSBpcyBhbHdheXMgY29tcGlsZWQgaW4sIHNvIHRoYXQmIzM5O3Mgbm90IGEgY29uZGl0aW9uYWwgZGVwZW5kZW5jeS4gVGhlIGludGVyZXN0aW5nIHRoaW5nIGlzIHRoYXQgYHRyeV9vZmZsaW5lX25vZGVgICpjYWxscyogYHN5bmNfdm1fc3RhdHNgLCB3aGljaCBtZWFucyBgc3luY192bV9zdGF0c2AgaXMgcGFydCBvZiB0aGUgY29uZGl0aW9uYWwgcGF0aC4KCkxldCBtZSBjaXJjbGUgYmFjayB0byBgdHJ5X29mZmxpbmVfbm9kZWAgYW5kIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aC4gUmlnaHQsIHNvIGB0cnlfb2ZmbGluZV9ub2RlYCBjYWxscyBgc3luY192bV9zdGF0cygpYC4gVGhlbiBgc3luY192bV9zdGF0cygpYCBjYWxscyBgc2NoZWR1bGVfb25fZWFjaF9jcHUodm1zdGF0X2ZvbGRfd29yaylgLiBBbmQgdGhhdCBmdW5jdGlvbiwgYHZtc3RhdF9mb2xkX3dvcmtgLCBjYWxscyBgcmVmcmVzaF9jcHVfdm1fc3RhdHMoZmFsc2UpYC4KCklzIHRoaXMgYWN0dWFsbHkgc29tZXRoaW5nIEkgc2hvdWxkIHRyeSBmdXp6aW5nPyBZZXMsIGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNwZWNpZmljYWxseSBzY2hlZHVsaW5nIHdvcmsgb24gKmV2ZXJ5KiBDUFUgZHVyaW5nIG1lbW9yeSBob3RwbHVnLiBJdCYjMzk7cyByZWxhdGVkIHRvIGEgZml4IGZvciBvcnBoYW5lZCBwZXItQ1BVIHZtc3RhdCBkaWZmcy4gU28sIGZ1enppbmcgY291bGQgcG90ZW50aWFsbHkgdW5jb3ZlciBpc3N1ZXMgd2l0aCBzY2hlZHVsaW5nIG9uIG11bHRpcGxlIENQVXMgZHVyaW5nIG1lbW9yeSBob3RwbHVnIG9wZXJhdGlvbnMsIG9yIHBlcmhhcHMgc29tZSByYWNlIGNvbmRpdGlvbnMgcmVsYXRlZCB0byBob3cgdGhlIHZtc3RhdCBmb2xkaW5nIHByb2Nlc3MgaGFwcGVucy4gU291bmRzIHByZXR0eSBwcm9taXNpbmcuCgpJJiMzOTttIGZvY3VzaW5nIG15IGF0dGVudGlvbiBvbiB0aGUgZm9sbG93aW5nIHN5bWJvbHM6IGB0cnlfb2ZmbGluZV9ub2RlYCwgYHN5bmNfdm1fc3RhdHNgLCBhbmQgYHZtc3RhdF9mb2xkX3dvcmtgLgoKQW5kIHRoZSBuZWNlc3NhcnkgY29uZmlncyB0byBlbmFibGUgdGhpcyBhcmUgYE1FTU9SWV9IT1RQTFVHYCBhbmQgYE1FTU9SWV9IT1RSRU1PVkVgLgoKTGV0IG1lIGp1c3QgZG91YmxlIGNoZWNrIG9uZSBsYXN0IHRoaW5nOiBpcyBgdHJ5X29mZmxpbmVfbm9kZWAgKmRlZmluaXRlbHkqIHRoZSAqb25seSogY2FsbGVyIG9mIGBzeW5jX3ZtX3N0YXRzYD8gSXQmIzM5O3MgYWx3YXlzIHdvcnRoIHZlcmlmeWluZyB0aG9zZSBhc3N1bXB0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDc6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3luY192bV9zdGF0cyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3Ztc3RhdC5oPTI5NT12b2lkIGNwdV92bV9zdGF0c19mb2xkKGludCBjcHUpO1xuaW5jbHVkZS9saW51eC92bXN0YXQuaDoyOTY6dm9pZCBzeW5jX3ZtX3N0YXRzKHZvaWQpO1xuaW5jbHVkZS9saW51eC92bXN0YXQuaC0yOTctdm9pZCByZWZyZXNoX3pvbmVfc3RhdF90aHJlc2hvbGRzKHZvaWQpO1xuLS1cbmluY2x1ZGUvbGludXgvdm1zdGF0Lmg9NDAwPXN0YXRpYyBpbmxpbmUgdm9pZCBjcHVfdm1fc3RhdHNfZm9sZChpbnQgY3B1KSB7IH1cbmluY2x1ZGUvbGludXgvdm1zdGF0Lmg6NDAxOnN0YXRpYyBpbmxpbmUgdm9pZCBzeW5jX3ZtX3N0YXRzKHZvaWQpIHsgfVxuaW5jbHVkZS9saW51eC92bXN0YXQuaC00MDItc3RhdGljIGlubGluZSB2b2lkIHF1aWV0X3Ztc3RhdCh2b2lkKSB7IH1cbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTIxODU9dm9pZCB0cnlfb2ZmbGluZV9ub2RlKGludCBuaWQpXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMjE0LVx0ICovXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIyMTU6XHRzeW5jX3ZtX3N0YXRzKCk7XG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyMTYtXHRub2RlX3NldF9vZmZsaW5lKG5pZCk7XG4tLVxubW0vdm1zdGF0LmM9OTQ0PXN0YXRpYyB2b2lkIHZtc3RhdF9mb2xkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxuLS1cbm1tL3Ztc3RhdC5jLTk0OC1cbm1tL3Ztc3RhdC5jOjk0OTp2b2lkIHN5bmNfdm1fc3RhdHModm9pZClcbm1tL3Ztc3RhdC5jLTk1MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0Mzc4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYHRyeV9vZmZsaW5lX25vZGVgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYHRyeV9vZmZsaW5lX25vZGVgIGZ1bmN0aW9uLCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBvbmx5IGNhbGxlZCBieSBvbmUgcGxhY2UsIHdoaWNoIHNpbXBsaWZpZXMgdGhlIGRlYnVnZ2luZyBwcm9jZXNzLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4KCk5vdywgSSYjMzk7bSB3b25kZXJpbmcgYWJvdXQgdGhlIHN1cnJvdW5kaW5nIGNvbmZpZ3VyYXRpb24uIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMgdGhhdCBtaWdodCBiZSByZWxldmFudD8gSSBrbm93IGBDT05GSUdfU01QYCBpcyBkZWZpbml0ZWx5IHJlcXVpcmVkLCBiZWNhdXNlIG9mIHRoZSBgc2NoZWR1bGVfb25fZWFjaF9jcHVgIGNhbGwgd2l0aGluLCBidXQgdGhhdCYjMzk7cyBwcmV0dHkgbXVjaCBhIGdpdmVuIGluIHRoZSBzeXprYWxsZXIgY29udGV4dCwgc2luY2UgaXQmIzM5O3MgZW5hYmxlZCBieSBkZWZhdWx0LiBNeSBndXQgZmVlbGluZyBpcyB0aGF0IGBDT05GSUdfTlVNQWAgbWlnaHQgYmUgKm1vcmUqIGludGVyZXN0aW5nIGhlcmUsIHNpbmNlIHRoaXMgZnVuY3Rpb24gb3BlcmF0ZXMgb24gbm9kZXMuIElmIE5VTUEgaXNuJiMzOTt0IGVuYWJsZWQsIGlzIHRoZSBmdW5jdGlvbiBldmVuIGdvaW5nIHRvIGJlIGRvaW5nIGFueXRoaW5nIHN1YnN0YW50aWFsPyBUaGF0IGNvdWxkIGJlIGEgY3JpdGljYWwgcGllY2UgdG8gdW5kZXJzdGFuZC4KCkFscmlnaHQsIGxldCYjMzk7cyBqdXN0IGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UgYW5kIGdldCBhIGNsZWFyZXIgcGljdHVyZS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgZGVmaW5pdGlvbiBvZiBgdHJ5X29mZmxpbmVfbm9kZWAgaW4gYG1tL21lbW9yeV9ob3RwbHVnLmNgIHRvIHNlZSBob3cgaXQgb3BlcmF0ZXMgYW5kIGlmIG15IGh5cG90aGVzZXMgYXJvdW5kIGBDT05GSUdfTlVNQWAgYXJlIGNvcnJlY3QuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0cnlfb2ZmbGluZV9ub2RlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vbWVtb3J5X2hvdHBsdWcuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9tZW1vcnlfaG90cGx1Zy5jPTIxNjQ9c3RhdGljIGludCBjaGVja19ub19tZW1ibG9ja19mb3Jfbm9kZV9jYihzdHJ1Y3QgbWVtb3J5X2Jsb2NrICptZW0sIHZvaWQgKmFyZylcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIxNzYtLyoqXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIxNzc6ICogdHJ5X29mZmxpbmVfbm9kZVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMTc4LSAqIEBuaWQ6IHRoZSBub2RlIElEXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMTg0LSAqL1xubW0vbWVtb3J5X2hvdHBsdWcuYzoyMTg1OnZvaWQgdHJ5X29mZmxpbmVfbm9kZShpbnQgbmlkKVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMTg2LXtcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyMTgtfVxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMjE5OkVYUE9SVF9TWU1CT0wodHJ5X29mZmxpbmVfbm9kZSk7XG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyMjAtXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYz0yMjQxPXN0YXRpYyBpbnQgdHJ5X3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSlcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyODctXHRpZiAobmlkICE9IE5VTUFfTk9fTk9ERSlcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjI4ODpcdFx0dHJ5X29mZmxpbmVfbm9kZShuaWQpO1xubW0vbWVtb3J5X2hvdHBsdWcuYy0yMjg5LVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMwMC0gKiBhbmQgb25saW5lL29mZmxpbmUgb3BlcmF0aW9ucyBiZWZvcmUgdGhpcyBjYWxsLCBhcyByZXF1aXJlZCBieVxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMzAxOiAqIHRyeV9vZmZsaW5lX25vZGUoKS5cbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMwMi0gKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDc6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUxNzAKCQkJCQkJCW91dHB1dDogMTc4CgkJCQkJCQl0aG91Z2h0czogMjE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFJlYXNvbmluZyBvbiBNZW1vcnkgSG90cGx1ZyBhbmQgVk0gU3RhdGlzdGljcyoqCgpPa2F5LCBzbyBgdHJ5X29mZmxpbmVfbm9kZWAgaXMgdGhlIGtleSBmdW5jdGlvbiBoZXJlLCBhbmQgaXQmIzM5O3MgYmVpbmcgZXhwb3J0ZWQuIFRoZSBjb2RlIHJlcXVpcmVzIGBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRWAsIHdoaWNoIG1ha2VzIHNlbnNlLiBJJiMzOTtsbCBuZWVkIHRvIGVuYWJsZSBib3RoIGBNRU1PUllfSE9UUExVR2AgYW5kIGBNRU1PUllfSE9UUkVNT1ZFYCBmb3IgdGhpcyB0byB3b3JrIGNvcnJlY3RseS4KCkxldCBtZSB0aGluayB0aHJvdWdoIHRoZSBpbXBsaWNhdGlvbnMuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2FsbCB0byBgc3luY192bV9zdGF0cygpYCB3aXRoaW4gYHRyeV9vZmZsaW5lX25vZGUoKWAuIFRoZSBwdXJwb3NlIG9mIHRoaXMgc2VlbXMgdG8gYmUgdG8gZW5zdXJlIHRoYXQgYW55IHBlbmRpbmcgcGVyLUNQVSBWTSBzdGF0aXN0aWNzIGFyZSBjb3JyZWN0bHkgaW5jb3Jwb3JhdGVkIGludG8gdGhlIGdsb2JhbCBjb3VudGVycyAqYmVmb3JlKiBhIE5VTUEgbm9kZSBnb2VzIG9mZmxpbmUuIFRoaXMgcHJldmVudHMgdGhlIHJlZ3VsYXIgVk0gc3RhdGlzdGljcyBmb2xkaW5nIG1lY2hhbmlzbSBmcm9tIG1pc3NpbmcgdGhlIG9mZmxpbmUgbm9kZSwgd2hpY2ggd291bGQgbGVhdmUgaXRzIHN0YXRzIHN0cmFuZGVkLiBJdOKAmXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGNvcmUgbWVtb3J5IGhvdHBsdWcgYW5kIFZNIHN0YXRpc3RpYyBsb2dpYy4gVGhlIGNyaXRpY2FsIHBvaW50IGlzLCB0aGlzIGlzIGV4cG9zZWQgdG8gdXNlcnNwYWNlIHRocm91Z2ggdGhlIHN5c2ZzIG1lbW9yeSBob3RwbHVnIGludGVyZmFjZXMuCgpHaXZlbiB0aGF0IGl0IGludm9sdmVzIG1lbW9yeSBob3RwbHVnIGFuZCB0aGUgcG90ZW50aWFsIGZvciBjb25jdXJyZW50IG9wZXJhdGlvbnMsIGZ1enppbmcgdGhpcyBhcmVhIHNlZW1zIGxpa2UgYSB2ZXJ5IGdvb2QgaWRlYS4gVGhlcmUgYXJlIGxpa2VseSBvcHBvcnR1bml0aWVzIHRvIGlkZW50aWZ5IHJhY2UgY29uZGl0aW9ucyBvciBzY2hlZHVsaW5nIHByb2JsZW1zIHRoYXQgY291bGQgYXJpc2UgZHVyaW5nIHRoZSBwcm9jZXNzIG9mIG9mZmxpbmluZyBhIG5vZGUuCgpJJiMzOTtsbCBrZWVwIGEgY2xvc2UgZXllIG9uIHRoZXNlIHN5bWJvbHM6IGB0cnlfb2ZmbGluZV9ub2RlYCwgYHN5bmNfdm1fc3RhdHNgLCBhbmQgYHZtc3RhdF9mb2xkX3dvcmtgLCBhcyB0aGV5IGFyZSB0aGUgY29yZSBjb21wb25lbnRzIG9mIHRoaXMgY2hhbmdlLgoKTm93LCBsZXQmIzM5O3Mgc2V0IHRoZSByZXN1bHRzIGFuZCBtb3ZlIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNRU1PUllfSE9UUExVRyYjMzQ7LAogICAgJiMzNDtNRU1PUllfSE9UUkVNT1ZFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dHJ5X29mZmxpbmVfbm9kZSYjMzQ7LAogICAgJiMzNDtzeW5jX3ZtX3N0YXRzJiMzNDssCiAgICAmIzM0O3Ztc3RhdF9mb2xkX3dvcmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNhbGwgdG8gc3luY192bV9zdGF0cygpIGluIHRyeV9vZmZsaW5lX25vZGUoKSB0byBmb2xkIHBlbmRpbmcgcGVyLWNwdSB2bXN0YXQgZGlmZnMgaW50byBnbG9iYWwgY291bnRlcnMgYmVmb3JlIGEgTlVNQSBub2RlIGlzIG9mZmxpbmVkLiBUaGlzIHByZXZlbnRzIHRoZSBwZXJpb2RpYyB2bXN0YXQgZm9sZCBmcm9tIHNraXBwaW5nIHRoZSBvZmZsaW5lZCBub2RlIGFuZCBvcnBoYW5pbmcgdGhlIHJlc2lkdWFsIHN0YXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IGhvdHBsdWcgYW5kIHZtc3RhdCBsb2dpYywgYW5kIGl0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc3lzZnMgbWVtb3J5IGhvdHBsdWcgaW50ZXJmYWNlcy4gRnV6emluZyB0aGlzIGNvdWxkIHVuY292ZXIgcmFjZSBjb25kaXRpb25zIG9yIHNjaGVkdWxpbmcgaXNzdWVzIGR1cmluZyBub2RlIG9mZmxpbmluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUVNT1JZX0hPVFBMVUcmIzM0OywKICAgICYjMzQ7TUVNT1JZX0hPVFJFTU9WRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RyeV9vZmZsaW5lX25vZGUmIzM0OywKICAgICYjMzQ7c3luY192bV9zdGF0cyYjMzQ7LAogICAgJiMzNDt2bXN0YXRfZm9sZF93b3JrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjYWxsIHRvIHN5bmNfdm1fc3RhdHMoKSBpbiB0cnlfb2ZmbGluZV9ub2RlKCkgdG8gZm9sZCBwZW5kaW5nIHBlci1jcHUgdm1zdGF0IGRpZmZzIGludG8gZ2xvYmFsIGNvdW50ZXJzIGJlZm9yZSBhIE5VTUEgbm9kZSBpcyBvZmZsaW5lZC4gVGhpcyBwcmV2ZW50cyB0aGUgcGVyaW9kaWMgdm1zdGF0IGZvbGQgZnJvbSBza2lwcGluZyB0aGUgb2ZmbGluZWQgbm9kZSBhbmQgb3JwaGFuaW5nIHRoZSByZXNpZHVhbCBzdGF0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBob3RwbHVnIGFuZCB2bXN0YXQgbG9naWMsIGFuZCBpdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHN5c2ZzIG1lbW9yeSBob3RwbHVnIGludGVyZmFjZXMuIEZ1enppbmcgdGhpcyBjb3VsZCB1bmNvdmVyIHJhY2UgY29uZGl0aW9ucyBvciBzY2hlZHVsaW5nIGlzc3VlcyBkdXJpbmcgbm9kZSBvZmZsaW5pbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzo1MjowNC40Mjc3MTY3ODdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTQwNzU5MDU5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNRU1PUllfSE9UUExVR1wiLFxuICAgIFwiTUVNT1JZX0hPVFJFTU9WRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRyeV9vZmZsaW5lX25vZGVcIixcbiAgICBcInN5bmNfdm1fc3RhdHNcIixcbiAgICBcInZtc3RhdF9mb2xkX3dvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2FsbCB0byBzeW5jX3ZtX3N0YXRzKCkgaW4gdHJ5X29mZmxpbmVfbm9kZSgpIHRvIGZvbGQgcGVuZGluZyBwZXItY3B1IHZtc3RhdCBkaWZmcyBpbnRvIGdsb2JhbCBjb3VudGVycyBiZWZvcmUgYSBOVU1BIG5vZGUgaXMgb2ZmbGluZWQuIFRoaXMgcHJldmVudHMgdGhlIHBlcmlvZGljIHZtc3RhdCBmb2xkIGZyb20gc2tpcHBpbmcgdGhlIG9mZmxpbmVkIG5vZGUgYW5kIG9ycGhhbmluZyB0aGUgcmVzaWR1YWwgc3RhdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgaG90cGx1ZyBhbmQgdm1zdGF0IGxvZ2ljLCBhbmQgaXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzeXNmcyBtZW1vcnkgaG90cGx1ZyBpbnRlcmZhY2VzLiBGdXp6aW5nIHRoaXMgY291bGQgdW5jb3ZlciByYWNlIGNvbmRpdGlvbnMgb3Igc2NoZWR1bGluZyBpc3N1ZXMgZHVyaW5nIG5vZGUgb2ZmbGluaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzo1MjowNC40Mjc3MjQ3OTdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2MDA3NjE0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDY4YWNmODQ4MTZhZmI2MTViMDhkOTU0ZmI1ODYwZmRmNGQ2YTllOTNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdW4gMjcgMDc6NTI6MDMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC92bXN0YXQuaCBiL2luY2x1ZGUvbGludXgvdm1zdGF0LmhcXG5pbmRleCAzYzljMjY2Y2Y3ODJhZC4uZWExMDE3NDI3ODExMWUgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC92bXN0YXQuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvdm1zdGF0LmhcXG5AQCAtMjkzLDYgKzI5Myw3IEBAIGV4dGVybiB2b2lkIF9fZGVjX25vZGVfc3RhdGUoc3RydWN0IHBnbGlzdF9kYXRhICosIGVudW0gbm9kZV9zdGF0X2l0ZW0pO1xcbiBcXG4gdm9pZCBxdWlldF92bXN0YXQodm9pZCk7XFxuIHZvaWQgY3B1X3ZtX3N0YXRzX2ZvbGQoaW50IGNwdSk7XFxuK3ZvaWQgc3luY192bV9zdGF0cyh2b2lkKTtcXG4gdm9pZCByZWZyZXNoX3pvbmVfc3RhdF90aHJlc2hvbGRzKHZvaWQpO1xcbiBcXG4gdm9pZCBkcmFpbl96b25lc3RhdChzdHJ1Y3Qgem9uZSAqem9uZSwgc3RydWN0IHBlcl9jcHVfem9uZXN0YXQgKik7XFxuQEAgLTM5Nyw2ICszOTgsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19kZWNfbm9kZV9wYWdlX3N0YXRlKHN0cnVjdCBwYWdlICpwYWdlLFxcbiBcXG4gc3RhdGljIGlubGluZSB2b2lkIHJlZnJlc2hfem9uZV9zdGF0X3RocmVzaG9sZHModm9pZCkgeyB9XFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBjcHVfdm1fc3RhdHNfZm9sZChpbnQgY3B1KSB7IH1cXG4rc3RhdGljIGlubGluZSB2b2lkIHN5bmNfdm1fc3RhdHModm9pZCkgeyB9XFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBxdWlldF92bXN0YXQodm9pZCkgeyB9XFxuIHN0YXRpYyBpbmxpbmUgdm9pZCB2bXN0YXRfZmx1c2hfd29ya3F1ZXVlKHZvaWQpIHsgfVxcbiBcXG5kaWZmIC0tZ2l0IGEvbW0vbWVtb3J5X2hvdHBsdWcuYyBiL21tL21lbW9yeV9ob3RwbHVnLmNcXG5pbmRleCA3YWMxOWZhYjIyNjMyNC4uZGFiNDgzMTY2NzQzOWYgMTAwNjQ0XFxuLS0tIGEvbW0vbWVtb3J5X2hvdHBsdWcuY1xcbisrKyBiL21tL21lbW9yeV9ob3RwbHVnLmNcXG5AQCAtMjIwOCw4ICsyMjA4LDExIEBAIHZvaWQgdHJ5X29mZmxpbmVfbm9kZShpbnQgbmlkKVxcbiBcXG4gXFx0LypcXG4gXFx0ICogYWxsIG1lbW9yeS9jcHUgb2YgdGhpcyBub2RlIGFyZSByZW1vdmVkLCB3ZSBjYW4gb2ZmbGluZSB0aGlzXFxuLVxcdCAqIG5vZGUgbm93LlxcbitcXHQgKiBub2RlIG5vdy4gIEZvbGQgYW55IHBlbmRpbmcgcGVyLWNwdSB2bXN0YXQgZGlmZnMgaW50byB0aGUgZ2xvYmFsXFxuK1xcdCAqIGNvdW50ZXJzIGZpcnN0OiBvbmNlIHRoZSBub2RlIGxlYXZlcyB0aGUgb25saW5lIHNldCB0aGUgcGVyaW9kaWNcXG4rXFx0ICogZm9sZCBza2lwcyBpdCwgb3JwaGFuaW5nIHRoZSByZXNpZHVhbCBvbiBhIGxhdGVyIG9ubGluZS5cXG4gXFx0ICovXFxuK1xcdHN5bmNfdm1fc3RhdHMoKTtcXG4gXFx0bm9kZV9zZXRfb2ZmbGluZShuaWQpO1xcbiBcXHR1bnJlZ2lzdGVyX25vZGUobmlkKTtcXG4gfVxcbmRpZmYgLS1naXQgYS9tbS92bXN0YXQuYyBiL21tL3Ztc3RhdC5jXFxuaW5kZXggZjUzNDk3MmY1MTdkZTAuLmFkNzczNDMyMTJkMzc4IDEwMDY0NFxcbi0tLSBhL21tL3Ztc3RhdC5jXFxuKysrIGIvbW0vdm1zdGF0LmNcXG5AQCAtOTQxLDYgKzk0MSwxNiBAQCB2b2lkIGNwdV92bV9zdGF0c19mb2xkKGludCBjcHUpXFxuIFxcdGZvbGRfZGlmZihnbG9iYWxfem9uZV9kaWZmLCBnbG9iYWxfbm9kZV9kaWZmKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgdm1zdGF0X2ZvbGRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXFxuK3tcXG4rXFx0cmVmcmVzaF9jcHVfdm1fc3RhdHMoZmFsc2UpO1xcbit9XFxuK1xcbit2b2lkIHN5bmNfdm1fc3RhdHModm9pZClcXG4re1xcbitcXHRzY2hlZHVsZV9vbl9lYWNoX2NwdSh2bXN0YXRfZm9sZF93b3JrKTtcXG4rfVxcbitcXG4gLypcXG4gICogdGhpcyBpcyBvbmx5IGNhbGxlZCBpZiAhcG9wdWxhdGVkX3pvbmUoem9uZSksIHdoaWNoIGltcGxpZXMgbm8gb3RoZXIgdXNlcnMgb2ZcXG4gICogcHNldC1cXHUwMDNldm1fc3RhdF9kaWZmW10gZXhpc3QuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA3OjUyOjA0Ljc4ODYwMDg1MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjEwNDY2OTI1NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNT1JZX0hPVFBMVUdcIixcbiAgICBcIk1FTU9SWV9IT1RSRU1PVkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0cnlfb2ZmbGluZV9ub2RlXCIsXG4gICAgXCJzeW5jX3ZtX3N0YXRzXCIsXG4gICAgXCJ2bXN0YXRfZm9sZF93b3JrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNhbGwgdG8gc3luY192bV9zdGF0cygpIGluIHRyeV9vZmZsaW5lX25vZGUoKSB0byBmb2xkIHBlbmRpbmcgcGVyLWNwdSB2bXN0YXQgZGlmZnMgaW50byBnbG9iYWwgY291bnRlcnMgYmVmb3JlIGEgTlVNQSBub2RlIGlzIG9mZmxpbmVkLiBUaGlzIHByZXZlbnRzIHRoZSBwZXJpb2RpYyB2bXN0YXQgZm9sZCBmcm9tIHNraXBwaW5nIHRoZSBvZmZsaW5lZCBub2RlIGFuZCBvcnBoYW5pbmcgdGhlIHJlc2lkdWFsIHN0YXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IGhvdHBsdWcgYW5kIHZtc3RhdCBsb2dpYywgYW5kIGl0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc3lzZnMgbWVtb3J5IGhvdHBsdWcgaW50ZXJmYWNlcy4gRnV6emluZyB0aGlzIGNvdWxkIHVuY292ZXIgcmFjZSBjb25kaXRpb25zIG9yIHNjaGVkdWxpbmcgaXNzdWVzIGR1cmluZyBub2RlIG9mZmxpbmluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2OGFjZjg0ODE2YWZiNjE1YjA4ZDk1NGZiNTg2MGZkZjRkNmE5ZTkzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdW4gMjcgMDc6NTI6MDMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3Ztc3RhdC5oIGIvaW5jbHVkZS9saW51eC92bXN0YXQuaFxuaW5kZXggM2M5YzI2NmNmNzgyYWQuLmVhMTAxNzQyNzgxMTFlIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC92bXN0YXQuaFxuKysrIGIvaW5jbHVkZS9saW51eC92bXN0YXQuaFxuQEAgLTI5Myw2ICsyOTMsNyBAQCBleHRlcm4gdm9pZCBfX2RlY19ub2RlX3N0YXRlKHN0cnVjdCBwZ2xpc3RfZGF0YSAqLCBlbnVtIG5vZGVfc3RhdF9pdGVtKTtcbiBcbiB2b2lkIHF1aWV0X3Ztc3RhdCh2b2lkKTtcbiB2b2lkIGNwdV92bV9zdGF0c19mb2xkKGludCBjcHUpO1xuK3ZvaWQgc3luY192bV9zdGF0cyh2b2lkKTtcbiB2b2lkIHJlZnJlc2hfem9uZV9zdGF0X3RocmVzaG9sZHModm9pZCk7XG4gXG4gdm9pZCBkcmFpbl96b25lc3RhdChzdHJ1Y3Qgem9uZSAqem9uZSwgc3RydWN0IHBlcl9jcHVfem9uZXN0YXQgKik7XG5AQCAtMzk3LDYgKzM5OCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX2RlY19ub2RlX3BhZ2Vfc3RhdGUoc3RydWN0IHBhZ2UgKnBhZ2UsXG4gXG4gc3RhdGljIGlubGluZSB2b2lkIHJlZnJlc2hfem9uZV9zdGF0X3RocmVzaG9sZHModm9pZCkgeyB9XG4gc3RhdGljIGlubGluZSB2b2lkIGNwdV92bV9zdGF0c19mb2xkKGludCBjcHUpIHsgfVxuK3N0YXRpYyBpbmxpbmUgdm9pZCBzeW5jX3ZtX3N0YXRzKHZvaWQpIHsgfVxuIHN0YXRpYyBpbmxpbmUgdm9pZCBxdWlldF92bXN0YXQodm9pZCkgeyB9XG4gc3RhdGljIGlubGluZSB2b2lkIHZtc3RhdF9mbHVzaF93b3JrcXVldWUodm9pZCkgeyB9XG4gXG5kaWZmIC0tZ2l0IGEvbW0vbWVtb3J5X2hvdHBsdWcuYyBiL21tL21lbW9yeV9ob3RwbHVnLmNcbmluZGV4IDdhYzE5ZmFiMjI2MzI0Li5kYWI0ODMxNjY3NDM5ZiAxMDA2NDRcbi0tLSBhL21tL21lbW9yeV9ob3RwbHVnLmNcbisrKyBiL21tL21lbW9yeV9ob3RwbHVnLmNcbkBAIC0yMjA4LDggKzIyMDgsMTEgQEAgdm9pZCB0cnlfb2ZmbGluZV9ub2RlKGludCBuaWQpXG4gXG4gXHQvKlxuIFx0ICogYWxsIG1lbW9yeS9jcHUgb2YgdGhpcyBub2RlIGFyZSByZW1vdmVkLCB3ZSBjYW4gb2ZmbGluZSB0aGlzXG4tXHQgKiBub2RlIG5vdy5cbitcdCAqIG5vZGUgbm93LiAgRm9sZCBhbnkgcGVuZGluZyBwZXItY3B1IHZtc3RhdCBkaWZmcyBpbnRvIHRoZSBnbG9iYWxcbitcdCAqIGNvdW50ZXJzIGZpcnN0OiBvbmNlIHRoZSBub2RlIGxlYXZlcyB0aGUgb25saW5lIHNldCB0aGUgcGVyaW9kaWNcbitcdCAqIGZvbGQgc2tpcHMgaXQsIG9ycGhhbmluZyB0aGUgcmVzaWR1YWwgb24gYSBsYXRlciBvbmxpbmUuXG4gXHQgKi9cbitcdHN5bmNfdm1fc3RhdHMoKTtcbiBcdG5vZGVfc2V0X29mZmxpbmUobmlkKTtcbiBcdHVucmVnaXN0ZXJfbm9kZShuaWQpO1xuIH1cbmRpZmYgLS1naXQgYS9tbS92bXN0YXQuYyBiL21tL3Ztc3RhdC5jXG5pbmRleCBmNTM0OTcyZjUxN2RlMC4uYWQ3NzM0MzIxMmQzNzggMTAwNjQ0XG4tLS0gYS9tbS92bXN0YXQuY1xuKysrIGIvbW0vdm1zdGF0LmNcbkBAIC05NDEsNiArOTQxLDE2IEBAIHZvaWQgY3B1X3ZtX3N0YXRzX2ZvbGQoaW50IGNwdSlcbiBcdGZvbGRfZGlmZihnbG9iYWxfem9uZV9kaWZmLCBnbG9iYWxfbm9kZV9kaWZmKTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgdm1zdGF0X2ZvbGRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXG4re1xuK1x0cmVmcmVzaF9jcHVfdm1fc3RhdHMoZmFsc2UpO1xuK31cbitcbit2b2lkIHN5bmNfdm1fc3RhdHModm9pZClcbit7XG4rXHRzY2hlZHVsZV9vbl9lYWNoX2NwdSh2bXN0YXRfZm9sZF93b3JrKTtcbit9XG4rXG4gLypcbiAgKiB0aGlzIGlzIG9ubHkgY2FsbGVkIGlmICFwb3B1bGF0ZWRfem9uZSh6b25lKSwgd2hpY2ggaW1wbGllcyBubyBvdGhlciB1c2VycyBvZlxuICAqIHBzZXQtXHUwMDNldm1fc3RhdF9kaWZmW10gZXhpc3QuXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzo1MjowNC43ODg2MDM1MTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODI0NDI0Mjg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE1lbW9yeSBIb3RwbHVnIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyB0b3VjaGluZyBgbW0vbWVtb3J5X2hvdHBsdWcuY2AgYW5kIGBtbS92bXN0YXQuY2AuIFJpZ2h0LCBpbiBgbW0vbWVtb3J5X2hvdHBsdWcuY2AsIEkgc2VlIGB0cnlfb2ZmbGluZV9ub2RlYCBjYWxscyBgc3luY192bV9zdGF0cygpYC4gQW5kIHRoZW4sIGZsaXBwaW5nIG92ZXIgdG8gYG1tL3Ztc3RhdC5jYCwgYHN5bmNfdm1fc3RhdHMoKWAgaXMgaW1wbGVtZW50ZWQgd2l0aCB0aGF0IGBzY2hlZHVsZV9vbl9lYWNoX2NwdSh2bXN0YXRfZm9sZF93b3JrKWAgY2FsbCwgd2hpY2ggdGhlbiBnb2VzIHRvIGByZWZyZXNoX2NwdV92bV9zdGF0cyhmYWxzZSlgLlxuXG5UaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWVtb3J5IGhvdHBsdWcgcHJvY2Vzcywgc3BlY2lmaWNhbGx5IHdoZW4gb2ZmbGluaW5nIGEgTlVNQSBub2RlLiBUaGUgcXVlc3Rpb24gbm93IGJlY29tZXM6IGlzIHRoaXMgcGF0Y2ggZnV6emFibGU/IE1lbW9yeSBob3RwbHVnIGlzIGEgY3JpdGljYWwgZmVhdHVyZSwgb2J2aW91c2x5LCBidXQgaXQncyB0eXBpY2FsbHkgdHJpZ2dlcmVkIGJ5IHN5c2ZzIGludGVyYWN0aW9ucyBvciBzcGVjaWZpYyBoYXJkd2FyZSBldmVudHMsIHJpZ2h0PyBDYW4gSSB0cmlnZ2VyIHRoaXMgZnJvbSB1c2Vyc3BhY2U/IFllcywgZGVmaW5pdGVseS4gSSBjYW4gdXNlIHN5c2ZzLCBzb21ldGhpbmcgbGlrZSBgL3N5cy9kZXZpY2VzL3N5c3RlbS9ub2RlL25vZGVYL29ubGluZWAgb3IgZXZlbiBtZW1vcnkgYmxvY2tzLlxuXG5BbmQsIGNhbiB0aGlzIGV2ZW4gYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJIHRoaW5rIGl0IGlzLCBtZW1vcnkgaG90cGx1ZyBpcyBzdXBwb3J0ZWQgaW4gUUVNVSwgc28gdGhhdCBzaG91bGRuJ3QgYmUgYSBwcm9ibGVtLlxuXG5MZXQgbWUganVzdCBjaGVjayBgdHJ5X29mZmxpbmVfbm9kZWAgaW4gYG1tL21lbW9yeV9ob3RwbHVnLmNgIGFnYWluLi4uIGdvdHRhIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM5NywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA3OjUyOjA5LjYxMzAzMjE3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMDg2NDI3MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHJ5X29mZmxpbmVfbm9kZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2FjcGkvYWNwaV9wcm9jZXNzb3IuYz00NzY9c3RhdGljIHZvaWQgYWNwaV9wcm9jZXNzb3JfcG9zdF9lamVjdChzdHJ1Y3QgYWNwaV9kZXZpY2UgKmRldmljZSlcXG4tLVxcbmRyaXZlcnMvYWNwaS9hY3BpX3Byb2Nlc3Nvci5jLTUxMS1cXG5kcml2ZXJzL2FjcGkvYWNwaV9wcm9jZXNzb3IuYzo1MTI6XFx0dHJ5X29mZmxpbmVfbm9kZShjcHVfdG9fbm9kZShwci1cXHUwMDNlaWQpKTtcXG5kcml2ZXJzL2FjcGkvYWNwaV9wcm9jZXNzb3IuYy01MTMtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9MjU5PXN0YXRpYyBpbmxpbmUgdm9pZCBwZ2RhdF9yZXNpemVfaW5pdChzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KSB7fVxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI2My1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MjY0OmV4dGVybiB2b2lkIHRyeV9vZmZsaW5lX25vZGUoaW50IG5pZCk7XFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI2NS1leHRlcm4gaW50IG9mZmxpbmVfcGFnZXModW5zaWduZWQgbG9uZyBzdGFydF9wZm4sIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9MjY5PWV4dGVybiBpbnQgb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yNzEtI2Vsc2VcXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MjcyOnN0YXRpYyBpbmxpbmUgdm9pZCB0cnlfb2ZmbGluZV9ub2RlKGludCBuaWQpIHt9XFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI3My1cXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM9MjE2ND1zdGF0aWMgaW50IGNoZWNrX25vX21lbWJsb2NrX2Zvcl9ub2RlX2NiKHN0cnVjdCBtZW1vcnlfYmxvY2sgKm1lbSwgdm9pZCAqYXJnKVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMTc2LS8qKlxcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjE3NzogKiB0cnlfb2ZmbGluZV9ub2RlXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMTc4LSAqIEBuaWQ6IHRoZSBub2RlIElEXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIxODQtICovXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMTg1OnZvaWQgdHJ5X29mZmxpbmVfbm9kZShpbnQgbmlkKVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjE4Ni17XFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyMTgtfVxcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjIxOTpFWFBPUlRfU1lNQk9MKHRyeV9vZmZsaW5lX25vZGUpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjIyMC1cXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM9MjI0MT1zdGF0aWMgaW50IHRyeV9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyODctXFx0aWYgKG5pZCAhPSBOVU1BX05PX05PREUpXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMjg4OlxcdFxcdHRyeV9vZmZsaW5lX25vZGUobmlkKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyODktXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIzMDAtICogYW5kIG9ubGluZS9vZmZsaW5lIG9wZXJhdGlvbnMgYmVmb3JlIHRoaXMgY2FsbCwgYXMgcmVxdWlyZWQgYnlcXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIzMDE6ICogdHJ5X29mZmxpbmVfbm9kZSgpLlxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMwMi0gKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6NTI6MTEuNzIxNjgyNjA4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgzMzUwMzQ1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTWVtb3J5IFJlbW92YWwgUGF0aHMqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aGUgbWVtb3J5IHJlbW92YWwgcHJvY2VzcyBpbiB0aGUga2VybmVsLCBhbmQgaXQgbG9va3MgbGlrZSBgdHJ5X29mZmxpbmVfbm9kZWAgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGluIGEgY291cGxlIG9mIGtleSBhcmVhcy4gSSBzZWUgdGhhdCBpdCdzIGNhbGxlZCBmcm9tIHR3byBkaXN0aW5jdCBmdW5jdGlvbnM6IGB0cnlfcmVtb3ZlX21lbW9yeWAgd2l0aGluIGBtbS9tZW1vcnlfaG90cGx1Zy5jYCDigJMgd2hpY2ggaXMgZXhwZWN0ZWQg4oCTIGFuZCBzdXJwcmlzaW5nbHksIGZyb20gYGFjcGlfcHJvY2Vzc29yX3Bvc3RfZWplY3RgIGluIGBkcml2ZXJzL2FjcGkvYWNwaV9wcm9jZXNzb3IuY2AuIFRoYXQgQUNQSSBjYWxsIGlzIGludGVyZXN0aW5nLCBpdCBpbXBsaWVzIGhhcmR3YXJlIHJlbW92YWwgb2YgbWVtb3J5IGlzIHRpZWQgaW50byBwcm9jZXNzb3IgcmVtb3ZhbCBldmVudHMgc29tZWhvdy5cblxuRGlnZ2luZyBkZWVwZXIgaW50byB0aGUgY2FsbGluZyBzdHJ1Y3R1cmUsIGB0cnlfcmVtb3ZlX21lbW9yeWAgaXRzZWxmIGlzIGNhbGxlZCBieSBib3RoIGBvZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5YCBhbmQganVzdCBwbGFpbiBgcmVtb3ZlX21lbW9yeWAuIEFuZCAqdGhhdCogYHJlbW92ZV9tZW1vcnlgIGZ1bmN0aW9uIGlzIGV4cG9ydGVkLCB3aGljaCBtZWFucyBpdCdzIGEgcHVibGljbHkgYWNjZXNzaWJsZSBpbnRlcmZhY2UgZm9yIG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdGhhdCBsaWtlbHkgbWVhbnMgYSB2YXJpZXR5IG9mIGRldmljZSBkcml2ZXJzIHJlbHkgb24gaXQgdG8gZ3JhY2VmdWxseSBoYW5kbGUgbWVtb3J5IGJlaW5nIHRha2VuIG9mZmxpbmUuIEFuZCBpbmRlZWQsIHRoZSB0ZXh0IG1lbnRpb25zIHRoYXQgaXTigJlzIGJlaW5nIHVzZWQgYnkgdGhpbmdzIGxpa2UgdmlydGlvLW1lbSwgZGF4LCBhbmQgQUNQSS5cblxuSSBzaG91bGQgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGB0cnlfcmVtb3ZlX21lbW9yeWAgaXRzZWxmIGluIGBtbS9tZW1vcnlfaG90cGx1Zy5jYCBub3cgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMuIFRoYXQncyB0aGUgY29yZSBvZiB0aGlzIG9wZXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY5NSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzo1MjoxNS41NTUxODg4NDFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2NDQ3NTAzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0cnlfcmVtb3ZlX21lbW9yeVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9tZW1vcnlfaG90cGx1Zy5jPTIyMjE9c3RhdGljIGludCBtZW1vcnlfYmxvY2tzX2hhdmVfYWx0bWFwcyh1NjQgc3RhcnQsIHU2NCBzaXplKVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMjQwLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjI0MTpzdGF0aWMgaW50IHRyeV9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMjQyLXtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM9MjMwMz12b2lkIF9fcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzA5LVxcdCAqL1xcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjMxMDpcXHRpZiAodHJ5X3JlbW92ZV9tZW1vcnkoc3RhcnQsIHNpemUpKVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMxMS1cXHRcXHRCVUcoKTtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM9MjMxOD1pbnQgcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzIyLVxcdGxvY2tfZGV2aWNlX2hvdHBsdWcoKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIzMjM6XFx0cmMgPSB0cnlfcmVtb3ZlX21lbW9yeShzdGFydCwgc2l6ZSk7XFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzI0LVxcdHVubG9ja19kZXZpY2VfaG90cGx1ZygpO1xcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYz0yMzgzPWludCBvZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTI0MTgtXFx0aWYgKCFyYykge1xcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjQxOTpcXHRcXHRyYyA9IHRyeV9yZW1vdmVfbWVtb3J5KHN0YXJ0LCBzaXplKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTI0MjAtXFx0XFx0aWYgKHJjKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzo1MjoxNy42MTk2NzQ3NDRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mjc2MjY5NzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIE1lbW9yeSBSZW1vdmFsIEVudHJ5IFBvaW50cyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgZnVuY3Rpb25zIGByZW1vdmVfbWVtb3J5YCBhbmQgYG9mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnlgIOKAkyB0aG9zZSBhcmUgdGhlIGtleSBlbnRyeSBwb2ludHMgZm9yIG1lbW9yeSByZW1vdmFsLiBNeSBwcmltYXJ5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhlc2UgYXJlIGV2ZW4gKmFjY2Vzc2libGUqIGZyb20gdXNlcnNwYWNlLiBBcmUgdGhleSBkaXJlY3RseSBleHBvc2VkLCBvciBhcmUgdGhleSBidXJpZWQgYmVoaW5kIG90aGVyIG1lY2hhbmlzbXM/XG5cbkkgbmVlZCB0byBjb25zaWRlciB0aGUgY29udGV4dCBpbiB3aGljaCBtZW1vcnkgaG90cGx1ZyBldmVudHMgYXJlIHRyaWdnZXJlZC4gSSBrbm93IGl0IGNhbiBiZSBpbml0aWF0ZWQgdGhyb3VnaCBBQ1BJIGV2ZW50cywgdmlydGlvLW1lbSwgb3IgZXZlbiBkYXguIFRoZSBxdWVzdGlvbiBpcywgY2FuICpzeXprYWxsZXIqIGJlIHVzZWQgdG8gdHJpZ2dlciBvbmUgb2YgdGhlc2UgaG90cGx1Z2dpbmcgZXZlbnRzIHdoaWNoIHdpbGwgdGhlbiwgaG9wZWZ1bGx5LCBsZWFkIHRvIHRoZSByZW1vdmFsIG9mIG1lbW9yeT9cblxuU3l6a2FsbGVyIGNhbiB0cmlnZ2VyIG1lbW9yeSBob3RwbHVnIG9wZXJhdGlvbnMsIHNwZWNpZmljYWxseSBpZiBpdCBoYXMgYWNjZXNzIHRvIGxvY2F0aW9ucyBsaWtlIGAvc3lzL2RldmljZXMvc3lzdGVtL21lbW9yeS9tZW1vcnlYL3N0YXRlYC4gQnV0IGZyb20gbXkgZXhwZXJpZW5jZSwgdGhhdCBvZnRlbiByZXN1bHRzIGluIHNpbXBseSBvZmZsaW5pbmcgYW5kIG9ubGluaW5nIG1lbW9yeSBibG9ja3Mg4oCTIG5vdCBhY3R1YWwgKnJlbW92YWwqLiBUaGlzIGlzIGEgY3J1Y2lhbCBkaXN0aW5jdGlvbi5cblxuV2FpdC4uLiBzb21ldGhpbmcgY2xpY2tlZC4gSSByZW1lbWJlciBgdHJ5X29mZmxpbmVfbm9kZWAgZ2V0cyBjYWxsZWQgd2hlbiBhIG5vZGUgZ29lcyBvZmZsaW5lLiBOb3csIHRoZSBrZXkgaXMgdG8gZGV0ZXJtaW5lIGlmIGB0cnlfb2ZmbGluZV9ub2RlYCBjYW4gYmUgcmVhY2hlZCBhbmQgdHJpZ2dlcmVkIHZpYSBzeXNmcy4gVGhpcyBpcyB3aGVyZSBJJ2xsIGZvY3VzIG15IGludmVzdGlnYXRpb24gbm93LiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBwYXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTYwLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA3OjUyOjIxLjg5NTk0Njk4NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDQ4Mzc2MjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm9mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jPTcyND1zdGF0aWMgaW50IHZpcnRpb19tZW1fc2JtX3JlbW92ZV9tYihzdHJ1Y3QgdmlydGlvX21lbSAqdm0sIHVuc2lnbmVkIGxvbmcgbWJfaWQpXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzM5LSAqL1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo3NDA6c3RhdGljIGludCB2aXJ0aW9fbWVtX29mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkoc3RydWN0IHZpcnRpb19tZW0gKnZtLFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03NDEtXFx0XFx0XFx0XFx0XFx0XFx0dWludDY0X3QgYWRkcixcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03NDktXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjc1MDpcXHRyYyA9IG9mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkoYWRkciwgc2l6ZSk7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTc1MS1cXHRpZiAoIXJjKSB7XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzY5LS8qXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjc3MDogKiBTZWUgdmlydGlvX21lbV9vZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KCk6IFRyeSBvZmZsaW5pbmcgYW5kIHJlbW92aW5nXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTc3MS0gKiBhIHNpbmdsZSBMaW51eCBtZW1vcnkgYmxvY2suXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9NzczPXN0YXRpYyBpbnQgdmlydGlvX21lbV9zYm1fb2ZmbGluZV9hbmRfcmVtb3ZlX21iKHN0cnVjdCB2aXJ0aW9fbWVtICp2bSxcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03NzgtXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjc3OTpcXHRyZXR1cm4gdmlydGlvX21lbV9vZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KHZtLCBhZGRyLCBzaXplKTtcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzgwLX1cXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz03ODg9c3RhdGljIGludCB2aXJ0aW9fbWVtX3NibV90cnlfcmVtb3ZlX3VucGx1Z2dlZF9tYihzdHJ1Y3QgdmlydGlvX21lbSAqdm0sXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzk5LVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo4MDA6XFx0Lyogb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSgpIHdvcmtzIGZvciBvbmxpbmUgYW5kIG9mZmxpbmUgbWVtb3J5LiAqL1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy04MDEtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2bS1cXHUwMDNlaG90cGx1Z19tdXRleCk7XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtODEwLS8qXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjgxMTogKiBTZWUgdmlydGlvX21lbV9vZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KCk6IFRyeSB0byBvZmZsaW5lIGFuZCByZW1vdmUgYVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy04MTItICogYWxsIExpbnV4IG1lbW9yeSBibG9ja3MgY292ZXJlZCBieSB0aGUgYmlnIGJsb2NrLlxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jPTgxND1zdGF0aWMgaW50IHZpcnRpb19tZW1fYmJtX29mZmxpbmVfYW5kX3JlbW92ZV9iYihzdHJ1Y3QgdmlydGlvX21lbSAqdm0sXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtODE5LVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo4MjA6XFx0cmV0dXJuIHZpcnRpb19tZW1fb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSh2bSwgYWRkciwgc2l6ZSk7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTgyMS19XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9MjY4PWV4dGVybiB2b2lkIF9fcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKTtcXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MjY5OmV4dGVybiBpbnQgb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKTtcXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjcwLVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYz0yMzU5PXN0YXRpYyBpbnQgdHJ5X3Jlb25saW5lX21lbW9yeV9ibG9jayhzdHJ1Y3QgbWVtb3J5X2Jsb2NrICptZW0sIHZvaWQgKmFyZylcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjM4Mi0gKi9cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIzODM6aW50IG9mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSlcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIzODQte1xcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yNDM3LX1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjI0Mzg6RVhQT1JUX1NZTUJPTF9HUEwob2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSk7XFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yNDM5LSNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzo1MjoyMy45NDQzMzAwOThaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzMyNDE1Nzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIE1lbW9yeSBNYW5hZ2VtZW50IExhYnlyaW50aCoqXG5cbk9rYXksIEknbSB0aGlua2luZyBhYm91dCB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgYXNwZWN0IG9mIHRoaXMgc3lzdGVtLiBXZSdyZSBjbGVhcmx5IGRlYWxpbmcgd2l0aCBzb21lIGZvcm0gb2YgcGVyc2lzdGVudCBzdG9yYWdlIG9yIHN0YXRlLiAgVGhlIGN1cnJlbnQgYXBwcm9hY2ggaGFzIGxpa2VseSBjb25zaWRlcmVkIHNldmVyYWwgbWV0aG9kcywgYnV0IHdoYXQgYWJvdXQgYSBwYXJ0aWN1bGFyIGFwcHJvYWNoLCBpbiB0aGlzIGluc3RhbmNlPyBJJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gdGhlIGNvbW1hbmQgYW5kIGNvbmNlcHQgb2YgYHJlbW92ZV9tZW1vcnlgLiBUaGlzIHN1Z2dlc3RzIHdlJ3JlIG5vdCBqdXN0IGFwcGVuZGluZyBkYXRhIG9yIG92ZXJ3cml0aW5nIGluLXBsYWNlLiBXZSBuZWVkIHRvIGNvbnNpZGVyIGhvdyB0aGlzIGZ1bmN0aW9uIHdvdWxkIGltcGFjdCB0aGUgb3ZlcmFsbCBzeXN0ZW0uIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGV2YWx1YXRlIHRoZSBpbXBsaWNhdGlvbnMgb2YgcmVtb3ZhbC4gRm9yIGV4YW1wbGUsIHdoYXQgd291bGQgYmUgdGhlIGltcGFjdCBpbiB0ZXJtcyBvZiBjYXNjYWRpbmcgZWZmZWN0cz8gQXJlIHRoZXJlIGFueSBkZXBlbmRlbmNpZXMgb24gdGhlIGRhdGEgYmVpbmcgcmVtb3ZlZD8gSG93IGRvZXMgaXQgaW50ZXJhY3Qgd2l0aCBhbnkgY2FjaGluZyBvciBpbmRleGluZyBtZWNoYW5pc21zIHRoYXQgbWlnaHQgYmUgaW4gcGxhY2U/IEkgbmVlZCB0byB0aGluayB0aGlzIHRocm91Z2ggY2FyZWZ1bGx5LCBlc3BlY2lhbGx5IHJlZ2FyZGluZyBjb25zaXN0ZW5jeSBhbmQgYXZvaWRpbmcgZGF0YSBjb3JydXB0aW9uIG9yIG9ycGhhbmVkIHJlZmVyZW5jZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwMjEsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA3OjUyOjI2LjY3Njc0ODg3NloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg4OTg0OTI3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZW1vdmVfbWVtb3J5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTA4IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5hcmNoL2FybTY0L21tL21tdS5jPTE5ODQ9aW50IGFyY2hfYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLFxcbi0tXFxuYXJjaC9hcm02NC9tbS9tbXUuYy0yMDE4LVxcbmFyY2gvYXJtNjQvbW0vbW11LmM6MjAxOTp2b2lkIGFyY2hfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcXG5hcmNoL2FybTY0L21tL21tdS5jLTIwMjAtXFx0XFx0XFx0c3RydWN0IGRldl9wYWdlbWFwICpwZ21hcClcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL21tL2luaXQuYz0xMDc9aW50IGFyY2hfYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBzdHJ1Y3QgbWhwX3BhcmFtcyAqcGFyYW1zKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTEyMS1cXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmM6MTIyOnZvaWQgYXJjaF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxcbmFyY2gvbG9vbmdhcmNoL21tL2luaXQuYy0xMjMtXFx0XFx0XFx0c3RydWN0IGRldl9wYWdlbWFwICpwZ21hcClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9tZW0uYz0xNDU9aW50IF9fcmVmIGFyY2hfYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLFxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL21lbS5jLTE2MC1cXG5hcmNoL3Bvd2VycGMvbW0vbWVtLmM6MTYxOnZvaWQgX19yZWYgYXJjaF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxcbmFyY2gvcG93ZXJwYy9tbS9tZW0uYy0xNjItXFx0XFx0XFx0ICAgICAgc3RydWN0IGRldl9wYWdlbWFwICpwZ21hcClcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jPTIzMz1zdGF0aWMgaW50IHBzZXJpZXNfcmVtb3ZlX21lbWJsb2NrKHVuc2lnbmVkIGxvbmcgYmFzZSwgdW5zaWduZWQgbG9uZyBtZW1ibG9ja19zaXplKVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2hvdHBsdWctbWVtb3J5LmMtMjQ4LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBzZWN0aW9uc19wZXJfYmxvY2s7IGkrKykge1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jOjI0OTpcXHRcXHRfX3JlbW92ZV9tZW1vcnkoYmFzZSwgTUlOX01FTU9SWV9CTE9DS19TSVpFKTtcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYy0yNTAtXFx0XFx0YmFzZSArPSBNSU5fTUVNT1JZX0JMT0NLX1NJWkU7XFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYz0zMDI9c3RhdGljIGludCBkbHBhcl9yZW1vdmVfbG1iKHN0cnVjdCBkcm1lbV9sbWIgKmxtYilcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jLTMxOS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYzozMjA6XFx0X19yZW1vdmVfbWVtb3J5KGxtYi1cXHUwMDNlYmFzZV9hZGRyLCBtZW1vcnlfYmxvY2tfc2l6ZSk7XFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2hvdHBsdWctbWVtb3J5LmMtMzIxLVxcdG1lbW9yeV9ibG9ja19wdXQobWVtX2Jsb2NrKTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jPTU2ND1zdGF0aWMgaW50IGRscGFyX2FkZF9sbWIoc3RydWN0IGRybWVtX2xtYiAqbG1iKVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2hvdHBsdWctbWVtb3J5LmMtNTk2LVxcdFxcdHByX2VycihcXFwiRmFpbGVkIHRvIG9ubGluZSBMTUIgMHgleCBvbiBub2RlICV1XFxcXG5cXFwiLCBsbWItXFx1MDAzZWRyY19pbmRleCwgbmlkKTtcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYzo1OTc6XFx0XFx0X19yZW1vdmVfbWVtb3J5KGxtYi1cXHUwMDNlYmFzZV9hZGRyLCBibG9ja19zeik7XFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2hvdHBsdWctbWVtb3J5LmMtNTk4LVxcdFxcdGludmFsaWRhdGVfbG1iX2Fzc29jaWF0aXZpdHlfaW5kZXgobG1iKTtcXG4tLVxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jPTE3MTM9aW50IF9fcmVmIGFyY2hfYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBzdHJ1Y3QgbWhwX3BhcmFtcyAqcGFyYW1zKVxcbi0tXFxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTczMS1cXG5hcmNoL3Jpc2N2L21tL2luaXQuYzoxNzMyOnZvaWQgX19yZWYgYXJjaF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTE3MzMtXFx0XFx0XFx0ICAgICAgc3RydWN0IGRldl9wYWdlbWFwICpwZ21hcClcXG4tLVxcbmFyY2gvczM5MC9tbS9pbml0LmM9MjYwPWludCBhcmNoX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSxcXG4tLVxcbmFyY2gvczM5MC9tbS9pbml0LmMtMjgwLVxcbmFyY2gvczM5MC9tbS9pbml0LmM6MjgxOnZvaWQgYXJjaF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxcbmFyY2gvczM5MC9tbS9pbml0LmMtMjgyLVxcdFxcdFxcdHN0cnVjdCBkZXZfcGFnZW1hcCAqcGdtYXApXFxuLS1cXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM9MTI5NT1rZXJuZWxfcGh5c2ljYWxfbWFwcGluZ19yZW1vdmUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXFxuLS1cXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmMtMTMwMi1cXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM6MTMwMzp2b2lkIF9fcmVmIGFyY2hfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmMtMTMwNC1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgZGV2X3BhZ2VtYXAgKnBnbWFwKVxcbi0tXFxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jPTE2OD1zdGF0aWMgaW50IGFjcGlfbWVtb3J5X2VuYWJsZV9kZXZpY2Uoc3RydWN0IGFjcGlfbWVtb3J5X2RldmljZSAqbWVtX2RldmljZSlcXG4tLVxcbmRyaXZlcnMvYWNwaS9hY3BpX21lbWhvdHBsdWcuYy0yNTItXFxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jOjI1MzpzdGF0aWMgdm9pZCBhY3BpX21lbW9yeV9yZW1vdmVfbWVtb3J5KHN0cnVjdCBhY3BpX21lbW9yeV9kZXZpY2UgKm1lbV9kZXZpY2UpXFxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jLTI1NC17XFxuLS1cXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmMtMjYxLVxcdFxcdGFjcGlfdW5iaW5kX21lbW9yeV9ibG9ja3MoaW5mbyk7XFxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jOjI2MjpcXHRcXHRfX3JlbW92ZV9tZW1vcnkoaW5mby1cXHUwMDNlc3RhcnRfYWRkciwgaW5mby1cXHUwMDNlbGVuZ3RoKTtcXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmMtMjYzLVxcdFxcdGxpc3RfZGVsKFxcdTAwMjZpbmZvLVxcdTAwM2VsaXN0KTtcXG4tLVxcbmRyaXZlcnMvYWNwaS9hY3BpX21lbWhvdHBsdWcuYz0zMjU9c3RhdGljIHZvaWQgYWNwaV9tZW1vcnlfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgYWNwaV9kZXZpY2UgKmRldmljZSlcXG4tLVxcbmRyaXZlcnMvYWNwaS9hY3BpX21lbWhvdHBsdWcuYy0zMzItXFx0bWVtX2RldmljZSA9IGFjcGlfZHJpdmVyX2RhdGEoZGV2aWNlKTtcXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmM6MzMzOlxcdGFjcGlfbWVtb3J5X3JlbW92ZV9tZW1vcnkobWVtX2RldmljZSk7XFxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jLTMzNC1cXHRhY3BpX21lbW9yeV9kZXZpY2VfZnJlZShtZW1fZGV2aWNlKTtcXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz03ODE9c3RhdGljIGludCBhZGRfbWVtb3J5X2Jsb2NrKHVuc2lnbmVkIGxvbmcgYmxvY2tfaWQsIGludCBuaWQsIHVuc2lnbmVkIGxvbmcgc3RhdGUsXFxuLS1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtODI2LVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYzo4Mjc6c3RhdGljIHZvaWQgcmVtb3ZlX21lbW9yeV9ibG9jayhzdHJ1Y3QgbWVtb3J5X2Jsb2NrICptZW1vcnkpXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTgyOC17XFxuLS1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9ODUxPWludCBjcmVhdGVfbWVtb3J5X2Jsb2NrX2RldmljZXModW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBzaXplLFxcbi0tXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTg3Ni1cXHRcXHRcXHRcXHRjb250aW51ZTtcXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6ODc3OlxcdFxcdFxcdHJlbW92ZV9tZW1vcnlfYmxvY2sobWVtKTtcXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtODc4LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy04ODktICovXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jOjg5MDp2b2lkIHJlbW92ZV9tZW1vcnlfYmxvY2tfZGV2aWNlcyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIHNpemUpXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTg5MS17XFxuLS1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtOTA2LVxcdFxcdHVucmVnaXN0ZXJfbWVtb3J5X2Jsb2NrX3VuZGVyX25vZGVzKG1lbSk7XFxuZHJpdmVycy9iYXNlL21lbW9yeS5jOjkwNzpcXHRcXHRyZW1vdmVfbWVtb3J5X2Jsb2NrKG1lbSk7XFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTkwOC1cXHR9XFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2FncC5oPTk3PXN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciB7XFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2FncC5oLTExNC1cXHRpbnQgKCppbnNlcnRfbWVtb3J5KShzdHJ1Y3QgYWdwX21lbW9yeSAqLCBvZmZfdCwgaW50KTtcXG5kcml2ZXJzL2NoYXIvYWdwL2FncC5oOjExNTpcXHRpbnQgKCpyZW1vdmVfbWVtb3J5KShzdHJ1Y3QgYWdwX21lbW9yeSAqLCBvZmZfdCwgaW50KTtcXG5kcml2ZXJzL2NoYXIvYWdwL2FncC5oLTExNi1cXHRzdHJ1Y3QgYWdwX21lbW9yeSAqKCphbGxvY19ieV90eXBlKSAoc2l6ZV90LCBpbnQpO1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9hZ3AuaD0xOTI9aW50IGFncF9nZW5lcmljX2luc2VydF9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKm1lbSwgb2ZmX3QgcGdfc3RhcnQsIGludCB0eXBlKTtcXG5kcml2ZXJzL2NoYXIvYWdwL2FncC5oOjE5MzppbnQgYWdwX2dlbmVyaWNfcmVtb3ZlX21lbW9yeShzdHJ1Y3QgYWdwX21lbW9yeSAqbWVtLCBvZmZfdCBwZ19zdGFydCwgaW50IHR5cGUpO1xcbmRyaXZlcnMvY2hhci9hZ3AvYWdwLmgtMTk0LXN0cnVjdCBhZ3BfbWVtb3J5ICphZ3BfZ2VuZXJpY19hbGxvY19ieV90eXBlKHNpemVfdCBwYWdlX2NvdW50LCBpbnQgdHlwZSk7XFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2FsaS1hZ3AuYz0yMDI9c3RhdGljIGNvbnN0IHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciBhbGlfZ2VuZXJpY19icmlkZ2UgPSB7XFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2FsaS1hZ3AuYy0yMTgtXFx0Lmluc2VydF9tZW1vcnlcXHRcXHQ9IGFncF9nZW5lcmljX2luc2VydF9tZW1vcnksXFxuZHJpdmVycy9jaGFyL2FncC9hbGktYWdwLmM6MjE5OlxcdC5yZW1vdmVfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19yZW1vdmVfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvYWxpLWFncC5jLTIyMC1cXHQuYWxsb2NfYnlfdHlwZVxcdFxcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvYWxpLWFncC5jPTIyNz1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIGFsaV9tMTU0MV9icmlkZ2UgPSB7XFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2FsaS1hZ3AuYy0yNDItXFx0Lmluc2VydF9tZW1vcnlcXHRcXHQ9IGFncF9nZW5lcmljX2luc2VydF9tZW1vcnksXFxuZHJpdmVycy9jaGFyL2FncC9hbGktYWdwLmM6MjQzOlxcdC5yZW1vdmVfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19yZW1vdmVfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvYWxpLWFncC5jLTI0NC1cXHQuYWxsb2NfYnlfdHlwZVxcdFxcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvYWxwaGEtYWdwLmM9ODQ9c3RhdGljIGludCBhbHBoYV9jb3JlX2FncF9pbnNlcnRfbWVtb3J5KHN0cnVjdCBhZ3BfbWVtb3J5ICptZW0sIG9mZl90IHBnX3N0YXJ0LFxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9hbHBoYS1hZ3AuYy0xMDUtXFxuZHJpdmVycy9jaGFyL2FncC9hbHBoYS1hZ3AuYzoxMDY6c3RhdGljIGludCBhbHBoYV9jb3JlX2FncF9yZW1vdmVfbWVtb3J5KHN0cnVjdCBhZ3BfbWVtb3J5ICptZW0sIG9mZl90IHBnX3N0YXJ0LFxcbmRyaXZlcnMvY2hhci9hZ3AvYWxwaGEtYWdwLmMtMTA3LVxcdFxcdFxcdFxcdFxcdGludCB0eXBlKVxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9hbHBoYS1hZ3AuYz0xMjI9c3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIGFscGhhX2NvcmVfYWdwX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvYWxwaGEtYWdwLmMtMTM5LVxcdC5pbnNlcnRfbWVtb3J5XFx0XFx0PSBhbHBoYV9jb3JlX2FncF9pbnNlcnRfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvYWxwaGEtYWdwLmM6MTQwOlxcdC5yZW1vdmVfbWVtb3J5XFx0XFx0PSBhbHBoYV9jb3JlX2FncF9yZW1vdmVfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvYWxwaGEtYWdwLmMtMTQxLVxcdC5hbGxvY19ieV90eXBlXFx0XFx0PSBhZ3BfZ2VuZXJpY19hbGxvY19ieV90eXBlLFxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9hbWQtazctYWdwLmM9Mjg0PXN0YXRpYyBpbnQgYW1kX2luc2VydF9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKm1lbSwgb2ZmX3QgcGdfc3RhcnQsIGludCB0eXBlKVxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9hbWQtazctYWdwLmMtMzI1LVxcbmRyaXZlcnMvY2hhci9hZ3AvYW1kLWs3LWFncC5jOjMyNjpzdGF0aWMgaW50IGFtZF9yZW1vdmVfbWVtb3J5KHN0cnVjdCBhZ3BfbWVtb3J5ICptZW0sIG9mZl90IHBnX3N0YXJ0LCBpbnQgdHlwZSlcXG5kcml2ZXJzL2NoYXIvYWdwL2FtZC1rNy1hZ3AuYy0zMjcte1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9hbWQtazctYWdwLmM9MzYzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgYW1kX2lyb25nYXRlX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvYW1kLWs3LWFncC5jLTM3OS1cXHQuaW5zZXJ0X21lbW9yeVxcdFxcdD0gYW1kX2luc2VydF9tZW1vcnksXFxuZHJpdmVycy9jaGFyL2FncC9hbWQtazctYWdwLmM6MzgwOlxcdC5yZW1vdmVfbWVtb3J5XFx0XFx0PSBhbWRfcmVtb3ZlX21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL2FtZC1rNy1hZ3AuYy0zODEtXFx0LmFsbG9jX2J5X3R5cGVcXHRcXHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2FtZDY0LWFncC5jPTIxNj1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIGFtZF84MTUxX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvYW1kNjQtYWdwLmMtMjMyLVxcdC5pbnNlcnRfbWVtb3J5XFx0XFx0PSBhbWQ2NF9pbnNlcnRfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvYW1kNjQtYWdwLmM6MjMzOlxcdC5yZW1vdmVfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19yZW1vdmVfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvYW1kNjQtYWdwLmMtMjM0LVxcdC5hbGxvY19ieV90eXBlXFx0XFx0PSBhZ3BfZ2VuZXJpY19hbGxvY19ieV90eXBlLFxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9hdGktYWdwLmM9MjU4PXN0YXRpYyBpbnQgYXRpX2luc2VydF9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKiBtZW0sXFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2F0aS1hZ3AuYy0zMDUtXFxuZHJpdmVycy9jaGFyL2FncC9hdGktYWdwLmM6MzA2OnN0YXRpYyBpbnQgYXRpX3JlbW92ZV9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKiBtZW0sIG9mZl90IHBnX3N0YXJ0LFxcbmRyaXZlcnMvY2hhci9hZ3AvYXRpLWFncC5jLTMwNy1cXHRcXHRcXHQgICAgIGludCB0eXBlKVxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9hdGktYWdwLmM9NDExPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgYXRpX2dlbmVyaWNfYnJpZGdlID0ge1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9hdGktYWdwLmMtNDI3LVxcdC5pbnNlcnRfbWVtb3J5XFx0XFx0PSBhdGlfaW5zZXJ0X21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL2F0aS1hZ3AuYzo0Mjg6XFx0LnJlbW92ZV9tZW1vcnlcXHRcXHQ9IGF0aV9yZW1vdmVfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvYXRpLWFncC5jLTQyOS1cXHQuYWxsb2NfYnlfdHlwZVxcdFxcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvZWZmaWNlb24tYWdwLmM9MjM3PXN0YXRpYyBpbnQgZWZmaWNlb25faW5zZXJ0X21lbW9yeShzdHJ1Y3QgYWdwX21lbW9yeSAqIG1lbSwgb2ZmX3QgcGdfc3RhcnQsIGludCB0eXBlKVxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9lZmZpY2Vvbi1hZ3AuYy0yODUtXFxuZHJpdmVycy9jaGFyL2FncC9lZmZpY2Vvbi1hZ3AuYzoyODY6c3RhdGljIGludCBlZmZpY2Vvbl9yZW1vdmVfbWVtb3J5KHN0cnVjdCBhZ3BfbWVtb3J5ICogbWVtLCBvZmZfdCBwZ19zdGFydCwgaW50IHR5cGUpXFxuZHJpdmVycy9jaGFyL2FncC9lZmZpY2Vvbi1hZ3AuYy0yODcte1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9lZmZpY2Vvbi1hZ3AuYy0yODktXFxuZHJpdmVycy9jaGFyL2FncC9lZmZpY2Vvbi1hZ3AuYzoyOTA6XFx0cHJpbnRrKEtFUk5fREVCVUcgUEZYIFxcXCJlZmZpY2Vvbl9yZW1vdmVfbWVtb3J5KCVseCwgJWQpXFxcXG5cXFwiLCBwZ19zdGFydCwgY291bnQpO1xcbmRyaXZlcnMvY2hhci9hZ3AvZWZmaWNlb24tYWdwLmMtMjkxLVxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9lZmZpY2Vvbi1hZ3AuYz0zMTM9c3RhdGljIGNvbnN0IHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciBlZmZpY2Vvbl9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2VmZmljZW9uLWFncC5jLTMzMC1cXHQuaW5zZXJ0X21lbW9yeVxcdFxcdD0gZWZmaWNlb25faW5zZXJ0X21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL2VmZmljZW9uLWFncC5jOjMzMTpcXHQucmVtb3ZlX21lbW9yeVxcdFxcdD0gZWZmaWNlb25fcmVtb3ZlX21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL2VmZmljZW9uLWFncC5jLTMzMi1cXHQuY2FudF91c2VfYXBlcnR1cmVcXHQ9IGZhbHNlLFxcdC8vIHRydWUgbWlnaHQgYmUgZmFzdGVyP1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9nZW5lcmljLmM9NDQ4PWludCBhZ3BfdW5iaW5kX21lbW9yeShzdHJ1Y3QgYWdwX21lbW9yeSAqY3VycilcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvZ2VuZXJpYy5jLTQ1OS1cXG5kcml2ZXJzL2NoYXIvYWdwL2dlbmVyaWMuYzo0NjA6XFx0cmV0X3ZhbCA9IGN1cnItXFx1MDAzZWJyaWRnZS1cXHUwMDNlZHJpdmVyLVxcdTAwM2VyZW1vdmVfbWVtb3J5KGN1cnIsIGN1cnItXFx1MDAzZXBnX3N0YXJ0LCBjdXJyLVxcdTAwM2V0eXBlKTtcXG5kcml2ZXJzL2NoYXIvYWdwL2dlbmVyaWMuYy00NjEtXFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2dlbmVyaWMuYz0xMTA0PUVYUE9SVF9TWU1CT0woYWdwX2dlbmVyaWNfaW5zZXJ0X21lbW9yeSk7XFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2dlbmVyaWMuYy0xMTA2LVxcbmRyaXZlcnMvY2hhci9hZ3AvZ2VuZXJpYy5jOjExMDc6aW50IGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKm1lbSwgb2ZmX3QgcGdfc3RhcnQsIGludCB0eXBlKVxcbmRyaXZlcnMvY2hhci9hZ3AvZ2VuZXJpYy5jLTExMDgte1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9nZW5lcmljLmMtMTE0Mi19XFxuZHJpdmVycy9jaGFyL2FncC9nZW5lcmljLmM6MTE0MzpFWFBPUlRfU1lNQk9MKGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnkpO1xcbmRyaXZlcnMvY2hhci9hZ3AvZ2VuZXJpYy5jLTExNDQtXFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jPTQ1MD1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIGludGVsX2dlbmVyaWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYy00NjYtXFx0Lmluc2VydF9tZW1vcnlcXHRcXHQ9IGFncF9nZW5lcmljX2luc2VydF9tZW1vcnksXFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYzo0Njc6XFx0LnJlbW92ZV9tZW1vcnlcXHRcXHQ9IGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnksXFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYy00NjgtXFx0LmFsbG9jX2J5X3R5cGVcXHRcXHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jPTQ3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIGludGVsXzgxNV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jLTQ5My1cXHQuaW5zZXJ0X21lbW9yeVxcdFxcdD0gYWdwX2dlbmVyaWNfaW5zZXJ0X21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jOjQ5NDpcXHQucmVtb3ZlX21lbW9yeVxcdFxcdD0gYWdwX2dlbmVyaWNfcmVtb3ZlX21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jLTQ5NS1cXHQuYWxsb2NfYnlfdHlwZVxcdFxcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmM9NTA0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgaW50ZWxfODIwX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNTIwLVxcdC5pbnNlcnRfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19pbnNlcnRfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmM6NTIxOlxcdC5yZW1vdmVfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19yZW1vdmVfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNTIyLVxcdC5hbGxvY19ieV90eXBlXFx0XFx0PSBhZ3BfZ2VuZXJpY19hbGxvY19ieV90eXBlLFxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYz01MzE9c3RhdGljIGNvbnN0IHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciBpbnRlbF84MzBtcF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jLTU0Ny1cXHQuaW5zZXJ0X21lbW9yeVxcdFxcdD0gYWdwX2dlbmVyaWNfaW5zZXJ0X21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jOjU0ODpcXHQucmVtb3ZlX21lbW9yeVxcdFxcdD0gYWdwX2dlbmVyaWNfcmVtb3ZlX21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jLTU0OS1cXHQuYWxsb2NfYnlfdHlwZVxcdFxcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmM9NTU4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgaW50ZWxfODQwX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNTc0LVxcdC5pbnNlcnRfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19pbnNlcnRfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmM6NTc1OlxcdC5yZW1vdmVfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19yZW1vdmVfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNTc2LVxcdC5hbGxvY19ieV90eXBlXFx0XFx0PSBhZ3BfZ2VuZXJpY19hbGxvY19ieV90eXBlLFxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYz01ODU9c3RhdGljIGNvbnN0IHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciBpbnRlbF84NDVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYy02MDEtXFx0Lmluc2VydF9tZW1vcnlcXHRcXHQ9IGFncF9nZW5lcmljX2luc2VydF9tZW1vcnksXFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYzo2MDI6XFx0LnJlbW92ZV9tZW1vcnlcXHRcXHQ9IGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnksXFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYy02MDMtXFx0LmFsbG9jX2J5X3R5cGVcXHRcXHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jPTYxMj1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIGludGVsXzg1MF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jLTYyOC1cXHQuaW5zZXJ0X21lbW9yeVxcdFxcdD0gYWdwX2dlbmVyaWNfaW5zZXJ0X21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jOjYyOTpcXHQucmVtb3ZlX21lbW9yeVxcdFxcdD0gYWdwX2dlbmVyaWNfcmVtb3ZlX21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jLTYzMC1cXHQuYWxsb2NfYnlfdHlwZVxcdFxcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmM9NjM5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgaW50ZWxfODYwX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNjU1LVxcdC5pbnNlcnRfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19pbnNlcnRfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmM6NjU2OlxcdC5yZW1vdmVfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19yZW1vdmVfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNjU3LVxcdC5hbGxvY19ieV90eXBlXFx0XFx0PSBhZ3BfZ2VuZXJpY19hbGxvY19ieV90eXBlLFxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYz02NjY9c3RhdGljIGNvbnN0IHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciBpbnRlbF83NTA1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNjgyLVxcdC5pbnNlcnRfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19pbnNlcnRfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmM6NjgzOlxcdC5yZW1vdmVfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19yZW1vdmVfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNjg0LVxcdC5hbGxvY19ieV90eXBlXFx0XFx0PSBhZ3BfZ2VuZXJpY19hbGxvY19ieV90eXBlLFxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1ndHQuYz0xMjA2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgaW50ZWxfZmFrZV9hZ3BfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1ndHQuYy0xMjE4LVxcdC5pbnNlcnRfbWVtb3J5XFx0XFx0PSBpbnRlbF9mYWtlX2FncF9pbnNlcnRfZW50cmllcyxcXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWd0dC5jOjEyMTk6XFx0LnJlbW92ZV9tZW1vcnlcXHRcXHQ9IGludGVsX2Zha2VfYWdwX3JlbW92ZV9lbnRyaWVzLFxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtZ3R0LmMtMTIyMC1cXHQuYWxsb2NfYnlfdHlwZVxcdFxcdD0gaW50ZWxfZmFrZV9hZ3BfYWxsb2NfYnlfdHlwZSxcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvbnZpZGlhLWFncC5jPTIwMj1zdGF0aWMgaW50IG52aWRpYV9pbnNlcnRfbWVtb3J5KHN0cnVjdCBhZ3BfbWVtb3J5ICptZW0sIG9mZl90IHBnX3N0YXJ0LCBpbnQgdHlwZSlcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvbnZpZGlhLWFncC5jLTI0MC1cXG5kcml2ZXJzL2NoYXIvYWdwL252aWRpYS1hZ3AuYzoyNDE6c3RhdGljIGludCBudmlkaWFfcmVtb3ZlX21lbW9yeShzdHJ1Y3QgYWdwX21lbW9yeSAqbWVtLCBvZmZfdCBwZ19zdGFydCwgaW50IHR5cGUpXFxuZHJpdmVycy9jaGFyL2FncC9udmlkaWEtYWdwLmMtMjQyLXtcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvbnZpZGlhLWFncC5jPTMxMT1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIG52aWRpYV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL252aWRpYS1hZ3AuYy0zMjctXFx0Lmluc2VydF9tZW1vcnlcXHRcXHQ9IG52aWRpYV9pbnNlcnRfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvbnZpZGlhLWFncC5jOjMyODpcXHQucmVtb3ZlX21lbW9yeVxcdFxcdD0gbnZpZGlhX3JlbW92ZV9tZW1vcnksXFxuZHJpdmVycy9jaGFyL2FncC9udmlkaWEtYWdwLmMtMzI5LVxcdC5hbGxvY19ieV90eXBlXFx0XFx0PSBhZ3BfZ2VuZXJpY19hbGxvY19ieV90eXBlLFxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9wYXJpc2MtYWdwLmM9MTczPXN0YXRpYyBpbnRcXG5kcml2ZXJzL2NoYXIvYWdwL3BhcmlzYy1hZ3AuYzoxNzQ6cGFyaXNjX2FncF9yZW1vdmVfbWVtb3J5KHN0cnVjdCBhZ3BfbWVtb3J5ICptZW0sIG9mZl90IHBnX3N0YXJ0LCBpbnQgdHlwZSlcXG5kcml2ZXJzL2NoYXIvYWdwL3BhcmlzYy1hZ3AuYy0xNzUte1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9wYXJpc2MtYWdwLmM9MjI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgcGFyaXNjX2FncF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL3BhcmlzYy1hZ3AuYy0yMzktXFx0Lmluc2VydF9tZW1vcnlcXHRcXHQ9IHBhcmlzY19hZ3BfaW5zZXJ0X21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL3BhcmlzYy1hZ3AuYzoyNDA6XFx0LnJlbW92ZV9tZW1vcnlcXHRcXHQ9IHBhcmlzY19hZ3BfcmVtb3ZlX21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL3BhcmlzYy1hZ3AuYy0yNDEtXFx0LmFsbG9jX2J5X3R5cGVcXHRcXHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL3Npcy1hZ3AuYz0xMjI9c3RhdGljIHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciBzaXNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9zaXMtYWdwLmMtMTM4LVxcdC5pbnNlcnRfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19pbnNlcnRfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3Avc2lzLWFncC5jOjEzOTpcXHQucmVtb3ZlX21lbW9yeVxcdFxcdD0gYWdwX2dlbmVyaWNfcmVtb3ZlX21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL3Npcy1hZ3AuYy0xNDAtXFx0LmFsbG9jX2J5X3R5cGVcXHRcXHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL3N3b3Jrcy1hZ3AuYz0zMTY9c3RhdGljIGludCBzZXJ2ZXJ3b3Jrc19pbnNlcnRfbWVtb3J5KHN0cnVjdCBhZ3BfbWVtb3J5ICptZW0sXFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL3N3b3Jrcy1hZ3AuYy0zNTYtXFxuZHJpdmVycy9jaGFyL2FncC9zd29ya3MtYWdwLmM6MzU3OnN0YXRpYyBpbnQgc2VydmVyd29ya3NfcmVtb3ZlX21lbW9yeShzdHJ1Y3QgYWdwX21lbW9yeSAqbWVtLCBvZmZfdCBwZ19zdGFydCxcXG5kcml2ZXJzL2NoYXIvYWdwL3N3b3Jrcy1hZ3AuYy0zNTgtXFx0XFx0XFx0ICAgICBpbnQgdHlwZSlcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3Avc3dvcmtzLWFncC5jPTQxOT1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIHN3b3Jrc19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL3N3b3Jrcy1hZ3AuYy00MzQtXFx0Lmluc2VydF9tZW1vcnlcXHRcXHQ9IHNlcnZlcndvcmtzX2luc2VydF9tZW1vcnksXFxuZHJpdmVycy9jaGFyL2FncC9zd29ya3MtYWdwLmM6NDM1OlxcdC5yZW1vdmVfbWVtb3J5XFx0XFx0PSBzZXJ2ZXJ3b3Jrc19yZW1vdmVfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3Avc3dvcmtzLWFncC5jLTQzNi1cXHQuYWxsb2NfYnlfdHlwZVxcdFxcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvdW5pbm9ydGgtYWdwLmM9MTUwPXN0YXRpYyBpbnQgdW5pbm9ydGhfaW5zZXJ0X21lbW9yeShzdHJ1Y3QgYWdwX21lbW9yeSAqbWVtLCBvZmZfdCBwZ19zdGFydCwgaW50IHR5cGUpXFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL3VuaW5vcnRoLWFncC5jLTE5OS1cXG5kcml2ZXJzL2NoYXIvYWdwL3VuaW5vcnRoLWFncC5jOjIwMDpzdGF0aWMgaW50IHVuaW5vcnRoX3JlbW92ZV9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKm1lbSwgb2ZmX3QgcGdfc3RhcnQsIGludCB0eXBlKVxcbmRyaXZlcnMvY2hhci9hZ3AvdW5pbm9ydGgtYWdwLmMtMjAxLXtcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvdW5pbm9ydGgtYWdwLmM9NTA5PWNvbnN0IHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciB1bmlub3J0aF9hZ3BfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC91bmlub3J0aC1hZ3AuYy01MjQtXFx0Lmluc2VydF9tZW1vcnlcXHRcXHQ9IHVuaW5vcnRoX2luc2VydF9tZW1vcnksXFxuZHJpdmVycy9jaGFyL2FncC91bmlub3J0aC1hZ3AuYzo1MjU6XFx0LnJlbW92ZV9tZW1vcnlcXHRcXHQ9IHVuaW5vcnRoX3JlbW92ZV9tZW1vcnksXFxuZHJpdmVycy9jaGFyL2FncC91bmlub3J0aC1hZ3AuYy01MjYtXFx0LmFsbG9jX2J5X3R5cGVcXHRcXHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL3VuaW5vcnRoLWFncC5jPTUzNz1jb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgdTNfYWdwX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvdW5pbm9ydGgtYWdwLmMtNTUyLVxcdC5pbnNlcnRfbWVtb3J5XFx0XFx0PSB1bmlub3J0aF9pbnNlcnRfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvdW5pbm9ydGgtYWdwLmM6NTUzOlxcdC5yZW1vdmVfbWVtb3J5XFx0XFx0PSB1bmlub3J0aF9yZW1vdmVfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvdW5pbm9ydGgtYWdwLmMtNTU0LVxcdC5hbGxvY19ieV90eXBlXFx0XFx0PSBhZ3BfZ2VuZXJpY19hbGxvY19ieV90eXBlLFxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC92aWEtYWdwLmM9MTcwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgdmlhX2FncDNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC92aWEtYWdwLmMtMTg2LVxcdC5pbnNlcnRfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19pbnNlcnRfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvdmlhLWFncC5jOjE4NzpcXHQucmVtb3ZlX21lbW9yeVxcdFxcdD0gYWdwX2dlbmVyaWNfcmVtb3ZlX21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL3ZpYS1hZ3AuYy0xODgtXFx0LmFsbG9jX2J5X3R5cGVcXHRcXHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL3ZpYS1hZ3AuYz0xOTc9c3RhdGljIGNvbnN0IHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciB2aWFfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC92aWEtYWdwLmMtMjEzLVxcdC5pbnNlcnRfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19pbnNlcnRfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvdmlhLWFncC5jOjIxNDpcXHQucmVtb3ZlX21lbW9yeVxcdFxcdD0gYWdwX2dlbmVyaWNfcmVtb3ZlX21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL3ZpYS1hZ3AuYy0yMTUtXFx0LmFsbG9jX2J5X3R5cGVcXHRcXHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXFxuLS1cXG5kcml2ZXJzL2RheC9rbWVtLmM9MjA5PXN0YXRpYyB2b2lkIGRldl9kYXhfa21lbV9yZW1vdmUoc3RydWN0IGRldl9kYXggKmRldl9kYXgpXFxuLS1cXG5kcml2ZXJzL2RheC9rbWVtLmMtMjE3LVxcdCAqIFdlIGhhdmUgb25lIHNob3QgZm9yIHJlbW92aW5nIG1lbW9yeSwgaWYgc29tZSBtZW1vcnkgYmxvY2tzIHdlcmUgbm90XFxuZHJpdmVycy9kYXgva21lbS5jOjIxODpcXHQgKiBvZmZsaW5lIHByaW9yIHRvIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiByZW1vdmVfbWVtb3J5KCkgd2lsbCBmYWlsLCBhbmRcXG5kcml2ZXJzL2RheC9rbWVtLmMtMjE5LVxcdCAqIHRoZXJlIGlzIG5vIHdheSB0byBob3RyZW1vdmUgdGhpcyBtZW1vcnkgdW50aWwgcmVib290IGJlY2F1c2UgZGV2aWNlXFxuLS1cXG5kcml2ZXJzL2RheC9rbWVtLmMtMjM1LVxcbmRyaXZlcnMvZGF4L2ttZW0uYzoyMzY6XFx0XFx0cmMgPSByZW1vdmVfbWVtb3J5KHJhbmdlLnN0YXJ0LCByYW5nZV9sZW4oXFx1MDAyNnJhbmdlKSk7XFxuZHJpdmVycy9kYXgva21lbS5jLTIzNy1cXHRcXHRpZiAocmMgPT0gMCkge1xcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9lZmkvbGlic3R1Yi9lZmlzdHViLmg9NDA1PXVuaW9uIGVmaV9keGVfc2VydmljZXNfdGFibGUge1xcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9lZmkvbGlic3R1Yi9lZmlzdHViLmgtNDEwLVxcdFxcdHZvaWQgKmZyZWVfbWVtb3J5X3NwYWNlO1xcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIvZWZpc3R1Yi5oOjQxMTpcXHRcXHR2b2lkICpyZW1vdmVfbWVtb3J5X3NwYWNlO1xcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIvZWZpc3R1Yi5oLTQxMi1cXHRcXHRlZmlfc3RhdHVzX3QgKF9fZWZpYXBpICpnZXRfbWVtb3J5X3NwYWNlX2Rlc2NyaXB0b3IpKGVmaV9waHlzaWNhbF9hZGRyX3QsXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9saWJzdHViL2VmaXN0dWIuaC00MzMtXFx0XFx0dTMyIGZyZWVfbWVtb3J5X3NwYWNlO1xcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIvZWZpc3R1Yi5oOjQzNDpcXHRcXHR1MzIgcmVtb3ZlX21lbW9yeV9zcGFjZTtcXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9saWJzdHViL2VmaXN0dWIuaC00MzUtXFx0XFx0dTMyIGdldF9tZW1vcnlfc3BhY2VfZGVzY3JpcHRvcjtcXG4tLVxcbmRyaXZlcnMvczM5MC9jaGFyL3NjbHBfbWVtLmM9MTg5PXN0YXRpYyBzc2l6ZV90IHNjbHBfY29uZmlnX21lbV9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NoYXIvc2NscF9tZW0uYy0yNDctXFx0XFx0c2NscF9tZW1fY2hhbmdlX3N0YXRlKGFkZHIsIGJsb2NrX3NpemUsIDApO1xcbmRyaXZlcnMvczM5MC9jaGFyL3NjbHBfbWVtLmM6MjQ4OlxcdFxcdF9fcmVtb3ZlX21lbW9yeShhZGRyLCBibG9ja19zaXplKTtcXG5kcml2ZXJzL3MzOTAvY2hhci9zY2xwX21lbS5jLTI0OS0jaWZkZWYgQ09ORklHX0tBU0FOXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9NjgzPXN0YXRpYyBpbnQgdmlydGlvX21lbV9iYm1fYWRkX2JiKHN0cnVjdCB2aXJ0aW9fbWVtICp2bSwgdW5zaWduZWQgbG9uZyBiYl9pZClcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy02OTktICovXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjcwMDpzdGF0aWMgaW50IHZpcnRpb19tZW1fcmVtb3ZlX21lbW9yeShzdHJ1Y3QgdmlydGlvX21lbSAqdm0sIHVpbnQ2NF90IGFkZHIsXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTcwMS1cXHRcXHRcXHRcXHQgICAgdWludDY0X3Qgc2l6ZSlcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03MDYtXFx0XFx0YWRkciArIHNpemUgLSAxKTtcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6NzA3OlxcdHJjID0gcmVtb3ZlX21lbW9yeShhZGRyLCBzaXplKTtcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzA4LVxcdGlmICghcmMpIHtcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03MjEtLypcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6NzIyOiAqIFNlZSB2aXJ0aW9fbWVtX3JlbW92ZV9tZW1vcnkoKTogVHJ5IHJlbW92aW5nIGEgc2luZ2xlIExpbnV4IG1lbW9yeSBibG9jay5cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzIzLSAqL1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz03MjQ9c3RhdGljIGludCB2aXJ0aW9fbWVtX3NibV9yZW1vdmVfbWIoc3RydWN0IHZpcnRpb19tZW0gKnZtLCB1bnNpZ25lZCBsb25nIG1iX2lkKVxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTcyOC1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6NzI5OlxcdHJldHVybiB2aXJ0aW9fbWVtX3JlbW92ZV9tZW1vcnkodm0sIGFkZHIsIHNpemUpO1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03MzAtfVxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTczOS0gKi9cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6NzQwOnN0YXRpYyBpbnQgdmlydGlvX21lbV9vZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KHN0cnVjdCB2aXJ0aW9fbWVtICp2bSxcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzQxLVxcdFxcdFxcdFxcdFxcdFxcdHVpbnQ2NF90IGFkZHIsXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzQ5LVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo3NTA6XFx0cmMgPSBvZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KGFkZHIsIHNpemUpO1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03NTEtXFx0aWYgKCFyYykge1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTc2OS0vKlxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo3NzA6ICogU2VlIHZpcnRpb19tZW1fb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSgpOiBUcnkgb2ZmbGluaW5nIGFuZCByZW1vdmluZ1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03NzEtICogYSBzaW5nbGUgTGludXggbWVtb3J5IGJsb2NrLlxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jPTc3Mz1zdGF0aWMgaW50IHZpcnRpb19tZW1fc2JtX29mZmxpbmVfYW5kX3JlbW92ZV9tYihzdHJ1Y3QgdmlydGlvX21lbSAqdm0sXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzc4LVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo3Nzk6XFx0cmV0dXJuIHZpcnRpb19tZW1fb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSh2bSwgYWRkciwgc2l6ZSk7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTc4MC19XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9Nzg4PXN0YXRpYyBpbnQgdmlydGlvX21lbV9zYm1fdHJ5X3JlbW92ZV91bnBsdWdnZWRfbWIoc3RydWN0IHZpcnRpb19tZW0gKnZtLFxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTc5OS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6ODAwOlxcdC8qIG9mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkoKSB3b3JrcyBmb3Igb25saW5lIGFuZCBvZmZsaW5lIG1lbW9yeS4gKi9cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtODAxLVxcdG11dGV4X3VubG9jayhcXHUwMDI2dm0tXFx1MDAzZWhvdHBsdWdfbXV0ZXgpO1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTgxMC0vKlxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo4MTE6ICogU2VlIHZpcnRpb19tZW1fb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSgpOiBUcnkgdG8gb2ZmbGluZSBhbmQgcmVtb3ZlIGFcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtODEyLSAqIGFsbCBMaW51eCBtZW1vcnkgYmxvY2tzIGNvdmVyZWQgYnkgdGhlIGJpZyBibG9jay5cXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz04MTQ9c3RhdGljIGludCB2aXJ0aW9fbWVtX2JibV9vZmZsaW5lX2FuZF9yZW1vdmVfYmIoc3RydWN0IHZpcnRpb19tZW0gKnZtLFxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTgxOS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6ODIwOlxcdHJldHVybiB2aXJ0aW9fbWVtX29mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkodm0sIGFkZHIsIHNpemUpO1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy04MjEtfVxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1vcnkuaD0xNTU9aW50IGNyZWF0ZV9tZW1vcnlfYmxvY2tfZGV2aWNlcyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIHNpemUsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oLTE1Ny1cXHRcXHRcXHRcXHRzdHJ1Y3QgbWVtb3J5X2dyb3VwICpncm91cCk7XFxuaW5jbHVkZS9saW51eC9tZW1vcnkuaDoxNTg6dm9pZCByZW1vdmVfbWVtb3J5X2Jsb2NrX2RldmljZXModW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBzaXplKTtcXG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oLTE1OS1leHRlcm4gdm9pZCBtZW1vcnlfZGV2X2luaXQodm9pZCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9MTMzPXN0YXRpYyBpbmxpbmUgYm9vbCBtb3ZhYmxlX25vZGVfaXNfZW5hYmxlZCh2b2lkKVxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTEzNy1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MTM4OmV4dGVybiB2b2lkIGFyY2hfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMTM5LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZGV2X3BhZ2VtYXAgKnBnbWFwKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaD0yNjU9ZXh0ZXJuIGludCBvZmZsaW5lX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLFxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yNjYtXFx0XFx0XFx0IHN0cnVjdCB6b25lICp6b25lLCBzdHJ1Y3QgbWVtb3J5X2dyb3VwICpncm91cCk7XFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjI2NzpleHRlcm4gaW50IHJlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSk7XFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjI2ODpleHRlcm4gdm9pZCBfX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSk7XFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjI2OTpleHRlcm4gaW50IG9mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSk7XFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI3MC1cXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaD0yNzQ9c3RhdGljIGlubGluZSBpbnQgb2ZmbGluZV9wYWdlcyh1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcyxcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yNzktXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjI4MDpzdGF0aWMgaW5saW5lIGludCByZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI4MS17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjg0LVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDoyODU6c3RhdGljIGlubGluZSB2b2lkIF9fcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKSB7fVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yODYtI2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUkVNT1ZFICovXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTE0MDY9c3RhdGljIHZvaWQgYWx0bWFwX2ZyZWUoc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXApXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE0MTEtXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNDEyOnN0YXRpYyB2b2lkIHJlbW92ZV9tZW1vcnlfYmxvY2tzX2FuZF9hbHRtYXBzKHU2NCBzdGFydCwgdTY0IHNpemUpXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNDEzLXtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTQzMy1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE0MzQ6XFx0XFx0cmVtb3ZlX21lbW9yeV9ibG9ja19kZXZpY2VzKGN1cl9zdGFydCwgbWVtYmxvY2tfc2l6ZSk7XFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNDM1OlxcdFxcdGFyY2hfcmVtb3ZlX21lbW9yeShjdXJfc3RhcnQsIG1lbWJsb2NrX3NpemUsIGFsdG1hcCwgTlVMTCk7XFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNDM2LVxcdFxcdGFsdG1hcF9mcmVlKGFsdG1hcCk7XFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTE0NDA9c3RhdGljIGludCBjcmVhdGVfYWx0bWFwc19hbmRfbWVtb3J5X2Jsb2NrcyhpbnQgbmlkLCBzdHJ1Y3QgbWVtb3J5X2dyb3VwICpncm91cCxcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTQ3NC1cXHRcXHRpZiAocmV0KSB7XFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNDc1OlxcdFxcdFxcdGFyY2hfcmVtb3ZlX21lbW9yeShjdXJfc3RhcnQsIG1lbWJsb2NrX3NpemUsIHBhcmFtcy5hbHRtYXAsIE5VTEwpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTQ3Ni1cXHRcXHRcXHRhbHRtYXBfZnJlZShwYXJhbXMuYWx0bWFwKTtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTQ4My1cXHRpZiAocmV0IFxcdTAwMjZcXHUwMDI2IGN1cl9zdGFydCAhPSBzdGFydClcXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE0ODQ6XFx0XFx0cmVtb3ZlX21lbW9yeV9ibG9ja3NfYW5kX2FsdG1hcHMoc3RhcnQsIGN1cl9zdGFydCAtIHN0YXJ0KTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE0ODUtXFx0cmV0dXJuIHJldDtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM9MTQ5ND1pbnQgYWRkX21lbW9yeV9yZXNvdXJjZShpbnQgbmlkLCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcywgbWhwX3QgbWhwX2ZsYWdzKVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNTYwLVxcdFxcdGlmIChyZXQpIHtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE1NjE6XFx0XFx0XFx0YXJjaF9yZW1vdmVfbWVtb3J5KHN0YXJ0LCBzaXplLCBwYXJhbXMuYWx0bWFwLCBOVUxMKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE1NjItXFx0XFx0XFx0Z290byBlcnJvcjtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM9MjIyMT1zdGF0aWMgaW50IG1lbW9yeV9ibG9ja3NfaGF2ZV9hbHRtYXBzKHU2NCBzdGFydCwgdTY0IHNpemUpXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyNDAtXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMjQxOnN0YXRpYyBpbnQgdHJ5X3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSlcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyNDIte1xcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMjc0LVxcdFxcdCAqL1xcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjI3NTpcXHRcXHRyZW1vdmVfbWVtb3J5X2Jsb2NrX2RldmljZXMoc3RhcnQsIHNpemUpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjI3NjpcXHRcXHRhcmNoX3JlbW92ZV9tZW1vcnkoc3RhcnQsIHNpemUsIE5VTEwsIE5VTEwpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjI3Ny1cXHR9IGVsc2Uge1xcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjI3OC1cXHRcXHQvKiBhbGwgbWVtYmxvY2tzIGluIHRoZSByYW5nZSBoYXZlIGFsdG1hcHMgKi9cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIyNzk6XFx0XFx0cmVtb3ZlX21lbW9yeV9ibG9ja3NfYW5kX2FsdG1hcHMoc3RhcnQsIHNpemUpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjI4MC1cXHR9XFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyOTQtLyoqXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMjk1OiAqIF9fcmVtb3ZlX21lbW9yeSAtIFJlbW92ZSBtZW1vcnkgaWYgZXZlcnkgbWVtb3J5IGJsb2NrIGlzIG9mZmxpbmVcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyOTYtICogQHN0YXJ0OiBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSByZWdpb24gdG8gcmVtb3ZlXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIzMDItICovXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMzAzOnZvaWQgX19yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzA0LXtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMwOS1cXHQgKi9cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIzMTA6XFx0aWYgKHRyeV9yZW1vdmVfbWVtb3J5KHN0YXJ0LCBzaXplKSlcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIzMTEtXFx0XFx0QlVHKCk7XFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIzMTctICovXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMzE4OmludCByZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzE5LXtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMyMi1cXHRsb2NrX2RldmljZV9ob3RwbHVnKCk7XFxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMzIzOlxcdHJjID0gdHJ5X3JlbW92ZV9tZW1vcnkoc3RhcnQsIHNpemUpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMyNC1cXHR1bmxvY2tfZGV2aWNlX2hvdHBsdWcoKTtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMyNy19XFxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMzI4OkVYUE9SVF9TWU1CT0xfR1BMKHJlbW92ZV9tZW1vcnkpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMyOS1cXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM9MjM1OT1zdGF0aWMgaW50IHRyeV9yZW9ubGluZV9tZW1vcnlfYmxvY2soc3RydWN0IG1lbW9yeV9ibG9jayAqbWVtLCB2b2lkICphcmcpXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIzODItICovXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMzgzOmludCBvZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzg0LXtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjQxOC1cXHRpZiAoIXJjKSB7XFxubW0vbWVtb3J5X2hvdHBsdWcuYzoyNDE5OlxcdFxcdHJjID0gdHJ5X3JlbW92ZV9tZW1vcnkoc3RhcnQsIHNpemUpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjQyMC1cXHRcXHRpZiAocmMpXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTI0MzctfVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzo1MjoyOS41NjY2MDY3OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTUzODYzNzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBNZW1vcnkgSG90cGx1ZyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgSSBzZWUgYHJlbW92ZV9tZW1vcnlgIGFuZCBgb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeWAgYXJlIGV4cG9ydGVkLiBJJ20gYWxzbyBzZWVpbmcgYHRyeV9vZmZsaW5lX25vZGVgIGdldCBjYWxsZWQgZnJvbSBgYWNwaV9wcm9jZXNzb3JfcG9zdF9lamVjdGAg4oCTIGludGVyZXN0aW5nLiBXYWl0LCBgdHJ5X29mZmxpbmVfbm9kZWAgZ2V0cyBjYWxsZWQgd2hlbiBhIG5vZGUgaGFzICpubyogbWVtb3J5IG9yIENQVXMgbGVmdCwgcmlnaHQ/IFNvIHRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzLCBpcyBgdHJ5X29mZmxpbmVfbm9kZWAgYWN0dWFsbHkgKnJlYWNoYWJsZSogaW4gdGhpcyBjb250ZXh0PyBBaCwgeWVzLCBtZW1vcnkgaG90cGx1ZyBtYWtlcyBpdCByZWFjaGFibGUuXG5cbkJ1dCwgYW5kIHRoaXMgaXMgaW1wb3J0YW50LCB0aGlzIHBhdGNoIHNwZWNpZmljYWxseSBpbnRyb2R1Y2VzIGBzeW5jX3ZtX3N0YXRzKClgIGJlZm9yZSBgbm9kZV9zZXRfb2ZmbGluZShuaWQpYC4gVGhlIGNvbW1pdCBtZXNzYWdlIGlzIHZlcnkgY2xlYXI6IFwiRm9sZCBhbnkgcGVuZGluZyBwZXItY3B1IHZtc3RhdCBkaWZmcyBpbnRvIHRoZSBnbG9iYWwgY291bnRlcnMgZmlyc3Q6IG9uY2UgdGhlIG5vZGUgbGVhdmVzIHRoZSBvbmxpbmUgc2V0IHRoZSBwZXJpb2RpYyBmb2xkIHNraXBzIGl0LCBvcnBoYW5pbmcgdGhlIHJlc2lkdWFsIG9uIGEgbGF0ZXIgb25saW5lLlwiIFRoYXQgbWFrZXMgc2Vuc2UsIHRoZXkncmUgcHJldmVudGluZyBvcnBoYW5lZCB2bXN0YXQgZGlmZnMuIFRoaXMgaXMgZGVmaW5pdGVseSBhICpmdW5jdGlvbmFsKiBjaGFuZ2U7IHdlJ3JlIGZpeGluZyBhIHBvdGVudGlhbCBidWcgd2hlcmUgdGhlc2UgZGlmZnMgY291bGQgYmUgbG9zdC5cblxuU28sIGlzIGl0IHdvcnRoIGZ1enppbmc/IEFic29sdXRlbHksIHRoaXMgaXMgY29yZSBrZXJuZWwgbG9naWMuIEdpdmVuIHRoaXMsIEkgbmVlZCB0byBmb2N1cyBvbiBhIGZldyBrZXkgZnVuY3Rpb25zOiBgdHJ5X29mZmxpbmVfbm9kZWAsIGBzeW5jX3ZtX3N0YXRzYCwgYW5kIGB2bXN0YXRfZm9sZF93b3JrYC5cblxuQW5kIG9mIGNvdXJzZSwgd2hhdCBjb25maWdzIGFyZSBuZWVkZWQgdG8gbWFrZSB0aGlzIGNvZGUgYWN0aXZlPyBJIG5lZWQgYENPTkZJR19NRU1PUllfSE9UUExVR2AgYW5kIGBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRWAuIEknbGwgZG91YmxlLWNoZWNrIGBtbS9tZW1vcnlfaG90cGx1Zy5jYCBhbmQgYG1tL3Ztc3RhdC5jYCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzQxOSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzo1MjozNS4xMjA0NzM4MTdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDAyOTQ1OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX01FTU9SWV9IT1RQTFVHXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNzQ1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL21lbW9yeS1ob3RwbHVnLnJzdD0yNzY9VGhlIGZvbGxvd2luZyBmaWxlcyBhcmUgY3VycmVudGx5IGRlZmluZWQ6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL21lbW9yeS1ob3RwbHVnLnJzdC0zMDAtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3Q6MzAxOlxcdFxcdCAgICAgICBBdmFpbGFiaWxpdHkgZGVwZW5kcyBvbiB0aGUgQ09ORklHX01FTU9SWV9IT1RQTFVHIGtlcm5lbFxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vbWVtb3J5LWhvdHBsdWcucnN0LTMwMi1cXHRcXHQgICAgICAgY29uZmlndXJhdGlvbiBvcHRpb24uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q9MjEwPUdlbmVyYWxcXG4tLVxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yNDYtICBBIGxvY2sgdGhhdCBwcm90ZWN0cyB0aGUgZmllbGRzIGRlZmluaW5nIHRoZSBub2RlIGV4dGVudHMuIE9ubHkgZGVmaW5lZCB3aGVuXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjI0NzogIGF0IGxlYXN0IG9uZSBvZiBgYENPTkZJR19NRU1PUllfSE9UUExVR2BgIG9yXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTI0OC0gIGBgQ09ORklHX0RFRkVSUkVEX1NUUlVDVF9QQUdFX0lOSVRgYCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGVuYWJsZWQuXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTI0OS0gIGBgcGdkYXRfcmVzaXplX2xvY2soKWBgIGFuZCBgYHBnZGF0X3Jlc2l6ZV91bmxvY2soKWBgIGFyZSBwcm92aWRlZCB0b1xcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdDoyNTA6ICBtYW5pcHVsYXRlIGBgbm9kZV9zaXplX2xvY2tgYCB3aXRob3V0IGNoZWNraW5nIGZvciBgYENPTkZJR19NRU1PUllfSE9UUExVR2BgXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTI1MS0gIG9yIGBgQ09ORklHX0RFRkVSUkVEX1NUUlVDVF9QQUdFX0lOSVRgYC5cXG4tLVxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdD0zNzc9R2VuZXJhbFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTQ4OC0gIGVhcmx5IGJvb3QsIGV4Y2x1ZGluZyBob3RwbHVnZ2VkIG1lbW9yeS4gRGVmaW5lZCBvbmx5IHdoZW5cXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q6NDg5OiAgYGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgYCBpcyBlbmFibGVkIGFuZCBpbml0aWFsaXplZCBieVxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC00OTAtICBgYGNhbGN1bGF0ZV9ub2RlX3RvdGFscGFnZXMoKWBgLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTUwOC0gIHRoZSBtYWluIGFsbG9jYXRvciBwYXRoLiBIb3dldmVyLCB0aGUgc2VxbG9jayBpcyB3cml0dGVuIHF1aXRlIGluZnJlcXVlbnRseS5cXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q6NTA5OiAgRGVmaW5lZCBvbmx5IHdoZW4gYGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgYCBpcyBlbmFibGVkLlxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC01MTAtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9waHlzaWNhbF9tZW1vcnkucnN0PTIwNT1ub2RlX3pvbmVsaXN0c+W8leeUqOOAglxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yMzQtYGBub2RlX3NpemVfbG9ja2BgXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdDoyMzU65LiA5Liq5L+d5oqk5a6a5LmJ6IqC54K56IyD5Zu05a2X5q6155qE6ZSB44CC5LuF5Zyo5byA5ZCv5LqGIGBgQ09ORklHX01FTU9SWV9IT1RQTFVHYGAg5oiWXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yMzYtYGBDT05GSUdfREVGRVJSRURfU1RSVUNUX1BBR0VfSU5JVGBgIOmFjee9rumAiemhueS4reeahOafkOS4gOS4quaXtuaJjeWumuS5ieOAguaPkFxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtMjM3LeS+m+S6hiBgYHBnZGF0X3Jlc2l6ZV9sb2NrKClgYCDlkowgYGBwZ2RhdF9yZXNpemVfdW5sb2NrKClgYCDnlKjmnaXmk43kvZxcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjIzODpgYG5vZGVfc2l6ZV9sb2NrYGDvvIzogIzml6DpnIDmo4Dmn6UgYGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgYCDmiJZcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTIzOS1gYENPTkZJR19ERUZFUlJFRF9TVFJVQ1RfUEFHRV9JTklUYGAg6YCJ6aG544CCXFxuLS1cXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnPTEzMD1DT05GSUdfQkxLX0lOTElORV9FTkNSWVBUSU9OPXlcXG4tLVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWctMTMyLSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc6MTMzOkNPTkZJR19NRU1PUllfSE9UUExVRz15XFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy0xMzQtQ09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxcbi0tXFxuYXJjaC9hcm02NC9tbS9tbXUuYz0xNDI1PXZvaWQgX19pbml0IHBhZ2luZ19pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FybTY0L21tL21tdS5jLTE0MzQtXFxuYXJjaC9hcm02NC9tbS9tbXUuYzoxNDM1OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL2FybTY0L21tL21tdS5jLTE0MzYtc3RhdGljIHZvaWQgZnJlZV9ob3RwbHVnX3BhZ2VfcmFuZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIHNpemVfdCBzaXplLFxcbi0tXFxuYXJjaC9hcm02NC9tbS9tbXUuYz0xNzg0PWludCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgaW50IG5vZGUsXFxuLS1cXG5hcmNoL2FybTY0L21tL21tdS5jLTE3OTctXFxuYXJjaC9hcm02NC9tbS9tbXUuYzoxNzk4OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL2FybTY0L21tL21tdS5jLTE3OTktdm9pZCB2bWVtbWFwX2ZyZWUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXFxuLS1cXG5hcmNoL2FybTY0L21tL21tdS5jLTE4MDYtfVxcbmFyY2gvYXJtNjQvbW0vbW11LmM6MTgwNzojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXFxuYXJjaC9hcm02NC9tbS9tbXUuYy0xODA4LVxcbi0tXFxuYXJjaC9hcm02NC9tbS9tbXUuYz0xODkxPWludCBwdWRfZnJlZV9wbWRfcGFnZShwdWRfdCAqcHVkcCwgdW5zaWduZWQgbG9uZyBhZGRyKVxcbi0tXFxuYXJjaC9hcm02NC9tbS9tbXUuYy0xOTM5LVxcbmFyY2gvYXJtNjQvbW0vbW11LmM6MTk0MDojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9hcm02NC9tbS9tbXUuYy0xOTQxLXN0YXRpYyB2b2lkIF9fcmVtb3ZlX3BnZF9tYXBwaW5nKHBnZF90ICpwZ2RpciwgdW5zaWduZWQgbG9uZyBzdGFydCwgdTY0IHNpemUpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnPTk3PUNPTkZJR19aU01BTExPQz15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZy05OC0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnOjk5OkNPTkZJR19NRU1PUllfSE9UUExVRz15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZy0xMDAtIyBDT05GSUdfTUhQX0RFRkFVTFRfT05MSU5FX1RZUEVfT0ZGTElORSBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTExMj1DT05GSUdfWlNNQUxMT0M9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTEzLSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6MTE0OkNPTkZJR19NRU1PUllfSE9UUExVRz15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy0xMTUtIyBDT05GSUdfTUhQX0RFRkFVTFRfT05MSU5FX1RZUEVfT0ZGTElORSBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmM9NjQ9dm9pZCBfX2luaXQgZml4cmFuZ2VfaW5pdCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgcGdkX3QgKnBnZF9iYXNlKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTEwNS1cXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmM6MTA2OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmMtMTA3LWludCBhcmNoX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSwgc3RydWN0IG1ocF9wYXJhbXMgKnBhcmFtcylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL21tL2luaXQuYz0xNDM9aW50IF9fbWVtaW5pdCB2bWVtbWFwX3BvcHVsYXRlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTE1Mi1cXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmM6MTUzOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmMtMTU0LXZvaWQgdm1lbW1hcF9mcmVlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcClcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnPTU3PUNPTkZJR19OVU1BPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZzo1ODpDT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnLTU5LUNPTkZJR19NRU1PUllfSE9UUkVNT1ZFPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZz04Nj1DT05GSUdfU0hVRkZMRV9QQUdFX0FMTE9DQVRPUj15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnLTg3LSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZzo4ODpDT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZy04OS1DT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUuaD0xMDE1PXN0YXRpYyBpbmxpbmUgaW50IF9fbWVtaW5pdCB2bWVtbWFwX2NyZWF0ZV9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUuaC0xMDIzLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGd0YWJsZS5oOjEwMjQ6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGd0YWJsZS5oLTEwMjUtc3RhdGljIGlubGluZSB2b2lkIHZtZW1tYXBfcmVtb3ZlX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaD0zMzM9c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHJhZGl4X19nZXRfdHJlZV9zaXplKHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4LmgtMzQ4LVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaDozNDk6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaC0zNTAtaW50IHJhZGl4X19jcmVhdGVfc2VjdGlvbl9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9yYWRpeC5oPTM1Mj1pbnQgcmFkaXhfX3JlbW92ZV9zZWN0aW9uX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpO1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaDozNTM6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaC0zNTQtXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbWFjaGRlcC5oPTI2PXN0cnVjdCBtYWNoZGVwX2NhbGxzIHtcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9tYWNoZGVwLmgtMzMtI2VuZGlmXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21hY2hkZXAuaDozNDojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21hY2hkZXAuaC0zNS1cXHR1bnNpZ25lZCBsb25nXFx0KCptZW1vcnlfYmxvY2tfc2l6ZSkodm9pZCk7XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbW16b25lLmg9Mjg9ZXh0ZXJuIGNwdW1hc2tfdmFyX3Qgbm9kZV90b19jcHVtYXNrX21hcFtdO1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9tbXpvbmUuaDoyOTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21tem9uZS5oLTMwLWV4dGVybiB1bnNpZ25lZCBsb25nIG1heF9wZm47XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc3BhcnNlbWVtLmgtMTQtXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NwYXJzZW1lbS5oOjE1OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc3BhcnNlbWVtLmgtMTYtZXh0ZXJuIGludCByZW1vdmVfc2VjdGlvbl9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9zcGFyc2VtZW0uaD0yMz1zdGF0aWMgaW5saW5lIGludCBob3RfYWRkX3Njbl90b19uaWQodW5zaWduZWQgbG9uZyBzY25fYWRkcilcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9zcGFyc2VtZW0uaC0yNy0jZW5kaWYgLyogQ09ORklHX05VTUEgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc3BhcnNlbWVtLmg6Mjg6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9zcGFyc2VtZW0uaC0yOS0jZW5kaWYgLyogX19LRVJORUxfXyAqL1xcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zZXR1cF82NC5jPTgzMj12b2lkIF9faW5pdCBzZXR1cF9wZXJfY3B1X2FyZWFzKHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3NldHVwXzY0LmMtODgxLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvc2V0dXBfNjQuYzo4ODI6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9rZXJuZWwvc2V0dXBfNjQuYy04ODMtdW5zaWduZWQgbG9uZyBtZW1vcnlfYmxvY2tfc2l6ZV9ieXRlcyh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2tleGVjL2NyYXNoLmM9NDcyPXVuc2lnbmVkIGludCBhcmNoX2NyYXNoX2dldF9lbGZjb3JlaGRyX3NpemUodm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXhlYy9jcmFzaC5jLTQ3Ny1cXHRwaGRyX2NudCA9IG51bV9wb3NzaWJsZV9jcHVzKCkgKyAxO1xcbmFyY2gvcG93ZXJwYy9rZXhlYy9jcmFzaC5jOjQ3ODpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfTUVNT1JZX0hPVFBMVUcpKVxcbmFyY2gvcG93ZXJwYy9rZXhlYy9jcmFzaC5jLTQ3OS1cXHRcXHRwaGRyX2NudCArPSBDT05GSUdfQ1JBU0hfTUFYX01FTU9SWV9SQU5HRVM7XFxuLS1cXG5hcmNoL3Bvd2VycGMva2V4ZWMvZmlsZV9sb2FkXzY0LmM9Mzc3PXN0YXRpYyB1bnNpZ25lZCBpbnQga2R1bXBfZXh0cmFfZWxmY29yZWhkcl9zaXplKHN0cnVjdCBjcmFzaF9tZW0gKmNtZW0pXFxuYXJjaC9wb3dlcnBjL2tleGVjL2ZpbGVfbG9hZF82NC5jLTM3OC17XFxuYXJjaC9wb3dlcnBjL2tleGVjL2ZpbGVfbG9hZF82NC5jOjM3OTojaWYgZGVmaW5lZChDT05GSUdfQ1JBU0hfSE9UUExVRykgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfTUVNT1JZX0hPVFBMVUcpXFxuYXJjaC9wb3dlcnBjL2tleGVjL2ZpbGVfbG9hZF82NC5jLTM4MC1cXHR1bnNpZ25lZCBpbnQgZXh0cmFfc3ogPSAwO1xcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfcGd0YWJsZS5jPTEwNz1pbnQgX19tZW1pbml0IGhhc2hfX3ZtZW1tYXBfY3JlYXRlX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYy0xMjktXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfcGd0YWJsZS5jOjEzMDojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfcGd0YWJsZS5jLTEzMS12b2lkIGhhc2hfX3ZtZW1tYXBfcmVtb3ZlX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM9MTE5Nj1zdGF0aWMgdW5zaWduZWQgbG9uZyBfX2luaXQgaHRhYl9nZXRfdGFibGVfc2l6ZSh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0xMjEwLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM6MTIxMTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0xMjEyLXN0YXRpYyBpbnQgcmVzaXplX2hwdF9mb3JfaG90cGx1Zyh1bnNpZ25lZCBsb25nIG5ld19tZW1fc2l6ZSlcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM9MTI2Mj1pbnQgaGFzaF9fcmVtb3ZlX3NlY3Rpb25fbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTI3NS19XFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYzoxMjc2OiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTEyNzctXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jPTI3NT1ub3RyYWNlIHZvaWQgbW11X2NsZWFudXBfYWxsKHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jLTI4NC1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jOjI4NTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYy0yODYtaW50IF9fbWVtaW5pdCBjcmVhdGVfc2VjdGlvbl9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYz0yOTU9aW50IF9fbWVtaW5pdCByZW1vdmVfc2VjdGlvbl9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYy0zMDEtfVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM6MzAyOiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jLTMwMy1cXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM9Njc5PW5vdHJhY2Ugdm9pZCByYWRpeF9fbW11X2NsZWFudXBfYWxsKHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTY5MS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jOjY5MjojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYy02OTMtc3RhdGljIHZvaWQgZnJlZV9wdGVfdGFibGUocHRlX3QgKnB0ZV9zdGFydCwgcG1kX3QgKnBtZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM9OTQ2PWludCBfX21lbWluaXQgcmFkaXhfX3JlbW92ZV9zZWN0aW9uX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTk1MC19XFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYzo5NTE6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtOTUyLVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYz0xMzA2PWludCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZV9jb21wb3VuZF9wYWdlcyh1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbixcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtMTQxMy1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jOjE0MTQ6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtMTQxNS12b2lkIF9fbWVtaW5pdCByYWRpeF9fdm1lbW1hcF9yZW1vdmVfbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIHBhZ2Vfc2l6ZSlcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmM9Mjc2PWludCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgaW50IG5vZGUsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jLTI4Ny1cXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jOjI4ODojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYy0yODktc3RhdGljIHVuc2lnbmVkIGxvbmcgdm1lbW1hcF9saXN0X2ZyZWUodW5zaWduZWQgbG9uZyBzdGFydClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmM9NDY2PXN0YXRpYyBpbnQgX19pbml0IGR0X3NjYW5fbW11X3BpZF93aWR0aCh1bnNpZ25lZCBsb25nIG5vZGUsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jLTQ5OC0gKi9cXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jOjQ5OTojaWZuZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmMtNTAwLSNkZWZpbmUgREVGQVVMVF9NRU1PUllfQkxPQ0tfU0laRVxcdFNaXzE2TVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL21lbS5jPTUyPUVYUE9SVF9TWU1CT0woX19waHlzX21lbV9hY2Nlc3NfcHJvdCk7XFxuYXJjaC9wb3dlcnBjL21tL21lbS5jLTUzLVxcbmFyY2gvcG93ZXJwYy9tbS9tZW0uYzo1NDojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9wb3dlcnBjL21tL21lbS5jLTU1LXN0YXRpYyBERUZJTkVfTVVURVgobGluZWFyX21hcHBpbmdfbXV0ZXgpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL21tL21tdV9kZWNsLmg9MTc0PXN0YXRpYyBpbmxpbmUgYm9vbCBkZWJ1Z19wYWdlYWxsb2NfZW5hYmxlZF9vcl9rZmVuY2Uodm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9tbXVfZGVjbC5oLTE3OC1cXG5hcmNoL3Bvd2VycGMvbW0vbW11X2RlY2wuaDoxNzk6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9tbS9tbXVfZGVjbC5oLTE4MC1pbnQgY3JlYXRlX3NlY3Rpb25fbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvYm9vazNlX3BndGFibGUuYz0yMz1pbnQgX19tZW1pbml0IHZtZW1tYXBfY3JlYXRlX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvYm9vazNlX3BndGFibGUuYy00Ni1cXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL2Jvb2szZV9wZ3RhYmxlLmM6NDc6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvYm9vazNlX3BndGFibGUuYy00OC12b2lkIHZtZW1tYXBfcmVtb3ZlX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9udW1hLmM9MTI0MT1lYXJseV9wYXJhbShcXFwibnVtYVxcXCIsIGVhcmx5X251bWEpO1xcbmFyY2gvcG93ZXJwYy9tbS9udW1hLmMtMTI0Mi1cXG5hcmNoL3Bvd2VycGMvbW0vbnVtYS5jOjEyNDM6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9tbS9udW1hLmMtMTI0NC0vKlxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL251bWEuYz0xMzY1PXU2NCBtZW1vcnlfaG90cGx1Z19tYXgodm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9udW1hLmMtMTM2OC19XFxuYXJjaC9wb3dlcnBjL21tL251bWEuYzoxMzY5OiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cXG5hcmNoL3Bvd2VycGMvbW0vbnVtYS5jLTEzNzAtXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvc2V0dXAuYz00Mzc9c3RhdGljIHZvaWQgcG52X2tleGVjX2NwdV9kb3duKGludCBjcmFzaF9zaHV0ZG93biwgaW50IHNlY29uZGFyeSlcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9zZXR1cC5jLTQ4Mi1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvc2V0dXAuYzo0ODM6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9zZXR1cC5jLTQ4NC1zdGF0aWMgdW5zaWduZWQgbG9uZyBwbnZfbWVtb3J5X2Jsb2NrX3NpemUodm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9zZXR1cC5jPTU2OT1kZWZpbmVfbWFjaGluZShwb3dlcm52KSB7XFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvc2V0dXAuYy01ODQtI2VuZGlmXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3NldHVwLmM6NTg1OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvc2V0dXAuYy01ODYtXFx0Lm1lbW9yeV9ibG9ja19zaXplXFx0PSBwbnZfbWVtb3J5X2Jsb2NrX3NpemUsXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvTWFrZWZpbGU9MTc9b2JqLSQoQ09ORklHX0hPVFBMVUdfQ1BVKVxcdCs9IGhvdHBsdWctY3B1Lm9cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvTWFrZWZpbGU6MTg6b2JqLSQoQ09ORklHX01FTU9SWV9IT1RQTFVHKVxcdCs9IGhvdHBsdWctbWVtb3J5Lm8gcG1lbS5vXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL01ha2VmaWxlLTE5LVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2lvbW11LmM9MTI4Nj1zdGF0aWMgcGh5c19hZGRyX3QgZGR3X21lbW9yeV9ob3RwbHVnX21heCh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2lvbW11LmMtMTI4OS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaW9tbXUuYzoxMjkwOiNpZiBkZWZpbmVkKENPTkZJR19OVU1BKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19NRU1PUllfSE9UUExVRylcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaW9tbXUuYy0xMjkxLVxcdG1heF9hZGRyID0gaG90X2FkZF9kcmNvbmZfbWVtb3J5X21heCgpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3BzZXJpZXMuaD02MD1pbnQgaGFuZGxlX2RscGFyX2Vycm9ybG9nKHN0cnVjdCBwc2VyaWVzX2hwX2Vycm9ybG9nICpocF9lcnJsb2cpO1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9wc2VyaWVzLmgtNjEtXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3BzZXJpZXMuaDo2MjojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3BzZXJpZXMuaC02My1pbnQgZGxwYXJfbWVtb3J5KHN0cnVjdCBwc2VyaWVzX2hwX2Vycm9ybG9nICpocF9lbG9nKTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jPTExMTg9c3RhdGljIGludCBwU2VyaWVzX3BjaV9wcm9iZV9tb2RlKHN0cnVjdCBwY2lfYnVzICpidXMpXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYy0xMTI0LVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jOjExMjU6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jLTExMjYtc3RhdGljIHVuc2lnbmVkIGxvbmcgcHNlcmllc19tZW1vcnlfYmxvY2tfc2l6ZSh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NldHVwLmM9MTEzOT1kZWZpbmVfbWFjaGluZShwc2VyaWVzKSB7XFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYy0xMTYxLSNlbmRpZlxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jOjExNjI6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jLTExNjMtXFx0Lm1lbW9yeV9ibG9ja19zaXplXFx0PSBwc2VyaWVzX21lbW9yeV9ibG9ja19zaXplLFxcbi0tXFxuYXJjaC9yaXNjdi9tbS9pbml0LmM9MTQyOT12b2lkIF9faW5pdCBwZ3RhYmxlX2NhY2hlX2luaXQodm9pZClcXG4tLVxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTE0MzMtXFx0XFx0cHJlYWxsb2NhdGVfcGdkX3BhZ2VzX3JhbmdlKE1PRFVMRVNfVkFERFIsIE1PRFVMRVNfRU5ELCBcXFwiYnBmL21vZHVsZXNcXFwiKTtcXG5hcmNoL3Jpc2N2L21tL2luaXQuYzoxNDM0OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19NRU1PUllfSE9UUExVRykpIHtcXG5hcmNoL3Jpc2N2L21tL2luaXQuYy0xNDM1LVxcdFxcdHByZWFsbG9jYXRlX3BnZF9wYWdlc19yYW5nZShWTUVNTUFQX1NUQVJULCBWTUVNTUFQX0VORCwgXFxcInZtZW1tYXBcXFwiKTtcXG4tLVxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jPTE0NDc9c3RydWN0IGV4ZWNtZW1faW5mbyBfX2luaXQgKmV4ZWNtZW1fYXJjaF9zZXR1cCh2b2lkKVxcbi0tXFxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTQ3Ni1cXG5hcmNoL3Jpc2N2L21tL2luaXQuYzoxNDc3OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Jpc2N2L21tL2luaXQuYy0xNDc4LXN0YXRpYyB2b2lkIF9fbWVtaW5pdCBmcmVlX3B0ZV90YWJsZShwdGVfdCAqcHRlX3N0YXJ0LCBwbWRfdCAqcG1kKVxcbi0tXFxuYXJjaC9yaXNjdi9tbS9pbml0LmM9MTc0MD12b2lkIF9fcmVmIHZtZW1tYXBfZnJlZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXApXFxuLS1cXG5hcmNoL3Jpc2N2L21tL2luaXQuYy0xNzQzLX1cXG5hcmNoL3Jpc2N2L21tL2luaXQuYzoxNzQ0OiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz0xMDM9Q09ORklHX1NMVUJfU1RBVFM9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xMDQtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjEwNTpDT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xMDYtQ09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxcbi0tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTk2PUNPTkZJR19TTEFCX0JVQ0tFVFM9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy05Ny0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6OTg6Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctOTktQ09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxcbi0tXFxuYXJjaC9zMzkwL21tL2luaXQuYz0xODg9dm9pZCBfX2luaXQgc2V0dXBfcGVyX2NwdV9hcmVhcyh2b2lkKVxcbi0tXFxuYXJjaC9zMzkwL21tL2luaXQuYy0yMDktXFxuYXJjaC9zMzkwL21tL2luaXQuYzoyMTA6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvczM5MC9tbS9pbml0LmMtMjExLVxcbi0tXFxuYXJjaC9zMzkwL21tL2luaXQuYz0yODE9dm9pZCBhcmNoX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSwgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXAsXFxuLS1cXG5hcmNoL3MzOTAvbW0vaW5pdC5jLTI4OS19XFxuYXJjaC9zMzkwL21tL2luaXQuYzoyOTA6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xcbmFyY2gvczM5MC9tbS9pbml0LmMtMjkxLVxcbi0tXFxuYXJjaC9zMzkwL21tL3ZtZW0uYz01MTM9aW50IF9fbWVtaW5pdCB2bWVtbWFwX3BvcHVsYXRlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBpbnQgbm9kZSxcXG4tLVxcbmFyY2gvczM5MC9tbS92bWVtLmMtNTI2LVxcbmFyY2gvczM5MC9tbS92bWVtLmM6NTI3OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3MzOTAvbW0vdm1lbS5jLTUyOC1cXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9jcmFzaC5jPTQxNj1pbnQgY3Jhc2hfbG9hZF9zZWdtZW50cyhzdHJ1Y3Qga2ltYWdlICppbWFnZSlcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9jcmFzaC5jLTQzNi1cXHQgKi9cXG5hcmNoL3g4Ni9rZXJuZWwvY3Jhc2guYzo0Mzc6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01FTU9SWV9IT1RQTFVHKSlcXG5hcmNoL3g4Ni9rZXJuZWwvY3Jhc2guYy00MzgtXFx0XFx0cG51bSA9IDIgKyBDT05GSUdfTlJfQ1BVU19ERUZBVUxUICsgQ09ORklHX0NSQVNIX01BWF9NRU1PUllfUkFOR0VTO1xcbi0tXFxuYXJjaC94ODYva2VybmVsL2NyYXNoLmM9NDk0PXVuc2lnbmVkIGludCBhcmNoX2NyYXNoX2dldF9lbGZjb3JlaGRyX3NpemUodm9pZClcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9jcmFzaC5jLTQ5OS1cXHRzeiA9IDIgKyBDT05GSUdfTlJfQ1BVU19ERUZBVUxUO1xcbmFyY2gveDg2L2tlcm5lbC9jcmFzaC5jOjUwMDpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfTUVNT1JZX0hPVFBMVUcpKVxcbmFyY2gveDg2L2tlcm5lbC9jcmFzaC5jLTUwMS1cXHRcXHRzeiArPSBDT05GSUdfQ1JBU0hfTUFYX01FTU9SWV9SQU5HRVM7XFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvZTgyMC5jPTkwOT1fX2luaXQgc3RhdGljIGludCBwYXJzZV9tZW1vcHQoY2hhciAqcClcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9lODIwLmMtOTM0LVxcbmFyY2gveDg2L2tlcm5lbC9lODIwLmM6OTM1OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3g4Ni9rZXJuZWwvZTgyMC5jLTkzNi1cXHRtYXhfbWVtX3NpemUgPSBtZW1fc2l6ZTtcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9lODIwLmM9MTI4OD1fX2luaXQgdm9pZCBlODIwX19tZW1ibG9ja19zZXR1cCh2b2lkKVxcbi0tXFxuYXJjaC94ODYva2VybmVsL2U4MjAuYy0xMjkyLVxcbmFyY2gveDg2L2tlcm5lbC9lODIwLmM6MTI5MzojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC94ODYva2VybmVsL2U4MjAuYy0xMjk0LVxcdC8qXFxuLS1cXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM9ODU0PXN0YXRpYyB2b2lkIF9fbWVtaW5pdCB2bWVtbWFwX2ZsdXNoX3VudXNlZF9wbWQodm9pZClcXG4tLVxcbmFyY2gveDg2L21tL2luaXRfNjQuYy04NjUtXFxuYXJjaC94ODYvbW0vaW5pdF82NC5jOjg2NjojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC94ODYvbW0vaW5pdF82NC5jLTg2Ny0vKiBSZXR1cm5zIHRydWUgaWYgdGhlIFBNRCBpcyBjb21wbGV0ZWx5IHVudXNlZCBhbmQgdGh1cyBpdCBjYW4gYmUgZnJlZWQgKi9cXG4tLVxcbmFyY2gveDg2L21tL2luaXRfNjQuYz05MTg9c3RhdGljIHZvaWQgX19tZW1pbml0IHZtZW1tYXBfdXNlX25ld19zdWJfcG1kKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxcbi0tXFxuYXJjaC94ODYvbW0vaW5pdF82NC5jLTk0Ny0gKi9cXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM6OTQ4OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmMtOTQ5LS8qXFxuLS1cXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM9MTMwMz12b2lkIF9fcmVmIGFyY2hfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcXG4tLVxcbmFyY2gveDg2L21tL2luaXRfNjQuYy0xMzExLX1cXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM6MTMxMjojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXFxuYXJjaC94ODYvbW0vaW5pdF82NC5jLTEzMTMtXFxuLS1cXG5hcmNoL3g4Ni94ZW4vc2V0dXAuYz01Mzc9c3RhdGljIHZvaWQgX19pbml0IHhlbl9hbGlnbl9hbmRfYWRkX2U4MjBfcmVnaW9uKHBoeXNfYWRkcl90IHN0YXJ0LFxcbi0tXFxuYXJjaC94ODYveGVuL3NldHVwLmMtNTQ1LVxcdFxcdGVuZCBcXHUwMDI2PSB+KChwaHlzX2FkZHJfdClQQUdFX1NJWkUgLSAxKTtcXG5hcmNoL3g4Ni94ZW4vc2V0dXAuYzo1NDY6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gveDg2L3hlbi9zZXR1cC5jLTU0Ny1cXHRcXHQvKlxcbi0tXFxuYXJjaC94ODYveGVuL3NldHVwLmM9Nzk0PWNoYXIgKiBfX2luaXQgeGVuX21lbW9yeV9zZXR1cCh2b2lkKVxcbi0tXFxuYXJjaC94ODYveGVuL3NldHVwLmMtODEzLVxcbmFyY2gveDg2L3hlbi9zZXR1cC5jOjgxNDojaWYgZGVmaW5lZChDT05GSUdfTUVNT1JZX0hPVFBMVUcpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX1hFTl9CQUxMT09OKVxcbmFyY2gveDg2L3hlbi9zZXR1cC5jLTgxNS1cXHR4ZW5fc2F2ZWRfbWF4X21lbV9zaXplID0gbWF4X21lbV9zaXplO1xcbi0tXFxuZHJpdmVycy9hY3BpL251bWEvc3JhdC5jPTM1OT1hY3BpX3BhcnNlX21lbW9yeV9hZmZpbml0eSh1bmlvbiBhY3BpX3N1YnRhYmxlX2hlYWRlcnMgKmhlYWRlcixcXG4tLVxcbmRyaXZlcnMvYWNwaS9udW1hL3NyYXQuYy0zNzktXFx0XFx0cmV0dXJuIDA7XFxuZHJpdmVycy9hY3BpL251bWEvc3JhdC5jOjM4MDpcXHRob3RwbHVnZ2FibGUgPSBJU19FTkFCTEVEKENPTkZJR19NRU1PUllfSE9UUExVRykgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL2FjcGkvbnVtYS9zcmF0LmMtMzgxLVxcdFxcdChtYS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBBQ1BJX1NSQVRfTUVNX0hPVF9QTFVHR0FCTEUpO1xcbi0tXFxuZHJpdmVycy9hY3BpL3BjaV9yb290LmM9NDI4PXN0YXRpYyB1MzIgY2FsY3VsYXRlX3N1cHBvcnQodm9pZClcXG4tLVxcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jLTQ1MS0gKiBCYWNrZ3JvdW5kIG9uIGhvdHBsdWcgc3VwcG9ydCwgYW5kIG1ha2luZyBpdCBkZXBlbmQgb24gb25seVxcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jOjQ1MjogKiBDT05GSUdfSE9UUExVR19QQ0lfUENJRSB2cy4gYWxzbyBjb25zaWRlcmluZyBDT05GSUdfTUVNT1JZX0hPVFBMVUc6XFxuZHJpdmVycy9hY3BpL3BjaV9yb290LmMtNDUzLSAqXFxuZHJpdmVycy9hY3BpL3BjaV9yb290LmM6NDU0OiAqIENPTkZJR19BQ1BJX0hPVFBMVUdfTUVNT1JZIGRvZXMgZGVwZW5kIG9uIENPTkZJR19NRU1PUllfSE9UUExVRywgYnV0XFxuZHJpdmVycy9hY3BpL3BjaV9yb290LmMtNDU1LSAqIHRoZXJlIGlzIG5vIGV4aXN0aW5nIF9PU0MgZm9yIG1lbW9yeSBob3RwbHVnIHN1cHBvcnQuIFRoZSByZWFzb24gaXMgdGhhdFxcbi0tXFxuZHJpdmVycy9hY3BpL3BjaV9yb290LmMtNDcwLSAqIG5vdCBzdXBwb3J0IGJsb2NraW5nIGhvdHBsdWcsIGlzIHRvIHJlcXVpcmUgdGhlIG1lbW9yeSBkZXZpY2UgdG8gYmVcXG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYzo0NzE6ICogZGlzYWJsZWQgYmVmb3JlIGhvdHBsdWcgaXMgYXR0ZW1wdGVkLiBXaGVuIENPTkZJR19NRU1PUllfSE9UUExVRyBpc1xcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jLTQ3Mi0gKiBkaXNhYmxlZCB0aGF0IHN0ZXAgd2lsbCBmYWlsIGFuZCB0aGUgcmVtb3ZlIGF0dGVtcHQgY2FuY2VsbGVkIGJ5IHRoZVxcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jLTQ3My0gKiB1c2VyLiBJZiB0aGF0IGlzIG5vdCBob25vcmVkIGFuZCB0aGUgY2FyZCBpcyByZW1vdmVkIGFueXdheSB0aGVuIGl0XFxuZHJpdmVycy9hY3BpL3BjaV9yb290LmM6NDc0OiAqIGRvZXMgbm90IG1hdHRlciBpZiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgaXMgZW5hYmxlZCBvciBub3QsIGl0IHdpbGxcXG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYy00NzUtICogY2F1c2UgYSBjcmFzaCBhbmQgb3RoZXIgYmFkbmVzcy5cXG4tLVxcbmRyaXZlcnMvYmFzZS9NYWtlZmlsZT0xNT1vYmotJChDT05GSUdfTlVNQSlcXHQrPSBub2RlLm9cXG5kcml2ZXJzL2Jhc2UvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX01FTU9SWV9IT1RQTFVHKSArPSBtZW1vcnkub1xcbmRyaXZlcnMvYmFzZS9NYWtlZmlsZS0xNy1pZmVxICgkKENPTkZJR19TWVNGUykseSlcXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz0yMDc9aW50IG1lbW9yeV9ub3RpZnkoZW51bSBtZW1vcnlfYmxvY2tfc3RhdGUgc3RhdGUsIHZvaWQgKnYpXFxuLS1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtMjExLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYzoyMTI6I2lmIGRlZmluZWQoQ09ORklHX01FTU9SWV9GQUlMVVJFKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19NRU1PUllfSE9UUExVRylcXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtMjEzLXN0YXRpYyB1bnNpZ25lZCBsb25nIG1lbWJsa19ucl9wb2lzb24oc3RydWN0IG1lbW9yeV9ibG9jayAqbWVtKTtcXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz0xMTk2PWludCB3YWxrX2R5bmFtaWNfbWVtb3J5X2dyb3VwcyhpbnQgbmlkLCB3YWxrX21lbW9yeV9ncm91cHNfZnVuY190IGZ1bmMsXFxuLS1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtMTIxNy1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6MTIxODojaWYgZGVmaW5lZChDT05GSUdfTUVNT1JZX0ZBSUxVUkUpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX01FTU9SWV9IT1RQTFVHKVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy0xMjE5LXZvaWQgbWVtYmxrX25yX3BvaXNvbl9pbmModW5zaWduZWQgbG9uZyBwZm4pXFxuLS1cXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jPTEwOT1zdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqbm9kZV9hY2Nlc3Nfbm9kZV9ncm91cHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvYmFzZS9ub2RlLmMtMTE0LVxcbmRyaXZlcnMvYmFzZS9ub2RlLmM6MTE1OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jLTExNi1zdGF0aWMgQkxPQ0tJTkdfTk9USUZJRVJfSEVBRChub2RlX2NoYWluKTtcXG4tLVxcbmRyaXZlcnMvYmFzZS9ub2RlLmM9NzY0PWludCB1bnJlZ2lzdGVyX2NwdV91bmRlcl9ub2RlKHVuc2lnbmVkIGludCBjcHUsIHVuc2lnbmVkIGludCBuaWQpXFxuLS1cXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jLTc4Mi1cXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jOjc4MzojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuZHJpdmVycy9iYXNlL25vZGUuYy03ODQtc3RhdGljIHZvaWQgZG9fcmVnaXN0ZXJfbWVtb3J5X2Jsb2NrX3VuZGVyX25vZGUoaW50IG5pZCxcXG4tLVxcbmRyaXZlcnMvYmFzZS9ub2RlLmM9ODY0PXZvaWQgcmVnaXN0ZXJfbWVtb3J5X2Jsb2Nrc191bmRlcl9ub2RlX2hvdHBsdWcoaW50IG5pZCwgdW5zaWduZWQgbG9uZyBzdGFydF9wZm4sXFxuLS1cXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jLTg3MC19XFxuZHJpdmVycy9iYXNlL25vZGUuYzo4NzE6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xcbmRyaXZlcnMvYmFzZS9ub2RlLmMtODcyLVxcbi0tXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmM9NTc5PXN0YXRpYyB2b2lkIGRpc2FibGVfcGFnZV9yZXBvcnRpbmcodm9pZCk7XFxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtNTgwLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjU4MTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtNTgyLXN0YXRpYyBpbmxpbmUgYm9vbCBoYXNfcGZuX2lzX2JhY2tlZChzdHJ1Y3QgaHZfaG90YWRkX3N0YXRlICpoYXMsXFxuLS1cXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYz05Njg9c3RhdGljIHZvaWQgaG90X2FkZF9yZXEoc3RydWN0IHdvcmtfc3RydWN0ICpkdW1teSlcXG4tLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTk3MC1cXHRzdHJ1Y3QgZG1faG90X2FkZF9yZXNwb25zZSByZXNwO1xcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjk3MTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtOTcyLVxcdHVuc2lnbmVkIGxvbmcgcGdfc3RhcnQsIHBmbl9jbnQ7XFxuLS1cXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy05ODAtXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmM6OTgxOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy05ODItXFx0cGdfc3RhcnQgPSBkbS1cXHUwMDNlaGFfd3JrLmhhX3BhZ2VfcmFuZ2UuZmluZm8uc3RhcnRfcGFnZTtcXG4tLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jPTE5MzY9c3RhdGljIGludCBiYWxsb29uX3Byb2JlKHN0cnVjdCBodl9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTE5NDQtXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmM6MTk0NTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMTk0Ni1cXHQvKlxcbi0tXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMTk3NS1cXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYzoxOTc2OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy0xOTc3LVxcdHNldF9vbmxpbmVfcGFnZV9jYWxsYmFjayhcXHUwMDI2aHZfb25saW5lX3BhZ2UpO1xcbi0tXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMjAwNy1jb25uZWN0X2Vycm9yOlxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjIwMDg6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTIwMDktXFx0dW5yZWdpc3Rlcl9tZW1vcnlfbm90aWZpZXIoXFx1MDAyNmh2X21lbW9yeV9uYik7XFxuLS1cXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYz0yMDE1PXN0YXRpYyB2b2lkIGJhbGxvb25fcmVtb3ZlKHN0cnVjdCBodl9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTIwMzgtXFx0XFx0dm1idXNfY2xvc2UoZGV2LVxcdTAwM2VjaGFubmVsKTtcXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYzoyMDM5OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy0yMDQwLVxcdFxcdHVucmVnaXN0ZXJfbWVtb3J5X25vdGlmaWVyKFxcdTAwMjZodl9tZW1vcnlfbmIpO1xcbi0tXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmM9MjA3Nj1zdGF0aWMgaW50IGJhbGxvb25fcmVzdW1lKHN0cnVjdCBodl9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTIxMDEtXFx0ZGlzYWJsZV9wYWdlX3JlcG9ydGluZygpO1xcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjIxMDI6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTIxMDMtXFx0dW5yZWdpc3Rlcl9tZW1vcnlfbm90aWZpZXIoXFx1MDAyNmh2X21lbW9yeV9uYik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY2hhci9NYWtlZmlsZT0yMD1vYmoteSArPSBjdHJsY2hhci5vIGtleWJvYXJkLm8gZGVma2V5bWFwLm8gc2NscC5vIHNjbHBfcncubyBzY2xwX3F1aWVzY2UubyBcXFxcXFxuLS1cXG5kcml2ZXJzL3MzOTAvY2hhci9NYWtlZmlsZS0yMy1cXG5kcml2ZXJzL3MzOTAvY2hhci9NYWtlZmlsZToyNDpvYmotJChDT05GSUdfTUVNT1JZX0hPVFBMVUcpICs9IHNjbHBfbWVtLm9cXG5kcml2ZXJzL3MzOTAvY2hhci9NYWtlZmlsZS0yNS1vYmotJChDT05GSUdfVE4zMjcwKSArPSByYXczMjcwLm8gY29uMzI3MC5vXFxuLS1cXG5kcml2ZXJzL3hlbi94ZW4tYmFsbG9vbi5jLTUzLVxcbmRyaXZlcnMveGVuL3hlbi1iYWxsb29uLmM6NTQ6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmRyaXZlcnMveGVuL3hlbi1iYWxsb29uLmMtNTUtdTY0IHhlbl9zYXZlZF9tYXhfbWVtX3NpemUgPSAwO1xcbi0tXFxuZHJpdmVycy94ZW4veGVuLWJhbGxvb24uYz02Mz1zdGF0aWMgdm9pZCB3YXRjaF90YXJnZXQoc3RydWN0IHhlbmJ1c193YXRjaCAqd2F0Y2gsXFxuLS1cXG5kcml2ZXJzL3hlbi94ZW4tYmFsbG9vbi5jLTcwLVxcbmRyaXZlcnMveGVuL3hlbi1iYWxsb29uLmM6NzE6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmRyaXZlcnMveGVuL3hlbi1iYWxsb29uLmMtNzItXFx0LyogVGhlIGJhbGxvb24gZHJpdmVyIHdpbGwgdGFrZSBjYXJlIG9mIGFkZGluZyBtZW1vcnkgbm93LiAqL1xcbi0tXFxuaW5jbHVkZS9saW51eC9pbml0LmgtODAtXFxuaW5jbHVkZS9saW51eC9pbml0Lmg6ODE6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmluY2x1ZGUvbGludXgvaW5pdC5oLTgyLSNkZWZpbmUgX19tZW1pbml0XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2lvcG9ydC5oPTM5ND1leHRlcm4gdm9pZCByZWxlYXNlX21lbV9yZWdpb25fYWRqdXN0YWJsZShyZXNvdXJjZV9zaXplX3QsIHJlc291cmNlX3NpemVfdCk7XFxuaW5jbHVkZS9saW51eC9pb3BvcnQuaC0zOTUtI2VuZGlmXFxuaW5jbHVkZS9saW51eC9pb3BvcnQuaDozOTY6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmluY2x1ZGUvbGludXgvaW9wb3J0LmgtMzk3LWV4dGVybiB2b2lkIG1lcmdlX3N5c3RlbV9yYW1fcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpyZXMpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1vcnkuaD03OD1zdHJ1Y3QgbWVtb3J5X2Jsb2NrIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5LmgtOTMtXFx0c3RydWN0IGxpc3RfaGVhZCBncm91cF9uZXh0O1xcdC8qIG5leHQgYmxvY2sgaW5zaWRlIG1lbW9yeSBncm91cCAqL1xcbmluY2x1ZGUvbGludXgvbWVtb3J5Lmg6OTQ6I2lmIGRlZmluZWQoQ09ORklHX01FTU9SWV9GQUlMVVJFKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19NRU1PUllfSE9UUExVRylcXG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oLTk1LVxcdGF0b21pY19sb25nX3QgbnJfaHdwb2lzb247XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oPTEwOT1zdHJ1Y3QgbWVtX3NlY3Rpb247XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA3OjUyOjM3LjMyMDc4MTUyN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjI3MDc4NjQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipNZW1vcnkgSG90cGx1ZyBDb25maWd1cmF0aW9uIEludmVzdGlnYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBgQ09ORklHX01FTU9SWV9IT1RQTFVHYCBpcyB0aGUgcHJpbWFyeSBzd2l0Y2guIFRoYXQncyB0aGUgZ2l2ZW4uIE5vdywgdGhlIG5leHQgcXVlc3Rpb24gaXMgYWx3YXlzOiBkbyBJICphbHNvKiBuZWVkIGBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRWA/IEFyZSB0aG9zZSBmdW5jdGlvbmFsbHkgZGlzdGluY3Qgb3IganVzdCBsb2dpY2FsbHkgZGlmZmVyZW50PyBJIG5lZWQgdG8gY2xhcmlmeSB0aGUgcmVsYXRpb25zaGlwIHRoZXJlLlxuXG5UbyBhbnN3ZXIgdGhhdCwgSSdtIHRoaW5raW5nIEkgc2hvdWxkIGRpdmUgc3RyYWlnaHQgaW50byB0aGUgY29kZS4gVGhlIHN0YW5kYXJkIGdvLXRvIGluIHRoZXNlIHNpdHVhdGlvbnMgaXMgYG1tL21lbW9yeV9ob3RwbHVnLmNgLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBjb3JlIG1lbW9yeSBob3RwbHVnIGxvZ2ljIHVzdWFsbHkgcmVzaWRlcy4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gbG9vayBmb3IgdGhlIGltcGxlbWVudGF0aW9uIG9mIGB0cnlfb2ZmbGluZV9ub2RlYC4gVGhhdCBmdW5jdGlvbiBpcyBjcml0aWNhbDsgaXTigJlzIHRoZSBnYXRld2F5IHRvIHRha2luZyBhIG5vZGUgb2ZmbGluZS4gVW5kZXJzdGFuZGluZyBpdHMgY2hlY2tzIGFuZCBwcmVjb25kaXRpb25zIHdpbGwgZ2l2ZSBtZSBhIHZlcnkgY2xlYXIgcGljdHVyZSBvZiB3aGVuIGhvdHJlbW92ZSBmdW5jdGlvbmFsaXR5IGlzIGFjdHVhbGx5ICpyZXF1aXJlZCogdG8gZXhpc3QgYW5kIGJlIGVuYWJsZWQgYW5kIHRoZSByZWxhdGlvbnNoaXAgdGhhdCBoYXMgd2l0aCB0aGUgYmFzZSBob3RwbHVnIGNvbmZpZ3VyYXRpb24uIFRoaXMgc2hvdWxkIGNsYXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIHF1aWNrbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NjEzLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6NTI6NDAuOTQ3ODYzOTNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5Njg4NzU3MDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX01FTU9SWV9IT1RSRU1PVkVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3Q9MzM2PVRoZSBmb2xsb3dpbmcgZmlsZXMgYXJlIGN1cnJlbnRseSBkZWZpbmVkOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3QtMzc3LVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vbWVtb3J5LWhvdHBsdWcucnN0OjM3ODpcXHRcXHQgICAgQXZhaWxhYmlsaXR5IGRlcGVuZHMgb24gdGhlIENPTkZJR19NRU1PUllfSE9UUkVNT1ZFXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3QtMzc5LVxcdFxcdCAgICBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24uXFxuLS1cXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnPTEzMz1DT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc6MTM0OkNPTkZJR19NRU1PUllfSE9UUkVNT1ZFPXlcXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTEzNS1DT05GSUdfS1NNPXlcXG4tLVxcbmFyY2gvYXJtNjQvbW0vbW11LmM9MjI0Nj1zdGF0aWMgaW50IF9faW5pdCBwcmV2ZW50X21lbW9yeV9yZW1vdmVfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm02NC9tbS9tbXUuYy0yMjQ5LVxcbmFyY2gvYXJtNjQvbW0vbW11LmM6MjI1MDpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX01FTU9SWV9IT1RSRU1PVkUpKVxcbmFyY2gvYXJtNjQvbW0vbW11LmMtMjI1MS1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz0xMDE9Q09ORklHX01IUF9ERUZBVUxUX09OTElORV9UWVBFX09OTElORV9BVVRPPXlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWctMTAzLSMgQ09ORklHX01IUF9ERUZBVUxUX09OTElORV9UWVBFX09OTElORV9NT1ZBQkxFIGlzIG5vdCBzZXRcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnOjEwNDpDT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZy0xMDUtQ09ORklHX0tTTT15XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTExNj1DT05GSUdfTUhQX0RFRkFVTFRfT05MSU5FX1RZUEVfT05MSU5FX0FVVE89eVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy0xMTgtIyBDT05GSUdfTUhQX0RFRkFVTFRfT05MSU5FX1RZUEVfT05MSU5FX01PVkFCTEUgaXMgbm90IHNldFxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6MTE5OkNPTkZJR19NRU1PUllfSE9UUkVNT1ZFPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTEyMC1DT05GSUdfS1NNPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnPTU4PUNPTkZJR19NRU1PUllfSE9UUExVRz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6NTk6Q09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnLTYwLUNPTkZJR19LU009eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnPTg4PUNPTkZJR19NRU1PUllfSE9UUExVRz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnOjg5OkNPTkZJR19NRU1PUllfSE9UUkVNT1ZFPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctOTAtQ09ORklHX0tTTT15XFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYz0yMjI9c3RhdGljIGludCBkbHBhcl9vbmxpbmVfbG1iKHN0cnVjdCBkcm1lbV9sbWIgKmxtYilcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jLTIyNi1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYzoyMjc6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUkVNT1ZFXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2hvdHBsdWctbWVtb3J5LmMtMjI4LXN0YXRpYyBpbnQgZGxwYXJfb2ZmbGluZV9sbWIoc3RydWN0IGRybWVtX2xtYiAqbG1iKVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2hvdHBsdWctbWVtb3J5LmM9NTU4PXN0YXRpYyBpbnQgZGxwYXJfbWVtb3J5X3JlbW92ZV9ieV9pYyh1MzIgbG1ic190b19yZW1vdmUsIHUzMiBkcmNfaW5kZXgpXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYy01NjEtfVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jOjU2MjojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RSRU1PVkUgKi9cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYy01NjMtXFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9MTA1PUNPTkZJR19NRU1PUllfSE9UUExVRz15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjEwNjpDT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTEwNy1DT05GSUdfS1NNPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz05OD1DT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzo5OTpDT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTEwMC1DT05GSUdfS1NNPXlcXG4tLVxcbmFyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9hY3BpLmM9MTU3PWFjcGlfcGh5c2ljYWxfYWRkcmVzcyBnZXRfcnNkcF9hZGRyKHZvaWQpXFxuLS1cXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvYWNwaS5jLTE3MS1cXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvYWNwaS5jOjE3MjojaWYgZGVmaW5lZChDT05GSUdfUkFORE9NSVpFX0JBU0UpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX01FTU9SWV9IT1RSRU1PVkUpXFxuYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL2FjcGkuYy0xNzMtLypcXG4tLVxcbmFyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9hY3BpLmM9MjcwPWludCBjb3VudF9pbW1vdmFibGVfbWVtX3JlZ2lvbnModm9pZClcXG4tLVxcbmFyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9hY3BpLmMtMzE2LX1cXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvYWNwaS5jOjMxNzojZW5kaWYgLyogQ09ORklHX1JBTkRPTUlaRV9CQVNFIFxcdTAwMjZcXHUwMDI2IENPTkZJR19NRU1PUllfSE9UUkVNT1ZFICovXFxuLS1cXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQva2FzbHIuYz01OTY9c3RhdGljIGJvb2wgcHJvY2Vzc19tZW1fcmVnaW9uKHN0cnVjdCBtZW1fdmVjdG9yICpyZWdpb24sXFxuLS1cXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQva2FzbHIuYy02MTQtXFxuYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL2thc2xyLmM6NjE1OiNpZiBkZWZpbmVkKENPTkZJR19NRU1PUllfSE9UUkVNT1ZFKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19BQ1BJKVxcbmFyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9rYXNsci5jLTYxNi1cXHQvKlxcbi0tXFxuYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL21pc2MuaD0xNzE9c3RhdGljIGlubGluZSBhY3BpX3BoeXNpY2FsX2FkZHJlc3MgZ2V0X3JzZHBfYWRkcih2b2lkKSB7IHJldHVybiAwOyB9XFxuLS1cXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvbWlzYy5oLTE3My1cXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvbWlzYy5oOjE3NDojaWYgZGVmaW5lZChDT05GSUdfUkFORE9NSVpFX0JBU0UpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX01FTU9SWV9IT1RSRU1PVkUpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0FDUEkpXFxuYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL21pc2MuaC0xNzUtZXh0ZXJuIHN0cnVjdCBtZW1fdmVjdG9yIGltbW92YWJsZV9tZW1bTUFYX05VTU5PREVTKjJdO1xcbi0tXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jPTE1OD1zdGF0aWMgc3NpemVfdCBwaHlzX2luZGV4X3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTE2Ny0gKiBMZWdhY3kgaW50ZXJmYWNlIHRoYXQgd2UgY2Fubm90IHJlbW92ZS4gQWx3YXlzIGluZGljYXRlIFxcXCJyZW1vdmFibGVcXFwiXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jOjE2ODogKiB3aXRoIENPTkZJR19NRU1PUllfSE9UUkVNT1ZFIC0gYmFkIGhldXJpc3RpYy5cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtMTY5LSAqL1xcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz0xNzA9c3RhdGljIHNzaXplX3QgcmVtb3ZhYmxlX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy0xNzIte1xcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYzoxNzM6XFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwiJWRcXFxcblxcXCIsIChpbnQpSVNfRU5BQkxFRChDT05GSUdfTUVNT1JZX0hPVFJFTU9WRSkpO1xcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy0xNzQtfVxcbi0tXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jPTQ0MT1zdGF0aWMgc3NpemVfdCBwaHlzX2RldmljZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy00NTAtXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jOjQ1MTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RSRU1PVkVcXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtNDUyLXN0YXRpYyBpbnQgcHJpbnRfYWxsb3dlZF96b25lKGNoYXIgKmJ1ZiwgaW50IGxlbiwgaW50IG5pZCxcXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz02NjI9c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKm1lbW9yeV9tZW1ibGtfYXR0cnNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy02NjYtXFx0XFx1MDAyNmRldl9hdHRyX3JlbW92YWJsZS5hdHRyLFxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYzo2Njc6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUkVNT1ZFXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTY2OC1cXHRcXHUwMDI2ZGV2X2F0dHJfdmFsaWRfem9uZXMuYXR0cixcXG4tLVxcbmRyaXZlcnMvZGF4L2ttZW0uYz02OD1zdGF0aWMgaW50IGRldl9kYXhfa21lbV9wcm9iZShzdHJ1Y3QgZGV2X2RheCAqZGV2X2RheClcXG4tLVxcbmRyaXZlcnMvZGF4L2ttZW0uYy0yMDctXFxuZHJpdmVycy9kYXgva21lbS5jOjIwODojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RSRU1PVkVcXG5kcml2ZXJzL2RheC9rbWVtLmMtMjA5LXN0YXRpYyB2b2lkIGRldl9kYXhfa21lbV9yZW1vdmUoc3RydWN0IGRldl9kYXggKmRldl9kYXgpXFxuLS1cXG5kcml2ZXJzL2RheC9rbWVtLmM9MjY2PXN0YXRpYyB2b2lkIGRldl9kYXhfa21lbV9yZW1vdmUoc3RydWN0IGRldl9kYXggKmRldl9kYXgpXFxuLS1cXG5kcml2ZXJzL2RheC9rbWVtLmMtMjc2LX1cXG5kcml2ZXJzL2RheC9rbWVtLmM6Mjc3OiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRSAqL1xcbmRyaXZlcnMvZGF4L2ttZW0uYy0yNzgtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2lvcG9ydC5oPTM5MT1leHRlcm4gdm9pZCBfX3JlbGVhc2VfcmVnaW9uKHN0cnVjdCByZXNvdXJjZSAqLCByZXNvdXJjZV9zaXplX3QsXFxuaW5jbHVkZS9saW51eC9pb3BvcnQuaC0zOTItXFx0XFx0XFx0XFx0cmVzb3VyY2Vfc2l6ZV90KTtcXG5pbmNsdWRlL2xpbnV4L2lvcG9ydC5oOjM5MzojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RSRU1PVkVcXG5pbmNsdWRlL2xpbnV4L2lvcG9ydC5oLTM5NC1leHRlcm4gdm9pZCByZWxlYXNlX21lbV9yZWdpb25fYWRqdXN0YWJsZShyZXNvdXJjZV9zaXplX3QsIHJlc291cmNlX3NpemVfdCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9MjU5PXN0YXRpYyBpbmxpbmUgdm9pZCBwZ2RhdF9yZXNpemVfaW5pdChzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KSB7fVxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI2MS1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MjYyOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yNjMtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9Mjg1PXN0YXRpYyBpbmxpbmUgdm9pZCBfX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSkge31cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6Mjg2OiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRSAqL1xcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yODctXFxuLS1cXG5rZXJuZWwvY29uZmlncy94ZW4uY29uZmlnPTE1PUNPTkZJR19NRU1PUllfSE9UUExVRz15XFxua2VybmVsL2NvbmZpZ3MveGVuLmNvbmZpZzoxNjpDT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XFxua2VybmVsL2NvbmZpZ3MveGVuLmNvbmZpZy0xNy1DT05GSUdfWk9ORV9ERVZJQ0U9eVxcbi0tXFxua2VybmVsL3Jlc291cmNlLmM9MTQ0Nj1FWFBPUlRfU1lNQk9MKF9fcmVsZWFzZV9yZWdpb24pO1xcbmtlcm5lbC9yZXNvdXJjZS5jLTE0NDctXFxua2VybmVsL3Jlc291cmNlLmM6MTQ0ODojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RSRU1PVkVcXG5rZXJuZWwvcmVzb3VyY2UuYy0xNDQ5LXN0YXRpYyB2b2lkIGFwcGVuZF9jaGlsZF90b19wYXJlbnQoc3RydWN0IHJlc291cmNlICpuZXdfcGFyZW50LCBzdHJ1Y3QgcmVzb3VyY2UgKm5ld19jaGlsZClcXG4tLVxcbmtlcm5lbC9yZXNvdXJjZS5jPTE1MDc9dm9pZCByZWxlYXNlX21lbV9yZWdpb25fYWRqdXN0YWJsZShyZXNvdXJjZV9zaXplX3Qgc3RhcnQsIHJlc291cmNlX3NpemVfdCBzaXplKVxcbi0tXFxua2VybmVsL3Jlc291cmNlLmMtMTU5Ni19XFxua2VybmVsL3Jlc291cmNlLmM6MTU5NzojZW5kaWZcXHQvKiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRSAqL1xcbmtlcm5lbC9yZXNvdXJjZS5jLTE1OTgtXFxuLS1cXG5tbS9rc20uYz0zMjY5PXZvaWQgZm9saW9fbWlncmF0ZV9rc20oc3RydWN0IGZvbGlvICpuZXdmb2xpbywgc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbm1tL2tzbS5jLTMyOTItXFxubW0va3NtLmM6MzI5MzojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RSRU1PVkVcXG5tbS9rc20uYy0zMjk0LXN0YXRpYyB2b2lkIHdhaXRfd2hpbGVfb2ZmbGluaW5nKHZvaWQpXFxuLS1cXG5tbS9rc20uYz0zNDE3PXN0YXRpYyB2b2lkIHdhaXRfd2hpbGVfb2ZmbGluaW5nKHZvaWQpXFxuLS1cXG5tbS9rc20uYy0zNDE5LX1cXG5tbS9rc20uYzozNDIwOiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRSAqL1xcbm1tL2tzbS5jLTM0MjEtXFxuLS1cXG5tbS9rc20uYz0zOTc3PXN0YXRpYyBpbnQgX19pbml0IGtzbV9pbml0KHZvaWQpXFxuLS1cXG5tbS9rc20uYy00MDA5LVxcbm1tL2tzbS5jOjQwMTA6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUkVNT1ZFXFxubW0va3NtLmMtNDAxMS1cXHQvKiBUaGVyZSBpcyBubyBzaWduaWZpY2FuY2UgdG8gdGhpcyBwcmlvcml0eSAxMDAgKi9cXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM9MTcyMT1ib29sIG1ocF9yYW5nZV9hbGxvd2VkKHU2NCBzdGFydCwgdTY0IHNpemUsIGJvb2wgbmVlZF9tYXBwaW5nKVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNzMzLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTczNDojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RSRU1PVkVcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE3MzUtLypcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM9MjQzOD1FWFBPUlRfU1lNQk9MX0dQTChvZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjI0Mzk6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUkVNT1ZFICovXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9NDM3ND1zdGF0aWMgdW5zaWduZWQgaW50IHpvbmVsaXN0X2l0ZXJfYmVnaW4odm9pZClcXG5tbS9wYWdlX2FsbG9jLmMtNDM3NS17XFxubW0vcGFnZV9hbGxvYy5jOjQzNzY6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01FTU9SWV9IT1RSRU1PVkUpKVxcbm1tL3BhZ2VfYWxsb2MuYy00Mzc3LVxcdFxcdHJldHVybiByZWFkX3NlcWJlZ2luKFxcdTAwMjZ6b25lbGlzdF91cGRhdGVfc2VxKTtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz00MzgyPXN0YXRpYyB1bnNpZ25lZCBpbnQgY2hlY2tfcmV0cnlfem9uZWxpc3QodW5zaWduZWQgaW50IHNlcSlcXG5tbS9wYWdlX2FsbG9jLmMtNDM4My17XFxubW0vcGFnZV9hbGxvYy5jOjQzODQ6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01FTU9SWV9IT1RSRU1PVkUpKVxcbm1tL3BhZ2VfYWxsb2MuYy00Mzg1LVxcdFxcdHJldHVybiByZWFkX3NlcXJldHJ5KFxcdTAwMjZ6b25lbGlzdF91cGRhdGVfc2VxLCBzZXEpO1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTc1MTc9dm9pZCB6b25lX3BjcF9yZXNldChzdHJ1Y3Qgem9uZSAqem9uZSlcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy03NTM1LVxcbm1tL3BhZ2VfYWxsb2MuYzo3NTM2OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRVxcbm1tL3BhZ2VfYWxsb2MuYy03NTM3LS8qXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLmFhcmNoNjQ9OTA9Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLmFhcmNoNjQ6OTE6Q09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2NC05Mi1DT05GSUdfTkFNRVNQQUNFUz15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnMzOTB4PTc2PUNPTkZJR19NRU1PUllfSE9UUExVRz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweDo3NzpDT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweC03OC1DT05GSUdfTkFNRVNQQUNFUz15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tZW1vcnktaG90cGx1Zy9jb25maWc9Mz1DT05GSUdfTUVNT1JZX05PVElGSUVSX0VSUk9SX0lOSkVDVD1tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbWVtb3J5LWhvdHBsdWcvY29uZmlnOjQ6Q09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdnNvY2svY29uZmlnPTEwOT1DT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Zzb2NrL2NvbmZpZzoxMTA6Q09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Zzb2NrL2NvbmZpZy0xMTEtQ09ORklHX1pPTkVfREVWSUNFPXlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6NTI6NDIuOTE2NzUyMjUxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNTA1MjU5MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipEaXZpbmcgaW50byB0aGUgYG1lbW9yeV9ob3RwbHVnYCBDb2RlKipcblxuQWxyaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IGB0cnlfb2ZmbGluZV9ub2RlYC4gVGhhdCBmdW5jdGlvbiBpcyBkZWZpbml0ZWx5IHRpZWQgdG8gbWVtb3J5IGhvdC1yZW1vdmUgZnVuY3Rpb25hbGl0eS4gSSdtIHByZXR0eSBzdXJlIEkgc2F3IGl0IGluIGBpbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmhgIHVuZGVyIHRoYXQgYCNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRWAgZ3VhcmQuIEl0J3MgYSBrZXkgZnVuY3Rpb24gZm9yIG9mZmxpbmluZyBhIG5vZGUsIHNvIGl0IG1ha2VzIHNlbnNlIGl0J3MgY29uZGl0aW9uYWwgbGlrZSB0aGF0LlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBzaG91bGQgcXVpY2tseSBqdW1wIHRvIHRoYXQgaGVhZGVyIGZpbGUgYW5kIGRvdWJsZSBjaGVjayB0aGUgY29udGV4dC4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gbG9vayBhcm91bmQgbGluZSAyNjIgdG8gZ2V0IHRoZSBwcmVjaXNlIGxvY2F0aW9uIGFuZCBtYWtlIHN1cmUgbXkgbWVudGFsIG1hcCBpcyBhY2N1cmF0ZS4gSSB3YW50IHRvIHNlZSBob3cgdGhhdCBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgb3RoZXIgZGVmaW5pdGlvbnMgYXJvdW5kIGl0LiBHb3R0YSBnZXQgdGhlIGZ1bGwgcGljdHVyZSwgZXZlbiBmb3Igc29tZXRoaW5nIEkgKnRoaW5rKiBJIGFscmVhZHkga25vdyEgQmV0dGVyIHNhZmUgdGhhbiBzb3JyeSB3aGVuIHlvdSdyZSBkZWFsaW5nIHdpdGggbWVtb3J5IG1hbmFnZW1lbnQgYXQgdGhpcyBsZXZlbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI2OTcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzo1Mjo0Ny4yNjcyODE0OTRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NzgyMjIwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0cnlfb2ZmbGluZV9ub2RlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9MjU5PXN0YXRpYyBpbmxpbmUgdm9pZCBwZ2RhdF9yZXNpemVfaW5pdChzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KSB7fVxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI2My1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MjY0OmV4dGVybiB2b2lkIHRyeV9vZmZsaW5lX25vZGUoaW50IG5pZCk7XFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI2NS1leHRlcm4gaW50IG9mZmxpbmVfcGFnZXModW5zaWduZWQgbG9uZyBzdGFydF9wZm4sIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9MjY5PWV4dGVybiBpbnQgb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yNzEtI2Vsc2VcXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MjcyOnN0YXRpYyBpbmxpbmUgdm9pZCB0cnlfb2ZmbGluZV9ub2RlKGludCBuaWQpIHt9XFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI3My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6NTI6NDcuNTQ1MTExMTI4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MjM4MDI3NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIE1lbW9yeSBIb3RwbHVnIGFuZCBWTSBTdGF0aXN0aWNzKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCBgdHJ5X29mZmxpbmVfbm9kZWAgaXMgb25seSBkZWZpbmVkIGlmIGBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRWAgaXMgZW5hYmxlZC4gU2VlbXMgcHJldHR5IG9idmlvdXMsIGJ1dCBhbHdheXMgZ29vZCB0byBjaGVjay4gVGhlcmVmb3JlLCBpdCBvYnZpb3VzbHkgbmVlZHMgYENPTkZJR19NRU1PUllfSE9UUkVNT1ZFYCB0byBiZSBlbmFibGVkLCBhbmQgc2luY2UgbWVtb3J5IGhvdHJlbW92ZSBpbXBsaWVzIGhvdHBsdWcsIGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgIGlzIGFsc28gbmVjZXNzYXJ5LlxuXG5Ob3csIEkgd2FzIGxvb2tpbmcgYXQgYHN5bmNfdm1fc3RhdHNgLCBhbmQgaXQncyBsb2NhdGVkIGluIGBtbS92bXN0YXQuY2AuIEkga25vdyB0aGF0IGZpbGUgaXMgYWx3YXlzIGNvbXBpbGVkIGluLCBzbyB0aGF0J3Mgbm90IGEgY29uZGl0aW9uYWwgZGVwZW5kZW5jeS4gVGhlIGludGVyZXN0aW5nIHRoaW5nIGlzIHRoYXQgYHRyeV9vZmZsaW5lX25vZGVgICpjYWxscyogYHN5bmNfdm1fc3RhdHNgLCB3aGljaCBtZWFucyBgc3luY192bV9zdGF0c2AgaXMgcGFydCBvZiB0aGUgY29uZGl0aW9uYWwgcGF0aC5cblxuTGV0IG1lIGNpcmNsZSBiYWNrIHRvIGB0cnlfb2ZmbGluZV9ub2RlYCBhbmQgdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoLiBSaWdodCwgc28gYHRyeV9vZmZsaW5lX25vZGVgIGNhbGxzIGBzeW5jX3ZtX3N0YXRzKClgLiBUaGVuIGBzeW5jX3ZtX3N0YXRzKClgIGNhbGxzIGBzY2hlZHVsZV9vbl9lYWNoX2NwdSh2bXN0YXRfZm9sZF93b3JrKWAuIEFuZCB0aGF0IGZ1bmN0aW9uLCBgdm1zdGF0X2ZvbGRfd29ya2AsIGNhbGxzIGByZWZyZXNoX2NwdV92bV9zdGF0cyhmYWxzZSlgLlxuXG5JcyB0aGlzIGFjdHVhbGx5IHNvbWV0aGluZyBJIHNob3VsZCB0cnkgZnV6emluZz8gWWVzLCBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNwZWNpZmljYWxseSBzY2hlZHVsaW5nIHdvcmsgb24gKmV2ZXJ5KiBDUFUgZHVyaW5nIG1lbW9yeSBob3RwbHVnLiBJdCdzIHJlbGF0ZWQgdG8gYSBmaXggZm9yIG9ycGhhbmVkIHBlci1DUFUgdm1zdGF0IGRpZmZzLiBTbywgZnV6emluZyBjb3VsZCBwb3RlbnRpYWxseSB1bmNvdmVyIGlzc3VlcyB3aXRoIHNjaGVkdWxpbmcgb24gbXVsdGlwbGUgQ1BVcyBkdXJpbmcgbWVtb3J5IGhvdHBsdWcgb3BlcmF0aW9ucywgb3IgcGVyaGFwcyBzb21lIHJhY2UgY29uZGl0aW9ucyByZWxhdGVkIHRvIGhvdyB0aGUgdm1zdGF0IGZvbGRpbmcgcHJvY2VzcyBoYXBwZW5zLiBTb3VuZHMgcHJldHR5IHByb21pc2luZy5cblxuSSdtIGZvY3VzaW5nIG15IGF0dGVudGlvbiBvbiB0aGUgZm9sbG93aW5nIHN5bWJvbHM6IGB0cnlfb2ZmbGluZV9ub2RlYCwgYHN5bmNfdm1fc3RhdHNgLCBhbmQgYHZtc3RhdF9mb2xkX3dvcmtgLlxuXG5BbmQgdGhlIG5lY2Vzc2FyeSBjb25maWdzIHRvIGVuYWJsZSB0aGlzIGFyZSBgTUVNT1JZX0hPVFBMVUdgIGFuZCBgTUVNT1JZX0hPVFJFTU9WRWAuXG5cbkxldCBtZSBqdXN0IGRvdWJsZSBjaGVjayBvbmUgbGFzdCB0aGluZzogaXMgYHRyeV9vZmZsaW5lX25vZGVgICpkZWZpbml0ZWx5KiB0aGUgKm9ubHkqIGNhbGxlciBvZiBgc3luY192bV9zdGF0c2A/IEl0J3MgYWx3YXlzIHdvcnRoIHZlcmlmeWluZyB0aG9zZSBhc3N1bXB0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMyMjcsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6NTI6NTMuOTY4OTE4NjAzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODkyOTY3MDc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5bmNfdm1fc3RhdHNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC92bXN0YXQuaD0yOTU9dm9pZCBjcHVfdm1fc3RhdHNfZm9sZChpbnQgY3B1KTtcXG5pbmNsdWRlL2xpbnV4L3Ztc3RhdC5oOjI5Njp2b2lkIHN5bmNfdm1fc3RhdHModm9pZCk7XFxuaW5jbHVkZS9saW51eC92bXN0YXQuaC0yOTctdm9pZCByZWZyZXNoX3pvbmVfc3RhdF90aHJlc2hvbGRzKHZvaWQpO1xcbi0tXFxuaW5jbHVkZS9saW51eC92bXN0YXQuaD00MDA9c3RhdGljIGlubGluZSB2b2lkIGNwdV92bV9zdGF0c19mb2xkKGludCBjcHUpIHsgfVxcbmluY2x1ZGUvbGludXgvdm1zdGF0Lmg6NDAxOnN0YXRpYyBpbmxpbmUgdm9pZCBzeW5jX3ZtX3N0YXRzKHZvaWQpIHsgfVxcbmluY2x1ZGUvbGludXgvdm1zdGF0LmgtNDAyLXN0YXRpYyBpbmxpbmUgdm9pZCBxdWlldF92bXN0YXQodm9pZCkgeyB9XFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTIxODU9dm9pZCB0cnlfb2ZmbGluZV9ub2RlKGludCBuaWQpXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyMTQtXFx0ICovXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMjE1OlxcdHN5bmNfdm1fc3RhdHMoKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyMTYtXFx0bm9kZV9zZXRfb2ZmbGluZShuaWQpO1xcbi0tXFxubW0vdm1zdGF0LmM9OTQ0PXN0YXRpYyB2b2lkIHZtc3RhdF9mb2xkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxcbi0tXFxubW0vdm1zdGF0LmMtOTQ4LVxcbm1tL3Ztc3RhdC5jOjk0OTp2b2lkIHN5bmNfdm1fc3RhdHModm9pZClcXG5tbS92bXN0YXQuYy05NTAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzo1Mjo1NS44NjE4OTYzNDFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY1NTYzNDYzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGB0cnlfb2ZmbGluZV9ub2RlYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgdHJ5X29mZmxpbmVfbm9kZWAgZnVuY3Rpb24sIGFuZCBpdCBsb29rcyBsaWtlIGl0J3Mgb25seSBjYWxsZWQgYnkgb25lIHBsYWNlLCB3aGljaCBzaW1wbGlmaWVzIHRoZSBkZWJ1Z2dpbmcgcHJvY2Vzcy4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuTm93LCBJJ20gd29uZGVyaW5nIGFib3V0IHRoZSBzdXJyb3VuZGluZyBjb25maWd1cmF0aW9uLiBBcmUgdGhlcmUgYW55IG90aGVyIGNvbmZpZyBvcHRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQ/IEkga25vdyBgQ09ORklHX1NNUGAgaXMgZGVmaW5pdGVseSByZXF1aXJlZCwgYmVjYXVzZSBvZiB0aGUgYHNjaGVkdWxlX29uX2VhY2hfY3B1YCBjYWxsIHdpdGhpbiwgYnV0IHRoYXQncyBwcmV0dHkgbXVjaCBhIGdpdmVuIGluIHRoZSBzeXprYWxsZXIgY29udGV4dCwgc2luY2UgaXQncyBlbmFibGVkIGJ5IGRlZmF1bHQuIE15IGd1dCBmZWVsaW5nIGlzIHRoYXQgYENPTkZJR19OVU1BYCBtaWdodCBiZSAqbW9yZSogaW50ZXJlc3RpbmcgaGVyZSwgc2luY2UgdGhpcyBmdW5jdGlvbiBvcGVyYXRlcyBvbiBub2Rlcy4gSWYgTlVNQSBpc24ndCBlbmFibGVkLCBpcyB0aGUgZnVuY3Rpb24gZXZlbiBnb2luZyB0byBiZSBkb2luZyBhbnl0aGluZyBzdWJzdGFudGlhbD8gVGhhdCBjb3VsZCBiZSBhIGNyaXRpY2FsIHBpZWNlIHRvIHVuZGVyc3RhbmQuXG5cbkFscmlnaHQsIGxldCdzIGp1c3QgZ28gc3RyYWlnaHQgdG8gdGhlIHNvdXJjZSBhbmQgZ2V0IGEgY2xlYXJlciBwaWN0dXJlLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYHRyeV9vZmZsaW5lX25vZGVgIGluIGBtbS9tZW1vcnlfaG90cGx1Zy5jYCB0byBzZWUgaG93IGl0IG9wZXJhdGVzIGFuZCBpZiBteSBoeXBvdGhlc2VzIGFyb3VuZCBgQ09ORklHX05VTUFgIGFyZSBjb3JyZWN0LiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQzNzgsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6NTI6NTkuNTE3NTM1MjQxWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDYyODE1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0cnlfb2ZmbGluZV9ub2RlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL21lbW9yeV9ob3RwbHVnLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbWVtb3J5X2hvdHBsdWcuYz0yMTY0PXN0YXRpYyBpbnQgY2hlY2tfbm9fbWVtYmxvY2tfZm9yX25vZGVfY2Ioc3RydWN0IG1lbW9yeV9ibG9jayAqbWVtLCB2b2lkICphcmcpXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIxNzYtLyoqXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMTc3OiAqIHRyeV9vZmZsaW5lX25vZGVcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIxNzgtICogQG5pZDogdGhlIG5vZGUgSURcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjE4NC0gKi9cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIxODU6dm9pZCB0cnlfb2ZmbGluZV9ub2RlKGludCBuaWQpXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMTg2LXtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjIxOC19XFxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMjE5OkVYUE9SVF9TWU1CT0wodHJ5X29mZmxpbmVfbm9kZSk7XFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMjIwLVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYz0yMjQxPXN0YXRpYyBpbnQgdHJ5X3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSlcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjI4Ny1cXHRpZiAobmlkICE9IE5VTUFfTk9fTk9ERSlcXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIyODg6XFx0XFx0dHJ5X29mZmxpbmVfbm9kZShuaWQpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjI4OS1cXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMwMC0gKiBhbmQgb25saW5lL29mZmxpbmUgb3BlcmF0aW9ucyBiZWZvcmUgdGhpcyBjYWxsLCBhcyByZXF1aXJlZCBieVxcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjMwMTogKiB0cnlfb2ZmbGluZV9ub2RlKCkuXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzAyLSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzo1Mjo1OS41ODIxNzUzNjVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE3MDcyMjMyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBSZWFzb25pbmcgb24gTWVtb3J5IEhvdHBsdWcgYW5kIFZNIFN0YXRpc3RpY3MqKlxuXG5Pa2F5LCBzbyBgdHJ5X29mZmxpbmVfbm9kZWAgaXMgdGhlIGtleSBmdW5jdGlvbiBoZXJlLCBhbmQgaXQncyBiZWluZyBleHBvcnRlZC4gVGhlIGNvZGUgcmVxdWlyZXMgYENPTkZJR19NRU1PUllfSE9UUkVNT1ZFYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEknbGwgbmVlZCB0byBlbmFibGUgYm90aCBgTUVNT1JZX0hPVFBMVUdgIGFuZCBgTUVNT1JZX0hPVFJFTU9WRWAgZm9yIHRoaXMgdG8gd29yayBjb3JyZWN0bHkuXG5cbkxldCBtZSB0aGluayB0aHJvdWdoIHRoZSBpbXBsaWNhdGlvbnMuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2FsbCB0byBgc3luY192bV9zdGF0cygpYCB3aXRoaW4gYHRyeV9vZmZsaW5lX25vZGUoKWAuIFRoZSBwdXJwb3NlIG9mIHRoaXMgc2VlbXMgdG8gYmUgdG8gZW5zdXJlIHRoYXQgYW55IHBlbmRpbmcgcGVyLUNQVSBWTSBzdGF0aXN0aWNzIGFyZSBjb3JyZWN0bHkgaW5jb3Jwb3JhdGVkIGludG8gdGhlIGdsb2JhbCBjb3VudGVycyAqYmVmb3JlKiBhIE5VTUEgbm9kZSBnb2VzIG9mZmxpbmUuIFRoaXMgcHJldmVudHMgdGhlIHJlZ3VsYXIgVk0gc3RhdGlzdGljcyBmb2xkaW5nIG1lY2hhbmlzbSBmcm9tIG1pc3NpbmcgdGhlIG9mZmxpbmUgbm9kZSwgd2hpY2ggd291bGQgbGVhdmUgaXRzIHN0YXRzIHN0cmFuZGVkLiBJdOKAmXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGNvcmUgbWVtb3J5IGhvdHBsdWcgYW5kIFZNIHN0YXRpc3RpYyBsb2dpYy4gVGhlIGNyaXRpY2FsIHBvaW50IGlzLCB0aGlzIGlzIGV4cG9zZWQgdG8gdXNlcnNwYWNlIHRocm91Z2ggdGhlIHN5c2ZzIG1lbW9yeSBob3RwbHVnIGludGVyZmFjZXMuXG5cbkdpdmVuIHRoYXQgaXQgaW52b2x2ZXMgbWVtb3J5IGhvdHBsdWcgYW5kIHRoZSBwb3RlbnRpYWwgZm9yIGNvbmN1cnJlbnQgb3BlcmF0aW9ucywgZnV6emluZyB0aGlzIGFyZWEgc2VlbXMgbGlrZSBhIHZlcnkgZ29vZCBpZGVhLiBUaGVyZSBhcmUgbGlrZWx5IG9wcG9ydHVuaXRpZXMgdG8gaWRlbnRpZnkgcmFjZSBjb25kaXRpb25zIG9yIHNjaGVkdWxpbmcgcHJvYmxlbXMgdGhhdCBjb3VsZCBhcmlzZSBkdXJpbmcgdGhlIHByb2Nlc3Mgb2Ygb2ZmbGluaW5nIGEgbm9kZS5cblxuSSdsbCBrZWVwIGEgY2xvc2UgZXllIG9uIHRoZXNlIHN5bWJvbHM6IGB0cnlfb2ZmbGluZV9ub2RlYCwgYHN5bmNfdm1fc3RhdHNgLCBhbmQgYHZtc3RhdF9mb2xkX3dvcmtgLCBhcyB0aGV5IGFyZSB0aGUgY29yZSBjb21wb25lbnRzIG9mIHRoaXMgY2hhbmdlLlxuXG5Ob3csIGxldCdzIHNldCB0aGUgcmVzdWx0cyBhbmQgbW92ZSBmb3J3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTE3MCwiT3V0cHV0VG9rZW5zIjoxNzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6NTM6MDUuNzUyOTAxMTg0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIzODY2MTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FTU9SWV9IT1RQTFVHXCIsXG4gICAgXCJNRU1PUllfSE9UUkVNT1ZFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidHJ5X29mZmxpbmVfbm9kZVwiLFxuICAgIFwic3luY192bV9zdGF0c1wiLFxuICAgIFwidm1zdGF0X2ZvbGRfd29ya1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjYWxsIHRvIHN5bmNfdm1fc3RhdHMoKSBpbiB0cnlfb2ZmbGluZV9ub2RlKCkgdG8gZm9sZCBwZW5kaW5nIHBlci1jcHUgdm1zdGF0IGRpZmZzIGludG8gZ2xvYmFsIGNvdW50ZXJzIGJlZm9yZSBhIE5VTUEgbm9kZSBpcyBvZmZsaW5lZC4gVGhpcyBwcmV2ZW50cyB0aGUgcGVyaW9kaWMgdm1zdGF0IGZvbGQgZnJvbSBza2lwcGluZyB0aGUgb2ZmbGluZWQgbm9kZSBhbmQgb3JwaGFuaW5nIHRoZSByZXNpZHVhbCBzdGF0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBob3RwbHVnIGFuZCB2bXN0YXQgbG9naWMsIGFuZCBpdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHN5c2ZzIG1lbW9yeSBob3RwbHVnIGludGVyZmFjZXMuIEZ1enppbmcgdGhpcyBjb3VsZCB1bmNvdmVyIHJhY2UgY29uZGl0aW9ucyBvciBzY2hlZHVsaW5nIGlzc3VlcyBkdXJpbmcgbm9kZSBvZmZsaW5pbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNT1JZX0hPVFBMVUdcIixcbiAgICBcIk1FTU9SWV9IT1RSRU1PVkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0cnlfb2ZmbGluZV9ub2RlXCIsXG4gICAgXCJzeW5jX3ZtX3N0YXRzXCIsXG4gICAgXCJ2bXN0YXRfZm9sZF93b3JrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNhbGwgdG8gc3luY192bV9zdGF0cygpIGluIHRyeV9vZmZsaW5lX25vZGUoKSB0byBmb2xkIHBlbmRpbmcgcGVyLWNwdSB2bXN0YXQgZGlmZnMgaW50byBnbG9iYWwgY291bnRlcnMgYmVmb3JlIGEgTlVNQSBub2RlIGlzIG9mZmxpbmVkLiBUaGlzIHByZXZlbnRzIHRoZSBwZXJpb2RpYyB2bXN0YXQgZm9sZCBmcm9tIHNraXBwaW5nIHRoZSBvZmZsaW5lZCBub2RlIGFuZCBvcnBoYW5pbmcgdGhlIHJlc2lkdWFsIHN0YXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IGhvdHBsdWcgYW5kIHZtc3RhdCBsb2dpYywgYW5kIGl0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc3lzZnMgbWVtb3J5IGhvdHBsdWcgaW50ZXJmYWNlcy4gRnV6emluZyB0aGlzIGNvdWxkIHVuY292ZXIgcmFjZSBjb25kaXRpb25zIG9yIHNjaGVkdWxpbmcgaXNzdWVzIGR1cmluZyBub2RlIG9mZmxpbmluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdcljp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-27 07:46:58 +0000 UTC FinishedAt: 2026-06-27 07:53:07 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "840ef6c78e6a2f694b578ecb9063241c992aaa9e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMORY_HOTPLUG", "MEMORY_HOTREMOVE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "840ef6c78e6a2f694b578ecb9063241c992aaa9e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MEMORY_HOTPLUG", "MEMORY_HOTREMOVE" ], "series_id": "a34e8989-3cf6-440e-8e69-95a31744e718" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "try_offline_node", "sync_vm_stats", "vmstat_fold_work" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RSRU1PVkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0cnlfb2ZmbGluZV9ub2RlJiMzNDssCiAgICAmIzM0O3N5bmNfdm1fc3RhdHMmIzM0OywKICAgICYjMzQ7dm1zdGF0X2ZvbGRfd29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2FsbCB0byBzeW5jX3ZtX3N0YXRzKCkgaW4gdHJ5X29mZmxpbmVfbm9kZSgpIHRvIGZvbGQgcGVuZGluZyBwZXItY3B1IHZtc3RhdCBkaWZmcyBpbnRvIGdsb2JhbCBjb3VudGVycyBiZWZvcmUgYSBOVU1BIG5vZGUgaXMgb2ZmbGluZWQuIFRoaXMgcHJldmVudHMgdGhlIHBlcmlvZGljIHZtc3RhdCBmb2xkIGZyb20gc2tpcHBpbmcgdGhlIG9mZmxpbmVkIG5vZGUgYW5kIG9ycGhhbmluZyB0aGUgcmVzaWR1YWwgc3RhdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgaG90cGx1ZyBhbmQgdm1zdGF0IGxvZ2ljLCBhbmQgaXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzeXNmcyBtZW1vcnkgaG90cGx1ZyBpbnRlcmZhY2VzLiBGdXp6aW5nIHRoaXMgY291bGQgdW5jb3ZlciByYWNlIGNvbmRpdGlvbnMgb3Igc2NoZWR1bGluZyBpc3N1ZXMgZHVyaW5nIG5vZGUgb2ZmbGluaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjUyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjhhY2Y4NDgxNmFmYjYxNWIwOGQ5NTRmYjU4NjBmZGY0ZDZhOWU5M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVuIDI3IDA3OjUyOjAzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdm1zdGF0LmggYi9pbmNsdWRlL2xpbnV4L3Ztc3RhdC5oXG5pbmRleCAzYzljMjY2Y2Y3ODJhZC4uZWExMDE3NDI3ODExMWUgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3Ztc3RhdC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3Ztc3RhdC5oXG5AQCAtMjkzLDYgJiM0MzsyOTMsNyBAQCBleHRlcm4gdm9pZCBfX2RlY19ub2RlX3N0YXRlKHN0cnVjdCBwZ2xpc3RfZGF0YSAqLCBlbnVtIG5vZGVfc3RhdF9pdGVtKTtcbiBcbiB2b2lkIHF1aWV0X3Ztc3RhdCh2b2lkKTtcbiB2b2lkIGNwdV92bV9zdGF0c19mb2xkKGludCBjcHUpO1xuJiM0Mzt2b2lkIHN5bmNfdm1fc3RhdHModm9pZCk7XG4gdm9pZCByZWZyZXNoX3pvbmVfc3RhdF90aHJlc2hvbGRzKHZvaWQpO1xuIFxuIHZvaWQgZHJhaW5fem9uZXN0YXQoc3RydWN0IHpvbmUgKnpvbmUsIHN0cnVjdCBwZXJfY3B1X3pvbmVzdGF0ICopO1xuQEAgLTM5Nyw2ICYjNDM7Mzk4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIF9fZGVjX25vZGVfcGFnZV9zdGF0ZShzdHJ1Y3QgcGFnZSAqcGFnZSxcbiBcbiBzdGF0aWMgaW5saW5lIHZvaWQgcmVmcmVzaF96b25lX3N0YXRfdGhyZXNob2xkcyh2b2lkKSB7IH1cbiBzdGF0aWMgaW5saW5lIHZvaWQgY3B1X3ZtX3N0YXRzX2ZvbGQoaW50IGNwdSkgeyB9XG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBzeW5jX3ZtX3N0YXRzKHZvaWQpIHsgfVxuIHN0YXRpYyBpbmxpbmUgdm9pZCBxdWlldF92bXN0YXQodm9pZCkgeyB9XG4gc3RhdGljIGlubGluZSB2b2lkIHZtc3RhdF9mbHVzaF93b3JrcXVldWUodm9pZCkgeyB9XG4gXG5kaWZmIC0tZ2l0IGEvbW0vbWVtb3J5X2hvdHBsdWcuYyBiL21tL21lbW9yeV9ob3RwbHVnLmNcbmluZGV4IDdhYzE5ZmFiMjI2MzI0Li5kYWI0ODMxNjY3NDM5ZiAxMDA2NDRcbi0tLSBhL21tL21lbW9yeV9ob3RwbHVnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL21lbW9yeV9ob3RwbHVnLmNcbkBAIC0yMjA4LDggJiM0MzsyMjA4LDExIEBAIHZvaWQgdHJ5X29mZmxpbmVfbm9kZShpbnQgbmlkKVxuIFxuIFx0LypcbiBcdCAqIGFsbCBtZW1vcnkvY3B1IG9mIHRoaXMgbm9kZSBhcmUgcmVtb3ZlZCwgd2UgY2FuIG9mZmxpbmUgdGhpc1xuLVx0ICogbm9kZSBub3cuXG4mIzQzO1x0ICogbm9kZSBub3cuICBGb2xkIGFueSBwZW5kaW5nIHBlci1jcHUgdm1zdGF0IGRpZmZzIGludG8gdGhlIGdsb2JhbFxuJiM0MztcdCAqIGNvdW50ZXJzIGZpcnN0OiBvbmNlIHRoZSBub2RlIGxlYXZlcyB0aGUgb25saW5lIHNldCB0aGUgcGVyaW9kaWNcbiYjNDM7XHQgKiBmb2xkIHNraXBzIGl0LCBvcnBoYW5pbmcgdGhlIHJlc2lkdWFsIG9uIGEgbGF0ZXIgb25saW5lLlxuIFx0ICovXG4mIzQzO1x0c3luY192bV9zdGF0cygpO1xuIFx0bm9kZV9zZXRfb2ZmbGluZShuaWQpO1xuIFx0dW5yZWdpc3Rlcl9ub2RlKG5pZCk7XG4gfVxuZGlmZiAtLWdpdCBhL21tL3Ztc3RhdC5jIGIvbW0vdm1zdGF0LmNcbmluZGV4IGY1MzQ5NzJmNTE3ZGUwLi5hZDc3MzQzMjEyZDM3OCAxMDA2NDRcbi0tLSBhL21tL3Ztc3RhdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS92bXN0YXQuY1xuQEAgLTk0MSw2ICYjNDM7OTQxLDE2IEBAIHZvaWQgY3B1X3ZtX3N0YXRzX2ZvbGQoaW50IGNwdSlcbiBcdGZvbGRfZGlmZihnbG9iYWxfem9uZV9kaWZmLCBnbG9iYWxfbm9kZV9kaWZmKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIHZtc3RhdF9mb2xkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxuJiM0Mzt7XG4mIzQzO1x0cmVmcmVzaF9jcHVfdm1fc3RhdHMoZmFsc2UpO1xuJiM0Mzt9XG4mIzQzO1xuJiM0Mzt2b2lkIHN5bmNfdm1fc3RhdHModm9pZClcbiYjNDM7e1xuJiM0MztcdHNjaGVkdWxlX29uX2VhY2hfY3B1KHZtc3RhdF9mb2xkX3dvcmspO1xuJiM0Mzt9XG4mIzQzO1xuIC8qXG4gICogdGhpcyBpcyBvbmx5IGNhbGxlZCBpZiAhcG9wdWxhdGVkX3pvbmUoem9uZSksIHdoaWNoIGltcGxpZXMgbm8gb3RoZXIgdXNlcnMgb2ZcbiAgKiBwc2V0LVx1MDAzZXZtX3N0YXRfZGlmZltdIGV4aXN0LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjUyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01FTU9SWV9IT1RQTFVHJiMzNDssCiAgICAmIzM0O01FTU9SWV9IT1RSRU1PVkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0cnlfb2ZmbGluZV9ub2RlJiMzNDssCiAgICAmIzM0O3N5bmNfdm1fc3RhdHMmIzM0OywKICAgICYjMzQ7dm1zdGF0X2ZvbGRfd29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgY2FsbCB0byBzeW5jX3ZtX3N0YXRzKCkgaW4gdHJ5X29mZmxpbmVfbm9kZSgpIHRvIGZvbGQgcGVuZGluZyBwZXItY3B1IHZtc3RhdCBkaWZmcyBpbnRvIGdsb2JhbCBjb3VudGVycyBiZWZvcmUgYSBOVU1BIG5vZGUgaXMgb2ZmbGluZWQuIFRoaXMgcHJldmVudHMgdGhlIHBlcmlvZGljIHZtc3RhdCBmb2xkIGZyb20gc2tpcHBpbmcgdGhlIG9mZmxpbmVkIG5vZGUgYW5kIG9ycGhhbmluZyB0aGUgcmVzaWR1YWwgc3RhdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgaG90cGx1ZyBhbmQgdm1zdGF0IGxvZ2ljLCBhbmQgaXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzeXNmcyBtZW1vcnkgaG90cGx1ZyBpbnRlcmZhY2VzLiBGdXp6aW5nIHRoaXMgY291bGQgdW5jb3ZlciByYWNlIGNvbmRpdGlvbnMgb3Igc2NoZWR1bGluZyBpc3N1ZXMgZHVyaW5nIG5vZGUgb2ZmbGluaW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA2OGFjZjg0ODE2YWZiNjE1YjA4ZDk1NGZiNTg2MGZkZjRkNmE5ZTkzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdW4gMjcgMDc6NTI6MDMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3Ztc3RhdC5oIGIvaW5jbHVkZS9saW51eC92bXN0YXQuaAppbmRleCAzYzljMjY2Y2Y3ODJhZC4uZWExMDE3NDI3ODExMWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdm1zdGF0LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC92bXN0YXQuaApAQCAtMjkzLDYgJiM0MzsyOTMsNyBAQCBleHRlcm4gdm9pZCBfX2RlY19ub2RlX3N0YXRlKHN0cnVjdCBwZ2xpc3RfZGF0YSAqLCBlbnVtIG5vZGVfc3RhdF9pdGVtKTsKIAogdm9pZCBxdWlldF92bXN0YXQodm9pZCk7CiB2b2lkIGNwdV92bV9zdGF0c19mb2xkKGludCBjcHUpOwomIzQzO3ZvaWQgc3luY192bV9zdGF0cyh2b2lkKTsKIHZvaWQgcmVmcmVzaF96b25lX3N0YXRfdGhyZXNob2xkcyh2b2lkKTsKIAogdm9pZCBkcmFpbl96b25lc3RhdChzdHJ1Y3Qgem9uZSAqem9uZSwgc3RydWN0IHBlcl9jcHVfem9uZXN0YXQgKik7CkBAIC0zOTcsNiAmIzQzOzM5OCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX2RlY19ub2RlX3BhZ2Vfc3RhdGUoc3RydWN0IHBhZ2UgKnBhZ2UsCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCByZWZyZXNoX3pvbmVfc3RhdF90aHJlc2hvbGRzKHZvaWQpIHsgfQogc3RhdGljIGlubGluZSB2b2lkIGNwdV92bV9zdGF0c19mb2xkKGludCBjcHUpIHsgfQomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBzeW5jX3ZtX3N0YXRzKHZvaWQpIHsgfQogc3RhdGljIGlubGluZSB2b2lkIHF1aWV0X3Ztc3RhdCh2b2lkKSB7IH0KIHN0YXRpYyBpbmxpbmUgdm9pZCB2bXN0YXRfZmx1c2hfd29ya3F1ZXVlKHZvaWQpIHsgfQogCmRpZmYgLS1naXQgYS9tbS9tZW1vcnlfaG90cGx1Zy5jIGIvbW0vbWVtb3J5X2hvdHBsdWcuYwppbmRleCA3YWMxOWZhYjIyNjMyNC4uZGFiNDgzMTY2NzQzOWYgMTAwNjQ0Ci0tLSBhL21tL21lbW9yeV9ob3RwbHVnLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vbWVtb3J5X2hvdHBsdWcuYwpAQCAtMjIwOCw4ICYjNDM7MjIwOCwxMSBAQCB2b2lkIHRyeV9vZmZsaW5lX25vZGUoaW50IG5pZCkKIAogCS8qCiAJICogYWxsIG1lbW9yeS9jcHUgb2YgdGhpcyBub2RlIGFyZSByZW1vdmVkLCB3ZSBjYW4gb2ZmbGluZSB0aGlzCi0JICogbm9kZSBub3cuCiYjNDM7CSAqIG5vZGUgbm93LiAgRm9sZCBhbnkgcGVuZGluZyBwZXItY3B1IHZtc3RhdCBkaWZmcyBpbnRvIHRoZSBnbG9iYWwKJiM0MzsJICogY291bnRlcnMgZmlyc3Q6IG9uY2UgdGhlIG5vZGUgbGVhdmVzIHRoZSBvbmxpbmUgc2V0IHRoZSBwZXJpb2RpYwomIzQzOwkgKiBmb2xkIHNraXBzIGl0LCBvcnBoYW5pbmcgdGhlIHJlc2lkdWFsIG9uIGEgbGF0ZXIgb25saW5lLgogCSAqLwomIzQzOwlzeW5jX3ZtX3N0YXRzKCk7CiAJbm9kZV9zZXRfb2ZmbGluZShuaWQpOwogCXVucmVnaXN0ZXJfbm9kZShuaWQpOwogfQpkaWZmIC0tZ2l0IGEvbW0vdm1zdGF0LmMgYi9tbS92bXN0YXQuYwppbmRleCBmNTM0OTcyZjUxN2RlMC4uYWQ3NzM0MzIxMmQzNzggMTAwNjQ0Ci0tLSBhL21tL3Ztc3RhdC5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL3Ztc3RhdC5jCkBAIC05NDEsNiAmIzQzOzk0MSwxNiBAQCB2b2lkIGNwdV92bV9zdGF0c19mb2xkKGludCBjcHUpCiAJZm9sZF9kaWZmKGdsb2JhbF96b25lX2RpZmYsIGdsb2JhbF9ub2RlX2RpZmYpOwogfQogCiYjNDM7c3RhdGljIHZvaWQgdm1zdGF0X2ZvbGRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpCiYjNDM7ewomIzQzOwlyZWZyZXNoX2NwdV92bV9zdGF0cyhmYWxzZSk7CiYjNDM7fQomIzQzOwomIzQzO3ZvaWQgc3luY192bV9zdGF0cyh2b2lkKQomIzQzO3sKJiM0MzsJc2NoZWR1bGVfb25fZWFjaF9jcHUodm1zdGF0X2ZvbGRfd29yayk7CiYjNDM7fQomIzQzOwogLyoKICAqIHRoaXMgaXMgb25seSBjYWxsZWQgaWYgIXBvcHVsYXRlZF96b25lKHpvbmUpLCB3aGljaCBpbXBsaWVzIG5vIG90aGVyIHVzZXJzIG9mCiAgKiBwc2V0LSZndDt2bV9zdGF0X2RpZmZbXSBleGlzdC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDc6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM5NwoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDI0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBNZW1vcnkgSG90cGx1ZyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQmIzM5O3MgdG91Y2hpbmcgYG1tL21lbW9yeV9ob3RwbHVnLmNgIGFuZCBgbW0vdm1zdGF0LmNgLiBSaWdodCwgaW4gYG1tL21lbW9yeV9ob3RwbHVnLmNgLCBJIHNlZSBgdHJ5X29mZmxpbmVfbm9kZWAgY2FsbHMgYHN5bmNfdm1fc3RhdHMoKWAuIEFuZCB0aGVuLCBmbGlwcGluZyBvdmVyIHRvIGBtbS92bXN0YXQuY2AsIGBzeW5jX3ZtX3N0YXRzKClgIGlzIGltcGxlbWVudGVkIHdpdGggdGhhdCBgc2NoZWR1bGVfb25fZWFjaF9jcHUodm1zdGF0X2ZvbGRfd29yaylgIGNhbGwsIHdoaWNoIHRoZW4gZ29lcyB0byBgcmVmcmVzaF9jcHVfdm1fc3RhdHMoZmFsc2UpYC4KClRoaXMgbG9va3MgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBtZW1vcnkgaG90cGx1ZyBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgd2hlbiBvZmZsaW5pbmcgYSBOVU1BIG5vZGUuIFRoZSBxdWVzdGlvbiBub3cgYmVjb21lczogaXMgdGhpcyBwYXRjaCBmdXp6YWJsZT8gTWVtb3J5IGhvdHBsdWcgaXMgYSBjcml0aWNhbCBmZWF0dXJlLCBvYnZpb3VzbHksIGJ1dCBpdCYjMzk7cyB0eXBpY2FsbHkgdHJpZ2dlcmVkIGJ5IHN5c2ZzIGludGVyYWN0aW9ucyBvciBzcGVjaWZpYyBoYXJkd2FyZSBldmVudHMsIHJpZ2h0PyBDYW4gSSB0cmlnZ2VyIHRoaXMgZnJvbSB1c2Vyc3BhY2U/IFllcywgZGVmaW5pdGVseS4gSSBjYW4gdXNlIHN5c2ZzLCBzb21ldGhpbmcgbGlrZSBgL3N5cy9kZXZpY2VzL3N5c3RlbS9ub2RlL25vZGVYL29ubGluZWAgb3IgZXZlbiBtZW1vcnkgYmxvY2tzLgoKQW5kLCBjYW4gdGhpcyBldmVuIGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSSB0aGluayBpdCBpcywgbWVtb3J5IGhvdHBsdWcgaXMgc3VwcG9ydGVkIGluIFFFTVUsIHNvIHRoYXQgc2hvdWxkbiYjMzk7dCBiZSBhIHByb2JsZW0uCgpMZXQgbWUganVzdCBjaGVjayBgdHJ5X29mZmxpbmVfbm9kZWAgaW4gYG1tL21lbW9yeV9ob3RwbHVnLmNgIGFnYWluLi4uIGdvdHRhIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgY29udGV4dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0cnlfb2ZmbGluZV9ub2RlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYWNwaS9hY3BpX3Byb2Nlc3Nvci5jPTQ3Nj1zdGF0aWMgdm9pZCBhY3BpX3Byb2Nlc3Nvcl9wb3N0X2VqZWN0KHN0cnVjdCBhY3BpX2RldmljZSAqZGV2aWNlKVxuLS1cbmRyaXZlcnMvYWNwaS9hY3BpX3Byb2Nlc3Nvci5jLTUxMS1cbmRyaXZlcnMvYWNwaS9hY3BpX3Byb2Nlc3Nvci5jOjUxMjpcdHRyeV9vZmZsaW5lX25vZGUoY3B1X3RvX25vZGUocHItXHUwMDNlaWQpKTtcbmRyaXZlcnMvYWNwaS9hY3BpX3Byb2Nlc3Nvci5jLTUxMy1cbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9MjU5PXN0YXRpYyBpbmxpbmUgdm9pZCBwZ2RhdF9yZXNpemVfaW5pdChzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KSB7fVxuLS1cbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yNjMtXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MjY0OmV4dGVybiB2b2lkIHRyeV9vZmZsaW5lX25vZGUoaW50IG5pZCk7XG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjY1LWV4dGVybiBpbnQgb2ZmbGluZV9wYWdlcyh1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcyxcbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9MjY5PWV4dGVybiBpbnQgb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKTtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjcxLSNlbHNlXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MjcyOnN0YXRpYyBpbmxpbmUgdm9pZCB0cnlfb2ZmbGluZV9ub2RlKGludCBuaWQpIHt9XG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjczLVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmM9MjE2ND1zdGF0aWMgaW50IGNoZWNrX25vX21lbWJsb2NrX2Zvcl9ub2RlX2NiKHN0cnVjdCBtZW1vcnlfYmxvY2sgKm1lbSwgdm9pZCAqYXJnKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMjE3Ni0vKipcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjE3NzogKiB0cnlfb2ZmbGluZV9ub2RlXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIxNzgtICogQG5pZDogdGhlIG5vZGUgSURcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIxODQtICovXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIxODU6dm9pZCB0cnlfb2ZmbGluZV9ub2RlKGludCBuaWQpXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIxODYte1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMjIxOC19XG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIyMTk6RVhQT1JUX1NZTUJPTCh0cnlfb2ZmbGluZV9ub2RlKTtcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjIyMC1cbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTIyNDE9c3RhdGljIGludCB0cnlfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMjI4Ny1cdGlmIChuaWQgIT0gTlVNQV9OT19OT0RFKVxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMjg4Olx0XHR0cnlfb2ZmbGluZV9ub2RlKG5pZCk7XG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyODktXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzAwLSAqIGFuZCBvbmxpbmUvb2ZmbGluZSBvcGVyYXRpb25zIGJlZm9yZSB0aGlzIGNhbGwsIGFzIHJlcXVpcmVkIGJ5XG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIzMDE6ICogdHJ5X29mZmxpbmVfbm9kZSgpLlxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzAyLSAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2OTUKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE1lbW9yeSBSZW1vdmFsIFBhdGhzKioKCk9rYXksIHNvIEkmIzM5O20gdHJhY2luZyB0aGUgbWVtb3J5IHJlbW92YWwgcHJvY2VzcyBpbiB0aGUga2VybmVsLCBhbmQgaXQgbG9va3MgbGlrZSBgdHJ5X29mZmxpbmVfbm9kZWAgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGluIGEgY291cGxlIG9mIGtleSBhcmVhcy4gSSBzZWUgdGhhdCBpdCYjMzk7cyBjYWxsZWQgZnJvbSB0d28gZGlzdGluY3QgZnVuY3Rpb25zOiBgdHJ5X3JlbW92ZV9tZW1vcnlgIHdpdGhpbiBgbW0vbWVtb3J5X2hvdHBsdWcuY2Ag4oCTIHdoaWNoIGlzIGV4cGVjdGVkIOKAkyBhbmQgc3VycHJpc2luZ2x5LCBmcm9tIGBhY3BpX3Byb2Nlc3Nvcl9wb3N0X2VqZWN0YCBpbiBgZHJpdmVycy9hY3BpL2FjcGlfcHJvY2Vzc29yLmNgLiBUaGF0IEFDUEkgY2FsbCBpcyBpbnRlcmVzdGluZywgaXQgaW1wbGllcyBoYXJkd2FyZSByZW1vdmFsIG9mIG1lbW9yeSBpcyB0aWVkIGludG8gcHJvY2Vzc29yIHJlbW92YWwgZXZlbnRzIHNvbWVob3cuCgpEaWdnaW5nIGRlZXBlciBpbnRvIHRoZSBjYWxsaW5nIHN0cnVjdHVyZSwgYHRyeV9yZW1vdmVfbWVtb3J5YCBpdHNlbGYgaXMgY2FsbGVkIGJ5IGJvdGggYG9mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnlgIGFuZCBqdXN0IHBsYWluIGByZW1vdmVfbWVtb3J5YC4gQW5kICp0aGF0KiBgcmVtb3ZlX21lbW9yeWAgZnVuY3Rpb24gaXMgZXhwb3J0ZWQsIHdoaWNoIG1lYW5zIGl0JiMzOTtzIGEgcHVibGljbHkgYWNjZXNzaWJsZSBpbnRlcmZhY2UgZm9yIG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdGhhdCBsaWtlbHkgbWVhbnMgYSB2YXJpZXR5IG9mIGRldmljZSBkcml2ZXJzIHJlbHkgb24gaXQgdG8gZ3JhY2VmdWxseSBoYW5kbGUgbWVtb3J5IGJlaW5nIHRha2VuIG9mZmxpbmUuIEFuZCBpbmRlZWQsIHRoZSB0ZXh0IG1lbnRpb25zIHRoYXQgaXTigJlzIGJlaW5nIHVzZWQgYnkgdGhpbmdzIGxpa2UgdmlydGlvLW1lbSwgZGF4LCBhbmQgQUNQSS4KCkkgc2hvdWxkIGNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgdHJ5X3JlbW92ZV9tZW1vcnlgIGl0c2VsZiBpbiBgbW0vbWVtb3J5X2hvdHBsdWcuY2Agbm93IHRvIHVuZGVyc3RhbmQgdGhlIGxvZ2ljLiBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIHRoaXMgb3BlcmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RyeV9yZW1vdmVfbWVtb3J5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21lbW9yeV9ob3RwbHVnLmM9MjIyMT1zdGF0aWMgaW50IG1lbW9yeV9ibG9ja3NfaGF2ZV9hbHRtYXBzKHU2NCBzdGFydCwgdTY0IHNpemUpXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMjQwLVxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMjQxOnN0YXRpYyBpbnQgdHJ5X3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSlcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjI0Mi17XG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYz0yMzAzPXZvaWQgX19yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzA5LVx0ICovXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIzMTA6XHRpZiAodHJ5X3JlbW92ZV9tZW1vcnkoc3RhcnQsIHNpemUpKVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzExLVx0XHRCVUcoKTtcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTIzMTg9aW50IHJlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSlcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIzMjItXHRsb2NrX2RldmljZV9ob3RwbHVnKCk7XG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIzMjM6XHRyYyA9IHRyeV9yZW1vdmVfbWVtb3J5KHN0YXJ0LCBzaXplKTtcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMyNC1cdHVubG9ja19kZXZpY2VfaG90cGx1ZygpO1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmM9MjM4Mz1pbnQgb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMjQxOC1cdGlmICghcmMpIHtcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjQxOTpcdFx0cmMgPSB0cnlfcmVtb3ZlX21lbW9yeShzdGFydCwgc2l6ZSk7XG5tbS9tZW1vcnlfaG90cGx1Zy5jLTI0MjAtXHRcdGlmIChyYylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTYwCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTQ2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIE1lbW9yeSBSZW1vdmFsIEVudHJ5IFBvaW50cyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uIHRoZSBmdW5jdGlvbnMgYHJlbW92ZV9tZW1vcnlgIGFuZCBgb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeWAg4oCTIHRob3NlIGFyZSB0aGUga2V5IGVudHJ5IHBvaW50cyBmb3IgbWVtb3J5IHJlbW92YWwuIE15IHByaW1hcnkgcXVlc3Rpb24gaXMgd2hldGhlciB0aGVzZSBhcmUgZXZlbiAqYWNjZXNzaWJsZSogZnJvbSB1c2Vyc3BhY2UuIEFyZSB0aGV5IGRpcmVjdGx5IGV4cG9zZWQsIG9yIGFyZSB0aGV5IGJ1cmllZCBiZWhpbmQgb3RoZXIgbWVjaGFuaXNtcz8KCkkgbmVlZCB0byBjb25zaWRlciB0aGUgY29udGV4dCBpbiB3aGljaCBtZW1vcnkgaG90cGx1ZyBldmVudHMgYXJlIHRyaWdnZXJlZC4gSSBrbm93IGl0IGNhbiBiZSBpbml0aWF0ZWQgdGhyb3VnaCBBQ1BJIGV2ZW50cywgdmlydGlvLW1lbSwgb3IgZXZlbiBkYXguIFRoZSBxdWVzdGlvbiBpcywgY2FuICpzeXprYWxsZXIqIGJlIHVzZWQgdG8gdHJpZ2dlciBvbmUgb2YgdGhlc2UgaG90cGx1Z2dpbmcgZXZlbnRzIHdoaWNoIHdpbGwgdGhlbiwgaG9wZWZ1bGx5LCBsZWFkIHRvIHRoZSByZW1vdmFsIG9mIG1lbW9yeT8KClN5emthbGxlciBjYW4gdHJpZ2dlciBtZW1vcnkgaG90cGx1ZyBvcGVyYXRpb25zLCBzcGVjaWZpY2FsbHkgaWYgaXQgaGFzIGFjY2VzcyB0byBsb2NhdGlvbnMgbGlrZSBgL3N5cy9kZXZpY2VzL3N5c3RlbS9tZW1vcnkvbWVtb3J5WC9zdGF0ZWAuIEJ1dCBmcm9tIG15IGV4cGVyaWVuY2UsIHRoYXQgb2Z0ZW4gcmVzdWx0cyBpbiBzaW1wbHkgb2ZmbGluaW5nIGFuZCBvbmxpbmluZyBtZW1vcnkgYmxvY2tzIOKAkyBub3QgYWN0dWFsICpyZW1vdmFsKi4gVGhpcyBpcyBhIGNydWNpYWwgZGlzdGluY3Rpb24uCgpXYWl0Li4uIHNvbWV0aGluZyBjbGlja2VkLiBJIHJlbWVtYmVyIGB0cnlfb2ZmbGluZV9ub2RlYCBnZXRzIGNhbGxlZCB3aGVuIGEgbm9kZSBnb2VzIG9mZmxpbmUuIE5vdywgdGhlIGtleSBpcyB0byBkZXRlcm1pbmUgaWYgYHRyeV9vZmZsaW5lX25vZGVgIGNhbiBiZSByZWFjaGVkIGFuZCB0cmlnZ2VyZWQgdmlhIHN5c2ZzLiBUaGlzIGlzIHdoZXJlIEkmIzM5O2xsIGZvY3VzIG15IGludmVzdGlnYXRpb24gbm93LiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBwYXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jPTcyND1zdGF0aWMgaW50IHZpcnRpb19tZW1fc2JtX3JlbW92ZV9tYihzdHJ1Y3QgdmlydGlvX21lbSAqdm0sIHVuc2lnbmVkIGxvbmcgbWJfaWQpXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTczOS0gKi9cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo3NDA6c3RhdGljIGludCB2aXJ0aW9fbWVtX29mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkoc3RydWN0IHZpcnRpb19tZW0gKnZtLFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTc0MS1cdFx0XHRcdFx0XHR1aW50NjRfdCBhZGRyLFxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03NDktXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6NzUwOlx0cmMgPSBvZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KGFkZHIsIHNpemUpO1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTc1MS1cdGlmICghcmMpIHtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzY5LS8qXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6NzcwOiAqIFNlZSB2aXJ0aW9fbWVtX29mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkoKTogVHJ5IG9mZmxpbmluZyBhbmQgcmVtb3ZpbmdcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03NzEtICogYSBzaW5nbGUgTGludXggbWVtb3J5IGJsb2NrLlxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz03NzM9c3RhdGljIGludCB2aXJ0aW9fbWVtX3NibV9vZmZsaW5lX2FuZF9yZW1vdmVfbWIoc3RydWN0IHZpcnRpb19tZW0gKnZtLFxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03NzgtXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6Nzc5Olx0cmV0dXJuIHZpcnRpb19tZW1fb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSh2bSwgYWRkciwgc2l6ZSk7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzgwLX1cbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9Nzg4PXN0YXRpYyBpbnQgdmlydGlvX21lbV9zYm1fdHJ5X3JlbW92ZV91bnBsdWdnZWRfbWIoc3RydWN0IHZpcnRpb19tZW0gKnZtLFxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03OTktXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6ODAwOlx0Lyogb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSgpIHdvcmtzIGZvciBvbmxpbmUgYW5kIG9mZmxpbmUgbWVtb3J5LiAqL1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTgwMS1cdG11dGV4X3VubG9jayhcdTAwMjZ2bS1cdTAwM2Vob3RwbHVnX211dGV4KTtcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtODEwLS8qXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6ODExOiAqIFNlZSB2aXJ0aW9fbWVtX29mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkoKTogVHJ5IHRvIG9mZmxpbmUgYW5kIHJlbW92ZSBhXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtODEyLSAqIGFsbCBMaW51eCBtZW1vcnkgYmxvY2tzIGNvdmVyZWQgYnkgdGhlIGJpZyBibG9jay5cbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9ODE0PXN0YXRpYyBpbnQgdmlydGlvX21lbV9iYm1fb2ZmbGluZV9hbmRfcmVtb3ZlX2JiKHN0cnVjdCB2aXJ0aW9fbWVtICp2bSxcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtODE5LVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjgyMDpcdHJldHVybiB2aXJ0aW9fbWVtX29mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkodm0sIGFkZHIsIHNpemUpO1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTgyMS19XG4tLVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oPTI2OD1leHRlcm4gdm9pZCBfX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSk7XG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MjY5OmV4dGVybiBpbnQgb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKTtcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yNzAtXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYz0yMzU5PXN0YXRpYyBpbnQgdHJ5X3Jlb25saW5lX21lbW9yeV9ibG9jayhzdHJ1Y3QgbWVtb3J5X2Jsb2NrICptZW0sIHZvaWQgKmFyZylcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIzODItICovXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIzODM6aW50IG9mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSlcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjM4NC17XG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yNDM3LX1cbm1tL21lbW9yeV9ob3RwbHVnLmM6MjQzODpFWFBPUlRfU1lNQk9MX0dQTChvZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KTtcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjQzOS0jZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RSRU1PVkUgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MDIxCgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIE1lbW9yeSBNYW5hZ2VtZW50IExhYnlyaW50aCoqCgpPa2F5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBtZW1vcnkgbWFuYWdlbWVudCBhc3BlY3Qgb2YgdGhpcyBzeXN0ZW0uIFdlJiMzOTtyZSBjbGVhcmx5IGRlYWxpbmcgd2l0aCBzb21lIGZvcm0gb2YgcGVyc2lzdGVudCBzdG9yYWdlIG9yIHN0YXRlLiAgVGhlIGN1cnJlbnQgYXBwcm9hY2ggaGFzIGxpa2VseSBjb25zaWRlcmVkIHNldmVyYWwgbWV0aG9kcywgYnV0IHdoYXQgYWJvdXQgYSBwYXJ0aWN1bGFyIGFwcHJvYWNoLCBpbiB0aGlzIGluc3RhbmNlPyBJJiMzOTttIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIHRoZSBjb21tYW5kIGFuZCBjb25jZXB0IG9mIGByZW1vdmVfbWVtb3J5YC4gVGhpcyBzdWdnZXN0cyB3ZSYjMzk7cmUgbm90IGp1c3QgYXBwZW5kaW5nIGRhdGEgb3Igb3ZlcndyaXRpbmcgaW4tcGxhY2UuIFdlIG5lZWQgdG8gY29uc2lkZXIgaG93IHRoaXMgZnVuY3Rpb24gd291bGQgaW1wYWN0IHRoZSBvdmVyYWxsIHN5c3RlbS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gZXZhbHVhdGUgdGhlIGltcGxpY2F0aW9ucyBvZiByZW1vdmFsLiBGb3IgZXhhbXBsZSwgd2hhdCB3b3VsZCBiZSB0aGUgaW1wYWN0IGluIHRlcm1zIG9mIGNhc2NhZGluZyBlZmZlY3RzPyBBcmUgdGhlcmUgYW55IGRlcGVuZGVuY2llcyBvbiB0aGUgZGF0YSBiZWluZyByZW1vdmVkPyBIb3cgZG9lcyBpdCBpbnRlcmFjdCB3aXRoIGFueSBjYWNoaW5nIG9yIGluZGV4aW5nIG1lY2hhbmlzbXMgdGhhdCBtaWdodCBiZSBpbiBwbGFjZT8gSSBuZWVkIHRvIHRoaW5rIHRoaXMgdGhyb3VnaCBjYXJlZnVsbHksIGVzcGVjaWFsbHkgcmVnYXJkaW5nIGNvbnNpc3RlbmN5IGFuZCBhdm9pZGluZyBkYXRhIGNvcnJ1cHRpb24gb3Igb3JwaGFuZWQgcmVmZXJlbmNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDc6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVtb3ZlX21lbW9yeSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTA4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5hcmNoL2FybTY0L21tL21tdS5jPTE5ODQ9aW50IGFyY2hfYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLFxuLS1cbmFyY2gvYXJtNjQvbW0vbW11LmMtMjAxOC1cbmFyY2gvYXJtNjQvbW0vbW11LmM6MjAxOTp2b2lkIGFyY2hfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcbmFyY2gvYXJtNjQvbW0vbW11LmMtMjAyMC1cdFx0XHRzdHJ1Y3QgZGV2X3BhZ2VtYXAgKnBnbWFwKVxuLS1cbmFyY2gvbG9vbmdhcmNoL21tL2luaXQuYz0xMDc9aW50IGFyY2hfYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBzdHJ1Y3QgbWhwX3BhcmFtcyAqcGFyYW1zKVxuLS1cbmFyY2gvbG9vbmdhcmNoL21tL2luaXQuYy0xMjEtXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmM6MTIyOnZvaWQgYXJjaF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTEyMy1cdFx0XHRzdHJ1Y3QgZGV2X3BhZ2VtYXAgKnBnbWFwKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9tZW0uYz0xNDU9aW50IF9fcmVmIGFyY2hfYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9tZW0uYy0xNjAtXG5hcmNoL3Bvd2VycGMvbW0vbWVtLmM6MTYxOnZvaWQgX19yZWYgYXJjaF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxuYXJjaC9wb3dlcnBjL21tL21lbS5jLTE2Mi1cdFx0XHQgICAgICBzdHJ1Y3QgZGV2X3BhZ2VtYXAgKnBnbWFwKVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jPTIzMz1zdGF0aWMgaW50IHBzZXJpZXNfcmVtb3ZlX21lbWJsb2NrKHVuc2lnbmVkIGxvbmcgYmFzZSwgdW5zaWduZWQgbG9uZyBtZW1ibG9ja19zaXplKVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jLTI0OC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHNlY3Rpb25zX3Blcl9ibG9jazsgaSYjNDM7JiM0MzspIHtcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jOjI0OTpcdFx0X19yZW1vdmVfbWVtb3J5KGJhc2UsIE1JTl9NRU1PUllfQkxPQ0tfU0laRSk7XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYy0yNTAtXHRcdGJhc2UgJiM0Mzs9IE1JTl9NRU1PUllfQkxPQ0tfU0laRTtcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYz0zMDI9c3RhdGljIGludCBkbHBhcl9yZW1vdmVfbG1iKHN0cnVjdCBkcm1lbV9sbWIgKmxtYilcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYy0zMTktXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYzozMjA6XHRfX3JlbW92ZV9tZW1vcnkobG1iLVx1MDAzZWJhc2VfYWRkciwgbWVtb3J5X2Jsb2NrX3NpemUpO1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2hvdHBsdWctbWVtb3J5LmMtMzIxLVx0bWVtb3J5X2Jsb2NrX3B1dChtZW1fYmxvY2spO1xuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jPTU2ND1zdGF0aWMgaW50IGRscGFyX2FkZF9sbWIoc3RydWN0IGRybWVtX2xtYiAqbG1iKVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jLTU5Ni1cdFx0cHJfZXJyKFwmIzM0O0ZhaWxlZCB0byBvbmxpbmUgTE1CIDB4JXggb24gbm9kZSAldVxcblwmIzM0OywgbG1iLVx1MDAzZWRyY19pbmRleCwgbmlkKTtcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jOjU5NzpcdFx0X19yZW1vdmVfbWVtb3J5KGxtYi1cdTAwM2ViYXNlX2FkZHIsIGJsb2NrX3N6KTtcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jLTU5OC1cdFx0aW52YWxpZGF0ZV9sbWJfYXNzb2NpYXRpdml0eV9pbmRleChsbWIpO1xuLS1cbmFyY2gvcmlzY3YvbW0vaW5pdC5jPTE3MTM9aW50IF9fcmVmIGFyY2hfYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBzdHJ1Y3QgbWhwX3BhcmFtcyAqcGFyYW1zKVxuLS1cbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTE3MzEtXG5hcmNoL3Jpc2N2L21tL2luaXQuYzoxNzMyOnZvaWQgX19yZWYgYXJjaF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTczMy1cdFx0XHQgICAgICBzdHJ1Y3QgZGV2X3BhZ2VtYXAgKnBnbWFwKVxuLS1cbmFyY2gvczM5MC9tbS9pbml0LmM9MjYwPWludCBhcmNoX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSxcbi0tXG5hcmNoL3MzOTAvbW0vaW5pdC5jLTI4MC1cbmFyY2gvczM5MC9tbS9pbml0LmM6MjgxOnZvaWQgYXJjaF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxuYXJjaC9zMzkwL21tL2luaXQuYy0yODItXHRcdFx0c3RydWN0IGRldl9wYWdlbWFwICpwZ21hcClcbi0tXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM9MTI5NT1rZXJuZWxfcGh5c2ljYWxfbWFwcGluZ19yZW1vdmUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG4tLVxuYXJjaC94ODYvbW0vaW5pdF82NC5jLTEzMDItXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM6MTMwMzp2b2lkIF9fcmVmIGFyY2hfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcbmFyY2gveDg2L21tL2luaXRfNjQuYy0xMzA0LVx0XHRcdCAgICAgIHN0cnVjdCBkZXZfcGFnZW1hcCAqcGdtYXApXG4tLVxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jPTE2OD1zdGF0aWMgaW50IGFjcGlfbWVtb3J5X2VuYWJsZV9kZXZpY2Uoc3RydWN0IGFjcGlfbWVtb3J5X2RldmljZSAqbWVtX2RldmljZSlcbi0tXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmMtMjUyLVxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jOjI1MzpzdGF0aWMgdm9pZCBhY3BpX21lbW9yeV9yZW1vdmVfbWVtb3J5KHN0cnVjdCBhY3BpX21lbW9yeV9kZXZpY2UgKm1lbV9kZXZpY2UpXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmMtMjU0LXtcbi0tXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmMtMjYxLVx0XHRhY3BpX3VuYmluZF9tZW1vcnlfYmxvY2tzKGluZm8pO1xuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jOjI2MjpcdFx0X19yZW1vdmVfbWVtb3J5KGluZm8tXHUwMDNlc3RhcnRfYWRkciwgaW5mby1cdTAwM2VsZW5ndGgpO1xuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jLTI2My1cdFx0bGlzdF9kZWwoXHUwMDI2aW5mby1cdTAwM2VsaXN0KTtcbi0tXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmM9MzI1PXN0YXRpYyB2b2lkIGFjcGlfbWVtb3J5X2RldmljZV9yZW1vdmUoc3RydWN0IGFjcGlfZGV2aWNlICpkZXZpY2UpXG4tLVxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jLTMzMi1cdG1lbV9kZXZpY2UgPSBhY3BpX2RyaXZlcl9kYXRhKGRldmljZSk7XG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmM6MzMzOlx0YWNwaV9tZW1vcnlfcmVtb3ZlX21lbW9yeShtZW1fZGV2aWNlKTtcbmRyaXZlcnMvYWNwaS9hY3BpX21lbWhvdHBsdWcuYy0zMzQtXHRhY3BpX21lbW9yeV9kZXZpY2VfZnJlZShtZW1fZGV2aWNlKTtcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9NzgxPXN0YXRpYyBpbnQgYWRkX21lbW9yeV9ibG9jayh1bnNpZ25lZCBsb25nIGJsb2NrX2lkLCBpbnQgbmlkLCB1bnNpZ25lZCBsb25nIHN0YXRlLFxuLS1cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy04MjYtXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6ODI3OnN0YXRpYyB2b2lkIHJlbW92ZV9tZW1vcnlfYmxvY2soc3RydWN0IG1lbW9yeV9ibG9jayAqbWVtb3J5KVxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTgyOC17XG4tLVxuZHJpdmVycy9iYXNlL21lbW9yeS5jPTg1MT1pbnQgY3JlYXRlX21lbW9yeV9ibG9ja19kZXZpY2VzKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgc2l6ZSxcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtODc2LVx0XHRcdFx0Y29udGludWU7XG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6ODc3Olx0XHRcdHJlbW92ZV9tZW1vcnlfYmxvY2sobWVtKTtcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy04NzgtXHRcdH1cbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtODg5LSAqL1xuZHJpdmVycy9iYXNlL21lbW9yeS5jOjg5MDp2b2lkIHJlbW92ZV9tZW1vcnlfYmxvY2tfZGV2aWNlcyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIHNpemUpXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtODkxLXtcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtOTA2LVx0XHR1bnJlZ2lzdGVyX21lbW9yeV9ibG9ja191bmRlcl9ub2RlcyhtZW0pO1xuZHJpdmVycy9iYXNlL21lbW9yeS5jOjkwNzpcdFx0cmVtb3ZlX21lbW9yeV9ibG9jayhtZW0pO1xuZHJpdmVycy9iYXNlL21lbW9yeS5jLTkwOC1cdH1cbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2FncC5oPTk3PXN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciB7XG4tLVxuZHJpdmVycy9jaGFyL2FncC9hZ3AuaC0xMTQtXHRpbnQgKCppbnNlcnRfbWVtb3J5KShzdHJ1Y3QgYWdwX21lbW9yeSAqLCBvZmZfdCwgaW50KTtcbmRyaXZlcnMvY2hhci9hZ3AvYWdwLmg6MTE1Olx0aW50ICgqcmVtb3ZlX21lbW9yeSkoc3RydWN0IGFncF9tZW1vcnkgKiwgb2ZmX3QsIGludCk7XG5kcml2ZXJzL2NoYXIvYWdwL2FncC5oLTExNi1cdHN0cnVjdCBhZ3BfbWVtb3J5ICooKmFsbG9jX2J5X3R5cGUpIChzaXplX3QsIGludCk7XG4tLVxuZHJpdmVycy9jaGFyL2FncC9hZ3AuaD0xOTI9aW50IGFncF9nZW5lcmljX2luc2VydF9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKm1lbSwgb2ZmX3QgcGdfc3RhcnQsIGludCB0eXBlKTtcbmRyaXZlcnMvY2hhci9hZ3AvYWdwLmg6MTkzOmludCBhZ3BfZ2VuZXJpY19yZW1vdmVfbWVtb3J5KHN0cnVjdCBhZ3BfbWVtb3J5ICptZW0sIG9mZl90IHBnX3N0YXJ0LCBpbnQgdHlwZSk7XG5kcml2ZXJzL2NoYXIvYWdwL2FncC5oLTE5NC1zdHJ1Y3QgYWdwX21lbW9yeSAqYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZShzaXplX3QgcGFnZV9jb3VudCwgaW50IHR5cGUpO1xuLS1cbmRyaXZlcnMvY2hhci9hZ3AvYWxpLWFncC5jPTIwMj1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIGFsaV9nZW5lcmljX2JyaWRnZSA9IHtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2FsaS1hZ3AuYy0yMTgtXHQuaW5zZXJ0X21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX2luc2VydF9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL2FsaS1hZ3AuYzoyMTk6XHQucmVtb3ZlX21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL2FsaS1hZ3AuYy0yMjAtXHQuYWxsb2NfYnlfdHlwZVx0XHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXG4tLVxuZHJpdmVycy9jaGFyL2FncC9hbGktYWdwLmM9MjI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgYWxpX20xNTQxX2JyaWRnZSA9IHtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2FsaS1hZ3AuYy0yNDItXHQuaW5zZXJ0X21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX2luc2VydF9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL2FsaS1hZ3AuYzoyNDM6XHQucmVtb3ZlX21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL2FsaS1hZ3AuYy0yNDQtXHQuYWxsb2NfYnlfdHlwZVx0XHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXG4tLVxuZHJpdmVycy9jaGFyL2FncC9hbHBoYS1hZ3AuYz04ND1zdGF0aWMgaW50IGFscGhhX2NvcmVfYWdwX2luc2VydF9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKm1lbSwgb2ZmX3QgcGdfc3RhcnQsXG4tLVxuZHJpdmVycy9jaGFyL2FncC9hbHBoYS1hZ3AuYy0xMDUtXG5kcml2ZXJzL2NoYXIvYWdwL2FscGhhLWFncC5jOjEwNjpzdGF0aWMgaW50IGFscGhhX2NvcmVfYWdwX3JlbW92ZV9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKm1lbSwgb2ZmX3QgcGdfc3RhcnQsXG5kcml2ZXJzL2NoYXIvYWdwL2FscGhhLWFncC5jLTEwNy1cdFx0XHRcdFx0aW50IHR5cGUpXG4tLVxuZHJpdmVycy9jaGFyL2FncC9hbHBoYS1hZ3AuYz0xMjI9c3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIGFscGhhX2NvcmVfYWdwX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2FscGhhLWFncC5jLTEzOS1cdC5pbnNlcnRfbWVtb3J5XHRcdD0gYWxwaGFfY29yZV9hZ3BfaW5zZXJ0X21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3AvYWxwaGEtYWdwLmM6MTQwOlx0LnJlbW92ZV9tZW1vcnlcdFx0PSBhbHBoYV9jb3JlX2FncF9yZW1vdmVfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC9hbHBoYS1hZ3AuYy0xNDEtXHQuYWxsb2NfYnlfdHlwZVx0XHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXG4tLVxuZHJpdmVycy9jaGFyL2FncC9hbWQtazctYWdwLmM9Mjg0PXN0YXRpYyBpbnQgYW1kX2luc2VydF9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKm1lbSwgb2ZmX3QgcGdfc3RhcnQsIGludCB0eXBlKVxuLS1cbmRyaXZlcnMvY2hhci9hZ3AvYW1kLWs3LWFncC5jLTMyNS1cbmRyaXZlcnMvY2hhci9hZ3AvYW1kLWs3LWFncC5jOjMyNjpzdGF0aWMgaW50IGFtZF9yZW1vdmVfbWVtb3J5KHN0cnVjdCBhZ3BfbWVtb3J5ICptZW0sIG9mZl90IHBnX3N0YXJ0LCBpbnQgdHlwZSlcbmRyaXZlcnMvY2hhci9hZ3AvYW1kLWs3LWFncC5jLTMyNy17XG4tLVxuZHJpdmVycy9jaGFyL2FncC9hbWQtazctYWdwLmM9MzYzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgYW1kX2lyb25nYXRlX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2FtZC1rNy1hZ3AuYy0zNzktXHQuaW5zZXJ0X21lbW9yeVx0XHQ9IGFtZF9pbnNlcnRfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC9hbWQtazctYWdwLmM6MzgwOlx0LnJlbW92ZV9tZW1vcnlcdFx0PSBhbWRfcmVtb3ZlX21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3AvYW1kLWs3LWFncC5jLTM4MS1cdC5hbGxvY19ieV90eXBlXHRcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2FtZDY0LWFncC5jPTIxNj1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIGFtZF84MTUxX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2FtZDY0LWFncC5jLTIzMi1cdC5pbnNlcnRfbWVtb3J5XHRcdD0gYW1kNjRfaW5zZXJ0X21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3AvYW1kNjQtYWdwLmM6MjMzOlx0LnJlbW92ZV9tZW1vcnlcdFx0PSBhZ3BfZ2VuZXJpY19yZW1vdmVfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC9hbWQ2NC1hZ3AuYy0yMzQtXHQuYWxsb2NfYnlfdHlwZVx0XHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXG4tLVxuZHJpdmVycy9jaGFyL2FncC9hdGktYWdwLmM9MjU4PXN0YXRpYyBpbnQgYXRpX2luc2VydF9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKiBtZW0sXG4tLVxuZHJpdmVycy9jaGFyL2FncC9hdGktYWdwLmMtMzA1LVxuZHJpdmVycy9jaGFyL2FncC9hdGktYWdwLmM6MzA2OnN0YXRpYyBpbnQgYXRpX3JlbW92ZV9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKiBtZW0sIG9mZl90IHBnX3N0YXJ0LFxuZHJpdmVycy9jaGFyL2FncC9hdGktYWdwLmMtMzA3LVx0XHRcdCAgICAgaW50IHR5cGUpXG4tLVxuZHJpdmVycy9jaGFyL2FncC9hdGktYWdwLmM9NDExPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgYXRpX2dlbmVyaWNfYnJpZGdlID0ge1xuLS1cbmRyaXZlcnMvY2hhci9hZ3AvYXRpLWFncC5jLTQyNy1cdC5pbnNlcnRfbWVtb3J5XHRcdD0gYXRpX2luc2VydF9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL2F0aS1hZ3AuYzo0Mjg6XHQucmVtb3ZlX21lbW9yeVx0XHQ9IGF0aV9yZW1vdmVfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC9hdGktYWdwLmMtNDI5LVx0LmFsbG9jX2J5X3R5cGVcdFx0PSBhZ3BfZ2VuZXJpY19hbGxvY19ieV90eXBlLFxuLS1cbmRyaXZlcnMvY2hhci9hZ3AvZWZmaWNlb24tYWdwLmM9MjM3PXN0YXRpYyBpbnQgZWZmaWNlb25faW5zZXJ0X21lbW9yeShzdHJ1Y3QgYWdwX21lbW9yeSAqIG1lbSwgb2ZmX3QgcGdfc3RhcnQsIGludCB0eXBlKVxuLS1cbmRyaXZlcnMvY2hhci9hZ3AvZWZmaWNlb24tYWdwLmMtMjg1LVxuZHJpdmVycy9jaGFyL2FncC9lZmZpY2Vvbi1hZ3AuYzoyODY6c3RhdGljIGludCBlZmZpY2Vvbl9yZW1vdmVfbWVtb3J5KHN0cnVjdCBhZ3BfbWVtb3J5ICogbWVtLCBvZmZfdCBwZ19zdGFydCwgaW50IHR5cGUpXG5kcml2ZXJzL2NoYXIvYWdwL2VmZmljZW9uLWFncC5jLTI4Ny17XG4tLVxuZHJpdmVycy9jaGFyL2FncC9lZmZpY2Vvbi1hZ3AuYy0yODktXG5kcml2ZXJzL2NoYXIvYWdwL2VmZmljZW9uLWFncC5jOjI5MDpcdHByaW50ayhLRVJOX0RFQlVHIFBGWCBcJiMzNDtlZmZpY2Vvbl9yZW1vdmVfbWVtb3J5KCVseCwgJWQpXFxuXCYjMzQ7LCBwZ19zdGFydCwgY291bnQpO1xuZHJpdmVycy9jaGFyL2FncC9lZmZpY2Vvbi1hZ3AuYy0yOTEtXG4tLVxuZHJpdmVycy9jaGFyL2FncC9lZmZpY2Vvbi1hZ3AuYz0zMTM9c3RhdGljIGNvbnN0IHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciBlZmZpY2Vvbl9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9jaGFyL2FncC9lZmZpY2Vvbi1hZ3AuYy0zMzAtXHQuaW5zZXJ0X21lbW9yeVx0XHQ9IGVmZmljZW9uX2luc2VydF9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL2VmZmljZW9uLWFncC5jOjMzMTpcdC5yZW1vdmVfbWVtb3J5XHRcdD0gZWZmaWNlb25fcmVtb3ZlX21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3AvZWZmaWNlb24tYWdwLmMtMzMyLVx0LmNhbnRfdXNlX2FwZXJ0dXJlXHQ9IGZhbHNlLFx0Ly8gdHJ1ZSBtaWdodCBiZSBmYXN0ZXI/XG4tLVxuZHJpdmVycy9jaGFyL2FncC9nZW5lcmljLmM9NDQ4PWludCBhZ3BfdW5iaW5kX21lbW9yeShzdHJ1Y3QgYWdwX21lbW9yeSAqY3Vycilcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2dlbmVyaWMuYy00NTktXG5kcml2ZXJzL2NoYXIvYWdwL2dlbmVyaWMuYzo0NjA6XHRyZXRfdmFsID0gY3Vyci1cdTAwM2VicmlkZ2UtXHUwMDNlZHJpdmVyLVx1MDAzZXJlbW92ZV9tZW1vcnkoY3VyciwgY3Vyci1cdTAwM2VwZ19zdGFydCwgY3Vyci1cdTAwM2V0eXBlKTtcbmRyaXZlcnMvY2hhci9hZ3AvZ2VuZXJpYy5jLTQ2MS1cbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2dlbmVyaWMuYz0xMTA0PUVYUE9SVF9TWU1CT0woYWdwX2dlbmVyaWNfaW5zZXJ0X21lbW9yeSk7XG4tLVxuZHJpdmVycy9jaGFyL2FncC9nZW5lcmljLmMtMTEwNi1cbmRyaXZlcnMvY2hhci9hZ3AvZ2VuZXJpYy5jOjExMDc6aW50IGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKm1lbSwgb2ZmX3QgcGdfc3RhcnQsIGludCB0eXBlKVxuZHJpdmVycy9jaGFyL2FncC9nZW5lcmljLmMtMTEwOC17XG4tLVxuZHJpdmVycy9jaGFyL2FncC9nZW5lcmljLmMtMTE0Mi19XG5kcml2ZXJzL2NoYXIvYWdwL2dlbmVyaWMuYzoxMTQzOkVYUE9SVF9TWU1CT0woYWdwX2dlbmVyaWNfcmVtb3ZlX21lbW9yeSk7XG5kcml2ZXJzL2NoYXIvYWdwL2dlbmVyaWMuYy0xMTQ0LVxuLS1cbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmM9NDUwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgaW50ZWxfZ2VuZXJpY19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYy00NjYtXHQuaW5zZXJ0X21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX2luc2VydF9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jOjQ2NzpcdC5yZW1vdmVfbWVtb3J5XHRcdD0gYWdwX2dlbmVyaWNfcmVtb3ZlX21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNDY4LVx0LmFsbG9jX2J5X3R5cGVcdFx0PSBhZ3BfZ2VuZXJpY19hbGxvY19ieV90eXBlLFxuLS1cbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmM9NDc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgaW50ZWxfODE1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jLTQ5My1cdC5pbnNlcnRfbWVtb3J5XHRcdD0gYWdwX2dlbmVyaWNfaW5zZXJ0X21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmM6NDk0Olx0LnJlbW92ZV9tZW1vcnlcdFx0PSBhZ3BfZ2VuZXJpY19yZW1vdmVfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYy00OTUtXHQuYWxsb2NfYnlfdHlwZVx0XHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXG4tLVxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYz01MDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciBpbnRlbF84MjBfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNTIwLVx0Lmluc2VydF9tZW1vcnlcdFx0PSBhZ3BfZ2VuZXJpY19pbnNlcnRfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYzo1MjE6XHQucmVtb3ZlX21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jLTUyMi1cdC5hbGxvY19ieV90eXBlXHRcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jPTUzMT1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIGludGVsXzgzMG1wX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jLTU0Ny1cdC5pbnNlcnRfbWVtb3J5XHRcdD0gYWdwX2dlbmVyaWNfaW5zZXJ0X21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmM6NTQ4Olx0LnJlbW92ZV9tZW1vcnlcdFx0PSBhZ3BfZ2VuZXJpY19yZW1vdmVfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYy01NDktXHQuYWxsb2NfYnlfdHlwZVx0XHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXG4tLVxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYz01NTg9c3RhdGljIGNvbnN0IHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciBpbnRlbF84NDBfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNTc0LVx0Lmluc2VydF9tZW1vcnlcdFx0PSBhZ3BfZ2VuZXJpY19pbnNlcnRfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYzo1NzU6XHQucmVtb3ZlX21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jLTU3Ni1cdC5hbGxvY19ieV90eXBlXHRcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jPTU4NT1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIGludGVsXzg0NV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYy02MDEtXHQuaW5zZXJ0X21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX2luc2VydF9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jOjYwMjpcdC5yZW1vdmVfbWVtb3J5XHRcdD0gYWdwX2dlbmVyaWNfcmVtb3ZlX21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNjAzLVx0LmFsbG9jX2J5X3R5cGVcdFx0PSBhZ3BfZ2VuZXJpY19hbGxvY19ieV90eXBlLFxuLS1cbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmM9NjEyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgaW50ZWxfODUwX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jLTYyOC1cdC5pbnNlcnRfbWVtb3J5XHRcdD0gYWdwX2dlbmVyaWNfaW5zZXJ0X21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmM6NjI5Olx0LnJlbW92ZV9tZW1vcnlcdFx0PSBhZ3BfZ2VuZXJpY19yZW1vdmVfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYy02MzAtXHQuYWxsb2NfYnlfdHlwZVx0XHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXG4tLVxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYz02Mzk9c3RhdGljIGNvbnN0IHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciBpbnRlbF84NjBfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNjU1LVx0Lmluc2VydF9tZW1vcnlcdFx0PSBhZ3BfZ2VuZXJpY19pbnNlcnRfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYzo2NTY6XHQucmVtb3ZlX21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jLTY1Ny1cdC5hbGxvY19ieV90eXBlXHRcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jPTY2Nj1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIGludGVsXzc1MDVfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNjgyLVx0Lmluc2VydF9tZW1vcnlcdFx0PSBhZ3BfZ2VuZXJpY19pbnNlcnRfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYzo2ODM6XHQucmVtb3ZlX21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jLTY4NC1cdC5hbGxvY19ieV90eXBlXHRcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWd0dC5jPTEyMDY9c3RhdGljIGNvbnN0IHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciBpbnRlbF9mYWtlX2FncF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1ndHQuYy0xMjE4LVx0Lmluc2VydF9tZW1vcnlcdFx0PSBpbnRlbF9mYWtlX2FncF9pbnNlcnRfZW50cmllcyxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtZ3R0LmM6MTIxOTpcdC5yZW1vdmVfbWVtb3J5XHRcdD0gaW50ZWxfZmFrZV9hZ3BfcmVtb3ZlX2VudHJpZXMsXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWd0dC5jLTEyMjAtXHQuYWxsb2NfYnlfdHlwZVx0XHQ9IGludGVsX2Zha2VfYWdwX2FsbG9jX2J5X3R5cGUsXG4tLVxuZHJpdmVycy9jaGFyL2FncC9udmlkaWEtYWdwLmM9MjAyPXN0YXRpYyBpbnQgbnZpZGlhX2luc2VydF9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKm1lbSwgb2ZmX3QgcGdfc3RhcnQsIGludCB0eXBlKVxuLS1cbmRyaXZlcnMvY2hhci9hZ3AvbnZpZGlhLWFncC5jLTI0MC1cbmRyaXZlcnMvY2hhci9hZ3AvbnZpZGlhLWFncC5jOjI0MTpzdGF0aWMgaW50IG52aWRpYV9yZW1vdmVfbWVtb3J5KHN0cnVjdCBhZ3BfbWVtb3J5ICptZW0sIG9mZl90IHBnX3N0YXJ0LCBpbnQgdHlwZSlcbmRyaXZlcnMvY2hhci9hZ3AvbnZpZGlhLWFncC5jLTI0Mi17XG4tLVxuZHJpdmVycy9jaGFyL2FncC9udmlkaWEtYWdwLmM9MzExPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgbnZpZGlhX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL252aWRpYS1hZ3AuYy0zMjctXHQuaW5zZXJ0X21lbW9yeVx0XHQ9IG52aWRpYV9pbnNlcnRfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC9udmlkaWEtYWdwLmM6MzI4Olx0LnJlbW92ZV9tZW1vcnlcdFx0PSBudmlkaWFfcmVtb3ZlX21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3AvbnZpZGlhLWFncC5jLTMyOS1cdC5hbGxvY19ieV90eXBlXHRcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL3BhcmlzYy1hZ3AuYz0xNzM9c3RhdGljIGludFxuZHJpdmVycy9jaGFyL2FncC9wYXJpc2MtYWdwLmM6MTc0OnBhcmlzY19hZ3BfcmVtb3ZlX21lbW9yeShzdHJ1Y3QgYWdwX21lbW9yeSAqbWVtLCBvZmZfdCBwZ19zdGFydCwgaW50IHR5cGUpXG5kcml2ZXJzL2NoYXIvYWdwL3BhcmlzYy1hZ3AuYy0xNzUte1xuLS1cbmRyaXZlcnMvY2hhci9hZ3AvcGFyaXNjLWFncC5jPTIyNz1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIHBhcmlzY19hZ3BfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvY2hhci9hZ3AvcGFyaXNjLWFncC5jLTIzOS1cdC5pbnNlcnRfbWVtb3J5XHRcdD0gcGFyaXNjX2FncF9pbnNlcnRfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC9wYXJpc2MtYWdwLmM6MjQwOlx0LnJlbW92ZV9tZW1vcnlcdFx0PSBwYXJpc2NfYWdwX3JlbW92ZV9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL3BhcmlzYy1hZ3AuYy0yNDEtXHQuYWxsb2NfYnlfdHlwZVx0XHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXG4tLVxuZHJpdmVycy9jaGFyL2FncC9zaXMtYWdwLmM9MTIyPXN0YXRpYyBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgc2lzX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL3Npcy1hZ3AuYy0xMzgtXHQuaW5zZXJ0X21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX2luc2VydF9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL3Npcy1hZ3AuYzoxMzk6XHQucmVtb3ZlX21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL3Npcy1hZ3AuYy0xNDAtXHQuYWxsb2NfYnlfdHlwZVx0XHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXG4tLVxuZHJpdmVycy9jaGFyL2FncC9zd29ya3MtYWdwLmM9MzE2PXN0YXRpYyBpbnQgc2VydmVyd29ya3NfaW5zZXJ0X21lbW9yeShzdHJ1Y3QgYWdwX21lbW9yeSAqbWVtLFxuLS1cbmRyaXZlcnMvY2hhci9hZ3Avc3dvcmtzLWFncC5jLTM1Ni1cbmRyaXZlcnMvY2hhci9hZ3Avc3dvcmtzLWFncC5jOjM1NzpzdGF0aWMgaW50IHNlcnZlcndvcmtzX3JlbW92ZV9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKm1lbSwgb2ZmX3QgcGdfc3RhcnQsXG5kcml2ZXJzL2NoYXIvYWdwL3N3b3Jrcy1hZ3AuYy0zNTgtXHRcdFx0ICAgICBpbnQgdHlwZSlcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL3N3b3Jrcy1hZ3AuYz00MTk9c3RhdGljIGNvbnN0IHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciBzd29ya3NfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvY2hhci9hZ3Avc3dvcmtzLWFncC5jLTQzNC1cdC5pbnNlcnRfbWVtb3J5XHRcdD0gc2VydmVyd29ya3NfaW5zZXJ0X21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3Avc3dvcmtzLWFncC5jOjQzNTpcdC5yZW1vdmVfbWVtb3J5XHRcdD0gc2VydmVyd29ya3NfcmVtb3ZlX21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3Avc3dvcmtzLWFncC5jLTQzNi1cdC5hbGxvY19ieV90eXBlXHRcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL3VuaW5vcnRoLWFncC5jPTE1MD1zdGF0aWMgaW50IHVuaW5vcnRoX2luc2VydF9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKm1lbSwgb2ZmX3QgcGdfc3RhcnQsIGludCB0eXBlKVxuLS1cbmRyaXZlcnMvY2hhci9hZ3AvdW5pbm9ydGgtYWdwLmMtMTk5LVxuZHJpdmVycy9jaGFyL2FncC91bmlub3J0aC1hZ3AuYzoyMDA6c3RhdGljIGludCB1bmlub3J0aF9yZW1vdmVfbWVtb3J5KHN0cnVjdCBhZ3BfbWVtb3J5ICptZW0sIG9mZl90IHBnX3N0YXJ0LCBpbnQgdHlwZSlcbmRyaXZlcnMvY2hhci9hZ3AvdW5pbm9ydGgtYWdwLmMtMjAxLXtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL3VuaW5vcnRoLWFncC5jPTUwOT1jb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgdW5pbm9ydGhfYWdwX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL3VuaW5vcnRoLWFncC5jLTUyNC1cdC5pbnNlcnRfbWVtb3J5XHRcdD0gdW5pbm9ydGhfaW5zZXJ0X21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3AvdW5pbm9ydGgtYWdwLmM6NTI1Olx0LnJlbW92ZV9tZW1vcnlcdFx0PSB1bmlub3J0aF9yZW1vdmVfbWVtb3J5LFxuZHJpdmVycy9jaGFyL2FncC91bmlub3J0aC1hZ3AuYy01MjYtXHQuYWxsb2NfYnlfdHlwZVx0XHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXG4tLVxuZHJpdmVycy9jaGFyL2FncC91bmlub3J0aC1hZ3AuYz01Mzc9Y29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIHUzX2FncF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9jaGFyL2FncC91bmlub3J0aC1hZ3AuYy01NTItXHQuaW5zZXJ0X21lbW9yeVx0XHQ9IHVuaW5vcnRoX2luc2VydF9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL3VuaW5vcnRoLWFncC5jOjU1MzpcdC5yZW1vdmVfbWVtb3J5XHRcdD0gdW5pbm9ydGhfcmVtb3ZlX21lbW9yeSxcbmRyaXZlcnMvY2hhci9hZ3AvdW5pbm9ydGgtYWdwLmMtNTU0LVx0LmFsbG9jX2J5X3R5cGVcdFx0PSBhZ3BfZ2VuZXJpY19hbGxvY19ieV90eXBlLFxuLS1cbmRyaXZlcnMvY2hhci9hZ3AvdmlhLWFncC5jPTE3MD1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIHZpYV9hZ3AzX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL3ZpYS1hZ3AuYy0xODYtXHQuaW5zZXJ0X21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX2luc2VydF9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL3ZpYS1hZ3AuYzoxODc6XHQucmVtb3ZlX21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL3ZpYS1hZ3AuYy0xODgtXHQuYWxsb2NfYnlfdHlwZVx0XHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXG4tLVxuZHJpdmVycy9jaGFyL2FncC92aWEtYWdwLmM9MTk3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgdmlhX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL2NoYXIvYWdwL3ZpYS1hZ3AuYy0yMTMtXHQuaW5zZXJ0X21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX2luc2VydF9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL3ZpYS1hZ3AuYzoyMTQ6XHQucmVtb3ZlX21lbW9yeVx0XHQ9IGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnksXG5kcml2ZXJzL2NoYXIvYWdwL3ZpYS1hZ3AuYy0yMTUtXHQuYWxsb2NfYnlfdHlwZVx0XHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXG4tLVxuZHJpdmVycy9kYXgva21lbS5jPTIwOT1zdGF0aWMgdm9pZCBkZXZfZGF4X2ttZW1fcmVtb3ZlKHN0cnVjdCBkZXZfZGF4ICpkZXZfZGF4KVxuLS1cbmRyaXZlcnMvZGF4L2ttZW0uYy0yMTctXHQgKiBXZSBoYXZlIG9uZSBzaG90IGZvciByZW1vdmluZyBtZW1vcnksIGlmIHNvbWUgbWVtb3J5IGJsb2NrcyB3ZXJlIG5vdFxuZHJpdmVycy9kYXgva21lbS5jOjIxODpcdCAqIG9mZmxpbmUgcHJpb3IgdG8gY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHJlbW92ZV9tZW1vcnkoKSB3aWxsIGZhaWwsIGFuZFxuZHJpdmVycy9kYXgva21lbS5jLTIxOS1cdCAqIHRoZXJlIGlzIG5vIHdheSB0byBob3RyZW1vdmUgdGhpcyBtZW1vcnkgdW50aWwgcmVib290IGJlY2F1c2UgZGV2aWNlXG4tLVxuZHJpdmVycy9kYXgva21lbS5jLTIzNS1cbmRyaXZlcnMvZGF4L2ttZW0uYzoyMzY6XHRcdHJjID0gcmVtb3ZlX21lbW9yeShyYW5nZS5zdGFydCwgcmFuZ2VfbGVuKFx1MDAyNnJhbmdlKSk7XG5kcml2ZXJzL2RheC9rbWVtLmMtMjM3LVx0XHRpZiAocmMgPT0gMCkge1xuLS1cbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIvZWZpc3R1Yi5oPTQwNT11bmlvbiBlZmlfZHhlX3NlcnZpY2VzX3RhYmxlIHtcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9saWJzdHViL2VmaXN0dWIuaC00MTAtXHRcdHZvaWQgKmZyZWVfbWVtb3J5X3NwYWNlO1xuZHJpdmVycy9maXJtd2FyZS9lZmkvbGlic3R1Yi9lZmlzdHViLmg6NDExOlx0XHR2b2lkICpyZW1vdmVfbWVtb3J5X3NwYWNlO1xuZHJpdmVycy9maXJtd2FyZS9lZmkvbGlic3R1Yi9lZmlzdHViLmgtNDEyLVx0XHRlZmlfc3RhdHVzX3QgKF9fZWZpYXBpICpnZXRfbWVtb3J5X3NwYWNlX2Rlc2NyaXB0b3IpKGVmaV9waHlzaWNhbF9hZGRyX3QsXG4tLVxuZHJpdmVycy9maXJtd2FyZS9lZmkvbGlic3R1Yi9lZmlzdHViLmgtNDMzLVx0XHR1MzIgZnJlZV9tZW1vcnlfc3BhY2U7XG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9saWJzdHViL2VmaXN0dWIuaDo0MzQ6XHRcdHUzMiByZW1vdmVfbWVtb3J5X3NwYWNlO1xuZHJpdmVycy9maXJtd2FyZS9lZmkvbGlic3R1Yi9lZmlzdHViLmgtNDM1LVx0XHR1MzIgZ2V0X21lbW9yeV9zcGFjZV9kZXNjcmlwdG9yO1xuLS1cbmRyaXZlcnMvczM5MC9jaGFyL3NjbHBfbWVtLmM9MTg5PXN0YXRpYyBzc2l6ZV90IHNjbHBfY29uZmlnX21lbV9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvczM5MC9jaGFyL3NjbHBfbWVtLmMtMjQ3LVx0XHRzY2xwX21lbV9jaGFuZ2Vfc3RhdGUoYWRkciwgYmxvY2tfc2l6ZSwgMCk7XG5kcml2ZXJzL3MzOTAvY2hhci9zY2xwX21lbS5jOjI0ODpcdFx0X19yZW1vdmVfbWVtb3J5KGFkZHIsIGJsb2NrX3NpemUpO1xuZHJpdmVycy9zMzkwL2NoYXIvc2NscF9tZW0uYy0yNDktI2lmZGVmIENPTkZJR19LQVNBTlxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz02ODM9c3RhdGljIGludCB2aXJ0aW9fbWVtX2JibV9hZGRfYmIoc3RydWN0IHZpcnRpb19tZW0gKnZtLCB1bnNpZ25lZCBsb25nIGJiX2lkKVxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy02OTktICovXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6NzAwOnN0YXRpYyBpbnQgdmlydGlvX21lbV9yZW1vdmVfbWVtb3J5KHN0cnVjdCB2aXJ0aW9fbWVtICp2bSwgdWludDY0X3QgYWRkcixcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03MDEtXHRcdFx0XHQgICAgdWludDY0X3Qgc2l6ZSlcbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzA2LVx0XHRhZGRyICYjNDM7IHNpemUgLSAxKTtcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo3MDc6XHRyYyA9IHJlbW92ZV9tZW1vcnkoYWRkciwgc2l6ZSk7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzA4LVx0aWYgKCFyYykge1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03MjEtLypcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo3MjI6ICogU2VlIHZpcnRpb19tZW1fcmVtb3ZlX21lbW9yeSgpOiBUcnkgcmVtb3ZpbmcgYSBzaW5nbGUgTGludXggbWVtb3J5IGJsb2NrLlxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTcyMy0gKi9cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz03MjQ9c3RhdGljIGludCB2aXJ0aW9fbWVtX3NibV9yZW1vdmVfbWIoc3RydWN0IHZpcnRpb19tZW0gKnZtLCB1bnNpZ25lZCBsb25nIG1iX2lkKVxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03MjgtXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6NzI5Olx0cmV0dXJuIHZpcnRpb19tZW1fcmVtb3ZlX21lbW9yeSh2bSwgYWRkciwgc2l6ZSk7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzMwLX1cbi0tXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzM5LSAqL1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjc0MDpzdGF0aWMgaW50IHZpcnRpb19tZW1fb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeShzdHJ1Y3QgdmlydGlvX21lbSAqdm0sXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzQxLVx0XHRcdFx0XHRcdHVpbnQ2NF90IGFkZHIsXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTc0OS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo3NTA6XHRyYyA9IG9mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkoYWRkciwgc2l6ZSk7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzUxLVx0aWYgKCFyYykge1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03NjktLypcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo3NzA6ICogU2VlIHZpcnRpb19tZW1fb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSgpOiBUcnkgb2ZmbGluaW5nIGFuZCByZW1vdmluZ1xuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTc3MS0gKiBhIHNpbmdsZSBMaW51eCBtZW1vcnkgYmxvY2suXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jPTc3Mz1zdGF0aWMgaW50IHZpcnRpb19tZW1fc2JtX29mZmxpbmVfYW5kX3JlbW92ZV9tYihzdHJ1Y3QgdmlydGlvX21lbSAqdm0sXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTc3OC1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo3Nzk6XHRyZXR1cm4gdmlydGlvX21lbV9vZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KHZtLCBhZGRyLCBzaXplKTtcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03ODAtfVxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz03ODg9c3RhdGljIGludCB2aXJ0aW9fbWVtX3NibV90cnlfcmVtb3ZlX3VucGx1Z2dlZF9tYihzdHJ1Y3QgdmlydGlvX21lbSAqdm0sXG4tLVxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTc5OS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo4MDA6XHQvKiBvZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KCkgd29ya3MgZm9yIG9ubGluZSBhbmQgb2ZmbGluZSBtZW1vcnkuICovXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtODAxLVx0bXV0ZXhfdW5sb2NrKFx1MDAyNnZtLVx1MDAzZWhvdHBsdWdfbXV0ZXgpO1xuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy04MTAtLypcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo4MTE6ICogU2VlIHZpcnRpb19tZW1fb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSgpOiBUcnkgdG8gb2ZmbGluZSBhbmQgcmVtb3ZlIGFcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy04MTItICogYWxsIExpbnV4IG1lbW9yeSBibG9ja3MgY292ZXJlZCBieSB0aGUgYmlnIGJsb2NrLlxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz04MTQ9c3RhdGljIGludCB2aXJ0aW9fbWVtX2JibV9vZmZsaW5lX2FuZF9yZW1vdmVfYmIoc3RydWN0IHZpcnRpb19tZW0gKnZtLFxuLS1cbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy04MTktXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6ODIwOlx0cmV0dXJuIHZpcnRpb19tZW1fb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSh2bSwgYWRkciwgc2l6ZSk7XG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtODIxLX1cbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oPTE1NT1pbnQgY3JlYXRlX21lbW9yeV9ibG9ja19kZXZpY2VzKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgc2l6ZSxcbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oLTE1Ny1cdFx0XHRcdHN0cnVjdCBtZW1vcnlfZ3JvdXAgKmdyb3VwKTtcbmluY2x1ZGUvbGludXgvbWVtb3J5Lmg6MTU4OnZvaWQgcmVtb3ZlX21lbW9yeV9ibG9ja19kZXZpY2VzKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgc2l6ZSk7XG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oLTE1OS1leHRlcm4gdm9pZCBtZW1vcnlfZGV2X2luaXQodm9pZCk7XG4tLVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oPTEzMz1zdGF0aWMgaW5saW5lIGJvb2wgbW92YWJsZV9ub2RlX2lzX2VuYWJsZWQodm9pZClcbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMTM3LVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjEzODpleHRlcm4gdm9pZCBhcmNoX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSwgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXAsXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMTM5LVx0XHRcdCAgICAgICBzdHJ1Y3QgZGV2X3BhZ2VtYXAgKnBnbWFwKTtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9MjY1PWV4dGVybiBpbnQgb2ZmbGluZV9wYWdlcyh1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcyxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yNjYtXHRcdFx0IHN0cnVjdCB6b25lICp6b25lLCBzdHJ1Y3QgbWVtb3J5X2dyb3VwICpncm91cCk7XG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MjY3OmV4dGVybiBpbnQgcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKTtcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDoyNjg6ZXh0ZXJuIHZvaWQgX19yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpO1xuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjI2OTpleHRlcm4gaW50IG9mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSk7XG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjcwLVxuLS1cbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaD0yNzQ9c3RhdGljIGlubGluZSBpbnQgb2ZmbGluZV9wYWdlcyh1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcyxcbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjc5LVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjI4MDpzdGF0aWMgaW5saW5lIGludCByZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjgxLXtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjg0LVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjI4NTpzdGF0aWMgaW5saW5lIHZvaWQgX19yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpIHt9XG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjg2LSNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRSAqL1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmM9MTQwNj1zdGF0aWMgdm9pZCBhbHRtYXBfZnJlZShzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcClcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE0MTEtXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE0MTI6c3RhdGljIHZvaWQgcmVtb3ZlX21lbW9yeV9ibG9ja3NfYW5kX2FsdG1hcHModTY0IHN0YXJ0LCB1NjQgc2l6ZSlcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTQxMy17XG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNDMzLVxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNDM0Olx0XHRyZW1vdmVfbWVtb3J5X2Jsb2NrX2RldmljZXMoY3VyX3N0YXJ0LCBtZW1ibG9ja19zaXplKTtcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTQzNTpcdFx0YXJjaF9yZW1vdmVfbWVtb3J5KGN1cl9zdGFydCwgbWVtYmxvY2tfc2l6ZSwgYWx0bWFwLCBOVUxMKTtcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTQzNi1cdFx0YWx0bWFwX2ZyZWUoYWx0bWFwKTtcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTE0NDA9c3RhdGljIGludCBjcmVhdGVfYWx0bWFwc19hbmRfbWVtb3J5X2Jsb2NrcyhpbnQgbmlkLCBzdHJ1Y3QgbWVtb3J5X2dyb3VwICpncm91cCxcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE0NzQtXHRcdGlmIChyZXQpIHtcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTQ3NTpcdFx0XHRhcmNoX3JlbW92ZV9tZW1vcnkoY3VyX3N0YXJ0LCBtZW1ibG9ja19zaXplLCBwYXJhbXMuYWx0bWFwLCBOVUxMKTtcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTQ3Ni1cdFx0XHRhbHRtYXBfZnJlZShwYXJhbXMuYWx0bWFwKTtcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE0ODMtXHRpZiAocmV0IFx1MDAyNlx1MDAyNiBjdXJfc3RhcnQgIT0gc3RhcnQpXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE0ODQ6XHRcdHJlbW92ZV9tZW1vcnlfYmxvY2tzX2FuZF9hbHRtYXBzKHN0YXJ0LCBjdXJfc3RhcnQgLSBzdGFydCk7XG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE0ODUtXHRyZXR1cm4gcmV0O1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmM9MTQ5ND1pbnQgYWRkX21lbW9yeV9yZXNvdXJjZShpbnQgbmlkLCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcywgbWhwX3QgbWhwX2ZsYWdzKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMTU2MC1cdFx0aWYgKHJldCkge1xubW0vbWVtb3J5X2hvdHBsdWcuYzoxNTYxOlx0XHRcdGFyY2hfcmVtb3ZlX21lbW9yeShzdGFydCwgc2l6ZSwgcGFyYW1zLmFsdG1hcCwgTlVMTCk7XG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE1NjItXHRcdFx0Z290byBlcnJvcjtcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTIyMjE9c3RhdGljIGludCBtZW1vcnlfYmxvY2tzX2hhdmVfYWx0bWFwcyh1NjQgc3RhcnQsIHU2NCBzaXplKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMjI0MC1cbm1tL21lbW9yeV9ob3RwbHVnLmM6MjI0MTpzdGF0aWMgaW50IHRyeV9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyNDIte1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMjI3NC1cdFx0ICovXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIyNzU6XHRcdHJlbW92ZV9tZW1vcnlfYmxvY2tfZGV2aWNlcyhzdGFydCwgc2l6ZSk7XG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIyNzY6XHRcdGFyY2hfcmVtb3ZlX21lbW9yeShzdGFydCwgc2l6ZSwgTlVMTCwgTlVMTCk7XG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyNzctXHR9IGVsc2Uge1xubW0vbWVtb3J5X2hvdHBsdWcuYy0yMjc4LVx0XHQvKiBhbGwgbWVtYmxvY2tzIGluIHRoZSByYW5nZSBoYXZlIGFsdG1hcHMgKi9cbm1tL21lbW9yeV9ob3RwbHVnLmM6MjI3OTpcdFx0cmVtb3ZlX21lbW9yeV9ibG9ja3NfYW5kX2FsdG1hcHMoc3RhcnQsIHNpemUpO1xubW0vbWVtb3J5X2hvdHBsdWcuYy0yMjgwLVx0fVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMjI5NC0vKipcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjI5NTogKiBfX3JlbW92ZV9tZW1vcnkgLSBSZW1vdmUgbWVtb3J5IGlmIGV2ZXJ5IG1lbW9yeSBibG9jayBpcyBvZmZsaW5lXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyOTYtICogQHN0YXJ0OiBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSByZWdpb24gdG8gcmVtb3ZlXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzAyLSAqL1xubW0vbWVtb3J5X2hvdHBsdWcuYzoyMzAzOnZvaWQgX19yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIzMDQte1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMwOS1cdCAqL1xubW0vbWVtb3J5X2hvdHBsdWcuYzoyMzEwOlx0aWYgKHRyeV9yZW1vdmVfbWVtb3J5KHN0YXJ0LCBzaXplKSlcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMxMS1cdFx0QlVHKCk7XG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzE3LSAqL1xubW0vbWVtb3J5X2hvdHBsdWcuYzoyMzE4OmludCByZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIzMTkte1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMyMi1cdGxvY2tfZGV2aWNlX2hvdHBsdWcoKTtcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjMyMzpcdHJjID0gdHJ5X3JlbW92ZV9tZW1vcnkoc3RhcnQsIHNpemUpO1xubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzI0LVx0dW5sb2NrX2RldmljZV9ob3RwbHVnKCk7XG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzI3LX1cbm1tL21lbW9yeV9ob3RwbHVnLmM6MjMyODpFWFBPUlRfU1lNQk9MX0dQTChyZW1vdmVfbWVtb3J5KTtcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMyOS1cbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTIzNTk9c3RhdGljIGludCB0cnlfcmVvbmxpbmVfbWVtb3J5X2Jsb2NrKHN0cnVjdCBtZW1vcnlfYmxvY2sgKm1lbSwgdm9pZCAqYXJnKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMjM4Mi0gKi9cbm1tL21lbW9yeV9ob3RwbHVnLmM6MjM4MzppbnQgb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzg0LXtcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTI0MTgtXHRpZiAoIXJjKSB7XG5tbS9tZW1vcnlfaG90cGx1Zy5jOjI0MTk6XHRcdHJjID0gdHJ5X3JlbW92ZV9tZW1vcnkoc3RhcnQsIHNpemUpO1xubW0vbWVtb3J5X2hvdHBsdWcuYy0yNDIwLVx0XHRpZiAocmMpXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yNDM3LX1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzQxOQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDI3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgTWVtb3J5IEhvdHBsdWcgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgSSBzZWUgYHJlbW92ZV9tZW1vcnlgIGFuZCBgb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeWAgYXJlIGV4cG9ydGVkLiBJJiMzOTttIGFsc28gc2VlaW5nIGB0cnlfb2ZmbGluZV9ub2RlYCBnZXQgY2FsbGVkIGZyb20gYGFjcGlfcHJvY2Vzc29yX3Bvc3RfZWplY3RgIOKAkyBpbnRlcmVzdGluZy4gV2FpdCwgYHRyeV9vZmZsaW5lX25vZGVgIGdldHMgY2FsbGVkIHdoZW4gYSBub2RlIGhhcyAqbm8qIG1lbW9yeSBvciBDUFVzIGxlZnQsIHJpZ2h0PyBTbyB0aGUgY3J1Y2lhbCBxdWVzdGlvbiBpcywgaXMgYHRyeV9vZmZsaW5lX25vZGVgIGFjdHVhbGx5ICpyZWFjaGFibGUqIGluIHRoaXMgY29udGV4dD8gQWgsIHllcywgbWVtb3J5IGhvdHBsdWcgbWFrZXMgaXQgcmVhY2hhYmxlLgoKQnV0LCBhbmQgdGhpcyBpcyBpbXBvcnRhbnQsIHRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IGludHJvZHVjZXMgYHN5bmNfdm1fc3RhdHMoKWAgYmVmb3JlIGBub2RlX3NldF9vZmZsaW5lKG5pZClgLiBUaGUgY29tbWl0IG1lc3NhZ2UgaXMgdmVyeSBjbGVhcjogJiMzNDtGb2xkIGFueSBwZW5kaW5nIHBlci1jcHUgdm1zdGF0IGRpZmZzIGludG8gdGhlIGdsb2JhbCBjb3VudGVycyBmaXJzdDogb25jZSB0aGUgbm9kZSBsZWF2ZXMgdGhlIG9ubGluZSBzZXQgdGhlIHBlcmlvZGljIGZvbGQgc2tpcHMgaXQsIG9ycGhhbmluZyB0aGUgcmVzaWR1YWwgb24gYSBsYXRlciBvbmxpbmUuJiMzNDsgVGhhdCBtYWtlcyBzZW5zZSwgdGhleSYjMzk7cmUgcHJldmVudGluZyBvcnBoYW5lZCB2bXN0YXQgZGlmZnMuIFRoaXMgaXMgZGVmaW5pdGVseSBhICpmdW5jdGlvbmFsKiBjaGFuZ2U7IHdlJiMzOTtyZSBmaXhpbmcgYSBwb3RlbnRpYWwgYnVnIHdoZXJlIHRoZXNlIGRpZmZzIGNvdWxkIGJlIGxvc3QuCgpTbywgaXMgaXQgd29ydGggZnV6emluZz8gQWJzb2x1dGVseSwgdGhpcyBpcyBjb3JlIGtlcm5lbCBsb2dpYy4gR2l2ZW4gdGhpcywgSSBuZWVkIHRvIGZvY3VzIG9uIGEgZmV3IGtleSBmdW5jdGlvbnM6IGB0cnlfb2ZmbGluZV9ub2RlYCwgYHN5bmNfdm1fc3RhdHNgLCBhbmQgYHZtc3RhdF9mb2xkX3dvcmtgLgoKQW5kIG9mIGNvdXJzZSwgd2hhdCBjb25maWdzIGFyZSBuZWVkZWQgdG8gbWFrZSB0aGlzIGNvZGUgYWN0aXZlPyBJIG5lZWQgYENPTkZJR19NRU1PUllfSE9UUExVR2AgYW5kIGBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRWAuIEkmIzM5O2xsIGRvdWJsZS1jaGVjayBgbW0vbWVtb3J5X2hvdHBsdWcuY2AgYW5kIGBtbS92bXN0YXQuY2AgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3NpbmcgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjUyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR19NRU1PUllfSE9UUExVRyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNzQ1IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL21lbW9yeS1ob3RwbHVnLnJzdD0yNzY9VGhlIGZvbGxvd2luZyBmaWxlcyBhcmUgY3VycmVudGx5IGRlZmluZWQ6XG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3QtMzAwLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3Q6MzAxOlx0XHQgICAgICAgQXZhaWxhYmlsaXR5IGRlcGVuZHMgb24gdGhlIENPTkZJR19NRU1PUllfSE9UUExVRyBrZXJuZWxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vbWVtb3J5LWhvdHBsdWcucnN0LTMwMi1cdFx0ICAgICAgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLlxuLS1cbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdD0yMTA9R2VuZXJhbFxuLS1cbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yNDYtICBBIGxvY2sgdGhhdCBwcm90ZWN0cyB0aGUgZmllbGRzIGRlZmluaW5nIHRoZSBub2RlIGV4dGVudHMuIE9ubHkgZGVmaW5lZCB3aGVuXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q6MjQ3OiAgYXQgbGVhc3Qgb25lIG9mIGBgQ09ORklHX01FTU9SWV9IT1RQTFVHYGAgb3JcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yNDgtICBgYENPTkZJR19ERUZFUlJFRF9TVFJVQ1RfUEFHRV9JTklUYGAgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBlbmFibGVkLlxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTI0OS0gIGBgcGdkYXRfcmVzaXplX2xvY2soKWBgIGFuZCBgYHBnZGF0X3Jlc2l6ZV91bmxvY2soKWBgIGFyZSBwcm92aWRlZCB0b1xuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjI1MDogIG1hbmlwdWxhdGUgYGBub2RlX3NpemVfbG9ja2BgIHdpdGhvdXQgY2hlY2tpbmcgZm9yIGBgQ09ORklHX01FTU9SWV9IT1RQTFVHYGBcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yNTEtICBvciBgYENPTkZJR19ERUZFUlJFRF9TVFJVQ1RfUEFHRV9JTklUYGAuXG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0PTM3Nz1HZW5lcmFsXG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTQ4OC0gIGVhcmx5IGJvb3QsIGV4Y2x1ZGluZyBob3RwbHVnZ2VkIG1lbW9yeS4gRGVmaW5lZCBvbmx5IHdoZW5cbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdDo0ODk6ICBgYENPTkZJR19NRU1PUllfSE9UUExVR2BgIGlzIGVuYWJsZWQgYW5kIGluaXRpYWxpemVkIGJ5XG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtNDkwLSAgYGBjYWxjdWxhdGVfbm9kZV90b3RhbHBhZ2VzKClgYC5cbi0tXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtNTA4LSAgdGhlIG1haW4gYWxsb2NhdG9yIHBhdGguIEhvd2V2ZXIsIHRoZSBzZXFsb2NrIGlzIHdyaXR0ZW4gcXVpdGUgaW5mcmVxdWVudGx5LlxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjUwOTogIERlZmluZWQgb25seSB3aGVuIGBgQ09ORklHX01FTU9SWV9IT1RQTFVHYGAgaXMgZW5hYmxlZC5cbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC01MTAtXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdD0yMDU9bm9kZV96b25lbGlzdHPlvJXnlKjjgIJcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTIzNC1gYG5vZGVfc2l6ZV9sb2NrYGBcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q6MjM1OuS4gOS4quS/neaKpOWumuS5ieiKgueCueiMg+WbtOWtl+auteeahOmUgeOAguS7heWcqOW8gOWQr+S6hiBgYENPTkZJR19NRU1PUllfSE9UUExVR2BgIOaIllxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yMzYtYGBDT05GSUdfREVGRVJSRURfU1RSVUNUX1BBR0VfSU5JVGBgIOmFjee9rumAiemhueS4reeahOafkOS4gOS4quaXtuaJjeWumuS5ieOAguaPkFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yMzct5L6b5LqGIGBgcGdkYXRfcmVzaXplX2xvY2soKWBgIOWSjCBgYHBnZGF0X3Jlc2l6ZV91bmxvY2soKWBgIOeUqOadpeaTjeS9nFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdDoyMzg6YGBub2RlX3NpemVfbG9ja2Bg77yM6ICM5peg6ZyA5qOA5p+lIGBgQ09ORklHX01FTU9SWV9IT1RQTFVHYGAg5oiWXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTIzOS1gYENPTkZJR19ERUZFUlJFRF9TVFJVQ1RfUEFHRV9JTklUYGAg6YCJ6aG544CCXG4tLVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz0xMzA9Q09ORklHX0JMS19JTkxJTkVfRU5DUllQVElPTj15XG4tLVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy0xMzItIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnOjEzMzpDT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy0xMzQtQ09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxuLS1cbmFyY2gvYXJtNjQvbW0vbW11LmM9MTQyNT12b2lkIF9faW5pdCBwYWdpbmdfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtNjQvbW0vbW11LmMtMTQzNC1cbmFyY2gvYXJtNjQvbW0vbW11LmM6MTQzNTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL2FybTY0L21tL21tdS5jLTE0MzYtc3RhdGljIHZvaWQgZnJlZV9ob3RwbHVnX3BhZ2VfcmFuZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIHNpemVfdCBzaXplLFxuLS1cbmFyY2gvYXJtNjQvbW0vbW11LmM9MTc4ND1pbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsIGludCBub2RlLFxuLS1cbmFyY2gvYXJtNjQvbW0vbW11LmMtMTc5Ny1cbmFyY2gvYXJtNjQvbW0vbW11LmM6MTc5ODojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL2FybTY0L21tL21tdS5jLTE3OTktdm9pZCB2bWVtbWFwX2ZyZWUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXG4tLVxuYXJjaC9hcm02NC9tbS9tbXUuYy0xODA2LX1cbmFyY2gvYXJtNjQvbW0vbW11LmM6MTgwNzojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXG5hcmNoL2FybTY0L21tL21tdS5jLTE4MDgtXG4tLVxuYXJjaC9hcm02NC9tbS9tbXUuYz0xODkxPWludCBwdWRfZnJlZV9wbWRfcGFnZShwdWRfdCAqcHVkcCwgdW5zaWduZWQgbG9uZyBhZGRyKVxuLS1cbmFyY2gvYXJtNjQvbW0vbW11LmMtMTkzOS1cbmFyY2gvYXJtNjQvbW0vbW11LmM6MTk0MDojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL2FybTY0L21tL21tdS5jLTE5NDEtc3RhdGljIHZvaWQgX19yZW1vdmVfcGdkX21hcHBpbmcocGdkX3QgKnBnZGlyLCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1NjQgc2l6ZSlcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnPTk3PUNPTkZJR19aU01BTExPQz15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTk4LSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzo5OTpDT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZy0xMDAtIyBDT05GSUdfTUhQX0RFRkFVTFRfT05MSU5FX1RZUEVfT0ZGTElORSBpcyBub3Qgc2V0XG4tLVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZz0xMTI9Q09ORklHX1pTTUFMTE9DPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTEzLSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzoxMTQ6Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTE1LSMgQ09ORklHX01IUF9ERUZBVUxUX09OTElORV9UWVBFX09GRkxJTkUgaXMgbm90IHNldFxuLS1cbmFyY2gvbG9vbmdhcmNoL21tL2luaXQuYz02ND12b2lkIF9faW5pdCBmaXhyYW5nZV9pbml0KHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBwZ2RfdCAqcGdkX2Jhc2UpXG4tLVxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTEwNS1cbmFyY2gvbG9vbmdhcmNoL21tL2luaXQuYzoxMDY6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTEwNy1pbnQgYXJjaF9hZGRfbWVtb3J5KGludCBuaWQsIHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCBtaHBfcGFyYW1zICpwYXJhbXMpXG4tLVxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jPTE0Mz1pbnQgX19tZW1pbml0IHZtZW1tYXBfcG9wdWxhdGUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXG4tLVxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTE1Mi1cbmFyY2gvbG9vbmdhcmNoL21tL2luaXQuYzoxNTM6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTE1NC12b2lkIHZtZW1tYXBfZnJlZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXApXG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc9NTc9Q09ORklHX05VTUE9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6NTg6Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnLTU5LUNPTkZJR19NRU1PUllfSE9UUkVNT1ZFPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc9ODY9Q09ORklHX1NIVUZGTEVfUEFHRV9BTExPQ0FUT1I9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnLTg3LSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnOjg4OkNPTkZJR19NRU1PUllfSE9UUExVRz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctODktQ09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGd0YWJsZS5oPTEwMTU9c3RhdGljIGlubGluZSBpbnQgX19tZW1pbml0IHZtZW1tYXBfY3JlYXRlX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCxcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUuaC0xMDIzLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9wZ3RhYmxlLmg6MTAyNDojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUuaC0xMDI1LXN0YXRpYyBpbmxpbmUgdm9pZCB2bWVtbWFwX3JlbW92ZV9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9yYWRpeC5oPTMzMz1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcmFkaXhfX2dldF90cmVlX3NpemUodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4LmgtMzQ4LVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9yYWRpeC5oOjM0OTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4LmgtMzUwLWludCByYWRpeF9fY3JlYXRlX3NlY3Rpb25fbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4Lmg9MzUyPWludCByYWRpeF9fcmVtb3ZlX3NlY3Rpb25fbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7XG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4Lmg6MzUzOiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaC0zNTQtXG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21hY2hkZXAuaD0yNj1zdHJ1Y3QgbWFjaGRlcF9jYWxscyB7XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21hY2hkZXAuaC0zMy0jZW5kaWZcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9tYWNoZGVwLmg6MzQ6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21hY2hkZXAuaC0zNS1cdHVuc2lnbmVkIGxvbmdcdCgqbWVtb3J5X2Jsb2NrX3NpemUpKHZvaWQpO1xuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9tbXpvbmUuaD0yOD1leHRlcm4gY3B1bWFza192YXJfdCBub2RlX3RvX2NwdW1hc2tfbWFwW107XG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbW16b25lLmg6Mjk6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21tem9uZS5oLTMwLWV4dGVybiB1bnNpZ25lZCBsb25nIG1heF9wZm47XG4tLVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NwYXJzZW1lbS5oLTE0LVxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NwYXJzZW1lbS5oOjE1OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9zcGFyc2VtZW0uaC0xNi1leHRlcm4gaW50IHJlbW92ZV9zZWN0aW9uX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpO1xuLS1cbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9zcGFyc2VtZW0uaD0yMz1zdGF0aWMgaW5saW5lIGludCBob3RfYWRkX3Njbl90b19uaWQodW5zaWduZWQgbG9uZyBzY25fYWRkcilcbi0tXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc3BhcnNlbWVtLmgtMjctI2VuZGlmIC8qIENPTkZJR19OVU1BICovXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc3BhcnNlbWVtLmg6Mjg6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NwYXJzZW1lbS5oLTI5LSNlbmRpZiAvKiBfX0tFUk5FTF9fICovXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zZXR1cF82NC5jPTgzMj12b2lkIF9faW5pdCBzZXR1cF9wZXJfY3B1X2FyZWFzKHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zZXR1cF82NC5jLTg4MS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvc2V0dXBfNjQuYzo4ODI6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9zZXR1cF82NC5jLTg4My11bnNpZ25lZCBsb25nIG1lbW9yeV9ibG9ja19zaXplX2J5dGVzKHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL2tleGVjL2NyYXNoLmM9NDcyPXVuc2lnbmVkIGludCBhcmNoX2NyYXNoX2dldF9lbGZjb3JlaGRyX3NpemUodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMva2V4ZWMvY3Jhc2guYy00NzctXHRwaGRyX2NudCA9IG51bV9wb3NzaWJsZV9jcHVzKCkgJiM0MzsgMTtcbmFyY2gvcG93ZXJwYy9rZXhlYy9jcmFzaC5jOjQ3ODpcdGlmIChJU19FTkFCTEVEKENPTkZJR19NRU1PUllfSE9UUExVRykpXG5hcmNoL3Bvd2VycGMva2V4ZWMvY3Jhc2guYy00NzktXHRcdHBoZHJfY250ICYjNDM7PSBDT05GSUdfQ1JBU0hfTUFYX01FTU9SWV9SQU5HRVM7XG4tLVxuYXJjaC9wb3dlcnBjL2tleGVjL2ZpbGVfbG9hZF82NC5jPTM3Nz1zdGF0aWMgdW5zaWduZWQgaW50IGtkdW1wX2V4dHJhX2VsZmNvcmVoZHJfc2l6ZShzdHJ1Y3QgY3Jhc2hfbWVtICpjbWVtKVxuYXJjaC9wb3dlcnBjL2tleGVjL2ZpbGVfbG9hZF82NC5jLTM3OC17XG5hcmNoL3Bvd2VycGMva2V4ZWMvZmlsZV9sb2FkXzY0LmM6Mzc5OiNpZiBkZWZpbmVkKENPTkZJR19DUkFTSF9IT1RQTFVHKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfTUVNT1JZX0hPVFBMVUcpXG5hcmNoL3Bvd2VycGMva2V4ZWMvZmlsZV9sb2FkXzY0LmMtMzgwLVx0dW5zaWduZWQgaW50IGV4dHJhX3N6ID0gMDtcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmM9MTA3PWludCBfX21lbWluaXQgaGFzaF9fdm1lbW1hcF9jcmVhdGVfbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYy0xMjktXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF9wZ3RhYmxlLmM6MTMwOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYy0xMzEtdm9pZCBoYXNoX192bWVtbWFwX3JlbW92ZV9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYz0xMTk2PXN0YXRpYyB1bnNpZ25lZCBsb25nIF9faW5pdCBodGFiX2dldF90YWJsZV9zaXplKHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0xMjEwLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYzoxMjExOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTIxMi1zdGF0aWMgaW50IHJlc2l6ZV9ocHRfZm9yX2hvdHBsdWcodW5zaWduZWQgbG9uZyBuZXdfbWVtX3NpemUpXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYz0xMjYyPWludCBoYXNoX19yZW1vdmVfc2VjdGlvbl9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTI3NS19XG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jOjEyNzY6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0xMjc3LVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM9Mjc1PW5vdHJhY2Ugdm9pZCBtbXVfY2xlYW51cF9hbGwodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jLTI4NC1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM6Mjg1OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmMtMjg2LWludCBfX21lbWluaXQgY3JlYXRlX3NlY3Rpb25fbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jPTI5NT1pbnQgX19tZW1pbml0IHJlbW92ZV9zZWN0aW9uX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYy0zMDEtfVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYzozMDI6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYy0zMDMtXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYz02Nzk9bm90cmFjZSB2b2lkIHJhZGl4X19tbXVfY2xlYW51cF9hbGwodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTY5MS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM6NjkyOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtNjkzLXN0YXRpYyB2b2lkIGZyZWVfcHRlX3RhYmxlKHB0ZV90ICpwdGVfc3RhcnQsIHBtZF90ICpwbWQpXG4tLVxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYz05NDY9aW50IF9fbWVtaW5pdCByYWRpeF9fcmVtb3ZlX3NlY3Rpb25fbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTk1MC19XG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jOjk1MTojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTk1Mi1cbi0tXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jPTEzMDY9aW50IF9fbWVtaW5pdCB2bWVtbWFwX3BvcHVsYXRlX2NvbXBvdW5kX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtMTQxMy1cbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM6MTQxNDojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTE0MTUtdm9pZCBfX21lbWluaXQgcmFkaXhfX3ZtZW1tYXBfcmVtb3ZlX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBwYWdlX3NpemUpXG4tLVxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYz0yNzY9aW50IF9fbWVtaW5pdCB2bWVtbWFwX3BvcHVsYXRlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBpbnQgbm9kZSxcbi0tXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jLTI4Ny1cbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmM6Mjg4OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmMtMjg5LXN0YXRpYyB1bnNpZ25lZCBsb25nIHZtZW1tYXBfbGlzdF9mcmVlKHVuc2lnbmVkIGxvbmcgc3RhcnQpXG4tLVxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYz00NjY9c3RhdGljIGludCBfX2luaXQgZHRfc2Nhbl9tbXVfcGlkX3dpZHRoKHVuc2lnbmVkIGxvbmcgbm9kZSxcbi0tXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jLTQ5OC0gKi9cbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmM6NDk5OiNpZm5kZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jLTUwMC0jZGVmaW5lIERFRkFVTFRfTUVNT1JZX0JMT0NLX1NJWkVcdFNaXzE2TVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9tZW0uYz01Mj1FWFBPUlRfU1lNQk9MKF9fcGh5c19tZW1fYWNjZXNzX3Byb3QpO1xuYXJjaC9wb3dlcnBjL21tL21lbS5jLTUzLVxuYXJjaC9wb3dlcnBjL21tL21lbS5jOjU0OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9tbS9tZW0uYy01NS1zdGF0aWMgREVGSU5FX01VVEVYKGxpbmVhcl9tYXBwaW5nX211dGV4KTtcbi0tXG5hcmNoL3Bvd2VycGMvbW0vbW11X2RlY2wuaD0xNzQ9c3RhdGljIGlubGluZSBib29sIGRlYnVnX3BhZ2VhbGxvY19lbmFibGVkX29yX2tmZW5jZSh2b2lkKVxuLS1cbmFyY2gvcG93ZXJwYy9tbS9tbXVfZGVjbC5oLTE3OC1cbmFyY2gvcG93ZXJwYy9tbS9tbXVfZGVjbC5oOjE3OTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3Bvd2VycGMvbW0vbW11X2RlY2wuaC0xODAtaW50IGNyZWF0ZV9zZWN0aW9uX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXG4tLVxuYXJjaC9wb3dlcnBjL21tL25vaGFzaC9ib29rM2VfcGd0YWJsZS5jPTIzPWludCBfX21lbWluaXQgdm1lbW1hcF9jcmVhdGVfbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LFxuLS1cbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvYm9vazNlX3BndGFibGUuYy00Ni1cbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvYm9vazNlX3BndGFibGUuYzo0NzojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL2Jvb2szZV9wZ3RhYmxlLmMtNDgtdm9pZCB2bWVtbWFwX3JlbW92ZV9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsXG4tLVxuYXJjaC9wb3dlcnBjL21tL251bWEuYz0xMjQxPWVhcmx5X3BhcmFtKFwmIzM0O251bWFcJiMzNDssIGVhcmx5X251bWEpO1xuYXJjaC9wb3dlcnBjL21tL251bWEuYy0xMjQyLVxuYXJjaC9wb3dlcnBjL21tL251bWEuYzoxMjQzOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9tbS9udW1hLmMtMTI0NC0vKlxuLS1cbmFyY2gvcG93ZXJwYy9tbS9udW1hLmM9MTM2NT11NjQgbWVtb3J5X2hvdHBsdWdfbWF4KHZvaWQpXG4tLVxuYXJjaC9wb3dlcnBjL21tL251bWEuYy0xMzY4LX1cbmFyY2gvcG93ZXJwYy9tbS9udW1hLmM6MTM2OTojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXG5hcmNoL3Bvd2VycGMvbW0vbnVtYS5jLTEzNzAtXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3NldHVwLmM9NDM3PXN0YXRpYyB2b2lkIHBudl9rZXhlY19jcHVfZG93bihpbnQgY3Jhc2hfc2h1dGRvd24sIGludCBzZWNvbmRhcnkpXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3NldHVwLmMtNDgyLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3NldHVwLmM6NDgzOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9zZXR1cC5jLTQ4NC1zdGF0aWMgdW5zaWduZWQgbG9uZyBwbnZfbWVtb3J5X2Jsb2NrX3NpemUodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvc2V0dXAuYz01Njk9ZGVmaW5lX21hY2hpbmUocG93ZXJudikge1xuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9zZXR1cC5jLTU4NC0jZW5kaWZcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9zZXR1cC5jOjU4NTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvc2V0dXAuYy01ODYtXHQubWVtb3J5X2Jsb2NrX3NpemVcdD0gcG52X21lbW9yeV9ibG9ja19zaXplLFxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9NYWtlZmlsZT0xNz1vYmotJChDT05GSUdfSE9UUExVR19DUFUpXHQmIzQzOz0gaG90cGx1Zy1jcHUub1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19NRU1PUllfSE9UUExVRylcdCYjNDM7PSBob3RwbHVnLW1lbW9yeS5vIHBtZW0ub1xuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL01ha2VmaWxlLTE5LVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9pb21tdS5jPTEyODY9c3RhdGljIHBoeXNfYWRkcl90IGRkd19tZW1vcnlfaG90cGx1Z19tYXgodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaW9tbXUuYy0xMjg5LVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2lvbW11LmM6MTI5MDojaWYgZGVmaW5lZChDT05GSUdfTlVNQSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX01FTU9SWV9IT1RQTFVHKVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2lvbW11LmMtMTI5MS1cdG1heF9hZGRyID0gaG90X2FkZF9kcmNvbmZfbWVtb3J5X21heCgpO1xuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9wc2VyaWVzLmg9NjA9aW50IGhhbmRsZV9kbHBhcl9lcnJvcmxvZyhzdHJ1Y3QgcHNlcmllc19ocF9lcnJvcmxvZyAqaHBfZXJybG9nKTtcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9wc2VyaWVzLmgtNjEtXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvcHNlcmllcy5oOjYyOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9wc2VyaWVzLmgtNjMtaW50IGRscGFyX21lbW9yeShzdHJ1Y3QgcHNlcmllc19ocF9lcnJvcmxvZyAqaHBfZWxvZyk7XG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NldHVwLmM9MTExOD1zdGF0aWMgaW50IHBTZXJpZXNfcGNpX3Byb2JlX21vZGUoc3RydWN0IHBjaV9idXMgKmJ1cylcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYy0xMTI0LVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NldHVwLmM6MTEyNTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYy0xMTI2LXN0YXRpYyB1bnNpZ25lZCBsb25nIHBzZXJpZXNfbWVtb3J5X2Jsb2NrX3NpemUodm9pZClcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYz0xMTM5PWRlZmluZV9tYWNoaW5lKHBzZXJpZXMpIHtcbi0tXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYy0xMTYxLSNlbmRpZlxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NldHVwLmM6MTE2MjojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYy0xMTYzLVx0Lm1lbW9yeV9ibG9ja19zaXplXHQ9IHBzZXJpZXNfbWVtb3J5X2Jsb2NrX3NpemUsXG4tLVxuYXJjaC9yaXNjdi9tbS9pbml0LmM9MTQyOT12b2lkIF9faW5pdCBwZ3RhYmxlX2NhY2hlX2luaXQodm9pZClcbi0tXG5hcmNoL3Jpc2N2L21tL2luaXQuYy0xNDMzLVx0XHRwcmVhbGxvY2F0ZV9wZ2RfcGFnZXNfcmFuZ2UoTU9EVUxFU19WQUREUiwgTU9EVUxFU19FTkQsIFwmIzM0O2JwZi9tb2R1bGVzXCYjMzQ7KTtcbmFyY2gvcmlzY3YvbW0vaW5pdC5jOjE0MzQ6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfTUVNT1JZX0hPVFBMVUcpKSB7XG5hcmNoL3Jpc2N2L21tL2luaXQuYy0xNDM1LVx0XHRwcmVhbGxvY2F0ZV9wZ2RfcGFnZXNfcmFuZ2UoVk1FTU1BUF9TVEFSVCwgVk1FTU1BUF9FTkQsIFwmIzM0O3ZtZW1tYXBcJiMzNDspO1xuLS1cbmFyY2gvcmlzY3YvbW0vaW5pdC5jPTE0NDc9c3RydWN0IGV4ZWNtZW1faW5mbyBfX2luaXQgKmV4ZWNtZW1fYXJjaF9zZXR1cCh2b2lkKVxuLS1cbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTE0NzYtXG5hcmNoL3Jpc2N2L21tL2luaXQuYzoxNDc3OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTE0Nzgtc3RhdGljIHZvaWQgX19tZW1pbml0IGZyZWVfcHRlX3RhYmxlKHB0ZV90ICpwdGVfc3RhcnQsIHBtZF90ICpwbWQpXG4tLVxuYXJjaC9yaXNjdi9tbS9pbml0LmM9MTc0MD12b2lkIF9fcmVmIHZtZW1tYXBfZnJlZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXApXG4tLVxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTc0My19XG5hcmNoL3Jpc2N2L21tL2luaXQuYzoxNzQ0OiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9MTAzPUNPTkZJR19TTFVCX1NUQVRTPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xMDQtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6MTA1OkNPTkZJR19NRU1PUllfSE9UUExVRz15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctMTA2LUNPTkZJR19NRU1PUllfSE9UUkVNT1ZFPXlcbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9OTY9Q09ORklHX1NMQUJfQlVDS0VUUz15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctOTctIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6OTg6Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy05OS1DT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XG4tLVxuYXJjaC9zMzkwL21tL2luaXQuYz0xODg9dm9pZCBfX2luaXQgc2V0dXBfcGVyX2NwdV9hcmVhcyh2b2lkKVxuLS1cbmFyY2gvczM5MC9tbS9pbml0LmMtMjA5LVxuYXJjaC9zMzkwL21tL2luaXQuYzoyMTA6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC9zMzkwL21tL2luaXQuYy0yMTEtXG4tLVxuYXJjaC9zMzkwL21tL2luaXQuYz0yODE9dm9pZCBhcmNoX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSwgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXAsXG4tLVxuYXJjaC9zMzkwL21tL2luaXQuYy0yODktfVxuYXJjaC9zMzkwL21tL2luaXQuYzoyOTA6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xuYXJjaC9zMzkwL21tL2luaXQuYy0yOTEtXG4tLVxuYXJjaC9zMzkwL21tL3ZtZW0uYz01MTM9aW50IF9fbWVtaW5pdCB2bWVtbWFwX3BvcHVsYXRlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBpbnQgbm9kZSxcbi0tXG5hcmNoL3MzOTAvbW0vdm1lbS5jLTUyNi1cbmFyY2gvczM5MC9tbS92bWVtLmM6NTI3OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gvczM5MC9tbS92bWVtLmMtNTI4LVxuLS1cbmFyY2gveDg2L2tlcm5lbC9jcmFzaC5jPTQxNj1pbnQgY3Jhc2hfbG9hZF9zZWdtZW50cyhzdHJ1Y3Qga2ltYWdlICppbWFnZSlcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvY3Jhc2guYy00MzYtXHQgKi9cbmFyY2gveDg2L2tlcm5lbC9jcmFzaC5jOjQzNzpcdGlmIChJU19FTkFCTEVEKENPTkZJR19NRU1PUllfSE9UUExVRykpXG5hcmNoL3g4Ni9rZXJuZWwvY3Jhc2guYy00MzgtXHRcdHBudW0gPSAyICYjNDM7IENPTkZJR19OUl9DUFVTX0RFRkFVTFQgJiM0MzsgQ09ORklHX0NSQVNIX01BWF9NRU1PUllfUkFOR0VTO1xuLS1cbmFyY2gveDg2L2tlcm5lbC9jcmFzaC5jPTQ5ND11bnNpZ25lZCBpbnQgYXJjaF9jcmFzaF9nZXRfZWxmY29yZWhkcl9zaXplKHZvaWQpXG4tLVxuYXJjaC94ODYva2VybmVsL2NyYXNoLmMtNDk5LVx0c3ogPSAyICYjNDM7IENPTkZJR19OUl9DUFVTX0RFRkFVTFQ7XG5hcmNoL3g4Ni9rZXJuZWwvY3Jhc2guYzo1MDA6XHRpZiAoSVNfRU5BQkxFRChDT05GSUdfTUVNT1JZX0hPVFBMVUcpKVxuYXJjaC94ODYva2VybmVsL2NyYXNoLmMtNTAxLVx0XHRzeiAmIzQzOz0gQ09ORklHX0NSQVNIX01BWF9NRU1PUllfUkFOR0VTO1xuLS1cbmFyY2gveDg2L2tlcm5lbC9lODIwLmM9OTA5PV9faW5pdCBzdGF0aWMgaW50IHBhcnNlX21lbW9wdChjaGFyICpwKVxuLS1cbmFyY2gveDg2L2tlcm5lbC9lODIwLmMtOTM0LVxuYXJjaC94ODYva2VybmVsL2U4MjAuYzo5MzU6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC94ODYva2VybmVsL2U4MjAuYy05MzYtXHRtYXhfbWVtX3NpemUgPSBtZW1fc2l6ZTtcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvZTgyMC5jPTEyODg9X19pbml0IHZvaWQgZTgyMF9fbWVtYmxvY2tfc2V0dXAodm9pZClcbi0tXG5hcmNoL3g4Ni9rZXJuZWwvZTgyMC5jLTEyOTItXG5hcmNoL3g4Ni9rZXJuZWwvZTgyMC5jOjEyOTM6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC94ODYva2VybmVsL2U4MjAuYy0xMjk0LVx0Lypcbi0tXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM9ODU0PXN0YXRpYyB2b2lkIF9fbWVtaW5pdCB2bWVtbWFwX2ZsdXNoX3VudXNlZF9wbWQodm9pZClcbi0tXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmMtODY1LVxuYXJjaC94ODYvbW0vaW5pdF82NC5jOjg2NjojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmMtODY3LS8qIFJldHVybnMgdHJ1ZSBpZiB0aGUgUE1EIGlzIGNvbXBsZXRlbHkgdW51c2VkIGFuZCB0aHVzIGl0IGNhbiBiZSBmcmVlZCAqL1xuLS1cbmFyY2gveDg2L21tL2luaXRfNjQuYz05MTg9c3RhdGljIHZvaWQgX19tZW1pbml0IHZtZW1tYXBfdXNlX25ld19zdWJfcG1kKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxuLS1cbmFyY2gveDg2L21tL2luaXRfNjQuYy05NDctICovXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM6OTQ4OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmFyY2gveDg2L21tL2luaXRfNjQuYy05NDktLypcbi0tXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM9MTMwMz12b2lkIF9fcmVmIGFyY2hfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcbi0tXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmMtMTMxMS19XG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM6MTMxMjojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmMtMTMxMy1cbi0tXG5hcmNoL3g4Ni94ZW4vc2V0dXAuYz01Mzc9c3RhdGljIHZvaWQgX19pbml0IHhlbl9hbGlnbl9hbmRfYWRkX2U4MjBfcmVnaW9uKHBoeXNfYWRkcl90IHN0YXJ0LFxuLS1cbmFyY2gveDg2L3hlbi9zZXR1cC5jLTU0NS1cdFx0ZW5kIFx1MDAyNj0gfigocGh5c19hZGRyX3QpUEFHRV9TSVpFIC0gMSk7XG5hcmNoL3g4Ni94ZW4vc2V0dXAuYzo1NDY6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuYXJjaC94ODYveGVuL3NldHVwLmMtNTQ3LVx0XHQvKlxuLS1cbmFyY2gveDg2L3hlbi9zZXR1cC5jPTc5ND1jaGFyICogX19pbml0IHhlbl9tZW1vcnlfc2V0dXAodm9pZClcbi0tXG5hcmNoL3g4Ni94ZW4vc2V0dXAuYy04MTMtXG5hcmNoL3g4Ni94ZW4vc2V0dXAuYzo4MTQ6I2lmIGRlZmluZWQoQ09ORklHX01FTU9SWV9IT1RQTFVHKSBcdTAwMjZcdTAwMjYgZGVmaW5lZChDT05GSUdfWEVOX0JBTExPT04pXG5hcmNoL3g4Ni94ZW4vc2V0dXAuYy04MTUtXHR4ZW5fc2F2ZWRfbWF4X21lbV9zaXplID0gbWF4X21lbV9zaXplO1xuLS1cbmRyaXZlcnMvYWNwaS9udW1hL3NyYXQuYz0zNTk9YWNwaV9wYXJzZV9tZW1vcnlfYWZmaW5pdHkodW5pb24gYWNwaV9zdWJ0YWJsZV9oZWFkZXJzICpoZWFkZXIsXG4tLVxuZHJpdmVycy9hY3BpL251bWEvc3JhdC5jLTM3OS1cdFx0cmV0dXJuIDA7XG5kcml2ZXJzL2FjcGkvbnVtYS9zcmF0LmM6MzgwOlx0aG90cGx1Z2dhYmxlID0gSVNfRU5BQkxFRChDT05GSUdfTUVNT1JZX0hPVFBMVUcpIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9hY3BpL251bWEvc3JhdC5jLTM4MS1cdFx0KG1hLVx1MDAzZWZsYWdzIFx1MDAyNiBBQ1BJX1NSQVRfTUVNX0hPVF9QTFVHR0FCTEUpO1xuLS1cbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jPTQyOD1zdGF0aWMgdTMyIGNhbGN1bGF0ZV9zdXBwb3J0KHZvaWQpXG4tLVxuZHJpdmVycy9hY3BpL3BjaV9yb290LmMtNDUxLSAqIEJhY2tncm91bmQgb24gaG90cGx1ZyBzdXBwb3J0LCBhbmQgbWFraW5nIGl0IGRlcGVuZCBvbiBvbmx5XG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYzo0NTI6ICogQ09ORklHX0hPVFBMVUdfUENJX1BDSUUgdnMuIGFsc28gY29uc2lkZXJpbmcgQ09ORklHX01FTU9SWV9IT1RQTFVHOlxuZHJpdmVycy9hY3BpL3BjaV9yb290LmMtNDUzLSAqXG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYzo0NTQ6ICogQ09ORklHX0FDUElfSE9UUExVR19NRU1PUlkgZG9lcyBkZXBlbmQgb24gQ09ORklHX01FTU9SWV9IT1RQTFVHLCBidXRcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jLTQ1NS0gKiB0aGVyZSBpcyBubyBleGlzdGluZyBfT1NDIGZvciBtZW1vcnkgaG90cGx1ZyBzdXBwb3J0LiBUaGUgcmVhc29uIGlzIHRoYXRcbi0tXG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYy00NzAtICogbm90IHN1cHBvcnQgYmxvY2tpbmcgaG90cGx1ZywgaXMgdG8gcmVxdWlyZSB0aGUgbWVtb3J5IGRldmljZSB0byBiZVxuZHJpdmVycy9hY3BpL3BjaV9yb290LmM6NDcxOiAqIGRpc2FibGVkIGJlZm9yZSBob3RwbHVnIGlzIGF0dGVtcHRlZC4gV2hlbiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgaXNcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jLTQ3Mi0gKiBkaXNhYmxlZCB0aGF0IHN0ZXAgd2lsbCBmYWlsIGFuZCB0aGUgcmVtb3ZlIGF0dGVtcHQgY2FuY2VsbGVkIGJ5IHRoZVxuZHJpdmVycy9hY3BpL3BjaV9yb290LmMtNDczLSAqIHVzZXIuIElmIHRoYXQgaXMgbm90IGhvbm9yZWQgYW5kIHRoZSBjYXJkIGlzIHJlbW92ZWQgYW55d2F5IHRoZW4gaXRcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jOjQ3NDogKiBkb2VzIG5vdCBtYXR0ZXIgaWYgQ09ORklHX01FTU9SWV9IT1RQTFVHIGlzIGVuYWJsZWQgb3Igbm90LCBpdCB3aWxsXG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYy00NzUtICogY2F1c2UgYSBjcmFzaCBhbmQgb3RoZXIgYmFkbmVzcy5cbi0tXG5kcml2ZXJzL2Jhc2UvTWFrZWZpbGU9MTU9b2JqLSQoQ09ORklHX05VTUEpXHQmIzQzOz0gbm9kZS5vXG5kcml2ZXJzL2Jhc2UvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX01FTU9SWV9IT1RQTFVHKSAmIzQzOz0gbWVtb3J5Lm9cbmRyaXZlcnMvYmFzZS9NYWtlZmlsZS0xNy1pZmVxICgkKENPTkZJR19TWVNGUykseSlcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9MjA3PWludCBtZW1vcnlfbm90aWZ5KGVudW0gbWVtb3J5X2Jsb2NrX3N0YXRlIHN0YXRlLCB2b2lkICp2KVxuLS1cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy0yMTEtXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6MjEyOiNpZiBkZWZpbmVkKENPTkZJR19NRU1PUllfRkFJTFVSRSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX01FTU9SWV9IT1RQTFVHKVxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTIxMy1zdGF0aWMgdW5zaWduZWQgbG9uZyBtZW1ibGtfbnJfcG9pc29uKHN0cnVjdCBtZW1vcnlfYmxvY2sgKm1lbSk7XG4tLVxuZHJpdmVycy9iYXNlL21lbW9yeS5jPTExOTY9aW50IHdhbGtfZHluYW1pY19tZW1vcnlfZ3JvdXBzKGludCBuaWQsIHdhbGtfbWVtb3J5X2dyb3Vwc19mdW5jX3QgZnVuYyxcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtMTIxNy1cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYzoxMjE4OiNpZiBkZWZpbmVkKENPTkZJR19NRU1PUllfRkFJTFVSRSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX01FTU9SWV9IT1RQTFVHKVxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTEyMTktdm9pZCBtZW1ibGtfbnJfcG9pc29uX2luYyh1bnNpZ25lZCBsb25nIHBmbilcbi0tXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jPTEwOT1zdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqbm9kZV9hY2Nlc3Nfbm9kZV9ncm91cHNbXSA9IHtcbi0tXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jLTExNC1cbmRyaXZlcnMvYmFzZS9ub2RlLmM6MTE1OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmRyaXZlcnMvYmFzZS9ub2RlLmMtMTE2LXN0YXRpYyBCTE9DS0lOR19OT1RJRklFUl9IRUFEKG5vZGVfY2hhaW4pO1xuLS1cbmRyaXZlcnMvYmFzZS9ub2RlLmM9NzY0PWludCB1bnJlZ2lzdGVyX2NwdV91bmRlcl9ub2RlKHVuc2lnbmVkIGludCBjcHUsIHVuc2lnbmVkIGludCBuaWQpXG4tLVxuZHJpdmVycy9iYXNlL25vZGUuYy03ODItXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jOjc4MzojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jLTc4NC1zdGF0aWMgdm9pZCBkb19yZWdpc3Rlcl9tZW1vcnlfYmxvY2tfdW5kZXJfbm9kZShpbnQgbmlkLFxuLS1cbmRyaXZlcnMvYmFzZS9ub2RlLmM9ODY0PXZvaWQgcmVnaXN0ZXJfbWVtb3J5X2Jsb2Nrc191bmRlcl9ub2RlX2hvdHBsdWcoaW50IG5pZCwgdW5zaWduZWQgbG9uZyBzdGFydF9wZm4sXG4tLVxuZHJpdmVycy9iYXNlL25vZGUuYy04NzAtfVxuZHJpdmVycy9iYXNlL25vZGUuYzo4NzE6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xuZHJpdmVycy9iYXNlL25vZGUuYy04NzItXG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmM9NTc5PXN0YXRpYyB2b2lkIGRpc2FibGVfcGFnZV9yZXBvcnRpbmcodm9pZCk7XG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy01ODAtXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYzo1ODE6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuZHJpdmVycy9odi9odl9iYWxsb29uLmMtNTgyLXN0YXRpYyBpbmxpbmUgYm9vbCBoYXNfcGZuX2lzX2JhY2tlZChzdHJ1Y3QgaHZfaG90YWRkX3N0YXRlICpoYXMsXG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmM9OTY4PXN0YXRpYyB2b2lkIGhvdF9hZGRfcmVxKHN0cnVjdCB3b3JrX3N0cnVjdCAqZHVtbXkpXG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtOTcwLVx0c3RydWN0IGRtX2hvdF9hZGRfcmVzcG9uc2UgcmVzcDtcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjk3MTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy05NzItXHR1bnNpZ25lZCBsb25nIHBnX3N0YXJ0LCBwZm5fY250O1xuLS1cbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTk4MC1cbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjk4MTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy05ODItXHRwZ19zdGFydCA9IGRtLVx1MDAzZWhhX3dyay5oYV9wYWdlX3JhbmdlLmZpbmZvLnN0YXJ0X3BhZ2U7XG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmM9MTkzNj1zdGF0aWMgaW50IGJhbGxvb25fcHJvYmUoc3RydWN0IGh2X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTE5NDQtXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYzoxOTQ1OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTE5NDYtXHQvKlxuLS1cbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTE5NzUtXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYzoxOTc2OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTE5NzctXHRzZXRfb25saW5lX3BhZ2VfY2FsbGJhY2soXHUwMDI2aHZfb25saW5lX3BhZ2UpO1xuLS1cbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTIwMDctY29ubmVjdF9lcnJvcjpcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjIwMDg6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMjAwOS1cdHVucmVnaXN0ZXJfbWVtb3J5X25vdGlmaWVyKFx1MDAyNmh2X21lbW9yeV9uYik7XG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmM9MjAxNT1zdGF0aWMgdm9pZCBiYWxsb29uX3JlbW92ZShzdHJ1Y3QgaHZfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMjAzOC1cdFx0dm1idXNfY2xvc2UoZGV2LVx1MDAzZWNoYW5uZWwpO1xuZHJpdmVycy9odi9odl9iYWxsb29uLmM6MjAzOTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy0yMDQwLVx0XHR1bnJlZ2lzdGVyX21lbW9yeV9ub3RpZmllcihcdTAwMjZodl9tZW1vcnlfbmIpO1xuLS1cbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jPTIwNzY9c3RhdGljIGludCBiYWxsb29uX3Jlc3VtZShzdHJ1Y3QgaHZfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMjEwMS1cdGRpc2FibGVfcGFnZV9yZXBvcnRpbmcoKTtcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjIxMDI6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMjEwMy1cdHVucmVnaXN0ZXJfbWVtb3J5X25vdGlmaWVyKFx1MDAyNmh2X21lbW9yeV9uYik7XG4tLVxuZHJpdmVycy9zMzkwL2NoYXIvTWFrZWZpbGU9MjA9b2JqLXkgJiM0Mzs9IGN0cmxjaGFyLm8ga2V5Ym9hcmQubyBkZWZrZXltYXAubyBzY2xwLm8gc2NscF9ydy5vIHNjbHBfcXVpZXNjZS5vIFxcXG4tLVxuZHJpdmVycy9zMzkwL2NoYXIvTWFrZWZpbGUtMjMtXG5kcml2ZXJzL3MzOTAvY2hhci9NYWtlZmlsZToyNDpvYmotJChDT05GSUdfTUVNT1JZX0hPVFBMVUcpICYjNDM7PSBzY2xwX21lbS5vXG5kcml2ZXJzL3MzOTAvY2hhci9NYWtlZmlsZS0yNS1vYmotJChDT05GSUdfVE4zMjcwKSAmIzQzOz0gcmF3MzI3MC5vIGNvbjMyNzAub1xuLS1cbmRyaXZlcnMveGVuL3hlbi1iYWxsb29uLmMtNTMtXG5kcml2ZXJzL3hlbi94ZW4tYmFsbG9vbi5jOjU0OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmRyaXZlcnMveGVuL3hlbi1iYWxsb29uLmMtNTUtdTY0IHhlbl9zYXZlZF9tYXhfbWVtX3NpemUgPSAwO1xuLS1cbmRyaXZlcnMveGVuL3hlbi1iYWxsb29uLmM9NjM9c3RhdGljIHZvaWQgd2F0Y2hfdGFyZ2V0KHN0cnVjdCB4ZW5idXNfd2F0Y2ggKndhdGNoLFxuLS1cbmRyaXZlcnMveGVuL3hlbi1iYWxsb29uLmMtNzAtXG5kcml2ZXJzL3hlbi94ZW4tYmFsbG9vbi5jOjcxOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcbmRyaXZlcnMveGVuL3hlbi1iYWxsb29uLmMtNzItXHQvKiBUaGUgYmFsbG9vbiBkcml2ZXIgd2lsbCB0YWtlIGNhcmUgb2YgYWRkaW5nIG1lbW9yeSBub3cuICovXG4tLVxuaW5jbHVkZS9saW51eC9pbml0LmgtODAtXG5pbmNsdWRlL2xpbnV4L2luaXQuaDo4MTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXG5pbmNsdWRlL2xpbnV4L2luaXQuaC04Mi0jZGVmaW5lIF9fbWVtaW5pdFxuLS1cbmluY2x1ZGUvbGludXgvaW9wb3J0Lmg9Mzk0PWV4dGVybiB2b2lkIHJlbGVhc2VfbWVtX3JlZ2lvbl9hZGp1c3RhYmxlKHJlc291cmNlX3NpemVfdCwgcmVzb3VyY2Vfc2l6ZV90KTtcbmluY2x1ZGUvbGludXgvaW9wb3J0LmgtMzk1LSNlbmRpZlxuaW5jbHVkZS9saW51eC9pb3BvcnQuaDozOTY6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xuaW5jbHVkZS9saW51eC9pb3BvcnQuaC0zOTctZXh0ZXJuIHZvaWQgbWVyZ2Vfc3lzdGVtX3JhbV9yZXNvdXJjZShzdHJ1Y3QgcmVzb3VyY2UgKnJlcyk7XG4tLVxuaW5jbHVkZS9saW51eC9tZW1vcnkuaD03OD1zdHJ1Y3QgbWVtb3J5X2Jsb2NrIHtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oLTkzLVx0c3RydWN0IGxpc3RfaGVhZCBncm91cF9uZXh0O1x0LyogbmV4dCBibG9jayBpbnNpZGUgbWVtb3J5IGdyb3VwICovXG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oOjk0OiNpZiBkZWZpbmVkKENPTkZJR19NRU1PUllfRkFJTFVSRSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX01FTU9SWV9IT1RQTFVHKVxuaW5jbHVkZS9saW51eC9tZW1vcnkuaC05NS1cdGF0b21pY19sb25nX3QgbnJfaHdwb2lzb247XG4tLVxuaW5jbHVkZS9saW51eC9tZW1vcnkuaD0xMDk9c3RydWN0IG1lbV9zZWN0aW9uO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NjEzCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqTWVtb3J5IEhvdHBsdWcgQ29uZmlndXJhdGlvbiBJbnZlc3RpZ2F0aW9uKioKCkFscmlnaHQsIHNvIGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgIGlzIHRoZSBwcmltYXJ5IHN3aXRjaC4gVGhhdCYjMzk7cyB0aGUgZ2l2ZW4uIE5vdywgdGhlIG5leHQgcXVlc3Rpb24gaXMgYWx3YXlzOiBkbyBJICphbHNvKiBuZWVkIGBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRWA/IEFyZSB0aG9zZSBmdW5jdGlvbmFsbHkgZGlzdGluY3Qgb3IganVzdCBsb2dpY2FsbHkgZGlmZmVyZW50PyBJIG5lZWQgdG8gY2xhcmlmeSB0aGUgcmVsYXRpb25zaGlwIHRoZXJlLgoKVG8gYW5zd2VyIHRoYXQsIEkmIzM5O20gdGhpbmtpbmcgSSBzaG91bGQgZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSBjb2RlLiBUaGUgc3RhbmRhcmQgZ28tdG8gaW4gdGhlc2Ugc2l0dWF0aW9ucyBpcyBgbW0vbWVtb3J5X2hvdHBsdWcuY2AuIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBjb3JlIG1lbW9yeSBob3RwbHVnIGxvZ2ljIHVzdWFsbHkgcmVzaWRlcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgdHJ5X29mZmxpbmVfbm9kZWAuIFRoYXQgZnVuY3Rpb24gaXMgY3JpdGljYWw7IGl04oCZcyB0aGUgZ2F0ZXdheSB0byB0YWtpbmcgYSBub2RlIG9mZmxpbmUuIFVuZGVyc3RhbmRpbmcgaXRzIGNoZWNrcyBhbmQgcHJlY29uZGl0aW9ucyB3aWxsIGdpdmUgbWUgYSB2ZXJ5IGNsZWFyIHBpY3R1cmUgb2Ygd2hlbiBob3RyZW1vdmUgZnVuY3Rpb25hbGl0eSBpcyBhY3R1YWxseSAqcmVxdWlyZWQqIHRvIGV4aXN0IGFuZCBiZSBlbmFibGVkIGFuZCB0aGUgcmVsYXRpb25zaGlwIHRoYXQgaGFzIHdpdGggdGhlIGJhc2UgaG90cGx1ZyBjb25maWd1cmF0aW9uLiBUaGlzIHNob3VsZCBjbGFyaWZ5IHRoZSBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBxdWlja2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfTUVNT1JZX0hPVFJFTU9WRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL21lbW9yeS1ob3RwbHVnLnJzdD0zMzY9VGhlIGZvbGxvd2luZyBmaWxlcyBhcmUgY3VycmVudGx5IGRlZmluZWQ6XG4tLVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3QtMzc3LVxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3Q6Mzc4Olx0XHQgICAgQXZhaWxhYmlsaXR5IGRlcGVuZHMgb24gdGhlIENPTkZJR19NRU1PUllfSE9UUkVNT1ZFXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL21lbW9yeS1ob3RwbHVnLnJzdC0zNzktXHRcdCAgICBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24uXG4tLVxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZz0xMzM9Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc6MTM0OkNPTkZJR19NRU1PUllfSE9UUkVNT1ZFPXlcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWctMTM1LUNPTkZJR19LU009eVxuLS1cbmFyY2gvYXJtNjQvbW0vbW11LmM9MjI0Nj1zdGF0aWMgaW50IF9faW5pdCBwcmV2ZW50X21lbW9yeV9yZW1vdmVfaW5pdCh2b2lkKVxuLS1cbmFyY2gvYXJtNjQvbW0vbW11LmMtMjI0OS1cbmFyY2gvYXJtNjQvbW0vbW11LmM6MjI1MDpcdGlmICghSVNfRU5BQkxFRChDT05GSUdfTUVNT1JZX0hPVFJFTU9WRSkpXG5hcmNoL2FybTY0L21tL21tdS5jLTIyNTEtXHRcdHJldHVybiByZXQ7XG4tLVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz0xMDE9Q09ORklHX01IUF9ERUZBVUxUX09OTElORV9UWVBFX09OTElORV9BVVRPPXlcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTEwMy0jIENPTkZJR19NSFBfREVGQVVMVF9PTkxJTkVfVFlQRV9PTkxJTkVfTU9WQUJMRSBpcyBub3Qgc2V0XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnOjEwNDpDT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTEwNS1DT05GSUdfS1NNPXlcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTExNj1DT05GSUdfTUhQX0RFRkFVTFRfT05MSU5FX1RZUEVfT05MSU5FX0FVVE89eVxuLS1cbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTE4LSMgQ09ORklHX01IUF9ERUZBVUxUX09OTElORV9UWVBFX09OTElORV9NT1ZBQkxFIGlzIG5vdCBzZXRcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6MTE5OkNPTkZJR19NRU1PUllfSE9UUkVNT1ZFPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTIwLUNPTkZJR19LU009eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnPTU4PUNPTkZJR19NRU1PUllfSE9UUExVRz15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZzo1OTpDT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZy02MC1DT05GSUdfS1NNPXlcbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc9ODg9Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZzo4OTpDT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctOTAtQ09ORklHX0tTTT15XG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2hvdHBsdWctbWVtb3J5LmM9MjIyPXN0YXRpYyBpbnQgZGxwYXJfb25saW5lX2xtYihzdHJ1Y3QgZHJtZW1fbG1iICpsbWIpXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2hvdHBsdWctbWVtb3J5LmMtMjI2LVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2hvdHBsdWctbWVtb3J5LmM6MjI3OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2hvdHBsdWctbWVtb3J5LmMtMjI4LXN0YXRpYyBpbnQgZGxwYXJfb2ZmbGluZV9sbWIoc3RydWN0IGRybWVtX2xtYiAqbG1iKVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jPTU1OD1zdGF0aWMgaW50IGRscGFyX21lbW9yeV9yZW1vdmVfYnlfaWModTMyIGxtYnNfdG9fcmVtb3ZlLCB1MzIgZHJjX2luZGV4KVxuLS1cbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jLTU2MS19XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYzo1NjI6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUkVNT1ZFICovXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYy01NjMtXG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTEwNT1DT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjEwNjpDT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctMTA3LUNPTkZJR19LU009eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz05OD1DT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjk5OkNPTkZJR19NRU1PUllfSE9UUkVNT1ZFPXlcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy0xMDAtQ09ORklHX0tTTT15XG4tLVxuYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL2FjcGkuYz0xNTc9YWNwaV9waHlzaWNhbF9hZGRyZXNzIGdldF9yc2RwX2FkZHIodm9pZClcbi0tXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvYWNwaS5jLTE3MS1cbmFyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9hY3BpLmM6MTcyOiNpZiBkZWZpbmVkKENPTkZJR19SQU5ET01JWkVfQkFTRSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX01FTU9SWV9IT1RSRU1PVkUpXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvYWNwaS5jLTE3My0vKlxuLS1cbmFyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9hY3BpLmM9MjcwPWludCBjb3VudF9pbW1vdmFibGVfbWVtX3JlZ2lvbnModm9pZClcbi0tXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvYWNwaS5jLTMxNi19XG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvYWNwaS5jOjMxNzojZW5kaWYgLyogQ09ORklHX1JBTkRPTUlaRV9CQVNFIFx1MDAyNlx1MDAyNiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRSAqL1xuLS1cbmFyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9rYXNsci5jPTU5Nj1zdGF0aWMgYm9vbCBwcm9jZXNzX21lbV9yZWdpb24oc3RydWN0IG1lbV92ZWN0b3IgKnJlZ2lvbixcbi0tXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQva2FzbHIuYy02MTQtXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQva2FzbHIuYzo2MTU6I2lmIGRlZmluZWQoQ09ORklHX01FTU9SWV9IT1RSRU1PVkUpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19BQ1BJKVxuYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL2thc2xyLmMtNjE2LVx0Lypcbi0tXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvbWlzYy5oPTE3MT1zdGF0aWMgaW5saW5lIGFjcGlfcGh5c2ljYWxfYWRkcmVzcyBnZXRfcnNkcF9hZGRyKHZvaWQpIHsgcmV0dXJuIDA7IH1cbi0tXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvbWlzYy5oLTE3My1cbmFyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9taXNjLmg6MTc0OiNpZiBkZWZpbmVkKENPTkZJR19SQU5ET01JWkVfQkFTRSkgXHUwMDI2XHUwMDI2IGRlZmluZWQoQ09ORklHX01FTU9SWV9IT1RSRU1PVkUpIFx1MDAyNlx1MDAyNiBkZWZpbmVkKENPTkZJR19BQ1BJKVxuYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL21pc2MuaC0xNzUtZXh0ZXJuIHN0cnVjdCBtZW1fdmVjdG9yIGltbW92YWJsZV9tZW1bTUFYX05VTU5PREVTKjJdO1xuLS1cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz0xNTg9c3RhdGljIHNzaXplX3QgcGh5c19pbmRleF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtMTY3LSAqIExlZ2FjeSBpbnRlcmZhY2UgdGhhdCB3ZSBjYW5ub3QgcmVtb3ZlLiBBbHdheXMgaW5kaWNhdGUgXCYjMzQ7cmVtb3ZhYmxlXCYjMzQ7XG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6MTY4OiAqIHdpdGggQ09ORklHX01FTU9SWV9IT1RSRU1PVkUgLSBiYWQgaGV1cmlzdGljLlxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTE2OS0gKi9cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz0xNzA9c3RhdGljIHNzaXplX3QgcmVtb3ZhYmxlX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtMTcyLXtcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYzoxNzM6XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0OyVkXFxuXCYjMzQ7LCAoaW50KUlTX0VOQUJMRUQoQ09ORklHX01FTU9SWV9IT1RSRU1PVkUpKTtcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy0xNzQtfVxuLS1cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz00NDE9c3RhdGljIHNzaXplX3QgcGh5c19kZXZpY2Vfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTQ1MC1cbmRyaXZlcnMvYmFzZS9tZW1vcnkuYzo0NTE6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUkVNT1ZFXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtNDUyLXN0YXRpYyBpbnQgcHJpbnRfYWxsb3dlZF96b25lKGNoYXIgKmJ1ZiwgaW50IGxlbiwgaW50IG5pZCxcbi0tXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9NjYyPXN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICptZW1vcnlfbWVtYmxrX2F0dHJzW10gPSB7XG4tLVxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTY2Ni1cdFx1MDAyNmRldl9hdHRyX3JlbW92YWJsZS5hdHRyLFxuZHJpdmVycy9iYXNlL21lbW9yeS5jOjY2NzojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RSRU1PVkVcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy02NjgtXHRcdTAwMjZkZXZfYXR0cl92YWxpZF96b25lcy5hdHRyLFxuLS1cbmRyaXZlcnMvZGF4L2ttZW0uYz02OD1zdGF0aWMgaW50IGRldl9kYXhfa21lbV9wcm9iZShzdHJ1Y3QgZGV2X2RheCAqZGV2X2RheClcbi0tXG5kcml2ZXJzL2RheC9rbWVtLmMtMjA3LVxuZHJpdmVycy9kYXgva21lbS5jOjIwODojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RSRU1PVkVcbmRyaXZlcnMvZGF4L2ttZW0uYy0yMDktc3RhdGljIHZvaWQgZGV2X2RheF9rbWVtX3JlbW92ZShzdHJ1Y3QgZGV2X2RheCAqZGV2X2RheClcbi0tXG5kcml2ZXJzL2RheC9rbWVtLmM9MjY2PXN0YXRpYyB2b2lkIGRldl9kYXhfa21lbV9yZW1vdmUoc3RydWN0IGRldl9kYXggKmRldl9kYXgpXG4tLVxuZHJpdmVycy9kYXgva21lbS5jLTI3Ni19XG5kcml2ZXJzL2RheC9rbWVtLmM6Mjc3OiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRSAqL1xuZHJpdmVycy9kYXgva21lbS5jLTI3OC1cbi0tXG5pbmNsdWRlL2xpbnV4L2lvcG9ydC5oPTM5MT1leHRlcm4gdm9pZCBfX3JlbGVhc2VfcmVnaW9uKHN0cnVjdCByZXNvdXJjZSAqLCByZXNvdXJjZV9zaXplX3QsXG5pbmNsdWRlL2xpbnV4L2lvcG9ydC5oLTM5Mi1cdFx0XHRcdHJlc291cmNlX3NpemVfdCk7XG5pbmNsdWRlL2xpbnV4L2lvcG9ydC5oOjM5MzojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RSRU1PVkVcbmluY2x1ZGUvbGludXgvaW9wb3J0LmgtMzk0LWV4dGVybiB2b2lkIHJlbGVhc2VfbWVtX3JlZ2lvbl9hZGp1c3RhYmxlKHJlc291cmNlX3NpemVfdCwgcmVzb3VyY2Vfc2l6ZV90KTtcbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9MjU5PXN0YXRpYyBpbmxpbmUgdm9pZCBwZ2RhdF9yZXNpemVfaW5pdChzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KSB7fVxuLS1cbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yNjEtXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MjYyOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI2My1cbi0tXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9Mjg1PXN0YXRpYyBpbmxpbmUgdm9pZCBfX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSkge31cbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDoyODY6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUkVNT1ZFICovXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjg3LVxuLS1cbmtlcm5lbC9jb25maWdzL3hlbi5jb25maWc9MTU9Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcbmtlcm5lbC9jb25maWdzL3hlbi5jb25maWc6MTY6Q09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxua2VybmVsL2NvbmZpZ3MveGVuLmNvbmZpZy0xNy1DT05GSUdfWk9ORV9ERVZJQ0U9eVxuLS1cbmtlcm5lbC9yZXNvdXJjZS5jPTE0NDY9RVhQT1JUX1NZTUJPTChfX3JlbGVhc2VfcmVnaW9uKTtcbmtlcm5lbC9yZXNvdXJjZS5jLTE0NDctXG5rZXJuZWwvcmVzb3VyY2UuYzoxNDQ4OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRVxua2VybmVsL3Jlc291cmNlLmMtMTQ0OS1zdGF0aWMgdm9pZCBhcHBlbmRfY2hpbGRfdG9fcGFyZW50KHN0cnVjdCByZXNvdXJjZSAqbmV3X3BhcmVudCwgc3RydWN0IHJlc291cmNlICpuZXdfY2hpbGQpXG4tLVxua2VybmVsL3Jlc291cmNlLmM9MTUwNz12b2lkIHJlbGVhc2VfbWVtX3JlZ2lvbl9hZGp1c3RhYmxlKHJlc291cmNlX3NpemVfdCBzdGFydCwgcmVzb3VyY2Vfc2l6ZV90IHNpemUpXG4tLVxua2VybmVsL3Jlc291cmNlLmMtMTU5Ni19XG5rZXJuZWwvcmVzb3VyY2UuYzoxNTk3OiNlbmRpZlx0LyogQ09ORklHX01FTU9SWV9IT1RSRU1PVkUgKi9cbmtlcm5lbC9yZXNvdXJjZS5jLTE1OTgtXG4tLVxubW0va3NtLmM9MzI2OT12b2lkIGZvbGlvX21pZ3JhdGVfa3NtKHN0cnVjdCBmb2xpbyAqbmV3Zm9saW8sIHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0va3NtLmMtMzI5Mi1cbm1tL2tzbS5jOjMyOTM6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUkVNT1ZFXG5tbS9rc20uYy0zMjk0LXN0YXRpYyB2b2lkIHdhaXRfd2hpbGVfb2ZmbGluaW5nKHZvaWQpXG4tLVxubW0va3NtLmM9MzQxNz1zdGF0aWMgdm9pZCB3YWl0X3doaWxlX29mZmxpbmluZyh2b2lkKVxuLS1cbm1tL2tzbS5jLTM0MTktfVxubW0va3NtLmM6MzQyMDojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RSRU1PVkUgKi9cbm1tL2tzbS5jLTM0MjEtXG4tLVxubW0va3NtLmM9Mzk3Nz1zdGF0aWMgaW50IF9faW5pdCBrc21faW5pdCh2b2lkKVxuLS1cbm1tL2tzbS5jLTQwMDktXG5tbS9rc20uYzo0MDEwOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRVxubW0va3NtLmMtNDAxMS1cdC8qIFRoZXJlIGlzIG5vIHNpZ25pZmljYW5jZSB0byB0aGlzIHByaW9yaXR5IDEwMCAqL1xuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmM9MTcyMT1ib29sIG1ocF9yYW5nZV9hbGxvd2VkKHU2NCBzdGFydCwgdTY0IHNpemUsIGJvb2wgbmVlZF9tYXBwaW5nKVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMTczMy1cbm1tL21lbW9yeV9ob3RwbHVnLmM6MTczNDojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RSRU1PVkVcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTczNS0vKlxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmM9MjQzOD1FWFBPUlRfU1lNQk9MX0dQTChvZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KTtcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjQzOTojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RSRU1PVkUgKi9cbi0tXG5tbS9wYWdlX2FsbG9jLmM9NDM3ND1zdGF0aWMgdW5zaWduZWQgaW50IHpvbmVsaXN0X2l0ZXJfYmVnaW4odm9pZClcbm1tL3BhZ2VfYWxsb2MuYy00Mzc1LXtcbm1tL3BhZ2VfYWxsb2MuYzo0Mzc2Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01FTU9SWV9IT1RSRU1PVkUpKVxubW0vcGFnZV9hbGxvYy5jLTQzNzctXHRcdHJldHVybiByZWFkX3NlcWJlZ2luKFx1MDAyNnpvbmVsaXN0X3VwZGF0ZV9zZXEpO1xuLS1cbm1tL3BhZ2VfYWxsb2MuYz00MzgyPXN0YXRpYyB1bnNpZ25lZCBpbnQgY2hlY2tfcmV0cnlfem9uZWxpc3QodW5zaWduZWQgaW50IHNlcSlcbm1tL3BhZ2VfYWxsb2MuYy00MzgzLXtcbm1tL3BhZ2VfYWxsb2MuYzo0Mzg0Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01FTU9SWV9IT1RSRU1PVkUpKVxubW0vcGFnZV9hbGxvYy5jLTQzODUtXHRcdHJldHVybiByZWFkX3NlcXJldHJ5KFx1MDAyNnpvbmVsaXN0X3VwZGF0ZV9zZXEsIHNlcSk7XG4tLVxubW0vcGFnZV9hbGxvYy5jPTc1MTc9dm9pZCB6b25lX3BjcF9yZXNldChzdHJ1Y3Qgem9uZSAqem9uZSlcbi0tXG5tbS9wYWdlX2FsbG9jLmMtNzUzNS1cbm1tL3BhZ2VfYWxsb2MuYzo3NTM2OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRVxubW0vcGFnZV9hbGxvYy5jLTc1MzctLypcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLmFhcmNoNjQ9OTA9Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2NDo5MTpDT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLmFhcmNoNjQtOTItQ09ORklHX05BTUVTUEFDRVM9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuczM5MHg9NzY9Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuczM5MHg6Nzc6Q09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweC03OC1DT05GSUdfTkFNRVNQQUNFUz15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbWVtb3J5LWhvdHBsdWcvY29uZmlnPTM9Q09ORklHX01FTU9SWV9OT1RJRklFUl9FUlJPUl9JTkpFQ1Q9bVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbWVtb3J5LWhvdHBsdWcvY29uZmlnOjQ6Q09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Zzb2NrL2NvbmZpZz0xMDk9Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Zzb2NrL2NvbmZpZzoxMTA6Q09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdnNvY2svY29uZmlnLTExMS1DT05GSUdfWk9ORV9ERVZJQ0U9eVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjY5NwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipEaXZpbmcgaW50byB0aGUgYG1lbW9yeV9ob3RwbHVnYCBDb2RlKioKCkFscmlnaHQsIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgYHRyeV9vZmZsaW5lX25vZGVgLiBUaGF0IGZ1bmN0aW9uIGlzIGRlZmluaXRlbHkgdGllZCB0byBtZW1vcnkgaG90LXJlbW92ZSBmdW5jdGlvbmFsaXR5LiBJJiMzOTttIHByZXR0eSBzdXJlIEkgc2F3IGl0IGluIGBpbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmhgIHVuZGVyIHRoYXQgYCNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRWAgZ3VhcmQuIEl0JiMzOTtzIGEga2V5IGZ1bmN0aW9uIGZvciBvZmZsaW5pbmcgYSBub2RlLCBzbyBpdCBtYWtlcyBzZW5zZSBpdCYjMzk7cyBjb25kaXRpb25hbCBsaWtlIHRoYXQuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBzaG91bGQgcXVpY2tseSBqdW1wIHRvIHRoYXQgaGVhZGVyIGZpbGUgYW5kIGRvdWJsZSBjaGVjayB0aGUgY29udGV4dC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXJvdW5kIGxpbmUgMjYyIHRvIGdldCB0aGUgcHJlY2lzZSBsb2NhdGlvbiBhbmQgbWFrZSBzdXJlIG15IG1lbnRhbCBtYXAgaXMgYWNjdXJhdGUuIEkgd2FudCB0byBzZWUgaG93IHRoYXQgZnVuY3Rpb24gaW50ZXJhY3RzIHdpdGggdGhlIG90aGVyIGRlZmluaXRpb25zIGFyb3VuZCBpdC4gR290dGEgZ2V0IHRoZSBmdWxsIHBpY3R1cmUsIGV2ZW4gZm9yIHNvbWV0aGluZyBJICp0aGluayogSSBhbHJlYWR5IGtub3chIEJldHRlciBzYWZlIHRoYW4gc29ycnkgd2hlbiB5b3UmIzM5O3JlIGRlYWxpbmcgd2l0aCBtZW1vcnkgbWFuYWdlbWVudCBhdCB0aGlzIGxldmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0cnlfb2ZmbGluZV9ub2RlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaD0yNTk9c3RhdGljIGlubGluZSB2b2lkIHBnZGF0X3Jlc2l6ZV9pbml0KHN0cnVjdCBwZ2xpc3RfZGF0YSAqcGdkYXQpIHt9XG4tLVxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI2My1cbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDoyNjQ6ZXh0ZXJuIHZvaWQgdHJ5X29mZmxpbmVfbm9kZShpbnQgbmlkKTtcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yNjUtZXh0ZXJuIGludCBvZmZsaW5lX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLFxuLS1cbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaD0yNjk9ZXh0ZXJuIGludCBvZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpO1xuLS1cbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yNzEtI2Vsc2VcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDoyNzI6c3RhdGljIGlubGluZSB2b2lkIHRyeV9vZmZsaW5lX25vZGUoaW50IG5pZCkge31cbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yNzMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMjI3CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMzM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBNZW1vcnkgSG90cGx1ZyBhbmQgVk0gU3RhdGlzdGljcyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgdHJ5X29mZmxpbmVfbm9kZWAgaXMgb25seSBkZWZpbmVkIGlmIGBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRWAgaXMgZW5hYmxlZC4gU2VlbXMgcHJldHR5IG9idmlvdXMsIGJ1dCBhbHdheXMgZ29vZCB0byBjaGVjay4gVGhlcmVmb3JlLCBpdCBvYnZpb3VzbHkgbmVlZHMgYENPTkZJR19NRU1PUllfSE9UUkVNT1ZFYCB0byBiZSBlbmFibGVkLCBhbmQgc2luY2UgbWVtb3J5IGhvdHJlbW92ZSBpbXBsaWVzIGhvdHBsdWcsIGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgIGlzIGFsc28gbmVjZXNzYXJ5LgoKTm93LCBJIHdhcyBsb29raW5nIGF0IGBzeW5jX3ZtX3N0YXRzYCwgYW5kIGl0JiMzOTtzIGxvY2F0ZWQgaW4gYG1tL3Ztc3RhdC5jYC4gSSBrbm93IHRoYXQgZmlsZSBpcyBhbHdheXMgY29tcGlsZWQgaW4sIHNvIHRoYXQmIzM5O3Mgbm90IGEgY29uZGl0aW9uYWwgZGVwZW5kZW5jeS4gVGhlIGludGVyZXN0aW5nIHRoaW5nIGlzIHRoYXQgYHRyeV9vZmZsaW5lX25vZGVgICpjYWxscyogYHN5bmNfdm1fc3RhdHNgLCB3aGljaCBtZWFucyBgc3luY192bV9zdGF0c2AgaXMgcGFydCBvZiB0aGUgY29uZGl0aW9uYWwgcGF0aC4KCkxldCBtZSBjaXJjbGUgYmFjayB0byBgdHJ5X29mZmxpbmVfbm9kZWAgYW5kIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aC4gUmlnaHQsIHNvIGB0cnlfb2ZmbGluZV9ub2RlYCBjYWxscyBgc3luY192bV9zdGF0cygpYC4gVGhlbiBgc3luY192bV9zdGF0cygpYCBjYWxscyBgc2NoZWR1bGVfb25fZWFjaF9jcHUodm1zdGF0X2ZvbGRfd29yaylgLiBBbmQgdGhhdCBmdW5jdGlvbiwgYHZtc3RhdF9mb2xkX3dvcmtgLCBjYWxscyBgcmVmcmVzaF9jcHVfdm1fc3RhdHMoZmFsc2UpYC4KCklzIHRoaXMgYWN0dWFsbHkgc29tZXRoaW5nIEkgc2hvdWxkIHRyeSBmdXp6aW5nPyBZZXMsIGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNwZWNpZmljYWxseSBzY2hlZHVsaW5nIHdvcmsgb24gKmV2ZXJ5KiBDUFUgZHVyaW5nIG1lbW9yeSBob3RwbHVnLiBJdCYjMzk7cyByZWxhdGVkIHRvIGEgZml4IGZvciBvcnBoYW5lZCBwZXItQ1BVIHZtc3RhdCBkaWZmcy4gU28sIGZ1enppbmcgY291bGQgcG90ZW50aWFsbHkgdW5jb3ZlciBpc3N1ZXMgd2l0aCBzY2hlZHVsaW5nIG9uIG11bHRpcGxlIENQVXMgZHVyaW5nIG1lbW9yeSBob3RwbHVnIG9wZXJhdGlvbnMsIG9yIHBlcmhhcHMgc29tZSByYWNlIGNvbmRpdGlvbnMgcmVsYXRlZCB0byBob3cgdGhlIHZtc3RhdCBmb2xkaW5nIHByb2Nlc3MgaGFwcGVucy4gU291bmRzIHByZXR0eSBwcm9taXNpbmcuCgpJJiMzOTttIGZvY3VzaW5nIG15IGF0dGVudGlvbiBvbiB0aGUgZm9sbG93aW5nIHN5bWJvbHM6IGB0cnlfb2ZmbGluZV9ub2RlYCwgYHN5bmNfdm1fc3RhdHNgLCBhbmQgYHZtc3RhdF9mb2xkX3dvcmtgLgoKQW5kIHRoZSBuZWNlc3NhcnkgY29uZmlncyB0byBlbmFibGUgdGhpcyBhcmUgYE1FTU9SWV9IT1RQTFVHYCBhbmQgYE1FTU9SWV9IT1RSRU1PVkVgLgoKTGV0IG1lIGp1c3QgZG91YmxlIGNoZWNrIG9uZSBsYXN0IHRoaW5nOiBpcyBgdHJ5X29mZmxpbmVfbm9kZWAgKmRlZmluaXRlbHkqIHRoZSAqb25seSogY2FsbGVyIG9mIGBzeW5jX3ZtX3N0YXRzYD8gSXQmIzM5O3MgYWx3YXlzIHdvcnRoIHZlcmlmeWluZyB0aG9zZSBhc3N1bXB0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDc6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3luY192bV9zdGF0cyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L3Ztc3RhdC5oPTI5NT12b2lkIGNwdV92bV9zdGF0c19mb2xkKGludCBjcHUpO1xuaW5jbHVkZS9saW51eC92bXN0YXQuaDoyOTY6dm9pZCBzeW5jX3ZtX3N0YXRzKHZvaWQpO1xuaW5jbHVkZS9saW51eC92bXN0YXQuaC0yOTctdm9pZCByZWZyZXNoX3pvbmVfc3RhdF90aHJlc2hvbGRzKHZvaWQpO1xuLS1cbmluY2x1ZGUvbGludXgvdm1zdGF0Lmg9NDAwPXN0YXRpYyBpbmxpbmUgdm9pZCBjcHVfdm1fc3RhdHNfZm9sZChpbnQgY3B1KSB7IH1cbmluY2x1ZGUvbGludXgvdm1zdGF0Lmg6NDAxOnN0YXRpYyBpbmxpbmUgdm9pZCBzeW5jX3ZtX3N0YXRzKHZvaWQpIHsgfVxuaW5jbHVkZS9saW51eC92bXN0YXQuaC00MDItc3RhdGljIGlubGluZSB2b2lkIHF1aWV0X3Ztc3RhdCh2b2lkKSB7IH1cbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTIxODU9dm9pZCB0cnlfb2ZmbGluZV9ub2RlKGludCBuaWQpXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMjE0LVx0ICovXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIyMTU6XHRzeW5jX3ZtX3N0YXRzKCk7XG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyMTYtXHRub2RlX3NldF9vZmZsaW5lKG5pZCk7XG4tLVxubW0vdm1zdGF0LmM9OTQ0PXN0YXRpYyB2b2lkIHZtc3RhdF9mb2xkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxuLS1cbm1tL3Ztc3RhdC5jLTk0OC1cbm1tL3Ztc3RhdC5jOjk0OTp2b2lkIHN5bmNfdm1fc3RhdHModm9pZClcbm1tL3Ztc3RhdC5jLTk1MC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0Mzc4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYHRyeV9vZmZsaW5lX25vZGVgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYHRyeV9vZmZsaW5lX25vZGVgIGZ1bmN0aW9uLCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBvbmx5IGNhbGxlZCBieSBvbmUgcGxhY2UsIHdoaWNoIHNpbXBsaWZpZXMgdGhlIGRlYnVnZ2luZyBwcm9jZXNzLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4KCk5vdywgSSYjMzk7bSB3b25kZXJpbmcgYWJvdXQgdGhlIHN1cnJvdW5kaW5nIGNvbmZpZ3VyYXRpb24uIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29uZmlnIG9wdGlvbnMgdGhhdCBtaWdodCBiZSByZWxldmFudD8gSSBrbm93IGBDT05GSUdfU01QYCBpcyBkZWZpbml0ZWx5IHJlcXVpcmVkLCBiZWNhdXNlIG9mIHRoZSBgc2NoZWR1bGVfb25fZWFjaF9jcHVgIGNhbGwgd2l0aGluLCBidXQgdGhhdCYjMzk7cyBwcmV0dHkgbXVjaCBhIGdpdmVuIGluIHRoZSBzeXprYWxsZXIgY29udGV4dCwgc2luY2UgaXQmIzM5O3MgZW5hYmxlZCBieSBkZWZhdWx0LiBNeSBndXQgZmVlbGluZyBpcyB0aGF0IGBDT05GSUdfTlVNQWAgbWlnaHQgYmUgKm1vcmUqIGludGVyZXN0aW5nIGhlcmUsIHNpbmNlIHRoaXMgZnVuY3Rpb24gb3BlcmF0ZXMgb24gbm9kZXMuIElmIE5VTUEgaXNuJiMzOTt0IGVuYWJsZWQsIGlzIHRoZSBmdW5jdGlvbiBldmVuIGdvaW5nIHRvIGJlIGRvaW5nIGFueXRoaW5nIHN1YnN0YW50aWFsPyBUaGF0IGNvdWxkIGJlIGEgY3JpdGljYWwgcGllY2UgdG8gdW5kZXJzdGFuZC4KCkFscmlnaHQsIGxldCYjMzk7cyBqdXN0IGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UgYW5kIGdldCBhIGNsZWFyZXIgcGljdHVyZS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgZGVmaW5pdGlvbiBvZiBgdHJ5X29mZmxpbmVfbm9kZWAgaW4gYG1tL21lbW9yeV9ob3RwbHVnLmNgIHRvIHNlZSBob3cgaXQgb3BlcmF0ZXMgYW5kIGlmIG15IGh5cG90aGVzZXMgYXJvdW5kIGBDT05GSUdfTlVNQWAgYXJlIGNvcnJlY3QuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwNzo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0cnlfb2ZmbGluZV9ub2RlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vbWVtb3J5X2hvdHBsdWcuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9tZW1vcnlfaG90cGx1Zy5jPTIxNjQ9c3RhdGljIGludCBjaGVja19ub19tZW1ibG9ja19mb3Jfbm9kZV9jYihzdHJ1Y3QgbWVtb3J5X2Jsb2NrICptZW0sIHZvaWQgKmFyZylcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIxNzYtLyoqXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIxNzc6ICogdHJ5X29mZmxpbmVfbm9kZVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMTc4LSAqIEBuaWQ6IHRoZSBub2RlIElEXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMTg0LSAqL1xubW0vbWVtb3J5X2hvdHBsdWcuYzoyMTg1OnZvaWQgdHJ5X29mZmxpbmVfbm9kZShpbnQgbmlkKVxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMTg2LXtcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyMTgtfVxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMjE5OkVYUE9SVF9TWU1CT0wodHJ5X29mZmxpbmVfbm9kZSk7XG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyMjAtXG4tLVxubW0vbWVtb3J5X2hvdHBsdWcuYz0yMjQxPXN0YXRpYyBpbnQgdHJ5X3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSlcbi0tXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyODctXHRpZiAobmlkICE9IE5VTUFfTk9fTk9ERSlcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjI4ODpcdFx0dHJ5X29mZmxpbmVfbm9kZShuaWQpO1xubW0vbWVtb3J5X2hvdHBsdWcuYy0yMjg5LVxuLS1cbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMwMC0gKiBhbmQgb25saW5lL29mZmxpbmUgb3BlcmF0aW9ucyBiZWZvcmUgdGhpcyBjYWxsLCBhcyByZXF1aXJlZCBieVxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMzAxOiAqIHRyeV9vZmZsaW5lX25vZGUoKS5cbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMwMi0gKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDc6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUxNzAKCQkJCQkJCW91dHB1dDogMTc4CgkJCQkJCQl0aG91Z2h0czogMjE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFJlYXNvbmluZyBvbiBNZW1vcnkgSG90cGx1ZyBhbmQgVk0gU3RhdGlzdGljcyoqCgpPa2F5LCBzbyBgdHJ5X29mZmxpbmVfbm9kZWAgaXMgdGhlIGtleSBmdW5jdGlvbiBoZXJlLCBhbmQgaXQmIzM5O3MgYmVpbmcgZXhwb3J0ZWQuIFRoZSBjb2RlIHJlcXVpcmVzIGBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRWAsIHdoaWNoIG1ha2VzIHNlbnNlLiBJJiMzOTtsbCBuZWVkIHRvIGVuYWJsZSBib3RoIGBNRU1PUllfSE9UUExVR2AgYW5kIGBNRU1PUllfSE9UUkVNT1ZFYCBmb3IgdGhpcyB0byB3b3JrIGNvcnJlY3RseS4KCkxldCBtZSB0aGluayB0aHJvdWdoIHRoZSBpbXBsaWNhdGlvbnMuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2FsbCB0byBgc3luY192bV9zdGF0cygpYCB3aXRoaW4gYHRyeV9vZmZsaW5lX25vZGUoKWAuIFRoZSBwdXJwb3NlIG9mIHRoaXMgc2VlbXMgdG8gYmUgdG8gZW5zdXJlIHRoYXQgYW55IHBlbmRpbmcgcGVyLUNQVSBWTSBzdGF0aXN0aWNzIGFyZSBjb3JyZWN0bHkgaW5jb3Jwb3JhdGVkIGludG8gdGhlIGdsb2JhbCBjb3VudGVycyAqYmVmb3JlKiBhIE5VTUEgbm9kZSBnb2VzIG9mZmxpbmUuIFRoaXMgcHJldmVudHMgdGhlIHJlZ3VsYXIgVk0gc3RhdGlzdGljcyBmb2xkaW5nIG1lY2hhbmlzbSBmcm9tIG1pc3NpbmcgdGhlIG9mZmxpbmUgbm9kZSwgd2hpY2ggd291bGQgbGVhdmUgaXRzIHN0YXRzIHN0cmFuZGVkLiBJdOKAmXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGNvcmUgbWVtb3J5IGhvdHBsdWcgYW5kIFZNIHN0YXRpc3RpYyBsb2dpYy4gVGhlIGNyaXRpY2FsIHBvaW50IGlzLCB0aGlzIGlzIGV4cG9zZWQgdG8gdXNlcnNwYWNlIHRocm91Z2ggdGhlIHN5c2ZzIG1lbW9yeSBob3RwbHVnIGludGVyZmFjZXMuCgpHaXZlbiB0aGF0IGl0IGludm9sdmVzIG1lbW9yeSBob3RwbHVnIGFuZCB0aGUgcG90ZW50aWFsIGZvciBjb25jdXJyZW50IG9wZXJhdGlvbnMsIGZ1enppbmcgdGhpcyBhcmVhIHNlZW1zIGxpa2UgYSB2ZXJ5IGdvb2QgaWRlYS4gVGhlcmUgYXJlIGxpa2VseSBvcHBvcnR1bml0aWVzIHRvIGlkZW50aWZ5IHJhY2UgY29uZGl0aW9ucyBvciBzY2hlZHVsaW5nIHByb2JsZW1zIHRoYXQgY291bGQgYXJpc2UgZHVyaW5nIHRoZSBwcm9jZXNzIG9mIG9mZmxpbmluZyBhIG5vZGUuCgpJJiMzOTtsbCBrZWVwIGEgY2xvc2UgZXllIG9uIHRoZXNlIHN5bWJvbHM6IGB0cnlfb2ZmbGluZV9ub2RlYCwgYHN5bmNfdm1fc3RhdHNgLCBhbmQgYHZtc3RhdF9mb2xkX3dvcmtgLCBhcyB0aGV5IGFyZSB0aGUgY29yZSBjb21wb25lbnRzIG9mIHRoaXMgY2hhbmdlLgoKTm93LCBsZXQmIzM5O3Mgc2V0IHRoZSByZXN1bHRzIGFuZCBtb3ZlIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDA3OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNRU1PUllfSE9UUExVRyYjMzQ7LAogICAgJiMzNDtNRU1PUllfSE9UUkVNT1ZFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dHJ5X29mZmxpbmVfbm9kZSYjMzQ7LAogICAgJiMzNDtzeW5jX3ZtX3N0YXRzJiMzNDssCiAgICAmIzM0O3Ztc3RhdF9mb2xkX3dvcmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGNhbGwgdG8gc3luY192bV9zdGF0cygpIGluIHRyeV9vZmZsaW5lX25vZGUoKSB0byBmb2xkIHBlbmRpbmcgcGVyLWNwdSB2bXN0YXQgZGlmZnMgaW50byBnbG9iYWwgY291bnRlcnMgYmVmb3JlIGEgTlVNQSBub2RlIGlzIG9mZmxpbmVkLiBUaGlzIHByZXZlbnRzIHRoZSBwZXJpb2RpYyB2bXN0YXQgZm9sZCBmcm9tIHNraXBwaW5nIHRoZSBvZmZsaW5lZCBub2RlIGFuZCBvcnBoYW5pbmcgdGhlIHJlc2lkdWFsIHN0YXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IGhvdHBsdWcgYW5kIHZtc3RhdCBsb2dpYywgYW5kIGl0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc3lzZnMgbWVtb3J5IGhvdHBsdWcgaW50ZXJmYWNlcy4gRnV6emluZyB0aGlzIGNvdWxkIHVuY292ZXIgcmFjZSBjb25kaXRpb25zIG9yIHNjaGVkdWxpbmcgaXNzdWVzIGR1cmluZyBub2RlIG9mZmxpbmluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUVNT1JZX0hPVFBMVUcmIzM0OywKICAgICYjMzQ7TUVNT1JZX0hPVFJFTU9WRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RyeV9vZmZsaW5lX25vZGUmIzM0OywKICAgICYjMzQ7c3luY192bV9zdGF0cyYjMzQ7LAogICAgJiMzNDt2bXN0YXRfZm9sZF93b3JrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBjYWxsIHRvIHN5bmNfdm1fc3RhdHMoKSBpbiB0cnlfb2ZmbGluZV9ub2RlKCkgdG8gZm9sZCBwZW5kaW5nIHBlci1jcHUgdm1zdGF0IGRpZmZzIGludG8gZ2xvYmFsIGNvdW50ZXJzIGJlZm9yZSBhIE5VTUEgbm9kZSBpcyBvZmZsaW5lZC4gVGhpcyBwcmV2ZW50cyB0aGUgcGVyaW9kaWMgdm1zdGF0IGZvbGQgZnJvbSBza2lwcGluZyB0aGUgb2ZmbGluZWQgbm9kZSBhbmQgb3JwaGFuaW5nIHRoZSByZXNpZHVhbCBzdGF0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBob3RwbHVnIGFuZCB2bXN0YXQgbG9naWMsIGFuZCBpdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHN5c2ZzIG1lbW9yeSBob3RwbHVnIGludGVyZmFjZXMuIEZ1enppbmcgdGhpcyBjb3VsZCB1bmNvdmVyIHJhY2UgY29uZGl0aW9ucyBvciBzY2hlZHVsaW5nIGlzc3VlcyBkdXJpbmcgbm9kZSBvZmZsaW5pbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzo1MjowNC40Mjc3MTY3ODdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTQwNzU5MDU5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNRU1PUllfSE9UUExVR1wiLFxuICAgIFwiTUVNT1JZX0hPVFJFTU9WRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRyeV9vZmZsaW5lX25vZGVcIixcbiAgICBcInN5bmNfdm1fc3RhdHNcIixcbiAgICBcInZtc3RhdF9mb2xkX3dvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgY2FsbCB0byBzeW5jX3ZtX3N0YXRzKCkgaW4gdHJ5X29mZmxpbmVfbm9kZSgpIHRvIGZvbGQgcGVuZGluZyBwZXItY3B1IHZtc3RhdCBkaWZmcyBpbnRvIGdsb2JhbCBjb3VudGVycyBiZWZvcmUgYSBOVU1BIG5vZGUgaXMgb2ZmbGluZWQuIFRoaXMgcHJldmVudHMgdGhlIHBlcmlvZGljIHZtc3RhdCBmb2xkIGZyb20gc2tpcHBpbmcgdGhlIG9mZmxpbmVkIG5vZGUgYW5kIG9ycGhhbmluZyB0aGUgcmVzaWR1YWwgc3RhdHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtZW1vcnkgaG90cGx1ZyBhbmQgdm1zdGF0IGxvZ2ljLCBhbmQgaXQgaXMgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzeXNmcyBtZW1vcnkgaG90cGx1ZyBpbnRlcmZhY2VzLiBGdXp6aW5nIHRoaXMgY291bGQgdW5jb3ZlciByYWNlIGNvbmRpdGlvbnMgb3Igc2NoZWR1bGluZyBpc3N1ZXMgZHVyaW5nIG5vZGUgb2ZmbGluaW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzo1MjowNC40Mjc3MjQ3OTdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2MDA3NjE0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDY4YWNmODQ4MTZhZmI2MTViMDhkOTU0ZmI1ODYwZmRmNGQ2YTllOTNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdW4gMjcgMDc6NTI6MDMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC92bXN0YXQuaCBiL2luY2x1ZGUvbGludXgvdm1zdGF0LmhcXG5pbmRleCAzYzljMjY2Y2Y3ODJhZC4uZWExMDE3NDI3ODExMWUgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC92bXN0YXQuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvdm1zdGF0LmhcXG5AQCAtMjkzLDYgKzI5Myw3IEBAIGV4dGVybiB2b2lkIF9fZGVjX25vZGVfc3RhdGUoc3RydWN0IHBnbGlzdF9kYXRhICosIGVudW0gbm9kZV9zdGF0X2l0ZW0pO1xcbiBcXG4gdm9pZCBxdWlldF92bXN0YXQodm9pZCk7XFxuIHZvaWQgY3B1X3ZtX3N0YXRzX2ZvbGQoaW50IGNwdSk7XFxuK3ZvaWQgc3luY192bV9zdGF0cyh2b2lkKTtcXG4gdm9pZCByZWZyZXNoX3pvbmVfc3RhdF90aHJlc2hvbGRzKHZvaWQpO1xcbiBcXG4gdm9pZCBkcmFpbl96b25lc3RhdChzdHJ1Y3Qgem9uZSAqem9uZSwgc3RydWN0IHBlcl9jcHVfem9uZXN0YXQgKik7XFxuQEAgLTM5Nyw2ICszOTgsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19kZWNfbm9kZV9wYWdlX3N0YXRlKHN0cnVjdCBwYWdlICpwYWdlLFxcbiBcXG4gc3RhdGljIGlubGluZSB2b2lkIHJlZnJlc2hfem9uZV9zdGF0X3RocmVzaG9sZHModm9pZCkgeyB9XFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBjcHVfdm1fc3RhdHNfZm9sZChpbnQgY3B1KSB7IH1cXG4rc3RhdGljIGlubGluZSB2b2lkIHN5bmNfdm1fc3RhdHModm9pZCkgeyB9XFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBxdWlldF92bXN0YXQodm9pZCkgeyB9XFxuIHN0YXRpYyBpbmxpbmUgdm9pZCB2bXN0YXRfZmx1c2hfd29ya3F1ZXVlKHZvaWQpIHsgfVxcbiBcXG5kaWZmIC0tZ2l0IGEvbW0vbWVtb3J5X2hvdHBsdWcuYyBiL21tL21lbW9yeV9ob3RwbHVnLmNcXG5pbmRleCA3YWMxOWZhYjIyNjMyNC4uZGFiNDgzMTY2NzQzOWYgMTAwNjQ0XFxuLS0tIGEvbW0vbWVtb3J5X2hvdHBsdWcuY1xcbisrKyBiL21tL21lbW9yeV9ob3RwbHVnLmNcXG5AQCAtMjIwOCw4ICsyMjA4LDExIEBAIHZvaWQgdHJ5X29mZmxpbmVfbm9kZShpbnQgbmlkKVxcbiBcXG4gXFx0LypcXG4gXFx0ICogYWxsIG1lbW9yeS9jcHUgb2YgdGhpcyBub2RlIGFyZSByZW1vdmVkLCB3ZSBjYW4gb2ZmbGluZSB0aGlzXFxuLVxcdCAqIG5vZGUgbm93LlxcbitcXHQgKiBub2RlIG5vdy4gIEZvbGQgYW55IHBlbmRpbmcgcGVyLWNwdSB2bXN0YXQgZGlmZnMgaW50byB0aGUgZ2xvYmFsXFxuK1xcdCAqIGNvdW50ZXJzIGZpcnN0OiBvbmNlIHRoZSBub2RlIGxlYXZlcyB0aGUgb25saW5lIHNldCB0aGUgcGVyaW9kaWNcXG4rXFx0ICogZm9sZCBza2lwcyBpdCwgb3JwaGFuaW5nIHRoZSByZXNpZHVhbCBvbiBhIGxhdGVyIG9ubGluZS5cXG4gXFx0ICovXFxuK1xcdHN5bmNfdm1fc3RhdHMoKTtcXG4gXFx0bm9kZV9zZXRfb2ZmbGluZShuaWQpO1xcbiBcXHR1bnJlZ2lzdGVyX25vZGUobmlkKTtcXG4gfVxcbmRpZmYgLS1naXQgYS9tbS92bXN0YXQuYyBiL21tL3Ztc3RhdC5jXFxuaW5kZXggZjUzNDk3MmY1MTdkZTAuLmFkNzczNDMyMTJkMzc4IDEwMDY0NFxcbi0tLSBhL21tL3Ztc3RhdC5jXFxuKysrIGIvbW0vdm1zdGF0LmNcXG5AQCAtOTQxLDYgKzk0MSwxNiBAQCB2b2lkIGNwdV92bV9zdGF0c19mb2xkKGludCBjcHUpXFxuIFxcdGZvbGRfZGlmZihnbG9iYWxfem9uZV9kaWZmLCBnbG9iYWxfbm9kZV9kaWZmKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgdm1zdGF0X2ZvbGRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXFxuK3tcXG4rXFx0cmVmcmVzaF9jcHVfdm1fc3RhdHMoZmFsc2UpO1xcbit9XFxuK1xcbit2b2lkIHN5bmNfdm1fc3RhdHModm9pZClcXG4re1xcbitcXHRzY2hlZHVsZV9vbl9lYWNoX2NwdSh2bXN0YXRfZm9sZF93b3JrKTtcXG4rfVxcbitcXG4gLypcXG4gICogdGhpcyBpcyBvbmx5IGNhbGxlZCBpZiAhcG9wdWxhdGVkX3pvbmUoem9uZSksIHdoaWNoIGltcGxpZXMgbm8gb3RoZXIgdXNlcnMgb2ZcXG4gICogcHNldC1cXHUwMDNldm1fc3RhdF9kaWZmW10gZXhpc3QuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA3OjUyOjA0Ljc4ODYwMDg1MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjEwNDY2OTI1NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNT1JZX0hPVFBMVUdcIixcbiAgICBcIk1FTU9SWV9IT1RSRU1PVkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0cnlfb2ZmbGluZV9ub2RlXCIsXG4gICAgXCJzeW5jX3ZtX3N0YXRzXCIsXG4gICAgXCJ2bXN0YXRfZm9sZF93b3JrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNhbGwgdG8gc3luY192bV9zdGF0cygpIGluIHRyeV9vZmZsaW5lX25vZGUoKSB0byBmb2xkIHBlbmRpbmcgcGVyLWNwdSB2bXN0YXQgZGlmZnMgaW50byBnbG9iYWwgY291bnRlcnMgYmVmb3JlIGEgTlVNQSBub2RlIGlzIG9mZmxpbmVkLiBUaGlzIHByZXZlbnRzIHRoZSBwZXJpb2RpYyB2bXN0YXQgZm9sZCBmcm9tIHNraXBwaW5nIHRoZSBvZmZsaW5lZCBub2RlIGFuZCBvcnBoYW5pbmcgdGhlIHJlc2lkdWFsIHN0YXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IGhvdHBsdWcgYW5kIHZtc3RhdCBsb2dpYywgYW5kIGl0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc3lzZnMgbWVtb3J5IGhvdHBsdWcgaW50ZXJmYWNlcy4gRnV6emluZyB0aGlzIGNvdWxkIHVuY292ZXIgcmFjZSBjb25kaXRpb25zIG9yIHNjaGVkdWxpbmcgaXNzdWVzIGR1cmluZyBub2RlIG9mZmxpbmluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2OGFjZjg0ODE2YWZiNjE1YjA4ZDk1NGZiNTg2MGZkZjRkNmE5ZTkzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdW4gMjcgMDc6NTI6MDMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3Ztc3RhdC5oIGIvaW5jbHVkZS9saW51eC92bXN0YXQuaFxuaW5kZXggM2M5YzI2NmNmNzgyYWQuLmVhMTAxNzQyNzgxMTFlIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC92bXN0YXQuaFxuKysrIGIvaW5jbHVkZS9saW51eC92bXN0YXQuaFxuQEAgLTI5Myw2ICsyOTMsNyBAQCBleHRlcm4gdm9pZCBfX2RlY19ub2RlX3N0YXRlKHN0cnVjdCBwZ2xpc3RfZGF0YSAqLCBlbnVtIG5vZGVfc3RhdF9pdGVtKTtcbiBcbiB2b2lkIHF1aWV0X3Ztc3RhdCh2b2lkKTtcbiB2b2lkIGNwdV92bV9zdGF0c19mb2xkKGludCBjcHUpO1xuK3ZvaWQgc3luY192bV9zdGF0cyh2b2lkKTtcbiB2b2lkIHJlZnJlc2hfem9uZV9zdGF0X3RocmVzaG9sZHModm9pZCk7XG4gXG4gdm9pZCBkcmFpbl96b25lc3RhdChzdHJ1Y3Qgem9uZSAqem9uZSwgc3RydWN0IHBlcl9jcHVfem9uZXN0YXQgKik7XG5AQCAtMzk3LDYgKzM5OCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX2RlY19ub2RlX3BhZ2Vfc3RhdGUoc3RydWN0IHBhZ2UgKnBhZ2UsXG4gXG4gc3RhdGljIGlubGluZSB2b2lkIHJlZnJlc2hfem9uZV9zdGF0X3RocmVzaG9sZHModm9pZCkgeyB9XG4gc3RhdGljIGlubGluZSB2b2lkIGNwdV92bV9zdGF0c19mb2xkKGludCBjcHUpIHsgfVxuK3N0YXRpYyBpbmxpbmUgdm9pZCBzeW5jX3ZtX3N0YXRzKHZvaWQpIHsgfVxuIHN0YXRpYyBpbmxpbmUgdm9pZCBxdWlldF92bXN0YXQodm9pZCkgeyB9XG4gc3RhdGljIGlubGluZSB2b2lkIHZtc3RhdF9mbHVzaF93b3JrcXVldWUodm9pZCkgeyB9XG4gXG5kaWZmIC0tZ2l0IGEvbW0vbWVtb3J5X2hvdHBsdWcuYyBiL21tL21lbW9yeV9ob3RwbHVnLmNcbmluZGV4IDdhYzE5ZmFiMjI2MzI0Li5kYWI0ODMxNjY3NDM5ZiAxMDA2NDRcbi0tLSBhL21tL21lbW9yeV9ob3RwbHVnLmNcbisrKyBiL21tL21lbW9yeV9ob3RwbHVnLmNcbkBAIC0yMjA4LDggKzIyMDgsMTEgQEAgdm9pZCB0cnlfb2ZmbGluZV9ub2RlKGludCBuaWQpXG4gXG4gXHQvKlxuIFx0ICogYWxsIG1lbW9yeS9jcHUgb2YgdGhpcyBub2RlIGFyZSByZW1vdmVkLCB3ZSBjYW4gb2ZmbGluZSB0aGlzXG4tXHQgKiBub2RlIG5vdy5cbitcdCAqIG5vZGUgbm93LiAgRm9sZCBhbnkgcGVuZGluZyBwZXItY3B1IHZtc3RhdCBkaWZmcyBpbnRvIHRoZSBnbG9iYWxcbitcdCAqIGNvdW50ZXJzIGZpcnN0OiBvbmNlIHRoZSBub2RlIGxlYXZlcyB0aGUgb25saW5lIHNldCB0aGUgcGVyaW9kaWNcbitcdCAqIGZvbGQgc2tpcHMgaXQsIG9ycGhhbmluZyB0aGUgcmVzaWR1YWwgb24gYSBsYXRlciBvbmxpbmUuXG4gXHQgKi9cbitcdHN5bmNfdm1fc3RhdHMoKTtcbiBcdG5vZGVfc2V0X29mZmxpbmUobmlkKTtcbiBcdHVucmVnaXN0ZXJfbm9kZShuaWQpO1xuIH1cbmRpZmYgLS1naXQgYS9tbS92bXN0YXQuYyBiL21tL3Ztc3RhdC5jXG5pbmRleCBmNTM0OTcyZjUxN2RlMC4uYWQ3NzM0MzIxMmQzNzggMTAwNjQ0XG4tLS0gYS9tbS92bXN0YXQuY1xuKysrIGIvbW0vdm1zdGF0LmNcbkBAIC05NDEsNiArOTQxLDE2IEBAIHZvaWQgY3B1X3ZtX3N0YXRzX2ZvbGQoaW50IGNwdSlcbiBcdGZvbGRfZGlmZihnbG9iYWxfem9uZV9kaWZmLCBnbG9iYWxfbm9kZV9kaWZmKTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgdm1zdGF0X2ZvbGRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXG4re1xuK1x0cmVmcmVzaF9jcHVfdm1fc3RhdHMoZmFsc2UpO1xuK31cbitcbit2b2lkIHN5bmNfdm1fc3RhdHModm9pZClcbit7XG4rXHRzY2hlZHVsZV9vbl9lYWNoX2NwdSh2bXN0YXRfZm9sZF93b3JrKTtcbit9XG4rXG4gLypcbiAgKiB0aGlzIGlzIG9ubHkgY2FsbGVkIGlmICFwb3B1bGF0ZWRfem9uZSh6b25lKSwgd2hpY2ggaW1wbGllcyBubyBvdGhlciB1c2VycyBvZlxuICAqIHBzZXQtXHUwMDNldm1fc3RhdF9kaWZmW10gZXhpc3QuXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzo1MjowNC43ODg2MDM1MTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODI0NDI0Mjg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE1lbW9yeSBIb3RwbHVnIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQncyB0b3VjaGluZyBgbW0vbWVtb3J5X2hvdHBsdWcuY2AgYW5kIGBtbS92bXN0YXQuY2AuIFJpZ2h0LCBpbiBgbW0vbWVtb3J5X2hvdHBsdWcuY2AsIEkgc2VlIGB0cnlfb2ZmbGluZV9ub2RlYCBjYWxscyBgc3luY192bV9zdGF0cygpYC4gQW5kIHRoZW4sIGZsaXBwaW5nIG92ZXIgdG8gYG1tL3Ztc3RhdC5jYCwgYHN5bmNfdm1fc3RhdHMoKWAgaXMgaW1wbGVtZW50ZWQgd2l0aCB0aGF0IGBzY2hlZHVsZV9vbl9lYWNoX2NwdSh2bXN0YXRfZm9sZF93b3JrKWAgY2FsbCwgd2hpY2ggdGhlbiBnb2VzIHRvIGByZWZyZXNoX2NwdV92bV9zdGF0cyhmYWxzZSlgLlxuXG5UaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgbWVtb3J5IGhvdHBsdWcgcHJvY2Vzcywgc3BlY2lmaWNhbGx5IHdoZW4gb2ZmbGluaW5nIGEgTlVNQSBub2RlLiBUaGUgcXVlc3Rpb24gbm93IGJlY29tZXM6IGlzIHRoaXMgcGF0Y2ggZnV6emFibGU/IE1lbW9yeSBob3RwbHVnIGlzIGEgY3JpdGljYWwgZmVhdHVyZSwgb2J2aW91c2x5LCBidXQgaXQncyB0eXBpY2FsbHkgdHJpZ2dlcmVkIGJ5IHN5c2ZzIGludGVyYWN0aW9ucyBvciBzcGVjaWZpYyBoYXJkd2FyZSBldmVudHMsIHJpZ2h0PyBDYW4gSSB0cmlnZ2VyIHRoaXMgZnJvbSB1c2Vyc3BhY2U/IFllcywgZGVmaW5pdGVseS4gSSBjYW4gdXNlIHN5c2ZzLCBzb21ldGhpbmcgbGlrZSBgL3N5cy9kZXZpY2VzL3N5c3RlbS9ub2RlL25vZGVYL29ubGluZWAgb3IgZXZlbiBtZW1vcnkgYmxvY2tzLlxuXG5BbmQsIGNhbiB0aGlzIGV2ZW4gYmUgcmVhY2hlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJIHRoaW5rIGl0IGlzLCBtZW1vcnkgaG90cGx1ZyBpcyBzdXBwb3J0ZWQgaW4gUUVNVSwgc28gdGhhdCBzaG91bGRuJ3QgYmUgYSBwcm9ibGVtLlxuXG5MZXQgbWUganVzdCBjaGVjayBgdHJ5X29mZmxpbmVfbm9kZWAgaW4gYG1tL21lbW9yeV9ob3RwbHVnLmNgIGFnYWluLi4uIGdvdHRhIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGZ1bGwgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM5NywiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA3OjUyOjA5LjYxMzAzMjE3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMDg2NDI3MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidHJ5X29mZmxpbmVfbm9kZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2FjcGkvYWNwaV9wcm9jZXNzb3IuYz00NzY9c3RhdGljIHZvaWQgYWNwaV9wcm9jZXNzb3JfcG9zdF9lamVjdChzdHJ1Y3QgYWNwaV9kZXZpY2UgKmRldmljZSlcXG4tLVxcbmRyaXZlcnMvYWNwaS9hY3BpX3Byb2Nlc3Nvci5jLTUxMS1cXG5kcml2ZXJzL2FjcGkvYWNwaV9wcm9jZXNzb3IuYzo1MTI6XFx0dHJ5X29mZmxpbmVfbm9kZShjcHVfdG9fbm9kZShwci1cXHUwMDNlaWQpKTtcXG5kcml2ZXJzL2FjcGkvYWNwaV9wcm9jZXNzb3IuYy01MTMtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9MjU5PXN0YXRpYyBpbmxpbmUgdm9pZCBwZ2RhdF9yZXNpemVfaW5pdChzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KSB7fVxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI2My1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MjY0OmV4dGVybiB2b2lkIHRyeV9vZmZsaW5lX25vZGUoaW50IG5pZCk7XFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI2NS1leHRlcm4gaW50IG9mZmxpbmVfcGFnZXModW5zaWduZWQgbG9uZyBzdGFydF9wZm4sIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9MjY5PWV4dGVybiBpbnQgb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yNzEtI2Vsc2VcXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MjcyOnN0YXRpYyBpbmxpbmUgdm9pZCB0cnlfb2ZmbGluZV9ub2RlKGludCBuaWQpIHt9XFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI3My1cXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM9MjE2ND1zdGF0aWMgaW50IGNoZWNrX25vX21lbWJsb2NrX2Zvcl9ub2RlX2NiKHN0cnVjdCBtZW1vcnlfYmxvY2sgKm1lbSwgdm9pZCAqYXJnKVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMTc2LS8qKlxcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjE3NzogKiB0cnlfb2ZmbGluZV9ub2RlXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMTc4LSAqIEBuaWQ6IHRoZSBub2RlIElEXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIxODQtICovXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMTg1OnZvaWQgdHJ5X29mZmxpbmVfbm9kZShpbnQgbmlkKVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjE4Ni17XFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyMTgtfVxcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjIxOTpFWFBPUlRfU1lNQk9MKHRyeV9vZmZsaW5lX25vZGUpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjIyMC1cXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM9MjI0MT1zdGF0aWMgaW50IHRyeV9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyODctXFx0aWYgKG5pZCAhPSBOVU1BX05PX05PREUpXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMjg4OlxcdFxcdHRyeV9vZmZsaW5lX25vZGUobmlkKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyODktXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIzMDAtICogYW5kIG9ubGluZS9vZmZsaW5lIG9wZXJhdGlvbnMgYmVmb3JlIHRoaXMgY2FsbCwgYXMgcmVxdWlyZWQgYnlcXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIzMDE6ICogdHJ5X29mZmxpbmVfbm9kZSgpLlxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMwMi0gKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6NTI6MTEuNzIxNjgyNjA4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzgzMzUwMzQ1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTWVtb3J5IFJlbW92YWwgUGF0aHMqKlxuXG5Pa2F5LCBzbyBJJ20gdHJhY2luZyB0aGUgbWVtb3J5IHJlbW92YWwgcHJvY2VzcyBpbiB0aGUga2VybmVsLCBhbmQgaXQgbG9va3MgbGlrZSBgdHJ5X29mZmxpbmVfbm9kZWAgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGluIGEgY291cGxlIG9mIGtleSBhcmVhcy4gSSBzZWUgdGhhdCBpdCdzIGNhbGxlZCBmcm9tIHR3byBkaXN0aW5jdCBmdW5jdGlvbnM6IGB0cnlfcmVtb3ZlX21lbW9yeWAgd2l0aGluIGBtbS9tZW1vcnlfaG90cGx1Zy5jYCDigJMgd2hpY2ggaXMgZXhwZWN0ZWQg4oCTIGFuZCBzdXJwcmlzaW5nbHksIGZyb20gYGFjcGlfcHJvY2Vzc29yX3Bvc3RfZWplY3RgIGluIGBkcml2ZXJzL2FjcGkvYWNwaV9wcm9jZXNzb3IuY2AuIFRoYXQgQUNQSSBjYWxsIGlzIGludGVyZXN0aW5nLCBpdCBpbXBsaWVzIGhhcmR3YXJlIHJlbW92YWwgb2YgbWVtb3J5IGlzIHRpZWQgaW50byBwcm9jZXNzb3IgcmVtb3ZhbCBldmVudHMgc29tZWhvdy5cblxuRGlnZ2luZyBkZWVwZXIgaW50byB0aGUgY2FsbGluZyBzdHJ1Y3R1cmUsIGB0cnlfcmVtb3ZlX21lbW9yeWAgaXRzZWxmIGlzIGNhbGxlZCBieSBib3RoIGBvZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5YCBhbmQganVzdCBwbGFpbiBgcmVtb3ZlX21lbW9yeWAuIEFuZCAqdGhhdCogYHJlbW92ZV9tZW1vcnlgIGZ1bmN0aW9uIGlzIGV4cG9ydGVkLCB3aGljaCBtZWFucyBpdCdzIGEgcHVibGljbHkgYWNjZXNzaWJsZSBpbnRlcmZhY2UgZm9yIG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgdGhhdCBsaWtlbHkgbWVhbnMgYSB2YXJpZXR5IG9mIGRldmljZSBkcml2ZXJzIHJlbHkgb24gaXQgdG8gZ3JhY2VmdWxseSBoYW5kbGUgbWVtb3J5IGJlaW5nIHRha2VuIG9mZmxpbmUuIEFuZCBpbmRlZWQsIHRoZSB0ZXh0IG1lbnRpb25zIHRoYXQgaXTigJlzIGJlaW5nIHVzZWQgYnkgdGhpbmdzIGxpa2UgdmlydGlvLW1lbSwgZGF4LCBhbmQgQUNQSS5cblxuSSBzaG91bGQgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIG9mIGB0cnlfcmVtb3ZlX21lbW9yeWAgaXRzZWxmIGluIGBtbS9tZW1vcnlfaG90cGx1Zy5jYCBub3cgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMuIFRoYXQncyB0aGUgY29yZSBvZiB0aGlzIG9wZXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY5NSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzo1MjoxNS41NTUxODg4NDFaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2NDQ3NTAzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0cnlfcmVtb3ZlX21lbW9yeVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9tZW1vcnlfaG90cGx1Zy5jPTIyMjE9c3RhdGljIGludCBtZW1vcnlfYmxvY2tzX2hhdmVfYWx0bWFwcyh1NjQgc3RhcnQsIHU2NCBzaXplKVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMjQwLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjI0MTpzdGF0aWMgaW50IHRyeV9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMjQyLXtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM9MjMwMz12b2lkIF9fcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzA5LVxcdCAqL1xcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjMxMDpcXHRpZiAodHJ5X3JlbW92ZV9tZW1vcnkoc3RhcnQsIHNpemUpKVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMxMS1cXHRcXHRCVUcoKTtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM9MjMxOD1pbnQgcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzIyLVxcdGxvY2tfZGV2aWNlX2hvdHBsdWcoKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIzMjM6XFx0cmMgPSB0cnlfcmVtb3ZlX21lbW9yeShzdGFydCwgc2l6ZSk7XFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzI0LVxcdHVubG9ja19kZXZpY2VfaG90cGx1ZygpO1xcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYz0yMzgzPWludCBvZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTI0MTgtXFx0aWYgKCFyYykge1xcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjQxOTpcXHRcXHRyYyA9IHRyeV9yZW1vdmVfbWVtb3J5KHN0YXJ0LCBzaXplKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTI0MjAtXFx0XFx0aWYgKHJjKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzo1MjoxNy42MTk2NzQ3NDRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mjc2MjY5NzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIE1lbW9yeSBSZW1vdmFsIEVudHJ5IFBvaW50cyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgZnVuY3Rpb25zIGByZW1vdmVfbWVtb3J5YCBhbmQgYG9mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnlgIOKAkyB0aG9zZSBhcmUgdGhlIGtleSBlbnRyeSBwb2ludHMgZm9yIG1lbW9yeSByZW1vdmFsLiBNeSBwcmltYXJ5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhlc2UgYXJlIGV2ZW4gKmFjY2Vzc2libGUqIGZyb20gdXNlcnNwYWNlLiBBcmUgdGhleSBkaXJlY3RseSBleHBvc2VkLCBvciBhcmUgdGhleSBidXJpZWQgYmVoaW5kIG90aGVyIG1lY2hhbmlzbXM/XG5cbkkgbmVlZCB0byBjb25zaWRlciB0aGUgY29udGV4dCBpbiB3aGljaCBtZW1vcnkgaG90cGx1ZyBldmVudHMgYXJlIHRyaWdnZXJlZC4gSSBrbm93IGl0IGNhbiBiZSBpbml0aWF0ZWQgdGhyb3VnaCBBQ1BJIGV2ZW50cywgdmlydGlvLW1lbSwgb3IgZXZlbiBkYXguIFRoZSBxdWVzdGlvbiBpcywgY2FuICpzeXprYWxsZXIqIGJlIHVzZWQgdG8gdHJpZ2dlciBvbmUgb2YgdGhlc2UgaG90cGx1Z2dpbmcgZXZlbnRzIHdoaWNoIHdpbGwgdGhlbiwgaG9wZWZ1bGx5LCBsZWFkIHRvIHRoZSByZW1vdmFsIG9mIG1lbW9yeT9cblxuU3l6a2FsbGVyIGNhbiB0cmlnZ2VyIG1lbW9yeSBob3RwbHVnIG9wZXJhdGlvbnMsIHNwZWNpZmljYWxseSBpZiBpdCBoYXMgYWNjZXNzIHRvIGxvY2F0aW9ucyBsaWtlIGAvc3lzL2RldmljZXMvc3lzdGVtL21lbW9yeS9tZW1vcnlYL3N0YXRlYC4gQnV0IGZyb20gbXkgZXhwZXJpZW5jZSwgdGhhdCBvZnRlbiByZXN1bHRzIGluIHNpbXBseSBvZmZsaW5pbmcgYW5kIG9ubGluaW5nIG1lbW9yeSBibG9ja3Mg4oCTIG5vdCBhY3R1YWwgKnJlbW92YWwqLiBUaGlzIGlzIGEgY3J1Y2lhbCBkaXN0aW5jdGlvbi5cblxuV2FpdC4uLiBzb21ldGhpbmcgY2xpY2tlZC4gSSByZW1lbWJlciBgdHJ5X29mZmxpbmVfbm9kZWAgZ2V0cyBjYWxsZWQgd2hlbiBhIG5vZGUgZ29lcyBvZmZsaW5lLiBOb3csIHRoZSBrZXkgaXMgdG8gZGV0ZXJtaW5lIGlmIGB0cnlfb2ZmbGluZV9ub2RlYCBjYW4gYmUgcmVhY2hlZCBhbmQgdHJpZ2dlcmVkIHZpYSBzeXNmcy4gVGhpcyBpcyB3aGVyZSBJJ2xsIGZvY3VzIG15IGludmVzdGlnYXRpb24gbm93LiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBwYXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTYwLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA3OjUyOjIxLjg5NTk0Njk4NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDQ4Mzc2MjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm9mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jPTcyND1zdGF0aWMgaW50IHZpcnRpb19tZW1fc2JtX3JlbW92ZV9tYihzdHJ1Y3QgdmlydGlvX21lbSAqdm0sIHVuc2lnbmVkIGxvbmcgbWJfaWQpXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzM5LSAqL1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo3NDA6c3RhdGljIGludCB2aXJ0aW9fbWVtX29mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkoc3RydWN0IHZpcnRpb19tZW0gKnZtLFxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03NDEtXFx0XFx0XFx0XFx0XFx0XFx0dWludDY0X3QgYWRkcixcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03NDktXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjc1MDpcXHRyYyA9IG9mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkoYWRkciwgc2l6ZSk7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTc1MS1cXHRpZiAoIXJjKSB7XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzY5LS8qXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjc3MDogKiBTZWUgdmlydGlvX21lbV9vZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KCk6IFRyeSBvZmZsaW5pbmcgYW5kIHJlbW92aW5nXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTc3MS0gKiBhIHNpbmdsZSBMaW51eCBtZW1vcnkgYmxvY2suXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9NzczPXN0YXRpYyBpbnQgdmlydGlvX21lbV9zYm1fb2ZmbGluZV9hbmRfcmVtb3ZlX21iKHN0cnVjdCB2aXJ0aW9fbWVtICp2bSxcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03NzgtXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjc3OTpcXHRyZXR1cm4gdmlydGlvX21lbV9vZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KHZtLCBhZGRyLCBzaXplKTtcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzgwLX1cXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz03ODg9c3RhdGljIGludCB2aXJ0aW9fbWVtX3NibV90cnlfcmVtb3ZlX3VucGx1Z2dlZF9tYihzdHJ1Y3QgdmlydGlvX21lbSAqdm0sXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzk5LVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo4MDA6XFx0Lyogb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSgpIHdvcmtzIGZvciBvbmxpbmUgYW5kIG9mZmxpbmUgbWVtb3J5LiAqL1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy04MDEtXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2bS1cXHUwMDNlaG90cGx1Z19tdXRleCk7XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtODEwLS8qXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjgxMTogKiBTZWUgdmlydGlvX21lbV9vZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KCk6IFRyeSB0byBvZmZsaW5lIGFuZCByZW1vdmUgYVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy04MTItICogYWxsIExpbnV4IG1lbW9yeSBibG9ja3MgY292ZXJlZCBieSB0aGUgYmlnIGJsb2NrLlxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jPTgxND1zdGF0aWMgaW50IHZpcnRpb19tZW1fYmJtX29mZmxpbmVfYW5kX3JlbW92ZV9iYihzdHJ1Y3QgdmlydGlvX21lbSAqdm0sXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtODE5LVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo4MjA6XFx0cmV0dXJuIHZpcnRpb19tZW1fb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSh2bSwgYWRkciwgc2l6ZSk7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTgyMS19XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9MjY4PWV4dGVybiB2b2lkIF9fcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKTtcXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MjY5OmV4dGVybiBpbnQgb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKTtcXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjcwLVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYz0yMzU5PXN0YXRpYyBpbnQgdHJ5X3Jlb25saW5lX21lbW9yeV9ibG9jayhzdHJ1Y3QgbWVtb3J5X2Jsb2NrICptZW0sIHZvaWQgKmFyZylcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjM4Mi0gKi9cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIzODM6aW50IG9mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSlcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIzODQte1xcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yNDM3LX1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjI0Mzg6RVhQT1JUX1NZTUJPTF9HUEwob2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSk7XFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yNDM5LSNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzo1MjoyMy45NDQzMzAwOThaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzMyNDE1Nzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIE1lbW9yeSBNYW5hZ2VtZW50IExhYnlyaW50aCoqXG5cbk9rYXksIEknbSB0aGlua2luZyBhYm91dCB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgYXNwZWN0IG9mIHRoaXMgc3lzdGVtLiBXZSdyZSBjbGVhcmx5IGRlYWxpbmcgd2l0aCBzb21lIGZvcm0gb2YgcGVyc2lzdGVudCBzdG9yYWdlIG9yIHN0YXRlLiAgVGhlIGN1cnJlbnQgYXBwcm9hY2ggaGFzIGxpa2VseSBjb25zaWRlcmVkIHNldmVyYWwgbWV0aG9kcywgYnV0IHdoYXQgYWJvdXQgYSBwYXJ0aWN1bGFyIGFwcHJvYWNoLCBpbiB0aGlzIGluc3RhbmNlPyBJJ20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gdGhlIGNvbW1hbmQgYW5kIGNvbmNlcHQgb2YgYHJlbW92ZV9tZW1vcnlgLiBUaGlzIHN1Z2dlc3RzIHdlJ3JlIG5vdCBqdXN0IGFwcGVuZGluZyBkYXRhIG9yIG92ZXJ3cml0aW5nIGluLXBsYWNlLiBXZSBuZWVkIHRvIGNvbnNpZGVyIGhvdyB0aGlzIGZ1bmN0aW9uIHdvdWxkIGltcGFjdCB0aGUgb3ZlcmFsbCBzeXN0ZW0uIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGV2YWx1YXRlIHRoZSBpbXBsaWNhdGlvbnMgb2YgcmVtb3ZhbC4gRm9yIGV4YW1wbGUsIHdoYXQgd291bGQgYmUgdGhlIGltcGFjdCBpbiB0ZXJtcyBvZiBjYXNjYWRpbmcgZWZmZWN0cz8gQXJlIHRoZXJlIGFueSBkZXBlbmRlbmNpZXMgb24gdGhlIGRhdGEgYmVpbmcgcmVtb3ZlZD8gSG93IGRvZXMgaXQgaW50ZXJhY3Qgd2l0aCBhbnkgY2FjaGluZyBvciBpbmRleGluZyBtZWNoYW5pc21zIHRoYXQgbWlnaHQgYmUgaW4gcGxhY2U/IEkgbmVlZCB0byB0aGluayB0aGlzIHRocm91Z2ggY2FyZWZ1bGx5LCBlc3BlY2lhbGx5IHJlZ2FyZGluZyBjb25zaXN0ZW5jeSBhbmQgYXZvaWRpbmcgZGF0YSBjb3JydXB0aW9uIG9yIG9ycGhhbmVkIHJlZmVyZW5jZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwMjEsIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA3OjUyOjI2LjY3Njc0ODg3NloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg4OTg0OTI3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZW1vdmVfbWVtb3J5XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTA4IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5hcmNoL2FybTY0L21tL21tdS5jPTE5ODQ9aW50IGFyY2hfYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLFxcbi0tXFxuYXJjaC9hcm02NC9tbS9tbXUuYy0yMDE4LVxcbmFyY2gvYXJtNjQvbW0vbW11LmM6MjAxOTp2b2lkIGFyY2hfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcXG5hcmNoL2FybTY0L21tL21tdS5jLTIwMjAtXFx0XFx0XFx0c3RydWN0IGRldl9wYWdlbWFwICpwZ21hcClcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL21tL2luaXQuYz0xMDc9aW50IGFyY2hfYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBzdHJ1Y3QgbWhwX3BhcmFtcyAqcGFyYW1zKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTEyMS1cXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmM6MTIyOnZvaWQgYXJjaF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxcbmFyY2gvbG9vbmdhcmNoL21tL2luaXQuYy0xMjMtXFx0XFx0XFx0c3RydWN0IGRldl9wYWdlbWFwICpwZ21hcClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9tZW0uYz0xNDU9aW50IF9fcmVmIGFyY2hfYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLFxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL21lbS5jLTE2MC1cXG5hcmNoL3Bvd2VycGMvbW0vbWVtLmM6MTYxOnZvaWQgX19yZWYgYXJjaF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxcbmFyY2gvcG93ZXJwYy9tbS9tZW0uYy0xNjItXFx0XFx0XFx0ICAgICAgc3RydWN0IGRldl9wYWdlbWFwICpwZ21hcClcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jPTIzMz1zdGF0aWMgaW50IHBzZXJpZXNfcmVtb3ZlX21lbWJsb2NrKHVuc2lnbmVkIGxvbmcgYmFzZSwgdW5zaWduZWQgbG9uZyBtZW1ibG9ja19zaXplKVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2hvdHBsdWctbWVtb3J5LmMtMjQ4LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBzZWN0aW9uc19wZXJfYmxvY2s7IGkrKykge1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jOjI0OTpcXHRcXHRfX3JlbW92ZV9tZW1vcnkoYmFzZSwgTUlOX01FTU9SWV9CTE9DS19TSVpFKTtcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYy0yNTAtXFx0XFx0YmFzZSArPSBNSU5fTUVNT1JZX0JMT0NLX1NJWkU7XFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYz0zMDI9c3RhdGljIGludCBkbHBhcl9yZW1vdmVfbG1iKHN0cnVjdCBkcm1lbV9sbWIgKmxtYilcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jLTMxOS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYzozMjA6XFx0X19yZW1vdmVfbWVtb3J5KGxtYi1cXHUwMDNlYmFzZV9hZGRyLCBtZW1vcnlfYmxvY2tfc2l6ZSk7XFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2hvdHBsdWctbWVtb3J5LmMtMzIxLVxcdG1lbW9yeV9ibG9ja19wdXQobWVtX2Jsb2NrKTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jPTU2ND1zdGF0aWMgaW50IGRscGFyX2FkZF9sbWIoc3RydWN0IGRybWVtX2xtYiAqbG1iKVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2hvdHBsdWctbWVtb3J5LmMtNTk2LVxcdFxcdHByX2VycihcXFwiRmFpbGVkIHRvIG9ubGluZSBMTUIgMHgleCBvbiBub2RlICV1XFxcXG5cXFwiLCBsbWItXFx1MDAzZWRyY19pbmRleCwgbmlkKTtcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYzo1OTc6XFx0XFx0X19yZW1vdmVfbWVtb3J5KGxtYi1cXHUwMDNlYmFzZV9hZGRyLCBibG9ja19zeik7XFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2hvdHBsdWctbWVtb3J5LmMtNTk4LVxcdFxcdGludmFsaWRhdGVfbG1iX2Fzc29jaWF0aXZpdHlfaW5kZXgobG1iKTtcXG4tLVxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jPTE3MTM9aW50IF9fcmVmIGFyY2hfYWRkX21lbW9yeShpbnQgbmlkLCB1NjQgc3RhcnQsIHU2NCBzaXplLCBzdHJ1Y3QgbWhwX3BhcmFtcyAqcGFyYW1zKVxcbi0tXFxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTczMS1cXG5hcmNoL3Jpc2N2L21tL2luaXQuYzoxNzMyOnZvaWQgX19yZWYgYXJjaF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTE3MzMtXFx0XFx0XFx0ICAgICAgc3RydWN0IGRldl9wYWdlbWFwICpwZ21hcClcXG4tLVxcbmFyY2gvczM5MC9tbS9pbml0LmM9MjYwPWludCBhcmNoX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSxcXG4tLVxcbmFyY2gvczM5MC9tbS9pbml0LmMtMjgwLVxcbmFyY2gvczM5MC9tbS9pbml0LmM6MjgxOnZvaWQgYXJjaF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUsIHN0cnVjdCB2bWVtX2FsdG1hcCAqYWx0bWFwLFxcbmFyY2gvczM5MC9tbS9pbml0LmMtMjgyLVxcdFxcdFxcdHN0cnVjdCBkZXZfcGFnZW1hcCAqcGdtYXApXFxuLS1cXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM9MTI5NT1rZXJuZWxfcGh5c2ljYWxfbWFwcGluZ19yZW1vdmUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXFxuLS1cXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmMtMTMwMi1cXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM6MTMwMzp2b2lkIF9fcmVmIGFyY2hfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmMtMTMwNC1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgZGV2X3BhZ2VtYXAgKnBnbWFwKVxcbi0tXFxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jPTE2OD1zdGF0aWMgaW50IGFjcGlfbWVtb3J5X2VuYWJsZV9kZXZpY2Uoc3RydWN0IGFjcGlfbWVtb3J5X2RldmljZSAqbWVtX2RldmljZSlcXG4tLVxcbmRyaXZlcnMvYWNwaS9hY3BpX21lbWhvdHBsdWcuYy0yNTItXFxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jOjI1MzpzdGF0aWMgdm9pZCBhY3BpX21lbW9yeV9yZW1vdmVfbWVtb3J5KHN0cnVjdCBhY3BpX21lbW9yeV9kZXZpY2UgKm1lbV9kZXZpY2UpXFxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jLTI1NC17XFxuLS1cXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmMtMjYxLVxcdFxcdGFjcGlfdW5iaW5kX21lbW9yeV9ibG9ja3MoaW5mbyk7XFxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jOjI2MjpcXHRcXHRfX3JlbW92ZV9tZW1vcnkoaW5mby1cXHUwMDNlc3RhcnRfYWRkciwgaW5mby1cXHUwMDNlbGVuZ3RoKTtcXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmMtMjYzLVxcdFxcdGxpc3RfZGVsKFxcdTAwMjZpbmZvLVxcdTAwM2VsaXN0KTtcXG4tLVxcbmRyaXZlcnMvYWNwaS9hY3BpX21lbWhvdHBsdWcuYz0zMjU9c3RhdGljIHZvaWQgYWNwaV9tZW1vcnlfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgYWNwaV9kZXZpY2UgKmRldmljZSlcXG4tLVxcbmRyaXZlcnMvYWNwaS9hY3BpX21lbWhvdHBsdWcuYy0zMzItXFx0bWVtX2RldmljZSA9IGFjcGlfZHJpdmVyX2RhdGEoZGV2aWNlKTtcXG5kcml2ZXJzL2FjcGkvYWNwaV9tZW1ob3RwbHVnLmM6MzMzOlxcdGFjcGlfbWVtb3J5X3JlbW92ZV9tZW1vcnkobWVtX2RldmljZSk7XFxuZHJpdmVycy9hY3BpL2FjcGlfbWVtaG90cGx1Zy5jLTMzNC1cXHRhY3BpX21lbW9yeV9kZXZpY2VfZnJlZShtZW1fZGV2aWNlKTtcXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz03ODE9c3RhdGljIGludCBhZGRfbWVtb3J5X2Jsb2NrKHVuc2lnbmVkIGxvbmcgYmxvY2tfaWQsIGludCBuaWQsIHVuc2lnbmVkIGxvbmcgc3RhdGUsXFxuLS1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtODI2LVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYzo4Mjc6c3RhdGljIHZvaWQgcmVtb3ZlX21lbW9yeV9ibG9jayhzdHJ1Y3QgbWVtb3J5X2Jsb2NrICptZW1vcnkpXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTgyOC17XFxuLS1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM9ODUxPWludCBjcmVhdGVfbWVtb3J5X2Jsb2NrX2RldmljZXModW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBzaXplLFxcbi0tXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTg3Ni1cXHRcXHRcXHRcXHRjb250aW51ZTtcXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6ODc3OlxcdFxcdFxcdHJlbW92ZV9tZW1vcnlfYmxvY2sobWVtKTtcXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtODc4LVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy04ODktICovXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jOjg5MDp2b2lkIHJlbW92ZV9tZW1vcnlfYmxvY2tfZGV2aWNlcyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIHNpemUpXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTg5MS17XFxuLS1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtOTA2LVxcdFxcdHVucmVnaXN0ZXJfbWVtb3J5X2Jsb2NrX3VuZGVyX25vZGVzKG1lbSk7XFxuZHJpdmVycy9iYXNlL21lbW9yeS5jOjkwNzpcXHRcXHRyZW1vdmVfbWVtb3J5X2Jsb2NrKG1lbSk7XFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTkwOC1cXHR9XFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2FncC5oPTk3PXN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciB7XFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2FncC5oLTExNC1cXHRpbnQgKCppbnNlcnRfbWVtb3J5KShzdHJ1Y3QgYWdwX21lbW9yeSAqLCBvZmZfdCwgaW50KTtcXG5kcml2ZXJzL2NoYXIvYWdwL2FncC5oOjExNTpcXHRpbnQgKCpyZW1vdmVfbWVtb3J5KShzdHJ1Y3QgYWdwX21lbW9yeSAqLCBvZmZfdCwgaW50KTtcXG5kcml2ZXJzL2NoYXIvYWdwL2FncC5oLTExNi1cXHRzdHJ1Y3QgYWdwX21lbW9yeSAqKCphbGxvY19ieV90eXBlKSAoc2l6ZV90LCBpbnQpO1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9hZ3AuaD0xOTI9aW50IGFncF9nZW5lcmljX2luc2VydF9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKm1lbSwgb2ZmX3QgcGdfc3RhcnQsIGludCB0eXBlKTtcXG5kcml2ZXJzL2NoYXIvYWdwL2FncC5oOjE5MzppbnQgYWdwX2dlbmVyaWNfcmVtb3ZlX21lbW9yeShzdHJ1Y3QgYWdwX21lbW9yeSAqbWVtLCBvZmZfdCBwZ19zdGFydCwgaW50IHR5cGUpO1xcbmRyaXZlcnMvY2hhci9hZ3AvYWdwLmgtMTk0LXN0cnVjdCBhZ3BfbWVtb3J5ICphZ3BfZ2VuZXJpY19hbGxvY19ieV90eXBlKHNpemVfdCBwYWdlX2NvdW50LCBpbnQgdHlwZSk7XFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2FsaS1hZ3AuYz0yMDI9c3RhdGljIGNvbnN0IHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciBhbGlfZ2VuZXJpY19icmlkZ2UgPSB7XFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2FsaS1hZ3AuYy0yMTgtXFx0Lmluc2VydF9tZW1vcnlcXHRcXHQ9IGFncF9nZW5lcmljX2luc2VydF9tZW1vcnksXFxuZHJpdmVycy9jaGFyL2FncC9hbGktYWdwLmM6MjE5OlxcdC5yZW1vdmVfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19yZW1vdmVfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvYWxpLWFncC5jLTIyMC1cXHQuYWxsb2NfYnlfdHlwZVxcdFxcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvYWxpLWFncC5jPTIyNz1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIGFsaV9tMTU0MV9icmlkZ2UgPSB7XFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2FsaS1hZ3AuYy0yNDItXFx0Lmluc2VydF9tZW1vcnlcXHRcXHQ9IGFncF9nZW5lcmljX2luc2VydF9tZW1vcnksXFxuZHJpdmVycy9jaGFyL2FncC9hbGktYWdwLmM6MjQzOlxcdC5yZW1vdmVfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19yZW1vdmVfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvYWxpLWFncC5jLTI0NC1cXHQuYWxsb2NfYnlfdHlwZVxcdFxcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvYWxwaGEtYWdwLmM9ODQ9c3RhdGljIGludCBhbHBoYV9jb3JlX2FncF9pbnNlcnRfbWVtb3J5KHN0cnVjdCBhZ3BfbWVtb3J5ICptZW0sIG9mZl90IHBnX3N0YXJ0LFxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9hbHBoYS1hZ3AuYy0xMDUtXFxuZHJpdmVycy9jaGFyL2FncC9hbHBoYS1hZ3AuYzoxMDY6c3RhdGljIGludCBhbHBoYV9jb3JlX2FncF9yZW1vdmVfbWVtb3J5KHN0cnVjdCBhZ3BfbWVtb3J5ICptZW0sIG9mZl90IHBnX3N0YXJ0LFxcbmRyaXZlcnMvY2hhci9hZ3AvYWxwaGEtYWdwLmMtMTA3LVxcdFxcdFxcdFxcdFxcdGludCB0eXBlKVxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9hbHBoYS1hZ3AuYz0xMjI9c3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIGFscGhhX2NvcmVfYWdwX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvYWxwaGEtYWdwLmMtMTM5LVxcdC5pbnNlcnRfbWVtb3J5XFx0XFx0PSBhbHBoYV9jb3JlX2FncF9pbnNlcnRfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvYWxwaGEtYWdwLmM6MTQwOlxcdC5yZW1vdmVfbWVtb3J5XFx0XFx0PSBhbHBoYV9jb3JlX2FncF9yZW1vdmVfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvYWxwaGEtYWdwLmMtMTQxLVxcdC5hbGxvY19ieV90eXBlXFx0XFx0PSBhZ3BfZ2VuZXJpY19hbGxvY19ieV90eXBlLFxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9hbWQtazctYWdwLmM9Mjg0PXN0YXRpYyBpbnQgYW1kX2luc2VydF9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKm1lbSwgb2ZmX3QgcGdfc3RhcnQsIGludCB0eXBlKVxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9hbWQtazctYWdwLmMtMzI1LVxcbmRyaXZlcnMvY2hhci9hZ3AvYW1kLWs3LWFncC5jOjMyNjpzdGF0aWMgaW50IGFtZF9yZW1vdmVfbWVtb3J5KHN0cnVjdCBhZ3BfbWVtb3J5ICptZW0sIG9mZl90IHBnX3N0YXJ0LCBpbnQgdHlwZSlcXG5kcml2ZXJzL2NoYXIvYWdwL2FtZC1rNy1hZ3AuYy0zMjcte1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9hbWQtazctYWdwLmM9MzYzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgYW1kX2lyb25nYXRlX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvYW1kLWs3LWFncC5jLTM3OS1cXHQuaW5zZXJ0X21lbW9yeVxcdFxcdD0gYW1kX2luc2VydF9tZW1vcnksXFxuZHJpdmVycy9jaGFyL2FncC9hbWQtazctYWdwLmM6MzgwOlxcdC5yZW1vdmVfbWVtb3J5XFx0XFx0PSBhbWRfcmVtb3ZlX21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL2FtZC1rNy1hZ3AuYy0zODEtXFx0LmFsbG9jX2J5X3R5cGVcXHRcXHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2FtZDY0LWFncC5jPTIxNj1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIGFtZF84MTUxX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvYW1kNjQtYWdwLmMtMjMyLVxcdC5pbnNlcnRfbWVtb3J5XFx0XFx0PSBhbWQ2NF9pbnNlcnRfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvYW1kNjQtYWdwLmM6MjMzOlxcdC5yZW1vdmVfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19yZW1vdmVfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvYW1kNjQtYWdwLmMtMjM0LVxcdC5hbGxvY19ieV90eXBlXFx0XFx0PSBhZ3BfZ2VuZXJpY19hbGxvY19ieV90eXBlLFxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9hdGktYWdwLmM9MjU4PXN0YXRpYyBpbnQgYXRpX2luc2VydF9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKiBtZW0sXFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2F0aS1hZ3AuYy0zMDUtXFxuZHJpdmVycy9jaGFyL2FncC9hdGktYWdwLmM6MzA2OnN0YXRpYyBpbnQgYXRpX3JlbW92ZV9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKiBtZW0sIG9mZl90IHBnX3N0YXJ0LFxcbmRyaXZlcnMvY2hhci9hZ3AvYXRpLWFncC5jLTMwNy1cXHRcXHRcXHQgICAgIGludCB0eXBlKVxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9hdGktYWdwLmM9NDExPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgYXRpX2dlbmVyaWNfYnJpZGdlID0ge1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9hdGktYWdwLmMtNDI3LVxcdC5pbnNlcnRfbWVtb3J5XFx0XFx0PSBhdGlfaW5zZXJ0X21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL2F0aS1hZ3AuYzo0Mjg6XFx0LnJlbW92ZV9tZW1vcnlcXHRcXHQ9IGF0aV9yZW1vdmVfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvYXRpLWFncC5jLTQyOS1cXHQuYWxsb2NfYnlfdHlwZVxcdFxcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvZWZmaWNlb24tYWdwLmM9MjM3PXN0YXRpYyBpbnQgZWZmaWNlb25faW5zZXJ0X21lbW9yeShzdHJ1Y3QgYWdwX21lbW9yeSAqIG1lbSwgb2ZmX3QgcGdfc3RhcnQsIGludCB0eXBlKVxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9lZmZpY2Vvbi1hZ3AuYy0yODUtXFxuZHJpdmVycy9jaGFyL2FncC9lZmZpY2Vvbi1hZ3AuYzoyODY6c3RhdGljIGludCBlZmZpY2Vvbl9yZW1vdmVfbWVtb3J5KHN0cnVjdCBhZ3BfbWVtb3J5ICogbWVtLCBvZmZfdCBwZ19zdGFydCwgaW50IHR5cGUpXFxuZHJpdmVycy9jaGFyL2FncC9lZmZpY2Vvbi1hZ3AuYy0yODcte1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9lZmZpY2Vvbi1hZ3AuYy0yODktXFxuZHJpdmVycy9jaGFyL2FncC9lZmZpY2Vvbi1hZ3AuYzoyOTA6XFx0cHJpbnRrKEtFUk5fREVCVUcgUEZYIFxcXCJlZmZpY2Vvbl9yZW1vdmVfbWVtb3J5KCVseCwgJWQpXFxcXG5cXFwiLCBwZ19zdGFydCwgY291bnQpO1xcbmRyaXZlcnMvY2hhci9hZ3AvZWZmaWNlb24tYWdwLmMtMjkxLVxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9lZmZpY2Vvbi1hZ3AuYz0zMTM9c3RhdGljIGNvbnN0IHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciBlZmZpY2Vvbl9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2VmZmljZW9uLWFncC5jLTMzMC1cXHQuaW5zZXJ0X21lbW9yeVxcdFxcdD0gZWZmaWNlb25faW5zZXJ0X21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL2VmZmljZW9uLWFncC5jOjMzMTpcXHQucmVtb3ZlX21lbW9yeVxcdFxcdD0gZWZmaWNlb25fcmVtb3ZlX21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL2VmZmljZW9uLWFncC5jLTMzMi1cXHQuY2FudF91c2VfYXBlcnR1cmVcXHQ9IGZhbHNlLFxcdC8vIHRydWUgbWlnaHQgYmUgZmFzdGVyP1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9nZW5lcmljLmM9NDQ4PWludCBhZ3BfdW5iaW5kX21lbW9yeShzdHJ1Y3QgYWdwX21lbW9yeSAqY3VycilcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvZ2VuZXJpYy5jLTQ1OS1cXG5kcml2ZXJzL2NoYXIvYWdwL2dlbmVyaWMuYzo0NjA6XFx0cmV0X3ZhbCA9IGN1cnItXFx1MDAzZWJyaWRnZS1cXHUwMDNlZHJpdmVyLVxcdTAwM2VyZW1vdmVfbWVtb3J5KGN1cnIsIGN1cnItXFx1MDAzZXBnX3N0YXJ0LCBjdXJyLVxcdTAwM2V0eXBlKTtcXG5kcml2ZXJzL2NoYXIvYWdwL2dlbmVyaWMuYy00NjEtXFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2dlbmVyaWMuYz0xMTA0PUVYUE9SVF9TWU1CT0woYWdwX2dlbmVyaWNfaW5zZXJ0X21lbW9yeSk7XFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2dlbmVyaWMuYy0xMTA2LVxcbmRyaXZlcnMvY2hhci9hZ3AvZ2VuZXJpYy5jOjExMDc6aW50IGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKm1lbSwgb2ZmX3QgcGdfc3RhcnQsIGludCB0eXBlKVxcbmRyaXZlcnMvY2hhci9hZ3AvZ2VuZXJpYy5jLTExMDgte1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9nZW5lcmljLmMtMTE0Mi19XFxuZHJpdmVycy9jaGFyL2FncC9nZW5lcmljLmM6MTE0MzpFWFBPUlRfU1lNQk9MKGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnkpO1xcbmRyaXZlcnMvY2hhci9hZ3AvZ2VuZXJpYy5jLTExNDQtXFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jPTQ1MD1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIGludGVsX2dlbmVyaWNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYy00NjYtXFx0Lmluc2VydF9tZW1vcnlcXHRcXHQ9IGFncF9nZW5lcmljX2luc2VydF9tZW1vcnksXFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYzo0Njc6XFx0LnJlbW92ZV9tZW1vcnlcXHRcXHQ9IGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnksXFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYy00NjgtXFx0LmFsbG9jX2J5X3R5cGVcXHRcXHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jPTQ3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIGludGVsXzgxNV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jLTQ5My1cXHQuaW5zZXJ0X21lbW9yeVxcdFxcdD0gYWdwX2dlbmVyaWNfaW5zZXJ0X21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jOjQ5NDpcXHQucmVtb3ZlX21lbW9yeVxcdFxcdD0gYWdwX2dlbmVyaWNfcmVtb3ZlX21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jLTQ5NS1cXHQuYWxsb2NfYnlfdHlwZVxcdFxcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmM9NTA0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgaW50ZWxfODIwX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNTIwLVxcdC5pbnNlcnRfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19pbnNlcnRfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmM6NTIxOlxcdC5yZW1vdmVfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19yZW1vdmVfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNTIyLVxcdC5hbGxvY19ieV90eXBlXFx0XFx0PSBhZ3BfZ2VuZXJpY19hbGxvY19ieV90eXBlLFxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYz01MzE9c3RhdGljIGNvbnN0IHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciBpbnRlbF84MzBtcF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jLTU0Ny1cXHQuaW5zZXJ0X21lbW9yeVxcdFxcdD0gYWdwX2dlbmVyaWNfaW5zZXJ0X21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jOjU0ODpcXHQucmVtb3ZlX21lbW9yeVxcdFxcdD0gYWdwX2dlbmVyaWNfcmVtb3ZlX21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jLTU0OS1cXHQuYWxsb2NfYnlfdHlwZVxcdFxcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmM9NTU4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgaW50ZWxfODQwX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNTc0LVxcdC5pbnNlcnRfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19pbnNlcnRfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmM6NTc1OlxcdC5yZW1vdmVfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19yZW1vdmVfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNTc2LVxcdC5hbGxvY19ieV90eXBlXFx0XFx0PSBhZ3BfZ2VuZXJpY19hbGxvY19ieV90eXBlLFxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYz01ODU9c3RhdGljIGNvbnN0IHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciBpbnRlbF84NDVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYy02MDEtXFx0Lmluc2VydF9tZW1vcnlcXHRcXHQ9IGFncF9nZW5lcmljX2luc2VydF9tZW1vcnksXFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYzo2MDI6XFx0LnJlbW92ZV9tZW1vcnlcXHRcXHQ9IGFncF9nZW5lcmljX3JlbW92ZV9tZW1vcnksXFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYy02MDMtXFx0LmFsbG9jX2J5X3R5cGVcXHRcXHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jPTYxMj1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIGludGVsXzg1MF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jLTYyOC1cXHQuaW5zZXJ0X21lbW9yeVxcdFxcdD0gYWdwX2dlbmVyaWNfaW5zZXJ0X21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jOjYyOTpcXHQucmVtb3ZlX21lbW9yeVxcdFxcdD0gYWdwX2dlbmVyaWNfcmVtb3ZlX21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWFncC5jLTYzMC1cXHQuYWxsb2NfYnlfdHlwZVxcdFxcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmM9NjM5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgaW50ZWxfODYwX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNjU1LVxcdC5pbnNlcnRfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19pbnNlcnRfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmM6NjU2OlxcdC5yZW1vdmVfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19yZW1vdmVfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNjU3LVxcdC5hbGxvY19ieV90eXBlXFx0XFx0PSBhZ3BfZ2VuZXJpY19hbGxvY19ieV90eXBlLFxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1hZ3AuYz02NjY9c3RhdGljIGNvbnN0IHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciBpbnRlbF83NTA1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNjgyLVxcdC5pbnNlcnRfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19pbnNlcnRfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmM6NjgzOlxcdC5yZW1vdmVfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19yZW1vdmVfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtYWdwLmMtNjg0LVxcdC5hbGxvY19ieV90eXBlXFx0XFx0PSBhZ3BfZ2VuZXJpY19hbGxvY19ieV90eXBlLFxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1ndHQuYz0xMjA2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgaW50ZWxfZmFrZV9hZ3BfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9pbnRlbC1ndHQuYy0xMjE4LVxcdC5pbnNlcnRfbWVtb3J5XFx0XFx0PSBpbnRlbF9mYWtlX2FncF9pbnNlcnRfZW50cmllcyxcXG5kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWd0dC5jOjEyMTk6XFx0LnJlbW92ZV9tZW1vcnlcXHRcXHQ9IGludGVsX2Zha2VfYWdwX3JlbW92ZV9lbnRyaWVzLFxcbmRyaXZlcnMvY2hhci9hZ3AvaW50ZWwtZ3R0LmMtMTIyMC1cXHQuYWxsb2NfYnlfdHlwZVxcdFxcdD0gaW50ZWxfZmFrZV9hZ3BfYWxsb2NfYnlfdHlwZSxcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvbnZpZGlhLWFncC5jPTIwMj1zdGF0aWMgaW50IG52aWRpYV9pbnNlcnRfbWVtb3J5KHN0cnVjdCBhZ3BfbWVtb3J5ICptZW0sIG9mZl90IHBnX3N0YXJ0LCBpbnQgdHlwZSlcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvbnZpZGlhLWFncC5jLTI0MC1cXG5kcml2ZXJzL2NoYXIvYWdwL252aWRpYS1hZ3AuYzoyNDE6c3RhdGljIGludCBudmlkaWFfcmVtb3ZlX21lbW9yeShzdHJ1Y3QgYWdwX21lbW9yeSAqbWVtLCBvZmZfdCBwZ19zdGFydCwgaW50IHR5cGUpXFxuZHJpdmVycy9jaGFyL2FncC9udmlkaWEtYWdwLmMtMjQyLXtcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvbnZpZGlhLWFncC5jPTMxMT1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIG52aWRpYV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL252aWRpYS1hZ3AuYy0zMjctXFx0Lmluc2VydF9tZW1vcnlcXHRcXHQ9IG52aWRpYV9pbnNlcnRfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvbnZpZGlhLWFncC5jOjMyODpcXHQucmVtb3ZlX21lbW9yeVxcdFxcdD0gbnZpZGlhX3JlbW92ZV9tZW1vcnksXFxuZHJpdmVycy9jaGFyL2FncC9udmlkaWEtYWdwLmMtMzI5LVxcdC5hbGxvY19ieV90eXBlXFx0XFx0PSBhZ3BfZ2VuZXJpY19hbGxvY19ieV90eXBlLFxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9wYXJpc2MtYWdwLmM9MTczPXN0YXRpYyBpbnRcXG5kcml2ZXJzL2NoYXIvYWdwL3BhcmlzYy1hZ3AuYzoxNzQ6cGFyaXNjX2FncF9yZW1vdmVfbWVtb3J5KHN0cnVjdCBhZ3BfbWVtb3J5ICptZW0sIG9mZl90IHBnX3N0YXJ0LCBpbnQgdHlwZSlcXG5kcml2ZXJzL2NoYXIvYWdwL3BhcmlzYy1hZ3AuYy0xNzUte1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9wYXJpc2MtYWdwLmM9MjI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgcGFyaXNjX2FncF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL3BhcmlzYy1hZ3AuYy0yMzktXFx0Lmluc2VydF9tZW1vcnlcXHRcXHQ9IHBhcmlzY19hZ3BfaW5zZXJ0X21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL3BhcmlzYy1hZ3AuYzoyNDA6XFx0LnJlbW92ZV9tZW1vcnlcXHRcXHQ9IHBhcmlzY19hZ3BfcmVtb3ZlX21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL3BhcmlzYy1hZ3AuYy0yNDEtXFx0LmFsbG9jX2J5X3R5cGVcXHRcXHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL3Npcy1hZ3AuYz0xMjI9c3RhdGljIHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciBzaXNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC9zaXMtYWdwLmMtMTM4LVxcdC5pbnNlcnRfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19pbnNlcnRfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3Avc2lzLWFncC5jOjEzOTpcXHQucmVtb3ZlX21lbW9yeVxcdFxcdD0gYWdwX2dlbmVyaWNfcmVtb3ZlX21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL3Npcy1hZ3AuYy0xNDAtXFx0LmFsbG9jX2J5X3R5cGVcXHRcXHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL3N3b3Jrcy1hZ3AuYz0zMTY9c3RhdGljIGludCBzZXJ2ZXJ3b3Jrc19pbnNlcnRfbWVtb3J5KHN0cnVjdCBhZ3BfbWVtb3J5ICptZW0sXFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL3N3b3Jrcy1hZ3AuYy0zNTYtXFxuZHJpdmVycy9jaGFyL2FncC9zd29ya3MtYWdwLmM6MzU3OnN0YXRpYyBpbnQgc2VydmVyd29ya3NfcmVtb3ZlX21lbW9yeShzdHJ1Y3QgYWdwX21lbW9yeSAqbWVtLCBvZmZfdCBwZ19zdGFydCxcXG5kcml2ZXJzL2NoYXIvYWdwL3N3b3Jrcy1hZ3AuYy0zNTgtXFx0XFx0XFx0ICAgICBpbnQgdHlwZSlcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3Avc3dvcmtzLWFncC5jPTQxOT1zdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJpdmVyIHN3b3Jrc19kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL3N3b3Jrcy1hZ3AuYy00MzQtXFx0Lmluc2VydF9tZW1vcnlcXHRcXHQ9IHNlcnZlcndvcmtzX2luc2VydF9tZW1vcnksXFxuZHJpdmVycy9jaGFyL2FncC9zd29ya3MtYWdwLmM6NDM1OlxcdC5yZW1vdmVfbWVtb3J5XFx0XFx0PSBzZXJ2ZXJ3b3Jrc19yZW1vdmVfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3Avc3dvcmtzLWFncC5jLTQzNi1cXHQuYWxsb2NfYnlfdHlwZVxcdFxcdD0gYWdwX2dlbmVyaWNfYWxsb2NfYnlfdHlwZSxcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvdW5pbm9ydGgtYWdwLmM9MTUwPXN0YXRpYyBpbnQgdW5pbm9ydGhfaW5zZXJ0X21lbW9yeShzdHJ1Y3QgYWdwX21lbW9yeSAqbWVtLCBvZmZfdCBwZ19zdGFydCwgaW50IHR5cGUpXFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL3VuaW5vcnRoLWFncC5jLTE5OS1cXG5kcml2ZXJzL2NoYXIvYWdwL3VuaW5vcnRoLWFncC5jOjIwMDpzdGF0aWMgaW50IHVuaW5vcnRoX3JlbW92ZV9tZW1vcnkoc3RydWN0IGFncF9tZW1vcnkgKm1lbSwgb2ZmX3QgcGdfc3RhcnQsIGludCB0eXBlKVxcbmRyaXZlcnMvY2hhci9hZ3AvdW5pbm9ydGgtYWdwLmMtMjAxLXtcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvdW5pbm9ydGgtYWdwLmM9NTA5PWNvbnN0IHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciB1bmlub3J0aF9hZ3BfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC91bmlub3J0aC1hZ3AuYy01MjQtXFx0Lmluc2VydF9tZW1vcnlcXHRcXHQ9IHVuaW5vcnRoX2luc2VydF9tZW1vcnksXFxuZHJpdmVycy9jaGFyL2FncC91bmlub3J0aC1hZ3AuYzo1MjU6XFx0LnJlbW92ZV9tZW1vcnlcXHRcXHQ9IHVuaW5vcnRoX3JlbW92ZV9tZW1vcnksXFxuZHJpdmVycy9jaGFyL2FncC91bmlub3J0aC1hZ3AuYy01MjYtXFx0LmFsbG9jX2J5X3R5cGVcXHRcXHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL3VuaW5vcnRoLWFncC5jPTUzNz1jb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgdTNfYWdwX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvY2hhci9hZ3AvdW5pbm9ydGgtYWdwLmMtNTUyLVxcdC5pbnNlcnRfbWVtb3J5XFx0XFx0PSB1bmlub3J0aF9pbnNlcnRfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvdW5pbm9ydGgtYWdwLmM6NTUzOlxcdC5yZW1vdmVfbWVtb3J5XFx0XFx0PSB1bmlub3J0aF9yZW1vdmVfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvdW5pbm9ydGgtYWdwLmMtNTU0LVxcdC5hbGxvY19ieV90eXBlXFx0XFx0PSBhZ3BfZ2VuZXJpY19hbGxvY19ieV90eXBlLFxcbi0tXFxuZHJpdmVycy9jaGFyL2FncC92aWEtYWdwLmM9MTcwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYWdwX2JyaWRnZV9kcml2ZXIgdmlhX2FncDNfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC92aWEtYWdwLmMtMTg2LVxcdC5pbnNlcnRfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19pbnNlcnRfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvdmlhLWFncC5jOjE4NzpcXHQucmVtb3ZlX21lbW9yeVxcdFxcdD0gYWdwX2dlbmVyaWNfcmVtb3ZlX21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL3ZpYS1hZ3AuYy0xODgtXFx0LmFsbG9jX2J5X3R5cGVcXHRcXHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXFxuLS1cXG5kcml2ZXJzL2NoYXIvYWdwL3ZpYS1hZ3AuYz0xOTc9c3RhdGljIGNvbnN0IHN0cnVjdCBhZ3BfYnJpZGdlX2RyaXZlciB2aWFfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9jaGFyL2FncC92aWEtYWdwLmMtMjEzLVxcdC5pbnNlcnRfbWVtb3J5XFx0XFx0PSBhZ3BfZ2VuZXJpY19pbnNlcnRfbWVtb3J5LFxcbmRyaXZlcnMvY2hhci9hZ3AvdmlhLWFncC5jOjIxNDpcXHQucmVtb3ZlX21lbW9yeVxcdFxcdD0gYWdwX2dlbmVyaWNfcmVtb3ZlX21lbW9yeSxcXG5kcml2ZXJzL2NoYXIvYWdwL3ZpYS1hZ3AuYy0yMTUtXFx0LmFsbG9jX2J5X3R5cGVcXHRcXHQ9IGFncF9nZW5lcmljX2FsbG9jX2J5X3R5cGUsXFxuLS1cXG5kcml2ZXJzL2RheC9rbWVtLmM9MjA5PXN0YXRpYyB2b2lkIGRldl9kYXhfa21lbV9yZW1vdmUoc3RydWN0IGRldl9kYXggKmRldl9kYXgpXFxuLS1cXG5kcml2ZXJzL2RheC9rbWVtLmMtMjE3LVxcdCAqIFdlIGhhdmUgb25lIHNob3QgZm9yIHJlbW92aW5nIG1lbW9yeSwgaWYgc29tZSBtZW1vcnkgYmxvY2tzIHdlcmUgbm90XFxuZHJpdmVycy9kYXgva21lbS5jOjIxODpcXHQgKiBvZmZsaW5lIHByaW9yIHRvIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiByZW1vdmVfbWVtb3J5KCkgd2lsbCBmYWlsLCBhbmRcXG5kcml2ZXJzL2RheC9rbWVtLmMtMjE5LVxcdCAqIHRoZXJlIGlzIG5vIHdheSB0byBob3RyZW1vdmUgdGhpcyBtZW1vcnkgdW50aWwgcmVib290IGJlY2F1c2UgZGV2aWNlXFxuLS1cXG5kcml2ZXJzL2RheC9rbWVtLmMtMjM1LVxcbmRyaXZlcnMvZGF4L2ttZW0uYzoyMzY6XFx0XFx0cmMgPSByZW1vdmVfbWVtb3J5KHJhbmdlLnN0YXJ0LCByYW5nZV9sZW4oXFx1MDAyNnJhbmdlKSk7XFxuZHJpdmVycy9kYXgva21lbS5jLTIzNy1cXHRcXHRpZiAocmMgPT0gMCkge1xcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9lZmkvbGlic3R1Yi9lZmlzdHViLmg9NDA1PXVuaW9uIGVmaV9keGVfc2VydmljZXNfdGFibGUge1xcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9lZmkvbGlic3R1Yi9lZmlzdHViLmgtNDEwLVxcdFxcdHZvaWQgKmZyZWVfbWVtb3J5X3NwYWNlO1xcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIvZWZpc3R1Yi5oOjQxMTpcXHRcXHR2b2lkICpyZW1vdmVfbWVtb3J5X3NwYWNlO1xcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIvZWZpc3R1Yi5oLTQxMi1cXHRcXHRlZmlfc3RhdHVzX3QgKF9fZWZpYXBpICpnZXRfbWVtb3J5X3NwYWNlX2Rlc2NyaXB0b3IpKGVmaV9waHlzaWNhbF9hZGRyX3QsXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9saWJzdHViL2VmaXN0dWIuaC00MzMtXFx0XFx0dTMyIGZyZWVfbWVtb3J5X3NwYWNlO1xcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIvZWZpc3R1Yi5oOjQzNDpcXHRcXHR1MzIgcmVtb3ZlX21lbW9yeV9zcGFjZTtcXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS9saWJzdHViL2VmaXN0dWIuaC00MzUtXFx0XFx0dTMyIGdldF9tZW1vcnlfc3BhY2VfZGVzY3JpcHRvcjtcXG4tLVxcbmRyaXZlcnMvczM5MC9jaGFyL3NjbHBfbWVtLmM9MTg5PXN0YXRpYyBzc2l6ZV90IHNjbHBfY29uZmlnX21lbV9zdG9yZShzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGtvYmpfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9zMzkwL2NoYXIvc2NscF9tZW0uYy0yNDctXFx0XFx0c2NscF9tZW1fY2hhbmdlX3N0YXRlKGFkZHIsIGJsb2NrX3NpemUsIDApO1xcbmRyaXZlcnMvczM5MC9jaGFyL3NjbHBfbWVtLmM6MjQ4OlxcdFxcdF9fcmVtb3ZlX21lbW9yeShhZGRyLCBibG9ja19zaXplKTtcXG5kcml2ZXJzL3MzOTAvY2hhci9zY2xwX21lbS5jLTI0OS0jaWZkZWYgQ09ORklHX0tBU0FOXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9NjgzPXN0YXRpYyBpbnQgdmlydGlvX21lbV9iYm1fYWRkX2JiKHN0cnVjdCB2aXJ0aW9fbWVtICp2bSwgdW5zaWduZWQgbG9uZyBiYl9pZClcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy02OTktICovXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jOjcwMDpzdGF0aWMgaW50IHZpcnRpb19tZW1fcmVtb3ZlX21lbW9yeShzdHJ1Y3QgdmlydGlvX21lbSAqdm0sIHVpbnQ2NF90IGFkZHIsXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTcwMS1cXHRcXHRcXHRcXHQgICAgdWludDY0X3Qgc2l6ZSlcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03MDYtXFx0XFx0YWRkciArIHNpemUgLSAxKTtcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6NzA3OlxcdHJjID0gcmVtb3ZlX21lbW9yeShhZGRyLCBzaXplKTtcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzA4LVxcdGlmICghcmMpIHtcXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03MjEtLypcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6NzIyOiAqIFNlZSB2aXJ0aW9fbWVtX3JlbW92ZV9tZW1vcnkoKTogVHJ5IHJlbW92aW5nIGEgc2luZ2xlIExpbnV4IG1lbW9yeSBibG9jay5cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzIzLSAqL1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz03MjQ9c3RhdGljIGludCB2aXJ0aW9fbWVtX3NibV9yZW1vdmVfbWIoc3RydWN0IHZpcnRpb19tZW0gKnZtLCB1bnNpZ25lZCBsb25nIG1iX2lkKVxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTcyOC1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6NzI5OlxcdHJldHVybiB2aXJ0aW9fbWVtX3JlbW92ZV9tZW1vcnkodm0sIGFkZHIsIHNpemUpO1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03MzAtfVxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTczOS0gKi9cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6NzQwOnN0YXRpYyBpbnQgdmlydGlvX21lbV9vZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KHN0cnVjdCB2aXJ0aW9fbWVtICp2bSxcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzQxLVxcdFxcdFxcdFxcdFxcdFxcdHVpbnQ2NF90IGFkZHIsXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzQ5LVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo3NTA6XFx0cmMgPSBvZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KGFkZHIsIHNpemUpO1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03NTEtXFx0aWYgKCFyYykge1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTc2OS0vKlxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo3NzA6ICogU2VlIHZpcnRpb19tZW1fb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSgpOiBUcnkgb2ZmbGluaW5nIGFuZCByZW1vdmluZ1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy03NzEtICogYSBzaW5nbGUgTGludXggbWVtb3J5IGJsb2NrLlxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jPTc3Mz1zdGF0aWMgaW50IHZpcnRpb19tZW1fc2JtX29mZmxpbmVfYW5kX3JlbW92ZV9tYihzdHJ1Y3QgdmlydGlvX21lbSAqdm0sXFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtNzc4LVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo3Nzk6XFx0cmV0dXJuIHZpcnRpb19tZW1fb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSh2bSwgYWRkciwgc2l6ZSk7XFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTc4MC19XFxuLS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM9Nzg4PXN0YXRpYyBpbnQgdmlydGlvX21lbV9zYm1fdHJ5X3JlbW92ZV91bnBsdWdnZWRfbWIoc3RydWN0IHZpcnRpb19tZW0gKnZtLFxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTc5OS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6ODAwOlxcdC8qIG9mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkoKSB3b3JrcyBmb3Igb25saW5lIGFuZCBvZmZsaW5lIG1lbW9yeS4gKi9cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtODAxLVxcdG11dGV4X3VubG9jayhcXHUwMDI2dm0tXFx1MDAzZWhvdHBsdWdfbXV0ZXgpO1xcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTgxMC0vKlxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYzo4MTE6ICogU2VlIHZpcnRpb19tZW1fb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSgpOiBUcnkgdG8gb2ZmbGluZSBhbmQgcmVtb3ZlIGFcXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmMtODEyLSAqIGFsbCBMaW51eCBtZW1vcnkgYmxvY2tzIGNvdmVyZWQgYnkgdGhlIGJpZyBibG9jay5cXG4tLVxcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYz04MTQ9c3RhdGljIGludCB2aXJ0aW9fbWVtX2JibV9vZmZsaW5lX2FuZF9yZW1vdmVfYmIoc3RydWN0IHZpcnRpb19tZW0gKnZtLFxcbi0tXFxuZHJpdmVycy92aXJ0aW8vdmlydGlvX21lbS5jLTgxOS1cXG5kcml2ZXJzL3ZpcnRpby92aXJ0aW9fbWVtLmM6ODIwOlxcdHJldHVybiB2aXJ0aW9fbWVtX29mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkodm0sIGFkZHIsIHNpemUpO1xcbmRyaXZlcnMvdmlydGlvL3ZpcnRpb19tZW0uYy04MjEtfVxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1vcnkuaD0xNTU9aW50IGNyZWF0ZV9tZW1vcnlfYmxvY2tfZGV2aWNlcyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIHNpemUsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oLTE1Ny1cXHRcXHRcXHRcXHRzdHJ1Y3QgbWVtb3J5X2dyb3VwICpncm91cCk7XFxuaW5jbHVkZS9saW51eC9tZW1vcnkuaDoxNTg6dm9pZCByZW1vdmVfbWVtb3J5X2Jsb2NrX2RldmljZXModW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBzaXplKTtcXG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oLTE1OS1leHRlcm4gdm9pZCBtZW1vcnlfZGV2X2luaXQodm9pZCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9MTMzPXN0YXRpYyBpbmxpbmUgYm9vbCBtb3ZhYmxlX25vZGVfaXNfZW5hYmxlZCh2b2lkKVxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTEzNy1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MTM4OmV4dGVybiB2b2lkIGFyY2hfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMTM5LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZGV2X3BhZ2VtYXAgKnBnbWFwKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaD0yNjU9ZXh0ZXJuIGludCBvZmZsaW5lX3BhZ2VzKHVuc2lnbmVkIGxvbmcgc3RhcnRfcGZuLCB1bnNpZ25lZCBsb25nIG5yX3BhZ2VzLFxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yNjYtXFx0XFx0XFx0IHN0cnVjdCB6b25lICp6b25lLCBzdHJ1Y3QgbWVtb3J5X2dyb3VwICpncm91cCk7XFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjI2NzpleHRlcm4gaW50IHJlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSk7XFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjI2ODpleHRlcm4gdm9pZCBfX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSk7XFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjI2OTpleHRlcm4gaW50IG9mZmxpbmVfYW5kX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSk7XFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI3MC1cXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaD0yNzQ9c3RhdGljIGlubGluZSBpbnQgb2ZmbGluZV9wYWdlcyh1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbiwgdW5zaWduZWQgbG9uZyBucl9wYWdlcyxcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yNzktXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oOjI4MDpzdGF0aWMgaW5saW5lIGludCByZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI4MS17XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmgtMjg0LVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaDoyODU6c3RhdGljIGlubGluZSB2b2lkIF9fcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKSB7fVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yODYtI2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUkVNT1ZFICovXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTE0MDY9c3RhdGljIHZvaWQgYWx0bWFwX2ZyZWUoc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXApXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE0MTEtXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNDEyOnN0YXRpYyB2b2lkIHJlbW92ZV9tZW1vcnlfYmxvY2tzX2FuZF9hbHRtYXBzKHU2NCBzdGFydCwgdTY0IHNpemUpXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNDEzLXtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTQzMy1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE0MzQ6XFx0XFx0cmVtb3ZlX21lbW9yeV9ibG9ja19kZXZpY2VzKGN1cl9zdGFydCwgbWVtYmxvY2tfc2l6ZSk7XFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNDM1OlxcdFxcdGFyY2hfcmVtb3ZlX21lbW9yeShjdXJfc3RhcnQsIG1lbWJsb2NrX3NpemUsIGFsdG1hcCwgTlVMTCk7XFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNDM2LVxcdFxcdGFsdG1hcF9mcmVlKGFsdG1hcCk7XFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTE0NDA9c3RhdGljIGludCBjcmVhdGVfYWx0bWFwc19hbmRfbWVtb3J5X2Jsb2NrcyhpbnQgbmlkLCBzdHJ1Y3QgbWVtb3J5X2dyb3VwICpncm91cCxcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTQ3NC1cXHRcXHRpZiAocmV0KSB7XFxubW0vbWVtb3J5X2hvdHBsdWcuYzoxNDc1OlxcdFxcdFxcdGFyY2hfcmVtb3ZlX21lbW9yeShjdXJfc3RhcnQsIG1lbWJsb2NrX3NpemUsIHBhcmFtcy5hbHRtYXAsIE5VTEwpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTQ3Ni1cXHRcXHRcXHRhbHRtYXBfZnJlZShwYXJhbXMuYWx0bWFwKTtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMTQ4My1cXHRpZiAocmV0IFxcdTAwMjZcXHUwMDI2IGN1cl9zdGFydCAhPSBzdGFydClcXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE0ODQ6XFx0XFx0cmVtb3ZlX21lbW9yeV9ibG9ja3NfYW5kX2FsdG1hcHMoc3RhcnQsIGN1cl9zdGFydCAtIHN0YXJ0KTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE0ODUtXFx0cmV0dXJuIHJldDtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM9MTQ5ND1pbnQgYWRkX21lbW9yeV9yZXNvdXJjZShpbnQgbmlkLCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcywgbWhwX3QgbWhwX2ZsYWdzKVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNTYwLVxcdFxcdGlmIChyZXQpIHtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjE1NjE6XFx0XFx0XFx0YXJjaF9yZW1vdmVfbWVtb3J5KHN0YXJ0LCBzaXplLCBwYXJhbXMuYWx0bWFwLCBOVUxMKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE1NjItXFx0XFx0XFx0Z290byBlcnJvcjtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM9MjIyMT1zdGF0aWMgaW50IG1lbW9yeV9ibG9ja3NfaGF2ZV9hbHRtYXBzKHU2NCBzdGFydCwgdTY0IHNpemUpXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyNDAtXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMjQxOnN0YXRpYyBpbnQgdHJ5X3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSlcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyNDIte1xcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMjc0LVxcdFxcdCAqL1xcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjI3NTpcXHRcXHRyZW1vdmVfbWVtb3J5X2Jsb2NrX2RldmljZXMoc3RhcnQsIHNpemUpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjI3NjpcXHRcXHRhcmNoX3JlbW92ZV9tZW1vcnkoc3RhcnQsIHNpemUsIE5VTEwsIE5VTEwpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjI3Ny1cXHR9IGVsc2Uge1xcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjI3OC1cXHRcXHQvKiBhbGwgbWVtYmxvY2tzIGluIHRoZSByYW5nZSBoYXZlIGFsdG1hcHMgKi9cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIyNzk6XFx0XFx0cmVtb3ZlX21lbW9yeV9ibG9ja3NfYW5kX2FsdG1hcHMoc3RhcnQsIHNpemUpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjI4MC1cXHR9XFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyOTQtLyoqXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMjk1OiAqIF9fcmVtb3ZlX21lbW9yeSAtIFJlbW92ZSBtZW1vcnkgaWYgZXZlcnkgbWVtb3J5IGJsb2NrIGlzIG9mZmxpbmVcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyOTYtICogQHN0YXJ0OiBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSByZWdpb24gdG8gcmVtb3ZlXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIzMDItICovXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMzAzOnZvaWQgX19yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzA0LXtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMwOS1cXHQgKi9cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIzMTA6XFx0aWYgKHRyeV9yZW1vdmVfbWVtb3J5KHN0YXJ0LCBzaXplKSlcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIzMTEtXFx0XFx0QlVHKCk7XFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIzMTctICovXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMzE4OmludCByZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzE5LXtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMyMi1cXHRsb2NrX2RldmljZV9ob3RwbHVnKCk7XFxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMzIzOlxcdHJjID0gdHJ5X3JlbW92ZV9tZW1vcnkoc3RhcnQsIHNpemUpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMyNC1cXHR1bmxvY2tfZGV2aWNlX2hvdHBsdWcoKTtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMyNy19XFxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMzI4OkVYUE9SVF9TWU1CT0xfR1BMKHJlbW92ZV9tZW1vcnkpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMyOS1cXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM9MjM1OT1zdGF0aWMgaW50IHRyeV9yZW9ubGluZV9tZW1vcnlfYmxvY2soc3RydWN0IG1lbW9yeV9ibG9jayAqbWVtLCB2b2lkICphcmcpXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIzODItICovXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMzgzOmludCBvZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KHU2NCBzdGFydCwgdTY0IHNpemUpXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzg0LXtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjQxOC1cXHRpZiAoIXJjKSB7XFxubW0vbWVtb3J5X2hvdHBsdWcuYzoyNDE5OlxcdFxcdHJjID0gdHJ5X3JlbW92ZV9tZW1vcnkoc3RhcnQsIHNpemUpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjQyMC1cXHRcXHRpZiAocmMpXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTI0MzctfVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzo1MjoyOS41NjY2MDY3OFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTUzODYzNzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBNZW1vcnkgSG90cGx1ZyBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgSSBzZWUgYHJlbW92ZV9tZW1vcnlgIGFuZCBgb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeWAgYXJlIGV4cG9ydGVkLiBJJ20gYWxzbyBzZWVpbmcgYHRyeV9vZmZsaW5lX25vZGVgIGdldCBjYWxsZWQgZnJvbSBgYWNwaV9wcm9jZXNzb3JfcG9zdF9lamVjdGAg4oCTIGludGVyZXN0aW5nLiBXYWl0LCBgdHJ5X29mZmxpbmVfbm9kZWAgZ2V0cyBjYWxsZWQgd2hlbiBhIG5vZGUgaGFzICpubyogbWVtb3J5IG9yIENQVXMgbGVmdCwgcmlnaHQ/IFNvIHRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzLCBpcyBgdHJ5X29mZmxpbmVfbm9kZWAgYWN0dWFsbHkgKnJlYWNoYWJsZSogaW4gdGhpcyBjb250ZXh0PyBBaCwgeWVzLCBtZW1vcnkgaG90cGx1ZyBtYWtlcyBpdCByZWFjaGFibGUuXG5cbkJ1dCwgYW5kIHRoaXMgaXMgaW1wb3J0YW50LCB0aGlzIHBhdGNoIHNwZWNpZmljYWxseSBpbnRyb2R1Y2VzIGBzeW5jX3ZtX3N0YXRzKClgIGJlZm9yZSBgbm9kZV9zZXRfb2ZmbGluZShuaWQpYC4gVGhlIGNvbW1pdCBtZXNzYWdlIGlzIHZlcnkgY2xlYXI6IFwiRm9sZCBhbnkgcGVuZGluZyBwZXItY3B1IHZtc3RhdCBkaWZmcyBpbnRvIHRoZSBnbG9iYWwgY291bnRlcnMgZmlyc3Q6IG9uY2UgdGhlIG5vZGUgbGVhdmVzIHRoZSBvbmxpbmUgc2V0IHRoZSBwZXJpb2RpYyBmb2xkIHNraXBzIGl0LCBvcnBoYW5pbmcgdGhlIHJlc2lkdWFsIG9uIGEgbGF0ZXIgb25saW5lLlwiIFRoYXQgbWFrZXMgc2Vuc2UsIHRoZXkncmUgcHJldmVudGluZyBvcnBoYW5lZCB2bXN0YXQgZGlmZnMuIFRoaXMgaXMgZGVmaW5pdGVseSBhICpmdW5jdGlvbmFsKiBjaGFuZ2U7IHdlJ3JlIGZpeGluZyBhIHBvdGVudGlhbCBidWcgd2hlcmUgdGhlc2UgZGlmZnMgY291bGQgYmUgbG9zdC5cblxuU28sIGlzIGl0IHdvcnRoIGZ1enppbmc/IEFic29sdXRlbHksIHRoaXMgaXMgY29yZSBrZXJuZWwgbG9naWMuIEdpdmVuIHRoaXMsIEkgbmVlZCB0byBmb2N1cyBvbiBhIGZldyBrZXkgZnVuY3Rpb25zOiBgdHJ5X29mZmxpbmVfbm9kZWAsIGBzeW5jX3ZtX3N0YXRzYCwgYW5kIGB2bXN0YXRfZm9sZF93b3JrYC5cblxuQW5kIG9mIGNvdXJzZSwgd2hhdCBjb25maWdzIGFyZSBuZWVkZWQgdG8gbWFrZSB0aGlzIGNvZGUgYWN0aXZlPyBJIG5lZWQgYENPTkZJR19NRU1PUllfSE9UUExVR2AgYW5kIGBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRWAuIEknbGwgZG91YmxlLWNoZWNrIGBtbS9tZW1vcnlfaG90cGx1Zy5jYCBhbmQgYG1tL3Ztc3RhdC5jYCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzQxOSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzo1MjozNS4xMjA0NzM4MTdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMDAyOTQ1OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX01FTU9SWV9IT1RQTFVHXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNzQ1IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL21lbW9yeS1ob3RwbHVnLnJzdD0yNzY9VGhlIGZvbGxvd2luZyBmaWxlcyBhcmUgY3VycmVudGx5IGRlZmluZWQ6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL21tL21lbW9yeS1ob3RwbHVnLnJzdC0zMDAtXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3Q6MzAxOlxcdFxcdCAgICAgICBBdmFpbGFiaWxpdHkgZGVwZW5kcyBvbiB0aGUgQ09ORklHX01FTU9SWV9IT1RQTFVHIGtlcm5lbFxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vbWVtb3J5LWhvdHBsdWcucnN0LTMwMi1cXHRcXHQgICAgICAgY29uZmlndXJhdGlvbiBvcHRpb24uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q9MjEwPUdlbmVyYWxcXG4tLVxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yNDYtICBBIGxvY2sgdGhhdCBwcm90ZWN0cyB0aGUgZmllbGRzIGRlZmluaW5nIHRoZSBub2RlIGV4dGVudHMuIE9ubHkgZGVmaW5lZCB3aGVuXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjI0NzogIGF0IGxlYXN0IG9uZSBvZiBgYENPTkZJR19NRU1PUllfSE9UUExVR2BgIG9yXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTI0OC0gIGBgQ09ORklHX0RFRkVSUkVEX1NUUlVDVF9QQUdFX0lOSVRgYCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGVuYWJsZWQuXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTI0OS0gIGBgcGdkYXRfcmVzaXplX2xvY2soKWBgIGFuZCBgYHBnZGF0X3Jlc2l6ZV91bmxvY2soKWBgIGFyZSBwcm92aWRlZCB0b1xcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdDoyNTA6ICBtYW5pcHVsYXRlIGBgbm9kZV9zaXplX2xvY2tgYCB3aXRob3V0IGNoZWNraW5nIGZvciBgYENPTkZJR19NRU1PUllfSE9UUExVR2BgXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTI1MS0gIG9yIGBgQ09ORklHX0RFRkVSUkVEX1NUUlVDVF9QQUdFX0lOSVRgYC5cXG4tLVxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdD0zNzc9R2VuZXJhbFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTQ4OC0gIGVhcmx5IGJvb3QsIGV4Y2x1ZGluZyBob3RwbHVnZ2VkIG1lbW9yeS4gRGVmaW5lZCBvbmx5IHdoZW5cXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q6NDg5OiAgYGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgYCBpcyBlbmFibGVkIGFuZCBpbml0aWFsaXplZCBieVxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC00OTAtICBgYGNhbGN1bGF0ZV9ub2RlX3RvdGFscGFnZXMoKWBgLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTUwOC0gIHRoZSBtYWluIGFsbG9jYXRvciBwYXRoLiBIb3dldmVyLCB0aGUgc2VxbG9jayBpcyB3cml0dGVuIHF1aXRlIGluZnJlcXVlbnRseS5cXG5Eb2N1bWVudGF0aW9uL21tL3BoeXNpY2FsX21lbW9yeS5yc3Q6NTA5OiAgRGVmaW5lZCBvbmx5IHdoZW4gYGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgYCBpcyBlbmFibGVkLlxcbkRvY3VtZW50YXRpb24vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC01MTAtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9waHlzaWNhbF9tZW1vcnkucnN0PTIwNT1ub2RlX3pvbmVsaXN0c+W8leeUqOOAglxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yMzQtYGBub2RlX3NpemVfbG9ja2BgXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdDoyMzU65LiA5Liq5L+d5oqk5a6a5LmJ6IqC54K56IyD5Zu05a2X5q6155qE6ZSB44CC5LuF5Zyo5byA5ZCv5LqGIGBgQ09ORklHX01FTU9SWV9IT1RQTFVHYGAg5oiWXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vcGh5c2ljYWxfbWVtb3J5LnJzdC0yMzYtYGBDT05GSUdfREVGRVJSRURfU1RSVUNUX1BBR0VfSU5JVGBgIOmFjee9rumAiemhueS4reeahOafkOS4gOS4quaXtuaJjeWumuS5ieOAguaPkFxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL3BoeXNpY2FsX21lbW9yeS5yc3QtMjM3LeS+m+S6hiBgYHBnZGF0X3Jlc2l6ZV9sb2NrKClgYCDlkowgYGBwZ2RhdF9yZXNpemVfdW5sb2NrKClgYCDnlKjmnaXmk43kvZxcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9waHlzaWNhbF9tZW1vcnkucnN0OjIzODpgYG5vZGVfc2l6ZV9sb2NrYGDvvIzogIzml6DpnIDmo4Dmn6UgYGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgYCDmiJZcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9waHlzaWNhbF9tZW1vcnkucnN0LTIzOS1gYENPTkZJR19ERUZFUlJFRF9TVFJVQ1RfUEFHRV9JTklUYGAg6YCJ6aG544CCXFxuLS1cXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnPTEzMD1DT05GSUdfQkxLX0lOTElORV9FTkNSWVBUSU9OPXlcXG4tLVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWctMTMyLSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc6MTMzOkNPTkZJR19NRU1PUllfSE9UUExVRz15XFxuYXJjaC9hcm02NC9jb25maWdzL2RlZmNvbmZpZy0xMzQtQ09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxcbi0tXFxuYXJjaC9hcm02NC9tbS9tbXUuYz0xNDI1PXZvaWQgX19pbml0IHBhZ2luZ19pbml0KHZvaWQpXFxuLS1cXG5hcmNoL2FybTY0L21tL21tdS5jLTE0MzQtXFxuYXJjaC9hcm02NC9tbS9tbXUuYzoxNDM1OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL2FybTY0L21tL21tdS5jLTE0MzYtc3RhdGljIHZvaWQgZnJlZV9ob3RwbHVnX3BhZ2VfcmFuZ2Uoc3RydWN0IHBhZ2UgKnBhZ2UsIHNpemVfdCBzaXplLFxcbi0tXFxuYXJjaC9hcm02NC9tbS9tbXUuYz0xNzg0PWludCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgaW50IG5vZGUsXFxuLS1cXG5hcmNoL2FybTY0L21tL21tdS5jLTE3OTctXFxuYXJjaC9hcm02NC9tbS9tbXUuYzoxNzk4OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL2FybTY0L21tL21tdS5jLTE3OTktdm9pZCB2bWVtbWFwX2ZyZWUodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQsXFxuLS1cXG5hcmNoL2FybTY0L21tL21tdS5jLTE4MDYtfVxcbmFyY2gvYXJtNjQvbW0vbW11LmM6MTgwNzojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXFxuYXJjaC9hcm02NC9tbS9tbXUuYy0xODA4LVxcbi0tXFxuYXJjaC9hcm02NC9tbS9tbXUuYz0xODkxPWludCBwdWRfZnJlZV9wbWRfcGFnZShwdWRfdCAqcHVkcCwgdW5zaWduZWQgbG9uZyBhZGRyKVxcbi0tXFxuYXJjaC9hcm02NC9tbS9tbXUuYy0xOTM5LVxcbmFyY2gvYXJtNjQvbW0vbW11LmM6MTk0MDojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9hcm02NC9tbS9tbXUuYy0xOTQxLXN0YXRpYyB2b2lkIF9fcmVtb3ZlX3BnZF9tYXBwaW5nKHBnZF90ICpwZ2RpciwgdW5zaWduZWQgbG9uZyBzdGFydCwgdTY0IHNpemUpXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnPTk3PUNPTkZJR19aU01BTExPQz15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZy05OC0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnOjk5OkNPTkZJR19NRU1PUllfSE9UUExVRz15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZy0xMDAtIyBDT05GSUdfTUhQX0RFRkFVTFRfT05MSU5FX1RZUEVfT0ZGTElORSBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTExMj1DT05GSUdfWlNNQUxMT0M9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTEzLSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6MTE0OkNPTkZJR19NRU1PUllfSE9UUExVRz15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy0xMTUtIyBDT05GSUdfTUhQX0RFRkFVTFRfT05MSU5FX1RZUEVfT0ZGTElORSBpcyBub3Qgc2V0XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmM9NjQ9dm9pZCBfX2luaXQgZml4cmFuZ2VfaW5pdCh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgcGdkX3QgKnBnZF9iYXNlKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTEwNS1cXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmM6MTA2OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmMtMTA3LWludCBhcmNoX2FkZF9tZW1vcnkoaW50IG5pZCwgdTY0IHN0YXJ0LCB1NjQgc2l6ZSwgc3RydWN0IG1ocF9wYXJhbXMgKnBhcmFtcylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL21tL2luaXQuYz0xNDM9aW50IF9fbWVtaW5pdCB2bWVtbWFwX3BvcHVsYXRlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvbW0vaW5pdC5jLTE1Mi1cXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmM6MTUzOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL2xvb25nYXJjaC9tbS9pbml0LmMtMTU0LXZvaWQgdm1lbW1hcF9mcmVlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcClcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnPTU3PUNPTkZJR19OVU1BPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZzo1ODpDT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnLTU5LUNPTkZJR19NRU1PUllfSE9UUkVNT1ZFPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZz04Nj1DT05GSUdfU0hVRkZMRV9QQUdFX0FMTE9DQVRPUj15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnLTg3LSMgQ09ORklHX0NPTVBBVF9CUksgaXMgbm90IHNldFxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZzo4ODpDT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZy04OS1DT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUuaD0xMDE1PXN0YXRpYyBpbmxpbmUgaW50IF9fbWVtaW5pdCB2bWVtbWFwX2NyZWF0ZV9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3BndGFibGUuaC0xMDIzLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGd0YWJsZS5oOjEwMjQ6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcGd0YWJsZS5oLTEwMjUtc3RhdGljIGlubGluZSB2b2lkIHZtZW1tYXBfcmVtb3ZlX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaD0zMzM9c3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIHJhZGl4X19nZXRfdHJlZV9zaXplKHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYm9vazNzLzY0L3JhZGl4LmgtMzQ4LVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaDozNDk6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaC0zNTAtaW50IHJhZGl4X19jcmVhdGVfc2VjdGlvbl9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2Jvb2szcy82NC9yYWRpeC5oPTM1Mj1pbnQgcmFkaXhfX3JlbW92ZV9zZWN0aW9uX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpO1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaDozNTM6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9ib29rM3MvNjQvcmFkaXguaC0zNTQtXFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbWFjaGRlcC5oPTI2PXN0cnVjdCBtYWNoZGVwX2NhbGxzIHtcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9tYWNoZGVwLmgtMzMtI2VuZGlmXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21hY2hkZXAuaDozNDojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21hY2hkZXAuaC0zNS1cXHR1bnNpZ25lZCBsb25nXFx0KCptZW1vcnlfYmxvY2tfc2l6ZSkodm9pZCk7XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbW16b25lLmg9Mjg9ZXh0ZXJuIGNwdW1hc2tfdmFyX3Qgbm9kZV90b19jcHVtYXNrX21hcFtdO1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9tbXpvbmUuaDoyOTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL21tem9uZS5oLTMwLWV4dGVybiB1bnNpZ25lZCBsb25nIG1heF9wZm47XFxuLS1cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc3BhcnNlbWVtLmgtMTQtXFxuYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NwYXJzZW1lbS5oOjE1OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc3BhcnNlbWVtLmgtMTYtZXh0ZXJuIGludCByZW1vdmVfc2VjdGlvbl9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9zcGFyc2VtZW0uaD0yMz1zdGF0aWMgaW5saW5lIGludCBob3RfYWRkX3Njbl90b19uaWQodW5zaWduZWQgbG9uZyBzY25fYWRkcilcXG4tLVxcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9zcGFyc2VtZW0uaC0yNy0jZW5kaWYgLyogQ09ORklHX05VTUEgKi9cXG5hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc3BhcnNlbWVtLmg6Mjg6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xcbmFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9zcGFyc2VtZW0uaC0yOS0jZW5kaWYgLyogX19LRVJORUxfXyAqL1xcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC9zZXR1cF82NC5jPTgzMj12b2lkIF9faW5pdCBzZXR1cF9wZXJfY3B1X2FyZWFzKHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL3NldHVwXzY0LmMtODgxLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvc2V0dXBfNjQuYzo4ODI6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9rZXJuZWwvc2V0dXBfNjQuYy04ODMtdW5zaWduZWQgbG9uZyBtZW1vcnlfYmxvY2tfc2l6ZV9ieXRlcyh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL2tleGVjL2NyYXNoLmM9NDcyPXVuc2lnbmVkIGludCBhcmNoX2NyYXNoX2dldF9lbGZjb3JlaGRyX3NpemUodm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXhlYy9jcmFzaC5jLTQ3Ny1cXHRwaGRyX2NudCA9IG51bV9wb3NzaWJsZV9jcHVzKCkgKyAxO1xcbmFyY2gvcG93ZXJwYy9rZXhlYy9jcmFzaC5jOjQ3ODpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfTUVNT1JZX0hPVFBMVUcpKVxcbmFyY2gvcG93ZXJwYy9rZXhlYy9jcmFzaC5jLTQ3OS1cXHRcXHRwaGRyX2NudCArPSBDT05GSUdfQ1JBU0hfTUFYX01FTU9SWV9SQU5HRVM7XFxuLS1cXG5hcmNoL3Bvd2VycGMva2V4ZWMvZmlsZV9sb2FkXzY0LmM9Mzc3PXN0YXRpYyB1bnNpZ25lZCBpbnQga2R1bXBfZXh0cmFfZWxmY29yZWhkcl9zaXplKHN0cnVjdCBjcmFzaF9tZW0gKmNtZW0pXFxuYXJjaC9wb3dlcnBjL2tleGVjL2ZpbGVfbG9hZF82NC5jLTM3OC17XFxuYXJjaC9wb3dlcnBjL2tleGVjL2ZpbGVfbG9hZF82NC5jOjM3OTojaWYgZGVmaW5lZChDT05GSUdfQ1JBU0hfSE9UUExVRykgXFx1MDAyNlxcdTAwMjYgZGVmaW5lZChDT05GSUdfTUVNT1JZX0hPVFBMVUcpXFxuYXJjaC9wb3dlcnBjL2tleGVjL2ZpbGVfbG9hZF82NC5jLTM4MC1cXHR1bnNpZ25lZCBpbnQgZXh0cmFfc3ogPSAwO1xcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfcGd0YWJsZS5jPTEwNz1pbnQgX19tZW1pbml0IGhhc2hfX3ZtZW1tYXBfY3JlYXRlX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3BndGFibGUuYy0xMjktXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfcGd0YWJsZS5jOjEzMDojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfcGd0YWJsZS5jLTEzMS12b2lkIGhhc2hfX3ZtZW1tYXBfcmVtb3ZlX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM9MTE5Nj1zdGF0aWMgdW5zaWduZWQgbG9uZyBfX2luaXQgaHRhYl9nZXRfdGFibGVfc2l6ZSh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0xMjEwLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM6MTIxMTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYy0xMjEyLXN0YXRpYyBpbnQgcmVzaXplX2hwdF9mb3JfaG90cGx1Zyh1bnNpZ25lZCBsb25nIG5ld19tZW1fc2l6ZSlcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmM9MTI2Mj1pbnQgaGFzaF9fcmVtb3ZlX3NlY3Rpb25fbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9oYXNoX3V0aWxzLmMtMTI3NS19XFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L2hhc2hfdXRpbHMuYzoxMjc2OiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvaGFzaF91dGlscy5jLTEyNzctXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jPTI3NT1ub3RyYWNlIHZvaWQgbW11X2NsZWFudXBfYWxsKHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jLTI4NC1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jOjI4NTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYy0yODYtaW50IF9fbWVtaW5pdCBjcmVhdGVfc2VjdGlvbl9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLFxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYz0yOTU9aW50IF9fbWVtaW5pdCByZW1vdmVfc2VjdGlvbl9tYXBwaW5nKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3BndGFibGUuYy0zMDEtfVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9wZ3RhYmxlLmM6MzAyOiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcGd0YWJsZS5jLTMwMy1cXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM9Njc5PW5vdHJhY2Ugdm9pZCByYWRpeF9fbW11X2NsZWFudXBfYWxsKHZvaWQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTY5MS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jOjY5MjojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYy02OTMtc3RhdGljIHZvaWQgZnJlZV9wdGVfdGFibGUocHRlX3QgKnB0ZV9zdGFydCwgcG1kX3QgKnBtZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmM9OTQ2PWludCBfX21lbWluaXQgcmFkaXhfX3JlbW92ZV9zZWN0aW9uX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCwgdW5zaWduZWQgbG9uZyBlbmQpXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jLTk1MC19XFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYzo5NTE6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtOTUyLVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL2Jvb2szczY0L3JhZGl4X3BndGFibGUuYz0xMzA2PWludCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZV9jb21wb3VuZF9wYWdlcyh1bnNpZ25lZCBsb25nIHN0YXJ0X3BmbixcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtMTQxMy1cXG5hcmNoL3Bvd2VycGMvbW0vYm9vazNzNjQvcmFkaXhfcGd0YWJsZS5jOjE0MTQ6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9tbS9ib29rM3M2NC9yYWRpeF9wZ3RhYmxlLmMtMTQxNS12b2lkIF9fbWVtaW5pdCByYWRpeF9fdm1lbW1hcF9yZW1vdmVfbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIHBhZ2Vfc2l6ZSlcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmM9Mjc2PWludCBfX21lbWluaXQgdm1lbW1hcF9wb3B1bGF0ZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgaW50IG5vZGUsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jLTI4Ny1cXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jOjI4ODojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9wb3dlcnBjL21tL2luaXRfNjQuYy0yODktc3RhdGljIHVuc2lnbmVkIGxvbmcgdm1lbW1hcF9saXN0X2ZyZWUodW5zaWduZWQgbG9uZyBzdGFydClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmM9NDY2PXN0YXRpYyBpbnQgX19pbml0IGR0X3NjYW5fbW11X3BpZF93aWR0aCh1bnNpZ25lZCBsb25nIG5vZGUsXFxuLS1cXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jLTQ5OC0gKi9cXG5hcmNoL3Bvd2VycGMvbW0vaW5pdF82NC5jOjQ5OTojaWZuZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9tbS9pbml0XzY0LmMtNTAwLSNkZWZpbmUgREVGQVVMVF9NRU1PUllfQkxPQ0tfU0laRVxcdFNaXzE2TVxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL21lbS5jPTUyPUVYUE9SVF9TWU1CT0woX19waHlzX21lbV9hY2Nlc3NfcHJvdCk7XFxuYXJjaC9wb3dlcnBjL21tL21lbS5jLTUzLVxcbmFyY2gvcG93ZXJwYy9tbS9tZW0uYzo1NDojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9wb3dlcnBjL21tL21lbS5jLTU1LXN0YXRpYyBERUZJTkVfTVVURVgobGluZWFyX21hcHBpbmdfbXV0ZXgpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL21tL21tdV9kZWNsLmg9MTc0PXN0YXRpYyBpbmxpbmUgYm9vbCBkZWJ1Z19wYWdlYWxsb2NfZW5hYmxlZF9vcl9rZmVuY2Uodm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9tbXVfZGVjbC5oLTE3OC1cXG5hcmNoL3Bvd2VycGMvbW0vbW11X2RlY2wuaDoxNzk6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9tbS9tbXVfZGVjbC5oLTE4MC1pbnQgY3JlYXRlX3NlY3Rpb25fbWFwcGluZyh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvYm9vazNlX3BndGFibGUuYz0yMz1pbnQgX19tZW1pbml0IHZtZW1tYXBfY3JlYXRlX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvYm9vazNlX3BndGFibGUuYy00Ni1cXG5hcmNoL3Bvd2VycGMvbW0vbm9oYXNoL2Jvb2szZV9wZ3RhYmxlLmM6NDc6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9tbS9ub2hhc2gvYm9vazNlX3BndGFibGUuYy00OC12b2lkIHZtZW1tYXBfcmVtb3ZlX21hcHBpbmcodW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9udW1hLmM9MTI0MT1lYXJseV9wYXJhbShcXFwibnVtYVxcXCIsIGVhcmx5X251bWEpO1xcbmFyY2gvcG93ZXJwYy9tbS9udW1hLmMtMTI0Mi1cXG5hcmNoL3Bvd2VycGMvbW0vbnVtYS5jOjEyNDM6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9tbS9udW1hLmMtMTI0NC0vKlxcbi0tXFxuYXJjaC9wb3dlcnBjL21tL251bWEuYz0xMzY1PXU2NCBtZW1vcnlfaG90cGx1Z19tYXgodm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9tbS9udW1hLmMtMTM2OC19XFxuYXJjaC9wb3dlcnBjL21tL251bWEuYzoxMzY5OiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cXG5hcmNoL3Bvd2VycGMvbW0vbnVtYS5jLTEzNzAtXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvc2V0dXAuYz00Mzc9c3RhdGljIHZvaWQgcG52X2tleGVjX2NwdV9kb3duKGludCBjcmFzaF9zaHV0ZG93biwgaW50IHNlY29uZGFyeSlcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9zZXR1cC5jLTQ4Mi1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvc2V0dXAuYzo0ODM6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9zZXR1cC5jLTQ4NC1zdGF0aWMgdW5zaWduZWQgbG9uZyBwbnZfbWVtb3J5X2Jsb2NrX3NpemUodm9pZClcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJudi9zZXR1cC5jPTU2OT1kZWZpbmVfbWFjaGluZShwb3dlcm52KSB7XFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvc2V0dXAuYy01ODQtI2VuZGlmXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm52L3NldHVwLmM6NTg1OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybnYvc2V0dXAuYy01ODYtXFx0Lm1lbW9yeV9ibG9ja19zaXplXFx0PSBwbnZfbWVtb3J5X2Jsb2NrX3NpemUsXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvTWFrZWZpbGU9MTc9b2JqLSQoQ09ORklHX0hPVFBMVUdfQ1BVKVxcdCs9IGhvdHBsdWctY3B1Lm9cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvTWFrZWZpbGU6MTg6b2JqLSQoQ09ORklHX01FTU9SWV9IT1RQTFVHKVxcdCs9IGhvdHBsdWctbWVtb3J5Lm8gcG1lbS5vXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL01ha2VmaWxlLTE5LVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2lvbW11LmM9MTI4Nj1zdGF0aWMgcGh5c19hZGRyX3QgZGR3X21lbW9yeV9ob3RwbHVnX21heCh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2lvbW11LmMtMTI4OS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaW9tbXUuYzoxMjkwOiNpZiBkZWZpbmVkKENPTkZJR19OVU1BKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19NRU1PUllfSE9UUExVRylcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaW9tbXUuYy0xMjkxLVxcdG1heF9hZGRyID0gaG90X2FkZF9kcmNvbmZfbWVtb3J5X21heCgpO1xcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3BzZXJpZXMuaD02MD1pbnQgaGFuZGxlX2RscGFyX2Vycm9ybG9nKHN0cnVjdCBwc2VyaWVzX2hwX2Vycm9ybG9nICpocF9lcnJsb2cpO1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9wc2VyaWVzLmgtNjEtXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3BzZXJpZXMuaDo2MjojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3BzZXJpZXMuaC02My1pbnQgZGxwYXJfbWVtb3J5KHN0cnVjdCBwc2VyaWVzX2hwX2Vycm9ybG9nICpocF9lbG9nKTtcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jPTExMTg9c3RhdGljIGludCBwU2VyaWVzX3BjaV9wcm9iZV9tb2RlKHN0cnVjdCBwY2lfYnVzICpidXMpXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYy0xMTI0LVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jOjExMjU6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jLTExMjYtc3RhdGljIHVuc2lnbmVkIGxvbmcgcHNlcmllc19tZW1vcnlfYmxvY2tfc2l6ZSh2b2lkKVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3NldHVwLmM9MTEzOT1kZWZpbmVfbWFjaGluZShwc2VyaWVzKSB7XFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvc2V0dXAuYy0xMTYxLSNlbmRpZlxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jOjExNjI6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9zZXR1cC5jLTExNjMtXFx0Lm1lbW9yeV9ibG9ja19zaXplXFx0PSBwc2VyaWVzX21lbW9yeV9ibG9ja19zaXplLFxcbi0tXFxuYXJjaC9yaXNjdi9tbS9pbml0LmM9MTQyOT12b2lkIF9faW5pdCBwZ3RhYmxlX2NhY2hlX2luaXQodm9pZClcXG4tLVxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jLTE0MzMtXFx0XFx0cHJlYWxsb2NhdGVfcGdkX3BhZ2VzX3JhbmdlKE1PRFVMRVNfVkFERFIsIE1PRFVMRVNfRU5ELCBcXFwiYnBmL21vZHVsZXNcXFwiKTtcXG5hcmNoL3Jpc2N2L21tL2luaXQuYzoxNDM0OlxcdGlmIChJU19FTkFCTEVEKENPTkZJR19NRU1PUllfSE9UUExVRykpIHtcXG5hcmNoL3Jpc2N2L21tL2luaXQuYy0xNDM1LVxcdFxcdHByZWFsbG9jYXRlX3BnZF9wYWdlc19yYW5nZShWTUVNTUFQX1NUQVJULCBWTUVNTUFQX0VORCwgXFxcInZtZW1tYXBcXFwiKTtcXG4tLVxcbmFyY2gvcmlzY3YvbW0vaW5pdC5jPTE0NDc9c3RydWN0IGV4ZWNtZW1faW5mbyBfX2luaXQgKmV4ZWNtZW1fYXJjaF9zZXR1cCh2b2lkKVxcbi0tXFxuYXJjaC9yaXNjdi9tbS9pbml0LmMtMTQ3Ni1cXG5hcmNoL3Jpc2N2L21tL2luaXQuYzoxNDc3OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3Jpc2N2L21tL2luaXQuYy0xNDc4LXN0YXRpYyB2b2lkIF9fbWVtaW5pdCBmcmVlX3B0ZV90YWJsZShwdGVfdCAqcHRlX3N0YXJ0LCBwbWRfdCAqcG1kKVxcbi0tXFxuYXJjaC9yaXNjdi9tbS9pbml0LmM9MTc0MD12b2lkIF9fcmVmIHZtZW1tYXBfZnJlZSh1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCwgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXApXFxuLS1cXG5hcmNoL3Jpc2N2L21tL2luaXQuYy0xNzQzLX1cXG5hcmNoL3Jpc2N2L21tL2luaXQuYzoxNzQ0OiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgKi9cXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz0xMDM9Q09ORklHX1NMVUJfU1RBVFM9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xMDQtIyBDT05GSUdfQ09NUEFUX0JSSyBpcyBub3Qgc2V0XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjEwNTpDT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xMDYtQ09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxcbi0tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTk2PUNPTkZJR19TTEFCX0JVQ0tFVFM9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy05Ny0jIENPTkZJR19DT01QQVRfQlJLIGlzIG5vdCBzZXRcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6OTg6Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctOTktQ09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxcbi0tXFxuYXJjaC9zMzkwL21tL2luaXQuYz0xODg9dm9pZCBfX2luaXQgc2V0dXBfcGVyX2NwdV9hcmVhcyh2b2lkKVxcbi0tXFxuYXJjaC9zMzkwL21tL2luaXQuYy0yMDktXFxuYXJjaC9zMzkwL21tL2luaXQuYzoyMTA6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gvczM5MC9tbS9pbml0LmMtMjExLVxcbi0tXFxuYXJjaC9zMzkwL21tL2luaXQuYz0yODE9dm9pZCBhcmNoX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSwgc3RydWN0IHZtZW1fYWx0bWFwICphbHRtYXAsXFxuLS1cXG5hcmNoL3MzOTAvbW0vaW5pdC5jLTI4OS19XFxuYXJjaC9zMzkwL21tL2luaXQuYzoyOTA6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xcbmFyY2gvczM5MC9tbS9pbml0LmMtMjkxLVxcbi0tXFxuYXJjaC9zMzkwL21tL3ZtZW0uYz01MTM9aW50IF9fbWVtaW5pdCB2bWVtbWFwX3BvcHVsYXRlKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kLCBpbnQgbm9kZSxcXG4tLVxcbmFyY2gvczM5MC9tbS92bWVtLmMtNTI2LVxcbmFyY2gvczM5MC9tbS92bWVtLmM6NTI3OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3MzOTAvbW0vdm1lbS5jLTUyOC1cXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9jcmFzaC5jPTQxNj1pbnQgY3Jhc2hfbG9hZF9zZWdtZW50cyhzdHJ1Y3Qga2ltYWdlICppbWFnZSlcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9jcmFzaC5jLTQzNi1cXHQgKi9cXG5hcmNoL3g4Ni9rZXJuZWwvY3Jhc2guYzo0Mzc6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01FTU9SWV9IT1RQTFVHKSlcXG5hcmNoL3g4Ni9rZXJuZWwvY3Jhc2guYy00MzgtXFx0XFx0cG51bSA9IDIgKyBDT05GSUdfTlJfQ1BVU19ERUZBVUxUICsgQ09ORklHX0NSQVNIX01BWF9NRU1PUllfUkFOR0VTO1xcbi0tXFxuYXJjaC94ODYva2VybmVsL2NyYXNoLmM9NDk0PXVuc2lnbmVkIGludCBhcmNoX2NyYXNoX2dldF9lbGZjb3JlaGRyX3NpemUodm9pZClcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9jcmFzaC5jLTQ5OS1cXHRzeiA9IDIgKyBDT05GSUdfTlJfQ1BVU19ERUZBVUxUO1xcbmFyY2gveDg2L2tlcm5lbC9jcmFzaC5jOjUwMDpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfTUVNT1JZX0hPVFBMVUcpKVxcbmFyY2gveDg2L2tlcm5lbC9jcmFzaC5jLTUwMS1cXHRcXHRzeiArPSBDT05GSUdfQ1JBU0hfTUFYX01FTU9SWV9SQU5HRVM7XFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvZTgyMC5jPTkwOT1fX2luaXQgc3RhdGljIGludCBwYXJzZV9tZW1vcHQoY2hhciAqcClcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9lODIwLmMtOTM0LVxcbmFyY2gveDg2L2tlcm5lbC9lODIwLmM6OTM1OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3g4Ni9rZXJuZWwvZTgyMC5jLTkzNi1cXHRtYXhfbWVtX3NpemUgPSBtZW1fc2l6ZTtcXG4tLVxcbmFyY2gveDg2L2tlcm5lbC9lODIwLmM9MTI4OD1fX2luaXQgdm9pZCBlODIwX19tZW1ibG9ja19zZXR1cCh2b2lkKVxcbi0tXFxuYXJjaC94ODYva2VybmVsL2U4MjAuYy0xMjkyLVxcbmFyY2gveDg2L2tlcm5lbC9lODIwLmM6MTI5MzojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC94ODYva2VybmVsL2U4MjAuYy0xMjk0LVxcdC8qXFxuLS1cXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM9ODU0PXN0YXRpYyB2b2lkIF9fbWVtaW5pdCB2bWVtbWFwX2ZsdXNoX3VudXNlZF9wbWQodm9pZClcXG4tLVxcbmFyY2gveDg2L21tL2luaXRfNjQuYy04NjUtXFxuYXJjaC94ODYvbW0vaW5pdF82NC5jOjg2NjojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuYXJjaC94ODYvbW0vaW5pdF82NC5jLTg2Ny0vKiBSZXR1cm5zIHRydWUgaWYgdGhlIFBNRCBpcyBjb21wbGV0ZWx5IHVudXNlZCBhbmQgdGh1cyBpdCBjYW4gYmUgZnJlZWQgKi9cXG4tLVxcbmFyY2gveDg2L21tL2luaXRfNjQuYz05MTg9c3RhdGljIHZvaWQgX19tZW1pbml0IHZtZW1tYXBfdXNlX25ld19zdWJfcG1kKHVuc2lnbmVkIGxvbmcgc3RhcnQsIHVuc2lnbmVkIGxvbmcgZW5kKVxcbi0tXFxuYXJjaC94ODYvbW0vaW5pdF82NC5jLTk0Ny0gKi9cXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM6OTQ4OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmMtOTQ5LS8qXFxuLS1cXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM9MTMwMz12b2lkIF9fcmVmIGFyY2hfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplLCBzdHJ1Y3Qgdm1lbV9hbHRtYXAgKmFsdG1hcCxcXG4tLVxcbmFyY2gveDg2L21tL2luaXRfNjQuYy0xMzExLX1cXG5hcmNoL3g4Ni9tbS9pbml0XzY0LmM6MTMxMjojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RQTFVHICovXFxuYXJjaC94ODYvbW0vaW5pdF82NC5jLTEzMTMtXFxuLS1cXG5hcmNoL3g4Ni94ZW4vc2V0dXAuYz01Mzc9c3RhdGljIHZvaWQgX19pbml0IHhlbl9hbGlnbl9hbmRfYWRkX2U4MjBfcmVnaW9uKHBoeXNfYWRkcl90IHN0YXJ0LFxcbi0tXFxuYXJjaC94ODYveGVuL3NldHVwLmMtNTQ1LVxcdFxcdGVuZCBcXHUwMDI2PSB+KChwaHlzX2FkZHJfdClQQUdFX1NJWkUgLSAxKTtcXG5hcmNoL3g4Ni94ZW4vc2V0dXAuYzo1NDY6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmFyY2gveDg2L3hlbi9zZXR1cC5jLTU0Ny1cXHRcXHQvKlxcbi0tXFxuYXJjaC94ODYveGVuL3NldHVwLmM9Nzk0PWNoYXIgKiBfX2luaXQgeGVuX21lbW9yeV9zZXR1cCh2b2lkKVxcbi0tXFxuYXJjaC94ODYveGVuL3NldHVwLmMtODEzLVxcbmFyY2gveDg2L3hlbi9zZXR1cC5jOjgxNDojaWYgZGVmaW5lZChDT05GSUdfTUVNT1JZX0hPVFBMVUcpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX1hFTl9CQUxMT09OKVxcbmFyY2gveDg2L3hlbi9zZXR1cC5jLTgxNS1cXHR4ZW5fc2F2ZWRfbWF4X21lbV9zaXplID0gbWF4X21lbV9zaXplO1xcbi0tXFxuZHJpdmVycy9hY3BpL251bWEvc3JhdC5jPTM1OT1hY3BpX3BhcnNlX21lbW9yeV9hZmZpbml0eSh1bmlvbiBhY3BpX3N1YnRhYmxlX2hlYWRlcnMgKmhlYWRlcixcXG4tLVxcbmRyaXZlcnMvYWNwaS9udW1hL3NyYXQuYy0zNzktXFx0XFx0cmV0dXJuIDA7XFxuZHJpdmVycy9hY3BpL251bWEvc3JhdC5jOjM4MDpcXHRob3RwbHVnZ2FibGUgPSBJU19FTkFCTEVEKENPTkZJR19NRU1PUllfSE9UUExVRykgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL2FjcGkvbnVtYS9zcmF0LmMtMzgxLVxcdFxcdChtYS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBBQ1BJX1NSQVRfTUVNX0hPVF9QTFVHR0FCTEUpO1xcbi0tXFxuZHJpdmVycy9hY3BpL3BjaV9yb290LmM9NDI4PXN0YXRpYyB1MzIgY2FsY3VsYXRlX3N1cHBvcnQodm9pZClcXG4tLVxcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jLTQ1MS0gKiBCYWNrZ3JvdW5kIG9uIGhvdHBsdWcgc3VwcG9ydCwgYW5kIG1ha2luZyBpdCBkZXBlbmQgb24gb25seVxcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jOjQ1MjogKiBDT05GSUdfSE9UUExVR19QQ0lfUENJRSB2cy4gYWxzbyBjb25zaWRlcmluZyBDT05GSUdfTUVNT1JZX0hPVFBMVUc6XFxuZHJpdmVycy9hY3BpL3BjaV9yb290LmMtNDUzLSAqXFxuZHJpdmVycy9hY3BpL3BjaV9yb290LmM6NDU0OiAqIENPTkZJR19BQ1BJX0hPVFBMVUdfTUVNT1JZIGRvZXMgZGVwZW5kIG9uIENPTkZJR19NRU1PUllfSE9UUExVRywgYnV0XFxuZHJpdmVycy9hY3BpL3BjaV9yb290LmMtNDU1LSAqIHRoZXJlIGlzIG5vIGV4aXN0aW5nIF9PU0MgZm9yIG1lbW9yeSBob3RwbHVnIHN1cHBvcnQuIFRoZSByZWFzb24gaXMgdGhhdFxcbi0tXFxuZHJpdmVycy9hY3BpL3BjaV9yb290LmMtNDcwLSAqIG5vdCBzdXBwb3J0IGJsb2NraW5nIGhvdHBsdWcsIGlzIHRvIHJlcXVpcmUgdGhlIG1lbW9yeSBkZXZpY2UgdG8gYmVcXG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYzo0NzE6ICogZGlzYWJsZWQgYmVmb3JlIGhvdHBsdWcgaXMgYXR0ZW1wdGVkLiBXaGVuIENPTkZJR19NRU1PUllfSE9UUExVRyBpc1xcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jLTQ3Mi0gKiBkaXNhYmxlZCB0aGF0IHN0ZXAgd2lsbCBmYWlsIGFuZCB0aGUgcmVtb3ZlIGF0dGVtcHQgY2FuY2VsbGVkIGJ5IHRoZVxcbmRyaXZlcnMvYWNwaS9wY2lfcm9vdC5jLTQ3My0gKiB1c2VyLiBJZiB0aGF0IGlzIG5vdCBob25vcmVkIGFuZCB0aGUgY2FyZCBpcyByZW1vdmVkIGFueXdheSB0aGVuIGl0XFxuZHJpdmVycy9hY3BpL3BjaV9yb290LmM6NDc0OiAqIGRvZXMgbm90IG1hdHRlciBpZiBDT05GSUdfTUVNT1JZX0hPVFBMVUcgaXMgZW5hYmxlZCBvciBub3QsIGl0IHdpbGxcXG5kcml2ZXJzL2FjcGkvcGNpX3Jvb3QuYy00NzUtICogY2F1c2UgYSBjcmFzaCBhbmQgb3RoZXIgYmFkbmVzcy5cXG4tLVxcbmRyaXZlcnMvYmFzZS9NYWtlZmlsZT0xNT1vYmotJChDT05GSUdfTlVNQSlcXHQrPSBub2RlLm9cXG5kcml2ZXJzL2Jhc2UvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX01FTU9SWV9IT1RQTFVHKSArPSBtZW1vcnkub1xcbmRyaXZlcnMvYmFzZS9NYWtlZmlsZS0xNy1pZmVxICgkKENPTkZJR19TWVNGUykseSlcXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz0yMDc9aW50IG1lbW9yeV9ub3RpZnkoZW51bSBtZW1vcnlfYmxvY2tfc3RhdGUgc3RhdGUsIHZvaWQgKnYpXFxuLS1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtMjExLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYzoyMTI6I2lmIGRlZmluZWQoQ09ORklHX01FTU9SWV9GQUlMVVJFKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19NRU1PUllfSE9UUExVRylcXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtMjEzLXN0YXRpYyB1bnNpZ25lZCBsb25nIG1lbWJsa19ucl9wb2lzb24oc3RydWN0IG1lbW9yeV9ibG9jayAqbWVtKTtcXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz0xMTk2PWludCB3YWxrX2R5bmFtaWNfbWVtb3J5X2dyb3VwcyhpbnQgbmlkLCB3YWxrX21lbW9yeV9ncm91cHNfZnVuY190IGZ1bmMsXFxuLS1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtMTIxNy1cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmM6MTIxODojaWYgZGVmaW5lZChDT05GSUdfTUVNT1JZX0ZBSUxVUkUpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX01FTU9SWV9IT1RQTFVHKVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy0xMjE5LXZvaWQgbWVtYmxrX25yX3BvaXNvbl9pbmModW5zaWduZWQgbG9uZyBwZm4pXFxuLS1cXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jPTEwOT1zdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqbm9kZV9hY2Nlc3Nfbm9kZV9ncm91cHNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvYmFzZS9ub2RlLmMtMTE0LVxcbmRyaXZlcnMvYmFzZS9ub2RlLmM6MTE1OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jLTExNi1zdGF0aWMgQkxPQ0tJTkdfTk9USUZJRVJfSEVBRChub2RlX2NoYWluKTtcXG4tLVxcbmRyaXZlcnMvYmFzZS9ub2RlLmM9NzY0PWludCB1bnJlZ2lzdGVyX2NwdV91bmRlcl9ub2RlKHVuc2lnbmVkIGludCBjcHUsIHVuc2lnbmVkIGludCBuaWQpXFxuLS1cXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jLTc4Mi1cXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jOjc4MzojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuZHJpdmVycy9iYXNlL25vZGUuYy03ODQtc3RhdGljIHZvaWQgZG9fcmVnaXN0ZXJfbWVtb3J5X2Jsb2NrX3VuZGVyX25vZGUoaW50IG5pZCxcXG4tLVxcbmRyaXZlcnMvYmFzZS9ub2RlLmM9ODY0PXZvaWQgcmVnaXN0ZXJfbWVtb3J5X2Jsb2Nrc191bmRlcl9ub2RlX2hvdHBsdWcoaW50IG5pZCwgdW5zaWduZWQgbG9uZyBzdGFydF9wZm4sXFxuLS1cXG5kcml2ZXJzL2Jhc2Uvbm9kZS5jLTg3MC19XFxuZHJpdmVycy9iYXNlL25vZGUuYzo4NzE6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUExVRyAqL1xcbmRyaXZlcnMvYmFzZS9ub2RlLmMtODcyLVxcbi0tXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmM9NTc5PXN0YXRpYyB2b2lkIGRpc2FibGVfcGFnZV9yZXBvcnRpbmcodm9pZCk7XFxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtNTgwLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjU4MTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtNTgyLXN0YXRpYyBpbmxpbmUgYm9vbCBoYXNfcGZuX2lzX2JhY2tlZChzdHJ1Y3QgaHZfaG90YWRkX3N0YXRlICpoYXMsXFxuLS1cXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYz05Njg9c3RhdGljIHZvaWQgaG90X2FkZF9yZXEoc3RydWN0IHdvcmtfc3RydWN0ICpkdW1teSlcXG4tLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTk3MC1cXHRzdHJ1Y3QgZG1faG90X2FkZF9yZXNwb25zZSByZXNwO1xcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjk3MTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtOTcyLVxcdHVuc2lnbmVkIGxvbmcgcGdfc3RhcnQsIHBmbl9jbnQ7XFxuLS1cXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy05ODAtXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmM6OTgxOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy05ODItXFx0cGdfc3RhcnQgPSBkbS1cXHUwMDNlaGFfd3JrLmhhX3BhZ2VfcmFuZ2UuZmluZm8uc3RhcnRfcGFnZTtcXG4tLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jPTE5MzY9c3RhdGljIGludCBiYWxsb29uX3Byb2JlKHN0cnVjdCBodl9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTE5NDQtXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmM6MTk0NTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RQTFVHXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMTk0Ni1cXHQvKlxcbi0tXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMTk3NS1cXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYzoxOTc2OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy0xOTc3LVxcdHNldF9vbmxpbmVfcGFnZV9jYWxsYmFjayhcXHUwMDI2aHZfb25saW5lX3BhZ2UpO1xcbi0tXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmMtMjAwNy1jb25uZWN0X2Vycm9yOlxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjIwMDg6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTIwMDktXFx0dW5yZWdpc3Rlcl9tZW1vcnlfbm90aWZpZXIoXFx1MDAyNmh2X21lbW9yeV9uYik7XFxuLS1cXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYz0yMDE1PXN0YXRpYyB2b2lkIGJhbGxvb25fcmVtb3ZlKHN0cnVjdCBodl9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTIwMzgtXFx0XFx0dm1idXNfY2xvc2UoZGV2LVxcdTAwM2VjaGFubmVsKTtcXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYzoyMDM5OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFBMVUdcXG5kcml2ZXJzL2h2L2h2X2JhbGxvb24uYy0yMDQwLVxcdFxcdHVucmVnaXN0ZXJfbWVtb3J5X25vdGlmaWVyKFxcdTAwMjZodl9tZW1vcnlfbmIpO1xcbi0tXFxuZHJpdmVycy9odi9odl9iYWxsb29uLmM9MjA3Nj1zdGF0aWMgaW50IGJhbGxvb25fcmVzdW1lKHN0cnVjdCBodl9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTIxMDEtXFx0ZGlzYWJsZV9wYWdlX3JlcG9ydGluZygpO1xcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jOjIxMDI6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmRyaXZlcnMvaHYvaHZfYmFsbG9vbi5jLTIxMDMtXFx0dW5yZWdpc3Rlcl9tZW1vcnlfbm90aWZpZXIoXFx1MDAyNmh2X21lbW9yeV9uYik7XFxuLS1cXG5kcml2ZXJzL3MzOTAvY2hhci9NYWtlZmlsZT0yMD1vYmoteSArPSBjdHJsY2hhci5vIGtleWJvYXJkLm8gZGVma2V5bWFwLm8gc2NscC5vIHNjbHBfcncubyBzY2xwX3F1aWVzY2UubyBcXFxcXFxuLS1cXG5kcml2ZXJzL3MzOTAvY2hhci9NYWtlZmlsZS0yMy1cXG5kcml2ZXJzL3MzOTAvY2hhci9NYWtlZmlsZToyNDpvYmotJChDT05GSUdfTUVNT1JZX0hPVFBMVUcpICs9IHNjbHBfbWVtLm9cXG5kcml2ZXJzL3MzOTAvY2hhci9NYWtlZmlsZS0yNS1vYmotJChDT05GSUdfVE4zMjcwKSArPSByYXczMjcwLm8gY29uMzI3MC5vXFxuLS1cXG5kcml2ZXJzL3hlbi94ZW4tYmFsbG9vbi5jLTUzLVxcbmRyaXZlcnMveGVuL3hlbi1iYWxsb29uLmM6NTQ6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmRyaXZlcnMveGVuL3hlbi1iYWxsb29uLmMtNTUtdTY0IHhlbl9zYXZlZF9tYXhfbWVtX3NpemUgPSAwO1xcbi0tXFxuZHJpdmVycy94ZW4veGVuLWJhbGxvb24uYz02Mz1zdGF0aWMgdm9pZCB3YXRjaF90YXJnZXQoc3RydWN0IHhlbmJ1c193YXRjaCAqd2F0Y2gsXFxuLS1cXG5kcml2ZXJzL3hlbi94ZW4tYmFsbG9vbi5jLTcwLVxcbmRyaXZlcnMveGVuL3hlbi1iYWxsb29uLmM6NzE6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmRyaXZlcnMveGVuL3hlbi1iYWxsb29uLmMtNzItXFx0LyogVGhlIGJhbGxvb24gZHJpdmVyIHdpbGwgdGFrZSBjYXJlIG9mIGFkZGluZyBtZW1vcnkgbm93LiAqL1xcbi0tXFxuaW5jbHVkZS9saW51eC9pbml0LmgtODAtXFxuaW5jbHVkZS9saW51eC9pbml0Lmg6ODE6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmluY2x1ZGUvbGludXgvaW5pdC5oLTgyLSNkZWZpbmUgX19tZW1pbml0XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2lvcG9ydC5oPTM5ND1leHRlcm4gdm9pZCByZWxlYXNlX21lbV9yZWdpb25fYWRqdXN0YWJsZShyZXNvdXJjZV9zaXplX3QsIHJlc291cmNlX3NpemVfdCk7XFxuaW5jbHVkZS9saW51eC9pb3BvcnQuaC0zOTUtI2VuZGlmXFxuaW5jbHVkZS9saW51eC9pb3BvcnQuaDozOTY6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUExVR1xcbmluY2x1ZGUvbGludXgvaW9wb3J0LmgtMzk3LWV4dGVybiB2b2lkIG1lcmdlX3N5c3RlbV9yYW1fcmVzb3VyY2Uoc3RydWN0IHJlc291cmNlICpyZXMpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1vcnkuaD03OD1zdHJ1Y3QgbWVtb3J5X2Jsb2NrIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5LmgtOTMtXFx0c3RydWN0IGxpc3RfaGVhZCBncm91cF9uZXh0O1xcdC8qIG5leHQgYmxvY2sgaW5zaWRlIG1lbW9yeSBncm91cCAqL1xcbmluY2x1ZGUvbGludXgvbWVtb3J5Lmg6OTQ6I2lmIGRlZmluZWQoQ09ORklHX01FTU9SWV9GQUlMVVJFKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19NRU1PUllfSE9UUExVRylcXG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oLTk1LVxcdGF0b21pY19sb25nX3QgbnJfaHdwb2lzb247XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeS5oPTEwOT1zdHJ1Y3QgbWVtX3NlY3Rpb247XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDA3OjUyOjM3LjMyMDc4MTUyN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjI3MDc4NjQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipNZW1vcnkgSG90cGx1ZyBDb25maWd1cmF0aW9uIEludmVzdGlnYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBgQ09ORklHX01FTU9SWV9IT1RQTFVHYCBpcyB0aGUgcHJpbWFyeSBzd2l0Y2guIFRoYXQncyB0aGUgZ2l2ZW4uIE5vdywgdGhlIG5leHQgcXVlc3Rpb24gaXMgYWx3YXlzOiBkbyBJICphbHNvKiBuZWVkIGBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRWA/IEFyZSB0aG9zZSBmdW5jdGlvbmFsbHkgZGlzdGluY3Qgb3IganVzdCBsb2dpY2FsbHkgZGlmZmVyZW50PyBJIG5lZWQgdG8gY2xhcmlmeSB0aGUgcmVsYXRpb25zaGlwIHRoZXJlLlxuXG5UbyBhbnN3ZXIgdGhhdCwgSSdtIHRoaW5raW5nIEkgc2hvdWxkIGRpdmUgc3RyYWlnaHQgaW50byB0aGUgY29kZS4gVGhlIHN0YW5kYXJkIGdvLXRvIGluIHRoZXNlIHNpdHVhdGlvbnMgaXMgYG1tL21lbW9yeV9ob3RwbHVnLmNgLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBjb3JlIG1lbW9yeSBob3RwbHVnIGxvZ2ljIHVzdWFsbHkgcmVzaWRlcy4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gbG9vayBmb3IgdGhlIGltcGxlbWVudGF0aW9uIG9mIGB0cnlfb2ZmbGluZV9ub2RlYC4gVGhhdCBmdW5jdGlvbiBpcyBjcml0aWNhbDsgaXTigJlzIHRoZSBnYXRld2F5IHRvIHRha2luZyBhIG5vZGUgb2ZmbGluZS4gVW5kZXJzdGFuZGluZyBpdHMgY2hlY2tzIGFuZCBwcmVjb25kaXRpb25zIHdpbGwgZ2l2ZSBtZSBhIHZlcnkgY2xlYXIgcGljdHVyZSBvZiB3aGVuIGhvdHJlbW92ZSBmdW5jdGlvbmFsaXR5IGlzIGFjdHVhbGx5ICpyZXF1aXJlZCogdG8gZXhpc3QgYW5kIGJlIGVuYWJsZWQgYW5kIHRoZSByZWxhdGlvbnNoaXAgdGhhdCBoYXMgd2l0aCB0aGUgYmFzZSBob3RwbHVnIGNvbmZpZ3VyYXRpb24uIFRoaXMgc2hvdWxkIGNsYXJpZnkgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIHF1aWNrbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NjEzLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6NTI6NDAuOTQ3ODYzOTNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5Njg4NzU3MDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX01FTU9SWV9IT1RSRU1PVkVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3Q9MzM2PVRoZSBmb2xsb3dpbmcgZmlsZXMgYXJlIGN1cnJlbnRseSBkZWZpbmVkOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3QtMzc3LVxcbkRvY3VtZW50YXRpb24vYWRtaW4tZ3VpZGUvbW0vbWVtb3J5LWhvdHBsdWcucnN0OjM3ODpcXHRcXHQgICAgQXZhaWxhYmlsaXR5IGRlcGVuZHMgb24gdGhlIENPTkZJR19NRU1PUllfSE9UUkVNT1ZFXFxuRG9jdW1lbnRhdGlvbi9hZG1pbi1ndWlkZS9tbS9tZW1vcnktaG90cGx1Zy5yc3QtMzc5LVxcdFxcdCAgICBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24uXFxuLS1cXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnPTEzMz1DT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxcbmFyY2gvYXJtNjQvY29uZmlncy9kZWZjb25maWc6MTM0OkNPTkZJR19NRU1PUllfSE9UUkVNT1ZFPXlcXG5hcmNoL2FybTY0L2NvbmZpZ3MvZGVmY29uZmlnLTEzNS1DT05GSUdfS1NNPXlcXG4tLVxcbmFyY2gvYXJtNjQvbW0vbW11LmM9MjI0Nj1zdGF0aWMgaW50IF9faW5pdCBwcmV2ZW50X21lbW9yeV9yZW1vdmVfaW5pdCh2b2lkKVxcbi0tXFxuYXJjaC9hcm02NC9tbS9tbXUuYy0yMjQ5LVxcbmFyY2gvYXJtNjQvbW0vbW11LmM6MjI1MDpcXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX01FTU9SWV9IT1RSRU1PVkUpKVxcbmFyY2gvYXJtNjQvbW0vbW11LmMtMjI1MS1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz0xMDE9Q09ORklHX01IUF9ERUZBVUxUX09OTElORV9UWVBFX09OTElORV9BVVRPPXlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWctMTAzLSMgQ09ORklHX01IUF9ERUZBVUxUX09OTElORV9UWVBFX09OTElORV9NT1ZBQkxFIGlzIG5vdCBzZXRcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnOjEwNDpDT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZy0xMDUtQ09ORklHX0tTTT15XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTExNj1DT05GSUdfTUhQX0RFRkFVTFRfT05MSU5FX1RZUEVfT05MSU5FX0FVVE89eVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy0xMTgtIyBDT05GSUdfTUhQX0RFRkFVTFRfT05MSU5FX1RZUEVfT05MSU5FX01PVkFCTEUgaXMgbm90IHNldFxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6MTE5OkNPTkZJR19NRU1PUllfSE9UUkVNT1ZFPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTEyMC1DT05GSUdfS1NNPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnPTU4PUNPTkZJR19NRU1PUllfSE9UUExVRz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6NTk6Q09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnLTYwLUNPTkZJR19LU009eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnPTg4PUNPTkZJR19NRU1PUllfSE9UUExVRz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRfZGVmY29uZmlnOjg5OkNPTkZJR19NRU1PUllfSE9UUkVNT1ZFPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctOTAtQ09ORklHX0tTTT15XFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYz0yMjI9c3RhdGljIGludCBkbHBhcl9vbmxpbmVfbG1iKHN0cnVjdCBkcm1lbV9sbWIgKmxtYilcXG4tLVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jLTIyNi1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYzoyMjc6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUkVNT1ZFXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2hvdHBsdWctbWVtb3J5LmMtMjI4LXN0YXRpYyBpbnQgZGxwYXJfb2ZmbGluZV9sbWIoc3RydWN0IGRybWVtX2xtYiAqbG1iKVxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2hvdHBsdWctbWVtb3J5LmM9NTU4PXN0YXRpYyBpbnQgZGxwYXJfbWVtb3J5X3JlbW92ZV9ieV9pYyh1MzIgbG1ic190b19yZW1vdmUsIHUzMiBkcmNfaW5kZXgpXFxuLS1cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYy01NjEtfVxcbmFyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLW1lbW9yeS5jOjU2MjojZW5kaWYgLyogQ09ORklHX01FTU9SWV9IT1RSRU1PVkUgKi9cXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1tZW1vcnkuYy01NjMtXFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9MTA1PUNPTkZJR19NRU1PUllfSE9UUExVRz15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjEwNjpDT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTEwNy1DT05GSUdfS1NNPXlcXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz05OD1DT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzo5OTpDT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTEwMC1DT05GSUdfS1NNPXlcXG4tLVxcbmFyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9hY3BpLmM9MTU3PWFjcGlfcGh5c2ljYWxfYWRkcmVzcyBnZXRfcnNkcF9hZGRyKHZvaWQpXFxuLS1cXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvYWNwaS5jLTE3MS1cXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvYWNwaS5jOjE3MjojaWYgZGVmaW5lZChDT05GSUdfUkFORE9NSVpFX0JBU0UpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX01FTU9SWV9IT1RSRU1PVkUpXFxuYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL2FjcGkuYy0xNzMtLypcXG4tLVxcbmFyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9hY3BpLmM9MjcwPWludCBjb3VudF9pbW1vdmFibGVfbWVtX3JlZ2lvbnModm9pZClcXG4tLVxcbmFyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9hY3BpLmMtMzE2LX1cXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvYWNwaS5jOjMxNzojZW5kaWYgLyogQ09ORklHX1JBTkRPTUlaRV9CQVNFIFxcdTAwMjZcXHUwMDI2IENPTkZJR19NRU1PUllfSE9UUkVNT1ZFICovXFxuLS1cXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQva2FzbHIuYz01OTY9c3RhdGljIGJvb2wgcHJvY2Vzc19tZW1fcmVnaW9uKHN0cnVjdCBtZW1fdmVjdG9yICpyZWdpb24sXFxuLS1cXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQva2FzbHIuYy02MTQtXFxuYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL2thc2xyLmM6NjE1OiNpZiBkZWZpbmVkKENPTkZJR19NRU1PUllfSE9UUkVNT1ZFKSBcXHUwMDI2XFx1MDAyNiBkZWZpbmVkKENPTkZJR19BQ1BJKVxcbmFyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9rYXNsci5jLTYxNi1cXHQvKlxcbi0tXFxuYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL21pc2MuaD0xNzE9c3RhdGljIGlubGluZSBhY3BpX3BoeXNpY2FsX2FkZHJlc3MgZ2V0X3JzZHBfYWRkcih2b2lkKSB7IHJldHVybiAwOyB9XFxuLS1cXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvbWlzYy5oLTE3My1cXG5hcmNoL3g4Ni9ib290L2NvbXByZXNzZWQvbWlzYy5oOjE3NDojaWYgZGVmaW5lZChDT05GSUdfUkFORE9NSVpFX0JBU0UpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX01FTU9SWV9IT1RSRU1PVkUpIFxcdTAwMjZcXHUwMDI2IGRlZmluZWQoQ09ORklHX0FDUEkpXFxuYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL21pc2MuaC0xNzUtZXh0ZXJuIHN0cnVjdCBtZW1fdmVjdG9yIGltbW92YWJsZV9tZW1bTUFYX05VTU5PREVTKjJdO1xcbi0tXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jPTE1OD1zdGF0aWMgc3NpemVfdCBwaHlzX2luZGV4X3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTE2Ny0gKiBMZWdhY3kgaW50ZXJmYWNlIHRoYXQgd2UgY2Fubm90IHJlbW92ZS4gQWx3YXlzIGluZGljYXRlIFxcXCJyZW1vdmFibGVcXFwiXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jOjE2ODogKiB3aXRoIENPTkZJR19NRU1PUllfSE9UUkVNT1ZFIC0gYmFkIGhldXJpc3RpYy5cXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtMTY5LSAqL1xcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz0xNzA9c3RhdGljIHNzaXplX3QgcmVtb3ZhYmxlX3Nob3coc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy0xNzIte1xcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYzoxNzM6XFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwiJWRcXFxcblxcXCIsIChpbnQpSVNfRU5BQkxFRChDT05GSUdfTUVNT1JZX0hPVFJFTU9WRSkpO1xcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy0xNzQtfVxcbi0tXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jPTQ0MT1zdGF0aWMgc3NpemVfdCBwaHlzX2RldmljZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy00NTAtXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jOjQ1MTojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RSRU1PVkVcXG5kcml2ZXJzL2Jhc2UvbWVtb3J5LmMtNDUyLXN0YXRpYyBpbnQgcHJpbnRfYWxsb3dlZF96b25lKGNoYXIgKmJ1ZiwgaW50IGxlbiwgaW50IG5pZCxcXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYz02NjI9c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKm1lbW9yeV9tZW1ibGtfYXR0cnNbXSA9IHtcXG4tLVxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYy02NjYtXFx0XFx1MDAyNmRldl9hdHRyX3JlbW92YWJsZS5hdHRyLFxcbmRyaXZlcnMvYmFzZS9tZW1vcnkuYzo2Njc6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUkVNT1ZFXFxuZHJpdmVycy9iYXNlL21lbW9yeS5jLTY2OC1cXHRcXHUwMDI2ZGV2X2F0dHJfdmFsaWRfem9uZXMuYXR0cixcXG4tLVxcbmRyaXZlcnMvZGF4L2ttZW0uYz02OD1zdGF0aWMgaW50IGRldl9kYXhfa21lbV9wcm9iZShzdHJ1Y3QgZGV2X2RheCAqZGV2X2RheClcXG4tLVxcbmRyaXZlcnMvZGF4L2ttZW0uYy0yMDctXFxuZHJpdmVycy9kYXgva21lbS5jOjIwODojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RSRU1PVkVcXG5kcml2ZXJzL2RheC9rbWVtLmMtMjA5LXN0YXRpYyB2b2lkIGRldl9kYXhfa21lbV9yZW1vdmUoc3RydWN0IGRldl9kYXggKmRldl9kYXgpXFxuLS1cXG5kcml2ZXJzL2RheC9rbWVtLmM9MjY2PXN0YXRpYyB2b2lkIGRldl9kYXhfa21lbV9yZW1vdmUoc3RydWN0IGRldl9kYXggKmRldl9kYXgpXFxuLS1cXG5kcml2ZXJzL2RheC9rbWVtLmMtMjc2LX1cXG5kcml2ZXJzL2RheC9rbWVtLmM6Mjc3OiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRSAqL1xcbmRyaXZlcnMvZGF4L2ttZW0uYy0yNzgtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2lvcG9ydC5oPTM5MT1leHRlcm4gdm9pZCBfX3JlbGVhc2VfcmVnaW9uKHN0cnVjdCByZXNvdXJjZSAqLCByZXNvdXJjZV9zaXplX3QsXFxuaW5jbHVkZS9saW51eC9pb3BvcnQuaC0zOTItXFx0XFx0XFx0XFx0cmVzb3VyY2Vfc2l6ZV90KTtcXG5pbmNsdWRlL2xpbnV4L2lvcG9ydC5oOjM5MzojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RSRU1PVkVcXG5pbmNsdWRlL2xpbnV4L2lvcG9ydC5oLTM5NC1leHRlcm4gdm9pZCByZWxlYXNlX21lbV9yZWdpb25fYWRqdXN0YWJsZShyZXNvdXJjZV9zaXplX3QsIHJlc291cmNlX3NpemVfdCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9MjU5PXN0YXRpYyBpbmxpbmUgdm9pZCBwZ2RhdF9yZXNpemVfaW5pdChzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KSB7fVxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI2MS1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MjYyOiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yNjMtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9Mjg1PXN0YXRpYyBpbmxpbmUgdm9pZCBfX3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSkge31cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6Mjg2OiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRSAqL1xcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yODctXFxuLS1cXG5rZXJuZWwvY29uZmlncy94ZW4uY29uZmlnPTE1PUNPTkZJR19NRU1PUllfSE9UUExVRz15XFxua2VybmVsL2NvbmZpZ3MveGVuLmNvbmZpZzoxNjpDT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XFxua2VybmVsL2NvbmZpZ3MveGVuLmNvbmZpZy0xNy1DT05GSUdfWk9ORV9ERVZJQ0U9eVxcbi0tXFxua2VybmVsL3Jlc291cmNlLmM9MTQ0Nj1FWFBPUlRfU1lNQk9MKF9fcmVsZWFzZV9yZWdpb24pO1xcbmtlcm5lbC9yZXNvdXJjZS5jLTE0NDctXFxua2VybmVsL3Jlc291cmNlLmM6MTQ0ODojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RSRU1PVkVcXG5rZXJuZWwvcmVzb3VyY2UuYy0xNDQ5LXN0YXRpYyB2b2lkIGFwcGVuZF9jaGlsZF90b19wYXJlbnQoc3RydWN0IHJlc291cmNlICpuZXdfcGFyZW50LCBzdHJ1Y3QgcmVzb3VyY2UgKm5ld19jaGlsZClcXG4tLVxcbmtlcm5lbC9yZXNvdXJjZS5jPTE1MDc9dm9pZCByZWxlYXNlX21lbV9yZWdpb25fYWRqdXN0YWJsZShyZXNvdXJjZV9zaXplX3Qgc3RhcnQsIHJlc291cmNlX3NpemVfdCBzaXplKVxcbi0tXFxua2VybmVsL3Jlc291cmNlLmMtMTU5Ni19XFxua2VybmVsL3Jlc291cmNlLmM6MTU5NzojZW5kaWZcXHQvKiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRSAqL1xcbmtlcm5lbC9yZXNvdXJjZS5jLTE1OTgtXFxuLS1cXG5tbS9rc20uYz0zMjY5PXZvaWQgZm9saW9fbWlncmF0ZV9rc20oc3RydWN0IGZvbGlvICpuZXdmb2xpbywgc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbm1tL2tzbS5jLTMyOTItXFxubW0va3NtLmM6MzI5MzojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RSRU1PVkVcXG5tbS9rc20uYy0zMjk0LXN0YXRpYyB2b2lkIHdhaXRfd2hpbGVfb2ZmbGluaW5nKHZvaWQpXFxuLS1cXG5tbS9rc20uYz0zNDE3PXN0YXRpYyB2b2lkIHdhaXRfd2hpbGVfb2ZmbGluaW5nKHZvaWQpXFxuLS1cXG5tbS9rc20uYy0zNDE5LX1cXG5tbS9rc20uYzozNDIwOiNlbmRpZiAvKiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRSAqL1xcbm1tL2tzbS5jLTM0MjEtXFxuLS1cXG5tbS9rc20uYz0zOTc3PXN0YXRpYyBpbnQgX19pbml0IGtzbV9pbml0KHZvaWQpXFxuLS1cXG5tbS9rc20uYy00MDA5LVxcbm1tL2tzbS5jOjQwMTA6I2lmZGVmIENPTkZJR19NRU1PUllfSE9UUkVNT1ZFXFxubW0va3NtLmMtNDAxMS1cXHQvKiBUaGVyZSBpcyBubyBzaWduaWZpY2FuY2UgdG8gdGhpcyBwcmlvcml0eSAxMDAgKi9cXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM9MTcyMT1ib29sIG1ocF9yYW5nZV9hbGxvd2VkKHU2NCBzdGFydCwgdTY0IHNpemUsIGJvb2wgbmVlZF9tYXBwaW5nKVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0xNzMzLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM6MTczNDojaWZkZWYgQ09ORklHX01FTU9SWV9IT1RSRU1PVkVcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTE3MzUtLypcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmM9MjQzOD1FWFBPUlRfU1lNQk9MX0dQTChvZmZsaW5lX2FuZF9yZW1vdmVfbWVtb3J5KTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjI0Mzk6I2VuZGlmIC8qIENPTkZJR19NRU1PUllfSE9UUkVNT1ZFICovXFxuLS1cXG5tbS9wYWdlX2FsbG9jLmM9NDM3ND1zdGF0aWMgdW5zaWduZWQgaW50IHpvbmVsaXN0X2l0ZXJfYmVnaW4odm9pZClcXG5tbS9wYWdlX2FsbG9jLmMtNDM3NS17XFxubW0vcGFnZV9hbGxvYy5jOjQzNzY6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01FTU9SWV9IT1RSRU1PVkUpKVxcbm1tL3BhZ2VfYWxsb2MuYy00Mzc3LVxcdFxcdHJldHVybiByZWFkX3NlcWJlZ2luKFxcdTAwMjZ6b25lbGlzdF91cGRhdGVfc2VxKTtcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYz00MzgyPXN0YXRpYyB1bnNpZ25lZCBpbnQgY2hlY2tfcmV0cnlfem9uZWxpc3QodW5zaWduZWQgaW50IHNlcSlcXG5tbS9wYWdlX2FsbG9jLmMtNDM4My17XFxubW0vcGFnZV9hbGxvYy5jOjQzODQ6XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX01FTU9SWV9IT1RSRU1PVkUpKVxcbm1tL3BhZ2VfYWxsb2MuYy00Mzg1LVxcdFxcdHJldHVybiByZWFkX3NlcXJldHJ5KFxcdTAwMjZ6b25lbGlzdF91cGRhdGVfc2VxLCBzZXEpO1xcbi0tXFxubW0vcGFnZV9hbGxvYy5jPTc1MTc9dm9pZCB6b25lX3BjcF9yZXNldChzdHJ1Y3Qgem9uZSAqem9uZSlcXG4tLVxcbm1tL3BhZ2VfYWxsb2MuYy03NTM1LVxcbm1tL3BhZ2VfYWxsb2MuYzo3NTM2OiNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRVxcbm1tL3BhZ2VfYWxsb2MuYy03NTM3LS8qXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLmFhcmNoNjQ9OTA9Q09ORklHX01FTU9SWV9IT1RQTFVHPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLmFhcmNoNjQ6OTE6Q09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2NC05Mi1DT05GSUdfTkFNRVNQQUNFUz15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnMzOTB4PTc2PUNPTkZJR19NRU1PUllfSE9UUExVRz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweDo3NzpDT05GSUdfTUVNT1JZX0hPVFJFTU9WRT15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweC03OC1DT05GSUdfTkFNRVNQQUNFUz15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tZW1vcnktaG90cGx1Zy9jb25maWc9Mz1DT05GSUdfTUVNT1JZX05PVElGSUVSX0VSUk9SX0lOSkVDVD1tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbWVtb3J5LWhvdHBsdWcvY29uZmlnOjQ6Q09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdnNvY2svY29uZmlnPTEwOT1DT05GSUdfTUVNT1JZX0hPVFBMVUc9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Zzb2NrL2NvbmZpZzoxMTA6Q09ORklHX01FTU9SWV9IT1RSRU1PVkU9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Zzb2NrL2NvbmZpZy0xMTEtQ09ORklHX1pPTkVfREVWSUNFPXlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6NTI6NDIuOTE2NzUyMjUxWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNTA1MjU5MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipEaXZpbmcgaW50byB0aGUgYG1lbW9yeV9ob3RwbHVnYCBDb2RlKipcblxuQWxyaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IGB0cnlfb2ZmbGluZV9ub2RlYC4gVGhhdCBmdW5jdGlvbiBpcyBkZWZpbml0ZWx5IHRpZWQgdG8gbWVtb3J5IGhvdC1yZW1vdmUgZnVuY3Rpb25hbGl0eS4gSSdtIHByZXR0eSBzdXJlIEkgc2F3IGl0IGluIGBpbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmhgIHVuZGVyIHRoYXQgYCNpZmRlZiBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRWAgZ3VhcmQuIEl0J3MgYSBrZXkgZnVuY3Rpb24gZm9yIG9mZmxpbmluZyBhIG5vZGUsIHNvIGl0IG1ha2VzIHNlbnNlIGl0J3MgY29uZGl0aW9uYWwgbGlrZSB0aGF0LlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSBzaG91bGQgcXVpY2tseSBqdW1wIHRvIHRoYXQgaGVhZGVyIGZpbGUgYW5kIGRvdWJsZSBjaGVjayB0aGUgY29udGV4dC4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gbG9vayBhcm91bmQgbGluZSAyNjIgdG8gZ2V0IHRoZSBwcmVjaXNlIGxvY2F0aW9uIGFuZCBtYWtlIHN1cmUgbXkgbWVudGFsIG1hcCBpcyBhY2N1cmF0ZS4gSSB3YW50IHRvIHNlZSBob3cgdGhhdCBmdW5jdGlvbiBpbnRlcmFjdHMgd2l0aCB0aGUgb3RoZXIgZGVmaW5pdGlvbnMgYXJvdW5kIGl0LiBHb3R0YSBnZXQgdGhlIGZ1bGwgcGljdHVyZSwgZXZlbiBmb3Igc29tZXRoaW5nIEkgKnRoaW5rKiBJIGFscmVhZHkga25vdyEgQmV0dGVyIHNhZmUgdGhhbiBzb3JyeSB3aGVuIHlvdSdyZSBkZWFsaW5nIHdpdGggbWVtb3J5IG1hbmFnZW1lbnQgYXQgdGhpcyBsZXZlbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI2OTcsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzo1Mjo0Ny4yNjcyODE0OTRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI3NzgyMjIwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0cnlfb2ZmbGluZV9ub2RlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9MjU5PXN0YXRpYyBpbmxpbmUgdm9pZCBwZ2RhdF9yZXNpemVfaW5pdChzdHJ1Y3QgcGdsaXN0X2RhdGEgKnBnZGF0KSB7fVxcbi0tXFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI2My1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MjY0OmV4dGVybiB2b2lkIHRyeV9vZmZsaW5lX25vZGUoaW50IG5pZCk7XFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI2NS1leHRlcm4gaW50IG9mZmxpbmVfcGFnZXModW5zaWduZWQgbG9uZyBzdGFydF9wZm4sIHVuc2lnbmVkIGxvbmcgbnJfcGFnZXMsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg9MjY5PWV4dGVybiBpbnQgb2ZmbGluZV9hbmRfcmVtb3ZlX21lbW9yeSh1NjQgc3RhcnQsIHU2NCBzaXplKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWVtb3J5X2hvdHBsdWcuaC0yNzEtI2Vsc2VcXG5pbmNsdWRlL2xpbnV4L21lbW9yeV9ob3RwbHVnLmg6MjcyOnN0YXRpYyBpbmxpbmUgdm9pZCB0cnlfb2ZmbGluZV9ub2RlKGludCBuaWQpIHt9XFxuaW5jbHVkZS9saW51eC9tZW1vcnlfaG90cGx1Zy5oLTI3My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6NTI6NDcuNTQ1MTExMTI4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MjM4MDI3NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIE1lbW9yeSBIb3RwbHVnIGFuZCBWTSBTdGF0aXN0aWNzKipcblxuT2theSwgc28gSSd2ZSBjb25maXJtZWQgdGhhdCBgdHJ5X29mZmxpbmVfbm9kZWAgaXMgb25seSBkZWZpbmVkIGlmIGBDT05GSUdfTUVNT1JZX0hPVFJFTU9WRWAgaXMgZW5hYmxlZC4gU2VlbXMgcHJldHR5IG9idmlvdXMsIGJ1dCBhbHdheXMgZ29vZCB0byBjaGVjay4gVGhlcmVmb3JlLCBpdCBvYnZpb3VzbHkgbmVlZHMgYENPTkZJR19NRU1PUllfSE9UUkVNT1ZFYCB0byBiZSBlbmFibGVkLCBhbmQgc2luY2UgbWVtb3J5IGhvdHJlbW92ZSBpbXBsaWVzIGhvdHBsdWcsIGBDT05GSUdfTUVNT1JZX0hPVFBMVUdgIGlzIGFsc28gbmVjZXNzYXJ5LlxuXG5Ob3csIEkgd2FzIGxvb2tpbmcgYXQgYHN5bmNfdm1fc3RhdHNgLCBhbmQgaXQncyBsb2NhdGVkIGluIGBtbS92bXN0YXQuY2AuIEkga25vdyB0aGF0IGZpbGUgaXMgYWx3YXlzIGNvbXBpbGVkIGluLCBzbyB0aGF0J3Mgbm90IGEgY29uZGl0aW9uYWwgZGVwZW5kZW5jeS4gVGhlIGludGVyZXN0aW5nIHRoaW5nIGlzIHRoYXQgYHRyeV9vZmZsaW5lX25vZGVgICpjYWxscyogYHN5bmNfdm1fc3RhdHNgLCB3aGljaCBtZWFucyBgc3luY192bV9zdGF0c2AgaXMgcGFydCBvZiB0aGUgY29uZGl0aW9uYWwgcGF0aC5cblxuTGV0IG1lIGNpcmNsZSBiYWNrIHRvIGB0cnlfb2ZmbGluZV9ub2RlYCBhbmQgdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoLiBSaWdodCwgc28gYHRyeV9vZmZsaW5lX25vZGVgIGNhbGxzIGBzeW5jX3ZtX3N0YXRzKClgLiBUaGVuIGBzeW5jX3ZtX3N0YXRzKClgIGNhbGxzIGBzY2hlZHVsZV9vbl9lYWNoX2NwdSh2bXN0YXRfZm9sZF93b3JrKWAuIEFuZCB0aGF0IGZ1bmN0aW9uLCBgdm1zdGF0X2ZvbGRfd29ya2AsIGNhbGxzIGByZWZyZXNoX2NwdV92bV9zdGF0cyhmYWxzZSlgLlxuXG5JcyB0aGlzIGFjdHVhbGx5IHNvbWV0aGluZyBJIHNob3VsZCB0cnkgZnV6emluZz8gWWVzLCBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNwZWNpZmljYWxseSBzY2hlZHVsaW5nIHdvcmsgb24gKmV2ZXJ5KiBDUFUgZHVyaW5nIG1lbW9yeSBob3RwbHVnLiBJdCdzIHJlbGF0ZWQgdG8gYSBmaXggZm9yIG9ycGhhbmVkIHBlci1DUFUgdm1zdGF0IGRpZmZzLiBTbywgZnV6emluZyBjb3VsZCBwb3RlbnRpYWxseSB1bmNvdmVyIGlzc3VlcyB3aXRoIHNjaGVkdWxpbmcgb24gbXVsdGlwbGUgQ1BVcyBkdXJpbmcgbWVtb3J5IGhvdHBsdWcgb3BlcmF0aW9ucywgb3IgcGVyaGFwcyBzb21lIHJhY2UgY29uZGl0aW9ucyByZWxhdGVkIHRvIGhvdyB0aGUgdm1zdGF0IGZvbGRpbmcgcHJvY2VzcyBoYXBwZW5zLiBTb3VuZHMgcHJldHR5IHByb21pc2luZy5cblxuSSdtIGZvY3VzaW5nIG15IGF0dGVudGlvbiBvbiB0aGUgZm9sbG93aW5nIHN5bWJvbHM6IGB0cnlfb2ZmbGluZV9ub2RlYCwgYHN5bmNfdm1fc3RhdHNgLCBhbmQgYHZtc3RhdF9mb2xkX3dvcmtgLlxuXG5BbmQgdGhlIG5lY2Vzc2FyeSBjb25maWdzIHRvIGVuYWJsZSB0aGlzIGFyZSBgTUVNT1JZX0hPVFBMVUdgIGFuZCBgTUVNT1JZX0hPVFJFTU9WRWAuXG5cbkxldCBtZSBqdXN0IGRvdWJsZSBjaGVjayBvbmUgbGFzdCB0aGluZzogaXMgYHRyeV9vZmZsaW5lX25vZGVgICpkZWZpbml0ZWx5KiB0aGUgKm9ubHkqIGNhbGxlciBvZiBgc3luY192bV9zdGF0c2A/IEl0J3MgYWx3YXlzIHdvcnRoIHZlcmlmeWluZyB0aG9zZSBhc3N1bXB0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzMyMjcsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6NTI6NTMuOTY4OTE4NjAzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODkyOTY3MDc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN5bmNfdm1fc3RhdHNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC92bXN0YXQuaD0yOTU9dm9pZCBjcHVfdm1fc3RhdHNfZm9sZChpbnQgY3B1KTtcXG5pbmNsdWRlL2xpbnV4L3Ztc3RhdC5oOjI5Njp2b2lkIHN5bmNfdm1fc3RhdHModm9pZCk7XFxuaW5jbHVkZS9saW51eC92bXN0YXQuaC0yOTctdm9pZCByZWZyZXNoX3pvbmVfc3RhdF90aHJlc2hvbGRzKHZvaWQpO1xcbi0tXFxuaW5jbHVkZS9saW51eC92bXN0YXQuaD00MDA9c3RhdGljIGlubGluZSB2b2lkIGNwdV92bV9zdGF0c19mb2xkKGludCBjcHUpIHsgfVxcbmluY2x1ZGUvbGludXgvdm1zdGF0Lmg6NDAxOnN0YXRpYyBpbmxpbmUgdm9pZCBzeW5jX3ZtX3N0YXRzKHZvaWQpIHsgfVxcbmluY2x1ZGUvbGludXgvdm1zdGF0LmgtNDAyLXN0YXRpYyBpbmxpbmUgdm9pZCBxdWlldF92bXN0YXQodm9pZCkgeyB9XFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jPTIxODU9dm9pZCB0cnlfb2ZmbGluZV9ub2RlKGludCBuaWQpXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyMTQtXFx0ICovXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMjE1OlxcdHN5bmNfdm1fc3RhdHMoKTtcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIyMTYtXFx0bm9kZV9zZXRfb2ZmbGluZShuaWQpO1xcbi0tXFxubW0vdm1zdGF0LmM9OTQ0PXN0YXRpYyB2b2lkIHZtc3RhdF9mb2xkX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxcbi0tXFxubW0vdm1zdGF0LmMtOTQ4LVxcbm1tL3Ztc3RhdC5jOjk0OTp2b2lkIHN5bmNfdm1fc3RhdHModm9pZClcXG5tbS92bXN0YXQuYy05NTAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzo1Mjo1NS44NjE4OTYzNDFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY1NTYzNDYzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGB0cnlfb2ZmbGluZV9ub2RlYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgdHJ5X29mZmxpbmVfbm9kZWAgZnVuY3Rpb24sIGFuZCBpdCBsb29rcyBsaWtlIGl0J3Mgb25seSBjYWxsZWQgYnkgb25lIHBsYWNlLCB3aGljaCBzaW1wbGlmaWVzIHRoZSBkZWJ1Z2dpbmcgcHJvY2Vzcy4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC5cblxuTm93LCBJJ20gd29uZGVyaW5nIGFib3V0IHRoZSBzdXJyb3VuZGluZyBjb25maWd1cmF0aW9uLiBBcmUgdGhlcmUgYW55IG90aGVyIGNvbmZpZyBvcHRpb25zIHRoYXQgbWlnaHQgYmUgcmVsZXZhbnQ/IEkga25vdyBgQ09ORklHX1NNUGAgaXMgZGVmaW5pdGVseSByZXF1aXJlZCwgYmVjYXVzZSBvZiB0aGUgYHNjaGVkdWxlX29uX2VhY2hfY3B1YCBjYWxsIHdpdGhpbiwgYnV0IHRoYXQncyBwcmV0dHkgbXVjaCBhIGdpdmVuIGluIHRoZSBzeXprYWxsZXIgY29udGV4dCwgc2luY2UgaXQncyBlbmFibGVkIGJ5IGRlZmF1bHQuIE15IGd1dCBmZWVsaW5nIGlzIHRoYXQgYENPTkZJR19OVU1BYCBtaWdodCBiZSAqbW9yZSogaW50ZXJlc3RpbmcgaGVyZSwgc2luY2UgdGhpcyBmdW5jdGlvbiBvcGVyYXRlcyBvbiBub2Rlcy4gSWYgTlVNQSBpc24ndCBlbmFibGVkLCBpcyB0aGUgZnVuY3Rpb24gZXZlbiBnb2luZyB0byBiZSBkb2luZyBhbnl0aGluZyBzdWJzdGFudGlhbD8gVGhhdCBjb3VsZCBiZSBhIGNyaXRpY2FsIHBpZWNlIHRvIHVuZGVyc3RhbmQuXG5cbkFscmlnaHQsIGxldCdzIGp1c3QgZ28gc3RyYWlnaHQgdG8gdGhlIHNvdXJjZSBhbmQgZ2V0IGEgY2xlYXJlciBwaWN0dXJlLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGRlZmluaXRpb24gb2YgYHRyeV9vZmZsaW5lX25vZGVgIGluIGBtbS9tZW1vcnlfaG90cGx1Zy5jYCB0byBzZWUgaG93IGl0IG9wZXJhdGVzIGFuZCBpZiBteSBoeXBvdGhlc2VzIGFyb3VuZCBgQ09ORklHX05VTUFgIGFyZSBjb3JyZWN0LiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQzNzgsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6NTI6NTkuNTE3NTM1MjQxWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDYyODE1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0cnlfb2ZmbGluZV9ub2RlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL21lbW9yeV9ob3RwbHVnLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbWVtb3J5X2hvdHBsdWcuYz0yMTY0PXN0YXRpYyBpbnQgY2hlY2tfbm9fbWVtYmxvY2tfZm9yX25vZGVfY2Ioc3RydWN0IG1lbW9yeV9ibG9jayAqbWVtLCB2b2lkICphcmcpXFxuLS1cXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIxNzYtLyoqXFxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMTc3OiAqIHRyeV9vZmZsaW5lX25vZGVcXG5tbS9tZW1vcnlfaG90cGx1Zy5jLTIxNzgtICogQG5pZDogdGhlIG5vZGUgSURcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjE4NC0gKi9cXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIxODU6dm9pZCB0cnlfb2ZmbGluZV9ub2RlKGludCBuaWQpXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMTg2LXtcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjIxOC19XFxubW0vbWVtb3J5X2hvdHBsdWcuYzoyMjE5OkVYUE9SVF9TWU1CT0wodHJ5X29mZmxpbmVfbm9kZSk7XFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMjIwLVxcbi0tXFxubW0vbWVtb3J5X2hvdHBsdWcuYz0yMjQxPXN0YXRpYyBpbnQgdHJ5X3JlbW92ZV9tZW1vcnkodTY0IHN0YXJ0LCB1NjQgc2l6ZSlcXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjI4Ny1cXHRpZiAobmlkICE9IE5VTUFfTk9fTk9ERSlcXG5tbS9tZW1vcnlfaG90cGx1Zy5jOjIyODg6XFx0XFx0dHJ5X29mZmxpbmVfbm9kZShuaWQpO1xcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjI4OS1cXG4tLVxcbm1tL21lbW9yeV9ob3RwbHVnLmMtMjMwMC0gKiBhbmQgb25saW5lL29mZmxpbmUgb3BlcmF0aW9ucyBiZWZvcmUgdGhpcyBjYWxsLCBhcyByZXF1aXJlZCBieVxcbm1tL21lbW9yeV9ob3RwbHVnLmM6MjMwMTogKiB0cnlfb2ZmbGluZV9ub2RlKCkuXFxubW0vbWVtb3J5X2hvdHBsdWcuYy0yMzAyLSAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwNzo1Mjo1OS41ODIxNzUzNjVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE3MDcyMjMyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBSZWFzb25pbmcgb24gTWVtb3J5IEhvdHBsdWcgYW5kIFZNIFN0YXRpc3RpY3MqKlxuXG5Pa2F5LCBzbyBgdHJ5X29mZmxpbmVfbm9kZWAgaXMgdGhlIGtleSBmdW5jdGlvbiBoZXJlLCBhbmQgaXQncyBiZWluZyBleHBvcnRlZC4gVGhlIGNvZGUgcmVxdWlyZXMgYENPTkZJR19NRU1PUllfSE9UUkVNT1ZFYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEknbGwgbmVlZCB0byBlbmFibGUgYm90aCBgTUVNT1JZX0hPVFBMVUdgIGFuZCBgTUVNT1JZX0hPVFJFTU9WRWAgZm9yIHRoaXMgdG8gd29yayBjb3JyZWN0bHkuXG5cbkxldCBtZSB0aGluayB0aHJvdWdoIHRoZSBpbXBsaWNhdGlvbnMuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2FsbCB0byBgc3luY192bV9zdGF0cygpYCB3aXRoaW4gYHRyeV9vZmZsaW5lX25vZGUoKWAuIFRoZSBwdXJwb3NlIG9mIHRoaXMgc2VlbXMgdG8gYmUgdG8gZW5zdXJlIHRoYXQgYW55IHBlbmRpbmcgcGVyLUNQVSBWTSBzdGF0aXN0aWNzIGFyZSBjb3JyZWN0bHkgaW5jb3Jwb3JhdGVkIGludG8gdGhlIGdsb2JhbCBjb3VudGVycyAqYmVmb3JlKiBhIE5VTUEgbm9kZSBnb2VzIG9mZmxpbmUuIFRoaXMgcHJldmVudHMgdGhlIHJlZ3VsYXIgVk0gc3RhdGlzdGljcyBmb2xkaW5nIG1lY2hhbmlzbSBmcm9tIG1pc3NpbmcgdGhlIG9mZmxpbmUgbm9kZSwgd2hpY2ggd291bGQgbGVhdmUgaXRzIHN0YXRzIHN0cmFuZGVkLiBJdOKAmXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGNvcmUgbWVtb3J5IGhvdHBsdWcgYW5kIFZNIHN0YXRpc3RpYyBsb2dpYy4gVGhlIGNyaXRpY2FsIHBvaW50IGlzLCB0aGlzIGlzIGV4cG9zZWQgdG8gdXNlcnNwYWNlIHRocm91Z2ggdGhlIHN5c2ZzIG1lbW9yeSBob3RwbHVnIGludGVyZmFjZXMuXG5cbkdpdmVuIHRoYXQgaXQgaW52b2x2ZXMgbWVtb3J5IGhvdHBsdWcgYW5kIHRoZSBwb3RlbnRpYWwgZm9yIGNvbmN1cnJlbnQgb3BlcmF0aW9ucywgZnV6emluZyB0aGlzIGFyZWEgc2VlbXMgbGlrZSBhIHZlcnkgZ29vZCBpZGVhLiBUaGVyZSBhcmUgbGlrZWx5IG9wcG9ydHVuaXRpZXMgdG8gaWRlbnRpZnkgcmFjZSBjb25kaXRpb25zIG9yIHNjaGVkdWxpbmcgcHJvYmxlbXMgdGhhdCBjb3VsZCBhcmlzZSBkdXJpbmcgdGhlIHByb2Nlc3Mgb2Ygb2ZmbGluaW5nIGEgbm9kZS5cblxuSSdsbCBrZWVwIGEgY2xvc2UgZXllIG9uIHRoZXNlIHN5bWJvbHM6IGB0cnlfb2ZmbGluZV9ub2RlYCwgYHN5bmNfdm1fc3RhdHNgLCBhbmQgYHZtc3RhdF9mb2xkX3dvcmtgLCBhcyB0aGV5IGFyZSB0aGUgY29yZSBjb21wb25lbnRzIG9mIHRoaXMgY2hhbmdlLlxuXG5Ob3csIGxldCdzIHNldCB0aGUgcmVzdWx0cyBhbmQgbW92ZSBmb3J3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTE3MCwiT3V0cHV0VG9rZW5zIjoxNzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDc6NTM6MDUuNzUyOTAxMTg0WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIzODY2MTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1FTU9SWV9IT1RQTFVHXCIsXG4gICAgXCJNRU1PUllfSE9UUkVNT1ZFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidHJ5X29mZmxpbmVfbm9kZVwiLFxuICAgIFwic3luY192bV9zdGF0c1wiLFxuICAgIFwidm1zdGF0X2ZvbGRfd29ya1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBjYWxsIHRvIHN5bmNfdm1fc3RhdHMoKSBpbiB0cnlfb2ZmbGluZV9ub2RlKCkgdG8gZm9sZCBwZW5kaW5nIHBlci1jcHUgdm1zdGF0IGRpZmZzIGludG8gZ2xvYmFsIGNvdW50ZXJzIGJlZm9yZSBhIE5VTUEgbm9kZSBpcyBvZmZsaW5lZC4gVGhpcyBwcmV2ZW50cyB0aGUgcGVyaW9kaWMgdm1zdGF0IGZvbGQgZnJvbSBza2lwcGluZyB0aGUgb2ZmbGluZWQgbm9kZSBhbmQgb3JwaGFuaW5nIHRoZSByZXNpZHVhbCBzdGF0cy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1lbW9yeSBob3RwbHVnIGFuZCB2bXN0YXQgbG9naWMsIGFuZCBpdCBpcyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHN5c2ZzIG1lbW9yeSBob3RwbHVnIGludGVyZmFjZXMuIEZ1enppbmcgdGhpcyBjb3VsZCB1bmNvdmVyIHJhY2UgY29uZGl0aW9ucyBvciBzY2hlZHVsaW5nIGlzc3VlcyBkdXJpbmcgbm9kZSBvZmZsaW5pbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUVNT1JZX0hPVFBMVUdcIixcbiAgICBcIk1FTU9SWV9IT1RSRU1PVkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ0cnlfb2ZmbGluZV9ub2RlXCIsXG4gICAgXCJzeW5jX3ZtX3N0YXRzXCIsXG4gICAgXCJ2bXN0YXRfZm9sZF93b3JrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGNhbGwgdG8gc3luY192bV9zdGF0cygpIGluIHRyeV9vZmZsaW5lX25vZGUoKSB0byBmb2xkIHBlbmRpbmcgcGVyLWNwdSB2bXN0YXQgZGlmZnMgaW50byBnbG9iYWwgY291bnRlcnMgYmVmb3JlIGEgTlVNQSBub2RlIGlzIG9mZmxpbmVkLiBUaGlzIHByZXZlbnRzIHRoZSBwZXJpb2RpYyB2bXN0YXQgZm9sZCBmcm9tIHNraXBwaW5nIHRoZSBvZmZsaW5lZCBub2RlIGFuZCBvcnBoYW5pbmcgdGhlIHJlc2lkdWFsIHN0YXRzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWVtb3J5IGhvdHBsdWcgYW5kIHZtc3RhdCBsb2dpYywgYW5kIGl0IGlzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc3lzZnMgbWVtb3J5IGhvdHBsdWcgaW50ZXJmYWNlcy4gRnV6emluZyB0aGlzIGNvdWxkIHVuY292ZXIgcmFjZSBjb25kaXRpb25zIG9yIHNjaGVkdWxpbmcgaXNzdWVzIGR1cmluZyBub2RlIG9mZmxpbmluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdcljp[1] Phase: Succeeded StartedAt: 2026-06-27 07:53:17 +0000 UTC FinishedAt: 2026-06-27 07:53:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdcljp[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-27 07:53:17 +0000 UTC FinishedAt: 2026-06-27 07:53:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdcljp[2] Phase: Succeeded StartedAt: 2026-06-27 07:53:17 +0000 UTC FinishedAt: 2026-06-27 11:50:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-27 07:53:17 +0000 UTC FinishedAt: 2026-06-27 11:50:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-27 07:53:17 +0000 UTC FinishedAt: 2026-06-27 07:55:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-27 07:53:17 +0000 UTC FinishedAt: 2026-06-27 07:53:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowdcljp/series-workflowdcljp-convert-artifact-3796308269/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-27 07:55:18 +0000 UTC FinishedAt: 2026-06-27 08:20:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-27 07:55:18 +0000 UTC FinishedAt: 2026-06-27 08:20:56 +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:*0f1f47b5-e4b8-44fd-84d4-77585820311f,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-workflowdcljp/series-workflowdcljp-convert-artifact-3796308269/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": "d168641b-e0ba-46cd-9e58-555d1fecd86d", "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-workflowdcljp/series-workflowdcljp-build-action-2923777315/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-27 07:55:18 +0000 UTC FinishedAt: 2026-06-27 08:20:46 +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:*0f1f47b5-e4b8-44fd-84d4-77585820311f,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-workflowdcljp/series-workflowdcljp-convert-artifact-3796308269/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": "d168641b-e0ba-46cd-9e58-555d1fecd86d", "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-workflowdcljp/series-workflowdcljp-build-action-2923777315/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-27 08:20:56 +0000 UTC FinishedAt: 2026-06-27 08:20:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-27 08:20:56 +0000 UTC FinishedAt: 2026-06-27 08:20:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-27 08:20:56 +0000 UTC FinishedAt: 2026-06-27 08:21:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-27 08:20:56 +0000 UTC FinishedAt: 2026-06-27 08:21:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowdcljp/series-workflowdcljp-convert-artifact-1695128712/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-27 08:21:06 +0000 UTC FinishedAt: 2026-06-27 08:23:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-27 08:21:06 +0000 UTC FinishedAt: 2026-06-27 08:22:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d168641b-e0ba-46cd-9e58-555d1fecd86d,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-workflowdcljp/series-workflowdcljp-build-action-2923777315/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-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-27 08:23:03 +0000 UTC FinishedAt: 2026-06-27 08:23:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-27 08:23:03 +0000 UTC FinishedAt: 2026-06-27 08:23:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-27 08:23:03 +0000 UTC FinishedAt: 2026-06-27 08:45:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-27 08:23:03 +0000 UTC FinishedAt: 2026-06-27 08:45:02 +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:*0f1f47b5-e4b8-44fd-84d4-77585820311f,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-workflowdcljp/series-workflowdcljp-convert-artifact-1695128712/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": "c9f0af59-1c4a-4db7-8871-efff47629a0f", "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-workflowdcljp/series-workflowdcljp-build-action-1407336500/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-27 08:23:03 +0000 UTC FinishedAt: 2026-06-27 08:44:38 +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:*0f1f47b5-e4b8-44fd-84d4-77585820311f,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-workflowdcljp/series-workflowdcljp-convert-artifact-1695128712/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": "c9f0af59-1c4a-4db7-8871-efff47629a0f", "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-workflowdcljp/series-workflowdcljp-build-action-1407336500/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-27 08:45:02 +0000 UTC FinishedAt: 2026-06-27 08:45:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-27 08:45:02 +0000 UTC FinishedAt: 2026-06-27 08:45:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-27 08:45:02 +0000 UTC FinishedAt: 2026-06-27 08:47:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-27 08:45:02 +0000 UTC FinishedAt: 2026-06-27 08:47:27 +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:*c9f0af59-1c4a-4db7-8871-efff47629a0f,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-workflowdcljp/series-workflowdcljp-build-action-1407336500/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-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-27 08:47:37 +0000 UTC FinishedAt: 2026-06-27 11:50:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-27 08:47:37 +0000 UTC FinishedAt: 2026-06-27 11:50:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*d168641b-e0ba-46cd-9e58-555d1fecd86d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c9f0af59-1c4a-4db7-8871-efff47629a0f,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-workflowdcljp/series-workflowdcljp-build-action-2923777315/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-workflowdcljp/series-workflowdcljp-build-action-1407336500/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-27 08:47:37 +0000 UTC FinishedAt: 2026-06-27 08:47:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-27 08:47:37 +0000 UTC FinishedAt: 2026-06-27 08:47:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowdcljp/series-workflowdcljp-convert-artifact-3583764289/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-27 08:47:37 +0000 UTC FinishedAt: 2026-06-27 08:47:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-27 08:47:37 +0000 UTC FinishedAt: 2026-06-27 08:47:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-27 08:47:37 +0000 UTC FinishedAt: 2026-06-27 08:47:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-27 08:47:59 +0000 UTC FinishedAt: 2026-06-27 11:50:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdcljp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["try_offline_node","sync_vm_stats","vmstat_fold_work"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"840ef6c78e6a2f694b578ecb9063241c992aaa9e","config_name":"upstream-apparmor-kasan.config","enable_configs":["MEMORY_HOTPLUG","MEMORY_HOTREMOVE"],"series_id":"a34e8989-3cf6-440e-8e69-95a31744e718","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-27 08:47:59 +0000 UTC FinishedAt: 2026-06-27 11:50:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d168641b-e0ba-46cd-9e58-555d1fecd86d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*c9f0af59-1c4a-4db7-8871-efff47629a0f,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-workflowdcljp/series-workflowdcljp-build-action-2923777315/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-workflowdcljp/series-workflowdcljp-build-action-1407336500/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-workflowdcljp/series-workflowdcljp-convert-artifact-3583764289/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}