Name: series-workflowhqlvz Phase: Succeeded StartedAt: 2026-06-24 17:21:08 +0000 UTC FinishedAt: 2026-06-24 21:36:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhqlvz[0] Phase: Succeeded StartedAt: 2026-06-24 17:21:08 +0000 UTC FinishedAt: 2026-06-24 17:40:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhqlvz[0].run-triage Phase: Succeeded StartedAt: 2026-06-24 17:21:08 +0000 UTC FinishedAt: 2026-06-24 17:40:33 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM", "VXLAN", "GENEVE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM", "VXLAN", "GENEVE" ], "series_id": "f5372b8f-87ca-4855-921e-7d9db301b3c4" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "udp_tunnel_nic_device_sync_work", "udp_tunnel_nic_unregister", "udp_tunnel_nic_device_sync", "udp_tunnel_nic_put" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7LAogICAgJiMzNDtWWExBTiYjMzQ7LAogICAgJiMzNDtHRU5FVkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrJiMzNDssCiAgICAmIzM0O3VkcF90dW5uZWxfbmljX3VucmVnaXN0ZXImIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMmIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfcHV0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24vdXNlLWFmdGVyLWZyZWUgaW4gdGhlIFVEUCB0dW5uZWwgTklDIG9mZmxvYWQgaW5mcmFzdHJ1Y3R1cmUgYnkgcmVwbGFjaW5nIGEgc2ltcGxlIHBlbmRpbmcgZmxhZyB3aXRoIGEgcHJvcGVyIHJlZmVyZW5jZSBjb3VudCAocmVmY291bnRfdCkgZm9yIHRoZSB3b3JrcXVldWUuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBjcmVhdGluZy9kZXN0cm95aW5nIFVEUCB0dW5uZWxzIChsaWtlIFZYTEFOIG9yIEdFTkVWRSkgb24gZGV2aWNlcyBzdXBwb3J0aW5nIFVEUCB0dW5uZWwgb2ZmbG9hZCAobGlrZSBuZXRkZXZzaW0pLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzEyODZhMWEyOTcxZjE5NDljOWJmZWYyZDdlY2EzY2YwMWRmYjZjM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVuIDI0IDE3OjM2OjMzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMgYi9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXG5pbmRleCA5OTQ0ZWQ5MjNkZGZkMS4uODg0YjVkOTNiN2IzOWYgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXG5AQCAtMzAsOSAmIzQzOzMwLDggQEAgc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5IHtcbiAgKiBAd29yazpcdGFzeW5jIHdvcmsgZm9yIHRhbGtpbmcgdG8gaGFyZHdhcmUgZnJvbSBwcm9jZXNzIGNvbnRleHRcbiAgKiBAZGV2Olx0bmV0ZGV2IHBvaW50ZXJcbiAgKiBAbG9jazpcdHByb3RlY3RzIGFsbCBmaWVsZHNcbi0gKiBAbmVlZF9zeW5jOlx0YXQgbGVhc3Qgb25lIHBvcnQgc3RhcnQgY2hhbmdlZFxuLSAqIEBuZWVkX3JlcGxheTogc3BhY2Ugd2FzIGZyZWVkLCB3ZSBuZWVkIGEgcmVwbGF5IG9mIGFsbCBwb3J0c1xuLSAqIEB3b3JrX3BlbmRpbmc6IEB3b3JrIGlzIGN1cnJlbnRseSBzY2hlZHVsZWRcbiYjNDM7ICogQGZsYWdzOlx0c3luYywgcmVwbGF5IGZsYWdzXG4mIzQzOyAqIEByZWZjbnQ6XHRyZWZlcmVuY2UgY291bnRcbiAgKiBAbl90YWJsZXM6XHRudW1iZXIgb2YgdGFibGVzIHVuZGVyIEBlbnRyaWVzXG4gICogQG1pc3NlZDpcdGJpdG1hcCBvZiB0YWJsZXMgd2hpY2ggb3ZlcmZsb3duXG4gICogQGVudHJpZXM6XHR0YWJsZSBvZiB0YWJsZXMgb2YgcG9ydHMgY3VycmVudGx5IG9mZmxvYWRlZFxuQEAgLTQ0LDkgJiM0Mzs0MywxMSBAQCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMge1xuIFxuIFx0c3RydWN0IG11dGV4IGxvY2s7XG4gXG4tXHR1OCBuZWVkX3N5bmM6MTtcbi1cdHU4IG5lZWRfcmVwbGF5OjE7XG4tXHR1OCB3b3JrX3BlbmRpbmc6MTtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuJiM0MzsjZGVmaW5lIFVEUF9UVU5ORUxfTklDX05FRURfU1lOQ1x0MFxuJiM0MzsjZGVmaW5lIFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZXHQxXG4mIzQzO1xuJiM0MztcdHJlZmNvdW50X3QgcmVmY250O1xuIFxuIFx0dW5zaWduZWQgaW50IG5fdGFibGVzO1xuIFx0dW5zaWduZWQgbG9uZyBtaXNzZWQ7XG5AQCAtMTE2LDcgJiM0MzsxMTcsNyBAQCB1ZHBfdHVubmVsX25pY19lbnRyeV9xdWV1ZShzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcbiBcdFx0XHQgICB1bnNpZ25lZCBpbnQgZmxhZylcbiB7XG4gXHRlbnRyeS1cdTAwM2VmbGFncyB8PSBmbGFnO1xuLVx0dXRuLVx1MDAzZW5lZWRfc3luYyA9IDE7XG4mIzQzO1x0c2V0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkXG5AQCAtMjgzLDcgJiM0MzsyODQsNyBAQCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV90YWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIHN0YXRpYyB2b2lkXG4gX191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiB7XG4tXHRpZiAoIXV0bi1cdTAwM2VuZWVkX3N5bmMpXG4mIzQzO1x0aWYgKCF0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFx1MDAyNnV0bi1cdTAwM2VmbGFncykpXG4gXHRcdHJldHVybjtcbiBcbiBcdGlmIChkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cdTAwM2VzeW5jX3RhYmxlKVxuQEAgLTI5MSwyMSAmIzQzOzI5MiwyNCBAQCBfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIFx0ZWxzZVxuIFx0XHR1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV9wb3J0KGRldiwgdXRuKTtcbiBcbi1cdHV0bi1cdTAwM2VuZWVkX3N5bmMgPSAwO1xuJiM0MztcdGNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gXHQvKiBDYW4mIzM5O3QgcmVwbGF5IGRpcmVjdGx5IGhlcmUsIGluIGNhc2Ugd2UgY29tZSBmcm9tIHRoZSB0dW5uZWwgZHJpdmVyJiMzOTtzXG4gXHQgKiBub3RpZmljYXRpb24gLSB0cnlpbmcgdG8gcmVwbGF5IG1heSBkZWFkbG9jayBpbnNpZGUgdHVubmVsIGRyaXZlci5cbiBcdCAqL1xuLVx0dXRuLVx1MDAzZW5lZWRfcmVwbGF5ID0gdWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShkZXYsIHV0bik7XG4mIzQzO1x0aWYgKHVkcF90dW5uZWxfbmljX3Nob3VsZF9yZXBsYXkoZGV2LCB1dG4pKVxuJiM0MztcdFx0c2V0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKTtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRjbGVhcl9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9SRVBMQVksIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkXG4gdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4ge1xuLVx0aWYgKCF1dG4tXHUwMDNlbmVlZF9zeW5jKVxuJiM0MztcdGlmICghdGVzdF9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DLCBcdTAwMjZ1dG4tXHUwMDNlZmxhZ3MpKVxuIFx0XHRyZXR1cm47XG4gXG4tXHRxdWV1ZV93b3JrKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSwgXHUwMDI2dXRuLVx1MDAzZXdvcmspO1xuLVx0dXRuLVx1MDAzZXdvcmtfcGVuZGluZyA9IDE7XG4mIzQzO1x0aWYgKHF1ZXVlX3dvcmsodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlLCBcdTAwMjZ1dG4tXHUwMDNld29yaykpXG4mIzQzO1x0XHRyZWZjb3VudF9pbmMoXHUwMDI2dXRuLVx1MDAzZXJlZmNudCk7XG4gfVxuIFxuIHN0YXRpYyBib29sXG5AQCAtMzQ4LDcgJiM0MzszNTIsNyBAQCB1ZHBfdHVubmVsX25pY19oYXNfY29sbGlzaW9uKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxuIFx0XHRcdGlmICghdWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfZnJlZShlbnRyeSkgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIGVudHJ5LVx1MDAzZXBvcnQgPT0gdGktXHUwMDNlcG9ydCBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgZW50cnktXHUwMDNldHlwZSAhPSB0aS1cdTAwM2V0eXBlKSB7XG4tXHRcdFx0XHRfX3NldF9iaXQoaSwgXHUwMDI2dXRuLVx1MDAzZW1pc3NlZCk7XG4mIzQzO1x0XHRcdFx0c2V0X2JpdChpLCBcdTAwMjZ1dG4tXHUwMDNlbWlzc2VkKTtcbiBcdFx0XHRcdHJldHVybiB0cnVlO1xuIFx0XHRcdH1cbiBcdFx0fVxuQEAgLTQ4Myw3ICYjNDM7NDg3LDcgQEAgdWRwX3R1bm5lbF9uaWNfYWRkX25ldyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcbiBcdFx0ICogYXJlIG5vIGRldmljZXMgY3VycmVudGx5IHdoaWNoIGhhdmUgbXVsdGlwbGUgdGFibGVzIGFjY2VwdGluZ1xuIFx0XHQgKiB0aGUgc2FtZSB0dW5uZWwgdHlwZSwgYW5kIGZhbHNlIHBvc2l0aXZlcyBhcmUgb2theS5cbiBcdFx0ICovXG4tXHRcdF9fc2V0X2JpdChpLCBcdTAwMjZ1dG4tXHUwMDNlbWlzc2VkKTtcbiYjNDM7XHRcdHNldF9iaXQoaSwgXHUwMDI2dXRuLVx1MDAzZW1pc3NlZCk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gZmFsc2U7XG5AQCAtNTUyLDcgJiM0Mzs1NTYsNyBAQCBzdGF0aWMgdm9pZCBfX3VkcF90dW5uZWxfbmljX3Jlc2V0X250ZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZ1dG4tXHUwMDNlbG9jayk7XG4gXG4tXHR1dG4tXHUwMDNlbmVlZF9zeW5jID0gZmFsc2U7XG4mIzQzO1x0Y2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKTtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHV0bi1cdTAwM2VuX3RhYmxlczsgaSYjNDM7JiM0MzspXG4gXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIGluZm8tXHUwMDNldGFibGVzW2ldLm5fZW50cmllczsgaiYjNDM7JiM0MzspIHtcbiBcdFx0XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xuQEAgLTY5Niw4ICYjNDM7NzAwLDggQEAgdWRwX3R1bm5lbF9uaWNfZmx1c2goc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB1dG4tXHUwMDNlbl90YWJsZXM7IGkmIzQzOyYjNDM7KVxuIFx0XHRtZW1zZXQodXRuLVx1MDAzZWVudHJpZXNbaV0sIDAsIGFycmF5X3NpemUoaW5mby1cdTAwM2V0YWJsZXNbaV0ubl9lbnRyaWVzLFxuIFx0XHRcdFx0XHRcdCAgICAgIHNpemVvZigqKnV0bi1cdTAwM2VlbnRyaWVzKSkpO1xuLVx0V0FSTl9PTih1dG4tXHUwMDNlbmVlZF9zeW5jKTtcbi1cdHV0bi1cdTAwM2VuZWVkX3JlcGxheSA9IDA7XG4mIzQzO1x0V0FSTl9PTih0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFx1MDAyNnV0bi1cdTAwM2VmbGFncykpO1xuJiM0MztcdGNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKTtcbiB9XG4gXG4gc3RhdGljIHZvaWRcbkBAIC03MTMsOCAmIzQzOzcxNyw4IEBAIHVkcF90dW5uZWxfbmljX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHV0bi1cdTAwM2VuX3RhYmxlczsgaSYjNDM7JiM0MzspXG4gXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIGluZm8tXHUwMDNldGFibGVzW2ldLm5fZW50cmllczsgaiYjNDM7JiM0MzspXG4gXHRcdFx0dWRwX3R1bm5lbF9uaWNfZW50cnlfZnJlZXplX3VzZWQoXHUwMDI2dXRuLVx1MDAzZWVudHJpZXNbaV1bal0pO1xuLVx0dXRuLVx1MDAzZW1pc3NlZCA9IDA7XG4tXHR1dG4tXHUwMDNlbmVlZF9yZXBsYXkgPSAwO1xuJiM0MztcdGJpdG1hcF96ZXJvKFx1MDAyNnV0bi1cdTAwM2VtaXNzZWQsIFVEUF9UVU5ORUxfTklDX01BWF9UQUJMRVMpO1xuJiM0MztcdGNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKTtcbiBcbiBcdGlmICghaW5mby1cdTAwM2VzaGFyZWQpIHtcbiBcdFx0dWRwX3R1bm5lbF9nZXRfcnhfaW5mbyhkZXYpO1xuQEAgLTcyOCw2ICYjNDM7NzMyLDggQEAgdWRwX3R1bm5lbF9uaWNfcmVwbGF5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIFx0XHRcdHVkcF90dW5uZWxfbmljX2VudHJ5X3VuZnJlZXplKFx1MDAyNnV0bi1cdTAwM2VlbnRyaWVzW2ldW2pdKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIHVkcF90dW5uZWxfbmljX3B1dChzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bik7XG4mIzQzO1xuIHN0YXRpYyB2b2lkIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIHtcbiBcdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuID1cbkBAIC03MzYsMTQgJiM0Mzs3NDIsMTUgQEAgc3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRydG5sX2xvY2soKTtcbiBcdG11dGV4X2xvY2soXHUwMDI2dXRuLVx1MDAzZWxvY2spO1xuIFxuLVx0dXRuLVx1MDAzZXdvcmtfcGVuZGluZyA9IDA7XG4gXHRfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHV0bi1cdTAwM2VkZXYsIHV0bik7XG4gXG4tXHRpZiAodXRuLVx1MDAzZW5lZWRfcmVwbGF5KVxuJiM0MztcdGlmICh0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKSlcbiBcdFx0dWRwX3R1bm5lbF9uaWNfcmVwbGF5KHV0bi1cdTAwM2VkZXYsIHV0bik7XG4gXG4gXHRtdXRleF91bmxvY2soXHUwMDI2dXRuLVx1MDAzZWxvY2spO1xuIFx0cnRubF91bmxvY2soKTtcbiYjNDM7XG4mIzQzO1x0dWRwX3R1bm5lbF9uaWNfcHV0KHV0bik7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKlxuQEAgLTc1OSw2ICYjNDM7NzY2LDcgQEAgdWRwX3R1bm5lbF9uaWNfYWxsb2MoY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8sXG4gXHR1dG4tXHUwMDNlbl90YWJsZXMgPSBuX3RhYmxlcztcbiBcdElOSVRfV09SSyhcdTAwMjZ1dG4tXHUwMDNld29yaywgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayk7XG4gXHRtdXRleF9pbml0KFx1MDAyNnV0bi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRyZWZjb3VudF9zZXQoXHUwMDI2dXRuLVx1MDAzZXJlZmNudCwgMSk7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBuX3RhYmxlczsgaSYjNDM7JiM0MzspIHtcbiBcdFx0dXRuLVx1MDAzZWVudHJpZXNbaV0gPSBremFsbG9jX29ianMoKnV0bi1cdTAwM2VlbnRyaWVzW2ldLFxuQEAgLTc4Miw5ICYjNDM7NzkwLDE5IEBAIHN0YXRpYyB2b2lkIHVkcF90dW5uZWxfbmljX2ZyZWUoc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB1dG4tXHUwMDNlbl90YWJsZXM7IGkmIzQzOyYjNDM7KVxuIFx0XHRrZnJlZSh1dG4tXHUwMDNlZW50cmllc1tpXSk7XG4mIzQzO1xuJiM0MztcdGlmICh1dG4tXHUwMDNlZGV2KVxuJiM0MztcdFx0ZGV2X3B1dCh1dG4tXHUwMDNlZGV2KTtcbiYjNDM7XG4gXHRrZnJlZSh1dG4pO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfcHV0KHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZ1dG4tXHUwMDNlcmVmY250KSlcbiYjNDM7XHRcdHVkcF90dW5uZWxfbmljX2ZyZWUodXRuKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IHVkcF90dW5uZWxfbmljX3JlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbkBAIC04NjMsNiAmIzQzOzg4MSw3IEBAIHN0YXRpYyB2b2lkXG4gdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiB7XG4gXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xuJiM0MztcdGJvb2wgbGFzdCA9IHRydWU7XG4gXG4gXHR1ZHBfdHVubmVsX25pY19sb2NrKGRldik7XG4gXG5AQCAtODg5LDYgJiM0Mzs5MDgsNyBAQCB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIFx0XHRcdHVkcF90dW5uZWxfZHJvcF9yeF9pbmZvKGRldik7XG4gXHRcdFx0dXRuLVx1MDAzZWRldiA9IGZpcnN0LVx1MDAzZWRldjtcbiBcdFx0XHR1ZHBfdHVubmVsX25pY191bmxvY2soZGV2KTtcbiYjNDM7XHRcdFx0bGFzdCA9IGZhbHNlO1xuIFx0XHRcdGdvdG8gcmVsZWFzZV9kZXY7XG4gXHRcdH1cbiBcbkBAIC05MDEsMTYgJiM0Mzs5MjEsMTEgQEAgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiBcdHVkcF90dW5uZWxfbmljX2ZsdXNoKGRldiwgdXRuKTtcbiBcdHVkcF90dW5uZWxfbmljX3VubG9jayhkZXYpO1xuIFxuLVx0LyogV2FpdCBmb3IgdGhlIHdvcmsgdG8gYmUgZG9uZSB1c2luZyB0aGUgc3RhdGUsIG5ldGRldiBjb3JlIHdpbGxcbi1cdCAqIHJldHJ5IHVucmVnaXN0ZXIgdW50aWwgd2UgZ2l2ZSB1cCBvdXIgcmVmZXJlbmNlIG9uIHRoaXMgZGV2aWNlLlxuLVx0ICovXG4tXHRpZiAodXRuLVx1MDAzZXdvcmtfcGVuZGluZylcbi1cdFx0cmV0dXJuO1xuLVxuLVx0dWRwX3R1bm5lbF9uaWNfZnJlZSh1dG4pO1xuJiM0MztcdHVkcF90dW5uZWxfbmljX3B1dCh1dG4pO1xuIHJlbGVhc2VfZGV2OlxuIFx0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljID0gTlVMTDtcbi1cdGRldl9wdXQoZGV2KTtcbiYjNDM7XHRpZiAoIWxhc3QpXG4mIzQzO1x0XHRkZXZfcHV0KGRldik7XG4gfVxuIFxuIHN0YXRpYyBpbnRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzozNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRERVZTSU0mIzM0OywKICAgICYjMzQ7VlhMQU4mIzM0OywKICAgICYjMzQ7R0VORVZFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyJiMzNDssCiAgICAmIzM0O3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jJiMzNDssCiAgICAmIzM0O3VkcF90dW5uZWxfbmljX3B1dCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uL3VzZS1hZnRlci1mcmVlIGluIHRoZSBVRFAgdHVubmVsIE5JQyBvZmZsb2FkIGluZnJhc3RydWN0dXJlIGJ5IHJlcGxhY2luZyBhIHNpbXBsZSBwZW5kaW5nIGZsYWcgd2l0aCBhIHByb3BlciByZWZlcmVuY2UgY291bnQgKHJlZmNvdW50X3QpIGZvciB0aGUgd29ya3F1ZXVlLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgY3JlYXRpbmcvZGVzdHJveWluZyBVRFAgdHVubmVscyAobGlrZSBWWExBTiBvciBHRU5FVkUpIG9uIGRldmljZXMgc3VwcG9ydGluZyBVRFAgdHVubmVsIG9mZmxvYWQgKGxpa2UgbmV0ZGV2c2ltKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzEyODZhMWEyOTcxZjE5NDljOWJmZWYyZDdlY2EzY2YwMWRmYjZjMwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVuIDI0IDE3OjM2OjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYyBiL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMKaW5kZXggOTk0NGVkOTIzZGRmZDEuLjg4NGI1ZDkzYjdiMzlmIDEwMDY0NAotLS0gYS9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMKQEAgLTMwLDkgJiM0MzszMCw4IEBAIHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSB7CiAgKiBAd29yazoJYXN5bmMgd29yayBmb3IgdGFsa2luZyB0byBoYXJkd2FyZSBmcm9tIHByb2Nlc3MgY29udGV4dAogICogQGRldjoJbmV0ZGV2IHBvaW50ZXIKICAqIEBsb2NrOglwcm90ZWN0cyBhbGwgZmllbGRzCi0gKiBAbmVlZF9zeW5jOglhdCBsZWFzdCBvbmUgcG9ydCBzdGFydCBjaGFuZ2VkCi0gKiBAbmVlZF9yZXBsYXk6IHNwYWNlIHdhcyBmcmVlZCwgd2UgbmVlZCBhIHJlcGxheSBvZiBhbGwgcG9ydHMKLSAqIEB3b3JrX3BlbmRpbmc6IEB3b3JrIGlzIGN1cnJlbnRseSBzY2hlZHVsZWQKJiM0MzsgKiBAZmxhZ3M6CXN5bmMsIHJlcGxheSBmbGFncwomIzQzOyAqIEByZWZjbnQ6CXJlZmVyZW5jZSBjb3VudAogICogQG5fdGFibGVzOgludW1iZXIgb2YgdGFibGVzIHVuZGVyIEBlbnRyaWVzCiAgKiBAbWlzc2VkOgliaXRtYXAgb2YgdGFibGVzIHdoaWNoIG92ZXJmbG93bgogICogQGVudHJpZXM6CXRhYmxlIG9mIHRhYmxlcyBvZiBwb3J0cyBjdXJyZW50bHkgb2ZmbG9hZGVkCkBAIC00NCw5ICYjNDM7NDMsMTEgQEAgc3RydWN0IHVkcF90dW5uZWxfbmljIHsKIAogCXN0cnVjdCBtdXRleCBsb2NrOwogCi0JdTggbmVlZF9zeW5jOjE7Ci0JdTggbmVlZF9yZXBsYXk6MTsKLQl1OCB3b3JrX3BlbmRpbmc6MTsKJiM0MzsJdW5zaWduZWQgbG9uZyBmbGFnczsKJiM0MzsjZGVmaW5lIFVEUF9UVU5ORUxfTklDX05FRURfU1lOQwkwCiYjNDM7I2RlZmluZSBVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWQkxCiYjNDM7CiYjNDM7CXJlZmNvdW50X3QgcmVmY250OwogCiAJdW5zaWduZWQgaW50IG5fdGFibGVzOwogCXVuc2lnbmVkIGxvbmcgbWlzc2VkOwpAQCAtMTE2LDcgJiM0MzsxMTcsNyBAQCB1ZHBfdHVubmVsX25pY19lbnRyeV9xdWV1ZShzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0biwKIAkJCSAgIHVuc2lnbmVkIGludCBmbGFnKQogewogCWVudHJ5LSZndDtmbGFncyB8PSBmbGFnOwotCXV0bi0mZ3Q7bmVlZF9zeW5jID0gMTsKJiM0MzsJc2V0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsICZhbXA7dXRuLSZndDtmbGFncyk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0yODMsNyAmIzQzOzI4NCw3IEBAIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX2J5X3RhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiBzdGF0aWMgdm9pZAogX191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bikKIHsKLQlpZiAoIXV0bi0mZ3Q7bmVlZF9zeW5jKQomIzQzOwlpZiAoIXRlc3RfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgJmFtcDt1dG4tJmd0O2ZsYWdzKSkKIAkJcmV0dXJuOwogCiAJaWYgKGRldi0mZ3Q7dWRwX3R1bm5lbF9uaWNfaW5mby0mZ3Q7c3luY190YWJsZSkKQEAgLTI5MSwyMSAmIzQzOzI5MiwyNCBAQCBfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKQogCWVsc2UKIAkJdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfYnlfcG9ydChkZXYsIHV0bik7CiAKLQl1dG4tJmd0O25lZWRfc3luYyA9IDA7CiYjNDM7CWNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsICZhbXA7dXRuLSZndDtmbGFncyk7CiAJLyogQ2FuJiMzOTt0IHJlcGxheSBkaXJlY3RseSBoZXJlLCBpbiBjYXNlIHdlIGNvbWUgZnJvbSB0aGUgdHVubmVsIGRyaXZlciYjMzk7cwogCSAqIG5vdGlmaWNhdGlvbiAtIHRyeWluZyB0byByZXBsYXkgbWF5IGRlYWRsb2NrIGluc2lkZSB0dW5uZWwgZHJpdmVyLgogCSAqLwotCXV0bi0mZ3Q7bmVlZF9yZXBsYXkgPSB1ZHBfdHVubmVsX25pY19zaG91bGRfcmVwbGF5KGRldiwgdXRuKTsKJiM0MzsJaWYgKHVkcF90dW5uZWxfbmljX3Nob3VsZF9yZXBsYXkoZGV2LCB1dG4pKQomIzQzOwkJc2V0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgJmFtcDt1dG4tJmd0O2ZsYWdzKTsKJiM0MzsJZWxzZQomIzQzOwkJY2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCAmYW1wO3V0bi0mZ3Q7ZmxhZ3MpOwogfQogCiBzdGF0aWMgdm9pZAogdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pCiB7Ci0JaWYgKCF1dG4tJmd0O25lZWRfc3luYykKJiM0MzsJaWYgKCF0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsICZhbXA7dXRuLSZndDtmbGFncykpCiAJCXJldHVybjsKIAotCXF1ZXVlX3dvcmsodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlLCAmYW1wO3V0bi0mZ3Q7d29yayk7Ci0JdXRuLSZndDt3b3JrX3BlbmRpbmcgPSAxOwomIzQzOwlpZiAocXVldWVfd29yayh1ZHBfdHVubmVsX25pY193b3JrcXVldWUsICZhbXA7dXRuLSZndDt3b3JrKSkKJiM0MzsJCXJlZmNvdW50X2luYygmYW1wO3V0bi0mZ3Q7cmVmY250KTsKIH0KIAogc3RhdGljIGJvb2wKQEAgLTM0OCw3ICYjNDM7MzUyLDcgQEAgdWRwX3R1bm5lbF9uaWNfaGFzX2NvbGxpc2lvbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0biwKIAkJCWlmICghdWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfZnJlZShlbnRyeSkgJmFtcDsmYW1wOwogCQkJICAgIGVudHJ5LSZndDtwb3J0ID09IHRpLSZndDtwb3J0ICZhbXA7JmFtcDsKIAkJCSAgICBlbnRyeS0mZ3Q7dHlwZSAhPSB0aS0mZ3Q7dHlwZSkgewotCQkJCV9fc2V0X2JpdChpLCAmYW1wO3V0bi0mZ3Q7bWlzc2VkKTsKJiM0MzsJCQkJc2V0X2JpdChpLCAmYW1wO3V0bi0mZ3Q7bWlzc2VkKTsKIAkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJfQpAQCAtNDgzLDcgJiM0Mzs0ODcsNyBAQCB1ZHBfdHVubmVsX25pY19hZGRfbmV3KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLAogCQkgKiBhcmUgbm8gZGV2aWNlcyBjdXJyZW50bHkgd2hpY2ggaGF2ZSBtdWx0aXBsZSB0YWJsZXMgYWNjZXB0aW5nCiAJCSAqIHRoZSBzYW1lIHR1bm5lbCB0eXBlLCBhbmQgZmFsc2UgcG9zaXRpdmVzIGFyZSBva2F5LgogCQkgKi8KLQkJX19zZXRfYml0KGksICZhbXA7dXRuLSZndDttaXNzZWQpOwomIzQzOwkJc2V0X2JpdChpLCAmYW1wO3V0bi0mZ3Q7bWlzc2VkKTsKIAl9CiAKIAlyZXR1cm4gZmFsc2U7CkBAIC01NTIsNyAmIzQzOzU1Niw3IEBAIHN0YXRpYyB2b2lkIF9fdWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAKIAltdXRleF9sb2NrKCZhbXA7dXRuLSZndDtsb2NrKTsKIAotCXV0bi0mZ3Q7bmVlZF9zeW5jID0gZmFsc2U7CiYjNDM7CWNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsICZhbXA7dXRuLSZndDtmbGFncyk7CiAJZm9yIChpID0gMDsgaSAmbHQ7IHV0bi0mZ3Q7bl90YWJsZXM7IGkmIzQzOyYjNDM7KQogCQlmb3IgKGogPSAwOyBqICZsdDsgaW5mby0mZ3Q7dGFibGVzW2ldLm5fZW50cmllczsgaiYjNDM7JiM0MzspIHsKIAkJCXN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnk7CkBAIC02OTYsOCAmIzQzOzcwMCw4IEBAIHVkcF90dW5uZWxfbmljX2ZsdXNoKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKQogCWZvciAoaSA9IDA7IGkgJmx0OyB1dG4tJmd0O25fdGFibGVzOyBpJiM0MzsmIzQzOykKIAkJbWVtc2V0KHV0bi0mZ3Q7ZW50cmllc1tpXSwgMCwgYXJyYXlfc2l6ZShpbmZvLSZndDt0YWJsZXNbaV0ubl9lbnRyaWVzLAogCQkJCQkJICAgICAgc2l6ZW9mKCoqdXRuLSZndDtlbnRyaWVzKSkpOwotCVdBUk5fT04odXRuLSZndDtuZWVkX3N5bmMpOwotCXV0bi0mZ3Q7bmVlZF9yZXBsYXkgPSAwOwomIzQzOwlXQVJOX09OKHRlc3RfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgJmFtcDt1dG4tJmd0O2ZsYWdzKSk7CiYjNDM7CWNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgJmFtcDt1dG4tJmd0O2ZsYWdzKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTcxMyw4ICYjNDM7NzE3LDggQEAgdWRwX3R1bm5lbF9uaWNfcmVwbGF5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKQogCWZvciAoaSA9IDA7IGkgJmx0OyB1dG4tJmd0O25fdGFibGVzOyBpJiM0MzsmIzQzOykKIAkJZm9yIChqID0gMDsgaiAmbHQ7IGluZm8tJmd0O3RhYmxlc1tpXS5uX2VudHJpZXM7IGomIzQzOyYjNDM7KQogCQkJdWRwX3R1bm5lbF9uaWNfZW50cnlfZnJlZXplX3VzZWQoJmFtcDt1dG4tJmd0O2VudHJpZXNbaV1bal0pOwotCXV0bi0mZ3Q7bWlzc2VkID0gMDsKLQl1dG4tJmd0O25lZWRfcmVwbGF5ID0gMDsKJiM0MzsJYml0bWFwX3plcm8oJmFtcDt1dG4tJmd0O21pc3NlZCwgVURQX1RVTk5FTF9OSUNfTUFYX1RBQkxFUyk7CiYjNDM7CWNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgJmFtcDt1dG4tJmd0O2ZsYWdzKTsKIAogCWlmICghaW5mby0mZ3Q7c2hhcmVkKSB7CiAJCXVkcF90dW5uZWxfZ2V0X3J4X2luZm8oZGV2KTsKQEAgLTcyOCw2ICYjNDM7NzMyLDggQEAgdWRwX3R1bm5lbF9uaWNfcmVwbGF5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKQogCQkJdWRwX3R1bm5lbF9uaWNfZW50cnlfdW5mcmVlemUoJmFtcDt1dG4tJmd0O2VudHJpZXNbaV1bal0pOwogfQogCiYjNDM7c3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfcHV0KHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKTsKJiM0MzsKIHN0YXRpYyB2b2lkIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogewogCXN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuID0KQEAgLTczNiwxNCAmIzQzOzc0MiwxNSBAQCBzdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAlydG5sX2xvY2soKTsKIAltdXRleF9sb2NrKCZhbXA7dXRuLSZndDtsb2NrKTsKIAotCXV0bi0mZ3Q7d29ya19wZW5kaW5nID0gMDsKIAlfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHV0bi0mZ3Q7ZGV2LCB1dG4pOwogCi0JaWYgKHV0bi0mZ3Q7bmVlZF9yZXBsYXkpCiYjNDM7CWlmICh0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgJmFtcDt1dG4tJmd0O2ZsYWdzKSkKIAkJdWRwX3R1bm5lbF9uaWNfcmVwbGF5KHV0bi0mZ3Q7ZGV2LCB1dG4pOwogCiAJbXV0ZXhfdW5sb2NrKCZhbXA7dXRuLSZndDtsb2NrKTsKIAlydG5sX3VubG9jaygpOwomIzQzOwomIzQzOwl1ZHBfdHVubmVsX25pY19wdXQodXRuKTsKIH0KIAogc3RhdGljIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqCkBAIC03NTksNiAmIzQzOzc2Niw3IEBAIHVkcF90dW5uZWxfbmljX2FsbG9jKGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvLAogCXV0bi0mZ3Q7bl90YWJsZXMgPSBuX3RhYmxlczsKIAlJTklUX1dPUksoJmFtcDt1dG4tJmd0O3dvcmssIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmspOwogCW11dGV4X2luaXQoJmFtcDt1dG4tJmd0O2xvY2spOwomIzQzOwlyZWZjb3VudF9zZXQoJmFtcDt1dG4tJmd0O3JlZmNudCwgMSk7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgbl90YWJsZXM7IGkmIzQzOyYjNDM7KSB7CiAJCXV0bi0mZ3Q7ZW50cmllc1tpXSA9IGt6YWxsb2Nfb2JqcygqdXRuLSZndDtlbnRyaWVzW2ldLApAQCAtNzgyLDkgJiM0Mzs3OTAsMTkgQEAgc3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfZnJlZShzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bikKIAogCWZvciAoaSA9IDA7IGkgJmx0OyB1dG4tJmd0O25fdGFibGVzOyBpJiM0MzsmIzQzOykKIAkJa2ZyZWUodXRuLSZndDtlbnRyaWVzW2ldKTsKJiM0MzsKJiM0MzsJaWYgKHV0bi0mZ3Q7ZGV2KQomIzQzOwkJZGV2X3B1dCh1dG4tJmd0O2Rldik7CiYjNDM7CiAJa2ZyZWUodXRuKTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIHVkcF90dW5uZWxfbmljX3B1dChzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bikKJiM0Mzt7CiYjNDM7CWlmIChyZWZjb3VudF9kZWNfYW5kX3Rlc3QoJmFtcDt1dG4tJmd0O3JlZmNudCkpCiYjNDM7CQl1ZHBfdHVubmVsX25pY19mcmVlKHV0bik7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCB1ZHBfdHVubmVsX25pY19yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewogCWNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LSZndDt1ZHBfdHVubmVsX25pY19pbmZvOwpAQCAtODYzLDYgJiM0Mzs4ODEsNyBAQCBzdGF0aWMgdm9pZAogdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bikKIHsKIAljb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi0mZ3Q7dWRwX3R1bm5lbF9uaWNfaW5mbzsKJiM0MzsJYm9vbCBsYXN0ID0gdHJ1ZTsKIAogCXVkcF90dW5uZWxfbmljX2xvY2soZGV2KTsKIApAQCAtODg5LDYgJiM0Mzs5MDgsNyBAQCB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKQogCQkJdWRwX3R1bm5lbF9kcm9wX3J4X2luZm8oZGV2KTsKIAkJCXV0bi0mZ3Q7ZGV2ID0gZmlyc3QtJmd0O2RldjsKIAkJCXVkcF90dW5uZWxfbmljX3VubG9jayhkZXYpOwomIzQzOwkJCWxhc3QgPSBmYWxzZTsKIAkJCWdvdG8gcmVsZWFzZV9kZXY7CiAJCX0KIApAQCAtOTAxLDE2ICYjNDM7OTIxLDExIEBAIHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pCiAJdWRwX3R1bm5lbF9uaWNfZmx1c2goZGV2LCB1dG4pOwogCXVkcF90dW5uZWxfbmljX3VubG9jayhkZXYpOwogCi0JLyogV2FpdCBmb3IgdGhlIHdvcmsgdG8gYmUgZG9uZSB1c2luZyB0aGUgc3RhdGUsIG5ldGRldiBjb3JlIHdpbGwKLQkgKiByZXRyeSB1bnJlZ2lzdGVyIHVudGlsIHdlIGdpdmUgdXAgb3VyIHJlZmVyZW5jZSBvbiB0aGlzIGRldmljZS4KLQkgKi8KLQlpZiAodXRuLSZndDt3b3JrX3BlbmRpbmcpCi0JCXJldHVybjsKLQotCXVkcF90dW5uZWxfbmljX2ZyZWUodXRuKTsKJiM0MzsJdWRwX3R1bm5lbF9uaWNfcHV0KHV0bik7CiByZWxlYXNlX2RldjoKIAlkZXYtJmd0O3VkcF90dW5uZWxfbmljID0gTlVMTDsKLQlkZXZfcHV0KGRldik7CiYjNDM7CWlmICghbGFzdCkKJiM0MzsJCWRldl9wdXQoZGV2KTsKIH0KIAogc3RhdGljIGludAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTc4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVURQIFR1bm5lbCBOSUMgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jYC4gU2VlbXMgbGlrZSBzb21lb25lJiMzOTtzIGdvbmUgaW4gYW5kIHJld29ya2VkIHRoZSB3YXkgdGhlIGB1ZHBfdHVubmVsX25pY2AgY29kZSBoYW5kbGVzIGNvbmN1cnJlbmN5IGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50LiBUaGV5JiMzOTt2ZSBzd2FwcGVkIG91dCB0aG9zZSBiaXRmaWVsZHMg4oCTIGBuZWVkX3N5bmNgLCBgbmVlZF9yZXBsYXlgLCBgd29ya19wZW5kaW5nYCDigJMgZm9yIGF0b21pYyBiaXQgb3BlcmF0aW9ucyBkaXJlY3RseSBvbiB0aGUgYGZsYWdzYCBmaWVsZC4gU21hcnQgbW92ZSwgdGhhdCYjMzk7cyBkZWZpbml0ZWx5IHRoZSByaWdodCBkaXJlY3Rpb24gdG8gYXZvaWQgdGhvc2UgbmFzdHkgcmFjZSBjb25kaXRpb25zLiBQbHVzLCB0aGV54oCZdmUgYWRkZWQgYSBgcmVmY250YCBvZiB0eXBlIGByZWZjb3VudF90YC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGV5IGFyZSBnb2luZyB0byBtYW5hZ2UgdGhlIGxpZmV0aW1lIG9mIHRoZSBgdXRuYCBzdHJ1Y3R1cmUgaXRzZWxmLCB3aGljaCBJIGxpa2UgdG8gc2VlLgoKVGhlIHBhdGNoIGRldGFpbHMgY29uZmlybSBteSBzdXNwaWNpb25zLiBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgIG5vdyBidW1wcyB0aGUgcmVmY291bnQgd2hlbiBxdWV1aW5nIHdvcmssIGFuZCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AgZGVjcmVtZW50cyBpdC4gVGhlIGludHJvZHVjdGlvbiBvZiBgdWRwX3R1bm5lbF9uaWNfcHV0YCBpcyB0aGUga2V5IOKAkyB0aGF0JiMzOTtzIHRoZSBwb2ludCB3aGVyZSB0aGUgc3RydWN0dXJlIGdldHMgZnJlZWQgd2hlbiB0aGUgcmVmY291bnQgaGl0cyB6ZXJvLiBBbmQgY2xldmVybHksIHRoZXkmIzM5O3ZlIHVwZGF0ZWQgYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgIHRvICp1c2UqIGB1ZHBfdHVubmVsX25pY19wdXRgIGluc3RlYWQgb2Ygd2FpdGluZyBmb3IgYHdvcmtfcGVuZGluZ2AgYW5kIGp1c3QgZnJlZWluZyB0aGUgYHV0bmAgZGlyZWN0bHkuIFRoYXQmIzM5O3MgYSBtdWNoIG1vcmUgcm9idXN0IGFwcHJvYWNoOyBhdm9pZHMgYmxvY2tpbmcuCgpUaGUgYHV0bi0mZ3Q7bWlzc2VkYCBjaGFuZ2UgaXMgaW50ZXJlc3RpbmcsIHRoZXkmIzM5O3JlIG5vdyB1c2luZyBgc2V0X2JpdGAgYW5kIGBiaXRtYXBfemVyb2Agb24gaXQuIFdhaXQuLi4gaXQmIzM5O3Mgc3RpbGwgYW4gYHVuc2lnbmVkIGxvbmdgLCBidXQgaXTigJlzICp1c2VkKiB3aXRoIGBzZXRfYml0YCBhbmQgYGJpdG1hcF96ZXJvYC4gSXQgc2VlbXMgbGlrZSB0aGV5JiMzOTtyZSBjb252ZXJ0aW5nIGl0IHRvIGJlaGF2ZSBsaWtlIGEgYml0bWFzaywgdXNpbmcgdGhlIGxvdy1sZXZlbCBmdW5jdGlvbnMgZm9yIG1hbmlwdWxhdGlvbi4gR29vZCwgdGhhdCBtYWtlcyBpdCBtb3JlIGF0b21pYy4KClNvLCBvdmVyYWxsLCB0aGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCYjMzk7cyBhbG1vc3QgY2VydGFpbmx5IGFpbWVkIGF0IGZpeGluZyBhIHJhY2UgY29uZGl0aW9uIG9yIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoZSBgdWRwX3R1bm5lbF9uaWNgIGNvZGUuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhpcyBmdXJ0aGVyLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byB2ZXJpZnkgdGhlIGNvZGUgcGF0aHMgaW52b2x2ZWQgYW5kIGZpZ3VyZSBvdXQgaWYgdGhpcyBjb2RlIGlzIGFjdHVhbGx5IHJlYWNoYWJsZSBpbiBhbnkgb2YgbXkgY3VycmVudCBjb25maWd1cmF0aW9ucy4gSSBzaG91bGQgY2hlY2sgYG5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNgIGl0c2VsZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VkcF90dW5uZWxfbmljJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQwOAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBJUHY0IE1ha2VmaWxlKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgc3BlY2lmaWMgc2VjdGlvbiBvZiB0aGUga2VybmVsLCBhbmQgdGhlIGBuZXQvaXB2NC9NYWtlZmlsZWAgaXMgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQuIEkmIzM5O20gdGhpbmtpbmcsIHRoaXMgZmlsZSBpcyB0aGUgY2VudHJhbCBvcmNoZXN0cmF0b3IgZm9yIGJ1aWxkaW5nIGFsbCB0aGUgSVB2NC1yZWxhdGVkIG1vZHVsZXMgYW5kIG9iamVjdCBmaWxlcy4gSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgaG93IHRoZSBkZXBlbmRlbmNpZXMgYXJlIHN0cnVjdHVyZWQsIGhvdyB0aGUgY29tcGlsYXRpb24gZmxhZ3MgYXJlIHNldCwgYW5kIHdoYXQgdGFyZ2V0cyBhcmUgZGVmaW5lZC4gSXMgaXQgYSBzdHJhaWdodGZvcndhcmQgZmxhdCBzdHJ1Y3R1cmUsIG9yIGFyZSB0aGVyZSBjbGV2ZXIgdHJpY2tzIHdpdGggcmVjdXJzaXZlIGluY2x1ZGVzLCB3aWxkY2FyZHMsIGFuZCB2YXJpYWJsZXMgdG8gaGFuZGxlIHRoZSBtdWx0aXR1ZGUgb2YgZmlsZXM/IEFyZSB0aGVyZSBhbnkgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG9yIGNvbmZpZ3VyYXRpb24tZGVwZW5kZW50IHJ1bGVzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIHJpZ2h0IG9mZiB0aGUgYmF0PyBLbm93aW5nIGhvdyB0aGlzIG1ha2VmaWxlIHRpZXMgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgYnVpbGQgc3lzdGVtIGlzIGNydWNpYWwsIGFzIGlzIHVuZGVyc3RhbmRpbmcgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBvdGhlciBuZXR3b3JrIHN0YWNrIG1ha2VmaWxlcy4gTGV04oCZcyBnZXQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dWRwX3R1bm5lbF9uaWMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT0zMD1vYmotJChDT05GSUdfTkVUX0lQR1JFKSAmIzQzOz0gaXBfZ3JlLm9cbm5ldC9pcHY0L01ha2VmaWxlOjMxOnVkcF90dW5uZWwteSA6PSB1ZHBfdHVubmVsX2NvcmUubyB1ZHBfdHVubmVsX25pYy5vXG5uZXQvaXB2NC9NYWtlZmlsZS0zMi1vYmotJChDT05GSUdfTkVUX1VEUF9UVU5ORUwpICYjNDM7PSB1ZHBfdHVubmVsLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzQzCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgQ29tcGlsYXRpb24gUGF0aCBmb3IgVURQIFR1bm5lbHMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBjb2RlIGFuZCBpdCBsb29rcyBsaWtlIHRoZSBVRFAgdHVubmVsIGZ1bmN0aW9uYWxpdHkgaXMgb25seSBpbmNsdWRlZCBpbiB0aGUgYnVpbGQgd2hlbiBgQ09ORklHX05FVF9VRFBfVFVOTkVMYCBpcyBzZXQuIFRoYXQmIzM5O3MgdGhlIGtleSB2YXJpYWJsZSB0byB0cmFjayBoZXJlLiBOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdHJpZ2dlcnMgKnRoYXQqIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBXaGF0IG90aGVyIGRlcGVuZGVuY2llcywgcGxhdGZvcm0gY29uZmlndXJhdGlvbnMsIG9yIGJ1aWxkLXRpbWUgc2V0dGluZ3MgbGVhZCB0byBgQ09ORklHX05FVF9VRFBfVFVOTkVMYCBiZWluZyBlbmFibGVkPyBMZXQmIzM5O3MgdHJhY2UgYmFjayBmcm9tIHRoZXJlIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC4gSSBzdXNwZWN0IHRoZXJlIG1pZ2h0IGJlIGEgY2hhaW4gb2YgZGVwZW5kZW5jaWVzLCBhbmQgSSB3YW50IHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGxvZ2ljLiBUaW1lIHRvIGdvIGh1bnRpbmcgZm9yIHRoZSB1cHN0cmVhbSBlbmFibGluZyBtZWNoYW5pc20uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IE5FVF9VRFBfVFVOTkVMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvS2NvbmZpZz0yPWNvbmZpZyBSRE1BX1JYRVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvS2NvbmZpZy01LVx0ZGVwZW5kcyBvbiBJTkZJTklCQU5EX1ZJUlRfRE1BXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL0tjb25maWc6NjpcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9LY29uZmlnLTctXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTc0PWNvbmZpZyBXSVJFR1VBUkRcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTc2LVx0ZGVwZW5kcyBvbiBORVQgXHUwMDI2XHUwMDI2IElORVRcbmRyaXZlcnMvbmV0L0tjb25maWc6Nzc6XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbmRyaXZlcnMvbmV0L0tjb25maWctNzgtXHRzZWxlY3QgRFNUX0NBQ0hFXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0xMDM9Y29uZmlnIE9WUE5cbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTEwNi1cdHNlbGVjdCBEU1RfQ0FDSEVcbmRyaXZlcnMvbmV0L0tjb25maWc6MTA3Olx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5kcml2ZXJzL25ldC9LY29uZmlnLTEwOC1cdHNlbGVjdCBDUllQVE9cbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTIzMD1jb25maWcgVlhMQU5cbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzMi1cdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyMzM6XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbmRyaXZlcnMvbmV0L0tjb25maWctMjM0LVx0c2VsZWN0IEdST19DRUxMU1xuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MjQ1PWNvbmZpZyBHRU5FVkVcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTI0Ny1cdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyNDg6XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbmRyaXZlcnMvbmV0L0tjb25maWctMjQ5LVx0c2VsZWN0IEdST19DRUxMU1xuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MjYwPWNvbmZpZyBCQVJFVURQXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNjItXHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWc6MjYzOlx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5kcml2ZXJzL25ldC9LY29uZmlnLTI2NC1cdHNlbGVjdCBHUk9fQ0VMTFNcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTI3Mj1jb25maWcgR1RQXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzQtXHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWc6Mjc1Olx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTI4OT1jb25maWcgUEZDUFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctMjkxLVx0ZGVwZW5kcyBvbiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnOjI5MjpcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yOTMtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zMDI9Y29uZmlnIEFNVFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctMzA0LVx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJUF9NVUxUSUNBU1RcbmRyaXZlcnMvbmV0L0tjb25maWc6MzA1Olx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5kcml2ZXJzL25ldC9LY29uZmlnLTMwNi1cdGhlbHBcbi0tXG5uZXQvaXB2NC9LY29uZmlnPTMyMT1jb25maWcgTkVUX0ZPVVxubmV0L2lwdjQvS2NvbmZpZy0zMjItXHR0cmlzdGF0ZSBcJiMzNDtJUDogRm9vIChJUCBwcm90b2NvbHMpIG92ZXIgVURQXCYjMzQ7XG5uZXQvaXB2NC9LY29uZmlnOjMyMzpcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxubmV0L2lwdjQvS2NvbmZpZy0zMjQtXHRoZWxwXG4tLVxubmV0L2wydHAvS2NvbmZpZz02PW1lbnVjb25maWcgTDJUUFxuLS1cbm5ldC9sMnRwL0tjb25maWctOC1cdGRlcGVuZHMgb24gSU5FVFxubmV0L2wydHAvS2NvbmZpZzo5Olx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5uZXQvbDJ0cC9LY29uZmlnLTEwLVx0aGVscFxuLS1cbm5ldC9yeHJwYy9LY29uZmlnPTY9Y29uZmlnIEFGX1JYUlBDXG4tLVxubmV0L3J4cnBjL0tjb25maWctMTEtXHRzZWxlY3QgS0VZU1xubmV0L3J4cnBjL0tjb25maWc6MTI6XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbm5ldC9yeHJwYy9LY29uZmlnLTEzLVx0aGVscFxuLS1cbm5ldC9zY3RwL0tjb25maWc9Nj1tZW51Y29uZmlnIElQX1NDVFBcbi0tXG5uZXQvc2N0cC9LY29uZmlnLTEyLVx0c2VsZWN0IE5FVF9DUkMzMkNcbm5ldC9zY3RwL0tjb25maWc6MTM6XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbm5ldC9zY3RwL0tjb25maWctMTQtXHRoZWxwXG4tLVxubmV0L3RpcGMvS2NvbmZpZz0zMD1jb25maWcgVElQQ19NRURJQV9VRFBcbi0tXG5uZXQvdGlwYy9LY29uZmlnLTMyLVx0ZGVwZW5kcyBvbiBUSVBDXG5uZXQvdGlwYy9LY29uZmlnOjMzOlx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5uZXQvdGlwYy9LY29uZmlnLTM0LVx0ZGVmYXVsdCB5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzAzMwoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDExNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNjb3BlIG9mIFVEUCBUdW5uZWxpbmcgaW4gdGhlIEtlcm5lbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHVkcF90dW5uZWxfbmljLmNgIGhlcmUuIFRoZSBuYW1lIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIHNvbWV0aGluZyBicm9hZCwgYnV0IGxldCYjMzk7cyBzZWUgaG93IGVuY29tcGFzc2luZyBpdCByZWFsbHkgaXMuIFJpZ2h0IG9mZiB0aGUgYmF0LCBgTkVUX1VEUF9UVU5ORUxgIGlzIGVuYWJsZWQgYnkgYSB3aWRlIGFycmF5IG9mIHByb3RvY29scyBhbmQgZmVhdHVyZXM6IGBWWExBTmAsIGBHRU5FVkVgLCBgQkFSRVVEUGAsIGBHVFBgLCBgUEZDUGAsIGBBTVRgLCBgTkVUX0ZPVWAsIGBMMlRQYCwgYEFGX1JYUlBDYCwgYElQX1NDVFBgLCBhbmQgZXZlbiBgVElQQ19NRURJQV9VRFBgLiBUaGF04oCZcyBhIHByZXR0eSBkaXZlcnNlIHNldC4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgd2hhdCYjMzk7cyByZWFsbHkgdXRpbGl6aW5nIGB1ZHBfdHVubmVsX25pY19pbmZvYCBvciwgbW9yZSBpbXBvcnRhbnRseSwgYHVkcF90dW5uZWxfbmljX3JlZ2lzdGVyYD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHVzYWdlIHBhdHRlcm5zIHRvIGdyYXNwIHRoZSByZWFsIGltcGFjdCBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBvZiBjaGFuZ2VzIGhlcmUuIEnigJlsbCBzdGFydCBkaWdnaW5nIGluIHRvIHNlZSB3aGF0IGNhbGxzIHRoZXNlIGZ1bmN0aW9ucywgYW5kIGZyb20gd2hlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VkcF90dW5uZWxfbmljX2luZm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL25ldF9kZXZpY2UucnN0PTE3Mj1zdHJ1Y3QgbWFjc2VjX29wcyogICAgICAgICAgICAgICAgICBtYWNzZWNfb3BzXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0X2NhY2hlbGluZXMvbmV0X2RldmljZS5yc3Q6MTczOnN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvKiAgICAgICAgIHVkcF90dW5uZWxfbmljX2luZm9cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRfY2FjaGVsaW5lcy9uZXRfZGV2aWNlLnJzdC0xNzQtc3RydWN0IHVkcF90dW5uZWxfbmljKiAgICAgICAgICAgICAgdWRwX3R1bm5lbF9uaWNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jPTg5NT1zdGF0aWMgaW50IHhnYmVfdnhsYW5fdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy05MDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jOjkwNjpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8geGdiZV91ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtOTA3LVx0LnNldF9wb3J0XHQ9IHhnYmVfdnhsYW5fc2V0X3BvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy05MTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jOjkxNTpjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqeGdiZV9nZXRfdWRwX3R1bm5lbF9pbmZvKHZvaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTkxNi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1tYWluLmM9MTUyPWludCB4Z2JlX2NvbmZpZ19uZXRkZXYoc3RydWN0IHhnYmVfcHJ2X2RhdGEgKnBkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtbWFpbi5jLTI2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtbWFpbi5jOjI2MzpcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSB4Z2JlX2dldF91ZHBfdHVubmVsX2luZm8oKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtbWFpbi5jLTI2NC1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLmg9MTI5Nj1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgKnhnYmVfZ2V0X2V0aHRvb2xfb3BzKHZvaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oOjEyOTc6Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKnhnYmVfZ2V0X3VkcF90dW5uZWxfaW5mbyh2b2lkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaC0xMjk4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz0xMDIxMT1zdGF0aWMgaW50IGJueDJ4X3VkcF90dW5uZWxfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEwMjIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jOjEwMjIyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBibngyeF91ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMDIyMy1cdC5zeW5jX3RhYmxlXHQ9IGJueDJ4X3VkcF90dW5uZWxfc3luYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM9MTMwNDA9c3RhdGljIGludCBibngyeF9pbml0X2RldihzdHJ1Y3QgYm54MnggKmJwLCBzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTMyMDctXHRcdGlmIChJU19QRihicCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM6MTMyMDg6XHRcdFx0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZibngyeF91ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMzIwOS1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz0xNTk2Mj1zdGF0aWMgaW50IGJueHRfdWRwX3R1bm5lbF91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNTk3Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE1OTc4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBibnh0X3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTU5NzktXHQuc2V0X3BvcnRcdD0gYm54dF91ZHBfdHVubmVsX3NldF9wb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE2OTQ1PXN0YXRpYyBpbnQgYm54dF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNzA1Mi1cdGlmIChicC1cdTAwM2VmbGFncyBcdTAwMjYgQk5YVF9GTEFHX0NISVBfUDcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNzA1MzpcdFx0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZibnh0X3VkcF90dW5uZWxzX3A3O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTcwNTQtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNzA1NTpcdFx0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZibnh0X3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTcwNTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9MjY4NT1zdGF0aWMgaW50IGxpcXVpZGlvX3VkcF90dW5uZWxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTI2OTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzoyNjk2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBsaXF1aWRpb191ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTI2OTctXHQuc2V0X3BvcnRcdD0gbGlxdWlkaW9fdWRwX3R1bm5lbF9zZXRfcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0zMzIyPXN0YXRpYyBpbnQgc2V0dXBfbmljX2RldmljZXMoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdGVvbl9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzU4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjM1ODM6XHRcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2bGlxdWlkaW9fdWRwX3R1bm5lbHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zNTg0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jPTE3NzI9c3RhdGljIGludCBsaXF1aWRpb191ZHBfdHVubmVsX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xNzgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6MTc4MzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbGlxdWlkaW9fdWRwX3R1bm5lbHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xNzg0LVx0LnNldF9wb3J0XHQ9IGxpcXVpZGlvX3VkcF90dW5uZWxfc2V0X3BvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MTkxOT1zdGF0aWMgaW50IHNldHVwX25pY19kZXZpY2VzKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3Rlb25fZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTIwOTMtXHRcdCAgICAobGlvLVx1MDAzZWVuY19kZXZfY2FwYWJpbGl0eSBcdTAwMjYgfk5FVElGX0ZfTFJPKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjIwOTQ6XHRcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2bGlxdWlkaW9fdWRwX3R1bm5lbHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0yMDk1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jPTM3NzA9c3RhdGljIGludCBjeGdiX3VkcF90dW5uZWxfc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYy0zODE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM6MzgxODpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gY3hnYl91ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM4MTktXHQuc2V0X3BvcnRcdD0gY3hnYl91ZHBfdHVubmVsX3NldF9wb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jPTY1NzE9c3RhdGljIGludCBpbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYy02ODAwLVx0XHRcdGlmIChhZGFwdGVyLVx1MDAzZXJhd2ZfY250KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM6NjgwMTpcdFx0XHRcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2Y3hnYl91ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTY4MDItXHRcdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL2VuaWNfbWFpbi5jPTIwNz1zdGF0aWMgaW50IGVuaWNfdWRwX3R1bm5lbF91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYy0yMjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL2VuaWNfbWFpbi5jOjIyOTpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gZW5pY191ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjMwLVx0LnNldF9wb3J0XHQ9IGVuaWNfdWRwX3R1bm5lbF9zZXRfcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL2VuaWNfbWFpbi5jPTI2NzU9c3RhdGljIGludCBlbmljX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjk0OC1cdFx0ICAgIGVuaWMtXHUwMDNldnhsYW4uZmxhZ3MgXHUwMDI2IEVOSUNfVlhMQU5fTVVMVElfV1EpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmM6Mjk0OTpcdFx0XHRuZXRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNmVuaWNfdWRwX3R1bm5lbHNfdjQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL2VuaWNfbWFpbi5jLTI5NTAtXHRcdFx0aWYgKGVuaWMtXHUwMDNldnhsYW4uZmxhZ3MgXHUwMDI2IEVOSUNfVlhMQU5fT1VURVJfSVBWNilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmM6Mjk1MTpcdFx0XHRcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2ZW5pY191ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjk1Mi1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmM9NDAxNT1zdGF0aWMgaW50IGJlX3Z4bGFuX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmMtNDAzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmM6NDAzNDpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gYmVfdWRwX3R1bm5lbHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jLTQwMzUtXHQuc2V0X3BvcnRcdD0gYmVfdnhsYW5fc2V0X3BvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYz01MTc5PXN0YXRpYyB2b2lkIGJlX25ldGRldl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYy01MjA3LVx0aWYgKCFsYW5jZXJfY2hpcChhZGFwdGVyKSBcdTAwMjZcdTAwMjYgIUJFeF9jaGlwKGFkYXB0ZXIpIFx1MDAyNlx1MDAyNiAhYmVfaXNfbWMoYWRhcHRlcikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jOjUyMDg6XHRcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2YmVfdWRwX3R1bm5lbHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jLTUyMDktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmM9NDAyPXN0YXRpYyBpbnQgZm0xMGtfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYy00MTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYzo0MTc6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGZtMTBrX3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmMtNDE4LVx0LnN5bmNfdGFibGVcdD0gZm0xMGtfdWRwX3R1bm5lbF9zeW5jLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jPTE1NDE9c3RydWN0IG5ldF9kZXZpY2UgKmZtMTBrX2FsbG9jX25ldGRldihjb25zdCBzdHJ1Y3QgZm0xMGtfaW5mbyAqaW5mbylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYy0xNTgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmM6MTU4MTpcdFx0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZmbTEwa191ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jLTE1ODItXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlLmg9NDY4PXN0cnVjdCBpNDBlX3BmIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaC01MjEtXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfc2hhcmVkIHVkcF90dW5uZWxfc2hhcmVkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlLmg6NTIyOlx0c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gdWRwX3R1bm5lbF9uaWM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaC01MjMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0xMzYzNz1zdGF0aWMgaW50IGk0MGVfY29uZmlnX25ldGRldihzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTEzNjgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYzoxMzY4MTpcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2cGYtXHUwMDNldWRwX3R1bm5lbF9uaWM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTEzNjgyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jPTM0NDM9c3RhdGljIHZvaWQgaWNlX3NldF9vcHMoc3RydWN0IGljZV92c2kgKnZzaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy0zNDU0LVx0bmV0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZpY2VfbmV0ZGV2X29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjM0NTU6XHRuZXRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNnBmLVx1MDAzZWh3LnVkcF90dW5uZWxfbmljO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtMzQ1Ni1cdG5ldGRldi1cdTAwM2V4ZHBfbWV0YWRhdGFfb3BzID0gXHUwMDI2aWNlX3hkcF9tZF9vcHM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM9Mzk3MD1pbnQgaWNlX2luaXRfcGYoc3RydWN0IGljZV9wZiAqcGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy0zOTcxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjM5NzI6XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqdWRwX3R1bm5lbF9uaWMgPSBcdTAwMjZwZi1cdTAwM2Vody51ZHBfdHVubmVsX25pYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTM5NzMtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBpY2VfcGZfdG9fZGV2KHBmKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R5cGUuaD04OTk9c3RydWN0IGljZV9odyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eXBlLmgtMTAxMS1cdHN0cnVjdCB1ZHBfdHVubmVsX25pY19zaGFyZWQgdWRwX3R1bm5lbF9zaGFyZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R5cGUuaDoxMDEyOlx0c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gdWRwX3R1bm5lbF9uaWM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R5cGUuaC0xMDEzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz01NDQ4PXN0YXRpYyBpbnQgaXhnYmVfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNTQ2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzo1NDY3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBpeGdiZV91ZHBfdHVubmVsc194NTUwID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTU0NjgtXHQuc3luY190YWJsZVx0PSBpeGdiZV91ZHBfdHVubmVsX3N5bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTU0NzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6NTQ3NTpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gaXhnYmVfdWRwX3R1bm5lbHNfeDU1MGVtX2EgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNTQ3Ni1cdC5zeW5jX3RhYmxlXHQ9IGl4Z2JlX3VkcF90dW5uZWxfc3luYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM9MTE1NDg9c3RhdGljIGludCBpeGdiZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTE2OTktXHRjYXNlIGl4Z2JlX21hY19lNjEwOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjExNzAwOlx0XHRuZXRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNml4Z2JlX3VkcF90dW5uZWxzX3g1NTA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTE3MDEtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTExNzAyLVx0Y2FzZSBpeGdiZV9tYWNfeDU1MGVtX2E6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6MTE3MDM6XHRcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2aXhnYmVfdWRwX3R1bm5lbHNfeDU1MGVtX2E7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTE3MDQtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmM9MjYzOT1zdGF0aWMgaW50IG1seDRfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jLTI2NTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jOjI2NTc6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIG1seDRfdWRwX3R1bm5lbHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jLTI2NTgtXHQuc3luY190YWJsZVx0PSBtbHg0X3VkcF90dW5uZWxfc3luYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jPTMxNjE9aW50IG1seDRfZW5faW5pdF9uZXRkZXYoc3RydWN0IG1seDRfZW5fZGV2ICptZGV2LCBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jLTMzNDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jOjMzNDc6XHRcdGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2bWx4NF91ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMtMzM0OC1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaD05MDU9c3RydWN0IG1seDVlX3ByaXYge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oLTk1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oOjk1NzpcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIG5pY19pbmZvO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTU4LSNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NTQ1Nj12b2lkIG1seDVlX3Z4bGFuX3NldF9uZXRkZXZfaW5mbyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTU0NjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjU0Njk6XHRwcml2LVx1MDAzZW5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2cHJpdi1cdTAwM2VuaWNfaW5mbztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNTQ3MC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jPTIzNzY9c3RhdGljIGludCBuZnBfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmMtMjM5NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYzoyMzk1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBuZnBfdWRwX3R1bm5lbHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmMtMjM5Ni1cdC5zeW5jX3RhYmxlICAgICA9IG5mcF91ZHBfdHVubmVsX3N5bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jPTI2NjY9c3RhdGljIHZvaWQgbmZwX25ldF9uZXRkZXZfaW5pdChzdHJ1Y3QgbmZwX25ldCAqbm4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jLTI3MTgtXHRcdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYzoyNzE5Olx0XHRuZXRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNm5mcF91ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYy0yNzIwLVx0XHRubi1cdTAwM2VkcC5jdHJsIHw9IE5GUF9ORVRfQ0ZHX0NUUkxfVlhMQU47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYz05NTc9c3RhdGljIGludCBxZWRlX3VkcF90dW5uZWxfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYy05ODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jOjk4ODpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gcWVkZV91ZHBfdHVubmVsc19ib3RoID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYy05ODktXHQuc3luY190YWJsZVx0PSBxZWRlX3VkcF90dW5uZWxfc3luYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jPTEwMDY9dm9pZCBxZWRlX3NldF91ZHBfdHVubmVscyhzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYy0xMDA5LVx0ICAgIGVkZXYtXHUwMDNlZGV2X2luZm8uY29tbW9uLmdlbmV2ZV9lbmFibGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jOjEwMTA6XHRcdGVkZXYtXHUwMDNlbmRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2cWVkZV91ZHBfdHVubmVsc19ib3RoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYy0xMDExLVx0ZWxzZSBpZiAoZWRldi1cdTAwM2VkZXZfaW5mby5jb21tb24udnhsYW5fZW5hYmxlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYzoxMDEyOlx0XHRlZGV2LVx1MDAzZW5kZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNnFlZGVfdWRwX3R1bm5lbHNfdnhsYW47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTEwMTMtXHRlbHNlIGlmIChlZGV2LVx1MDAzZWRldl9pbmZvLmNvbW1vbi5nZW5ldmVfZW5hYmxlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYzoxMDE0Olx0XHRlZGV2LVx1MDAzZW5kZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNnFlZGVfdWRwX3R1bm5lbHNfZ2VuZXZlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYy0xMDE1LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmM9NDcxPXN0YXRpYyBpbnQgcWxjbmljX3VkcF90dW5uZWxfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jLTQ4Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uYzo0ODc6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHFsY25pY191ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uYy00ODgtXHQuc3luY190YWJsZVx0PSBxbGNuaWNfdWRwX3R1bm5lbF9zeW5jLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uYz0yMjU0PXFsY25pY19zZXR1cF9uZXRkZXYoc3RydWN0IHFsY25pY19hZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uYy0yMzAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jOjIzMDQ6XHRcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2cWxjbmljX3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jLTIzMDUtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYz00Mj1zdGF0aWMgaW50IGVmeF9lZjEwX3NldF91ZHBfdG5sX3BvcnRzKHN0cnVjdCBlZnhfbmljICplZngsIGJvb2wgdW5sb2FkaW5nKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM6NDM6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGVmeF9lZjEwX3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYy00NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jPTUyNT1zdGF0aWMgaW50IGVmeF9lZjEwX3Byb2JlKHN0cnVjdCBlZnhfbmljICplZngpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYy02ODAtXHQgICAgKDEgXHUwMDNjXHUwMDNjIE1DX0NNRF9EUlZfQVRUQUNIX0VYVF9PVVRfRkxBR19UUlVTVEVEKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM6NjgxOlx0XHRlZngtXHUwMDNlbmV0X2Rldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2ZWZ4X2VmMTBfdWRwX3R1bm5lbHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTY4Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jPTM5NjI9c3RhdGljIGludCBlZnhfZWYxMF91ZHBfdG5sX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTM5ODQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jOjM5ODU6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGVmeF9lZjEwX3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYy0zOTg2LVx0LnNldF9wb3J0XHQ9IGVmeF9lZjEwX3VkcF90bmxfc2V0X3BvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM9NjE5PXN0YXRpYyBpbnQgdHhnYmVfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy02NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYzo2NDI6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHR4Z2JlX3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNjQzLVx0LnN5bmNfdGFibGVcdD0gdHhnYmVfdWRwX3R1bm5lbF9zeW5jLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jPTY4MT1zdGF0aWMgaW50IHR4Z2JlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTc0Ny1cdG5ldGRldi1cdTAwM2VuZXRkZXZfb3BzID0gXHUwMDI2dHhnYmVfbmV0ZGV2X29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jOjc0ODpcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2dHhnYmVfdWRwX3R1bm5lbHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy03NDktXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM9NjY9bnNpbV91ZHBfdHVubmVsX3N5bmNfdGFibGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTg0LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6ODU6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIG5zaW1fdWRwX3R1bm5lbF9pbmZvID0ge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtODYtXHQuc2V0X3BvcnRcdD0gbnNpbV91ZHBfdHVubmVsX3NldF9wb3J0LFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jPTEyNT1pbnQgbnNpbV91ZHBfdHVubmVsc19pbmZvX2NyZWF0ZShzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTEyOC1cdHN0cnVjdCBuZXRkZXZzaW0gKm5zID0gbmV0ZGV2X3ByaXYoZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jOjEyOTpcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTMwLVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTE4NC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jOjE4NTpcdGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gaW5mbztcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTE4Ni1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jPTE4OT12b2lkIG5zaW1fdWRwX3R1bm5lbHNfaW5mb19kZXN0cm95KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTkzLVx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKG5zLVx1MDAzZXVkcF9wb3J0cy5kZGlyKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jOjE5NDpcdGtmcmVlKGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jOjE5NTpcdGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gTlVMTDtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTE5Ni19XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD03Nj1zdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvO1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo3NzpzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbztcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNzgtc3RydWN0IHVkcF90dW5uZWxfbmljO1xuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MTgwND1lbnVtIG5ldGRldl9yZWdfc3RhdGUge1xuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjA4OS0gKlxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyMDkwOiAqXHRAdWRwX3R1bm5lbF9uaWNfaW5mbzpcdHN0YXRpYyBzdHJ1Y3R1cmUgZGVzY3JpYmluZyB0aGUgVURQIHR1bm5lbFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yMDkxLSAqXHRcdFx0XHRvZmZsb2FkIGNhcGFiaWxpdGllcyBvZiB0aGUgZGV2aWNlXG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0yMTM5PXN0cnVjdCBuZXRfZGV2aWNlIHtcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1MDQtI2VuZGlmXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjI1MDU6XHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mb1x0KnVkcF90dW5uZWxfbmljX2luZm87XG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1MDYtXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNcdCp1ZHBfdHVubmVsX25pYztcbi0tXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg9MjI1PXN0YXRpYyBpbmxpbmUgdm9pZCB1ZHBfdHVubmVsX2VuY2FwX2VuYWJsZShzdHJ1Y3Qgc29jayAqc2spXG4tLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTIzOC1cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDoyMzk6ZW51bSB1ZHBfdHVubmVsX25pY19pbmZvX2ZsYWdzIHtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0yNDAtXHQvKiBEZXZpY2Ugb25seSBzdXBwb3J0cyBvZmZsb2FkcyB3aGVuIGl0JiMzOTtzIG9wZW4sIGFsbCBwb3J0c1xuLS1cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0yNTc9c3RydWN0IHVkcF90dW5uZWxfbmljX3NoYXJlZCB7XG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MjU4Olx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1ZHBfdHVubmVsX25pY19pbmZvO1xuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTI1OS1cbi0tXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg9MjYzPXN0cnVjdCB1ZHBfdHVubmVsX25pY19zaGFyZWRfbm9kZSB7XG4tLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTI2OC0vKipcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDoyNjk6ICogc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gLSBkcml2ZXIgVURQIHR1bm5lbCBvZmZsb2FkIGluZm9ybWF0aW9uXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMjcwLSAqIEBzZXRfcG9ydDpcdGNhbGxiYWNrIGZvciBhZGRpbmcgYSBuZXcgcG9ydFxuLS1cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0yNzMtICogQHNoYXJlZDpcdHJlZmVyZW5jZSB0byBkZXZpY2UgZ2xvYmFsIHN0YXRlIChvcHRpb25hbClcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDoyNzQ6ICogQGZsYWdzOlx0ZGV2aWNlIGZsYWdzIGZyb20gZW51bSB1ZHBfdHVubmVsX25pY19pbmZvX2ZsYWdzXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMjc1LSAqIEB0YWJsZXM6XHRVRFAgcG9ydCB0YWJsZXMgdGhpcyBkZXZpY2UgaGFzXG4tLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTI5Ni0gKi9cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDoyOTc6c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8ge1xuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTI5OC1cdC8qIG9uZS1ieS1vbmUgKi9cbi0tXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzIyLSAqIG1vZHVsZS4gTklDIGRyaXZlcnMgYXJlIG5vdCwgdGhleSBqdXN0IGF0dGFjaCB0aGVpclxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjMyMzogKiBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyB0byB0aGUgbmV0ZGV2IGFuZCB3YWl0IGZvciBjYWxsYmFja3MgdG8gY29tZS5cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zMjQtICogTG9hZGluZyBhIHR1bm5lbCBkcml2ZXIgd2lsbCBjYXVzZSB0aGUgdWRwX3R1bm5lbCBtb2R1bGUgdG8gYmUgbG9hZGVkXG4tLVxubmV0L2NvcmUvZGV2LmM9MTEzMjA9aW50IHJlZ2lzdGVyX25ldGRldmljZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9jb3JlL2Rldi5jLTExMzk0LVxubmV0L2NvcmUvZGV2LmM6MTEzOTU6XHRpZiAoZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8pIHtcbm5ldC9jb3JlL2Rldi5jLTExMzk2LVx0XHRkZXYtXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9SWF9VRFBfVFVOTkVMX1BPUlQ7XG4tLVxubmV0L2V0aHRvb2wvdHVubmVscy5jPTM2PWV0aG5sX3R1bm5lbF9pbmZvX3JlcGx5X3NpemUoY29uc3Qgc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcbi0tXG5uZXQvZXRodG9vbC90dW5uZWxzLmMtMzktXHRib29sIGNvbXBhY3QgPSByZXFfYmFzZS1cdTAwM2VmbGFncyBcdTAwMjYgRVRIVE9PTF9GTEFHX0NPTVBBQ1RfQklUU0VUUztcbm5ldC9ldGh0b29sL3R1bm5lbHMuYzo0MDpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvO1xubmV0L2V0aHRvb2wvdHVubmVscy5jLTQxLVx0dW5zaWduZWQgaW50IGk7XG4tLVxubmV0L2V0aHRvb2wvdHVubmVscy5jLTQ0LVxubmV0L2V0aHRvb2wvdHVubmVscy5jOjQ1Olx0aW5mbyA9IHJlcV9iYXNlLVx1MDAzZWRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xubmV0L2V0aHRvb2wvdHVubmVscy5jLTQ2LVx0aWYgKCFpbmZvKSB7XG4tLVxubmV0L2V0aHRvb2wvdHVubmVscy5jPTgyPWV0aG5sX3R1bm5lbF9pbmZvX2ZpbGxfcmVwbHkoY29uc3Qgc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcbi0tXG5uZXQvZXRodG9vbC90dW5uZWxzLmMtODUtXHRib29sIGNvbXBhY3QgPSByZXFfYmFzZS1cdTAwM2VmbGFncyBcdTAwMjYgRVRIVE9PTF9GTEFHX0NPTVBBQ1RfQklUU0VUUztcbm5ldC9ldGh0b29sL3R1bm5lbHMuYzo4NjpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvO1xubmV0L2V0aHRvb2wvdHVubmVscy5jLTg3LVx0c3RydWN0IG5sYXR0ciAqcG9ydHMsICp0YWJsZSwgKmVudHJ5O1xuLS1cbm5ldC9ldGh0b29sL3R1bm5lbHMuYy04OS1cbm5ldC9ldGh0b29sL3R1bm5lbHMuYzo5MDpcdGluZm8gPSByZXFfYmFzZS1cdTAwM2VkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9ldGh0b29sL3R1bm5lbHMuYy05MS1cdGlmICghaW5mbylcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTEzND11ZHBfdHVubmVsX25pY19pc19lbXB0eShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTM1LXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTM2Olx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTM3LVx0dW5zaWduZWQgaW50IGksIGo7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xNDc9dWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE1NS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHV0bi1cdTAwM2VuX3RhYmxlczsgaSYjNDM7JiM0MzspIHtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTU2Olx0XHR0YWJsZSA9IFx1MDAyNmRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVx1MDAzZXRhYmxlc1tpXTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTU3LVx0XHRpZiAoIXRlc3RfYml0KGksIFx1MDAyNnV0bi1cdTAwM2VtaXNzZWQpKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjEzPXVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX29uZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjI2LVx0aWYgKGVudHJ5LVx1MDAzZWZsYWdzIFx1MDAyNiBVRFBfVFVOTkVMX05JQ19FTlRSWV9BREQpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjIyNzpcdFx0ZXJyID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8tXHUwMDNlc2V0X3BvcnQoZGV2LCB0YWJsZSwgaWR4LCBcdTAwMjZ0aSk7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTIyOC1cdGVsc2Vcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjI5Olx0XHRlcnIgPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cdTAwM2V1bnNldF9wb3J0KGRldiwgdGFibGUsIGlkeCxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjMwLVx0XHRcdFx0XHRcdFx0ICAgXHUwMDI2dGkpO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjQyPXVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX2J5X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI0NC17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI0NTpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI0Ni1cdHVuc2lnbmVkIGludCBpLCBqO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjU0PXVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX2J5X3RhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNTYte1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyNTc6XHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNTgtXHR1bnNpZ25lZCBpbnQgaSwgajtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTI4NT1fX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjg5LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyOTA6XHRpZiAoZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8tXHUwMDNlc3luY190YWJsZSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjkxLVx0XHR1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV90YWJsZShkZXYsIHV0bik7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zMjM9dWRwX3R1bm5lbF9uaWNfaXNfY2FwYWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMyNS17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMyNjpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMyNy1cdHVuc2lnbmVkIGludCBpO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MzQxPXVkcF90dW5uZWxfbmljX2hhc19jb2xsaXNpb24oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zNDMte1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzozNDQ6XHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zNDUtXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NDI1PXVkcF90dW5uZWxfbmljX3RyeV9leGlzdGluZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQzMS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHV0bi1cdTAwM2VuX3RhYmxlczsgaSYjNDM7JiM0MzspIHtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDMyOlx0XHR0YWJsZSA9IFx1MDAyNmRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVx1MDAzZXRhYmxlc1tpXTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDMzLVx0XHRpZiAoIXVkcF90dW5uZWxfbmljX3RhYmxlX2lzX2NhcGFibGUodGFibGUsIHRpKSlcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTQ2MD11ZHBfdHVubmVsX25pY19hZGRfbmV3KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDY2LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdXRuLVx1MDAzZW5fdGFibGVzOyBpJiM0MzsmIzQzOykge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0Njc6XHRcdHRhYmxlID0gXHUwMDI2ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8tXHUwMDNldGFibGVzW2ldO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NjgtXHRcdGlmICghdWRwX3R1bm5lbF9uaWNfdGFibGVfaXNfY2FwYWJsZSh0YWJsZSwgdGkpKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NDk3PV9fdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ5OC17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQ5OTpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTUwMC1cdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NTQ3PXN0YXRpYyB2b2lkIF9fdWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU0OC17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjU0OTpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU1MC1cdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NTgzPV9fdWRwX3R1bm5lbF9uaWNfZHVtcF9zaXplKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTg0LXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTg1Olx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTg2LVx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz02MDg9X191ZHBfdHVubmVsX25pY19kdW1wX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYxMC17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjYxMTpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYxMi1cdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9Njg1PXVkcF90dW5uZWxfbmljX2ZsdXNoKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02ODYte1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2ODc6XHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02ODgtXHR1bnNpZ25lZCBpbnQgaSwgajtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTcwOD11ZHBfdHVubmVsX25pY19yZXBsYXkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTcwOS17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjcxMDpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTcxMS1cdHN0cnVjdCB1ZHBfdHVubmVsX25pY19zaGFyZWRfbm9kZSAqbm9kZTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTc1Nj1zdGF0aWMgc3RydWN0IHVkcF90dW5uZWxfbmljICpcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzU3OnVkcF90dW5uZWxfbmljX2FsbG9jKGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03NTgtXHRcdCAgICAgdW5zaWduZWQgaW50IG5fdGFibGVzKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9ODA2PXN0YXRpYyBpbnQgdWRwX3R1bm5lbF9uaWNfcmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODA3LXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODA4Olx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODA5LVx0c3RydWN0IHVkcF90dW5uZWxfbmljX3NoYXJlZF9ub2RlICpub2RlID0gTlVMTDtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg0Ny1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODQ4Olx0aWYgKGluZm8tXHUwMDNlc2hhcmVkIFx1MDAyNlx1MDAyNiBpbmZvLVx1MDAzZXNoYXJlZC1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvKSB7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjg0OTpcdFx0dXRuID0gaW5mby1cdTAwM2VzaGFyZWQtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODUwLVx0fSBlbHNlIHtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg1OC1cdGlmIChpbmZvLVx1MDAzZXNoYXJlZCkge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4NTk6XHRcdGlmICghaW5mby1cdTAwM2VzaGFyZWQtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbykge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NjAtXHRcdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2aW5mby1cdTAwM2VzaGFyZWQtXHUwMDNlZGV2aWNlcyk7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjg2MTpcdFx0XHRpbmZvLVx1MDAzZXNoYXJlZC1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gdXRuO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NjItXHRcdH1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTg4MT11ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04ODIte1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4ODM6XHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04ODQtXHRib29sIGxhc3QgPSB0cnVlO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTE0LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5MTU6XHRcdGluZm8tXHUwMDNlc2hhcmVkLVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBOVUxMO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05MTYtXHR9XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz05MzI9dWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTM1LVx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IG5ldGRldl9ub3RpZmllcl9pbmZvX3RvX2RldihwdHIpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5MzY6XHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTM3LVx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkzOC1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTM5Olx0aW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05NDAtXHRpZiAoIWluZm8pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5OTczCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiBgdWRwX3R1bm5lbF9uaWNgIFVzYWdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGB1ZHBfdHVubmVsX25pY2AgY29kZSwgYW5kIGl0JiMzOTtzIHVzZWQgYnkgYSAqdG9uKiBvZiBkcml2ZXJzLiBgeGdiZWAsIGBibngyeGAsIGBibnh0YCwgYGxpcXVpZGlvYCwgYGN4Z2I0YC4uLiB0aGUgbGlzdCBnb2VzIG9uIGFuZCBvbiwgcmlnaHQ/IFNlZW1zIHByZXR0eSB3aWRlbHkgYWRvcHRlZC4gQnV0IHRoZW4gSSBzYXcgYG5ldGRldnNpbWAgaW4gdGhlcmUuIFdhaXQgYSBzZWNvbmQsIGBuZXRkZXZzaW1gIHVzZXMgaXQ/IFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIEkga25vdyBob3cgYG5ldGRldnNpbWAgd29ya3M7IGl0JiMzOTtzIGEgKnZpcnR1YWwqIG5ldHdvcmsgZGV2aWNlLiBBaGEhIFRoYXQgbWVhbnMgdGhpcyBgdWRwX3R1bm5lbF9uaWNgIGNvZGUgaXMgKmRlZmluaXRlbHkqIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHNwZWNpZmljYWxseSB0aHJvdWdoIGBuZXRkZXZzaW1gLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqLiBJJiMzOTttIGdvaW5nIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmNgIHRvIHNlZSBwcmVjaXNlbHkgd2hhdCYjMzk7cyBnb2luZyBvbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnNpbV91ZHBfdHVubmVsc19pbmZvX2NyZWF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTEwMzg9c3RhdGljIGludCBuc2ltX2luaXRfbmV0ZGV2c2ltKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy0xMDUzLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjEwNTQ6XHRlcnIgPSBuc2ltX3VkcF90dW5uZWxzX2luZm9fY3JlYXRlKG5zLVx1MDAzZW5zaW1fZGV2LCBucy1cdTAwM2VuZXRkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTEwNTUtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaD0xNzM9dm9pZCBuc2ltX3VkcF90dW5uZWxzX2RlYnVnZnNfY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE3NDppbnQgbnNpbV91ZHBfdHVubmVsc19pbmZvX2NyZWF0ZShzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE3NS1cdFx0XHRcdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYz0xMTg9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgbnNpbV91ZHBfdHVubmVsc19pbmZvX3Jlc2V0X2ZvcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTI0LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6MTI1OmludCBuc2ltX3VkcF90dW5uZWxzX2luZm9fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xMjYtXHRcdFx0XHQgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxNjEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1ZHBfdHVubmVsX25pY193b3JrcXVldWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zOT1zdHJ1Y3QgdWRwX3R1bm5lbF9uaWMge1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTktICovXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjYwOnN0YXRpYyBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqdWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02MS1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTMwNj11ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMxMC1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MzExOlx0aWYgKHF1ZXVlX3dvcmsodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlLCBcdTAwMjZ1dG4tXHUwMDNld29yaykpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMxMi1cdFx0cmVmY291bnRfaW5jKFx1MDAyNnV0bi1cdTAwM2VyZWZjbnQpO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9OTg2PXN0YXRpYyBpbnQgX19pbml0IHVkcF90dW5uZWxfbmljX2luaXRfbW9kdWxlKHZvaWQpXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05ODktXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjk5MDpcdHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSA9IGFsbG9jX29yZGVyZWRfd29ya3F1ZXVlKFwmIzM0O3VkcF90dW5uZWxfbmljXCYjMzQ7LCAwKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTkxOlx0aWYgKCF1ZHBfdHVubmVsX25pY193b3JrcXVldWUpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTk5Mi1cdFx0cmV0dXJuIC1FTk9NRU07XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDA3LVx0cnRubF91bmxvY2soKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTAwODpcdGRlc3Ryb3lfd29ya3F1ZXVlKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSk7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEwMDktXHRyZXR1cm4gZXJyO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MTAxMz1zdGF0aWMgdm9pZCBfX2V4aXQgdWRwX3R1bm5lbF9uaWNfY2xlYW51cF9tb2R1bGUodm9pZClcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEwMjAtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEwMjE6XHRkZXN0cm95X3dvcmtxdWV1ZSh1ZHBfdHVubmVsX25pY193b3JrcXVldWUpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDIyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE0MTIKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQ3JpdGljYWwgQnVnIEZpeCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIG5hc3R5IHJhY2UgY29uZGl0aW9uIGluIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYC4gVGhlIG9sZCBjb2RlIGhhZCBhIGZsYXcg4oCTIGl0IHdhaXRlZCBmb3IgYHdvcmtfcGVuZGluZ2AgdG8gaGl0IHplcm8sIGJ1dCB0aGUgYXNzb2NpYXRlZCB3b3JrIGNvdWxkIHN0aWxsIGJlIHJ1bm5pbmcgYW5kIHRyeWluZyB0byBhY2Nlc3MgdGhlIG5vdy1mcmVlZCBgdXRuYCBzdHJ1Y3R1cmUuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIG1lbW9yeSBjb3JydXB0aW9uIGJ1ZywgYW5kIHRoZSByZWZjb3VudCBhcHByb2FjaCBzZWVtcyBsaWtlIGEgc29saWQgZml4LiBJdCYjMzk7cyBtdWNoIG1vcmUgcm9idXN0LgoKVGhpcyBpcyAqYWJzb2x1dGVseSogc29tZXRoaW5nIHRoYXQgZGVtYW5kcyBmdXp6aW5nLiBBIHJhY2UgY29uZGl0aW9uIGxpa2UgdGhhdCwgZXNwZWNpYWxseSBhcm91bmQgcmVzb3VyY2UgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uLCBpcyBwcmltZSB0ZXJyaXRvcnkgZm9yIHVuY292ZXJpbmcgdnVsbmVyYWJpbGl0aWVzLiBUaGUgcGF0Y2gmIzM5O3MgaW1wYWN0IHNvdW5kcyBmYWlybHkgbG9jYWxpemVkLCB3aGljaCBtYWtlcyBpdCBhbiBpZGVhbCBjYW5kaWRhdGUgZm9yIHRhcmdldGVkIGZ1enppbmcuIEnigJlkIHdhbnQgdG8gY29uZmlybSB0aGF0IHRoZSByZWZjb3VudCBoYW5kbGVzIHRoZSBlZGdlIGNhc2VzIGFzIGV4cGVjdGVkLCBhbmQgdGVzdCBwb3RlbnRpYWwgc2NlbmFyaW9zIHdoZXJlIGNvbmN1cnJlbnQgYWNjZXNzZXMgbWlnaHQgc3RpbGwgc25lYWsgdGhyb3VnaC4KCk5vdywgd2hhdCBhcmUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byB0cmlnZ2VyIHRoaXM/IEFoLCBJIHJlbWVtYmVyLCBJIG5lZWQgYENPTkZJR19ORVRERVZTSU1gIHRvIGVuYWJsZSBgbmV0ZGV2c2ltYCwgd2hpY2gsIGZyb20gbWVtb3J5LCB1dGlsaXplcyBgdWRwX3R1bm5lbF9uaWNgLiBCdXQgd2FpdCwgZG9lcyBlbmFibGluZyB0aGUgbmV0ZGV2c2ltIGFsc28gaW1wbGljaXRseSBzZWxlY3QgYE5FVF9VRFBfVFVOTkVMYD8gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcyB0byBiZSBzdXJlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gc2V0dGluZyBldmVyeXRoaW5nIHVwIGNvcnJlY3RseSBiZWZvcmUgc3RhcnRpbmcgdGhlIGZ1enppbmcgY2FtcGFpZ24uIE5lZWQgdG8gY29uZmlybSB0aGF0IGBORVRfVURQX1RVTk5FTGAgaXMgZW5hYmxlZCBzbyBJJiMzOTttIGFjdHVhbGx5IHRlc3RpbmcgdGhlIHBhdGNoZWQgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkVUREVWU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTYwMj1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWctNjAzLVxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDQ6Y29uZmlnIE5FVERFVlNJTVxuZHJpdmVycy9uZXQvS2NvbmZpZy02MDUtXHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE5NTYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRfVURQX1RVTk5FTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz03ND1jb25maWcgV0lSRUdVQVJEXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy03Ni1cdGRlcGVuZHMgb24gTkVUIFx1MDAyNlx1MDAyNiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnOjc3Olx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5kcml2ZXJzL25ldC9LY29uZmlnLTc4LVx0c2VsZWN0IERTVF9DQUNIRVxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MTAzPWNvbmZpZyBPVlBOXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMDYtXHRzZWxlY3QgRFNUX0NBQ0hFXG5kcml2ZXJzL25ldC9LY29uZmlnOjEwNzpcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMDgtXHRzZWxlY3QgQ1JZUFRPXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yMzA9Y29uZmlnIFZYTEFOXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMzItXHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWc6MjMzOlx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzNC1cdHNlbGVjdCBHUk9fQ0VMTFNcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTI0NT1jb25maWcgR0VORVZFXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNDctXHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWc6MjQ4Olx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5kcml2ZXJzL25ldC9LY29uZmlnLTI0OS1cdHNlbGVjdCBHUk9fQ0VMTFNcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTI2MD1jb25maWcgQkFSRVVEUFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctMjYyLVx0ZGVwZW5kcyBvbiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnOjI2MzpcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNjQtXHRzZWxlY3QgR1JPX0NFTExTXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNzI9Y29uZmlnIEdUUFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctMjc0LVx0ZGVwZW5kcyBvbiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnOjI3NTpcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yODk9Y29uZmlnIFBGQ1Bcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTI5MS1cdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyOTI6XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbmRyaXZlcnMvbmV0L0tjb25maWctMjkzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MzAyPWNvbmZpZyBBTVRcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTMwNC1cdGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSVBfTVVMVElDQVNUXG5kcml2ZXJzL25ldC9LY29uZmlnOjMwNTpcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDYtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNTgxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIE5FVF9VRFBfVFVOTkVMIERlcGVuZGVuY3kqKgoKT2theSwgc28gYE5FVERFVlNJTWAgaXNuJiMzOTt0IGRpcmVjdGx5IGNob29zaW5nIGBORVRfVURQX1RVTk5FTGAsIHdoaWNoIGlzIGEgYml0IHB1enpsaW5nLiBCdXQsIGhhbmcgb24uLi4gYHVkcF90dW5uZWxfbmljLmNgICppcyogYmVpbmcgY29tcGlsZWQgd2hlbiBgTkVUX1VEUF9UVU5ORUxgIGlzIGVuYWJsZWQuIFRoYXQmIzM5O3MgdGhlIGNsdWUuIE5vdyBpdCBjbGlja3MhIGBORVRfVURQX1RVTk5FTGAgaXMgcHVsbGVkIGluIGluZGlyZWN0bHkgYnkgdGhpbmdzIGxpa2UgYFZYTEFOYCBhbmQgYEdFTkVWRWAuIFNvLCB0byBnZXQgYE5FVF9VRFBfVFVOTkVMYCBlbmFibGVkIGFuZCBhdmFpbGFibGUgd2hlbiB1c2luZyBgTkVUREVWU0lNYCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBvbmUgb2YgdGhvc2UgZW5jYXBzdWxhdGluZyBwcm90b2NvbHMgaXMgYWxzbyBzZWxlY3RlZC4gSSBuZWVkIHRvIGVuYWJsZSBib3RoIGBORVRERVZTSU1gIGFuZCBgVlhMQU5gIG9yIGBHRU5FVkVgLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBieSBsb29raW5nIGF0IHRoZSBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL0tjb25maWdgIGZpbGUsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHRoZXJlIGlzbiYjMzk7dCBzb21lIG90aGVyIGhpZGRlbiBkZXBlbmRlbmN5IEkmIzM5O20gbWlzc2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRERVZTSU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyOTY1CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgdGhlIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIEtjb25maWcgTGFuZHNjYXBlKioKCkhtbSwgSSB3YXMganVzdCBsb29raW5nIGZvciB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgYG5ldGRldnNpbWAgZHJpdmVyLCBhbmQgSSBleHBlY3RlZCB0byBmaW5kIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2AuIEJ1dCwgd2FpdCBhIG1pbnV0ZS4uLnRoYXQgcGF0aCBkb2VzbiYjMzk7dCBzZWVtIHRvIGV4aXN0LiBUaGF0JiMzOTtzIHVudXN1YWwuIEkga25vdyB0aGlzIGNvZGViYXNlIHByZXR0eSB3ZWxsLCBhbmQgaWYgaXQmIzM5O3Mgbm90IHdoZXJlIEkgYW50aWNpcGF0ZSwgaXQgdXN1YWxseSBtZWFucyBhIHJlLW9yZ2FuaXphdGlvbiBvciBwZXJoYXBzIGl0IGlzIGluY2x1ZGVkIGluIGEgcGFyZW50IGZvbGRlci4gTGV0JiMzOTtzIGJhY2t0cmFjayBhbmQgZG91YmxlLWNoZWNrIGBkcml2ZXJzL25ldC9LY29uZmlnYCBkaXJlY3RseS4gTXkgc3VzcGljaW9uIGlzIHRoYXQgYE5FVERFVlNJTWAgbWlnaHQgYmUgZGVmaW5lZCB0aGVyZSwgcGVyaGFwcyBhcyBhIHRvcC1sZXZlbCBmZWF0dXJlIG9yIGEgc3ViLWNvbmZpZ3VyYXRpb24gdW5kZXIgYSBicm9hZGVyIG5ldHdvcmtpbmcgdW1icmVsbGEuIE5lZWQgdG8gcXVpY2tseSBlbnN1cmUgdGhpcyBpcyB3aGVyZSBpdCByZXNpZGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUREVWU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9NjAyPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9oeXBlcnYvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZy02MDMtXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwNDpjb25maWcgTkVUREVWU0lNXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwNS1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCBuZXR3b3JraW5nIGRldmljZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzMwNQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDYwNCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjA0Olx0Y29uZmlnIE5FVERFVlNJTVxuIDYwNTpcdFx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXCYjMzQ7XG4gNjA2Olx0XHRkZXBlbmRzIG9uIERFQlVHX0ZTXG4gNjA3Olx0XHRkZXBlbmRzIG9uIElORVRcbiA2MDg6XHRcdGRlcGVuZHMgb24gUFNBTVBMRSB8fCBQU0FNUExFPW5cbiA2MDk6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfTU9DSyB8fCBQVFBfMTU4OF9DTE9DS19NT0NLPW5cbiA2MTA6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuIDYxMTpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuIDYxMjpcdFx0c2VsZWN0IE5FVF9TSEFQRVJcbiA2MTM6XHRcdGhlbHBcbiA2MTQ6XHRcdCAgVGhpcyBkcml2ZXIgaXMgYSBkZXZlbG9wZXIgdGVzdGluZyB0b29sIGFuZCBzb2Z0d2FyZSBtb2RlbCB0aGF0IGNhblxuIDYxNTpcdFx0ICBiZSB1c2VkIHRvIHRlc3QgdmFyaW91cyBjb250cm9sIHBhdGggbmV0d29ya2luZyBBUElzLCBlc3BlY2lhbGx5XG4gNjE2Olx0XHQgIEhXLW9mZmxvYWQgcmVsYXRlZC5cbiA2MTc6XHRcbiA2MTg6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDYxOTpcdFx0ICB3aWxsIGJlIGNhbGxlZCBuZXRkZXZzaW0uXG4gNjIwOlx0XG4gNjIxOlx0Y29uZmlnIE5FVF9GQUlMT1ZFUlxuIDYyMjpcdFx0dHJpc3RhdGUgXCYjMzQ7RmFpbG92ZXIgZHJpdmVyXCYjMzQ7XG4gNjIzOlx0XHRzZWxlY3QgRkFJTE9WRVJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM2MzkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRlYnVnZ2luZyBORVRERVZTSU0gQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyBgTkVUREVWU0lNYCBpc24mIzM5O3QgcGlja2luZyB1cCBgTkVUX1VEUF9UVU5ORUxgIGFzIGV4cGVjdGVkLiBUaGF0JiMzOTtzIGEgYml0IG9kZC4gSSBrbm93IGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuY2AgaXMgaW52b2x2ZWQsIGFuZCB0aGUgZG9jdW1lbnRhdGlvbiBpbmRpY2F0ZXMgaXQgY2FuIGJlIGNvbXBpbGVkIGNvbmRpdGlvbmFsbHksIG1lYW5pbmcgaXQgZGVwZW5kcyBvbiBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGJlaW5nIHNldC4gVGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyBjb25maXJtIHRoYXQgdGhlIGNvbXBpbGF0aW9uIG9mIHRoaXMgbW9kdWxlIGlzIGFjdHVhbGx5IGludGVuZGVkLiBUaGVyZWZvcmUgSSBzaG91bGQgZXhhbWluZSB0aGUgYGRyaXZlcnMvbmV0L25ldGRldnNpbS9NYWtlZmlsZWAgdG8gc2VlIHVuZGVyIHdoYXQgY29uZGl0aW9ucyB0aGUgYHVkcF90dW5uZWxzLmNgIGZpbGUgaXMgaW5jbHVkZWQgaW4gdGhlIGJ1aWxkLiBJJiMzOTtsbCBuZWVkIHRvIHJldmlldyBhbnkgY29uZGl0aW9uYWwgbG9naWMgb3IgZGVwZW5kZW5jaWVzIGRlZmluZWQgaW4gdGhhdCBNYWtlZmlsZSB0byBkZXRlcm1pbmUgd2h5IGBORVRfVURQX1RVTk5FTGAgaXNuJiMzOTt0IGJlaW5nIHNldCBjb3JyZWN0bHkgZHVyaW5nIHRoZSBgTkVUREVWU0lNYCBidWlsZCBwcm9jZXNzLiBJdCYjMzk7cyBwcm9iYWJseSBqdXN0IGEgc2ltcGxlIGNvbmZpZ3VyYXRpb24gaXNzdWUsIGJ1dCBJIG5lZWQgdG8gcGlucG9pbnQgd2hlcmUgdGhlIHByb2JsZW0gbGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dWRwX3R1bm5lbHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL01ha2VmaWxlPTU9bmV0ZGV2c2ltLW9ianMgOj0gXFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9NYWtlZmlsZTo2Olx0bmV0ZGV2Lm8gZGV2Lm8gZXRodG9vbC5vIGZpYi5vIGJ1cy5vIGhlYWx0aC5vIGh3c3RhdHMubyB1ZHBfdHVubmVscy5vIHRjLm9cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9NYWtlZmlsZS03LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDA0MwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDEyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIEJ1aWxkIENvbmZpZ3VyYXRpb24gQ29uZmxpY3QqKgoKT2theSwgc28gSSYjMzk7bSBub3RpY2luZyBzb21ldGhpbmcgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgd2l0aCB0aGUgYnVpbGQgcHJvY2Vzcy4gSXQgc2VlbXMgdGhhdCBgdWRwX3R1bm5lbHMub2AgaXMgKmFsd2F5cyogY29tcGlsZWQgd2hlbiBgTkVUREVWU0lNYCBpcyBlbmFibGVkLiBUaGF0JiMzOTtzIGZpbmUgaW4gaXRzZWxmLiBCdXQsIEkmIzM5O20gYWxzbyBzZWVpbmcgdGhhdCBgdWRwX3R1bm5lbF9uaWMuY2AsIHdoaWNoIGlzIGxvY2F0ZWQgaW4gYG5ldC9pcHY0L01ha2VmaWxlYCwgaGFzIGEgZGVwZW5kZW5jeSBvbiBgQ09ORklHX05FVF9VRFBfVFVOTkVMYC4gVGhhdCYjMzk7cyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLgoKTXkgY29uY2VybiBpcyB3aGF0IGhhcHBlbnMgaWYgYE5FVERFVlNJTWAgKmlzKiBlbmFibGVkLCBidXQgYENPTkZJR19ORVRfVURQX1RVTk5FTGAgaXMgZGlzYWJsZWQuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHJlY2lwZSBmb3IgYSBidWlsZC10aW1lIGZhaWx1cmUsIG9yIHdvcnNlLCBzb21lIHVuZXhwZWN0ZWQgcnVudGltZSBiZWhhdmlvci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gaXMgZGVzaWduZWQgdG8gcmVzcG9uZCB0byB0aGlzIHBhcnRpY3VsYXIgY29tYmluYXRpb24gb2YgY29uZmlndXJhdGlvbiBvcHRpb25zLgoKVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUgb2YgYGRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jYC4gSSYjMzk7bSBnb2luZyB0byBsb29rIHNwZWNpZmljYWxseSBmb3IgYCNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfVURQX1RVTk5FTClgIGRpcmVjdGl2ZXMuIFRoYXQgd2lsbCB0ZWxsIG1lIGltbWVkaWF0ZWx5IGlmIHRoZSBjb2RlIHdpdGhpbiBgdWRwX3R1bm5lbHMuY2AgaXMgY29uZGl0aW9uYWxseSBjb21waWxlZCBiYXNlZCBvbiB0aGUgcHJlc2VuY2Ugb2YgdGhhdCBjcnVjaWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaGlzIHdpbGwgZGlyZWN0bHkgaW5kaWNhdGUgd2hldGhlciB0aGUgYnVpbGQgcHJvY2VzcyB0YWtlcyB0aGlzIGNvbmZsaWN0IGludG8gYWNjb3VudCwgb3IgaWYgaXQgc2ltcGx5IHByb2R1Y2VzIGFuIGFydGlmYWN0IHRoYXQgaXMgbm90IGJ1aWxkYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfTkVUX1VEUF9UVU5ORUwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NTE2CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZvciBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIERhdGEgU3RydWN0dXJlcyoqCgpBbHJpZ2h0LCBzbyBJIG5lZWQgdG8gZmluZCB3aGVyZSB0aGUgYHVkcF90dW5uZWxfbmljX2luZm9gIHN0cnVjdHVyZSBpcyBkZWZpbmVkLiBHaXZlbiB0aGUgY29udGV4dCwgbXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGl0JiMzOTtzIGxpa2VseSBob3VzZWQgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgbmV0d29yayBzdGFjay4gVGhlIHR3byBtb3N0IHByb2JhYmxlIGxvY2F0aW9ucyBqdW1wIHRvIG1pbmQ6IGVpdGhlciB3aXRoaW4gdGhlIGBpbmNsdWRlL25ldC91ZHBfdHVubmVsLmhgIGZpbGUsIGFzIHRoZSBuYW1lIHN0cm9uZ2x5IHN1Z2dlc3RzIGEgY29ubmVjdGlvbiB0byBVRFAgdHVubmVsaW5nLCBvciBwZXJoYXBzIGluIGBpbmNsdWRlL2xpbnV4L25ldGRldmljZS5oYC4gVGhlIGxhdHRlciBpcyB0aGUgZ2VuZXJhbCBoZWFkZXIgZm9yIG5ldHdvcmsgZGV2aWNlIGRlZmluaXRpb25zLCBhbmQgaXQgd291bGRuJiMzOTt0IGJlIHN1cnByaXNpbmcgaWYgc29tZSBhc3NvY2lhdGVkIGluZm9ybWF0aW9uIHdlcmUga2VwdCB0aGVyZS4gSSYjMzk7bGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhvc2UgdHdvIGZpbGVzIOKAkyBpdCYjMzk7cyB0aGUgbW9zdCBlZmZpY2llbnQgd2F5IHRvIHBpbnBvaW50IHRoZSBleGFjdCBkZWZpbml0aW9uIGFuZCB1bmRlcnN0YW5kIGl0cyBmaWVsZHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VkcF90dW5uZWxfbmljX2luZm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L25ldGRldmljZS5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9NzY9c3RydWN0IHVkcF90dW5uZWxfaW5mbztcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6Nzc6c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm87XG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTc4LXN0cnVjdCB1ZHBfdHVubmVsX25pYztcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTE4MDQ9ZW51bSBuZXRkZXZfcmVnX3N0YXRlIHtcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTIwODktICpcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MjA5MDogKlx0QHVkcF90dW5uZWxfbmljX2luZm86XHRzdGF0aWMgc3RydWN0dXJlIGRlc2NyaWJpbmcgdGhlIFVEUCB0dW5uZWxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjA5MS0gKlx0XHRcdFx0b2ZmbG9hZCBjYXBhYmlsaXRpZXMgb2YgdGhlIGRldmljZVxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MjEzOT1zdHJ1Y3QgbmV0X2RldmljZSB7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yNTA0LSNlbmRpZlxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyNTA1Olx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm9cdCp1ZHBfdHVubmVsX25pY19pbmZvO1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yNTA2LVx0c3RydWN0IHVkcF90dW5uZWxfbmljXHQqdWRwX3R1bm5lbF9uaWM7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MDM3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBVbmV4cGVjdGVkIERhdGEgU3RydWN0dXJlIFVzYWdlKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSwgYW5kIHNvbWV0aGluZyYjMzk7cyBidWdnaW5nIG1lLiBJdCBzZWVtcyBsaWtlIGV2ZW4gd2hlbiB0aGUgYE5FVF9VRFBfVFVOTkVMYCBmZWF0dXJlIGlzIGRpc2FibGVkLCB0aGUgYHVkcF90dW5uZWxfbmljX2luZm9gIGZpZWxkIGlzIHN0aWxsIHByZXNlbnQgd2l0aGluIHRoZSBgc3RydWN0IG5ldF9kZXZpY2VgLiBUaGF0IHN0cmlrZXMgbWUgYXMgb2RkLiBJdCBzaG91bGQgYmUgY29uZGl0aW9uYWwsIHJpZ2h0PyBBIGZlYXR1cmUgZmxhZyB3b3VsZCB1c3VhbGx5IGNvbnRyb2wgc29tZXRoaW5nIGxpa2UgdGhhdC4KCkJ1dCBoYW5nIG9u4oCmIGlzIGB1ZHBfdHVubmVsX25pY19yZWdpc3RlcmAgYWN0dWFsbHkgYmVpbmcgY2FsbGVkIGZyb20gYHJlZ2lzdGVyX25ldGRldmljZWA/IFRoYXQgd291bGQgbWFrZSBzZW5zZSwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoYXQuIExldCYjMzk7cyBnbyB0byBgbmV0L2NvcmUvZGV2LmNgIGFuZCBzZWUgd2hhdCYjMzk7cyByZWFsbHkgaGFwcGVuaW5nIGR1cmluZyBkZXZpY2UgcmVnaXN0cmF0aW9uLiBJ4oCZbSB0aGlua2luZyB0aGVyZSBtaWdodCBiZSBzb21ldGhpbmcgaGVyZSB0aGF0IGlzIG5vdCByaWdodC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1ZHBfdHVubmVsX25pY19yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL2Rldi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUzMjIKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipEaWdnaW5nIGludG8gdGhhdCBgdWRwX3R1bm5lbF9uaWNfcmVnaXN0ZXJgIENhbGwqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHN0YWNrIGZvciBgdWRwX3R1bm5lbF9uaWNfcmVnaXN0ZXJgLiBJdCBzZWVtcyBmdW5kYW1lbnRhbCB0byB0aGUgbmV0d29ya2luZyBzdGFjaywgYnV0IEkgZG9uJiMzOTt0IHJlY2FsbCBvZmZoYW5kICpleGFjdGx5KiBob3cgaXQgZ2V0cyBpbnZva2VkLiBJcyBpdCB0aHJvdWdoIGEgc3BlY2lmaWMgZGV2aWNlIGRyaXZlciBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZT8gT3IgbWF5YmUgaXQmIzM5O3MgdHJpZ2dlcmVkIGR1cmluZyBhIG5ldGxpbmsgZXZlbnQ/IERvZXMgaXQgdGllIGludG8gdGhlIHR1bm5lbCBkZXZpY2UgY3JlYXRpb24gc29tZWhvdywgb3IgaXMgaXQgYSBtb3JlIGdlbmVyYWwgcmVnaXN0cmF0aW9uIG1lY2hhbmlzbSBmb3IgVURQLWJhc2VkIHR1bm5lbHMgd2l0aGluIHRoZSBrZXJuZWw/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgaGVyZSwgYmVjYXVzZSBrbm93aW5nICpob3cqIGl0JiMzOTtzIGNhbGxlZCBwcm92aWRlcyBjcml0aWNhbCBjb250ZXh0IGZvciBkZWJ1Z2dpbmcsIHBlcmZvcm1hbmNlIGFuYWx5c2lzLCBhbmQgZXZlbiBzZWN1cml0eSBpbXBsaWNhdGlvbnMuIEkgc3VzcGVjdCBpdCYjMzk7cyBsaWtlbHkgYSByZWxhdGl2ZWx5IGxvdy1sZXZlbCBjYWxsLCBwcm9iYWJseSBpbnZvbHZlZCBpbiBzZXR0aW5nIHVwIHRoZSBhY3R1YWwgVURQIHR1bm5lbCBkZXZpY2UuIEJ1dCBJJiMzOTtsbCBuZWVkIHRvIGZvbGxvdyB0aGUgdHJhaWwuIFRpbWUgdG8gYnJlYWsgb3V0IHRoZSBrZXJuZWwgc291cmNlIGFuZCBhIGRlYnVnZ2VyLiBMZXQmIzM5O3Mgc2VlIGlmIEkgY2FuIGZpbmQgdGhlIGVudHJ5IHBvaW50cyB0aGF0IGxlYWQgdG8gdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dWRwX3R1bm5lbF9uaWNfcmVnaXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz04MDA9c3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfcHV0KHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODA1LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4MDY6c3RhdGljIGludCB1ZHBfdHVubmVsX25pY19yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04MDcte1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9OTMyPXVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTk0NS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTQ2Olx0XHRlcnIgPSB1ZHBfdHVubmVsX25pY19yZWdpc3RlcihkZXYpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05NDctXHRcdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODI0CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBOZXRkZXZpY2UgTm90aWZpZXIgQ2FsbCoqCgpSaWdodCwgc28gdGhpcyBldmVudCBpcyBvcmlnaW5hdGluZyBmcm9tIGEgbmV0ZGV2aWNlIG5vdGlmaWVyLCBzcGVjaWZpY2FsbHkgYHVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudGAuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgcmVsYXRlZCB0byBVRFAgdHVubmVscyBhbmQgbmV0d29yayBkZXZpY2UgZXZlbnRzLiBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgY29kZSwgc28gbGV0JiMzOTtzIGp1bXAgcmlnaHQgaW50byBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgdWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50YC4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgZXZlbnQgaGFuZGxpbmcgbG9naWMgdGhlcmUg4oCTIHRoZSBjb2RlIHRoYXQgcmVhY3RzIHRvIG5ldGRldmljZSBsaWZlY3ljbGUgY2hhbmdlcyBpbiB0aGUgY29udGV4dCBvZiBVRFAgdHVubmVsaW5nLiBJdCYjMzk7cyBsaWtlbHkgd2UmIzM5O2xsIHNlZSByZWdpc3RyYXRpb24sIHVucmVnaXN0cmF0aW9uLCBhbmQgbWF5YmUgc29tZSBjb25maWd1cmF0aW9uIG9yIHJlc291cmNlIG1hbmFnZW1lbnQgcmVsYXRlZCB0byB0aGUgdHVubmVsIGludGVyZmFjZXMsIGFsbCB0cmlnZ2VyZWQgYnkgdGhpcyBub3RpZmllci4gSSYjMzk7bSBrZWVuIHRvIHNlZSBob3cgdGhleSYjMzk7cmUgaGFuZGxpbmcgdGhpbmdzIGxpa2UgZGV2aWNlIHVwL2Rvd24gZXZlbnRzLCBhZGRyZXNzIGNoYW5nZXMsIG9yIHBlcmhhcHMgZXZlbiBsaW5rIHN0YXRlIGNoYW5nZXMgZm9yIHRoZSB1bmRlcmx5aW5nIHBoeXNpY2FsIGludGVyZmFjZXMuIEl0JiMzOTtzIGxpa2VseSB0aGF0JiMzOTtzIHRoZSBmb2NhbCBwb2ludCwgdGhlIHBvaW50IG9mIGVudHJ5LiBUaW1lIHRvIGRpdmUgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz05MzE9c3RhdGljIGludFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5MzI6dWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05MzMtXHRcdFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnB0cilcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTk4Mj1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHVkcF90dW5uZWxfbmljX25vdGlmaWVyX2Jsb2NrIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjk4MzpcdC5ub3RpZmllcl9jYWxsID0gdWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50LFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05ODQtfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUwODkKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1ZHBfdHVubmVsX25pY193b3JrcXVldWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9Mzk9c3RydWN0IHVkcF90dW5uZWxfbmljIHtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU5LSAqL1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2MDpzdGF0aWMgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjEtXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zMDY9dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMTAtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMxMTpcdGlmIChxdWV1ZV93b3JrKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSwgXHUwMDI2dXRuLVx1MDAzZXdvcmspKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMTItXHRcdHJlZmNvdW50X2luYyhcdTAwMjZ1dG4tXHUwMDNlcmVmY250KTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTk4Nj1zdGF0aWMgaW50IF9faW5pdCB1ZHBfdHVubmVsX25pY19pbml0X21vZHVsZSh2b2lkKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTg5LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5OTA6XHR1ZHBfdHVubmVsX25pY193b3JrcXVldWUgPSBhbGxvY19vcmRlcmVkX3dvcmtxdWV1ZShcJiMzNDt1ZHBfdHVubmVsX25pY1wmIzM0OywgMCk7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjk5MTpcdGlmICghdWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05OTItXHRcdHJldHVybiAtRU5PTUVNO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTAwNy1cdHJ0bmxfdW5sb2NrKCk7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEwMDg6XHRkZXN0cm95X3dvcmtxdWV1ZSh1ZHBfdHVubmVsX25pY193b3JrcXVldWUpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDA5LVx0cmV0dXJuIGVycjtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTEwMTM9c3RhdGljIHZvaWQgX19leGl0IHVkcF90dW5uZWxfbmljX2NsZWFudXBfbW9kdWxlKHZvaWQpXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDIwLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxMDIxOlx0ZGVzdHJveV93b3JrcXVldWUodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTAyMi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2OTg1CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNTQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBgdWRwX3R1bm5lbF9uaWNgIE1vZHVsZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGB1ZHBfdHVubmVsX25pY2Agc3R1ZmYsIHJpZ2h0PyBGcm9tIHdoYXQgSSBjYW4gZ2F0aGVyLCBgdWRwX3R1bm5lbF9uaWNgIGlzIGEgbW9kdWxlIOKAkyBgdWRwX3R1bm5lbF9uaWMua29gIG9yIGJ1aWx0LWluIHRvIHRoZSBrZXJuZWwg4oCTIGFuZCB0aGUgY29yZSBvZiBpdCBhbGwgaXMgYSBuZXRkZXZpY2Ugbm90aWZpZXIgcmVnaXN0cmF0aW9uLiBUaGUga2V5IHRoaW5nIHNlZW1zIHRvIGJlIHRoYXQgd2hlbiBhIG5ldGRldmljZSB3aXRoIGEgYHVkcF90dW5uZWxfbmljX2luZm9gIHN0cnVjdHVyZSBpcyByZWdpc3RlcmVkLCB0aGF0JiMzOTtzIHdoZW4gYSBgdWRwX3R1bm5lbF9uaWNgIGluc3RhbmNlIGdldHMgYWxsb2NhdGVkIGFuZCBsaW5rZWQgdG8gdGhhdCBuZXRkZXZpY2UuCgpUaGlzIHBvaW50cyBtZSBpbW1lZGlhdGVseSB0b3dhcmRzIGBDT05GSUdfTkVUX1VEUF9UVU5ORUxgLiBJdCYjMzk7cyBlc3NlbnRpYWwgdG8gaGF2ZSB0aGF0IGVuYWJsZWQsIG9idmlvdXNseS4gTm93LCBob3cgZG8gd2UgZ2V0IGBORVRfVURQX1RVTk5FTGAgZW5hYmxlZD8gV2VsbCwgYSBjb3VwbGUgb2YgbGlrZWx5IHBhdGhzIGNvbWUgdG8gbWluZDogZW5hYmxpbmcgZWl0aGVyIGBDT05GSUdfVlhMQU5gIG9yIGBDT05GSUdfR0VORVZFYCBzaG91bGQgcHVsbCBpdCBpbiBhdXRvbWF0aWNhbGx5LiBBbmQsIG9mIGNvdXJzZSwgSSBjYW4gdXNlIGBDT05GSUdfTkVUREVWU0lNYCB0byBnZW5lcmF0ZSB0aG9zZSBuZXRkZXZpY2VzIHRoYXQgYXJlIGRlc2lnbmVkIHRvIGhhdmUgYHVkcF90dW5uZWxfbmljX2luZm9gLgoKV2FpdCBhIG1pbnV0ZSwgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQuIFllcywgYE5FVF9VRFBfVFVOTkVMYCBpcyAqc2VsZWN0ZWQqIGJ5IHRoaW5ncyBsaWtlIGBWWExBTmAsIGBHRU5FVkVgLCBgQkFSRVVEUGAsIGFuZCB0aGUgbGlrZS4gU28sIGl0JiMzOTtzIG5vdCBhIGRpcmVjdCBkZXBlbmRlbmN5IGluIGFsbCBjYXNlcywgYnV0IGl0JiMzOTtzICpwdWxsZWQgaW4qIGJ5IHRob3NlIGNvbmZpZ3VyYXRpb25zLiBPaywgbGV0IG1lIHJlLXZlcmlmeSB0aGF0IHRoZSBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmNgIG1vZHVsZSBkZXBlbmRzIG9uIGBORVRfVURQX1RVTk5FTGAuIEFoYSwgbm9wZSEgSXQganVzdCBzZXRzIGBkZXYtJmd0O3VkcF90dW5uZWxfbmljX2luZm9gLiBJZiBgTkVUX1VEUF9UVU5ORUxgIGlzbiYjMzk7dCBlbmFibGVkLCB0aGF0IHN0cnVjdHVyZSBpcyBqdXN0IGEgcG9pbnRlciwgYW5kIGl0JiMzOTtzIG5ldmVyIHVzZWQuIFJpZ2h0LCBiZWNhdXNlIHRoZSBjb2RlIGluIGB1ZHBfdHVubmVsX25pYy5jYCBpc24mIzM5O3QgZXZlbiBjb21waWxlZC4gU28gdG8gYWN0dWFsbHkgKnVzZSogYHVkcF90dW5uZWxfbmljLmNgIHdlICptdXN0KiBoYXZlIGBDT05GSUdfTkVUX1VEUF9UVU5ORUw9eWAgKG9yIGBtYCkuIEFuZCwgYXMgSSBzdXNwZWN0ZWQsIHdlIGFsc28gbmVlZCBhIGRyaXZlciB0aGF0IGtub3dzIHRvIHNldCBgdWRwX3R1bm5lbF9uaWNfaW5mb2AuIFRoYXQmIzM5O3Mgd2hlcmUgYENPTkZJR19ORVRERVZTSU1gIHJlYWxseSBzaGluZXMuIFBlcmZlY3QuCgpOb3csIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O2xsIHF1aWNrbHkgdmVyaWZ5IHRoZSBzdGF0dXMgb2YgYENPTkZJR19ORVRERVZTSU1gIGFuZCBgQ09ORklHX1ZYTEFOYC4gT2theSwgYm90aCBvZiB0aGVtIGFyZSB0cmlzdGF0ZSBjb25maWd1cmF0aW9ucy4gSSBzaG91bGQgbWFrZSBhIG5vdGUgdG8gaW5jbHVkZSBgTkVUREVWU0lNYCBhbmQgYFZYTEFOYCBpbiBgRW5hYmxlQ29uZmlnc2AuCgpGaW5hbGx5LCBJIHNob3VsZCBmb2N1cyBvbiB0aGUga2V5IGZ1bmN0aW9ucyBoZXJlLiBMZXQmIzM5O3Mgc2VlLi4uSSYjMzk7bGwgd2FudCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvOgoKKiAgIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYAoqICAgYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgCiogICBgdWRwX3R1bm5lbF9uaWNfcmVnaXN0ZXJgCiogICBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgCiogICBgdWRwX3R1bm5lbF9uaWNfZmx1c2hgCiogICBgdWRwX3R1bm5lbF9uaWNfcmVwbGF5YAoqICAgYHVkcF90dW5uZWxfbmljX3B1dGAKKiAgIGB1ZHBfdHVubmVsX25pY19hZGRfbmV3YAoqICAgYHVkcF90dW5uZWxfbmljX3RyeV9leGlzdGluZ2AKKiAgIGBfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jYAoKSSBzaG91bGQgc3RhcnQgYnkgZXhhbWluaW5nIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz03MzU9c3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfcHV0KHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzM2LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3Mzc6c3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTczOC17XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz03NTc9dWRwX3R1bm5lbF9uaWNfYWxsb2MoY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8sXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03NjYtXHR1dG4tXHUwMDNlbl90YWJsZXMgPSBuX3RhYmxlcztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzY3Olx0SU5JVF9XT1JLKFx1MDAyNnV0bi1cdTAwM2V3b3JrLCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzY4LVx0bXV0ZXhfaW5pdChcdTAwMjZ1dG4tXHUwMDNlbG9jayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NTgxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNjg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVURQIFR1bm5lbCBOSUMgU3luY2hyb25pemF0aW9uIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgc2NhbiBvZiB0aGUgcGF0Y2ggcmV2ZWFscyBpdCB0b3VjaGVzIHNldmVyYWwga2V5IGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZSBVRFAgdHVubmVsIE5JQyBpbXBsZW1lbnRhdGlvbjogYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtgLCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgLCBgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcmAsIGFuZCBgdWRwX3R1bm5lbF9uaWNfcHV0YCwgYW1vbmcgb3RoZXJzLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZXNlIGZvciBub3c6IGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYCwgYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgLCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgLCBhbmQgYHVkcF90dW5uZWxfbmljX3B1dGAuCgpUaGUgcHJpbWFyeSBjb25jZXJuLCBhcyBJIHVuZGVyc3RhbmQgaXQsIHNlZW1zIHRvIGJlIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGJldHdlZW4gYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgIGFuZCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AuIFRvIHZlcmlmeSB0aGlzLCBJJiMzOTttIHRyYWNpbmcgdGhlIGNhbGwgcGF0aHMuIEZpcnN0LCBJIGNvbmZpcm1lZCB0aGF0IGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYCAqaXMqIHJlYWNoYWJsZSDigJMgaXQmIzM5O3MgdHJpZ2dlcmVkIGR1cmluZyBuZXRkZXZpY2UgdW5yZWdpc3RyYXRpb24gdGhyb3VnaCBgdWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50YCwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZS4gTmV4dCwgYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jYCBpcyBjYWxsZWQgZnJvbSBgX191ZHBfdHVubmVsX25pY19hZGRfcG9ydGAgYW5kIGBfX3VkcF90dW5uZWxfbmljX2RlbF9wb3J0YC4gVGhvc2UgYXJlLCBpbiB0dXJuLCBjYWxsZWQgYnkgYHVkcF90dW5uZWxfbmljX2FkZF9wb3J0YCBhbmQgYHVkcF90dW5uZWxfbmljX2RlbF9wb3J0YCwgd2hpY2ggZmluYWxseSBnZXQgY2FsbGVkIGZyb20gYHVkcF90dW5uZWxfYWRkX3J4X3BvcnRgIGFuZCBgdWRwX3R1bm5lbF9kcm9wX3J4X3BvcnRgLiBTbywgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgdGhlIGFkZGl0aW9uIGFuZCByZW1vdmFsIG9mIFVEUCB0dW5uZWwgcG9ydHMsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRlY2hub2xvZ2llcyBsaWtlIFZYTEFOIG9yIEdFTkVWRS4KCk5vdywgbGV0JiMzOTtzIG1hcCB0aGUgdHlwaWNhbCBzY2VuYXJpbywgdG8gZmluZCB0aGUgcmFjZSBjb25kaXRpb24sIHdoaWNoIHNlZW1zIHRvIGJlIHRoZSBjYXVzZS4gTXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgZmxvdyBpcyBhcyBmb2xsb3dzOiB3ZSBzdGFydCB3aXRoIGEgbmV0ZGV2c2ltIGRldmljZSwgd2hpY2gsIG9mIGNvdXJzZSwgaGFzIGEgYHVkcF90dW5uZWxfbmljX2luZm9gIGFzc29jaWF0ZWQgd2l0aCBpdC4gTmV4dCwgd2UgY3JlYXRlIGEgVlhMQU4gZGV2aWNlIChvciBHRU5FVkUpLiBUaGF0IGNyZWF0aW9uIGFkZHMgYSBVRFAgdHVubmVsIHBvcnQuIFRoaXMgYWRkaXRpb24gY2FsbHMgYHVkcF90dW5uZWxfYWRkX3J4X3BvcnRgLCB0cmlnZ2VyaW5nIGB1ZHBfdHVubmVsX25pY19hZGRfcG9ydGAsIHdoaWNoIHRoZW4gcXVldWVzIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYC4gVGhlbiwgaWYgdGhlIG5ldGRldnNpbSBkZXZpY2UgaXMgdW5yZWdpc3RlcmVkLCBgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcmAgZ2V0cyBjYWxsZWQuIEJvb20sIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJhY2UgaXMsIGJldHdlZW4gdGhlIHVucmVnaXN0cmF0aW9uIGFuZCB0aGUgd29yayBxdWV1ZS4gVGhpcyBwYXRjaCBsaWtlbHkgYWRkcmVzc2VzIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMgYXJpc2luZyBmcm9tIHRoaXMgc2VxdWVuY2UuCgpUaGlzIGlzIGhpZ2hseSBmdXp6YWJsZSBhbmQgZnVuY3Rpb25hbCwgZ2l2ZW4gdGhlIG5hdHVyZSBvZiBpdHMgZGVwZW5kZW5jaWVzLgoKQWxzbywgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9ucy4gVGhlIGtleSBjb25maWd1cmF0aW9ucyBpbnZvbHZlZCBhcmUgYE5FVERFVlNJTWAsIGBWWExBTmAsIGBHRU5FVkVgLCBhbmQgYE5FVF9VRFBfVFVOTkVMYCAod2hpY2ggaXMgc2VsZWN0ZWQgYnkgVlhMQU4pLiBOb3csIGJlZm9yZSBJIG1vdmUgb24sIEkgd2FudCB0byBjb25maXJtIGlmIGBORVRfVURQX1RVTk5FTGAgY2FuIGJlIGVuYWJsZWQgZGlyZWN0bHkuIExvb2tzIGxpa2UgaXQgaXMgYSB0cmlzdGF0ZSBjb25maWcsIGJ1dCB0aGVyZSBpc24mIzM5O3QgYSBkaXJlY3QgcHJvbXB0IGluIGVpdGhlciBgbmV0L2lwdjQvTWFrZWZpbGVgIG9yIGBuZXQvaXB2NC9LY29uZmlnYC4gTGV0IG1lIHNlYXJjaCBgbmV0L2lwdjQvS2NvbmZpZ2AgZm9yIHRoZSBjb25maWcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfVURQX1RVTk5FTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz0zMDQ9Y29uZmlnIE5FVF9JUFZUSVxuLS1cbm5ldC9pcHY0L0tjb25maWctMzE1LVxubmV0L2lwdjQvS2NvbmZpZzozMTY6Y29uZmlnIE5FVF9VRFBfVFVOTkVMXG5uZXQvaXB2NC9LY29uZmlnLTMxNy1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMDcwCgkJCQkJCQlvdXRwdXQ6IDE3NAoJCQkJCQkJdGhvdWdodHM6IDE3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFVEUCBUdW5uZWwgTklDIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhpcyBjb25maWd1cmF0aW9uIGlzIGhpZGRlbiwgd2hpY2ggbWVhbnMgYW5vdGhlciBjb21wb25lbnQgaXMgcmVzcG9uc2libGUgZm9yIHNlbGVjdGluZyBpdC4gTXkgaW5pdGlhbCB0aG91Z2h0cyBhcmUgbGVhbmluZyB0b3dhcmRzIGBWWExBTmAgb3IgYEdFTkVWRWAgYXMgbGlrZWx5IGNhbmRpZGF0ZXMuIFRob3NlIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHMuCgpOb3csIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGNvZGUgY2hhbmdlcy4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYHVkcF90dW5uZWxfbmljX3B1dGAgaXMgaW5kZWVkIGEgbmV3IGZ1bmN0aW9uLiBZZXAsIHRoZSBwYXRjaCBpbmNsdWRlcyBpdC4gR29vZC4KCk5leHQsIEkmIzM5O2xsIGNvbmZpcm0gdGhhdCBgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcmAgaGFzIGJlZW4gbW9kaWZpZWQuIEFscmlnaHQsIGl0JiMzOTtzIGJlZW4gdXBkYXRlZCB0byB1c2UgdGhlIG5ldyBgdWRwX3R1bm5lbF9uaWNfcHV0YC4gVGhhdCBtYWtlcyBzZW5zZS4KCk5leHQsIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYC4gTG9va3MgbGlrZSB0aGF0IGhhcyBiZWVuIHVwZGF0ZWQgdG8gdXNlIGB1ZHBfdHVubmVsX25pY19wdXRgIGFzIHdlbGwuCgpGaW5hbGx5LCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgLiBZZXMsIHRoYXQgZnVuY3Rpb24gaGFzIGJlZW4gdXBkYXRlZCB0byB1c2UgYHJlZmNvdW50X2luY2AuCgpBbHJpZ2h0LCBJIGhhdmUgdGhlIHJlc3VsdHMgSSBuZWVkIG5vdy4gTGV0JiMzOTtzIHNldCB0aG9zZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUREVWU0lNJiMzNDssCiAgICAmIzM0O1ZYTEFOJiMzNDssCiAgICAmIzM0O0dFTkVWRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmsmIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlciYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVsX25pY19wdXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbi91c2UtYWZ0ZXItZnJlZSBpbiB0aGUgVURQIHR1bm5lbCBOSUMgb2ZmbG9hZCBpbmZyYXN0cnVjdHVyZSBieSByZXBsYWNpbmcgYSBzaW1wbGUgcGVuZGluZyBmbGFnIHdpdGggYSBwcm9wZXIgcmVmZXJlbmNlIGNvdW50IChyZWZjb3VudF90KSBmb3IgdGhlIHdvcmtxdWV1ZS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNyZWF0aW5nL2Rlc3Ryb3lpbmcgVURQIHR1bm5lbHMgKGxpa2UgVlhMQU4gb3IgR0VORVZFKSBvbiBkZXZpY2VzIHN1cHBvcnRpbmcgVURQIHR1bm5lbCBvZmZsb2FkIChsaWtlIG5ldGRldnNpbSkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7LAogICAgJiMzNDtWWExBTiYjMzQ7LAogICAgJiMzNDtHRU5FVkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrJiMzNDssCiAgICAmIzM0O3VkcF90dW5uZWxfbmljX3VucmVnaXN0ZXImIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMmIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfcHV0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24vdXNlLWFmdGVyLWZyZWUgaW4gdGhlIFVEUCB0dW5uZWwgTklDIG9mZmxvYWQgaW5mcmFzdHJ1Y3R1cmUgYnkgcmVwbGFjaW5nIGEgc2ltcGxlIHBlbmRpbmcgZmxhZyB3aXRoIGEgcHJvcGVyIHJlZmVyZW5jZSBjb3VudCAocmVmY291bnRfdCkgZm9yIHRoZSB3b3JrcXVldWUuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBjcmVhdGluZy9kZXN0cm95aW5nIFVEUCB0dW5uZWxzIChsaWtlIFZYTEFOIG9yIEdFTkVWRSkgb24gZGV2aWNlcyBzdXBwb3J0aW5nIFVEUCB0dW5uZWwgb2ZmbG9hZCAobGlrZSBuZXRkZXZzaW0pLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6MzY6MzUuMjYwMzYwMDM3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3NTI1MzIxNjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVERFVlNJTVwiLFxuICAgIFwiVlhMQU5cIixcbiAgICBcIkdFTkVWRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtcIixcbiAgICBcInVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJcIixcbiAgICBcInVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jXCIsXG4gICAgXCJ1ZHBfdHVubmVsX25pY19wdXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uL3VzZS1hZnRlci1mcmVlIGluIHRoZSBVRFAgdHVubmVsIE5JQyBvZmZsb2FkIGluZnJhc3RydWN0dXJlIGJ5IHJlcGxhY2luZyBhIHNpbXBsZSBwZW5kaW5nIGZsYWcgd2l0aCBhIHByb3BlciByZWZlcmVuY2UgY291bnQgKHJlZmNvdW50X3QpIGZvciB0aGUgd29ya3F1ZXVlLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgY3JlYXRpbmcvZGVzdHJveWluZyBVRFAgdHVubmVscyAobGlrZSBWWExBTiBvciBHRU5FVkUpIG9uIGRldmljZXMgc3VwcG9ydGluZyBVRFAgdHVubmVsIG9mZmxvYWQgKGxpa2UgbmV0ZGV2c2ltKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6MzY6MzUuMjYwMzY3NjU3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDk1NjM5NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3MTI4NmExYTI5NzFmMTk0OWM5YmZlZjJkN2VjYTNjZjAxZGZiNmMzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVuIDI0IDE3OjM2OjMzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMgYi9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXFxuaW5kZXggOTk0NGVkOTIzZGRmZDEuLjg4NGI1ZDkzYjdiMzlmIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcXG4rKysgYi9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXFxuQEAgLTMwLDkgKzMwLDggQEAgc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5IHtcXG4gICogQHdvcms6XFx0YXN5bmMgd29yayBmb3IgdGFsa2luZyB0byBoYXJkd2FyZSBmcm9tIHByb2Nlc3MgY29udGV4dFxcbiAgKiBAZGV2OlxcdG5ldGRldiBwb2ludGVyXFxuICAqIEBsb2NrOlxcdHByb3RlY3RzIGFsbCBmaWVsZHNcXG4tICogQG5lZWRfc3luYzpcXHRhdCBsZWFzdCBvbmUgcG9ydCBzdGFydCBjaGFuZ2VkXFxuLSAqIEBuZWVkX3JlcGxheTogc3BhY2Ugd2FzIGZyZWVkLCB3ZSBuZWVkIGEgcmVwbGF5IG9mIGFsbCBwb3J0c1xcbi0gKiBAd29ya19wZW5kaW5nOiBAd29yayBpcyBjdXJyZW50bHkgc2NoZWR1bGVkXFxuKyAqIEBmbGFnczpcXHRzeW5jLCByZXBsYXkgZmxhZ3NcXG4rICogQHJlZmNudDpcXHRyZWZlcmVuY2UgY291bnRcXG4gICogQG5fdGFibGVzOlxcdG51bWJlciBvZiB0YWJsZXMgdW5kZXIgQGVudHJpZXNcXG4gICogQG1pc3NlZDpcXHRiaXRtYXAgb2YgdGFibGVzIHdoaWNoIG92ZXJmbG93blxcbiAgKiBAZW50cmllczpcXHR0YWJsZSBvZiB0YWJsZXMgb2YgcG9ydHMgY3VycmVudGx5IG9mZmxvYWRlZFxcbkBAIC00NCw5ICs0MywxMSBAQCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMge1xcbiBcXG4gXFx0c3RydWN0IG11dGV4IGxvY2s7XFxuIFxcbi1cXHR1OCBuZWVkX3N5bmM6MTtcXG4tXFx0dTggbmVlZF9yZXBsYXk6MTtcXG4tXFx0dTggd29ya19wZW5kaW5nOjE7XFxuK1xcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuKyNkZWZpbmUgVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DXFx0MFxcbisjZGVmaW5lIFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZXFx0MVxcbitcXG4rXFx0cmVmY291bnRfdCByZWZjbnQ7XFxuIFxcbiBcXHR1bnNpZ25lZCBpbnQgbl90YWJsZXM7XFxuIFxcdHVuc2lnbmVkIGxvbmcgbWlzc2VkO1xcbkBAIC0xMTYsNyArMTE3LDcgQEAgdWRwX3R1bm5lbF9uaWNfZW50cnlfcXVldWUoc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXFxuIFxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBmbGFnKVxcbiB7XFxuIFxcdGVudHJ5LVxcdTAwM2VmbGFncyB8PSBmbGFnO1xcbi1cXHR1dG4tXFx1MDAzZW5lZWRfc3luYyA9IDE7XFxuK1xcdHNldF9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DLCBcXHUwMDI2dXRuLVxcdTAwM2VmbGFncyk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkXFxuQEAgLTI4Myw3ICsyODQsNyBAQCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV90YWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBzdGF0aWMgdm9pZFxcbiBfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbiB7XFxuLVxcdGlmICghdXRuLVxcdTAwM2VuZWVkX3N5bmMpXFxuK1xcdGlmICghdGVzdF9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DLCBcXHUwMDI2dXRuLVxcdTAwM2VmbGFncykpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdGlmIChkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8tXFx1MDAzZXN5bmNfdGFibGUpXFxuQEAgLTI5MSwyMSArMjkyLDI0IEBAIF9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxuIFxcdGVsc2VcXG4gXFx0XFx0dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfYnlfcG9ydChkZXYsIHV0bik7XFxuIFxcbi1cXHR1dG4tXFx1MDAzZW5lZWRfc3luYyA9IDA7XFxuK1xcdGNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFxcdTAwMjZ1dG4tXFx1MDAzZWZsYWdzKTtcXG4gXFx0LyogQ2FuJ3QgcmVwbGF5IGRpcmVjdGx5IGhlcmUsIGluIGNhc2Ugd2UgY29tZSBmcm9tIHRoZSB0dW5uZWwgZHJpdmVyJ3NcXG4gXFx0ICogbm90aWZpY2F0aW9uIC0gdHJ5aW5nIHRvIHJlcGxheSBtYXkgZGVhZGxvY2sgaW5zaWRlIHR1bm5lbCBkcml2ZXIuXFxuIFxcdCAqL1xcbi1cXHR1dG4tXFx1MDAzZW5lZWRfcmVwbGF5ID0gdWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShkZXYsIHV0bik7XFxuK1xcdGlmICh1ZHBfdHVubmVsX25pY19zaG91bGRfcmVwbGF5KGRldiwgdXRuKSlcXG4rXFx0XFx0c2V0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgXFx1MDAyNnV0bi1cXHUwMDNlZmxhZ3MpO1xcbitcXHRlbHNlXFxuK1xcdFxcdGNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgXFx1MDAyNnV0bi1cXHUwMDNlZmxhZ3MpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZFxcbiB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG4ge1xcbi1cXHRpZiAoIXV0bi1cXHUwMDNlbmVlZF9zeW5jKVxcbitcXHRpZiAoIXRlc3RfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgXFx1MDAyNnV0bi1cXHUwMDNlZmxhZ3MpKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbi1cXHRxdWV1ZV93b3JrKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSwgXFx1MDAyNnV0bi1cXHUwMDNld29yayk7XFxuLVxcdHV0bi1cXHUwMDNld29ya19wZW5kaW5nID0gMTtcXG4rXFx0aWYgKHF1ZXVlX3dvcmsodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlLCBcXHUwMDI2dXRuLVxcdTAwM2V3b3JrKSlcXG4rXFx0XFx0cmVmY291bnRfaW5jKFxcdTAwMjZ1dG4tXFx1MDAzZXJlZmNudCk7XFxuIH1cXG4gXFxuIHN0YXRpYyBib29sXFxuQEAgLTM0OCw3ICszNTIsNyBAQCB1ZHBfdHVubmVsX25pY19oYXNfY29sbGlzaW9uKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbiBcXHRcXHRcXHRpZiAoIXVkcF90dW5uZWxfbmljX2VudHJ5X2lzX2ZyZWUoZW50cnkpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdFxcdCAgICBlbnRyeS1cXHUwMDNlcG9ydCA9PSB0aS1cXHUwMDNlcG9ydCBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHRcXHQgICAgZW50cnktXFx1MDAzZXR5cGUgIT0gdGktXFx1MDAzZXR5cGUpIHtcXG4tXFx0XFx0XFx0XFx0X19zZXRfYml0KGksIFxcdTAwMjZ1dG4tXFx1MDAzZW1pc3NlZCk7XFxuK1xcdFxcdFxcdFxcdHNldF9iaXQoaSwgXFx1MDAyNnV0bi1cXHUwMDNlbWlzc2VkKTtcXG4gXFx0XFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbkBAIC00ODMsNyArNDg3LDcgQEAgdWRwX3R1bm5lbF9uaWNfYWRkX25ldyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcXG4gXFx0XFx0ICogYXJlIG5vIGRldmljZXMgY3VycmVudGx5IHdoaWNoIGhhdmUgbXVsdGlwbGUgdGFibGVzIGFjY2VwdGluZ1xcbiBcXHRcXHQgKiB0aGUgc2FtZSB0dW5uZWwgdHlwZSwgYW5kIGZhbHNlIHBvc2l0aXZlcyBhcmUgb2theS5cXG4gXFx0XFx0ICovXFxuLVxcdFxcdF9fc2V0X2JpdChpLCBcXHUwMDI2dXRuLVxcdTAwM2VtaXNzZWQpO1xcbitcXHRcXHRzZXRfYml0KGksIFxcdTAwMjZ1dG4tXFx1MDAzZW1pc3NlZCk7XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiBmYWxzZTtcXG5AQCAtNTUyLDcgKzU1Niw3IEBAIHN0YXRpYyB2b2lkIF9fdWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZ1dG4tXFx1MDAzZWxvY2spO1xcbiBcXG4tXFx0dXRuLVxcdTAwM2VuZWVkX3N5bmMgPSBmYWxzZTtcXG4rXFx0Y2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgXFx1MDAyNnV0bi1cXHUwMDNlZmxhZ3MpO1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgdXRuLVxcdTAwM2VuX3RhYmxlczsgaSsrKVxcbiBcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgaW5mby1cXHUwMDNldGFibGVzW2ldLm5fZW50cmllczsgaisrKSB7XFxuIFxcdFxcdFxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnk7XFxuQEAgLTY5Niw4ICs3MDAsOCBAQCB1ZHBfdHVubmVsX25pY19mbHVzaChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHV0bi1cXHUwMDNlbl90YWJsZXM7IGkrKylcXG4gXFx0XFx0bWVtc2V0KHV0bi1cXHUwMDNlZW50cmllc1tpXSwgMCwgYXJyYXlfc2l6ZShpbmZvLVxcdTAwM2V0YWJsZXNbaV0ubl9lbnRyaWVzLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBzaXplb2YoKip1dG4tXFx1MDAzZWVudHJpZXMpKSk7XFxuLVxcdFdBUk5fT04odXRuLVxcdTAwM2VuZWVkX3N5bmMpO1xcbi1cXHR1dG4tXFx1MDAzZW5lZWRfcmVwbGF5ID0gMDtcXG4rXFx0V0FSTl9PTih0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFxcdTAwMjZ1dG4tXFx1MDAzZWZsYWdzKSk7XFxuK1xcdGNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgXFx1MDAyNnV0bi1cXHUwMDNlZmxhZ3MpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZFxcbkBAIC03MTMsOCArNzE3LDggQEAgdWRwX3R1bm5lbF9uaWNfcmVwbGF5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgdXRuLVxcdTAwM2VuX3RhYmxlczsgaSsrKVxcbiBcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgaW5mby1cXHUwMDNldGFibGVzW2ldLm5fZW50cmllczsgaisrKVxcbiBcXHRcXHRcXHR1ZHBfdHVubmVsX25pY19lbnRyeV9mcmVlemVfdXNlZChcXHUwMDI2dXRuLVxcdTAwM2VlbnRyaWVzW2ldW2pdKTtcXG4tXFx0dXRuLVxcdTAwM2VtaXNzZWQgPSAwO1xcbi1cXHR1dG4tXFx1MDAzZW5lZWRfcmVwbGF5ID0gMDtcXG4rXFx0Yml0bWFwX3plcm8oXFx1MDAyNnV0bi1cXHUwMDNlbWlzc2VkLCBVRFBfVFVOTkVMX05JQ19NQVhfVEFCTEVTKTtcXG4rXFx0Y2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCBcXHUwMDI2dXRuLVxcdTAwM2VmbGFncyk7XFxuIFxcbiBcXHRpZiAoIWluZm8tXFx1MDAzZXNoYXJlZCkge1xcbiBcXHRcXHR1ZHBfdHVubmVsX2dldF9yeF9pbmZvKGRldik7XFxuQEAgLTcyOCw2ICs3MzIsOCBAQCB1ZHBfdHVubmVsX25pY19yZXBsYXkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxuIFxcdFxcdFxcdHVkcF90dW5uZWxfbmljX2VudHJ5X3VuZnJlZXplKFxcdTAwMjZ1dG4tXFx1MDAzZWVudHJpZXNbaV1bal0pO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19wdXQoc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pO1xcbitcXG4gc3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIHtcXG4gXFx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4gPVxcbkBAIC03MzYsMTQgKzc0MiwxNSBAQCBzdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0cnRubF9sb2NrKCk7XFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNnV0bi1cXHUwMDNlbG9jayk7XFxuIFxcbi1cXHR1dG4tXFx1MDAzZXdvcmtfcGVuZGluZyA9IDA7XFxuIFxcdF9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmModXRuLVxcdTAwM2VkZXYsIHV0bik7XFxuIFxcbi1cXHRpZiAodXRuLVxcdTAwM2VuZWVkX3JlcGxheSlcXG4rXFx0aWYgKHRlc3RfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCBcXHUwMDI2dXRuLVxcdTAwM2VmbGFncykpXFxuIFxcdFxcdHVkcF90dW5uZWxfbmljX3JlcGxheSh1dG4tXFx1MDAzZWRldiwgdXRuKTtcXG4gXFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2dXRuLVxcdTAwM2Vsb2NrKTtcXG4gXFx0cnRubF91bmxvY2soKTtcXG4rXFxuK1xcdHVkcF90dW5uZWxfbmljX3B1dCh1dG4pO1xcbiB9XFxuIFxcbiBzdGF0aWMgc3RydWN0IHVkcF90dW5uZWxfbmljICpcXG5AQCAtNzU5LDYgKzc2Niw3IEBAIHVkcF90dW5uZWxfbmljX2FsbG9jKGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvLFxcbiBcXHR1dG4tXFx1MDAzZW5fdGFibGVzID0gbl90YWJsZXM7XFxuIFxcdElOSVRfV09SSyhcXHUwMDI2dXRuLVxcdTAwM2V3b3JrLCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrKTtcXG4gXFx0bXV0ZXhfaW5pdChcXHUwMDI2dXRuLVxcdTAwM2Vsb2NrKTtcXG4rXFx0cmVmY291bnRfc2V0KFxcdTAwMjZ1dG4tXFx1MDAzZXJlZmNudCwgMSk7XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgbl90YWJsZXM7IGkrKykge1xcbiBcXHRcXHR1dG4tXFx1MDAzZWVudHJpZXNbaV0gPSBremFsbG9jX29ianMoKnV0bi1cXHUwMDNlZW50cmllc1tpXSxcXG5AQCAtNzgyLDkgKzc5MCwxOSBAQCBzdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19mcmVlKHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHV0bi1cXHUwMDNlbl90YWJsZXM7IGkrKylcXG4gXFx0XFx0a2ZyZWUodXRuLVxcdTAwM2VlbnRyaWVzW2ldKTtcXG4rXFxuK1xcdGlmICh1dG4tXFx1MDAzZWRldilcXG4rXFx0XFx0ZGV2X3B1dCh1dG4tXFx1MDAzZWRldik7XFxuK1xcbiBcXHRrZnJlZSh1dG4pO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19wdXQoc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxuK3tcXG4rXFx0aWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdChcXHUwMDI2dXRuLVxcdTAwM2VyZWZjbnQpKVxcbitcXHRcXHR1ZHBfdHVubmVsX25pY19mcmVlKHV0bik7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgdWRwX3R1bm5lbF9uaWNfcmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4ge1xcbiBcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5AQCAtODYzLDYgKzg4MSw3IEBAIHN0YXRpYyB2b2lkXFxuIHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxuIHtcXG4gXFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxuK1xcdGJvb2wgbGFzdCA9IHRydWU7XFxuIFxcbiBcXHR1ZHBfdHVubmVsX25pY19sb2NrKGRldik7XFxuIFxcbkBAIC04ODksNiArOTA4LDcgQEAgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG4gXFx0XFx0XFx0dWRwX3R1bm5lbF9kcm9wX3J4X2luZm8oZGV2KTtcXG4gXFx0XFx0XFx0dXRuLVxcdTAwM2VkZXYgPSBmaXJzdC1cXHUwMDNlZGV2O1xcbiBcXHRcXHRcXHR1ZHBfdHVubmVsX25pY191bmxvY2soZGV2KTtcXG4rXFx0XFx0XFx0bGFzdCA9IGZhbHNlO1xcbiBcXHRcXHRcXHRnb3RvIHJlbGVhc2VfZGV2O1xcbiBcXHRcXHR9XFxuIFxcbkBAIC05MDEsMTYgKzkyMSwxMSBAQCB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbiBcXHR1ZHBfdHVubmVsX25pY19mbHVzaChkZXYsIHV0bik7XFxuIFxcdHVkcF90dW5uZWxfbmljX3VubG9jayhkZXYpO1xcbiBcXG4tXFx0LyogV2FpdCBmb3IgdGhlIHdvcmsgdG8gYmUgZG9uZSB1c2luZyB0aGUgc3RhdGUsIG5ldGRldiBjb3JlIHdpbGxcXG4tXFx0ICogcmV0cnkgdW5yZWdpc3RlciB1bnRpbCB3ZSBnaXZlIHVwIG91ciByZWZlcmVuY2Ugb24gdGhpcyBkZXZpY2UuXFxuLVxcdCAqL1xcbi1cXHRpZiAodXRuLVxcdTAwM2V3b3JrX3BlbmRpbmcpXFxuLVxcdFxcdHJldHVybjtcXG4tXFxuLVxcdHVkcF90dW5uZWxfbmljX2ZyZWUodXRuKTtcXG4rXFx0dWRwX3R1bm5lbF9uaWNfcHV0KHV0bik7XFxuIHJlbGVhc2VfZGV2OlxcbiBcXHRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljID0gTlVMTDtcXG4tXFx0ZGV2X3B1dChkZXYpO1xcbitcXHRpZiAoIWxhc3QpXFxuK1xcdFxcdGRldl9wdXQoZGV2KTtcXG4gfVxcbiBcXG4gc3RhdGljIGludFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzozNjozNS44MTA4Mjg0OTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0Njk3NDg0MjEyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRERVZTSU1cIixcbiAgICBcIlZYTEFOXCIsXG4gICAgXCJHRU5FVkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrXCIsXG4gICAgXCJ1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyXCIsXG4gICAgXCJ1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY1wiLFxuICAgIFwidWRwX3R1bm5lbF9uaWNfcHV0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbi91c2UtYWZ0ZXItZnJlZSBpbiB0aGUgVURQIHR1bm5lbCBOSUMgb2ZmbG9hZCBpbmZyYXN0cnVjdHVyZSBieSByZXBsYWNpbmcgYSBzaW1wbGUgcGVuZGluZyBmbGFnIHdpdGggYSBwcm9wZXIgcmVmZXJlbmNlIGNvdW50IChyZWZjb3VudF90KSBmb3IgdGhlIHdvcmtxdWV1ZS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNyZWF0aW5nL2Rlc3Ryb3lpbmcgVURQIHR1bm5lbHMgKGxpa2UgVlhMQU4gb3IgR0VORVZFKSBvbiBkZXZpY2VzIHN1cHBvcnRpbmcgVURQIHR1bm5lbCBvZmZsb2FkIChsaWtlIG5ldGRldnNpbSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzEyODZhMWEyOTcxZjE5NDljOWJmZWYyZDdlY2EzY2YwMWRmYjZjM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVuIDI0IDE3OjM2OjMzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYyBiL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcbmluZGV4IDk5NDRlZDkyM2RkZmQxLi44ODRiNWQ5M2I3YjM5ZiAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcbisrKyBiL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcbkBAIC0zMCw5ICszMCw4IEBAIHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSB7XG4gICogQHdvcms6XHRhc3luYyB3b3JrIGZvciB0YWxraW5nIHRvIGhhcmR3YXJlIGZyb20gcHJvY2VzcyBjb250ZXh0XG4gICogQGRldjpcdG5ldGRldiBwb2ludGVyXG4gICogQGxvY2s6XHRwcm90ZWN0cyBhbGwgZmllbGRzXG4tICogQG5lZWRfc3luYzpcdGF0IGxlYXN0IG9uZSBwb3J0IHN0YXJ0IGNoYW5nZWRcbi0gKiBAbmVlZF9yZXBsYXk6IHNwYWNlIHdhcyBmcmVlZCwgd2UgbmVlZCBhIHJlcGxheSBvZiBhbGwgcG9ydHNcbi0gKiBAd29ya19wZW5kaW5nOiBAd29yayBpcyBjdXJyZW50bHkgc2NoZWR1bGVkXG4rICogQGZsYWdzOlx0c3luYywgcmVwbGF5IGZsYWdzXG4rICogQHJlZmNudDpcdHJlZmVyZW5jZSBjb3VudFxuICAqIEBuX3RhYmxlczpcdG51bWJlciBvZiB0YWJsZXMgdW5kZXIgQGVudHJpZXNcbiAgKiBAbWlzc2VkOlx0Yml0bWFwIG9mIHRhYmxlcyB3aGljaCBvdmVyZmxvd25cbiAgKiBAZW50cmllczpcdHRhYmxlIG9mIHRhYmxlcyBvZiBwb3J0cyBjdXJyZW50bHkgb2ZmbG9hZGVkXG5AQCAtNDQsOSArNDMsMTEgQEAgc3RydWN0IHVkcF90dW5uZWxfbmljIHtcbiBcbiBcdHN0cnVjdCBtdXRleCBsb2NrO1xuIFxuLVx0dTggbmVlZF9zeW5jOjE7XG4tXHR1OCBuZWVkX3JlcGxheToxO1xuLVx0dTggd29ya19wZW5kaW5nOjE7XG4rXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuKyNkZWZpbmUgVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DXHQwXG4rI2RlZmluZSBVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWVx0MVxuK1xuK1x0cmVmY291bnRfdCByZWZjbnQ7XG4gXG4gXHR1bnNpZ25lZCBpbnQgbl90YWJsZXM7XG4gXHR1bnNpZ25lZCBsb25nIG1pc3NlZDtcbkBAIC0xMTYsNyArMTE3LDcgQEAgdWRwX3R1bm5lbF9uaWNfZW50cnlfcXVldWUoc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXG4gXHRcdFx0ICAgdW5zaWduZWQgaW50IGZsYWcpXG4ge1xuIFx0ZW50cnktXHUwMDNlZmxhZ3MgfD0gZmxhZztcbi1cdHV0bi1cdTAwM2VuZWVkX3N5bmMgPSAxO1xuK1x0c2V0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkXG5AQCAtMjgzLDcgKzI4NCw3IEBAIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX2J5X3RhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gc3RhdGljIHZvaWRcbiBfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIHtcbi1cdGlmICghdXRuLVx1MDAzZW5lZWRfc3luYylcbitcdGlmICghdGVzdF9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DLCBcdTAwMjZ1dG4tXHUwMDNlZmxhZ3MpKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRpZiAoZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8tXHUwMDNlc3luY190YWJsZSlcbkBAIC0yOTEsMjEgKzI5MiwyNCBAQCBfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIFx0ZWxzZVxuIFx0XHR1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV9wb3J0KGRldiwgdXRuKTtcbiBcbi1cdHV0bi1cdTAwM2VuZWVkX3N5bmMgPSAwO1xuK1x0Y2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKTtcbiBcdC8qIENhbid0IHJlcGxheSBkaXJlY3RseSBoZXJlLCBpbiBjYXNlIHdlIGNvbWUgZnJvbSB0aGUgdHVubmVsIGRyaXZlcidzXG4gXHQgKiBub3RpZmljYXRpb24gLSB0cnlpbmcgdG8gcmVwbGF5IG1heSBkZWFkbG9jayBpbnNpZGUgdHVubmVsIGRyaXZlci5cbiBcdCAqL1xuLVx0dXRuLVx1MDAzZW5lZWRfcmVwbGF5ID0gdWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShkZXYsIHV0bik7XG4rXHRpZiAodWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShkZXYsIHV0bikpXG4rXHRcdHNldF9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9SRVBMQVksIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4rXHRlbHNlXG4rXHRcdGNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKTtcbiB9XG4gXG4gc3RhdGljIHZvaWRcbiB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiB7XG4tXHRpZiAoIXV0bi1cdTAwM2VuZWVkX3N5bmMpXG4rXHRpZiAoIXRlc3RfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKSlcbiBcdFx0cmV0dXJuO1xuIFxuLVx0cXVldWVfd29yayh1ZHBfdHVubmVsX25pY193b3JrcXVldWUsIFx1MDAyNnV0bi1cdTAwM2V3b3JrKTtcbi1cdHV0bi1cdTAwM2V3b3JrX3BlbmRpbmcgPSAxO1xuK1x0aWYgKHF1ZXVlX3dvcmsodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlLCBcdTAwMjZ1dG4tXHUwMDNld29yaykpXG4rXHRcdHJlZmNvdW50X2luYyhcdTAwMjZ1dG4tXHUwMDNlcmVmY250KTtcbiB9XG4gXG4gc3RhdGljIGJvb2xcbkBAIC0zNDgsNyArMzUyLDcgQEAgdWRwX3R1bm5lbF9uaWNfaGFzX2NvbGxpc2lvbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcbiBcdFx0XHRpZiAoIXVkcF90dW5uZWxfbmljX2VudHJ5X2lzX2ZyZWUoZW50cnkpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICBlbnRyeS1cdTAwM2Vwb3J0ID09IHRpLVx1MDAzZXBvcnQgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIGVudHJ5LVx1MDAzZXR5cGUgIT0gdGktXHUwMDNldHlwZSkge1xuLVx0XHRcdFx0X19zZXRfYml0KGksIFx1MDAyNnV0bi1cdTAwM2VtaXNzZWQpO1xuK1x0XHRcdFx0c2V0X2JpdChpLCBcdTAwMjZ1dG4tXHUwMDNlbWlzc2VkKTtcbiBcdFx0XHRcdHJldHVybiB0cnVlO1xuIFx0XHRcdH1cbiBcdFx0fVxuQEAgLTQ4Myw3ICs0ODcsNyBAQCB1ZHBfdHVubmVsX25pY19hZGRfbmV3KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxuIFx0XHQgKiBhcmUgbm8gZGV2aWNlcyBjdXJyZW50bHkgd2hpY2ggaGF2ZSBtdWx0aXBsZSB0YWJsZXMgYWNjZXB0aW5nXG4gXHRcdCAqIHRoZSBzYW1lIHR1bm5lbCB0eXBlLCBhbmQgZmFsc2UgcG9zaXRpdmVzIGFyZSBva2F5LlxuIFx0XHQgKi9cbi1cdFx0X19zZXRfYml0KGksIFx1MDAyNnV0bi1cdTAwM2VtaXNzZWQpO1xuK1x0XHRzZXRfYml0KGksIFx1MDAyNnV0bi1cdTAwM2VtaXNzZWQpO1xuIFx0fVxuIFxuIFx0cmV0dXJuIGZhbHNlO1xuQEAgLTU1Miw3ICs1NTYsNyBAQCBzdGF0aWMgdm9pZCBfX3VkcF90dW5uZWxfbmljX3Jlc2V0X250ZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZ1dG4tXHUwMDNlbG9jayk7XG4gXG4tXHR1dG4tXHUwMDNlbmVlZF9zeW5jID0gZmFsc2U7XG4rXHRjbGVhcl9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DLCBcdTAwMjZ1dG4tXHUwMDNlZmxhZ3MpO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdXRuLVx1MDAzZW5fdGFibGVzOyBpKyspXG4gXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIGluZm8tXHUwMDNldGFibGVzW2ldLm5fZW50cmllczsgaisrKSB7XG4gXHRcdFx0c3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeTtcbkBAIC02OTYsOCArNzAwLDggQEAgdWRwX3R1bm5lbF9uaWNfZmx1c2goc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB1dG4tXHUwMDNlbl90YWJsZXM7IGkrKylcbiBcdFx0bWVtc2V0KHV0bi1cdTAwM2VlbnRyaWVzW2ldLCAwLCBhcnJheV9zaXplKGluZm8tXHUwMDNldGFibGVzW2ldLm5fZW50cmllcyxcbiBcdFx0XHRcdFx0XHQgICAgICBzaXplb2YoKip1dG4tXHUwMDNlZW50cmllcykpKTtcbi1cdFdBUk5fT04odXRuLVx1MDAzZW5lZWRfc3luYyk7XG4tXHR1dG4tXHUwMDNlbmVlZF9yZXBsYXkgPSAwO1xuK1x0V0FSTl9PTih0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFx1MDAyNnV0bi1cdTAwM2VmbGFncykpO1xuK1x0Y2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCBcdTAwMjZ1dG4tXHUwMDNlZmxhZ3MpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZFxuQEAgLTcxMyw4ICs3MTcsOCBAQCB1ZHBfdHVubmVsX25pY19yZXBsYXkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB1dG4tXHUwMDNlbl90YWJsZXM7IGkrKylcbiBcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgaW5mby1cdTAwM2V0YWJsZXNbaV0ubl9lbnRyaWVzOyBqKyspXG4gXHRcdFx0dWRwX3R1bm5lbF9uaWNfZW50cnlfZnJlZXplX3VzZWQoXHUwMDI2dXRuLVx1MDAzZWVudHJpZXNbaV1bal0pO1xuLVx0dXRuLVx1MDAzZW1pc3NlZCA9IDA7XG4tXHR1dG4tXHUwMDNlbmVlZF9yZXBsYXkgPSAwO1xuK1x0Yml0bWFwX3plcm8oXHUwMDI2dXRuLVx1MDAzZW1pc3NlZCwgVURQX1RVTk5FTF9OSUNfTUFYX1RBQkxFUyk7XG4rXHRjbGVhcl9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9SRVBMQVksIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gXG4gXHRpZiAoIWluZm8tXHUwMDNlc2hhcmVkKSB7XG4gXHRcdHVkcF90dW5uZWxfZ2V0X3J4X2luZm8oZGV2KTtcbkBAIC03MjgsNiArNzMyLDggQEAgdWRwX3R1bm5lbF9uaWNfcmVwbGF5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIFx0XHRcdHVkcF90dW5uZWxfbmljX2VudHJ5X3VuZnJlZXplKFx1MDAyNnV0bi1cdTAwM2VlbnRyaWVzW2ldW2pdKTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfcHV0KHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKTtcbitcbiBzdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiB7XG4gXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0biA9XG5AQCAtNzM2LDE0ICs3NDIsMTUgQEAgc3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRydG5sX2xvY2soKTtcbiBcdG11dGV4X2xvY2soXHUwMDI2dXRuLVx1MDAzZWxvY2spO1xuIFxuLVx0dXRuLVx1MDAzZXdvcmtfcGVuZGluZyA9IDA7XG4gXHRfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHV0bi1cdTAwM2VkZXYsIHV0bik7XG4gXG4tXHRpZiAodXRuLVx1MDAzZW5lZWRfcmVwbGF5KVxuK1x0aWYgKHRlc3RfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCBcdTAwMjZ1dG4tXHUwMDNlZmxhZ3MpKVxuIFx0XHR1ZHBfdHVubmVsX25pY19yZXBsYXkodXRuLVx1MDAzZWRldiwgdXRuKTtcbiBcbiBcdG11dGV4X3VubG9jayhcdTAwMjZ1dG4tXHUwMDNlbG9jayk7XG4gXHRydG5sX3VubG9jaygpO1xuK1xuK1x0dWRwX3R1bm5lbF9uaWNfcHV0KHV0bik7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKlxuQEAgLTc1OSw2ICs3NjYsNyBAQCB1ZHBfdHVubmVsX25pY19hbGxvYyhjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyxcbiBcdHV0bi1cdTAwM2VuX3RhYmxlcyA9IG5fdGFibGVzO1xuIFx0SU5JVF9XT1JLKFx1MDAyNnV0bi1cdTAwM2V3b3JrLCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrKTtcbiBcdG11dGV4X2luaXQoXHUwMDI2dXRuLVx1MDAzZWxvY2spO1xuK1x0cmVmY291bnRfc2V0KFx1MDAyNnV0bi1cdTAwM2VyZWZjbnQsIDEpO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgbl90YWJsZXM7IGkrKykge1xuIFx0XHR1dG4tXHUwMDNlZW50cmllc1tpXSA9IGt6YWxsb2Nfb2JqcygqdXRuLVx1MDAzZWVudHJpZXNbaV0sXG5AQCAtNzgyLDkgKzc5MCwxOSBAQCBzdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19mcmVlKHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdXRuLVx1MDAzZW5fdGFibGVzOyBpKyspXG4gXHRcdGtmcmVlKHV0bi1cdTAwM2VlbnRyaWVzW2ldKTtcbitcbitcdGlmICh1dG4tXHUwMDNlZGV2KVxuK1x0XHRkZXZfcHV0KHV0bi1cdTAwM2VkZXYpO1xuK1xuIFx0a2ZyZWUodXRuKTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfcHV0KHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuK3tcbitcdGlmIChyZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2dXRuLVx1MDAzZXJlZmNudCkpXG4rXHRcdHVkcF90dW5uZWxfbmljX2ZyZWUodXRuKTtcbit9XG4rXG4gc3RhdGljIGludCB1ZHBfdHVubmVsX25pY19yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbiBcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5AQCAtODYzLDYgKzg4MSw3IEBAIHN0YXRpYyB2b2lkXG4gdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiB7XG4gXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xuK1x0Ym9vbCBsYXN0ID0gdHJ1ZTtcbiBcbiBcdHVkcF90dW5uZWxfbmljX2xvY2soZGV2KTtcbiBcbkBAIC04ODksNiArOTA4LDcgQEAgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiBcdFx0XHR1ZHBfdHVubmVsX2Ryb3BfcnhfaW5mbyhkZXYpO1xuIFx0XHRcdHV0bi1cdTAwM2VkZXYgPSBmaXJzdC1cdTAwM2VkZXY7XG4gXHRcdFx0dWRwX3R1bm5lbF9uaWNfdW5sb2NrKGRldik7XG4rXHRcdFx0bGFzdCA9IGZhbHNlO1xuIFx0XHRcdGdvdG8gcmVsZWFzZV9kZXY7XG4gXHRcdH1cbiBcbkBAIC05MDEsMTYgKzkyMSwxMSBAQCB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIFx0dWRwX3R1bm5lbF9uaWNfZmx1c2goZGV2LCB1dG4pO1xuIFx0dWRwX3R1bm5lbF9uaWNfdW5sb2NrKGRldik7XG4gXG4tXHQvKiBXYWl0IGZvciB0aGUgd29yayB0byBiZSBkb25lIHVzaW5nIHRoZSBzdGF0ZSwgbmV0ZGV2IGNvcmUgd2lsbFxuLVx0ICogcmV0cnkgdW5yZWdpc3RlciB1bnRpbCB3ZSBnaXZlIHVwIG91ciByZWZlcmVuY2Ugb24gdGhpcyBkZXZpY2UuXG4tXHQgKi9cbi1cdGlmICh1dG4tXHUwMDNld29ya19wZW5kaW5nKVxuLVx0XHRyZXR1cm47XG4tXG4tXHR1ZHBfdHVubmVsX25pY19mcmVlKHV0bik7XG4rXHR1ZHBfdHVubmVsX25pY19wdXQodXRuKTtcbiByZWxlYXNlX2RldjpcbiBcdGRldi1cdTAwM2V1ZHBfdHVubmVsX25pYyA9IE5VTEw7XG4tXHRkZXZfcHV0KGRldik7XG4rXHRpZiAoIWxhc3QpXG4rXHRcdGRldl9wdXQoZGV2KTtcbiB9XG4gXG4gc3RhdGljIGludFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6MzY6MzUuODEwODI5NzkzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODM5MzcwMDQ2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFVEUCBUdW5uZWwgTklDIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNgLiBTZWVtcyBsaWtlIHNvbWVvbmUncyBnb25lIGluIGFuZCByZXdvcmtlZCB0aGUgd2F5IHRoZSBgdWRwX3R1bm5lbF9uaWNgIGNvZGUgaGFuZGxlcyBjb25jdXJyZW5jeSBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudC4gVGhleSd2ZSBzd2FwcGVkIG91dCB0aG9zZSBiaXRmaWVsZHMg4oCTIGBuZWVkX3N5bmNgLCBgbmVlZF9yZXBsYXlgLCBgd29ya19wZW5kaW5nYCDigJMgZm9yIGF0b21pYyBiaXQgb3BlcmF0aW9ucyBkaXJlY3RseSBvbiB0aGUgYGZsYWdzYCBmaWVsZC4gU21hcnQgbW92ZSwgdGhhdCdzIGRlZmluaXRlbHkgdGhlIHJpZ2h0IGRpcmVjdGlvbiB0byBhdm9pZCB0aG9zZSBuYXN0eSByYWNlIGNvbmRpdGlvbnMuIFBsdXMsIHRoZXnigJl2ZSBhZGRlZCBhIGByZWZjbnRgIG9mIHR5cGUgYHJlZmNvdW50X3RgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoZXkgYXJlIGdvaW5nIHRvIG1hbmFnZSB0aGUgbGlmZXRpbWUgb2YgdGhlIGB1dG5gIHN0cnVjdHVyZSBpdHNlbGYsIHdoaWNoIEkgbGlrZSB0byBzZWUuXG5cblRoZSBwYXRjaCBkZXRhaWxzIGNvbmZpcm0gbXkgc3VzcGljaW9ucy4gYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jYCBub3cgYnVtcHMgdGhlIHJlZmNvdW50IHdoZW4gcXVldWluZyB3b3JrLCBhbmQgYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtgIGRlY3JlbWVudHMgaXQuIFRoZSBpbnRyb2R1Y3Rpb24gb2YgYHVkcF90dW5uZWxfbmljX3B1dGAgaXMgdGhlIGtleSDigJMgdGhhdCdzIHRoZSBwb2ludCB3aGVyZSB0aGUgc3RydWN0dXJlIGdldHMgZnJlZWQgd2hlbiB0aGUgcmVmY291bnQgaGl0cyB6ZXJvLiBBbmQgY2xldmVybHksIHRoZXkndmUgdXBkYXRlZCBgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcmAgdG8gKnVzZSogYHVkcF90dW5uZWxfbmljX3B1dGAgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciBgd29ya19wZW5kaW5nYCBhbmQganVzdCBmcmVlaW5nIHRoZSBgdXRuYCBkaXJlY3RseS4gVGhhdCdzIGEgbXVjaCBtb3JlIHJvYnVzdCBhcHByb2FjaDsgYXZvaWRzIGJsb2NraW5nLlxuXG5UaGUgYHV0bi1cdTAwM2VtaXNzZWRgIGNoYW5nZSBpcyBpbnRlcmVzdGluZywgdGhleSdyZSBub3cgdXNpbmcgYHNldF9iaXRgIGFuZCBgYml0bWFwX3plcm9gIG9uIGl0LiBXYWl0Li4uIGl0J3Mgc3RpbGwgYW4gYHVuc2lnbmVkIGxvbmdgLCBidXQgaXTigJlzICp1c2VkKiB3aXRoIGBzZXRfYml0YCBhbmQgYGJpdG1hcF96ZXJvYC4gSXQgc2VlbXMgbGlrZSB0aGV5J3JlIGNvbnZlcnRpbmcgaXQgdG8gYmVoYXZlIGxpa2UgYSBiaXRtYXNrLCB1c2luZyB0aGUgbG93LWxldmVsIGZ1bmN0aW9ucyBmb3IgbWFuaXB1bGF0aW9uLiBHb29kLCB0aGF0IG1ha2VzIGl0IG1vcmUgYXRvbWljLlxuXG5Tbywgb3ZlcmFsbCwgdGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZS4gSXQncyBhbG1vc3QgY2VydGFpbmx5IGFpbWVkIGF0IGZpeGluZyBhIHJhY2UgY29uZGl0aW9uIG9yIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoZSBgdWRwX3R1bm5lbF9uaWNgIGNvZGUuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGlzIGZ1cnRoZXIuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIHZlcmlmeSB0aGUgY29kZSBwYXRocyBpbnZvbHZlZCBhbmQgZmlndXJlIG91dCBpZiB0aGlzIGNvZGUgaXMgYWN0dWFsbHkgcmVhY2hhYmxlIGluIGFueSBvZiBteSBjdXJyZW50IGNvbmZpZ3VyYXRpb25zLiBJIHNob3VsZCBjaGVjayBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AgaXRzZWxmLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTc4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjkxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6MzY6NDQuMjA0NTM0NjE1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMDIwNzAwNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWRwX3R1bm5lbF9uaWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6MzY6NDQuNDA0Nzk2ODJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjQ0ODI0Nzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgSVB2NCBNYWtlZmlsZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgc3BlY2lmaWMgc2VjdGlvbiBvZiB0aGUga2VybmVsLCBhbmQgdGhlIGBuZXQvaXB2NC9NYWtlZmlsZWAgaXMgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQuIEknbSB0aGlua2luZywgdGhpcyBmaWxlIGlzIHRoZSBjZW50cmFsIG9yY2hlc3RyYXRvciBmb3IgYnVpbGRpbmcgYWxsIHRoZSBJUHY0LXJlbGF0ZWQgbW9kdWxlcyBhbmQgb2JqZWN0IGZpbGVzLiBJIG5lZWQgdG8gcXVpY2tseSBncmFzcCBob3cgdGhlIGRlcGVuZGVuY2llcyBhcmUgc3RydWN0dXJlZCwgaG93IHRoZSBjb21waWxhdGlvbiBmbGFncyBhcmUgc2V0LCBhbmQgd2hhdCB0YXJnZXRzIGFyZSBkZWZpbmVkLiBJcyBpdCBhIHN0cmFpZ2h0Zm9yd2FyZCBmbGF0IHN0cnVjdHVyZSwgb3IgYXJlIHRoZXJlIGNsZXZlciB0cmlja3Mgd2l0aCByZWN1cnNpdmUgaW5jbHVkZXMsIHdpbGRjYXJkcywgYW5kIHZhcmlhYmxlcyB0byBoYW5kbGUgdGhlIG11bHRpdHVkZSBvZiBmaWxlcz8gQXJlIHRoZXJlIGFueSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgb3IgY29uZmlndXJhdGlvbi1kZXBlbmRlbnQgcnVsZXMgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgcmlnaHQgb2ZmIHRoZSBiYXQ/IEtub3dpbmcgaG93IHRoaXMgbWFrZWZpbGUgdGllcyBpbnRvIHRoZSBicm9hZGVyIGtlcm5lbCBidWlsZCBzeXN0ZW0gaXMgY3J1Y2lhbCwgYXMgaXMgdW5kZXJzdGFuZGluZyBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIG90aGVyIG5ldHdvcmsgc3RhY2sgbWFrZWZpbGVzLiBMZXTigJlzIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQwOCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM2OjQ3LjY0OTYyNDQyOVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzYzNDcwOTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWRwX3R1bm5lbF9uaWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9MzA9b2JqLSQoQ09ORklHX05FVF9JUEdSRSkgKz0gaXBfZ3JlLm9cXG5uZXQvaXB2NC9NYWtlZmlsZTozMTp1ZHBfdHVubmVsLXkgOj0gdWRwX3R1bm5lbF9jb3JlLm8gdWRwX3R1bm5lbF9uaWMub1xcbm5ldC9pcHY0L01ha2VmaWxlLTMyLW9iai0kKENPTkZJR19ORVRfVURQX1RVTk5FTCkgKz0gdWRwX3R1bm5lbC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM2OjQ3LjkyNTk4Mzc0MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMDQ4MzAxNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgQ29tcGlsYXRpb24gUGF0aCBmb3IgVURQIFR1bm5lbHMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSBhbmQgaXQgbG9va3MgbGlrZSB0aGUgVURQIHR1bm5lbCBmdW5jdGlvbmFsaXR5IGlzIG9ubHkgaW5jbHVkZWQgaW4gdGhlIGJ1aWxkIHdoZW4gYENPTkZJR19ORVRfVURQX1RVTk5FTGAgaXMgc2V0LiBUaGF0J3MgdGhlIGtleSB2YXJpYWJsZSB0byB0cmFjayBoZXJlLiBOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdHJpZ2dlcnMgKnRoYXQqIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBXaGF0IG90aGVyIGRlcGVuZGVuY2llcywgcGxhdGZvcm0gY29uZmlndXJhdGlvbnMsIG9yIGJ1aWxkLXRpbWUgc2V0dGluZ3MgbGVhZCB0byBgQ09ORklHX05FVF9VRFBfVFVOTkVMYCBiZWluZyBlbmFibGVkPyBMZXQncyB0cmFjZSBiYWNrIGZyb20gdGhlcmUgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLiBJIHN1c3BlY3QgdGhlcmUgbWlnaHQgYmUgYSBjaGFpbiBvZiBkZXBlbmRlbmNpZXMsIGFuZCBJIHdhbnQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgbG9naWMuIFRpbWUgdG8gZ28gaHVudGluZyBmb3IgdGhlIHVwc3RyZWFtIGVuYWJsaW5nIG1lY2hhbmlzbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc0MywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM2OjUyLjEzMDgxNjc1OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODQ2MzQyNzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBORVRfVURQX1RVTk5FTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9LY29uZmlnPTI9Y29uZmlnIFJETUFfUlhFXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL0tjb25maWctNS1cXHRkZXBlbmRzIG9uIElORklOSUJBTkRfVklSVF9ETUFcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL0tjb25maWc6NjpcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL0tjb25maWctNy1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NzQ9Y29uZmlnIFdJUkVHVUFSRFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy03Ni1cXHRkZXBlbmRzIG9uIE5FVCBcXHUwMDI2XFx1MDAyNiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo3NzpcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG5kcml2ZXJzL25ldC9LY29uZmlnLTc4LVxcdHNlbGVjdCBEU1RfQ0FDSEVcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MTAzPWNvbmZpZyBPVlBOXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTEwNi1cXHRzZWxlY3QgRFNUX0NBQ0hFXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoxMDc6XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMDgtXFx0c2VsZWN0IENSWVBUT1xcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yMzA9Y29uZmlnIFZYTEFOXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzMi1cXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnOjIzMzpcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzNC1cXHRzZWxlY3QgR1JPX0NFTExTXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTI0NT1jb25maWcgR0VORVZFXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTI0Ny1cXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnOjI0ODpcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI0OS1cXHRzZWxlY3QgR1JPX0NFTExTXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTI2MD1jb25maWcgQkFSRVVEUFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNjItXFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyNjM6XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNjQtXFx0c2VsZWN0IEdST19DRUxMU1xcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNzI9Y29uZmlnIEdUUFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzQtXFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyNzU6XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yODk9Y29uZmlnIFBGQ1BcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMjkxLVxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjkyOlxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjkzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MzAyPWNvbmZpZyBBTVRcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMzA0LVxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBJUF9NVUxUSUNBU1RcXG5kcml2ZXJzL25ldC9LY29uZmlnOjMwNTpcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG5kcml2ZXJzL25ldC9LY29uZmlnLTMwNi1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTMyMT1jb25maWcgTkVUX0ZPVVxcbm5ldC9pcHY0L0tjb25maWctMzIyLVxcdHRyaXN0YXRlIFxcXCJJUDogRm9vIChJUCBwcm90b2NvbHMpIG92ZXIgVURQXFxcIlxcbm5ldC9pcHY0L0tjb25maWc6MzIzOlxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbm5ldC9pcHY0L0tjb25maWctMzI0LVxcdGhlbHBcXG4tLVxcbm5ldC9sMnRwL0tjb25maWc9Nj1tZW51Y29uZmlnIEwyVFBcXG4tLVxcbm5ldC9sMnRwL0tjb25maWctOC1cXHRkZXBlbmRzIG9uIElORVRcXG5uZXQvbDJ0cC9LY29uZmlnOjk6XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxubmV0L2wydHAvS2NvbmZpZy0xMC1cXHRoZWxwXFxuLS1cXG5uZXQvcnhycGMvS2NvbmZpZz02PWNvbmZpZyBBRl9SWFJQQ1xcbi0tXFxubmV0L3J4cnBjL0tjb25maWctMTEtXFx0c2VsZWN0IEtFWVNcXG5uZXQvcnhycGMvS2NvbmZpZzoxMjpcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG5uZXQvcnhycGMvS2NvbmZpZy0xMy1cXHRoZWxwXFxuLS1cXG5uZXQvc2N0cC9LY29uZmlnPTY9bWVudWNvbmZpZyBJUF9TQ1RQXFxuLS1cXG5uZXQvc2N0cC9LY29uZmlnLTEyLVxcdHNlbGVjdCBORVRfQ1JDMzJDXFxubmV0L3NjdHAvS2NvbmZpZzoxMzpcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG5uZXQvc2N0cC9LY29uZmlnLTE0LVxcdGhlbHBcXG4tLVxcbm5ldC90aXBjL0tjb25maWc9MzA9Y29uZmlnIFRJUENfTUVESUFfVURQXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTMyLVxcdGRlcGVuZHMgb24gVElQQ1xcbm5ldC90aXBjL0tjb25maWc6MzM6XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxubmV0L3RpcGMvS2NvbmZpZy0zNC1cXHRkZWZhdWx0IHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6MzY6NTUuOTc3MTc0MDEyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY1ODAwNzAwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNjb3BlIG9mIFVEUCBUdW5uZWxpbmcgaW4gdGhlIEtlcm5lbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGB1ZHBfdHVubmVsX25pYy5jYCBoZXJlLiBUaGUgbmFtZSBpbW1lZGlhdGVseSBzdWdnZXN0cyBzb21ldGhpbmcgYnJvYWQsIGJ1dCBsZXQncyBzZWUgaG93IGVuY29tcGFzc2luZyBpdCByZWFsbHkgaXMuIFJpZ2h0IG9mZiB0aGUgYmF0LCBgTkVUX1VEUF9UVU5ORUxgIGlzIGVuYWJsZWQgYnkgYSB3aWRlIGFycmF5IG9mIHByb3RvY29scyBhbmQgZmVhdHVyZXM6IGBWWExBTmAsIGBHRU5FVkVgLCBgQkFSRVVEUGAsIGBHVFBgLCBgUEZDUGAsIGBBTVRgLCBgTkVUX0ZPVWAsIGBMMlRQYCwgYEFGX1JYUlBDYCwgYElQX1NDVFBgLCBhbmQgZXZlbiBgVElQQ19NRURJQV9VRFBgLiBUaGF04oCZcyBhIHByZXR0eSBkaXZlcnNlIHNldC4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgd2hhdCdzIHJlYWxseSB1dGlsaXppbmcgYHVkcF90dW5uZWxfbmljX2luZm9gIG9yLCBtb3JlIGltcG9ydGFudGx5LCBgdWRwX3R1bm5lbF9uaWNfcmVnaXN0ZXJgPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdXNhZ2UgcGF0dGVybnMgdG8gZ3Jhc3AgdGhlIHJlYWwgaW1wYWN0IGFuZCBwb3RlbnRpYWwgaW1wbGljYXRpb25zIG9mIGNoYW5nZXMgaGVyZS4gSeKAmWxsIHN0YXJ0IGRpZ2dpbmcgaW4gdG8gc2VlIHdoYXQgY2FsbHMgdGhlc2UgZnVuY3Rpb25zLCBhbmQgZnJvbSB3aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzAzMywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzozNzowMC42MzUxODQxMzZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NzA4MzAzNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWRwX3R1bm5lbF9uaWNfaW5mb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL25ldF9kZXZpY2UucnN0PTE3Mj1zdHJ1Y3QgbWFjc2VjX29wcyogICAgICAgICAgICAgICAgICBtYWNzZWNfb3BzXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL25ldF9kZXZpY2UucnN0OjE3MzpzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyogICAgICAgICB1ZHBfdHVubmVsX25pY19pbmZvXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL25ldF9kZXZpY2UucnN0LTE3NC1zdHJ1Y3QgdWRwX3R1bm5lbF9uaWMqICAgICAgICAgICAgICB1ZHBfdHVubmVsX25pY1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYz04OTU9c3RhdGljIGludCB4Z2JlX3Z4bGFuX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy05MDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYzo5MDY6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHhnYmVfdWRwX3R1bm5lbHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy05MDctXFx0LnNldF9wb3J0XFx0PSB4Z2JlX3Z4bGFuX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy05MTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYzo5MTU6Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKnhnYmVfZ2V0X3VkcF90dW5uZWxfaW5mbyh2b2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtOTE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtbWFpbi5jPTE1Mj1pbnQgeGdiZV9jb25maWdfbmV0ZGV2KHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtbWFpbi5jLTI2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLW1haW4uYzoyNjM6XFx0XFx0bmV0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0geGdiZV9nZXRfdWRwX3R1bm5lbF9pbmZvKCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1tYWluLmMtMjY0LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaD0xMjk2PWNvbnN0IHN0cnVjdCBldGh0b29sX29wcyAqeGdiZV9nZXRfZXRodG9vbF9vcHModm9pZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oOjEyOTc6Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKnhnYmVfZ2V0X3VkcF90dW5uZWxfaW5mbyh2b2lkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLmgtMTI5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz0xMDIxMT1zdGF0aWMgaW50IGJueDJ4X3VkcF90dW5uZWxfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTAyMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jOjEwMjIyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBibngyeF91ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTAyMjMtXFx0LnN5bmNfdGFibGVcXHQ9IGJueDJ4X3VkcF90dW5uZWxfc3luYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz0xMzA0MD1zdGF0aWMgaW50IGJueDJ4X2luaXRfZGV2KHN0cnVjdCBibngyeCAqYnAsIHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEzMjA3LVxcdFxcdGlmIChJU19QRihicCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jOjEzMjA4OlxcdFxcdFxcdGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZibngyeF91ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTMyMDktXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTU5NjI9c3RhdGljIGludCBibnh0X3VkcF90dW5uZWxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNTk3Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNTk3ODpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gYm54dF91ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNTk3OS1cXHQuc2V0X3BvcnRcXHQ9IGJueHRfdWRwX3R1bm5lbF9zZXRfcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE2OTQ1PXN0YXRpYyBpbnQgYm54dF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE3MDUyLVxcdGlmIChicC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBCTlhUX0ZMQUdfQ0hJUF9QNylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNzA1MzpcXHRcXHRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2Ym54dF91ZHBfdHVubmVsc19wNztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNzA1NC1cXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTcwNTU6XFx0XFx0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNmJueHRfdWRwX3R1bm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTcwNTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0yNjg1PXN0YXRpYyBpbnQgbGlxdWlkaW9fdWRwX3R1bm5lbF91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0yNjk1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjI2OTY6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGxpcXVpZGlvX3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTI2OTctXFx0LnNldF9wb3J0XFx0PSBsaXF1aWRpb191ZHBfdHVubmVsX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9MzMyMj1zdGF0aWMgaW50IHNldHVwX25pY19kZXZpY2VzKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3Rlb25fZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzU4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzozNTgzOlxcdFxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZsaXF1aWRpb191ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zNTg0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MTc3Mj1zdGF0aWMgaW50IGxpcXVpZGlvX3VkcF90dW5uZWxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMTc4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoxNzgzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBsaXF1aWRpb191ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xNzg0LVxcdC5zZXRfcG9ydFxcdD0gbGlxdWlkaW9fdWRwX3R1bm5lbF9zZXRfcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jPTE5MTk9c3RhdGljIGludCBzZXR1cF9uaWNfZGV2aWNlcyhzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0ZW9uX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTIwOTMtXFx0XFx0ICAgIChsaW8tXFx1MDAzZWVuY19kZXZfY2FwYWJpbGl0eSBcXHUwMDI2IH5ORVRJRl9GX0xSTyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6MjA5NDpcXHRcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2bGlxdWlkaW9fdWRwX3R1bm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMjA5NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jPTM3NzA9c3RhdGljIGludCBjeGdiX3VkcF90dW5uZWxfc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM4MTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM6MzgxODpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gY3hnYl91ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYy0zODE5LVxcdC5zZXRfcG9ydFxcdD0gY3hnYl91ZHBfdHVubmVsX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM9NjU3MT1zdGF0aWMgaW50IGluaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmMtNjgwMC1cXHRcXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlcmF3Zl9jbnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM6NjgwMTpcXHRcXHRcXHRcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2Y3hnYl91ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYy02ODAyLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmM9MjA3PXN0YXRpYyBpbnQgZW5pY191ZHBfdHVubmVsX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmM6MjI5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBlbmljX3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjMwLVxcdC5zZXRfcG9ydFxcdD0gZW5pY191ZHBfdHVubmVsX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYz0yNjc1PXN0YXRpYyBpbnQgZW5pY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjk0OC1cXHRcXHQgICAgZW5pYy1cXHUwMDNldnhsYW4uZmxhZ3MgXFx1MDAyNiBFTklDX1ZYTEFOX01VTFRJX1dRKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYzoyOTQ5OlxcdFxcdFxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZlbmljX3VkcF90dW5uZWxzX3Y0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjk1MC1cXHRcXHRcXHRpZiAoZW5pYy1cXHUwMDNldnhsYW4uZmxhZ3MgXFx1MDAyNiBFTklDX1ZYTEFOX09VVEVSX0lQVjYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYzoyOTUxOlxcdFxcdFxcdFxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZlbmljX3VkcF90dW5uZWxzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjk1Mi1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jPTQwMTU9c3RhdGljIGludCBiZV92eGxhbl91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmMtNDAzMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jOjQwMzQ6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGJlX3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmMtNDAzNS1cXHQuc2V0X3BvcnRcXHQ9IGJlX3Z4bGFuX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYz01MTc5PXN0YXRpYyB2b2lkIGJlX25ldGRldl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jLTUyMDctXFx0aWYgKCFsYW5jZXJfY2hpcChhZGFwdGVyKSBcXHUwMDI2XFx1MDAyNiAhQkV4X2NoaXAoYWRhcHRlcikgXFx1MDAyNlxcdTAwMjYgIWJlX2lzX21jKGFkYXB0ZXIpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmM6NTIwODpcXHRcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2YmVfdWRwX3R1bm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYy01MjA5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmM9NDAyPXN0YXRpYyBpbnQgZm0xMGtfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jLTQxNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYzo0MTc6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGZtMTBrX3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jLTQxOC1cXHQuc3luY190YWJsZVxcdD0gZm0xMGtfdWRwX3R1bm5lbF9zeW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmM9MTU0MT1zdHJ1Y3QgbmV0X2RldmljZSAqZm0xMGtfYWxsb2NfbmV0ZGV2KGNvbnN0IHN0cnVjdCBmbTEwa19pbmZvICppbmZvKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmMtMTU4MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYzoxNTgxOlxcdFxcdGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZmbTEwa191ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYy0xNTgyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZS5oPTQ2OD1zdHJ1Y3QgaTQwZV9wZiB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaC01MjEtXFx0c3RydWN0IHVkcF90dW5uZWxfbmljX3NoYXJlZCB1ZHBfdHVubmVsX3NoYXJlZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaDo1MjI6XFx0c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gdWRwX3R1bm5lbF9uaWM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlLmgtNTIzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0xMzYzNz1zdGF0aWMgaW50IGk0MGVfY29uZmlnX25ldGRldihzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTM2ODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYzoxMzY4MTpcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2cGYtXFx1MDAzZXVkcF90dW5uZWxfbmljO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTM2ODItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYz0zNDQzPXN0YXRpYyB2b2lkIGljZV9zZXRfb3BzKHN0cnVjdCBpY2VfdnNpICp2c2kpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy0zNDU0LVxcdG5ldGRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZpY2VfbmV0ZGV2X29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzozNDU1OlxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZwZi1cXHUwMDNlaHcudWRwX3R1bm5lbF9uaWM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtMzQ1Ni1cXHRuZXRkZXYtXFx1MDAzZXhkcF9tZXRhZGF0YV9vcHMgPSBcXHUwMDI2aWNlX3hkcF9tZF9vcHM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYz0zOTcwPWludCBpY2VfaW5pdF9wZihzdHJ1Y3QgaWNlX3BmICpwZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy0zOTcxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzozOTcyOlxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICp1ZHBfdHVubmVsX25pYyA9IFxcdTAwMjZwZi1cXHUwMDNlaHcudWRwX3R1bm5lbF9uaWM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtMzk3My1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBpY2VfcGZfdG9fZGV2KHBmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHlwZS5oPTg5OT1zdHJ1Y3QgaWNlX2h3IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHlwZS5oLTEwMTEtXFx0c3RydWN0IHVkcF90dW5uZWxfbmljX3NoYXJlZCB1ZHBfdHVubmVsX3NoYXJlZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R5cGUuaDoxMDEyOlxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHVkcF90dW5uZWxfbmljO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHlwZS5oLTEwMTMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM9NTQ0OD1zdGF0aWMgaW50IGl4Z2JlX3VkcF90dW5uZWxfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNTQ2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6NTQ2NzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gaXhnYmVfdWRwX3R1bm5lbHNfeDU1MCA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNTQ2OC1cXHQuc3luY190YWJsZVxcdD0gaXhnYmVfdWRwX3R1bm5lbF9zeW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTU0NzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjU0NzU6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGl4Z2JlX3VkcF90dW5uZWxzX3g1NTBlbV9hID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy01NDc2LVxcdC5zeW5jX3RhYmxlXFx0PSBpeGdiZV91ZHBfdHVubmVsX3N5bmMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM9MTE1NDg9c3RhdGljIGludCBpeGdiZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMTY5OS1cXHRjYXNlIGl4Z2JlX21hY19lNjEwOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzoxMTcwMDpcXHRcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2aXhnYmVfdWRwX3R1bm5lbHNfeDU1MDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTE3MDEtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTExNzAyLVxcdGNhc2UgaXhnYmVfbWFjX3g1NTBlbV9hOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzoxMTcwMzpcXHRcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2aXhnYmVfdWRwX3R1bm5lbHNfeDU1MGVtX2E7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTExNzA0LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYz0yNjM5PXN0YXRpYyBpbnQgbWx4NF91ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYy0yNjU2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmM6MjY1NzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbWx4NF91ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jLTI2NTgtXFx0LnN5bmNfdGFibGVcXHQ9IG1seDRfdWRwX3R1bm5lbF9zeW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYz0zMTYxPWludCBtbHg0X2VuX2luaXRfbmV0ZGV2KHN0cnVjdCBtbHg0X2VuX2RldiAqbWRldiwgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jLTMzNDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYzozMzQ3OlxcdFxcdGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZtbHg0X3VkcF90dW5uZWxzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMtMzM0OC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaD05MDU9c3RydWN0IG1seDVlX3ByaXYge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTU2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oOjk1NzpcXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBuaWNfaW5mbztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05NTgtI2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTU0NTY9dm9pZCBtbHg1ZV92eGxhbl9zZXRfbmV0ZGV2X2luZm8oc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTU0NjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo1NDY5OlxcdHByaXYtXFx1MDAzZW5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZwcml2LVxcdTAwM2VuaWNfaW5mbztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTU0NzAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jPTIzNzY9c3RhdGljIGludCBuZnBfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYy0yMzk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYzoyMzk1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBuZnBfdWRwX3R1bm5lbHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jLTIzOTYtXFx0LnN5bmNfdGFibGUgICAgID0gbmZwX3VkcF90dW5uZWxfc3luYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYz0yNjY2PXN0YXRpYyB2b2lkIG5mcF9uZXRfbmV0ZGV2X2luaXQoc3RydWN0IG5mcF9uZXQgKm5uKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jLTI3MTgtXFx0XFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYzoyNzE5OlxcdFxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZuZnBfdWRwX3R1bm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jLTI3MjAtXFx0XFx0bm4tXFx1MDAzZWRwLmN0cmwgfD0gTkZQX05FVF9DRkdfQ1RSTF9WWExBTjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmM9OTU3PXN0YXRpYyBpbnQgcWVkZV91ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYy05ODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYzo5ODg6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHFlZGVfdWRwX3R1bm5lbHNfYm90aCA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTk4OS1cXHQuc3luY190YWJsZVxcdD0gcWVkZV91ZHBfdHVubmVsX3N5bmMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jPTEwMDY9dm9pZCBxZWRlX3NldF91ZHBfdHVubmVscyhzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTEwMDktXFx0ICAgIGVkZXYtXFx1MDAzZWRldl9pbmZvLmNvbW1vbi5nZW5ldmVfZW5hYmxlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmM6MTAxMDpcXHRcXHRlZGV2LVxcdTAwM2VuZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNnFlZGVfdWRwX3R1bm5lbHNfYm90aDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTEwMTEtXFx0ZWxzZSBpZiAoZWRldi1cXHUwMDNlZGV2X2luZm8uY29tbW9uLnZ4bGFuX2VuYWJsZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jOjEwMTI6XFx0XFx0ZWRldi1cXHUwMDNlbmRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZxZWRlX3VkcF90dW5uZWxzX3Z4bGFuO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmMtMTAxMy1cXHRlbHNlIGlmIChlZGV2LVxcdTAwM2VkZXZfaW5mby5jb21tb24uZ2VuZXZlX2VuYWJsZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jOjEwMTQ6XFx0XFx0ZWRldi1cXHUwMDNlbmRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZxZWRlX3VkcF90dW5uZWxzX2dlbmV2ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTEwMTUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jPTQ3MT1zdGF0aWMgaW50IHFsY25pY191ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jLTQ4Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmM6NDg3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBxbGNuaWNfdWRwX3R1bm5lbHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jLTQ4OC1cXHQuc3luY190YWJsZVxcdD0gcWxjbmljX3VkcF90dW5uZWxfc3luYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uYz0yMjU0PXFsY25pY19zZXR1cF9uZXRkZXYoc3RydWN0IHFsY25pY19hZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jLTIzMDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jOjIzMDQ6XFx0XFx0bmV0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNnFsY25pY191ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmMtMjMwNS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jPTQyPXN0YXRpYyBpbnQgZWZ4X2VmMTBfc2V0X3VkcF90bmxfcG9ydHMoc3RydWN0IGVmeF9uaWMgKmVmeCwgYm9vbCB1bmxvYWRpbmcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM6NDM6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGVmeF9lZjEwX3VkcF90dW5uZWxzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmMtNDQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jPTUyNT1zdGF0aWMgaW50IGVmeF9lZjEwX3Byb2JlKHN0cnVjdCBlZnhfbmljICplZngpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTY4MC1cXHQgICAgKDEgXFx1MDAzY1xcdTAwM2MgTUNfQ01EX0RSVl9BVFRBQ0hfRVhUX09VVF9GTEFHX1RSVVNURUQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM6NjgxOlxcdFxcdGVmeC1cXHUwMDNlbmV0X2Rldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZlZnhfZWYxMF91ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTY4Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM9Mzk2Mj1zdGF0aWMgaW50IGVmeF9lZjEwX3VkcF90bmxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYy0zOTg0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM6Mzk4NTpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gZWZ4X2VmMTBfdWRwX3R1bm5lbHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYy0zOTg2LVxcdC5zZXRfcG9ydFxcdD0gZWZ4X2VmMTBfdWRwX3RubF9zZXRfcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jPTYxOT1zdGF0aWMgaW50IHR4Z2JlX3VkcF90dW5uZWxfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy02NDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM6NjQyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyB0eGdiZV91ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy02NDMtXFx0LnN5bmNfdGFibGVcXHQ9IHR4Z2JlX3VkcF90dW5uZWxfc3luYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jPTY4MT1zdGF0aWMgaW50IHR4Z2JlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNzQ3LVxcdG5ldGRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZ0eGdiZV9uZXRkZXZfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jOjc0ODpcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2dHhnYmVfdWRwX3R1bm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNzQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM9NjY9bnNpbV91ZHBfdHVubmVsX3N5bmNfdGFibGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtODQtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6ODU6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIG5zaW1fdWRwX3R1bm5lbF9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTg2LVxcdC5zZXRfcG9ydFxcdD0gbnNpbV91ZHBfdHVubmVsX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM9MTI1PWludCBuc2ltX3VkcF90dW5uZWxzX2luZm9fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xMjgtXFx0c3RydWN0IG5ldGRldnNpbSAqbnMgPSBuZXRkZXZfcHJpdihkZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jOjEyOTpcXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbztcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xMzAtXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xODQtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6MTg1OlxcdGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IGluZm87XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTg2LVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM9MTg5PXZvaWQgbnNpbV91ZHBfdHVubmVsc19pbmZvX2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTE5My1cXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUobnMtXFx1MDAzZXVkcF9wb3J0cy5kZGlyKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYzoxOTQ6XFx0a2ZyZWUoZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYzoxOTU6XFx0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gTlVMTDtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xOTYtfVxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD03Nj1zdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6Nzc6c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm87XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC03OC1zdHJ1Y3QgdWRwX3R1bm5lbF9uaWM7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTE4MDQ9ZW51bSBuZXRkZXZfcmVnX3N0YXRlIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjA4OS0gKlxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MjA5MDogKlxcdEB1ZHBfdHVubmVsX25pY19pbmZvOlxcdHN0YXRpYyBzdHJ1Y3R1cmUgZGVzY3JpYmluZyB0aGUgVURQIHR1bm5lbFxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjA5MS0gKlxcdFxcdFxcdFxcdG9mZmxvYWQgY2FwYWJpbGl0aWVzIG9mIHRoZSBkZXZpY2VcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MjEzOT1zdHJ1Y3QgbmV0X2RldmljZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1MDQtI2VuZGlmXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyNTA1OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvXFx0KnVkcF90dW5uZWxfbmljX2luZm87XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yNTA2LVxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY1xcdCp1ZHBfdHVubmVsX25pYztcXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0yMjU9c3RhdGljIGlubGluZSB2b2lkIHVkcF90dW5uZWxfZW5jYXBfZW5hYmxlKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0yMzgtXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjIzOTplbnVtIHVkcF90dW5uZWxfbmljX2luZm9fZmxhZ3Mge1xcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0yNDAtXFx0LyogRGV2aWNlIG9ubHkgc3VwcG9ydHMgb2ZmbG9hZHMgd2hlbiBpdCdzIG9wZW4sIGFsbCBwb3J0c1xcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTI1Nz1zdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfc2hhcmVkIHtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MjU4OlxcdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdWRwX3R1bm5lbF9uaWNfaW5mbztcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMjU5LVxcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTI2Mz1zdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfc2hhcmVkX25vZGUge1xcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTI2OC0vKipcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MjY5OiAqIHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIC0gZHJpdmVyIFVEUCB0dW5uZWwgb2ZmbG9hZCBpbmZvcm1hdGlvblxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0yNzAtICogQHNldF9wb3J0OlxcdGNhbGxiYWNrIGZvciBhZGRpbmcgYSBuZXcgcG9ydFxcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTI3My0gKiBAc2hhcmVkOlxcdHJlZmVyZW5jZSB0byBkZXZpY2UgZ2xvYmFsIHN0YXRlIChvcHRpb25hbClcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6Mjc0OiAqIEBmbGFnczpcXHRkZXZpY2UgZmxhZ3MgZnJvbSBlbnVtIHVkcF90dW5uZWxfbmljX2luZm9fZmxhZ3NcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMjc1LSAqIEB0YWJsZXM6XFx0VURQIHBvcnQgdGFibGVzIHRoaXMgZGV2aWNlIGhhc1xcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTI5Ni0gKi9cXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6Mjk3OnN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMjk4LVxcdC8qIG9uZS1ieS1vbmUgKi9cXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zMjItICogbW9kdWxlLiBOSUMgZHJpdmVycyBhcmUgbm90LCB0aGV5IGp1c3QgYXR0YWNoIHRoZWlyXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjMyMzogKiBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyB0byB0aGUgbmV0ZGV2IGFuZCB3YWl0IGZvciBjYWxsYmFja3MgdG8gY29tZS5cXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzI0LSAqIExvYWRpbmcgYSB0dW5uZWwgZHJpdmVyIHdpbGwgY2F1c2UgdGhlIHVkcF90dW5uZWwgbW9kdWxlIHRvIGJlIGxvYWRlZFxcbi0tXFxubmV0L2NvcmUvZGV2LmM9MTEzMjA9aW50IHJlZ2lzdGVyX25ldGRldmljZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L2NvcmUvZGV2LmMtMTEzOTQtXFxubmV0L2NvcmUvZGV2LmM6MTEzOTU6XFx0aWYgKGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbykge1xcbm5ldC9jb3JlL2Rldi5jLTExMzk2LVxcdFxcdGRldi1cXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9SWF9VRFBfVFVOTkVMX1BPUlQ7XFxuLS1cXG5uZXQvZXRodG9vbC90dW5uZWxzLmM9MzY9ZXRobmxfdHVubmVsX2luZm9fcmVwbHlfc2l6ZShjb25zdCBzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9iYXNlLFxcbi0tXFxubmV0L2V0aHRvb2wvdHVubmVscy5jLTM5LVxcdGJvb2wgY29tcGFjdCA9IHJlcV9iYXNlLVxcdTAwM2VmbGFncyBcXHUwMDI2IEVUSFRPT0xfRkxBR19DT01QQUNUX0JJVFNFVFM7XFxubmV0L2V0aHRvb2wvdHVubmVscy5jOjQwOlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvO1xcbm5ldC9ldGh0b29sL3R1bm5lbHMuYy00MS1cXHR1bnNpZ25lZCBpbnQgaTtcXG4tLVxcbm5ldC9ldGh0b29sL3R1bm5lbHMuYy00NC1cXG5uZXQvZXRodG9vbC90dW5uZWxzLmM6NDU6XFx0aW5mbyA9IHJlcV9iYXNlLVxcdTAwM2VkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2V0aHRvb2wvdHVubmVscy5jLTQ2LVxcdGlmICghaW5mbykge1xcbi0tXFxubmV0L2V0aHRvb2wvdHVubmVscy5jPTgyPWV0aG5sX3R1bm5lbF9pbmZvX2ZpbGxfcmVwbHkoY29uc3Qgc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcXG4tLVxcbm5ldC9ldGh0b29sL3R1bm5lbHMuYy04NS1cXHRib29sIGNvbXBhY3QgPSByZXFfYmFzZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBFVEhUT09MX0ZMQUdfQ09NUEFDVF9CSVRTRVRTO1xcbm5ldC9ldGh0b29sL3R1bm5lbHMuYzo4NjpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbztcXG5uZXQvZXRodG9vbC90dW5uZWxzLmMtODctXFx0c3RydWN0IG5sYXR0ciAqcG9ydHMsICp0YWJsZSwgKmVudHJ5O1xcbi0tXFxubmV0L2V0aHRvb2wvdHVubmVscy5jLTg5LVxcbm5ldC9ldGh0b29sL3R1bm5lbHMuYzo5MDpcXHRpbmZvID0gcmVxX2Jhc2UtXFx1MDAzZWRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvZXRodG9vbC90dW5uZWxzLmMtOTEtXFx0aWYgKCFpbmZvKVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xMzQ9dWRwX3R1bm5lbF9uaWNfaXNfZW1wdHkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMzUte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTM2OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTM3LVxcdHVuc2lnbmVkIGludCBpLCBqO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xNDc9dWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTU1LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB1dG4tXFx1MDAzZW5fdGFibGVzOyBpKyspIHtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjE1NjpcXHRcXHR0YWJsZSA9IFxcdTAwMjZkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8tXFx1MDAzZXRhYmxlc1tpXTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE1Ny1cXHRcXHRpZiAoIXRlc3RfYml0KGksIFxcdTAwMjZ1dG4tXFx1MDAzZW1pc3NlZCkpXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTIxMz11ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19vbmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjI2LVxcdGlmIChlbnRyeS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBVRFBfVFVOTkVMX05JQ19FTlRSWV9BREQpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyMjc6XFx0XFx0ZXJyID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVxcdTAwM2VzZXRfcG9ydChkZXYsIHRhYmxlLCBpZHgsIFxcdTAwMjZ0aSk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMjgtXFx0ZWxzZVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjI5OlxcdFxcdGVyciA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cXHUwMDNldW5zZXRfcG9ydChkZXYsIHRhYmxlLCBpZHgsXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMzAtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNnRpKTtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjQyPXVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX2J5X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjQ0LXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI0NTpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI0Ni1cXHR1bnNpZ25lZCBpbnQgaSwgajtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjU0PXVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX2J5X3RhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI1Ni17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyNTc6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNTgtXFx0dW5zaWduZWQgaW50IGksIGo7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTI4NT1fX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yODktXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyOTA6XFx0aWYgKGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cXHUwMDNlc3luY190YWJsZSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI5MS1cXHRcXHR1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV90YWJsZShkZXYsIHV0bik7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTMyMz11ZHBfdHVubmVsX25pY19pc19jYXBhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMjUte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MzI2OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzI3LVxcdHVuc2lnbmVkIGludCBpO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zNDE9dWRwX3R1bm5lbF9uaWNfaGFzX2NvbGxpc2lvbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzQzLXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjM0NDpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTM0NS1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz00MjU9dWRwX3R1bm5lbF9uaWNfdHJ5X2V4aXN0aW5nKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00MzEtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHV0bi1cXHUwMDNlbl90YWJsZXM7IGkrKykge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDMyOlxcdFxcdHRhYmxlID0gXFx1MDAyNmRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cXHUwMDNldGFibGVzW2ldO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDMzLVxcdFxcdGlmICghdWRwX3R1bm5lbF9uaWNfdGFibGVfaXNfY2FwYWJsZSh0YWJsZSwgdGkpKVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz00NjA9dWRwX3R1bm5lbF9uaWNfYWRkX25ldyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDY2LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB1dG4tXFx1MDAzZW5fdGFibGVzOyBpKyspIHtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQ2NzpcXHRcXHR0YWJsZSA9IFxcdTAwMjZkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8tXFx1MDAzZXRhYmxlc1tpXTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ2OC1cXHRcXHRpZiAoIXVkcF90dW5uZWxfbmljX3RhYmxlX2lzX2NhcGFibGUodGFibGUsIHRpKSlcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NDk3PV9fdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00OTgte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDk5OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTAwLVxcdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz01NDc9c3RhdGljIHZvaWQgX191ZHBfdHVubmVsX25pY19yZXNldF9udGYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU0OC17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1NDk6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01NTAtXFx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTU4Mz1fX3VkcF90dW5uZWxfbmljX2R1bXBfc2l6ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01ODQte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTg1OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTg2LVxcdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz02MDg9X191ZHBfdHVubmVsX25pY19kdW1wX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjEwLXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjYxMTpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYxMi1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bjtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9Njg1PXVkcF90dW5uZWxfbmljX2ZsdXNoKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjg2LXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY4NzpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY4OC1cXHR1bnNpZ25lZCBpbnQgaSwgajtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NzA4PXVkcF90dW5uZWxfbmljX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTcwOS17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3MTA6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03MTEtXFx0c3RydWN0IHVkcF90dW5uZWxfbmljX3NoYXJlZF9ub2RlICpub2RlO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz03NTY9c3RhdGljIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3NTc6dWRwX3R1bm5lbF9uaWNfYWxsb2MoY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8sXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03NTgtXFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgbl90YWJsZXMpXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTgwNj1zdGF0aWMgaW50IHVkcF90dW5uZWxfbmljX3JlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04MDcte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODA4OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODA5LVxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19zaGFyZWRfbm9kZSAqbm9kZSA9IE5VTEw7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg0Ny1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjg0ODpcXHRpZiAoaW5mby1cXHUwMDNlc2hhcmVkIFxcdTAwMjZcXHUwMDI2IGluZm8tXFx1MDAzZXNoYXJlZC1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbykge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODQ5OlxcdFxcdHV0biA9IGluZm8tXFx1MDAzZXNoYXJlZC1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg1MC1cXHR9IGVsc2Uge1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NTgtXFx0aWYgKGluZm8tXFx1MDAzZXNoYXJlZCkge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODU5OlxcdFxcdGlmICghaW5mby1cXHUwMDNlc2hhcmVkLVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvKSB7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NjAtXFx0XFx0XFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmluZm8tXFx1MDAzZXNoYXJlZC1cXHUwMDNlZGV2aWNlcyk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4NjE6XFx0XFx0XFx0aW5mby1cXHUwMDNlc2hhcmVkLVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gdXRuO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODYyLVxcdFxcdH1cXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9ODgxPXVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04ODIte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODgzOlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODg0LVxcdGJvb2wgbGFzdCA9IHRydWU7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkxNC1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjkxNTpcXHRcXHRpbmZvLVxcdTAwM2VzaGFyZWQtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBOVUxMO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTE2LVxcdH1cXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9OTMyPXVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTM1LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBuZXRkZXZfbm90aWZpZXJfaW5mb190b19kZXYocHRyKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjkzNjpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkzNy1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bjtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkzOC1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjkzOTpcXHRpbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTQwLVxcdGlmICghaW5mbylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6Mzc6MDMuMTA2MDIyMTg1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNjQyMTkwNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIGB1ZHBfdHVubmVsX25pY2AgVXNhZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGB1ZHBfdHVubmVsX25pY2AgY29kZSwgYW5kIGl0J3MgdXNlZCBieSBhICp0b24qIG9mIGRyaXZlcnMuIGB4Z2JlYCwgYGJueDJ4YCwgYGJueHRgLCBgbGlxdWlkaW9gLCBgY3hnYjRgLi4uIHRoZSBsaXN0IGdvZXMgb24gYW5kIG9uLCByaWdodD8gU2VlbXMgcHJldHR5IHdpZGVseSBhZG9wdGVkLiBCdXQgdGhlbiBJIHNhdyBgbmV0ZGV2c2ltYCBpbiB0aGVyZS4gV2FpdCBhIHNlY29uZCwgYG5ldGRldnNpbWAgdXNlcyBpdD8gVGhhdCdzIGludGVyZXN0aW5nLiBJIGtub3cgaG93IGBuZXRkZXZzaW1gIHdvcmtzOyBpdCdzIGEgKnZpcnR1YWwqIG5ldHdvcmsgZGV2aWNlLiBBaGEhIFRoYXQgbWVhbnMgdGhpcyBgdWRwX3R1bm5lbF9uaWNgIGNvZGUgaXMgKmRlZmluaXRlbHkqIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHNwZWNpZmljYWxseSB0aHJvdWdoIGBuZXRkZXZzaW1gLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqLiBJJ20gZ29pbmcgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuY2AgdG8gc2VlIHByZWNpc2VseSB3aGF0J3MgZ29pbmcgb24gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5OTczLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM3OjA4LjE3MDI0NDg1OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk1NDQ5ODE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5zaW1fdWRwX3R1bm5lbHNfaW5mb19jcmVhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9MTAzOD1zdGF0aWMgaW50IG5zaW1faW5pdF9uZXRkZXZzaW0oc3RydWN0IG5ldGRldnNpbSAqbnMpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtMTA1My1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6MTA1NDpcXHRlcnIgPSBuc2ltX3VkcF90dW5uZWxzX2luZm9fY3JlYXRlKG5zLVxcdTAwM2Vuc2ltX2RldiwgbnMtXFx1MDAzZW5ldGRldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTEwNTUtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaD0xNzM9dm9pZCBuc2ltX3VkcF90dW5uZWxzX2RlYnVnZnNfY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxNzQ6aW50IG5zaW1fdWRwX3R1bm5lbHNfaW5mb19jcmVhdGUoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldixcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTc1LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jPTExOD1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBuc2ltX3VkcF90dW5uZWxzX2luZm9fcmVzZXRfZm9wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTEyNC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYzoxMjU6aW50IG5zaW1fdWRwX3R1bm5lbHNfaW5mb19jcmVhdGUoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldixcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xMjYtXFx0XFx0XFx0XFx0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM3OjA4LjM2NTcwMDYxNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjkwODM3NzkyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjIwMTYxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzozNzoyNS4yNzQwODIwOTNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMTg2MDUxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1ZHBfdHVubmVsX25pY193b3JrcXVldWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9Mzk9c3RydWN0IHVkcF90dW5uZWxfbmljIHtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTktICovXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2MDpzdGF0aWMgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYxLVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zMDY9dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMxMC1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMxMTpcXHRpZiAocXVldWVfd29yayh1ZHBfdHVubmVsX25pY193b3JrcXVldWUsIFxcdTAwMjZ1dG4tXFx1MDAzZXdvcmspKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzEyLVxcdFxcdHJlZmNvdW50X2luYyhcXHUwMDI2dXRuLVxcdTAwM2VyZWZjbnQpO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz05ODY9c3RhdGljIGludCBfX2luaXQgdWRwX3R1bm5lbF9uaWNfaW5pdF9tb2R1bGUodm9pZClcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTg5LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTkwOlxcdHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSA9IGFsbG9jX29yZGVyZWRfd29ya3F1ZXVlKFxcXCJ1ZHBfdHVubmVsX25pY1xcXCIsIDApO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTkxOlxcdGlmICghdWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTkyLVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDA3LVxcdHJ0bmxfdW5sb2NrKCk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxMDA4OlxcdGRlc3Ryb3lfd29ya3F1ZXVlKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDA5LVxcdHJldHVybiBlcnI7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTEwMTM9c3RhdGljIHZvaWQgX19leGl0IHVkcF90dW5uZWxfbmljX2NsZWFudXBfbW9kdWxlKHZvaWQpXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEwMjAtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxMDIxOlxcdGRlc3Ryb3lfd29ya3F1ZXVlKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDIyLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6Mzc6MjUuNTc1OTQ3Njc2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0Mjg2NTA1ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ3JpdGljYWwgQnVnIEZpeCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgbmFzdHkgcmFjZSBjb25kaXRpb24gaW4gYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgLiBUaGUgb2xkIGNvZGUgaGFkIGEgZmxhdyDigJMgaXQgd2FpdGVkIGZvciBgd29ya19wZW5kaW5nYCB0byBoaXQgemVybywgYnV0IHRoZSBhc3NvY2lhdGVkIHdvcmsgY291bGQgc3RpbGwgYmUgcnVubmluZyBhbmQgdHJ5aW5nIHRvIGFjY2VzcyB0aGUgbm93LWZyZWVkIGB1dG5gIHN0cnVjdHVyZS4gVGhhdCdzIGEgY2xhc3NpYyBtZW1vcnkgY29ycnVwdGlvbiBidWcsIGFuZCB0aGUgcmVmY291bnQgYXBwcm9hY2ggc2VlbXMgbGlrZSBhIHNvbGlkIGZpeC4gSXQncyBtdWNoIG1vcmUgcm9idXN0LlxuXG5UaGlzIGlzICphYnNvbHV0ZWx5KiBzb21ldGhpbmcgdGhhdCBkZW1hbmRzIGZ1enppbmcuIEEgcmFjZSBjb25kaXRpb24gbGlrZSB0aGF0LCBlc3BlY2lhbGx5IGFyb3VuZCByZXNvdXJjZSBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24sIGlzIHByaW1lIHRlcnJpdG9yeSBmb3IgdW5jb3ZlcmluZyB2dWxuZXJhYmlsaXRpZXMuIFRoZSBwYXRjaCdzIGltcGFjdCBzb3VuZHMgZmFpcmx5IGxvY2FsaXplZCwgd2hpY2ggbWFrZXMgaXQgYW4gaWRlYWwgY2FuZGlkYXRlIGZvciB0YXJnZXRlZCBmdXp6aW5nLiBJ4oCZZCB3YW50IHRvIGNvbmZpcm0gdGhhdCB0aGUgcmVmY291bnQgaGFuZGxlcyB0aGUgZWRnZSBjYXNlcyBhcyBleHBlY3RlZCwgYW5kIHRlc3QgcG90ZW50aWFsIHNjZW5hcmlvcyB3aGVyZSBjb25jdXJyZW50IGFjY2Vzc2VzIG1pZ2h0IHN0aWxsIHNuZWFrIHRocm91Z2guXG5cbk5vdywgd2hhdCBhcmUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byB0cmlnZ2VyIHRoaXM/IEFoLCBJIHJlbWVtYmVyLCBJIG5lZWQgYENPTkZJR19ORVRERVZTSU1gIHRvIGVuYWJsZSBgbmV0ZGV2c2ltYCwgd2hpY2gsIGZyb20gbWVtb3J5LCB1dGlsaXplcyBgdWRwX3R1bm5lbF9uaWNgLiBCdXQgd2FpdCwgZG9lcyBlbmFibGluZyB0aGUgbmV0ZGV2c2ltIGFsc28gaW1wbGljaXRseSBzZWxlY3QgYE5FVF9VRFBfVFVOTkVMYD8gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcyB0byBiZSBzdXJlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBzZXR0aW5nIGV2ZXJ5dGhpbmcgdXAgY29ycmVjdGx5IGJlZm9yZSBzdGFydGluZyB0aGUgZnV6emluZyBjYW1wYWlnbi4gTmVlZCB0byBjb25maXJtIHRoYXQgYE5FVF9VRFBfVFVOTkVMYCBpcyBlbmFibGVkIHNvIEknbSBhY3R1YWxseSB0ZXN0aW5nIHRoZSBwYXRjaGVkIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNDEyLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM3OjMxLjAwNDYwMjEzMVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc4MTY5MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkVUREVWU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz02MDI9c291cmNlIFxcXCJkcml2ZXJzL25ldC9oeXBlcnYvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwMy1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwNDpjb25maWcgTkVUREVWU0lNXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MDUtXFx0dHJpc3RhdGUgXFxcIlNpbXVsYXRlZCBuZXR3b3JraW5nIGRldmljZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6Mzc6MzEuMDYyNDI3NTM5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5Mzk2MzM2MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjoyMTk1NiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6Mzc6MzcuMDAyMDY1NzIyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE1NDU4MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkVUX1VEUF9UVU5ORUxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTc0PWNvbmZpZyBXSVJFR1VBUkRcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctNzYtXFx0ZGVwZW5kcyBvbiBORVQgXFx1MDAyNlxcdTAwMjYgSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWc6Nzc6XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuZHJpdmVycy9uZXQvS2NvbmZpZy03OC1cXHRzZWxlY3QgRFNUX0NBQ0hFXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTEwMz1jb25maWcgT1ZQTlxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMDYtXFx0c2VsZWN0IERTVF9DQUNIRVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTA3OlxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbmRyaXZlcnMvbmV0L0tjb25maWctMTA4LVxcdHNlbGVjdCBDUllQVE9cXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MjMwPWNvbmZpZyBWWExBTlxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMzItXFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyMzM6XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMzQtXFx0c2VsZWN0IEdST19DRUxMU1xcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNDU9Y29uZmlnIEdFTkVWRVxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNDctXFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyNDg6XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNDktXFx0c2VsZWN0IEdST19DRUxMU1xcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNjA9Y29uZmlnIEJBUkVVRFBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMjYyLVxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjYzOlxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjY0LVxcdHNlbGVjdCBHUk9fQ0VMTFNcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MjcyPWNvbmZpZyBHVFBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMjc0LVxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWc6Mjc1OlxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjc2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9Mjg5PWNvbmZpZyBQRkNQXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTI5MS1cXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnOjI5MjpcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI5My1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTMwMj1jb25maWcgQU1UXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTMwNC1cXHRkZXBlbmRzIG9uIElORVQgXFx1MDAyNlxcdTAwMjYgSVBfTVVMVElDQVNUXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozMDU6XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDYtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzozNzozNy4xNjM2MTc3OThaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzg0NTYwMjMxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBORVRfVURQX1RVTk5FTCBEZXBlbmRlbmN5KipcblxuT2theSwgc28gYE5FVERFVlNJTWAgaXNuJ3QgZGlyZWN0bHkgY2hvb3NpbmcgYE5FVF9VRFBfVFVOTkVMYCwgd2hpY2ggaXMgYSBiaXQgcHV6emxpbmcuIEJ1dCwgaGFuZyBvbi4uLiBgdWRwX3R1bm5lbF9uaWMuY2AgKmlzKiBiZWluZyBjb21waWxlZCB3aGVuIGBORVRfVURQX1RVTk5FTGAgaXMgZW5hYmxlZC4gVGhhdCdzIHRoZSBjbHVlLiBOb3cgaXQgY2xpY2tzISBgTkVUX1VEUF9UVU5ORUxgIGlzIHB1bGxlZCBpbiBpbmRpcmVjdGx5IGJ5IHRoaW5ncyBsaWtlIGBWWExBTmAgYW5kIGBHRU5FVkVgLiBTbywgdG8gZ2V0IGBORVRfVURQX1RVTk5FTGAgZW5hYmxlZCBhbmQgYXZhaWxhYmxlIHdoZW4gdXNpbmcgYE5FVERFVlNJTWAsIEkgbmVlZCB0byBtYWtlIHN1cmUgb25lIG9mIHRob3NlIGVuY2Fwc3VsYXRpbmcgcHJvdG9jb2xzIGlzIGFsc28gc2VsZWN0ZWQuIEkgbmVlZCB0byBlbmFibGUgYm90aCBgTkVUREVWU0lNYCBhbmQgYFZYTEFOYCBvciBgR0VORVZFYC4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYnkgbG9va2luZyBhdCB0aGUgYGRyaXZlcnMvbmV0L25ldGRldnNpbS9LY29uZmlnYCBmaWxlLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB0aGVyZSBpc24ndCBzb21lIG90aGVyIGhpZGRlbiBkZXBlbmRlbmN5IEknbSBtaXNzaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjU4MSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzozNzo0NS4wMDkyMjQ4OTJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNTA3Mjk4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRERVZTSU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM3OjQ1LjA3Mjc0MDg3MVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTE5MzY3MjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgdGhlIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyB0aGUgS2NvbmZpZyBMYW5kc2NhcGUqKlxuXG5IbW0sIEkgd2FzIGp1c3QgbG9va2luZyBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGBuZXRkZXZzaW1gIGRyaXZlciwgYW5kIEkgZXhwZWN0ZWQgdG8gZmluZCB0aGUgYEtjb25maWdgIGZpbGUgaW4gYGRyaXZlcnMvbmV0L25ldGRldnNpbS9gLiBCdXQsIHdhaXQgYSBtaW51dGUuLi50aGF0IHBhdGggZG9lc24ndCBzZWVtIHRvIGV4aXN0LiBUaGF0J3MgdW51c3VhbC4gSSBrbm93IHRoaXMgY29kZWJhc2UgcHJldHR5IHdlbGwsIGFuZCBpZiBpdCdzIG5vdCB3aGVyZSBJIGFudGljaXBhdGUsIGl0IHVzdWFsbHkgbWVhbnMgYSByZS1vcmdhbml6YXRpb24gb3IgcGVyaGFwcyBpdCBpcyBpbmNsdWRlZCBpbiBhIHBhcmVudCBmb2xkZXIuIExldCdzIGJhY2t0cmFjayBhbmQgZG91YmxlLWNoZWNrIGBkcml2ZXJzL25ldC9LY29uZmlnYCBkaXJlY3RseS4gTXkgc3VzcGljaW9uIGlzIHRoYXQgYE5FVERFVlNJTWAgbWlnaHQgYmUgZGVmaW5lZCB0aGVyZSwgcGVyaGFwcyBhcyBhIHRvcC1sZXZlbCBmZWF0dXJlIG9yIGEgc3ViLWNvbmZpZ3VyYXRpb24gdW5kZXIgYSBicm9hZGVyIG5ldHdvcmtpbmcgdW1icmVsbGEuIE5lZWQgdG8gcXVpY2tseSBlbnN1cmUgdGhpcyBpcyB3aGVyZSBpdCByZXNpZGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjk2NSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM3OjQ4LjU5MjExMTUxM1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1NTgxMjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRERVZTSU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9NjAyPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MDMtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDQ6Y29uZmlnIE5FVERFVlNJTVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM3OjQ4Ljc3NzY5OTI4OVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDM5NzMyMDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MjMzMDUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM3OjUxLjgxNzQzNTA2M1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTQ5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwNCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDYwNDpcXHRjb25maWcgTkVUREVWU0lNXFxuIDYwNTpcXHRcXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXFxcIlxcbiA2MDY6XFx0XFx0ZGVwZW5kcyBvbiBERUJVR19GU1xcbiA2MDc6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuIDYwODpcXHRcXHRkZXBlbmRzIG9uIFBTQU1QTEUgfHwgUFNBTVBMRT1uXFxuIDYwOTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX01PQ0sgfHwgUFRQXzE1ODhfQ0xPQ0tfTU9DSz1uXFxuIDYxMDpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gNjExOlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gNjEyOlxcdFxcdHNlbGVjdCBORVRfU0hBUEVSXFxuIDYxMzpcXHRcXHRoZWxwXFxuIDYxNDpcXHRcXHQgIFRoaXMgZHJpdmVyIGlzIGEgZGV2ZWxvcGVyIHRlc3RpbmcgdG9vbCBhbmQgc29mdHdhcmUgbW9kZWwgdGhhdCBjYW5cXG4gNjE1OlxcdFxcdCAgYmUgdXNlZCB0byB0ZXN0IHZhcmlvdXMgY29udHJvbCBwYXRoIG5ldHdvcmtpbmcgQVBJcywgZXNwZWNpYWxseVxcbiA2MTY6XFx0XFx0ICBIVy1vZmZsb2FkIHJlbGF0ZWQuXFxuIDYxNzpcXHRcXG4gNjE4OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiA2MTk6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBuZXRkZXZzaW0uXFxuIDYyMDpcXHRcXG4gNjIxOlxcdGNvbmZpZyBORVRfRkFJTE9WRVJcXG4gNjIyOlxcdFxcdHRyaXN0YXRlIFxcXCJGYWlsb3ZlciBkcml2ZXJcXFwiXFxuIDYyMzpcXHRcXHRzZWxlY3QgRkFJTE9WRVJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6Mzc6NTEuODE3NTI2MDUzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5NjMwMjM2MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEZWJ1Z2dpbmcgTkVUREVWU0lNIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBgTkVUREVWU0lNYCBpc24ndCBwaWNraW5nIHVwIGBORVRfVURQX1RVTk5FTGAgYXMgZXhwZWN0ZWQuIFRoYXQncyBhIGJpdCBvZGQuIEkga25vdyBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmNgIGlzIGludm9sdmVkLCBhbmQgdGhlIGRvY3VtZW50YXRpb24gaW5kaWNhdGVzIGl0IGNhbiBiZSBjb21waWxlZCBjb25kaXRpb25hbGx5LCBtZWFuaW5nIGl0IGRlcGVuZHMgb24gYSBjb25maWd1cmF0aW9uIG9wdGlvbiBiZWluZyBzZXQuIFRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgY29uZmlybSB0aGF0IHRoZSBjb21waWxhdGlvbiBvZiB0aGlzIG1vZHVsZSBpcyBhY3R1YWxseSBpbnRlbmRlZC4gVGhlcmVmb3JlIEkgc2hvdWxkIGV4YW1pbmUgdGhlIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vTWFrZWZpbGVgIHRvIHNlZSB1bmRlciB3aGF0IGNvbmRpdGlvbnMgdGhlIGB1ZHBfdHVubmVscy5jYCBmaWxlIGlzIGluY2x1ZGVkIGluIHRoZSBidWlsZC4gSSdsbCBuZWVkIHRvIHJldmlldyBhbnkgY29uZGl0aW9uYWwgbG9naWMgb3IgZGVwZW5kZW5jaWVzIGRlZmluZWQgaW4gdGhhdCBNYWtlZmlsZSB0byBkZXRlcm1pbmUgd2h5IGBORVRfVURQX1RVTk5FTGAgaXNuJ3QgYmVpbmcgc2V0IGNvcnJlY3RseSBkdXJpbmcgdGhlIGBORVRERVZTSU1gIGJ1aWxkIHByb2Nlc3MuIEl0J3MgcHJvYmFibHkganVzdCBhIHNpbXBsZSBjb25maWd1cmF0aW9uIGlzc3VlLCBidXQgSSBuZWVkIHRvIHBpbnBvaW50IHdoZXJlIHRoZSBwcm9ibGVtIGxpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNjM5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzozNzo1Ni43ODA1NTMzNVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQxMTg2MTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVkcF90dW5uZWxzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vTWFrZWZpbGU9NT1uZXRkZXZzaW0tb2JqcyA6PSBcXFxcXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL01ha2VmaWxlOjY6XFx0bmV0ZGV2Lm8gZGV2Lm8gZXRodG9vbC5vIGZpYi5vIGJ1cy5vIGhlYWx0aC5vIGh3c3RhdHMubyB1ZHBfdHVubmVscy5vIHRjLm9cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vTWFrZWZpbGUtNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6Mzc6NTcuMTIxODAzMzcxWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3OTg5OTc0NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbCBCdWlsZCBDb25maWd1cmF0aW9uIENvbmZsaWN0KipcblxuT2theSwgc28gSSdtIG5vdGljaW5nIHNvbWV0aGluZyBwb3RlbnRpYWxseSBwcm9ibGVtYXRpYyB3aXRoIHRoZSBidWlsZCBwcm9jZXNzLiBJdCBzZWVtcyB0aGF0IGB1ZHBfdHVubmVscy5vYCBpcyAqYWx3YXlzKiBjb21waWxlZCB3aGVuIGBORVRERVZTSU1gIGlzIGVuYWJsZWQuIFRoYXQncyBmaW5lIGluIGl0c2VsZi4gQnV0LCBJJ20gYWxzbyBzZWVpbmcgdGhhdCBgdWRwX3R1bm5lbF9uaWMuY2AsIHdoaWNoIGlzIGxvY2F0ZWQgaW4gYG5ldC9pcHY0L01ha2VmaWxlYCwgaGFzIGEgZGVwZW5kZW5jeSBvbiBgQ09ORklHX05FVF9VRFBfVFVOTkVMYC4gVGhhdCdzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcuXG5cbk15IGNvbmNlcm4gaXMgd2hhdCBoYXBwZW5zIGlmIGBORVRERVZTSU1gICppcyogZW5hYmxlZCwgYnV0IGBDT05GSUdfTkVUX1VEUF9UVU5ORUxgIGlzIGRpc2FibGVkLiBUaGF0J3MgYSBjbGFzc2ljIHJlY2lwZSBmb3IgYSBidWlsZC10aW1lIGZhaWx1cmUsIG9yIHdvcnNlLCBzb21lIHVuZXhwZWN0ZWQgcnVudGltZSBiZWhhdmlvci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gaXMgZGVzaWduZWQgdG8gcmVzcG9uZCB0byB0aGlzIHBhcnRpY3VsYXIgY29tYmluYXRpb24gb2YgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuXG5UaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBzb3VyY2UgY29kZSBvZiBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmNgLiBJJ20gZ29pbmcgdG8gbG9vayBzcGVjaWZpY2FsbHkgZm9yIGAjaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX1VEUF9UVU5ORUwpYCBkaXJlY3RpdmVzLiBUaGF0IHdpbGwgdGVsbCBtZSBpbW1lZGlhdGVseSBpZiB0aGUgY29kZSB3aXRoaW4gYHVkcF90dW5uZWxzLmNgIGlzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgYmFzZWQgb24gdGhlIHByZXNlbmNlIG9mIHRoYXQgY3J1Y2lhbCBjb25maWd1cmF0aW9uIG9wdGlvbi4gVGhpcyB3aWxsIGRpcmVjdGx5IGluZGljYXRlIHdoZXRoZXIgdGhlIGJ1aWxkIHByb2Nlc3MgdGFrZXMgdGhpcyBjb25mbGljdCBpbnRvIGFjY291bnQsIG9yIGlmIGl0IHNpbXBseSBwcm9kdWNlcyBhbiBhcnRpZmFjdCB0aGF0IGlzIG5vdCBidWlsZGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MDQzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM4OjAyLjkyMDgwNTc4N1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEzMTQ2NjgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19ORVRfVURQX1RVTk5FTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6Mzg6MDIuOTgyMTI4NzE2WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNzAzMDIzNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZm9yIGFuIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBEYXRhIFN0cnVjdHVyZXMqKlxuXG5BbHJpZ2h0LCBzbyBJIG5lZWQgdG8gZmluZCB3aGVyZSB0aGUgYHVkcF90dW5uZWxfbmljX2luZm9gIHN0cnVjdHVyZSBpcyBkZWZpbmVkLiBHaXZlbiB0aGUgY29udGV4dCwgbXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGl0J3MgbGlrZWx5IGhvdXNlZCB3aXRoaW4gdGhlIGtlcm5lbCdzIG5ldHdvcmsgc3RhY2suIFRoZSB0d28gbW9zdCBwcm9iYWJsZSBsb2NhdGlvbnMganVtcCB0byBtaW5kOiBlaXRoZXIgd2l0aGluIHRoZSBgaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oYCBmaWxlLCBhcyB0aGUgbmFtZSBzdHJvbmdseSBzdWdnZXN0cyBhIGNvbm5lY3Rpb24gdG8gVURQIHR1bm5lbGluZywgb3IgcGVyaGFwcyBpbiBgaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaGAuIFRoZSBsYXR0ZXIgaXMgdGhlIGdlbmVyYWwgaGVhZGVyIGZvciBuZXR3b3JrIGRldmljZSBkZWZpbml0aW9ucywgYW5kIGl0IHdvdWxkbid0IGJlIHN1cnByaXNpbmcgaWYgc29tZSBhc3NvY2lhdGVkIGluZm9ybWF0aW9uIHdlcmUga2VwdCB0aGVyZS4gSSdsbCBzdGFydCBieSBjaGVja2luZyB0aG9zZSB0d28gZmlsZXMg4oCTIGl0J3MgdGhlIG1vc3QgZWZmaWNpZW50IHdheSB0byBwaW5wb2ludCB0aGUgZXhhY3QgZGVmaW5pdGlvbiBhbmQgdW5kZXJzdGFuZCBpdHMgZmllbGRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDUxNiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM4OjA3LjE1MjQzMzYzMloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM4Mzc3OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWRwX3R1bm5lbF9uaWNfaW5mb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9NzY9c3RydWN0IHVkcF90dW5uZWxfaW5mbztcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjc3OnN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNzgtc3RydWN0IHVkcF90dW5uZWxfbmljO1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0xODA0PWVudW0gbmV0ZGV2X3JlZ19zdGF0ZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTIwODktICpcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjIwOTA6ICpcXHRAdWRwX3R1bm5lbF9uaWNfaW5mbzpcXHRzdGF0aWMgc3RydWN0dXJlIGRlc2NyaWJpbmcgdGhlIFVEUCB0dW5uZWxcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTIwOTEtICpcXHRcXHRcXHRcXHRvZmZsb2FkIGNhcGFiaWxpdGllcyBvZiB0aGUgZGV2aWNlXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTIxMzk9c3RydWN0IG5ldF9kZXZpY2Uge1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yNTA0LSNlbmRpZlxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MjUwNTpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mb1xcdCp1ZHBfdHVubmVsX25pY19pbmZvO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjUwNi1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNcXHQqdWRwX3R1bm5lbF9uaWM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM4OjA3LjIxNjI3ODY1WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzNzYzOTY5NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBVbmV4cGVjdGVkIERhdGEgU3RydWN0dXJlIFVzYWdlKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUsIGFuZCBzb21ldGhpbmcncyBidWdnaW5nIG1lLiBJdCBzZWVtcyBsaWtlIGV2ZW4gd2hlbiB0aGUgYE5FVF9VRFBfVFVOTkVMYCBmZWF0dXJlIGlzIGRpc2FibGVkLCB0aGUgYHVkcF90dW5uZWxfbmljX2luZm9gIGZpZWxkIGlzIHN0aWxsIHByZXNlbnQgd2l0aGluIHRoZSBgc3RydWN0IG5ldF9kZXZpY2VgLiBUaGF0IHN0cmlrZXMgbWUgYXMgb2RkLiBJdCBzaG91bGQgYmUgY29uZGl0aW9uYWwsIHJpZ2h0PyBBIGZlYXR1cmUgZmxhZyB3b3VsZCB1c3VhbGx5IGNvbnRyb2wgc29tZXRoaW5nIGxpa2UgdGhhdC5cblxuQnV0IGhhbmcgb27igKYgaXMgYHVkcF90dW5uZWxfbmljX3JlZ2lzdGVyYCBhY3R1YWxseSBiZWluZyBjYWxsZWQgZnJvbSBgcmVnaXN0ZXJfbmV0ZGV2aWNlYD8gVGhhdCB3b3VsZCBtYWtlIHNlbnNlLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gTGV0J3MgZ28gdG8gYG5ldC9jb3JlL2Rldi5jYCBhbmQgc2VlIHdoYXQncyByZWFsbHkgaGFwcGVuaW5nIGR1cmluZyBkZXZpY2UgcmVnaXN0cmF0aW9uLiBJ4oCZbSB0aGlua2luZyB0aGVyZSBtaWdodCBiZSBzb21ldGhpbmcgaGVyZSB0aGF0IGlzIG5vdCByaWdodC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUwMzcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzozODoxMi41OTI2Nzk3NzdaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NjQ3MDE5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1ZHBfdHVubmVsX25pY19yZWdpc3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY29yZS9kZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6Mzg6MTIuNjUyMzM1NjI1WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MTYzODU1MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OlxuXG4qKkRpZ2dpbmcgaW50byB0aGF0IGB1ZHBfdHVubmVsX25pY19yZWdpc3RlcmAgQ2FsbCoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBzdGFjayBmb3IgYHVkcF90dW5uZWxfbmljX3JlZ2lzdGVyYC4gSXQgc2VlbXMgZnVuZGFtZW50YWwgdG8gdGhlIG5ldHdvcmtpbmcgc3RhY2ssIGJ1dCBJIGRvbid0IHJlY2FsbCBvZmZoYW5kICpleGFjdGx5KiBob3cgaXQgZ2V0cyBpbnZva2VkLiBJcyBpdCB0aHJvdWdoIGEgc3BlY2lmaWMgZGV2aWNlIGRyaXZlciBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZT8gT3IgbWF5YmUgaXQncyB0cmlnZ2VyZWQgZHVyaW5nIGEgbmV0bGluayBldmVudD8gRG9lcyBpdCB0aWUgaW50byB0aGUgdHVubmVsIGRldmljZSBjcmVhdGlvbiBzb21laG93LCBvciBpcyBpdCBhIG1vcmUgZ2VuZXJhbCByZWdpc3RyYXRpb24gbWVjaGFuaXNtIGZvciBVRFAtYmFzZWQgdHVubmVscyB3aXRoaW4gdGhlIGtlcm5lbD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLCBiZWNhdXNlIGtub3dpbmcgKmhvdyogaXQncyBjYWxsZWQgcHJvdmlkZXMgY3JpdGljYWwgY29udGV4dCBmb3IgZGVidWdnaW5nLCBwZXJmb3JtYW5jZSBhbmFseXNpcywgYW5kIGV2ZW4gc2VjdXJpdHkgaW1wbGljYXRpb25zLiBJIHN1c3BlY3QgaXQncyBsaWtlbHkgYSByZWxhdGl2ZWx5IGxvdy1sZXZlbCBjYWxsLCBwcm9iYWJseSBpbnZvbHZlZCBpbiBzZXR0aW5nIHVwIHRoZSBhY3R1YWwgVURQIHR1bm5lbCBkZXZpY2UuIEJ1dCBJJ2xsIG5lZWQgdG8gZm9sbG93IHRoZSB0cmFpbC4gVGltZSB0byBicmVhayBvdXQgdGhlIGtlcm5lbCBzb3VyY2UgYW5kIGEgZGVidWdnZXIuIExldCdzIHNlZSBpZiBJIGNhbiBmaW5kIHRoZSBlbnRyeSBwb2ludHMgdGhhdCBsZWFkIHRvIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MzIyLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6Mzg6MTYuMzY4NzI0ODEyWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDE2NTQyODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVkcF90dW5uZWxfbmljX3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTgwMD1zdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19wdXQoc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTgwNS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjgwNjpzdGF0aWMgaW50IHVkcF90dW5uZWxfbmljX3JlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04MDcte1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz05MzI9dWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05NDUtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5NDY6XFx0XFx0ZXJyID0gdWRwX3R1bm5lbF9uaWNfcmVnaXN0ZXIoZGV2KTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTk0Ny1cXHRcXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzozODoxOC4zODUyNzkwNzJaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEwNjExNDI4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBOZXRkZXZpY2UgTm90aWZpZXIgQ2FsbCoqXG5cblJpZ2h0LCBzbyB0aGlzIGV2ZW50IGlzIG9yaWdpbmF0aW5nIGZyb20gYSBuZXRkZXZpY2Ugbm90aWZpZXIsIHNwZWNpZmljYWxseSBgdWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50YC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB3ZSdyZSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIHJlbGF0ZWQgdG8gVURQIHR1bm5lbHMgYW5kIG5ldHdvcmsgZGV2aWNlIGV2ZW50cy4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGNvZGUsIHNvIGxldCdzIGp1bXAgcmlnaHQgaW50byBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgdWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50YC4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHRoZSBldmVudCBoYW5kbGluZyBsb2dpYyB0aGVyZSDigJMgdGhlIGNvZGUgdGhhdCByZWFjdHMgdG8gbmV0ZGV2aWNlIGxpZmVjeWNsZSBjaGFuZ2VzIGluIHRoZSBjb250ZXh0IG9mIFVEUCB0dW5uZWxpbmcuIEl0J3MgbGlrZWx5IHdlJ2xsIHNlZSByZWdpc3RyYXRpb24sIHVucmVnaXN0cmF0aW9uLCBhbmQgbWF5YmUgc29tZSBjb25maWd1cmF0aW9uIG9yIHJlc291cmNlIG1hbmFnZW1lbnQgcmVsYXRlZCB0byB0aGUgdHVubmVsIGludGVyZmFjZXMsIGFsbCB0cmlnZ2VyZWQgYnkgdGhpcyBub3RpZmllci4gSSdtIGtlZW4gdG8gc2VlIGhvdyB0aGV5J3JlIGhhbmRsaW5nIHRoaW5ncyBsaWtlIGRldmljZSB1cC9kb3duIGV2ZW50cywgYWRkcmVzcyBjaGFuZ2VzLCBvciBwZXJoYXBzIGV2ZW4gbGluayBzdGF0ZSBjaGFuZ2VzIGZvciB0aGUgdW5kZXJseWluZyBwaHlzaWNhbCBpbnRlcmZhY2VzLiBJdCdzIGxpa2VseSB0aGF0J3MgdGhlIGZvY2FsIHBvaW50LCB0aGUgcG9pbnQgb2YgZW50cnkuIFRpbWUgdG8gZGl2ZSBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4MjQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzozODoyMi40OTEzOTc0MVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg2Nzc0NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz05MzE9c3RhdGljIGludFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTMyOnVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkzMy1cXHRcXHRcXHQgICAgICAgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz05ODI9c3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayB1ZHBfdHVubmVsX25pY19ub3RpZmllcl9ibG9jayBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTgzOlxcdC5ub3RpZmllcl9jYWxsID0gdWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50LFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTg0LX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM4OjIyLjU1MDA4MTk2OVoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjc2NjQ0MTkxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjI1MDg5LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzozODozNS4zMTY1Mjc0MTFaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MjM3MzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9Mzk9c3RydWN0IHVkcF90dW5uZWxfbmljIHtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTktICovXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2MDpzdGF0aWMgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYxLVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zMDY9dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMxMC1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMxMTpcXHRpZiAocXVldWVfd29yayh1ZHBfdHVubmVsX25pY193b3JrcXVldWUsIFxcdTAwMjZ1dG4tXFx1MDAzZXdvcmspKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzEyLVxcdFxcdHJlZmNvdW50X2luYyhcXHUwMDI2dXRuLVxcdTAwM2VyZWZjbnQpO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz05ODY9c3RhdGljIGludCBfX2luaXQgdWRwX3R1bm5lbF9uaWNfaW5pdF9tb2R1bGUodm9pZClcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTg5LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTkwOlxcdHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSA9IGFsbG9jX29yZGVyZWRfd29ya3F1ZXVlKFxcXCJ1ZHBfdHVubmVsX25pY1xcXCIsIDApO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTkxOlxcdGlmICghdWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTkyLVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDA3LVxcdHJ0bmxfdW5sb2NrKCk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxMDA4OlxcdGRlc3Ryb3lfd29ya3F1ZXVlKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDA5LVxcdHJldHVybiBlcnI7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTEwMTM9c3RhdGljIHZvaWQgX19leGl0IHVkcF90dW5uZWxfbmljX2NsZWFudXBfbW9kdWxlKHZvaWQpXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEwMjAtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxMDIxOlxcdGRlc3Ryb3lfd29ya3F1ZXVlKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDIyLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6Mzg6MzUuMzc1Nzc0OTZaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA5NDI3MTk0MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGB1ZHBfdHVubmVsX25pY2AgTW9kdWxlKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGB1ZHBfdHVubmVsX25pY2Agc3R1ZmYsIHJpZ2h0PyBGcm9tIHdoYXQgSSBjYW4gZ2F0aGVyLCBgdWRwX3R1bm5lbF9uaWNgIGlzIGEgbW9kdWxlIOKAkyBgdWRwX3R1bm5lbF9uaWMua29gIG9yIGJ1aWx0LWluIHRvIHRoZSBrZXJuZWwg4oCTIGFuZCB0aGUgY29yZSBvZiBpdCBhbGwgaXMgYSBuZXRkZXZpY2Ugbm90aWZpZXIgcmVnaXN0cmF0aW9uLiBUaGUga2V5IHRoaW5nIHNlZW1zIHRvIGJlIHRoYXQgd2hlbiBhIG5ldGRldmljZSB3aXRoIGEgYHVkcF90dW5uZWxfbmljX2luZm9gIHN0cnVjdHVyZSBpcyByZWdpc3RlcmVkLCB0aGF0J3Mgd2hlbiBhIGB1ZHBfdHVubmVsX25pY2AgaW5zdGFuY2UgZ2V0cyBhbGxvY2F0ZWQgYW5kIGxpbmtlZCB0byB0aGF0IG5ldGRldmljZS5cblxuVGhpcyBwb2ludHMgbWUgaW1tZWRpYXRlbHkgdG93YXJkcyBgQ09ORklHX05FVF9VRFBfVFVOTkVMYC4gSXQncyBlc3NlbnRpYWwgdG8gaGF2ZSB0aGF0IGVuYWJsZWQsIG9idmlvdXNseS4gTm93LCBob3cgZG8gd2UgZ2V0IGBORVRfVURQX1RVTk5FTGAgZW5hYmxlZD8gV2VsbCwgYSBjb3VwbGUgb2YgbGlrZWx5IHBhdGhzIGNvbWUgdG8gbWluZDogZW5hYmxpbmcgZWl0aGVyIGBDT05GSUdfVlhMQU5gIG9yIGBDT05GSUdfR0VORVZFYCBzaG91bGQgcHVsbCBpdCBpbiBhdXRvbWF0aWNhbGx5LiBBbmQsIG9mIGNvdXJzZSwgSSBjYW4gdXNlIGBDT05GSUdfTkVUREVWU0lNYCB0byBnZW5lcmF0ZSB0aG9zZSBuZXRkZXZpY2VzIHRoYXQgYXJlIGRlc2lnbmVkIHRvIGhhdmUgYHVkcF90dW5uZWxfbmljX2luZm9gLlxuXG5XYWl0IGEgbWludXRlLCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdC4gWWVzLCBgTkVUX1VEUF9UVU5ORUxgIGlzICpzZWxlY3RlZCogYnkgdGhpbmdzIGxpa2UgYFZYTEFOYCwgYEdFTkVWRWAsIGBCQVJFVURQYCwgYW5kIHRoZSBsaWtlLiBTbywgaXQncyBub3QgYSBkaXJlY3QgZGVwZW5kZW5jeSBpbiBhbGwgY2FzZXMsIGJ1dCBpdCdzICpwdWxsZWQgaW4qIGJ5IHRob3NlIGNvbmZpZ3VyYXRpb25zLiBPaywgbGV0IG1lIHJlLXZlcmlmeSB0aGF0IHRoZSBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmNgIG1vZHVsZSBkZXBlbmRzIG9uIGBORVRfVURQX1RVTk5FTGAuIEFoYSwgbm9wZSEgSXQganVzdCBzZXRzIGBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mb2AuIElmIGBORVRfVURQX1RVTk5FTGAgaXNuJ3QgZW5hYmxlZCwgdGhhdCBzdHJ1Y3R1cmUgaXMganVzdCBhIHBvaW50ZXIsIGFuZCBpdCdzIG5ldmVyIHVzZWQuIFJpZ2h0LCBiZWNhdXNlIHRoZSBjb2RlIGluIGB1ZHBfdHVubmVsX25pYy5jYCBpc24ndCBldmVuIGNvbXBpbGVkLiBTbyB0byBhY3R1YWxseSAqdXNlKiBgdWRwX3R1bm5lbF9uaWMuY2Agd2UgKm11c3QqIGhhdmUgYENPTkZJR19ORVRfVURQX1RVTk5FTD15YCAob3IgYG1gKS4gQW5kLCBhcyBJIHN1c3BlY3RlZCwgd2UgYWxzbyBuZWVkIGEgZHJpdmVyIHRoYXQga25vd3MgdG8gc2V0IGB1ZHBfdHVubmVsX25pY19pbmZvYC4gVGhhdCdzIHdoZXJlIGBDT05GSUdfTkVUREVWU0lNYCByZWFsbHkgc2hpbmVzLiBQZXJmZWN0LlxuXG5Ob3csIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbGwgcXVpY2tseSB2ZXJpZnkgdGhlIHN0YXR1cyBvZiBgQ09ORklHX05FVERFVlNJTWAgYW5kIGBDT05GSUdfVlhMQU5gLiBPa2F5LCBib3RoIG9mIHRoZW0gYXJlIHRyaXN0YXRlIGNvbmZpZ3VyYXRpb25zLiBJIHNob3VsZCBtYWtlIGEgbm90ZSB0byBpbmNsdWRlIGBORVRERVZTSU1gIGFuZCBgVlhMQU5gIGluIGBFbmFibGVDb25maWdzYC5cblxuRmluYWxseSwgSSBzaG91bGQgZm9jdXMgb24gdGhlIGtleSBmdW5jdGlvbnMgaGVyZS4gTGV0J3Mgc2VlLi4uSSdsbCB3YW50IHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG86XG5cbiogICBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2BcbiogICBgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcmBcbiogICBgdWRwX3R1bm5lbF9uaWNfcmVnaXN0ZXJgXG4qICAgYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jYFxuKiAgIGB1ZHBfdHVubmVsX25pY19mbHVzaGBcbiogICBgdWRwX3R1bm5lbF9uaWNfcmVwbGF5YFxuKiAgIGB1ZHBfdHVubmVsX25pY19wdXRgXG4qICAgYHVkcF90dW5uZWxfbmljX2FkZF9uZXdgXG4qICAgYHVkcF90dW5uZWxfbmljX3RyeV9leGlzdGluZ2BcbiogICBgX191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY2BcblxuSSBzaG91bGQgc3RhcnQgYnkgZXhhbWluaW5nIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY5ODUsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6Mzg6NDYuMzE4NDk3ODg3WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTQ3MzEyMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NzM1PXN0YXRpYyB2b2lkIHVkcF90dW5uZWxfbmljX3B1dChzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bik7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03MzYtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3Mzc6c3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03Mzgte1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz03NTc9dWRwX3R1bm5lbF9uaWNfYWxsb2MoY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8sXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTc2Ni1cXHR1dG4tXFx1MDAzZW5fdGFibGVzID0gbl90YWJsZXM7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3Njc6XFx0SU5JVF9XT1JLKFxcdTAwMjZ1dG4tXFx1MDAzZXdvcmssIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmspO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzY4LVxcdG11dGV4X2luaXQoXFx1MDAyNnV0bi1cXHUwMDNlbG9jayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM4OjQ2LjUxMzIzNjk2M1oiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDIxMzA4MTU2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFVEUCBUdW5uZWwgTklDIFN5bmNocm9uaXphdGlvbiBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBzY2FuIG9mIHRoZSBwYXRjaCByZXZlYWxzIGl0IHRvdWNoZXMgc2V2ZXJhbCBrZXkgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIFVEUCB0dW5uZWwgTklDIGltcGxlbWVudGF0aW9uOiBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AsIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY2AsIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYCwgYW5kIGB1ZHBfdHVubmVsX25pY19wdXRgLCBhbW9uZyBvdGhlcnMuIEknbSBmb2N1c2luZyBvbiB0aGVzZSBmb3Igbm93OiBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AsIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYCwgYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jYCwgYW5kIGB1ZHBfdHVubmVsX25pY19wdXRgLlxuXG5UaGUgcHJpbWFyeSBjb25jZXJuLCBhcyBJIHVuZGVyc3RhbmQgaXQsIHNlZW1zIHRvIGJlIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGJldHdlZW4gYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgIGFuZCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AuIFRvIHZlcmlmeSB0aGlzLCBJJ20gdHJhY2luZyB0aGUgY2FsbCBwYXRocy4gRmlyc3QsIEkgY29uZmlybWVkIHRoYXQgYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgICppcyogcmVhY2hhYmxlIOKAkyBpdCdzIHRyaWdnZXJlZCBkdXJpbmcgbmV0ZGV2aWNlIHVucmVnaXN0cmF0aW9uIHRocm91Z2ggYHVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudGAsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIE5leHQsIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY2AgaXMgY2FsbGVkIGZyb20gYF9fdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnRgIGFuZCBgX191ZHBfdHVubmVsX25pY19kZWxfcG9ydGAuIFRob3NlIGFyZSwgaW4gdHVybiwgY2FsbGVkIGJ5IGB1ZHBfdHVubmVsX25pY19hZGRfcG9ydGAgYW5kIGB1ZHBfdHVubmVsX25pY19kZWxfcG9ydGAsIHdoaWNoIGZpbmFsbHkgZ2V0IGNhbGxlZCBmcm9tIGB1ZHBfdHVubmVsX2FkZF9yeF9wb3J0YCBhbmQgYHVkcF90dW5uZWxfZHJvcF9yeF9wb3J0YC4gU28sIHdlJ3JlIHRhbGtpbmcgYWJvdXQgdGhlIGFkZGl0aW9uIGFuZCByZW1vdmFsIG9mIFVEUCB0dW5uZWwgcG9ydHMsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRlY2hub2xvZ2llcyBsaWtlIFZYTEFOIG9yIEdFTkVWRS5cblxuTm93LCBsZXQncyBtYXAgdGhlIHR5cGljYWwgc2NlbmFyaW8sIHRvIGZpbmQgdGhlIHJhY2UgY29uZGl0aW9uLCB3aGljaCBzZWVtcyB0byBiZSB0aGUgY2F1c2UuIE15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGZsb3cgaXMgYXMgZm9sbG93czogd2Ugc3RhcnQgd2l0aCBhIG5ldGRldnNpbSBkZXZpY2UsIHdoaWNoLCBvZiBjb3Vyc2UsIGhhcyBhIGB1ZHBfdHVubmVsX25pY19pbmZvYCBhc3NvY2lhdGVkIHdpdGggaXQuIE5leHQsIHdlIGNyZWF0ZSBhIFZYTEFOIGRldmljZSAob3IgR0VORVZFKS4gVGhhdCBjcmVhdGlvbiBhZGRzIGEgVURQIHR1bm5lbCBwb3J0LiBUaGlzIGFkZGl0aW9uIGNhbGxzIGB1ZHBfdHVubmVsX2FkZF9yeF9wb3J0YCwgdHJpZ2dlcmluZyBgdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnRgLCB3aGljaCB0aGVuIHF1ZXVlcyBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AuIFRoZW4sIGlmIHRoZSBuZXRkZXZzaW0gZGV2aWNlIGlzIHVucmVnaXN0ZXJlZCwgYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgIGdldHMgY2FsbGVkLiBCb29tLCB0aGF0J3Mgd2hlcmUgdGhlIHJhY2UgaXMsIGJldHdlZW4gdGhlIHVucmVnaXN0cmF0aW9uIGFuZCB0aGUgd29yayBxdWV1ZS4gVGhpcyBwYXRjaCBsaWtlbHkgYWRkcmVzc2VzIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMgYXJpc2luZyBmcm9tIHRoaXMgc2VxdWVuY2UuXG5cblRoaXMgaXMgaGlnaGx5IGZ1enphYmxlIGFuZCBmdW5jdGlvbmFsLCBnaXZlbiB0aGUgbmF0dXJlIG9mIGl0cyBkZXBlbmRlbmNpZXMuXG5cbkFsc28sIEkgbmVlZCB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbnMuIFRoZSBrZXkgY29uZmlndXJhdGlvbnMgaW52b2x2ZWQgYXJlIGBORVRERVZTSU1gLCBgVlhMQU5gLCBgR0VORVZFYCwgYW5kIGBORVRfVURQX1RVTk5FTGAgKHdoaWNoIGlzIHNlbGVjdGVkIGJ5IFZYTEFOKS4gTm93LCBiZWZvcmUgSSBtb3ZlIG9uLCBJIHdhbnQgdG8gY29uZmlybSBpZiBgTkVUX1VEUF9UVU5ORUxgIGNhbiBiZSBlbmFibGVkIGRpcmVjdGx5LiBMb29rcyBsaWtlIGl0IGlzIGEgdHJpc3RhdGUgY29uZmlnLCBidXQgdGhlcmUgaXNuJ3QgYSBkaXJlY3QgcHJvbXB0IGluIGVpdGhlciBgbmV0L2lwdjQvTWFrZWZpbGVgIG9yIGBuZXQvaXB2NC9LY29uZmlnYC4gTGV0IG1lIHNlYXJjaCBgbmV0L2lwdjQvS2NvbmZpZ2AgZm9yIHRoZSBjb25maWcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NTgxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Njg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM4OjU2LjcyNjMyMjM3OVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUyMDkyNTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfVURQX1RVTk5FTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9MzA0PWNvbmZpZyBORVRfSVBWVElcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzE1LVxcbm5ldC9pcHY0L0tjb25maWc6MzE2OmNvbmZpZyBORVRfVURQX1RVTk5FTFxcbm5ldC9pcHY0L0tjb25maWctMzE3LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM4OjU2Ljk3ODQyMDkzM1oiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzE4ODQzMTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVURQIFR1bm5lbCBOSUMgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgY29uZmlndXJhdGlvbiBpcyBoaWRkZW4sIHdoaWNoIG1lYW5zIGFub3RoZXIgY29tcG9uZW50IGlzIHJlc3BvbnNpYmxlIGZvciBzZWxlY3RpbmcgaXQuIE15IGluaXRpYWwgdGhvdWdodHMgYXJlIGxlYW5pbmcgdG93YXJkcyBgVlhMQU5gIG9yIGBHRU5FVkVgIGFzIGxpa2VseSBjYW5kaWRhdGVzLiBUaG9zZSBhcmUgdGhlIHVzdWFsIHN1c3BlY3RzLlxuXG5Ob3csIGxldCdzIGRpdmUgaW50byB0aGUgY29kZSBjaGFuZ2VzLiBGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgdWRwX3R1bm5lbF9uaWNfcHV0YCBpcyBpbmRlZWQgYSBuZXcgZnVuY3Rpb24uIFllcCwgdGhlIHBhdGNoIGluY2x1ZGVzIGl0LiBHb29kLlxuXG5OZXh0LCBJJ2xsIGNvbmZpcm0gdGhhdCBgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcmAgaGFzIGJlZW4gbW9kaWZpZWQuIEFscmlnaHQsIGl0J3MgYmVlbiB1cGRhdGVkIHRvIHVzZSB0aGUgbmV3IGB1ZHBfdHVubmVsX25pY19wdXRgLiBUaGF0IG1ha2VzIHNlbnNlLlxuXG5OZXh0LCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AuIExvb2tzIGxpa2UgdGhhdCBoYXMgYmVlbiB1cGRhdGVkIHRvIHVzZSBgdWRwX3R1bm5lbF9uaWNfcHV0YCBhcyB3ZWxsLlxuXG5GaW5hbGx5LCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgLiBZZXMsIHRoYXQgZnVuY3Rpb24gaGFzIGJlZW4gdXBkYXRlZCB0byB1c2UgYHJlZmNvdW50X2luY2AuXG5cbkFscmlnaHQsIEkgaGF2ZSB0aGUgcmVzdWx0cyBJIG5lZWQgbm93LiBMZXQncyBzZXQgdGhvc2UgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAwNzAsIk91dHB1dFRva2VucyI6MTc0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM5OjAyLjY5NzI2NzdaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODM5NTY0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUREVWU0lNXCIsXG4gICAgXCJWWExBTlwiLFxuICAgIFwiR0VORVZFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya1wiLFxuICAgIFwidWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlclwiLFxuICAgIFwidWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNcIixcbiAgICBcInVkcF90dW5uZWxfbmljX3B1dFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24vdXNlLWFmdGVyLWZyZWUgaW4gdGhlIFVEUCB0dW5uZWwgTklDIG9mZmxvYWQgaW5mcmFzdHJ1Y3R1cmUgYnkgcmVwbGFjaW5nIGEgc2ltcGxlIHBlbmRpbmcgZmxhZyB3aXRoIGEgcHJvcGVyIHJlZmVyZW5jZSBjb3VudCAocmVmY291bnRfdCkgZm9yIHRoZSB3b3JrcXVldWUuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBjcmVhdGluZy9kZXN0cm95aW5nIFVEUCB0dW5uZWxzIChsaWtlIFZYTEFOIG9yIEdFTkVWRSkgb24gZGV2aWNlcyBzdXBwb3J0aW5nIFVEUCB0dW5uZWwgb2ZmbG9hZCAobGlrZSBuZXRkZXZzaW0pLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVERFVlNJTVwiLFxuICAgIFwiVlhMQU5cIixcbiAgICBcIkdFTkVWRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtcIixcbiAgICBcInVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJcIixcbiAgICBcInVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jXCIsXG4gICAgXCJ1ZHBfdHVubmVsX25pY19wdXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uL3VzZS1hZnRlci1mcmVlIGluIHRoZSBVRFAgdHVubmVsIE5JQyBvZmZsb2FkIGluZnJhc3RydWN0dXJlIGJ5IHJlcGxhY2luZyBhIHNpbXBsZSBwZW5kaW5nIGZsYWcgd2l0aCBhIHByb3BlciByZWZlcmVuY2UgY291bnQgKHJlZmNvdW50X3QpIGZvciB0aGUgd29ya3F1ZXVlLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgY3JlYXRpbmcvZGVzdHJveWluZyBVRFAgdHVubmVscyAobGlrZSBWWExBTiBvciBHRU5FVkUpIG9uIGRldmljZXMgc3VwcG9ydGluZyBVRFAgdHVubmVsIG9mZmxvYWQgKGxpa2UgbmV0ZGV2c2ltKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowhqlvz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-24 17:21:08 +0000 UTC FinishedAt: 2026-06-24 17:39:04 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM", "VXLAN", "GENEVE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM", "VXLAN", "GENEVE" ], "series_id": "f5372b8f-87ca-4855-921e-7d9db301b3c4" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "udp_tunnel_nic_device_sync_work", "udp_tunnel_nic_unregister", "udp_tunnel_nic_device_sync", "udp_tunnel_nic_put" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7LAogICAgJiMzNDtWWExBTiYjMzQ7LAogICAgJiMzNDtHRU5FVkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrJiMzNDssCiAgICAmIzM0O3VkcF90dW5uZWxfbmljX3VucmVnaXN0ZXImIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMmIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfcHV0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24vdXNlLWFmdGVyLWZyZWUgaW4gdGhlIFVEUCB0dW5uZWwgTklDIG9mZmxvYWQgaW5mcmFzdHJ1Y3R1cmUgYnkgcmVwbGFjaW5nIGEgc2ltcGxlIHBlbmRpbmcgZmxhZyB3aXRoIGEgcHJvcGVyIHJlZmVyZW5jZSBjb3VudCAocmVmY291bnRfdCkgZm9yIHRoZSB3b3JrcXVldWUuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBjcmVhdGluZy9kZXN0cm95aW5nIFVEUCB0dW5uZWxzIChsaWtlIFZYTEFOIG9yIEdFTkVWRSkgb24gZGV2aWNlcyBzdXBwb3J0aW5nIFVEUCB0dW5uZWwgb2ZmbG9hZCAobGlrZSBuZXRkZXZzaW0pLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzEyODZhMWEyOTcxZjE5NDljOWJmZWYyZDdlY2EzY2YwMWRmYjZjM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVuIDI0IDE3OjM2OjMzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMgYi9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXG5pbmRleCA5OTQ0ZWQ5MjNkZGZkMS4uODg0YjVkOTNiN2IzOWYgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXG5AQCAtMzAsOSAmIzQzOzMwLDggQEAgc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5IHtcbiAgKiBAd29yazpcdGFzeW5jIHdvcmsgZm9yIHRhbGtpbmcgdG8gaGFyZHdhcmUgZnJvbSBwcm9jZXNzIGNvbnRleHRcbiAgKiBAZGV2Olx0bmV0ZGV2IHBvaW50ZXJcbiAgKiBAbG9jazpcdHByb3RlY3RzIGFsbCBmaWVsZHNcbi0gKiBAbmVlZF9zeW5jOlx0YXQgbGVhc3Qgb25lIHBvcnQgc3RhcnQgY2hhbmdlZFxuLSAqIEBuZWVkX3JlcGxheTogc3BhY2Ugd2FzIGZyZWVkLCB3ZSBuZWVkIGEgcmVwbGF5IG9mIGFsbCBwb3J0c1xuLSAqIEB3b3JrX3BlbmRpbmc6IEB3b3JrIGlzIGN1cnJlbnRseSBzY2hlZHVsZWRcbiYjNDM7ICogQGZsYWdzOlx0c3luYywgcmVwbGF5IGZsYWdzXG4mIzQzOyAqIEByZWZjbnQ6XHRyZWZlcmVuY2UgY291bnRcbiAgKiBAbl90YWJsZXM6XHRudW1iZXIgb2YgdGFibGVzIHVuZGVyIEBlbnRyaWVzXG4gICogQG1pc3NlZDpcdGJpdG1hcCBvZiB0YWJsZXMgd2hpY2ggb3ZlcmZsb3duXG4gICogQGVudHJpZXM6XHR0YWJsZSBvZiB0YWJsZXMgb2YgcG9ydHMgY3VycmVudGx5IG9mZmxvYWRlZFxuQEAgLTQ0LDkgJiM0Mzs0MywxMSBAQCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMge1xuIFxuIFx0c3RydWN0IG11dGV4IGxvY2s7XG4gXG4tXHR1OCBuZWVkX3N5bmM6MTtcbi1cdHU4IG5lZWRfcmVwbGF5OjE7XG4tXHR1OCB3b3JrX3BlbmRpbmc6MTtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuJiM0MzsjZGVmaW5lIFVEUF9UVU5ORUxfTklDX05FRURfU1lOQ1x0MFxuJiM0MzsjZGVmaW5lIFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZXHQxXG4mIzQzO1xuJiM0MztcdHJlZmNvdW50X3QgcmVmY250O1xuIFxuIFx0dW5zaWduZWQgaW50IG5fdGFibGVzO1xuIFx0dW5zaWduZWQgbG9uZyBtaXNzZWQ7XG5AQCAtMTE2LDcgJiM0MzsxMTcsNyBAQCB1ZHBfdHVubmVsX25pY19lbnRyeV9xdWV1ZShzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcbiBcdFx0XHQgICB1bnNpZ25lZCBpbnQgZmxhZylcbiB7XG4gXHRlbnRyeS1cdTAwM2VmbGFncyB8PSBmbGFnO1xuLVx0dXRuLVx1MDAzZW5lZWRfc3luYyA9IDE7XG4mIzQzO1x0c2V0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkXG5AQCAtMjgzLDcgJiM0MzsyODQsNyBAQCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV90YWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIHN0YXRpYyB2b2lkXG4gX191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiB7XG4tXHRpZiAoIXV0bi1cdTAwM2VuZWVkX3N5bmMpXG4mIzQzO1x0aWYgKCF0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFx1MDAyNnV0bi1cdTAwM2VmbGFncykpXG4gXHRcdHJldHVybjtcbiBcbiBcdGlmIChkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cdTAwM2VzeW5jX3RhYmxlKVxuQEAgLTI5MSwyMSAmIzQzOzI5MiwyNCBAQCBfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIFx0ZWxzZVxuIFx0XHR1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV9wb3J0KGRldiwgdXRuKTtcbiBcbi1cdHV0bi1cdTAwM2VuZWVkX3N5bmMgPSAwO1xuJiM0MztcdGNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gXHQvKiBDYW4mIzM5O3QgcmVwbGF5IGRpcmVjdGx5IGhlcmUsIGluIGNhc2Ugd2UgY29tZSBmcm9tIHRoZSB0dW5uZWwgZHJpdmVyJiMzOTtzXG4gXHQgKiBub3RpZmljYXRpb24gLSB0cnlpbmcgdG8gcmVwbGF5IG1heSBkZWFkbG9jayBpbnNpZGUgdHVubmVsIGRyaXZlci5cbiBcdCAqL1xuLVx0dXRuLVx1MDAzZW5lZWRfcmVwbGF5ID0gdWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShkZXYsIHV0bik7XG4mIzQzO1x0aWYgKHVkcF90dW5uZWxfbmljX3Nob3VsZF9yZXBsYXkoZGV2LCB1dG4pKVxuJiM0MztcdFx0c2V0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKTtcbiYjNDM7XHRlbHNlXG4mIzQzO1x0XHRjbGVhcl9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9SRVBMQVksIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkXG4gdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4ge1xuLVx0aWYgKCF1dG4tXHUwMDNlbmVlZF9zeW5jKVxuJiM0MztcdGlmICghdGVzdF9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DLCBcdTAwMjZ1dG4tXHUwMDNlZmxhZ3MpKVxuIFx0XHRyZXR1cm47XG4gXG4tXHRxdWV1ZV93b3JrKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSwgXHUwMDI2dXRuLVx1MDAzZXdvcmspO1xuLVx0dXRuLVx1MDAzZXdvcmtfcGVuZGluZyA9IDE7XG4mIzQzO1x0aWYgKHF1ZXVlX3dvcmsodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlLCBcdTAwMjZ1dG4tXHUwMDNld29yaykpXG4mIzQzO1x0XHRyZWZjb3VudF9pbmMoXHUwMDI2dXRuLVx1MDAzZXJlZmNudCk7XG4gfVxuIFxuIHN0YXRpYyBib29sXG5AQCAtMzQ4LDcgJiM0MzszNTIsNyBAQCB1ZHBfdHVubmVsX25pY19oYXNfY29sbGlzaW9uKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxuIFx0XHRcdGlmICghdWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfZnJlZShlbnRyeSkgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIGVudHJ5LVx1MDAzZXBvcnQgPT0gdGktXHUwMDNlcG9ydCBcdTAwMjZcdTAwMjZcbiBcdFx0XHQgICAgZW50cnktXHUwMDNldHlwZSAhPSB0aS1cdTAwM2V0eXBlKSB7XG4tXHRcdFx0XHRfX3NldF9iaXQoaSwgXHUwMDI2dXRuLVx1MDAzZW1pc3NlZCk7XG4mIzQzO1x0XHRcdFx0c2V0X2JpdChpLCBcdTAwMjZ1dG4tXHUwMDNlbWlzc2VkKTtcbiBcdFx0XHRcdHJldHVybiB0cnVlO1xuIFx0XHRcdH1cbiBcdFx0fVxuQEAgLTQ4Myw3ICYjNDM7NDg3LDcgQEAgdWRwX3R1bm5lbF9uaWNfYWRkX25ldyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcbiBcdFx0ICogYXJlIG5vIGRldmljZXMgY3VycmVudGx5IHdoaWNoIGhhdmUgbXVsdGlwbGUgdGFibGVzIGFjY2VwdGluZ1xuIFx0XHQgKiB0aGUgc2FtZSB0dW5uZWwgdHlwZSwgYW5kIGZhbHNlIHBvc2l0aXZlcyBhcmUgb2theS5cbiBcdFx0ICovXG4tXHRcdF9fc2V0X2JpdChpLCBcdTAwMjZ1dG4tXHUwMDNlbWlzc2VkKTtcbiYjNDM7XHRcdHNldF9iaXQoaSwgXHUwMDI2dXRuLVx1MDAzZW1pc3NlZCk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gZmFsc2U7XG5AQCAtNTUyLDcgJiM0Mzs1NTYsNyBAQCBzdGF0aWMgdm9pZCBfX3VkcF90dW5uZWxfbmljX3Jlc2V0X250ZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZ1dG4tXHUwMDNlbG9jayk7XG4gXG4tXHR1dG4tXHUwMDNlbmVlZF9zeW5jID0gZmFsc2U7XG4mIzQzO1x0Y2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKTtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHV0bi1cdTAwM2VuX3RhYmxlczsgaSYjNDM7JiM0MzspXG4gXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIGluZm8tXHUwMDNldGFibGVzW2ldLm5fZW50cmllczsgaiYjNDM7JiM0MzspIHtcbiBcdFx0XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xuQEAgLTY5Niw4ICYjNDM7NzAwLDggQEAgdWRwX3R1bm5lbF9uaWNfZmx1c2goc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB1dG4tXHUwMDNlbl90YWJsZXM7IGkmIzQzOyYjNDM7KVxuIFx0XHRtZW1zZXQodXRuLVx1MDAzZWVudHJpZXNbaV0sIDAsIGFycmF5X3NpemUoaW5mby1cdTAwM2V0YWJsZXNbaV0ubl9lbnRyaWVzLFxuIFx0XHRcdFx0XHRcdCAgICAgIHNpemVvZigqKnV0bi1cdTAwM2VlbnRyaWVzKSkpO1xuLVx0V0FSTl9PTih1dG4tXHUwMDNlbmVlZF9zeW5jKTtcbi1cdHV0bi1cdTAwM2VuZWVkX3JlcGxheSA9IDA7XG4mIzQzO1x0V0FSTl9PTih0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFx1MDAyNnV0bi1cdTAwM2VmbGFncykpO1xuJiM0MztcdGNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKTtcbiB9XG4gXG4gc3RhdGljIHZvaWRcbkBAIC03MTMsOCAmIzQzOzcxNyw4IEBAIHVkcF90dW5uZWxfbmljX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHV0bi1cdTAwM2VuX3RhYmxlczsgaSYjNDM7JiM0MzspXG4gXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIGluZm8tXHUwMDNldGFibGVzW2ldLm5fZW50cmllczsgaiYjNDM7JiM0MzspXG4gXHRcdFx0dWRwX3R1bm5lbF9uaWNfZW50cnlfZnJlZXplX3VzZWQoXHUwMDI2dXRuLVx1MDAzZWVudHJpZXNbaV1bal0pO1xuLVx0dXRuLVx1MDAzZW1pc3NlZCA9IDA7XG4tXHR1dG4tXHUwMDNlbmVlZF9yZXBsYXkgPSAwO1xuJiM0MztcdGJpdG1hcF96ZXJvKFx1MDAyNnV0bi1cdTAwM2VtaXNzZWQsIFVEUF9UVU5ORUxfTklDX01BWF9UQUJMRVMpO1xuJiM0MztcdGNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKTtcbiBcbiBcdGlmICghaW5mby1cdTAwM2VzaGFyZWQpIHtcbiBcdFx0dWRwX3R1bm5lbF9nZXRfcnhfaW5mbyhkZXYpO1xuQEAgLTcyOCw2ICYjNDM7NzMyLDggQEAgdWRwX3R1bm5lbF9uaWNfcmVwbGF5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIFx0XHRcdHVkcF90dW5uZWxfbmljX2VudHJ5X3VuZnJlZXplKFx1MDAyNnV0bi1cdTAwM2VlbnRyaWVzW2ldW2pdKTtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIHVkcF90dW5uZWxfbmljX3B1dChzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bik7XG4mIzQzO1xuIHN0YXRpYyB2b2lkIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIHtcbiBcdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuID1cbkBAIC03MzYsMTQgJiM0Mzs3NDIsMTUgQEAgc3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRydG5sX2xvY2soKTtcbiBcdG11dGV4X2xvY2soXHUwMDI2dXRuLVx1MDAzZWxvY2spO1xuIFxuLVx0dXRuLVx1MDAzZXdvcmtfcGVuZGluZyA9IDA7XG4gXHRfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHV0bi1cdTAwM2VkZXYsIHV0bik7XG4gXG4tXHRpZiAodXRuLVx1MDAzZW5lZWRfcmVwbGF5KVxuJiM0MztcdGlmICh0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKSlcbiBcdFx0dWRwX3R1bm5lbF9uaWNfcmVwbGF5KHV0bi1cdTAwM2VkZXYsIHV0bik7XG4gXG4gXHRtdXRleF91bmxvY2soXHUwMDI2dXRuLVx1MDAzZWxvY2spO1xuIFx0cnRubF91bmxvY2soKTtcbiYjNDM7XG4mIzQzO1x0dWRwX3R1bm5lbF9uaWNfcHV0KHV0bik7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKlxuQEAgLTc1OSw2ICYjNDM7NzY2LDcgQEAgdWRwX3R1bm5lbF9uaWNfYWxsb2MoY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8sXG4gXHR1dG4tXHUwMDNlbl90YWJsZXMgPSBuX3RhYmxlcztcbiBcdElOSVRfV09SSyhcdTAwMjZ1dG4tXHUwMDNld29yaywgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayk7XG4gXHRtdXRleF9pbml0KFx1MDAyNnV0bi1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRyZWZjb3VudF9zZXQoXHUwMDI2dXRuLVx1MDAzZXJlZmNudCwgMSk7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBuX3RhYmxlczsgaSYjNDM7JiM0MzspIHtcbiBcdFx0dXRuLVx1MDAzZWVudHJpZXNbaV0gPSBremFsbG9jX29ianMoKnV0bi1cdTAwM2VlbnRyaWVzW2ldLFxuQEAgLTc4Miw5ICYjNDM7NzkwLDE5IEBAIHN0YXRpYyB2b2lkIHVkcF90dW5uZWxfbmljX2ZyZWUoc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB1dG4tXHUwMDNlbl90YWJsZXM7IGkmIzQzOyYjNDM7KVxuIFx0XHRrZnJlZSh1dG4tXHUwMDNlZW50cmllc1tpXSk7XG4mIzQzO1xuJiM0MztcdGlmICh1dG4tXHUwMDNlZGV2KVxuJiM0MztcdFx0ZGV2X3B1dCh1dG4tXHUwMDNlZGV2KTtcbiYjNDM7XG4gXHRrZnJlZSh1dG4pO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfcHV0KHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuJiM0Mzt7XG4mIzQzO1x0aWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZ1dG4tXHUwMDNlcmVmY250KSlcbiYjNDM7XHRcdHVkcF90dW5uZWxfbmljX2ZyZWUodXRuKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IHVkcF90dW5uZWxfbmljX3JlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbkBAIC04NjMsNiAmIzQzOzg4MSw3IEBAIHN0YXRpYyB2b2lkXG4gdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiB7XG4gXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xuJiM0MztcdGJvb2wgbGFzdCA9IHRydWU7XG4gXG4gXHR1ZHBfdHVubmVsX25pY19sb2NrKGRldik7XG4gXG5AQCAtODg5LDYgJiM0Mzs5MDgsNyBAQCB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIFx0XHRcdHVkcF90dW5uZWxfZHJvcF9yeF9pbmZvKGRldik7XG4gXHRcdFx0dXRuLVx1MDAzZWRldiA9IGZpcnN0LVx1MDAzZWRldjtcbiBcdFx0XHR1ZHBfdHVubmVsX25pY191bmxvY2soZGV2KTtcbiYjNDM7XHRcdFx0bGFzdCA9IGZhbHNlO1xuIFx0XHRcdGdvdG8gcmVsZWFzZV9kZXY7XG4gXHRcdH1cbiBcbkBAIC05MDEsMTYgJiM0Mzs5MjEsMTEgQEAgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiBcdHVkcF90dW5uZWxfbmljX2ZsdXNoKGRldiwgdXRuKTtcbiBcdHVkcF90dW5uZWxfbmljX3VubG9jayhkZXYpO1xuIFxuLVx0LyogV2FpdCBmb3IgdGhlIHdvcmsgdG8gYmUgZG9uZSB1c2luZyB0aGUgc3RhdGUsIG5ldGRldiBjb3JlIHdpbGxcbi1cdCAqIHJldHJ5IHVucmVnaXN0ZXIgdW50aWwgd2UgZ2l2ZSB1cCBvdXIgcmVmZXJlbmNlIG9uIHRoaXMgZGV2aWNlLlxuLVx0ICovXG4tXHRpZiAodXRuLVx1MDAzZXdvcmtfcGVuZGluZylcbi1cdFx0cmV0dXJuO1xuLVxuLVx0dWRwX3R1bm5lbF9uaWNfZnJlZSh1dG4pO1xuJiM0MztcdHVkcF90dW5uZWxfbmljX3B1dCh1dG4pO1xuIHJlbGVhc2VfZGV2OlxuIFx0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljID0gTlVMTDtcbi1cdGRldl9wdXQoZGV2KTtcbiYjNDM7XHRpZiAoIWxhc3QpXG4mIzQzO1x0XHRkZXZfcHV0KGRldik7XG4gfVxuIFxuIHN0YXRpYyBpbnRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzozNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRERVZTSU0mIzM0OywKICAgICYjMzQ7VlhMQU4mIzM0OywKICAgICYjMzQ7R0VORVZFJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyJiMzNDssCiAgICAmIzM0O3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jJiMzNDssCiAgICAmIzM0O3VkcF90dW5uZWxfbmljX3B1dCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uL3VzZS1hZnRlci1mcmVlIGluIHRoZSBVRFAgdHVubmVsIE5JQyBvZmZsb2FkIGluZnJhc3RydWN0dXJlIGJ5IHJlcGxhY2luZyBhIHNpbXBsZSBwZW5kaW5nIGZsYWcgd2l0aCBhIHByb3BlciByZWZlcmVuY2UgY291bnQgKHJlZmNvdW50X3QpIGZvciB0aGUgd29ya3F1ZXVlLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgY3JlYXRpbmcvZGVzdHJveWluZyBVRFAgdHVubmVscyAobGlrZSBWWExBTiBvciBHRU5FVkUpIG9uIGRldmljZXMgc3VwcG9ydGluZyBVRFAgdHVubmVsIG9mZmxvYWQgKGxpa2UgbmV0ZGV2c2ltKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNzEyODZhMWEyOTcxZjE5NDljOWJmZWYyZDdlY2EzY2YwMWRmYjZjMwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgSnVuIDI0IDE3OjM2OjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYyBiL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMKaW5kZXggOTk0NGVkOTIzZGRmZDEuLjg4NGI1ZDkzYjdiMzlmIDEwMDY0NAotLS0gYS9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMKQEAgLTMwLDkgJiM0MzszMCw4IEBAIHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSB7CiAgKiBAd29yazoJYXN5bmMgd29yayBmb3IgdGFsa2luZyB0byBoYXJkd2FyZSBmcm9tIHByb2Nlc3MgY29udGV4dAogICogQGRldjoJbmV0ZGV2IHBvaW50ZXIKICAqIEBsb2NrOglwcm90ZWN0cyBhbGwgZmllbGRzCi0gKiBAbmVlZF9zeW5jOglhdCBsZWFzdCBvbmUgcG9ydCBzdGFydCBjaGFuZ2VkCi0gKiBAbmVlZF9yZXBsYXk6IHNwYWNlIHdhcyBmcmVlZCwgd2UgbmVlZCBhIHJlcGxheSBvZiBhbGwgcG9ydHMKLSAqIEB3b3JrX3BlbmRpbmc6IEB3b3JrIGlzIGN1cnJlbnRseSBzY2hlZHVsZWQKJiM0MzsgKiBAZmxhZ3M6CXN5bmMsIHJlcGxheSBmbGFncwomIzQzOyAqIEByZWZjbnQ6CXJlZmVyZW5jZSBjb3VudAogICogQG5fdGFibGVzOgludW1iZXIgb2YgdGFibGVzIHVuZGVyIEBlbnRyaWVzCiAgKiBAbWlzc2VkOgliaXRtYXAgb2YgdGFibGVzIHdoaWNoIG92ZXJmbG93bgogICogQGVudHJpZXM6CXRhYmxlIG9mIHRhYmxlcyBvZiBwb3J0cyBjdXJyZW50bHkgb2ZmbG9hZGVkCkBAIC00NCw5ICYjNDM7NDMsMTEgQEAgc3RydWN0IHVkcF90dW5uZWxfbmljIHsKIAogCXN0cnVjdCBtdXRleCBsb2NrOwogCi0JdTggbmVlZF9zeW5jOjE7Ci0JdTggbmVlZF9yZXBsYXk6MTsKLQl1OCB3b3JrX3BlbmRpbmc6MTsKJiM0MzsJdW5zaWduZWQgbG9uZyBmbGFnczsKJiM0MzsjZGVmaW5lIFVEUF9UVU5ORUxfTklDX05FRURfU1lOQwkwCiYjNDM7I2RlZmluZSBVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWQkxCiYjNDM7CiYjNDM7CXJlZmNvdW50X3QgcmVmY250OwogCiAJdW5zaWduZWQgaW50IG5fdGFibGVzOwogCXVuc2lnbmVkIGxvbmcgbWlzc2VkOwpAQCAtMTE2LDcgJiM0MzsxMTcsNyBAQCB1ZHBfdHVubmVsX25pY19lbnRyeV9xdWV1ZShzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0biwKIAkJCSAgIHVuc2lnbmVkIGludCBmbGFnKQogewogCWVudHJ5LSZndDtmbGFncyB8PSBmbGFnOwotCXV0bi0mZ3Q7bmVlZF9zeW5jID0gMTsKJiM0MzsJc2V0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsICZhbXA7dXRuLSZndDtmbGFncyk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0yODMsNyAmIzQzOzI4NCw3IEBAIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX2J5X3RhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiBzdGF0aWMgdm9pZAogX191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bikKIHsKLQlpZiAoIXV0bi0mZ3Q7bmVlZF9zeW5jKQomIzQzOwlpZiAoIXRlc3RfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgJmFtcDt1dG4tJmd0O2ZsYWdzKSkKIAkJcmV0dXJuOwogCiAJaWYgKGRldi0mZ3Q7dWRwX3R1bm5lbF9uaWNfaW5mby0mZ3Q7c3luY190YWJsZSkKQEAgLTI5MSwyMSAmIzQzOzI5MiwyNCBAQCBfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKQogCWVsc2UKIAkJdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfYnlfcG9ydChkZXYsIHV0bik7CiAKLQl1dG4tJmd0O25lZWRfc3luYyA9IDA7CiYjNDM7CWNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsICZhbXA7dXRuLSZndDtmbGFncyk7CiAJLyogQ2FuJiMzOTt0IHJlcGxheSBkaXJlY3RseSBoZXJlLCBpbiBjYXNlIHdlIGNvbWUgZnJvbSB0aGUgdHVubmVsIGRyaXZlciYjMzk7cwogCSAqIG5vdGlmaWNhdGlvbiAtIHRyeWluZyB0byByZXBsYXkgbWF5IGRlYWRsb2NrIGluc2lkZSB0dW5uZWwgZHJpdmVyLgogCSAqLwotCXV0bi0mZ3Q7bmVlZF9yZXBsYXkgPSB1ZHBfdHVubmVsX25pY19zaG91bGRfcmVwbGF5KGRldiwgdXRuKTsKJiM0MzsJaWYgKHVkcF90dW5uZWxfbmljX3Nob3VsZF9yZXBsYXkoZGV2LCB1dG4pKQomIzQzOwkJc2V0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgJmFtcDt1dG4tJmd0O2ZsYWdzKTsKJiM0MzsJZWxzZQomIzQzOwkJY2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCAmYW1wO3V0bi0mZ3Q7ZmxhZ3MpOwogfQogCiBzdGF0aWMgdm9pZAogdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pCiB7Ci0JaWYgKCF1dG4tJmd0O25lZWRfc3luYykKJiM0MzsJaWYgKCF0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsICZhbXA7dXRuLSZndDtmbGFncykpCiAJCXJldHVybjsKIAotCXF1ZXVlX3dvcmsodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlLCAmYW1wO3V0bi0mZ3Q7d29yayk7Ci0JdXRuLSZndDt3b3JrX3BlbmRpbmcgPSAxOwomIzQzOwlpZiAocXVldWVfd29yayh1ZHBfdHVubmVsX25pY193b3JrcXVldWUsICZhbXA7dXRuLSZndDt3b3JrKSkKJiM0MzsJCXJlZmNvdW50X2luYygmYW1wO3V0bi0mZ3Q7cmVmY250KTsKIH0KIAogc3RhdGljIGJvb2wKQEAgLTM0OCw3ICYjNDM7MzUyLDcgQEAgdWRwX3R1bm5lbF9uaWNfaGFzX2NvbGxpc2lvbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0biwKIAkJCWlmICghdWRwX3R1bm5lbF9uaWNfZW50cnlfaXNfZnJlZShlbnRyeSkgJmFtcDsmYW1wOwogCQkJICAgIGVudHJ5LSZndDtwb3J0ID09IHRpLSZndDtwb3J0ICZhbXA7JmFtcDsKIAkJCSAgICBlbnRyeS0mZ3Q7dHlwZSAhPSB0aS0mZ3Q7dHlwZSkgewotCQkJCV9fc2V0X2JpdChpLCAmYW1wO3V0bi0mZ3Q7bWlzc2VkKTsKJiM0MzsJCQkJc2V0X2JpdChpLCAmYW1wO3V0bi0mZ3Q7bWlzc2VkKTsKIAkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJfQpAQCAtNDgzLDcgJiM0Mzs0ODcsNyBAQCB1ZHBfdHVubmVsX25pY19hZGRfbmV3KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLAogCQkgKiBhcmUgbm8gZGV2aWNlcyBjdXJyZW50bHkgd2hpY2ggaGF2ZSBtdWx0aXBsZSB0YWJsZXMgYWNjZXB0aW5nCiAJCSAqIHRoZSBzYW1lIHR1bm5lbCB0eXBlLCBhbmQgZmFsc2UgcG9zaXRpdmVzIGFyZSBva2F5LgogCQkgKi8KLQkJX19zZXRfYml0KGksICZhbXA7dXRuLSZndDttaXNzZWQpOwomIzQzOwkJc2V0X2JpdChpLCAmYW1wO3V0bi0mZ3Q7bWlzc2VkKTsKIAl9CiAKIAlyZXR1cm4gZmFsc2U7CkBAIC01NTIsNyAmIzQzOzU1Niw3IEBAIHN0YXRpYyB2b2lkIF9fdWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAKIAltdXRleF9sb2NrKCZhbXA7dXRuLSZndDtsb2NrKTsKIAotCXV0bi0mZ3Q7bmVlZF9zeW5jID0gZmFsc2U7CiYjNDM7CWNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsICZhbXA7dXRuLSZndDtmbGFncyk7CiAJZm9yIChpID0gMDsgaSAmbHQ7IHV0bi0mZ3Q7bl90YWJsZXM7IGkmIzQzOyYjNDM7KQogCQlmb3IgKGogPSAwOyBqICZsdDsgaW5mby0mZ3Q7dGFibGVzW2ldLm5fZW50cmllczsgaiYjNDM7JiM0MzspIHsKIAkJCXN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnk7CkBAIC02OTYsOCAmIzQzOzcwMCw4IEBAIHVkcF90dW5uZWxfbmljX2ZsdXNoKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKQogCWZvciAoaSA9IDA7IGkgJmx0OyB1dG4tJmd0O25fdGFibGVzOyBpJiM0MzsmIzQzOykKIAkJbWVtc2V0KHV0bi0mZ3Q7ZW50cmllc1tpXSwgMCwgYXJyYXlfc2l6ZShpbmZvLSZndDt0YWJsZXNbaV0ubl9lbnRyaWVzLAogCQkJCQkJICAgICAgc2l6ZW9mKCoqdXRuLSZndDtlbnRyaWVzKSkpOwotCVdBUk5fT04odXRuLSZndDtuZWVkX3N5bmMpOwotCXV0bi0mZ3Q7bmVlZF9yZXBsYXkgPSAwOwomIzQzOwlXQVJOX09OKHRlc3RfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgJmFtcDt1dG4tJmd0O2ZsYWdzKSk7CiYjNDM7CWNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgJmFtcDt1dG4tJmd0O2ZsYWdzKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTcxMyw4ICYjNDM7NzE3LDggQEAgdWRwX3R1bm5lbF9uaWNfcmVwbGF5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKQogCWZvciAoaSA9IDA7IGkgJmx0OyB1dG4tJmd0O25fdGFibGVzOyBpJiM0MzsmIzQzOykKIAkJZm9yIChqID0gMDsgaiAmbHQ7IGluZm8tJmd0O3RhYmxlc1tpXS5uX2VudHJpZXM7IGomIzQzOyYjNDM7KQogCQkJdWRwX3R1bm5lbF9uaWNfZW50cnlfZnJlZXplX3VzZWQoJmFtcDt1dG4tJmd0O2VudHJpZXNbaV1bal0pOwotCXV0bi0mZ3Q7bWlzc2VkID0gMDsKLQl1dG4tJmd0O25lZWRfcmVwbGF5ID0gMDsKJiM0MzsJYml0bWFwX3plcm8oJmFtcDt1dG4tJmd0O21pc3NlZCwgVURQX1RVTk5FTF9OSUNfTUFYX1RBQkxFUyk7CiYjNDM7CWNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgJmFtcDt1dG4tJmd0O2ZsYWdzKTsKIAogCWlmICghaW5mby0mZ3Q7c2hhcmVkKSB7CiAJCXVkcF90dW5uZWxfZ2V0X3J4X2luZm8oZGV2KTsKQEAgLTcyOCw2ICYjNDM7NzMyLDggQEAgdWRwX3R1bm5lbF9uaWNfcmVwbGF5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKQogCQkJdWRwX3R1bm5lbF9uaWNfZW50cnlfdW5mcmVlemUoJmFtcDt1dG4tJmd0O2VudHJpZXNbaV1bal0pOwogfQogCiYjNDM7c3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfcHV0KHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKTsKJiM0MzsKIHN0YXRpYyB2b2lkIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogewogCXN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuID0KQEAgLTczNiwxNCAmIzQzOzc0MiwxNSBAQCBzdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAlydG5sX2xvY2soKTsKIAltdXRleF9sb2NrKCZhbXA7dXRuLSZndDtsb2NrKTsKIAotCXV0bi0mZ3Q7d29ya19wZW5kaW5nID0gMDsKIAlfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHV0bi0mZ3Q7ZGV2LCB1dG4pOwogCi0JaWYgKHV0bi0mZ3Q7bmVlZF9yZXBsYXkpCiYjNDM7CWlmICh0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgJmFtcDt1dG4tJmd0O2ZsYWdzKSkKIAkJdWRwX3R1bm5lbF9uaWNfcmVwbGF5KHV0bi0mZ3Q7ZGV2LCB1dG4pOwogCiAJbXV0ZXhfdW5sb2NrKCZhbXA7dXRuLSZndDtsb2NrKTsKIAlydG5sX3VubG9jaygpOwomIzQzOwomIzQzOwl1ZHBfdHVubmVsX25pY19wdXQodXRuKTsKIH0KIAogc3RhdGljIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqCkBAIC03NTksNiAmIzQzOzc2Niw3IEBAIHVkcF90dW5uZWxfbmljX2FsbG9jKGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvLAogCXV0bi0mZ3Q7bl90YWJsZXMgPSBuX3RhYmxlczsKIAlJTklUX1dPUksoJmFtcDt1dG4tJmd0O3dvcmssIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmspOwogCW11dGV4X2luaXQoJmFtcDt1dG4tJmd0O2xvY2spOwomIzQzOwlyZWZjb3VudF9zZXQoJmFtcDt1dG4tJmd0O3JlZmNudCwgMSk7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgbl90YWJsZXM7IGkmIzQzOyYjNDM7KSB7CiAJCXV0bi0mZ3Q7ZW50cmllc1tpXSA9IGt6YWxsb2Nfb2JqcygqdXRuLSZndDtlbnRyaWVzW2ldLApAQCAtNzgyLDkgJiM0Mzs3OTAsMTkgQEAgc3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfZnJlZShzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bikKIAogCWZvciAoaSA9IDA7IGkgJmx0OyB1dG4tJmd0O25fdGFibGVzOyBpJiM0MzsmIzQzOykKIAkJa2ZyZWUodXRuLSZndDtlbnRyaWVzW2ldKTsKJiM0MzsKJiM0MzsJaWYgKHV0bi0mZ3Q7ZGV2KQomIzQzOwkJZGV2X3B1dCh1dG4tJmd0O2Rldik7CiYjNDM7CiAJa2ZyZWUodXRuKTsKIH0KIAomIzQzO3N0YXRpYyB2b2lkIHVkcF90dW5uZWxfbmljX3B1dChzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bikKJiM0Mzt7CiYjNDM7CWlmIChyZWZjb3VudF9kZWNfYW5kX3Rlc3QoJmFtcDt1dG4tJmd0O3JlZmNudCkpCiYjNDM7CQl1ZHBfdHVubmVsX25pY19mcmVlKHV0bik7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCB1ZHBfdHVubmVsX25pY19yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewogCWNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LSZndDt1ZHBfdHVubmVsX25pY19pbmZvOwpAQCAtODYzLDYgJiM0Mzs4ODEsNyBAQCBzdGF0aWMgdm9pZAogdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bikKIHsKIAljb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi0mZ3Q7dWRwX3R1bm5lbF9uaWNfaW5mbzsKJiM0MzsJYm9vbCBsYXN0ID0gdHJ1ZTsKIAogCXVkcF90dW5uZWxfbmljX2xvY2soZGV2KTsKIApAQCAtODg5LDYgJiM0Mzs5MDgsNyBAQCB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKQogCQkJdWRwX3R1bm5lbF9kcm9wX3J4X2luZm8oZGV2KTsKIAkJCXV0bi0mZ3Q7ZGV2ID0gZmlyc3QtJmd0O2RldjsKIAkJCXVkcF90dW5uZWxfbmljX3VubG9jayhkZXYpOwomIzQzOwkJCWxhc3QgPSBmYWxzZTsKIAkJCWdvdG8gcmVsZWFzZV9kZXY7CiAJCX0KIApAQCAtOTAxLDE2ICYjNDM7OTIxLDExIEBAIHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pCiAJdWRwX3R1bm5lbF9uaWNfZmx1c2goZGV2LCB1dG4pOwogCXVkcF90dW5uZWxfbmljX3VubG9jayhkZXYpOwogCi0JLyogV2FpdCBmb3IgdGhlIHdvcmsgdG8gYmUgZG9uZSB1c2luZyB0aGUgc3RhdGUsIG5ldGRldiBjb3JlIHdpbGwKLQkgKiByZXRyeSB1bnJlZ2lzdGVyIHVudGlsIHdlIGdpdmUgdXAgb3VyIHJlZmVyZW5jZSBvbiB0aGlzIGRldmljZS4KLQkgKi8KLQlpZiAodXRuLSZndDt3b3JrX3BlbmRpbmcpCi0JCXJldHVybjsKLQotCXVkcF90dW5uZWxfbmljX2ZyZWUodXRuKTsKJiM0MzsJdWRwX3R1bm5lbF9uaWNfcHV0KHV0bik7CiByZWxlYXNlX2RldjoKIAlkZXYtJmd0O3VkcF90dW5uZWxfbmljID0gTlVMTDsKLQlkZXZfcHV0KGRldik7CiYjNDM7CWlmICghbGFzdCkKJiM0MzsJCWRldl9wdXQoZGV2KTsKIH0KIAogc3RhdGljIGludAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NTc4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVURQIFR1bm5lbCBOSUMgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jYC4gU2VlbXMgbGlrZSBzb21lb25lJiMzOTtzIGdvbmUgaW4gYW5kIHJld29ya2VkIHRoZSB3YXkgdGhlIGB1ZHBfdHVubmVsX25pY2AgY29kZSBoYW5kbGVzIGNvbmN1cnJlbmN5IGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50LiBUaGV5JiMzOTt2ZSBzd2FwcGVkIG91dCB0aG9zZSBiaXRmaWVsZHMg4oCTIGBuZWVkX3N5bmNgLCBgbmVlZF9yZXBsYXlgLCBgd29ya19wZW5kaW5nYCDigJMgZm9yIGF0b21pYyBiaXQgb3BlcmF0aW9ucyBkaXJlY3RseSBvbiB0aGUgYGZsYWdzYCBmaWVsZC4gU21hcnQgbW92ZSwgdGhhdCYjMzk7cyBkZWZpbml0ZWx5IHRoZSByaWdodCBkaXJlY3Rpb24gdG8gYXZvaWQgdGhvc2UgbmFzdHkgcmFjZSBjb25kaXRpb25zLiBQbHVzLCB0aGV54oCZdmUgYWRkZWQgYSBgcmVmY250YCBvZiB0eXBlIGByZWZjb3VudF90YC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGV5IGFyZSBnb2luZyB0byBtYW5hZ2UgdGhlIGxpZmV0aW1lIG9mIHRoZSBgdXRuYCBzdHJ1Y3R1cmUgaXRzZWxmLCB3aGljaCBJIGxpa2UgdG8gc2VlLgoKVGhlIHBhdGNoIGRldGFpbHMgY29uZmlybSBteSBzdXNwaWNpb25zLiBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgIG5vdyBidW1wcyB0aGUgcmVmY291bnQgd2hlbiBxdWV1aW5nIHdvcmssIGFuZCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AgZGVjcmVtZW50cyBpdC4gVGhlIGludHJvZHVjdGlvbiBvZiBgdWRwX3R1bm5lbF9uaWNfcHV0YCBpcyB0aGUga2V5IOKAkyB0aGF0JiMzOTtzIHRoZSBwb2ludCB3aGVyZSB0aGUgc3RydWN0dXJlIGdldHMgZnJlZWQgd2hlbiB0aGUgcmVmY291bnQgaGl0cyB6ZXJvLiBBbmQgY2xldmVybHksIHRoZXkmIzM5O3ZlIHVwZGF0ZWQgYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgIHRvICp1c2UqIGB1ZHBfdHVubmVsX25pY19wdXRgIGluc3RlYWQgb2Ygd2FpdGluZyBmb3IgYHdvcmtfcGVuZGluZ2AgYW5kIGp1c3QgZnJlZWluZyB0aGUgYHV0bmAgZGlyZWN0bHkuIFRoYXQmIzM5O3MgYSBtdWNoIG1vcmUgcm9idXN0IGFwcHJvYWNoOyBhdm9pZHMgYmxvY2tpbmcuCgpUaGUgYHV0bi0mZ3Q7bWlzc2VkYCBjaGFuZ2UgaXMgaW50ZXJlc3RpbmcsIHRoZXkmIzM5O3JlIG5vdyB1c2luZyBgc2V0X2JpdGAgYW5kIGBiaXRtYXBfemVyb2Agb24gaXQuIFdhaXQuLi4gaXQmIzM5O3Mgc3RpbGwgYW4gYHVuc2lnbmVkIGxvbmdgLCBidXQgaXTigJlzICp1c2VkKiB3aXRoIGBzZXRfYml0YCBhbmQgYGJpdG1hcF96ZXJvYC4gSXQgc2VlbXMgbGlrZSB0aGV5JiMzOTtyZSBjb252ZXJ0aW5nIGl0IHRvIGJlaGF2ZSBsaWtlIGEgYml0bWFzaywgdXNpbmcgdGhlIGxvdy1sZXZlbCBmdW5jdGlvbnMgZm9yIG1hbmlwdWxhdGlvbi4gR29vZCwgdGhhdCBtYWtlcyBpdCBtb3JlIGF0b21pYy4KClNvLCBvdmVyYWxsLCB0aGlzIGlzIGEgcHJldHR5IHNpZ25pZmljYW50IGZ1bmN0aW9uYWwgY2hhbmdlLiBJdCYjMzk7cyBhbG1vc3QgY2VydGFpbmx5IGFpbWVkIGF0IGZpeGluZyBhIHJhY2UgY29uZGl0aW9uIG9yIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoZSBgdWRwX3R1bm5lbF9uaWNgIGNvZGUuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhpcyBmdXJ0aGVyLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byB2ZXJpZnkgdGhlIGNvZGUgcGF0aHMgaW52b2x2ZWQgYW5kIGZpZ3VyZSBvdXQgaWYgdGhpcyBjb2RlIGlzIGFjdHVhbGx5IHJlYWNoYWJsZSBpbiBhbnkgb2YgbXkgY3VycmVudCBjb25maWd1cmF0aW9ucy4gSSBzaG91bGQgY2hlY2sgYG5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNgIGl0c2VsZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VkcF90dW5uZWxfbmljJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQwOAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBJUHY0IE1ha2VmaWxlKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgc3BlY2lmaWMgc2VjdGlvbiBvZiB0aGUga2VybmVsLCBhbmQgdGhlIGBuZXQvaXB2NC9NYWtlZmlsZWAgaXMgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQuIEkmIzM5O20gdGhpbmtpbmcsIHRoaXMgZmlsZSBpcyB0aGUgY2VudHJhbCBvcmNoZXN0cmF0b3IgZm9yIGJ1aWxkaW5nIGFsbCB0aGUgSVB2NC1yZWxhdGVkIG1vZHVsZXMgYW5kIG9iamVjdCBmaWxlcy4gSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgaG93IHRoZSBkZXBlbmRlbmNpZXMgYXJlIHN0cnVjdHVyZWQsIGhvdyB0aGUgY29tcGlsYXRpb24gZmxhZ3MgYXJlIHNldCwgYW5kIHdoYXQgdGFyZ2V0cyBhcmUgZGVmaW5lZC4gSXMgaXQgYSBzdHJhaWdodGZvcndhcmQgZmxhdCBzdHJ1Y3R1cmUsIG9yIGFyZSB0aGVyZSBjbGV2ZXIgdHJpY2tzIHdpdGggcmVjdXJzaXZlIGluY2x1ZGVzLCB3aWxkY2FyZHMsIGFuZCB2YXJpYWJsZXMgdG8gaGFuZGxlIHRoZSBtdWx0aXR1ZGUgb2YgZmlsZXM/IEFyZSB0aGVyZSBhbnkgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG9yIGNvbmZpZ3VyYXRpb24tZGVwZW5kZW50IHJ1bGVzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mIHJpZ2h0IG9mZiB0aGUgYmF0PyBLbm93aW5nIGhvdyB0aGlzIG1ha2VmaWxlIHRpZXMgaW50byB0aGUgYnJvYWRlciBrZXJuZWwgYnVpbGQgc3lzdGVtIGlzIGNydWNpYWwsIGFzIGlzIHVuZGVyc3RhbmRpbmcgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBvdGhlciBuZXR3b3JrIHN0YWNrIG1ha2VmaWxlcy4gTGV04oCZcyBnZXQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dWRwX3R1bm5lbF9uaWMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT0zMD1vYmotJChDT05GSUdfTkVUX0lQR1JFKSAmIzQzOz0gaXBfZ3JlLm9cbm5ldC9pcHY0L01ha2VmaWxlOjMxOnVkcF90dW5uZWwteSA6PSB1ZHBfdHVubmVsX2NvcmUubyB1ZHBfdHVubmVsX25pYy5vXG5uZXQvaXB2NC9NYWtlZmlsZS0zMi1vYmotJChDT05GSUdfTkVUX1VEUF9UVU5ORUwpICYjNDM7PSB1ZHBfdHVubmVsLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzQzCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgQ29tcGlsYXRpb24gUGF0aCBmb3IgVURQIFR1bm5lbHMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBjb2RlIGFuZCBpdCBsb29rcyBsaWtlIHRoZSBVRFAgdHVubmVsIGZ1bmN0aW9uYWxpdHkgaXMgb25seSBpbmNsdWRlZCBpbiB0aGUgYnVpbGQgd2hlbiBgQ09ORklHX05FVF9VRFBfVFVOTkVMYCBpcyBzZXQuIFRoYXQmIzM5O3MgdGhlIGtleSB2YXJpYWJsZSB0byB0cmFjayBoZXJlLiBOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdHJpZ2dlcnMgKnRoYXQqIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBXaGF0IG90aGVyIGRlcGVuZGVuY2llcywgcGxhdGZvcm0gY29uZmlndXJhdGlvbnMsIG9yIGJ1aWxkLXRpbWUgc2V0dGluZ3MgbGVhZCB0byBgQ09ORklHX05FVF9VRFBfVFVOTkVMYCBiZWluZyBlbmFibGVkPyBMZXQmIzM5O3MgdHJhY2UgYmFjayBmcm9tIHRoZXJlIGFuZCBzZWUgd2hhdCB3ZSBjYW4gZmluZC4gSSBzdXNwZWN0IHRoZXJlIG1pZ2h0IGJlIGEgY2hhaW4gb2YgZGVwZW5kZW5jaWVzLCBhbmQgSSB3YW50IHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGxvZ2ljLiBUaW1lIHRvIGdvIGh1bnRpbmcgZm9yIHRoZSB1cHN0cmVhbSBlbmFibGluZyBtZWNoYW5pc20uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IE5FVF9VRFBfVFVOTkVMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvS2NvbmZpZz0yPWNvbmZpZyBSRE1BX1JYRVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvS2NvbmZpZy01LVx0ZGVwZW5kcyBvbiBJTkZJTklCQU5EX1ZJUlRfRE1BXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL0tjb25maWc6NjpcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9LY29uZmlnLTctXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTc0PWNvbmZpZyBXSVJFR1VBUkRcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTc2LVx0ZGVwZW5kcyBvbiBORVQgXHUwMDI2XHUwMDI2IElORVRcbmRyaXZlcnMvbmV0L0tjb25maWc6Nzc6XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbmRyaXZlcnMvbmV0L0tjb25maWctNzgtXHRzZWxlY3QgRFNUX0NBQ0hFXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0xMDM9Y29uZmlnIE9WUE5cbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTEwNi1cdHNlbGVjdCBEU1RfQ0FDSEVcbmRyaXZlcnMvbmV0L0tjb25maWc6MTA3Olx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5kcml2ZXJzL25ldC9LY29uZmlnLTEwOC1cdHNlbGVjdCBDUllQVE9cbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTIzMD1jb25maWcgVlhMQU5cbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzMi1cdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyMzM6XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbmRyaXZlcnMvbmV0L0tjb25maWctMjM0LVx0c2VsZWN0IEdST19DRUxMU1xuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MjQ1PWNvbmZpZyBHRU5FVkVcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTI0Ny1cdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyNDg6XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbmRyaXZlcnMvbmV0L0tjb25maWctMjQ5LVx0c2VsZWN0IEdST19DRUxMU1xuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MjYwPWNvbmZpZyBCQVJFVURQXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNjItXHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWc6MjYzOlx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5kcml2ZXJzL25ldC9LY29uZmlnLTI2NC1cdHNlbGVjdCBHUk9fQ0VMTFNcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTI3Mj1jb25maWcgR1RQXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzQtXHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWc6Mjc1Olx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3Ni1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTI4OT1jb25maWcgUEZDUFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctMjkxLVx0ZGVwZW5kcyBvbiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnOjI5MjpcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yOTMtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zMDI9Y29uZmlnIEFNVFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctMzA0LVx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBJUF9NVUxUSUNBU1RcbmRyaXZlcnMvbmV0L0tjb25maWc6MzA1Olx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5kcml2ZXJzL25ldC9LY29uZmlnLTMwNi1cdGhlbHBcbi0tXG5uZXQvaXB2NC9LY29uZmlnPTMyMT1jb25maWcgTkVUX0ZPVVxubmV0L2lwdjQvS2NvbmZpZy0zMjItXHR0cmlzdGF0ZSBcJiMzNDtJUDogRm9vIChJUCBwcm90b2NvbHMpIG92ZXIgVURQXCYjMzQ7XG5uZXQvaXB2NC9LY29uZmlnOjMyMzpcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxubmV0L2lwdjQvS2NvbmZpZy0zMjQtXHRoZWxwXG4tLVxubmV0L2wydHAvS2NvbmZpZz02PW1lbnVjb25maWcgTDJUUFxuLS1cbm5ldC9sMnRwL0tjb25maWctOC1cdGRlcGVuZHMgb24gSU5FVFxubmV0L2wydHAvS2NvbmZpZzo5Olx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5uZXQvbDJ0cC9LY29uZmlnLTEwLVx0aGVscFxuLS1cbm5ldC9yeHJwYy9LY29uZmlnPTY9Y29uZmlnIEFGX1JYUlBDXG4tLVxubmV0L3J4cnBjL0tjb25maWctMTEtXHRzZWxlY3QgS0VZU1xubmV0L3J4cnBjL0tjb25maWc6MTI6XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbm5ldC9yeHJwYy9LY29uZmlnLTEzLVx0aGVscFxuLS1cbm5ldC9zY3RwL0tjb25maWc9Nj1tZW51Y29uZmlnIElQX1NDVFBcbi0tXG5uZXQvc2N0cC9LY29uZmlnLTEyLVx0c2VsZWN0IE5FVF9DUkMzMkNcbm5ldC9zY3RwL0tjb25maWc6MTM6XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbm5ldC9zY3RwL0tjb25maWctMTQtXHRoZWxwXG4tLVxubmV0L3RpcGMvS2NvbmZpZz0zMD1jb25maWcgVElQQ19NRURJQV9VRFBcbi0tXG5uZXQvdGlwYy9LY29uZmlnLTMyLVx0ZGVwZW5kcyBvbiBUSVBDXG5uZXQvdGlwYy9LY29uZmlnOjMzOlx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5uZXQvdGlwYy9LY29uZmlnLTM0LVx0ZGVmYXVsdCB5XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzAzMwoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDExNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNjb3BlIG9mIFVEUCBUdW5uZWxpbmcgaW4gdGhlIEtlcm5lbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHVkcF90dW5uZWxfbmljLmNgIGhlcmUuIFRoZSBuYW1lIGltbWVkaWF0ZWx5IHN1Z2dlc3RzIHNvbWV0aGluZyBicm9hZCwgYnV0IGxldCYjMzk7cyBzZWUgaG93IGVuY29tcGFzc2luZyBpdCByZWFsbHkgaXMuIFJpZ2h0IG9mZiB0aGUgYmF0LCBgTkVUX1VEUF9UVU5ORUxgIGlzIGVuYWJsZWQgYnkgYSB3aWRlIGFycmF5IG9mIHByb3RvY29scyBhbmQgZmVhdHVyZXM6IGBWWExBTmAsIGBHRU5FVkVgLCBgQkFSRVVEUGAsIGBHVFBgLCBgUEZDUGAsIGBBTVRgLCBgTkVUX0ZPVWAsIGBMMlRQYCwgYEFGX1JYUlBDYCwgYElQX1NDVFBgLCBhbmQgZXZlbiBgVElQQ19NRURJQV9VRFBgLiBUaGF04oCZcyBhIHByZXR0eSBkaXZlcnNlIHNldC4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgd2hhdCYjMzk7cyByZWFsbHkgdXRpbGl6aW5nIGB1ZHBfdHVubmVsX25pY19pbmZvYCBvciwgbW9yZSBpbXBvcnRhbnRseSwgYHVkcF90dW5uZWxfbmljX3JlZ2lzdGVyYD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHVzYWdlIHBhdHRlcm5zIHRvIGdyYXNwIHRoZSByZWFsIGltcGFjdCBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucyBvZiBjaGFuZ2VzIGhlcmUuIEnigJlsbCBzdGFydCBkaWdnaW5nIGluIHRvIHNlZSB3aGF0IGNhbGxzIHRoZXNlIGZ1bmN0aW9ucywgYW5kIGZyb20gd2hlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VkcF90dW5uZWxfbmljX2luZm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL25ldF9kZXZpY2UucnN0PTE3Mj1zdHJ1Y3QgbWFjc2VjX29wcyogICAgICAgICAgICAgICAgICBtYWNzZWNfb3BzXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbmV0X2NhY2hlbGluZXMvbmV0X2RldmljZS5yc3Q6MTczOnN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvKiAgICAgICAgIHVkcF90dW5uZWxfbmljX2luZm9cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9uZXRfY2FjaGVsaW5lcy9uZXRfZGV2aWNlLnJzdC0xNzQtc3RydWN0IHVkcF90dW5uZWxfbmljKiAgICAgICAgICAgICAgdWRwX3R1bm5lbF9uaWNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jPTg5NT1zdGF0aWMgaW50IHhnYmVfdnhsYW5fdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy05MDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jOjkwNjpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8geGdiZV91ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtOTA3LVx0LnNldF9wb3J0XHQ9IHhnYmVfdnhsYW5fc2V0X3BvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy05MTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jOjkxNTpjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqeGdiZV9nZXRfdWRwX3R1bm5lbF9pbmZvKHZvaWQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLWRydi5jLTkxNi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1tYWluLmM9MTUyPWludCB4Z2JlX2NvbmZpZ19uZXRkZXYoc3RydWN0IHhnYmVfcHJ2X2RhdGEgKnBkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtbWFpbi5jLTI2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtbWFpbi5jOjI2MzpcdFx0bmV0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSB4Z2JlX2dldF91ZHBfdHVubmVsX2luZm8oKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtbWFpbi5jLTI2NC1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLmg9MTI5Nj1jb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgKnhnYmVfZ2V0X2V0aHRvb2xfb3BzKHZvaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oOjEyOTc6Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKnhnYmVfZ2V0X3VkcF90dW5uZWxfaW5mbyh2b2lkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaC0xMjk4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz0xMDIxMT1zdGF0aWMgaW50IGJueDJ4X3VkcF90dW5uZWxfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEwMjIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jOjEwMjIyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBibngyeF91ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMDIyMy1cdC5zeW5jX3RhYmxlXHQ9IGJueDJ4X3VkcF90dW5uZWxfc3luYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM9MTMwNDA9c3RhdGljIGludCBibngyeF9pbml0X2RldihzdHJ1Y3QgYm54MnggKmJwLCBzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTMyMDctXHRcdGlmIChJU19QRihicCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmM6MTMyMDg6XHRcdFx0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZibngyeF91ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYy0xMzIwOS1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz0xNTk2Mj1zdGF0aWMgaW50IGJueHRfdWRwX3R1bm5lbF91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNTk3Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE1OTc4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBibnh0X3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTU5NzktXHQuc2V0X3BvcnRcdD0gYm54dF91ZHBfdHVubmVsX3NldF9wb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE2OTQ1PXN0YXRpYyBpbnQgYm54dF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNzA1Mi1cdGlmIChicC1cdTAwM2VmbGFncyBcdTAwMjYgQk5YVF9GTEFHX0NISVBfUDcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNzA1MzpcdFx0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZibnh0X3VkcF90dW5uZWxzX3A3O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTcwNTQtXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNzA1NTpcdFx0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZibnh0X3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTcwNTYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9MjY4NT1zdGF0aWMgaW50IGxpcXVpZGlvX3VkcF90dW5uZWxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTI2OTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzoyNjk2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBsaXF1aWRpb191ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTI2OTctXHQuc2V0X3BvcnRcdD0gbGlxdWlkaW9fdWRwX3R1bm5lbF9zZXRfcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0zMzIyPXN0YXRpYyBpbnQgc2V0dXBfbmljX2RldmljZXMoc3RydWN0IG9jdGVvbl9kZXZpY2UgKm9jdGVvbl9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzU4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjM1ODM6XHRcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2bGlxdWlkaW9fdWRwX3R1bm5lbHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zNTg0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jPTE3NzI9c3RhdGljIGludCBsaXF1aWRpb191ZHBfdHVubmVsX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xNzgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6MTc4MzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbGlxdWlkaW9fdWRwX3R1bm5lbHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xNzg0LVx0LnNldF9wb3J0XHQ9IGxpcXVpZGlvX3VkcF90dW5uZWxfc2V0X3BvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MTkxOT1zdGF0aWMgaW50IHNldHVwX25pY19kZXZpY2VzKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3Rlb25fZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTIwOTMtXHRcdCAgICAobGlvLVx1MDAzZWVuY19kZXZfY2FwYWJpbGl0eSBcdTAwMjYgfk5FVElGX0ZfTFJPKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jOjIwOTQ6XHRcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2bGlxdWlkaW9fdWRwX3R1bm5lbHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0yMDk1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jPTM3NzA9c3RhdGljIGludCBjeGdiX3VkcF90dW5uZWxfc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYy0zODE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM6MzgxODpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gY3hnYl91ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM4MTktXHQuc2V0X3BvcnRcdD0gY3hnYl91ZHBfdHVubmVsX3NldF9wb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jPTY1NzE9c3RhdGljIGludCBpbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYy02ODAwLVx0XHRcdGlmIChhZGFwdGVyLVx1MDAzZXJhd2ZfY250KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM6NjgwMTpcdFx0XHRcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2Y3hnYl91ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTY4MDItXHRcdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL2VuaWNfbWFpbi5jPTIwNz1zdGF0aWMgaW50IGVuaWNfdWRwX3R1bm5lbF91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYy0yMjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL2VuaWNfbWFpbi5jOjIyOTpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gZW5pY191ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjMwLVx0LnNldF9wb3J0XHQ9IGVuaWNfdWRwX3R1bm5lbF9zZXRfcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL2VuaWNfbWFpbi5jPTI2NzU9c3RhdGljIGludCBlbmljX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjk0OC1cdFx0ICAgIGVuaWMtXHUwMDNldnhsYW4uZmxhZ3MgXHUwMDI2IEVOSUNfVlhMQU5fTVVMVElfV1EpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmM6Mjk0OTpcdFx0XHRuZXRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNmVuaWNfdWRwX3R1bm5lbHNfdjQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaXNjby9lbmljL2VuaWNfbWFpbi5jLTI5NTAtXHRcdFx0aWYgKGVuaWMtXHUwMDNldnhsYW4uZmxhZ3MgXHUwMDI2IEVOSUNfVlhMQU5fT1VURVJfSVBWNilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmM6Mjk1MTpcdFx0XHRcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2ZW5pY191ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjk1Mi1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmM9NDAxNT1zdGF0aWMgaW50IGJlX3Z4bGFuX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmMtNDAzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmM6NDAzNDpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gYmVfdWRwX3R1bm5lbHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jLTQwMzUtXHQuc2V0X3BvcnRcdD0gYmVfdnhsYW5fc2V0X3BvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYz01MTc5PXN0YXRpYyB2b2lkIGJlX25ldGRldl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYy01MjA3LVx0aWYgKCFsYW5jZXJfY2hpcChhZGFwdGVyKSBcdTAwMjZcdTAwMjYgIUJFeF9jaGlwKGFkYXB0ZXIpIFx1MDAyNlx1MDAyNiAhYmVfaXNfbWMoYWRhcHRlcikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jOjUyMDg6XHRcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2YmVfdWRwX3R1bm5lbHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jLTUyMDktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmM9NDAyPXN0YXRpYyBpbnQgZm0xMGtfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYy00MTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYzo0MTc6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGZtMTBrX3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmMtNDE4LVx0LnN5bmNfdGFibGVcdD0gZm0xMGtfdWRwX3R1bm5lbF9zeW5jLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jPTE1NDE9c3RydWN0IG5ldF9kZXZpY2UgKmZtMTBrX2FsbG9jX25ldGRldihjb25zdCBzdHJ1Y3QgZm0xMGtfaW5mbyAqaW5mbylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYy0xNTgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmM6MTU4MTpcdFx0ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcdTAwMjZmbTEwa191ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jLTE1ODItXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlLmg9NDY4PXN0cnVjdCBpNDBlX3BmIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaC01MjEtXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfc2hhcmVkIHVkcF90dW5uZWxfc2hhcmVkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlLmg6NTIyOlx0c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gdWRwX3R1bm5lbF9uaWM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaC01MjMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0xMzYzNz1zdGF0aWMgaW50IGk0MGVfY29uZmlnX25ldGRldihzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTEzNjgwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYzoxMzY4MTpcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2cGYtXHUwMDNldWRwX3R1bm5lbF9uaWM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfbWFpbi5jLTEzNjgyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jPTM0NDM9c3RhdGljIHZvaWQgaWNlX3NldF9vcHMoc3RydWN0IGljZV92c2kgKnZzaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy0zNDU0LVx0bmV0ZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZpY2VfbmV0ZGV2X29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjM0NTU6XHRuZXRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNnBmLVx1MDAzZWh3LnVkcF90dW5uZWxfbmljO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtMzQ1Ni1cdG5ldGRldi1cdTAwM2V4ZHBfbWV0YWRhdGFfb3BzID0gXHUwMDI2aWNlX3hkcF9tZF9vcHM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmM9Mzk3MD1pbnQgaWNlX2luaXRfcGYoc3RydWN0IGljZV9wZiAqcGYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy0zOTcxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jOjM5NzI6XHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqdWRwX3R1bm5lbF9uaWMgPSBcdTAwMjZwZi1cdTAwM2Vody51ZHBfdHVubmVsX25pYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbWFpbi5jLTM5NzMtXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBpY2VfcGZfdG9fZGV2KHBmKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R5cGUuaD04OTk9c3RydWN0IGljZV9odyB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eXBlLmgtMTAxMS1cdHN0cnVjdCB1ZHBfdHVubmVsX25pY19zaGFyZWQgdWRwX3R1bm5lbF9zaGFyZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R5cGUuaDoxMDEyOlx0c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gdWRwX3R1bm5lbF9uaWM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R5cGUuaC0xMDEzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYz01NDQ4PXN0YXRpYyBpbnQgaXhnYmVfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNTQ2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzo1NDY3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBpeGdiZV91ZHBfdHVubmVsc194NTUwID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTU0NjgtXHQuc3luY190YWJsZVx0PSBpeGdiZV91ZHBfdHVubmVsX3N5bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTU0NzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6NTQ3NTpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gaXhnYmVfdWRwX3R1bm5lbHNfeDU1MGVtX2EgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNTQ3Ni1cdC5zeW5jX3RhYmxlXHQ9IGl4Z2JlX3VkcF90dW5uZWxfc3luYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM9MTE1NDg9c3RhdGljIGludCBpeGdiZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTE2OTktXHRjYXNlIGl4Z2JlX21hY19lNjEwOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjExNzAwOlx0XHRuZXRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNml4Z2JlX3VkcF90dW5uZWxzX3g1NTA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTE3MDEtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTExNzAyLVx0Y2FzZSBpeGdiZV9tYWNfeDU1MGVtX2E6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6MTE3MDM6XHRcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2aXhnYmVfdWRwX3R1bm5lbHNfeDU1MGVtX2E7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTE3MDQtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmM9MjYzOT1zdGF0aWMgaW50IG1seDRfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jLTI2NTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jOjI2NTc6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIG1seDRfdWRwX3R1bm5lbHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jLTI2NTgtXHQuc3luY190YWJsZVx0PSBtbHg0X3VkcF90dW5uZWxfc3luYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jPTMxNjE9aW50IG1seDRfZW5faW5pdF9uZXRkZXYoc3RydWN0IG1seDRfZW5fZGV2ICptZGV2LCBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jLTMzNDYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jOjMzNDc6XHRcdGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2bWx4NF91ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMtMzM0OC1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaD05MDU9c3RydWN0IG1seDVlX3ByaXYge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oLTk1Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oOjk1NzpcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIG5pY19pbmZvO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTU4LSNpZmRlZiBDT05GSUdfTUxYNV9DT1JFX0VOX0RDQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9NTQ1Nj12b2lkIG1seDVlX3Z4bGFuX3NldF9uZXRkZXZfaW5mbyhzdHJ1Y3QgbWx4NWVfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTU0NjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjU0Njk6XHRwcml2LVx1MDAzZW5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2cHJpdi1cdTAwM2VuaWNfaW5mbztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtNTQ3MC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jPTIzNzY9c3RhdGljIGludCBuZnBfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmMtMjM5NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYzoyMzk1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBuZnBfdWRwX3R1bm5lbHMgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uZXRyb25vbWUvbmZwL25mcF9uZXRfY29tbW9uLmMtMjM5Ni1cdC5zeW5jX3RhYmxlICAgICA9IG5mcF91ZHBfdHVubmVsX3N5bmMsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jPTI2NjY9c3RhdGljIHZvaWQgbmZwX25ldF9uZXRkZXZfaW5pdChzdHJ1Y3QgbmZwX25ldCAqbm4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jLTI3MTgtXHRcdH1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYzoyNzE5Olx0XHRuZXRkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNm5mcF91ZHBfdHVubmVscztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYy0yNzIwLVx0XHRubi1cdTAwM2VkcC5jdHJsIHw9IE5GUF9ORVRfQ0ZHX0NUUkxfVlhMQU47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYz05NTc9c3RhdGljIGludCBxZWRlX3VkcF90dW5uZWxfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYy05ODctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jOjk4ODpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gcWVkZV91ZHBfdHVubmVsc19ib3RoID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYy05ODktXHQuc3luY190YWJsZVx0PSBxZWRlX3VkcF90dW5uZWxfc3luYyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jPTEwMDY9dm9pZCBxZWRlX3NldF91ZHBfdHVubmVscyhzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYy0xMDA5LVx0ICAgIGVkZXYtXHUwMDNlZGV2X2luZm8uY29tbW9uLmdlbmV2ZV9lbmFibGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jOjEwMTA6XHRcdGVkZXYtXHUwMDNlbmRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2cWVkZV91ZHBfdHVubmVsc19ib3RoO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYy0xMDExLVx0ZWxzZSBpZiAoZWRldi1cdTAwM2VkZXZfaW5mby5jb21tb24udnhsYW5fZW5hYmxlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYzoxMDEyOlx0XHRlZGV2LVx1MDAzZW5kZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNnFlZGVfdWRwX3R1bm5lbHNfdnhsYW47XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTEwMTMtXHRlbHNlIGlmIChlZGV2LVx1MDAzZWRldl9pbmZvLmNvbW1vbi5nZW5ldmVfZW5hYmxlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYzoxMDE0Olx0XHRlZGV2LVx1MDAzZW5kZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFx1MDAyNnFlZGVfdWRwX3R1bm5lbHNfZ2VuZXZlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYy0xMDE1LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmM9NDcxPXN0YXRpYyBpbnQgcWxjbmljX3VkcF90dW5uZWxfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jLTQ4Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uYzo0ODc6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHFsY25pY191ZHBfdHVubmVscyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uYy00ODgtXHQuc3luY190YWJsZVx0PSBxbGNuaWNfdWRwX3R1bm5lbF9zeW5jLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uYz0yMjU0PXFsY25pY19zZXR1cF9uZXRkZXYoc3RydWN0IHFsY25pY19hZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uYy0yMzAzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jOjIzMDQ6XHRcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2cWxjbmljX3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jLTIzMDUtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYz00Mj1zdGF0aWMgaW50IGVmeF9lZjEwX3NldF91ZHBfdG5sX3BvcnRzKHN0cnVjdCBlZnhfbmljICplZngsIGJvb2wgdW5sb2FkaW5nKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM6NDM6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGVmeF9lZjEwX3VkcF90dW5uZWxzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYy00NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jPTUyNT1zdGF0aWMgaW50IGVmeF9lZjEwX3Byb2JlKHN0cnVjdCBlZnhfbmljICplZngpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYy02ODAtXHQgICAgKDEgXHUwMDNjXHUwMDNjIE1DX0NNRF9EUlZfQVRUQUNIX0VYVF9PVVRfRkxBR19UUlVTVEVEKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM6NjgxOlx0XHRlZngtXHUwMDNlbmV0X2Rldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2ZWZ4X2VmMTBfdWRwX3R1bm5lbHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTY4Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jPTM5NjI9c3RhdGljIGludCBlZnhfZWYxMF91ZHBfdG5sX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTM5ODQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jOjM5ODU6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGVmeF9lZjEwX3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYy0zOTg2LVx0LnNldF9wb3J0XHQ9IGVmeF9lZjEwX3VkcF90bmxfc2V0X3BvcnQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM9NjE5PXN0YXRpYyBpbnQgdHhnYmVfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy02NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYzo2NDI6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHR4Z2JlX3VkcF90dW5uZWxzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNjQzLVx0LnN5bmNfdGFibGVcdD0gdHhnYmVfdWRwX3R1bm5lbF9zeW5jLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jPTY4MT1zdGF0aWMgaW50IHR4Z2JlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jLTc0Ny1cdG5ldGRldi1cdTAwM2VuZXRkZXZfb3BzID0gXHUwMDI2dHhnYmVfbmV0ZGV2X29wcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jOjc0ODpcdG5ldGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXHUwMDI2dHhnYmVfdWRwX3R1bm5lbHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy03NDktXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM9NjY9bnNpbV91ZHBfdHVubmVsX3N5bmNfdGFibGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTg0LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6ODU6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIG5zaW1fdWRwX3R1bm5lbF9pbmZvID0ge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtODYtXHQuc2V0X3BvcnRcdD0gbnNpbV91ZHBfdHVubmVsX3NldF9wb3J0LFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jPTEyNT1pbnQgbnNpbV91ZHBfdHVubmVsc19pbmZvX2NyZWF0ZShzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTEyOC1cdHN0cnVjdCBuZXRkZXZzaW0gKm5zID0gbmV0ZGV2X3ByaXYoZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jOjEyOTpcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTMwLVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTE4NC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jOjE4NTpcdGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gaW5mbztcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTE4Ni1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jPTE4OT12b2lkIG5zaW1fdWRwX3R1bm5lbHNfaW5mb19kZXN0cm95KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTkzLVx0ZGVidWdmc19yZW1vdmVfcmVjdXJzaXZlKG5zLVx1MDAzZXVkcF9wb3J0cy5kZGlyKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jOjE5NDpcdGtmcmVlKGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jOjE5NTpcdGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gTlVMTDtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTE5Ni19XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD03Nj1zdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvO1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDo3NzpzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbztcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNzgtc3RydWN0IHVkcF90dW5uZWxfbmljO1xuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MTgwND1lbnVtIG5ldGRldl9yZWdfc3RhdGUge1xuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjA4OS0gKlxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyMDkwOiAqXHRAdWRwX3R1bm5lbF9uaWNfaW5mbzpcdHN0YXRpYyBzdHJ1Y3R1cmUgZGVzY3JpYmluZyB0aGUgVURQIHR1bm5lbFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yMDkxLSAqXHRcdFx0XHRvZmZsb2FkIGNhcGFiaWxpdGllcyBvZiB0aGUgZGV2aWNlXG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0yMTM5PXN0cnVjdCBuZXRfZGV2aWNlIHtcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1MDQtI2VuZGlmXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjI1MDU6XHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mb1x0KnVkcF90dW5uZWxfbmljX2luZm87XG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1MDYtXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNcdCp1ZHBfdHVubmVsX25pYztcbi0tXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg9MjI1PXN0YXRpYyBpbmxpbmUgdm9pZCB1ZHBfdHVubmVsX2VuY2FwX2VuYWJsZShzdHJ1Y3Qgc29jayAqc2spXG4tLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTIzOC1cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDoyMzk6ZW51bSB1ZHBfdHVubmVsX25pY19pbmZvX2ZsYWdzIHtcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0yNDAtXHQvKiBEZXZpY2Ugb25seSBzdXBwb3J0cyBvZmZsb2FkcyB3aGVuIGl0JiMzOTtzIG9wZW4sIGFsbCBwb3J0c1xuLS1cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0yNTc9c3RydWN0IHVkcF90dW5uZWxfbmljX3NoYXJlZCB7XG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MjU4Olx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1ZHBfdHVubmVsX25pY19pbmZvO1xuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTI1OS1cbi0tXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg9MjYzPXN0cnVjdCB1ZHBfdHVubmVsX25pY19zaGFyZWRfbm9kZSB7XG4tLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTI2OC0vKipcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDoyNjk6ICogc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gLSBkcml2ZXIgVURQIHR1bm5lbCBvZmZsb2FkIGluZm9ybWF0aW9uXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMjcwLSAqIEBzZXRfcG9ydDpcdGNhbGxiYWNrIGZvciBhZGRpbmcgYSBuZXcgcG9ydFxuLS1cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0yNzMtICogQHNoYXJlZDpcdHJlZmVyZW5jZSB0byBkZXZpY2UgZ2xvYmFsIHN0YXRlIChvcHRpb25hbClcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDoyNzQ6ICogQGZsYWdzOlx0ZGV2aWNlIGZsYWdzIGZyb20gZW51bSB1ZHBfdHVubmVsX25pY19pbmZvX2ZsYWdzXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMjc1LSAqIEB0YWJsZXM6XHRVRFAgcG9ydCB0YWJsZXMgdGhpcyBkZXZpY2UgaGFzXG4tLVxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTI5Ni0gKi9cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaDoyOTc6c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8ge1xuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTI5OC1cdC8qIG9uZS1ieS1vbmUgKi9cbi0tXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzIyLSAqIG1vZHVsZS4gTklDIGRyaXZlcnMgYXJlIG5vdCwgdGhleSBqdXN0IGF0dGFjaCB0aGVpclxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjMyMzogKiBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyB0byB0aGUgbmV0ZGV2IGFuZCB3YWl0IGZvciBjYWxsYmFja3MgdG8gY29tZS5cbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zMjQtICogTG9hZGluZyBhIHR1bm5lbCBkcml2ZXIgd2lsbCBjYXVzZSB0aGUgdWRwX3R1bm5lbCBtb2R1bGUgdG8gYmUgbG9hZGVkXG4tLVxubmV0L2NvcmUvZGV2LmM9MTEzMjA9aW50IHJlZ2lzdGVyX25ldGRldmljZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9jb3JlL2Rldi5jLTExMzk0LVxubmV0L2NvcmUvZGV2LmM6MTEzOTU6XHRpZiAoZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8pIHtcbm5ldC9jb3JlL2Rldi5jLTExMzk2LVx0XHRkZXYtXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9SWF9VRFBfVFVOTkVMX1BPUlQ7XG4tLVxubmV0L2V0aHRvb2wvdHVubmVscy5jPTM2PWV0aG5sX3R1bm5lbF9pbmZvX3JlcGx5X3NpemUoY29uc3Qgc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcbi0tXG5uZXQvZXRodG9vbC90dW5uZWxzLmMtMzktXHRib29sIGNvbXBhY3QgPSByZXFfYmFzZS1cdTAwM2VmbGFncyBcdTAwMjYgRVRIVE9PTF9GTEFHX0NPTVBBQ1RfQklUU0VUUztcbm5ldC9ldGh0b29sL3R1bm5lbHMuYzo0MDpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvO1xubmV0L2V0aHRvb2wvdHVubmVscy5jLTQxLVx0dW5zaWduZWQgaW50IGk7XG4tLVxubmV0L2V0aHRvb2wvdHVubmVscy5jLTQ0LVxubmV0L2V0aHRvb2wvdHVubmVscy5jOjQ1Olx0aW5mbyA9IHJlcV9iYXNlLVx1MDAzZWRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xubmV0L2V0aHRvb2wvdHVubmVscy5jLTQ2LVx0aWYgKCFpbmZvKSB7XG4tLVxubmV0L2V0aHRvb2wvdHVubmVscy5jPTgyPWV0aG5sX3R1bm5lbF9pbmZvX2ZpbGxfcmVwbHkoY29uc3Qgc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcbi0tXG5uZXQvZXRodG9vbC90dW5uZWxzLmMtODUtXHRib29sIGNvbXBhY3QgPSByZXFfYmFzZS1cdTAwM2VmbGFncyBcdTAwMjYgRVRIVE9PTF9GTEFHX0NPTVBBQ1RfQklUU0VUUztcbm5ldC9ldGh0b29sL3R1bm5lbHMuYzo4NjpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvO1xubmV0L2V0aHRvb2wvdHVubmVscy5jLTg3LVx0c3RydWN0IG5sYXR0ciAqcG9ydHMsICp0YWJsZSwgKmVudHJ5O1xuLS1cbm5ldC9ldGh0b29sL3R1bm5lbHMuYy04OS1cbm5ldC9ldGh0b29sL3R1bm5lbHMuYzo5MDpcdGluZm8gPSByZXFfYmFzZS1cdTAwM2VkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9ldGh0b29sL3R1bm5lbHMuYy05MS1cdGlmICghaW5mbylcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTEzND11ZHBfdHVubmVsX25pY19pc19lbXB0eShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTM1LXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTM2Olx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTM3LVx0dW5zaWduZWQgaW50IGksIGo7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xNDc9dWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE1NS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHV0bi1cdTAwM2VuX3RhYmxlczsgaSYjNDM7JiM0MzspIHtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTU2Olx0XHR0YWJsZSA9IFx1MDAyNmRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVx1MDAzZXRhYmxlc1tpXTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTU3LVx0XHRpZiAoIXRlc3RfYml0KGksIFx1MDAyNnV0bi1cdTAwM2VtaXNzZWQpKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjEzPXVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX29uZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjI2LVx0aWYgKGVudHJ5LVx1MDAzZWZsYWdzIFx1MDAyNiBVRFBfVFVOTkVMX05JQ19FTlRSWV9BREQpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjIyNzpcdFx0ZXJyID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8tXHUwMDNlc2V0X3BvcnQoZGV2LCB0YWJsZSwgaWR4LCBcdTAwMjZ0aSk7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTIyOC1cdGVsc2Vcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjI5Olx0XHRlcnIgPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cdTAwM2V1bnNldF9wb3J0KGRldiwgdGFibGUsIGlkeCxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjMwLVx0XHRcdFx0XHRcdFx0ICAgXHUwMDI2dGkpO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjQyPXVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX2J5X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI0NC17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI0NTpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI0Ni1cdHVuc2lnbmVkIGludCBpLCBqO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjU0PXVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX2J5X3RhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNTYte1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyNTc6XHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNTgtXHR1bnNpZ25lZCBpbnQgaSwgajtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTI4NT1fX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjg5LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyOTA6XHRpZiAoZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8tXHUwMDNlc3luY190YWJsZSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjkxLVx0XHR1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV90YWJsZShkZXYsIHV0bik7XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zMjM9dWRwX3R1bm5lbF9uaWNfaXNfY2FwYWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMyNS17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMyNjpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMyNy1cdHVuc2lnbmVkIGludCBpO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MzQxPXVkcF90dW5uZWxfbmljX2hhc19jb2xsaXNpb24oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zNDMte1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzozNDQ6XHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zNDUtXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NDI1PXVkcF90dW5uZWxfbmljX3RyeV9leGlzdGluZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQzMS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHV0bi1cdTAwM2VuX3RhYmxlczsgaSYjNDM7JiM0MzspIHtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDMyOlx0XHR0YWJsZSA9IFx1MDAyNmRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVx1MDAzZXRhYmxlc1tpXTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDMzLVx0XHRpZiAoIXVkcF90dW5uZWxfbmljX3RhYmxlX2lzX2NhcGFibGUodGFibGUsIHRpKSlcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTQ2MD11ZHBfdHVubmVsX25pY19hZGRfbmV3KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDY2LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdXRuLVx1MDAzZW5fdGFibGVzOyBpJiM0MzsmIzQzOykge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo0Njc6XHRcdHRhYmxlID0gXHUwMDI2ZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8tXHUwMDNldGFibGVzW2ldO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00NjgtXHRcdGlmICghdWRwX3R1bm5lbF9uaWNfdGFibGVfaXNfY2FwYWJsZSh0YWJsZSwgdGkpKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NDk3PV9fdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ5OC17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQ5OTpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTUwMC1cdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NTQ3PXN0YXRpYyB2b2lkIF9fdWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU0OC17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjU0OTpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU1MC1cdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NTgzPV9fdWRwX3R1bm5lbF9uaWNfZHVtcF9zaXplKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTg0LXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTg1Olx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTg2LVx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz02MDg9X191ZHBfdHVubmVsX25pY19kdW1wX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYxMC17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjYxMTpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYxMi1cdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9Njg1PXVkcF90dW5uZWxfbmljX2ZsdXNoKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02ODYte1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2ODc6XHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02ODgtXHR1bnNpZ25lZCBpbnQgaSwgajtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTcwOD11ZHBfdHVubmVsX25pY19yZXBsYXkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTcwOS17XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjcxMDpcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTcxMS1cdHN0cnVjdCB1ZHBfdHVubmVsX25pY19zaGFyZWRfbm9kZSAqbm9kZTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTc1Nj1zdGF0aWMgc3RydWN0IHVkcF90dW5uZWxfbmljICpcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzU3OnVkcF90dW5uZWxfbmljX2FsbG9jKGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03NTgtXHRcdCAgICAgdW5zaWduZWQgaW50IG5fdGFibGVzKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9ODA2PXN0YXRpYyBpbnQgdWRwX3R1bm5lbF9uaWNfcmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODA3LXtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODA4Olx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODA5LVx0c3RydWN0IHVkcF90dW5uZWxfbmljX3NoYXJlZF9ub2RlICpub2RlID0gTlVMTDtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg0Ny1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODQ4Olx0aWYgKGluZm8tXHUwMDNlc2hhcmVkIFx1MDAyNlx1MDAyNiBpbmZvLVx1MDAzZXNoYXJlZC1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvKSB7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjg0OTpcdFx0dXRuID0gaW5mby1cdTAwM2VzaGFyZWQtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODUwLVx0fSBlbHNlIHtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg1OC1cdGlmIChpbmZvLVx1MDAzZXNoYXJlZCkge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4NTk6XHRcdGlmICghaW5mby1cdTAwM2VzaGFyZWQtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbykge1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NjAtXHRcdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2aW5mby1cdTAwM2VzaGFyZWQtXHUwMDNlZGV2aWNlcyk7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjg2MTpcdFx0XHRpbmZvLVx1MDAzZXNoYXJlZC1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gdXRuO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NjItXHRcdH1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTg4MT11ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04ODIte1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4ODM6XHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04ODQtXHRib29sIGxhc3QgPSB0cnVlO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTE0LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5MTU6XHRcdGluZm8tXHUwMDNlc2hhcmVkLVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBOVUxMO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05MTYtXHR9XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz05MzI9dWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTM1LVx0c3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IG5ldGRldl9ub3RpZmllcl9pbmZvX3RvX2RldihwdHIpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5MzY6XHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTM3LVx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkzOC1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTM5Olx0aW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05NDAtXHRpZiAoIWluZm8pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5OTczCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTcwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiBgdWRwX3R1bm5lbF9uaWNgIFVzYWdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGB1ZHBfdHVubmVsX25pY2AgY29kZSwgYW5kIGl0JiMzOTtzIHVzZWQgYnkgYSAqdG9uKiBvZiBkcml2ZXJzLiBgeGdiZWAsIGBibngyeGAsIGBibnh0YCwgYGxpcXVpZGlvYCwgYGN4Z2I0YC4uLiB0aGUgbGlzdCBnb2VzIG9uIGFuZCBvbiwgcmlnaHQ/IFNlZW1zIHByZXR0eSB3aWRlbHkgYWRvcHRlZC4gQnV0IHRoZW4gSSBzYXcgYG5ldGRldnNpbWAgaW4gdGhlcmUuIFdhaXQgYSBzZWNvbmQsIGBuZXRkZXZzaW1gIHVzZXMgaXQ/IFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIEkga25vdyBob3cgYG5ldGRldnNpbWAgd29ya3M7IGl0JiMzOTtzIGEgKnZpcnR1YWwqIG5ldHdvcmsgZGV2aWNlLiBBaGEhIFRoYXQgbWVhbnMgdGhpcyBgdWRwX3R1bm5lbF9uaWNgIGNvZGUgaXMgKmRlZmluaXRlbHkqIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHNwZWNpZmljYWxseSB0aHJvdWdoIGBuZXRkZXZzaW1gLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqLiBJJiMzOTttIGdvaW5nIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmNgIHRvIHNlZSBwcmVjaXNlbHkgd2hhdCYjMzk7cyBnb2luZyBvbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnNpbV91ZHBfdHVubmVsc19pbmZvX2NyZWF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTEwMzg9c3RhdGljIGludCBuc2ltX2luaXRfbmV0ZGV2c2ltKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy0xMDUzLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjEwNTQ6XHRlcnIgPSBuc2ltX3VkcF90dW5uZWxzX2luZm9fY3JlYXRlKG5zLVx1MDAzZW5zaW1fZGV2LCBucy1cdTAwM2VuZXRkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTEwNTUtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaD0xNzM9dm9pZCBuc2ltX3VkcF90dW5uZWxzX2RlYnVnZnNfY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE3NDppbnQgbnNpbV91ZHBfdHVubmVsc19pbmZvX2NyZWF0ZShzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE3NS1cdFx0XHRcdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYz0xMTg9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgbnNpbV91ZHBfdHVubmVsc19pbmZvX3Jlc2V0X2ZvcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTI0LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6MTI1OmludCBuc2ltX3VkcF90dW5uZWxzX2luZm9fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xMjYtXHRcdFx0XHQgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxNjEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1ZHBfdHVubmVsX25pY193b3JrcXVldWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zOT1zdHJ1Y3QgdWRwX3R1bm5lbF9uaWMge1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTktICovXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjYwOnN0YXRpYyBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqdWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy02MS1cbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTMwNj11ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMxMC1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MzExOlx0aWYgKHF1ZXVlX3dvcmsodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlLCBcdTAwMjZ1dG4tXHUwMDNld29yaykpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMxMi1cdFx0cmVmY291bnRfaW5jKFx1MDAyNnV0bi1cdTAwM2VyZWZjbnQpO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9OTg2PXN0YXRpYyBpbnQgX19pbml0IHVkcF90dW5uZWxfbmljX2luaXRfbW9kdWxlKHZvaWQpXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05ODktXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjk5MDpcdHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSA9IGFsbG9jX29yZGVyZWRfd29ya3F1ZXVlKFwmIzM0O3VkcF90dW5uZWxfbmljXCYjMzQ7LCAwKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTkxOlx0aWYgKCF1ZHBfdHVubmVsX25pY193b3JrcXVldWUpXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTk5Mi1cdFx0cmV0dXJuIC1FTk9NRU07XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDA3LVx0cnRubF91bmxvY2soKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTAwODpcdGRlc3Ryb3lfd29ya3F1ZXVlKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSk7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEwMDktXHRyZXR1cm4gZXJyO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MTAxMz1zdGF0aWMgdm9pZCBfX2V4aXQgdWRwX3R1bm5lbF9uaWNfY2xlYW51cF9tb2R1bGUodm9pZClcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEwMjAtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEwMjE6XHRkZXN0cm95X3dvcmtxdWV1ZSh1ZHBfdHVubmVsX25pY193b3JrcXVldWUpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDIyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE0MTIKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQ3JpdGljYWwgQnVnIEZpeCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGFkZHJlc3NlcyBhIG5hc3R5IHJhY2UgY29uZGl0aW9uIGluIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYC4gVGhlIG9sZCBjb2RlIGhhZCBhIGZsYXcg4oCTIGl0IHdhaXRlZCBmb3IgYHdvcmtfcGVuZGluZ2AgdG8gaGl0IHplcm8sIGJ1dCB0aGUgYXNzb2NpYXRlZCB3b3JrIGNvdWxkIHN0aWxsIGJlIHJ1bm5pbmcgYW5kIHRyeWluZyB0byBhY2Nlc3MgdGhlIG5vdy1mcmVlZCBgdXRuYCBzdHJ1Y3R1cmUuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIG1lbW9yeSBjb3JydXB0aW9uIGJ1ZywgYW5kIHRoZSByZWZjb3VudCBhcHByb2FjaCBzZWVtcyBsaWtlIGEgc29saWQgZml4LiBJdCYjMzk7cyBtdWNoIG1vcmUgcm9idXN0LgoKVGhpcyBpcyAqYWJzb2x1dGVseSogc29tZXRoaW5nIHRoYXQgZGVtYW5kcyBmdXp6aW5nLiBBIHJhY2UgY29uZGl0aW9uIGxpa2UgdGhhdCwgZXNwZWNpYWxseSBhcm91bmQgcmVzb3VyY2UgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uLCBpcyBwcmltZSB0ZXJyaXRvcnkgZm9yIHVuY292ZXJpbmcgdnVsbmVyYWJpbGl0aWVzLiBUaGUgcGF0Y2gmIzM5O3MgaW1wYWN0IHNvdW5kcyBmYWlybHkgbG9jYWxpemVkLCB3aGljaCBtYWtlcyBpdCBhbiBpZGVhbCBjYW5kaWRhdGUgZm9yIHRhcmdldGVkIGZ1enppbmcuIEnigJlkIHdhbnQgdG8gY29uZmlybSB0aGF0IHRoZSByZWZjb3VudCBoYW5kbGVzIHRoZSBlZGdlIGNhc2VzIGFzIGV4cGVjdGVkLCBhbmQgdGVzdCBwb3RlbnRpYWwgc2NlbmFyaW9zIHdoZXJlIGNvbmN1cnJlbnQgYWNjZXNzZXMgbWlnaHQgc3RpbGwgc25lYWsgdGhyb3VnaC4KCk5vdywgd2hhdCBhcmUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byB0cmlnZ2VyIHRoaXM/IEFoLCBJIHJlbWVtYmVyLCBJIG5lZWQgYENPTkZJR19ORVRERVZTSU1gIHRvIGVuYWJsZSBgbmV0ZGV2c2ltYCwgd2hpY2gsIGZyb20gbWVtb3J5LCB1dGlsaXplcyBgdWRwX3R1bm5lbF9uaWNgLiBCdXQgd2FpdCwgZG9lcyBlbmFibGluZyB0aGUgbmV0ZGV2c2ltIGFsc28gaW1wbGljaXRseSBzZWxlY3QgYE5FVF9VRFBfVFVOTkVMYD8gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcyB0byBiZSBzdXJlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gc2V0dGluZyBldmVyeXRoaW5nIHVwIGNvcnJlY3RseSBiZWZvcmUgc3RhcnRpbmcgdGhlIGZ1enppbmcgY2FtcGFpZ24uIE5lZWQgdG8gY29uZmlybSB0aGF0IGBORVRfVURQX1RVTk5FTGAgaXMgZW5hYmxlZCBzbyBJJiMzOTttIGFjdHVhbGx5IHRlc3RpbmcgdGhlIHBhdGNoZWQgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkVUREVWU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTYwMj1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWctNjAzLVxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDQ6Y29uZmlnIE5FVERFVlNJTVxuZHJpdmVycy9uZXQvS2NvbmZpZy02MDUtXHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE5NTYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRfVURQX1RVTk5FTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz03ND1jb25maWcgV0lSRUdVQVJEXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy03Ni1cdGRlcGVuZHMgb24gTkVUIFx1MDAyNlx1MDAyNiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnOjc3Olx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5kcml2ZXJzL25ldC9LY29uZmlnLTc4LVx0c2VsZWN0IERTVF9DQUNIRVxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MTAzPWNvbmZpZyBPVlBOXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMDYtXHRzZWxlY3QgRFNUX0NBQ0hFXG5kcml2ZXJzL25ldC9LY29uZmlnOjEwNzpcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMDgtXHRzZWxlY3QgQ1JZUFRPXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yMzA9Y29uZmlnIFZYTEFOXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMzItXHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWc6MjMzOlx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzNC1cdHNlbGVjdCBHUk9fQ0VMTFNcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTI0NT1jb25maWcgR0VORVZFXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNDctXHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWc6MjQ4Olx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG5kcml2ZXJzL25ldC9LY29uZmlnLTI0OS1cdHNlbGVjdCBHUk9fQ0VMTFNcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTI2MD1jb25maWcgQkFSRVVEUFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctMjYyLVx0ZGVwZW5kcyBvbiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnOjI2MzpcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNjQtXHRzZWxlY3QgR1JPX0NFTExTXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNzI9Y29uZmlnIEdUUFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctMjc0LVx0ZGVwZW5kcyBvbiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnOjI3NTpcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yODk9Y29uZmlnIFBGQ1Bcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTI5MS1cdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyOTI6XHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbmRyaXZlcnMvbmV0L0tjb25maWctMjkzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MzAyPWNvbmZpZyBBTVRcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTMwNC1cdGRlcGVuZHMgb24gSU5FVCBcdTAwMjZcdTAwMjYgSVBfTVVMVElDQVNUXG5kcml2ZXJzL25ldC9LY29uZmlnOjMwNTpcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDYtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNTgxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTI1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgdGhlIE5FVF9VRFBfVFVOTkVMIERlcGVuZGVuY3kqKgoKT2theSwgc28gYE5FVERFVlNJTWAgaXNuJiMzOTt0IGRpcmVjdGx5IGNob29zaW5nIGBORVRfVURQX1RVTk5FTGAsIHdoaWNoIGlzIGEgYml0IHB1enpsaW5nLiBCdXQsIGhhbmcgb24uLi4gYHVkcF90dW5uZWxfbmljLmNgICppcyogYmVpbmcgY29tcGlsZWQgd2hlbiBgTkVUX1VEUF9UVU5ORUxgIGlzIGVuYWJsZWQuIFRoYXQmIzM5O3MgdGhlIGNsdWUuIE5vdyBpdCBjbGlja3MhIGBORVRfVURQX1RVTk5FTGAgaXMgcHVsbGVkIGluIGluZGlyZWN0bHkgYnkgdGhpbmdzIGxpa2UgYFZYTEFOYCBhbmQgYEdFTkVWRWAuIFNvLCB0byBnZXQgYE5FVF9VRFBfVFVOTkVMYCBlbmFibGVkIGFuZCBhdmFpbGFibGUgd2hlbiB1c2luZyBgTkVUREVWU0lNYCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBvbmUgb2YgdGhvc2UgZW5jYXBzdWxhdGluZyBwcm90b2NvbHMgaXMgYWxzbyBzZWxlY3RlZC4gSSBuZWVkIHRvIGVuYWJsZSBib3RoIGBORVRERVZTSU1gIGFuZCBgVlhMQU5gIG9yIGBHRU5FVkVgLiBMZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBieSBsb29raW5nIGF0IHRoZSBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL0tjb25maWdgIGZpbGUsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHRoZXJlIGlzbiYjMzk7dCBzb21lIG90aGVyIGhpZGRlbiBkZXBlbmRlbmN5IEkmIzM5O20gbWlzc2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRERVZTSU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyOTY1CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgdGhlIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIEtjb25maWcgTGFuZHNjYXBlKioKCkhtbSwgSSB3YXMganVzdCBsb29raW5nIGZvciB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgYG5ldGRldnNpbWAgZHJpdmVyLCBhbmQgSSBleHBlY3RlZCB0byBmaW5kIHRoZSBgS2NvbmZpZ2AgZmlsZSBpbiBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2AuIEJ1dCwgd2FpdCBhIG1pbnV0ZS4uLnRoYXQgcGF0aCBkb2VzbiYjMzk7dCBzZWVtIHRvIGV4aXN0LiBUaGF0JiMzOTtzIHVudXN1YWwuIEkga25vdyB0aGlzIGNvZGViYXNlIHByZXR0eSB3ZWxsLCBhbmQgaWYgaXQmIzM5O3Mgbm90IHdoZXJlIEkgYW50aWNpcGF0ZSwgaXQgdXN1YWxseSBtZWFucyBhIHJlLW9yZ2FuaXphdGlvbiBvciBwZXJoYXBzIGl0IGlzIGluY2x1ZGVkIGluIGEgcGFyZW50IGZvbGRlci4gTGV0JiMzOTtzIGJhY2t0cmFjayBhbmQgZG91YmxlLWNoZWNrIGBkcml2ZXJzL25ldC9LY29uZmlnYCBkaXJlY3RseS4gTXkgc3VzcGljaW9uIGlzIHRoYXQgYE5FVERFVlNJTWAgbWlnaHQgYmUgZGVmaW5lZCB0aGVyZSwgcGVyaGFwcyBhcyBhIHRvcC1sZXZlbCBmZWF0dXJlIG9yIGEgc3ViLWNvbmZpZ3VyYXRpb24gdW5kZXIgYSBicm9hZGVyIG5ldHdvcmtpbmcgdW1icmVsbGEuIE5lZWQgdG8gcXVpY2tseSBlbnN1cmUgdGhpcyBpcyB3aGVyZSBpdCByZXNpZGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUREVWU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9NjAyPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9oeXBlcnYvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZy02MDMtXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwNDpjb25maWcgTkVUREVWU0lNXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwNS1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCBuZXR3b3JraW5nIGRldmljZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzMwNQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDYwNCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjA0Olx0Y29uZmlnIE5FVERFVlNJTVxuIDYwNTpcdFx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXCYjMzQ7XG4gNjA2Olx0XHRkZXBlbmRzIG9uIERFQlVHX0ZTXG4gNjA3Olx0XHRkZXBlbmRzIG9uIElORVRcbiA2MDg6XHRcdGRlcGVuZHMgb24gUFNBTVBMRSB8fCBQU0FNUExFPW5cbiA2MDk6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfTU9DSyB8fCBQVFBfMTU4OF9DTE9DS19NT0NLPW5cbiA2MTA6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuIDYxMTpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuIDYxMjpcdFx0c2VsZWN0IE5FVF9TSEFQRVJcbiA2MTM6XHRcdGhlbHBcbiA2MTQ6XHRcdCAgVGhpcyBkcml2ZXIgaXMgYSBkZXZlbG9wZXIgdGVzdGluZyB0b29sIGFuZCBzb2Z0d2FyZSBtb2RlbCB0aGF0IGNhblxuIDYxNTpcdFx0ICBiZSB1c2VkIHRvIHRlc3QgdmFyaW91cyBjb250cm9sIHBhdGggbmV0d29ya2luZyBBUElzLCBlc3BlY2lhbGx5XG4gNjE2Olx0XHQgIEhXLW9mZmxvYWQgcmVsYXRlZC5cbiA2MTc6XHRcbiA2MTg6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDYxOTpcdFx0ICB3aWxsIGJlIGNhbGxlZCBuZXRkZXZzaW0uXG4gNjIwOlx0XG4gNjIxOlx0Y29uZmlnIE5FVF9GQUlMT1ZFUlxuIDYyMjpcdFx0dHJpc3RhdGUgXCYjMzQ7RmFpbG92ZXIgZHJpdmVyXCYjMzQ7XG4gNjIzOlx0XHRzZWxlY3QgRkFJTE9WRVJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM2MzkKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBhbiBleHBlcnQmIzM5O3MgcGVyc3BlY3RpdmU6CgoqKkRlYnVnZ2luZyBORVRERVZTSU0gQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyBgTkVUREVWU0lNYCBpc24mIzM5O3QgcGlja2luZyB1cCBgTkVUX1VEUF9UVU5ORUxgIGFzIGV4cGVjdGVkLiBUaGF0JiMzOTtzIGEgYml0IG9kZC4gSSBrbm93IGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuY2AgaXMgaW52b2x2ZWQsIGFuZCB0aGUgZG9jdW1lbnRhdGlvbiBpbmRpY2F0ZXMgaXQgY2FuIGJlIGNvbXBpbGVkIGNvbmRpdGlvbmFsbHksIG1lYW5pbmcgaXQgZGVwZW5kcyBvbiBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGJlaW5nIHNldC4gVGhlIGZpcnN0IHRoaW5nIEkgbmVlZCB0byBkbyBpcyBjb25maXJtIHRoYXQgdGhlIGNvbXBpbGF0aW9uIG9mIHRoaXMgbW9kdWxlIGlzIGFjdHVhbGx5IGludGVuZGVkLiBUaGVyZWZvcmUgSSBzaG91bGQgZXhhbWluZSB0aGUgYGRyaXZlcnMvbmV0L25ldGRldnNpbS9NYWtlZmlsZWAgdG8gc2VlIHVuZGVyIHdoYXQgY29uZGl0aW9ucyB0aGUgYHVkcF90dW5uZWxzLmNgIGZpbGUgaXMgaW5jbHVkZWQgaW4gdGhlIGJ1aWxkLiBJJiMzOTtsbCBuZWVkIHRvIHJldmlldyBhbnkgY29uZGl0aW9uYWwgbG9naWMgb3IgZGVwZW5kZW5jaWVzIGRlZmluZWQgaW4gdGhhdCBNYWtlZmlsZSB0byBkZXRlcm1pbmUgd2h5IGBORVRfVURQX1RVTk5FTGAgaXNuJiMzOTt0IGJlaW5nIHNldCBjb3JyZWN0bHkgZHVyaW5nIHRoZSBgTkVUREVWU0lNYCBidWlsZCBwcm9jZXNzLiBJdCYjMzk7cyBwcm9iYWJseSBqdXN0IGEgc2ltcGxlIGNvbmZpZ3VyYXRpb24gaXNzdWUsIGJ1dCBJIG5lZWQgdG8gcGlucG9pbnQgd2hlcmUgdGhlIHByb2JsZW0gbGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dWRwX3R1bm5lbHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL01ha2VmaWxlPTU9bmV0ZGV2c2ltLW9ianMgOj0gXFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9NYWtlZmlsZTo2Olx0bmV0ZGV2Lm8gZGV2Lm8gZXRodG9vbC5vIGZpYi5vIGJ1cy5vIGhlYWx0aC5vIGh3c3RhdHMubyB1ZHBfdHVubmVscy5vIHRjLm9cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9NYWtlZmlsZS03LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDA0MwoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDEyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIEJ1aWxkIENvbmZpZ3VyYXRpb24gQ29uZmxpY3QqKgoKT2theSwgc28gSSYjMzk7bSBub3RpY2luZyBzb21ldGhpbmcgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgd2l0aCB0aGUgYnVpbGQgcHJvY2Vzcy4gSXQgc2VlbXMgdGhhdCBgdWRwX3R1bm5lbHMub2AgaXMgKmFsd2F5cyogY29tcGlsZWQgd2hlbiBgTkVUREVWU0lNYCBpcyBlbmFibGVkLiBUaGF0JiMzOTtzIGZpbmUgaW4gaXRzZWxmLiBCdXQsIEkmIzM5O20gYWxzbyBzZWVpbmcgdGhhdCBgdWRwX3R1bm5lbF9uaWMuY2AsIHdoaWNoIGlzIGxvY2F0ZWQgaW4gYG5ldC9pcHY0L01ha2VmaWxlYCwgaGFzIGEgZGVwZW5kZW5jeSBvbiBgQ09ORklHX05FVF9VRFBfVFVOTkVMYC4gVGhhdCYjMzk7cyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nLgoKTXkgY29uY2VybiBpcyB3aGF0IGhhcHBlbnMgaWYgYE5FVERFVlNJTWAgKmlzKiBlbmFibGVkLCBidXQgYENPTkZJR19ORVRfVURQX1RVTk5FTGAgaXMgZGlzYWJsZWQuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIHJlY2lwZSBmb3IgYSBidWlsZC10aW1lIGZhaWx1cmUsIG9yIHdvcnNlLCBzb21lIHVuZXhwZWN0ZWQgcnVudGltZSBiZWhhdmlvci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gaXMgZGVzaWduZWQgdG8gcmVzcG9uZCB0byB0aGlzIHBhcnRpY3VsYXIgY29tYmluYXRpb24gb2YgY29uZmlndXJhdGlvbiBvcHRpb25zLgoKVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgc291cmNlIGNvZGUgb2YgYGRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jYC4gSSYjMzk7bSBnb2luZyB0byBsb29rIHNwZWNpZmljYWxseSBmb3IgYCNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRfVURQX1RVTk5FTClgIGRpcmVjdGl2ZXMuIFRoYXQgd2lsbCB0ZWxsIG1lIGltbWVkaWF0ZWx5IGlmIHRoZSBjb2RlIHdpdGhpbiBgdWRwX3R1bm5lbHMuY2AgaXMgY29uZGl0aW9uYWxseSBjb21waWxlZCBiYXNlZCBvbiB0aGUgcHJlc2VuY2Ugb2YgdGhhdCBjcnVjaWFsIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaGlzIHdpbGwgZGlyZWN0bHkgaW5kaWNhdGUgd2hldGhlciB0aGUgYnVpbGQgcHJvY2VzcyB0YWtlcyB0aGlzIGNvbmZsaWN0IGludG8gYWNjb3VudCwgb3IgaWYgaXQgc2ltcGx5IHByb2R1Y2VzIGFuIGFydGlmYWN0IHRoYXQgaXMgbm90IGJ1aWxkYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfTkVUX1VEUF9UVU5ORUwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NTE2CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZvciBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIERhdGEgU3RydWN0dXJlcyoqCgpBbHJpZ2h0LCBzbyBJIG5lZWQgdG8gZmluZCB3aGVyZSB0aGUgYHVkcF90dW5uZWxfbmljX2luZm9gIHN0cnVjdHVyZSBpcyBkZWZpbmVkLiBHaXZlbiB0aGUgY29udGV4dCwgbXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGl0JiMzOTtzIGxpa2VseSBob3VzZWQgd2l0aGluIHRoZSBrZXJuZWwmIzM5O3MgbmV0d29yayBzdGFjay4gVGhlIHR3byBtb3N0IHByb2JhYmxlIGxvY2F0aW9ucyBqdW1wIHRvIG1pbmQ6IGVpdGhlciB3aXRoaW4gdGhlIGBpbmNsdWRlL25ldC91ZHBfdHVubmVsLmhgIGZpbGUsIGFzIHRoZSBuYW1lIHN0cm9uZ2x5IHN1Z2dlc3RzIGEgY29ubmVjdGlvbiB0byBVRFAgdHVubmVsaW5nLCBvciBwZXJoYXBzIGluIGBpbmNsdWRlL2xpbnV4L25ldGRldmljZS5oYC4gVGhlIGxhdHRlciBpcyB0aGUgZ2VuZXJhbCBoZWFkZXIgZm9yIG5ldHdvcmsgZGV2aWNlIGRlZmluaXRpb25zLCBhbmQgaXQgd291bGRuJiMzOTt0IGJlIHN1cnByaXNpbmcgaWYgc29tZSBhc3NvY2lhdGVkIGluZm9ybWF0aW9uIHdlcmUga2VwdCB0aGVyZS4gSSYjMzk7bGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhvc2UgdHdvIGZpbGVzIOKAkyBpdCYjMzk7cyB0aGUgbW9zdCBlZmZpY2llbnQgd2F5IHRvIHBpbnBvaW50IHRoZSBleGFjdCBkZWZpbml0aW9uIGFuZCB1bmRlcnN0YW5kIGl0cyBmaWVsZHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VkcF90dW5uZWxfbmljX2luZm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L25ldGRldmljZS5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9NzY9c3RydWN0IHVkcF90dW5uZWxfaW5mbztcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6Nzc6c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm87XG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTc4LXN0cnVjdCB1ZHBfdHVubmVsX25pYztcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTE4MDQ9ZW51bSBuZXRkZXZfcmVnX3N0YXRlIHtcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTIwODktICpcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MjA5MDogKlx0QHVkcF90dW5uZWxfbmljX2luZm86XHRzdGF0aWMgc3RydWN0dXJlIGRlc2NyaWJpbmcgdGhlIFVEUCB0dW5uZWxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjA5MS0gKlx0XHRcdFx0b2ZmbG9hZCBjYXBhYmlsaXRpZXMgb2YgdGhlIGRldmljZVxuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MjEzOT1zdHJ1Y3QgbmV0X2RldmljZSB7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yNTA0LSNlbmRpZlxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyNTA1Olx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm9cdCp1ZHBfdHVubmVsX25pY19pbmZvO1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yNTA2LVx0c3RydWN0IHVkcF90dW5uZWxfbmljXHQqdWRwX3R1bm5lbF9uaWM7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MDM3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBVbmV4cGVjdGVkIERhdGEgU3RydWN0dXJlIFVzYWdlKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSwgYW5kIHNvbWV0aGluZyYjMzk7cyBidWdnaW5nIG1lLiBJdCBzZWVtcyBsaWtlIGV2ZW4gd2hlbiB0aGUgYE5FVF9VRFBfVFVOTkVMYCBmZWF0dXJlIGlzIGRpc2FibGVkLCB0aGUgYHVkcF90dW5uZWxfbmljX2luZm9gIGZpZWxkIGlzIHN0aWxsIHByZXNlbnQgd2l0aGluIHRoZSBgc3RydWN0IG5ldF9kZXZpY2VgLiBUaGF0IHN0cmlrZXMgbWUgYXMgb2RkLiBJdCBzaG91bGQgYmUgY29uZGl0aW9uYWwsIHJpZ2h0PyBBIGZlYXR1cmUgZmxhZyB3b3VsZCB1c3VhbGx5IGNvbnRyb2wgc29tZXRoaW5nIGxpa2UgdGhhdC4KCkJ1dCBoYW5nIG9u4oCmIGlzIGB1ZHBfdHVubmVsX25pY19yZWdpc3RlcmAgYWN0dWFsbHkgYmVpbmcgY2FsbGVkIGZyb20gYHJlZ2lzdGVyX25ldGRldmljZWA/IFRoYXQgd291bGQgbWFrZSBzZW5zZSwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoYXQuIExldCYjMzk7cyBnbyB0byBgbmV0L2NvcmUvZGV2LmNgIGFuZCBzZWUgd2hhdCYjMzk7cyByZWFsbHkgaGFwcGVuaW5nIGR1cmluZyBkZXZpY2UgcmVnaXN0cmF0aW9uLiBJ4oCZbSB0aGlua2luZyB0aGVyZSBtaWdodCBiZSBzb21ldGhpbmcgaGVyZSB0aGF0IGlzIG5vdCByaWdodC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1ZHBfdHVubmVsX25pY19yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL2Rldi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUzMjIKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipEaWdnaW5nIGludG8gdGhhdCBgdWRwX3R1bm5lbF9uaWNfcmVnaXN0ZXJgIENhbGwqKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4gSSBuZWVkIHRvIHRyYWNlIHRoZSBjYWxsIHN0YWNrIGZvciBgdWRwX3R1bm5lbF9uaWNfcmVnaXN0ZXJgLiBJdCBzZWVtcyBmdW5kYW1lbnRhbCB0byB0aGUgbmV0d29ya2luZyBzdGFjaywgYnV0IEkgZG9uJiMzOTt0IHJlY2FsbCBvZmZoYW5kICpleGFjdGx5KiBob3cgaXQgZ2V0cyBpbnZva2VkLiBJcyBpdCB0aHJvdWdoIGEgc3BlY2lmaWMgZGV2aWNlIGRyaXZlciBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZT8gT3IgbWF5YmUgaXQmIzM5O3MgdHJpZ2dlcmVkIGR1cmluZyBhIG5ldGxpbmsgZXZlbnQ/IERvZXMgaXQgdGllIGludG8gdGhlIHR1bm5lbCBkZXZpY2UgY3JlYXRpb24gc29tZWhvdywgb3IgaXMgaXQgYSBtb3JlIGdlbmVyYWwgcmVnaXN0cmF0aW9uIG1lY2hhbmlzbSBmb3IgVURQLWJhc2VkIHR1bm5lbHMgd2l0aGluIHRoZSBrZXJuZWw/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgaGVyZSwgYmVjYXVzZSBrbm93aW5nICpob3cqIGl0JiMzOTtzIGNhbGxlZCBwcm92aWRlcyBjcml0aWNhbCBjb250ZXh0IGZvciBkZWJ1Z2dpbmcsIHBlcmZvcm1hbmNlIGFuYWx5c2lzLCBhbmQgZXZlbiBzZWN1cml0eSBpbXBsaWNhdGlvbnMuIEkgc3VzcGVjdCBpdCYjMzk7cyBsaWtlbHkgYSByZWxhdGl2ZWx5IGxvdy1sZXZlbCBjYWxsLCBwcm9iYWJseSBpbnZvbHZlZCBpbiBzZXR0aW5nIHVwIHRoZSBhY3R1YWwgVURQIHR1bm5lbCBkZXZpY2UuIEJ1dCBJJiMzOTtsbCBuZWVkIHRvIGZvbGxvdyB0aGUgdHJhaWwuIFRpbWUgdG8gYnJlYWsgb3V0IHRoZSBrZXJuZWwgc291cmNlIGFuZCBhIGRlYnVnZ2VyLiBMZXQmIzM5O3Mgc2VlIGlmIEkgY2FuIGZpbmQgdGhlIGVudHJ5IHBvaW50cyB0aGF0IGxlYWQgdG8gdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dWRwX3R1bm5lbF9uaWNfcmVnaXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz04MDA9c3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfcHV0KHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODA1LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4MDY6c3RhdGljIGludCB1ZHBfdHVubmVsX25pY19yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04MDcte1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9OTMyPXVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTk0NS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTQ2Olx0XHRlcnIgPSB1ZHBfdHVubmVsX25pY19yZWdpc3RlcihkZXYpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05NDctXHRcdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1ODI0CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBOZXRkZXZpY2UgTm90aWZpZXIgQ2FsbCoqCgpSaWdodCwgc28gdGhpcyBldmVudCBpcyBvcmlnaW5hdGluZyBmcm9tIGEgbmV0ZGV2aWNlIG5vdGlmaWVyLCBzcGVjaWZpY2FsbHkgYHVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudGAuIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBzb21ldGhpbmcgcmVsYXRlZCB0byBVRFAgdHVubmVscyBhbmQgbmV0d29yayBkZXZpY2UgZXZlbnRzLiBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGUgcmVsZXZhbnQgY29kZSwgc28gbGV0JiMzOTtzIGp1bXAgcmlnaHQgaW50byBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgdWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50YC4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgZXZlbnQgaGFuZGxpbmcgbG9naWMgdGhlcmUg4oCTIHRoZSBjb2RlIHRoYXQgcmVhY3RzIHRvIG5ldGRldmljZSBsaWZlY3ljbGUgY2hhbmdlcyBpbiB0aGUgY29udGV4dCBvZiBVRFAgdHVubmVsaW5nLiBJdCYjMzk7cyBsaWtlbHkgd2UmIzM5O2xsIHNlZSByZWdpc3RyYXRpb24sIHVucmVnaXN0cmF0aW9uLCBhbmQgbWF5YmUgc29tZSBjb25maWd1cmF0aW9uIG9yIHJlc291cmNlIG1hbmFnZW1lbnQgcmVsYXRlZCB0byB0aGUgdHVubmVsIGludGVyZmFjZXMsIGFsbCB0cmlnZ2VyZWQgYnkgdGhpcyBub3RpZmllci4gSSYjMzk7bSBrZWVuIHRvIHNlZSBob3cgdGhleSYjMzk7cmUgaGFuZGxpbmcgdGhpbmdzIGxpa2UgZGV2aWNlIHVwL2Rvd24gZXZlbnRzLCBhZGRyZXNzIGNoYW5nZXMsIG9yIHBlcmhhcHMgZXZlbiBsaW5rIHN0YXRlIGNoYW5nZXMgZm9yIHRoZSB1bmRlcmx5aW5nIHBoeXNpY2FsIGludGVyZmFjZXMuIEl0JiMzOTtzIGxpa2VseSB0aGF0JiMzOTtzIHRoZSBmb2NhbCBwb2ludCwgdGhlIHBvaW50IG9mIGVudHJ5LiBUaW1lIHRvIGRpdmUgaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3VkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz05MzE9c3RhdGljIGludFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5MzI6dWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05MzMtXHRcdFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnB0cilcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTk4Mj1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHVkcF90dW5uZWxfbmljX25vdGlmaWVyX2Jsb2NrIF9fcmVhZF9tb3N0bHkgPSB7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjk4MzpcdC5ub3RpZmllcl9jYWxsID0gdWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50LFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05ODQtfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUwODkKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1ZHBfdHVubmVsX25pY193b3JrcXVldWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9Mzk9c3RydWN0IHVkcF90dW5uZWxfbmljIHtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU5LSAqL1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2MDpzdGF0aWMgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjEtXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zMDY9dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMTAtXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMxMTpcdGlmIChxdWV1ZV93b3JrKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSwgXHUwMDI2dXRuLVx1MDAzZXdvcmspKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMTItXHRcdHJlZmNvdW50X2luYyhcdTAwMjZ1dG4tXHUwMDNlcmVmY250KTtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTk4Nj1zdGF0aWMgaW50IF9faW5pdCB1ZHBfdHVubmVsX25pY19pbml0X21vZHVsZSh2b2lkKVxuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTg5LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5OTA6XHR1ZHBfdHVubmVsX25pY193b3JrcXVldWUgPSBhbGxvY19vcmRlcmVkX3dvcmtxdWV1ZShcJiMzNDt1ZHBfdHVubmVsX25pY1wmIzM0OywgMCk7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjk5MTpcdGlmICghdWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlKVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05OTItXHRcdHJldHVybiAtRU5PTUVNO1xuLS1cbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTAwNy1cdHJ0bmxfdW5sb2NrKCk7XG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjEwMDg6XHRkZXN0cm95X3dvcmtxdWV1ZSh1ZHBfdHVubmVsX25pY193b3JrcXVldWUpO1xubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDA5LVx0cmV0dXJuIGVycjtcbi0tXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTEwMTM9c3RhdGljIHZvaWQgX19leGl0IHVkcF90dW5uZWxfbmljX2NsZWFudXBfbW9kdWxlKHZvaWQpXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDIwLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxMDIxOlx0ZGVzdHJveV93b3JrcXVldWUodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTAyMi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2OTg1CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogNTQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBgdWRwX3R1bm5lbF9uaWNgIE1vZHVsZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGB1ZHBfdHVubmVsX25pY2Agc3R1ZmYsIHJpZ2h0PyBGcm9tIHdoYXQgSSBjYW4gZ2F0aGVyLCBgdWRwX3R1bm5lbF9uaWNgIGlzIGEgbW9kdWxlIOKAkyBgdWRwX3R1bm5lbF9uaWMua29gIG9yIGJ1aWx0LWluIHRvIHRoZSBrZXJuZWwg4oCTIGFuZCB0aGUgY29yZSBvZiBpdCBhbGwgaXMgYSBuZXRkZXZpY2Ugbm90aWZpZXIgcmVnaXN0cmF0aW9uLiBUaGUga2V5IHRoaW5nIHNlZW1zIHRvIGJlIHRoYXQgd2hlbiBhIG5ldGRldmljZSB3aXRoIGEgYHVkcF90dW5uZWxfbmljX2luZm9gIHN0cnVjdHVyZSBpcyByZWdpc3RlcmVkLCB0aGF0JiMzOTtzIHdoZW4gYSBgdWRwX3R1bm5lbF9uaWNgIGluc3RhbmNlIGdldHMgYWxsb2NhdGVkIGFuZCBsaW5rZWQgdG8gdGhhdCBuZXRkZXZpY2UuCgpUaGlzIHBvaW50cyBtZSBpbW1lZGlhdGVseSB0b3dhcmRzIGBDT05GSUdfTkVUX1VEUF9UVU5ORUxgLiBJdCYjMzk7cyBlc3NlbnRpYWwgdG8gaGF2ZSB0aGF0IGVuYWJsZWQsIG9idmlvdXNseS4gTm93LCBob3cgZG8gd2UgZ2V0IGBORVRfVURQX1RVTk5FTGAgZW5hYmxlZD8gV2VsbCwgYSBjb3VwbGUgb2YgbGlrZWx5IHBhdGhzIGNvbWUgdG8gbWluZDogZW5hYmxpbmcgZWl0aGVyIGBDT05GSUdfVlhMQU5gIG9yIGBDT05GSUdfR0VORVZFYCBzaG91bGQgcHVsbCBpdCBpbiBhdXRvbWF0aWNhbGx5LiBBbmQsIG9mIGNvdXJzZSwgSSBjYW4gdXNlIGBDT05GSUdfTkVUREVWU0lNYCB0byBnZW5lcmF0ZSB0aG9zZSBuZXRkZXZpY2VzIHRoYXQgYXJlIGRlc2lnbmVkIHRvIGhhdmUgYHVkcF90dW5uZWxfbmljX2luZm9gLgoKV2FpdCBhIG1pbnV0ZSwgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQuIFllcywgYE5FVF9VRFBfVFVOTkVMYCBpcyAqc2VsZWN0ZWQqIGJ5IHRoaW5ncyBsaWtlIGBWWExBTmAsIGBHRU5FVkVgLCBgQkFSRVVEUGAsIGFuZCB0aGUgbGlrZS4gU28sIGl0JiMzOTtzIG5vdCBhIGRpcmVjdCBkZXBlbmRlbmN5IGluIGFsbCBjYXNlcywgYnV0IGl0JiMzOTtzICpwdWxsZWQgaW4qIGJ5IHRob3NlIGNvbmZpZ3VyYXRpb25zLiBPaywgbGV0IG1lIHJlLXZlcmlmeSB0aGF0IHRoZSBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmNgIG1vZHVsZSBkZXBlbmRzIG9uIGBORVRfVURQX1RVTk5FTGAuIEFoYSwgbm9wZSEgSXQganVzdCBzZXRzIGBkZXYtJmd0O3VkcF90dW5uZWxfbmljX2luZm9gLiBJZiBgTkVUX1VEUF9UVU5ORUxgIGlzbiYjMzk7dCBlbmFibGVkLCB0aGF0IHN0cnVjdHVyZSBpcyBqdXN0IGEgcG9pbnRlciwgYW5kIGl0JiMzOTtzIG5ldmVyIHVzZWQuIFJpZ2h0LCBiZWNhdXNlIHRoZSBjb2RlIGluIGB1ZHBfdHVubmVsX25pYy5jYCBpc24mIzM5O3QgZXZlbiBjb21waWxlZC4gU28gdG8gYWN0dWFsbHkgKnVzZSogYHVkcF90dW5uZWxfbmljLmNgIHdlICptdXN0KiBoYXZlIGBDT05GSUdfTkVUX1VEUF9UVU5ORUw9eWAgKG9yIGBtYCkuIEFuZCwgYXMgSSBzdXNwZWN0ZWQsIHdlIGFsc28gbmVlZCBhIGRyaXZlciB0aGF0IGtub3dzIHRvIHNldCBgdWRwX3R1bm5lbF9uaWNfaW5mb2AuIFRoYXQmIzM5O3Mgd2hlcmUgYENPTkZJR19ORVRERVZTSU1gIHJlYWxseSBzaGluZXMuIFBlcmZlY3QuCgpOb3csIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O2xsIHF1aWNrbHkgdmVyaWZ5IHRoZSBzdGF0dXMgb2YgYENPTkZJR19ORVRERVZTSU1gIGFuZCBgQ09ORklHX1ZYTEFOYC4gT2theSwgYm90aCBvZiB0aGVtIGFyZSB0cmlzdGF0ZSBjb25maWd1cmF0aW9ucy4gSSBzaG91bGQgbWFrZSBhIG5vdGUgdG8gaW5jbHVkZSBgTkVUREVWU0lNYCBhbmQgYFZYTEFOYCBpbiBgRW5hYmxlQ29uZmlnc2AuCgpGaW5hbGx5LCBJIHNob3VsZCBmb2N1cyBvbiB0aGUga2V5IGZ1bmN0aW9ucyBoZXJlLiBMZXQmIzM5O3Mgc2VlLi4uSSYjMzk7bGwgd2FudCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvOgoKKiAgIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYAoqICAgYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgCiogICBgdWRwX3R1bm5lbF9uaWNfcmVnaXN0ZXJgCiogICBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgCiogICBgdWRwX3R1bm5lbF9uaWNfZmx1c2hgCiogICBgdWRwX3R1bm5lbF9uaWNfcmVwbGF5YAoqICAgYHVkcF90dW5uZWxfbmljX3B1dGAKKiAgIGB1ZHBfdHVubmVsX25pY19hZGRfbmV3YAoqICAgYHVkcF90dW5uZWxfbmljX3RyeV9leGlzdGluZ2AKKiAgIGBfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jYAoKSSBzaG91bGQgc3RhcnQgYnkgZXhhbWluaW5nIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMTc6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz03MzU9c3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfcHV0KHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzM2LVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3Mzc6c3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTczOC17XG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz03NTc9dWRwX3R1bm5lbF9uaWNfYWxsb2MoY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8sXG4tLVxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03NjYtXHR1dG4tXHUwMDNlbl90YWJsZXMgPSBuX3RhYmxlcztcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NzY3Olx0SU5JVF9XT1JLKFx1MDAyNnV0bi1cdTAwM2V3b3JrLCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrKTtcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzY4LVx0bXV0ZXhfaW5pdChcdTAwMjZ1dG4tXHUwMDNlbG9jayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NTgxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNjg4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVURQIFR1bm5lbCBOSUMgU3luY2hyb25pemF0aW9uIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgc2NhbiBvZiB0aGUgcGF0Y2ggcmV2ZWFscyBpdCB0b3VjaGVzIHNldmVyYWwga2V5IGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZSBVRFAgdHVubmVsIE5JQyBpbXBsZW1lbnRhdGlvbjogYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtgLCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgLCBgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcmAsIGFuZCBgdWRwX3R1bm5lbF9uaWNfcHV0YCwgYW1vbmcgb3RoZXJzLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZXNlIGZvciBub3c6IGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYCwgYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgLCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgLCBhbmQgYHVkcF90dW5uZWxfbmljX3B1dGAuCgpUaGUgcHJpbWFyeSBjb25jZXJuLCBhcyBJIHVuZGVyc3RhbmQgaXQsIHNlZW1zIHRvIGJlIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGJldHdlZW4gYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgIGFuZCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AuIFRvIHZlcmlmeSB0aGlzLCBJJiMzOTttIHRyYWNpbmcgdGhlIGNhbGwgcGF0aHMuIEZpcnN0LCBJIGNvbmZpcm1lZCB0aGF0IGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYCAqaXMqIHJlYWNoYWJsZSDigJMgaXQmIzM5O3MgdHJpZ2dlcmVkIGR1cmluZyBuZXRkZXZpY2UgdW5yZWdpc3RyYXRpb24gdGhyb3VnaCBgdWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50YCwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZS4gTmV4dCwgYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jYCBpcyBjYWxsZWQgZnJvbSBgX191ZHBfdHVubmVsX25pY19hZGRfcG9ydGAgYW5kIGBfX3VkcF90dW5uZWxfbmljX2RlbF9wb3J0YC4gVGhvc2UgYXJlLCBpbiB0dXJuLCBjYWxsZWQgYnkgYHVkcF90dW5uZWxfbmljX2FkZF9wb3J0YCBhbmQgYHVkcF90dW5uZWxfbmljX2RlbF9wb3J0YCwgd2hpY2ggZmluYWxseSBnZXQgY2FsbGVkIGZyb20gYHVkcF90dW5uZWxfYWRkX3J4X3BvcnRgIGFuZCBgdWRwX3R1bm5lbF9kcm9wX3J4X3BvcnRgLiBTbywgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgdGhlIGFkZGl0aW9uIGFuZCByZW1vdmFsIG9mIFVEUCB0dW5uZWwgcG9ydHMsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRlY2hub2xvZ2llcyBsaWtlIFZYTEFOIG9yIEdFTkVWRS4KCk5vdywgbGV0JiMzOTtzIG1hcCB0aGUgdHlwaWNhbCBzY2VuYXJpbywgdG8gZmluZCB0aGUgcmFjZSBjb25kaXRpb24sIHdoaWNoIHNlZW1zIHRvIGJlIHRoZSBjYXVzZS4gTXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgZmxvdyBpcyBhcyBmb2xsb3dzOiB3ZSBzdGFydCB3aXRoIGEgbmV0ZGV2c2ltIGRldmljZSwgd2hpY2gsIG9mIGNvdXJzZSwgaGFzIGEgYHVkcF90dW5uZWxfbmljX2luZm9gIGFzc29jaWF0ZWQgd2l0aCBpdC4gTmV4dCwgd2UgY3JlYXRlIGEgVlhMQU4gZGV2aWNlIChvciBHRU5FVkUpLiBUaGF0IGNyZWF0aW9uIGFkZHMgYSBVRFAgdHVubmVsIHBvcnQuIFRoaXMgYWRkaXRpb24gY2FsbHMgYHVkcF90dW5uZWxfYWRkX3J4X3BvcnRgLCB0cmlnZ2VyaW5nIGB1ZHBfdHVubmVsX25pY19hZGRfcG9ydGAsIHdoaWNoIHRoZW4gcXVldWVzIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYC4gVGhlbiwgaWYgdGhlIG5ldGRldnNpbSBkZXZpY2UgaXMgdW5yZWdpc3RlcmVkLCBgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcmAgZ2V0cyBjYWxsZWQuIEJvb20sIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIHJhY2UgaXMsIGJldHdlZW4gdGhlIHVucmVnaXN0cmF0aW9uIGFuZCB0aGUgd29yayBxdWV1ZS4gVGhpcyBwYXRjaCBsaWtlbHkgYWRkcmVzc2VzIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMgYXJpc2luZyBmcm9tIHRoaXMgc2VxdWVuY2UuCgpUaGlzIGlzIGhpZ2hseSBmdXp6YWJsZSBhbmQgZnVuY3Rpb25hbCwgZ2l2ZW4gdGhlIG5hdHVyZSBvZiBpdHMgZGVwZW5kZW5jaWVzLgoKQWxzbywgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9ucy4gVGhlIGtleSBjb25maWd1cmF0aW9ucyBpbnZvbHZlZCBhcmUgYE5FVERFVlNJTWAsIGBWWExBTmAsIGBHRU5FVkVgLCBhbmQgYE5FVF9VRFBfVFVOTkVMYCAod2hpY2ggaXMgc2VsZWN0ZWQgYnkgVlhMQU4pLiBOb3csIGJlZm9yZSBJIG1vdmUgb24sIEkgd2FudCB0byBjb25maXJtIGlmIGBORVRfVURQX1RVTk5FTGAgY2FuIGJlIGVuYWJsZWQgZGlyZWN0bHkuIExvb2tzIGxpa2UgaXQgaXMgYSB0cmlzdGF0ZSBjb25maWcsIGJ1dCB0aGVyZSBpc24mIzM5O3QgYSBkaXJlY3QgcHJvbXB0IGluIGVpdGhlciBgbmV0L2lwdjQvTWFrZWZpbGVgIG9yIGBuZXQvaXB2NC9LY29uZmlnYC4gTGV0IG1lIHNlYXJjaCBgbmV0L2lwdjQvS2NvbmZpZ2AgZm9yIHRoZSBjb25maWcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRfVURQX1RVTk5FTCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZz0zMDQ9Y29uZmlnIE5FVF9JUFZUSVxuLS1cbm5ldC9pcHY0L0tjb25maWctMzE1LVxubmV0L2lwdjQvS2NvbmZpZzozMTY6Y29uZmlnIE5FVF9VRFBfVFVOTkVMXG5uZXQvaXB2NC9LY29uZmlnLTMxNy1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDE3OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMDcwCgkJCQkJCQlvdXRwdXQ6IDE3NAoJCQkJCQkJdGhvdWdodHM6IDE3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFVEUCBUdW5uZWwgTklDIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhpcyBjb25maWd1cmF0aW9uIGlzIGhpZGRlbiwgd2hpY2ggbWVhbnMgYW5vdGhlciBjb21wb25lbnQgaXMgcmVzcG9uc2libGUgZm9yIHNlbGVjdGluZyBpdC4gTXkgaW5pdGlhbCB0aG91Z2h0cyBhcmUgbGVhbmluZyB0b3dhcmRzIGBWWExBTmAgb3IgYEdFTkVWRWAgYXMgbGlrZWx5IGNhbmRpZGF0ZXMuIFRob3NlIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHMuCgpOb3csIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGNvZGUgY2hhbmdlcy4gRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYHVkcF90dW5uZWxfbmljX3B1dGAgaXMgaW5kZWVkIGEgbmV3IGZ1bmN0aW9uLiBZZXAsIHRoZSBwYXRjaCBpbmNsdWRlcyBpdC4gR29vZC4KCk5leHQsIEkmIzM5O2xsIGNvbmZpcm0gdGhhdCBgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcmAgaGFzIGJlZW4gbW9kaWZpZWQuIEFscmlnaHQsIGl0JiMzOTtzIGJlZW4gdXBkYXRlZCB0byB1c2UgdGhlIG5ldyBgdWRwX3R1bm5lbF9uaWNfcHV0YC4gVGhhdCBtYWtlcyBzZW5zZS4KCk5leHQsIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYC4gTG9va3MgbGlrZSB0aGF0IGhhcyBiZWVuIHVwZGF0ZWQgdG8gdXNlIGB1ZHBfdHVubmVsX25pY19wdXRgIGFzIHdlbGwuCgpGaW5hbGx5LCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgLiBZZXMsIHRoYXQgZnVuY3Rpb24gaGFzIGJlZW4gdXBkYXRlZCB0byB1c2UgYHJlZmNvdW50X2luY2AuCgpBbHJpZ2h0LCBJIGhhdmUgdGhlIHJlc3VsdHMgSSBuZWVkIG5vdy4gTGV0JiMzOTtzIHNldCB0aG9zZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAxNzozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUREVWU0lNJiMzNDssCiAgICAmIzM0O1ZYTEFOJiMzNDssCiAgICAmIzM0O0dFTkVWRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmsmIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlciYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVsX25pY19wdXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbi91c2UtYWZ0ZXItZnJlZSBpbiB0aGUgVURQIHR1bm5lbCBOSUMgb2ZmbG9hZCBpbmZyYXN0cnVjdHVyZSBieSByZXBsYWNpbmcgYSBzaW1wbGUgcGVuZGluZyBmbGFnIHdpdGggYSBwcm9wZXIgcmVmZXJlbmNlIGNvdW50IChyZWZjb3VudF90KSBmb3IgdGhlIHdvcmtxdWV1ZS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNyZWF0aW5nL2Rlc3Ryb3lpbmcgVURQIHR1bm5lbHMgKGxpa2UgVlhMQU4gb3IgR0VORVZFKSBvbiBkZXZpY2VzIHN1cHBvcnRpbmcgVURQIHR1bm5lbCBvZmZsb2FkIChsaWtlIG5ldGRldnNpbSkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7LAogICAgJiMzNDtWWExBTiYjMzQ7LAogICAgJiMzNDtHRU5FVkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrJiMzNDssCiAgICAmIzM0O3VkcF90dW5uZWxfbmljX3VucmVnaXN0ZXImIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMmIzM0OywKICAgICYjMzQ7dWRwX3R1bm5lbF9uaWNfcHV0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24vdXNlLWFmdGVyLWZyZWUgaW4gdGhlIFVEUCB0dW5uZWwgTklDIG9mZmxvYWQgaW5mcmFzdHJ1Y3R1cmUgYnkgcmVwbGFjaW5nIGEgc2ltcGxlIHBlbmRpbmcgZmxhZyB3aXRoIGEgcHJvcGVyIHJlZmVyZW5jZSBjb3VudCAocmVmY291bnRfdCkgZm9yIHRoZSB3b3JrcXVldWUuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBjcmVhdGluZy9kZXN0cm95aW5nIFVEUCB0dW5uZWxzIChsaWtlIFZYTEFOIG9yIEdFTkVWRSkgb24gZGV2aWNlcyBzdXBwb3J0aW5nIFVEUCB0dW5uZWwgb2ZmbG9hZCAobGlrZSBuZXRkZXZzaW0pLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6MzY6MzUuMjYwMzYwMDM3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3NTI1MzIxNjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVERFVlNJTVwiLFxuICAgIFwiVlhMQU5cIixcbiAgICBcIkdFTkVWRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtcIixcbiAgICBcInVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJcIixcbiAgICBcInVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jXCIsXG4gICAgXCJ1ZHBfdHVubmVsX25pY19wdXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uL3VzZS1hZnRlci1mcmVlIGluIHRoZSBVRFAgdHVubmVsIE5JQyBvZmZsb2FkIGluZnJhc3RydWN0dXJlIGJ5IHJlcGxhY2luZyBhIHNpbXBsZSBwZW5kaW5nIGZsYWcgd2l0aCBhIHByb3BlciByZWZlcmVuY2UgY291bnQgKHJlZmNvdW50X3QpIGZvciB0aGUgd29ya3F1ZXVlLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgY3JlYXRpbmcvZGVzdHJveWluZyBVRFAgdHVubmVscyAobGlrZSBWWExBTiBvciBHRU5FVkUpIG9uIGRldmljZXMgc3VwcG9ydGluZyBVRFAgdHVubmVsIG9mZmxvYWQgKGxpa2UgbmV0ZGV2c2ltKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6MzY6MzUuMjYwMzY3NjU3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NDk1NjM5NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA3MTI4NmExYTI5NzFmMTk0OWM5YmZlZjJkN2VjYTNjZjAxZGZiNmMzXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVuIDI0IDE3OjM2OjMzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMgYi9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXFxuaW5kZXggOTk0NGVkOTIzZGRmZDEuLjg4NGI1ZDkzYjdiMzlmIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcXG4rKysgYi9uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXFxuQEAgLTMwLDkgKzMwLDggQEAgc3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5IHtcXG4gICogQHdvcms6XFx0YXN5bmMgd29yayBmb3IgdGFsa2luZyB0byBoYXJkd2FyZSBmcm9tIHByb2Nlc3MgY29udGV4dFxcbiAgKiBAZGV2OlxcdG5ldGRldiBwb2ludGVyXFxuICAqIEBsb2NrOlxcdHByb3RlY3RzIGFsbCBmaWVsZHNcXG4tICogQG5lZWRfc3luYzpcXHRhdCBsZWFzdCBvbmUgcG9ydCBzdGFydCBjaGFuZ2VkXFxuLSAqIEBuZWVkX3JlcGxheTogc3BhY2Ugd2FzIGZyZWVkLCB3ZSBuZWVkIGEgcmVwbGF5IG9mIGFsbCBwb3J0c1xcbi0gKiBAd29ya19wZW5kaW5nOiBAd29yayBpcyBjdXJyZW50bHkgc2NoZWR1bGVkXFxuKyAqIEBmbGFnczpcXHRzeW5jLCByZXBsYXkgZmxhZ3NcXG4rICogQHJlZmNudDpcXHRyZWZlcmVuY2UgY291bnRcXG4gICogQG5fdGFibGVzOlxcdG51bWJlciBvZiB0YWJsZXMgdW5kZXIgQGVudHJpZXNcXG4gICogQG1pc3NlZDpcXHRiaXRtYXAgb2YgdGFibGVzIHdoaWNoIG92ZXJmbG93blxcbiAgKiBAZW50cmllczpcXHR0YWJsZSBvZiB0YWJsZXMgb2YgcG9ydHMgY3VycmVudGx5IG9mZmxvYWRlZFxcbkBAIC00NCw5ICs0MywxMSBAQCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMge1xcbiBcXG4gXFx0c3RydWN0IG11dGV4IGxvY2s7XFxuIFxcbi1cXHR1OCBuZWVkX3N5bmM6MTtcXG4tXFx0dTggbmVlZF9yZXBsYXk6MTtcXG4tXFx0dTggd29ya19wZW5kaW5nOjE7XFxuK1xcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XFxuKyNkZWZpbmUgVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DXFx0MFxcbisjZGVmaW5lIFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZXFx0MVxcbitcXG4rXFx0cmVmY291bnRfdCByZWZjbnQ7XFxuIFxcbiBcXHR1bnNpZ25lZCBpbnQgbl90YWJsZXM7XFxuIFxcdHVuc2lnbmVkIGxvbmcgbWlzc2VkO1xcbkBAIC0xMTYsNyArMTE3LDcgQEAgdWRwX3R1bm5lbF9uaWNfZW50cnlfcXVldWUoc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXFxuIFxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBmbGFnKVxcbiB7XFxuIFxcdGVudHJ5LVxcdTAwM2VmbGFncyB8PSBmbGFnO1xcbi1cXHR1dG4tXFx1MDAzZW5lZWRfc3luYyA9IDE7XFxuK1xcdHNldF9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DLCBcXHUwMDI2dXRuLVxcdTAwM2VmbGFncyk7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkXFxuQEAgLTI4Myw3ICsyODQsNyBAQCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV90YWJsZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBzdGF0aWMgdm9pZFxcbiBfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbiB7XFxuLVxcdGlmICghdXRuLVxcdTAwM2VuZWVkX3N5bmMpXFxuK1xcdGlmICghdGVzdF9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DLCBcXHUwMDI2dXRuLVxcdTAwM2VmbGFncykpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdGlmIChkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8tXFx1MDAzZXN5bmNfdGFibGUpXFxuQEAgLTI5MSwyMSArMjkyLDI0IEBAIF9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxuIFxcdGVsc2VcXG4gXFx0XFx0dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfYnlfcG9ydChkZXYsIHV0bik7XFxuIFxcbi1cXHR1dG4tXFx1MDAzZW5lZWRfc3luYyA9IDA7XFxuK1xcdGNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFxcdTAwMjZ1dG4tXFx1MDAzZWZsYWdzKTtcXG4gXFx0LyogQ2FuJ3QgcmVwbGF5IGRpcmVjdGx5IGhlcmUsIGluIGNhc2Ugd2UgY29tZSBmcm9tIHRoZSB0dW5uZWwgZHJpdmVyJ3NcXG4gXFx0ICogbm90aWZpY2F0aW9uIC0gdHJ5aW5nIHRvIHJlcGxheSBtYXkgZGVhZGxvY2sgaW5zaWRlIHR1bm5lbCBkcml2ZXIuXFxuIFxcdCAqL1xcbi1cXHR1dG4tXFx1MDAzZW5lZWRfcmVwbGF5ID0gdWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShkZXYsIHV0bik7XFxuK1xcdGlmICh1ZHBfdHVubmVsX25pY19zaG91bGRfcmVwbGF5KGRldiwgdXRuKSlcXG4rXFx0XFx0c2V0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgXFx1MDAyNnV0bi1cXHUwMDNlZmxhZ3MpO1xcbitcXHRlbHNlXFxuK1xcdFxcdGNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgXFx1MDAyNnV0bi1cXHUwMDNlZmxhZ3MpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZFxcbiB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG4ge1xcbi1cXHRpZiAoIXV0bi1cXHUwMDNlbmVlZF9zeW5jKVxcbitcXHRpZiAoIXRlc3RfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgXFx1MDAyNnV0bi1cXHUwMDNlZmxhZ3MpKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbi1cXHRxdWV1ZV93b3JrKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSwgXFx1MDAyNnV0bi1cXHUwMDNld29yayk7XFxuLVxcdHV0bi1cXHUwMDNld29ya19wZW5kaW5nID0gMTtcXG4rXFx0aWYgKHF1ZXVlX3dvcmsodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlLCBcXHUwMDI2dXRuLVxcdTAwM2V3b3JrKSlcXG4rXFx0XFx0cmVmY291bnRfaW5jKFxcdTAwMjZ1dG4tXFx1MDAzZXJlZmNudCk7XFxuIH1cXG4gXFxuIHN0YXRpYyBib29sXFxuQEAgLTM0OCw3ICszNTIsNyBAQCB1ZHBfdHVubmVsX25pY19oYXNfY29sbGlzaW9uKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbiBcXHRcXHRcXHRpZiAoIXVkcF90dW5uZWxfbmljX2VudHJ5X2lzX2ZyZWUoZW50cnkpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdFxcdCAgICBlbnRyeS1cXHUwMDNlcG9ydCA9PSB0aS1cXHUwMDNlcG9ydCBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHRcXHQgICAgZW50cnktXFx1MDAzZXR5cGUgIT0gdGktXFx1MDAzZXR5cGUpIHtcXG4tXFx0XFx0XFx0XFx0X19zZXRfYml0KGksIFxcdTAwMjZ1dG4tXFx1MDAzZW1pc3NlZCk7XFxuK1xcdFxcdFxcdFxcdHNldF9iaXQoaSwgXFx1MDAyNnV0bi1cXHUwMDNlbWlzc2VkKTtcXG4gXFx0XFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuIFxcdFxcdFxcdH1cXG4gXFx0XFx0fVxcbkBAIC00ODMsNyArNDg3LDcgQEAgdWRwX3R1bm5lbF9uaWNfYWRkX25ldyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcXG4gXFx0XFx0ICogYXJlIG5vIGRldmljZXMgY3VycmVudGx5IHdoaWNoIGhhdmUgbXVsdGlwbGUgdGFibGVzIGFjY2VwdGluZ1xcbiBcXHRcXHQgKiB0aGUgc2FtZSB0dW5uZWwgdHlwZSwgYW5kIGZhbHNlIHBvc2l0aXZlcyBhcmUgb2theS5cXG4gXFx0XFx0ICovXFxuLVxcdFxcdF9fc2V0X2JpdChpLCBcXHUwMDI2dXRuLVxcdTAwM2VtaXNzZWQpO1xcbitcXHRcXHRzZXRfYml0KGksIFxcdTAwMjZ1dG4tXFx1MDAzZW1pc3NlZCk7XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiBmYWxzZTtcXG5AQCAtNTUyLDcgKzU1Niw3IEBAIHN0YXRpYyB2b2lkIF9fdWRwX3R1bm5lbF9uaWNfcmVzZXRfbnRmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZ1dG4tXFx1MDAzZWxvY2spO1xcbiBcXG4tXFx0dXRuLVxcdTAwM2VuZWVkX3N5bmMgPSBmYWxzZTtcXG4rXFx0Y2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgXFx1MDAyNnV0bi1cXHUwMDNlZmxhZ3MpO1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgdXRuLVxcdTAwM2VuX3RhYmxlczsgaSsrKVxcbiBcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgaW5mby1cXHUwMDNldGFibGVzW2ldLm5fZW50cmllczsgaisrKSB7XFxuIFxcdFxcdFxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSAqZW50cnk7XFxuQEAgLTY5Niw4ICs3MDAsOCBAQCB1ZHBfdHVubmVsX25pY19mbHVzaChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHV0bi1cXHUwMDNlbl90YWJsZXM7IGkrKylcXG4gXFx0XFx0bWVtc2V0KHV0bi1cXHUwMDNlZW50cmllc1tpXSwgMCwgYXJyYXlfc2l6ZShpbmZvLVxcdTAwM2V0YWJsZXNbaV0ubl9lbnRyaWVzLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBzaXplb2YoKip1dG4tXFx1MDAzZWVudHJpZXMpKSk7XFxuLVxcdFdBUk5fT04odXRuLVxcdTAwM2VuZWVkX3N5bmMpO1xcbi1cXHR1dG4tXFx1MDAzZW5lZWRfcmVwbGF5ID0gMDtcXG4rXFx0V0FSTl9PTih0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFxcdTAwMjZ1dG4tXFx1MDAzZWZsYWdzKSk7XFxuK1xcdGNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgXFx1MDAyNnV0bi1cXHUwMDNlZmxhZ3MpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZFxcbkBAIC03MTMsOCArNzE3LDggQEAgdWRwX3R1bm5lbF9uaWNfcmVwbGF5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgdXRuLVxcdTAwM2VuX3RhYmxlczsgaSsrKVxcbiBcXHRcXHRmb3IgKGogPSAwOyBqIFxcdTAwM2MgaW5mby1cXHUwMDNldGFibGVzW2ldLm5fZW50cmllczsgaisrKVxcbiBcXHRcXHRcXHR1ZHBfdHVubmVsX25pY19lbnRyeV9mcmVlemVfdXNlZChcXHUwMDI2dXRuLVxcdTAwM2VlbnRyaWVzW2ldW2pdKTtcXG4tXFx0dXRuLVxcdTAwM2VtaXNzZWQgPSAwO1xcbi1cXHR1dG4tXFx1MDAzZW5lZWRfcmVwbGF5ID0gMDtcXG4rXFx0Yml0bWFwX3plcm8oXFx1MDAyNnV0bi1cXHUwMDNlbWlzc2VkLCBVRFBfVFVOTkVMX05JQ19NQVhfVEFCTEVTKTtcXG4rXFx0Y2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCBcXHUwMDI2dXRuLVxcdTAwM2VmbGFncyk7XFxuIFxcbiBcXHRpZiAoIWluZm8tXFx1MDAzZXNoYXJlZCkge1xcbiBcXHRcXHR1ZHBfdHVubmVsX2dldF9yeF9pbmZvKGRldik7XFxuQEAgLTcyOCw2ICs3MzIsOCBAQCB1ZHBfdHVubmVsX25pY19yZXBsYXkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxuIFxcdFxcdFxcdHVkcF90dW5uZWxfbmljX2VudHJ5X3VuZnJlZXplKFxcdTAwMjZ1dG4tXFx1MDAzZWVudHJpZXNbaV1bal0pO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19wdXQoc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pO1xcbitcXG4gc3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIHtcXG4gXFx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4gPVxcbkBAIC03MzYsMTQgKzc0MiwxNSBAQCBzdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0cnRubF9sb2NrKCk7XFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNnV0bi1cXHUwMDNlbG9jayk7XFxuIFxcbi1cXHR1dG4tXFx1MDAzZXdvcmtfcGVuZGluZyA9IDA7XFxuIFxcdF9fdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmModXRuLVxcdTAwM2VkZXYsIHV0bik7XFxuIFxcbi1cXHRpZiAodXRuLVxcdTAwM2VuZWVkX3JlcGxheSlcXG4rXFx0aWYgKHRlc3RfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCBcXHUwMDI2dXRuLVxcdTAwM2VmbGFncykpXFxuIFxcdFxcdHVkcF90dW5uZWxfbmljX3JlcGxheSh1dG4tXFx1MDAzZWRldiwgdXRuKTtcXG4gXFxuIFxcdG11dGV4X3VubG9jayhcXHUwMDI2dXRuLVxcdTAwM2Vsb2NrKTtcXG4gXFx0cnRubF91bmxvY2soKTtcXG4rXFxuK1xcdHVkcF90dW5uZWxfbmljX3B1dCh1dG4pO1xcbiB9XFxuIFxcbiBzdGF0aWMgc3RydWN0IHVkcF90dW5uZWxfbmljICpcXG5AQCAtNzU5LDYgKzc2Niw3IEBAIHVkcF90dW5uZWxfbmljX2FsbG9jKGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvLFxcbiBcXHR1dG4tXFx1MDAzZW5fdGFibGVzID0gbl90YWJsZXM7XFxuIFxcdElOSVRfV09SSyhcXHUwMDI2dXRuLVxcdTAwM2V3b3JrLCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrKTtcXG4gXFx0bXV0ZXhfaW5pdChcXHUwMDI2dXRuLVxcdTAwM2Vsb2NrKTtcXG4rXFx0cmVmY291bnRfc2V0KFxcdTAwMjZ1dG4tXFx1MDAzZXJlZmNudCwgMSk7XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgbl90YWJsZXM7IGkrKykge1xcbiBcXHRcXHR1dG4tXFx1MDAzZWVudHJpZXNbaV0gPSBremFsbG9jX29ianMoKnV0bi1cXHUwMDNlZW50cmllc1tpXSxcXG5AQCAtNzgyLDkgKzc5MCwxOSBAQCBzdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19mcmVlKHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbiBcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHV0bi1cXHUwMDNlbl90YWJsZXM7IGkrKylcXG4gXFx0XFx0a2ZyZWUodXRuLVxcdTAwM2VlbnRyaWVzW2ldKTtcXG4rXFxuK1xcdGlmICh1dG4tXFx1MDAzZWRldilcXG4rXFx0XFx0ZGV2X3B1dCh1dG4tXFx1MDAzZWRldik7XFxuK1xcbiBcXHRrZnJlZSh1dG4pO1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19wdXQoc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxuK3tcXG4rXFx0aWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdChcXHUwMDI2dXRuLVxcdTAwM2VyZWZjbnQpKVxcbitcXHRcXHR1ZHBfdHVubmVsX25pY19mcmVlKHV0bik7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgdWRwX3R1bm5lbF9uaWNfcmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4ge1xcbiBcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5AQCAtODYzLDYgKzg4MSw3IEBAIHN0YXRpYyB2b2lkXFxuIHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxuIHtcXG4gXFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxuK1xcdGJvb2wgbGFzdCA9IHRydWU7XFxuIFxcbiBcXHR1ZHBfdHVubmVsX25pY19sb2NrKGRldik7XFxuIFxcbkBAIC04ODksNiArOTA4LDcgQEAgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG4gXFx0XFx0XFx0dWRwX3R1bm5lbF9kcm9wX3J4X2luZm8oZGV2KTtcXG4gXFx0XFx0XFx0dXRuLVxcdTAwM2VkZXYgPSBmaXJzdC1cXHUwMDNlZGV2O1xcbiBcXHRcXHRcXHR1ZHBfdHVubmVsX25pY191bmxvY2soZGV2KTtcXG4rXFx0XFx0XFx0bGFzdCA9IGZhbHNlO1xcbiBcXHRcXHRcXHRnb3RvIHJlbGVhc2VfZGV2O1xcbiBcXHRcXHR9XFxuIFxcbkBAIC05MDEsMTYgKzkyMSwxMSBAQCB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbiBcXHR1ZHBfdHVubmVsX25pY19mbHVzaChkZXYsIHV0bik7XFxuIFxcdHVkcF90dW5uZWxfbmljX3VubG9jayhkZXYpO1xcbiBcXG4tXFx0LyogV2FpdCBmb3IgdGhlIHdvcmsgdG8gYmUgZG9uZSB1c2luZyB0aGUgc3RhdGUsIG5ldGRldiBjb3JlIHdpbGxcXG4tXFx0ICogcmV0cnkgdW5yZWdpc3RlciB1bnRpbCB3ZSBnaXZlIHVwIG91ciByZWZlcmVuY2Ugb24gdGhpcyBkZXZpY2UuXFxuLVxcdCAqL1xcbi1cXHRpZiAodXRuLVxcdTAwM2V3b3JrX3BlbmRpbmcpXFxuLVxcdFxcdHJldHVybjtcXG4tXFxuLVxcdHVkcF90dW5uZWxfbmljX2ZyZWUodXRuKTtcXG4rXFx0dWRwX3R1bm5lbF9uaWNfcHV0KHV0bik7XFxuIHJlbGVhc2VfZGV2OlxcbiBcXHRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljID0gTlVMTDtcXG4tXFx0ZGV2X3B1dChkZXYpO1xcbitcXHRpZiAoIWxhc3QpXFxuK1xcdFxcdGRldl9wdXQoZGV2KTtcXG4gfVxcbiBcXG4gc3RhdGljIGludFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzozNjozNS44MTA4Mjg0OTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE0Njk3NDg0MjEyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRERVZTSU1cIixcbiAgICBcIlZYTEFOXCIsXG4gICAgXCJHRU5FVkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrXCIsXG4gICAgXCJ1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyXCIsXG4gICAgXCJ1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY1wiLFxuICAgIFwidWRwX3R1bm5lbF9uaWNfcHV0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbi91c2UtYWZ0ZXItZnJlZSBpbiB0aGUgVURQIHR1bm5lbCBOSUMgb2ZmbG9hZCBpbmZyYXN0cnVjdHVyZSBieSByZXBsYWNpbmcgYSBzaW1wbGUgcGVuZGluZyBmbGFnIHdpdGggYSBwcm9wZXIgcmVmZXJlbmNlIGNvdW50IChyZWZjb3VudF90KSBmb3IgdGhlIHdvcmtxdWV1ZS4gVGhpcyBpcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNyZWF0aW5nL2Rlc3Ryb3lpbmcgVURQIHR1bm5lbHMgKGxpa2UgVlhMQU4gb3IgR0VORVZFKSBvbiBkZXZpY2VzIHN1cHBvcnRpbmcgVURQIHR1bm5lbCBvZmZsb2FkIChsaWtlIG5ldGRldnNpbSkuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzEyODZhMWEyOTcxZjE5NDljOWJmZWYyZDdlY2EzY2YwMWRmYjZjM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVuIDI0IDE3OjM2OjMzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYyBiL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcbmluZGV4IDk5NDRlZDkyM2RkZmQxLi44ODRiNWQ5M2I3YjM5ZiAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcbisrKyBiL25ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcbkBAIC0zMCw5ICszMCw4IEBAIHN0cnVjdCB1ZHBfdHVubmVsX25pY190YWJsZV9lbnRyeSB7XG4gICogQHdvcms6XHRhc3luYyB3b3JrIGZvciB0YWxraW5nIHRvIGhhcmR3YXJlIGZyb20gcHJvY2VzcyBjb250ZXh0XG4gICogQGRldjpcdG5ldGRldiBwb2ludGVyXG4gICogQGxvY2s6XHRwcm90ZWN0cyBhbGwgZmllbGRzXG4tICogQG5lZWRfc3luYzpcdGF0IGxlYXN0IG9uZSBwb3J0IHN0YXJ0IGNoYW5nZWRcbi0gKiBAbmVlZF9yZXBsYXk6IHNwYWNlIHdhcyBmcmVlZCwgd2UgbmVlZCBhIHJlcGxheSBvZiBhbGwgcG9ydHNcbi0gKiBAd29ya19wZW5kaW5nOiBAd29yayBpcyBjdXJyZW50bHkgc2NoZWR1bGVkXG4rICogQGZsYWdzOlx0c3luYywgcmVwbGF5IGZsYWdzXG4rICogQHJlZmNudDpcdHJlZmVyZW5jZSBjb3VudFxuICAqIEBuX3RhYmxlczpcdG51bWJlciBvZiB0YWJsZXMgdW5kZXIgQGVudHJpZXNcbiAgKiBAbWlzc2VkOlx0Yml0bWFwIG9mIHRhYmxlcyB3aGljaCBvdmVyZmxvd25cbiAgKiBAZW50cmllczpcdHRhYmxlIG9mIHRhYmxlcyBvZiBwb3J0cyBjdXJyZW50bHkgb2ZmbG9hZGVkXG5AQCAtNDQsOSArNDMsMTEgQEAgc3RydWN0IHVkcF90dW5uZWxfbmljIHtcbiBcbiBcdHN0cnVjdCBtdXRleCBsb2NrO1xuIFxuLVx0dTggbmVlZF9zeW5jOjE7XG4tXHR1OCBuZWVkX3JlcGxheToxO1xuLVx0dTggd29ya19wZW5kaW5nOjE7XG4rXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xuKyNkZWZpbmUgVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DXHQwXG4rI2RlZmluZSBVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWVx0MVxuK1xuK1x0cmVmY291bnRfdCByZWZjbnQ7XG4gXG4gXHR1bnNpZ25lZCBpbnQgbl90YWJsZXM7XG4gXHR1bnNpZ25lZCBsb25nIG1pc3NlZDtcbkBAIC0xMTYsNyArMTE3LDcgQEAgdWRwX3R1bm5lbF9uaWNfZW50cnlfcXVldWUoc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4sXG4gXHRcdFx0ICAgdW5zaWduZWQgaW50IGZsYWcpXG4ge1xuIFx0ZW50cnktXHUwMDNlZmxhZ3MgfD0gZmxhZztcbi1cdHV0bi1cdTAwM2VuZWVkX3N5bmMgPSAxO1xuK1x0c2V0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkXG5AQCAtMjgzLDcgKzI4NCw3IEBAIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX2J5X3RhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gc3RhdGljIHZvaWRcbiBfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIHtcbi1cdGlmICghdXRuLVx1MDAzZW5lZWRfc3luYylcbitcdGlmICghdGVzdF9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DLCBcdTAwMjZ1dG4tXHUwMDNlZmxhZ3MpKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRpZiAoZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8tXHUwMDNlc3luY190YWJsZSlcbkBAIC0yOTEsMjEgKzI5MiwyNCBAQCBfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIFx0ZWxzZVxuIFx0XHR1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV9wb3J0KGRldiwgdXRuKTtcbiBcbi1cdHV0bi1cdTAwM2VuZWVkX3N5bmMgPSAwO1xuK1x0Y2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKTtcbiBcdC8qIENhbid0IHJlcGxheSBkaXJlY3RseSBoZXJlLCBpbiBjYXNlIHdlIGNvbWUgZnJvbSB0aGUgdHVubmVsIGRyaXZlcidzXG4gXHQgKiBub3RpZmljYXRpb24gLSB0cnlpbmcgdG8gcmVwbGF5IG1heSBkZWFkbG9jayBpbnNpZGUgdHVubmVsIGRyaXZlci5cbiBcdCAqL1xuLVx0dXRuLVx1MDAzZW5lZWRfcmVwbGF5ID0gdWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShkZXYsIHV0bik7XG4rXHRpZiAodWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShkZXYsIHV0bikpXG4rXHRcdHNldF9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9SRVBMQVksIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4rXHRlbHNlXG4rXHRcdGNsZWFyX2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1JFUExBWSwgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKTtcbiB9XG4gXG4gc3RhdGljIHZvaWRcbiB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiB7XG4tXHRpZiAoIXV0bi1cdTAwM2VuZWVkX3N5bmMpXG4rXHRpZiAoIXRlc3RfYml0KFVEUF9UVU5ORUxfTklDX05FRURfU1lOQywgXHUwMDI2dXRuLVx1MDAzZWZsYWdzKSlcbiBcdFx0cmV0dXJuO1xuIFxuLVx0cXVldWVfd29yayh1ZHBfdHVubmVsX25pY193b3JrcXVldWUsIFx1MDAyNnV0bi1cdTAwM2V3b3JrKTtcbi1cdHV0bi1cdTAwM2V3b3JrX3BlbmRpbmcgPSAxO1xuK1x0aWYgKHF1ZXVlX3dvcmsodWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlLCBcdTAwMjZ1dG4tXHUwMDNld29yaykpXG4rXHRcdHJlZmNvdW50X2luYyhcdTAwMjZ1dG4tXHUwMDNlcmVmY250KTtcbiB9XG4gXG4gc3RhdGljIGJvb2xcbkBAIC0zNDgsNyArMzUyLDcgQEAgdWRwX3R1bm5lbF9uaWNfaGFzX2NvbGxpc2lvbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcbiBcdFx0XHRpZiAoIXVkcF90dW5uZWxfbmljX2VudHJ5X2lzX2ZyZWUoZW50cnkpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdCAgICBlbnRyeS1cdTAwM2Vwb3J0ID09IHRpLVx1MDAzZXBvcnQgXHUwMDI2XHUwMDI2XG4gXHRcdFx0ICAgIGVudHJ5LVx1MDAzZXR5cGUgIT0gdGktXHUwMDNldHlwZSkge1xuLVx0XHRcdFx0X19zZXRfYml0KGksIFx1MDAyNnV0bi1cdTAwM2VtaXNzZWQpO1xuK1x0XHRcdFx0c2V0X2JpdChpLCBcdTAwMjZ1dG4tXHUwMDNlbWlzc2VkKTtcbiBcdFx0XHRcdHJldHVybiB0cnVlO1xuIFx0XHRcdH1cbiBcdFx0fVxuQEAgLTQ4Myw3ICs0ODcsNyBAQCB1ZHBfdHVubmVsX25pY19hZGRfbmV3KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxuIFx0XHQgKiBhcmUgbm8gZGV2aWNlcyBjdXJyZW50bHkgd2hpY2ggaGF2ZSBtdWx0aXBsZSB0YWJsZXMgYWNjZXB0aW5nXG4gXHRcdCAqIHRoZSBzYW1lIHR1bm5lbCB0eXBlLCBhbmQgZmFsc2UgcG9zaXRpdmVzIGFyZSBva2F5LlxuIFx0XHQgKi9cbi1cdFx0X19zZXRfYml0KGksIFx1MDAyNnV0bi1cdTAwM2VtaXNzZWQpO1xuK1x0XHRzZXRfYml0KGksIFx1MDAyNnV0bi1cdTAwM2VtaXNzZWQpO1xuIFx0fVxuIFxuIFx0cmV0dXJuIGZhbHNlO1xuQEAgLTU1Miw3ICs1NTYsNyBAQCBzdGF0aWMgdm9pZCBfX3VkcF90dW5uZWxfbmljX3Jlc2V0X250ZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZ1dG4tXHUwMDNlbG9jayk7XG4gXG4tXHR1dG4tXHUwMDNlbmVlZF9zeW5jID0gZmFsc2U7XG4rXHRjbGVhcl9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9TWU5DLCBcdTAwMjZ1dG4tXHUwMDNlZmxhZ3MpO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdXRuLVx1MDAzZW5fdGFibGVzOyBpKyspXG4gXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIGluZm8tXHUwMDNldGFibGVzW2ldLm5fZW50cmllczsgaisrKSB7XG4gXHRcdFx0c3RydWN0IHVkcF90dW5uZWxfbmljX3RhYmxlX2VudHJ5ICplbnRyeTtcbkBAIC02OTYsOCArNzAwLDggQEAgdWRwX3R1bm5lbF9uaWNfZmx1c2goc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB1dG4tXHUwMDNlbl90YWJsZXM7IGkrKylcbiBcdFx0bWVtc2V0KHV0bi1cdTAwM2VlbnRyaWVzW2ldLCAwLCBhcnJheV9zaXplKGluZm8tXHUwMDNldGFibGVzW2ldLm5fZW50cmllcyxcbiBcdFx0XHRcdFx0XHQgICAgICBzaXplb2YoKip1dG4tXHUwMDNlZW50cmllcykpKTtcbi1cdFdBUk5fT04odXRuLVx1MDAzZW5lZWRfc3luYyk7XG4tXHR1dG4tXHUwMDNlbmVlZF9yZXBsYXkgPSAwO1xuK1x0V0FSTl9PTih0ZXN0X2JpdChVRFBfVFVOTkVMX05JQ19ORUVEX1NZTkMsIFx1MDAyNnV0bi1cdTAwM2VmbGFncykpO1xuK1x0Y2xlYXJfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCBcdTAwMjZ1dG4tXHUwMDNlZmxhZ3MpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZFxuQEAgLTcxMyw4ICs3MTcsOCBAQCB1ZHBfdHVubmVsX25pY19yZXBsYXkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB1dG4tXHUwMDNlbl90YWJsZXM7IGkrKylcbiBcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgaW5mby1cdTAwM2V0YWJsZXNbaV0ubl9lbnRyaWVzOyBqKyspXG4gXHRcdFx0dWRwX3R1bm5lbF9uaWNfZW50cnlfZnJlZXplX3VzZWQoXHUwMDI2dXRuLVx1MDAzZWVudHJpZXNbaV1bal0pO1xuLVx0dXRuLVx1MDAzZW1pc3NlZCA9IDA7XG4tXHR1dG4tXHUwMDNlbmVlZF9yZXBsYXkgPSAwO1xuK1x0Yml0bWFwX3plcm8oXHUwMDI2dXRuLVx1MDAzZW1pc3NlZCwgVURQX1RVTk5FTF9OSUNfTUFYX1RBQkxFUyk7XG4rXHRjbGVhcl9iaXQoVURQX1RVTk5FTF9OSUNfTkVFRF9SRVBMQVksIFx1MDAyNnV0bi1cdTAwM2VmbGFncyk7XG4gXG4gXHRpZiAoIWluZm8tXHUwMDNlc2hhcmVkKSB7XG4gXHRcdHVkcF90dW5uZWxfZ2V0X3J4X2luZm8oZGV2KTtcbkBAIC03MjgsNiArNzMyLDggQEAgdWRwX3R1bm5lbF9uaWNfcmVwbGF5KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIFx0XHRcdHVkcF90dW5uZWxfbmljX2VudHJ5X3VuZnJlZXplKFx1MDAyNnV0bi1cdTAwM2VlbnRyaWVzW2ldW2pdKTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfcHV0KHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKTtcbitcbiBzdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiB7XG4gXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0biA9XG5AQCAtNzM2LDE0ICs3NDIsMTUgQEAgc3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRydG5sX2xvY2soKTtcbiBcdG11dGV4X2xvY2soXHUwMDI2dXRuLVx1MDAzZWxvY2spO1xuIFxuLVx0dXRuLVx1MDAzZXdvcmtfcGVuZGluZyA9IDA7XG4gXHRfX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHV0bi1cdTAwM2VkZXYsIHV0bik7XG4gXG4tXHRpZiAodXRuLVx1MDAzZW5lZWRfcmVwbGF5KVxuK1x0aWYgKHRlc3RfYml0KFVEUF9UVU5ORUxfTklDX05FRURfUkVQTEFZLCBcdTAwMjZ1dG4tXHUwMDNlZmxhZ3MpKVxuIFx0XHR1ZHBfdHVubmVsX25pY19yZXBsYXkodXRuLVx1MDAzZWRldiwgdXRuKTtcbiBcbiBcdG11dGV4X3VubG9jayhcdTAwMjZ1dG4tXHUwMDNlbG9jayk7XG4gXHRydG5sX3VubG9jaygpO1xuK1xuK1x0dWRwX3R1bm5lbF9uaWNfcHV0KHV0bik7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKlxuQEAgLTc1OSw2ICs3NjYsNyBAQCB1ZHBfdHVubmVsX25pY19hbGxvYyhjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyxcbiBcdHV0bi1cdTAwM2VuX3RhYmxlcyA9IG5fdGFibGVzO1xuIFx0SU5JVF9XT1JLKFx1MDAyNnV0bi1cdTAwM2V3b3JrLCB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrKTtcbiBcdG11dGV4X2luaXQoXHUwMDI2dXRuLVx1MDAzZWxvY2spO1xuK1x0cmVmY291bnRfc2V0KFx1MDAyNnV0bi1cdTAwM2VyZWZjbnQsIDEpO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgbl90YWJsZXM7IGkrKykge1xuIFx0XHR1dG4tXHUwMDNlZW50cmllc1tpXSA9IGt6YWxsb2Nfb2JqcygqdXRuLVx1MDAzZWVudHJpZXNbaV0sXG5AQCAtNzgyLDkgKzc5MCwxOSBAQCBzdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19mcmVlKHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdXRuLVx1MDAzZW5fdGFibGVzOyBpKyspXG4gXHRcdGtmcmVlKHV0bi1cdTAwM2VlbnRyaWVzW2ldKTtcbitcbitcdGlmICh1dG4tXHUwMDNlZGV2KVxuK1x0XHRkZXZfcHV0KHV0bi1cdTAwM2VkZXYpO1xuK1xuIFx0a2ZyZWUodXRuKTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfcHV0KHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuK3tcbitcdGlmIChyZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2dXRuLVx1MDAzZXJlZmNudCkpXG4rXHRcdHVkcF90dW5uZWxfbmljX2ZyZWUodXRuKTtcbit9XG4rXG4gc3RhdGljIGludCB1ZHBfdHVubmVsX25pY19yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIHtcbiBcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XG5AQCAtODYzLDYgKzg4MSw3IEBAIHN0YXRpYyB2b2lkXG4gdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiB7XG4gXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xuK1x0Ym9vbCBsYXN0ID0gdHJ1ZTtcbiBcbiBcdHVkcF90dW5uZWxfbmljX2xvY2soZGV2KTtcbiBcbkBAIC04ODksNiArOTA4LDcgQEAgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcbiBcdFx0XHR1ZHBfdHVubmVsX2Ryb3BfcnhfaW5mbyhkZXYpO1xuIFx0XHRcdHV0bi1cdTAwM2VkZXYgPSBmaXJzdC1cdTAwM2VkZXY7XG4gXHRcdFx0dWRwX3R1bm5lbF9uaWNfdW5sb2NrKGRldik7XG4rXHRcdFx0bGFzdCA9IGZhbHNlO1xuIFx0XHRcdGdvdG8gcmVsZWFzZV9kZXY7XG4gXHRcdH1cbiBcbkBAIC05MDEsMTYgKzkyMSwxMSBAQCB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxuIFx0dWRwX3R1bm5lbF9uaWNfZmx1c2goZGV2LCB1dG4pO1xuIFx0dWRwX3R1bm5lbF9uaWNfdW5sb2NrKGRldik7XG4gXG4tXHQvKiBXYWl0IGZvciB0aGUgd29yayB0byBiZSBkb25lIHVzaW5nIHRoZSBzdGF0ZSwgbmV0ZGV2IGNvcmUgd2lsbFxuLVx0ICogcmV0cnkgdW5yZWdpc3RlciB1bnRpbCB3ZSBnaXZlIHVwIG91ciByZWZlcmVuY2Ugb24gdGhpcyBkZXZpY2UuXG4tXHQgKi9cbi1cdGlmICh1dG4tXHUwMDNld29ya19wZW5kaW5nKVxuLVx0XHRyZXR1cm47XG4tXG4tXHR1ZHBfdHVubmVsX25pY19mcmVlKHV0bik7XG4rXHR1ZHBfdHVubmVsX25pY19wdXQodXRuKTtcbiByZWxlYXNlX2RldjpcbiBcdGRldi1cdTAwM2V1ZHBfdHVubmVsX25pYyA9IE5VTEw7XG4tXHRkZXZfcHV0KGRldik7XG4rXHRpZiAoIWxhc3QpXG4rXHRcdGRldl9wdXQoZGV2KTtcbiB9XG4gXG4gc3RhdGljIGludFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6MzY6MzUuODEwODI5NzkzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODM5MzcwMDQ2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFVEUCBUdW5uZWwgTklDIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNgLiBTZWVtcyBsaWtlIHNvbWVvbmUncyBnb25lIGluIGFuZCByZXdvcmtlZCB0aGUgd2F5IHRoZSBgdWRwX3R1bm5lbF9uaWNgIGNvZGUgaGFuZGxlcyBjb25jdXJyZW5jeSBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudC4gVGhleSd2ZSBzd2FwcGVkIG91dCB0aG9zZSBiaXRmaWVsZHMg4oCTIGBuZWVkX3N5bmNgLCBgbmVlZF9yZXBsYXlgLCBgd29ya19wZW5kaW5nYCDigJMgZm9yIGF0b21pYyBiaXQgb3BlcmF0aW9ucyBkaXJlY3RseSBvbiB0aGUgYGZsYWdzYCBmaWVsZC4gU21hcnQgbW92ZSwgdGhhdCdzIGRlZmluaXRlbHkgdGhlIHJpZ2h0IGRpcmVjdGlvbiB0byBhdm9pZCB0aG9zZSBuYXN0eSByYWNlIGNvbmRpdGlvbnMuIFBsdXMsIHRoZXnigJl2ZSBhZGRlZCBhIGByZWZjbnRgIG9mIHR5cGUgYHJlZmNvdW50X3RgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoZXkgYXJlIGdvaW5nIHRvIG1hbmFnZSB0aGUgbGlmZXRpbWUgb2YgdGhlIGB1dG5gIHN0cnVjdHVyZSBpdHNlbGYsIHdoaWNoIEkgbGlrZSB0byBzZWUuXG5cblRoZSBwYXRjaCBkZXRhaWxzIGNvbmZpcm0gbXkgc3VzcGljaW9ucy4gYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jYCBub3cgYnVtcHMgdGhlIHJlZmNvdW50IHdoZW4gcXVldWluZyB3b3JrLCBhbmQgYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtgIGRlY3JlbWVudHMgaXQuIFRoZSBpbnRyb2R1Y3Rpb24gb2YgYHVkcF90dW5uZWxfbmljX3B1dGAgaXMgdGhlIGtleSDigJMgdGhhdCdzIHRoZSBwb2ludCB3aGVyZSB0aGUgc3RydWN0dXJlIGdldHMgZnJlZWQgd2hlbiB0aGUgcmVmY291bnQgaGl0cyB6ZXJvLiBBbmQgY2xldmVybHksIHRoZXkndmUgdXBkYXRlZCBgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcmAgdG8gKnVzZSogYHVkcF90dW5uZWxfbmljX3B1dGAgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciBgd29ya19wZW5kaW5nYCBhbmQganVzdCBmcmVlaW5nIHRoZSBgdXRuYCBkaXJlY3RseS4gVGhhdCdzIGEgbXVjaCBtb3JlIHJvYnVzdCBhcHByb2FjaDsgYXZvaWRzIGJsb2NraW5nLlxuXG5UaGUgYHV0bi1cdTAwM2VtaXNzZWRgIGNoYW5nZSBpcyBpbnRlcmVzdGluZywgdGhleSdyZSBub3cgdXNpbmcgYHNldF9iaXRgIGFuZCBgYml0bWFwX3plcm9gIG9uIGl0LiBXYWl0Li4uIGl0J3Mgc3RpbGwgYW4gYHVuc2lnbmVkIGxvbmdgLCBidXQgaXTigJlzICp1c2VkKiB3aXRoIGBzZXRfYml0YCBhbmQgYGJpdG1hcF96ZXJvYC4gSXQgc2VlbXMgbGlrZSB0aGV5J3JlIGNvbnZlcnRpbmcgaXQgdG8gYmVoYXZlIGxpa2UgYSBiaXRtYXNrLCB1c2luZyB0aGUgbG93LWxldmVsIGZ1bmN0aW9ucyBmb3IgbWFuaXB1bGF0aW9uLiBHb29kLCB0aGF0IG1ha2VzIGl0IG1vcmUgYXRvbWljLlxuXG5Tbywgb3ZlcmFsbCwgdGhpcyBpcyBhIHByZXR0eSBzaWduaWZpY2FudCBmdW5jdGlvbmFsIGNoYW5nZS4gSXQncyBhbG1vc3QgY2VydGFpbmx5IGFpbWVkIGF0IGZpeGluZyBhIHJhY2UgY29uZGl0aW9uIG9yIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoZSBgdWRwX3R1bm5lbF9uaWNgIGNvZGUuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aGlzIGZ1cnRoZXIuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIHZlcmlmeSB0aGUgY29kZSBwYXRocyBpbnZvbHZlZCBhbmQgZmlndXJlIG91dCBpZiB0aGlzIGNvZGUgaXMgYWN0dWFsbHkgcmVhY2hhYmxlIGluIGFueSBvZiBteSBjdXJyZW50IGNvbmZpZ3VyYXRpb25zLiBJIHNob3VsZCBjaGVjayBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AgaXRzZWxmLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTc4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjkxLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6MzY6NDQuMjA0NTM0NjE1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMDIwNzAwNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWRwX3R1bm5lbF9uaWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6MzY6NDQuNDA0Nzk2ODJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjQ0ODI0Nzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgSVB2NCBNYWtlZmlsZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgc3BlY2lmaWMgc2VjdGlvbiBvZiB0aGUga2VybmVsLCBhbmQgdGhlIGBuZXQvaXB2NC9NYWtlZmlsZWAgaXMgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQuIEknbSB0aGlua2luZywgdGhpcyBmaWxlIGlzIHRoZSBjZW50cmFsIG9yY2hlc3RyYXRvciBmb3IgYnVpbGRpbmcgYWxsIHRoZSBJUHY0LXJlbGF0ZWQgbW9kdWxlcyBhbmQgb2JqZWN0IGZpbGVzLiBJIG5lZWQgdG8gcXVpY2tseSBncmFzcCBob3cgdGhlIGRlcGVuZGVuY2llcyBhcmUgc3RydWN0dXJlZCwgaG93IHRoZSBjb21waWxhdGlvbiBmbGFncyBhcmUgc2V0LCBhbmQgd2hhdCB0YXJnZXRzIGFyZSBkZWZpbmVkLiBJcyBpdCBhIHN0cmFpZ2h0Zm9yd2FyZCBmbGF0IHN0cnVjdHVyZSwgb3IgYXJlIHRoZXJlIGNsZXZlciB0cmlja3Mgd2l0aCByZWN1cnNpdmUgaW5jbHVkZXMsIHdpbGRjYXJkcywgYW5kIHZhcmlhYmxlcyB0byBoYW5kbGUgdGhlIG11bHRpdHVkZSBvZiBmaWxlcz8gQXJlIHRoZXJlIGFueSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgb3IgY29uZmlndXJhdGlvbi1kZXBlbmRlbnQgcnVsZXMgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgcmlnaHQgb2ZmIHRoZSBiYXQ/IEtub3dpbmcgaG93IHRoaXMgbWFrZWZpbGUgdGllcyBpbnRvIHRoZSBicm9hZGVyIGtlcm5lbCBidWlsZCBzeXN0ZW0gaXMgY3J1Y2lhbCwgYXMgaXMgdW5kZXJzdGFuZGluZyBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIG90aGVyIG5ldHdvcmsgc3RhY2sgbWFrZWZpbGVzLiBMZXTigJlzIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQwOCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM2OjQ3LjY0OTYyNDQyOVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzYzNDcwOTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWRwX3R1bm5lbF9uaWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvTWFrZWZpbGU9MzA9b2JqLSQoQ09ORklHX05FVF9JUEdSRSkgKz0gaXBfZ3JlLm9cXG5uZXQvaXB2NC9NYWtlZmlsZTozMTp1ZHBfdHVubmVsLXkgOj0gdWRwX3R1bm5lbF9jb3JlLm8gdWRwX3R1bm5lbF9uaWMub1xcbm5ldC9pcHY0L01ha2VmaWxlLTMyLW9iai0kKENPTkZJR19ORVRfVURQX1RVTk5FTCkgKz0gdWRwX3R1bm5lbC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM2OjQ3LjkyNTk4Mzc0MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMDQ4MzAxNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgQ29tcGlsYXRpb24gUGF0aCBmb3IgVURQIFR1bm5lbHMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSBhbmQgaXQgbG9va3MgbGlrZSB0aGUgVURQIHR1bm5lbCBmdW5jdGlvbmFsaXR5IGlzIG9ubHkgaW5jbHVkZWQgaW4gdGhlIGJ1aWxkIHdoZW4gYENPTkZJR19ORVRfVURQX1RVTk5FTGAgaXMgc2V0LiBUaGF0J3MgdGhlIGtleSB2YXJpYWJsZSB0byB0cmFjayBoZXJlLiBOb3csIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdHJpZ2dlcnMgKnRoYXQqIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBXaGF0IG90aGVyIGRlcGVuZGVuY2llcywgcGxhdGZvcm0gY29uZmlndXJhdGlvbnMsIG9yIGJ1aWxkLXRpbWUgc2V0dGluZ3MgbGVhZCB0byBgQ09ORklHX05FVF9VRFBfVFVOTkVMYCBiZWluZyBlbmFibGVkPyBMZXQncyB0cmFjZSBiYWNrIGZyb20gdGhlcmUgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLiBJIHN1c3BlY3QgdGhlcmUgbWlnaHQgYmUgYSBjaGFpbiBvZiBkZXBlbmRlbmNpZXMsIGFuZCBJIHdhbnQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgbG9naWMuIFRpbWUgdG8gZ28gaHVudGluZyBmb3IgdGhlIHVwc3RyZWFtIGVuYWJsaW5nIG1lY2hhbmlzbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc0MywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM2OjUyLjEzMDgxNjc1OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODQ2MzQyNzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNlbGVjdCBORVRfVURQX1RVTk5FTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9LY29uZmlnPTI9Y29uZmlnIFJETUFfUlhFXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL0tjb25maWctNS1cXHRkZXBlbmRzIG9uIElORklOSUJBTkRfVklSVF9ETUFcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL0tjb25maWc6NjpcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL0tjb25maWctNy1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NzQ9Y29uZmlnIFdJUkVHVUFSRFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy03Ni1cXHRkZXBlbmRzIG9uIE5FVCBcXHUwMDI2XFx1MDAyNiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo3NzpcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG5kcml2ZXJzL25ldC9LY29uZmlnLTc4LVxcdHNlbGVjdCBEU1RfQ0FDSEVcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MTAzPWNvbmZpZyBPVlBOXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTEwNi1cXHRzZWxlY3QgRFNUX0NBQ0hFXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoxMDc6XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMDgtXFx0c2VsZWN0IENSWVBUT1xcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yMzA9Y29uZmlnIFZYTEFOXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzMi1cXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnOjIzMzpcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzNC1cXHRzZWxlY3QgR1JPX0NFTExTXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTI0NT1jb25maWcgR0VORVZFXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTI0Ny1cXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnOjI0ODpcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI0OS1cXHRzZWxlY3QgR1JPX0NFTExTXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTI2MD1jb25maWcgQkFSRVVEUFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNjItXFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyNjM6XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNjQtXFx0c2VsZWN0IEdST19DRUxMU1xcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNzI9Y29uZmlnIEdUUFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzQtXFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyNzU6XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yODk9Y29uZmlnIFBGQ1BcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMjkxLVxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjkyOlxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjkzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MzAyPWNvbmZpZyBBTVRcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMzA0LVxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBJUF9NVUxUSUNBU1RcXG5kcml2ZXJzL25ldC9LY29uZmlnOjMwNTpcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG5kcml2ZXJzL25ldC9LY29uZmlnLTMwNi1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTMyMT1jb25maWcgTkVUX0ZPVVxcbm5ldC9pcHY0L0tjb25maWctMzIyLVxcdHRyaXN0YXRlIFxcXCJJUDogRm9vIChJUCBwcm90b2NvbHMpIG92ZXIgVURQXFxcIlxcbm5ldC9pcHY0L0tjb25maWc6MzIzOlxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbm5ldC9pcHY0L0tjb25maWctMzI0LVxcdGhlbHBcXG4tLVxcbm5ldC9sMnRwL0tjb25maWc9Nj1tZW51Y29uZmlnIEwyVFBcXG4tLVxcbm5ldC9sMnRwL0tjb25maWctOC1cXHRkZXBlbmRzIG9uIElORVRcXG5uZXQvbDJ0cC9LY29uZmlnOjk6XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxubmV0L2wydHAvS2NvbmZpZy0xMC1cXHRoZWxwXFxuLS1cXG5uZXQvcnhycGMvS2NvbmZpZz02PWNvbmZpZyBBRl9SWFJQQ1xcbi0tXFxubmV0L3J4cnBjL0tjb25maWctMTEtXFx0c2VsZWN0IEtFWVNcXG5uZXQvcnhycGMvS2NvbmZpZzoxMjpcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG5uZXQvcnhycGMvS2NvbmZpZy0xMy1cXHRoZWxwXFxuLS1cXG5uZXQvc2N0cC9LY29uZmlnPTY9bWVudWNvbmZpZyBJUF9TQ1RQXFxuLS1cXG5uZXQvc2N0cC9LY29uZmlnLTEyLVxcdHNlbGVjdCBORVRfQ1JDMzJDXFxubmV0L3NjdHAvS2NvbmZpZzoxMzpcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG5uZXQvc2N0cC9LY29uZmlnLTE0LVxcdGhlbHBcXG4tLVxcbm5ldC90aXBjL0tjb25maWc9MzA9Y29uZmlnIFRJUENfTUVESUFfVURQXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTMyLVxcdGRlcGVuZHMgb24gVElQQ1xcbm5ldC90aXBjL0tjb25maWc6MzM6XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxubmV0L3RpcGMvS2NvbmZpZy0zNC1cXHRkZWZhdWx0IHlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6MzY6NTUuOTc3MTc0MDEyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY1ODAwNzAwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFNjb3BlIG9mIFVEUCBUdW5uZWxpbmcgaW4gdGhlIEtlcm5lbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGB1ZHBfdHVubmVsX25pYy5jYCBoZXJlLiBUaGUgbmFtZSBpbW1lZGlhdGVseSBzdWdnZXN0cyBzb21ldGhpbmcgYnJvYWQsIGJ1dCBsZXQncyBzZWUgaG93IGVuY29tcGFzc2luZyBpdCByZWFsbHkgaXMuIFJpZ2h0IG9mZiB0aGUgYmF0LCBgTkVUX1VEUF9UVU5ORUxgIGlzIGVuYWJsZWQgYnkgYSB3aWRlIGFycmF5IG9mIHByb3RvY29scyBhbmQgZmVhdHVyZXM6IGBWWExBTmAsIGBHRU5FVkVgLCBgQkFSRVVEUGAsIGBHVFBgLCBgUEZDUGAsIGBBTVRgLCBgTkVUX0ZPVWAsIGBMMlRQYCwgYEFGX1JYUlBDYCwgYElQX1NDVFBgLCBhbmQgZXZlbiBgVElQQ19NRURJQV9VRFBgLiBUaGF04oCZcyBhIHByZXR0eSBkaXZlcnNlIHNldC4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgd2hhdCdzIHJlYWxseSB1dGlsaXppbmcgYHVkcF90dW5uZWxfbmljX2luZm9gIG9yLCBtb3JlIGltcG9ydGFudGx5LCBgdWRwX3R1bm5lbF9uaWNfcmVnaXN0ZXJgPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdXNhZ2UgcGF0dGVybnMgdG8gZ3Jhc3AgdGhlIHJlYWwgaW1wYWN0IGFuZCBwb3RlbnRpYWwgaW1wbGljYXRpb25zIG9mIGNoYW5nZXMgaGVyZS4gSeKAmWxsIHN0YXJ0IGRpZ2dpbmcgaW4gdG8gc2VlIHdoYXQgY2FsbHMgdGhlc2UgZnVuY3Rpb25zLCBhbmQgZnJvbSB3aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzAzMywiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzozNzowMC42MzUxODQxMzZaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NzA4MzAzNDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWRwX3R1bm5lbF9uaWNfaW5mb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL25ldF9kZXZpY2UucnN0PTE3Mj1zdHJ1Y3QgbWFjc2VjX29wcyogICAgICAgICAgICAgICAgICBtYWNzZWNfb3BzXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL25ldF9kZXZpY2UucnN0OjE3MzpzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyogICAgICAgICB1ZHBfdHVubmVsX25pY19pbmZvXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL25ldF9jYWNoZWxpbmVzL25ldF9kZXZpY2UucnN0LTE3NC1zdHJ1Y3QgdWRwX3R1bm5lbF9uaWMqICAgICAgICAgICAgICB1ZHBfdHVubmVsX25pY1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYz04OTU9c3RhdGljIGludCB4Z2JlX3Z4bGFuX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgdW5zaWduZWQgaW50IHRhYmxlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy05MDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYzo5MDY6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHhnYmVfdWRwX3R1bm5lbHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy05MDctXFx0LnNldF9wb3J0XFx0PSB4Z2JlX3Z4bGFuX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYy05MTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1kcnYuYzo5MTU6Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKnhnYmVfZ2V0X3VkcF90dW5uZWxfaW5mbyh2b2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtZHJ2LmMtOTE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtbWFpbi5jPTE1Mj1pbnQgeGdiZV9jb25maWdfbmV0ZGV2KHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtbWFpbi5jLTI2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLW1haW4uYzoyNjM6XFx0XFx0bmV0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0geGdiZV9nZXRfdWRwX3R1bm5lbF9pbmZvKCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1tYWluLmMtMjY0LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUuaD0xMjk2PWNvbnN0IHN0cnVjdCBldGh0b29sX29wcyAqeGdiZV9nZXRfZXRodG9vbF9vcHModm9pZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS5oOjEyOTc6Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKnhnYmVfZ2V0X3VkcF90dW5uZWxfaW5mbyh2b2lkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLmgtMTI5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz0xMDIxMT1zdGF0aWMgaW50IGJueDJ4X3VkcF90dW5uZWxfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTAyMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jOjEwMjIyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBibngyeF91ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTAyMjMtXFx0LnN5bmNfdGFibGVcXHQ9IGJueDJ4X3VkcF90dW5uZWxfc3luYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueDJ4L2JueDJ4X21haW4uYz0xMzA0MD1zdGF0aWMgaW50IGJueDJ4X2luaXRfZGV2KHN0cnVjdCBibngyeCAqYnAsIHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jLTEzMjA3LVxcdFxcdGlmIChJU19QRihicCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54MngvYm54MnhfbWFpbi5jOjEzMjA4OlxcdFxcdFxcdGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZibngyeF91ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibngyeC9ibngyeF9tYWluLmMtMTMyMDktXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTU5NjI9c3RhdGljIGludCBibnh0X3VkcF90dW5uZWxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNTk3Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNTk3ODpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gYm54dF91ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNTk3OS1cXHQuc2V0X3BvcnRcXHQ9IGJueHRfdWRwX3R1bm5lbF9zZXRfcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE2OTQ1PXN0YXRpYyBpbnQgYm54dF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE3MDUyLVxcdGlmIChicC1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBCTlhUX0ZMQUdfQ0hJUF9QNylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNzA1MzpcXHRcXHRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2Ym54dF91ZHBfdHVubmVsc19wNztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNzA1NC1cXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTcwNTU6XFx0XFx0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNmJueHRfdWRwX3R1bm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTcwNTYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYz0yNjg1PXN0YXRpYyBpbnQgbGlxdWlkaW9fdWRwX3R1bm5lbF91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0yNjk1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jOjI2OTY6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGxpcXVpZGlvX3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fbWFpbi5jLTI2OTctXFx0LnNldF9wb3J0XFx0PSBsaXF1aWRpb191ZHBfdHVubmVsX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmM9MzMyMj1zdGF0aWMgaW50IHNldHVwX25pY19kZXZpY2VzKHN0cnVjdCBvY3Rlb25fZGV2aWNlICpvY3Rlb25fZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb19tYWluLmMtMzU4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYzozNTgzOlxcdFxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZsaXF1aWRpb191ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX21haW4uYy0zNTg0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM9MTc3Mj1zdGF0aWMgaW50IGxpcXVpZGlvX3VkcF90dW5uZWxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMTc4Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYzoxNzgzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBsaXF1aWRpb191ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYXZpdW0vbGlxdWlkaW8vbGlvX3ZmX21haW4uYy0xNzg0LVxcdC5zZXRfcG9ydFxcdD0gbGlxdWlkaW9fdWRwX3R1bm5lbF9zZXRfcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jPTE5MTk9c3RhdGljIGludCBzZXR1cF9uaWNfZGV2aWNlcyhzdHJ1Y3Qgb2N0ZW9uX2RldmljZSAqb2N0ZW9uX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Nhdml1bS9saXF1aWRpby9saW9fdmZfbWFpbi5jLTIwOTMtXFx0XFx0ICAgIChsaW8tXFx1MDAzZWVuY19kZXZfY2FwYWJpbGl0eSBcXHUwMDI2IH5ORVRJRl9GX0xSTyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmM6MjA5NDpcXHRcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2bGlxdWlkaW9fdWRwX3R1bm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2F2aXVtL2xpcXVpZGlvL2xpb192Zl9tYWluLmMtMjA5NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jPTM3NzA9c3RhdGljIGludCBjeGdiX3VkcF90dW5uZWxfc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NoZWxzaW8vY3hnYjQvY3hnYjRfbWFpbi5jLTM4MTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM6MzgxODpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gY3hnYl91ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYy0zODE5LVxcdC5zZXRfcG9ydFxcdD0gY3hnYl91ZHBfdHVubmVsX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM9NjU3MT1zdGF0aWMgaW50IGluaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqZW50KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmMtNjgwMC1cXHRcXHRcXHRpZiAoYWRhcHRlci1cXHUwMDNlcmF3Zl9jbnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2hlbHNpby9jeGdiNC9jeGdiNF9tYWluLmM6NjgwMTpcXHRcXHRcXHRcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2Y3hnYl91ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jaGVsc2lvL2N4Z2I0L2N4Z2I0X21haW4uYy02ODAyLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmM9MjA3PXN0YXRpYyBpbnQgZW5pY191ZHBfdHVubmVsX3Vuc2V0X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmM6MjI5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBlbmljX3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjMwLVxcdC5zZXRfcG9ydFxcdD0gZW5pY191ZHBfdHVubmVsX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYz0yNjc1PXN0YXRpYyBpbnQgZW5pY19wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjk0OC1cXHRcXHQgICAgZW5pYy1cXHUwMDNldnhsYW4uZmxhZ3MgXFx1MDAyNiBFTklDX1ZYTEFOX01VTFRJX1dRKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYzoyOTQ5OlxcdFxcdFxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZlbmljX3VkcF90dW5uZWxzX3Y0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjk1MC1cXHRcXHRcXHRpZiAoZW5pYy1cXHUwMDNldnhsYW4uZmxhZ3MgXFx1MDAyNiBFTklDX1ZYTEFOX09VVEVSX0lQVjYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2lzY28vZW5pYy9lbmljX21haW4uYzoyOTUxOlxcdFxcdFxcdFxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZlbmljX3VkcF90dW5uZWxzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Npc2NvL2VuaWMvZW5pY19tYWluLmMtMjk1Mi1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jPTQwMTU9c3RhdGljIGludCBiZV92eGxhbl91bnNldF9wb3J0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmMtNDAzMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jOjQwMzQ6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGJlX3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmMtNDAzNS1cXHQuc2V0X3BvcnRcXHQ9IGJlX3Z4bGFuX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYz01MTc5PXN0YXRpYyB2b2lkIGJlX25ldGRldl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbXVsZXgvYmVuZXQvYmVfbWFpbi5jLTUyMDctXFx0aWYgKCFsYW5jZXJfY2hpcChhZGFwdGVyKSBcXHUwMDI2XFx1MDAyNiAhQkV4X2NoaXAoYWRhcHRlcikgXFx1MDAyNlxcdTAwMjYgIWJlX2lzX21jKGFkYXB0ZXIpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VtdWxleC9iZW5ldC9iZV9tYWluLmM6NTIwODpcXHRcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2YmVfdWRwX3R1bm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW11bGV4L2JlbmV0L2JlX21haW4uYy01MjA5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmM9NDAyPXN0YXRpYyBpbnQgZm0xMGtfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jLTQxNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYzo0MTc6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGZtMTBrX3VkcF90dW5uZWxzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ZtMTBrL2ZtMTBrX25ldGRldi5jLTQxOC1cXHQuc3luY190YWJsZVxcdD0gZm0xMGtfdWRwX3R1bm5lbF9zeW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmM9MTU0MT1zdHJ1Y3QgbmV0X2RldmljZSAqZm0xMGtfYWxsb2NfbmV0ZGV2KGNvbnN0IHN0cnVjdCBmbTEwa19pbmZvICppbmZvKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZm0xMGsvZm0xMGtfbmV0ZGV2LmMtMTU4MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYzoxNTgxOlxcdFxcdGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZmbTEwa191ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9mbTEway9mbTEwa19uZXRkZXYuYy0xNTgyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZS5oPTQ2OD1zdHJ1Y3QgaTQwZV9wZiB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaC01MjEtXFx0c3RydWN0IHVkcF90dW5uZWxfbmljX3NoYXJlZCB1ZHBfdHVubmVsX3NoYXJlZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGUuaDo1MjI6XFx0c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gdWRwX3R1bm5lbF9uaWM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlLmgtNTIzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYz0xMzYzNz1zdGF0aWMgaW50IGk0MGVfY29uZmlnX25ldGRldihzdHJ1Y3QgaTQwZV92c2kgKnZzaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTM2ODAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX21haW4uYzoxMzY4MTpcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2cGYtXFx1MDAzZXVkcF90dW5uZWxfbmljO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV9tYWluLmMtMTM2ODItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYz0zNDQzPXN0YXRpYyB2b2lkIGljZV9zZXRfb3BzKHN0cnVjdCBpY2VfdnNpICp2c2kpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy0zNDU0LVxcdG5ldGRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZpY2VfbmV0ZGV2X29wcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzozNDU1OlxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZwZi1cXHUwMDNlaHcudWRwX3R1bm5lbF9uaWM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtMzQ1Ni1cXHRuZXRkZXYtXFx1MDAzZXhkcF9tZXRhZGF0YV9vcHMgPSBcXHUwMDI2aWNlX3hkcF9tZF9vcHM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYz0zOTcwPWludCBpY2VfaW5pdF9wZihzdHJ1Y3QgaWNlX3BmICpwZilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYy0zOTcxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX21haW4uYzozOTcyOlxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICp1ZHBfdHVubmVsX25pYyA9IFxcdTAwMjZwZi1cXHUwMDNlaHcudWRwX3R1bm5lbF9uaWM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9tYWluLmMtMzk3My1cXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBpY2VfcGZfdG9fZGV2KHBmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHlwZS5oPTg5OT1zdHJ1Y3QgaWNlX2h3IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHlwZS5oLTEwMTEtXFx0c3RydWN0IHVkcF90dW5uZWxfbmljX3NoYXJlZCB1ZHBfdHVubmVsX3NoYXJlZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R5cGUuaDoxMDEyOlxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHVkcF90dW5uZWxfbmljO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHlwZS5oLTEwMTMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM9NTQ0OD1zdGF0aWMgaW50IGl4Z2JlX3VkcF90dW5uZWxfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNTQ2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM6NTQ2NzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gaXhnYmVfdWRwX3R1bm5lbHNfeDU1MCA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtNTQ2OC1cXHQuc3luY190YWJsZVxcdD0gaXhnYmVfdWRwX3R1bm5lbF9zeW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTU0NzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jOjU0NzU6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGl4Z2JlX3VkcF90dW5uZWxzX3g1NTBlbV9hID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy01NDc2LVxcdC5zeW5jX3RhYmxlXFx0PSBpeGdiZV91ZHBfdHVubmVsX3N5bmMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmM9MTE1NDg9c3RhdGljIGludCBpeGdiZV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYy0xMTY5OS1cXHRjYXNlIGl4Z2JlX21hY19lNjEwOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzoxMTcwMDpcXHRcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2aXhnYmVfdWRwX3R1bm5lbHNfeDU1MDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9peGdiZS9peGdiZV9tYWluLmMtMTE3MDEtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTExNzAyLVxcdGNhc2UgaXhnYmVfbWFjX3g1NTBlbV9hOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2l4Z2JlL2l4Z2JlX21haW4uYzoxMTcwMzpcXHRcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2aXhnYmVfdWRwX3R1bm5lbHNfeDU1MGVtX2E7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaXhnYmUvaXhnYmVfbWFpbi5jLTExNzA0LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYz0yNjM5PXN0YXRpYyBpbnQgbWx4NF91ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYy0yNjU2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmM6MjY1NzpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gbWx4NF91ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jLTI2NTgtXFx0LnN5bmNfdGFibGVcXHQ9IG1seDRfdWRwX3R1bm5lbF9zeW5jLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYz0zMTYxPWludCBtbHg0X2VuX2luaXRfbmV0ZGV2KHN0cnVjdCBtbHg0X2VuX2RldiAqbWRldiwgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX25ldGRldi5jLTMzNDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9uZXRkZXYuYzozMzQ3OlxcdFxcdGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZtbHg0X3VkcF90dW5uZWxzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fbmV0ZGV2LmMtMzM0OC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaD05MDU9c3RydWN0IG1seDVlX3ByaXYge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuLmgtOTU2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi5oOjk1NzpcXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBuaWNfaW5mbztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4uaC05NTgtI2lmZGVmIENPTkZJR19NTFg1X0NPUkVfRU5fRENCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTU0NTY9dm9pZCBtbHg1ZV92eGxhbl9zZXRfbmV0ZGV2X2luZm8oc3RydWN0IG1seDVlX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTU0NjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzo1NDY5OlxcdHByaXYtXFx1MDAzZW5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZwcml2LVxcdTAwM2VuaWNfaW5mbztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTU0NzAtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jPTIzNzY9c3RhdGljIGludCBuZnBfdWRwX3R1bm5lbF9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHVuc2lnbmVkIGludCB0YWJsZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYy0yMzk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYzoyMzk1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBuZnBfdWRwX3R1bm5lbHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jLTIzOTYtXFx0LnN5bmNfdGFibGUgICAgID0gbmZwX3VkcF90dW5uZWxfc3luYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYz0yNjY2PXN0YXRpYyB2b2lkIG5mcF9uZXRfbmV0ZGV2X2luaXQoc3RydWN0IG5mcF9uZXQgKm5uKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jLTI3MTgtXFx0XFx0fVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25ldHJvbm9tZS9uZnAvbmZwX25ldF9jb21tb24uYzoyNzE5OlxcdFxcdG5ldGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZuZnBfdWRwX3R1bm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmV0cm9ub21lL25mcC9uZnBfbmV0X2NvbW1vbi5jLTI3MjAtXFx0XFx0bm4tXFx1MDAzZWRwLmN0cmwgfD0gTkZQX05FVF9DRkdfQ1RSTF9WWExBTjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmM9OTU3PXN0YXRpYyBpbnQgcWVkZV91ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYy05ODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FlZGUvcWVkZV9maWx0ZXIuYzo5ODg6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHFlZGVfdWRwX3R1bm5lbHNfYm90aCA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTk4OS1cXHQuc3luY190YWJsZVxcdD0gcWVkZV91ZHBfdHVubmVsX3N5bmMsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jPTEwMDY9dm9pZCBxZWRlX3NldF91ZHBfdHVubmVscyhzdHJ1Y3QgcWVkZV9kZXYgKmVkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTEwMDktXFx0ICAgIGVkZXYtXFx1MDAzZWRldl9pbmZvLmNvbW1vbi5nZW5ldmVfZW5hYmxlKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmM6MTAxMDpcXHRcXHRlZGV2LVxcdTAwM2VuZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNnFlZGVfdWRwX3R1bm5lbHNfYm90aDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTEwMTEtXFx0ZWxzZSBpZiAoZWRldi1cXHUwMDNlZGV2X2luZm8uY29tbW9uLnZ4bGFuX2VuYWJsZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jOjEwMTI6XFx0XFx0ZWRldi1cXHUwMDNlbmRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZxZWRlX3VkcF90dW5uZWxzX3Z4bGFuO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xZWRlL3FlZGVfZmlsdGVyLmMtMTAxMy1cXHRlbHNlIGlmIChlZGV2LVxcdTAwM2VkZXZfaW5mby5jb21tb24uZ2VuZXZlX2VuYWJsZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jOjEwMTQ6XFx0XFx0ZWRldi1cXHUwMDNlbmRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZxZWRlX3VkcF90dW5uZWxzX2dlbmV2ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWVkZS9xZWRlX2ZpbHRlci5jLTEwMTUtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jPTQ3MT1zdGF0aWMgaW50IHFsY25pY191ZHBfdHVubmVsX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jLTQ4Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmM6NDg3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyBxbGNuaWNfdWRwX3R1bm5lbHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jLTQ4OC1cXHQuc3luY190YWJsZVxcdD0gcWxjbmljX3VkcF90dW5uZWxfc3luYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGNuaWMvcWxjbmljX21haW4uYz0yMjU0PXFsY25pY19zZXR1cF9uZXRkZXYoc3RydWN0IHFsY25pY19hZGFwdGVyICphZGFwdGVyLCBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jLTIzMDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsY25pYy9xbGNuaWNfbWFpbi5jOjIzMDQ6XFx0XFx0bmV0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gXFx1MDAyNnFsY25pY191ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxjbmljL3FsY25pY19tYWluLmMtMjMwNS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jPTQyPXN0YXRpYyBpbnQgZWZ4X2VmMTBfc2V0X3VkcF90bmxfcG9ydHMoc3RydWN0IGVmeF9uaWMgKmVmeCwgYm9vbCB1bmxvYWRpbmcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM6NDM6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIGVmeF9lZjEwX3VkcF90dW5uZWxzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmMtNDQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jPTUyNT1zdGF0aWMgaW50IGVmeF9lZjEwX3Byb2JlKHN0cnVjdCBlZnhfbmljICplZngpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTY4MC1cXHQgICAgKDEgXFx1MDAzY1xcdTAwM2MgTUNfQ01EX0RSVl9BVFRBQ0hfRVhUX09VVF9GTEFHX1RSVVNURUQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM6NjgxOlxcdFxcdGVmeC1cXHUwMDNlbmV0X2Rldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IFxcdTAwMjZlZnhfZWYxMF91ZHBfdHVubmVscztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zZmMvZWYxMC5jLTY4Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM9Mzk2Mj1zdGF0aWMgaW50IGVmeF9lZjEwX3VkcF90bmxfdW5zZXRfcG9ydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYy0zOTg0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NmYy9lZjEwLmM6Mzk4NTpzdGF0aWMgY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gZWZ4X2VmMTBfdWRwX3R1bm5lbHMgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc2ZjL2VmMTAuYy0zOTg2LVxcdC5zZXRfcG9ydFxcdD0gZWZ4X2VmMTBfdWRwX3RubF9zZXRfcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jPTYxOT1zdGF0aWMgaW50IHR4Z2JlX3VkcF90dW5uZWxfc3luYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy02NDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmM6NjQyOnN0YXRpYyBjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyB0eGdiZV91ZHBfdHVubmVscyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX21haW4uYy02NDMtXFx0LnN5bmNfdGFibGVcXHQ9IHR4Z2JlX3VkcF90dW5uZWxfc3luYyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jPTY4MT1zdGF0aWMgaW50IHR4Z2JlX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNzQ3LVxcdG5ldGRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZ0eGdiZV9uZXRkZXZfb3BzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfbWFpbi5jOjc0ODpcXHRuZXRkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBcXHUwMDI2dHhnYmVfdWRwX3R1bm5lbHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9tYWluLmMtNzQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM9NjY9bnNpbV91ZHBfdHVubmVsX3N5bmNfdGFibGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHRhYmxlKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtODQtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6ODU6c3RhdGljIGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIG5zaW1fdWRwX3R1bm5lbF9pbmZvID0ge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTg2LVxcdC5zZXRfcG9ydFxcdD0gbnNpbV91ZHBfdHVubmVsX3NldF9wb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM9MTI1PWludCBuc2ltX3VkcF90dW5uZWxzX2luZm9fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xMjgtXFx0c3RydWN0IG5ldGRldnNpbSAqbnMgPSBuZXRkZXZfcHJpdihkZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jOjEyOTpcXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbztcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xMzAtXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xODQtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6MTg1OlxcdGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbyA9IGluZm87XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmMtMTg2LVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM9MTg5PXZvaWQgbnNpbV91ZHBfdHVubmVsc19pbmZvX2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTE5My1cXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUobnMtXFx1MDAzZXVkcF9wb3J0cy5kZGlyKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYzoxOTQ6XFx0a2ZyZWUoZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYzoxOTU6XFx0ZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gTlVMTDtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xOTYtfVxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD03Nj1zdHJ1Y3QgdWRwX3R1bm5lbF9pbmZvO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6Nzc6c3RydWN0IHVkcF90dW5uZWxfbmljX2luZm87XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC03OC1zdHJ1Y3QgdWRwX3R1bm5lbF9uaWM7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTE4MDQ9ZW51bSBuZXRkZXZfcmVnX3N0YXRlIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjA4OS0gKlxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MjA5MDogKlxcdEB1ZHBfdHVubmVsX25pY19pbmZvOlxcdHN0YXRpYyBzdHJ1Y3R1cmUgZGVzY3JpYmluZyB0aGUgVURQIHR1bm5lbFxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjA5MS0gKlxcdFxcdFxcdFxcdG9mZmxvYWQgY2FwYWJpbGl0aWVzIG9mIHRoZSBkZXZpY2VcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MjEzOT1zdHJ1Y3QgbmV0X2RldmljZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI1MDQtI2VuZGlmXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDoyNTA1OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvXFx0KnVkcF90dW5uZWxfbmljX2luZm87XFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yNTA2LVxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY1xcdCp1ZHBfdHVubmVsX25pYztcXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaD0yMjU9c3RhdGljIGlubGluZSB2b2lkIHVkcF90dW5uZWxfZW5jYXBfZW5hYmxlKHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0yMzgtXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjIzOTplbnVtIHVkcF90dW5uZWxfbmljX2luZm9fZmxhZ3Mge1xcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0yNDAtXFx0LyogRGV2aWNlIG9ubHkgc3VwcG9ydHMgb2ZmbG9hZHMgd2hlbiBpdCdzIG9wZW4sIGFsbCBwb3J0c1xcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTI1Nz1zdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfc2hhcmVkIHtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MjU4OlxcdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdWRwX3R1bm5lbF9uaWNfaW5mbztcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMjU5LVxcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oPTI2Mz1zdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfc2hhcmVkX25vZGUge1xcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTI2OC0vKipcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6MjY5OiAqIHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIC0gZHJpdmVyIFVEUCB0dW5uZWwgb2ZmbG9hZCBpbmZvcm1hdGlvblxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0yNzAtICogQHNldF9wb3J0OlxcdGNhbGxiYWNrIGZvciBhZGRpbmcgYSBuZXcgcG9ydFxcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTI3My0gKiBAc2hhcmVkOlxcdHJlZmVyZW5jZSB0byBkZXZpY2UgZ2xvYmFsIHN0YXRlIChvcHRpb25hbClcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6Mjc0OiAqIEBmbGFnczpcXHRkZXZpY2UgZmxhZ3MgZnJvbSBlbnVtIHVkcF90dW5uZWxfbmljX2luZm9fZmxhZ3NcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMjc1LSAqIEB0YWJsZXM6XFx0VURQIHBvcnQgdGFibGVzIHRoaXMgZGV2aWNlIGhhc1xcbi0tXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oLTI5Ni0gKi9cXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmg6Mjk3OnN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvIHtcXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMjk4LVxcdC8qIG9uZS1ieS1vbmUgKi9cXG4tLVxcbmluY2x1ZGUvbmV0L3VkcF90dW5uZWwuaC0zMjItICogbW9kdWxlLiBOSUMgZHJpdmVycyBhcmUgbm90LCB0aGV5IGp1c3QgYXR0YWNoIHRoZWlyXFxuaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oOjMyMzogKiBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyB0byB0aGUgbmV0ZGV2IGFuZCB3YWl0IGZvciBjYWxsYmFja3MgdG8gY29tZS5cXG5pbmNsdWRlL25ldC91ZHBfdHVubmVsLmgtMzI0LSAqIExvYWRpbmcgYSB0dW5uZWwgZHJpdmVyIHdpbGwgY2F1c2UgdGhlIHVkcF90dW5uZWwgbW9kdWxlIHRvIGJlIGxvYWRlZFxcbi0tXFxubmV0L2NvcmUvZGV2LmM9MTEzMjA9aW50IHJlZ2lzdGVyX25ldGRldmljZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L2NvcmUvZGV2LmMtMTEzOTQtXFxubmV0L2NvcmUvZGV2LmM6MTEzOTU6XFx0aWYgKGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbykge1xcbm5ldC9jb3JlL2Rldi5jLTExMzk2LVxcdFxcdGRldi1cXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9SWF9VRFBfVFVOTkVMX1BPUlQ7XFxuLS1cXG5uZXQvZXRodG9vbC90dW5uZWxzLmM9MzY9ZXRobmxfdHVubmVsX2luZm9fcmVwbHlfc2l6ZShjb25zdCBzdHJ1Y3QgZXRobmxfcmVxX2luZm8gKnJlcV9iYXNlLFxcbi0tXFxubmV0L2V0aHRvb2wvdHVubmVscy5jLTM5LVxcdGJvb2wgY29tcGFjdCA9IHJlcV9iYXNlLVxcdTAwM2VmbGFncyBcXHUwMDI2IEVUSFRPT0xfRkxBR19DT01QQUNUX0JJVFNFVFM7XFxubmV0L2V0aHRvb2wvdHVubmVscy5jOjQwOlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvO1xcbm5ldC9ldGh0b29sL3R1bm5lbHMuYy00MS1cXHR1bnNpZ25lZCBpbnQgaTtcXG4tLVxcbm5ldC9ldGh0b29sL3R1bm5lbHMuYy00NC1cXG5uZXQvZXRodG9vbC90dW5uZWxzLmM6NDU6XFx0aW5mbyA9IHJlcV9iYXNlLVxcdTAwM2VkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2V0aHRvb2wvdHVubmVscy5jLTQ2LVxcdGlmICghaW5mbykge1xcbi0tXFxubmV0L2V0aHRvb2wvdHVubmVscy5jPTgyPWV0aG5sX3R1bm5lbF9pbmZvX2ZpbGxfcmVwbHkoY29uc3Qgc3RydWN0IGV0aG5sX3JlcV9pbmZvICpyZXFfYmFzZSxcXG4tLVxcbm5ldC9ldGh0b29sL3R1bm5lbHMuYy04NS1cXHRib29sIGNvbXBhY3QgPSByZXFfYmFzZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBFVEhUT09MX0ZMQUdfQ09NUEFDVF9CSVRTRVRTO1xcbm5ldC9ldGh0b29sL3R1bm5lbHMuYzo4NjpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbztcXG5uZXQvZXRodG9vbC90dW5uZWxzLmMtODctXFx0c3RydWN0IG5sYXR0ciAqcG9ydHMsICp0YWJsZSwgKmVudHJ5O1xcbi0tXFxubmV0L2V0aHRvb2wvdHVubmVscy5jLTg5LVxcbm5ldC9ldGh0b29sL3R1bm5lbHMuYzo5MDpcXHRpbmZvID0gcmVxX2Jhc2UtXFx1MDAzZWRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvZXRodG9vbC90dW5uZWxzLmMtOTEtXFx0aWYgKCFpbmZvKVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xMzQ9dWRwX3R1bm5lbF9uaWNfaXNfZW1wdHkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMzUte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MTM2OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTM3LVxcdHVuc2lnbmVkIGludCBpLCBqO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0xNDc9dWRwX3R1bm5lbF9uaWNfc2hvdWxkX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMTU1LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB1dG4tXFx1MDAzZW5fdGFibGVzOyBpKyspIHtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjE1NjpcXHRcXHR0YWJsZSA9IFxcdTAwMjZkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8tXFx1MDAzZXRhYmxlc1tpXTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTE1Ny1cXHRcXHRpZiAoIXRlc3RfYml0KGksIFxcdTAwMjZ1dG4tXFx1MDAzZW1pc3NlZCkpXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTIxMz11ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19vbmUoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjI2LVxcdGlmIChlbnRyeS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBVRFBfVFVOTkVMX05JQ19FTlRSWV9BREQpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyMjc6XFx0XFx0ZXJyID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvLVxcdTAwM2VzZXRfcG9ydChkZXYsIHRhYmxlLCBpZHgsIFxcdTAwMjZ0aSk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMjgtXFx0ZWxzZVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MjI5OlxcdFxcdGVyciA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cXHUwMDNldW5zZXRfcG9ydChkZXYsIHRhYmxlLCBpZHgsXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yMzAtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgXFx1MDAyNnRpKTtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjQyPXVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX2J5X3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMjQ0LXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjI0NTpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI0Ni1cXHR1bnNpZ25lZCBpbnQgaSwgajtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9MjU0PXVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX2J5X3RhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI1Ni17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyNTc6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yNTgtXFx0dW5zaWduZWQgaW50IGksIGo7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTI4NT1fX3VkcF90dW5uZWxfbmljX2RldmljZV9zeW5jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0yODktXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoyOTA6XFx0aWYgKGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cXHUwMDNlc3luY190YWJsZSlcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTI5MS1cXHRcXHR1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY19ieV90YWJsZShkZXYsIHV0bik7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTMyMz11ZHBfdHVubmVsX25pY19pc19jYXBhYmxlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0zMjUte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6MzI2OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzI3LVxcdHVuc2lnbmVkIGludCBpO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zNDE9dWRwX3R1bm5lbF9uaWNfaGFzX2NvbGxpc2lvbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzQzLXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjM0NDpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTM0NS1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfdGFibGVfZW50cnkgKmVudHJ5O1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz00MjU9dWRwX3R1bm5lbF9uaWNfdHJ5X2V4aXN0aW5nKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuLFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00MzEtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHV0bi1cXHUwMDNlbl90YWJsZXM7IGkrKykge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDMyOlxcdFxcdHRhYmxlID0gXFx1MDAyNmRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mby1cXHUwMDNldGFibGVzW2ldO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDMzLVxcdFxcdGlmICghdWRwX3R1bm5lbF9uaWNfdGFibGVfaXNfY2FwYWJsZSh0YWJsZSwgdGkpKVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz00NjA9dWRwX3R1bm5lbF9uaWNfYWRkX25ldyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bixcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNDY2LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB1dG4tXFx1MDAzZW5fdGFibGVzOyBpKyspIHtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjQ2NzpcXHRcXHR0YWJsZSA9IFxcdTAwMjZkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8tXFx1MDAzZXRhYmxlc1tpXTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTQ2OC1cXHRcXHRpZiAoIXVkcF90dW5uZWxfbmljX3RhYmxlX2lzX2NhcGFibGUodGFibGUsIHRpKSlcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NDk3PV9fdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfaW5mbyAqdGkpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy00OTgte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NDk5OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTAwLVxcdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz01NDc9c3RhdGljIHZvaWQgX191ZHBfdHVubmVsX25pY19yZXNldF9udGYoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTU0OC17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo1NDk6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01NTAtXFx0c3RydWN0IHVkcF90dW5uZWxfbmljICp1dG47XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTU4Mz1fX3VkcF90dW5uZWxfbmljX2R1bXBfc2l6ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgdGFibGUpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy01ODQte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6NTg1OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTg2LVxcdHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz02MDg9X191ZHBfdHVubmVsX25pY19kdW1wX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0YWJsZSxcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjEwLXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjYxMTpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYxMi1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bjtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9Njg1PXVkcF90dW5uZWxfbmljX2ZsdXNoKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqdXRuKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNjg2LXtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjY4NzpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbyA9IGRldi1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTY4OC1cXHR1bnNpZ25lZCBpbnQgaSwgajtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NzA4PXVkcF90dW5uZWxfbmljX3JlcGxheShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bilcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTcwOS17XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3MTA6XFx0Y29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8gPSBkZXYtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm87XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03MTEtXFx0c3RydWN0IHVkcF90dW5uZWxfbmljX3NoYXJlZF9ub2RlICpub2RlO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz03NTY9c3RhdGljIHN0cnVjdCB1ZHBfdHVubmVsX25pYyAqXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3NTc6dWRwX3R1bm5lbF9uaWNfYWxsb2MoY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8sXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03NTgtXFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgbl90YWJsZXMpXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTgwNj1zdGF0aWMgaW50IHVkcF90dW5uZWxfbmljX3JlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04MDcte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODA4OlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODA5LVxcdHN0cnVjdCB1ZHBfdHVubmVsX25pY19zaGFyZWRfbm9kZSAqbm9kZSA9IE5VTEw7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg0Ny1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjg0ODpcXHRpZiAoaW5mby1cXHUwMDNlc2hhcmVkIFxcdTAwMjZcXHUwMDI2IGluZm8tXFx1MDAzZXNoYXJlZC1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbykge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODQ5OlxcdFxcdHV0biA9IGluZm8tXFx1MDAzZXNoYXJlZC1cXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTg1MC1cXHR9IGVsc2Uge1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NTgtXFx0aWYgKGluZm8tXFx1MDAzZXNoYXJlZCkge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODU5OlxcdFxcdGlmICghaW5mby1cXHUwMDNlc2hhcmVkLVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvKSB7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04NjAtXFx0XFx0XFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNmluZm8tXFx1MDAzZXNoYXJlZC1cXHUwMDNlZGV2aWNlcyk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo4NjE6XFx0XFx0XFx0aW5mby1cXHUwMDNlc2hhcmVkLVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvID0gdXRuO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODYyLVxcdFxcdH1cXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9ODgxPXVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04ODIte1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6ODgzOlxcdGNvbnN0IHN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvICppbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtODg0LVxcdGJvb2wgbGFzdCA9IHRydWU7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkxNC1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjkxNTpcXHRcXHRpbmZvLVxcdTAwM2VzaGFyZWQtXFx1MDAzZXVkcF90dW5uZWxfbmljX2luZm8gPSBOVUxMO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTE2LVxcdH1cXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9OTMyPXVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTM1LVxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBuZXRkZXZfbm90aWZpZXJfaW5mb190b19kZXYocHRyKTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjkzNjpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mbyAqaW5mbztcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkzNy1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bjtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkzOC1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjkzOTpcXHRpbmZvID0gZGV2LVxcdTAwM2V1ZHBfdHVubmVsX25pY19pbmZvO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTQwLVxcdGlmICghaW5mbylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6Mzc6MDMuMTA2MDIyMTg1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwNjQyMTkwNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIGB1ZHBfdHVubmVsX25pY2AgVXNhZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGB1ZHBfdHVubmVsX25pY2AgY29kZSwgYW5kIGl0J3MgdXNlZCBieSBhICp0b24qIG9mIGRyaXZlcnMuIGB4Z2JlYCwgYGJueDJ4YCwgYGJueHRgLCBgbGlxdWlkaW9gLCBgY3hnYjRgLi4uIHRoZSBsaXN0IGdvZXMgb24gYW5kIG9uLCByaWdodD8gU2VlbXMgcHJldHR5IHdpZGVseSBhZG9wdGVkLiBCdXQgdGhlbiBJIHNhdyBgbmV0ZGV2c2ltYCBpbiB0aGVyZS4gV2FpdCBhIHNlY29uZCwgYG5ldGRldnNpbWAgdXNlcyBpdD8gVGhhdCdzIGludGVyZXN0aW5nLiBJIGtub3cgaG93IGBuZXRkZXZzaW1gIHdvcmtzOyBpdCdzIGEgKnZpcnR1YWwqIG5ldHdvcmsgZGV2aWNlLiBBaGEhIFRoYXQgbWVhbnMgdGhpcyBgdWRwX3R1bm5lbF9uaWNgIGNvZGUgaXMgKmRlZmluaXRlbHkqIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHNwZWNpZmljYWxseSB0aHJvdWdoIGBuZXRkZXZzaW1gLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqLiBJJ20gZ29pbmcgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuY2AgdG8gc2VlIHByZWNpc2VseSB3aGF0J3MgZ29pbmcgb24gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5OTczLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM3OjA4LjE3MDI0NDg1OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk1NDQ5ODE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5zaW1fdWRwX3R1bm5lbHNfaW5mb19jcmVhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9MTAzOD1zdGF0aWMgaW50IG5zaW1faW5pdF9uZXRkZXZzaW0oc3RydWN0IG5ldGRldnNpbSAqbnMpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtMTA1My1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6MTA1NDpcXHRlcnIgPSBuc2ltX3VkcF90dW5uZWxzX2luZm9fY3JlYXRlKG5zLVxcdTAwM2Vuc2ltX2RldiwgbnMtXFx1MDAzZW5ldGRldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTEwNTUtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaD0xNzM9dm9pZCBuc2ltX3VkcF90dW5uZWxzX2RlYnVnZnNfY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxNzQ6aW50IG5zaW1fdWRwX3R1bm5lbHNfaW5mb19jcmVhdGUoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldixcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTc1LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jPTExOD1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBuc2ltX3VkcF90dW5uZWxzX2luZm9fcmVzZXRfZm9wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTEyNC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYzoxMjU6aW50IG5zaW1fdWRwX3R1bm5lbHNfaW5mb19jcmVhdGUoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldixcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xMjYtXFx0XFx0XFx0XFx0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM3OjA4LjM2NTcwMDYxNFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjkwODM3NzkyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjIwMTYxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzozNzoyNS4yNzQwODIwOTNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMTg2MDUxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1ZHBfdHVubmVsX25pY193b3JrcXVldWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9Mzk9c3RydWN0IHVkcF90dW5uZWxfbmljIHtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTktICovXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2MDpzdGF0aWMgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYxLVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zMDY9dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMxMC1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMxMTpcXHRpZiAocXVldWVfd29yayh1ZHBfdHVubmVsX25pY193b3JrcXVldWUsIFxcdTAwMjZ1dG4tXFx1MDAzZXdvcmspKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzEyLVxcdFxcdHJlZmNvdW50X2luYyhcXHUwMDI2dXRuLVxcdTAwM2VyZWZjbnQpO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz05ODY9c3RhdGljIGludCBfX2luaXQgdWRwX3R1bm5lbF9uaWNfaW5pdF9tb2R1bGUodm9pZClcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTg5LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTkwOlxcdHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSA9IGFsbG9jX29yZGVyZWRfd29ya3F1ZXVlKFxcXCJ1ZHBfdHVubmVsX25pY1xcXCIsIDApO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTkxOlxcdGlmICghdWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTkyLVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDA3LVxcdHJ0bmxfdW5sb2NrKCk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxMDA4OlxcdGRlc3Ryb3lfd29ya3F1ZXVlKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDA5LVxcdHJldHVybiBlcnI7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTEwMTM9c3RhdGljIHZvaWQgX19leGl0IHVkcF90dW5uZWxfbmljX2NsZWFudXBfbW9kdWxlKHZvaWQpXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEwMjAtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxMDIxOlxcdGRlc3Ryb3lfd29ya3F1ZXVlKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDIyLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6Mzc6MjUuNTc1OTQ3Njc2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0Mjg2NTA1ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ3JpdGljYWwgQnVnIEZpeCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgbmFzdHkgcmFjZSBjb25kaXRpb24gaW4gYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgLiBUaGUgb2xkIGNvZGUgaGFkIGEgZmxhdyDigJMgaXQgd2FpdGVkIGZvciBgd29ya19wZW5kaW5nYCB0byBoaXQgemVybywgYnV0IHRoZSBhc3NvY2lhdGVkIHdvcmsgY291bGQgc3RpbGwgYmUgcnVubmluZyBhbmQgdHJ5aW5nIHRvIGFjY2VzcyB0aGUgbm93LWZyZWVkIGB1dG5gIHN0cnVjdHVyZS4gVGhhdCdzIGEgY2xhc3NpYyBtZW1vcnkgY29ycnVwdGlvbiBidWcsIGFuZCB0aGUgcmVmY291bnQgYXBwcm9hY2ggc2VlbXMgbGlrZSBhIHNvbGlkIGZpeC4gSXQncyBtdWNoIG1vcmUgcm9idXN0LlxuXG5UaGlzIGlzICphYnNvbHV0ZWx5KiBzb21ldGhpbmcgdGhhdCBkZW1hbmRzIGZ1enppbmcuIEEgcmFjZSBjb25kaXRpb24gbGlrZSB0aGF0LCBlc3BlY2lhbGx5IGFyb3VuZCByZXNvdXJjZSBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24sIGlzIHByaW1lIHRlcnJpdG9yeSBmb3IgdW5jb3ZlcmluZyB2dWxuZXJhYmlsaXRpZXMuIFRoZSBwYXRjaCdzIGltcGFjdCBzb3VuZHMgZmFpcmx5IGxvY2FsaXplZCwgd2hpY2ggbWFrZXMgaXQgYW4gaWRlYWwgY2FuZGlkYXRlIGZvciB0YXJnZXRlZCBmdXp6aW5nLiBJ4oCZZCB3YW50IHRvIGNvbmZpcm0gdGhhdCB0aGUgcmVmY291bnQgaGFuZGxlcyB0aGUgZWRnZSBjYXNlcyBhcyBleHBlY3RlZCwgYW5kIHRlc3QgcG90ZW50aWFsIHNjZW5hcmlvcyB3aGVyZSBjb25jdXJyZW50IGFjY2Vzc2VzIG1pZ2h0IHN0aWxsIHNuZWFrIHRocm91Z2guXG5cbk5vdywgd2hhdCBhcmUgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIEkgbmVlZCB0byB0cmlnZ2VyIHRoaXM/IEFoLCBJIHJlbWVtYmVyLCBJIG5lZWQgYENPTkZJR19ORVRERVZTSU1gIHRvIGVuYWJsZSBgbmV0ZGV2c2ltYCwgd2hpY2gsIGZyb20gbWVtb3J5LCB1dGlsaXplcyBgdWRwX3R1bm5lbF9uaWNgLiBCdXQgd2FpdCwgZG9lcyBlbmFibGluZyB0aGUgbmV0ZGV2c2ltIGFsc28gaW1wbGljaXRseSBzZWxlY3QgYE5FVF9VRFBfVFVOTkVMYD8gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBLY29uZmlnIGRlcGVuZGVuY2llcyB0byBiZSBzdXJlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBzZXR0aW5nIGV2ZXJ5dGhpbmcgdXAgY29ycmVjdGx5IGJlZm9yZSBzdGFydGluZyB0aGUgZnV6emluZyBjYW1wYWlnbi4gTmVlZCB0byBjb25maXJtIHRoYXQgYE5FVF9VRFBfVFVOTkVMYCBpcyBlbmFibGVkIHNvIEknbSBhY3R1YWxseSB0ZXN0aW5nIHRoZSBwYXRjaGVkIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNDEyLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM3OjMxLjAwNDYwMjEzMVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc4MTY5MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkVUREVWU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz02MDI9c291cmNlIFxcXCJkcml2ZXJzL25ldC9oeXBlcnYvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwMy1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwNDpjb25maWcgTkVUREVWU0lNXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MDUtXFx0dHJpc3RhdGUgXFxcIlNpbXVsYXRlZCBuZXR3b3JraW5nIGRldmljZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6Mzc6MzEuMDYyNDI3NTM5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5Mzk2MzM2MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjoyMTk1NiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6Mzc6MzcuMDAyMDY1NzIyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjE1NDU4MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTkVUX1VEUF9UVU5ORUxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTc0PWNvbmZpZyBXSVJFR1VBUkRcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctNzYtXFx0ZGVwZW5kcyBvbiBORVQgXFx1MDAyNlxcdTAwMjYgSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWc6Nzc6XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuZHJpdmVycy9uZXQvS2NvbmZpZy03OC1cXHRzZWxlY3QgRFNUX0NBQ0hFXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTEwMz1jb25maWcgT1ZQTlxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMDYtXFx0c2VsZWN0IERTVF9DQUNIRVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTA3OlxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbmRyaXZlcnMvbmV0L0tjb25maWctMTA4LVxcdHNlbGVjdCBDUllQVE9cXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MjMwPWNvbmZpZyBWWExBTlxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMzItXFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyMzM6XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMzQtXFx0c2VsZWN0IEdST19DRUxMU1xcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNDU9Y29uZmlnIEdFTkVWRVxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNDctXFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyNDg6XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNDktXFx0c2VsZWN0IEdST19DRUxMU1xcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNjA9Y29uZmlnIEJBUkVVRFBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMjYyLVxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjYzOlxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjY0LVxcdHNlbGVjdCBHUk9fQ0VMTFNcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MjcyPWNvbmZpZyBHVFBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMjc0LVxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWc6Mjc1OlxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjc2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9Mjg5PWNvbmZpZyBQRkNQXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTI5MS1cXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnOjI5MjpcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI5My1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTMwMj1jb25maWcgQU1UXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTMwNC1cXHRkZXBlbmRzIG9uIElORVQgXFx1MDAyNlxcdTAwMjYgSVBfTVVMVElDQVNUXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozMDU6XFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDYtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzozNzozNy4xNjM2MTc3OThaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzg0NTYwMjMxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBORVRfVURQX1RVTk5FTCBEZXBlbmRlbmN5KipcblxuT2theSwgc28gYE5FVERFVlNJTWAgaXNuJ3QgZGlyZWN0bHkgY2hvb3NpbmcgYE5FVF9VRFBfVFVOTkVMYCwgd2hpY2ggaXMgYSBiaXQgcHV6emxpbmcuIEJ1dCwgaGFuZyBvbi4uLiBgdWRwX3R1bm5lbF9uaWMuY2AgKmlzKiBiZWluZyBjb21waWxlZCB3aGVuIGBORVRfVURQX1RVTk5FTGAgaXMgZW5hYmxlZC4gVGhhdCdzIHRoZSBjbHVlLiBOb3cgaXQgY2xpY2tzISBgTkVUX1VEUF9UVU5ORUxgIGlzIHB1bGxlZCBpbiBpbmRpcmVjdGx5IGJ5IHRoaW5ncyBsaWtlIGBWWExBTmAgYW5kIGBHRU5FVkVgLiBTbywgdG8gZ2V0IGBORVRfVURQX1RVTk5FTGAgZW5hYmxlZCBhbmQgYXZhaWxhYmxlIHdoZW4gdXNpbmcgYE5FVERFVlNJTWAsIEkgbmVlZCB0byBtYWtlIHN1cmUgb25lIG9mIHRob3NlIGVuY2Fwc3VsYXRpbmcgcHJvdG9jb2xzIGlzIGFsc28gc2VsZWN0ZWQuIEkgbmVlZCB0byBlbmFibGUgYm90aCBgTkVUREVWU0lNYCBhbmQgYFZYTEFOYCBvciBgR0VORVZFYC4gTGV0IG1lIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoYXQgYnkgbG9va2luZyBhdCB0aGUgYGRyaXZlcnMvbmV0L25ldGRldnNpbS9LY29uZmlnYCBmaWxlLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB0aGVyZSBpc24ndCBzb21lIG90aGVyIGhpZGRlbiBkZXBlbmRlbmN5IEknbSBtaXNzaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjU4MSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzozNzo0NS4wMDkyMjQ4OTJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNTA3Mjk4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRERVZTSU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM3OjQ1LjA3Mjc0MDg3MVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTE5MzY3MjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgdGhlIHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyB0aGUgS2NvbmZpZyBMYW5kc2NhcGUqKlxuXG5IbW0sIEkgd2FzIGp1c3QgbG9va2luZyBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIGBuZXRkZXZzaW1gIGRyaXZlciwgYW5kIEkgZXhwZWN0ZWQgdG8gZmluZCB0aGUgYEtjb25maWdgIGZpbGUgaW4gYGRyaXZlcnMvbmV0L25ldGRldnNpbS9gLiBCdXQsIHdhaXQgYSBtaW51dGUuLi50aGF0IHBhdGggZG9lc24ndCBzZWVtIHRvIGV4aXN0LiBUaGF0J3MgdW51c3VhbC4gSSBrbm93IHRoaXMgY29kZWJhc2UgcHJldHR5IHdlbGwsIGFuZCBpZiBpdCdzIG5vdCB3aGVyZSBJIGFudGljaXBhdGUsIGl0IHVzdWFsbHkgbWVhbnMgYSByZS1vcmdhbml6YXRpb24gb3IgcGVyaGFwcyBpdCBpcyBpbmNsdWRlZCBpbiBhIHBhcmVudCBmb2xkZXIuIExldCdzIGJhY2t0cmFjayBhbmQgZG91YmxlLWNoZWNrIGBkcml2ZXJzL25ldC9LY29uZmlnYCBkaXJlY3RseS4gTXkgc3VzcGljaW9uIGlzIHRoYXQgYE5FVERFVlNJTWAgbWlnaHQgYmUgZGVmaW5lZCB0aGVyZSwgcGVyaGFwcyBhcyBhIHRvcC1sZXZlbCBmZWF0dXJlIG9yIGEgc3ViLWNvbmZpZ3VyYXRpb24gdW5kZXIgYSBicm9hZGVyIG5ldHdvcmtpbmcgdW1icmVsbGEuIE5lZWQgdG8gcXVpY2tseSBlbnN1cmUgdGhpcyBpcyB3aGVyZSBpdCByZXNpZGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjk2NSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM3OjQ4LjU5MjExMTUxM1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1NTgxMjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRERVZTSU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9NjAyPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MDMtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDQ6Y29uZmlnIE5FVERFVlNJTVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM3OjQ4Ljc3NzY5OTI4OVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDM5NzMyMDk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MjMzMDUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM3OjUxLjgxNzQzNTA2M1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTQ5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwNCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDYwNDpcXHRjb25maWcgTkVUREVWU0lNXFxuIDYwNTpcXHRcXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXFxcIlxcbiA2MDY6XFx0XFx0ZGVwZW5kcyBvbiBERUJVR19GU1xcbiA2MDc6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuIDYwODpcXHRcXHRkZXBlbmRzIG9uIFBTQU1QTEUgfHwgUFNBTVBMRT1uXFxuIDYwOTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX01PQ0sgfHwgUFRQXzE1ODhfQ0xPQ0tfTU9DSz1uXFxuIDYxMDpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gNjExOlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gNjEyOlxcdFxcdHNlbGVjdCBORVRfU0hBUEVSXFxuIDYxMzpcXHRcXHRoZWxwXFxuIDYxNDpcXHRcXHQgIFRoaXMgZHJpdmVyIGlzIGEgZGV2ZWxvcGVyIHRlc3RpbmcgdG9vbCBhbmQgc29mdHdhcmUgbW9kZWwgdGhhdCBjYW5cXG4gNjE1OlxcdFxcdCAgYmUgdXNlZCB0byB0ZXN0IHZhcmlvdXMgY29udHJvbCBwYXRoIG5ldHdvcmtpbmcgQVBJcywgZXNwZWNpYWxseVxcbiA2MTY6XFx0XFx0ICBIVy1vZmZsb2FkIHJlbGF0ZWQuXFxuIDYxNzpcXHRcXG4gNjE4OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiA2MTk6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBuZXRkZXZzaW0uXFxuIDYyMDpcXHRcXG4gNjIxOlxcdGNvbmZpZyBORVRfRkFJTE9WRVJcXG4gNjIyOlxcdFxcdHRyaXN0YXRlIFxcXCJGYWlsb3ZlciBkcml2ZXJcXFwiXFxuIDYyMzpcXHRcXHRzZWxlY3QgRkFJTE9WRVJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6Mzc6NTEuODE3NTI2MDUzWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5NjMwMjM2MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZnJvbSBhbiBleHBlcnQncyBwZXJzcGVjdGl2ZTpcblxuKipEZWJ1Z2dpbmcgTkVUREVWU0lNIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBgTkVUREVWU0lNYCBpc24ndCBwaWNraW5nIHVwIGBORVRfVURQX1RVTk5FTGAgYXMgZXhwZWN0ZWQuIFRoYXQncyBhIGJpdCBvZGQuIEkga25vdyBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmNgIGlzIGludm9sdmVkLCBhbmQgdGhlIGRvY3VtZW50YXRpb24gaW5kaWNhdGVzIGl0IGNhbiBiZSBjb21waWxlZCBjb25kaXRpb25hbGx5LCBtZWFuaW5nIGl0IGRlcGVuZHMgb24gYSBjb25maWd1cmF0aW9uIG9wdGlvbiBiZWluZyBzZXQuIFRoZSBmaXJzdCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgY29uZmlybSB0aGF0IHRoZSBjb21waWxhdGlvbiBvZiB0aGlzIG1vZHVsZSBpcyBhY3R1YWxseSBpbnRlbmRlZC4gVGhlcmVmb3JlIEkgc2hvdWxkIGV4YW1pbmUgdGhlIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vTWFrZWZpbGVgIHRvIHNlZSB1bmRlciB3aGF0IGNvbmRpdGlvbnMgdGhlIGB1ZHBfdHVubmVscy5jYCBmaWxlIGlzIGluY2x1ZGVkIGluIHRoZSBidWlsZC4gSSdsbCBuZWVkIHRvIHJldmlldyBhbnkgY29uZGl0aW9uYWwgbG9naWMgb3IgZGVwZW5kZW5jaWVzIGRlZmluZWQgaW4gdGhhdCBNYWtlZmlsZSB0byBkZXRlcm1pbmUgd2h5IGBORVRfVURQX1RVTk5FTGAgaXNuJ3QgYmVpbmcgc2V0IGNvcnJlY3RseSBkdXJpbmcgdGhlIGBORVRERVZTSU1gIGJ1aWxkIHByb2Nlc3MuIEl0J3MgcHJvYmFibHkganVzdCBhIHNpbXBsZSBjb25maWd1cmF0aW9uIGlzc3VlLCBidXQgSSBuZWVkIHRvIHBpbnBvaW50IHdoZXJlIHRoZSBwcm9ibGVtIGxpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNjM5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzozNzo1Ni43ODA1NTMzNVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQxMTg2MTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVkcF90dW5uZWxzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vTWFrZWZpbGU9NT1uZXRkZXZzaW0tb2JqcyA6PSBcXFxcXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL01ha2VmaWxlOjY6XFx0bmV0ZGV2Lm8gZGV2Lm8gZXRodG9vbC5vIGZpYi5vIGJ1cy5vIGhlYWx0aC5vIGh3c3RhdHMubyB1ZHBfdHVubmVscy5vIHRjLm9cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vTWFrZWZpbGUtNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6Mzc6NTcuMTIxODAzMzcxWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3OTg5OTc0NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBhIFBvdGVudGlhbCBCdWlsZCBDb25maWd1cmF0aW9uIENvbmZsaWN0KipcblxuT2theSwgc28gSSdtIG5vdGljaW5nIHNvbWV0aGluZyBwb3RlbnRpYWxseSBwcm9ibGVtYXRpYyB3aXRoIHRoZSBidWlsZCBwcm9jZXNzLiBJdCBzZWVtcyB0aGF0IGB1ZHBfdHVubmVscy5vYCBpcyAqYWx3YXlzKiBjb21waWxlZCB3aGVuIGBORVRERVZTSU1gIGlzIGVuYWJsZWQuIFRoYXQncyBmaW5lIGluIGl0c2VsZi4gQnV0LCBJJ20gYWxzbyBzZWVpbmcgdGhhdCBgdWRwX3R1bm5lbF9uaWMuY2AsIHdoaWNoIGlzIGxvY2F0ZWQgaW4gYG5ldC9pcHY0L01ha2VmaWxlYCwgaGFzIGEgZGVwZW5kZW5jeSBvbiBgQ09ORklHX05FVF9VRFBfVFVOTkVMYC4gVGhhdCdzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcuXG5cbk15IGNvbmNlcm4gaXMgd2hhdCBoYXBwZW5zIGlmIGBORVRERVZTSU1gICppcyogZW5hYmxlZCwgYnV0IGBDT05GSUdfTkVUX1VEUF9UVU5ORUxgIGlzIGRpc2FibGVkLiBUaGF0J3MgYSBjbGFzc2ljIHJlY2lwZSBmb3IgYSBidWlsZC10aW1lIGZhaWx1cmUsIG9yIHdvcnNlLCBzb21lIHVuZXhwZWN0ZWQgcnVudGltZSBiZWhhdmlvci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gaXMgZGVzaWduZWQgdG8gcmVzcG9uZCB0byB0aGlzIHBhcnRpY3VsYXIgY29tYmluYXRpb24gb2YgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuXG5UaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBzb3VyY2UgY29kZSBvZiBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmNgLiBJJ20gZ29pbmcgdG8gbG9vayBzcGVjaWZpY2FsbHkgZm9yIGAjaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX1VEUF9UVU5ORUwpYCBkaXJlY3RpdmVzLiBUaGF0IHdpbGwgdGVsbCBtZSBpbW1lZGlhdGVseSBpZiB0aGUgY29kZSB3aXRoaW4gYHVkcF90dW5uZWxzLmNgIGlzIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgYmFzZWQgb24gdGhlIHByZXNlbmNlIG9mIHRoYXQgY3J1Y2lhbCBjb25maWd1cmF0aW9uIG9wdGlvbi4gVGhpcyB3aWxsIGRpcmVjdGx5IGluZGljYXRlIHdoZXRoZXIgdGhlIGJ1aWxkIHByb2Nlc3MgdGFrZXMgdGhpcyBjb25mbGljdCBpbnRvIGFjY291bnQsIG9yIGlmIGl0IHNpbXBseSBwcm9kdWNlcyBhbiBhcnRpZmFjdCB0aGF0IGlzIG5vdCBidWlsZGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MDQzLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM4OjAyLjkyMDgwNTc4N1oiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEzMTQ2NjgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19ORVRfVURQX1RVTk5FTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6Mzg6MDIuOTgyMTI4NzE2WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNzAzMDIzNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgZm9yIGFuIGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIFBvdGVudGlhbCBEYXRhIFN0cnVjdHVyZXMqKlxuXG5BbHJpZ2h0LCBzbyBJIG5lZWQgdG8gZmluZCB3aGVyZSB0aGUgYHVkcF90dW5uZWxfbmljX2luZm9gIHN0cnVjdHVyZSBpcyBkZWZpbmVkLiBHaXZlbiB0aGUgY29udGV4dCwgbXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGl0J3MgbGlrZWx5IGhvdXNlZCB3aXRoaW4gdGhlIGtlcm5lbCdzIG5ldHdvcmsgc3RhY2suIFRoZSB0d28gbW9zdCBwcm9iYWJsZSBsb2NhdGlvbnMganVtcCB0byBtaW5kOiBlaXRoZXIgd2l0aGluIHRoZSBgaW5jbHVkZS9uZXQvdWRwX3R1bm5lbC5oYCBmaWxlLCBhcyB0aGUgbmFtZSBzdHJvbmdseSBzdWdnZXN0cyBhIGNvbm5lY3Rpb24gdG8gVURQIHR1bm5lbGluZywgb3IgcGVyaGFwcyBpbiBgaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaGAuIFRoZSBsYXR0ZXIgaXMgdGhlIGdlbmVyYWwgaGVhZGVyIGZvciBuZXR3b3JrIGRldmljZSBkZWZpbml0aW9ucywgYW5kIGl0IHdvdWxkbid0IGJlIHN1cnByaXNpbmcgaWYgc29tZSBhc3NvY2lhdGVkIGluZm9ybWF0aW9uIHdlcmUga2VwdCB0aGVyZS4gSSdsbCBzdGFydCBieSBjaGVja2luZyB0aG9zZSB0d28gZmlsZXMg4oCTIGl0J3MgdGhlIG1vc3QgZWZmaWNpZW50IHdheSB0byBwaW5wb2ludCB0aGUgZXhhY3QgZGVmaW5pdGlvbiBhbmQgdW5kZXJzdGFuZCBpdHMgZmllbGRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDUxNiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM4OjA3LjE1MjQzMzYzMloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjM4Mzc3OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWRwX3R1bm5lbF9uaWNfaW5mb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9NzY9c3RydWN0IHVkcF90dW5uZWxfaW5mbztcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjc3OnN0cnVjdCB1ZHBfdHVubmVsX25pY19pbmZvO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtNzgtc3RydWN0IHVkcF90dW5uZWxfbmljO1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0xODA0PWVudW0gbmV0ZGV2X3JlZ19zdGF0ZSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTIwODktICpcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjIwOTA6ICpcXHRAdWRwX3R1bm5lbF9uaWNfaW5mbzpcXHRzdGF0aWMgc3RydWN0dXJlIGRlc2NyaWJpbmcgdGhlIFVEUCB0dW5uZWxcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTIwOTEtICpcXHRcXHRcXHRcXHRvZmZsb2FkIGNhcGFiaWxpdGllcyBvZiB0aGUgZGV2aWNlXFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTIxMzk9c3RydWN0IG5ldF9kZXZpY2Uge1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yNTA0LSNlbmRpZlxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MjUwNTpcXHRjb25zdCBzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNfaW5mb1xcdCp1ZHBfdHVubmVsX25pY19pbmZvO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjUwNi1cXHRzdHJ1Y3QgdWRwX3R1bm5lbF9uaWNcXHQqdWRwX3R1bm5lbF9uaWM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM4OjA3LjIxNjI3ODY1WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzNzYzOTY5NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBVbmV4cGVjdGVkIERhdGEgU3RydWN0dXJlIFVzYWdlKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUsIGFuZCBzb21ldGhpbmcncyBidWdnaW5nIG1lLiBJdCBzZWVtcyBsaWtlIGV2ZW4gd2hlbiB0aGUgYE5FVF9VRFBfVFVOTkVMYCBmZWF0dXJlIGlzIGRpc2FibGVkLCB0aGUgYHVkcF90dW5uZWxfbmljX2luZm9gIGZpZWxkIGlzIHN0aWxsIHByZXNlbnQgd2l0aGluIHRoZSBgc3RydWN0IG5ldF9kZXZpY2VgLiBUaGF0IHN0cmlrZXMgbWUgYXMgb2RkLiBJdCBzaG91bGQgYmUgY29uZGl0aW9uYWwsIHJpZ2h0PyBBIGZlYXR1cmUgZmxhZyB3b3VsZCB1c3VhbGx5IGNvbnRyb2wgc29tZXRoaW5nIGxpa2UgdGhhdC5cblxuQnV0IGhhbmcgb27igKYgaXMgYHVkcF90dW5uZWxfbmljX3JlZ2lzdGVyYCBhY3R1YWxseSBiZWluZyBjYWxsZWQgZnJvbSBgcmVnaXN0ZXJfbmV0ZGV2aWNlYD8gVGhhdCB3b3VsZCBtYWtlIHNlbnNlLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gTGV0J3MgZ28gdG8gYG5ldC9jb3JlL2Rldi5jYCBhbmQgc2VlIHdoYXQncyByZWFsbHkgaGFwcGVuaW5nIGR1cmluZyBkZXZpY2UgcmVnaXN0cmF0aW9uLiBJ4oCZbSB0aGlua2luZyB0aGVyZSBtaWdodCBiZSBzb21ldGhpbmcgaGVyZSB0aGF0IGlzIG5vdCByaWdodC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjUwMzcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzozODoxMi41OTI2Nzk3NzdaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NjQ3MDE5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ1ZHBfdHVubmVsX25pY19yZWdpc3RlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY29yZS9kZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6Mzg6MTIuNjUyMzM1NjI1WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MTYzODU1MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OlxuXG4qKkRpZ2dpbmcgaW50byB0aGF0IGB1ZHBfdHVubmVsX25pY19yZWdpc3RlcmAgQ2FsbCoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBzdGFjayBmb3IgYHVkcF90dW5uZWxfbmljX3JlZ2lzdGVyYC4gSXQgc2VlbXMgZnVuZGFtZW50YWwgdG8gdGhlIG5ldHdvcmtpbmcgc3RhY2ssIGJ1dCBJIGRvbid0IHJlY2FsbCBvZmZoYW5kICpleGFjdGx5KiBob3cgaXQgZ2V0cyBpbnZva2VkLiBJcyBpdCB0aHJvdWdoIGEgc3BlY2lmaWMgZGV2aWNlIGRyaXZlciBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZT8gT3IgbWF5YmUgaXQncyB0cmlnZ2VyZWQgZHVyaW5nIGEgbmV0bGluayBldmVudD8gRG9lcyBpdCB0aWUgaW50byB0aGUgdHVubmVsIGRldmljZSBjcmVhdGlvbiBzb21laG93LCBvciBpcyBpdCBhIG1vcmUgZ2VuZXJhbCByZWdpc3RyYXRpb24gbWVjaGFuaXNtIGZvciBVRFAtYmFzZWQgdHVubmVscyB3aXRoaW4gdGhlIGtlcm5lbD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdyBoZXJlLCBiZWNhdXNlIGtub3dpbmcgKmhvdyogaXQncyBjYWxsZWQgcHJvdmlkZXMgY3JpdGljYWwgY29udGV4dCBmb3IgZGVidWdnaW5nLCBwZXJmb3JtYW5jZSBhbmFseXNpcywgYW5kIGV2ZW4gc2VjdXJpdHkgaW1wbGljYXRpb25zLiBJIHN1c3BlY3QgaXQncyBsaWtlbHkgYSByZWxhdGl2ZWx5IGxvdy1sZXZlbCBjYWxsLCBwcm9iYWJseSBpbnZvbHZlZCBpbiBzZXR0aW5nIHVwIHRoZSBhY3R1YWwgVURQIHR1bm5lbCBkZXZpY2UuIEJ1dCBJJ2xsIG5lZWQgdG8gZm9sbG93IHRoZSB0cmFpbC4gVGltZSB0byBicmVhayBvdXQgdGhlIGtlcm5lbCBzb3VyY2UgYW5kIGEgZGVidWdnZXIuIExldCdzIHNlZSBpZiBJIGNhbiBmaW5kIHRoZSBlbnRyeSBwb2ludHMgdGhhdCBsZWFkIHRvIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MzIyLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6Mzg6MTYuMzY4NzI0ODEyWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDE2NTQyODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVkcF90dW5uZWxfbmljX3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTgwMD1zdGF0aWMgdm9pZCB1ZHBfdHVubmVsX25pY19wdXQoc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTgwNS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjgwNjpzdGF0aWMgaW50IHVkcF90dW5uZWxfbmljX3JlZ2lzdGVyKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy04MDcte1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz05MzI9dWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy05NDUtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo5NDY6XFx0XFx0ZXJyID0gdWRwX3R1bm5lbF9uaWNfcmVnaXN0ZXIoZGV2KTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTk0Ny1cXHRcXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzozODoxOC4zODUyNzkwNzJaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEwNjExNDI4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBOZXRkZXZpY2UgTm90aWZpZXIgQ2FsbCoqXG5cblJpZ2h0LCBzbyB0aGlzIGV2ZW50IGlzIG9yaWdpbmF0aW5nIGZyb20gYSBuZXRkZXZpY2Ugbm90aWZpZXIsIHNwZWNpZmljYWxseSBgdWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50YC4gVGhhdCBpbW1lZGlhdGVseSB0ZWxscyBtZSB3ZSdyZSBkZWFsaW5nIHdpdGggc29tZXRoaW5nIHJlbGF0ZWQgdG8gVURQIHR1bm5lbHMgYW5kIG5ldHdvcmsgZGV2aWNlIGV2ZW50cy4gSSBuZWVkIHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGNvZGUsIHNvIGxldCdzIGp1bXAgcmlnaHQgaW50byBgbmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuY2AgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgdWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50YC4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHRoZSBldmVudCBoYW5kbGluZyBsb2dpYyB0aGVyZSDigJMgdGhlIGNvZGUgdGhhdCByZWFjdHMgdG8gbmV0ZGV2aWNlIGxpZmVjeWNsZSBjaGFuZ2VzIGluIHRoZSBjb250ZXh0IG9mIFVEUCB0dW5uZWxpbmcuIEl0J3MgbGlrZWx5IHdlJ2xsIHNlZSByZWdpc3RyYXRpb24sIHVucmVnaXN0cmF0aW9uLCBhbmQgbWF5YmUgc29tZSBjb25maWd1cmF0aW9uIG9yIHJlc291cmNlIG1hbmFnZW1lbnQgcmVsYXRlZCB0byB0aGUgdHVubmVsIGludGVyZmFjZXMsIGFsbCB0cmlnZ2VyZWQgYnkgdGhpcyBub3RpZmllci4gSSdtIGtlZW4gdG8gc2VlIGhvdyB0aGV5J3JlIGhhbmRsaW5nIHRoaW5ncyBsaWtlIGRldmljZSB1cC9kb3duIGV2ZW50cywgYWRkcmVzcyBjaGFuZ2VzLCBvciBwZXJoYXBzIGV2ZW4gbGluayBzdGF0ZSBjaGFuZ2VzIGZvciB0aGUgdW5kZXJseWluZyBwaHlzaWNhbCBpbnRlcmZhY2VzLiBJdCdzIGxpa2VseSB0aGF0J3MgdGhlIGZvY2FsIHBvaW50LCB0aGUgcG9pbnQgb2YgZW50cnkuIFRpbWUgdG8gZGl2ZSBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU4MjQsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzozODoyMi40OTEzOTc0MVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg2Nzc0NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz05MzE9c3RhdGljIGludFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTMyOnVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTkzMy1cXHRcXHRcXHQgICAgICAgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz05ODI9c3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayB1ZHBfdHVubmVsX25pY19ub3RpZmllcl9ibG9jayBfX3JlYWRfbW9zdGx5ID0ge1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTgzOlxcdC5ub3RpZmllcl9jYWxsID0gdWRwX3R1bm5lbF9uaWNfbmV0ZGV2aWNlX2V2ZW50LFxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTg0LX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM4OjIyLjU1MDA4MTk2OVoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjc2NjQ0MTkxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjI1MDg5LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQxNzozODozNS4zMTY1Mjc0MTFaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MjM3MzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9Mzk9c3RydWN0IHVkcF90dW5uZWxfbmljIHtcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNTktICovXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo2MDpzdGF0aWMgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZTtcXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTYxLVxcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz0zMDY9dWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHVkcF90dW5uZWxfbmljICp1dG4pXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTMxMC1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jOjMxMTpcXHRpZiAocXVldWVfd29yayh1ZHBfdHVubmVsX25pY193b3JrcXVldWUsIFxcdTAwMjZ1dG4tXFx1MDAzZXdvcmspKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtMzEyLVxcdFxcdHJlZmNvdW50X2luYyhcXHUwMDI2dXRuLVxcdTAwM2VyZWZjbnQpO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz05ODY9c3RhdGljIGludCBfX2luaXQgdWRwX3R1bm5lbF9uaWNfaW5pdF9tb2R1bGUodm9pZClcXG4tLVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTg5LVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTkwOlxcdHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSA9IGFsbG9jX29yZGVyZWRfd29ya3F1ZXVlKFxcXCJ1ZHBfdHVubmVsX25pY1xcXCIsIDApO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM6OTkxOlxcdGlmICghdWRwX3R1bm5lbF9uaWNfd29ya3F1ZXVlKVxcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtOTkyLVxcdFxcdHJldHVybiAtRU5PTUVNO1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDA3LVxcdHJ0bmxfdW5sb2NrKCk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxMDA4OlxcdGRlc3Ryb3lfd29ya3F1ZXVlKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDA5LVxcdHJldHVybiBlcnI7XFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jPTEwMTM9c3RhdGljIHZvaWQgX19leGl0IHVkcF90dW5uZWxfbmljX2NsZWFudXBfbW9kdWxlKHZvaWQpXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTEwMjAtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzoxMDIxOlxcdGRlc3Ryb3lfd29ya3F1ZXVlKHVkcF90dW5uZWxfbmljX3dvcmtxdWV1ZSk7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy0xMDIyLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6Mzg6MzUuMzc1Nzc0OTZaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA5NDI3MTk0MTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGB1ZHBfdHVubmVsX25pY2AgTW9kdWxlKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGB1ZHBfdHVubmVsX25pY2Agc3R1ZmYsIHJpZ2h0PyBGcm9tIHdoYXQgSSBjYW4gZ2F0aGVyLCBgdWRwX3R1bm5lbF9uaWNgIGlzIGEgbW9kdWxlIOKAkyBgdWRwX3R1bm5lbF9uaWMua29gIG9yIGJ1aWx0LWluIHRvIHRoZSBrZXJuZWwg4oCTIGFuZCB0aGUgY29yZSBvZiBpdCBhbGwgaXMgYSBuZXRkZXZpY2Ugbm90aWZpZXIgcmVnaXN0cmF0aW9uLiBUaGUga2V5IHRoaW5nIHNlZW1zIHRvIGJlIHRoYXQgd2hlbiBhIG5ldGRldmljZSB3aXRoIGEgYHVkcF90dW5uZWxfbmljX2luZm9gIHN0cnVjdHVyZSBpcyByZWdpc3RlcmVkLCB0aGF0J3Mgd2hlbiBhIGB1ZHBfdHVubmVsX25pY2AgaW5zdGFuY2UgZ2V0cyBhbGxvY2F0ZWQgYW5kIGxpbmtlZCB0byB0aGF0IG5ldGRldmljZS5cblxuVGhpcyBwb2ludHMgbWUgaW1tZWRpYXRlbHkgdG93YXJkcyBgQ09ORklHX05FVF9VRFBfVFVOTkVMYC4gSXQncyBlc3NlbnRpYWwgdG8gaGF2ZSB0aGF0IGVuYWJsZWQsIG9idmlvdXNseS4gTm93LCBob3cgZG8gd2UgZ2V0IGBORVRfVURQX1RVTk5FTGAgZW5hYmxlZD8gV2VsbCwgYSBjb3VwbGUgb2YgbGlrZWx5IHBhdGhzIGNvbWUgdG8gbWluZDogZW5hYmxpbmcgZWl0aGVyIGBDT05GSUdfVlhMQU5gIG9yIGBDT05GSUdfR0VORVZFYCBzaG91bGQgcHVsbCBpdCBpbiBhdXRvbWF0aWNhbGx5LiBBbmQsIG9mIGNvdXJzZSwgSSBjYW4gdXNlIGBDT05GSUdfTkVUREVWU0lNYCB0byBnZW5lcmF0ZSB0aG9zZSBuZXRkZXZpY2VzIHRoYXQgYXJlIGRlc2lnbmVkIHRvIGhhdmUgYHVkcF90dW5uZWxfbmljX2luZm9gLlxuXG5XYWl0IGEgbWludXRlLCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdC4gWWVzLCBgTkVUX1VEUF9UVU5ORUxgIGlzICpzZWxlY3RlZCogYnkgdGhpbmdzIGxpa2UgYFZYTEFOYCwgYEdFTkVWRWAsIGBCQVJFVURQYCwgYW5kIHRoZSBsaWtlLiBTbywgaXQncyBub3QgYSBkaXJlY3QgZGVwZW5kZW5jeSBpbiBhbGwgY2FzZXMsIGJ1dCBpdCdzICpwdWxsZWQgaW4qIGJ5IHRob3NlIGNvbmZpZ3VyYXRpb25zLiBPaywgbGV0IG1lIHJlLXZlcmlmeSB0aGF0IHRoZSBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmNgIG1vZHVsZSBkZXBlbmRzIG9uIGBORVRfVURQX1RVTk5FTGAuIEFoYSwgbm9wZSEgSXQganVzdCBzZXRzIGBkZXYtXHUwMDNldWRwX3R1bm5lbF9uaWNfaW5mb2AuIElmIGBORVRfVURQX1RVTk5FTGAgaXNuJ3QgZW5hYmxlZCwgdGhhdCBzdHJ1Y3R1cmUgaXMganVzdCBhIHBvaW50ZXIsIGFuZCBpdCdzIG5ldmVyIHVzZWQuIFJpZ2h0LCBiZWNhdXNlIHRoZSBjb2RlIGluIGB1ZHBfdHVubmVsX25pYy5jYCBpc24ndCBldmVuIGNvbXBpbGVkLiBTbyB0byBhY3R1YWxseSAqdXNlKiBgdWRwX3R1bm5lbF9uaWMuY2Agd2UgKm11c3QqIGhhdmUgYENPTkZJR19ORVRfVURQX1RVTk5FTD15YCAob3IgYG1gKS4gQW5kLCBhcyBJIHN1c3BlY3RlZCwgd2UgYWxzbyBuZWVkIGEgZHJpdmVyIHRoYXQga25vd3MgdG8gc2V0IGB1ZHBfdHVubmVsX25pY19pbmZvYC4gVGhhdCdzIHdoZXJlIGBDT05GSUdfTkVUREVWU0lNYCByZWFsbHkgc2hpbmVzLiBQZXJmZWN0LlxuXG5Ob3csIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbGwgcXVpY2tseSB2ZXJpZnkgdGhlIHN0YXR1cyBvZiBgQ09ORklHX05FVERFVlNJTWAgYW5kIGBDT05GSUdfVlhMQU5gLiBPa2F5LCBib3RoIG9mIHRoZW0gYXJlIHRyaXN0YXRlIGNvbmZpZ3VyYXRpb25zLiBJIHNob3VsZCBtYWtlIGEgbm90ZSB0byBpbmNsdWRlIGBORVRERVZTSU1gIGFuZCBgVlhMQU5gIGluIGBFbmFibGVDb25maWdzYC5cblxuRmluYWxseSwgSSBzaG91bGQgZm9jdXMgb24gdGhlIGtleSBmdW5jdGlvbnMgaGVyZS4gTGV0J3Mgc2VlLi4uSSdsbCB3YW50IHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG86XG5cbiogICBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2BcbiogICBgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcmBcbiogICBgdWRwX3R1bm5lbF9uaWNfcmVnaXN0ZXJgXG4qICAgYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jYFxuKiAgIGB1ZHBfdHVubmVsX25pY19mbHVzaGBcbiogICBgdWRwX3R1bm5lbF9uaWNfcmVwbGF5YFxuKiAgIGB1ZHBfdHVubmVsX25pY19wdXRgXG4qICAgYHVkcF90dW5uZWxfbmljX2FkZF9uZXdgXG4qICAgYHVkcF90dW5uZWxfbmljX3RyeV9leGlzdGluZ2BcbiogICBgX191ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY2BcblxuSSBzaG91bGQgc3RhcnQgYnkgZXhhbWluaW5nIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY193b3JrYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY5ODUsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMTc6Mzg6NDYuMzE4NDk3ODg3WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTQ3MzEyMzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmM9NzM1PXN0YXRpYyB2b2lkIHVkcF90dW5uZWxfbmljX3B1dChzdHJ1Y3QgdWRwX3R1bm5lbF9uaWMgKnV0bik7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03MzYtXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3Mzc6c3RhdGljIHZvaWQgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYy03Mzgte1xcbi0tXFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYz03NTc9dWRwX3R1bm5lbF9uaWNfYWxsb2MoY29uc3Qgc3RydWN0IHVkcF90dW5uZWxfbmljX2luZm8gKmluZm8sXFxuLS1cXG5uZXQvaXB2NC91ZHBfdHVubmVsX25pYy5jLTc2Ni1cXHR1dG4tXFx1MDAzZW5fdGFibGVzID0gbl90YWJsZXM7XFxubmV0L2lwdjQvdWRwX3R1bm5lbF9uaWMuYzo3Njc6XFx0SU5JVF9XT1JLKFxcdTAwMjZ1dG4tXFx1MDAzZXdvcmssIHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmspO1xcbm5ldC9pcHY0L3VkcF90dW5uZWxfbmljLmMtNzY4LVxcdG11dGV4X2luaXQoXFx1MDAyNnV0bi1cXHUwMDNlbG9jayk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM4OjQ2LjUxMzIzNjk2M1oiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDIxMzA4MTU2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFVEUCBUdW5uZWwgTklDIFN5bmNocm9uaXphdGlvbiBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBzY2FuIG9mIHRoZSBwYXRjaCByZXZlYWxzIGl0IHRvdWNoZXMgc2V2ZXJhbCBrZXkgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIFVEUCB0dW5uZWwgTklDIGltcGxlbWVudGF0aW9uOiBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AsIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY2AsIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYCwgYW5kIGB1ZHBfdHVubmVsX25pY19wdXRgLCBhbW9uZyBvdGhlcnMuIEknbSBmb2N1c2luZyBvbiB0aGVzZSBmb3Igbm93OiBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AsIGB1ZHBfdHVubmVsX25pY191bnJlZ2lzdGVyYCwgYHVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jYCwgYW5kIGB1ZHBfdHVubmVsX25pY19wdXRgLlxuXG5UaGUgcHJpbWFyeSBjb25jZXJuLCBhcyBJIHVuZGVyc3RhbmQgaXQsIHNlZW1zIHRvIGJlIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGJldHdlZW4gYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgIGFuZCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AuIFRvIHZlcmlmeSB0aGlzLCBJJ20gdHJhY2luZyB0aGUgY2FsbCBwYXRocy4gRmlyc3QsIEkgY29uZmlybWVkIHRoYXQgYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgICppcyogcmVhY2hhYmxlIOKAkyBpdCdzIHRyaWdnZXJlZCBkdXJpbmcgbmV0ZGV2aWNlIHVucmVnaXN0cmF0aW9uIHRocm91Z2ggYHVkcF90dW5uZWxfbmljX25ldGRldmljZV9ldmVudGAsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIE5leHQsIGB1ZHBfdHVubmVsX25pY19kZXZpY2Vfc3luY2AgaXMgY2FsbGVkIGZyb20gYF9fdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnRgIGFuZCBgX191ZHBfdHVubmVsX25pY19kZWxfcG9ydGAuIFRob3NlIGFyZSwgaW4gdHVybiwgY2FsbGVkIGJ5IGB1ZHBfdHVubmVsX25pY19hZGRfcG9ydGAgYW5kIGB1ZHBfdHVubmVsX25pY19kZWxfcG9ydGAsIHdoaWNoIGZpbmFsbHkgZ2V0IGNhbGxlZCBmcm9tIGB1ZHBfdHVubmVsX2FkZF9yeF9wb3J0YCBhbmQgYHVkcF90dW5uZWxfZHJvcF9yeF9wb3J0YC4gU28sIHdlJ3JlIHRhbGtpbmcgYWJvdXQgdGhlIGFkZGl0aW9uIGFuZCByZW1vdmFsIG9mIFVEUCB0dW5uZWwgcG9ydHMsIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRlY2hub2xvZ2llcyBsaWtlIFZYTEFOIG9yIEdFTkVWRS5cblxuTm93LCBsZXQncyBtYXAgdGhlIHR5cGljYWwgc2NlbmFyaW8sIHRvIGZpbmQgdGhlIHJhY2UgY29uZGl0aW9uLCB3aGljaCBzZWVtcyB0byBiZSB0aGUgY2F1c2UuIE15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGZsb3cgaXMgYXMgZm9sbG93czogd2Ugc3RhcnQgd2l0aCBhIG5ldGRldnNpbSBkZXZpY2UsIHdoaWNoLCBvZiBjb3Vyc2UsIGhhcyBhIGB1ZHBfdHVubmVsX25pY19pbmZvYCBhc3NvY2lhdGVkIHdpdGggaXQuIE5leHQsIHdlIGNyZWF0ZSBhIFZYTEFOIGRldmljZSAob3IgR0VORVZFKS4gVGhhdCBjcmVhdGlvbiBhZGRzIGEgVURQIHR1bm5lbCBwb3J0LiBUaGlzIGFkZGl0aW9uIGNhbGxzIGB1ZHBfdHVubmVsX2FkZF9yeF9wb3J0YCwgdHJpZ2dlcmluZyBgdWRwX3R1bm5lbF9uaWNfYWRkX3BvcnRgLCB3aGljaCB0aGVuIHF1ZXVlcyBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AuIFRoZW4sIGlmIHRoZSBuZXRkZXZzaW0gZGV2aWNlIGlzIHVucmVnaXN0ZXJlZCwgYHVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJgIGdldHMgY2FsbGVkLiBCb29tLCB0aGF0J3Mgd2hlcmUgdGhlIHJhY2UgaXMsIGJldHdlZW4gdGhlIHVucmVnaXN0cmF0aW9uIGFuZCB0aGUgd29yayBxdWV1ZS4gVGhpcyBwYXRjaCBsaWtlbHkgYWRkcmVzc2VzIHN5bmNocm9uaXphdGlvbiBpc3N1ZXMgYXJpc2luZyBmcm9tIHRoaXMgc2VxdWVuY2UuXG5cblRoaXMgaXMgaGlnaGx5IGZ1enphYmxlIGFuZCBmdW5jdGlvbmFsLCBnaXZlbiB0aGUgbmF0dXJlIG9mIGl0cyBkZXBlbmRlbmNpZXMuXG5cbkFsc28sIEkgbmVlZCB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbnMuIFRoZSBrZXkgY29uZmlndXJhdGlvbnMgaW52b2x2ZWQgYXJlIGBORVRERVZTSU1gLCBgVlhMQU5gLCBgR0VORVZFYCwgYW5kIGBORVRfVURQX1RVTk5FTGAgKHdoaWNoIGlzIHNlbGVjdGVkIGJ5IFZYTEFOKS4gTm93LCBiZWZvcmUgSSBtb3ZlIG9uLCBJIHdhbnQgdG8gY29uZmlybSBpZiBgTkVUX1VEUF9UVU5ORUxgIGNhbiBiZSBlbmFibGVkIGRpcmVjdGx5LiBMb29rcyBsaWtlIGl0IGlzIGEgdHJpc3RhdGUgY29uZmlnLCBidXQgdGhlcmUgaXNuJ3QgYSBkaXJlY3QgcHJvbXB0IGluIGVpdGhlciBgbmV0L2lwdjQvTWFrZWZpbGVgIG9yIGBuZXQvaXB2NC9LY29uZmlnYC4gTGV0IG1lIHNlYXJjaCBgbmV0L2lwdjQvS2NvbmZpZ2AgZm9yIHRoZSBjb25maWcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NTgxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Njg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM4OjU2LjcyNjMyMjM3OVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUyMDkyNTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfVURQX1RVTk5FTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9MzA0PWNvbmZpZyBORVRfSVBWVElcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzE1LVxcbm5ldC9pcHY0L0tjb25maWc6MzE2OmNvbmZpZyBORVRfVURQX1RVTk5FTFxcbm5ldC9pcHY0L0tjb25maWctMzE3LVxcdHRyaXN0YXRlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM4OjU2Ljk3ODQyMDkzM1oiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzE4ODQzMTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVURQIFR1bm5lbCBOSUMgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoaXMgY29uZmlndXJhdGlvbiBpcyBoaWRkZW4sIHdoaWNoIG1lYW5zIGFub3RoZXIgY29tcG9uZW50IGlzIHJlc3BvbnNpYmxlIGZvciBzZWxlY3RpbmcgaXQuIE15IGluaXRpYWwgdGhvdWdodHMgYXJlIGxlYW5pbmcgdG93YXJkcyBgVlhMQU5gIG9yIGBHRU5FVkVgIGFzIGxpa2VseSBjYW5kaWRhdGVzLiBUaG9zZSBhcmUgdGhlIHVzdWFsIHN1c3BlY3RzLlxuXG5Ob3csIGxldCdzIGRpdmUgaW50byB0aGUgY29kZSBjaGFuZ2VzLiBGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgdWRwX3R1bm5lbF9uaWNfcHV0YCBpcyBpbmRlZWQgYSBuZXcgZnVuY3Rpb24uIFllcCwgdGhlIHBhdGNoIGluY2x1ZGVzIGl0LiBHb29kLlxuXG5OZXh0LCBJJ2xsIGNvbmZpcm0gdGhhdCBgdWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlcmAgaGFzIGJlZW4gbW9kaWZpZWQuIEFscmlnaHQsIGl0J3MgYmVlbiB1cGRhdGVkIHRvIHVzZSB0aGUgbmV3IGB1ZHBfdHVubmVsX25pY19wdXRgLiBUaGF0IG1ha2VzIHNlbnNlLlxuXG5OZXh0LCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya2AuIExvb2tzIGxpa2UgdGhhdCBoYXMgYmVlbiB1cGRhdGVkIHRvIHVzZSBgdWRwX3R1bm5lbF9uaWNfcHV0YCBhcyB3ZWxsLlxuXG5GaW5hbGx5LCBgdWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNgLiBZZXMsIHRoYXQgZnVuY3Rpb24gaGFzIGJlZW4gdXBkYXRlZCB0byB1c2UgYHJlZmNvdW50X2luY2AuXG5cbkFscmlnaHQsIEkgaGF2ZSB0aGUgcmVzdWx0cyBJIG5lZWQgbm93LiBMZXQncyBzZXQgdGhvc2UgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAwNzAsIk91dHB1dFRva2VucyI6MTc0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDE3OjM5OjAyLjY5NzI2NzdaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODM5NTY0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUREVWU0lNXCIsXG4gICAgXCJWWExBTlwiLFxuICAgIFwiR0VORVZFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNfd29ya1wiLFxuICAgIFwidWRwX3R1bm5lbF9uaWNfdW5yZWdpc3RlclwiLFxuICAgIFwidWRwX3R1bm5lbF9uaWNfZGV2aWNlX3N5bmNcIixcbiAgICBcInVkcF90dW5uZWxfbmljX3B1dFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24vdXNlLWFmdGVyLWZyZWUgaW4gdGhlIFVEUCB0dW5uZWwgTklDIG9mZmxvYWQgaW5mcmFzdHJ1Y3R1cmUgYnkgcmVwbGFjaW5nIGEgc2ltcGxlIHBlbmRpbmcgZmxhZyB3aXRoIGEgcHJvcGVyIHJlZmVyZW5jZSBjb3VudCAocmVmY291bnRfdCkgZm9yIHRoZSB3b3JrcXVldWUuIFRoaXMgaXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBjcmVhdGluZy9kZXN0cm95aW5nIFVEUCB0dW5uZWxzIChsaWtlIFZYTEFOIG9yIEdFTkVWRSkgb24gZGV2aWNlcyBzdXBwb3J0aW5nIFVEUCB0dW5uZWwgb2ZmbG9hZCAobGlrZSBuZXRkZXZzaW0pLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVERFVlNJTVwiLFxuICAgIFwiVlhMQU5cIixcbiAgICBcIkdFTkVWRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jX3dvcmtcIixcbiAgICBcInVkcF90dW5uZWxfbmljX3VucmVnaXN0ZXJcIixcbiAgICBcInVkcF90dW5uZWxfbmljX2RldmljZV9zeW5jXCIsXG4gICAgXCJ1ZHBfdHVubmVsX25pY19wdXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uL3VzZS1hZnRlci1mcmVlIGluIHRoZSBVRFAgdHVubmVsIE5JQyBvZmZsb2FkIGluZnJhc3RydWN0dXJlIGJ5IHJlcGxhY2luZyBhIHNpbXBsZSBwZW5kaW5nIGZsYWcgd2l0aCBhIHByb3BlciByZWZlcmVuY2UgY291bnQgKHJlZmNvdW50X3QpIGZvciB0aGUgd29ya3F1ZXVlLiBUaGlzIGlzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGNhbiBiZSB0cmlnZ2VyZWQgYnkgY3JlYXRpbmcvZGVzdHJveWluZyBVRFAgdHVubmVscyAobGlrZSBWWExBTiBvciBHRU5FVkUpIG9uIGRldmljZXMgc3VwcG9ydGluZyBVRFAgdHVubmVsIG9mZmxvYWQgKGxpa2UgbmV0ZGV2c2ltKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowhqlvz[1] Phase: Succeeded StartedAt: 2026-06-24 17:40:33 +0000 UTC FinishedAt: 2026-06-24 17:40:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhqlvz[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-24 17:40:33 +0000 UTC FinishedAt: 2026-06-24 17:40:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhqlvz[2] Phase: Succeeded StartedAt: 2026-06-24 17:40:33 +0000 UTC FinishedAt: 2026-06-24 21:36:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-24 17:40:33 +0000 UTC FinishedAt: 2026-06-24 21:36:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-24 17:40:33 +0000 UTC FinishedAt: 2026-06-24 17:40:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-24 17:40:33 +0000 UTC FinishedAt: 2026-06-24 17:40:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhqlvz/series-workflowhqlvz-convert-artifact-1702223208/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-24 17:40:43 +0000 UTC FinishedAt: 2026-06-24 18:03:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-24 17:40:43 +0000 UTC FinishedAt: 2026-06-24 18:03:03 +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:*8fafb8e3-bf5d-4b77-9a92-289b5302312f,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-workflowhqlvz/series-workflowhqlvz-convert-artifact-1702223208/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": "93384cd4-402a-4c08-980b-aea00b747c34", "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-workflowhqlvz/series-workflowhqlvz-build-action-346710750/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-24 17:40:43 +0000 UTC FinishedAt: 2026-06-24 18:02:53 +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:*8fafb8e3-bf5d-4b77-9a92-289b5302312f,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-workflowhqlvz/series-workflowhqlvz-convert-artifact-1702223208/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": "93384cd4-402a-4c08-980b-aea00b747c34", "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-workflowhqlvz/series-workflowhqlvz-build-action-346710750/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-24 18:03:03 +0000 UTC FinishedAt: 2026-06-24 18:03:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-24 18:03:03 +0000 UTC FinishedAt: 2026-06-24 18:03:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-24 18:03:03 +0000 UTC FinishedAt: 2026-06-24 18:03:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-24 18:03:03 +0000 UTC FinishedAt: 2026-06-24 18:03:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhqlvz/series-workflowhqlvz-convert-artifact-1495071567/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-24 18:03:13 +0000 UTC FinishedAt: 2026-06-24 18:05:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-24 18:03:13 +0000 UTC FinishedAt: 2026-06-24 18:04:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*93384cd4-402a-4c08-980b-aea00b747c34,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-workflowhqlvz/series-workflowhqlvz-build-action-346710750/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-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-24 18:05:02 +0000 UTC FinishedAt: 2026-06-24 18:05:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-24 18:05:02 +0000 UTC FinishedAt: 2026-06-24 18:05:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-24 18:05:02 +0000 UTC FinishedAt: 2026-06-24 18:30:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-24 18:05:02 +0000 UTC FinishedAt: 2026-06-24 18:30:52 +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:*8fafb8e3-bf5d-4b77-9a92-289b5302312f,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-workflowhqlvz/series-workflowhqlvz-convert-artifact-1495071567/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": "fc37d75f-a763-46cd-b27f-7245db4b65e2", "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-workflowhqlvz/series-workflowhqlvz-build-action-601391971/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-24 18:05:02 +0000 UTC FinishedAt: 2026-06-24 18:30:42 +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:*8fafb8e3-bf5d-4b77-9a92-289b5302312f,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-workflowhqlvz/series-workflowhqlvz-convert-artifact-1495071567/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": "fc37d75f-a763-46cd-b27f-7245db4b65e2", "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-workflowhqlvz/series-workflowhqlvz-build-action-601391971/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-24 18:30:52 +0000 UTC FinishedAt: 2026-06-24 18:30:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-24 18:30:52 +0000 UTC FinishedAt: 2026-06-24 18:30:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-24 18:30:52 +0000 UTC FinishedAt: 2026-06-24 18:32:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-24 18:30:52 +0000 UTC FinishedAt: 2026-06-24 18:32:36 +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:*fc37d75f-a763-46cd-b27f-7245db4b65e2,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-workflowhqlvz/series-workflowhqlvz-build-action-601391971/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-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-24 18:32:46 +0000 UTC FinishedAt: 2026-06-24 21:36:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-24 18:32:46 +0000 UTC FinishedAt: 2026-06-24 21:36:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*93384cd4-402a-4c08-980b-aea00b747c34,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fc37d75f-a763-46cd-b27f-7245db4b65e2,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-workflowhqlvz/series-workflowhqlvz-build-action-346710750/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-workflowhqlvz/series-workflowhqlvz-build-action-601391971/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-24 18:32:46 +0000 UTC FinishedAt: 2026-06-24 18:32:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-24 18:32:46 +0000 UTC FinishedAt: 2026-06-24 18:32:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhqlvz/series-workflowhqlvz-convert-artifact-712963080/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-24 18:32:46 +0000 UTC FinishedAt: 2026-06-24 18:32:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-24 18:32:46 +0000 UTC FinishedAt: 2026-06-24 18:32:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-24 18:32:46 +0000 UTC FinishedAt: 2026-06-24 18:32:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-24 18:32:57 +0000 UTC FinishedAt: 2026-06-24 21:36:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhqlvz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["udp_tunnel_nic_device_sync_work","udp_tunnel_nic_unregister","udp_tunnel_nic_device_sync","udp_tunnel_nic_put"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","VXLAN","GENEVE"],"series_id":"f5372b8f-87ca-4855-921e-7d9db301b3c4","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-24 18:32:57 +0000 UTC FinishedAt: 2026-06-24 21:36:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*93384cd4-402a-4c08-980b-aea00b747c34,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fc37d75f-a763-46cd-b27f-7245db4b65e2,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-workflowhqlvz/series-workflowhqlvz-build-action-346710750/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-workflowhqlvz/series-workflowhqlvz-build-action-601391971/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-workflowhqlvz/series-workflowhqlvz-convert-artifact-712963080/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,}