Name: series-workflow5488v Phase: Succeeded StartedAt: 2026-06-19 20:37:39 +0000 UTC FinishedAt: 2026-06-20 00:40:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5488v[0] Phase: Succeeded StartedAt: 2026-06-19 20:37:39 +0000 UTC FinishedAt: 2026-06-19 20:49:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5488v[0].run-triage Phase: Succeeded StartedAt: 2026-06-19 20:37:39 +0000 UTC FinishedAt: 2026-06-19 20:49:21 +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": "96e7f9122aae0ed000ee321f324b812a447906d9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RDMA_RXE", "NVME_RDMA", "NVME_TARGET_RDMA", "SUNRPC_XPRT_RDMA", "CIFS_SMB_DIRECT", "SMB_SERVER_SMBDIRECT", "INFINIBAND_SRP", "INFINIBAND_SRPT", "INFINIBAND_ISER", "INFINIBAND_ISERT", "INFINIBAND_RTRS_CLIENT", "INFINIBAND_RTRS_SERVER", "RDS_RDMA", "INFINIBAND_IPOIB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "96e7f9122aae0ed000ee321f324b812a447906d9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RDMA_RXE", "NVME_RDMA", "NVME_TARGET_RDMA", "SUNRPC_XPRT_RDMA", "CIFS_SMB_DIRECT", "SMB_SERVER_SMBDIRECT", "INFINIBAND_SRP", "INFINIBAND_SRPT", "INFINIBAND_ISER", "INFINIBAND_ISERT", "INFINIBAND_RTRS_CLIENT", "INFINIBAND_RTRS_SERVER", "RDS_RDMA", "INFINIBAND_IPOIB" ], "series_id": "57d6a629-de1f-458c-a52b-c75a84ca9738" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nvme_rdma_find_get_device", "nvmet_rdma_find_get_device", "frwr_query_device", "rxe_qp_chk_cap", "rxe_srq_chk_init", "smbdirect_connection_create_qp", "rds_ib_cm_fill_conn_param", "svc_rdma_accept", "rpcrdma_ep_create" ], "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+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JETUFfUlhFJiMzNDssCiAgICAmIzM0O05WTUVfUkRNQSYjMzQ7LAogICAgJiMzNDtOVk1FX1RBUkdFVF9SRE1BJiMzNDssCiAgICAmIzM0O1NVTlJQQ19YUFJUX1JETUEmIzM0OywKICAgICYjMzQ7Q0lGU19TTUJfRElSRUNUJiMzNDssCiAgICAmIzM0O1NNQl9TRVJWRVJfU01CRElSRUNUJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfU1JQJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfU1JQVCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX0lTRVImIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9JU0VSVCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX1JUUlNfQ0xJRU5UJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfUlRSU19TRVJWRVImIzM0OywKICAgICYjMzQ7UkRTX1JETUEmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9JUE9JQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O252bWVfcmRtYV9maW5kX2dldF9kZXZpY2UmIzM0OywKICAgICYjMzQ7bnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2UmIzM0OywKICAgICYjMzQ7ZnJ3cl9xdWVyeV9kZXZpY2UmIzM0OywKICAgICYjMzQ7cnhlX3FwX2Noa19jYXAmIzM0OywKICAgICYjMzQ7cnhlX3NycV9jaGtfaW5pdCYjMzQ7LAogICAgJiMzNDtzbWJkaXJlY3RfY29ubmVjdGlvbl9jcmVhdGVfcXAmIzM0OywKICAgICYjMzQ7cmRzX2liX2NtX2ZpbGxfY29ubl9wYXJhbSYjMzQ7LAogICAgJiMzNDtzdmNfcmRtYV9hY2NlcHQmIzM0OywKICAgICYjMzQ7cnBjcmRtYV9lcF9jcmVhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZXMgb2YgdmFyaW91cyBSRE1BIGRldmljZSBhdHRyaWJ1dGVzIGZyb20gYGludGAgdG8gYHUzMmAgYW5kIHVwZGF0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgYG1pbigpYCBjYWxscyBhbmQgZm9ybWF0IHN0cmluZ3MuIEl0IGFsc28gZml4ZXMgc29tZSBwb3RlbnRpYWwgdW5kZXJmbG93cyBpbiBjb25uZWN0aW9uIHNldHVwIGZ1bmN0aW9ucy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgUkRNQSBsb2dpYyBhbmQgdmFyaW91cyBSRE1BIFVMUHMgKFVwcGVyIExheWVyIFByb3RvY29scykgd2hpY2ggY2FuIGJlIHRlc3RlZCB1c2luZyB0aGUgc29mdHdhcmUgUkRNQSBkcml2ZXIgKFJYRSkuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyBpbnRlZ2VyIG92ZXJmbG93L3VuZGVyZmxvdyBidWdzIHdlcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAyMDo0NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDMwMjUzOTBiMDkzNTllMTkwNGQyMzlhMWIyNzQxNjE0NDg0YmU3MjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1biAxOSAyMDo0NjoyMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvY29yZS9jcS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvY3EuY1xuaW5kZXggM2Q3YjZjZGRkMTMxYzQuLmVlOTgxODhlNTdmYjVmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvY3EuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvY3EuY1xuQEAgLTM5Myw4ICYjNDM7MzkzLDcgQEAgc3RhdGljIGludCBpYl9hbGxvY19jcXMoc3RydWN0IGliX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgbnJfY3FlcyxcbiBcdCAqIGEgcmVhc29uYWJsZSBiYXRjaCBzaXplIHNvIHRoYXQgd2UgY2FuIHNoYXJlIENRcyBiZXR3ZWVuXG4gXHQgKiBtdWx0aXBsZSB1c2VycyBpbnN0ZWFkIG9mIGFsbG9jYXRpbmcgYSBsYXJnZXIgbnVtYmVyIG9mIENRcy5cbiBcdCAqL1xuLVx0bnJfY3FlcyA9IG1pbl90KHVuc2lnbmVkIGludCwgZGV2LVx1MDAzZWF0dHJzLm1heF9jcWUsXG4tXHRcdFx0bWF4KG5yX2NxZXMsIElCX01BWF9TSEFSRURfQ1FfU1opKTtcbiYjNDM7XHRucl9jcWVzID0gbWluKGRldi1cdTAwM2VhdHRycy5tYXhfY3FlLCBtYXgobnJfY3FlcywgSUJfTUFYX1NIQVJFRF9DUV9TWikpO1xuIFx0bnJfY3FzID0gbWluX3QodW5zaWduZWQgaW50LCBkZXYtXHUwMDNlbnVtX2NvbXBfdmVjdG9ycywgbnVtX29ubGluZV9jcHVzKCkpO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfY3FzOyBpJiM0MzsmIzQzOykge1xuIFx0XHRjcSA9IGliX2FsbG9jX2NxKGRldiwgTlVMTCwgbnJfY3FlcywgaSwgcG9sbF9jdHgpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xZWRyL3ZlcmJzLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWVkci92ZXJicy5jXG5pbmRleCA2NzlhYTZmM2E2M2JjNS4uYTg1YWQwMTcxMTM0OGUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWVkci92ZXJicy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWVkci92ZXJicy5jXG5AQCAtMTUxLDcgJiM0MzsxNTEsNyBAQCBpbnQgcWVkcl9xdWVyeV9kZXZpY2Uoc3RydWN0IGliX2RldmljZSAqaWJkZXYsXG4gXHRhdHRyLVx1MDAzZW1heF9xcF9pbml0X3JkX2F0b20gPVxuIFx0ICAgIDEgXHUwMDNjXHUwMDNjIChmbHMocWF0dHItXHUwMDNlbWF4X3FwX3JlcV9yZF9hdG9taWNfcmVzYykgLSAxKTtcbiBcdGF0dHItXHUwMDNlbWF4X3FwX3JkX2F0b20gPVxuLVx0ICAgIG1pbigxIFx1MDAzY1x1MDAzYyAoZmxzKHFhdHRyLVx1MDAzZW1heF9xcF9yZXNwX3JkX2F0b21pY19yZXNjKSAtIDEpLFxuJiM0MztcdCAgICBtaW4oMVUgXHUwMDNjXHUwMDNjIChmbHMocWF0dHItXHUwMDNlbWF4X3FwX3Jlc3BfcmRfYXRvbWljX3Jlc2MpIC0gMSksXG4gXHRcdGF0dHItXHUwMDNlbWF4X3FwX2luaXRfcmRfYXRvbSk7XG4gXG4gXHRhdHRyLVx1MDAzZW1heF9zcnEgPSBxYXR0ci1cdTAwM2VtYXhfc3JxO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3FwLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jXG5pbmRleCBmM2RmZjFhZWE5NmFmYy4uN2EwNTI5YTE3OTkyYzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jXG5AQCAtNjcsMjcgJiM0Mzs2NywyNyBAQCBzdGF0aWMgaW50IHJ4ZV9xcF9jaGtfY2FwKHN0cnVjdCByeGVfZGV2ICpyeGUsIHN0cnVjdCBpYl9xcF9jYXAgKmNhcCxcbiBcdFx0XHQgIGludCBoYXNfc3JxKVxuIHtcbiBcdGlmIChjYXAtXHUwMDNlbWF4X3NlbmRfd3IgXHUwMDNlIHJ4ZS1cdTAwM2VhdHRyLm1heF9xcF93cikge1xuLVx0XHRyeGVfZGJnX2RldihyeGUsIFwmIzM0O2ludmFsaWQgc2VuZCB3ciA9ICV1IFx1MDAzZSAlZFxcblwmIzM0Oyxcbi1cdFx0XHQgY2FwLVx1MDAzZW1heF9zZW5kX3dyLCByeGUtXHUwMDNlYXR0ci5tYXhfcXBfd3IpO1xuJiM0MztcdFx0cnhlX2RiZ19kZXYocnhlLCBcJiMzNDtpbnZhbGlkIHNlbmQgd3IgPSAldSBcdTAwM2UgJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCAgICBjYXAtXHUwMDNlbWF4X3NlbmRfd3IsIHJ4ZS1cdTAwM2VhdHRyLm1heF9xcF93cik7XG4gXHRcdGdvdG8gZXJyMTtcbiBcdH1cbiBcbiBcdGlmIChjYXAtXHUwMDNlbWF4X3NlbmRfc2dlIFx1MDAzZSByeGUtXHUwMDNlYXR0ci5tYXhfc2VuZF9zZ2UpIHtcbi1cdFx0cnhlX2RiZ19kZXYocnhlLCBcJiMzNDtpbnZhbGlkIHNlbmQgc2dlID0gJXUgXHUwMDNlICVkXFxuXCYjMzQ7LFxuLVx0XHRcdCBjYXAtXHUwMDNlbWF4X3NlbmRfc2dlLCByeGUtXHUwMDNlYXR0ci5tYXhfc2VuZF9zZ2UpO1xuJiM0MztcdFx0cnhlX2RiZ19kZXYocnhlLCBcJiMzNDtpbnZhbGlkIHNlbmQgc2dlID0gJXUgXHUwMDNlICV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgY2FwLVx1MDAzZW1heF9zZW5kX3NnZSwgcnhlLVx1MDAzZWF0dHIubWF4X3NlbmRfc2dlKTtcbiBcdFx0Z290byBlcnIxO1xuIFx0fVxuIFxuIFx0aWYgKCFoYXNfc3JxKSB7XG4gXHRcdGlmIChjYXAtXHUwMDNlbWF4X3JlY3Zfd3IgXHUwMDNlIHJ4ZS1cdTAwM2VhdHRyLm1heF9xcF93cikge1xuLVx0XHRcdHJ4ZV9kYmdfZGV2KHJ4ZSwgXCYjMzQ7aW52YWxpZCByZWN2IHdyID0gJXUgXHUwMDNlICVkXFxuXCYjMzQ7LFxuLVx0XHRcdFx0IGNhcC1cdTAwM2VtYXhfcmVjdl93ciwgcnhlLVx1MDAzZWF0dHIubWF4X3FwX3dyKTtcbiYjNDM7XHRcdFx0cnhlX2RiZ19kZXYocnhlLCBcJiMzNDtpbnZhbGlkIHJlY3Ygd3IgPSAldSBcdTAwM2UgJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0ICAgIGNhcC1cdTAwM2VtYXhfcmVjdl93ciwgcnhlLVx1MDAzZWF0dHIubWF4X3FwX3dyKTtcbiBcdFx0XHRnb3RvIGVycjE7XG4gXHRcdH1cbiBcbiBcdFx0aWYgKGNhcC1cdTAwM2VtYXhfcmVjdl9zZ2UgXHUwMDNlIHJ4ZS1cdTAwM2VhdHRyLm1heF9yZWN2X3NnZSkge1xuLVx0XHRcdHJ4ZV9kYmdfZGV2KHJ4ZSwgXCYjMzQ7aW52YWxpZCByZWN2IHNnZSA9ICV1IFx1MDAzZSAlZFxcblwmIzM0Oyxcbi1cdFx0XHRcdCBjYXAtXHUwMDNlbWF4X3JlY3Zfc2dlLCByeGUtXHUwMDNlYXR0ci5tYXhfcmVjdl9zZ2UpO1xuJiM0MztcdFx0XHRyeGVfZGJnX2RldihyeGUsIFwmIzM0O2ludmFsaWQgcmVjdiBzZ2UgPSAldSBcdTAwM2UgJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0ICAgIGNhcC1cdTAwM2VtYXhfcmVjdl9zZ2UsIHJ4ZS1cdTAwM2VhdHRyLm1heF9yZWN2X3NnZSk7XG4gXHRcdFx0Z290byBlcnIxO1xuIFx0XHR9XG4gXHR9XG5AQCAtNTM3LDkgJiM0Mzs1MzcsOSBAQCBpbnQgcnhlX3FwX2Noa19hdHRyKHN0cnVjdCByeGVfZGV2ICpyeGUsIHN0cnVjdCByeGVfcXAgKnFwLFxuIFxuIFx0aWYgKG1hc2sgXHUwMDI2IElCX1FQX01BWF9RUF9SRF9BVE9NSUMpIHtcbiBcdFx0aWYgKGF0dHItXHUwMDNlbWF4X3JkX2F0b21pYyBcdTAwM2UgcnhlLVx1MDAzZWF0dHIubWF4X3FwX3JkX2F0b20pIHtcbi1cdFx0XHRyeGVfZGJnX3FwKHFwLCBcJiMzNDtpbnZhbGlkIG1heF9yZF9hdG9taWMgJWQgXHUwMDNlICVkXFxuXCYjMzQ7LFxuLVx0XHRcdFx0IGF0dHItXHUwMDNlbWF4X3JkX2F0b21pYyxcbi1cdFx0XHRcdCByeGUtXHUwMDNlYXR0ci5tYXhfcXBfcmRfYXRvbSk7XG4mIzQzO1x0XHRcdHJ4ZV9kYmdfcXAocXAsIFwmIzM0O2ludmFsaWQgbWF4X3JkX2F0b21pYyAldSBcdTAwM2UgJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0ICAgYXR0ci1cdTAwM2VtYXhfcmRfYXRvbWljLFxuJiM0MztcdFx0XHRcdCAgIHJ4ZS1cdTAwM2VhdHRyLm1heF9xcF9yZF9hdG9tKTtcbiBcdFx0XHRnb3RvIGVycjE7XG4gXHRcdH1cbiBcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9zcnEuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3NycS5jXG5pbmRleCBjOWE3Y2QzODk1M2QzMS4uNzQ5MDRhNmZkZjJiMjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9zcnEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfc3JxLmNcbkBAIC0xMyw4ICYjNDM7MTMsOCBAQCBpbnQgcnhlX3NycV9jaGtfaW5pdChzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgaWJfc3JxX2luaXRfYXR0ciAqaW5pdClcbiBcdHN0cnVjdCBpYl9zcnFfYXR0ciAqYXR0ciA9IFx1MDAyNmluaXQtXHUwMDNlYXR0cjtcbiBcbiBcdGlmIChhdHRyLVx1MDAzZW1heF93ciBcdTAwM2UgcnhlLVx1MDAzZWF0dHIubWF4X3NycV93cikge1xuLVx0XHRyeGVfZGJnX2RldihyeGUsIFwmIzM0O21heF93ciglZCkgXHUwMDNlIG1heF9zcnFfd3IoJWQpXFxuXCYjMzQ7LFxuLVx0XHRcdGF0dHItXHUwMDNlbWF4X3dyLCByeGUtXHUwMDNlYXR0ci5tYXhfc3JxX3dyKTtcbiYjNDM7XHRcdHJ4ZV9kYmdfZGV2KHJ4ZSwgXCYjMzQ7bWF4X3dyKCV1KSBcdTAwM2UgbWF4X3NycV93cigldSlcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCAgICBhdHRyLVx1MDAzZW1heF93ciwgcnhlLVx1MDAzZWF0dHIubWF4X3NycV93cik7XG4gXHRcdGdvdG8gZXJyMTtcbiBcdH1cbiBcbkBAIC0yNyw4ICYjNDM7MjcsOCBAQCBpbnQgcnhlX3NycV9jaGtfaW5pdChzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgaWJfc3JxX2luaXRfYXR0ciAqaW5pdClcbiBcdFx0YXR0ci1cdTAwM2VtYXhfd3IgPSBSWEVfTUlOX1NSUV9XUjtcbiBcbiBcdGlmIChhdHRyLVx1MDAzZW1heF9zZ2UgXHUwMDNlIHJ4ZS1cdTAwM2VhdHRyLm1heF9zcnFfc2dlKSB7XG4tXHRcdHJ4ZV9kYmdfZGV2KHJ4ZSwgXCYjMzQ7bWF4X3NnZSglZCkgXHUwMDNlIG1heF9zcnFfc2dlKCVkKVxcblwmIzM0Oyxcbi1cdFx0XHRhdHRyLVx1MDAzZW1heF9zZ2UsIHJ4ZS1cdTAwM2VhdHRyLm1heF9zcnFfc2dlKTtcbiYjNDM7XHRcdHJ4ZV9kYmdfZGV2KHJ4ZSwgXCYjMzQ7bWF4X3NnZSgldSkgXHUwMDNlIG1heF9zcnFfc2dlKCV1KVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgIGF0dHItXHUwMDNlbWF4X3NnZSwgcnhlLVx1MDAzZWF0dHIubWF4X3NycV9zZ2UpO1xuIFx0XHRnb3RvIGVycjE7XG4gXHR9XG4gXG5AQCAtMTA3LDggJiM0MzsxMDcsOCBAQCBpbnQgcnhlX3NycV9jaGtfYXR0cihzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgcnhlX3NycSAqc3JxLFxuIFxuIFx0aWYgKG1hc2sgXHUwMDI2IElCX1NSUV9NQVhfV1IpIHtcbiBcdFx0aWYgKGF0dHItXHUwMDNlbWF4X3dyIFx1MDAzZSByeGUtXHUwMDNlYXR0ci5tYXhfc3JxX3dyKSB7XG4tXHRcdFx0cnhlX2RiZ19zcnEoc3JxLCBcJiMzNDttYXhfd3IoJWQpIFx1MDAzZSBtYXhfc3JxX3dyKCVkKVxcblwmIzM0Oyxcbi1cdFx0XHRcdGF0dHItXHUwMDNlbWF4X3dyLCByeGUtXHUwMDNlYXR0ci5tYXhfc3JxX3dyKTtcbiYjNDM7XHRcdFx0cnhlX2RiZ19zcnEoc3JxLCBcJiMzNDttYXhfd3IoJXUpIFx1MDAzZSBtYXhfc3JxX3dyKCV1KVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgICAgYXR0ci1cdTAwM2VtYXhfd3IsIHJ4ZS1cdTAwM2VhdHRyLm1heF9zcnFfd3IpO1xuIFx0XHRcdGdvdG8gZXJyMTtcbiBcdFx0fVxuIFxuQEAgLTEyOSw4ICYjNDM7MTI5LDggQEAgaW50IHJ4ZV9zcnFfY2hrX2F0dHIoc3RydWN0IHJ4ZV9kZXYgKnJ4ZSwgc3RydWN0IHJ4ZV9zcnEgKnNycSxcbiBcbiBcdGlmIChtYXNrIFx1MDAyNiBJQl9TUlFfTElNSVQpIHtcbiBcdFx0aWYgKGF0dHItXHUwMDNlc3JxX2xpbWl0IFx1MDAzZSByeGUtXHUwMDNlYXR0ci5tYXhfc3JxX3dyKSB7XG4tXHRcdFx0cnhlX2RiZ19zcnEoc3JxLCBcJiMzNDtzcnFfbGltaXQoJWQpIFx1MDAzZSBtYXhfc3JxX3dyKCVkKVxcblwmIzM0Oyxcbi1cdFx0XHRcdGF0dHItXHUwMDNlc3JxX2xpbWl0LCByeGUtXHUwMDNlYXR0ci5tYXhfc3JxX3dyKTtcbiYjNDM7XHRcdFx0cnhlX2RiZ19zcnEoc3JxLCBcJiMzNDtzcnFfbGltaXQoJXUpIFx1MDAzZSBtYXhfc3JxX3dyKCV1KVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgICAgYXR0ci1cdTAwM2VzcnFfbGltaXQsIHJ4ZS1cdTAwM2VhdHRyLm1heF9zcnFfd3IpO1xuIFx0XHRcdGdvdG8gZXJyMTtcbiBcdFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfY20uYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfY20uY1xuaW5kZXggNTdmZWM4OGExNjI5MGEuLmVkMDU5Mjg5ODM4NGQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYl9jbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX2NtLmNcbkBAIC0xMDcxLDggJiM0MzsxMDcxLDcgQEAgc3RhdGljIHN0cnVjdCBpYl9xcCAqaXBvaWJfY21fY3JlYXRlX3R4X3FwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpcG9pYl9cbiBcdHN0cnVjdCBpYl9xcCAqdHhfcXA7XG4gXG4gXHRpZiAoZGV2LVx1MDAzZWZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX1NHKVxuLVx0XHRhdHRyLmNhcC5tYXhfc2VuZF9zZ2UgPSBtaW5fdCh1MzIsIHByaXYtXHUwMDNlY2EtXHUwMDNlYXR0cnMubWF4X3NlbmRfc2dlLFxuLVx0XHRcdFx0XHQgICAgICBNQVhfU0tCX0ZSQUdTICYjNDM7IDEpO1xuJiM0MztcdFx0YXR0ci5jYXAubWF4X3NlbmRfc2dlID0gbWluKHByaXYtXHUwMDNlY2EtXHUwMDNlYXR0cnMubWF4X3NlbmRfc2dlLCBNQVhfU0tCX0ZSQUdTICYjNDM7IDEpO1xuIFxuIFx0dHhfcXAgPSBpYl9jcmVhdGVfcXAocHJpdi1cdTAwM2VwZCwgXHUwMDI2YXR0cik7XG4gXHR0eC1cdTAwM2VtYXhfc2VuZF9zZ2UgPSBhdHRyLmNhcC5tYXhfc2VuZF9zZ2U7XG5AQCAtMTU4Miw3ICYjNDM7MTU4MSw4IEBAIHN0YXRpYyB2b2lkIGlwb2liX2NtX2NyZWF0ZV9zcnEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG1heF9zZ2UpXG4gaW50IGlwb2liX2NtX2Rldl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuIFx0c3RydWN0IGlwb2liX2Rldl9wcml2ICpwcml2ID0gaXBvaWJfcHJpdihkZXYpO1xuLVx0aW50IG1heF9zcnFfc2dlLCBpO1xuJiM0MztcdHUzMiBtYXhfc3JxX3NnZTtcbiYjNDM7XHRpbnQgaTtcbiBcdHU4IGFkZHI7XG4gXG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZwcml2LVx1MDAzZWNtLnBhc3NpdmVfaWRzKTtcbkBAIC0xNjAwLDkgJiM0MzsxNjAwLDkgQEAgaW50IGlwb2liX2NtX2Rldl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gXHRza2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNnByaXYtXHUwMDNlY20uc2tiX3F1ZXVlKTtcbiBcbi1cdGlwb2liX2RiZyhwcml2LCBcJiMzNDttYXhfc3JxX3NnZT0lZFxcblwmIzM0OywgcHJpdi1cdTAwM2VjYS1cdTAwM2VhdHRycy5tYXhfc3JxX3NnZSk7XG4mIzQzO1x0aXBvaWJfZGJnKHByaXYsIFwmIzM0O21heF9zcnFfc2dlPSV1XFxuXCYjMzQ7LCBwcml2LVx1MDAzZWNhLVx1MDAzZWF0dHJzLm1heF9zcnFfc2dlKTtcbiBcbi1cdG1heF9zcnFfc2dlID0gbWluX3QoaW50LCBJUE9JQl9DTV9SWF9TRywgcHJpdi1cdTAwM2VjYS1cdTAwM2VhdHRycy5tYXhfc3JxX3NnZSk7XG4mIzQzO1x0bWF4X3NycV9zZ2UgPSBtaW4ocHJpdi1cdTAwM2VjYS1cdTAwM2VhdHRycy5tYXhfc3JxX3NnZSwgSVBPSUJfQ01fUlhfU0cpO1xuIFx0aXBvaWJfY21fY3JlYXRlX3NycShkZXYsIG1heF9zcnFfc2dlKTtcbiBcdGlmIChpcG9pYl9jbV9oYXNfc3JxKGRldikpIHtcbiBcdFx0cHJpdi1cdTAwM2VjbS5tYXhfY21fbXR1ID0gbWF4X3NycV9zZ2UgKiBQQUdFX1NJWkUgLSAweDEwO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfdmVyYnMuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfdmVyYnMuY1xuaW5kZXggM2VkMWVhNTY2NjkwZGQuLjI0OTA2OTZhMWFhYmM4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYl92ZXJicy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX3ZlcmJzLmNcbkBAIC0xNDcsOCAmIzQzOzE0Nyw3IEBAIGludCBpcG9pYl90cmFuc3BvcnRfZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGliX2RldmljZSAqY2EpXG4gXHRcdC5jYXAgPSB7XG4gXHRcdFx0Lm1heF9zZW5kX3dyICA9IGlwb2liX3NlbmRxX3NpemUsXG4gXHRcdFx0Lm1heF9yZWN2X3dyICA9IGlwb2liX3JlY3ZxX3NpemUsXG4tXHRcdFx0Lm1heF9zZW5kX3NnZSA9IG1pbl90KHUzMiwgcHJpdi1cdTAwM2VjYS1cdTAwM2VhdHRycy5tYXhfc2VuZF9zZ2UsXG4tXHRcdFx0XHRcdCAgICAgIE1BWF9TS0JfRlJBR1MgJiM0MzsgMSksXG4mIzQzO1x0XHRcdC5tYXhfc2VuZF9zZ2UgPSBtaW4ocHJpdi1cdTAwM2VjYS1cdTAwM2VhdHRycy5tYXhfc2VuZF9zZ2UsIE1BWF9TS0JfRlJBR1MgJiM0MzsgMSksXG4gXHRcdFx0Lm1heF9yZWN2X3NnZSA9IElQT0lCX1VEX1JYX1NHXG4gXHRcdH0sXG4gXHRcdC5zcV9zaWdfdHlwZSA9IElCX1NJR05BTF9BTExfV1IsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL2lzZXJfdmVyYnMuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlci9pc2VyX3ZlcmJzLmNcbmluZGV4IGYwM2IzYmIzYzBjNGMxLi41NWZlNjhlNWI4Mzc1ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlci9pc2VyX3ZlcmJzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlci9pc2VyX3ZlcmJzLmNcbkBAIC0yNDQsOCAmIzQzOzI0NCw3IEBAIHN0YXRpYyBpbnQgaXNlcl9jcmVhdGVfaWJfY29ubl9yZXMoc3RydWN0IGliX2Nvbm4gKmliX2Nvbm4pXG4gXHRcdG1heF9zZW5kX3dyID0gSVNFUl9RUF9TSUdfTUFYX1JFUV9EVE9TICYjNDM7IDE7XG4gXHRlbHNlXG4gXHRcdG1heF9zZW5kX3dyID0gSVNFUl9RUF9NQVhfUkVRX0RUT1MgJiM0MzsgMTtcbi1cdG1heF9zZW5kX3dyID0gbWluX3QodW5zaWduZWQgaW50LCBtYXhfc2VuZF93cixcbi1cdFx0XHQgICAgKHVuc2lnbmVkIGludClpYl9kZXYtXHUwMDNlYXR0cnMubWF4X3FwX3dyKTtcbiYjNDM7XHRtYXhfc2VuZF93ciA9IG1pbihtYXhfc2VuZF93ciwgaWJfZGV2LVx1MDAzZWF0dHJzLm1heF9xcF93cik7XG4gXG4gXHRjcV9zaXplID0gbWF4X3NlbmRfd3IgJiM0MzsgSVNFUl9RUF9NQVhfUkVDVl9EVE9TO1xuIFx0aWJfY29ubi1cdTAwM2VjcSA9IGliX2NxX3Bvb2xfZ2V0KGliX2RldiwgY3Ffc2l6ZSwgLTEsIElCX1BPTExfU09GVElSUSk7XG5AQCAtNTg5LDcgJiM0Mzs1ODgsNyBAQCBzdGF0aWMgdm9pZCBpc2VyX3JvdXRlX2hhbmRsZXIoc3RydWN0IHJkbWFfY21faWQgKmNtYV9pZClcbiBcdFx0Z290byBmYWlsdXJlO1xuIFxuIFx0bWVtc2V0KFx1MDAyNmNvbm5fcGFyYW0sIDAsIHNpemVvZiBjb25uX3BhcmFtKTtcbi1cdGNvbm5fcGFyYW0ucmVzcG9uZGVyX3Jlc291cmNlcyA9IGliX2Rldi1cdTAwM2VhdHRycy5tYXhfcXBfcmRfYXRvbTtcbiYjNDM7XHRjb25uX3BhcmFtLnJlc3BvbmRlcl9yZXNvdXJjZXMgPSBtaW4oaWJfZGV2LVx1MDAzZWF0dHJzLm1heF9xcF9yZF9hdG9tLCBVOF9NQVgpO1xuIFx0Y29ubl9wYXJhbS5pbml0aWF0b3JfZGVwdGggPSAxO1xuIFx0Y29ubl9wYXJhbS5yZXRyeV9jb3VudCA9IDc7XG4gXHRjb25uX3BhcmFtLnJucl9yZXRyeV9jb3VudCA9IDY7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VydC9pYl9pc2VydC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VydC9pYl9pc2VydC5jXG5pbmRleCAxMDE1YTUxZjc1MGFmNC4uNDY5MTg0NWJmODE1ZjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXJ0L2liX2lzZXJ0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvaWJfaXNlcnQuY1xuQEAgLTIxNCw5ICYjNDM7MjE0LDkgQEAgaXNlcnRfY3JlYXRlX2RldmljZV9pYl9yZXMoc3RydWN0IGlzZXJ0X2RldmljZSAqZGV2aWNlKVxuIFx0c3RydWN0IGliX2RldmljZSAqaWJfZGV2ID0gZGV2aWNlLVx1MDAzZWliX2RldmljZTtcbiBcdGludCByZXQ7XG4gXG4tXHRpc2VydF9kYmcoXCYjMzQ7ZGV2YXR0ci1cdTAwM2VtYXhfc2VuZF9zZ2U6ICVkIGRldmF0dHItXHUwMDNlbWF4X3JlY3Zfc2dlICVkXFxuXCYjMzQ7LFxuJiM0MztcdGlzZXJ0X2RiZyhcJiMzNDtkZXZhdHRyLVx1MDAzZW1heF9zZW5kX3NnZTogJXUgZGV2YXR0ci1cdTAwM2VtYXhfcmVjdl9zZ2UgJXVcXG5cJiMzNDssXG4gXHRcdCAgaWJfZGV2LVx1MDAzZWF0dHJzLm1heF9zZW5kX3NnZSwgaWJfZGV2LVx1MDAzZWF0dHJzLm1heF9yZWN2X3NnZSk7XG4tXHRpc2VydF9kYmcoXCYjMzQ7ZGV2YXR0ci1cdTAwM2VtYXhfc2dlX3JkOiAlZFxcblwmIzM0OywgaWJfZGV2LVx1MDAzZWF0dHJzLm1heF9zZ2VfcmQpO1xuJiM0MztcdGlzZXJ0X2RiZyhcJiMzNDtkZXZhdHRyLVx1MDAzZW1heF9zZ2VfcmQ6ICV1XFxuXCYjMzQ7LCBpYl9kZXYtXHUwMDNlYXR0cnMubWF4X3NnZV9yZCk7XG4gXG4gXHRkZXZpY2UtXHUwMDNlcGQgPSBpYl9hbGxvY19wZChpYl9kZXYsIDApO1xuIFx0aWYgKElTX0VSUihkZXZpY2UtXHUwMDNlcGQpKSB7XG5AQCAtMzgxLDggJiM0MzszODEsNyBAQCBpc2VydF9zZXRfbmVnb19wYXJhbXMoc3RydWN0IGlzZXJ0X2Nvbm4gKmlzZXJ0X2Nvbm4sXG4gXHRzdHJ1Y3QgaWJfZGV2aWNlX2F0dHIgKmF0dHIgPSBcdTAwMjZpc2VydF9jb25uLVx1MDAzZWRldmljZS1cdTAwM2VpYl9kZXZpY2UtXHUwMDNlYXR0cnM7XG4gXG4gXHQvKiBTZXQgbWF4IGluZmxpZ2h0IFJETUEgUkVBRCByZXF1ZXN0cyAqL1xuLVx0aXNlcnRfY29ubi1cdTAwM2Vpbml0aWF0b3JfZGVwdGggPSBtaW5fdCh1OCwgcGFyYW0tXHUwMDNlaW5pdGlhdG9yX2RlcHRoLFxuLVx0XHRcdFx0YXR0ci1cdTAwM2VtYXhfcXBfaW5pdF9yZF9hdG9tKTtcbiYjNDM7XHRpc2VydF9jb25uLVx1MDAzZWluaXRpYXRvcl9kZXB0aCA9IG1pbihwYXJhbS1cdTAwM2Vpbml0aWF0b3JfZGVwdGgsIGF0dHItXHUwMDNlbWF4X3FwX2luaXRfcmRfYXRvbSk7XG4gXHRpc2VydF9kYmcoXCYjMzQ7VXNpbmcgaW5pdGlhdG9yX2RlcHRoOiAldVxcblwmIzM0OywgaXNlcnRfY29ubi1cdTAwM2Vpbml0aWF0b3JfZGVwdGgpO1xuIFxuIFx0aWYgKHBhcmFtLVx1MDAzZXByaXZhdGVfZGF0YSkge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9ydHJzLWNsdC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtY2x0LmNcbmluZGV4IGUzNTE1NTI3MzNkZjIzLi44MGIwODY5N2Y5NmI1OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9ydHJzLWNsdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvcnRycy1jbHQuY1xuQEAgLTE2ODEsOCAmIzQzOzE2ODEsNyBAQCBzdGF0aWMgaW50IGNyZWF0ZV9jb25fY3FfcXAoc3RydWN0IHJ0cnNfY2x0X2NvbiAqY29uKVxuIFx0XHQgKiAmIzQzOyAyIGZvciBkcmFpbiBhbmQgaGVhcnRiZWF0XG4gXHRcdCAqIGluIGNhc2UgcXAgZ2V0cyBpbnRvIGVycm9yIHN0YXRlLlxuIFx0XHQgKi9cbi1cdFx0bWF4X3NlbmRfd3IgPVxuLVx0XHRcdG1pbl90KGludCwgd3JfbGltaXQsIFNFUlZJQ0VfQ09OX1FVRVVFX0RFUFRIICogMiAmIzQzOyAyKTtcbiYjNDM7XHRcdG1heF9zZW5kX3dyID0gbWluKHdyX2xpbWl0LCBTRVJWSUNFX0NPTl9RVUVVRV9ERVBUSCAqIDIgJiM0MzsgMik7XG4gXHRcdG1heF9yZWN2X3dyID0gbWF4X3NlbmRfd3I7XG4gXHR9IGVsc2Uge1xuIFx0XHQvKlxuQEAgLTE2OTgsMTEgJiM0MzsxNjk3LDkgQEAgc3RhdGljIGludCBjcmVhdGVfY29uX2NxX3FwKHN0cnVjdCBydHJzX2NsdF9jb24gKmNvbilcbiBcdFx0d3JfbGltaXQgPSBjbHRfcGF0aC1cdTAwM2VzLmRldi1cdTAwM2VpYl9kZXYtXHUwMDNlYXR0cnMubWF4X3FwX3dyO1xuIFx0XHQvKiBTaGFyZWQgYmV0d2VlbiBjb25uZWN0aW9ucyAqL1xuIFx0XHRjbHRfcGF0aC1cdTAwM2VzLmRldl9yZWYmIzQzOyYjNDM7O1xuLVx0XHRtYXhfc2VuZF93ciA9IG1pbl90KGludCwgd3JfbGltaXQsXG4tXHRcdFx0ICAgICAgLyogUUQgKiAoUkVRICYjNDM7IFJTUCAmIzQzOyBGUiBSRUdTIG9yIElOVlMpICYjNDM7IGRyYWluICovXG4tXHRcdFx0ICAgICAgY2x0X3BhdGgtXHUwMDNlcXVldWVfZGVwdGggKiA0ICYjNDM7IDEpO1xuLVx0XHRtYXhfcmVjdl93ciA9IG1pbl90KGludCwgd3JfbGltaXQsXG4tXHRcdFx0ICAgICAgY2x0X3BhdGgtXHUwMDNlcXVldWVfZGVwdGggKiAzICYjNDM7IDEpO1xuJiM0MztcdFx0LyogUUQgKiAoUkVRICYjNDM7IFJTUCAmIzQzOyBGUiBSRUdTIG9yIElOVlMpICYjNDM7IGRyYWluICovXG4mIzQzO1x0XHRtYXhfc2VuZF93ciA9IG1pbih3cl9saW1pdCwgY2x0X3BhdGgtXHUwMDNlcXVldWVfZGVwdGggKiA0ICYjNDM7IDEpO1xuJiM0MztcdFx0bWF4X3JlY3Zfd3IgPSBtaW4od3JfbGltaXQsIGNsdF9wYXRoLVx1MDAzZXF1ZXVlX2RlcHRoICogMyAmIzQzOyAxKTtcbiBcdFx0bWF4X3NlbmRfc2dlID0gMjtcbiBcdH1cbiBcdGF0b21pY19zZXQoXHUwMDI2Y29uLVx1MDAzZWMuc3Ffd3JfYXZhaWwsIG1heF9zZW5kX3dyKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvcnRycy1zcnYuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9ydHJzLXNydi5jXG5pbmRleCA2NDgyYWQ4NTliZDEwOC4uZjVhNjg5MDIzNWJjYzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvcnRycy1zcnYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtc3J2LmNcbkBAIC0xNzMxLDIxICYjNDM7MTczMSwxNiBAQCBzdGF0aWMgaW50IGNyZWF0ZV9jb24oc3RydWN0IHJ0cnNfc3J2X3BhdGggKnNydl9wYXRoLFxuIFx0XHQgKiBBbGwgcmVjZWl2ZSBhbmQgYWxsIHNlbmQgKGVhY2ggcmVxdWlyaW5nIGludmFsaWRhdGUpXG4gXHRcdCAqICYjNDM7IDIgZm9yIGRyYWluIGFuZCBoZWFydGJlYXRcbiBcdFx0ICovXG4tXHRcdG1heF9zZW5kX3dyID0gbWluX3QoaW50LCB3cl9saW1pdCxcbi1cdFx0XHRcdCAgICBTRVJWSUNFX0NPTl9RVUVVRV9ERVBUSCAqIDIgJiM0MzsgMik7XG4mIzQzO1x0XHRtYXhfc2VuZF93ciA9IG1pbih3cl9saW1pdCwgU0VSVklDRV9DT05fUVVFVUVfREVQVEggKiAyICYjNDM7IDIpO1xuIFx0XHRtYXhfcmVjdl93ciA9IG1heF9zZW5kX3dyO1xuIFx0XHRzLVx1MDAzZXNpZ25hbF9pbnRlcnZhbCA9IG1pbl9ub3RfemVybyhzcnYtXHUwMDNlcXVldWVfZGVwdGgsXG4gXHRcdFx0XHRcdFx0ICAoc2l6ZV90KVNFUlZJQ0VfQ09OX1FVRVVFX0RFUFRIKTtcbiBcdH0gZWxzZSB7XG4gXHRcdC8qIHdoZW4gYWx3YXlzX2ludmxhaWRhdGUgZW5hbGJlZCwgd2UgbmVlZCBsaW52JiM0MztyaW52JiM0MzttciYjNDM7aW1tICovXG4gXHRcdGlmIChhbHdheXNfaW52YWxpZGF0ZSlcbi1cdFx0XHRtYXhfc2VuZF93ciA9XG4tXHRcdFx0XHRtaW5fdChpbnQsIHdyX2xpbWl0LFxuLVx0XHRcdFx0ICAgICAgc3J2LVx1MDAzZXF1ZXVlX2RlcHRoICogKDEgJiM0MzsgNCkgJiM0MzsgMSk7XG4mIzQzO1x0XHRcdG1heF9zZW5kX3dyID0gbWluKHdyX2xpbWl0LCBzcnYtXHUwMDNlcXVldWVfZGVwdGggKiAoMSAmIzQzOyA0KSAmIzQzOyAxKTtcbiBcdFx0ZWxzZVxuLVx0XHRcdG1heF9zZW5kX3dyID1cbi1cdFx0XHRcdG1pbl90KGludCwgd3JfbGltaXQsXG4tXHRcdFx0XHQgICAgICBzcnYtXHUwMDNlcXVldWVfZGVwdGggKiAoMSAmIzQzOyAyKSAmIzQzOyAxKTtcbiYjNDM7XHRcdFx0bWF4X3NlbmRfd3IgPSBtaW4od3JfbGltaXQsIHNydi1cdTAwM2VxdWV1ZV9kZXB0aCAqICgxICYjNDM7IDIpICYjNDM7IDEpO1xuIFxuIFx0XHRtYXhfcmVjdl93ciA9IHNydi1cdTAwM2VxdWV1ZV9kZXB0aCAmIzQzOyAxO1xuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL2liX3NycC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnAvaWJfc3JwLmNcbmluZGV4IGFjYmQ3ODdkZTI2NWI1Li4wY2FlYmJjMjgxMGZmMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL2liX3NycC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycC9pYl9zcnAuY1xuQEAgLTU1Nyw3ICYjNDM7NTU3LDcgQEAgc3RhdGljIGludCBzcnBfY3JlYXRlX2NoX2liKHN0cnVjdCBzcnBfcmRtYV9jaCAqY2gpXG4gXHRpbml0X2F0dHItXHUwMDNlY2FwLm1heF9zZW5kX3dyICAgICA9IG0gKiB0YXJnZXQtXHUwMDNlcXVldWVfc2l6ZTtcbiBcdGluaXRfYXR0ci1cdTAwM2VjYXAubWF4X3JlY3Zfd3IgICAgID0gdGFyZ2V0LVx1MDAzZXF1ZXVlX3NpemUgJiM0MzsgMTtcbiBcdGluaXRfYXR0ci1cdTAwM2VjYXAubWF4X3JlY3Zfc2dlICAgID0gMTtcbi1cdGluaXRfYXR0ci1cdTAwM2VjYXAubWF4X3NlbmRfc2dlICAgID0gbWluKFNSUF9NQVhfU0dFLCBhdHRyLVx1MDAzZW1heF9zZW5kX3NnZSk7XG4mIzQzO1x0aW5pdF9hdHRyLVx1MDAzZWNhcC5tYXhfc2VuZF9zZ2UgICAgPSBtaW4oYXR0ci1cdTAwM2VtYXhfc2VuZF9zZ2UsIFNSUF9NQVhfU0dFKTtcbiBcdGluaXRfYXR0ci1cdTAwM2VzcV9zaWdfdHlwZSAgICAgICAgID0gSUJfU0lHTkFMX1JFUV9XUjtcbiBcdGluaXRfYXR0ci1cdTAwM2VxcF90eXBlICAgICAgICAgICAgID0gSUJfUVBUX1JDO1xuIFx0aW5pdF9hdHRyLVx1MDAzZXNlbmRfY3EgICAgICAgICAgICAgPSBzZW5kX2NxO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwdC9pYl9zcnB0LmMgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycHQvaWJfc3JwdC5jXG5pbmRleCA5YWVjNWQ4MDExN2YxZi4uYTRlNGZlYmE0YTAyNTMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycHQvaWJfc3JwdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycHQvaWJfc3JwdC5jXG5AQCAtNzcsOCAmIzQzOzc3LDggQEAgbW9kdWxlX3BhcmFtKHNycF9tYXhfcmVxX3NpemUsIGludCwgMDQ0NCk7XG4gTU9EVUxFX1BBUk1fREVTQyhzcnBfbWF4X3JlcV9zaXplLFxuIFx0XHQgXCYjMzQ7TWF4aW11bSBzaXplIG9mIFNSUCByZXF1ZXN0IG1lc3NhZ2VzIGluIGJ5dGVzLlwmIzM0Oyk7XG4gXG4tc3RhdGljIGludCBzcnB0X3NycV9zaXplID0gREVGQVVMVF9TUlBUX1NSUV9TSVpFO1xuLW1vZHVsZV9wYXJhbShzcnB0X3NycV9zaXplLCBpbnQsIDA0NDQpO1xuJiM0MztzdGF0aWMgdW5zaWduZWQgaW50IHNycHRfc3JxX3NpemUgPSBERUZBVUxUX1NSUFRfU1JRX1NJWkU7XG4mIzQzO21vZHVsZV9wYXJhbShzcnB0X3NycV9zaXplLCB1aW50LCAwNDQ0KTtcbiBNT0RVTEVfUEFSTV9ERVNDKHNycHRfc3JxX3NpemUsXG4gXHRcdCBcJiMzNDtTaGFyZWQgcmVjZWl2ZSBxdWV1ZSAoU1JRKSBzaXplLlwmIzM0Oyk7XG4gXG5AQCAtNDA1LDggJiM0Mzs0MDUsNyBAQCBzdGF0aWMgdm9pZCBzcnB0X2dldF9pb2Moc3RydWN0IHNycHRfcG9ydCAqc3BvcnQsIHUzMiBzbG90LFxuIFx0aWYgKHNkZXYtXHUwMDNldXNlX3NycSlcbiBcdFx0c2VuZF9xdWV1ZV9kZXB0aCA9IHNkZXYtXHUwMDNlc3JxX3NpemU7XG4gXHRlbHNlXG4tXHRcdHNlbmRfcXVldWVfZGVwdGggPSBtaW4oTUFYX1NSUFRfUlFfU0laRSxcbi1cdFx0XHRcdCAgICAgICBzZGV2LVx1MDAzZWRldmljZS1cdTAwM2VhdHRycy5tYXhfcXBfd3IpO1xuJiM0MztcdFx0c2VuZF9xdWV1ZV9kZXB0aCA9IG1pbihzZGV2LVx1MDAzZWRldmljZS1cdTAwM2VhdHRycy5tYXhfcXBfd3IsIE1BWF9TUlBUX1JRX1NJWkUpO1xuIFxuIFx0bWVtc2V0KGlvY3AsIDAsIHNpemVvZigqaW9jcCkpO1xuIFx0c3RyY3B5KGlvY3AtXHUwMDNlaWRfc3RyaW5nLCBTUlBUX0lEX1NUUklORyk7XG5AQCAtMTg1MCw3ICYjNDM7MTg0OSw3IEBAIHN0YXRpYyBpbnQgc3JwdF9jcmVhdGVfY2hfaWIoc3RydWN0IHNycHRfcmRtYV9jaCAqY2gpXG4gXHRzdHJ1Y3Qgc3JwdF9wb3J0ICpzcG9ydCA9IGNoLVx1MDAzZXNwb3J0O1xuIFx0c3RydWN0IHNycHRfZGV2aWNlICpzZGV2ID0gc3BvcnQtXHUwMDNlc2RldjtcbiBcdGNvbnN0IHN0cnVjdCBpYl9kZXZpY2VfYXR0ciAqYXR0cnMgPSBcdTAwMjZzZGV2LVx1MDAzZWRldmljZS1cdTAwM2VhdHRycztcbi1cdGludCBzcV9zaXplID0gc3BvcnQtXHUwMDNlcG9ydF9hdHRyaWIuc3JwX3NxX3NpemU7XG4mIzQzO1x0dTMyIHNxX3NpemUgPSBzcG9ydC1cdTAwM2Vwb3J0X2F0dHJpYi5zcnBfc3Ffc2l6ZTtcbiBcdGludCBpLCByZXQ7XG4gXG4gXHRXQVJOX09OKGNoLVx1MDAzZXJxX3NpemUgXHUwMDNjIDEpO1xuQEAgLTE5MTEsMTMgJiM0MzsxOTEwLDEzIEBAIHN0YXRpYyBpbnQgc3JwdF9jcmVhdGVfY2hfaWIoc3RydWN0IHNycHRfcmRtYV9jaCAqY2gpXG4gXHRcdGJvb2wgcmV0cnkgPSBzcV9zaXplIFx1MDAzZSBNSU5fU1JQVF9TUV9TSVpFO1xuIFxuIFx0XHRpZiAocmV0cnkpIHtcbi1cdFx0XHRwcl9kZWJ1ZyhcJiMzNDtmYWlsZWQgdG8gY3JlYXRlIHF1ZXVlIHBhaXIgd2l0aCBzcV9zaXplID0gJWQgKCVkKSAtIHJldHJ5aW5nXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRwcl9kZWJ1ZyhcJiMzNDtmYWlsZWQgdG8gY3JlYXRlIHF1ZXVlIHBhaXIgd2l0aCBzcV9zaXplID0gJXUgKCVkKSAtIHJldHJ5aW5nXFxuXCYjMzQ7LFxuIFx0XHRcdFx0IHNxX3NpemUsIHJldCk7XG4gXHRcdFx0aWJfY3FfcG9vbF9wdXQoY2gtXHUwMDNlY3EsIGNoLVx1MDAzZWNxX3NpemUpO1xuIFx0XHRcdHNxX3NpemUgPSBtYXgoc3Ffc2l6ZSAvIDIsIE1JTl9TUlBUX1NRX1NJWkUpO1xuIFx0XHRcdGdvdG8gcmV0cnk7XG4gXHRcdH0gZWxzZSB7XG4tXHRcdFx0cHJfZXJyKFwmIzM0O2ZhaWxlZCB0byBjcmVhdGUgcXVldWUgcGFpciB3aXRoIHNxX3NpemUgPSAlZCAoJWQpXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRwcl9lcnIoXCYjMzQ7ZmFpbGVkIHRvIGNyZWF0ZSBxdWV1ZSBwYWlyIHdpdGggc3Ffc2l6ZSA9ICV1ICglZClcXG5cJiMzNDssXG4gXHRcdFx0ICAgICAgIHNxX3NpemUsIHJldCk7XG4gXHRcdFx0Z290byBlcnJfZGVzdHJveV9jcTtcbiBcdFx0fVxuQEAgLTE5MjUsNyAmIzQzOzE5MjQsNyBAQCBzdGF0aWMgaW50IHNycHRfY3JlYXRlX2NoX2liKHN0cnVjdCBzcnB0X3JkbWFfY2ggKmNoKVxuIFxuIFx0YXRvbWljX3NldChcdTAwMjZjaC1cdTAwM2VzcV93cl9hdmFpbCwgcXBfaW5pdC1cdTAwM2VjYXAubWF4X3NlbmRfd3IpO1xuIFxuLVx0cHJfZGVidWcoXCYjMzQ7JXM6IG1heF9jcWU9ICVkIG1heF9zZ2U9ICVkIHNxX3NpemUgPSAlZCBjaD0gJXBcXG5cJiMzNDssXG4mIzQzO1x0cHJfZGVidWcoXCYjMzQ7JXM6IG1heF9jcWU9ICVkIG1heF9zZ2U9ICVkIHNxX3NpemUgPSAldSBjaD0gJXBcXG5cJiMzNDssXG4gXHRcdCBfX2Z1bmNfXywgY2gtXHUwMDNlY3EtXHUwMDNlY3FlLCBxcF9pbml0LVx1MDAzZWNhcC5tYXhfc2VuZF9zZ2UsXG4gXHRcdCBxcF9pbml0LVx1MDAzZWNhcC5tYXhfc2VuZF93ciwgY2gpO1xuIFxuQEAgLTIyOTgsNyAmIzQzOzIyOTcsNyBAQCBzdGF0aWMgaW50IHNycHRfY21fcmVxX3JlY3Yoc3RydWN0IHNycHRfZGV2aWNlICpjb25zdCBzZGV2LFxuIFx0ICogZGVwdGggdG8gYXZvaWQgdGhhdCB0aGUgaW5pdGlhdG9yIGRyaXZlciBoYXMgdG8gcmVwb3J0IFFVRVVFX0ZVTExcbiBcdCAqIHRvIHRoZSBTQ1NJIG1pZC1sYXllci5cbiBcdCAqL1xuLVx0Y2gtXHUwMDNlcnFfc2l6ZSA9IG1pbihNQVhfU1JQVF9SUV9TSVpFLCBzZGV2LVx1MDAzZWRldmljZS1cdTAwM2VhdHRycy5tYXhfcXBfd3IpO1xuJiM0MztcdGNoLVx1MDAzZXJxX3NpemUgPSBtaW4oc2Rldi1cdTAwM2VkZXZpY2UtXHUwMDNlYXR0cnMubWF4X3FwX3dyLCBNQVhfU1JQVF9SUV9TSVpFKTtcbiBcdHNwaW5fbG9ja19pbml0KFx1MDAyNmNoLVx1MDAzZXNwaW5sb2NrKTtcbiBcdGNoLVx1MDAzZXN0YXRlID0gQ0hfQ09OTkVDVElORztcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmNoLVx1MDAzZWNtZF93YWl0X2xpc3QpO1xuQEAgLTMxMzYsNyAmIzQzOzMxMzUsNyBAQCBzdGF0aWMgaW50IHNycHRfYWxsb2Nfc3JxKHN0cnVjdCBzcnB0X2RldmljZSAqc2RldilcbiBcdFx0cmV0dXJuIFBUUl9FUlIoc3JxKTtcbiBcdH1cbiBcbi1cdHByX2RlYnVnKFwmIzM0O2NyZWF0ZSBTUlEgI3dyPSAlZCBtYXhfYWxsb3c9JWQgZGV2PSAlc1xcblwmIzM0Oywgc2Rldi1cdTAwM2VzcnFfc2l6ZSxcbiYjNDM7XHRwcl9kZWJ1ZyhcJiMzNDtjcmVhdGUgU1JRICN3cj0gJWQgbWF4X2FsbG93PSV1IGRldj0gJXNcXG5cJiMzNDssIHNkZXYtXHUwMDNlc3JxX3NpemUsXG4gXHRcdCBzZGV2LVx1MDAzZWRldmljZS1cdTAwM2VhdHRycy5tYXhfc3JxX3dyLCBkZXZfbmFtZShcdTAwMjZkZXZpY2UtXHUwMDNlZGV2KSk7XG4gXG4gXHRzZGV2LVx1MDAzZXJlcV9idWZfY2FjaGUgPSBzcnB0X2NhY2hlX2dldChzcnBfbWF4X3JlcV9zaXplKTtcbkBAIC0zOTUxLDcgJiM0MzszOTUwLDcgQEAgc3RhdGljIGludCBfX2luaXQgc3JwdF9pbml0X21vZHVsZSh2b2lkKVxuIFxuIFx0aWYgKHNycHRfc3JxX3NpemUgXHUwMDNjIE1JTl9TUlBUX1NSUV9TSVpFXG4gXHQgICAgfHwgc3JwdF9zcnFfc2l6ZSBcdTAwM2UgTUFYX1NSUFRfU1JRX1NJWkUpIHtcbi1cdFx0cHJfZXJyKFwmIzM0O2ludmFsaWQgdmFsdWUgJWQgZm9yIGtlcm5lbCBtb2R1bGUgcGFyYW1ldGVyIHNycHRfc3JxX3NpemUgLS0gbXVzdCBiZSBpbiB0aGUgcmFuZ2UgWyVkLi4lZF0uXFxuXCYjMzQ7LFxuJiM0MztcdFx0cHJfZXJyKFwmIzM0O2ludmFsaWQgdmFsdWUgJXUgZm9yIGtlcm5lbCBtb2R1bGUgcGFyYW1ldGVyIHNycHRfc3JxX3NpemUgLS0gbXVzdCBiZSBpbiB0aGUgcmFuZ2UgWyVkLi4lZF0uXFxuXCYjMzQ7LFxuIFx0XHQgICAgICAgc3JwdF9zcnFfc2l6ZSwgTUlOX1NSUFRfU1JRX1NJWkUsIE1BWF9TUlBUX1NSUV9TSVpFKTtcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lL2hvc3QvcmRtYS5jIGIvZHJpdmVycy9udm1lL2hvc3QvcmRtYS5jXG5pbmRleCA2OTA5ZTM1NDI3OTQyNy4uNTZjZDIyOGFmMWQ1N2EgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL252bWUvaG9zdC9yZG1hLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbnZtZS9ob3N0L3JkbWEuY1xuQEAgLTM5NCw4ICYjNDM7Mzk0LDEwIEBAIG52bWVfcmRtYV9maW5kX2dldF9kZXZpY2Uoc3RydWN0IHJkbWFfY21faWQgKmNtX2lkKVxuIFx0XHRnb3RvIG91dF9mcmVlX3BkO1xuIFx0fVxuIFxuLVx0bmRldi1cdTAwM2VudW1faW5saW5lX3NlZ21lbnRzID0gbWluKE5WTUVfUkRNQV9NQVhfSU5MSU5FX1NFR01FTlRTLFxuLVx0XHRcdFx0XHRuZGV2LVx1MDAzZWRldi1cdTAwM2VhdHRycy5tYXhfc2VuZF9zZ2UgLSAxKTtcbiYjNDM7XHRuZGV2LVx1MDAzZW51bV9pbmxpbmVfc2VnbWVudHMgPSBuZGV2LVx1MDAzZWRldi1cdTAwM2VhdHRycy5tYXhfc2VuZF9zZ2U7XG4mIzQzO1x0aWYgKG5kZXYtXHUwMDNlbnVtX2lubGluZV9zZWdtZW50cylcbiYjNDM7XHRcdG5kZXYtXHUwMDNlbnVtX2lubGluZV9zZWdtZW50cy0tO1xuJiM0MztcdG5kZXYtXHUwMDNlbnVtX2lubGluZV9zZWdtZW50cyA9IG1pbihuZGV2LVx1MDAzZW51bV9pbmxpbmVfc2VnbWVudHMsIE5WTUVfUkRNQV9NQVhfSU5MSU5FX1NFR01FTlRTKTtcbiBcdGxpc3RfYWRkKFx1MDAyNm5kZXYtXHUwMDNlZW50cnksIFx1MDAyNmRldmljZV9saXN0KTtcbiBvdXRfdW5sb2NrOlxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldmljZV9saXN0X211dGV4KTtcbkBAIC0xODQ3LDcgJiM0MzsxODQ5LDcgQEAgc3RhdGljIGludCBudm1lX3JkbWFfcm91dGVfcmVzb2x2ZWQoc3RydWN0IG52bWVfcmRtYV9xdWV1ZSAqcXVldWUpXG4gXHRwYXJhbS5xcF9udW0gPSBxdWV1ZS1cdTAwM2VxcC1cdTAwM2VxcF9udW07XG4gXHRwYXJhbS5mbG93X2NvbnRyb2wgPSAxO1xuIFxuLVx0cGFyYW0ucmVzcG9uZGVyX3Jlc291cmNlcyA9IHF1ZXVlLVx1MDAzZWRldmljZS1cdTAwM2VkZXYtXHUwMDNlYXR0cnMubWF4X3FwX3JkX2F0b207XG4mIzQzO1x0cGFyYW0ucmVzcG9uZGVyX3Jlc291cmNlcyA9IG1pbihxdWV1ZS1cdTAwM2VkZXZpY2UtXHUwMDNlZGV2LVx1MDAzZWF0dHJzLm1heF9xcF9yZF9hdG9tLCBVOF9NQVgpO1xuIFx0LyogbWF4aW11bSByZXRyeSBjb3VudCAqL1xuIFx0cGFyYW0ucmV0cnlfY291bnQgPSA3O1xuIFx0cGFyYW0ucm5yX3JldHJ5X2NvdW50ID0gNztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvdGFyZ2V0L3JkbWEuYyBiL2RyaXZlcnMvbnZtZS90YXJnZXQvcmRtYS5jXG5pbmRleCBhYzI2ZjRmNzc0YzRkZS4uMWMzMzJkNjYyMjJhMGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL252bWUvdGFyZ2V0L3JkbWEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9udm1lL3RhcmdldC9yZG1hLmNcbkBAIC0xNTIsNyAmIzQzOzE1Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtX29wcyBzcnFfc2l6ZV9vcHMgPSB7XG4gXHQuZ2V0ID0gcGFyYW1fZ2V0X2ludCxcbiB9O1xuIFxuLXN0YXRpYyBpbnQgbnZtZXRfcmRtYV9zcnFfc2l6ZSA9IDEwMjQ7XG4mIzQzO3N0YXRpYyB1bnNpZ25lZCBpbnQgbnZtZXRfcmRtYV9zcnFfc2l6ZSA9IDEwMjQ7XG4gbW9kdWxlX3BhcmFtX2NiKHNycV9zaXplLCBcdTAwMjZzcnFfc2l6ZV9vcHMsIFx1MDAyNm52bWV0X3JkbWFfc3JxX3NpemUsIDA2NDQpO1xuIE1PRFVMRV9QQVJNX0RFU0Moc3JxX3NpemUsIFwmIzM0O3NldCBTaGFyZWQgUmVjZWl2ZSBRdWV1ZSAoU1JRKSBzaXplLCBzaG91bGQgXHUwMDNlPSAyNTYgKGRlZmF1bHQ6IDEwMjQpXCYjMzQ7KTtcbiBcbkBAIC0xMTk3LDcgJiM0MzsxMTk3LDcgQEAgbnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2Uoc3RydWN0IHJkbWFfY21faWQgKmNtX2lkKVxuIFx0c3RydWN0IG52bWV0X3BvcnQgKm5wb3J0ID0gcG9ydC1cdTAwM2VucG9ydDtcbiBcdHN0cnVjdCBudm1ldF9yZG1hX2RldmljZSAqbmRldjtcbiBcdGludCBpbmxpbmVfcGFnZV9jb3VudDtcbi1cdGludCBpbmxpbmVfc2dlX2NvdW50O1xuJiM0MztcdHUzMiBpbmxpbmVfc2dlX2NvdW50O1xuIFx0aW50IHJldDtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2ZGV2aWNlX2xpc3RfbXV0ZXgpO1xuQEAgLTEyMTMsNyAmIzQzOzEyMTMsOSBAQCBudm1ldF9yZG1hX2ZpbmRfZ2V0X2RldmljZShzdHJ1Y3QgcmRtYV9jbV9pZCAqY21faWQpXG4gXG4gXHRpbmxpbmVfcGFnZV9jb3VudCA9IG51bV9wYWdlcyhucG9ydC1cdTAwM2VpbmxpbmVfZGF0YV9zaXplKTtcbiBcdGlubGluZV9zZ2VfY291bnQgPSBtYXgoY21faWQtXHUwMDNlZGV2aWNlLVx1MDAzZWF0dHJzLm1heF9zZ2VfcmQsXG4tXHRcdFx0XHRjbV9pZC1cdTAwM2VkZXZpY2UtXHUwMDNlYXR0cnMubWF4X3JlY3Zfc2dlKSAtIDE7XG4mIzQzO1x0XHRcdFx0Y21faWQtXHUwMDNlZGV2aWNlLVx1MDAzZWF0dHJzLm1heF9yZWN2X3NnZSk7XG4mIzQzO1x0aWYgKGlubGluZV9zZ2VfY291bnQpXG4mIzQzO1x0XHRpbmxpbmVfc2dlX2NvdW50LS07XG4gXHRpZiAoaW5saW5lX3BhZ2VfY291bnQgXHUwMDNlIGlubGluZV9zZ2VfY291bnQpIHtcbiBcdFx0cHJfd2FybihcJiMzNDtpbmxpbmVfZGF0YV9zaXplICVkIGNhbm5vdCBiZSBzdXBwb3J0ZWQgYnkgZGV2aWNlICVzLiBSZWR1Y2luZyB0byAlbHUuXFxuXCYjMzQ7LFxuIFx0XHRcdG5wb3J0LVx1MDAzZWlubGluZV9kYXRhX3NpemUsIGNtX2lkLVx1MDAzZWRldmljZS1cdTAwM2VuYW1lLFxuQEAgLTE1NTMsOCAmIzQzOzE1NTUsOSBAQCBzdGF0aWMgaW50IG52bWV0X3JkbWFfY21fYWNjZXB0KHN0cnVjdCByZG1hX2NtX2lkICpjbV9pZCxcbiBcbiBcdHBhcmFtLnJucl9yZXRyeV9jb3VudCA9IDc7XG4gXHRwYXJhbS5mbG93X2NvbnRyb2wgPSAxO1xuLVx0cGFyYW0uaW5pdGlhdG9yX2RlcHRoID0gbWluX3QodTgsIHAtXHUwMDNlaW5pdGlhdG9yX2RlcHRoLFxuLVx0XHRxdWV1ZS1cdTAwM2VkZXYtXHUwMDNlZGV2aWNlLVx1MDAzZWF0dHJzLm1heF9xcF9pbml0X3JkX2F0b20pO1xuJiM0MztcdHBhcmFtLmluaXRpYXRvcl9kZXB0aCA9IG1pbjMocC1cdTAwM2Vpbml0aWF0b3JfZGVwdGgsXG4mIzQzO1x0XHRcdFx0ICAgICBxdWV1ZS1cdTAwM2VkZXYtXHUwMDNlZGV2aWNlLVx1MDAzZWF0dHJzLm1heF9xcF9pbml0X3JkX2F0b20sXG4mIzQzO1x0XHRcdFx0ICAgICBVOF9NQVgpO1xuIFx0cGFyYW0ucHJpdmF0ZV9kYXRhID0gXHUwMDI2cHJpdjtcbiBcdHBhcmFtLnByaXZhdGVfZGF0YV9sZW4gPSBzaXplb2YocHJpdik7XG4gXHRwcml2LnJlY2ZtdCA9IGNwdV90b19sZTE2KE5WTUVfUkRNQV9DTV9GTVRfMV8wKTtcbmRpZmYgLS1naXQgYS9mcy9zbWIvc21iZGlyZWN0L2FjY2VwdC5jIGIvZnMvc21iL3NtYmRpcmVjdC9hY2NlcHQuY1xuaW5kZXggNTI5NzQwMDA1ODM4NWUuLjQ0YjY4MWEyMDcyNTM2IDEwMDY0NFxuLS0tIGEvZnMvc21iL3NtYmRpcmVjdC9hY2NlcHQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvc21iL3NtYmRpcmVjdC9hY2NlcHQuY1xuQEAgLTMyLDggJiM0MzszMiw5IEBAIGludCBzbWJkaXJlY3RfYWNjZXB0X2Nvbm5lY3RfcmVxdWVzdChzdHJ1Y3Qgc21iZGlyZWN0X3NvY2tldCAqc2MsXG4gXHQvKlxuIFx0ICogRmlyc3Qgc2V0IHdoYXQgdGhlIHdlIGFzIHNlcnZlciBhcmUgYWJsZSB0byBzdXBwb3J0XG4gXHQgKi9cbi1cdHNwLVx1MDAzZWluaXRpYXRvcl9kZXB0aCA9IG1pbl90KHU4LCBzcC1cdTAwM2Vpbml0aWF0b3JfZGVwdGgsXG4tXHRcdFx0XHQgICAgc2MtXHUwMDNlaWIuZGV2LVx1MDAzZWF0dHJzLm1heF9xcF9yZF9hdG9tKTtcbiYjNDM7XHRzcC1cdTAwM2Vpbml0aWF0b3JfZGVwdGggPSBtaW4zKHNwLVx1MDAzZWluaXRpYXRvcl9kZXB0aCxcbiYjNDM7XHRcdFx0XHQgICBzYy1cdTAwM2VpYi5kZXYtXHUwMDNlYXR0cnMubWF4X3FwX3JkX2F0b20sXG4mIzQzO1x0XHRcdFx0ICAgVThfTUFYKTtcbiBcbiBcdHBlZXJfaW5pdGlhdG9yX2RlcHRoID0gcGFyYW0tXHUwMDNlaW5pdGlhdG9yX2RlcHRoO1xuIFx0cGVlcl9yZXNwb25kZXJfcmVzb3VyY2VzID0gcGFyYW0tXHUwMDNlcmVzcG9uZGVyX3Jlc291cmNlcztcbmRpZmYgLS1naXQgYS9mcy9zbWIvc21iZGlyZWN0L2Nvbm5lY3QuYyBiL2ZzL3NtYi9zbWJkaXJlY3QvY29ubmVjdC5jXG5pbmRleCBjZDcyNmIzOTlhZmVjYi4uMzRhM2U3MmMzOGZiYmEgMTAwNjQ0XG4tLS0gYS9mcy9zbWIvc21iZGlyZWN0L2Nvbm5lY3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvc21iL3NtYmRpcmVjdC9jb25uZWN0LmNcbkBAIC0xODIsOCAmIzQzOzE4Miw5IEBAIHN0YXRpYyBpbnQgc21iZGlyZWN0X2Nvbm5lY3RfcmRtYV9jb25uZWN0KHN0cnVjdCBzbWJkaXJlY3Rfc29ja2V0ICpzYylcbiBcdGlmIChzYy1cdTAwM2VpYi5kZXYtXHUwMDNlYXR0cnMua2VybmVsX2NhcF9mbGFncyBcdTAwMjYgSUJLX1NHX0dBUFNfUkVHKVxuIFx0XHRzYy1cdTAwM2Vtcl9pby50eXBlID0gSUJfTVJfVFlQRV9TR19HQVBTO1xuIFxuLVx0c3AtXHUwMDNlcmVzcG9uZGVyX3Jlc291cmNlcyA9IG1pbl90KHU4LCBzcC1cdTAwM2VyZXNwb25kZXJfcmVzb3VyY2VzLFxuLVx0XHRcdFx0XHRzYy1cdTAwM2VpYi5kZXYtXHUwMDNlYXR0cnMubWF4X3FwX3JkX2F0b20pO1xuJiM0MztcdHNwLVx1MDAzZXJlc3BvbmRlcl9yZXNvdXJjZXMgPSBtaW4zKHNwLVx1MDAzZXJlc3BvbmRlcl9yZXNvdXJjZXMsXG4mIzQzO1x0XHRcdFx0ICAgICAgIHNjLVx1MDAzZWliLmRldi1cdTAwM2VhdHRycy5tYXhfcXBfcmRfYXRvbSxcbiYjNDM7XHRcdFx0XHQgICAgICAgVThfTUFYKTtcbiBcdHNtYmRpcmVjdF9sb2dfcmRtYV9tcihzYywgU01CRElSRUNUX0xPR19JTkZPLFxuIFx0XHRcJiMzNDtyZXNwb25kZXJfcmVzb3VyY2VzPSVkXFxuXCYjMzQ7LFxuIFx0XHRzcC1cdTAwM2VyZXNwb25kZXJfcmVzb3VyY2VzKTtcbmRpZmYgLS1naXQgYS9mcy9zbWIvc21iZGlyZWN0L2Nvbm5lY3Rpb24uYyBiL2ZzL3NtYi9zbWJkaXJlY3QvY29ubmVjdGlvbi5jXG5pbmRleCA4YWRmNTgwOTc1MzQ0Yi4uNjkwYWNiODRlMWI1OTEgMTAwNjQ0XG4tLS0gYS9mcy9zbWIvc21iZGlyZWN0L2Nvbm5lY3Rpb24uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvc21iL3NtYmRpcmVjdC9jb25uZWN0aW9uLmNcbkBAIC0yODcsNyAmIzQzOzI4Nyw3IEBAIGludCBzbWJkaXJlY3RfY29ubmVjdGlvbl9jcmVhdGVfcXAoc3RydWN0IHNtYmRpcmVjdF9zb2NrZXQgKnNjKVxuIFx0ICAgIHFwX2NhcC5tYXhfc2VuZF93ciBcdTAwM2Ugc2MtXHUwMDNlaWIuZGV2LVx1MDAzZWF0dHJzLm1heF9xcF93cikge1xuIFx0XHRwcl9lcnIoXCYjMzQ7UG9zc2libGUgQ1FFIG92ZXJydW46IG1heF9zZW5kX3dyICVkXFxuXCYjMzQ7LFxuIFx0XHQgICAgICAgcXBfY2FwLm1heF9zZW5kX3dyKTtcbi1cdFx0cHJfZXJyKFwmIzM0O2RldmljZSAlLipzIHJlcG9ydGluZyBtYXhfY3FlICVkIG1heF9xcF93ciAlZFxcblwmIzM0OyxcbiYjNDM7XHRcdHByX2VycihcJiMzNDtkZXZpY2UgJS4qcyByZXBvcnRpbmcgbWF4X2NxZSAldSBtYXhfcXBfd3IgJXVcXG5cJiMzNDssXG4gXHRcdCAgICAgICBJQl9ERVZJQ0VfTkFNRV9NQVgsXG4gXHRcdCAgICAgICBzYy1cdTAwM2VpYi5kZXYtXHUwMDNlbmFtZSxcbiBcdFx0ICAgICAgIHNjLVx1MDAzZWliLmRldi1cdTAwM2VhdHRycy5tYXhfY3FlLFxuQEAgLTMwMiw3ICYjNDM7MzAyLDcgQEAgaW50IHNtYmRpcmVjdF9jb25uZWN0aW9uX2NyZWF0ZV9xcChzdHJ1Y3Qgc21iZGlyZWN0X3NvY2tldCAqc2MpXG4gXHQgICAgIG1heF9zZW5kX3dyIFx1MDAzZT0gc2MtXHUwMDNlaWIuZGV2LVx1MDAzZWF0dHJzLm1heF9xcF93cikpIHtcbiBcdFx0cHJfZXJyKFwmIzM0O1Bvc3NpYmxlIENRRSBvdmVycnVuOiByZG1hX3NlbmRfd3IgJWQgJiM0MzsgbWF4X3NlbmRfd3IgJWQgPSAlZFxcblwmIzM0OyxcbiBcdFx0ICAgICAgIHJkbWFfc2VuZF93ciwgcXBfY2FwLm1heF9zZW5kX3dyLCBtYXhfc2VuZF93cik7XG4tXHRcdHByX2VycihcJiMzNDtkZXZpY2UgJS4qcyByZXBvcnRpbmcgbWF4X2NxZSAlZCBtYXhfcXBfd3IgJWRcXG5cJiMzNDssXG4mIzQzO1x0XHRwcl9lcnIoXCYjMzQ7ZGV2aWNlICUuKnMgcmVwb3J0aW5nIG1heF9jcWUgJXUgbWF4X3FwX3dyICV1XFxuXCYjMzQ7LFxuIFx0XHQgICAgICAgSUJfREVWSUNFX05BTUVfTUFYLFxuIFx0XHQgICAgICAgc2MtXHUwMDNlaWIuZGV2LVx1MDAzZW5hbWUsXG4gXHRcdCAgICAgICBzYy1cdTAwM2VpYi5kZXYtXHUwMDNlYXR0cnMubWF4X2NxZSxcbkBAIC0zMTYsNyAmIzQzOzMxNiw3IEBAIGludCBzbWJkaXJlY3RfY29ubmVjdGlvbl9jcmVhdGVfcXAoc3RydWN0IHNtYmRpcmVjdF9zb2NrZXQgKnNjKVxuIFx0ICAgIHFwX2NhcC5tYXhfcmVjdl93ciBcdTAwM2Ugc2MtXHUwMDNlaWIuZGV2LVx1MDAzZWF0dHJzLm1heF9xcF93cikge1xuIFx0XHRwcl9lcnIoXCYjMzQ7UG9zc2libGUgQ1FFIG92ZXJydW46IG1heF9yZWN2X3dyICVkXFxuXCYjMzQ7LFxuIFx0XHQgICAgICAgcXBfY2FwLm1heF9yZWN2X3dyKTtcbi1cdFx0cHJfZXJyKFwmIzM0O2RldmljZSAlLipzIHJlcG9ydGluZyBtYXhfY3FlICVkIG1heF9xcF93ciAlZFxcblwmIzM0OyxcbiYjNDM7XHRcdHByX2VycihcJiMzNDtkZXZpY2UgJS4qcyByZXBvcnRpbmcgbWF4X2NxZSAldSBtYXhfcXBfd3IgJXVcXG5cJiMzNDssXG4gXHRcdCAgICAgICBJQl9ERVZJQ0VfTkFNRV9NQVgsXG4gXHRcdCAgICAgICBzYy1cdTAwM2VpYi5kZXYtXHUwMDNlbmFtZSxcbiBcdFx0ICAgICAgIHNjLVx1MDAzZWliLmRldi1cdTAwM2VhdHRycy5tYXhfY3FlLFxuQEAgLTMyOCw3ICYjNDM7MzI4LDcgQEAgaW50IHNtYmRpcmVjdF9jb25uZWN0aW9uX2NyZWF0ZV9xcChzdHJ1Y3Qgc21iZGlyZWN0X3NvY2tldCAqc2MpXG4gXG4gXHRpZiAocXBfY2FwLm1heF9zZW5kX3NnZSBcdTAwM2Ugc2MtXHUwMDNlaWIuZGV2LVx1MDAzZWF0dHJzLm1heF9zZW5kX3NnZSB8fFxuIFx0ICAgIHFwX2NhcC5tYXhfcmVjdl9zZ2UgXHUwMDNlIHNjLVx1MDAzZWliLmRldi1cdTAwM2VhdHRycy5tYXhfcmVjdl9zZ2UpIHtcbi1cdFx0cHJfZXJyKFwmIzM0O2RldmljZSAlLipzIG1heF9zZW5kX3NnZS9tYXhfcmVjdl9zZ2UgPSAlZC8lZCB0b28gc21hbGxcXG5cJiMzNDssXG4mIzQzO1x0XHRwcl9lcnIoXCYjMzQ7ZGV2aWNlICUuKnMgbWF4X3NlbmRfc2dlL21heF9yZWN2X3NnZSA9ICV1LyV1IHRvbyBzbWFsbFxcblwmIzM0OyxcbiBcdFx0ICAgICAgIElCX0RFVklDRV9OQU1FX01BWCxcbiBcdFx0ICAgICAgIHNjLVx1MDAzZWliLmRldi1cdTAwM2VuYW1lLFxuIFx0XHQgICAgICAgc2MtXHUwMDNlaWIuZGV2LVx1MDAzZWF0dHJzLm1heF9zZW5kX3NnZSxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3N1bnJwYy9zdmNfcmRtYS5oIGIvaW5jbHVkZS9saW51eC9zdW5ycGMvc3ZjX3JkbWEuaFxuaW5kZXggZGY2ZTA4YWFhZDU3MDkuLjIxN2YwMDBiZTVkNmUyIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9zdW5ycGMvc3ZjX3JkbWEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9zdW5ycGMvc3ZjX3JkbWEuaFxuQEAgLTc4LDggJiM0Mzs3OCw4IEBAIHN0cnVjdCBzdmN4cHJ0X3JkbWEge1xuIFx0c3RydWN0IHJkbWFfY21faWQgICAgKnNjX2NtX2lkO1x0XHQvKiBSRE1BIGNvbm5lY3Rpb24gaWQgKi9cbiBcdHN0cnVjdCBsaXN0X2hlYWQgICAgIHNjX2FjY2VwdF9xO1x0LyogQ29ubi4gd2FpdGluZyBhY2NlcHQgKi9cbiBcdHN0cnVjdCBycGNyZG1hX25vdGlmaWNhdGlvbiBzY19ybjtcdC8qIHJlbW92YWwgbm90aWZpY2F0aW9uICovXG4tXHRpbnRcdFx0ICAgICBzY19vcmQ7XHRcdC8qIFJETUEgcmVhZCBsaW1pdCAqL1xuLVx0aW50ICAgICAgICAgICAgICAgICAgc2NfbWF4X3NlbmRfc2dlcztcbiYjNDM7XHR1MzJcdFx0ICAgICBzY19vcmQ7XHRcdC8qIFJETUEgcmVhZCBsaW1pdCAqL1xuJiM0MztcdHVuc2lnbmVkIGludCAgICAgICAgIHNjX21heF9zZW5kX3NnZXM7XG4gXHRib29sXHRcdCAgICAgc2Nfc25kX3dfaW52O1x0LyogT0sgdG8gdXNlIFNlbmQgV2l0aCBJbnZhbGlkYXRlICovXG4gXG4gXHRhdG9taWNfdCAgICAgICAgICAgICBzY19zcV9hdmFpbDtcdC8qIFNRRXMgcmVhZHkgdG8gYmUgY29uc3VtZWQgKi9cbmRpZmYgLS1naXQgYS9pbmNsdWRlL3JkbWEvaWJfdmVyYnMuaCBiL2luY2x1ZGUvcmRtYS9pYl92ZXJicy5oXG5pbmRleCA5ZGQ3NmY0ODlhMGJhNC4uYjhiMjIxYjVmNTY0NzMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3JkbWEvaWJfdmVyYnMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9yZG1hL2liX3ZlcmJzLmhcbkBAIC00MDYsMzYgJiM0Mzs0MDYsMzYgQEAgc3RydWN0IGliX2RldmljZV9hdHRyIHtcbiBcdHUzMlx0XHRcdHZlbmRvcl9pZDtcbiBcdHUzMlx0XHRcdHZlbmRvcl9wYXJ0X2lkO1xuIFx0dTMyXHRcdFx0aHdfdmVyO1xuLVx0aW50XHRcdFx0bWF4X3FwO1xuLVx0aW50XHRcdFx0bWF4X3FwX3dyO1xuJiM0MztcdHUzMlx0XHRcdG1heF9xcDtcbiYjNDM7XHR1MzJcdFx0XHRtYXhfcXBfd3I7XG4gXHR1NjRcdFx0XHRkZXZpY2VfY2FwX2ZsYWdzO1xuIFx0dTY0XHRcdFx0a2VybmVsX2NhcF9mbGFncztcbi1cdGludFx0XHRcdG1heF9zZW5kX3NnZTtcbi1cdGludFx0XHRcdG1heF9yZWN2X3NnZTtcbi1cdGludFx0XHRcdG1heF9zZ2VfcmQ7XG4tXHRpbnRcdFx0XHRtYXhfY3E7XG4tXHRpbnRcdFx0XHRtYXhfY3FlO1xuLVx0aW50XHRcdFx0bWF4X21yO1xuLVx0aW50XHRcdFx0bWF4X3BkO1xuLVx0aW50XHRcdFx0bWF4X3FwX3JkX2F0b207XG4tXHRpbnRcdFx0XHRtYXhfZWVfcmRfYXRvbTtcbi1cdGludFx0XHRcdG1heF9yZXNfcmRfYXRvbTtcbi1cdGludFx0XHRcdG1heF9xcF9pbml0X3JkX2F0b207XG4tXHRpbnRcdFx0XHRtYXhfZWVfaW5pdF9yZF9hdG9tO1xuJiM0MztcdHUzMlx0XHRcdG1heF9zZW5kX3NnZTtcbiYjNDM7XHR1MzJcdFx0XHRtYXhfcmVjdl9zZ2U7XG4mIzQzO1x0dTMyXHRcdFx0bWF4X3NnZV9yZDtcbiYjNDM7XHR1MzJcdFx0XHRtYXhfY3E7XG4mIzQzO1x0dTMyXHRcdFx0bWF4X2NxZTtcbiYjNDM7XHR1MzJcdFx0XHRtYXhfbXI7XG4mIzQzO1x0dTMyXHRcdFx0bWF4X3BkO1xuJiM0MztcdHUzMlx0XHRcdG1heF9xcF9yZF9hdG9tO1xuJiM0MztcdHUzMlx0XHRcdG1heF9lZV9yZF9hdG9tO1xuJiM0MztcdHUzMlx0XHRcdG1heF9yZXNfcmRfYXRvbTtcbiYjNDM7XHR1MzJcdFx0XHRtYXhfcXBfaW5pdF9yZF9hdG9tO1xuJiM0MztcdHUzMlx0XHRcdG1heF9lZV9pbml0X3JkX2F0b207XG4gXHRlbnVtIGliX2F0b21pY19jYXBcdGF0b21pY19jYXA7XG4gXHRlbnVtIGliX2F0b21pY19jYXBcdG1hc2tlZF9hdG9taWNfY2FwO1xuLVx0aW50XHRcdFx0bWF4X2VlO1xuLVx0aW50XHRcdFx0bWF4X3JkZDtcbi1cdGludFx0XHRcdG1heF9tdztcbi1cdGludFx0XHRcdG1heF9yYXdfaXB2Nl9xcDtcbi1cdGludFx0XHRcdG1heF9yYXdfZXRoeV9xcDtcbi1cdGludFx0XHRcdG1heF9tY2FzdF9ncnA7XG4tXHRpbnRcdFx0XHRtYXhfbWNhc3RfcXBfYXR0YWNoO1xuLVx0aW50XHRcdFx0bWF4X3RvdGFsX21jYXN0X3FwX2F0dGFjaDtcbi1cdGludFx0XHRcdG1heF9haDtcbiYjNDM7XHR1MzJcdFx0XHRtYXhfZWU7XG4mIzQzO1x0dTMyXHRcdFx0bWF4X3JkZDtcbiYjNDM7XHR1MzJcdFx0XHRtYXhfbXc7XG4mIzQzO1x0dTMyXHRcdFx0bWF4X3Jhd19pcHY2X3FwO1xuJiM0MztcdHUzMlx0XHRcdG1heF9yYXdfZXRoeV9xcDtcbiYjNDM7XHR1MzJcdFx0XHRtYXhfbWNhc3RfZ3JwO1xuJiM0MztcdHUzMlx0XHRcdG1heF9tY2FzdF9xcF9hdHRhY2g7XG4mIzQzO1x0dTMyXHRcdFx0bWF4X3RvdGFsX21jYXN0X3FwX2F0dGFjaDtcbiYjNDM7XHR1MzJcdFx0XHRtYXhfYWg7XG4gXHRpbnRcdFx0XHRtYXhfc3JxO1xuLVx0aW50XHRcdFx0bWF4X3NycV93cjtcbi1cdGludFx0XHRcdG1heF9zcnFfc2dlO1xuJiM0MztcdHUzMlx0XHRcdG1heF9zcnFfd3I7XG4mIzQzO1x0dTMyXHRcdFx0bWF4X3NycV9zZ2U7XG4gXHR1bnNpZ25lZCBpbnRcdFx0bWF4X2Zhc3RfcmVnX3BhZ2VfbGlzdF9sZW47XG4gXHR1bnNpZ25lZCBpbnRcdFx0bWF4X3BpX2Zhc3RfcmVnX3BhZ2VfbGlzdF9sZW47XG4gXHR1MTZcdFx0XHRtYXhfcGtleXM7XG5kaWZmIC0tZ2l0IGEvbmV0L3Jkcy9pYi5jIGIvbmV0L3Jkcy9pYi5jXG5pbmRleCAzOWY4NzI3MmUwNzFiZi4uYzYyNjg0ZDQyNTljNGYgMTAwNjQ0XG4tLS0gYS9uZXQvcmRzL2liLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yZHMvaWIuY1xuQEAgLTE2MiwxMiAmIzQzOzE2MiwxMiBAQCBzdGF0aWMgaW50IHJkc19pYl9hZGRfb25lKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSlcbiBcdFx0ICAgSUJfT0RQX1NVUFBPUlRfUkVBRCk7XG4gXG4gXHRyZHNfaWJkZXYtXHUwMDNlbWF4XzFtX21ycyA9IGRldmljZS1cdTAwM2VhdHRycy5tYXhfbXIgP1xuLVx0XHRtaW5fdCh1bnNpZ25lZCBpbnQsIChkZXZpY2UtXHUwMDNlYXR0cnMubWF4X21yIC8gMiksXG4tXHRcdCAgICAgIHJkc19pYl9tcl8xbV9wb29sX3NpemUpIDogcmRzX2liX21yXzFtX3Bvb2xfc2l6ZTtcbiYjNDM7XHRcdG1pbihkZXZpY2UtXHUwMDNlYXR0cnMubWF4X21yIC8gMixcbiYjNDM7XHRcdCAgICByZHNfaWJfbXJfMW1fcG9vbF9zaXplKSA6IHJkc19pYl9tcl8xbV9wb29sX3NpemU7XG4gXG4gXHRyZHNfaWJkZXYtXHUwMDNlbWF4XzhrX21ycyA9IGRldmljZS1cdTAwM2VhdHRycy5tYXhfbXIgP1xuLVx0XHRtaW5fdCh1bnNpZ25lZCBpbnQsICgoZGV2aWNlLVx1MDAzZWF0dHJzLm1heF9tciAvIDIpICogUkRTX01SXzhLX1NDQUxFKSxcbi1cdFx0ICAgICAgcmRzX2liX21yXzhrX3Bvb2xfc2l6ZSkgOiByZHNfaWJfbXJfOGtfcG9vbF9zaXplO1xuJiM0MztcdFx0bWluKChkZXZpY2UtXHUwMDNlYXR0cnMubWF4X21yIC8gMikgKiBSRFNfTVJfOEtfU0NBTEUsXG4mIzQzO1x0XHQgICAgcmRzX2liX21yXzhrX3Bvb2xfc2l6ZSkgOiByZHNfaWJfbXJfOGtfcG9vbF9zaXplO1xuIFxuIFx0cmRzX2liZGV2LVx1MDAzZW1heF9pbml0aWF0b3JfZGVwdGggPSBkZXZpY2UtXHUwMDNlYXR0cnMubWF4X3FwX2luaXRfcmRfYXRvbTtcbiBcdHJkc19pYmRldi1cdTAwM2VtYXhfcmVzcG9uZGVyX3Jlc291cmNlcyA9IGRldmljZS1cdTAwM2VhdHRycy5tYXhfcXBfcmRfYXRvbTtcbkBAIC0yMDQsNyAmIzQzOzIwNCw3IEBAIHN0YXRpYyBpbnQgcmRzX2liX2FkZF9vbmUoc3RydWN0IGliX2RldmljZSAqZGV2aWNlKVxuIFx0XHRnb3RvIHB1dF9kZXY7XG4gXHR9XG4gXG4tXHRyZHNkZWJ1ZyhcJiMzNDtSRFMvSUI6IG1heF9tciA9ICVkLCBtYXhfd3JzID0gJWQsIG1heF9zZ2UgPSAlZCwgbWF4XzFtX21ycyA9ICVkLCBtYXhfOGtfbXJzID0gJWRcXG5cJiMzNDssXG4mIzQzO1x0cmRzZGVidWcoXCYjMzQ7UkRTL0lCOiBtYXhfbXIgPSAldSwgbWF4X3dycyA9ICVkLCBtYXhfc2dlID0gJWQsIG1heF8xbV9tcnMgPSAlZCwgbWF4XzhrX21ycyA9ICVkXFxuXCYjMzQ7LFxuIFx0XHQgZGV2aWNlLVx1MDAzZWF0dHJzLm1heF9tciwgcmRzX2liZGV2LVx1MDAzZW1heF93cnMsIHJkc19pYmRldi1cdTAwM2VtYXhfc2dlLFxuIFx0XHQgcmRzX2liZGV2LVx1MDAzZW1heF8xbV9tcnMsIHJkc19pYmRldi1cdTAwM2VtYXhfOGtfbXJzKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvcmRzL2liX2NtLmMgYi9uZXQvcmRzL2liX2NtLmNcbmluZGV4IDU2NjdmMDE3M2I0N2YyLi4xN2U1ODdjMzAwNzY2MyAxMDA2NDRcbi0tLSBhL25ldC9yZHMvaWJfY20uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3Jkcy9pYl9jbS5jXG5AQCAtMTczLDExICYjNDM7MTczLDExIEBAIHN0YXRpYyB2b2lkIHJkc19pYl9jbV9maWxsX2Nvbm5fcGFyYW0oc3RydWN0IHJkc19jb25uZWN0aW9uICpjb25uLFxuIFxuIFx0bWVtc2V0KGNvbm5fcGFyYW0sIDAsIHNpemVvZihzdHJ1Y3QgcmRtYV9jb25uX3BhcmFtKSk7XG4gXG4tXHRjb25uX3BhcmFtLVx1MDAzZXJlc3BvbmRlcl9yZXNvdXJjZXMgPVxuLVx0XHRtaW5fdCh1MzIsIHJkc19pYmRldi1cdTAwM2VtYXhfcmVzcG9uZGVyX3Jlc291cmNlcywgbWF4X3Jlc3BvbmRlcl9yZXNvdXJjZXMpO1xuLVx0Y29ubl9wYXJhbS1cdTAwM2Vpbml0aWF0b3JfZGVwdGggPVxuLVx0XHRtaW5fdCh1MzIsIHJkc19pYmRldi1cdTAwM2VtYXhfaW5pdGlhdG9yX2RlcHRoLCBtYXhfaW5pdGlhdG9yX2RlcHRoKTtcbi1cdGNvbm5fcGFyYW0tXHUwMDNlcmV0cnlfY291bnQgPSBtaW5fdCh1bnNpZ25lZCBpbnQsIHJkc19pYl9yZXRyeV9jb3VudCwgNyk7XG4mIzQzO1x0Y29ubl9wYXJhbS1cdTAwM2VyZXNwb25kZXJfcmVzb3VyY2VzID0gbWluMyhyZHNfaWJkZXYtXHUwMDNlbWF4X3Jlc3BvbmRlcl9yZXNvdXJjZXMsXG4mIzQzO1x0XHRcdFx0XHQgICAgICAgbWF4X3Jlc3BvbmRlcl9yZXNvdXJjZXMsIFU4X01BWCk7XG4mIzQzO1x0Y29ubl9wYXJhbS1cdTAwM2Vpbml0aWF0b3JfZGVwdGggPSBtaW4zKHJkc19pYmRldi1cdTAwM2VtYXhfaW5pdGlhdG9yX2RlcHRoLFxuJiM0MztcdFx0XHRcdFx0ICAgbWF4X2luaXRpYXRvcl9kZXB0aCwgVThfTUFYKTtcbiYjNDM7XHRjb25uX3BhcmFtLVx1MDAzZXJldHJ5X2NvdW50ID0gbWluKHJkc19pYl9yZXRyeV9jb3VudCwgN1UpO1xuIFx0Y29ubl9wYXJhbS1cdTAwM2VybnJfcmV0cnlfY291bnQgPSA3O1xuIFxuIFx0aWYgKGRwKSB7XG5kaWZmIC0tZ2l0IGEvbmV0L3N1bnJwYy94cHJ0cmRtYS9mcndyX29wcy5jIGIvbmV0L3N1bnJwYy94cHJ0cmRtYS9mcndyX29wcy5jXG5pbmRleCA3Zjc5YTBhMjYwMWU2NS4uYjJlNDM3YWZlMDlkYWEgMTAwNjQ0XG4tLS0gYS9uZXQvc3VucnBjL3hwcnRyZG1hL2Zyd3Jfb3BzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zdW5ycGMveHBydHJkbWEvZnJ3cl9vcHMuY1xuQEAgLTE3Miw4ICYjNDM7MTcyLDkgQEAgaW50IGZyd3JfbXJfaW5pdChzdHJ1Y3QgcnBjcmRtYV94cHJ0ICpyX3hwcnQsIHN0cnVjdCBycGNyZG1hX21yICptcilcbiBpbnQgZnJ3cl9xdWVyeV9kZXZpY2Uoc3RydWN0IHJwY3JkbWFfZXAgKmVwLCBjb25zdCBzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGliX2RldmljZV9hdHRyICphdHRycyA9IFx1MDAyNmRldmljZS1cdTAwM2VhdHRycztcbi1cdGludCBtYXhfcXBfd3IsIGRlcHRoLCBkZWx0YTtcbiBcdHVuc2lnbmVkIGludCBtYXhfc2dlO1xuJiM0MztcdHUzMiBtYXhfcXBfd3I7XG4mIzQzO1x0aW50IGRlcHRoLCBkZWx0YTtcbiBcbiBcdGlmICghKGF0dHJzLVx1MDAzZWRldmljZV9jYXBfZmxhZ3MgXHUwMDI2IElCX0RFVklDRV9NRU1fTUdUX0VYVEVOU0lPTlMpIHx8XG4gXHQgICAgYXR0cnMtXHUwMDNlbWF4X2Zhc3RfcmVnX3BhZ2VfbGlzdF9sZW4gPT0gMCkge1xuQEAgLTIyOSwxMCAmIzQzOzIzMCwxMCBAQCBpbnQgZnJ3cl9xdWVyeV9kZXZpY2Uoc3RydWN0IHJwY3JkbWFfZXAgKmVwLCBjb25zdCBzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UpXG4gXHR9XG4gXG4gXHRtYXhfcXBfd3IgPSBhdHRycy1cdTAwM2VtYXhfcXBfd3I7XG4mIzQzO1x0aWYgKG1heF9xcF93ciBcdTAwM2MgUlBDUkRNQV9CQUNLV0FSRF9XUlMgJiM0MzsgMSAmIzQzOyBSUENSRE1BX01JTl9TTE9UX1RBQkxFKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9NRU07XG4gXHRtYXhfcXBfd3IgLT0gUlBDUkRNQV9CQUNLV0FSRF9XUlM7XG4gXHRtYXhfcXBfd3IgLT0gMTtcbi1cdGlmIChtYXhfcXBfd3IgXHUwMDNjIFJQQ1JETUFfTUlOX1NMT1RfVEFCTEUpXG4tXHRcdHJldHVybiAtRU5PTUVNO1xuIFx0aWYgKGVwLVx1MDAzZXJlX21heF9yZXF1ZXN0cyBcdTAwM2UgbWF4X3FwX3dyKVxuIFx0XHRlcC1cdTAwM2VyZV9tYXhfcmVxdWVzdHMgPSBtYXhfcXBfd3I7XG4gXHRlcC1cdTAwM2VyZV9hdHRyLmNhcC5tYXhfc2VuZF93ciA9IGVwLVx1MDAzZXJlX21heF9yZXF1ZXN0cyAqIGRlcHRoO1xuZGlmZiAtLWdpdCBhL25ldC9zdW5ycGMveHBydHJkbWEvc3ZjX3JkbWFfdHJhbnNwb3J0LmMgYi9uZXQvc3VucnBjL3hwcnRyZG1hL3N2Y19yZG1hX3RyYW5zcG9ydC5jXG5pbmRleCBmMThiYzYwZDlmNGZmYS4uYzc2OGNkYTJlNTQ0NGEgMTAwNjQ0XG4tLS0gYS9uZXQvc3VucnBjL3hwcnRyZG1hL3N2Y19yZG1hX3RyYW5zcG9ydC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc3VucnBjL3hwcnRyZG1hL3N2Y19yZG1hX3RyYW5zcG9ydC5jXG5AQCAtNTQ0LDggJiM0Mzs1NDQsNyBAQCBzdGF0aWMgc3RydWN0IHN2Y194cHJ0ICpzdmNfcmRtYV9hY2NlcHQoc3RydWN0IHN2Y194cHJ0ICp4cHJ0KVxuIFx0c2V0X2JpdChSRE1BWFBSVF9DT05OX1BFTkRJTkcsIFx1MDAyNm5ld3hwcnQtXHUwMDNlc2NfZmxhZ3MpO1xuIFx0bWVtc2V0KFx1MDAyNmNvbm5fcGFyYW0sIDAsIHNpemVvZiBjb25uX3BhcmFtKTtcbiBcdGNvbm5fcGFyYW0ucmVzcG9uZGVyX3Jlc291cmNlcyA9IDA7XG4tXHRjb25uX3BhcmFtLmluaXRpYXRvcl9kZXB0aCA9IG1pbl90KGludCwgbmV3eHBydC1cdTAwM2VzY19vcmQsXG4tXHRcdFx0XHRcdCAgIGRldi1cdTAwM2VhdHRycy5tYXhfcXBfaW5pdF9yZF9hdG9tKTtcbiYjNDM7XHRjb25uX3BhcmFtLmluaXRpYXRvcl9kZXB0aCA9IG1pbihuZXd4cHJ0LVx1MDAzZXNjX29yZCwgZGV2LVx1MDAzZWF0dHJzLm1heF9xcF9pbml0X3JkX2F0b20pO1xuIFx0aWYgKCFjb25uX3BhcmFtLmluaXRpYXRvcl9kZXB0aCkge1xuIFx0XHRyZXQgPSAtRUlOVkFMO1xuIFx0XHR0cmFjZV9zdmNyZG1hX2luaXRkZXB0aF9lcnIobmV3eHBydCwgcmV0KTtcbkBAIC01NzAsNyAmIzQzOzU2OSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3ZjX3hwcnQgKnN2Y19yZG1hX2FjY2VwdChzdHJ1Y3Qgc3ZjX3hwcnQgKnhwcnQpXG4gXHRcdGRwcmludGsoXCYjMzQ7ICAgIGxvY2FsIGFkZHJlc3MgICA6ICVwSVM6JXVcXG5cJiMzNDssIHNhcCwgcnBjX2dldF9wb3J0KHNhcCkpO1xuIFx0XHRzYXAgPSAoc3RydWN0IHNvY2thZGRyICopXHUwMDI2bmV3eHBydC1cdTAwM2VzY19jbV9pZC1cdTAwM2Vyb3V0ZS5hZGRyLmRzdF9hZGRyO1xuIFx0XHRkcHJpbnRrKFwmIzM0OyAgICByZW1vdGUgYWRkcmVzcyAgOiAlcElTOiV1XFxuXCYjMzQ7LCBzYXAsIHJwY19nZXRfcG9ydChzYXApKTtcbi1cdFx0ZHByaW50ayhcJiMzNDsgICAgbWF4X3NnZSAgICAgICAgIDogJWRcXG5cJiMzNDssIG5ld3hwcnQtXHUwMDNlc2NfbWF4X3NlbmRfc2dlcyk7XG4mIzQzO1x0XHRkcHJpbnRrKFwmIzM0OyAgICBtYXhfc2dlICAgICAgICAgOiAldVxcblwmIzM0OywgbmV3eHBydC1cdTAwM2VzY19tYXhfc2VuZF9zZ2VzKTtcbiBcdFx0ZHByaW50ayhcJiMzNDsgICAgc3FfZGVwdGggICAgICAgIDogJWRcXG5cJiMzNDssIG5ld3hwcnQtXHUwMDNlc2Nfc3FfZGVwdGgpO1xuIFx0XHRkcHJpbnRrKFwmIzM0OyAgICByZG1hX3J3X2N0eHMgICAgOiAlZFxcblwmIzM0OywgY3R4dHMpO1xuIFx0XHRkcHJpbnRrKFwmIzM0OyAgICBtYXhfcmVxdWVzdHMgICAgOiAlZFxcblwmIzM0OywgbmV3eHBydC1cdTAwM2VzY19tYXhfcmVxdWVzdHMpO1xuZGlmZiAtLWdpdCBhL25ldC9zdW5ycGMveHBydHJkbWEvdmVyYnMuYyBiL25ldC9zdW5ycGMveHBydHJkbWEvdmVyYnMuY1xuaW5kZXggYWVjZjljMGExNTNmMzYuLjhlZDlkYTZkMmQyZjc3IDEwMDY0NFxuLS0tIGEvbmV0L3N1bnJwYy94cHJ0cmRtYS92ZXJicy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc3VucnBjL3hwcnRyZG1hL3ZlcmJzLmNcbkBAIC00NTMsNyAmIzQzOzQ1Myw3IEBAIHN0YXRpYyBpbnQgcnBjcmRtYV9lcF9jcmVhdGUoc3RydWN0IHJwY3JkbWFfeHBydCAqcl94cHJ0KVxuIFx0LyogQ2xpZW50IG9mZmVycyBSRE1BIFJlYWQgYnV0IGRvZXMgbm90IGluaXRpYXRlICovXG4gXHRlcC1cdTAwM2VyZV9yZW1vdGVfY21hLmluaXRpYXRvcl9kZXB0aCA9IDA7XG4gXHRlcC1cdTAwM2VyZV9yZW1vdGVfY21hLnJlc3BvbmRlcl9yZXNvdXJjZXMgPVxuLVx0XHRtaW5fdChpbnQsIFU4X01BWCwgZGV2aWNlLVx1MDAzZWF0dHJzLm1heF9xcF9yZF9hdG9tKTtcbiYjNDM7XHRcdG1pbihkZXZpY2UtXHUwMDNlYXR0cnMubWF4X3FwX3JkX2F0b20sIFU4X01BWCk7XG4gXG4gXHQvKiBMaW1pdCB0cmFuc3BvcnQgcmV0cmllcyBzbyBjbGllbnQgY2FuIGRldGVjdCBzZXJ2ZXJcbiBcdCAqIEdJRCBjaGFuZ2VzIHF1aWNrbHkuIFJQQyBsYXllciBoYW5kbGVzIHJlLWVzdGFibGlzaGluZ1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JETUFfUlhFJiMzNDssCiAgICAmIzM0O05WTUVfUkRNQSYjMzQ7LAogICAgJiMzNDtOVk1FX1RBUkdFVF9SRE1BJiMzNDssCiAgICAmIzM0O1NVTlJQQ19YUFJUX1JETUEmIzM0OywKICAgICYjMzQ7Q0lGU19TTUJfRElSRUNUJiMzNDssCiAgICAmIzM0O1NNQl9TRVJWRVJfU01CRElSRUNUJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfU1JQJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfU1JQVCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX0lTRVImIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9JU0VSVCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX1JUUlNfQ0xJRU5UJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfUlRSU19TRVJWRVImIzM0OywKICAgICYjMzQ7UkRTX1JETUEmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9JUE9JQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O252bWVfcmRtYV9maW5kX2dldF9kZXZpY2UmIzM0OywKICAgICYjMzQ7bnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2UmIzM0OywKICAgICYjMzQ7ZnJ3cl9xdWVyeV9kZXZpY2UmIzM0OywKICAgICYjMzQ7cnhlX3FwX2Noa19jYXAmIzM0OywKICAgICYjMzQ7cnhlX3NycV9jaGtfaW5pdCYjMzQ7LAogICAgJiMzNDtzbWJkaXJlY3RfY29ubmVjdGlvbl9jcmVhdGVfcXAmIzM0OywKICAgICYjMzQ7cmRzX2liX2NtX2ZpbGxfY29ubl9wYXJhbSYjMzQ7LAogICAgJiMzNDtzdmNfcmRtYV9hY2NlcHQmIzM0OywKICAgICYjMzQ7cnBjcmRtYV9lcF9jcmVhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZXMgb2YgdmFyaW91cyBSRE1BIGRldmljZSBhdHRyaWJ1dGVzIGZyb20gYGludGAgdG8gYHUzMmAgYW5kIHVwZGF0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgYG1pbigpYCBjYWxscyBhbmQgZm9ybWF0IHN0cmluZ3MuIEl0IGFsc28gZml4ZXMgc29tZSBwb3RlbnRpYWwgdW5kZXJmbG93cyBpbiBjb25uZWN0aW9uIHNldHVwIGZ1bmN0aW9ucy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgUkRNQSBsb2dpYyBhbmQgdmFyaW91cyBSRE1BIFVMUHMgKFVwcGVyIExheWVyIFByb3RvY29scykgd2hpY2ggY2FuIGJlIHRlc3RlZCB1c2luZyB0aGUgc29mdHdhcmUgUkRNQSBkcml2ZXIgKFJYRSkuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyBpbnRlZ2VyIG92ZXJmbG93L3VuZGVyZmxvdyBidWdzIHdlcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMzAyNTM5MGIwOTM1OWUxOTA0ZDIzOWExYjI3NDE2MTQ0ODRiZTcyNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVuIDE5IDIwOjQ2OjIzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvY3EuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL2NxLmMKaW5kZXggM2Q3YjZjZGRkMTMxYzQuLmVlOTgxODhlNTdmYjVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvY29yZS9jcS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL2NxLmMKQEAgLTM5Myw4ICYjNDM7MzkzLDcgQEAgc3RhdGljIGludCBpYl9hbGxvY19jcXMoc3RydWN0IGliX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgbnJfY3FlcywKIAkgKiBhIHJlYXNvbmFibGUgYmF0Y2ggc2l6ZSBzbyB0aGF0IHdlIGNhbiBzaGFyZSBDUXMgYmV0d2VlbgogCSAqIG11bHRpcGxlIHVzZXJzIGluc3RlYWQgb2YgYWxsb2NhdGluZyBhIGxhcmdlciBudW1iZXIgb2YgQ1FzLgogCSAqLwotCW5yX2NxZXMgPSBtaW5fdCh1bnNpZ25lZCBpbnQsIGRldi0mZ3Q7YXR0cnMubWF4X2NxZSwKLQkJCW1heChucl9jcWVzLCBJQl9NQVhfU0hBUkVEX0NRX1NaKSk7CiYjNDM7CW5yX2NxZXMgPSBtaW4oZGV2LSZndDthdHRycy5tYXhfY3FlLCBtYXgobnJfY3FlcywgSUJfTUFYX1NIQVJFRF9DUV9TWikpOwogCW5yX2NxcyA9IG1pbl90KHVuc2lnbmVkIGludCwgZGV2LSZndDtudW1fY29tcF92ZWN0b3JzLCBudW1fb25saW5lX2NwdXMoKSk7CiAJZm9yIChpID0gMDsgaSAmbHQ7IG5yX2NxczsgaSYjNDM7JiM0MzspIHsKIAkJY3EgPSBpYl9hbGxvY19jcShkZXYsIE5VTEwsIG5yX2NxZXMsIGksIHBvbGxfY3R4KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xZWRyL3ZlcmJzLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWVkci92ZXJicy5jCmluZGV4IDY3OWFhNmYzYTYzYmM1Li5hODVhZDAxNzExMzQ4ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FlZHIvdmVyYnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWVkci92ZXJicy5jCkBAIC0xNTEsNyAmIzQzOzE1MSw3IEBAIGludCBxZWRyX3F1ZXJ5X2RldmljZShzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwKIAlhdHRyLSZndDttYXhfcXBfaW5pdF9yZF9hdG9tID0KIAkgICAgMSAmbHQ7Jmx0OyAoZmxzKHFhdHRyLSZndDttYXhfcXBfcmVxX3JkX2F0b21pY19yZXNjKSAtIDEpOwogCWF0dHItJmd0O21heF9xcF9yZF9hdG9tID0KLQkgICAgbWluKDEgJmx0OyZsdDsgKGZscyhxYXR0ci0mZ3Q7bWF4X3FwX3Jlc3BfcmRfYXRvbWljX3Jlc2MpIC0gMSksCiYjNDM7CSAgICBtaW4oMVUgJmx0OyZsdDsgKGZscyhxYXR0ci0mZ3Q7bWF4X3FwX3Jlc3BfcmRfYXRvbWljX3Jlc2MpIC0gMSksCiAJCWF0dHItJmd0O21heF9xcF9pbml0X3JkX2F0b20pOwogCiAJYXR0ci0mZ3Q7bWF4X3NycSA9IHFhdHRyLSZndDttYXhfc3JxOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfcXAuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3FwLmMKaW5kZXggZjNkZmYxYWVhOTZhZmMuLjdhMDUyOWExNzk5MmM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3FwLmMKQEAgLTY3LDI3ICYjNDM7NjcsMjcgQEAgc3RhdGljIGludCByeGVfcXBfY2hrX2NhcChzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgaWJfcXBfY2FwICpjYXAsCiAJCQkgIGludCBoYXNfc3JxKQogewogCWlmIChjYXAtJmd0O21heF9zZW5kX3dyICZndDsgcnhlLSZndDthdHRyLm1heF9xcF93cikgewotCQlyeGVfZGJnX2RldihyeGUsICYjMzQ7aW52YWxpZCBzZW5kIHdyID0gJXUgJmd0OyAlZFxuJiMzNDssCi0JCQkgY2FwLSZndDttYXhfc2VuZF93ciwgcnhlLSZndDthdHRyLm1heF9xcF93cik7CiYjNDM7CQlyeGVfZGJnX2RldihyeGUsICYjMzQ7aW52YWxpZCBzZW5kIHdyID0gJXUgJmd0OyAldVxuJiMzNDssCiYjNDM7CQkJICAgIGNhcC0mZ3Q7bWF4X3NlbmRfd3IsIHJ4ZS0mZ3Q7YXR0ci5tYXhfcXBfd3IpOwogCQlnb3RvIGVycjE7CiAJfQogCiAJaWYgKGNhcC0mZ3Q7bWF4X3NlbmRfc2dlICZndDsgcnhlLSZndDthdHRyLm1heF9zZW5kX3NnZSkgewotCQlyeGVfZGJnX2RldihyeGUsICYjMzQ7aW52YWxpZCBzZW5kIHNnZSA9ICV1ICZndDsgJWRcbiYjMzQ7LAotCQkJIGNhcC0mZ3Q7bWF4X3NlbmRfc2dlLCByeGUtJmd0O2F0dHIubWF4X3NlbmRfc2dlKTsKJiM0MzsJCXJ4ZV9kYmdfZGV2KHJ4ZSwgJiMzNDtpbnZhbGlkIHNlbmQgc2dlID0gJXUgJmd0OyAldVxuJiMzNDssCiYjNDM7CQkJICAgIGNhcC0mZ3Q7bWF4X3NlbmRfc2dlLCByeGUtJmd0O2F0dHIubWF4X3NlbmRfc2dlKTsKIAkJZ290byBlcnIxOwogCX0KIAogCWlmICghaGFzX3NycSkgewogCQlpZiAoY2FwLSZndDttYXhfcmVjdl93ciAmZ3Q7IHJ4ZS0mZ3Q7YXR0ci5tYXhfcXBfd3IpIHsKLQkJCXJ4ZV9kYmdfZGV2KHJ4ZSwgJiMzNDtpbnZhbGlkIHJlY3Ygd3IgPSAldSAmZ3Q7ICVkXG4mIzM0OywKLQkJCQkgY2FwLSZndDttYXhfcmVjdl93ciwgcnhlLSZndDthdHRyLm1heF9xcF93cik7CiYjNDM7CQkJcnhlX2RiZ19kZXYocnhlLCAmIzM0O2ludmFsaWQgcmVjdiB3ciA9ICV1ICZndDsgJXVcbiYjMzQ7LAomIzQzOwkJCQkgICAgY2FwLSZndDttYXhfcmVjdl93ciwgcnhlLSZndDthdHRyLm1heF9xcF93cik7CiAJCQlnb3RvIGVycjE7CiAJCX0KIAogCQlpZiAoY2FwLSZndDttYXhfcmVjdl9zZ2UgJmd0OyByeGUtJmd0O2F0dHIubWF4X3JlY3Zfc2dlKSB7Ci0JCQlyeGVfZGJnX2RldihyeGUsICYjMzQ7aW52YWxpZCByZWN2IHNnZSA9ICV1ICZndDsgJWRcbiYjMzQ7LAotCQkJCSBjYXAtJmd0O21heF9yZWN2X3NnZSwgcnhlLSZndDthdHRyLm1heF9yZWN2X3NnZSk7CiYjNDM7CQkJcnhlX2RiZ19kZXYocnhlLCAmIzM0O2ludmFsaWQgcmVjdiBzZ2UgPSAldSAmZ3Q7ICV1XG4mIzM0OywKJiM0MzsJCQkJICAgIGNhcC0mZ3Q7bWF4X3JlY3Zfc2dlLCByeGUtJmd0O2F0dHIubWF4X3JlY3Zfc2dlKTsKIAkJCWdvdG8gZXJyMTsKIAkJfQogCX0KQEAgLTUzNyw5ICYjNDM7NTM3LDkgQEAgaW50IHJ4ZV9xcF9jaGtfYXR0cihzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgcnhlX3FwICpxcCwKIAogCWlmIChtYXNrICZhbXA7IElCX1FQX01BWF9RUF9SRF9BVE9NSUMpIHsKIAkJaWYgKGF0dHItJmd0O21heF9yZF9hdG9taWMgJmd0OyByeGUtJmd0O2F0dHIubWF4X3FwX3JkX2F0b20pIHsKLQkJCXJ4ZV9kYmdfcXAocXAsICYjMzQ7aW52YWxpZCBtYXhfcmRfYXRvbWljICVkICZndDsgJWRcbiYjMzQ7LAotCQkJCSBhdHRyLSZndDttYXhfcmRfYXRvbWljLAotCQkJCSByeGUtJmd0O2F0dHIubWF4X3FwX3JkX2F0b20pOwomIzQzOwkJCXJ4ZV9kYmdfcXAocXAsICYjMzQ7aW52YWxpZCBtYXhfcmRfYXRvbWljICV1ICZndDsgJXVcbiYjMzQ7LAomIzQzOwkJCQkgICBhdHRyLSZndDttYXhfcmRfYXRvbWljLAomIzQzOwkJCQkgICByeGUtJmd0O2F0dHIubWF4X3FwX3JkX2F0b20pOwogCQkJZ290byBlcnIxOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfc3JxLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9zcnEuYwppbmRleCBjOWE3Y2QzODk1M2QzMS4uNzQ5MDRhNmZkZjJiMjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3NycS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3NycS5jCkBAIC0xMyw4ICYjNDM7MTMsOCBAQCBpbnQgcnhlX3NycV9jaGtfaW5pdChzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgaWJfc3JxX2luaXRfYXR0ciAqaW5pdCkKIAlzdHJ1Y3QgaWJfc3JxX2F0dHIgKmF0dHIgPSAmYW1wO2luaXQtJmd0O2F0dHI7CiAKIAlpZiAoYXR0ci0mZ3Q7bWF4X3dyICZndDsgcnhlLSZndDthdHRyLm1heF9zcnFfd3IpIHsKLQkJcnhlX2RiZ19kZXYocnhlLCAmIzM0O21heF93ciglZCkgJmd0OyBtYXhfc3JxX3dyKCVkKVxuJiMzNDssCi0JCQlhdHRyLSZndDttYXhfd3IsIHJ4ZS0mZ3Q7YXR0ci5tYXhfc3JxX3dyKTsKJiM0MzsJCXJ4ZV9kYmdfZGV2KHJ4ZSwgJiMzNDttYXhfd3IoJXUpICZndDsgbWF4X3NycV93cigldSlcbiYjMzQ7LAomIzQzOwkJCSAgICBhdHRyLSZndDttYXhfd3IsIHJ4ZS0mZ3Q7YXR0ci5tYXhfc3JxX3dyKTsKIAkJZ290byBlcnIxOwogCX0KIApAQCAtMjcsOCAmIzQzOzI3LDggQEAgaW50IHJ4ZV9zcnFfY2hrX2luaXQoc3RydWN0IHJ4ZV9kZXYgKnJ4ZSwgc3RydWN0IGliX3NycV9pbml0X2F0dHIgKmluaXQpCiAJCWF0dHItJmd0O21heF93ciA9IFJYRV9NSU5fU1JRX1dSOwogCiAJaWYgKGF0dHItJmd0O21heF9zZ2UgJmd0OyByeGUtJmd0O2F0dHIubWF4X3NycV9zZ2UpIHsKLQkJcnhlX2RiZ19kZXYocnhlLCAmIzM0O21heF9zZ2UoJWQpICZndDsgbWF4X3NycV9zZ2UoJWQpXG4mIzM0OywKLQkJCWF0dHItJmd0O21heF9zZ2UsIHJ4ZS0mZ3Q7YXR0ci5tYXhfc3JxX3NnZSk7CiYjNDM7CQlyeGVfZGJnX2RldihyeGUsICYjMzQ7bWF4X3NnZSgldSkgJmd0OyBtYXhfc3JxX3NnZSgldSlcbiYjMzQ7LAomIzQzOwkJCSAgICBhdHRyLSZndDttYXhfc2dlLCByeGUtJmd0O2F0dHIubWF4X3NycV9zZ2UpOwogCQlnb3RvIGVycjE7CiAJfQogCkBAIC0xMDcsOCAmIzQzOzEwNyw4IEBAIGludCByeGVfc3JxX2Noa19hdHRyKHN0cnVjdCByeGVfZGV2ICpyeGUsIHN0cnVjdCByeGVfc3JxICpzcnEsCiAKIAlpZiAobWFzayAmYW1wOyBJQl9TUlFfTUFYX1dSKSB7CiAJCWlmIChhdHRyLSZndDttYXhfd3IgJmd0OyByeGUtJmd0O2F0dHIubWF4X3NycV93cikgewotCQkJcnhlX2RiZ19zcnEoc3JxLCAmIzM0O21heF93ciglZCkgJmd0OyBtYXhfc3JxX3dyKCVkKVxuJiMzNDssCi0JCQkJYXR0ci0mZ3Q7bWF4X3dyLCByeGUtJmd0O2F0dHIubWF4X3NycV93cik7CiYjNDM7CQkJcnhlX2RiZ19zcnEoc3JxLCAmIzM0O21heF93cigldSkgJmd0OyBtYXhfc3JxX3dyKCV1KVxuJiMzNDssCiYjNDM7CQkJCSAgICBhdHRyLSZndDttYXhfd3IsIHJ4ZS0mZ3Q7YXR0ci5tYXhfc3JxX3dyKTsKIAkJCWdvdG8gZXJyMTsKIAkJfQogCkBAIC0xMjksOCAmIzQzOzEyOSw4IEBAIGludCByeGVfc3JxX2Noa19hdHRyKHN0cnVjdCByeGVfZGV2ICpyeGUsIHN0cnVjdCByeGVfc3JxICpzcnEsCiAKIAlpZiAobWFzayAmYW1wOyBJQl9TUlFfTElNSVQpIHsKIAkJaWYgKGF0dHItJmd0O3NycV9saW1pdCAmZ3Q7IHJ4ZS0mZ3Q7YXR0ci5tYXhfc3JxX3dyKSB7Ci0JCQlyeGVfZGJnX3NycShzcnEsICYjMzQ7c3JxX2xpbWl0KCVkKSAmZ3Q7IG1heF9zcnFfd3IoJWQpXG4mIzM0OywKLQkJCQlhdHRyLSZndDtzcnFfbGltaXQsIHJ4ZS0mZ3Q7YXR0ci5tYXhfc3JxX3dyKTsKJiM0MzsJCQlyeGVfZGJnX3NycShzcnEsICYjMzQ7c3JxX2xpbWl0KCV1KSAmZ3Q7IG1heF9zcnFfd3IoJXUpXG4mIzM0OywKJiM0MzsJCQkJICAgIGF0dHItJmd0O3NycV9saW1pdCwgcnhlLSZndDthdHRyLm1heF9zcnFfd3IpOwogCQkJZ290byBlcnIxOwogCQl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfY20uYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfY20uYwppbmRleCA1N2ZlYzg4YTE2MjkwYS4uZWQwNTkyODk4Mzg0ZDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfY20uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX2NtLmMKQEAgLTEwNzEsOCAmIzQzOzEwNzEsNyBAQCBzdGF0aWMgc3RydWN0IGliX3FwICppcG9pYl9jbV9jcmVhdGVfdHhfcXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlwb2liXwogCXN0cnVjdCBpYl9xcCAqdHhfcXA7CiAKIAlpZiAoZGV2LSZndDtmZWF0dXJlcyAmYW1wOyBORVRJRl9GX1NHKQotCQlhdHRyLmNhcC5tYXhfc2VuZF9zZ2UgPSBtaW5fdCh1MzIsIHByaXYtJmd0O2NhLSZndDthdHRycy5tYXhfc2VuZF9zZ2UsCi0JCQkJCSAgICAgIE1BWF9TS0JfRlJBR1MgJiM0MzsgMSk7CiYjNDM7CQlhdHRyLmNhcC5tYXhfc2VuZF9zZ2UgPSBtaW4ocHJpdi0mZ3Q7Y2EtJmd0O2F0dHJzLm1heF9zZW5kX3NnZSwgTUFYX1NLQl9GUkFHUyAmIzQzOyAxKTsKIAogCXR4X3FwID0gaWJfY3JlYXRlX3FwKHByaXYtJmd0O3BkLCAmYW1wO2F0dHIpOwogCXR4LSZndDttYXhfc2VuZF9zZ2UgPSBhdHRyLmNhcC5tYXhfc2VuZF9zZ2U7CkBAIC0xNTgyLDcgJiM0MzsxNTgxLDggQEAgc3RhdGljIHZvaWQgaXBvaWJfY21fY3JlYXRlX3NycShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbWF4X3NnZSkKIGludCBpcG9pYl9jbV9kZXZfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewogCXN0cnVjdCBpcG9pYl9kZXZfcHJpdiAqcHJpdiA9IGlwb2liX3ByaXYoZGV2KTsKLQlpbnQgbWF4X3NycV9zZ2UsIGk7CiYjNDM7CXUzMiBtYXhfc3JxX3NnZTsKJiM0MzsJaW50IGk7CiAJdTggYWRkcjsKIAogCUlOSVRfTElTVF9IRUFEKCZhbXA7cHJpdi0mZ3Q7Y20ucGFzc2l2ZV9pZHMpOwpAQCAtMTYwMCw5ICYjNDM7MTYwMCw5IEBAIGludCBpcG9pYl9jbV9kZXZfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCiAJc2tiX3F1ZXVlX2hlYWRfaW5pdCgmYW1wO3ByaXYtJmd0O2NtLnNrYl9xdWV1ZSk7CiAKLQlpcG9pYl9kYmcocHJpdiwgJiMzNDttYXhfc3JxX3NnZT0lZFxuJiMzNDssIHByaXYtJmd0O2NhLSZndDthdHRycy5tYXhfc3JxX3NnZSk7CiYjNDM7CWlwb2liX2RiZyhwcml2LCAmIzM0O21heF9zcnFfc2dlPSV1XG4mIzM0OywgcHJpdi0mZ3Q7Y2EtJmd0O2F0dHJzLm1heF9zcnFfc2dlKTsKIAotCW1heF9zcnFfc2dlID0gbWluX3QoaW50LCBJUE9JQl9DTV9SWF9TRywgcHJpdi0mZ3Q7Y2EtJmd0O2F0dHJzLm1heF9zcnFfc2dlKTsKJiM0MzsJbWF4X3NycV9zZ2UgPSBtaW4ocHJpdi0mZ3Q7Y2EtJmd0O2F0dHJzLm1heF9zcnFfc2dlLCBJUE9JQl9DTV9SWF9TRyk7CiAJaXBvaWJfY21fY3JlYXRlX3NycShkZXYsIG1heF9zcnFfc2dlKTsKIAlpZiAoaXBvaWJfY21faGFzX3NycShkZXYpKSB7CiAJCXByaXYtJmd0O2NtLm1heF9jbV9tdHUgPSBtYXhfc3JxX3NnZSAqIFBBR0VfU0laRSAtIDB4MTA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX3ZlcmJzLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX3ZlcmJzLmMKaW5kZXggM2VkMWVhNTY2NjkwZGQuLjI0OTA2OTZhMWFhYmM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX3ZlcmJzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYl92ZXJicy5jCkBAIC0xNDcsOCAmIzQzOzE0Nyw3IEBAIGludCBpcG9pYl90cmFuc3BvcnRfZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGliX2RldmljZSAqY2EpCiAJCS5jYXAgPSB7CiAJCQkubWF4X3NlbmRfd3IgID0gaXBvaWJfc2VuZHFfc2l6ZSwKIAkJCS5tYXhfcmVjdl93ciAgPSBpcG9pYl9yZWN2cV9zaXplLAotCQkJLm1heF9zZW5kX3NnZSA9IG1pbl90KHUzMiwgcHJpdi0mZ3Q7Y2EtJmd0O2F0dHJzLm1heF9zZW5kX3NnZSwKLQkJCQkJICAgICAgTUFYX1NLQl9GUkFHUyAmIzQzOyAxKSwKJiM0MzsJCQkubWF4X3NlbmRfc2dlID0gbWluKHByaXYtJmd0O2NhLSZndDthdHRycy5tYXhfc2VuZF9zZ2UsIE1BWF9TS0JfRlJBR1MgJiM0MzsgMSksCiAJCQkubWF4X3JlY3Zfc2dlID0gSVBPSUJfVURfUlhfU0cKIAkJfSwKIAkJLnNxX3NpZ190eXBlID0gSUJfU0lHTkFMX0FMTF9XUiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlci9pc2VyX3ZlcmJzLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvaXNlcl92ZXJicy5jCmluZGV4IGYwM2IzYmIzYzBjNGMxLi41NWZlNjhlNWI4Mzc1ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL2lzZXJfdmVyYnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvaXNlcl92ZXJicy5jCkBAIC0yNDQsOCAmIzQzOzI0NCw3IEBAIHN0YXRpYyBpbnQgaXNlcl9jcmVhdGVfaWJfY29ubl9yZXMoc3RydWN0IGliX2Nvbm4gKmliX2Nvbm4pCiAJCW1heF9zZW5kX3dyID0gSVNFUl9RUF9TSUdfTUFYX1JFUV9EVE9TICYjNDM7IDE7CiAJZWxzZQogCQltYXhfc2VuZF93ciA9IElTRVJfUVBfTUFYX1JFUV9EVE9TICYjNDM7IDE7Ci0JbWF4X3NlbmRfd3IgPSBtaW5fdCh1bnNpZ25lZCBpbnQsIG1heF9zZW5kX3dyLAotCQkJICAgICh1bnNpZ25lZCBpbnQpaWJfZGV2LSZndDthdHRycy5tYXhfcXBfd3IpOwomIzQzOwltYXhfc2VuZF93ciA9IG1pbihtYXhfc2VuZF93ciwgaWJfZGV2LSZndDthdHRycy5tYXhfcXBfd3IpOwogCiAJY3Ffc2l6ZSA9IG1heF9zZW5kX3dyICYjNDM7IElTRVJfUVBfTUFYX1JFQ1ZfRFRPUzsKIAlpYl9jb25uLSZndDtjcSA9IGliX2NxX3Bvb2xfZ2V0KGliX2RldiwgY3Ffc2l6ZSwgLTEsIElCX1BPTExfU09GVElSUSk7CkBAIC01ODksNyAmIzQzOzU4OCw3IEBAIHN0YXRpYyB2b2lkIGlzZXJfcm91dGVfaGFuZGxlcihzdHJ1Y3QgcmRtYV9jbV9pZCAqY21hX2lkKQogCQlnb3RvIGZhaWx1cmU7CiAKIAltZW1zZXQoJmFtcDtjb25uX3BhcmFtLCAwLCBzaXplb2YgY29ubl9wYXJhbSk7Ci0JY29ubl9wYXJhbS5yZXNwb25kZXJfcmVzb3VyY2VzID0gaWJfZGV2LSZndDthdHRycy5tYXhfcXBfcmRfYXRvbTsKJiM0MzsJY29ubl9wYXJhbS5yZXNwb25kZXJfcmVzb3VyY2VzID0gbWluKGliX2Rldi0mZ3Q7YXR0cnMubWF4X3FwX3JkX2F0b20sIFU4X01BWCk7CiAJY29ubl9wYXJhbS5pbml0aWF0b3JfZGVwdGggPSAxOwogCWNvbm5fcGFyYW0ucmV0cnlfY291bnQgPSA3OwogCWNvbm5fcGFyYW0ucm5yX3JldHJ5X2NvdW50ID0gNjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvaWJfaXNlcnQuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvaWJfaXNlcnQuYwppbmRleCAxMDE1YTUxZjc1MGFmNC4uNDY5MTg0NWJmODE1ZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvaWJfaXNlcnQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXJ0L2liX2lzZXJ0LmMKQEAgLTIxNCw5ICYjNDM7MjE0LDkgQEAgaXNlcnRfY3JlYXRlX2RldmljZV9pYl9yZXMoc3RydWN0IGlzZXJ0X2RldmljZSAqZGV2aWNlKQogCXN0cnVjdCBpYl9kZXZpY2UgKmliX2RldiA9IGRldmljZS0mZ3Q7aWJfZGV2aWNlOwogCWludCByZXQ7CiAKLQlpc2VydF9kYmcoJiMzNDtkZXZhdHRyLSZndDttYXhfc2VuZF9zZ2U6ICVkIGRldmF0dHItJmd0O21heF9yZWN2X3NnZSAlZFxuJiMzNDssCiYjNDM7CWlzZXJ0X2RiZygmIzM0O2RldmF0dHItJmd0O21heF9zZW5kX3NnZTogJXUgZGV2YXR0ci0mZ3Q7bWF4X3JlY3Zfc2dlICV1XG4mIzM0OywKIAkJICBpYl9kZXYtJmd0O2F0dHJzLm1heF9zZW5kX3NnZSwgaWJfZGV2LSZndDthdHRycy5tYXhfcmVjdl9zZ2UpOwotCWlzZXJ0X2RiZygmIzM0O2RldmF0dHItJmd0O21heF9zZ2VfcmQ6ICVkXG4mIzM0OywgaWJfZGV2LSZndDthdHRycy5tYXhfc2dlX3JkKTsKJiM0MzsJaXNlcnRfZGJnKCYjMzQ7ZGV2YXR0ci0mZ3Q7bWF4X3NnZV9yZDogJXVcbiYjMzQ7LCBpYl9kZXYtJmd0O2F0dHJzLm1heF9zZ2VfcmQpOwogCiAJZGV2aWNlLSZndDtwZCA9IGliX2FsbG9jX3BkKGliX2RldiwgMCk7CiAJaWYgKElTX0VSUihkZXZpY2UtJmd0O3BkKSkgewpAQCAtMzgxLDggJiM0MzszODEsNyBAQCBpc2VydF9zZXRfbmVnb19wYXJhbXMoc3RydWN0IGlzZXJ0X2Nvbm4gKmlzZXJ0X2Nvbm4sCiAJc3RydWN0IGliX2RldmljZV9hdHRyICphdHRyID0gJmFtcDtpc2VydF9jb25uLSZndDtkZXZpY2UtJmd0O2liX2RldmljZS0mZ3Q7YXR0cnM7CiAKIAkvKiBTZXQgbWF4IGluZmxpZ2h0IFJETUEgUkVBRCByZXF1ZXN0cyAqLwotCWlzZXJ0X2Nvbm4tJmd0O2luaXRpYXRvcl9kZXB0aCA9IG1pbl90KHU4LCBwYXJhbS0mZ3Q7aW5pdGlhdG9yX2RlcHRoLAotCQkJCWF0dHItJmd0O21heF9xcF9pbml0X3JkX2F0b20pOwomIzQzOwlpc2VydF9jb25uLSZndDtpbml0aWF0b3JfZGVwdGggPSBtaW4ocGFyYW0tJmd0O2luaXRpYXRvcl9kZXB0aCwgYXR0ci0mZ3Q7bWF4X3FwX2luaXRfcmRfYXRvbSk7CiAJaXNlcnRfZGJnKCYjMzQ7VXNpbmcgaW5pdGlhdG9yX2RlcHRoOiAldVxuJiMzNDssIGlzZXJ0X2Nvbm4tJmd0O2luaXRpYXRvcl9kZXB0aCk7CiAKIAlpZiAocGFyYW0tJmd0O3ByaXZhdGVfZGF0YSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtY2x0LmMgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvcnRycy1jbHQuYwppbmRleCBlMzUxNTUyNzMzZGYyMy4uODBiMDg2OTdmOTZiNTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9ydHJzLWNsdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9ydHJzLWNsdC5jCkBAIC0xNjgxLDggJiM0MzsxNjgxLDcgQEAgc3RhdGljIGludCBjcmVhdGVfY29uX2NxX3FwKHN0cnVjdCBydHJzX2NsdF9jb24gKmNvbikKIAkJICogJiM0MzsgMiBmb3IgZHJhaW4gYW5kIGhlYXJ0YmVhdAogCQkgKiBpbiBjYXNlIHFwIGdldHMgaW50byBlcnJvciBzdGF0ZS4KIAkJICovCi0JCW1heF9zZW5kX3dyID0KLQkJCW1pbl90KGludCwgd3JfbGltaXQsIFNFUlZJQ0VfQ09OX1FVRVVFX0RFUFRIICogMiAmIzQzOyAyKTsKJiM0MzsJCW1heF9zZW5kX3dyID0gbWluKHdyX2xpbWl0LCBTRVJWSUNFX0NPTl9RVUVVRV9ERVBUSCAqIDIgJiM0MzsgMik7CiAJCW1heF9yZWN2X3dyID0gbWF4X3NlbmRfd3I7CiAJfSBlbHNlIHsKIAkJLyoKQEAgLTE2OTgsMTEgJiM0MzsxNjk3LDkgQEAgc3RhdGljIGludCBjcmVhdGVfY29uX2NxX3FwKHN0cnVjdCBydHJzX2NsdF9jb24gKmNvbikKIAkJd3JfbGltaXQgPSBjbHRfcGF0aC0mZ3Q7cy5kZXYtJmd0O2liX2Rldi0mZ3Q7YXR0cnMubWF4X3FwX3dyOwogCQkvKiBTaGFyZWQgYmV0d2VlbiBjb25uZWN0aW9ucyAqLwogCQljbHRfcGF0aC0mZ3Q7cy5kZXZfcmVmJiM0MzsmIzQzOzsKLQkJbWF4X3NlbmRfd3IgPSBtaW5fdChpbnQsIHdyX2xpbWl0LAotCQkJICAgICAgLyogUUQgKiAoUkVRICYjNDM7IFJTUCAmIzQzOyBGUiBSRUdTIG9yIElOVlMpICYjNDM7IGRyYWluICovCi0JCQkgICAgICBjbHRfcGF0aC0mZ3Q7cXVldWVfZGVwdGggKiA0ICYjNDM7IDEpOwotCQltYXhfcmVjdl93ciA9IG1pbl90KGludCwgd3JfbGltaXQsCi0JCQkgICAgICBjbHRfcGF0aC0mZ3Q7cXVldWVfZGVwdGggKiAzICYjNDM7IDEpOwomIzQzOwkJLyogUUQgKiAoUkVRICYjNDM7IFJTUCAmIzQzOyBGUiBSRUdTIG9yIElOVlMpICYjNDM7IGRyYWluICovCiYjNDM7CQltYXhfc2VuZF93ciA9IG1pbih3cl9saW1pdCwgY2x0X3BhdGgtJmd0O3F1ZXVlX2RlcHRoICogNCAmIzQzOyAxKTsKJiM0MzsJCW1heF9yZWN2X3dyID0gbWluKHdyX2xpbWl0LCBjbHRfcGF0aC0mZ3Q7cXVldWVfZGVwdGggKiAzICYjNDM7IDEpOwogCQltYXhfc2VuZF9zZ2UgPSAyOwogCX0KIAlhdG9taWNfc2V0KCZhbXA7Y29uLSZndDtjLnNxX3dyX2F2YWlsLCBtYXhfc2VuZF93cik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvcnRycy1zcnYuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9ydHJzLXNydi5jCmluZGV4IDY0ODJhZDg1OWJkMTA4Li5mNWE2ODkwMjM1YmNjNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtc3J2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtc3J2LmMKQEAgLTE3MzEsMjEgJiM0MzsxNzMxLDE2IEBAIHN0YXRpYyBpbnQgY3JlYXRlX2NvbihzdHJ1Y3QgcnRyc19zcnZfcGF0aCAqc3J2X3BhdGgsCiAJCSAqIEFsbCByZWNlaXZlIGFuZCBhbGwgc2VuZCAoZWFjaCByZXF1aXJpbmcgaW52YWxpZGF0ZSkKIAkJICogJiM0MzsgMiBmb3IgZHJhaW4gYW5kIGhlYXJ0YmVhdAogCQkgKi8KLQkJbWF4X3NlbmRfd3IgPSBtaW5fdChpbnQsIHdyX2xpbWl0LAotCQkJCSAgICBTRVJWSUNFX0NPTl9RVUVVRV9ERVBUSCAqIDIgJiM0MzsgMik7CiYjNDM7CQltYXhfc2VuZF93ciA9IG1pbih3cl9saW1pdCwgU0VSVklDRV9DT05fUVVFVUVfREVQVEggKiAyICYjNDM7IDIpOwogCQltYXhfcmVjdl93ciA9IG1heF9zZW5kX3dyOwogCQlzLSZndDtzaWduYWxfaW50ZXJ2YWwgPSBtaW5fbm90X3plcm8oc3J2LSZndDtxdWV1ZV9kZXB0aCwKIAkJCQkJCSAgKHNpemVfdClTRVJWSUNFX0NPTl9RVUVVRV9ERVBUSCk7CiAJfSBlbHNlIHsKIAkJLyogd2hlbiBhbHdheXNfaW52bGFpZGF0ZSBlbmFsYmVkLCB3ZSBuZWVkIGxpbnYmIzQzO3JpbnYmIzQzO21yJiM0MztpbW0gKi8KIAkJaWYgKGFsd2F5c19pbnZhbGlkYXRlKQotCQkJbWF4X3NlbmRfd3IgPQotCQkJCW1pbl90KGludCwgd3JfbGltaXQsCi0JCQkJICAgICAgc3J2LSZndDtxdWV1ZV9kZXB0aCAqICgxICYjNDM7IDQpICYjNDM7IDEpOwomIzQzOwkJCW1heF9zZW5kX3dyID0gbWluKHdyX2xpbWl0LCBzcnYtJmd0O3F1ZXVlX2RlcHRoICogKDEgJiM0MzsgNCkgJiM0MzsgMSk7CiAJCWVsc2UKLQkJCW1heF9zZW5kX3dyID0KLQkJCQltaW5fdChpbnQsIHdyX2xpbWl0LAotCQkJCSAgICAgIHNydi0mZ3Q7cXVldWVfZGVwdGggKiAoMSAmIzQzOyAyKSAmIzQzOyAxKTsKJiM0MzsJCQltYXhfc2VuZF93ciA9IG1pbih3cl9saW1pdCwgc3J2LSZndDtxdWV1ZV9kZXB0aCAqICgxICYjNDM7IDIpICYjNDM7IDEpOwogCiAJCW1heF9yZWN2X3dyID0gc3J2LSZndDtxdWV1ZV9kZXB0aCAmIzQzOyAxOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL2liX3NycC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnAvaWJfc3JwLmMKaW5kZXggYWNiZDc4N2RlMjY1YjUuLjBjYWViYmMyODEwZmYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycC9pYl9zcnAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycC9pYl9zcnAuYwpAQCAtNTU3LDcgJiM0Mzs1NTcsNyBAQCBzdGF0aWMgaW50IHNycF9jcmVhdGVfY2hfaWIoc3RydWN0IHNycF9yZG1hX2NoICpjaCkKIAlpbml0X2F0dHItJmd0O2NhcC5tYXhfc2VuZF93ciAgICAgPSBtICogdGFyZ2V0LSZndDtxdWV1ZV9zaXplOwogCWluaXRfYXR0ci0mZ3Q7Y2FwLm1heF9yZWN2X3dyICAgICA9IHRhcmdldC0mZ3Q7cXVldWVfc2l6ZSAmIzQzOyAxOwogCWluaXRfYXR0ci0mZ3Q7Y2FwLm1heF9yZWN2X3NnZSAgICA9IDE7Ci0JaW5pdF9hdHRyLSZndDtjYXAubWF4X3NlbmRfc2dlICAgID0gbWluKFNSUF9NQVhfU0dFLCBhdHRyLSZndDttYXhfc2VuZF9zZ2UpOwomIzQzOwlpbml0X2F0dHItJmd0O2NhcC5tYXhfc2VuZF9zZ2UgICAgPSBtaW4oYXR0ci0mZ3Q7bWF4X3NlbmRfc2dlLCBTUlBfTUFYX1NHRSk7CiAJaW5pdF9hdHRyLSZndDtzcV9zaWdfdHlwZSAgICAgICAgID0gSUJfU0lHTkFMX1JFUV9XUjsKIAlpbml0X2F0dHItJmd0O3FwX3R5cGUgICAgICAgICAgICAgPSBJQl9RUFRfUkM7CiAJaW5pdF9hdHRyLSZndDtzZW5kX2NxICAgICAgICAgICAgID0gc2VuZF9jcTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwdC9pYl9zcnB0LmMgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycHQvaWJfc3JwdC5jCmluZGV4IDlhZWM1ZDgwMTE3ZjFmLi5hNGU0ZmViYTRhMDI1MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnB0L2liX3NycHQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycHQvaWJfc3JwdC5jCkBAIC03Nyw4ICYjNDM7NzcsOCBAQCBtb2R1bGVfcGFyYW0oc3JwX21heF9yZXFfc2l6ZSwgaW50LCAwNDQ0KTsKIE1PRFVMRV9QQVJNX0RFU0Moc3JwX21heF9yZXFfc2l6ZSwKIAkJICYjMzQ7TWF4aW11bSBzaXplIG9mIFNSUCByZXF1ZXN0IG1lc3NhZ2VzIGluIGJ5dGVzLiYjMzQ7KTsKIAotc3RhdGljIGludCBzcnB0X3NycV9zaXplID0gREVGQVVMVF9TUlBUX1NSUV9TSVpFOwotbW9kdWxlX3BhcmFtKHNycHRfc3JxX3NpemUsIGludCwgMDQ0NCk7CiYjNDM7c3RhdGljIHVuc2lnbmVkIGludCBzcnB0X3NycV9zaXplID0gREVGQVVMVF9TUlBUX1NSUV9TSVpFOwomIzQzO21vZHVsZV9wYXJhbShzcnB0X3NycV9zaXplLCB1aW50LCAwNDQ0KTsKIE1PRFVMRV9QQVJNX0RFU0Moc3JwdF9zcnFfc2l6ZSwKIAkJICYjMzQ7U2hhcmVkIHJlY2VpdmUgcXVldWUgKFNSUSkgc2l6ZS4mIzM0Oyk7CiAKQEAgLTQwNSw4ICYjNDM7NDA1LDcgQEAgc3RhdGljIHZvaWQgc3JwdF9nZXRfaW9jKHN0cnVjdCBzcnB0X3BvcnQgKnNwb3J0LCB1MzIgc2xvdCwKIAlpZiAoc2Rldi0mZ3Q7dXNlX3NycSkKIAkJc2VuZF9xdWV1ZV9kZXB0aCA9IHNkZXYtJmd0O3NycV9zaXplOwogCWVsc2UKLQkJc2VuZF9xdWV1ZV9kZXB0aCA9IG1pbihNQVhfU1JQVF9SUV9TSVpFLAotCQkJCSAgICAgICBzZGV2LSZndDtkZXZpY2UtJmd0O2F0dHJzLm1heF9xcF93cik7CiYjNDM7CQlzZW5kX3F1ZXVlX2RlcHRoID0gbWluKHNkZXYtJmd0O2RldmljZS0mZ3Q7YXR0cnMubWF4X3FwX3dyLCBNQVhfU1JQVF9SUV9TSVpFKTsKIAogCW1lbXNldChpb2NwLCAwLCBzaXplb2YoKmlvY3ApKTsKIAlzdHJjcHkoaW9jcC0mZ3Q7aWRfc3RyaW5nLCBTUlBUX0lEX1NUUklORyk7CkBAIC0xODUwLDcgJiM0MzsxODQ5LDcgQEAgc3RhdGljIGludCBzcnB0X2NyZWF0ZV9jaF9pYihzdHJ1Y3Qgc3JwdF9yZG1hX2NoICpjaCkKIAlzdHJ1Y3Qgc3JwdF9wb3J0ICpzcG9ydCA9IGNoLSZndDtzcG9ydDsKIAlzdHJ1Y3Qgc3JwdF9kZXZpY2UgKnNkZXYgPSBzcG9ydC0mZ3Q7c2RldjsKIAljb25zdCBzdHJ1Y3QgaWJfZGV2aWNlX2F0dHIgKmF0dHJzID0gJmFtcDtzZGV2LSZndDtkZXZpY2UtJmd0O2F0dHJzOwotCWludCBzcV9zaXplID0gc3BvcnQtJmd0O3BvcnRfYXR0cmliLnNycF9zcV9zaXplOwomIzQzOwl1MzIgc3Ffc2l6ZSA9IHNwb3J0LSZndDtwb3J0X2F0dHJpYi5zcnBfc3Ffc2l6ZTsKIAlpbnQgaSwgcmV0OwogCiAJV0FSTl9PTihjaC0mZ3Q7cnFfc2l6ZSAmbHQ7IDEpOwpAQCAtMTkxMSwxMyAmIzQzOzE5MTAsMTMgQEAgc3RhdGljIGludCBzcnB0X2NyZWF0ZV9jaF9pYihzdHJ1Y3Qgc3JwdF9yZG1hX2NoICpjaCkKIAkJYm9vbCByZXRyeSA9IHNxX3NpemUgJmd0OyBNSU5fU1JQVF9TUV9TSVpFOwogCiAJCWlmIChyZXRyeSkgewotCQkJcHJfZGVidWcoJiMzNDtmYWlsZWQgdG8gY3JlYXRlIHF1ZXVlIHBhaXIgd2l0aCBzcV9zaXplID0gJWQgKCVkKSAtIHJldHJ5aW5nXG4mIzM0OywKJiM0MzsJCQlwcl9kZWJ1ZygmIzM0O2ZhaWxlZCB0byBjcmVhdGUgcXVldWUgcGFpciB3aXRoIHNxX3NpemUgPSAldSAoJWQpIC0gcmV0cnlpbmdcbiYjMzQ7LAogCQkJCSBzcV9zaXplLCByZXQpOwogCQkJaWJfY3FfcG9vbF9wdXQoY2gtJmd0O2NxLCBjaC0mZ3Q7Y3Ffc2l6ZSk7CiAJCQlzcV9zaXplID0gbWF4KHNxX3NpemUgLyAyLCBNSU5fU1JQVF9TUV9TSVpFKTsKIAkJCWdvdG8gcmV0cnk7CiAJCX0gZWxzZSB7Ci0JCQlwcl9lcnIoJiMzNDtmYWlsZWQgdG8gY3JlYXRlIHF1ZXVlIHBhaXIgd2l0aCBzcV9zaXplID0gJWQgKCVkKVxuJiMzNDssCiYjNDM7CQkJcHJfZXJyKCYjMzQ7ZmFpbGVkIHRvIGNyZWF0ZSBxdWV1ZSBwYWlyIHdpdGggc3Ffc2l6ZSA9ICV1ICglZClcbiYjMzQ7LAogCQkJICAgICAgIHNxX3NpemUsIHJldCk7CiAJCQlnb3RvIGVycl9kZXN0cm95X2NxOwogCQl9CkBAIC0xOTI1LDcgJiM0MzsxOTI0LDcgQEAgc3RhdGljIGludCBzcnB0X2NyZWF0ZV9jaF9pYihzdHJ1Y3Qgc3JwdF9yZG1hX2NoICpjaCkKIAogCWF0b21pY19zZXQoJmFtcDtjaC0mZ3Q7c3Ffd3JfYXZhaWwsIHFwX2luaXQtJmd0O2NhcC5tYXhfc2VuZF93cik7CiAKLQlwcl9kZWJ1ZygmIzM0OyVzOiBtYXhfY3FlPSAlZCBtYXhfc2dlPSAlZCBzcV9zaXplID0gJWQgY2g9ICVwXG4mIzM0OywKJiM0MzsJcHJfZGVidWcoJiMzNDslczogbWF4X2NxZT0gJWQgbWF4X3NnZT0gJWQgc3Ffc2l6ZSA9ICV1IGNoPSAlcFxuJiMzNDssCiAJCSBfX2Z1bmNfXywgY2gtJmd0O2NxLSZndDtjcWUsIHFwX2luaXQtJmd0O2NhcC5tYXhfc2VuZF9zZ2UsCiAJCSBxcF9pbml0LSZndDtjYXAubWF4X3NlbmRfd3IsIGNoKTsKIApAQCAtMjI5OCw3ICYjNDM7MjI5Nyw3IEBAIHN0YXRpYyBpbnQgc3JwdF9jbV9yZXFfcmVjdihzdHJ1Y3Qgc3JwdF9kZXZpY2UgKmNvbnN0IHNkZXYsCiAJICogZGVwdGggdG8gYXZvaWQgdGhhdCB0aGUgaW5pdGlhdG9yIGRyaXZlciBoYXMgdG8gcmVwb3J0IFFVRVVFX0ZVTEwKIAkgKiB0byB0aGUgU0NTSSBtaWQtbGF5ZXIuCiAJICovCi0JY2gtJmd0O3JxX3NpemUgPSBtaW4oTUFYX1NSUFRfUlFfU0laRSwgc2Rldi0mZ3Q7ZGV2aWNlLSZndDthdHRycy5tYXhfcXBfd3IpOwomIzQzOwljaC0mZ3Q7cnFfc2l6ZSA9IG1pbihzZGV2LSZndDtkZXZpY2UtJmd0O2F0dHJzLm1heF9xcF93ciwgTUFYX1NSUFRfUlFfU0laRSk7CiAJc3Bpbl9sb2NrX2luaXQoJmFtcDtjaC0mZ3Q7c3BpbmxvY2spOwogCWNoLSZndDtzdGF0ZSA9IENIX0NPTk5FQ1RJTkc7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtjaC0mZ3Q7Y21kX3dhaXRfbGlzdCk7CkBAIC0zMTM2LDcgJiM0MzszMTM1LDcgQEAgc3RhdGljIGludCBzcnB0X2FsbG9jX3NycShzdHJ1Y3Qgc3JwdF9kZXZpY2UgKnNkZXYpCiAJCXJldHVybiBQVFJfRVJSKHNycSk7CiAJfQogCi0JcHJfZGVidWcoJiMzNDtjcmVhdGUgU1JRICN3cj0gJWQgbWF4X2FsbG93PSVkIGRldj0gJXNcbiYjMzQ7LCBzZGV2LSZndDtzcnFfc2l6ZSwKJiM0MzsJcHJfZGVidWcoJiMzNDtjcmVhdGUgU1JRICN3cj0gJWQgbWF4X2FsbG93PSV1IGRldj0gJXNcbiYjMzQ7LCBzZGV2LSZndDtzcnFfc2l6ZSwKIAkJIHNkZXYtJmd0O2RldmljZS0mZ3Q7YXR0cnMubWF4X3NycV93ciwgZGV2X25hbWUoJmFtcDtkZXZpY2UtJmd0O2RldikpOwogCiAJc2Rldi0mZ3Q7cmVxX2J1Zl9jYWNoZSA9IHNycHRfY2FjaGVfZ2V0KHNycF9tYXhfcmVxX3NpemUpOwpAQCAtMzk1MSw3ICYjNDM7Mzk1MCw3IEBAIHN0YXRpYyBpbnQgX19pbml0IHNycHRfaW5pdF9tb2R1bGUodm9pZCkKIAogCWlmIChzcnB0X3NycV9zaXplICZsdDsgTUlOX1NSUFRfU1JRX1NJWkUKIAkgICAgfHwgc3JwdF9zcnFfc2l6ZSAmZ3Q7IE1BWF9TUlBUX1NSUV9TSVpFKSB7Ci0JCXByX2VycigmIzM0O2ludmFsaWQgdmFsdWUgJWQgZm9yIGtlcm5lbCBtb2R1bGUgcGFyYW1ldGVyIHNycHRfc3JxX3NpemUgLS0gbXVzdCBiZSBpbiB0aGUgcmFuZ2UgWyVkLi4lZF0uXG4mIzM0OywKJiM0MzsJCXByX2VycigmIzM0O2ludmFsaWQgdmFsdWUgJXUgZm9yIGtlcm5lbCBtb2R1bGUgcGFyYW1ldGVyIHNycHRfc3JxX3NpemUgLS0gbXVzdCBiZSBpbiB0aGUgcmFuZ2UgWyVkLi4lZF0uXG4mIzM0OywKIAkJICAgICAgIHNycHRfc3JxX3NpemUsIE1JTl9TUlBUX1NSUV9TSVpFLCBNQVhfU1JQVF9TUlFfU0laRSk7CiAJCWdvdG8gb3V0OwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS9ob3N0L3JkbWEuYyBiL2RyaXZlcnMvbnZtZS9ob3N0L3JkbWEuYwppbmRleCA2OTA5ZTM1NDI3OTQyNy4uNTZjZDIyOGFmMWQ1N2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbnZtZS9ob3N0L3JkbWEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL252bWUvaG9zdC9yZG1hLmMKQEAgLTM5NCw4ICYjNDM7Mzk0LDEwIEBAIG52bWVfcmRtYV9maW5kX2dldF9kZXZpY2Uoc3RydWN0IHJkbWFfY21faWQgKmNtX2lkKQogCQlnb3RvIG91dF9mcmVlX3BkOwogCX0KIAotCW5kZXYtJmd0O251bV9pbmxpbmVfc2VnbWVudHMgPSBtaW4oTlZNRV9SRE1BX01BWF9JTkxJTkVfU0VHTUVOVFMsCi0JCQkJCW5kZXYtJmd0O2Rldi0mZ3Q7YXR0cnMubWF4X3NlbmRfc2dlIC0gMSk7CiYjNDM7CW5kZXYtJmd0O251bV9pbmxpbmVfc2VnbWVudHMgPSBuZGV2LSZndDtkZXYtJmd0O2F0dHJzLm1heF9zZW5kX3NnZTsKJiM0MzsJaWYgKG5kZXYtJmd0O251bV9pbmxpbmVfc2VnbWVudHMpCiYjNDM7CQluZGV2LSZndDtudW1faW5saW5lX3NlZ21lbnRzLS07CiYjNDM7CW5kZXYtJmd0O251bV9pbmxpbmVfc2VnbWVudHMgPSBtaW4obmRldi0mZ3Q7bnVtX2lubGluZV9zZWdtZW50cywgTlZNRV9SRE1BX01BWF9JTkxJTkVfU0VHTUVOVFMpOwogCWxpc3RfYWRkKCZhbXA7bmRldi0mZ3Q7ZW50cnksICZhbXA7ZGV2aWNlX2xpc3QpOwogb3V0X3VubG9jazoKIAltdXRleF91bmxvY2soJmFtcDtkZXZpY2VfbGlzdF9tdXRleCk7CkBAIC0xODQ3LDcgJiM0MzsxODQ5LDcgQEAgc3RhdGljIGludCBudm1lX3JkbWFfcm91dGVfcmVzb2x2ZWQoc3RydWN0IG52bWVfcmRtYV9xdWV1ZSAqcXVldWUpCiAJcGFyYW0ucXBfbnVtID0gcXVldWUtJmd0O3FwLSZndDtxcF9udW07CiAJcGFyYW0uZmxvd19jb250cm9sID0gMTsKIAotCXBhcmFtLnJlc3BvbmRlcl9yZXNvdXJjZXMgPSBxdWV1ZS0mZ3Q7ZGV2aWNlLSZndDtkZXYtJmd0O2F0dHJzLm1heF9xcF9yZF9hdG9tOwomIzQzOwlwYXJhbS5yZXNwb25kZXJfcmVzb3VyY2VzID0gbWluKHF1ZXVlLSZndDtkZXZpY2UtJmd0O2Rldi0mZ3Q7YXR0cnMubWF4X3FwX3JkX2F0b20sIFU4X01BWCk7CiAJLyogbWF4aW11bSByZXRyeSBjb3VudCAqLwogCXBhcmFtLnJldHJ5X2NvdW50ID0gNzsKIAlwYXJhbS5ybnJfcmV0cnlfY291bnQgPSA3OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lL3RhcmdldC9yZG1hLmMgYi9kcml2ZXJzL252bWUvdGFyZ2V0L3JkbWEuYwppbmRleCBhYzI2ZjRmNzc0YzRkZS4uMWMzMzJkNjYyMjJhMGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbnZtZS90YXJnZXQvcmRtYS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbnZtZS90YXJnZXQvcmRtYS5jCkBAIC0xNTIsNyAmIzQzOzE1Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtX29wcyBzcnFfc2l6ZV9vcHMgPSB7CiAJLmdldCA9IHBhcmFtX2dldF9pbnQsCiB9OwogCi1zdGF0aWMgaW50IG52bWV0X3JkbWFfc3JxX3NpemUgPSAxMDI0OwomIzQzO3N0YXRpYyB1bnNpZ25lZCBpbnQgbnZtZXRfcmRtYV9zcnFfc2l6ZSA9IDEwMjQ7CiBtb2R1bGVfcGFyYW1fY2Ioc3JxX3NpemUsICZhbXA7c3JxX3NpemVfb3BzLCAmYW1wO252bWV0X3JkbWFfc3JxX3NpemUsIDA2NDQpOwogTU9EVUxFX1BBUk1fREVTQyhzcnFfc2l6ZSwgJiMzNDtzZXQgU2hhcmVkIFJlY2VpdmUgUXVldWUgKFNSUSkgc2l6ZSwgc2hvdWxkICZndDs9IDI1NiAoZGVmYXVsdDogMTAyNCkmIzM0Oyk7CiAKQEAgLTExOTcsNyAmIzQzOzExOTcsNyBAQCBudm1ldF9yZG1hX2ZpbmRfZ2V0X2RldmljZShzdHJ1Y3QgcmRtYV9jbV9pZCAqY21faWQpCiAJc3RydWN0IG52bWV0X3BvcnQgKm5wb3J0ID0gcG9ydC0mZ3Q7bnBvcnQ7CiAJc3RydWN0IG52bWV0X3JkbWFfZGV2aWNlICpuZGV2OwogCWludCBpbmxpbmVfcGFnZV9jb3VudDsKLQlpbnQgaW5saW5lX3NnZV9jb3VudDsKJiM0MzsJdTMyIGlubGluZV9zZ2VfY291bnQ7CiAJaW50IHJldDsKIAogCW11dGV4X2xvY2soJmFtcDtkZXZpY2VfbGlzdF9tdXRleCk7CkBAIC0xMjEzLDcgJiM0MzsxMjEzLDkgQEAgbnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2Uoc3RydWN0IHJkbWFfY21faWQgKmNtX2lkKQogCiAJaW5saW5lX3BhZ2VfY291bnQgPSBudW1fcGFnZXMobnBvcnQtJmd0O2lubGluZV9kYXRhX3NpemUpOwogCWlubGluZV9zZ2VfY291bnQgPSBtYXgoY21faWQtJmd0O2RldmljZS0mZ3Q7YXR0cnMubWF4X3NnZV9yZCwKLQkJCQljbV9pZC0mZ3Q7ZGV2aWNlLSZndDthdHRycy5tYXhfcmVjdl9zZ2UpIC0gMTsKJiM0MzsJCQkJY21faWQtJmd0O2RldmljZS0mZ3Q7YXR0cnMubWF4X3JlY3Zfc2dlKTsKJiM0MzsJaWYgKGlubGluZV9zZ2VfY291bnQpCiYjNDM7CQlpbmxpbmVfc2dlX2NvdW50LS07CiAJaWYgKGlubGluZV9wYWdlX2NvdW50ICZndDsgaW5saW5lX3NnZV9jb3VudCkgewogCQlwcl93YXJuKCYjMzQ7aW5saW5lX2RhdGFfc2l6ZSAlZCBjYW5ub3QgYmUgc3VwcG9ydGVkIGJ5IGRldmljZSAlcy4gUmVkdWNpbmcgdG8gJWx1LlxuJiMzNDssCiAJCQlucG9ydC0mZ3Q7aW5saW5lX2RhdGFfc2l6ZSwgY21faWQtJmd0O2RldmljZS0mZ3Q7bmFtZSwKQEAgLTE1NTMsOCAmIzQzOzE1NTUsOSBAQCBzdGF0aWMgaW50IG52bWV0X3JkbWFfY21fYWNjZXB0KHN0cnVjdCByZG1hX2NtX2lkICpjbV9pZCwKIAogCXBhcmFtLnJucl9yZXRyeV9jb3VudCA9IDc7CiAJcGFyYW0uZmxvd19jb250cm9sID0gMTsKLQlwYXJhbS5pbml0aWF0b3JfZGVwdGggPSBtaW5fdCh1OCwgcC0mZ3Q7aW5pdGlhdG9yX2RlcHRoLAotCQlxdWV1ZS0mZ3Q7ZGV2LSZndDtkZXZpY2UtJmd0O2F0dHJzLm1heF9xcF9pbml0X3JkX2F0b20pOwomIzQzOwlwYXJhbS5pbml0aWF0b3JfZGVwdGggPSBtaW4zKHAtJmd0O2luaXRpYXRvcl9kZXB0aCwKJiM0MzsJCQkJICAgICBxdWV1ZS0mZ3Q7ZGV2LSZndDtkZXZpY2UtJmd0O2F0dHJzLm1heF9xcF9pbml0X3JkX2F0b20sCiYjNDM7CQkJCSAgICAgVThfTUFYKTsKIAlwYXJhbS5wcml2YXRlX2RhdGEgPSAmYW1wO3ByaXY7CiAJcGFyYW0ucHJpdmF0ZV9kYXRhX2xlbiA9IHNpemVvZihwcml2KTsKIAlwcml2LnJlY2ZtdCA9IGNwdV90b19sZTE2KE5WTUVfUkRNQV9DTV9GTVRfMV8wKTsKZGlmZiAtLWdpdCBhL2ZzL3NtYi9zbWJkaXJlY3QvYWNjZXB0LmMgYi9mcy9zbWIvc21iZGlyZWN0L2FjY2VwdC5jCmluZGV4IDUyOTc0MDAwNTgzODVlLi40NGI2ODFhMjA3MjUzNiAxMDA2NDQKLS0tIGEvZnMvc21iL3NtYmRpcmVjdC9hY2NlcHQuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9zbWIvc21iZGlyZWN0L2FjY2VwdC5jCkBAIC0zMiw4ICYjNDM7MzIsOSBAQCBpbnQgc21iZGlyZWN0X2FjY2VwdF9jb25uZWN0X3JlcXVlc3Qoc3RydWN0IHNtYmRpcmVjdF9zb2NrZXQgKnNjLAogCS8qCiAJICogRmlyc3Qgc2V0IHdoYXQgdGhlIHdlIGFzIHNlcnZlciBhcmUgYWJsZSB0byBzdXBwb3J0CiAJICovCi0Jc3AtJmd0O2luaXRpYXRvcl9kZXB0aCA9IG1pbl90KHU4LCBzcC0mZ3Q7aW5pdGlhdG9yX2RlcHRoLAotCQkJCSAgICBzYy0mZ3Q7aWIuZGV2LSZndDthdHRycy5tYXhfcXBfcmRfYXRvbSk7CiYjNDM7CXNwLSZndDtpbml0aWF0b3JfZGVwdGggPSBtaW4zKHNwLSZndDtpbml0aWF0b3JfZGVwdGgsCiYjNDM7CQkJCSAgIHNjLSZndDtpYi5kZXYtJmd0O2F0dHJzLm1heF9xcF9yZF9hdG9tLAomIzQzOwkJCQkgICBVOF9NQVgpOwogCiAJcGVlcl9pbml0aWF0b3JfZGVwdGggPSBwYXJhbS0mZ3Q7aW5pdGlhdG9yX2RlcHRoOwogCXBlZXJfcmVzcG9uZGVyX3Jlc291cmNlcyA9IHBhcmFtLSZndDtyZXNwb25kZXJfcmVzb3VyY2VzOwpkaWZmIC0tZ2l0IGEvZnMvc21iL3NtYmRpcmVjdC9jb25uZWN0LmMgYi9mcy9zbWIvc21iZGlyZWN0L2Nvbm5lY3QuYwppbmRleCBjZDcyNmIzOTlhZmVjYi4uMzRhM2U3MmMzOGZiYmEgMTAwNjQ0Ci0tLSBhL2ZzL3NtYi9zbWJkaXJlY3QvY29ubmVjdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL3NtYi9zbWJkaXJlY3QvY29ubmVjdC5jCkBAIC0xODIsOCAmIzQzOzE4Miw5IEBAIHN0YXRpYyBpbnQgc21iZGlyZWN0X2Nvbm5lY3RfcmRtYV9jb25uZWN0KHN0cnVjdCBzbWJkaXJlY3Rfc29ja2V0ICpzYykKIAlpZiAoc2MtJmd0O2liLmRldi0mZ3Q7YXR0cnMua2VybmVsX2NhcF9mbGFncyAmYW1wOyBJQktfU0dfR0FQU19SRUcpCiAJCXNjLSZndDttcl9pby50eXBlID0gSUJfTVJfVFlQRV9TR19HQVBTOwogCi0Jc3AtJmd0O3Jlc3BvbmRlcl9yZXNvdXJjZXMgPSBtaW5fdCh1OCwgc3AtJmd0O3Jlc3BvbmRlcl9yZXNvdXJjZXMsCi0JCQkJCXNjLSZndDtpYi5kZXYtJmd0O2F0dHJzLm1heF9xcF9yZF9hdG9tKTsKJiM0MzsJc3AtJmd0O3Jlc3BvbmRlcl9yZXNvdXJjZXMgPSBtaW4zKHNwLSZndDtyZXNwb25kZXJfcmVzb3VyY2VzLAomIzQzOwkJCQkgICAgICAgc2MtJmd0O2liLmRldi0mZ3Q7YXR0cnMubWF4X3FwX3JkX2F0b20sCiYjNDM7CQkJCSAgICAgICBVOF9NQVgpOwogCXNtYmRpcmVjdF9sb2dfcmRtYV9tcihzYywgU01CRElSRUNUX0xPR19JTkZPLAogCQkmIzM0O3Jlc3BvbmRlcl9yZXNvdXJjZXM9JWRcbiYjMzQ7LAogCQlzcC0mZ3Q7cmVzcG9uZGVyX3Jlc291cmNlcyk7CmRpZmYgLS1naXQgYS9mcy9zbWIvc21iZGlyZWN0L2Nvbm5lY3Rpb24uYyBiL2ZzL3NtYi9zbWJkaXJlY3QvY29ubmVjdGlvbi5jCmluZGV4IDhhZGY1ODA5NzUzNDRiLi42OTBhY2I4NGUxYjU5MSAxMDA2NDQKLS0tIGEvZnMvc21iL3NtYmRpcmVjdC9jb25uZWN0aW9uLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvc21iL3NtYmRpcmVjdC9jb25uZWN0aW9uLmMKQEAgLTI4Nyw3ICYjNDM7Mjg3LDcgQEAgaW50IHNtYmRpcmVjdF9jb25uZWN0aW9uX2NyZWF0ZV9xcChzdHJ1Y3Qgc21iZGlyZWN0X3NvY2tldCAqc2MpCiAJICAgIHFwX2NhcC5tYXhfc2VuZF93ciAmZ3Q7IHNjLSZndDtpYi5kZXYtJmd0O2F0dHJzLm1heF9xcF93cikgewogCQlwcl9lcnIoJiMzNDtQb3NzaWJsZSBDUUUgb3ZlcnJ1bjogbWF4X3NlbmRfd3IgJWRcbiYjMzQ7LAogCQkgICAgICAgcXBfY2FwLm1heF9zZW5kX3dyKTsKLQkJcHJfZXJyKCYjMzQ7ZGV2aWNlICUuKnMgcmVwb3J0aW5nIG1heF9jcWUgJWQgbWF4X3FwX3dyICVkXG4mIzM0OywKJiM0MzsJCXByX2VycigmIzM0O2RldmljZSAlLipzIHJlcG9ydGluZyBtYXhfY3FlICV1IG1heF9xcF93ciAldVxuJiMzNDssCiAJCSAgICAgICBJQl9ERVZJQ0VfTkFNRV9NQVgsCiAJCSAgICAgICBzYy0mZ3Q7aWIuZGV2LSZndDtuYW1lLAogCQkgICAgICAgc2MtJmd0O2liLmRldi0mZ3Q7YXR0cnMubWF4X2NxZSwKQEAgLTMwMiw3ICYjNDM7MzAyLDcgQEAgaW50IHNtYmRpcmVjdF9jb25uZWN0aW9uX2NyZWF0ZV9xcChzdHJ1Y3Qgc21iZGlyZWN0X3NvY2tldCAqc2MpCiAJICAgICBtYXhfc2VuZF93ciAmZ3Q7PSBzYy0mZ3Q7aWIuZGV2LSZndDthdHRycy5tYXhfcXBfd3IpKSB7CiAJCXByX2VycigmIzM0O1Bvc3NpYmxlIENRRSBvdmVycnVuOiByZG1hX3NlbmRfd3IgJWQgJiM0MzsgbWF4X3NlbmRfd3IgJWQgPSAlZFxuJiMzNDssCiAJCSAgICAgICByZG1hX3NlbmRfd3IsIHFwX2NhcC5tYXhfc2VuZF93ciwgbWF4X3NlbmRfd3IpOwotCQlwcl9lcnIoJiMzNDtkZXZpY2UgJS4qcyByZXBvcnRpbmcgbWF4X2NxZSAlZCBtYXhfcXBfd3IgJWRcbiYjMzQ7LAomIzQzOwkJcHJfZXJyKCYjMzQ7ZGV2aWNlICUuKnMgcmVwb3J0aW5nIG1heF9jcWUgJXUgbWF4X3FwX3dyICV1XG4mIzM0OywKIAkJICAgICAgIElCX0RFVklDRV9OQU1FX01BWCwKIAkJICAgICAgIHNjLSZndDtpYi5kZXYtJmd0O25hbWUsCiAJCSAgICAgICBzYy0mZ3Q7aWIuZGV2LSZndDthdHRycy5tYXhfY3FlLApAQCAtMzE2LDcgJiM0MzszMTYsNyBAQCBpbnQgc21iZGlyZWN0X2Nvbm5lY3Rpb25fY3JlYXRlX3FwKHN0cnVjdCBzbWJkaXJlY3Rfc29ja2V0ICpzYykKIAkgICAgcXBfY2FwLm1heF9yZWN2X3dyICZndDsgc2MtJmd0O2liLmRldi0mZ3Q7YXR0cnMubWF4X3FwX3dyKSB7CiAJCXByX2VycigmIzM0O1Bvc3NpYmxlIENRRSBvdmVycnVuOiBtYXhfcmVjdl93ciAlZFxuJiMzNDssCiAJCSAgICAgICBxcF9jYXAubWF4X3JlY3Zfd3IpOwotCQlwcl9lcnIoJiMzNDtkZXZpY2UgJS4qcyByZXBvcnRpbmcgbWF4X2NxZSAlZCBtYXhfcXBfd3IgJWRcbiYjMzQ7LAomIzQzOwkJcHJfZXJyKCYjMzQ7ZGV2aWNlICUuKnMgcmVwb3J0aW5nIG1heF9jcWUgJXUgbWF4X3FwX3dyICV1XG4mIzM0OywKIAkJICAgICAgIElCX0RFVklDRV9OQU1FX01BWCwKIAkJICAgICAgIHNjLSZndDtpYi5kZXYtJmd0O25hbWUsCiAJCSAgICAgICBzYy0mZ3Q7aWIuZGV2LSZndDthdHRycy5tYXhfY3FlLApAQCAtMzI4LDcgJiM0MzszMjgsNyBAQCBpbnQgc21iZGlyZWN0X2Nvbm5lY3Rpb25fY3JlYXRlX3FwKHN0cnVjdCBzbWJkaXJlY3Rfc29ja2V0ICpzYykKIAogCWlmIChxcF9jYXAubWF4X3NlbmRfc2dlICZndDsgc2MtJmd0O2liLmRldi0mZ3Q7YXR0cnMubWF4X3NlbmRfc2dlIHx8CiAJICAgIHFwX2NhcC5tYXhfcmVjdl9zZ2UgJmd0OyBzYy0mZ3Q7aWIuZGV2LSZndDthdHRycy5tYXhfcmVjdl9zZ2UpIHsKLQkJcHJfZXJyKCYjMzQ7ZGV2aWNlICUuKnMgbWF4X3NlbmRfc2dlL21heF9yZWN2X3NnZSA9ICVkLyVkIHRvbyBzbWFsbFxuJiMzNDssCiYjNDM7CQlwcl9lcnIoJiMzNDtkZXZpY2UgJS4qcyBtYXhfc2VuZF9zZ2UvbWF4X3JlY3Zfc2dlID0gJXUvJXUgdG9vIHNtYWxsXG4mIzM0OywKIAkJICAgICAgIElCX0RFVklDRV9OQU1FX01BWCwKIAkJICAgICAgIHNjLSZndDtpYi5kZXYtJmd0O25hbWUsCiAJCSAgICAgICBzYy0mZ3Q7aWIuZGV2LSZndDthdHRycy5tYXhfc2VuZF9zZ2UsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3N1bnJwYy9zdmNfcmRtYS5oIGIvaW5jbHVkZS9saW51eC9zdW5ycGMvc3ZjX3JkbWEuaAppbmRleCBkZjZlMDhhYWFkNTcwOS4uMjE3ZjAwMGJlNWQ2ZTIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc3VucnBjL3N2Y19yZG1hLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9zdW5ycGMvc3ZjX3JkbWEuaApAQCAtNzgsOCAmIzQzOzc4LDggQEAgc3RydWN0IHN2Y3hwcnRfcmRtYSB7CiAJc3RydWN0IHJkbWFfY21faWQgICAgKnNjX2NtX2lkOwkJLyogUkRNQSBjb25uZWN0aW9uIGlkICovCiAJc3RydWN0IGxpc3RfaGVhZCAgICAgc2NfYWNjZXB0X3E7CS8qIENvbm4uIHdhaXRpbmcgYWNjZXB0ICovCiAJc3RydWN0IHJwY3JkbWFfbm90aWZpY2F0aW9uIHNjX3JuOwkvKiByZW1vdmFsIG5vdGlmaWNhdGlvbiAqLwotCWludAkJICAgICBzY19vcmQ7CQkvKiBSRE1BIHJlYWQgbGltaXQgKi8KLQlpbnQgICAgICAgICAgICAgICAgICBzY19tYXhfc2VuZF9zZ2VzOwomIzQzOwl1MzIJCSAgICAgc2Nfb3JkOwkJLyogUkRNQSByZWFkIGxpbWl0ICovCiYjNDM7CXVuc2lnbmVkIGludCAgICAgICAgIHNjX21heF9zZW5kX3NnZXM7CiAJYm9vbAkJICAgICBzY19zbmRfd19pbnY7CS8qIE9LIHRvIHVzZSBTZW5kIFdpdGggSW52YWxpZGF0ZSAqLwogCiAJYXRvbWljX3QgICAgICAgICAgICAgc2Nfc3FfYXZhaWw7CS8qIFNRRXMgcmVhZHkgdG8gYmUgY29uc3VtZWQgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvcmRtYS9pYl92ZXJicy5oIGIvaW5jbHVkZS9yZG1hL2liX3ZlcmJzLmgKaW5kZXggOWRkNzZmNDg5YTBiYTQuLmI4YjIyMWI1ZjU2NDczIDEwMDY0NAotLS0gYS9pbmNsdWRlL3JkbWEvaWJfdmVyYnMuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3JkbWEvaWJfdmVyYnMuaApAQCAtNDA2LDM2ICYjNDM7NDA2LDM2IEBAIHN0cnVjdCBpYl9kZXZpY2VfYXR0ciB7CiAJdTMyCQkJdmVuZG9yX2lkOwogCXUzMgkJCXZlbmRvcl9wYXJ0X2lkOwogCXUzMgkJCWh3X3ZlcjsKLQlpbnQJCQltYXhfcXA7Ci0JaW50CQkJbWF4X3FwX3dyOwomIzQzOwl1MzIJCQltYXhfcXA7CiYjNDM7CXUzMgkJCW1heF9xcF93cjsKIAl1NjQJCQlkZXZpY2VfY2FwX2ZsYWdzOwogCXU2NAkJCWtlcm5lbF9jYXBfZmxhZ3M7Ci0JaW50CQkJbWF4X3NlbmRfc2dlOwotCWludAkJCW1heF9yZWN2X3NnZTsKLQlpbnQJCQltYXhfc2dlX3JkOwotCWludAkJCW1heF9jcTsKLQlpbnQJCQltYXhfY3FlOwotCWludAkJCW1heF9tcjsKLQlpbnQJCQltYXhfcGQ7Ci0JaW50CQkJbWF4X3FwX3JkX2F0b207Ci0JaW50CQkJbWF4X2VlX3JkX2F0b207Ci0JaW50CQkJbWF4X3Jlc19yZF9hdG9tOwotCWludAkJCW1heF9xcF9pbml0X3JkX2F0b207Ci0JaW50CQkJbWF4X2VlX2luaXRfcmRfYXRvbTsKJiM0MzsJdTMyCQkJbWF4X3NlbmRfc2dlOwomIzQzOwl1MzIJCQltYXhfcmVjdl9zZ2U7CiYjNDM7CXUzMgkJCW1heF9zZ2VfcmQ7CiYjNDM7CXUzMgkJCW1heF9jcTsKJiM0MzsJdTMyCQkJbWF4X2NxZTsKJiM0MzsJdTMyCQkJbWF4X21yOwomIzQzOwl1MzIJCQltYXhfcGQ7CiYjNDM7CXUzMgkJCW1heF9xcF9yZF9hdG9tOwomIzQzOwl1MzIJCQltYXhfZWVfcmRfYXRvbTsKJiM0MzsJdTMyCQkJbWF4X3Jlc19yZF9hdG9tOwomIzQzOwl1MzIJCQltYXhfcXBfaW5pdF9yZF9hdG9tOwomIzQzOwl1MzIJCQltYXhfZWVfaW5pdF9yZF9hdG9tOwogCWVudW0gaWJfYXRvbWljX2NhcAlhdG9taWNfY2FwOwogCWVudW0gaWJfYXRvbWljX2NhcAltYXNrZWRfYXRvbWljX2NhcDsKLQlpbnQJCQltYXhfZWU7Ci0JaW50CQkJbWF4X3JkZDsKLQlpbnQJCQltYXhfbXc7Ci0JaW50CQkJbWF4X3Jhd19pcHY2X3FwOwotCWludAkJCW1heF9yYXdfZXRoeV9xcDsKLQlpbnQJCQltYXhfbWNhc3RfZ3JwOwotCWludAkJCW1heF9tY2FzdF9xcF9hdHRhY2g7Ci0JaW50CQkJbWF4X3RvdGFsX21jYXN0X3FwX2F0dGFjaDsKLQlpbnQJCQltYXhfYWg7CiYjNDM7CXUzMgkJCW1heF9lZTsKJiM0MzsJdTMyCQkJbWF4X3JkZDsKJiM0MzsJdTMyCQkJbWF4X213OwomIzQzOwl1MzIJCQltYXhfcmF3X2lwdjZfcXA7CiYjNDM7CXUzMgkJCW1heF9yYXdfZXRoeV9xcDsKJiM0MzsJdTMyCQkJbWF4X21jYXN0X2dycDsKJiM0MzsJdTMyCQkJbWF4X21jYXN0X3FwX2F0dGFjaDsKJiM0MzsJdTMyCQkJbWF4X3RvdGFsX21jYXN0X3FwX2F0dGFjaDsKJiM0MzsJdTMyCQkJbWF4X2FoOwogCWludAkJCW1heF9zcnE7Ci0JaW50CQkJbWF4X3NycV93cjsKLQlpbnQJCQltYXhfc3JxX3NnZTsKJiM0MzsJdTMyCQkJbWF4X3NycV93cjsKJiM0MzsJdTMyCQkJbWF4X3NycV9zZ2U7CiAJdW5zaWduZWQgaW50CQltYXhfZmFzdF9yZWdfcGFnZV9saXN0X2xlbjsKIAl1bnNpZ25lZCBpbnQJCW1heF9waV9mYXN0X3JlZ19wYWdlX2xpc3RfbGVuOwogCXUxNgkJCW1heF9wa2V5czsKZGlmZiAtLWdpdCBhL25ldC9yZHMvaWIuYyBiL25ldC9yZHMvaWIuYwppbmRleCAzOWY4NzI3MmUwNzFiZi4uYzYyNjg0ZDQyNTljNGYgMTAwNjQ0Ci0tLSBhL25ldC9yZHMvaWIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvcmRzL2liLmMKQEAgLTE2MiwxMiAmIzQzOzE2MiwxMiBAQCBzdGF0aWMgaW50IHJkc19pYl9hZGRfb25lKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSkKIAkJICAgSUJfT0RQX1NVUFBPUlRfUkVBRCk7CiAKIAlyZHNfaWJkZXYtJmd0O21heF8xbV9tcnMgPSBkZXZpY2UtJmd0O2F0dHJzLm1heF9tciA/Ci0JCW1pbl90KHVuc2lnbmVkIGludCwgKGRldmljZS0mZ3Q7YXR0cnMubWF4X21yIC8gMiksCi0JCSAgICAgIHJkc19pYl9tcl8xbV9wb29sX3NpemUpIDogcmRzX2liX21yXzFtX3Bvb2xfc2l6ZTsKJiM0MzsJCW1pbihkZXZpY2UtJmd0O2F0dHJzLm1heF9tciAvIDIsCiYjNDM7CQkgICAgcmRzX2liX21yXzFtX3Bvb2xfc2l6ZSkgOiByZHNfaWJfbXJfMW1fcG9vbF9zaXplOwogCiAJcmRzX2liZGV2LSZndDttYXhfOGtfbXJzID0gZGV2aWNlLSZndDthdHRycy5tYXhfbXIgPwotCQltaW5fdCh1bnNpZ25lZCBpbnQsICgoZGV2aWNlLSZndDthdHRycy5tYXhfbXIgLyAyKSAqIFJEU19NUl84S19TQ0FMRSksCi0JCSAgICAgIHJkc19pYl9tcl84a19wb29sX3NpemUpIDogcmRzX2liX21yXzhrX3Bvb2xfc2l6ZTsKJiM0MzsJCW1pbigoZGV2aWNlLSZndDthdHRycy5tYXhfbXIgLyAyKSAqIFJEU19NUl84S19TQ0FMRSwKJiM0MzsJCSAgICByZHNfaWJfbXJfOGtfcG9vbF9zaXplKSA6IHJkc19pYl9tcl84a19wb29sX3NpemU7CiAKIAlyZHNfaWJkZXYtJmd0O21heF9pbml0aWF0b3JfZGVwdGggPSBkZXZpY2UtJmd0O2F0dHJzLm1heF9xcF9pbml0X3JkX2F0b207CiAJcmRzX2liZGV2LSZndDttYXhfcmVzcG9uZGVyX3Jlc291cmNlcyA9IGRldmljZS0mZ3Q7YXR0cnMubWF4X3FwX3JkX2F0b207CkBAIC0yMDQsNyAmIzQzOzIwNCw3IEBAIHN0YXRpYyBpbnQgcmRzX2liX2FkZF9vbmUoc3RydWN0IGliX2RldmljZSAqZGV2aWNlKQogCQlnb3RvIHB1dF9kZXY7CiAJfQogCi0JcmRzZGVidWcoJiMzNDtSRFMvSUI6IG1heF9tciA9ICVkLCBtYXhfd3JzID0gJWQsIG1heF9zZ2UgPSAlZCwgbWF4XzFtX21ycyA9ICVkLCBtYXhfOGtfbXJzID0gJWRcbiYjMzQ7LAomIzQzOwlyZHNkZWJ1ZygmIzM0O1JEUy9JQjogbWF4X21yID0gJXUsIG1heF93cnMgPSAlZCwgbWF4X3NnZSA9ICVkLCBtYXhfMW1fbXJzID0gJWQsIG1heF84a19tcnMgPSAlZFxuJiMzNDssCiAJCSBkZXZpY2UtJmd0O2F0dHJzLm1heF9tciwgcmRzX2liZGV2LSZndDttYXhfd3JzLCByZHNfaWJkZXYtJmd0O21heF9zZ2UsCiAJCSByZHNfaWJkZXYtJmd0O21heF8xbV9tcnMsIHJkc19pYmRldi0mZ3Q7bWF4XzhrX21ycyk7CiAKZGlmZiAtLWdpdCBhL25ldC9yZHMvaWJfY20uYyBiL25ldC9yZHMvaWJfY20uYwppbmRleCA1NjY3ZjAxNzNiNDdmMi4uMTdlNTg3YzMwMDc2NjMgMTAwNjQ0Ci0tLSBhL25ldC9yZHMvaWJfY20uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvcmRzL2liX2NtLmMKQEAgLTE3MywxMSAmIzQzOzE3MywxMSBAQCBzdGF0aWMgdm9pZCByZHNfaWJfY21fZmlsbF9jb25uX3BhcmFtKHN0cnVjdCByZHNfY29ubmVjdGlvbiAqY29ubiwKIAogCW1lbXNldChjb25uX3BhcmFtLCAwLCBzaXplb2Yoc3RydWN0IHJkbWFfY29ubl9wYXJhbSkpOwogCi0JY29ubl9wYXJhbS0mZ3Q7cmVzcG9uZGVyX3Jlc291cmNlcyA9Ci0JCW1pbl90KHUzMiwgcmRzX2liZGV2LSZndDttYXhfcmVzcG9uZGVyX3Jlc291cmNlcywgbWF4X3Jlc3BvbmRlcl9yZXNvdXJjZXMpOwotCWNvbm5fcGFyYW0tJmd0O2luaXRpYXRvcl9kZXB0aCA9Ci0JCW1pbl90KHUzMiwgcmRzX2liZGV2LSZndDttYXhfaW5pdGlhdG9yX2RlcHRoLCBtYXhfaW5pdGlhdG9yX2RlcHRoKTsKLQljb25uX3BhcmFtLSZndDtyZXRyeV9jb3VudCA9IG1pbl90KHVuc2lnbmVkIGludCwgcmRzX2liX3JldHJ5X2NvdW50LCA3KTsKJiM0MzsJY29ubl9wYXJhbS0mZ3Q7cmVzcG9uZGVyX3Jlc291cmNlcyA9IG1pbjMocmRzX2liZGV2LSZndDttYXhfcmVzcG9uZGVyX3Jlc291cmNlcywKJiM0MzsJCQkJCSAgICAgICBtYXhfcmVzcG9uZGVyX3Jlc291cmNlcywgVThfTUFYKTsKJiM0MzsJY29ubl9wYXJhbS0mZ3Q7aW5pdGlhdG9yX2RlcHRoID0gbWluMyhyZHNfaWJkZXYtJmd0O21heF9pbml0aWF0b3JfZGVwdGgsCiYjNDM7CQkJCQkgICBtYXhfaW5pdGlhdG9yX2RlcHRoLCBVOF9NQVgpOwomIzQzOwljb25uX3BhcmFtLSZndDtyZXRyeV9jb3VudCA9IG1pbihyZHNfaWJfcmV0cnlfY291bnQsIDdVKTsKIAljb25uX3BhcmFtLSZndDtybnJfcmV0cnlfY291bnQgPSA3OwogCiAJaWYgKGRwKSB7CmRpZmYgLS1naXQgYS9uZXQvc3VucnBjL3hwcnRyZG1hL2Zyd3Jfb3BzLmMgYi9uZXQvc3VucnBjL3hwcnRyZG1hL2Zyd3Jfb3BzLmMKaW5kZXggN2Y3OWEwYTI2MDFlNjUuLmIyZTQzN2FmZTA5ZGFhIDEwMDY0NAotLS0gYS9uZXQvc3VucnBjL3hwcnRyZG1hL2Zyd3Jfb3BzLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3N1bnJwYy94cHJ0cmRtYS9mcndyX29wcy5jCkBAIC0xNzIsOCAmIzQzOzE3Miw5IEBAIGludCBmcndyX21yX2luaXQoc3RydWN0IHJwY3JkbWFfeHBydCAqcl94cHJ0LCBzdHJ1Y3QgcnBjcmRtYV9tciAqbXIpCiBpbnQgZnJ3cl9xdWVyeV9kZXZpY2Uoc3RydWN0IHJwY3JkbWFfZXAgKmVwLCBjb25zdCBzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UpCiB7CiAJY29uc3Qgc3RydWN0IGliX2RldmljZV9hdHRyICphdHRycyA9ICZhbXA7ZGV2aWNlLSZndDthdHRyczsKLQlpbnQgbWF4X3FwX3dyLCBkZXB0aCwgZGVsdGE7CiAJdW5zaWduZWQgaW50IG1heF9zZ2U7CiYjNDM7CXUzMiBtYXhfcXBfd3I7CiYjNDM7CWludCBkZXB0aCwgZGVsdGE7CiAKIAlpZiAoIShhdHRycy0mZ3Q7ZGV2aWNlX2NhcF9mbGFncyAmYW1wOyBJQl9ERVZJQ0VfTUVNX01HVF9FWFRFTlNJT05TKSB8fAogCSAgICBhdHRycy0mZ3Q7bWF4X2Zhc3RfcmVnX3BhZ2VfbGlzdF9sZW4gPT0gMCkgewpAQCAtMjI5LDEwICYjNDM7MjMwLDEwIEBAIGludCBmcndyX3F1ZXJ5X2RldmljZShzdHJ1Y3QgcnBjcmRtYV9lcCAqZXAsIGNvbnN0IHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSkKIAl9CiAKIAltYXhfcXBfd3IgPSBhdHRycy0mZ3Q7bWF4X3FwX3dyOwomIzQzOwlpZiAobWF4X3FwX3dyICZsdDsgUlBDUkRNQV9CQUNLV0FSRF9XUlMgJiM0MzsgMSAmIzQzOyBSUENSRE1BX01JTl9TTE9UX1RBQkxFKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiAJbWF4X3FwX3dyIC09IFJQQ1JETUFfQkFDS1dBUkRfV1JTOwogCW1heF9xcF93ciAtPSAxOwotCWlmIChtYXhfcXBfd3IgJmx0OyBSUENSRE1BX01JTl9TTE9UX1RBQkxFKQotCQlyZXR1cm4gLUVOT01FTTsKIAlpZiAoZXAtJmd0O3JlX21heF9yZXF1ZXN0cyAmZ3Q7IG1heF9xcF93cikKIAkJZXAtJmd0O3JlX21heF9yZXF1ZXN0cyA9IG1heF9xcF93cjsKIAllcC0mZ3Q7cmVfYXR0ci5jYXAubWF4X3NlbmRfd3IgPSBlcC0mZ3Q7cmVfbWF4X3JlcXVlc3RzICogZGVwdGg7CmRpZmYgLS1naXQgYS9uZXQvc3VucnBjL3hwcnRyZG1hL3N2Y19yZG1hX3RyYW5zcG9ydC5jIGIvbmV0L3N1bnJwYy94cHJ0cmRtYS9zdmNfcmRtYV90cmFuc3BvcnQuYwppbmRleCBmMThiYzYwZDlmNGZmYS4uYzc2OGNkYTJlNTQ0NGEgMTAwNjQ0Ci0tLSBhL25ldC9zdW5ycGMveHBydHJkbWEvc3ZjX3JkbWFfdHJhbnNwb3J0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3N1bnJwYy94cHJ0cmRtYS9zdmNfcmRtYV90cmFuc3BvcnQuYwpAQCAtNTQ0LDggJiM0Mzs1NDQsNyBAQCBzdGF0aWMgc3RydWN0IHN2Y194cHJ0ICpzdmNfcmRtYV9hY2NlcHQoc3RydWN0IHN2Y194cHJ0ICp4cHJ0KQogCXNldF9iaXQoUkRNQVhQUlRfQ09OTl9QRU5ESU5HLCAmYW1wO25ld3hwcnQtJmd0O3NjX2ZsYWdzKTsKIAltZW1zZXQoJmFtcDtjb25uX3BhcmFtLCAwLCBzaXplb2YgY29ubl9wYXJhbSk7CiAJY29ubl9wYXJhbS5yZXNwb25kZXJfcmVzb3VyY2VzID0gMDsKLQljb25uX3BhcmFtLmluaXRpYXRvcl9kZXB0aCA9IG1pbl90KGludCwgbmV3eHBydC0mZ3Q7c2Nfb3JkLAotCQkJCQkgICBkZXYtJmd0O2F0dHJzLm1heF9xcF9pbml0X3JkX2F0b20pOwomIzQzOwljb25uX3BhcmFtLmluaXRpYXRvcl9kZXB0aCA9IG1pbihuZXd4cHJ0LSZndDtzY19vcmQsIGRldi0mZ3Q7YXR0cnMubWF4X3FwX2luaXRfcmRfYXRvbSk7CiAJaWYgKCFjb25uX3BhcmFtLmluaXRpYXRvcl9kZXB0aCkgewogCQlyZXQgPSAtRUlOVkFMOwogCQl0cmFjZV9zdmNyZG1hX2luaXRkZXB0aF9lcnIobmV3eHBydCwgcmV0KTsKQEAgLTU3MCw3ICYjNDM7NTY5LDcgQEAgc3RhdGljIHN0cnVjdCBzdmNfeHBydCAqc3ZjX3JkbWFfYWNjZXB0KHN0cnVjdCBzdmNfeHBydCAqeHBydCkKIAkJZHByaW50aygmIzM0OyAgICBsb2NhbCBhZGRyZXNzICAgOiAlcElTOiV1XG4mIzM0Oywgc2FwLCBycGNfZ2V0X3BvcnQoc2FwKSk7CiAJCXNhcCA9IChzdHJ1Y3Qgc29ja2FkZHIgKikmYW1wO25ld3hwcnQtJmd0O3NjX2NtX2lkLSZndDtyb3V0ZS5hZGRyLmRzdF9hZGRyOwogCQlkcHJpbnRrKCYjMzQ7ICAgIHJlbW90ZSBhZGRyZXNzICA6ICVwSVM6JXVcbiYjMzQ7LCBzYXAsIHJwY19nZXRfcG9ydChzYXApKTsKLQkJZHByaW50aygmIzM0OyAgICBtYXhfc2dlICAgICAgICAgOiAlZFxuJiMzNDssIG5ld3hwcnQtJmd0O3NjX21heF9zZW5kX3NnZXMpOwomIzQzOwkJZHByaW50aygmIzM0OyAgICBtYXhfc2dlICAgICAgICAgOiAldVxuJiMzNDssIG5ld3hwcnQtJmd0O3NjX21heF9zZW5kX3NnZXMpOwogCQlkcHJpbnRrKCYjMzQ7ICAgIHNxX2RlcHRoICAgICAgICA6ICVkXG4mIzM0OywgbmV3eHBydC0mZ3Q7c2Nfc3FfZGVwdGgpOwogCQlkcHJpbnRrKCYjMzQ7ICAgIHJkbWFfcndfY3R4cyAgICA6ICVkXG4mIzM0OywgY3R4dHMpOwogCQlkcHJpbnRrKCYjMzQ7ICAgIG1heF9yZXF1ZXN0cyAgICA6ICVkXG4mIzM0OywgbmV3eHBydC0mZ3Q7c2NfbWF4X3JlcXVlc3RzKTsKZGlmZiAtLWdpdCBhL25ldC9zdW5ycGMveHBydHJkbWEvdmVyYnMuYyBiL25ldC9zdW5ycGMveHBydHJkbWEvdmVyYnMuYwppbmRleCBhZWNmOWMwYTE1M2YzNi4uOGVkOWRhNmQyZDJmNzcgMTAwNjQ0Ci0tLSBhL25ldC9zdW5ycGMveHBydHJkbWEvdmVyYnMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc3VucnBjL3hwcnRyZG1hL3ZlcmJzLmMKQEAgLTQ1Myw3ICYjNDM7NDUzLDcgQEAgc3RhdGljIGludCBycGNyZG1hX2VwX2NyZWF0ZShzdHJ1Y3QgcnBjcmRtYV94cHJ0ICpyX3hwcnQpCiAJLyogQ2xpZW50IG9mZmVycyBSRE1BIFJlYWQgYnV0IGRvZXMgbm90IGluaXRpYXRlICovCiAJZXAtJmd0O3JlX3JlbW90ZV9jbWEuaW5pdGlhdG9yX2RlcHRoID0gMDsKIAllcC0mZ3Q7cmVfcmVtb3RlX2NtYS5yZXNwb25kZXJfcmVzb3VyY2VzID0KLQkJbWluX3QoaW50LCBVOF9NQVgsIGRldmljZS0mZ3Q7YXR0cnMubWF4X3FwX3JkX2F0b20pOwomIzQzOwkJbWluKGRldmljZS0mZ3Q7YXR0cnMubWF4X3FwX3JkX2F0b20sIFU4X01BWCk7CiAKIAkvKiBMaW1pdCB0cmFuc3BvcnQgcmV0cmllcyBzbyBjbGllbnQgY2FuIGRldGVjdCBzZXJ2ZXIKIAkgKiBHSUQgY2hhbmdlcyBxdWlja2x5LiBSUEMgbGF5ZXIgaGFuZGxlcyByZS1lc3RhYmxpc2hpbmcKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYxMDUKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxMjkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJETUEgU3Vic3lzdGVtIFR5cGUgUmVmYWN0b3JpbmcgJmFtcDsgVW5kZXJmbG93IEZpeGVzIC0gV29ydGggRnV6emluZz8qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIG1ha2luZyBzb21lIHByZXR0eSBzaWduaWZpY2FudCB0eXBlIGNoYW5nZXMgaW4gdGhlIFJETUEvSW5maW5pQmFuZCBzdWJzeXN0ZW0uIFNwZWNpZmljYWxseSwgYSBsb3Qgb2YgZmllbGRzIGluIGBzdHJ1Y3QgaWJfZGV2aWNlX2F0dHJgIGFyZSBnb2luZyBmcm9tIGBpbnRgIHRvIGB1MzJgLCB3aGljaCBzZWVtcyBsaWtlIGEgZ29vZCBtb3ZlIGZvciBjb25zaXN0ZW5jeS4gV2UmIzM5O3JlIGFsc28gc2VlaW5nIHRoZSB1c3VhbCB1cGRhdGVzIHRvIHVzZSBgbWluKClgIGluc3RlYWQgb2YgYG1pbl90KClgIGFuZCB0aGUgYXNzb2NpYXRlZCBmb3JtYXQgc3RyaW5nIHVwZGF0ZXMgKGAlZGAgdG8gYCV1YCkuIFN0YW5kYXJkIHN0dWZmLgoKQnV0IHdhaXQsIGlzIHRoaXMganVzdCByZWZhY3RvcmluZywgb3IgYXJlIHRoZXJlIGZ1bmN0aW9uYWwgaW1wbGljYXRpb25zIHRoYXQgd2FycmFudCBmdXp6aW5nPyBMZXQmIzM5O3MgZGlnIGluLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBhIHR5cGUgY2hhbmdlIGFuZCB1bmRlcmZsb3cgcHJldmVudGlvbiwgYnV0IHRoZSBkZXRhaWxzIGFyZSBpbXBvcnRhbnQuIExvb2tpbmcgYXQgdGhlIGRpZmYsIGl0IHNlZW1zIHRoYXQgdGhlcmUgYXJlIHR3byBwbGFjZXMgd2hlcmUgdGhlcmUgYXJlIG1lYW5pbmdmdWwgY2hhbmdlczoKSW4gYG52bWVfcmRtYV9maW5kX2dldF9kZXZpY2VgIGFuZCBgbnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2VgLCB0aGVyZSYjMzk7cyBhIGNvcnJlY3Rpb24gdG8gcHJldmVudCB1bmRlcmZsb3cgaWYgYG1heF9zZW5kX3NnZWAgaXMgMCwgd2hpY2ggaXMgaW1wb3J0YW50LgpBZGRpdGlvbmFsbHksIGluIGBmcndyX3F1ZXJ5X2RldmljZWAsIHRoZSBjaGFuZ2UgcHJldmVudHMgYW4gdW5kZXJmbG93IGluIGBtYXhfcXBfd3JgIHRoYXQgY291bGQgaGF2ZSByZXN1bHRlZCBpbiBlcnJvcnMuCgpUaGlzIHBhdGNoIHRvdWNoZXMgYSBsb3Qgb2YgUkRNQSBjb2RlOiB0aGUgY29yZSwgUlhFLCBOVk1lIG92ZXIgRmFicmljcyAoUkRNQSksIFNSUCwgU1JQVCwgaVNFUiwgaVNFUlQsIFNNQiBEaXJlY3QsIFJQQyBSRE1BLCBhbmQgUkRTLiBBIGxvdCBvZiBjb25uZWN0aW9ucyBjb3VsZCBiZSBhZmZlY3RlZCBieSB0aGlzIHBhdGNoLgoKVGhlIHByb21wdCBzYXlzIHRvIHJldHVybiAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7IGlmIGl0IG9ubHkgY29udGFpbnMgbnVtZXJpYyBjb25zdGFudCBvciBtYWNybyBjaGFuZ2VzLiBUaGlzIGlzIG1vc3RseSBhIHR5cGUgY2hhbmdlIHdpdGggc29tZSB1bmRlcmZsb3cgY2hlY2tzLiBIb3dldmVyLCB0aGVyZSBhcmUgc29tZSBjaGFuZ2VzIGluIGBudm1lX3JkbWFfZmluZF9nZXRfZGV2aWNlYCwgYG52bWV0X3JkbWFfZmluZF9nZXRfZGV2aWNlYCwgYW5kIGBmcndyX3F1ZXJ5X2RldmljZWAgZnVuY3Rpb25zIGFuZCB0aHVzLCBhcmUgd29ydGggY29uc2lkZXJpbmcuCgpMZXQmIzM5O3Mgc2VlOiBgbnZtZV9yZG1hX2ZpbmRfZ2V0X2RldmljZWAgYW5kIGBudm1ldF9yZG1hX2ZpbmRfZ2V0X2RldmljZWAgYXJlIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBmdW5jdGlvbnMgd2l0aGluIHRoZSBOVk1lLW9GIGNvbnRleHQsIGFuZCBgZnJ3cl9xdWVyeV9kZXZpY2VgIGlzIGNhbGxlZCBkdXJpbmcgUlBDIFJETUEgdHJhbnNwb3J0IHNldHVwLiBDYW4gd2UgZnV6eiB0aGVtIGVmZmVjdGl2ZWx5PyBTeXprYWxsZXIgaGFzIHNvbWUgTlZNZS1vRiBhbmQgUkRNQSBzdXBwb3J0IChwYXJ0aWN1bGFybHkgUlhFKS4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUuCgomIzM0O0lmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2ggdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuJiMzNDsgUlhFIGlzIHNvZnR3YXJlIFJETUEgYW5kIGNhbiBiZSBleGVjdXRlZC4gTlZNZS1vRiBvdmVyIFJETUEgY2FuIHJ1biB3aXRoIFJYRS4gQW5kIFJQQyBSRE1BIGNhbiBydW4gd2l0aCBSWEUuCgpCYXNlZCBvbiB0aGF0LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZXNlIGZ1bmN0aW9uczoKLSBgbnZtZV9yZG1hX2ZpbmRfZ2V0X2RldmljZWAKLSBgbnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2VgCi0gYGZyd3JfcXVlcnlfZGV2aWNlYAotIGByeGVfcXBfY2hrX2NhcGAKLSBgcnhlX3FwX2Noa19hdHRyYAotIGByeGVfc3JxX2Noa19pbml0YAotIGByeGVfc3JxX2Noa19hdHRyYAoKSSYjMzk7bGwgdmVyaWZ5IHRoZXNlIGZ1bmN0aW9ucyBleGlzdCBhbmQgYXJlIHJlYWNoYWJsZSwgYW5kIHRoZW4gY29uc2lkZXIgdGhpcyBwYXRjaCBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKHN0YXRpYyApPyhpbnR8dm9pZHxzdHJ1Y3QgW2EtekEtWjAtOV9dJiM0MzsgXFwqKSBudm1lX3JkbWFfZmluZF9nZXRfZGV2aWNlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAyMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODE2NgoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OgoKKipEZWJ1Z2dpbmcgdGhlIE5WTWUtUkRNQSBDb2RlKioKCkFscmlnaHQsIHNvbWV0aGluZyBpc24mIzM5O3QgcXVpdGUgcmlnaHQgd2l0aCB0aGlzIGBncmVwYCBleHByZXNzaW9uLiBJdCYjMzk7cyBqdXN0IG5vdCBnaXZpbmcgbWUgd2hhdCBJIG5lZWQuIFBlcmhhcHMgSSYjMzk7dmUgYmVlbiB0b28gYnJvYWQgaW4gbXkgc2VhcmNoIHRlcm1zLiBJIG5lZWQgdG8gYmUgbW9yZSBwcmVjaXNlLCBtb3JlIHRhcmdldGVkLiBMZXQmIzM5O3MgbmFycm93IHRoaXMgZG93biBhbmQgYmUgc3BlY2lmaWM6IEkmIzM5O2xsIGZvY3VzIG9uIHRoZSBjb3JlIGZ1bmN0aW9uLCB0aGUgb25lIHRoYXQmIzM5O3MgZ2l2aW5nIG1lIHRoZSBtb3N0IHRyb3VibGUuIEZvcmdldCB0aGUgaW5pdGlhbCBicm9hZCBhcHByb2FjaCwgbGV0JiMzOTtzIGp1c3QgZ3JlcCBkaXJlY3RseSBmb3IgdGhlIG5hbWUgb2YgdGhhdCBjcml0aWNhbCBmdW5jdGlvbjogYG52bWVfcmRtYV9maW5kX2dldF9kZXZpY2VgLiBUaGF0IHNob3VsZCBjdXQgdGhyb3VnaCB0aGUgbm9pc2UgYW5kIGdpdmUgbWUgYSBsYXNlci1mb2N1c2VkIHZpZXcgb2YgaXRzIHVzZS4gVGhpcyBzaG91bGQgYmUgYSBtdWNoIG1vcmUgZWZmaWNpZW50IHdheSB0byBkcmlsbCBkb3duIHRvIHRoZSBwcm9ibGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O252bWVfcmRtYV9maW5kX2dldF9kZXZpY2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9udm1lL2hvc3QvcmRtYS5jPTM2Nj1zdGF0aWMgc3RydWN0IG52bWVfcmRtYV9kZXZpY2UgKlxuZHJpdmVycy9udm1lL2hvc3QvcmRtYS5jOjM2Nzpudm1lX3JkbWFfZmluZF9nZXRfZGV2aWNlKHN0cnVjdCByZG1hX2NtX2lkICpjbV9pZClcbmRyaXZlcnMvbnZtZS9ob3N0L3JkbWEuYy0zNjgte1xuLS1cbmRyaXZlcnMvbnZtZS9ob3N0L3JkbWEuYz00OTE9c3RhdGljIGludCBudm1lX3JkbWFfY3JlYXRlX3F1ZXVlX2liKHN0cnVjdCBudm1lX3JkbWFfcXVldWUgKnF1ZXVlKVxuLS1cbmRyaXZlcnMvbnZtZS9ob3N0L3JkbWEuYy00OTctXG5kcml2ZXJzL252bWUvaG9zdC9yZG1hLmM6NDk4Olx0cXVldWUtXHUwMDNlZGV2aWNlID0gbnZtZV9yZG1hX2ZpbmRfZ2V0X2RldmljZShxdWV1ZS1cdTAwM2VjbV9pZCk7XG5kcml2ZXJzL252bWUvaG9zdC9yZG1hLmMtNDk5LVx0aWYgKCFxdWV1ZS1cdTAwM2VkZXZpY2UpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAyMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODYxNgoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBOVk1lL1JETUEgQ29kZWJhc2UqKgoKQWxyaWdodCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IE5WTWUgb3ZlciBSRE1BIGRldmljZXMgYXJlIGRpc2NvdmVyZWQuIEkgcmVtZW1iZXIgc2VlaW5nIGBudm1lX3JkbWFfZmluZF9nZXRfZGV2aWNlYCBpbiB0aGUga2VybmVsIHNvdXJjZSBiZWZvcmUuIExldCBtZSBzZWUuLi4geWVzLCB0aGF0JiMzOTtzIHJpZ2h0LCBpdCYjMzk7cyBsb2NhdGVkIGluIGBkcml2ZXJzL252bWUvaG9zdC9yZG1hLmNgLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gTm93LCB0byB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGNvbnRleHQsIEkgbmVlZCB0byBzZWUgd2hlcmUgdGhhdCBmdW5jdGlvbiBpcyB1c2VkIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIE5WTWUtb0YgdGFyZ2V0IHNpZGUuIEkgYmV0IHRoZXJlIGlzIGEgYG52bWV0X3JkbWFfZmluZF9nZXRfZGV2aWNlYCB0aGF0IHdpbGwgYmUgcmVsZXZhbnQuIEkgc2hvdWxkIGNoZWNrIHRoYXQgYXMgdGhlIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAyMDo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudm1ldF9yZG1hX2ZpbmRfZ2V0X2RldmljZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL252bWUvdGFyZ2V0L3JkbWEuYz0xMTkzPXN0YXRpYyBzdHJ1Y3QgbnZtZXRfcmRtYV9kZXZpY2UgKlxuZHJpdmVycy9udm1lL3RhcmdldC9yZG1hLmM6MTE5NDpudm1ldF9yZG1hX2ZpbmRfZ2V0X2RldmljZShzdHJ1Y3QgcmRtYV9jbV9pZCAqY21faWQpXG5kcml2ZXJzL252bWUvdGFyZ2V0L3JkbWEuYy0xMTk1LXtcbi0tXG5kcml2ZXJzL252bWUvdGFyZ2V0L3JkbWEuYz0xNTczPXN0YXRpYyBpbnQgbnZtZXRfcmRtYV9xdWV1ZV9jb25uZWN0KHN0cnVjdCByZG1hX2NtX2lkICpjbV9pZCxcbi0tXG5kcml2ZXJzL252bWUvdGFyZ2V0L3JkbWEuYy0xNTc5LVxuZHJpdmVycy9udm1lL3RhcmdldC9yZG1hLmM6MTU4MDpcdG5kZXYgPSBudm1ldF9yZG1hX2ZpbmRfZ2V0X2RldmljZShjbV9pZCk7XG5kcml2ZXJzL252bWUvdGFyZ2V0L3JkbWEuYy0xNTgxLVx0aWYgKCFuZGV2KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkwODEKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipBbmFseXppbmcgYGZyd3JfcXVlcnlfZGV2aWNlYCoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byBgZnJ3cl9xdWVyeV9kZXZpY2VgLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZnVuY3Rpb25hbGl0eSBhbmQgd2hlcmUgaXQgZml0cyB3aXRoaW4gdGhlIGxhcmdlciBhcmNoaXRlY3R1cmUuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgdHJhY2luZyBpdHMgZGVwZW5kZW5jaWVzIGFuZCBzZWUgd2hhdCBvdGhlciBtb2R1bGVzIG9yIGZ1bmN0aW9ucyBpdCBpbnRlcmFjdHMgd2l0aC4gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgYm90dGxlbmVja3Mgb3IgYXJlYXMgZm9yIG9wdGltaXphdGlvbiBoZXJlPyBJJiMzOTttIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIGVycm9yIGNvbmRpdGlvbnMgYW5kIGVkZ2UgY2FzZXM7IHJvYnVzdG5lc3MgaXMgYWx3YXlzIGEga2V5IGNvbnNpZGVyYXRpb24sIGVzcGVjaWFsbHkgaW4gdGhpcyBkb21haW4uIFdoYXQga2luZCBvZiBkYXRhIGlzIHRoaXMgZnVuY3Rpb24gcXVlcnlpbmcsIGFuZCBob3cgaXMgdGhhdCBkYXRhIHVzZWQgZG93bnN0cmVhbT8gQXJlIHRoZXJlIGFueSBvcHBvcnR1bml0aWVzIHRvIGxldmVyYWdlIGNhY2hpbmcgb3IgcHJlLWNvbXB1dGVkIHZhbHVlcyB0byBpbXByb3ZlIHBlcmZvcm1hbmNlPyBUaGlzIHdhcnJhbnRzIGEgZGVlcCBpbnZlc3RpZ2F0aW9uLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHN5c3RlbWF0aWMgY29kZSByZXZpZXcgYW5kIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2Vybi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZnJ3cl9xdWVyeV9kZXZpY2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3N1bnJwYy94cHJ0cmRtYS9mcndyX29wcy5jPTEyMj1pbnQgZnJ3cl9tcl9pbml0KHN0cnVjdCBycGNyZG1hX3hwcnQgKnJfeHBydCwgc3RydWN0IHJwY3JkbWFfbXIgKm1yKVxuLS1cbm5ldC9zdW5ycGMveHBydHJkbWEvZnJ3cl9vcHMuYy0xNTUtLyoqXG5uZXQvc3VucnBjL3hwcnRyZG1hL2Zyd3Jfb3BzLmM6MTU2OiAqIGZyd3JfcXVlcnlfZGV2aWNlIC0gUHJlcGFyZSBhIHRyYW5zcG9ydCBmb3IgdXNlIHdpdGggRlJXUlxubmV0L3N1bnJwYy94cHJ0cmRtYS9mcndyX29wcy5jLTE1Ny0gKiBAZXA6IGVuZHBvaW50IHRvIGZpbGwgaW5cbi0tXG5uZXQvc3VucnBjL3hwcnRyZG1hL2Zyd3Jfb3BzLmMtMTcxLSAqL1xubmV0L3N1bnJwYy94cHJ0cmRtYS9mcndyX29wcy5jOjE3MjppbnQgZnJ3cl9xdWVyeV9kZXZpY2Uoc3RydWN0IHJwY3JkbWFfZXAgKmVwLCBjb25zdCBzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UpXG5uZXQvc3VucnBjL3hwcnRyZG1hL2Zyd3Jfb3BzLmMtMTczLXtcbi0tXG5uZXQvc3VucnBjL3hwcnRyZG1hL3ZlcmJzLmM9Mzc4PXN0YXRpYyBpbnQgcnBjcmRtYV9lcF9jcmVhdGUoc3RydWN0IHJwY3JkbWFfeHBydCAqcl94cHJ0KVxuLS1cbm5ldC9zdW5ycGMveHBydHJkbWEvdmVyYnMuYy00MDQtXHRlcC1cdTAwM2VyZV9pbmxpbmVfcmVjdiA9IHhwcnRfcmRtYV9tYXhfaW5saW5lX3JlYWQ7XG5uZXQvc3VucnBjL3hwcnRyZG1hL3ZlcmJzLmM6NDA1Olx0cmMgPSBmcndyX3F1ZXJ5X2RldmljZShlcCwgZGV2aWNlKTtcbm5ldC9zdW5ycGMveHBydHJkbWEvdmVyYnMuYy00MDYtXHRpZiAocmMpXG4tLVxubmV0L3N1bnJwYy94cHJ0cmRtYS94cHJ0X3JkbWEuaD01NTE9dm9pZCBmcndyX3Jlc2V0KHN0cnVjdCBycGNyZG1hX3JlcSAqcmVxKTtcbm5ldC9zdW5ycGMveHBydHJkbWEveHBydF9yZG1hLmg6NTUyOmludCBmcndyX3F1ZXJ5X2RldmljZShzdHJ1Y3QgcnBjcmRtYV9lcCAqZXAsIGNvbnN0IHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSk7XG5uZXQvc3VucnBjL3hwcnRyZG1hL3hwcnRfcmRtYS5oLTU1My1pbnQgZnJ3cl9tcl9pbml0KHN0cnVjdCBycGNyZG1hX3hwcnQgKnJfeHBydCwgc3RydWN0IHJwY3JkbWFfbXIgKm1yKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk4NjgKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHN1bW1hcml6aW5nIHRoZSAmIzM0O1Rob3VnaHRzJiMzNDsgYmFzZWQgb24gbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyBgcnhlX3FwX2Noa19jYXBgKioKCkFscmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIGByeGVfcXBfY2hrX2NhcGAuIEkgc2VlIHRoaXMgYXMgYSBwb3RlbnRpYWwgcG9pbnQgb2YgaW50ZXJlc3QuIEltbWVkaWF0ZWx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMg4oCTIHRoaXMgbGlrZWx5IHJlZmVycyB0byBhIGZ1bmN0aW9uIG9yIHJvdXRpbmUgd2l0aGluIHRoZSBSWEUgKFJETUEgb3ZlciBDb252ZXJnZWQgRXRoZXJuZXQpIGNvbnRleHQgdGhhdCYjMzk7cyByZXNwb25zaWJsZSBmb3IgY2hlY2tpbmcgdGhlIGNhcGFiaWxpdGllcyBvciBjb25zdHJhaW50cyBvZiBhIFF1ZXVlIFBhaXIgKFFQKS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSYjMzk7bSBhbHJlYWR5IGZvcm11bGF0aW5nIHF1ZXN0aW9uczogV2hhdCBhc3BlY3RzIG9mIHRoZSBRUCBhcmUgd2UgY2hlY2tpbmc/IElzIHRoaXMgcmVsYXRlZCB0byByZXNvdXJjZSBsaW1pdHMsIHByb3RvY29sIHJlc3RyaWN0aW9ucywgb3IgaGFyZHdhcmUgc3VwcG9ydD8gSXMgdGhpcyBjaGVja2luZyB0aGUgUVAgc3RhdGU/IFRoZSBzaXplLCBudW1iZXIgb2YgV1FFcywgYW55IG90aGVyIGZlYXR1cmUgYml0cz8gVGhlIHNwZWNpZmljIGNvbnRleHQgaGVyZSBpcyBpbXBvcnRhbnQgYXMgZGlmZmVyZW50IGNhcGFiaWxpdGllcyBhcmUgY2hlY2tlZCBhdCBkaWZmZXJlbnQgdGltZXMuIElmIEkga25vdyB0aGUgY29udGV4dCwgYW5kIHRoZSBvdGhlciBjb2RlLCBJIGNhbiBnaXZlIGEgbXVjaCByaWNoZXIgYW5zd2VyLiBGcm9tIHRoaXMgc3RhcnRpbmcgcG9pbnQsIEkmIzM5O2Qgd2FudCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgZnVuY3Rpb24gZml0cyBpbnRvIHRoZSBvdmVyYWxsIFJYRSBzdGFjaywgd2hhdCB0cmlnZ2VycyBpdHMgZXhlY3V0aW9uLCBhbmQgd2hhdCB0aGUgY29uc2VxdWVuY2VzIG9mIGl0cyByZXR1cm4gdmFsdWVzIGFyZS4gVGhhdCB3b3VsZCBnaXZlIG1lIHNvbWUgaW5zaWdodCBvbiB3aGF0JiMzOTtzIGdvaW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAyMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyeGVfcXBfY2hrX2NhcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jPTM3PXN0YXRpYyBpbmxpbmUgdm9pZCByeGVfcmVjbGFzc2lmeV9zZW5kX3NvY2tldChzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3FwLmMtNjUtXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jOjY2OnN0YXRpYyBpbnQgcnhlX3FwX2Noa19jYXAoc3RydWN0IHJ4ZV9kZXYgKnJ4ZSwgc3RydWN0IGliX3FwX2NhcCAqY2FwLFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfcXAuYy02Ny1cdFx0XHQgIGludCBoYXNfc3JxKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3FwLmM9MTA3PWludCByeGVfcXBfY2hrX2luaXQoc3RydWN0IHJ4ZV9kZXYgKnJ4ZSwgc3RydWN0IGliX3FwX2luaXRfYXR0ciAqaW5pdClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jLTEyNy1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3FwLmM6MTI4Olx0aWYgKHJ4ZV9xcF9jaGtfY2FwKHJ4ZSwgY2FwLCAhIWluaXQtXHUwMDNlc3JxKSlcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3FwLmMtMTI5LVx0XHRnb3RvIGVycjE7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfcXAuYz00ODc9aW50IHJ4ZV9xcF9jaGtfYXR0cihzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgcnhlX3FwICpxcCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jLTQ5Ni1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3FwLmM6NDk3Olx0aWYgKG1hc2sgXHUwMDI2IElCX1FQX0NBUCBcdTAwMjZcdTAwMjYgcnhlX3FwX2Noa19jYXAocnhlLCBcdTAwMjZhdHRyLVx1MDAzZWNhcCwgISFxcC1cdTAwM2VzcnEpKVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfcXAuYy00OTgtXHRcdGdvdG8gZXJyMTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA2NTEKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAyMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggQW5hbHlzaXMgZm9yIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgbmVlZCB0byBsb29rIGF0IG1vcmUgY2xvc2VseS4gSXQgaW1wYWN0cyBmdW5jdGlvbmFsIGxvZ2ljIGFjY2Vzc2libGUgd2l0aGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBiZWNhdXNlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggUlhFLCB3aGljaCBpcywgb2YgY291cnNlLCBhIHNvZnR3YXJlIFJETUEgZHJpdmVyLiBUaGF0IHJhaXNlcyBhIGZsYWcuIEkgc2VlIHRoZSBjaGFuZ2VzIGFyZSAqcHJpbWFyaWx5KiB0eXBlIGFkanVzdG1lbnRzLCB3aGljaCBpcyBnZW5lcmFsbHkgbGVzcyBjb25jZXJuaW5nLCBidXQgdGhleSBhbHNvIGFkZHJlc3MgcG90ZW50aWFsIHVuZGVyZmxvdyBpc3N1ZXMgb3IgbG9naWMgZXJyb3JzIGxpbmtlZCB0byBgbWF4X3NlbmRfc2dlYCBhbmQgYG1heF9xcF93cmAuIEhtbS4KClRoZSBuZXh0IHF1ZXN0aW9uLCBuYXR1cmFsbHksIGlzIHdoZXRoZXIgZnV6emluZyBpcyB3YXJyYW50ZWQgaGVyZS4gR2l2ZW4gdGhhdCBpdCB0b3VjaGVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgZHJpdmVycywgdGhlIGFuc3dlciBpcyBhIHJlc291bmRpbmcgKnllcyouIEFic29sdXRlbHksIGZ1enppbmcgaXMgcmVxdWlyZWQuIFRoaXMgaGFzIHRoZSBwb3RlbnRpYWwgZm9yIHNpZ25pZmljYW50IGltcGFjdCwgZXZlbiB3aXRoIHRoZSB0eXBlLXJlbGF0ZWQgY2hhbmdlcy4KCk5vdywgbGV0JiMzOTtzIGlkZW50aWZ5IGFsbCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIEZvciBSWEUsIHRoYXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkOiBgUkRNQV9SWEVgLiBUaGVuIHdlIGhhdmUgTlZNZS1vRiBSRE1BLCB3aGljaCByZXF1aXJlcyBgTlZNRV9SRE1BYCBhbmQgYE5WTUVfVEFSR0VUX1JETUFgLiBSUEMgUkRNQSBuZWVkcyBgU1VOUlBDX1hQUlRfUkRNQWAgYW5kIGBTVkNfUkRNQWAuIFNNQiBEaXJlY3QgaXMgY29udHJvbGxlZCBieSBgQ0lGU19TTUJfRElSRUNUYCwgYW5kIFNSUC9TUlBUIGludm9sdmVzIGBJTkZJTklCQU5EX1NSUGAgYW5kIGBJTkZJTklCQU5EX1NSUFRgLiBGb3IgaVNFUi9pU0VSVCBpdCYjMzk7cyBgSU5GSU5JQkFORF9JU0VSYCBhbmQgYElORklOSUJBTkRfSVNFUlRgLiBGaW5hbGx5LCBSRFMgdXNlcyBgUkRTYCBhbmQgYFJEU19SRE1BYC4KCkFscmlnaHQsIHRpbWUgdG8gZ28gYW5kIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBzZWUgd2hhdCBtb3JlIEkgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSRE1BX1JYRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvS2NvbmZpZzoyOmNvbmZpZyBSRE1BX1JYRVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTb2Z0d2FyZSBSRE1BIG92ZXIgRXRoZXJuZXQgKFJvQ0UpIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAyMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTM0NQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqTlZNRV9SRE1BIERlZXAgRGl2ZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGZvY3VzLiBGaXJzdCB0aGluZ3MgZmlyc3Q6IGBOVk1FX1JETUFgLiBHb3QgdG8gZ2V0IG15IGhlYWQgYmFjayBpbiB0aGF0IHNwYWNlLiBMZXQmIzM5O3Mgc2VlLi4uIHdoYXQmIzM5O3MgbXkgaW5pdGlhbCBtZW50YWwgY2hlY2tsaXN0PyBMYXRlbmN5LCBiYW5kd2lkdGgsIGZhYnJpYyBjb25zaWRlcmF0aW9ucy4uLiB0aGUgdXN1YWwgc3VzcGVjdHMuIEkgbmVlZCB0byByZWZyZXNoIHRoZSBrZXkgY29uY2VwdHMsIHRoZSBjcml0aWNhbCBkZXNpZ24gZGVjaXNpb25zIGJlaGluZCBpdC4gV2FzIHRoZXJlIGEgc3BlY2lmaWMgdXNlIGNhc2Ugb3IgcGFwZXIgdGhhdCBJIHdhcyB0aGlua2luZyBhYm91dCBlYXJsaWVyIHRvZGF5PyBSaWdodCwgbmVlZCB0byBlbnN1cmUgZXZlcnl0aGluZyYjMzk7cyBjbGVhciBvbiBteSBtaW5kIGJlZm9yZSBkaXZpbmcgaW50byB0aGUgY29yZSBvZiB0aGUgcHJvYmxlbXMuIE9rYXksIHRpbWUgdG8gYnJpbmcgdXAgdGhlIHJlbGV2YW50IHBhcGVycyBhbmQgc3RhcnQgY29ubmVjdGluZyB0aGUgZG90cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5WTUVfUkRNQSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL252bWUvaG9zdC9LY29uZmlnPTQ3PWNvbmZpZyBOVk1FX0ZBQlJJQ1Ncbi0tXG5kcml2ZXJzL252bWUvaG9zdC9LY29uZmlnLTUxLVxuZHJpdmVycy9udm1lL2hvc3QvS2NvbmZpZzo1Mjpjb25maWcgTlZNRV9SRE1BXG5kcml2ZXJzL252bWUvaG9zdC9LY29uZmlnLTUzLVx0dHJpc3RhdGUgXCYjMzQ7TlZNIEV4cHJlc3Mgb3ZlciBGYWJyaWNzIFJETUEgaG9zdCBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE2MjkKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgTlZNZSBPdmVyIEZhYnJpY3MgTGFuZHNjYXBlKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQ/IExldCYjMzk7cyB6ZXJvIGluIG9uIHRoZSBgTlZNRV9UQVJHRVRfUkRNQWAgYXNwZWN0IG9mIHRoaXMuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbnRhbCBtb2RlbCBvZiB0aGF0IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24uIEkmIzM5O20gYWxyZWFkeSB0aGlua2luZyBhYm91dCBpdHMgbnVhbmNlcyBjb21wYXJlZCB0byBvdGhlciBmYWJyaWMgdHJhbnNwb3J0cyDigJMgc3BlY2lmaWNhbGx5LCBob3cgaXQgaGFuZGxlcyB0aGUgZGlyZWN0IG1lbW9yeSBhY2Nlc3MgaW1wbGljYXRpb25zLiBBcmUgd2UgdGFsa2luZyBmdWxsIFJETUEgc2VtYW50aWNzLCBvciBhIG1vcmUgbnVhbmNlZCBhcHByb2FjaD8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBmb3IgdGhlIHRhcmdldCYjMzk7cyByZXNvdXJjZSBtYW5hZ2VtZW50IGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaG9zdCYjMzk7cyBSRE1BIHZlcmJzPyBJJiMzOTttIGFudGljaXBhdGluZyBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MgaW4gdGhlIG5ldHdvcmsgb3IgaG9zdC1zaWRlIHByb3RvY29sIHByb2Nlc3NpbmcsIGFuZCBgTlZNRV9UQVJHRVRfUkRNQWAgaXMgdGhlIGtleSBwaWVjZSBvZiB0aGF0IHB1enpsZS4gSXQmIzM5O3MgdGltZSB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHJlbGV2YW50IFJGQ3MgYW5kIGFueSByZWNlbnQgcGVyZm9ybWFuY2UgcmVwb3J0cyByZWxhdGVkIHRvIHRoaXMgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmUgYSBzb2xpZCBncmlwIG9uIHRoZSBzcGVjaWZpYyBSRE1BIGltcGxlbWVudGF0aW9uIGJlaW5nIHVzZWQgYW5kIGl0cyBpbXBhY3Qgb24gZW5kLXRvLWVuZCBsYXRlbmN5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAyMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTlZNRV9UQVJHRVRfUkRNQSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWc9NDE9Y29uZmlnIE5WTUVfVEFSR0VUX0xPT1Bcbi0tXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctNTEtXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWc6NTI6Y29uZmlnIE5WTUVfVEFSR0VUX1JETUFcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy01My1cdHRyaXN0YXRlIFwmIzM0O05WTWUgb3ZlciBGYWJyaWNzIFJETUEgdGFyZ2V0IHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE5OTEKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzczoKCioqUkRNQSBUcmFuc3BvcnQgQ29uZmlndXJhdGlvbiBDaGVjayoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSB6ZXJvIGluIG9uIHRoZSBSRE1BIGFzcGVjdHMgb2YgdGhpcy4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaXZlIHJpZ2h0IGludG8gY2hlY2tpbmcgdGhlIGNvcmUgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBSZW1vdGUgRGlyZWN0IE1lbW9yeSBBY2Nlc3MgaW4gdGhpcyBjb250ZXh0LiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgdGhlIHByZXNlbmNlIGFuZCBzZXR0aW5ncyBvZiBgU1VOUlBDX1hQUlRfUkRNQWAgYW5kIGBTVkNfUkRNQWAuIFRoZXNlIGFyZSB0aGUga2V5cyB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgdHJhbnNwb3J0IGxheWVyIGlzIHNldCB1cCBhbmQgaWYgUkRNQSBpcyBwcm9wZXJseSBlbmFibGVkIGFuZCBjb25maWd1cmVkIG9uIHRoZSBzZXJ2ZXItc2lkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNVTlJQQ19YUFJUX1JETUEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3N1bnJwYy9LY29uZmlnPTEwND1jb25maWcgU1VOUlBDX0RFQlVHX1RSQUNFXG4tLVxubmV0L3N1bnJwYy9LY29uZmlnLTExNy1cbm5ldC9zdW5ycGMvS2NvbmZpZzoxMTg6Y29uZmlnIFNVTlJQQ19YUFJUX1JETUFcbm5ldC9zdW5ycGMvS2NvbmZpZy0xMTktXHR0cmlzdGF0ZSBcJiMzNDtSUEMtb3Zlci1SRE1BIHRyYW5zcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAyMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjI1MwoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNVTlJQQ19TVkNfUkRNQSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMjg5CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBzdmNfcmRtYV90cmFuc3BvcnQuY2AgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gZ2V0IG15IGJlYXJpbmdzIGhlcmUuIEkmIzM5O20gZGVlcCBpbiB0aGUgd2VlZHMgd2l0aCBgc3ZjX3JkbWFfdHJhbnNwb3J0LmNgLCBhbmQgSSYjMzk7dmUgaGl0IGEgbWVudGFsIHJvYWRibG9jay4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHRoYXQgYXJlIGRyaXZpbmcgdGhpcyBtb2R1bGUuIEl0JiMzOTtzIGEgY3JpdGljYWwgcGllY2UsIG9idmlvdXNseSwgYnV0IEkmIzM5O20gZ2V0dGluZyBhIG1lbnRhbCBibGFuayBvbiB0aGUgb3B0aW9ucyBhdmFpbGFibGUuIEkga25vdyB0aGVyZSBhcmUgc2V2ZXJhbCB0dW5pbmcgcGFyYW1ldGVycyBpbiB0aGlzIGFyZWEuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgY2hlY2sgd2hhdCYjMzk7cyBzZXQgdXAgaW4gb3VyIHBhcnRpY3VsYXIgZW52aXJvbm1lbnQuIEnigJltIHRoaW5raW5nIHRoZXJlIGlzIGEgdHVuaW5nIHByb2JsZW0gb3IgY29uZmlndXJhdGlvbiBpc3N1ZSBzbyBJIG5lZWQgdG8ga25vdyB3aGVyZSBJIGFtIHdpdGggdGhlIHNldHRpbmdzLiBJIG5lZWQgdG8ga25vdyB0aGUgZGVmYXVsdHMgYXMgd2VsbC4gSSBuZWVkIHRvIGZpbmQgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24gYW5kIGhvdyBpdCBhZmZlY3RzIHRoZSB0cmFuc3BvcnQuIFJpZ2h0LiBCYWNrIHRvIHRoZSBkb2N1bWVudGF0aW9uLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N2Y19yZG1hX3RyYW5zcG9ydFxcLm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3N1bnJwYy94cHJ0cmRtYS9NYWtlZmlsZT00PXJwY3JkbWEteSA6PSB0cmFuc3BvcnQubyBycGNfcmRtYS5vIHZlcmJzLm8gZnJ3cl9vcHMubyBpYl9jbGllbnQubyBcXFxubmV0L3N1bnJwYy94cHJ0cmRtYS9NYWtlZmlsZTo1Olx0c3ZjX3JkbWEubyBzdmNfcmRtYV9iYWNrY2hhbm5lbC5vIHN2Y19yZG1hX3RyYW5zcG9ydC5vIFxcXG5uZXQvc3VucnBjL3hwcnRyZG1hL01ha2VmaWxlLTYtXHRzdmNfcmRtYV9zZW5kdG8ubyBzdmNfcmRtYV9yZWN2ZnJvbS5vIHN2Y19yZG1hX3J3Lm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI2NzAKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJpemVkIHRob3VnaHQgcHJvY2VzcywgcHJlc2VudGVkIGFzIGlmIEkmIzM5O20gYW5hbHl6aW5nIHRoaXMgY29kZSBteXNlbGY6CgoqKlRyYWNpbmcgdGhlIFNvdXJjZTogcnBjcmRtYS15ICZhbXA7IHRoZSBNYWtlZmlsZSoqCgpSaWdodCwgc28gdGhpcyBhcHBlYXJzIHRvIGJlIG9yaWdpbmF0aW5nIGZyb20gYHJwY3JkbWEteWAuIFRoYXQgaW5zdGFudGx5IHRlbGxzIG1lIGEgZmV3IHRoaW5ncywgbW9zdGx5IHJlbGF0ZWQgdG8gUkRNQSwgcG90ZW50aWFsbHkgcmVsYXRlZCB0byByZW1vdGUgcHJvY2VkdXJlIGNhbGxzIG92ZXIgUkRNQS4gTXkgaW1tZWRpYXRlIHJlYWN0aW9uIGlzIHRvIGNoZWNrIHRoZSBgTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O20gZ29pbmcgdG8gZmluZCB0aGUgYnVpbGQgcnVsZXMsIGRlcGVuZGVuY2llcywgYW5kIGxpa2VseSB0aGUgY3J1Y2lhbCBjb21waWxhdGlvbiBmbGFncyBvciBsaW5rZXIgc2V0dGluZ3MgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29tcG9uZW50LiBUaGUgYE1ha2VmaWxlYCBpcyB0aGUgUm9zZXR0YSBTdG9uZSBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBgcnBjcmRtYS15YCBtb2R1bGUgZml0cyBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS4gSXQmIzM5O3MgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIHRvIHVucmF2ZWxpbmcgdGhlIHB1cnBvc2UgYW5kIGltcGxlbWVudGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAyMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtycGNyZG1hLXkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3N1bnJwYy94cHJ0cmRtYS9NYWtlZmlsZT0yPW9iai0kKENPTkZJR19TVU5SUENfWFBSVF9SRE1BKSAmIzQzOz0gcnBjcmRtYS5vXG5uZXQvc3VucnBjL3hwcnRyZG1hL01ha2VmaWxlLTMtXG5uZXQvc3VucnBjL3hwcnRyZG1hL01ha2VmaWxlOjQ6cnBjcmRtYS15IDo9IHRyYW5zcG9ydC5vIHJwY19yZG1hLm8gdmVyYnMubyBmcndyX29wcy5vIGliX2NsaWVudC5vIFxcXG5uZXQvc3VucnBjL3hwcnRyZG1hL01ha2VmaWxlLTUtXHRzdmNfcmRtYS5vIHN2Y19yZG1hX2JhY2tjaGFubmVsLm8gc3ZjX3JkbWFfdHJhbnNwb3J0Lm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMwMjQKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIHJlYXNvbmluZzoKCioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIFJETUEgYW5kIENJRlMqKgoKQWxyaWdodCwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgbmV0d29yayBwcm90b2NvbHMsIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgU1VOUlBDX1hQUlRfUkRNQWAgbGlrZWx5IGNvdmVycyB0aGUgUkRNQSBhc3BlY3QgZWZmZWN0aXZlbHkuIFRoYXQmIzM5O3MgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gSG93ZXZlciwgd2UmIzM5O3JlIG5vdCBqdXN0IGxvb2tpbmcgYXQgUkRNQSwgc28sIGJlZm9yZSBJIGdldCB0b28gaW52ZXN0ZWQgaW4gdGhhdCBhcmVhLCBpdCYjMzk7cyB3b3J0aCBjcm9zcy1yZWZlcmVuY2luZyB0aGlzIHRoaW5raW5nIGFnYWluc3QgdGhlIG90aGVyIHByb3RvY29sIG1lbnRpb25lZC4gTXkgbmV4dCBtb3ZlIGlzIHRvIHZlcmlmeSB0aGF0IGBDSUZTX1NNQl9ESVJFQ1RgIGlzIHRoZSByaWdodCBwcm90b2NvbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIENJRlNfU01CX0RJUkVDVCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9zbWIvY2xpZW50L0tjb25maWc9MTc5PWlmIENJRlNcbmZzL3NtYi9jbGllbnQvS2NvbmZpZy0xODAtXG5mcy9zbWIvY2xpZW50L0tjb25maWc6MTgxOmNvbmZpZyBDSUZTX1NNQl9ESVJFQ1RcbmZzL3NtYi9jbGllbnQvS2NvbmZpZy0xODItXHRib29sIFwmIzM0O1NNQiBEaXJlY3Qgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAyMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzI5NQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBTTUIgRGlyZWN0IEFjY2VwdCBGdW5jdGlvbioqCgpPa2F5LCB0aGUgcHJvYmxlbSBzZWVtcyB0byBiZSBvcmlnaW5hdGluZyB3aXRoaW4gYGZzL3NtYi9zbWJkaXJlY3QvYWNjZXB0LmNgLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24uIEJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgY29kZSBpdHNlbGYsIEkgc2hvdWxkIHRha2UgYSBzdGVwIGJhY2sgYW5kIGdldCBhIGhhbmRsZSBvbiB0aGUgYnVpbGQgZW52aXJvbm1lbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHNwZWNpZmljIGZpbGUgaXMgY29tcGlsZWQgYW5kIGxpbmtlZC4gVGhlcmVmb3JlLCB0aGUgdmVyeSBmaXJzdCB0aGluZyBJJiMzOTtsbCBkbyBpcyBjaGVjayB0aGUgYE1ha2VmaWxlYCBhc3NvY2lhdGVkIHdpdGggdGhpcyBkaXJlY3RvcnkuIFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIHByb2Nlc3Mgd2lsbCBpbGx1bWluYXRlIGRlcGVuZGVuY2llcywgY29tcGlsZXIgZmxhZ3MsIGFuZCBhbnkgcmVsZXZhbnQgcHJlcHJvY2Vzc29yIGRlZmluaXRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IHRoZSBiZWhhdmlvciBJJiMzOTttIHNlZWluZy4gR2V0dGluZyB0aGUgYnVpbGQgY29udGV4dCBpcyBjcnVjaWFsIGJlZm9yZSBJIGV2ZW4gc3RhcnQgcmVhZGluZyB0aGUgQyBjb2RlLiBJdCYjMzk7bGwgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiBob3cgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIG92ZXJhbGwgU01CIERpcmVjdCBpbmZyYXN0cnVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21iZGlyZWN0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtNQUlOVEFJTkVSUz0yNDc2OT1GOlx0ZnMvc21iL2NsaWVudC9zbWJkaXJlY3QuKlxuTUFJTlRBSU5FUlM6MjQ3NzA6RjpcdGZzL3NtYi9zbWJkaXJlY3QvXG5NQUlOVEFJTkVSUy0yNDc3MS1GOlx0ZnMvc21iL3NlcnZlci90cmFuc3BvcnRfcmRtYS4qXG4tLVxuZnMvc21iL0tjb25maWc9Nj1zb3VyY2UgXCYjMzQ7ZnMvc21iL3NlcnZlci9LY29uZmlnXCYjMzQ7XG5mcy9zbWIvS2NvbmZpZzo3OnNvdXJjZSBcJiMzNDtmcy9zbWIvc21iZGlyZWN0L0tjb25maWdcJiMzNDtcbmZzL3NtYi9LY29uZmlnLTgtXG4tLVxuZnMvc21iL01ha2VmaWxlPTM9b2JqLSQoQ09ORklHX1NNQkZTKVx0XHQmIzQzOz0gY29tbW9uL1xuZnMvc21iL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX1NNQkRJUkVDVClcdFx0JiM0Mzs9IHNtYmRpcmVjdC9cbmZzL3NtYi9NYWtlZmlsZS01LW9iai0kKENPTkZJR19DSUZTKVx0XHQmIzQzOz0gY2xpZW50L1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAyMDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzczOAoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKlJlZmxlY3Rpbmcgb24gYENPTkZJR19TTUJESVJFQ1RgKioKCkFscmlnaHQsIHNvIHRoZSBwcm9tcHQganVzdCB0aHJldyBvdXQgYENPTkZJR19TTUJESVJFQ1RgLiBUaGF0IGltbWVkaWF0ZWx5IG1ha2VzIG1lIHN0YXJ0IHRoaW5raW5nIGFib3V0IFJETUEsIHNwZWNpZmljYWxseSBJbmZpbmlCYW5kIG9yIFJvQ0UsIGFuZCBpdHMgYXBwbGljYXRpb24gd2l0aGluIHRoZSBTTUIgcHJvdG9jb2wuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGJ5cGFzc2luZyB0aGUgdHJhZGl0aW9uYWwgVENQL0lQIHN0YWNrIHRvIHByb3ZpZGUgbG93LWxhdGVuY3ksIGhpZ2gtYmFuZHdpZHRoIGZpbGUgc2hhcmluZywgd2hpY2ggaXMgcHJldHR5IGV4Y2l0aW5nLiBJJiMzOTttIG1lbnRhbGx5IHBhcnNpbmcgdGhlIGltcGxpY2F0aW9uczogaW5jcmVhc2VkIENQVSBvZmZsb2FkLCBwb3RlbnRpYWxseSBsb3dlciBsYXRlbmN5IGJvdHRsZW5lY2tzIG9uIGhpZ2hseSBsb2FkZWQgc3lzdGVtcy4gSSYjMzk7bSBhbHNvIGNvbnNpZGVyaW5nIHRoZSBoYXJkd2FyZSByZXF1aXJlbWVudHMgLSBhcmUgd2UgZGVhbGluZyB3aXRoIGRlZGljYXRlZCBSRE1BIE5JQ3MsIHNwZWNpZmljIG5ldHdvcmsgZmFicmljIGRlcGVuZGVuY2llcywgYW5kIHdoYXQgYWJvdXQgdGhlIGtlcm5lbCBzdXBwb3J0PyBUaGUgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJlbmVmaXRzIGFyZSB0aGVyZSwgYnV0IHRoZSBjb21wbGV4aXR5IGluY3JlYXNlcyBwcm9wb3J0aW9uYWxseS4gVGhlIG1lbW9yeSBtb2RlbCBpbXBsaWNhdGlvbnMgYXJlIGZyb250IGFuZCBjZW50ZXIgYXMgd2VsbCDigJMgaG93IGFyZSB0aGV5IGhhbmRsaW5nIHRoZSBkaXJlY3QgbWVtb3J5IGFjY2VzcyBhbmQgcHJvdGVjdGlvbiB3aXRoIHRoZSBhcHBsaWNhdGlvbj8gSSB3b3VsZCBiZSBhc2tpbmcgaWYgdGhlIGtlcm5lbCBoYXMgdGhlIGFwcHJvcHJpYXRlIG1vZHVsZXMgYnVpbHQgaW4gb3IgZXZlbiBpbmNsdWRlZC4gSSB3b25kZXIgaG93IHRoZSBzZWN1cml0eSBtb2RlbCBpbnRlZ3JhdGVzIHdpdGggdGhlIFJETUEgY2FwYWJpbGl0aWVzIGFuZCBpZiB0aGUgc2VjdXJpdHkgbGF5ZXJzIGFuZCBpbnRlZ3JpdHkgYXJlIGZ1bGx5IHN1cHBvcnRlZC4KSSBhbHNvIHdhbnQgdG8ga25vdyB0aGUgY3VycmVudCBzdGF0dXM6IElzIGl0IHN0aWxsIGEgaGlnaGx5LXNwZWNpYWxpemVkIG5pY2hlIGltcGxlbWVudGF0aW9uLCBvciBpcyBpdCByZWFjaGluZyBhIHBvaW50IG9mIGJyb2FkZXIgYWRvcHRpb24gaW4gbWFpbnN0cmVhbSBzdG9yYWdlIHNvbHV0aW9ucz8gV2hhdCYjMzk7cyB0aGUgc3RhdGUgb2YgdGhlIGFydCB3aGVuIGl0IGNvbWVzIHRvIGludGVyb3BlcmFiaWxpdHkgd2l0aCBkaWZmZXJlbnQgU01CIGRpYWxlY3RzIGFuZCB2ZXJzaW9ucz8gSSBpbWFnaW5lIHRoZXJlJiMzOTtzIGEgdHJhZGUtb2ZmIGJldHdlZW4gcGVyZm9ybWFuY2UgZ2FpbiBhbmQgZmVhdHVyZSBjb21wYXRpYmlsaXR5LiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGlzIHBsYXlzIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNNQkRJUkVDVCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9zbWIvc21iZGlyZWN0L0tjb25maWctNC1cbmZzL3NtYi9zbWJkaXJlY3QvS2NvbmZpZzo1OmNvbmZpZyBTTUJESVJFQ1RcbmZzL3NtYi9zbWJkaXJlY3QvS2NvbmZpZy02LVx0ZGVmX3RyaXN0YXRlIG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQxNDkKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipFdmFsdWF0aW5nIEluZmluaUJhbmQgU1JQIGFuZCBTUlBUIENvbmZpZ3VyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcsIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSB3ZSYjMzk7dmUgbG9va2VkIGF0IHRoZSBjdXJyZW50IHNldHVwIGZvciBgSU5GSU5JQkFORF9TUlBgIGFuZCBgSU5GSU5JQkFORF9TUlBUYC4gSSB3YW50IHRvIGdldCBhIGdvb2Qgc2Vuc2Ugb2YgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGVuc3VyZSBub3RoaW5nIG9idmlvdXMgaXMgbWlzc2VkLiBUaGlzIGNoZWNrIGlzIGNydWNpYWwgZm9yIHBlcmZvcm1hbmNlIGFuZCBzdGFiaWxpdHksIGdpdmVuIHRoZSBjcml0aWNhbCByb2xlIG9mIFNSUCBhbmQgU1JQVCB3aXRoaW4gdGhlIEluZmluaUJhbmQgZW52aXJvbm1lbnQuIFRoaXMgc2hvdWxkIGJlIGEgcXVpY2sgZGlhZ25vc3RpYyBzdGVwLCBidXQgaW1wb3J0YW50IHRvIGRvIG1ldGhvZGljYWxseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElORklOSUJBTkRfU1JQJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9TUlBcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0luZmluaUJhbmQgU0NTSSBSRE1BIFByb3RvY29sXCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnB0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwdC9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfU1JQVFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnB0L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0luZmluaUJhbmQgU0NTSSBSRE1BIFByb3RvY29sIHRhcmdldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NDk3CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpczoKCioqSW52ZXN0aWdhdGluZyBJbmZpbmliYW5kIGlTRVIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHN0YXR1cyBvciByZWxldmFuY2Ugb2YgdGhlc2UgSW5maW5pYmFuZC1yZWxhdGVkIHZhcmlhYmxlcy4gRmlyc3QsIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb25zIGZvciBib3RoIGBJTkZJTklCQU5EX0lTRVJgIGFuZCBgSU5GSU5JQkFORF9JU0VSVGAuIEkmIzM5O20gZ29pbmcgdG8gYXNzdW1lIHRoaXMgaXMgcmVsYXRlZCB0byBpU0VSIChpU0NTSSBFeHRlbnNpb25zIGZvciBSRE1BKSBiZWNhdXNlIG9mIHRoZSBuYW1pbmcgY29udmVudGlvbiwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoZSBzcGVjaWZpYyBmdW5jdGlvbiBlYWNoIG9uZSBoYW5kbGVzIHdpdGhpbiB0aGUgYnJvYWRlciBJbmZpbmliYW5kIGVjb3N5c3RlbS4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgZG9jdW1lbnRhdGlvbiwgb3IgbWF5YmUgbG9vayBhdCBzb21lIGV4YW1wbGUgY29uZmlndXJhdGlvbnMuIEhvcGVmdWxseSwgdGhlIG5hbWluZyBpcyBpbnR1aXRpdmUsIGFuZCB0aGVpciBwdXJwb3NlIGFuZCByZWxhdGlvbiB3aWxsIGJlIHNlbGYtZXZpZGVudC4gSWRlYWxseSwgSSBjYW4gc2VlIGV4YWN0bHkgd2hhdCBzZXR0aW5nIHRoZXNlIHZhcmlhYmxlcyBpbXBhY3RzIHdpdGhpbiB0aGUgaVNFUiBzdGFjayB0byBlbnN1cmUgdGhhdCBpdCYjMzk7cyBjb3JyZWN0bHkgY29uZmlndXJlZCBvciB0aGF0IEkgY2FuIGlkZW50aWZ5IGEgcHJvYmxlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElORklOSUJBTkRfSVNFUiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9JU0VSXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7aVNDU0kgRXh0ZW5zaW9ucyBmb3IgUkRNQSAoaVNFUilcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXJ0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvS2NvbmZpZzoyOmNvbmZpZyBJTkZJTklCQU5EX0lTRVJUXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXJ0L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O2lTQ1NJIEV4dGVuc2lvbnMgZm9yIFJETUEgKGlTRVIpIHRhcmdldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0OTE3CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRXhhbWluaW5nIEluZmluaWJhbmQgUm91dGVyIENsaWVudCBhbmQgU2VydmVyIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgcmlnaHQgaW4gYW5kIGRpc3NlY3Qgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIHRoZSBgSU5GSU5JQkFORF9SVFJTX0NMSUVOVGAgYW5kIGBJTkZJTklCQU5EX1JUUlNfU0VSVkVSYCBzZXR0aW5ncy4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gcXVpY2tseSBjb25maXJtIHRoZSBzdGF0ZSBvZiB0aGVzZSB2YXJpYWJsZXMuIERlcGVuZGluZyBvbiB0aGVpciBjb25maWd1cmF0aW9uLCB3ZSBjYW4gYmVnaW4gdG8gdHJvdWJsZXNob290IGlzc3VlcyB3aXRoIEluZmluaWJhbmQgcm91dGluZy4gVGhleSBhcmUgZnVuZGFtZW50YWwgaW4gZGV0ZXJtaW5pbmcgdGhlIGZ1bmN0aW9uYWwgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGNvbm5lY3RlZCBkZXZpY2VzLiBFc3NlbnRpYWxseSwgYXJlIHRoZXkgYWN0aXZlLCBpbmFjdGl2ZSwgd2hhdCBhcmUgdGhlIGN1cnJlbnQgdmFsdWVzPyBBcmUgdGhleSBjb3JyZWN0bHkgY29uZmlndXJlZCByZWxhdGl2ZSB0byBlYWNoIG90aGVyPyBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4gY2xpZW50IGFuZCBzZXJ2ZXIgd2lsbCBiZWNvbWUgY3JpdGljYWwgaWYgdGhlcmUgaXMgYW55IHRyYWZmaWMgZmxvdyBwcm9ibGVtcy4gS25vd2luZyB0aGUgdmFsdWVzIGdpdmVzIGEgc29saWQgZm91bmRhdGlvbi4gVGhlc2UgdmFyaWFibGVzLCBpbiB0aGUgY29udGV4dCBvZiByb3V0aW5nLCBpbW1lZGlhdGVseSB0cmlnZ2VyIHF1ZXN0aW9ucyBhcm91bmQgd2hldGhlciB0aGV5IGFyZSBwcm9wZXJseSBkZWZpbmVkLCBpZiB0aGVyZSBhcmUgYW55IGNvbmZsaWN0cywgYW5kIGlmIHRoZXkgYWxpZ24gd2l0aCB0aGUgZXhwZWN0ZWQgY29tbXVuaWNhdGlvbiBtb2RlbC4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHRoZSBjb250ZXh0IG9mIHRoZSBsYXJnZXIgc2V0dXAgdG8gdW5kZXJzdGFuZCBhbnkgc3BlY2lmaWMgaXNzdWVzLCBidXQgdGhlc2UgdmFyaWFibGVzIGFyZSBhIGdyZWF0IHN0YXJ0aW5nIHBvaW50IGZvciBhbmFseXppbmcgcm91dGluZyBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAyMDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU5GSU5JQkFORF9SVFJTJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9LY29uZmlnLTItXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZzozOmNvbmZpZyBJTkZJTklCQU5EX1JUUlNcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9LY29uZmlnLTQtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9LY29uZmlnLTYtXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZzo3OmNvbmZpZyBJTkZJTklCQU5EX1JUUlNfQ0xJRU5UXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZy04LVx0dHJpc3RhdGUgXCYjMzQ7UlRSUyBjbGllbnQgbW9kdWxlXCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL0tjb25maWctMTctXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZzoxODpjb25maWcgSU5GSU5JQkFORF9SVFJTX1NFUlZFUlxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL0tjb25maWctMTktXHR0cmlzdGF0ZSBcJiMzNDtSVFJTIHNlcnZlciBtb2R1bGVcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU0MjMKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSB0aGUgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIFJETUEgd2l0aGluIFJEUyoqCgpBbHJpZ2h0LCB0aGUgbWVudGFsIGdlYXJzIGFyZSBzdGFydGluZyB0byB0dXJuLiAmIzM0O1JEU19SRE1BJiMzNDsuLi4gdGhhdCYjMzk7cyB0aGUgdHJpZ2dlci4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiB0aGlzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBSRE1BIGludGVyYWN0cyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgUmVtb3RlIERpcmVjdCBNZW1vcnkgQWNjZXNzIChSRE1BKSBhbmQgUmVsYXRpb25hbCBEYXRhYmFzZSBTZXJ2aWNlIChSRFMpLiBJIG5lZWQgdG8gY2hlY2sgdGhlIGN1cnJlbnQgc3RhdHVzLCBhbmQgc3RhcnQgbXkgaW52ZXN0aWdhdGlvbiBmcm9tIHRoZXJlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSRFNfUkRNQSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcmRzL0tjb25maWc9Mz1jb25maWcgUkRTXG4tLVxubmV0L3Jkcy9LY29uZmlnLTktXG5uZXQvcmRzL0tjb25maWc6MTA6Y29uZmlnIFJEU19SRE1BXG5uZXQvcmRzL0tjb25maWctMTEtXHR0cmlzdGF0ZSBcJiMzNDtSRFMgb3ZlciBJbmZpbmliYW5kXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NjQzCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyB0aGUgYElORklOSUJBTkRfSVBPSUJgIFZhcmlhYmxlKioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYElORklOSUJBTkRfSVBPSUJgIHRoaW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgY29uc2lkZXIgaXRzIGNvbnRleHQuIFdlJiMzOTtyZSBvYnZpb3VzbHkgZGVhbGluZyB3aXRoIEluZmluaUJhbmQsIGFuZCB0aGUgcHJlc2VuY2Ugb2YgJiMzNDtJUE9JQiYjMzQ7IHN1Z2dlc3RzIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IElQIG92ZXIgSUIuIFRoaXMgaXMgdXN1YWxseSB0aGUgYXJlYSBvZiBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgdHVuaW5nL2NvbmZpZ3VyYXRpb24sIG9yIGRlYnVnZ2luZyBmb3IgSUIgZmFicmljIGJlaGF2aW9yLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGZsYXNoZXMgdG8gc2NlbmFyaW9zIGxpa2U6IGlzIHRoaXMgc2V0dGluZyBhIGRyaXZlciBmbGFnLCBhbiBlbnZpcm9ubWVudGFsIHZhcmlhYmxlLCBvciBhIGtlcm5lbCBwYXJhbWV0ZXI/IFdoYXQgbGV2ZWwgb2YgdGhlIHN0YWNrIGlzIGl0IGltcGFjdGluZz8gQW5kIGZyb20gdGhlcmUsIHdoYXQgbWlnaHQgYmUgaXRzIGVmZmVjdHMgb24sIHNheSwgdGhyb3VnaHB1dCwgbGF0ZW5jeSwgb3IgZXZlbiBvdmVyYWxsIHN5c3RlbSBzdGFiaWxpdHk/IEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgcXVlc3Rpb25zIGFib3V0IG5ldHdvcmsgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24gYW5kIHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvdGhlciBuZXR3b3JrIHNldHVwcywgcGVyaGFwcyBldmVuIHdpdGggdGhpbmdzIGxpa2UgYHJkbWFfY21gLiBJIG5lZWQgdG8gYXNzZXNzIHdoYXQgaXQgZG9lcyB0byB0aGUgZGVmYXVsdCBiZWhhdmlvci4gSXMgdGhpcyBzZXR0aW5nIGJlaW5nIHVzZWQgdG8gZW5hYmxlLCBkaXNhYmxlLCBvciBtb2RpZnkgc29tZSBhc3BlY3Qgb2YgSVBPSUI/IElzIGl0IGEgZ2VuZXJhbCBzZXR0aW5nLCBvciBzcGVjaWZpYyB0byBhIGNlcnRhaW4gdmVuZG9yJiMzOTtzIGltcGxlbWVudGF0aW9uLCBvciBwb3NzaWJseSB0aGUgbGludXgga2VybmVsPyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGl0JiMzOTtzICpkb2luZyogYmVmb3JlIEkgY2FuIHVuZGVyc3RhbmQgaXRzIGltcGFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElORklOSUJBTkRfSVBPSUImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9JUE9JQlxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtJUC1vdmVyLUluZmluaUJhbmRcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWctMTEtXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWc6MTI6Y29uZmlnIElORklOSUJBTkRfSVBPSUJfQ01cbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvS2NvbmZpZy0xMy1cdGJvb2wgXCYjMzQ7SVAtb3Zlci1JbmZpbmlCYW5kIENvbm5lY3RlZCBNb2RlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWctMjYtXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWc6Mjc6Y29uZmlnIElORklOSUJBTkRfSVBPSUJfREVCVUdcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7SVAtb3Zlci1JbmZpbmlCYW5kIGRlYnVnZ2luZ1wmIzM0OyBpZiBFWFBFUlRcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWctNDEtXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWc6NDI6Y29uZmlnIElORklOSUJBTkRfSVBPSUJfREVCVUdfREFUQVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTQzLVx0Ym9vbCBcJiMzNDtJUC1vdmVyLUluZmluaUJhbmQgZGF0YSBwYXRoIGRlYnVnZ2luZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAyMDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjI4OQoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDEzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIFJETUEgQ29uZmlndXJhdGlvbnMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoZXNlIFJETUEtcmVsYXRlZCBjb25maWd1cmF0aW9ucy4gSSBzZWUgYSBwcmV0dHkgY29tcHJlaGVuc2l2ZSBsaXN0IGhlcmU6IGBSRE1BX1JYRWAsIGBOVk1FX1JETUFgLCBgTlZNRV9UQVJHRVRfUkRNQWAsIGBTVU5SUENfWFBSVF9SRE1BYCwgYFNNQkRJUkVDVGAsIGBJTkZJTklCQU5EX1NSUGAsIGBJTkZJTklCQU5EX1NSUFRgLCBgSU5GSU5JQkFORF9JU0VSYCwgYElORklOSUJBTkRfSVNFUlRgLCBgSU5GSU5JQkFORF9SVFJTX0NMSUVOVGAsIGBJTkZJTklCQU5EX1JUUlNfU0VSVkVSYCwgYFJEU19SRE1BYCwgYW5kIGBJTkZJTklCQU5EX0lQT0lCYC4gU2VlbXMgbGlrZSB0aGUga2VybmVsIGRldmVsb3BlcnMgaGF2ZSBiZWVuIGtlZXBpbmcgYnVzeSEKCkhhbmcgb24gYSBzZWNvbmTigKYgaXNuJiMzOTt0IGBTTUJESVJFQ1RgIGEgaGlkZGVuIGNvbmZpZz8gVGhhdCByaW5ncyBhIGJlbGwuIEdvdHRhIGRvdWJsZS1jaGVjayB0aGF0LiBMZXQgbWUgcXVpY2tseSBnbyBsb29rIGluIGBmcy9zbWIvc21iZGlyZWN0L0tjb25maWdgIHRvIGNvbmZpcm0gYW5kIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHB1cnBvc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTUJESVJFQ1QmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvc21iL3NtYmRpcmVjdC9LY29uZmlnLTQtXG5mcy9zbWIvc21iZGlyZWN0L0tjb25maWc6NTpjb25maWcgU01CRElSRUNUXG5mcy9zbWIvc21iZGlyZWN0L0tjb25maWctNi1cdGRlZl90cmlzdGF0ZSBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NzE4CgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIEZ1bmN0aW9uIERlZmluaXRpb24qKgoKT2theSwgc28gSSBzZWUgYSBmdW5jdGlvbiBkZWZpbml0aW9uIGhlcmU6IGBkZWZfdHJpc3RhdGUgbmAuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIHdoZXJlIGlzIGBkZWZfdHJpc3RhdGVgIGJlaW5nIGludm9rZWQgZnJvbT8gSXRzIHNpZ25hdHVyZSBhbG9uZSBkb2VzbiYjMzk7dCBnaXZlIG1lIG11Y2ggY29udGV4dCwgc28gSSBuZWVkIHRvIHRyYWNlIGJhY2sgdGhlIGNhbGwgY2hhaW4gdG8gdW5kZXJzdGFuZCBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0uIFRoaXMgaW1wbGllcyB0aGF0IHRoZXJlIGlzIHNvbWUgZXh0ZXJuYWwgZmFjdG9yIGF0IHBsYXkgd2hpY2ggaXMgc2VsZWN0aW5nIHRoaXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhhdCB0cmlnZ2VyIGlzLCBhbmQgd2hhdCBwb3NzaWJsZSBvdXRjb21lcyBhcmUgYXQgcGxheSBoZXJlLiBXaXRob3V0IHRoYXQgdW5kZXJzdGFuZGluZywgSSYjMzk7bSBqdXN0IGxvb2tpbmcgYXQgYSBzeW50YWN0aWMgc25pcHBldC4gSXRzIHNlbGVjdGlvbiBpbmRpY2F0ZXMgdGhhdCB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIGxvZ2ljIHBhdGggYmVpbmcgY2hvc2VuLCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmRpdGlvbnMgdGhhdCBsZWFkIHRvIGl0cyBleGVjdXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBTTUJESVJFQ1QmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvc21iL2NsaWVudC9LY29uZmlnPTE4MT1jb25maWcgQ0lGU19TTUJfRElSRUNUXG4tLVxuZnMvc21iL2NsaWVudC9LY29uZmlnLTE4NC1cdGRlcGVuZHMgb24gQ0lGUz1tIHx8IElORklOSUJBTkQ9eVxuZnMvc21iL2NsaWVudC9LY29uZmlnOjE4NTpcdHNlbGVjdCBTTUJESVJFQ1RcbmZzL3NtYi9jbGllbnQvS2NvbmZpZy0xODYtXHRoZWxwXG4tLVxuZnMvc21iL3NlcnZlci9LY29uZmlnPTQ4PWNvbmZpZyBTTUJfU0VSVkVSX1NNQkRJUkVDVFxuLS1cbmZzL3NtYi9zZXJ2ZXIvS2NvbmZpZy01MS1cdGRlcGVuZHMgb24gU01CX1NFUlZFUj1tIHx8IElORklOSUJBTkQ9eVxuZnMvc21iL3NlcnZlci9LY29uZmlnOjUyOlx0c2VsZWN0IFNNQkRJUkVDVFxuZnMvc21iL3NlcnZlci9LY29uZmlnLTUzLVx0ZGVmYXVsdCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MTA4CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqRW5hYmxpbmcgU01CIERpcmVjdCBhbmQgUkRNQSBmb3IgT3B0aW1hbCBQZXJmb3JtYW5jZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGFyY2hpdGVjdHVyZSwgSSBuZWVkIHRvIGZvY3VzIG9uIGVuYWJsaW5nIGBDSUZTX1NNQl9ESVJFQ1RgIGFuZCBgU01CX1NFUlZFUl9TTUJESVJFQ1RgIGZpcnN0IGFuZCBmb3JlbW9zdC4gVGhlc2UgYXJlIHRoZSBrZXkgc2V0dGluZ3MgdG8gdW5sb2NrIHRoZSBwZXJmb3JtYW5jZSBiZW5lZml0cyBvZiBTTUIgRGlyZWN0IGFuZCBSZW1vdGUgRGlyZWN0IE1lbW9yeSBBY2Nlc3MgKFJETUEpLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZSwgdGhlIGZvdW5kYXRpb24uCgpOb3csIGxldCYjMzk7cyBwaXZvdCB0byB0aGUgaGFyZHdhcmUuIEkgbmVlZCB0byBzcGVjaWZpY2FsbHkgY29uZmlybSB0aGlzIGlzIHBvc3NpYmxlIHdpdGggdGhlIGBRRURSYCAoUUxvZ2ljIEZhc3RMaW5RIDR4eHh4IENvcmUgTW9kdWxlKSBJJiMzOTttIHdvcmtpbmcgd2l0aC4gVGhpcyB3aWxsIGJlIHRoZSBkZWNpZGluZyBmYWN0b3IgaWYgSSBjYW4gbWFrZSB1c2Ugb2YgU01CIERpcmVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElORklOSUJBTkRfUUVEUiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvaHcvcWVkci9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvcWVkci9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfUUVEUlxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3FlZHIvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UUxvZ2ljIFJvQ0UgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NDQyCgkJCQkJCQlvdXRwdXQ6IDM2MAoJCQkJCQkJdGhvdWdodHM6IDExMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUkRNQSBBdHRyaWJ1dGUgVHlwZSBDaGFuZ2UgYW5kIEZ1enppbmcgU3RyYXRlZ3kqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGlzIHBhdGNoLiBGaXJzdCBvZmYsIFFFRFIgaXMgYSBoYXJkd2FyZSBkcml2ZXIsIHJpZ2h0PyBTbywgaXQmIzM5O3Mgbm90IHJlbGV2YW50IGhlcmUgc2luY2Ugd2UmIzM5O3JlIGZvY3VzZWQgb24gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gUlhFIGlzIG91ciBzb2Z0d2FyZSBSRE1BIHNvbHV0aW9uLCBzbyB0aGF0JiMzOTtzIHRoZSBhbmdsZSB3ZSBuZWVkIHRvIHRha2UuIE5vIG5lZWQgdG8gZ2V0IGJvZ2dlZCBkb3duIGluIFFFRFIuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgZnVuY3Rpb25zIGltcGFjdGVkLiBJbml0aWFsbHksIEkgaGFkIGEgcHJldHR5IGV4aGF1c3RpdmUgbGlzdCwgYnV0IHRoYXQmIzM5O3MgZ29pbmcgdG8gYmUgdG9vIG11Y2ggZm9yIHRlc3RpbmcuIFRpbWUgdG8gaG9uZSBpbiBvbiB0aGUgaW1wb3J0YW50IG9uZXMuIEkgbmVlZCBhIHJlcHJlc2VudGF0aXZlIHNldCBvZiBmdW5jdGlvbnMgdGhhdCBhcmUgZGlyZWN0bHkgbW9kaWZpZWQgYW5kIGFyZSBub3QgZnJlcXVlbnRseSBhY2Nlc3NlZCAmIzM0O2hvdCBwYXRocyYjMzQ7IHNvIHRoYXQgdGhleSBjYW4gYmUgZnV6emVkIHdpdGhvdXQgaW1wYWN0aW5nIHRoZSBzeXN0ZW0gaW4gYW4gaW1wYWN0ZnVsIG1hbm5lci4KCkkmIzM5O3ZlIGdvdCBhIHNsaWdodGx5IG1vcmUgbWFuYWdlYWJsZSBsaXN0IG5vdzogYG52bWVfcmRtYV9maW5kX2dldF9kZXZpY2VgLCBgbnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2VgLCBgZnJ3cl9xdWVyeV9kZXZpY2VgLCBgcnhlX3FwX2Noa19jYXBgLCBgcnhlX3NycV9jaGtfaW5pdGAsIGBzbWJkaXJlY3RfY29ubmVjdGlvbl9jcmVhdGVfcXBgLCBgcmRzX2liX2NtX2ZpbGxfY29ubl9wYXJhbWAsIGBzdmNfcmRtYV9hY2NlcHRgLCBhbmQgYHJwY3JkbWFfZXBfY3JlYXRlYC4gVGhlc2UgYWxsIHNlZW0gcmVhc29uYWJsZS4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgY29ubmVjdGlvbiBzZXR1cCwgRVAgY3JlYXRpb24sIFFQL1NSUSBjcmVhdGlvbiwgc28gbm90IHVzdWFsbHkgaW4gdGhlIGhvdCBwYXRoLiBQZXJmZWN0LgoKTm93LCBhcyBmYXIgYXMgY29uZmlncyBnbywgYmVzaWRlcyB0aGUgYFJETUFfUlhFYCwgd2UgaGF2ZSBhIGJ1bmNoIG1vcmUuIEkmIzM5O2xsIG5lZWQgdG8gZ28gdGhyb3VnaCBhbGwgb2YgdGhlbSAoYE5WTUVfUkRNQWAsIGBOVk1FX1RBUkdFVF9SRE1BYCwgYFNVTlJQQ19YUFJUX1JETUFgLCBgQ0lGU19TTUJfRElSRUNUYCwgYFNNQl9TRVJWRVJfU01CRElSRUNUYCwgYElORklOSUJBTkRfU1JQYCwgYElORklOSUJBTkRfU1JQVGAsIGBJTkZJTklCQU5EX0lTRVJgLCBgSU5GSU5JQkFORF9JU0VSVGAsIGBJTkZJTklCQU5EX1JUUlNfQ0xJRU5UYCwgYElORklOSUJBTkRfUlRSU19TRVJWRVJgLCBgUkRTX1JETUFgLCBgSU5GSU5JQkFORF9JUE9JQmApIHRvIGVuc3VyZSB0aGUgY2hhbmdlcyBhcmUgY29ycmVjdGx5IGhhbmRsZWQuIEp1c3QgY29uZmlybWluZyBgUkRNQV9SWEVgIGlzIHN1ZmZpY2llbnQgZm9yIHNvZnR3YXJlIFJETUEgLSB5ZXMsIHdlIGFyZSBnb29kLiBKdXN0IGluIGNhc2UsIEkgYWxzbyBtYWRlIG5vdGUgb2YgYFJETUFfU0lXYCwgYnV0IHdlJiMzOTtyZSBmb2N1c2luZyBvbiBSWEUgaGVyZS4KCk9rYXksIGxldCYjMzk7cyByZWNhcCBteSByZWFzb25pbmcuIFRoaXMgcGF0Y2ggaXMgY2hhbmdpbmcgaW50ZWdlciB0eXBlcyBmcm9tIGBpbnRgIHRvIGB1MzJgIGZvciBSRE1BIGRldmljZSBhdHRyaWJ1dGVzLCBhbHNvIHVwZGF0aW5nIGBtaW4oKWAgY2FsbHMgYW5kIGZvcm1hdCBzdHJpbmdzLiBUaGVyZSBhcmUgZml4ZXMgZm9yIHBvdGVudGlhbCB1bmRlcmZsb3dzIGluIHNvbWUgY3J1Y2lhbCBmdW5jdGlvbnM6IGBudm1lX3JkbWFfZmluZF9nZXRfZGV2aWNlYCwgYG52bWV0X3JkbWFfZmluZF9nZXRfZGV2aWNlYCwgYW5kIGBmcndyX3F1ZXJ5X2RldmljZWAuIFRoZXNlIGNoYW5nZXMgdG91Y2ggdGhlIGNvcmUgUkRNQSBsb2dpYyBhbmQgbXVsdGlwbGUgVUxQcyB3aGljaCBjYW4gYmUgdGVzdGVkIGluIG91ciBlbnZpcm9ubWVudCB1c2luZyB0aGUgUlhFIHNvZnR3YXJlIFJETUEgZHJpdmVyLiBUaGlzIG1lYW5zIHdlJiMzOTtsbCBuZWVkIGZ1enppbmcgdG8gbWFrZSBzdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIGFueSBuZXcgaW50ZWdlciBvdmVyZmxvdy91bmRlcmZsb3cgYnVncyBoYXZlIGJlZW4gaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzLgpOb3cgSSB0aGluayBJIGhhdmUgYSBjbGVhciBwbGFuLiBUaW1lIHRvIHByb2R1Y2UgYSBjb25jaXNlIHN1bW1hcnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSRE1BX1JYRSYjMzQ7LAogICAgJiMzNDtOVk1FX1JETUEmIzM0OywKICAgICYjMzQ7TlZNRV9UQVJHRVRfUkRNQSYjMzQ7LAogICAgJiMzNDtTVU5SUENfWFBSVF9SRE1BJiMzNDssCiAgICAmIzM0O0NJRlNfU01CX0RJUkVDVCYjMzQ7LAogICAgJiMzNDtTTUJfU0VSVkVSX1NNQkRJUkVDVCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX1NSUCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX1NSUFQmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9JU0VSJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfSVNFUlQmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9SVFJTX0NMSUVOVCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX1JUUlNfU0VSVkVSJiMzNDssCiAgICAmIzM0O1JEU19SRE1BJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfSVBPSUImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudm1lX3JkbWFfZmluZF9nZXRfZGV2aWNlJiMzNDssCiAgICAmIzM0O252bWV0X3JkbWFfZmluZF9nZXRfZGV2aWNlJiMzNDssCiAgICAmIzM0O2Zyd3JfcXVlcnlfZGV2aWNlJiMzNDssCiAgICAmIzM0O3J4ZV9xcF9jaGtfY2FwJiMzNDssCiAgICAmIzM0O3J4ZV9zcnFfY2hrX2luaXQmIzM0OywKICAgICYjMzQ7c21iZGlyZWN0X2Nvbm5lY3Rpb25fY3JlYXRlX3FwJiMzNDssCiAgICAmIzM0O3Jkc19pYl9jbV9maWxsX2Nvbm5fcGFyYW0mIzM0OywKICAgICYjMzQ7c3ZjX3JkbWFfYWNjZXB0JiMzNDssCiAgICAmIzM0O3JwY3JkbWFfZXBfY3JlYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIHR5cGVzIG9mIHZhcmlvdXMgUkRNQSBkZXZpY2UgYXR0cmlidXRlcyBmcm9tIGBpbnRgIHRvIGB1MzJgIGFuZCB1cGRhdGVzIHRoZSBjb3JyZXNwb25kaW5nIGBtaW4oKWAgY2FsbHMgYW5kIGZvcm1hdCBzdHJpbmdzLiBJdCBhbHNvIGZpeGVzIHNvbWUgcG90ZW50aWFsIHVuZGVyZmxvd3MgaW4gY29ubmVjdGlvbiBzZXR1cCBmdW5jdGlvbnMuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHRoZSBjb3JlIFJETUEgbG9naWMgYW5kIHZhcmlvdXMgUkRNQSBVTFBzIChVcHBlciBMYXllciBQcm90b2NvbHMpIHdoaWNoIGNhbiBiZSB0ZXN0ZWQgdXNpbmcgdGhlIHNvZnR3YXJlIFJETUEgZHJpdmVyIChSWEUpLiBJdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBuZXcgaW50ZWdlciBvdmVyZmxvdy91bmRlcmZsb3cgYnVncyB3ZXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JETUFfUlhFJiMzNDssCiAgICAmIzM0O05WTUVfUkRNQSYjMzQ7LAogICAgJiMzNDtOVk1FX1RBUkdFVF9SRE1BJiMzNDssCiAgICAmIzM0O1NVTlJQQ19YUFJUX1JETUEmIzM0OywKICAgICYjMzQ7Q0lGU19TTUJfRElSRUNUJiMzNDssCiAgICAmIzM0O1NNQl9TRVJWRVJfU01CRElSRUNUJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfU1JQJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfU1JQVCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX0lTRVImIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9JU0VSVCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX1JUUlNfQ0xJRU5UJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfUlRSU19TRVJWRVImIzM0OywKICAgICYjMzQ7UkRTX1JETUEmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9JUE9JQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O252bWVfcmRtYV9maW5kX2dldF9kZXZpY2UmIzM0OywKICAgICYjMzQ7bnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2UmIzM0OywKICAgICYjMzQ7ZnJ3cl9xdWVyeV9kZXZpY2UmIzM0OywKICAgICYjMzQ7cnhlX3FwX2Noa19jYXAmIzM0OywKICAgICYjMzQ7cnhlX3NycV9jaGtfaW5pdCYjMzQ7LAogICAgJiMzNDtzbWJkaXJlY3RfY29ubmVjdGlvbl9jcmVhdGVfcXAmIzM0OywKICAgICYjMzQ7cmRzX2liX2NtX2ZpbGxfY29ubl9wYXJhbSYjMzQ7LAogICAgJiMzNDtzdmNfcmRtYV9hY2NlcHQmIzM0OywKICAgICYjMzQ7cnBjcmRtYV9lcF9jcmVhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZXMgb2YgdmFyaW91cyBSRE1BIGRldmljZSBhdHRyaWJ1dGVzIGZyb20gYGludGAgdG8gYHUzMmAgYW5kIHVwZGF0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgYG1pbigpYCBjYWxscyBhbmQgZm9ybWF0IHN0cmluZ3MuIEl0IGFsc28gZml4ZXMgc29tZSBwb3RlbnRpYWwgdW5kZXJmbG93cyBpbiBjb25uZWN0aW9uIHNldHVwIGZ1bmN0aW9ucy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgUkRNQSBsb2dpYyBhbmQgdmFyaW91cyBSRE1BIFVMUHMgKFVwcGVyIExheWVyIFByb3RvY29scykgd2hpY2ggY2FuIGJlIHRlc3RlZCB1c2luZyB0aGUgc29mdHdhcmUgUkRNQSBkcml2ZXIgKFJYRSkuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyBpbnRlZ2VyIG92ZXJmbG93L3VuZGVyZmxvdyBidWdzIHdlcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ2OjI0LjcwMTY4NzM3MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NTkwNDk4NTc5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSRE1BX1JYRVwiLFxuICAgIFwiTlZNRV9SRE1BXCIsXG4gICAgXCJOVk1FX1RBUkdFVF9SRE1BXCIsXG4gICAgXCJTVU5SUENfWFBSVF9SRE1BXCIsXG4gICAgXCJDSUZTX1NNQl9ESVJFQ1RcIixcbiAgICBcIlNNQl9TRVJWRVJfU01CRElSRUNUXCIsXG4gICAgXCJJTkZJTklCQU5EX1NSUFwiLFxuICAgIFwiSU5GSU5JQkFORF9TUlBUXCIsXG4gICAgXCJJTkZJTklCQU5EX0lTRVJcIixcbiAgICBcIklORklOSUJBTkRfSVNFUlRcIixcbiAgICBcIklORklOSUJBTkRfUlRSU19DTElFTlRcIixcbiAgICBcIklORklOSUJBTkRfUlRSU19TRVJWRVJcIixcbiAgICBcIlJEU19SRE1BXCIsXG4gICAgXCJJTkZJTklCQU5EX0lQT0lCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnZtZV9yZG1hX2ZpbmRfZ2V0X2RldmljZVwiLFxuICAgIFwibnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2VcIixcbiAgICBcImZyd3JfcXVlcnlfZGV2aWNlXCIsXG4gICAgXCJyeGVfcXBfY2hrX2NhcFwiLFxuICAgIFwicnhlX3NycV9jaGtfaW5pdFwiLFxuICAgIFwic21iZGlyZWN0X2Nvbm5lY3Rpb25fY3JlYXRlX3FwXCIsXG4gICAgXCJyZHNfaWJfY21fZmlsbF9jb25uX3BhcmFtXCIsXG4gICAgXCJzdmNfcmRtYV9hY2NlcHRcIixcbiAgICBcInJwY3JkbWFfZXBfY3JlYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZXMgb2YgdmFyaW91cyBSRE1BIGRldmljZSBhdHRyaWJ1dGVzIGZyb20gYGludGAgdG8gYHUzMmAgYW5kIHVwZGF0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgYG1pbigpYCBjYWxscyBhbmQgZm9ybWF0IHN0cmluZ3MuIEl0IGFsc28gZml4ZXMgc29tZSBwb3RlbnRpYWwgdW5kZXJmbG93cyBpbiBjb25uZWN0aW9uIHNldHVwIGZ1bmN0aW9ucy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgUkRNQSBsb2dpYyBhbmQgdmFyaW91cyBSRE1BIFVMUHMgKFVwcGVyIExheWVyIFByb3RvY29scykgd2hpY2ggY2FuIGJlIHRlc3RlZCB1c2luZyB0aGUgc29mdHdhcmUgUkRNQSBkcml2ZXIgKFJYRSkuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyBpbnRlZ2VyIG92ZXJmbG93L3VuZGVyZmxvdyBidWdzIHdlcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDY6MjQuNzAxNjkzMzUyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDY5MzA3NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzMDI1MzkwYjA5MzU5ZTE5MDRkMjM5YTFiMjc0MTYxNDQ4NGJlNzI1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVuIDE5IDIwOjQ2OjIzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL2NxLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvY29yZS9jcS5jXFxuaW5kZXggM2Q3YjZjZGRkMTMxYzQuLmVlOTgxODhlNTdmYjVmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL2NxLmNcXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvY29yZS9jcS5jXFxuQEAgLTM5Myw4ICszOTMsNyBAQCBzdGF0aWMgaW50IGliX2FsbG9jX2NxcyhzdHJ1Y3QgaWJfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBucl9jcWVzLFxcbiBcXHQgKiBhIHJlYXNvbmFibGUgYmF0Y2ggc2l6ZSBzbyB0aGF0IHdlIGNhbiBzaGFyZSBDUXMgYmV0d2VlblxcbiBcXHQgKiBtdWx0aXBsZSB1c2VycyBpbnN0ZWFkIG9mIGFsbG9jYXRpbmcgYSBsYXJnZXIgbnVtYmVyIG9mIENRcy5cXG4gXFx0ICovXFxuLVxcdG5yX2NxZXMgPSBtaW5fdCh1bnNpZ25lZCBpbnQsIGRldi1cXHUwMDNlYXR0cnMubWF4X2NxZSxcXG4tXFx0XFx0XFx0bWF4KG5yX2NxZXMsIElCX01BWF9TSEFSRURfQ1FfU1opKTtcXG4rXFx0bnJfY3FlcyA9IG1pbihkZXYtXFx1MDAzZWF0dHJzLm1heF9jcWUsIG1heChucl9jcWVzLCBJQl9NQVhfU0hBUkVEX0NRX1NaKSk7XFxuIFxcdG5yX2NxcyA9IG1pbl90KHVuc2lnbmVkIGludCwgZGV2LVxcdTAwM2VudW1fY29tcF92ZWN0b3JzLCBudW1fb25saW5lX2NwdXMoKSk7XFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl9jcXM7IGkrKykge1xcbiBcXHRcXHRjcSA9IGliX2FsbG9jX2NxKGRldiwgTlVMTCwgbnJfY3FlcywgaSwgcG9sbF9jdHgpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWVkci92ZXJicy5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FlZHIvdmVyYnMuY1xcbmluZGV4IDY3OWFhNmYzYTYzYmM1Li5hODVhZDAxNzExMzQ4ZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWVkci92ZXJicy5jXFxuKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FlZHIvdmVyYnMuY1xcbkBAIC0xNTEsNyArMTUxLDcgQEAgaW50IHFlZHJfcXVlcnlfZGV2aWNlKHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LFxcbiBcXHRhdHRyLVxcdTAwM2VtYXhfcXBfaW5pdF9yZF9hdG9tID1cXG4gXFx0ICAgIDEgXFx1MDAzY1xcdTAwM2MgKGZscyhxYXR0ci1cXHUwMDNlbWF4X3FwX3JlcV9yZF9hdG9taWNfcmVzYykgLSAxKTtcXG4gXFx0YXR0ci1cXHUwMDNlbWF4X3FwX3JkX2F0b20gPVxcbi1cXHQgICAgbWluKDEgXFx1MDAzY1xcdTAwM2MgKGZscyhxYXR0ci1cXHUwMDNlbWF4X3FwX3Jlc3BfcmRfYXRvbWljX3Jlc2MpIC0gMSksXFxuK1xcdCAgICBtaW4oMVUgXFx1MDAzY1xcdTAwM2MgKGZscyhxYXR0ci1cXHUwMDNlbWF4X3FwX3Jlc3BfcmRfYXRvbWljX3Jlc2MpIC0gMSksXFxuIFxcdFxcdGF0dHItXFx1MDAzZW1heF9xcF9pbml0X3JkX2F0b20pO1xcbiBcXG4gXFx0YXR0ci1cXHUwMDNlbWF4X3NycSA9IHFhdHRyLVxcdTAwM2VtYXhfc3JxO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfcXAuY1xcbmluZGV4IGYzZGZmMWFlYTk2YWZjLi43YTA1MjlhMTc5OTJjOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jXFxuKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfcXAuY1xcbkBAIC02NywyNyArNjcsMjcgQEAgc3RhdGljIGludCByeGVfcXBfY2hrX2NhcChzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgaWJfcXBfY2FwICpjYXAsXFxuIFxcdFxcdFxcdCAgaW50IGhhc19zcnEpXFxuIHtcXG4gXFx0aWYgKGNhcC1cXHUwMDNlbWF4X3NlbmRfd3IgXFx1MDAzZSByeGUtXFx1MDAzZWF0dHIubWF4X3FwX3dyKSB7XFxuLVxcdFxcdHJ4ZV9kYmdfZGV2KHJ4ZSwgXFxcImludmFsaWQgc2VuZCB3ciA9ICV1IFxcdTAwM2UgJWRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdCBjYXAtXFx1MDAzZW1heF9zZW5kX3dyLCByeGUtXFx1MDAzZWF0dHIubWF4X3FwX3dyKTtcXG4rXFx0XFx0cnhlX2RiZ19kZXYocnhlLCBcXFwiaW52YWxpZCBzZW5kIHdyID0gJXUgXFx1MDAzZSAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0ICAgIGNhcC1cXHUwMDNlbWF4X3NlbmRfd3IsIHJ4ZS1cXHUwMDNlYXR0ci5tYXhfcXBfd3IpO1xcbiBcXHRcXHRnb3RvIGVycjE7XFxuIFxcdH1cXG4gXFxuIFxcdGlmIChjYXAtXFx1MDAzZW1heF9zZW5kX3NnZSBcXHUwMDNlIHJ4ZS1cXHUwMDNlYXR0ci5tYXhfc2VuZF9zZ2UpIHtcXG4tXFx0XFx0cnhlX2RiZ19kZXYocnhlLCBcXFwiaW52YWxpZCBzZW5kIHNnZSA9ICV1IFxcdTAwM2UgJWRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdCBjYXAtXFx1MDAzZW1heF9zZW5kX3NnZSwgcnhlLVxcdTAwM2VhdHRyLm1heF9zZW5kX3NnZSk7XFxuK1xcdFxcdHJ4ZV9kYmdfZGV2KHJ4ZSwgXFxcImludmFsaWQgc2VuZCBzZ2UgPSAldSBcXHUwMDNlICV1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgICAgY2FwLVxcdTAwM2VtYXhfc2VuZF9zZ2UsIHJ4ZS1cXHUwMDNlYXR0ci5tYXhfc2VuZF9zZ2UpO1xcbiBcXHRcXHRnb3RvIGVycjE7XFxuIFxcdH1cXG4gXFxuIFxcdGlmICghaGFzX3NycSkge1xcbiBcXHRcXHRpZiAoY2FwLVxcdTAwM2VtYXhfcmVjdl93ciBcXHUwMDNlIHJ4ZS1cXHUwMDNlYXR0ci5tYXhfcXBfd3IpIHtcXG4tXFx0XFx0XFx0cnhlX2RiZ19kZXYocnhlLCBcXFwiaW52YWxpZCByZWN2IHdyID0gJXUgXFx1MDAzZSAlZFxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0IGNhcC1cXHUwMDNlbWF4X3JlY3Zfd3IsIHJ4ZS1cXHUwMDNlYXR0ci5tYXhfcXBfd3IpO1xcbitcXHRcXHRcXHRyeGVfZGJnX2RldihyeGUsIFxcXCJpbnZhbGlkIHJlY3Ygd3IgPSAldSBcXHUwMDNlICV1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHQgICAgY2FwLVxcdTAwM2VtYXhfcmVjdl93ciwgcnhlLVxcdTAwM2VhdHRyLm1heF9xcF93cik7XFxuIFxcdFxcdFxcdGdvdG8gZXJyMTtcXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0aWYgKGNhcC1cXHUwMDNlbWF4X3JlY3Zfc2dlIFxcdTAwM2UgcnhlLVxcdTAwM2VhdHRyLm1heF9yZWN2X3NnZSkge1xcbi1cXHRcXHRcXHRyeGVfZGJnX2RldihyeGUsIFxcXCJpbnZhbGlkIHJlY3Ygc2dlID0gJXUgXFx1MDAzZSAlZFxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0IGNhcC1cXHUwMDNlbWF4X3JlY3Zfc2dlLCByeGUtXFx1MDAzZWF0dHIubWF4X3JlY3Zfc2dlKTtcXG4rXFx0XFx0XFx0cnhlX2RiZ19kZXYocnhlLCBcXFwiaW52YWxpZCByZWN2IHNnZSA9ICV1IFxcdTAwM2UgJXVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdCAgICBjYXAtXFx1MDAzZW1heF9yZWN2X3NnZSwgcnhlLVxcdTAwM2VhdHRyLm1heF9yZWN2X3NnZSk7XFxuIFxcdFxcdFxcdGdvdG8gZXJyMTtcXG4gXFx0XFx0fVxcbiBcXHR9XFxuQEAgLTUzNyw5ICs1MzcsOSBAQCBpbnQgcnhlX3FwX2Noa19hdHRyKHN0cnVjdCByeGVfZGV2ICpyeGUsIHN0cnVjdCByeGVfcXAgKnFwLFxcbiBcXG4gXFx0aWYgKG1hc2sgXFx1MDAyNiBJQl9RUF9NQVhfUVBfUkRfQVRPTUlDKSB7XFxuIFxcdFxcdGlmIChhdHRyLVxcdTAwM2VtYXhfcmRfYXRvbWljIFxcdTAwM2UgcnhlLVxcdTAwM2VhdHRyLm1heF9xcF9yZF9hdG9tKSB7XFxuLVxcdFxcdFxcdHJ4ZV9kYmdfcXAocXAsIFxcXCJpbnZhbGlkIG1heF9yZF9hdG9taWMgJWQgXFx1MDAzZSAlZFxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0IGF0dHItXFx1MDAzZW1heF9yZF9hdG9taWMsXFxuLVxcdFxcdFxcdFxcdCByeGUtXFx1MDAzZWF0dHIubWF4X3FwX3JkX2F0b20pO1xcbitcXHRcXHRcXHRyeGVfZGJnX3FwKHFwLCBcXFwiaW52YWxpZCBtYXhfcmRfYXRvbWljICV1IFxcdTAwM2UgJXVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdCAgIGF0dHItXFx1MDAzZW1heF9yZF9hdG9taWMsXFxuK1xcdFxcdFxcdFxcdCAgIHJ4ZS1cXHUwMDNlYXR0ci5tYXhfcXBfcmRfYXRvbSk7XFxuIFxcdFxcdFxcdGdvdG8gZXJyMTtcXG4gXFx0XFx0fVxcbiBcXHR9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3NycS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfc3JxLmNcXG5pbmRleCBjOWE3Y2QzODk1M2QzMS4uNzQ5MDRhNmZkZjJiMjEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfc3JxLmNcXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9zcnEuY1xcbkBAIC0xMyw4ICsxMyw4IEBAIGludCByeGVfc3JxX2Noa19pbml0KHN0cnVjdCByeGVfZGV2ICpyeGUsIHN0cnVjdCBpYl9zcnFfaW5pdF9hdHRyICppbml0KVxcbiBcXHRzdHJ1Y3QgaWJfc3JxX2F0dHIgKmF0dHIgPSBcXHUwMDI2aW5pdC1cXHUwMDNlYXR0cjtcXG4gXFxuIFxcdGlmIChhdHRyLVxcdTAwM2VtYXhfd3IgXFx1MDAzZSByeGUtXFx1MDAzZWF0dHIubWF4X3NycV93cikge1xcbi1cXHRcXHRyeGVfZGJnX2RldihyeGUsIFxcXCJtYXhfd3IoJWQpIFxcdTAwM2UgbWF4X3NycV93ciglZClcXFxcblxcXCIsXFxuLVxcdFxcdFxcdGF0dHItXFx1MDAzZW1heF93ciwgcnhlLVxcdTAwM2VhdHRyLm1heF9zcnFfd3IpO1xcbitcXHRcXHRyeGVfZGJnX2RldihyeGUsIFxcXCJtYXhfd3IoJXUpIFxcdTAwM2UgbWF4X3NycV93cigldSlcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgICBhdHRyLVxcdTAwM2VtYXhfd3IsIHJ4ZS1cXHUwMDNlYXR0ci5tYXhfc3JxX3dyKTtcXG4gXFx0XFx0Z290byBlcnIxO1xcbiBcXHR9XFxuIFxcbkBAIC0yNyw4ICsyNyw4IEBAIGludCByeGVfc3JxX2Noa19pbml0KHN0cnVjdCByeGVfZGV2ICpyeGUsIHN0cnVjdCBpYl9zcnFfaW5pdF9hdHRyICppbml0KVxcbiBcXHRcXHRhdHRyLVxcdTAwM2VtYXhfd3IgPSBSWEVfTUlOX1NSUV9XUjtcXG4gXFxuIFxcdGlmIChhdHRyLVxcdTAwM2VtYXhfc2dlIFxcdTAwM2UgcnhlLVxcdTAwM2VhdHRyLm1heF9zcnFfc2dlKSB7XFxuLVxcdFxcdHJ4ZV9kYmdfZGV2KHJ4ZSwgXFxcIm1heF9zZ2UoJWQpIFxcdTAwM2UgbWF4X3NycV9zZ2UoJWQpXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRhdHRyLVxcdTAwM2VtYXhfc2dlLCByeGUtXFx1MDAzZWF0dHIubWF4X3NycV9zZ2UpO1xcbitcXHRcXHRyeGVfZGJnX2RldihyeGUsIFxcXCJtYXhfc2dlKCV1KSBcXHUwMDNlIG1heF9zcnFfc2dlKCV1KVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0ICAgIGF0dHItXFx1MDAzZW1heF9zZ2UsIHJ4ZS1cXHUwMDNlYXR0ci5tYXhfc3JxX3NnZSk7XFxuIFxcdFxcdGdvdG8gZXJyMTtcXG4gXFx0fVxcbiBcXG5AQCAtMTA3LDggKzEwNyw4IEBAIGludCByeGVfc3JxX2Noa19hdHRyKHN0cnVjdCByeGVfZGV2ICpyeGUsIHN0cnVjdCByeGVfc3JxICpzcnEsXFxuIFxcbiBcXHRpZiAobWFzayBcXHUwMDI2IElCX1NSUV9NQVhfV1IpIHtcXG4gXFx0XFx0aWYgKGF0dHItXFx1MDAzZW1heF93ciBcXHUwMDNlIHJ4ZS1cXHUwMDNlYXR0ci5tYXhfc3JxX3dyKSB7XFxuLVxcdFxcdFxcdHJ4ZV9kYmdfc3JxKHNycSwgXFxcIm1heF93ciglZCkgXFx1MDAzZSBtYXhfc3JxX3dyKCVkKVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0YXR0ci1cXHUwMDNlbWF4X3dyLCByeGUtXFx1MDAzZWF0dHIubWF4X3NycV93cik7XFxuK1xcdFxcdFxcdHJ4ZV9kYmdfc3JxKHNycSwgXFxcIm1heF93cigldSkgXFx1MDAzZSBtYXhfc3JxX3dyKCV1KVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0ICAgIGF0dHItXFx1MDAzZW1heF93ciwgcnhlLVxcdTAwM2VhdHRyLm1heF9zcnFfd3IpO1xcbiBcXHRcXHRcXHRnb3RvIGVycjE7XFxuIFxcdFxcdH1cXG4gXFxuQEAgLTEyOSw4ICsxMjksOCBAQCBpbnQgcnhlX3NycV9jaGtfYXR0cihzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgcnhlX3NycSAqc3JxLFxcbiBcXG4gXFx0aWYgKG1hc2sgXFx1MDAyNiBJQl9TUlFfTElNSVQpIHtcXG4gXFx0XFx0aWYgKGF0dHItXFx1MDAzZXNycV9saW1pdCBcXHUwMDNlIHJ4ZS1cXHUwMDNlYXR0ci5tYXhfc3JxX3dyKSB7XFxuLVxcdFxcdFxcdHJ4ZV9kYmdfc3JxKHNycSwgXFxcInNycV9saW1pdCglZCkgXFx1MDAzZSBtYXhfc3JxX3dyKCVkKVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0YXR0ci1cXHUwMDNlc3JxX2xpbWl0LCByeGUtXFx1MDAzZWF0dHIubWF4X3NycV93cik7XFxuK1xcdFxcdFxcdHJ4ZV9kYmdfc3JxKHNycSwgXFxcInNycV9saW1pdCgldSkgXFx1MDAzZSBtYXhfc3JxX3dyKCV1KVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0ICAgIGF0dHItXFx1MDAzZXNycV9saW1pdCwgcnhlLVxcdTAwM2VhdHRyLm1heF9zcnFfd3IpO1xcbiBcXHRcXHRcXHRnb3RvIGVycjE7XFxuIFxcdFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfY20uYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfY20uY1xcbmluZGV4IDU3ZmVjODhhMTYyOTBhLi5lZDA1OTI4OTgzODRkMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX2NtLmNcXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX2NtLmNcXG5AQCAtMTA3MSw4ICsxMDcxLDcgQEAgc3RhdGljIHN0cnVjdCBpYl9xcCAqaXBvaWJfY21fY3JlYXRlX3R4X3FwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpcG9pYl9cXG4gXFx0c3RydWN0IGliX3FwICp0eF9xcDtcXG4gXFxuIFxcdGlmIChkZXYtXFx1MDAzZWZlYXR1cmVzIFxcdTAwMjYgTkVUSUZfRl9TRylcXG4tXFx0XFx0YXR0ci5jYXAubWF4X3NlbmRfc2dlID0gbWluX3QodTMyLCBwcml2LVxcdTAwM2VjYS1cXHUwMDNlYXR0cnMubWF4X3NlbmRfc2dlLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgICBNQVhfU0tCX0ZSQUdTICsgMSk7XFxuK1xcdFxcdGF0dHIuY2FwLm1heF9zZW5kX3NnZSA9IG1pbihwcml2LVxcdTAwM2VjYS1cXHUwMDNlYXR0cnMubWF4X3NlbmRfc2dlLCBNQVhfU0tCX0ZSQUdTICsgMSk7XFxuIFxcbiBcXHR0eF9xcCA9IGliX2NyZWF0ZV9xcChwcml2LVxcdTAwM2VwZCwgXFx1MDAyNmF0dHIpO1xcbiBcXHR0eC1cXHUwMDNlbWF4X3NlbmRfc2dlID0gYXR0ci5jYXAubWF4X3NlbmRfc2dlO1xcbkBAIC0xNTgyLDcgKzE1ODEsOCBAQCBzdGF0aWMgdm9pZCBpcG9pYl9jbV9jcmVhdGVfc3JxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBtYXhfc2dlKVxcbiBpbnQgaXBvaWJfY21fZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4ge1xcbiBcXHRzdHJ1Y3QgaXBvaWJfZGV2X3ByaXYgKnByaXYgPSBpcG9pYl9wcml2KGRldik7XFxuLVxcdGludCBtYXhfc3JxX3NnZSwgaTtcXG4rXFx0dTMyIG1heF9zcnFfc2dlO1xcbitcXHRpbnQgaTtcXG4gXFx0dTggYWRkcjtcXG4gXFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZwcml2LVxcdTAwM2VjbS5wYXNzaXZlX2lkcyk7XFxuQEAgLTE2MDAsOSArMTYwMCw5IEBAIGludCBpcG9pYl9jbV9kZXZfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXG4gXFx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2cHJpdi1cXHUwMDNlY20uc2tiX3F1ZXVlKTtcXG4gXFxuLVxcdGlwb2liX2RiZyhwcml2LCBcXFwibWF4X3NycV9zZ2U9JWRcXFxcblxcXCIsIHByaXYtXFx1MDAzZWNhLVxcdTAwM2VhdHRycy5tYXhfc3JxX3NnZSk7XFxuK1xcdGlwb2liX2RiZyhwcml2LCBcXFwibWF4X3NycV9zZ2U9JXVcXFxcblxcXCIsIHByaXYtXFx1MDAzZWNhLVxcdTAwM2VhdHRycy5tYXhfc3JxX3NnZSk7XFxuIFxcbi1cXHRtYXhfc3JxX3NnZSA9IG1pbl90KGludCwgSVBPSUJfQ01fUlhfU0csIHByaXYtXFx1MDAzZWNhLVxcdTAwM2VhdHRycy5tYXhfc3JxX3NnZSk7XFxuK1xcdG1heF9zcnFfc2dlID0gbWluKHByaXYtXFx1MDAzZWNhLVxcdTAwM2VhdHRycy5tYXhfc3JxX3NnZSwgSVBPSUJfQ01fUlhfU0cpO1xcbiBcXHRpcG9pYl9jbV9jcmVhdGVfc3JxKGRldiwgbWF4X3NycV9zZ2UpO1xcbiBcXHRpZiAoaXBvaWJfY21faGFzX3NycShkZXYpKSB7XFxuIFxcdFxcdHByaXYtXFx1MDAzZWNtLm1heF9jbV9tdHUgPSBtYXhfc3JxX3NnZSAqIFBBR0VfU0laRSAtIDB4MTA7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfdmVyYnMuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfdmVyYnMuY1xcbmluZGV4IDNlZDFlYTU2NjY5MGRkLi4yNDkwNjk2YTFhYWJjOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX3ZlcmJzLmNcXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX3ZlcmJzLmNcXG5AQCAtMTQ3LDggKzE0Nyw3IEBAIGludCBpcG9pYl90cmFuc3BvcnRfZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGliX2RldmljZSAqY2EpXFxuIFxcdFxcdC5jYXAgPSB7XFxuIFxcdFxcdFxcdC5tYXhfc2VuZF93ciAgPSBpcG9pYl9zZW5kcV9zaXplLFxcbiBcXHRcXHRcXHQubWF4X3JlY3Zfd3IgID0gaXBvaWJfcmVjdnFfc2l6ZSxcXG4tXFx0XFx0XFx0Lm1heF9zZW5kX3NnZSA9IG1pbl90KHUzMiwgcHJpdi1cXHUwMDNlY2EtXFx1MDAzZWF0dHJzLm1heF9zZW5kX3NnZSxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICAgTUFYX1NLQl9GUkFHUyArIDEpLFxcbitcXHRcXHRcXHQubWF4X3NlbmRfc2dlID0gbWluKHByaXYtXFx1MDAzZWNhLVxcdTAwM2VhdHRycy5tYXhfc2VuZF9zZ2UsIE1BWF9TS0JfRlJBR1MgKyAxKSxcXG4gXFx0XFx0XFx0Lm1heF9yZWN2X3NnZSA9IElQT0lCX1VEX1JYX1NHXFxuIFxcdFxcdH0sXFxuIFxcdFxcdC5zcV9zaWdfdHlwZSA9IElCX1NJR05BTF9BTExfV1IsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlci9pc2VyX3ZlcmJzLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvaXNlcl92ZXJicy5jXFxuaW5kZXggZjAzYjNiYjNjMGM0YzEuLjU1ZmU2OGU1YjgzNzVlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlci9pc2VyX3ZlcmJzLmNcXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvaXNlcl92ZXJicy5jXFxuQEAgLTI0NCw4ICsyNDQsNyBAQCBzdGF0aWMgaW50IGlzZXJfY3JlYXRlX2liX2Nvbm5fcmVzKHN0cnVjdCBpYl9jb25uICppYl9jb25uKVxcbiBcXHRcXHRtYXhfc2VuZF93ciA9IElTRVJfUVBfU0lHX01BWF9SRVFfRFRPUyArIDE7XFxuIFxcdGVsc2VcXG4gXFx0XFx0bWF4X3NlbmRfd3IgPSBJU0VSX1FQX01BWF9SRVFfRFRPUyArIDE7XFxuLVxcdG1heF9zZW5kX3dyID0gbWluX3QodW5zaWduZWQgaW50LCBtYXhfc2VuZF93cixcXG4tXFx0XFx0XFx0ICAgICh1bnNpZ25lZCBpbnQpaWJfZGV2LVxcdTAwM2VhdHRycy5tYXhfcXBfd3IpO1xcbitcXHRtYXhfc2VuZF93ciA9IG1pbihtYXhfc2VuZF93ciwgaWJfZGV2LVxcdTAwM2VhdHRycy5tYXhfcXBfd3IpO1xcbiBcXG4gXFx0Y3Ffc2l6ZSA9IG1heF9zZW5kX3dyICsgSVNFUl9RUF9NQVhfUkVDVl9EVE9TO1xcbiBcXHRpYl9jb25uLVxcdTAwM2VjcSA9IGliX2NxX3Bvb2xfZ2V0KGliX2RldiwgY3Ffc2l6ZSwgLTEsIElCX1BPTExfU09GVElSUSk7XFxuQEAgLTU4OSw3ICs1ODgsNyBAQCBzdGF0aWMgdm9pZCBpc2VyX3JvdXRlX2hhbmRsZXIoc3RydWN0IHJkbWFfY21faWQgKmNtYV9pZClcXG4gXFx0XFx0Z290byBmYWlsdXJlO1xcbiBcXG4gXFx0bWVtc2V0KFxcdTAwMjZjb25uX3BhcmFtLCAwLCBzaXplb2YgY29ubl9wYXJhbSk7XFxuLVxcdGNvbm5fcGFyYW0ucmVzcG9uZGVyX3Jlc291cmNlcyA9IGliX2Rldi1cXHUwMDNlYXR0cnMubWF4X3FwX3JkX2F0b207XFxuK1xcdGNvbm5fcGFyYW0ucmVzcG9uZGVyX3Jlc291cmNlcyA9IG1pbihpYl9kZXYtXFx1MDAzZWF0dHJzLm1heF9xcF9yZF9hdG9tLCBVOF9NQVgpO1xcbiBcXHRjb25uX3BhcmFtLmluaXRpYXRvcl9kZXB0aCA9IDE7XFxuIFxcdGNvbm5fcGFyYW0ucmV0cnlfY291bnQgPSA3O1xcbiBcXHRjb25uX3BhcmFtLnJucl9yZXRyeV9jb3VudCA9IDY7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvaWJfaXNlcnQuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvaWJfaXNlcnQuY1xcbmluZGV4IDEwMTVhNTFmNzUwYWY0Li40NjkxODQ1YmY4MTVmOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXJ0L2liX2lzZXJ0LmNcXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXJ0L2liX2lzZXJ0LmNcXG5AQCAtMjE0LDkgKzIxNCw5IEBAIGlzZXJ0X2NyZWF0ZV9kZXZpY2VfaWJfcmVzKHN0cnVjdCBpc2VydF9kZXZpY2UgKmRldmljZSlcXG4gXFx0c3RydWN0IGliX2RldmljZSAqaWJfZGV2ID0gZGV2aWNlLVxcdTAwM2VpYl9kZXZpY2U7XFxuIFxcdGludCByZXQ7XFxuIFxcbi1cXHRpc2VydF9kYmcoXFxcImRldmF0dHItXFx1MDAzZW1heF9zZW5kX3NnZTogJWQgZGV2YXR0ci1cXHUwMDNlbWF4X3JlY3Zfc2dlICVkXFxcXG5cXFwiLFxcbitcXHRpc2VydF9kYmcoXFxcImRldmF0dHItXFx1MDAzZW1heF9zZW5kX3NnZTogJXUgZGV2YXR0ci1cXHUwMDNlbWF4X3JlY3Zfc2dlICV1XFxcXG5cXFwiLFxcbiBcXHRcXHQgIGliX2Rldi1cXHUwMDNlYXR0cnMubWF4X3NlbmRfc2dlLCBpYl9kZXYtXFx1MDAzZWF0dHJzLm1heF9yZWN2X3NnZSk7XFxuLVxcdGlzZXJ0X2RiZyhcXFwiZGV2YXR0ci1cXHUwMDNlbWF4X3NnZV9yZDogJWRcXFxcblxcXCIsIGliX2Rldi1cXHUwMDNlYXR0cnMubWF4X3NnZV9yZCk7XFxuK1xcdGlzZXJ0X2RiZyhcXFwiZGV2YXR0ci1cXHUwMDNlbWF4X3NnZV9yZDogJXVcXFxcblxcXCIsIGliX2Rldi1cXHUwMDNlYXR0cnMubWF4X3NnZV9yZCk7XFxuIFxcbiBcXHRkZXZpY2UtXFx1MDAzZXBkID0gaWJfYWxsb2NfcGQoaWJfZGV2LCAwKTtcXG4gXFx0aWYgKElTX0VSUihkZXZpY2UtXFx1MDAzZXBkKSkge1xcbkBAIC0zODEsOCArMzgxLDcgQEAgaXNlcnRfc2V0X25lZ29fcGFyYW1zKHN0cnVjdCBpc2VydF9jb25uICppc2VydF9jb25uLFxcbiBcXHRzdHJ1Y3QgaWJfZGV2aWNlX2F0dHIgKmF0dHIgPSBcXHUwMDI2aXNlcnRfY29ubi1cXHUwMDNlZGV2aWNlLVxcdTAwM2VpYl9kZXZpY2UtXFx1MDAzZWF0dHJzO1xcbiBcXG4gXFx0LyogU2V0IG1heCBpbmZsaWdodCBSRE1BIFJFQUQgcmVxdWVzdHMgKi9cXG4tXFx0aXNlcnRfY29ubi1cXHUwMDNlaW5pdGlhdG9yX2RlcHRoID0gbWluX3QodTgsIHBhcmFtLVxcdTAwM2Vpbml0aWF0b3JfZGVwdGgsXFxuLVxcdFxcdFxcdFxcdGF0dHItXFx1MDAzZW1heF9xcF9pbml0X3JkX2F0b20pO1xcbitcXHRpc2VydF9jb25uLVxcdTAwM2Vpbml0aWF0b3JfZGVwdGggPSBtaW4ocGFyYW0tXFx1MDAzZWluaXRpYXRvcl9kZXB0aCwgYXR0ci1cXHUwMDNlbWF4X3FwX2luaXRfcmRfYXRvbSk7XFxuIFxcdGlzZXJ0X2RiZyhcXFwiVXNpbmcgaW5pdGlhdG9yX2RlcHRoOiAldVxcXFxuXFxcIiwgaXNlcnRfY29ubi1cXHUwMDNlaW5pdGlhdG9yX2RlcHRoKTtcXG4gXFxuIFxcdGlmIChwYXJhbS1cXHUwMDNlcHJpdmF0ZV9kYXRhKSB7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9ydHJzLWNsdC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtY2x0LmNcXG5pbmRleCBlMzUxNTUyNzMzZGYyMy4uODBiMDg2OTdmOTZiNTkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtY2x0LmNcXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvcnRycy1jbHQuY1xcbkBAIC0xNjgxLDggKzE2ODEsNyBAQCBzdGF0aWMgaW50IGNyZWF0ZV9jb25fY3FfcXAoc3RydWN0IHJ0cnNfY2x0X2NvbiAqY29uKVxcbiBcXHRcXHQgKiArIDIgZm9yIGRyYWluIGFuZCBoZWFydGJlYXRcXG4gXFx0XFx0ICogaW4gY2FzZSBxcCBnZXRzIGludG8gZXJyb3Igc3RhdGUuXFxuIFxcdFxcdCAqL1xcbi1cXHRcXHRtYXhfc2VuZF93ciA9XFxuLVxcdFxcdFxcdG1pbl90KGludCwgd3JfbGltaXQsIFNFUlZJQ0VfQ09OX1FVRVVFX0RFUFRIICogMiArIDIpO1xcbitcXHRcXHRtYXhfc2VuZF93ciA9IG1pbih3cl9saW1pdCwgU0VSVklDRV9DT05fUVVFVUVfREVQVEggKiAyICsgMik7XFxuIFxcdFxcdG1heF9yZWN2X3dyID0gbWF4X3NlbmRfd3I7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdC8qXFxuQEAgLTE2OTgsMTEgKzE2OTcsOSBAQCBzdGF0aWMgaW50IGNyZWF0ZV9jb25fY3FfcXAoc3RydWN0IHJ0cnNfY2x0X2NvbiAqY29uKVxcbiBcXHRcXHR3cl9saW1pdCA9IGNsdF9wYXRoLVxcdTAwM2VzLmRldi1cXHUwMDNlaWJfZGV2LVxcdTAwM2VhdHRycy5tYXhfcXBfd3I7XFxuIFxcdFxcdC8qIFNoYXJlZCBiZXR3ZWVuIGNvbm5lY3Rpb25zICovXFxuIFxcdFxcdGNsdF9wYXRoLVxcdTAwM2VzLmRldl9yZWYrKztcXG4tXFx0XFx0bWF4X3NlbmRfd3IgPSBtaW5fdChpbnQsIHdyX2xpbWl0LFxcbi1cXHRcXHRcXHQgICAgICAvKiBRRCAqIChSRVEgKyBSU1AgKyBGUiBSRUdTIG9yIElOVlMpICsgZHJhaW4gKi9cXG4tXFx0XFx0XFx0ICAgICAgY2x0X3BhdGgtXFx1MDAzZXF1ZXVlX2RlcHRoICogNCArIDEpO1xcbi1cXHRcXHRtYXhfcmVjdl93ciA9IG1pbl90KGludCwgd3JfbGltaXQsXFxuLVxcdFxcdFxcdCAgICAgIGNsdF9wYXRoLVxcdTAwM2VxdWV1ZV9kZXB0aCAqIDMgKyAxKTtcXG4rXFx0XFx0LyogUUQgKiAoUkVRICsgUlNQICsgRlIgUkVHUyBvciBJTlZTKSArIGRyYWluICovXFxuK1xcdFxcdG1heF9zZW5kX3dyID0gbWluKHdyX2xpbWl0LCBjbHRfcGF0aC1cXHUwMDNlcXVldWVfZGVwdGggKiA0ICsgMSk7XFxuK1xcdFxcdG1heF9yZWN2X3dyID0gbWluKHdyX2xpbWl0LCBjbHRfcGF0aC1cXHUwMDNlcXVldWVfZGVwdGggKiAzICsgMSk7XFxuIFxcdFxcdG1heF9zZW5kX3NnZSA9IDI7XFxuIFxcdH1cXG4gXFx0YXRvbWljX3NldChcXHUwMDI2Y29uLVxcdTAwM2VjLnNxX3dyX2F2YWlsLCBtYXhfc2VuZF93cik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9ydHJzLXNydi5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtc3J2LmNcXG5pbmRleCA2NDgyYWQ4NTliZDEwOC4uZjVhNjg5MDIzNWJjYzQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtc3J2LmNcXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvcnRycy1zcnYuY1xcbkBAIC0xNzMxLDIxICsxNzMxLDE2IEBAIHN0YXRpYyBpbnQgY3JlYXRlX2NvbihzdHJ1Y3QgcnRyc19zcnZfcGF0aCAqc3J2X3BhdGgsXFxuIFxcdFxcdCAqIEFsbCByZWNlaXZlIGFuZCBhbGwgc2VuZCAoZWFjaCByZXF1aXJpbmcgaW52YWxpZGF0ZSlcXG4gXFx0XFx0ICogKyAyIGZvciBkcmFpbiBhbmQgaGVhcnRiZWF0XFxuIFxcdFxcdCAqL1xcbi1cXHRcXHRtYXhfc2VuZF93ciA9IG1pbl90KGludCwgd3JfbGltaXQsXFxuLVxcdFxcdFxcdFxcdCAgICBTRVJWSUNFX0NPTl9RVUVVRV9ERVBUSCAqIDIgKyAyKTtcXG4rXFx0XFx0bWF4X3NlbmRfd3IgPSBtaW4od3JfbGltaXQsIFNFUlZJQ0VfQ09OX1FVRVVFX0RFUFRIICogMiArIDIpO1xcbiBcXHRcXHRtYXhfcmVjdl93ciA9IG1heF9zZW5kX3dyO1xcbiBcXHRcXHRzLVxcdTAwM2VzaWduYWxfaW50ZXJ2YWwgPSBtaW5fbm90X3plcm8oc3J2LVxcdTAwM2VxdWV1ZV9kZXB0aCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAoc2l6ZV90KVNFUlZJQ0VfQ09OX1FVRVVFX0RFUFRIKTtcXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0Lyogd2hlbiBhbHdheXNfaW52bGFpZGF0ZSBlbmFsYmVkLCB3ZSBuZWVkIGxpbnYrcmludittcitpbW0gKi9cXG4gXFx0XFx0aWYgKGFsd2F5c19pbnZhbGlkYXRlKVxcbi1cXHRcXHRcXHRtYXhfc2VuZF93ciA9XFxuLVxcdFxcdFxcdFxcdG1pbl90KGludCwgd3JfbGltaXQsXFxuLVxcdFxcdFxcdFxcdCAgICAgIHNydi1cXHUwMDNlcXVldWVfZGVwdGggKiAoMSArIDQpICsgMSk7XFxuK1xcdFxcdFxcdG1heF9zZW5kX3dyID0gbWluKHdyX2xpbWl0LCBzcnYtXFx1MDAzZXF1ZXVlX2RlcHRoICogKDEgKyA0KSArIDEpO1xcbiBcXHRcXHRlbHNlXFxuLVxcdFxcdFxcdG1heF9zZW5kX3dyID1cXG4tXFx0XFx0XFx0XFx0bWluX3QoaW50LCB3cl9saW1pdCxcXG4tXFx0XFx0XFx0XFx0ICAgICAgc3J2LVxcdTAwM2VxdWV1ZV9kZXB0aCAqICgxICsgMikgKyAxKTtcXG4rXFx0XFx0XFx0bWF4X3NlbmRfd3IgPSBtaW4od3JfbGltaXQsIHNydi1cXHUwMDNlcXVldWVfZGVwdGggKiAoMSArIDIpICsgMSk7XFxuIFxcbiBcXHRcXHRtYXhfcmVjdl93ciA9IHNydi1cXHUwMDNlcXVldWVfZGVwdGggKyAxO1xcbiBcXHR9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL2liX3NycC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnAvaWJfc3JwLmNcXG5pbmRleCBhY2JkNzg3ZGUyNjViNS4uMGNhZWJiYzI4MTBmZjMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnAvaWJfc3JwLmNcXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycC9pYl9zcnAuY1xcbkBAIC01NTcsNyArNTU3LDcgQEAgc3RhdGljIGludCBzcnBfY3JlYXRlX2NoX2liKHN0cnVjdCBzcnBfcmRtYV9jaCAqY2gpXFxuIFxcdGluaXRfYXR0ci1cXHUwMDNlY2FwLm1heF9zZW5kX3dyICAgICA9IG0gKiB0YXJnZXQtXFx1MDAzZXF1ZXVlX3NpemU7XFxuIFxcdGluaXRfYXR0ci1cXHUwMDNlY2FwLm1heF9yZWN2X3dyICAgICA9IHRhcmdldC1cXHUwMDNlcXVldWVfc2l6ZSArIDE7XFxuIFxcdGluaXRfYXR0ci1cXHUwMDNlY2FwLm1heF9yZWN2X3NnZSAgICA9IDE7XFxuLVxcdGluaXRfYXR0ci1cXHUwMDNlY2FwLm1heF9zZW5kX3NnZSAgICA9IG1pbihTUlBfTUFYX1NHRSwgYXR0ci1cXHUwMDNlbWF4X3NlbmRfc2dlKTtcXG4rXFx0aW5pdF9hdHRyLVxcdTAwM2VjYXAubWF4X3NlbmRfc2dlICAgID0gbWluKGF0dHItXFx1MDAzZW1heF9zZW5kX3NnZSwgU1JQX01BWF9TR0UpO1xcbiBcXHRpbml0X2F0dHItXFx1MDAzZXNxX3NpZ190eXBlICAgICAgICAgPSBJQl9TSUdOQUxfUkVRX1dSO1xcbiBcXHRpbml0X2F0dHItXFx1MDAzZXFwX3R5cGUgICAgICAgICAgICAgPSBJQl9RUFRfUkM7XFxuIFxcdGluaXRfYXR0ci1cXHUwMDNlc2VuZF9jcSAgICAgICAgICAgICA9IHNlbmRfY3E7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwdC9pYl9zcnB0LmMgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycHQvaWJfc3JwdC5jXFxuaW5kZXggOWFlYzVkODAxMTdmMWYuLmE0ZTRmZWJhNGEwMjUzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwdC9pYl9zcnB0LmNcXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycHQvaWJfc3JwdC5jXFxuQEAgLTc3LDggKzc3LDggQEAgbW9kdWxlX3BhcmFtKHNycF9tYXhfcmVxX3NpemUsIGludCwgMDQ0NCk7XFxuIE1PRFVMRV9QQVJNX0RFU0Moc3JwX21heF9yZXFfc2l6ZSxcXG4gXFx0XFx0IFxcXCJNYXhpbXVtIHNpemUgb2YgU1JQIHJlcXVlc3QgbWVzc2FnZXMgaW4gYnl0ZXMuXFxcIik7XFxuIFxcbi1zdGF0aWMgaW50IHNycHRfc3JxX3NpemUgPSBERUZBVUxUX1NSUFRfU1JRX1NJWkU7XFxuLW1vZHVsZV9wYXJhbShzcnB0X3NycV9zaXplLCBpbnQsIDA0NDQpO1xcbitzdGF0aWMgdW5zaWduZWQgaW50IHNycHRfc3JxX3NpemUgPSBERUZBVUxUX1NSUFRfU1JRX1NJWkU7XFxuK21vZHVsZV9wYXJhbShzcnB0X3NycV9zaXplLCB1aW50LCAwNDQ0KTtcXG4gTU9EVUxFX1BBUk1fREVTQyhzcnB0X3NycV9zaXplLFxcbiBcXHRcXHQgXFxcIlNoYXJlZCByZWNlaXZlIHF1ZXVlIChTUlEpIHNpemUuXFxcIik7XFxuIFxcbkBAIC00MDUsOCArNDA1LDcgQEAgc3RhdGljIHZvaWQgc3JwdF9nZXRfaW9jKHN0cnVjdCBzcnB0X3BvcnQgKnNwb3J0LCB1MzIgc2xvdCxcXG4gXFx0aWYgKHNkZXYtXFx1MDAzZXVzZV9zcnEpXFxuIFxcdFxcdHNlbmRfcXVldWVfZGVwdGggPSBzZGV2LVxcdTAwM2VzcnFfc2l6ZTtcXG4gXFx0ZWxzZVxcbi1cXHRcXHRzZW5kX3F1ZXVlX2RlcHRoID0gbWluKE1BWF9TUlBUX1JRX1NJWkUsXFxuLVxcdFxcdFxcdFxcdCAgICAgICBzZGV2LVxcdTAwM2VkZXZpY2UtXFx1MDAzZWF0dHJzLm1heF9xcF93cik7XFxuK1xcdFxcdHNlbmRfcXVldWVfZGVwdGggPSBtaW4oc2Rldi1cXHUwMDNlZGV2aWNlLVxcdTAwM2VhdHRycy5tYXhfcXBfd3IsIE1BWF9TUlBUX1JRX1NJWkUpO1xcbiBcXG4gXFx0bWVtc2V0KGlvY3AsIDAsIHNpemVvZigqaW9jcCkpO1xcbiBcXHRzdHJjcHkoaW9jcC1cXHUwMDNlaWRfc3RyaW5nLCBTUlBUX0lEX1NUUklORyk7XFxuQEAgLTE4NTAsNyArMTg0OSw3IEBAIHN0YXRpYyBpbnQgc3JwdF9jcmVhdGVfY2hfaWIoc3RydWN0IHNycHRfcmRtYV9jaCAqY2gpXFxuIFxcdHN0cnVjdCBzcnB0X3BvcnQgKnNwb3J0ID0gY2gtXFx1MDAzZXNwb3J0O1xcbiBcXHRzdHJ1Y3Qgc3JwdF9kZXZpY2UgKnNkZXYgPSBzcG9ydC1cXHUwMDNlc2RldjtcXG4gXFx0Y29uc3Qgc3RydWN0IGliX2RldmljZV9hdHRyICphdHRycyA9IFxcdTAwMjZzZGV2LVxcdTAwM2VkZXZpY2UtXFx1MDAzZWF0dHJzO1xcbi1cXHRpbnQgc3Ffc2l6ZSA9IHNwb3J0LVxcdTAwM2Vwb3J0X2F0dHJpYi5zcnBfc3Ffc2l6ZTtcXG4rXFx0dTMyIHNxX3NpemUgPSBzcG9ydC1cXHUwMDNlcG9ydF9hdHRyaWIuc3JwX3NxX3NpemU7XFxuIFxcdGludCBpLCByZXQ7XFxuIFxcbiBcXHRXQVJOX09OKGNoLVxcdTAwM2VycV9zaXplIFxcdTAwM2MgMSk7XFxuQEAgLTE5MTEsMTMgKzE5MTAsMTMgQEAgc3RhdGljIGludCBzcnB0X2NyZWF0ZV9jaF9pYihzdHJ1Y3Qgc3JwdF9yZG1hX2NoICpjaClcXG4gXFx0XFx0Ym9vbCByZXRyeSA9IHNxX3NpemUgXFx1MDAzZSBNSU5fU1JQVF9TUV9TSVpFO1xcbiBcXG4gXFx0XFx0aWYgKHJldHJ5KSB7XFxuLVxcdFxcdFxcdHByX2RlYnVnKFxcXCJmYWlsZWQgdG8gY3JlYXRlIHF1ZXVlIHBhaXIgd2l0aCBzcV9zaXplID0gJWQgKCVkKSAtIHJldHJ5aW5nXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRwcl9kZWJ1ZyhcXFwiZmFpbGVkIHRvIGNyZWF0ZSBxdWV1ZSBwYWlyIHdpdGggc3Ffc2l6ZSA9ICV1ICglZCkgLSByZXRyeWluZ1xcXFxuXFxcIixcXG4gXFx0XFx0XFx0XFx0IHNxX3NpemUsIHJldCk7XFxuIFxcdFxcdFxcdGliX2NxX3Bvb2xfcHV0KGNoLVxcdTAwM2VjcSwgY2gtXFx1MDAzZWNxX3NpemUpO1xcbiBcXHRcXHRcXHRzcV9zaXplID0gbWF4KHNxX3NpemUgLyAyLCBNSU5fU1JQVF9TUV9TSVpFKTtcXG4gXFx0XFx0XFx0Z290byByZXRyeTtcXG4gXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0cHJfZXJyKFxcXCJmYWlsZWQgdG8gY3JlYXRlIHF1ZXVlIHBhaXIgd2l0aCBzcV9zaXplID0gJWQgKCVkKVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0cHJfZXJyKFxcXCJmYWlsZWQgdG8gY3JlYXRlIHF1ZXVlIHBhaXIgd2l0aCBzcV9zaXplID0gJXUgKCVkKVxcXFxuXFxcIixcXG4gXFx0XFx0XFx0ICAgICAgIHNxX3NpemUsIHJldCk7XFxuIFxcdFxcdFxcdGdvdG8gZXJyX2Rlc3Ryb3lfY3E7XFxuIFxcdFxcdH1cXG5AQCAtMTkyNSw3ICsxOTI0LDcgQEAgc3RhdGljIGludCBzcnB0X2NyZWF0ZV9jaF9pYihzdHJ1Y3Qgc3JwdF9yZG1hX2NoICpjaClcXG4gXFxuIFxcdGF0b21pY19zZXQoXFx1MDAyNmNoLVxcdTAwM2VzcV93cl9hdmFpbCwgcXBfaW5pdC1cXHUwMDNlY2FwLm1heF9zZW5kX3dyKTtcXG4gXFxuLVxcdHByX2RlYnVnKFxcXCIlczogbWF4X2NxZT0gJWQgbWF4X3NnZT0gJWQgc3Ffc2l6ZSA9ICVkIGNoPSAlcFxcXFxuXFxcIixcXG4rXFx0cHJfZGVidWcoXFxcIiVzOiBtYXhfY3FlPSAlZCBtYXhfc2dlPSAlZCBzcV9zaXplID0gJXUgY2g9ICVwXFxcXG5cXFwiLFxcbiBcXHRcXHQgX19mdW5jX18sIGNoLVxcdTAwM2VjcS1cXHUwMDNlY3FlLCBxcF9pbml0LVxcdTAwM2VjYXAubWF4X3NlbmRfc2dlLFxcbiBcXHRcXHQgcXBfaW5pdC1cXHUwMDNlY2FwLm1heF9zZW5kX3dyLCBjaCk7XFxuIFxcbkBAIC0yMjk4LDcgKzIyOTcsNyBAQCBzdGF0aWMgaW50IHNycHRfY21fcmVxX3JlY3Yoc3RydWN0IHNycHRfZGV2aWNlICpjb25zdCBzZGV2LFxcbiBcXHQgKiBkZXB0aCB0byBhdm9pZCB0aGF0IHRoZSBpbml0aWF0b3IgZHJpdmVyIGhhcyB0byByZXBvcnQgUVVFVUVfRlVMTFxcbiBcXHQgKiB0byB0aGUgU0NTSSBtaWQtbGF5ZXIuXFxuIFxcdCAqL1xcbi1cXHRjaC1cXHUwMDNlcnFfc2l6ZSA9IG1pbihNQVhfU1JQVF9SUV9TSVpFLCBzZGV2LVxcdTAwM2VkZXZpY2UtXFx1MDAzZWF0dHJzLm1heF9xcF93cik7XFxuK1xcdGNoLVxcdTAwM2VycV9zaXplID0gbWluKHNkZXYtXFx1MDAzZWRldmljZS1cXHUwMDNlYXR0cnMubWF4X3FwX3dyLCBNQVhfU1JQVF9SUV9TSVpFKTtcXG4gXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmNoLVxcdTAwM2VzcGlubG9jayk7XFxuIFxcdGNoLVxcdTAwM2VzdGF0ZSA9IENIX0NPTk5FQ1RJTkc7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZjaC1cXHUwMDNlY21kX3dhaXRfbGlzdCk7XFxuQEAgLTMxMzYsNyArMzEzNSw3IEBAIHN0YXRpYyBpbnQgc3JwdF9hbGxvY19zcnEoc3RydWN0IHNycHRfZGV2aWNlICpzZGV2KVxcbiBcXHRcXHRyZXR1cm4gUFRSX0VSUihzcnEpO1xcbiBcXHR9XFxuIFxcbi1cXHRwcl9kZWJ1ZyhcXFwiY3JlYXRlIFNSUSAjd3I9ICVkIG1heF9hbGxvdz0lZCBkZXY9ICVzXFxcXG5cXFwiLCBzZGV2LVxcdTAwM2VzcnFfc2l6ZSxcXG4rXFx0cHJfZGVidWcoXFxcImNyZWF0ZSBTUlEgI3dyPSAlZCBtYXhfYWxsb3c9JXUgZGV2PSAlc1xcXFxuXFxcIiwgc2Rldi1cXHUwMDNlc3JxX3NpemUsXFxuIFxcdFxcdCBzZGV2LVxcdTAwM2VkZXZpY2UtXFx1MDAzZWF0dHJzLm1heF9zcnFfd3IsIGRldl9uYW1lKFxcdTAwMjZkZXZpY2UtXFx1MDAzZWRldikpO1xcbiBcXG4gXFx0c2Rldi1cXHUwMDNlcmVxX2J1Zl9jYWNoZSA9IHNycHRfY2FjaGVfZ2V0KHNycF9tYXhfcmVxX3NpemUpO1xcbkBAIC0zOTUxLDcgKzM5NTAsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBzcnB0X2luaXRfbW9kdWxlKHZvaWQpXFxuIFxcbiBcXHRpZiAoc3JwdF9zcnFfc2l6ZSBcXHUwMDNjIE1JTl9TUlBUX1NSUV9TSVpFXFxuIFxcdCAgICB8fCBzcnB0X3NycV9zaXplIFxcdTAwM2UgTUFYX1NSUFRfU1JRX1NJWkUpIHtcXG4tXFx0XFx0cHJfZXJyKFxcXCJpbnZhbGlkIHZhbHVlICVkIGZvciBrZXJuZWwgbW9kdWxlIHBhcmFtZXRlciBzcnB0X3NycV9zaXplIC0tIG11c3QgYmUgaW4gdGhlIHJhbmdlIFslZC4uJWRdLlxcXFxuXFxcIixcXG4rXFx0XFx0cHJfZXJyKFxcXCJpbnZhbGlkIHZhbHVlICV1IGZvciBrZXJuZWwgbW9kdWxlIHBhcmFtZXRlciBzcnB0X3NycV9zaXplIC0tIG11c3QgYmUgaW4gdGhlIHJhbmdlIFslZC4uJWRdLlxcXFxuXFxcIixcXG4gXFx0XFx0ICAgICAgIHNycHRfc3JxX3NpemUsIE1JTl9TUlBUX1NSUV9TSVpFLCBNQVhfU1JQVF9TUlFfU0laRSk7XFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXHR9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS9ob3N0L3JkbWEuYyBiL2RyaXZlcnMvbnZtZS9ob3N0L3JkbWEuY1xcbmluZGV4IDY5MDllMzU0Mjc5NDI3Li41NmNkMjI4YWYxZDU3YSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL252bWUvaG9zdC9yZG1hLmNcXG4rKysgYi9kcml2ZXJzL252bWUvaG9zdC9yZG1hLmNcXG5AQCAtMzk0LDggKzM5NCwxMCBAQCBudm1lX3JkbWFfZmluZF9nZXRfZGV2aWNlKHN0cnVjdCByZG1hX2NtX2lkICpjbV9pZClcXG4gXFx0XFx0Z290byBvdXRfZnJlZV9wZDtcXG4gXFx0fVxcbiBcXG4tXFx0bmRldi1cXHUwMDNlbnVtX2lubGluZV9zZWdtZW50cyA9IG1pbihOVk1FX1JETUFfTUFYX0lOTElORV9TRUdNRU5UUyxcXG4tXFx0XFx0XFx0XFx0XFx0bmRldi1cXHUwMDNlZGV2LVxcdTAwM2VhdHRycy5tYXhfc2VuZF9zZ2UgLSAxKTtcXG4rXFx0bmRldi1cXHUwMDNlbnVtX2lubGluZV9zZWdtZW50cyA9IG5kZXYtXFx1MDAzZWRldi1cXHUwMDNlYXR0cnMubWF4X3NlbmRfc2dlO1xcbitcXHRpZiAobmRldi1cXHUwMDNlbnVtX2lubGluZV9zZWdtZW50cylcXG4rXFx0XFx0bmRldi1cXHUwMDNlbnVtX2lubGluZV9zZWdtZW50cy0tO1xcbitcXHRuZGV2LVxcdTAwM2VudW1faW5saW5lX3NlZ21lbnRzID0gbWluKG5kZXYtXFx1MDAzZW51bV9pbmxpbmVfc2VnbWVudHMsIE5WTUVfUkRNQV9NQVhfSU5MSU5FX1NFR01FTlRTKTtcXG4gXFx0bGlzdF9hZGQoXFx1MDAyNm5kZXYtXFx1MDAzZWVudHJ5LCBcXHUwMDI2ZGV2aWNlX2xpc3QpO1xcbiBvdXRfdW5sb2NrOlxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNmRldmljZV9saXN0X211dGV4KTtcXG5AQCAtMTg0Nyw3ICsxODQ5LDcgQEAgc3RhdGljIGludCBudm1lX3JkbWFfcm91dGVfcmVzb2x2ZWQoc3RydWN0IG52bWVfcmRtYV9xdWV1ZSAqcXVldWUpXFxuIFxcdHBhcmFtLnFwX251bSA9IHF1ZXVlLVxcdTAwM2VxcC1cXHUwMDNlcXBfbnVtO1xcbiBcXHRwYXJhbS5mbG93X2NvbnRyb2wgPSAxO1xcbiBcXG4tXFx0cGFyYW0ucmVzcG9uZGVyX3Jlc291cmNlcyA9IHF1ZXVlLVxcdTAwM2VkZXZpY2UtXFx1MDAzZWRldi1cXHUwMDNlYXR0cnMubWF4X3FwX3JkX2F0b207XFxuK1xcdHBhcmFtLnJlc3BvbmRlcl9yZXNvdXJjZXMgPSBtaW4ocXVldWUtXFx1MDAzZWRldmljZS1cXHUwMDNlZGV2LVxcdTAwM2VhdHRycy5tYXhfcXBfcmRfYXRvbSwgVThfTUFYKTtcXG4gXFx0LyogbWF4aW11bSByZXRyeSBjb3VudCAqL1xcbiBcXHRwYXJhbS5yZXRyeV9jb3VudCA9IDc7XFxuIFxcdHBhcmFtLnJucl9yZXRyeV9jb3VudCA9IDc7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS90YXJnZXQvcmRtYS5jIGIvZHJpdmVycy9udm1lL3RhcmdldC9yZG1hLmNcXG5pbmRleCBhYzI2ZjRmNzc0YzRkZS4uMWMzMzJkNjYyMjJhMGIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9udm1lL3RhcmdldC9yZG1hLmNcXG4rKysgYi9kcml2ZXJzL252bWUvdGFyZ2V0L3JkbWEuY1xcbkBAIC0xNTIsNyArMTUyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW1fb3BzIHNycV9zaXplX29wcyA9IHtcXG4gXFx0LmdldCA9IHBhcmFtX2dldF9pbnQsXFxuIH07XFxuIFxcbi1zdGF0aWMgaW50IG52bWV0X3JkbWFfc3JxX3NpemUgPSAxMDI0O1xcbitzdGF0aWMgdW5zaWduZWQgaW50IG52bWV0X3JkbWFfc3JxX3NpemUgPSAxMDI0O1xcbiBtb2R1bGVfcGFyYW1fY2Ioc3JxX3NpemUsIFxcdTAwMjZzcnFfc2l6ZV9vcHMsIFxcdTAwMjZudm1ldF9yZG1hX3NycV9zaXplLCAwNjQ0KTtcXG4gTU9EVUxFX1BBUk1fREVTQyhzcnFfc2l6ZSwgXFxcInNldCBTaGFyZWQgUmVjZWl2ZSBRdWV1ZSAoU1JRKSBzaXplLCBzaG91bGQgXFx1MDAzZT0gMjU2IChkZWZhdWx0OiAxMDI0KVxcXCIpO1xcbiBcXG5AQCAtMTE5Nyw3ICsxMTk3LDcgQEAgbnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2Uoc3RydWN0IHJkbWFfY21faWQgKmNtX2lkKVxcbiBcXHRzdHJ1Y3QgbnZtZXRfcG9ydCAqbnBvcnQgPSBwb3J0LVxcdTAwM2VucG9ydDtcXG4gXFx0c3RydWN0IG52bWV0X3JkbWFfZGV2aWNlICpuZGV2O1xcbiBcXHRpbnQgaW5saW5lX3BhZ2VfY291bnQ7XFxuLVxcdGludCBpbmxpbmVfc2dlX2NvdW50O1xcbitcXHR1MzIgaW5saW5lX3NnZV9jb3VudDtcXG4gXFx0aW50IHJldDtcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNmRldmljZV9saXN0X211dGV4KTtcXG5AQCAtMTIxMyw3ICsxMjEzLDkgQEAgbnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2Uoc3RydWN0IHJkbWFfY21faWQgKmNtX2lkKVxcbiBcXG4gXFx0aW5saW5lX3BhZ2VfY291bnQgPSBudW1fcGFnZXMobnBvcnQtXFx1MDAzZWlubGluZV9kYXRhX3NpemUpO1xcbiBcXHRpbmxpbmVfc2dlX2NvdW50ID0gbWF4KGNtX2lkLVxcdTAwM2VkZXZpY2UtXFx1MDAzZWF0dHJzLm1heF9zZ2VfcmQsXFxuLVxcdFxcdFxcdFxcdGNtX2lkLVxcdTAwM2VkZXZpY2UtXFx1MDAzZWF0dHJzLm1heF9yZWN2X3NnZSkgLSAxO1xcbitcXHRcXHRcXHRcXHRjbV9pZC1cXHUwMDNlZGV2aWNlLVxcdTAwM2VhdHRycy5tYXhfcmVjdl9zZ2UpO1xcbitcXHRpZiAoaW5saW5lX3NnZV9jb3VudClcXG4rXFx0XFx0aW5saW5lX3NnZV9jb3VudC0tO1xcbiBcXHRpZiAoaW5saW5lX3BhZ2VfY291bnQgXFx1MDAzZSBpbmxpbmVfc2dlX2NvdW50KSB7XFxuIFxcdFxcdHByX3dhcm4oXFxcImlubGluZV9kYXRhX3NpemUgJWQgY2Fubm90IGJlIHN1cHBvcnRlZCBieSBkZXZpY2UgJXMuIFJlZHVjaW5nIHRvICVsdS5cXFxcblxcXCIsXFxuIFxcdFxcdFxcdG5wb3J0LVxcdTAwM2VpbmxpbmVfZGF0YV9zaXplLCBjbV9pZC1cXHUwMDNlZGV2aWNlLVxcdTAwM2VuYW1lLFxcbkBAIC0xNTUzLDggKzE1NTUsOSBAQCBzdGF0aWMgaW50IG52bWV0X3JkbWFfY21fYWNjZXB0KHN0cnVjdCByZG1hX2NtX2lkICpjbV9pZCxcXG4gXFxuIFxcdHBhcmFtLnJucl9yZXRyeV9jb3VudCA9IDc7XFxuIFxcdHBhcmFtLmZsb3dfY29udHJvbCA9IDE7XFxuLVxcdHBhcmFtLmluaXRpYXRvcl9kZXB0aCA9IG1pbl90KHU4LCBwLVxcdTAwM2Vpbml0aWF0b3JfZGVwdGgsXFxuLVxcdFxcdHF1ZXVlLVxcdTAwM2VkZXYtXFx1MDAzZWRldmljZS1cXHUwMDNlYXR0cnMubWF4X3FwX2luaXRfcmRfYXRvbSk7XFxuK1xcdHBhcmFtLmluaXRpYXRvcl9kZXB0aCA9IG1pbjMocC1cXHUwMDNlaW5pdGlhdG9yX2RlcHRoLFxcbitcXHRcXHRcXHRcXHQgICAgIHF1ZXVlLVxcdTAwM2VkZXYtXFx1MDAzZWRldmljZS1cXHUwMDNlYXR0cnMubWF4X3FwX2luaXRfcmRfYXRvbSxcXG4rXFx0XFx0XFx0XFx0ICAgICBVOF9NQVgpO1xcbiBcXHRwYXJhbS5wcml2YXRlX2RhdGEgPSBcXHUwMDI2cHJpdjtcXG4gXFx0cGFyYW0ucHJpdmF0ZV9kYXRhX2xlbiA9IHNpemVvZihwcml2KTtcXG4gXFx0cHJpdi5yZWNmbXQgPSBjcHVfdG9fbGUxNihOVk1FX1JETUFfQ01fRk1UXzFfMCk7XFxuZGlmZiAtLWdpdCBhL2ZzL3NtYi9zbWJkaXJlY3QvYWNjZXB0LmMgYi9mcy9zbWIvc21iZGlyZWN0L2FjY2VwdC5jXFxuaW5kZXggNTI5NzQwMDA1ODM4NWUuLjQ0YjY4MWEyMDcyNTM2IDEwMDY0NFxcbi0tLSBhL2ZzL3NtYi9zbWJkaXJlY3QvYWNjZXB0LmNcXG4rKysgYi9mcy9zbWIvc21iZGlyZWN0L2FjY2VwdC5jXFxuQEAgLTMyLDggKzMyLDkgQEAgaW50IHNtYmRpcmVjdF9hY2NlcHRfY29ubmVjdF9yZXF1ZXN0KHN0cnVjdCBzbWJkaXJlY3Rfc29ja2V0ICpzYyxcXG4gXFx0LypcXG4gXFx0ICogRmlyc3Qgc2V0IHdoYXQgdGhlIHdlIGFzIHNlcnZlciBhcmUgYWJsZSB0byBzdXBwb3J0XFxuIFxcdCAqL1xcbi1cXHRzcC1cXHUwMDNlaW5pdGlhdG9yX2RlcHRoID0gbWluX3QodTgsIHNwLVxcdTAwM2Vpbml0aWF0b3JfZGVwdGgsXFxuLVxcdFxcdFxcdFxcdCAgICBzYy1cXHUwMDNlaWIuZGV2LVxcdTAwM2VhdHRycy5tYXhfcXBfcmRfYXRvbSk7XFxuK1xcdHNwLVxcdTAwM2Vpbml0aWF0b3JfZGVwdGggPSBtaW4zKHNwLVxcdTAwM2Vpbml0aWF0b3JfZGVwdGgsXFxuK1xcdFxcdFxcdFxcdCAgIHNjLVxcdTAwM2VpYi5kZXYtXFx1MDAzZWF0dHJzLm1heF9xcF9yZF9hdG9tLFxcbitcXHRcXHRcXHRcXHQgICBVOF9NQVgpO1xcbiBcXG4gXFx0cGVlcl9pbml0aWF0b3JfZGVwdGggPSBwYXJhbS1cXHUwMDNlaW5pdGlhdG9yX2RlcHRoO1xcbiBcXHRwZWVyX3Jlc3BvbmRlcl9yZXNvdXJjZXMgPSBwYXJhbS1cXHUwMDNlcmVzcG9uZGVyX3Jlc291cmNlcztcXG5kaWZmIC0tZ2l0IGEvZnMvc21iL3NtYmRpcmVjdC9jb25uZWN0LmMgYi9mcy9zbWIvc21iZGlyZWN0L2Nvbm5lY3QuY1xcbmluZGV4IGNkNzI2YjM5OWFmZWNiLi4zNGEzZTcyYzM4ZmJiYSAxMDA2NDRcXG4tLS0gYS9mcy9zbWIvc21iZGlyZWN0L2Nvbm5lY3QuY1xcbisrKyBiL2ZzL3NtYi9zbWJkaXJlY3QvY29ubmVjdC5jXFxuQEAgLTE4Miw4ICsxODIsOSBAQCBzdGF0aWMgaW50IHNtYmRpcmVjdF9jb25uZWN0X3JkbWFfY29ubmVjdChzdHJ1Y3Qgc21iZGlyZWN0X3NvY2tldCAqc2MpXFxuIFxcdGlmIChzYy1cXHUwMDNlaWIuZGV2LVxcdTAwM2VhdHRycy5rZXJuZWxfY2FwX2ZsYWdzIFxcdTAwMjYgSUJLX1NHX0dBUFNfUkVHKVxcbiBcXHRcXHRzYy1cXHUwMDNlbXJfaW8udHlwZSA9IElCX01SX1RZUEVfU0dfR0FQUztcXG4gXFxuLVxcdHNwLVxcdTAwM2VyZXNwb25kZXJfcmVzb3VyY2VzID0gbWluX3QodTgsIHNwLVxcdTAwM2VyZXNwb25kZXJfcmVzb3VyY2VzLFxcbi1cXHRcXHRcXHRcXHRcXHRzYy1cXHUwMDNlaWIuZGV2LVxcdTAwM2VhdHRycy5tYXhfcXBfcmRfYXRvbSk7XFxuK1xcdHNwLVxcdTAwM2VyZXNwb25kZXJfcmVzb3VyY2VzID0gbWluMyhzcC1cXHUwMDNlcmVzcG9uZGVyX3Jlc291cmNlcyxcXG4rXFx0XFx0XFx0XFx0ICAgICAgIHNjLVxcdTAwM2VpYi5kZXYtXFx1MDAzZWF0dHJzLm1heF9xcF9yZF9hdG9tLFxcbitcXHRcXHRcXHRcXHQgICAgICAgVThfTUFYKTtcXG4gXFx0c21iZGlyZWN0X2xvZ19yZG1hX21yKHNjLCBTTUJESVJFQ1RfTE9HX0lORk8sXFxuIFxcdFxcdFxcXCJyZXNwb25kZXJfcmVzb3VyY2VzPSVkXFxcXG5cXFwiLFxcbiBcXHRcXHRzcC1cXHUwMDNlcmVzcG9uZGVyX3Jlc291cmNlcyk7XFxuZGlmZiAtLWdpdCBhL2ZzL3NtYi9zbWJkaXJlY3QvY29ubmVjdGlvbi5jIGIvZnMvc21iL3NtYmRpcmVjdC9jb25uZWN0aW9uLmNcXG5pbmRleCA4YWRmNTgwOTc1MzQ0Yi4uNjkwYWNiODRlMWI1OTEgMTAwNjQ0XFxuLS0tIGEvZnMvc21iL3NtYmRpcmVjdC9jb25uZWN0aW9uLmNcXG4rKysgYi9mcy9zbWIvc21iZGlyZWN0L2Nvbm5lY3Rpb24uY1xcbkBAIC0yODcsNyArMjg3LDcgQEAgaW50IHNtYmRpcmVjdF9jb25uZWN0aW9uX2NyZWF0ZV9xcChzdHJ1Y3Qgc21iZGlyZWN0X3NvY2tldCAqc2MpXFxuIFxcdCAgICBxcF9jYXAubWF4X3NlbmRfd3IgXFx1MDAzZSBzYy1cXHUwMDNlaWIuZGV2LVxcdTAwM2VhdHRycy5tYXhfcXBfd3IpIHtcXG4gXFx0XFx0cHJfZXJyKFxcXCJQb3NzaWJsZSBDUUUgb3ZlcnJ1bjogbWF4X3NlbmRfd3IgJWRcXFxcblxcXCIsXFxuIFxcdFxcdCAgICAgICBxcF9jYXAubWF4X3NlbmRfd3IpO1xcbi1cXHRcXHRwcl9lcnIoXFxcImRldmljZSAlLipzIHJlcG9ydGluZyBtYXhfY3FlICVkIG1heF9xcF93ciAlZFxcXFxuXFxcIixcXG4rXFx0XFx0cHJfZXJyKFxcXCJkZXZpY2UgJS4qcyByZXBvcnRpbmcgbWF4X2NxZSAldSBtYXhfcXBfd3IgJXVcXFxcblxcXCIsXFxuIFxcdFxcdCAgICAgICBJQl9ERVZJQ0VfTkFNRV9NQVgsXFxuIFxcdFxcdCAgICAgICBzYy1cXHUwMDNlaWIuZGV2LVxcdTAwM2VuYW1lLFxcbiBcXHRcXHQgICAgICAgc2MtXFx1MDAzZWliLmRldi1cXHUwMDNlYXR0cnMubWF4X2NxZSxcXG5AQCAtMzAyLDcgKzMwMiw3IEBAIGludCBzbWJkaXJlY3RfY29ubmVjdGlvbl9jcmVhdGVfcXAoc3RydWN0IHNtYmRpcmVjdF9zb2NrZXQgKnNjKVxcbiBcXHQgICAgIG1heF9zZW5kX3dyIFxcdTAwM2U9IHNjLVxcdTAwM2VpYi5kZXYtXFx1MDAzZWF0dHJzLm1heF9xcF93cikpIHtcXG4gXFx0XFx0cHJfZXJyKFxcXCJQb3NzaWJsZSBDUUUgb3ZlcnJ1bjogcmRtYV9zZW5kX3dyICVkICsgbWF4X3NlbmRfd3IgJWQgPSAlZFxcXFxuXFxcIixcXG4gXFx0XFx0ICAgICAgIHJkbWFfc2VuZF93ciwgcXBfY2FwLm1heF9zZW5kX3dyLCBtYXhfc2VuZF93cik7XFxuLVxcdFxcdHByX2VycihcXFwiZGV2aWNlICUuKnMgcmVwb3J0aW5nIG1heF9jcWUgJWQgbWF4X3FwX3dyICVkXFxcXG5cXFwiLFxcbitcXHRcXHRwcl9lcnIoXFxcImRldmljZSAlLipzIHJlcG9ydGluZyBtYXhfY3FlICV1IG1heF9xcF93ciAldVxcXFxuXFxcIixcXG4gXFx0XFx0ICAgICAgIElCX0RFVklDRV9OQU1FX01BWCxcXG4gXFx0XFx0ICAgICAgIHNjLVxcdTAwM2VpYi5kZXYtXFx1MDAzZW5hbWUsXFxuIFxcdFxcdCAgICAgICBzYy1cXHUwMDNlaWIuZGV2LVxcdTAwM2VhdHRycy5tYXhfY3FlLFxcbkBAIC0zMTYsNyArMzE2LDcgQEAgaW50IHNtYmRpcmVjdF9jb25uZWN0aW9uX2NyZWF0ZV9xcChzdHJ1Y3Qgc21iZGlyZWN0X3NvY2tldCAqc2MpXFxuIFxcdCAgICBxcF9jYXAubWF4X3JlY3Zfd3IgXFx1MDAzZSBzYy1cXHUwMDNlaWIuZGV2LVxcdTAwM2VhdHRycy5tYXhfcXBfd3IpIHtcXG4gXFx0XFx0cHJfZXJyKFxcXCJQb3NzaWJsZSBDUUUgb3ZlcnJ1bjogbWF4X3JlY3Zfd3IgJWRcXFxcblxcXCIsXFxuIFxcdFxcdCAgICAgICBxcF9jYXAubWF4X3JlY3Zfd3IpO1xcbi1cXHRcXHRwcl9lcnIoXFxcImRldmljZSAlLipzIHJlcG9ydGluZyBtYXhfY3FlICVkIG1heF9xcF93ciAlZFxcXFxuXFxcIixcXG4rXFx0XFx0cHJfZXJyKFxcXCJkZXZpY2UgJS4qcyByZXBvcnRpbmcgbWF4X2NxZSAldSBtYXhfcXBfd3IgJXVcXFxcblxcXCIsXFxuIFxcdFxcdCAgICAgICBJQl9ERVZJQ0VfTkFNRV9NQVgsXFxuIFxcdFxcdCAgICAgICBzYy1cXHUwMDNlaWIuZGV2LVxcdTAwM2VuYW1lLFxcbiBcXHRcXHQgICAgICAgc2MtXFx1MDAzZWliLmRldi1cXHUwMDNlYXR0cnMubWF4X2NxZSxcXG5AQCAtMzI4LDcgKzMyOCw3IEBAIGludCBzbWJkaXJlY3RfY29ubmVjdGlvbl9jcmVhdGVfcXAoc3RydWN0IHNtYmRpcmVjdF9zb2NrZXQgKnNjKVxcbiBcXG4gXFx0aWYgKHFwX2NhcC5tYXhfc2VuZF9zZ2UgXFx1MDAzZSBzYy1cXHUwMDNlaWIuZGV2LVxcdTAwM2VhdHRycy5tYXhfc2VuZF9zZ2UgfHxcXG4gXFx0ICAgIHFwX2NhcC5tYXhfcmVjdl9zZ2UgXFx1MDAzZSBzYy1cXHUwMDNlaWIuZGV2LVxcdTAwM2VhdHRycy5tYXhfcmVjdl9zZ2UpIHtcXG4tXFx0XFx0cHJfZXJyKFxcXCJkZXZpY2UgJS4qcyBtYXhfc2VuZF9zZ2UvbWF4X3JlY3Zfc2dlID0gJWQvJWQgdG9vIHNtYWxsXFxcXG5cXFwiLFxcbitcXHRcXHRwcl9lcnIoXFxcImRldmljZSAlLipzIG1heF9zZW5kX3NnZS9tYXhfcmVjdl9zZ2UgPSAldS8ldSB0b28gc21hbGxcXFxcblxcXCIsXFxuIFxcdFxcdCAgICAgICBJQl9ERVZJQ0VfTkFNRV9NQVgsXFxuIFxcdFxcdCAgICAgICBzYy1cXHUwMDNlaWIuZGV2LVxcdTAwM2VuYW1lLFxcbiBcXHRcXHQgICAgICAgc2MtXFx1MDAzZWliLmRldi1cXHUwMDNlYXR0cnMubWF4X3NlbmRfc2dlLFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3N1bnJwYy9zdmNfcmRtYS5oIGIvaW5jbHVkZS9saW51eC9zdW5ycGMvc3ZjX3JkbWEuaFxcbmluZGV4IGRmNmUwOGFhYWQ1NzA5Li4yMTdmMDAwYmU1ZDZlMiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3N1bnJwYy9zdmNfcmRtYS5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9zdW5ycGMvc3ZjX3JkbWEuaFxcbkBAIC03OCw4ICs3OCw4IEBAIHN0cnVjdCBzdmN4cHJ0X3JkbWEge1xcbiBcXHRzdHJ1Y3QgcmRtYV9jbV9pZCAgICAqc2NfY21faWQ7XFx0XFx0LyogUkRNQSBjb25uZWN0aW9uIGlkICovXFxuIFxcdHN0cnVjdCBsaXN0X2hlYWQgICAgIHNjX2FjY2VwdF9xO1xcdC8qIENvbm4uIHdhaXRpbmcgYWNjZXB0ICovXFxuIFxcdHN0cnVjdCBycGNyZG1hX25vdGlmaWNhdGlvbiBzY19ybjtcXHQvKiByZW1vdmFsIG5vdGlmaWNhdGlvbiAqL1xcbi1cXHRpbnRcXHRcXHQgICAgIHNjX29yZDtcXHRcXHQvKiBSRE1BIHJlYWQgbGltaXQgKi9cXG4tXFx0aW50ICAgICAgICAgICAgICAgICAgc2NfbWF4X3NlbmRfc2dlcztcXG4rXFx0dTMyXFx0XFx0ICAgICBzY19vcmQ7XFx0XFx0LyogUkRNQSByZWFkIGxpbWl0ICovXFxuK1xcdHVuc2lnbmVkIGludCAgICAgICAgIHNjX21heF9zZW5kX3NnZXM7XFxuIFxcdGJvb2xcXHRcXHQgICAgIHNjX3NuZF93X2ludjtcXHQvKiBPSyB0byB1c2UgU2VuZCBXaXRoIEludmFsaWRhdGUgKi9cXG4gXFxuIFxcdGF0b21pY190ICAgICAgICAgICAgIHNjX3NxX2F2YWlsO1xcdC8qIFNRRXMgcmVhZHkgdG8gYmUgY29uc3VtZWQgKi9cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9yZG1hL2liX3ZlcmJzLmggYi9pbmNsdWRlL3JkbWEvaWJfdmVyYnMuaFxcbmluZGV4IDlkZDc2ZjQ4OWEwYmE0Li5iOGIyMjFiNWY1NjQ3MyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL3JkbWEvaWJfdmVyYnMuaFxcbisrKyBiL2luY2x1ZGUvcmRtYS9pYl92ZXJicy5oXFxuQEAgLTQwNiwzNiArNDA2LDM2IEBAIHN0cnVjdCBpYl9kZXZpY2VfYXR0ciB7XFxuIFxcdHUzMlxcdFxcdFxcdHZlbmRvcl9pZDtcXG4gXFx0dTMyXFx0XFx0XFx0dmVuZG9yX3BhcnRfaWQ7XFxuIFxcdHUzMlxcdFxcdFxcdGh3X3ZlcjtcXG4tXFx0aW50XFx0XFx0XFx0bWF4X3FwO1xcbi1cXHRpbnRcXHRcXHRcXHRtYXhfcXBfd3I7XFxuK1xcdHUzMlxcdFxcdFxcdG1heF9xcDtcXG4rXFx0dTMyXFx0XFx0XFx0bWF4X3FwX3dyO1xcbiBcXHR1NjRcXHRcXHRcXHRkZXZpY2VfY2FwX2ZsYWdzO1xcbiBcXHR1NjRcXHRcXHRcXHRrZXJuZWxfY2FwX2ZsYWdzO1xcbi1cXHRpbnRcXHRcXHRcXHRtYXhfc2VuZF9zZ2U7XFxuLVxcdGludFxcdFxcdFxcdG1heF9yZWN2X3NnZTtcXG4tXFx0aW50XFx0XFx0XFx0bWF4X3NnZV9yZDtcXG4tXFx0aW50XFx0XFx0XFx0bWF4X2NxO1xcbi1cXHRpbnRcXHRcXHRcXHRtYXhfY3FlO1xcbi1cXHRpbnRcXHRcXHRcXHRtYXhfbXI7XFxuLVxcdGludFxcdFxcdFxcdG1heF9wZDtcXG4tXFx0aW50XFx0XFx0XFx0bWF4X3FwX3JkX2F0b207XFxuLVxcdGludFxcdFxcdFxcdG1heF9lZV9yZF9hdG9tO1xcbi1cXHRpbnRcXHRcXHRcXHRtYXhfcmVzX3JkX2F0b207XFxuLVxcdGludFxcdFxcdFxcdG1heF9xcF9pbml0X3JkX2F0b207XFxuLVxcdGludFxcdFxcdFxcdG1heF9lZV9pbml0X3JkX2F0b207XFxuK1xcdHUzMlxcdFxcdFxcdG1heF9zZW5kX3NnZTtcXG4rXFx0dTMyXFx0XFx0XFx0bWF4X3JlY3Zfc2dlO1xcbitcXHR1MzJcXHRcXHRcXHRtYXhfc2dlX3JkO1xcbitcXHR1MzJcXHRcXHRcXHRtYXhfY3E7XFxuK1xcdHUzMlxcdFxcdFxcdG1heF9jcWU7XFxuK1xcdHUzMlxcdFxcdFxcdG1heF9tcjtcXG4rXFx0dTMyXFx0XFx0XFx0bWF4X3BkO1xcbitcXHR1MzJcXHRcXHRcXHRtYXhfcXBfcmRfYXRvbTtcXG4rXFx0dTMyXFx0XFx0XFx0bWF4X2VlX3JkX2F0b207XFxuK1xcdHUzMlxcdFxcdFxcdG1heF9yZXNfcmRfYXRvbTtcXG4rXFx0dTMyXFx0XFx0XFx0bWF4X3FwX2luaXRfcmRfYXRvbTtcXG4rXFx0dTMyXFx0XFx0XFx0bWF4X2VlX2luaXRfcmRfYXRvbTtcXG4gXFx0ZW51bSBpYl9hdG9taWNfY2FwXFx0YXRvbWljX2NhcDtcXG4gXFx0ZW51bSBpYl9hdG9taWNfY2FwXFx0bWFza2VkX2F0b21pY19jYXA7XFxuLVxcdGludFxcdFxcdFxcdG1heF9lZTtcXG4tXFx0aW50XFx0XFx0XFx0bWF4X3JkZDtcXG4tXFx0aW50XFx0XFx0XFx0bWF4X213O1xcbi1cXHRpbnRcXHRcXHRcXHRtYXhfcmF3X2lwdjZfcXA7XFxuLVxcdGludFxcdFxcdFxcdG1heF9yYXdfZXRoeV9xcDtcXG4tXFx0aW50XFx0XFx0XFx0bWF4X21jYXN0X2dycDtcXG4tXFx0aW50XFx0XFx0XFx0bWF4X21jYXN0X3FwX2F0dGFjaDtcXG4tXFx0aW50XFx0XFx0XFx0bWF4X3RvdGFsX21jYXN0X3FwX2F0dGFjaDtcXG4tXFx0aW50XFx0XFx0XFx0bWF4X2FoO1xcbitcXHR1MzJcXHRcXHRcXHRtYXhfZWU7XFxuK1xcdHUzMlxcdFxcdFxcdG1heF9yZGQ7XFxuK1xcdHUzMlxcdFxcdFxcdG1heF9tdztcXG4rXFx0dTMyXFx0XFx0XFx0bWF4X3Jhd19pcHY2X3FwO1xcbitcXHR1MzJcXHRcXHRcXHRtYXhfcmF3X2V0aHlfcXA7XFxuK1xcdHUzMlxcdFxcdFxcdG1heF9tY2FzdF9ncnA7XFxuK1xcdHUzMlxcdFxcdFxcdG1heF9tY2FzdF9xcF9hdHRhY2g7XFxuK1xcdHUzMlxcdFxcdFxcdG1heF90b3RhbF9tY2FzdF9xcF9hdHRhY2g7XFxuK1xcdHUzMlxcdFxcdFxcdG1heF9haDtcXG4gXFx0aW50XFx0XFx0XFx0bWF4X3NycTtcXG4tXFx0aW50XFx0XFx0XFx0bWF4X3NycV93cjtcXG4tXFx0aW50XFx0XFx0XFx0bWF4X3NycV9zZ2U7XFxuK1xcdHUzMlxcdFxcdFxcdG1heF9zcnFfd3I7XFxuK1xcdHUzMlxcdFxcdFxcdG1heF9zcnFfc2dlO1xcbiBcXHR1bnNpZ25lZCBpbnRcXHRcXHRtYXhfZmFzdF9yZWdfcGFnZV9saXN0X2xlbjtcXG4gXFx0dW5zaWduZWQgaW50XFx0XFx0bWF4X3BpX2Zhc3RfcmVnX3BhZ2VfbGlzdF9sZW47XFxuIFxcdHUxNlxcdFxcdFxcdG1heF9wa2V5cztcXG5kaWZmIC0tZ2l0IGEvbmV0L3Jkcy9pYi5jIGIvbmV0L3Jkcy9pYi5jXFxuaW5kZXggMzlmODcyNzJlMDcxYmYuLmM2MjY4NGQ0MjU5YzRmIDEwMDY0NFxcbi0tLSBhL25ldC9yZHMvaWIuY1xcbisrKyBiL25ldC9yZHMvaWIuY1xcbkBAIC0xNjIsMTIgKzE2MiwxMiBAQCBzdGF0aWMgaW50IHJkc19pYl9hZGRfb25lKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSlcXG4gXFx0XFx0ICAgSUJfT0RQX1NVUFBPUlRfUkVBRCk7XFxuIFxcbiBcXHRyZHNfaWJkZXYtXFx1MDAzZW1heF8xbV9tcnMgPSBkZXZpY2UtXFx1MDAzZWF0dHJzLm1heF9tciA/XFxuLVxcdFxcdG1pbl90KHVuc2lnbmVkIGludCwgKGRldmljZS1cXHUwMDNlYXR0cnMubWF4X21yIC8gMiksXFxuLVxcdFxcdCAgICAgIHJkc19pYl9tcl8xbV9wb29sX3NpemUpIDogcmRzX2liX21yXzFtX3Bvb2xfc2l6ZTtcXG4rXFx0XFx0bWluKGRldmljZS1cXHUwMDNlYXR0cnMubWF4X21yIC8gMixcXG4rXFx0XFx0ICAgIHJkc19pYl9tcl8xbV9wb29sX3NpemUpIDogcmRzX2liX21yXzFtX3Bvb2xfc2l6ZTtcXG4gXFxuIFxcdHJkc19pYmRldi1cXHUwMDNlbWF4XzhrX21ycyA9IGRldmljZS1cXHUwMDNlYXR0cnMubWF4X21yID9cXG4tXFx0XFx0bWluX3QodW5zaWduZWQgaW50LCAoKGRldmljZS1cXHUwMDNlYXR0cnMubWF4X21yIC8gMikgKiBSRFNfTVJfOEtfU0NBTEUpLFxcbi1cXHRcXHQgICAgICByZHNfaWJfbXJfOGtfcG9vbF9zaXplKSA6IHJkc19pYl9tcl84a19wb29sX3NpemU7XFxuK1xcdFxcdG1pbigoZGV2aWNlLVxcdTAwM2VhdHRycy5tYXhfbXIgLyAyKSAqIFJEU19NUl84S19TQ0FMRSxcXG4rXFx0XFx0ICAgIHJkc19pYl9tcl84a19wb29sX3NpemUpIDogcmRzX2liX21yXzhrX3Bvb2xfc2l6ZTtcXG4gXFxuIFxcdHJkc19pYmRldi1cXHUwMDNlbWF4X2luaXRpYXRvcl9kZXB0aCA9IGRldmljZS1cXHUwMDNlYXR0cnMubWF4X3FwX2luaXRfcmRfYXRvbTtcXG4gXFx0cmRzX2liZGV2LVxcdTAwM2VtYXhfcmVzcG9uZGVyX3Jlc291cmNlcyA9IGRldmljZS1cXHUwMDNlYXR0cnMubWF4X3FwX3JkX2F0b207XFxuQEAgLTIwNCw3ICsyMDQsNyBAQCBzdGF0aWMgaW50IHJkc19pYl9hZGRfb25lKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSlcXG4gXFx0XFx0Z290byBwdXRfZGV2O1xcbiBcXHR9XFxuIFxcbi1cXHRyZHNkZWJ1ZyhcXFwiUkRTL0lCOiBtYXhfbXIgPSAlZCwgbWF4X3dycyA9ICVkLCBtYXhfc2dlID0gJWQsIG1heF8xbV9tcnMgPSAlZCwgbWF4XzhrX21ycyA9ICVkXFxcXG5cXFwiLFxcbitcXHRyZHNkZWJ1ZyhcXFwiUkRTL0lCOiBtYXhfbXIgPSAldSwgbWF4X3dycyA9ICVkLCBtYXhfc2dlID0gJWQsIG1heF8xbV9tcnMgPSAlZCwgbWF4XzhrX21ycyA9ICVkXFxcXG5cXFwiLFxcbiBcXHRcXHQgZGV2aWNlLVxcdTAwM2VhdHRycy5tYXhfbXIsIHJkc19pYmRldi1cXHUwMDNlbWF4X3dycywgcmRzX2liZGV2LVxcdTAwM2VtYXhfc2dlLFxcbiBcXHRcXHQgcmRzX2liZGV2LVxcdTAwM2VtYXhfMW1fbXJzLCByZHNfaWJkZXYtXFx1MDAzZW1heF84a19tcnMpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L3Jkcy9pYl9jbS5jIGIvbmV0L3Jkcy9pYl9jbS5jXFxuaW5kZXggNTY2N2YwMTczYjQ3ZjIuLjE3ZTU4N2MzMDA3NjYzIDEwMDY0NFxcbi0tLSBhL25ldC9yZHMvaWJfY20uY1xcbisrKyBiL25ldC9yZHMvaWJfY20uY1xcbkBAIC0xNzMsMTEgKzE3MywxMSBAQCBzdGF0aWMgdm9pZCByZHNfaWJfY21fZmlsbF9jb25uX3BhcmFtKHN0cnVjdCByZHNfY29ubmVjdGlvbiAqY29ubixcXG4gXFxuIFxcdG1lbXNldChjb25uX3BhcmFtLCAwLCBzaXplb2Yoc3RydWN0IHJkbWFfY29ubl9wYXJhbSkpO1xcbiBcXG4tXFx0Y29ubl9wYXJhbS1cXHUwMDNlcmVzcG9uZGVyX3Jlc291cmNlcyA9XFxuLVxcdFxcdG1pbl90KHUzMiwgcmRzX2liZGV2LVxcdTAwM2VtYXhfcmVzcG9uZGVyX3Jlc291cmNlcywgbWF4X3Jlc3BvbmRlcl9yZXNvdXJjZXMpO1xcbi1cXHRjb25uX3BhcmFtLVxcdTAwM2Vpbml0aWF0b3JfZGVwdGggPVxcbi1cXHRcXHRtaW5fdCh1MzIsIHJkc19pYmRldi1cXHUwMDNlbWF4X2luaXRpYXRvcl9kZXB0aCwgbWF4X2luaXRpYXRvcl9kZXB0aCk7XFxuLVxcdGNvbm5fcGFyYW0tXFx1MDAzZXJldHJ5X2NvdW50ID0gbWluX3QodW5zaWduZWQgaW50LCByZHNfaWJfcmV0cnlfY291bnQsIDcpO1xcbitcXHRjb25uX3BhcmFtLVxcdTAwM2VyZXNwb25kZXJfcmVzb3VyY2VzID0gbWluMyhyZHNfaWJkZXYtXFx1MDAzZW1heF9yZXNwb25kZXJfcmVzb3VyY2VzLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICAgbWF4X3Jlc3BvbmRlcl9yZXNvdXJjZXMsIFU4X01BWCk7XFxuK1xcdGNvbm5fcGFyYW0tXFx1MDAzZWluaXRpYXRvcl9kZXB0aCA9IG1pbjMocmRzX2liZGV2LVxcdTAwM2VtYXhfaW5pdGlhdG9yX2RlcHRoLFxcbitcXHRcXHRcXHRcXHRcXHQgICBtYXhfaW5pdGlhdG9yX2RlcHRoLCBVOF9NQVgpO1xcbitcXHRjb25uX3BhcmFtLVxcdTAwM2VyZXRyeV9jb3VudCA9IG1pbihyZHNfaWJfcmV0cnlfY291bnQsIDdVKTtcXG4gXFx0Y29ubl9wYXJhbS1cXHUwMDNlcm5yX3JldHJ5X2NvdW50ID0gNztcXG4gXFxuIFxcdGlmIChkcCkge1xcbmRpZmYgLS1naXQgYS9uZXQvc3VucnBjL3hwcnRyZG1hL2Zyd3Jfb3BzLmMgYi9uZXQvc3VucnBjL3hwcnRyZG1hL2Zyd3Jfb3BzLmNcXG5pbmRleCA3Zjc5YTBhMjYwMWU2NS4uYjJlNDM3YWZlMDlkYWEgMTAwNjQ0XFxuLS0tIGEvbmV0L3N1bnJwYy94cHJ0cmRtYS9mcndyX29wcy5jXFxuKysrIGIvbmV0L3N1bnJwYy94cHJ0cmRtYS9mcndyX29wcy5jXFxuQEAgLTE3Miw4ICsxNzIsOSBAQCBpbnQgZnJ3cl9tcl9pbml0KHN0cnVjdCBycGNyZG1hX3hwcnQgKnJfeHBydCwgc3RydWN0IHJwY3JkbWFfbXIgKm1yKVxcbiBpbnQgZnJ3cl9xdWVyeV9kZXZpY2Uoc3RydWN0IHJwY3JkbWFfZXAgKmVwLCBjb25zdCBzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UpXFxuIHtcXG4gXFx0Y29uc3Qgc3RydWN0IGliX2RldmljZV9hdHRyICphdHRycyA9IFxcdTAwMjZkZXZpY2UtXFx1MDAzZWF0dHJzO1xcbi1cXHRpbnQgbWF4X3FwX3dyLCBkZXB0aCwgZGVsdGE7XFxuIFxcdHVuc2lnbmVkIGludCBtYXhfc2dlO1xcbitcXHR1MzIgbWF4X3FwX3dyO1xcbitcXHRpbnQgZGVwdGgsIGRlbHRhO1xcbiBcXG4gXFx0aWYgKCEoYXR0cnMtXFx1MDAzZWRldmljZV9jYXBfZmxhZ3MgXFx1MDAyNiBJQl9ERVZJQ0VfTUVNX01HVF9FWFRFTlNJT05TKSB8fFxcbiBcXHQgICAgYXR0cnMtXFx1MDAzZW1heF9mYXN0X3JlZ19wYWdlX2xpc3RfbGVuID09IDApIHtcXG5AQCAtMjI5LDEwICsyMzAsMTAgQEAgaW50IGZyd3JfcXVlcnlfZGV2aWNlKHN0cnVjdCBycGNyZG1hX2VwICplcCwgY29uc3Qgc3RydWN0IGliX2RldmljZSAqZGV2aWNlKVxcbiBcXHR9XFxuIFxcbiBcXHRtYXhfcXBfd3IgPSBhdHRycy1cXHUwMDNlbWF4X3FwX3dyO1xcbitcXHRpZiAobWF4X3FwX3dyIFxcdTAwM2MgUlBDUkRNQV9CQUNLV0FSRF9XUlMgKyAxICsgUlBDUkRNQV9NSU5fU0xPVF9UQUJMRSlcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcdG1heF9xcF93ciAtPSBSUENSRE1BX0JBQ0tXQVJEX1dSUztcXG4gXFx0bWF4X3FwX3dyIC09IDE7XFxuLVxcdGlmIChtYXhfcXBfd3IgXFx1MDAzYyBSUENSRE1BX01JTl9TTE9UX1RBQkxFKVxcbi1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFx0aWYgKGVwLVxcdTAwM2VyZV9tYXhfcmVxdWVzdHMgXFx1MDAzZSBtYXhfcXBfd3IpXFxuIFxcdFxcdGVwLVxcdTAwM2VyZV9tYXhfcmVxdWVzdHMgPSBtYXhfcXBfd3I7XFxuIFxcdGVwLVxcdTAwM2VyZV9hdHRyLmNhcC5tYXhfc2VuZF93ciA9IGVwLVxcdTAwM2VyZV9tYXhfcmVxdWVzdHMgKiBkZXB0aDtcXG5kaWZmIC0tZ2l0IGEvbmV0L3N1bnJwYy94cHJ0cmRtYS9zdmNfcmRtYV90cmFuc3BvcnQuYyBiL25ldC9zdW5ycGMveHBydHJkbWEvc3ZjX3JkbWFfdHJhbnNwb3J0LmNcXG5pbmRleCBmMThiYzYwZDlmNGZmYS4uYzc2OGNkYTJlNTQ0NGEgMTAwNjQ0XFxuLS0tIGEvbmV0L3N1bnJwYy94cHJ0cmRtYS9zdmNfcmRtYV90cmFuc3BvcnQuY1xcbisrKyBiL25ldC9zdW5ycGMveHBydHJkbWEvc3ZjX3JkbWFfdHJhbnNwb3J0LmNcXG5AQCAtNTQ0LDggKzU0NCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3ZjX3hwcnQgKnN2Y19yZG1hX2FjY2VwdChzdHJ1Y3Qgc3ZjX3hwcnQgKnhwcnQpXFxuIFxcdHNldF9iaXQoUkRNQVhQUlRfQ09OTl9QRU5ESU5HLCBcXHUwMDI2bmV3eHBydC1cXHUwMDNlc2NfZmxhZ3MpO1xcbiBcXHRtZW1zZXQoXFx1MDAyNmNvbm5fcGFyYW0sIDAsIHNpemVvZiBjb25uX3BhcmFtKTtcXG4gXFx0Y29ubl9wYXJhbS5yZXNwb25kZXJfcmVzb3VyY2VzID0gMDtcXG4tXFx0Y29ubl9wYXJhbS5pbml0aWF0b3JfZGVwdGggPSBtaW5fdChpbnQsIG5ld3hwcnQtXFx1MDAzZXNjX29yZCxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgZGV2LVxcdTAwM2VhdHRycy5tYXhfcXBfaW5pdF9yZF9hdG9tKTtcXG4rXFx0Y29ubl9wYXJhbS5pbml0aWF0b3JfZGVwdGggPSBtaW4obmV3eHBydC1cXHUwMDNlc2Nfb3JkLCBkZXYtXFx1MDAzZWF0dHJzLm1heF9xcF9pbml0X3JkX2F0b20pO1xcbiBcXHRpZiAoIWNvbm5fcGFyYW0uaW5pdGlhdG9yX2RlcHRoKSB7XFxuIFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuIFxcdFxcdHRyYWNlX3N2Y3JkbWFfaW5pdGRlcHRoX2VycihuZXd4cHJ0LCByZXQpO1xcbkBAIC01NzAsNyArNTY5LDcgQEAgc3RhdGljIHN0cnVjdCBzdmNfeHBydCAqc3ZjX3JkbWFfYWNjZXB0KHN0cnVjdCBzdmNfeHBydCAqeHBydClcXG4gXFx0XFx0ZHByaW50ayhcXFwiICAgIGxvY2FsIGFkZHJlc3MgICA6ICVwSVM6JXVcXFxcblxcXCIsIHNhcCwgcnBjX2dldF9wb3J0KHNhcCkpO1xcbiBcXHRcXHRzYXAgPSAoc3RydWN0IHNvY2thZGRyICopXFx1MDAyNm5ld3hwcnQtXFx1MDAzZXNjX2NtX2lkLVxcdTAwM2Vyb3V0ZS5hZGRyLmRzdF9hZGRyO1xcbiBcXHRcXHRkcHJpbnRrKFxcXCIgICAgcmVtb3RlIGFkZHJlc3MgIDogJXBJUzoldVxcXFxuXFxcIiwgc2FwLCBycGNfZ2V0X3BvcnQoc2FwKSk7XFxuLVxcdFxcdGRwcmludGsoXFxcIiAgICBtYXhfc2dlICAgICAgICAgOiAlZFxcXFxuXFxcIiwgbmV3eHBydC1cXHUwMDNlc2NfbWF4X3NlbmRfc2dlcyk7XFxuK1xcdFxcdGRwcmludGsoXFxcIiAgICBtYXhfc2dlICAgICAgICAgOiAldVxcXFxuXFxcIiwgbmV3eHBydC1cXHUwMDNlc2NfbWF4X3NlbmRfc2dlcyk7XFxuIFxcdFxcdGRwcmludGsoXFxcIiAgICBzcV9kZXB0aCAgICAgICAgOiAlZFxcXFxuXFxcIiwgbmV3eHBydC1cXHUwMDNlc2Nfc3FfZGVwdGgpO1xcbiBcXHRcXHRkcHJpbnRrKFxcXCIgICAgcmRtYV9yd19jdHhzICAgIDogJWRcXFxcblxcXCIsIGN0eHRzKTtcXG4gXFx0XFx0ZHByaW50ayhcXFwiICAgIG1heF9yZXF1ZXN0cyAgICA6ICVkXFxcXG5cXFwiLCBuZXd4cHJ0LVxcdTAwM2VzY19tYXhfcmVxdWVzdHMpO1xcbmRpZmYgLS1naXQgYS9uZXQvc3VucnBjL3hwcnRyZG1hL3ZlcmJzLmMgYi9uZXQvc3VucnBjL3hwcnRyZG1hL3ZlcmJzLmNcXG5pbmRleCBhZWNmOWMwYTE1M2YzNi4uOGVkOWRhNmQyZDJmNzcgMTAwNjQ0XFxuLS0tIGEvbmV0L3N1bnJwYy94cHJ0cmRtYS92ZXJicy5jXFxuKysrIGIvbmV0L3N1bnJwYy94cHJ0cmRtYS92ZXJicy5jXFxuQEAgLTQ1Myw3ICs0NTMsNyBAQCBzdGF0aWMgaW50IHJwY3JkbWFfZXBfY3JlYXRlKHN0cnVjdCBycGNyZG1hX3hwcnQgKnJfeHBydClcXG4gXFx0LyogQ2xpZW50IG9mZmVycyBSRE1BIFJlYWQgYnV0IGRvZXMgbm90IGluaXRpYXRlICovXFxuIFxcdGVwLVxcdTAwM2VyZV9yZW1vdGVfY21hLmluaXRpYXRvcl9kZXB0aCA9IDA7XFxuIFxcdGVwLVxcdTAwM2VyZV9yZW1vdGVfY21hLnJlc3BvbmRlcl9yZXNvdXJjZXMgPVxcbi1cXHRcXHRtaW5fdChpbnQsIFU4X01BWCwgZGV2aWNlLVxcdTAwM2VhdHRycy5tYXhfcXBfcmRfYXRvbSk7XFxuK1xcdFxcdG1pbihkZXZpY2UtXFx1MDAzZWF0dHJzLm1heF9xcF9yZF9hdG9tLCBVOF9NQVgpO1xcbiBcXG4gXFx0LyogTGltaXQgdHJhbnNwb3J0IHJldHJpZXMgc28gY2xpZW50IGNhbiBkZXRlY3Qgc2VydmVyXFxuIFxcdCAqIEdJRCBjaGFuZ2VzIHF1aWNrbHkuIFJQQyBsYXllciBoYW5kbGVzIHJlLWVzdGFibGlzaGluZ1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0NjoyNS4zMDkyNjAyMThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2NTI5NzQwMzc1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSRE1BX1JYRVwiLFxuICAgIFwiTlZNRV9SRE1BXCIsXG4gICAgXCJOVk1FX1RBUkdFVF9SRE1BXCIsXG4gICAgXCJTVU5SUENfWFBSVF9SRE1BXCIsXG4gICAgXCJDSUZTX1NNQl9ESVJFQ1RcIixcbiAgICBcIlNNQl9TRVJWRVJfU01CRElSRUNUXCIsXG4gICAgXCJJTkZJTklCQU5EX1NSUFwiLFxuICAgIFwiSU5GSU5JQkFORF9TUlBUXCIsXG4gICAgXCJJTkZJTklCQU5EX0lTRVJcIixcbiAgICBcIklORklOSUJBTkRfSVNFUlRcIixcbiAgICBcIklORklOSUJBTkRfUlRSU19DTElFTlRcIixcbiAgICBcIklORklOSUJBTkRfUlRSU19TRVJWRVJcIixcbiAgICBcIlJEU19SRE1BXCIsXG4gICAgXCJJTkZJTklCQU5EX0lQT0lCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnZtZV9yZG1hX2ZpbmRfZ2V0X2RldmljZVwiLFxuICAgIFwibnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2VcIixcbiAgICBcImZyd3JfcXVlcnlfZGV2aWNlXCIsXG4gICAgXCJyeGVfcXBfY2hrX2NhcFwiLFxuICAgIFwicnhlX3NycV9jaGtfaW5pdFwiLFxuICAgIFwic21iZGlyZWN0X2Nvbm5lY3Rpb25fY3JlYXRlX3FwXCIsXG4gICAgXCJyZHNfaWJfY21fZmlsbF9jb25uX3BhcmFtXCIsXG4gICAgXCJzdmNfcmRtYV9hY2NlcHRcIixcbiAgICBcInJwY3JkbWFfZXBfY3JlYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZXMgb2YgdmFyaW91cyBSRE1BIGRldmljZSBhdHRyaWJ1dGVzIGZyb20gYGludGAgdG8gYHUzMmAgYW5kIHVwZGF0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgYG1pbigpYCBjYWxscyBhbmQgZm9ybWF0IHN0cmluZ3MuIEl0IGFsc28gZml4ZXMgc29tZSBwb3RlbnRpYWwgdW5kZXJmbG93cyBpbiBjb25uZWN0aW9uIHNldHVwIGZ1bmN0aW9ucy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgUkRNQSBsb2dpYyBhbmQgdmFyaW91cyBSRE1BIFVMUHMgKFVwcGVyIExheWVyIFByb3RvY29scykgd2hpY2ggY2FuIGJlIHRlc3RlZCB1c2luZyB0aGUgc29mdHdhcmUgUkRNQSBkcml2ZXIgKFJYRSkuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyBpbnRlZ2VyIG92ZXJmbG93L3VuZGVyZmxvdyBidWdzIHdlcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzMDI1MzkwYjA5MzU5ZTE5MDRkMjM5YTFiMjc0MTYxNDQ4NGJlNzI1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdW4gMTkgMjA6NDY6MjMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvY29yZS9jcS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvY3EuY1xuaW5kZXggM2Q3YjZjZGRkMTMxYzQuLmVlOTgxODhlNTdmYjVmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvY3EuY1xuKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvY3EuY1xuQEAgLTM5Myw4ICszOTMsNyBAQCBzdGF0aWMgaW50IGliX2FsbG9jX2NxcyhzdHJ1Y3QgaWJfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBucl9jcWVzLFxuIFx0ICogYSByZWFzb25hYmxlIGJhdGNoIHNpemUgc28gdGhhdCB3ZSBjYW4gc2hhcmUgQ1FzIGJldHdlZW5cbiBcdCAqIG11bHRpcGxlIHVzZXJzIGluc3RlYWQgb2YgYWxsb2NhdGluZyBhIGxhcmdlciBudW1iZXIgb2YgQ1FzLlxuIFx0ICovXG4tXHRucl9jcWVzID0gbWluX3QodW5zaWduZWQgaW50LCBkZXYtXHUwMDNlYXR0cnMubWF4X2NxZSxcbi1cdFx0XHRtYXgobnJfY3FlcywgSUJfTUFYX1NIQVJFRF9DUV9TWikpO1xuK1x0bnJfY3FlcyA9IG1pbihkZXYtXHUwMDNlYXR0cnMubWF4X2NxZSwgbWF4KG5yX2NxZXMsIElCX01BWF9TSEFSRURfQ1FfU1opKTtcbiBcdG5yX2NxcyA9IG1pbl90KHVuc2lnbmVkIGludCwgZGV2LVx1MDAzZW51bV9jb21wX3ZlY3RvcnMsIG51bV9vbmxpbmVfY3B1cygpKTtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX2NxczsgaSsrKSB7XG4gXHRcdGNxID0gaWJfYWxsb2NfY3EoZGV2LCBOVUxMLCBucl9jcWVzLCBpLCBwb2xsX2N0eCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FlZHIvdmVyYnMuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xZWRyL3ZlcmJzLmNcbmluZGV4IDY3OWFhNmYzYTYzYmM1Li5hODVhZDAxNzExMzQ4ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xZWRyL3ZlcmJzLmNcbisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xZWRyL3ZlcmJzLmNcbkBAIC0xNTEsNyArMTUxLDcgQEAgaW50IHFlZHJfcXVlcnlfZGV2aWNlKHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LFxuIFx0YXR0ci1cdTAwM2VtYXhfcXBfaW5pdF9yZF9hdG9tID1cbiBcdCAgICAxIFx1MDAzY1x1MDAzYyAoZmxzKHFhdHRyLVx1MDAzZW1heF9xcF9yZXFfcmRfYXRvbWljX3Jlc2MpIC0gMSk7XG4gXHRhdHRyLVx1MDAzZW1heF9xcF9yZF9hdG9tID1cbi1cdCAgICBtaW4oMSBcdTAwM2NcdTAwM2MgKGZscyhxYXR0ci1cdTAwM2VtYXhfcXBfcmVzcF9yZF9hdG9taWNfcmVzYykgLSAxKSxcbitcdCAgICBtaW4oMVUgXHUwMDNjXHUwMDNjIChmbHMocWF0dHItXHUwMDNlbWF4X3FwX3Jlc3BfcmRfYXRvbWljX3Jlc2MpIC0gMSksXG4gXHRcdGF0dHItXHUwMDNlbWF4X3FwX2luaXRfcmRfYXRvbSk7XG4gXG4gXHRhdHRyLVx1MDAzZW1heF9zcnEgPSBxYXR0ci1cdTAwM2VtYXhfc3JxO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3FwLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jXG5pbmRleCBmM2RmZjFhZWE5NmFmYy4uN2EwNTI5YTE3OTkyYzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jXG5AQCAtNjcsMjcgKzY3LDI3IEBAIHN0YXRpYyBpbnQgcnhlX3FwX2Noa19jYXAoc3RydWN0IHJ4ZV9kZXYgKnJ4ZSwgc3RydWN0IGliX3FwX2NhcCAqY2FwLFxuIFx0XHRcdCAgaW50IGhhc19zcnEpXG4ge1xuIFx0aWYgKGNhcC1cdTAwM2VtYXhfc2VuZF93ciBcdTAwM2UgcnhlLVx1MDAzZWF0dHIubWF4X3FwX3dyKSB7XG4tXHRcdHJ4ZV9kYmdfZGV2KHJ4ZSwgXCJpbnZhbGlkIHNlbmQgd3IgPSAldSBcdTAwM2UgJWRcXG5cIixcbi1cdFx0XHQgY2FwLVx1MDAzZW1heF9zZW5kX3dyLCByeGUtXHUwMDNlYXR0ci5tYXhfcXBfd3IpO1xuK1x0XHRyeGVfZGJnX2RldihyeGUsIFwiaW52YWxpZCBzZW5kIHdyID0gJXUgXHUwMDNlICV1XFxuXCIsXG4rXHRcdFx0ICAgIGNhcC1cdTAwM2VtYXhfc2VuZF93ciwgcnhlLVx1MDAzZWF0dHIubWF4X3FwX3dyKTtcbiBcdFx0Z290byBlcnIxO1xuIFx0fVxuIFxuIFx0aWYgKGNhcC1cdTAwM2VtYXhfc2VuZF9zZ2UgXHUwMDNlIHJ4ZS1cdTAwM2VhdHRyLm1heF9zZW5kX3NnZSkge1xuLVx0XHRyeGVfZGJnX2RldihyeGUsIFwiaW52YWxpZCBzZW5kIHNnZSA9ICV1IFx1MDAzZSAlZFxcblwiLFxuLVx0XHRcdCBjYXAtXHUwMDNlbWF4X3NlbmRfc2dlLCByeGUtXHUwMDNlYXR0ci5tYXhfc2VuZF9zZ2UpO1xuK1x0XHRyeGVfZGJnX2RldihyeGUsIFwiaW52YWxpZCBzZW5kIHNnZSA9ICV1IFx1MDAzZSAldVxcblwiLFxuK1x0XHRcdCAgICBjYXAtXHUwMDNlbWF4X3NlbmRfc2dlLCByeGUtXHUwMDNlYXR0ci5tYXhfc2VuZF9zZ2UpO1xuIFx0XHRnb3RvIGVycjE7XG4gXHR9XG4gXG4gXHRpZiAoIWhhc19zcnEpIHtcbiBcdFx0aWYgKGNhcC1cdTAwM2VtYXhfcmVjdl93ciBcdTAwM2UgcnhlLVx1MDAzZWF0dHIubWF4X3FwX3dyKSB7XG4tXHRcdFx0cnhlX2RiZ19kZXYocnhlLCBcImludmFsaWQgcmVjdiB3ciA9ICV1IFx1MDAzZSAlZFxcblwiLFxuLVx0XHRcdFx0IGNhcC1cdTAwM2VtYXhfcmVjdl93ciwgcnhlLVx1MDAzZWF0dHIubWF4X3FwX3dyKTtcbitcdFx0XHRyeGVfZGJnX2RldihyeGUsIFwiaW52YWxpZCByZWN2IHdyID0gJXUgXHUwMDNlICV1XFxuXCIsXG4rXHRcdFx0XHQgICAgY2FwLVx1MDAzZW1heF9yZWN2X3dyLCByeGUtXHUwMDNlYXR0ci5tYXhfcXBfd3IpO1xuIFx0XHRcdGdvdG8gZXJyMTtcbiBcdFx0fVxuIFxuIFx0XHRpZiAoY2FwLVx1MDAzZW1heF9yZWN2X3NnZSBcdTAwM2UgcnhlLVx1MDAzZWF0dHIubWF4X3JlY3Zfc2dlKSB7XG4tXHRcdFx0cnhlX2RiZ19kZXYocnhlLCBcImludmFsaWQgcmVjdiBzZ2UgPSAldSBcdTAwM2UgJWRcXG5cIixcbi1cdFx0XHRcdCBjYXAtXHUwMDNlbWF4X3JlY3Zfc2dlLCByeGUtXHUwMDNlYXR0ci5tYXhfcmVjdl9zZ2UpO1xuK1x0XHRcdHJ4ZV9kYmdfZGV2KHJ4ZSwgXCJpbnZhbGlkIHJlY3Ygc2dlID0gJXUgXHUwMDNlICV1XFxuXCIsXG4rXHRcdFx0XHQgICAgY2FwLVx1MDAzZW1heF9yZWN2X3NnZSwgcnhlLVx1MDAzZWF0dHIubWF4X3JlY3Zfc2dlKTtcbiBcdFx0XHRnb3RvIGVycjE7XG4gXHRcdH1cbiBcdH1cbkBAIC01MzcsOSArNTM3LDkgQEAgaW50IHJ4ZV9xcF9jaGtfYXR0cihzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgcnhlX3FwICpxcCxcbiBcbiBcdGlmIChtYXNrIFx1MDAyNiBJQl9RUF9NQVhfUVBfUkRfQVRPTUlDKSB7XG4gXHRcdGlmIChhdHRyLVx1MDAzZW1heF9yZF9hdG9taWMgXHUwMDNlIHJ4ZS1cdTAwM2VhdHRyLm1heF9xcF9yZF9hdG9tKSB7XG4tXHRcdFx0cnhlX2RiZ19xcChxcCwgXCJpbnZhbGlkIG1heF9yZF9hdG9taWMgJWQgXHUwMDNlICVkXFxuXCIsXG4tXHRcdFx0XHQgYXR0ci1cdTAwM2VtYXhfcmRfYXRvbWljLFxuLVx0XHRcdFx0IHJ4ZS1cdTAwM2VhdHRyLm1heF9xcF9yZF9hdG9tKTtcbitcdFx0XHRyeGVfZGJnX3FwKHFwLCBcImludmFsaWQgbWF4X3JkX2F0b21pYyAldSBcdTAwM2UgJXVcXG5cIixcbitcdFx0XHRcdCAgIGF0dHItXHUwMDNlbWF4X3JkX2F0b21pYyxcbitcdFx0XHRcdCAgIHJ4ZS1cdTAwM2VhdHRyLm1heF9xcF9yZF9hdG9tKTtcbiBcdFx0XHRnb3RvIGVycjE7XG4gXHRcdH1cbiBcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9zcnEuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3NycS5jXG5pbmRleCBjOWE3Y2QzODk1M2QzMS4uNzQ5MDRhNmZkZjJiMjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9zcnEuY1xuKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfc3JxLmNcbkBAIC0xMyw4ICsxMyw4IEBAIGludCByeGVfc3JxX2Noa19pbml0KHN0cnVjdCByeGVfZGV2ICpyeGUsIHN0cnVjdCBpYl9zcnFfaW5pdF9hdHRyICppbml0KVxuIFx0c3RydWN0IGliX3NycV9hdHRyICphdHRyID0gXHUwMDI2aW5pdC1cdTAwM2VhdHRyO1xuIFxuIFx0aWYgKGF0dHItXHUwMDNlbWF4X3dyIFx1MDAzZSByeGUtXHUwMDNlYXR0ci5tYXhfc3JxX3dyKSB7XG4tXHRcdHJ4ZV9kYmdfZGV2KHJ4ZSwgXCJtYXhfd3IoJWQpIFx1MDAzZSBtYXhfc3JxX3dyKCVkKVxcblwiLFxuLVx0XHRcdGF0dHItXHUwMDNlbWF4X3dyLCByeGUtXHUwMDNlYXR0ci5tYXhfc3JxX3dyKTtcbitcdFx0cnhlX2RiZ19kZXYocnhlLCBcIm1heF93cigldSkgXHUwMDNlIG1heF9zcnFfd3IoJXUpXFxuXCIsXG4rXHRcdFx0ICAgIGF0dHItXHUwMDNlbWF4X3dyLCByeGUtXHUwMDNlYXR0ci5tYXhfc3JxX3dyKTtcbiBcdFx0Z290byBlcnIxO1xuIFx0fVxuIFxuQEAgLTI3LDggKzI3LDggQEAgaW50IHJ4ZV9zcnFfY2hrX2luaXQoc3RydWN0IHJ4ZV9kZXYgKnJ4ZSwgc3RydWN0IGliX3NycV9pbml0X2F0dHIgKmluaXQpXG4gXHRcdGF0dHItXHUwMDNlbWF4X3dyID0gUlhFX01JTl9TUlFfV1I7XG4gXG4gXHRpZiAoYXR0ci1cdTAwM2VtYXhfc2dlIFx1MDAzZSByeGUtXHUwMDNlYXR0ci5tYXhfc3JxX3NnZSkge1xuLVx0XHRyeGVfZGJnX2RldihyeGUsIFwibWF4X3NnZSglZCkgXHUwMDNlIG1heF9zcnFfc2dlKCVkKVxcblwiLFxuLVx0XHRcdGF0dHItXHUwMDNlbWF4X3NnZSwgcnhlLVx1MDAzZWF0dHIubWF4X3NycV9zZ2UpO1xuK1x0XHRyeGVfZGJnX2RldihyeGUsIFwibWF4X3NnZSgldSkgXHUwMDNlIG1heF9zcnFfc2dlKCV1KVxcblwiLFxuK1x0XHRcdCAgICBhdHRyLVx1MDAzZW1heF9zZ2UsIHJ4ZS1cdTAwM2VhdHRyLm1heF9zcnFfc2dlKTtcbiBcdFx0Z290byBlcnIxO1xuIFx0fVxuIFxuQEAgLTEwNyw4ICsxMDcsOCBAQCBpbnQgcnhlX3NycV9jaGtfYXR0cihzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgcnhlX3NycSAqc3JxLFxuIFxuIFx0aWYgKG1hc2sgXHUwMDI2IElCX1NSUV9NQVhfV1IpIHtcbiBcdFx0aWYgKGF0dHItXHUwMDNlbWF4X3dyIFx1MDAzZSByeGUtXHUwMDNlYXR0ci5tYXhfc3JxX3dyKSB7XG4tXHRcdFx0cnhlX2RiZ19zcnEoc3JxLCBcIm1heF93ciglZCkgXHUwMDNlIG1heF9zcnFfd3IoJWQpXFxuXCIsXG4tXHRcdFx0XHRhdHRyLVx1MDAzZW1heF93ciwgcnhlLVx1MDAzZWF0dHIubWF4X3NycV93cik7XG4rXHRcdFx0cnhlX2RiZ19zcnEoc3JxLCBcIm1heF93cigldSkgXHUwMDNlIG1heF9zcnFfd3IoJXUpXFxuXCIsXG4rXHRcdFx0XHQgICAgYXR0ci1cdTAwM2VtYXhfd3IsIHJ4ZS1cdTAwM2VhdHRyLm1heF9zcnFfd3IpO1xuIFx0XHRcdGdvdG8gZXJyMTtcbiBcdFx0fVxuIFxuQEAgLTEyOSw4ICsxMjksOCBAQCBpbnQgcnhlX3NycV9jaGtfYXR0cihzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgcnhlX3NycSAqc3JxLFxuIFxuIFx0aWYgKG1hc2sgXHUwMDI2IElCX1NSUV9MSU1JVCkge1xuIFx0XHRpZiAoYXR0ci1cdTAwM2VzcnFfbGltaXQgXHUwMDNlIHJ4ZS1cdTAwM2VhdHRyLm1heF9zcnFfd3IpIHtcbi1cdFx0XHRyeGVfZGJnX3NycShzcnEsIFwic3JxX2xpbWl0KCVkKSBcdTAwM2UgbWF4X3NycV93ciglZClcXG5cIixcbi1cdFx0XHRcdGF0dHItXHUwMDNlc3JxX2xpbWl0LCByeGUtXHUwMDNlYXR0ci5tYXhfc3JxX3dyKTtcbitcdFx0XHRyeGVfZGJnX3NycShzcnEsIFwic3JxX2xpbWl0KCV1KSBcdTAwM2UgbWF4X3NycV93cigldSlcXG5cIixcbitcdFx0XHRcdCAgICBhdHRyLVx1MDAzZXNycV9saW1pdCwgcnhlLVx1MDAzZWF0dHIubWF4X3NycV93cik7XG4gXHRcdFx0Z290byBlcnIxO1xuIFx0XHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYl9jbS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYl9jbS5jXG5pbmRleCA1N2ZlYzg4YTE2MjkwYS4uZWQwNTkyODk4Mzg0ZDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX2NtLmNcbisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfY20uY1xuQEAgLTEwNzEsOCArMTA3MSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaWJfcXAgKmlwb2liX2NtX2NyZWF0ZV90eF9xcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgaXBvaWJfXG4gXHRzdHJ1Y3QgaWJfcXAgKnR4X3FwO1xuIFxuIFx0aWYgKGRldi1cdTAwM2VmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9TRylcbi1cdFx0YXR0ci5jYXAubWF4X3NlbmRfc2dlID0gbWluX3QodTMyLCBwcml2LVx1MDAzZWNhLVx1MDAzZWF0dHJzLm1heF9zZW5kX3NnZSxcbi1cdFx0XHRcdFx0ICAgICAgTUFYX1NLQl9GUkFHUyArIDEpO1xuK1x0XHRhdHRyLmNhcC5tYXhfc2VuZF9zZ2UgPSBtaW4ocHJpdi1cdTAwM2VjYS1cdTAwM2VhdHRycy5tYXhfc2VuZF9zZ2UsIE1BWF9TS0JfRlJBR1MgKyAxKTtcbiBcbiBcdHR4X3FwID0gaWJfY3JlYXRlX3FwKHByaXYtXHUwMDNlcGQsIFx1MDAyNmF0dHIpO1xuIFx0dHgtXHUwMDNlbWF4X3NlbmRfc2dlID0gYXR0ci5jYXAubWF4X3NlbmRfc2dlO1xuQEAgLTE1ODIsNyArMTU4MSw4IEBAIHN0YXRpYyB2b2lkIGlwb2liX2NtX2NyZWF0ZV9zcnEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG1heF9zZ2UpXG4gaW50IGlwb2liX2NtX2Rldl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuIFx0c3RydWN0IGlwb2liX2Rldl9wcml2ICpwcml2ID0gaXBvaWJfcHJpdihkZXYpO1xuLVx0aW50IG1heF9zcnFfc2dlLCBpO1xuK1x0dTMyIG1heF9zcnFfc2dlO1xuK1x0aW50IGk7XG4gXHR1OCBhZGRyO1xuIFxuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2cHJpdi1cdTAwM2VjbS5wYXNzaXZlX2lkcyk7XG5AQCAtMTYwMCw5ICsxNjAwLDkgQEAgaW50IGlwb2liX2NtX2Rldl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gXHRza2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNnByaXYtXHUwMDNlY20uc2tiX3F1ZXVlKTtcbiBcbi1cdGlwb2liX2RiZyhwcml2LCBcIm1heF9zcnFfc2dlPSVkXFxuXCIsIHByaXYtXHUwMDNlY2EtXHUwMDNlYXR0cnMubWF4X3NycV9zZ2UpO1xuK1x0aXBvaWJfZGJnKHByaXYsIFwibWF4X3NycV9zZ2U9JXVcXG5cIiwgcHJpdi1cdTAwM2VjYS1cdTAwM2VhdHRycy5tYXhfc3JxX3NnZSk7XG4gXG4tXHRtYXhfc3JxX3NnZSA9IG1pbl90KGludCwgSVBPSUJfQ01fUlhfU0csIHByaXYtXHUwMDNlY2EtXHUwMDNlYXR0cnMubWF4X3NycV9zZ2UpO1xuK1x0bWF4X3NycV9zZ2UgPSBtaW4ocHJpdi1cdTAwM2VjYS1cdTAwM2VhdHRycy5tYXhfc3JxX3NnZSwgSVBPSUJfQ01fUlhfU0cpO1xuIFx0aXBvaWJfY21fY3JlYXRlX3NycShkZXYsIG1heF9zcnFfc2dlKTtcbiBcdGlmIChpcG9pYl9jbV9oYXNfc3JxKGRldikpIHtcbiBcdFx0cHJpdi1cdTAwM2VjbS5tYXhfY21fbXR1ID0gbWF4X3NycV9zZ2UgKiBQQUdFX1NJWkUgLSAweDEwO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfdmVyYnMuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfdmVyYnMuY1xuaW5kZXggM2VkMWVhNTY2NjkwZGQuLjI0OTA2OTZhMWFhYmM4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYl92ZXJicy5jXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX3ZlcmJzLmNcbkBAIC0xNDcsOCArMTQ3LDcgQEAgaW50IGlwb2liX3RyYW5zcG9ydF9kZXZfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgaWJfZGV2aWNlICpjYSlcbiBcdFx0LmNhcCA9IHtcbiBcdFx0XHQubWF4X3NlbmRfd3IgID0gaXBvaWJfc2VuZHFfc2l6ZSxcbiBcdFx0XHQubWF4X3JlY3Zfd3IgID0gaXBvaWJfcmVjdnFfc2l6ZSxcbi1cdFx0XHQubWF4X3NlbmRfc2dlID0gbWluX3QodTMyLCBwcml2LVx1MDAzZWNhLVx1MDAzZWF0dHJzLm1heF9zZW5kX3NnZSxcbi1cdFx0XHRcdFx0ICAgICAgTUFYX1NLQl9GUkFHUyArIDEpLFxuK1x0XHRcdC5tYXhfc2VuZF9zZ2UgPSBtaW4ocHJpdi1cdTAwM2VjYS1cdTAwM2VhdHRycy5tYXhfc2VuZF9zZ2UsIE1BWF9TS0JfRlJBR1MgKyAxKSxcbiBcdFx0XHQubWF4X3JlY3Zfc2dlID0gSVBPSUJfVURfUlhfU0dcbiBcdFx0fSxcbiBcdFx0LnNxX3NpZ190eXBlID0gSUJfU0lHTkFMX0FMTF9XUixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvaXNlcl92ZXJicy5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL2lzZXJfdmVyYnMuY1xuaW5kZXggZjAzYjNiYjNjMGM0YzEuLjU1ZmU2OGU1YjgzNzVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL2lzZXJfdmVyYnMuY1xuKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL2lzZXJfdmVyYnMuY1xuQEAgLTI0NCw4ICsyNDQsNyBAQCBzdGF0aWMgaW50IGlzZXJfY3JlYXRlX2liX2Nvbm5fcmVzKHN0cnVjdCBpYl9jb25uICppYl9jb25uKVxuIFx0XHRtYXhfc2VuZF93ciA9IElTRVJfUVBfU0lHX01BWF9SRVFfRFRPUyArIDE7XG4gXHRlbHNlXG4gXHRcdG1heF9zZW5kX3dyID0gSVNFUl9RUF9NQVhfUkVRX0RUT1MgKyAxO1xuLVx0bWF4X3NlbmRfd3IgPSBtaW5fdCh1bnNpZ25lZCBpbnQsIG1heF9zZW5kX3dyLFxuLVx0XHRcdCAgICAodW5zaWduZWQgaW50KWliX2Rldi1cdTAwM2VhdHRycy5tYXhfcXBfd3IpO1xuK1x0bWF4X3NlbmRfd3IgPSBtaW4obWF4X3NlbmRfd3IsIGliX2Rldi1cdTAwM2VhdHRycy5tYXhfcXBfd3IpO1xuIFxuIFx0Y3Ffc2l6ZSA9IG1heF9zZW5kX3dyICsgSVNFUl9RUF9NQVhfUkVDVl9EVE9TO1xuIFx0aWJfY29ubi1cdTAwM2VjcSA9IGliX2NxX3Bvb2xfZ2V0KGliX2RldiwgY3Ffc2l6ZSwgLTEsIElCX1BPTExfU09GVElSUSk7XG5AQCAtNTg5LDcgKzU4OCw3IEBAIHN0YXRpYyB2b2lkIGlzZXJfcm91dGVfaGFuZGxlcihzdHJ1Y3QgcmRtYV9jbV9pZCAqY21hX2lkKVxuIFx0XHRnb3RvIGZhaWx1cmU7XG4gXG4gXHRtZW1zZXQoXHUwMDI2Y29ubl9wYXJhbSwgMCwgc2l6ZW9mIGNvbm5fcGFyYW0pO1xuLVx0Y29ubl9wYXJhbS5yZXNwb25kZXJfcmVzb3VyY2VzID0gaWJfZGV2LVx1MDAzZWF0dHJzLm1heF9xcF9yZF9hdG9tO1xuK1x0Y29ubl9wYXJhbS5yZXNwb25kZXJfcmVzb3VyY2VzID0gbWluKGliX2Rldi1cdTAwM2VhdHRycy5tYXhfcXBfcmRfYXRvbSwgVThfTUFYKTtcbiBcdGNvbm5fcGFyYW0uaW5pdGlhdG9yX2RlcHRoID0gMTtcbiBcdGNvbm5fcGFyYW0ucmV0cnlfY291bnQgPSA3O1xuIFx0Y29ubl9wYXJhbS5ybnJfcmV0cnlfY291bnQgPSA2O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvaWJfaXNlcnQuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvaWJfaXNlcnQuY1xuaW5kZXggMTAxNWE1MWY3NTBhZjQuLjQ2OTE4NDViZjgxNWY5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VydC9pYl9pc2VydC5jXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXJ0L2liX2lzZXJ0LmNcbkBAIC0yMTQsOSArMjE0LDkgQEAgaXNlcnRfY3JlYXRlX2RldmljZV9pYl9yZXMoc3RydWN0IGlzZXJ0X2RldmljZSAqZGV2aWNlKVxuIFx0c3RydWN0IGliX2RldmljZSAqaWJfZGV2ID0gZGV2aWNlLVx1MDAzZWliX2RldmljZTtcbiBcdGludCByZXQ7XG4gXG4tXHRpc2VydF9kYmcoXCJkZXZhdHRyLVx1MDAzZW1heF9zZW5kX3NnZTogJWQgZGV2YXR0ci1cdTAwM2VtYXhfcmVjdl9zZ2UgJWRcXG5cIixcbitcdGlzZXJ0X2RiZyhcImRldmF0dHItXHUwMDNlbWF4X3NlbmRfc2dlOiAldSBkZXZhdHRyLVx1MDAzZW1heF9yZWN2X3NnZSAldVxcblwiLFxuIFx0XHQgIGliX2Rldi1cdTAwM2VhdHRycy5tYXhfc2VuZF9zZ2UsIGliX2Rldi1cdTAwM2VhdHRycy5tYXhfcmVjdl9zZ2UpO1xuLVx0aXNlcnRfZGJnKFwiZGV2YXR0ci1cdTAwM2VtYXhfc2dlX3JkOiAlZFxcblwiLCBpYl9kZXYtXHUwMDNlYXR0cnMubWF4X3NnZV9yZCk7XG4rXHRpc2VydF9kYmcoXCJkZXZhdHRyLVx1MDAzZW1heF9zZ2VfcmQ6ICV1XFxuXCIsIGliX2Rldi1cdTAwM2VhdHRycy5tYXhfc2dlX3JkKTtcbiBcbiBcdGRldmljZS1cdTAwM2VwZCA9IGliX2FsbG9jX3BkKGliX2RldiwgMCk7XG4gXHRpZiAoSVNfRVJSKGRldmljZS1cdTAwM2VwZCkpIHtcbkBAIC0zODEsOCArMzgxLDcgQEAgaXNlcnRfc2V0X25lZ29fcGFyYW1zKHN0cnVjdCBpc2VydF9jb25uICppc2VydF9jb25uLFxuIFx0c3RydWN0IGliX2RldmljZV9hdHRyICphdHRyID0gXHUwMDI2aXNlcnRfY29ubi1cdTAwM2VkZXZpY2UtXHUwMDNlaWJfZGV2aWNlLVx1MDAzZWF0dHJzO1xuIFxuIFx0LyogU2V0IG1heCBpbmZsaWdodCBSRE1BIFJFQUQgcmVxdWVzdHMgKi9cbi1cdGlzZXJ0X2Nvbm4tXHUwMDNlaW5pdGlhdG9yX2RlcHRoID0gbWluX3QodTgsIHBhcmFtLVx1MDAzZWluaXRpYXRvcl9kZXB0aCxcbi1cdFx0XHRcdGF0dHItXHUwMDNlbWF4X3FwX2luaXRfcmRfYXRvbSk7XG4rXHRpc2VydF9jb25uLVx1MDAzZWluaXRpYXRvcl9kZXB0aCA9IG1pbihwYXJhbS1cdTAwM2Vpbml0aWF0b3JfZGVwdGgsIGF0dHItXHUwMDNlbWF4X3FwX2luaXRfcmRfYXRvbSk7XG4gXHRpc2VydF9kYmcoXCJVc2luZyBpbml0aWF0b3JfZGVwdGg6ICV1XFxuXCIsIGlzZXJ0X2Nvbm4tXHUwMDNlaW5pdGlhdG9yX2RlcHRoKTtcbiBcbiBcdGlmIChwYXJhbS1cdTAwM2Vwcml2YXRlX2RhdGEpIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvcnRycy1jbHQuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9ydHJzLWNsdC5jXG5pbmRleCBlMzUxNTUyNzMzZGYyMy4uODBiMDg2OTdmOTZiNTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvcnRycy1jbHQuY1xuKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtY2x0LmNcbkBAIC0xNjgxLDggKzE2ODEsNyBAQCBzdGF0aWMgaW50IGNyZWF0ZV9jb25fY3FfcXAoc3RydWN0IHJ0cnNfY2x0X2NvbiAqY29uKVxuIFx0XHQgKiArIDIgZm9yIGRyYWluIGFuZCBoZWFydGJlYXRcbiBcdFx0ICogaW4gY2FzZSBxcCBnZXRzIGludG8gZXJyb3Igc3RhdGUuXG4gXHRcdCAqL1xuLVx0XHRtYXhfc2VuZF93ciA9XG4tXHRcdFx0bWluX3QoaW50LCB3cl9saW1pdCwgU0VSVklDRV9DT05fUVVFVUVfREVQVEggKiAyICsgMik7XG4rXHRcdG1heF9zZW5kX3dyID0gbWluKHdyX2xpbWl0LCBTRVJWSUNFX0NPTl9RVUVVRV9ERVBUSCAqIDIgKyAyKTtcbiBcdFx0bWF4X3JlY3Zfd3IgPSBtYXhfc2VuZF93cjtcbiBcdH0gZWxzZSB7XG4gXHRcdC8qXG5AQCAtMTY5OCwxMSArMTY5Nyw5IEBAIHN0YXRpYyBpbnQgY3JlYXRlX2Nvbl9jcV9xcChzdHJ1Y3QgcnRyc19jbHRfY29uICpjb24pXG4gXHRcdHdyX2xpbWl0ID0gY2x0X3BhdGgtXHUwMDNlcy5kZXYtXHUwMDNlaWJfZGV2LVx1MDAzZWF0dHJzLm1heF9xcF93cjtcbiBcdFx0LyogU2hhcmVkIGJldHdlZW4gY29ubmVjdGlvbnMgKi9cbiBcdFx0Y2x0X3BhdGgtXHUwMDNlcy5kZXZfcmVmKys7XG4tXHRcdG1heF9zZW5kX3dyID0gbWluX3QoaW50LCB3cl9saW1pdCxcbi1cdFx0XHQgICAgICAvKiBRRCAqIChSRVEgKyBSU1AgKyBGUiBSRUdTIG9yIElOVlMpICsgZHJhaW4gKi9cbi1cdFx0XHQgICAgICBjbHRfcGF0aC1cdTAwM2VxdWV1ZV9kZXB0aCAqIDQgKyAxKTtcbi1cdFx0bWF4X3JlY3Zfd3IgPSBtaW5fdChpbnQsIHdyX2xpbWl0LFxuLVx0XHRcdCAgICAgIGNsdF9wYXRoLVx1MDAzZXF1ZXVlX2RlcHRoICogMyArIDEpO1xuK1x0XHQvKiBRRCAqIChSRVEgKyBSU1AgKyBGUiBSRUdTIG9yIElOVlMpICsgZHJhaW4gKi9cbitcdFx0bWF4X3NlbmRfd3IgPSBtaW4od3JfbGltaXQsIGNsdF9wYXRoLVx1MDAzZXF1ZXVlX2RlcHRoICogNCArIDEpO1xuK1x0XHRtYXhfcmVjdl93ciA9IG1pbih3cl9saW1pdCwgY2x0X3BhdGgtXHUwMDNlcXVldWVfZGVwdGggKiAzICsgMSk7XG4gXHRcdG1heF9zZW5kX3NnZSA9IDI7XG4gXHR9XG4gXHRhdG9taWNfc2V0KFx1MDAyNmNvbi1cdTAwM2VjLnNxX3dyX2F2YWlsLCBtYXhfc2VuZF93cik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtc3J2LmMgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvcnRycy1zcnYuY1xuaW5kZXggNjQ4MmFkODU5YmQxMDguLmY1YTY4OTAyMzViY2M0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtc3J2LmNcbisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9ydHJzLXNydi5jXG5AQCAtMTczMSwyMSArMTczMSwxNiBAQCBzdGF0aWMgaW50IGNyZWF0ZV9jb24oc3RydWN0IHJ0cnNfc3J2X3BhdGggKnNydl9wYXRoLFxuIFx0XHQgKiBBbGwgcmVjZWl2ZSBhbmQgYWxsIHNlbmQgKGVhY2ggcmVxdWlyaW5nIGludmFsaWRhdGUpXG4gXHRcdCAqICsgMiBmb3IgZHJhaW4gYW5kIGhlYXJ0YmVhdFxuIFx0XHQgKi9cbi1cdFx0bWF4X3NlbmRfd3IgPSBtaW5fdChpbnQsIHdyX2xpbWl0LFxuLVx0XHRcdFx0ICAgIFNFUlZJQ0VfQ09OX1FVRVVFX0RFUFRIICogMiArIDIpO1xuK1x0XHRtYXhfc2VuZF93ciA9IG1pbih3cl9saW1pdCwgU0VSVklDRV9DT05fUVVFVUVfREVQVEggKiAyICsgMik7XG4gXHRcdG1heF9yZWN2X3dyID0gbWF4X3NlbmRfd3I7XG4gXHRcdHMtXHUwMDNlc2lnbmFsX2ludGVydmFsID0gbWluX25vdF96ZXJvKHNydi1cdTAwM2VxdWV1ZV9kZXB0aCxcbiBcdFx0XHRcdFx0XHQgIChzaXplX3QpU0VSVklDRV9DT05fUVVFVUVfREVQVEgpO1xuIFx0fSBlbHNlIHtcbiBcdFx0Lyogd2hlbiBhbHdheXNfaW52bGFpZGF0ZSBlbmFsYmVkLCB3ZSBuZWVkIGxpbnYrcmludittcitpbW0gKi9cbiBcdFx0aWYgKGFsd2F5c19pbnZhbGlkYXRlKVxuLVx0XHRcdG1heF9zZW5kX3dyID1cbi1cdFx0XHRcdG1pbl90KGludCwgd3JfbGltaXQsXG4tXHRcdFx0XHQgICAgICBzcnYtXHUwMDNlcXVldWVfZGVwdGggKiAoMSArIDQpICsgMSk7XG4rXHRcdFx0bWF4X3NlbmRfd3IgPSBtaW4od3JfbGltaXQsIHNydi1cdTAwM2VxdWV1ZV9kZXB0aCAqICgxICsgNCkgKyAxKTtcbiBcdFx0ZWxzZVxuLVx0XHRcdG1heF9zZW5kX3dyID1cbi1cdFx0XHRcdG1pbl90KGludCwgd3JfbGltaXQsXG4tXHRcdFx0XHQgICAgICBzcnYtXHUwMDNlcXVldWVfZGVwdGggKiAoMSArIDIpICsgMSk7XG4rXHRcdFx0bWF4X3NlbmRfd3IgPSBtaW4od3JfbGltaXQsIHNydi1cdTAwM2VxdWV1ZV9kZXB0aCAqICgxICsgMikgKyAxKTtcbiBcbiBcdFx0bWF4X3JlY3Zfd3IgPSBzcnYtXHUwMDNlcXVldWVfZGVwdGggKyAxO1xuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL2liX3NycC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnAvaWJfc3JwLmNcbmluZGV4IGFjYmQ3ODdkZTI2NWI1Li4wY2FlYmJjMjgxMGZmMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL2liX3NycC5jXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycC9pYl9zcnAuY1xuQEAgLTU1Nyw3ICs1NTcsNyBAQCBzdGF0aWMgaW50IHNycF9jcmVhdGVfY2hfaWIoc3RydWN0IHNycF9yZG1hX2NoICpjaClcbiBcdGluaXRfYXR0ci1cdTAwM2VjYXAubWF4X3NlbmRfd3IgICAgID0gbSAqIHRhcmdldC1cdTAwM2VxdWV1ZV9zaXplO1xuIFx0aW5pdF9hdHRyLVx1MDAzZWNhcC5tYXhfcmVjdl93ciAgICAgPSB0YXJnZXQtXHUwMDNlcXVldWVfc2l6ZSArIDE7XG4gXHRpbml0X2F0dHItXHUwMDNlY2FwLm1heF9yZWN2X3NnZSAgICA9IDE7XG4tXHRpbml0X2F0dHItXHUwMDNlY2FwLm1heF9zZW5kX3NnZSAgICA9IG1pbihTUlBfTUFYX1NHRSwgYXR0ci1cdTAwM2VtYXhfc2VuZF9zZ2UpO1xuK1x0aW5pdF9hdHRyLVx1MDAzZWNhcC5tYXhfc2VuZF9zZ2UgICAgPSBtaW4oYXR0ci1cdTAwM2VtYXhfc2VuZF9zZ2UsIFNSUF9NQVhfU0dFKTtcbiBcdGluaXRfYXR0ci1cdTAwM2VzcV9zaWdfdHlwZSAgICAgICAgID0gSUJfU0lHTkFMX1JFUV9XUjtcbiBcdGluaXRfYXR0ci1cdTAwM2VxcF90eXBlICAgICAgICAgICAgID0gSUJfUVBUX1JDO1xuIFx0aW5pdF9hdHRyLVx1MDAzZXNlbmRfY3EgICAgICAgICAgICAgPSBzZW5kX2NxO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwdC9pYl9zcnB0LmMgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycHQvaWJfc3JwdC5jXG5pbmRleCA5YWVjNWQ4MDExN2YxZi4uYTRlNGZlYmE0YTAyNTMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycHQvaWJfc3JwdC5jXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycHQvaWJfc3JwdC5jXG5AQCAtNzcsOCArNzcsOCBAQCBtb2R1bGVfcGFyYW0oc3JwX21heF9yZXFfc2l6ZSwgaW50LCAwNDQ0KTtcbiBNT0RVTEVfUEFSTV9ERVNDKHNycF9tYXhfcmVxX3NpemUsXG4gXHRcdCBcIk1heGltdW0gc2l6ZSBvZiBTUlAgcmVxdWVzdCBtZXNzYWdlcyBpbiBieXRlcy5cIik7XG4gXG4tc3RhdGljIGludCBzcnB0X3NycV9zaXplID0gREVGQVVMVF9TUlBUX1NSUV9TSVpFO1xuLW1vZHVsZV9wYXJhbShzcnB0X3NycV9zaXplLCBpbnQsIDA0NDQpO1xuK3N0YXRpYyB1bnNpZ25lZCBpbnQgc3JwdF9zcnFfc2l6ZSA9IERFRkFVTFRfU1JQVF9TUlFfU0laRTtcbittb2R1bGVfcGFyYW0oc3JwdF9zcnFfc2l6ZSwgdWludCwgMDQ0NCk7XG4gTU9EVUxFX1BBUk1fREVTQyhzcnB0X3NycV9zaXplLFxuIFx0XHQgXCJTaGFyZWQgcmVjZWl2ZSBxdWV1ZSAoU1JRKSBzaXplLlwiKTtcbiBcbkBAIC00MDUsOCArNDA1LDcgQEAgc3RhdGljIHZvaWQgc3JwdF9nZXRfaW9jKHN0cnVjdCBzcnB0X3BvcnQgKnNwb3J0LCB1MzIgc2xvdCxcbiBcdGlmIChzZGV2LVx1MDAzZXVzZV9zcnEpXG4gXHRcdHNlbmRfcXVldWVfZGVwdGggPSBzZGV2LVx1MDAzZXNycV9zaXplO1xuIFx0ZWxzZVxuLVx0XHRzZW5kX3F1ZXVlX2RlcHRoID0gbWluKE1BWF9TUlBUX1JRX1NJWkUsXG4tXHRcdFx0XHQgICAgICAgc2Rldi1cdTAwM2VkZXZpY2UtXHUwMDNlYXR0cnMubWF4X3FwX3dyKTtcbitcdFx0c2VuZF9xdWV1ZV9kZXB0aCA9IG1pbihzZGV2LVx1MDAzZWRldmljZS1cdTAwM2VhdHRycy5tYXhfcXBfd3IsIE1BWF9TUlBUX1JRX1NJWkUpO1xuIFxuIFx0bWVtc2V0KGlvY3AsIDAsIHNpemVvZigqaW9jcCkpO1xuIFx0c3RyY3B5KGlvY3AtXHUwMDNlaWRfc3RyaW5nLCBTUlBUX0lEX1NUUklORyk7XG5AQCAtMTg1MCw3ICsxODQ5LDcgQEAgc3RhdGljIGludCBzcnB0X2NyZWF0ZV9jaF9pYihzdHJ1Y3Qgc3JwdF9yZG1hX2NoICpjaClcbiBcdHN0cnVjdCBzcnB0X3BvcnQgKnNwb3J0ID0gY2gtXHUwMDNlc3BvcnQ7XG4gXHRzdHJ1Y3Qgc3JwdF9kZXZpY2UgKnNkZXYgPSBzcG9ydC1cdTAwM2VzZGV2O1xuIFx0Y29uc3Qgc3RydWN0IGliX2RldmljZV9hdHRyICphdHRycyA9IFx1MDAyNnNkZXYtXHUwMDNlZGV2aWNlLVx1MDAzZWF0dHJzO1xuLVx0aW50IHNxX3NpemUgPSBzcG9ydC1cdTAwM2Vwb3J0X2F0dHJpYi5zcnBfc3Ffc2l6ZTtcbitcdHUzMiBzcV9zaXplID0gc3BvcnQtXHUwMDNlcG9ydF9hdHRyaWIuc3JwX3NxX3NpemU7XG4gXHRpbnQgaSwgcmV0O1xuIFxuIFx0V0FSTl9PTihjaC1cdTAwM2VycV9zaXplIFx1MDAzYyAxKTtcbkBAIC0xOTExLDEzICsxOTEwLDEzIEBAIHN0YXRpYyBpbnQgc3JwdF9jcmVhdGVfY2hfaWIoc3RydWN0IHNycHRfcmRtYV9jaCAqY2gpXG4gXHRcdGJvb2wgcmV0cnkgPSBzcV9zaXplIFx1MDAzZSBNSU5fU1JQVF9TUV9TSVpFO1xuIFxuIFx0XHRpZiAocmV0cnkpIHtcbi1cdFx0XHRwcl9kZWJ1ZyhcImZhaWxlZCB0byBjcmVhdGUgcXVldWUgcGFpciB3aXRoIHNxX3NpemUgPSAlZCAoJWQpIC0gcmV0cnlpbmdcXG5cIixcbitcdFx0XHRwcl9kZWJ1ZyhcImZhaWxlZCB0byBjcmVhdGUgcXVldWUgcGFpciB3aXRoIHNxX3NpemUgPSAldSAoJWQpIC0gcmV0cnlpbmdcXG5cIixcbiBcdFx0XHRcdCBzcV9zaXplLCByZXQpO1xuIFx0XHRcdGliX2NxX3Bvb2xfcHV0KGNoLVx1MDAzZWNxLCBjaC1cdTAwM2VjcV9zaXplKTtcbiBcdFx0XHRzcV9zaXplID0gbWF4KHNxX3NpemUgLyAyLCBNSU5fU1JQVF9TUV9TSVpFKTtcbiBcdFx0XHRnb3RvIHJldHJ5O1xuIFx0XHR9IGVsc2Uge1xuLVx0XHRcdHByX2VycihcImZhaWxlZCB0byBjcmVhdGUgcXVldWUgcGFpciB3aXRoIHNxX3NpemUgPSAlZCAoJWQpXFxuXCIsXG4rXHRcdFx0cHJfZXJyKFwiZmFpbGVkIHRvIGNyZWF0ZSBxdWV1ZSBwYWlyIHdpdGggc3Ffc2l6ZSA9ICV1ICglZClcXG5cIixcbiBcdFx0XHQgICAgICAgc3Ffc2l6ZSwgcmV0KTtcbiBcdFx0XHRnb3RvIGVycl9kZXN0cm95X2NxO1xuIFx0XHR9XG5AQCAtMTkyNSw3ICsxOTI0LDcgQEAgc3RhdGljIGludCBzcnB0X2NyZWF0ZV9jaF9pYihzdHJ1Y3Qgc3JwdF9yZG1hX2NoICpjaClcbiBcbiBcdGF0b21pY19zZXQoXHUwMDI2Y2gtXHUwMDNlc3Ffd3JfYXZhaWwsIHFwX2luaXQtXHUwMDNlY2FwLm1heF9zZW5kX3dyKTtcbiBcbi1cdHByX2RlYnVnKFwiJXM6IG1heF9jcWU9ICVkIG1heF9zZ2U9ICVkIHNxX3NpemUgPSAlZCBjaD0gJXBcXG5cIixcbitcdHByX2RlYnVnKFwiJXM6IG1heF9jcWU9ICVkIG1heF9zZ2U9ICVkIHNxX3NpemUgPSAldSBjaD0gJXBcXG5cIixcbiBcdFx0IF9fZnVuY19fLCBjaC1cdTAwM2VjcS1cdTAwM2VjcWUsIHFwX2luaXQtXHUwMDNlY2FwLm1heF9zZW5kX3NnZSxcbiBcdFx0IHFwX2luaXQtXHUwMDNlY2FwLm1heF9zZW5kX3dyLCBjaCk7XG4gXG5AQCAtMjI5OCw3ICsyMjk3LDcgQEAgc3RhdGljIGludCBzcnB0X2NtX3JlcV9yZWN2KHN0cnVjdCBzcnB0X2RldmljZSAqY29uc3Qgc2RldixcbiBcdCAqIGRlcHRoIHRvIGF2b2lkIHRoYXQgdGhlIGluaXRpYXRvciBkcml2ZXIgaGFzIHRvIHJlcG9ydCBRVUVVRV9GVUxMXG4gXHQgKiB0byB0aGUgU0NTSSBtaWQtbGF5ZXIuXG4gXHQgKi9cbi1cdGNoLVx1MDAzZXJxX3NpemUgPSBtaW4oTUFYX1NSUFRfUlFfU0laRSwgc2Rldi1cdTAwM2VkZXZpY2UtXHUwMDNlYXR0cnMubWF4X3FwX3dyKTtcbitcdGNoLVx1MDAzZXJxX3NpemUgPSBtaW4oc2Rldi1cdTAwM2VkZXZpY2UtXHUwMDNlYXR0cnMubWF4X3FwX3dyLCBNQVhfU1JQVF9SUV9TSVpFKTtcbiBcdHNwaW5fbG9ja19pbml0KFx1MDAyNmNoLVx1MDAzZXNwaW5sb2NrKTtcbiBcdGNoLVx1MDAzZXN0YXRlID0gQ0hfQ09OTkVDVElORztcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmNoLVx1MDAzZWNtZF93YWl0X2xpc3QpO1xuQEAgLTMxMzYsNyArMzEzNSw3IEBAIHN0YXRpYyBpbnQgc3JwdF9hbGxvY19zcnEoc3RydWN0IHNycHRfZGV2aWNlICpzZGV2KVxuIFx0XHRyZXR1cm4gUFRSX0VSUihzcnEpO1xuIFx0fVxuIFxuLVx0cHJfZGVidWcoXCJjcmVhdGUgU1JRICN3cj0gJWQgbWF4X2FsbG93PSVkIGRldj0gJXNcXG5cIiwgc2Rldi1cdTAwM2VzcnFfc2l6ZSxcbitcdHByX2RlYnVnKFwiY3JlYXRlIFNSUSAjd3I9ICVkIG1heF9hbGxvdz0ldSBkZXY9ICVzXFxuXCIsIHNkZXYtXHUwMDNlc3JxX3NpemUsXG4gXHRcdCBzZGV2LVx1MDAzZWRldmljZS1cdTAwM2VhdHRycy5tYXhfc3JxX3dyLCBkZXZfbmFtZShcdTAwMjZkZXZpY2UtXHUwMDNlZGV2KSk7XG4gXG4gXHRzZGV2LVx1MDAzZXJlcV9idWZfY2FjaGUgPSBzcnB0X2NhY2hlX2dldChzcnBfbWF4X3JlcV9zaXplKTtcbkBAIC0zOTUxLDcgKzM5NTAsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBzcnB0X2luaXRfbW9kdWxlKHZvaWQpXG4gXG4gXHRpZiAoc3JwdF9zcnFfc2l6ZSBcdTAwM2MgTUlOX1NSUFRfU1JRX1NJWkVcbiBcdCAgICB8fCBzcnB0X3NycV9zaXplIFx1MDAzZSBNQVhfU1JQVF9TUlFfU0laRSkge1xuLVx0XHRwcl9lcnIoXCJpbnZhbGlkIHZhbHVlICVkIGZvciBrZXJuZWwgbW9kdWxlIHBhcmFtZXRlciBzcnB0X3NycV9zaXplIC0tIG11c3QgYmUgaW4gdGhlIHJhbmdlIFslZC4uJWRdLlxcblwiLFxuK1x0XHRwcl9lcnIoXCJpbnZhbGlkIHZhbHVlICV1IGZvciBrZXJuZWwgbW9kdWxlIHBhcmFtZXRlciBzcnB0X3NycV9zaXplIC0tIG11c3QgYmUgaW4gdGhlIHJhbmdlIFslZC4uJWRdLlxcblwiLFxuIFx0XHQgICAgICAgc3JwdF9zcnFfc2l6ZSwgTUlOX1NSUFRfU1JRX1NJWkUsIE1BWF9TUlBUX1NSUV9TSVpFKTtcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lL2hvc3QvcmRtYS5jIGIvZHJpdmVycy9udm1lL2hvc3QvcmRtYS5jXG5pbmRleCA2OTA5ZTM1NDI3OTQyNy4uNTZjZDIyOGFmMWQ1N2EgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL252bWUvaG9zdC9yZG1hLmNcbisrKyBiL2RyaXZlcnMvbnZtZS9ob3N0L3JkbWEuY1xuQEAgLTM5NCw4ICszOTQsMTAgQEAgbnZtZV9yZG1hX2ZpbmRfZ2V0X2RldmljZShzdHJ1Y3QgcmRtYV9jbV9pZCAqY21faWQpXG4gXHRcdGdvdG8gb3V0X2ZyZWVfcGQ7XG4gXHR9XG4gXG4tXHRuZGV2LVx1MDAzZW51bV9pbmxpbmVfc2VnbWVudHMgPSBtaW4oTlZNRV9SRE1BX01BWF9JTkxJTkVfU0VHTUVOVFMsXG4tXHRcdFx0XHRcdG5kZXYtXHUwMDNlZGV2LVx1MDAzZWF0dHJzLm1heF9zZW5kX3NnZSAtIDEpO1xuK1x0bmRldi1cdTAwM2VudW1faW5saW5lX3NlZ21lbnRzID0gbmRldi1cdTAwM2VkZXYtXHUwMDNlYXR0cnMubWF4X3NlbmRfc2dlO1xuK1x0aWYgKG5kZXYtXHUwMDNlbnVtX2lubGluZV9zZWdtZW50cylcbitcdFx0bmRldi1cdTAwM2VudW1faW5saW5lX3NlZ21lbnRzLS07XG4rXHRuZGV2LVx1MDAzZW51bV9pbmxpbmVfc2VnbWVudHMgPSBtaW4obmRldi1cdTAwM2VudW1faW5saW5lX3NlZ21lbnRzLCBOVk1FX1JETUFfTUFYX0lOTElORV9TRUdNRU5UUyk7XG4gXHRsaXN0X2FkZChcdTAwMjZuZGV2LVx1MDAzZWVudHJ5LCBcdTAwMjZkZXZpY2VfbGlzdCk7XG4gb3V0X3VubG9jazpcbiBcdG11dGV4X3VubG9jayhcdTAwMjZkZXZpY2VfbGlzdF9tdXRleCk7XG5AQCAtMTg0Nyw3ICsxODQ5LDcgQEAgc3RhdGljIGludCBudm1lX3JkbWFfcm91dGVfcmVzb2x2ZWQoc3RydWN0IG52bWVfcmRtYV9xdWV1ZSAqcXVldWUpXG4gXHRwYXJhbS5xcF9udW0gPSBxdWV1ZS1cdTAwM2VxcC1cdTAwM2VxcF9udW07XG4gXHRwYXJhbS5mbG93X2NvbnRyb2wgPSAxO1xuIFxuLVx0cGFyYW0ucmVzcG9uZGVyX3Jlc291cmNlcyA9IHF1ZXVlLVx1MDAzZWRldmljZS1cdTAwM2VkZXYtXHUwMDNlYXR0cnMubWF4X3FwX3JkX2F0b207XG4rXHRwYXJhbS5yZXNwb25kZXJfcmVzb3VyY2VzID0gbWluKHF1ZXVlLVx1MDAzZWRldmljZS1cdTAwM2VkZXYtXHUwMDNlYXR0cnMubWF4X3FwX3JkX2F0b20sIFU4X01BWCk7XG4gXHQvKiBtYXhpbXVtIHJldHJ5IGNvdW50ICovXG4gXHRwYXJhbS5yZXRyeV9jb3VudCA9IDc7XG4gXHRwYXJhbS5ybnJfcmV0cnlfY291bnQgPSA3O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS90YXJnZXQvcmRtYS5jIGIvZHJpdmVycy9udm1lL3RhcmdldC9yZG1hLmNcbmluZGV4IGFjMjZmNGY3NzRjNGRlLi4xYzMzMmQ2NjIyMmEwYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbnZtZS90YXJnZXQvcmRtYS5jXG4rKysgYi9kcml2ZXJzL252bWUvdGFyZ2V0L3JkbWEuY1xuQEAgLTE1Miw3ICsxNTIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbV9vcHMgc3JxX3NpemVfb3BzID0ge1xuIFx0LmdldCA9IHBhcmFtX2dldF9pbnQsXG4gfTtcbiBcbi1zdGF0aWMgaW50IG52bWV0X3JkbWFfc3JxX3NpemUgPSAxMDI0O1xuK3N0YXRpYyB1bnNpZ25lZCBpbnQgbnZtZXRfcmRtYV9zcnFfc2l6ZSA9IDEwMjQ7XG4gbW9kdWxlX3BhcmFtX2NiKHNycV9zaXplLCBcdTAwMjZzcnFfc2l6ZV9vcHMsIFx1MDAyNm52bWV0X3JkbWFfc3JxX3NpemUsIDA2NDQpO1xuIE1PRFVMRV9QQVJNX0RFU0Moc3JxX3NpemUsIFwic2V0IFNoYXJlZCBSZWNlaXZlIFF1ZXVlIChTUlEpIHNpemUsIHNob3VsZCBcdTAwM2U9IDI1NiAoZGVmYXVsdDogMTAyNClcIik7XG4gXG5AQCAtMTE5Nyw3ICsxMTk3LDcgQEAgbnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2Uoc3RydWN0IHJkbWFfY21faWQgKmNtX2lkKVxuIFx0c3RydWN0IG52bWV0X3BvcnQgKm5wb3J0ID0gcG9ydC1cdTAwM2VucG9ydDtcbiBcdHN0cnVjdCBudm1ldF9yZG1hX2RldmljZSAqbmRldjtcbiBcdGludCBpbmxpbmVfcGFnZV9jb3VudDtcbi1cdGludCBpbmxpbmVfc2dlX2NvdW50O1xuK1x0dTMyIGlubGluZV9zZ2VfY291bnQ7XG4gXHRpbnQgcmV0O1xuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZkZXZpY2VfbGlzdF9tdXRleCk7XG5AQCAtMTIxMyw3ICsxMjEzLDkgQEAgbnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2Uoc3RydWN0IHJkbWFfY21faWQgKmNtX2lkKVxuIFxuIFx0aW5saW5lX3BhZ2VfY291bnQgPSBudW1fcGFnZXMobnBvcnQtXHUwMDNlaW5saW5lX2RhdGFfc2l6ZSk7XG4gXHRpbmxpbmVfc2dlX2NvdW50ID0gbWF4KGNtX2lkLVx1MDAzZWRldmljZS1cdTAwM2VhdHRycy5tYXhfc2dlX3JkLFxuLVx0XHRcdFx0Y21faWQtXHUwMDNlZGV2aWNlLVx1MDAzZWF0dHJzLm1heF9yZWN2X3NnZSkgLSAxO1xuK1x0XHRcdFx0Y21faWQtXHUwMDNlZGV2aWNlLVx1MDAzZWF0dHJzLm1heF9yZWN2X3NnZSk7XG4rXHRpZiAoaW5saW5lX3NnZV9jb3VudClcbitcdFx0aW5saW5lX3NnZV9jb3VudC0tO1xuIFx0aWYgKGlubGluZV9wYWdlX2NvdW50IFx1MDAzZSBpbmxpbmVfc2dlX2NvdW50KSB7XG4gXHRcdHByX3dhcm4oXCJpbmxpbmVfZGF0YV9zaXplICVkIGNhbm5vdCBiZSBzdXBwb3J0ZWQgYnkgZGV2aWNlICVzLiBSZWR1Y2luZyB0byAlbHUuXFxuXCIsXG4gXHRcdFx0bnBvcnQtXHUwMDNlaW5saW5lX2RhdGFfc2l6ZSwgY21faWQtXHUwMDNlZGV2aWNlLVx1MDAzZW5hbWUsXG5AQCAtMTU1Myw4ICsxNTU1LDkgQEAgc3RhdGljIGludCBudm1ldF9yZG1hX2NtX2FjY2VwdChzdHJ1Y3QgcmRtYV9jbV9pZCAqY21faWQsXG4gXG4gXHRwYXJhbS5ybnJfcmV0cnlfY291bnQgPSA3O1xuIFx0cGFyYW0uZmxvd19jb250cm9sID0gMTtcbi1cdHBhcmFtLmluaXRpYXRvcl9kZXB0aCA9IG1pbl90KHU4LCBwLVx1MDAzZWluaXRpYXRvcl9kZXB0aCxcbi1cdFx0cXVldWUtXHUwMDNlZGV2LVx1MDAzZWRldmljZS1cdTAwM2VhdHRycy5tYXhfcXBfaW5pdF9yZF9hdG9tKTtcbitcdHBhcmFtLmluaXRpYXRvcl9kZXB0aCA9IG1pbjMocC1cdTAwM2Vpbml0aWF0b3JfZGVwdGgsXG4rXHRcdFx0XHQgICAgIHF1ZXVlLVx1MDAzZWRldi1cdTAwM2VkZXZpY2UtXHUwMDNlYXR0cnMubWF4X3FwX2luaXRfcmRfYXRvbSxcbitcdFx0XHRcdCAgICAgVThfTUFYKTtcbiBcdHBhcmFtLnByaXZhdGVfZGF0YSA9IFx1MDAyNnByaXY7XG4gXHRwYXJhbS5wcml2YXRlX2RhdGFfbGVuID0gc2l6ZW9mKHByaXYpO1xuIFx0cHJpdi5yZWNmbXQgPSBjcHVfdG9fbGUxNihOVk1FX1JETUFfQ01fRk1UXzFfMCk7XG5kaWZmIC0tZ2l0IGEvZnMvc21iL3NtYmRpcmVjdC9hY2NlcHQuYyBiL2ZzL3NtYi9zbWJkaXJlY3QvYWNjZXB0LmNcbmluZGV4IDUyOTc0MDAwNTgzODVlLi40NGI2ODFhMjA3MjUzNiAxMDA2NDRcbi0tLSBhL2ZzL3NtYi9zbWJkaXJlY3QvYWNjZXB0LmNcbisrKyBiL2ZzL3NtYi9zbWJkaXJlY3QvYWNjZXB0LmNcbkBAIC0zMiw4ICszMiw5IEBAIGludCBzbWJkaXJlY3RfYWNjZXB0X2Nvbm5lY3RfcmVxdWVzdChzdHJ1Y3Qgc21iZGlyZWN0X3NvY2tldCAqc2MsXG4gXHQvKlxuIFx0ICogRmlyc3Qgc2V0IHdoYXQgdGhlIHdlIGFzIHNlcnZlciBhcmUgYWJsZSB0byBzdXBwb3J0XG4gXHQgKi9cbi1cdHNwLVx1MDAzZWluaXRpYXRvcl9kZXB0aCA9IG1pbl90KHU4LCBzcC1cdTAwM2Vpbml0aWF0b3JfZGVwdGgsXG4tXHRcdFx0XHQgICAgc2MtXHUwMDNlaWIuZGV2LVx1MDAzZWF0dHJzLm1heF9xcF9yZF9hdG9tKTtcbitcdHNwLVx1MDAzZWluaXRpYXRvcl9kZXB0aCA9IG1pbjMoc3AtXHUwMDNlaW5pdGlhdG9yX2RlcHRoLFxuK1x0XHRcdFx0ICAgc2MtXHUwMDNlaWIuZGV2LVx1MDAzZWF0dHJzLm1heF9xcF9yZF9hdG9tLFxuK1x0XHRcdFx0ICAgVThfTUFYKTtcbiBcbiBcdHBlZXJfaW5pdGlhdG9yX2RlcHRoID0gcGFyYW0tXHUwMDNlaW5pdGlhdG9yX2RlcHRoO1xuIFx0cGVlcl9yZXNwb25kZXJfcmVzb3VyY2VzID0gcGFyYW0tXHUwMDNlcmVzcG9uZGVyX3Jlc291cmNlcztcbmRpZmYgLS1naXQgYS9mcy9zbWIvc21iZGlyZWN0L2Nvbm5lY3QuYyBiL2ZzL3NtYi9zbWJkaXJlY3QvY29ubmVjdC5jXG5pbmRleCBjZDcyNmIzOTlhZmVjYi4uMzRhM2U3MmMzOGZiYmEgMTAwNjQ0XG4tLS0gYS9mcy9zbWIvc21iZGlyZWN0L2Nvbm5lY3QuY1xuKysrIGIvZnMvc21iL3NtYmRpcmVjdC9jb25uZWN0LmNcbkBAIC0xODIsOCArMTgyLDkgQEAgc3RhdGljIGludCBzbWJkaXJlY3RfY29ubmVjdF9yZG1hX2Nvbm5lY3Qoc3RydWN0IHNtYmRpcmVjdF9zb2NrZXQgKnNjKVxuIFx0aWYgKHNjLVx1MDAzZWliLmRldi1cdTAwM2VhdHRycy5rZXJuZWxfY2FwX2ZsYWdzIFx1MDAyNiBJQktfU0dfR0FQU19SRUcpXG4gXHRcdHNjLVx1MDAzZW1yX2lvLnR5cGUgPSBJQl9NUl9UWVBFX1NHX0dBUFM7XG4gXG4tXHRzcC1cdTAwM2VyZXNwb25kZXJfcmVzb3VyY2VzID0gbWluX3QodTgsIHNwLVx1MDAzZXJlc3BvbmRlcl9yZXNvdXJjZXMsXG4tXHRcdFx0XHRcdHNjLVx1MDAzZWliLmRldi1cdTAwM2VhdHRycy5tYXhfcXBfcmRfYXRvbSk7XG4rXHRzcC1cdTAwM2VyZXNwb25kZXJfcmVzb3VyY2VzID0gbWluMyhzcC1cdTAwM2VyZXNwb25kZXJfcmVzb3VyY2VzLFxuK1x0XHRcdFx0ICAgICAgIHNjLVx1MDAzZWliLmRldi1cdTAwM2VhdHRycy5tYXhfcXBfcmRfYXRvbSxcbitcdFx0XHRcdCAgICAgICBVOF9NQVgpO1xuIFx0c21iZGlyZWN0X2xvZ19yZG1hX21yKHNjLCBTTUJESVJFQ1RfTE9HX0lORk8sXG4gXHRcdFwicmVzcG9uZGVyX3Jlc291cmNlcz0lZFxcblwiLFxuIFx0XHRzcC1cdTAwM2VyZXNwb25kZXJfcmVzb3VyY2VzKTtcbmRpZmYgLS1naXQgYS9mcy9zbWIvc21iZGlyZWN0L2Nvbm5lY3Rpb24uYyBiL2ZzL3NtYi9zbWJkaXJlY3QvY29ubmVjdGlvbi5jXG5pbmRleCA4YWRmNTgwOTc1MzQ0Yi4uNjkwYWNiODRlMWI1OTEgMTAwNjQ0XG4tLS0gYS9mcy9zbWIvc21iZGlyZWN0L2Nvbm5lY3Rpb24uY1xuKysrIGIvZnMvc21iL3NtYmRpcmVjdC9jb25uZWN0aW9uLmNcbkBAIC0yODcsNyArMjg3LDcgQEAgaW50IHNtYmRpcmVjdF9jb25uZWN0aW9uX2NyZWF0ZV9xcChzdHJ1Y3Qgc21iZGlyZWN0X3NvY2tldCAqc2MpXG4gXHQgICAgcXBfY2FwLm1heF9zZW5kX3dyIFx1MDAzZSBzYy1cdTAwM2VpYi5kZXYtXHUwMDNlYXR0cnMubWF4X3FwX3dyKSB7XG4gXHRcdHByX2VycihcIlBvc3NpYmxlIENRRSBvdmVycnVuOiBtYXhfc2VuZF93ciAlZFxcblwiLFxuIFx0XHQgICAgICAgcXBfY2FwLm1heF9zZW5kX3dyKTtcbi1cdFx0cHJfZXJyKFwiZGV2aWNlICUuKnMgcmVwb3J0aW5nIG1heF9jcWUgJWQgbWF4X3FwX3dyICVkXFxuXCIsXG4rXHRcdHByX2VycihcImRldmljZSAlLipzIHJlcG9ydGluZyBtYXhfY3FlICV1IG1heF9xcF93ciAldVxcblwiLFxuIFx0XHQgICAgICAgSUJfREVWSUNFX05BTUVfTUFYLFxuIFx0XHQgICAgICAgc2MtXHUwMDNlaWIuZGV2LVx1MDAzZW5hbWUsXG4gXHRcdCAgICAgICBzYy1cdTAwM2VpYi5kZXYtXHUwMDNlYXR0cnMubWF4X2NxZSxcbkBAIC0zMDIsNyArMzAyLDcgQEAgaW50IHNtYmRpcmVjdF9jb25uZWN0aW9uX2NyZWF0ZV9xcChzdHJ1Y3Qgc21iZGlyZWN0X3NvY2tldCAqc2MpXG4gXHQgICAgIG1heF9zZW5kX3dyIFx1MDAzZT0gc2MtXHUwMDNlaWIuZGV2LVx1MDAzZWF0dHJzLm1heF9xcF93cikpIHtcbiBcdFx0cHJfZXJyKFwiUG9zc2libGUgQ1FFIG92ZXJydW46IHJkbWFfc2VuZF93ciAlZCArIG1heF9zZW5kX3dyICVkID0gJWRcXG5cIixcbiBcdFx0ICAgICAgIHJkbWFfc2VuZF93ciwgcXBfY2FwLm1heF9zZW5kX3dyLCBtYXhfc2VuZF93cik7XG4tXHRcdHByX2VycihcImRldmljZSAlLipzIHJlcG9ydGluZyBtYXhfY3FlICVkIG1heF9xcF93ciAlZFxcblwiLFxuK1x0XHRwcl9lcnIoXCJkZXZpY2UgJS4qcyByZXBvcnRpbmcgbWF4X2NxZSAldSBtYXhfcXBfd3IgJXVcXG5cIixcbiBcdFx0ICAgICAgIElCX0RFVklDRV9OQU1FX01BWCxcbiBcdFx0ICAgICAgIHNjLVx1MDAzZWliLmRldi1cdTAwM2VuYW1lLFxuIFx0XHQgICAgICAgc2MtXHUwMDNlaWIuZGV2LVx1MDAzZWF0dHJzLm1heF9jcWUsXG5AQCAtMzE2LDcgKzMxNiw3IEBAIGludCBzbWJkaXJlY3RfY29ubmVjdGlvbl9jcmVhdGVfcXAoc3RydWN0IHNtYmRpcmVjdF9zb2NrZXQgKnNjKVxuIFx0ICAgIHFwX2NhcC5tYXhfcmVjdl93ciBcdTAwM2Ugc2MtXHUwMDNlaWIuZGV2LVx1MDAzZWF0dHJzLm1heF9xcF93cikge1xuIFx0XHRwcl9lcnIoXCJQb3NzaWJsZSBDUUUgb3ZlcnJ1bjogbWF4X3JlY3Zfd3IgJWRcXG5cIixcbiBcdFx0ICAgICAgIHFwX2NhcC5tYXhfcmVjdl93cik7XG4tXHRcdHByX2VycihcImRldmljZSAlLipzIHJlcG9ydGluZyBtYXhfY3FlICVkIG1heF9xcF93ciAlZFxcblwiLFxuK1x0XHRwcl9lcnIoXCJkZXZpY2UgJS4qcyByZXBvcnRpbmcgbWF4X2NxZSAldSBtYXhfcXBfd3IgJXVcXG5cIixcbiBcdFx0ICAgICAgIElCX0RFVklDRV9OQU1FX01BWCxcbiBcdFx0ICAgICAgIHNjLVx1MDAzZWliLmRldi1cdTAwM2VuYW1lLFxuIFx0XHQgICAgICAgc2MtXHUwMDNlaWIuZGV2LVx1MDAzZWF0dHJzLm1heF9jcWUsXG5AQCAtMzI4LDcgKzMyOCw3IEBAIGludCBzbWJkaXJlY3RfY29ubmVjdGlvbl9jcmVhdGVfcXAoc3RydWN0IHNtYmRpcmVjdF9zb2NrZXQgKnNjKVxuIFxuIFx0aWYgKHFwX2NhcC5tYXhfc2VuZF9zZ2UgXHUwMDNlIHNjLVx1MDAzZWliLmRldi1cdTAwM2VhdHRycy5tYXhfc2VuZF9zZ2UgfHxcbiBcdCAgICBxcF9jYXAubWF4X3JlY3Zfc2dlIFx1MDAzZSBzYy1cdTAwM2VpYi5kZXYtXHUwMDNlYXR0cnMubWF4X3JlY3Zfc2dlKSB7XG4tXHRcdHByX2VycihcImRldmljZSAlLipzIG1heF9zZW5kX3NnZS9tYXhfcmVjdl9zZ2UgPSAlZC8lZCB0b28gc21hbGxcXG5cIixcbitcdFx0cHJfZXJyKFwiZGV2aWNlICUuKnMgbWF4X3NlbmRfc2dlL21heF9yZWN2X3NnZSA9ICV1LyV1IHRvbyBzbWFsbFxcblwiLFxuIFx0XHQgICAgICAgSUJfREVWSUNFX05BTUVfTUFYLFxuIFx0XHQgICAgICAgc2MtXHUwMDNlaWIuZGV2LVx1MDAzZW5hbWUsXG4gXHRcdCAgICAgICBzYy1cdTAwM2VpYi5kZXYtXHUwMDNlYXR0cnMubWF4X3NlbmRfc2dlLFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc3VucnBjL3N2Y19yZG1hLmggYi9pbmNsdWRlL2xpbnV4L3N1bnJwYy9zdmNfcmRtYS5oXG5pbmRleCBkZjZlMDhhYWFkNTcwOS4uMjE3ZjAwMGJlNWQ2ZTIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3N1bnJwYy9zdmNfcmRtYS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3N1bnJwYy9zdmNfcmRtYS5oXG5AQCAtNzgsOCArNzgsOCBAQCBzdHJ1Y3Qgc3ZjeHBydF9yZG1hIHtcbiBcdHN0cnVjdCByZG1hX2NtX2lkICAgICpzY19jbV9pZDtcdFx0LyogUkRNQSBjb25uZWN0aW9uIGlkICovXG4gXHRzdHJ1Y3QgbGlzdF9oZWFkICAgICBzY19hY2NlcHRfcTtcdC8qIENvbm4uIHdhaXRpbmcgYWNjZXB0ICovXG4gXHRzdHJ1Y3QgcnBjcmRtYV9ub3RpZmljYXRpb24gc2Nfcm47XHQvKiByZW1vdmFsIG5vdGlmaWNhdGlvbiAqL1xuLVx0aW50XHRcdCAgICAgc2Nfb3JkO1x0XHQvKiBSRE1BIHJlYWQgbGltaXQgKi9cbi1cdGludCAgICAgICAgICAgICAgICAgIHNjX21heF9zZW5kX3NnZXM7XG4rXHR1MzJcdFx0ICAgICBzY19vcmQ7XHRcdC8qIFJETUEgcmVhZCBsaW1pdCAqL1xuK1x0dW5zaWduZWQgaW50ICAgICAgICAgc2NfbWF4X3NlbmRfc2dlcztcbiBcdGJvb2xcdFx0ICAgICBzY19zbmRfd19pbnY7XHQvKiBPSyB0byB1c2UgU2VuZCBXaXRoIEludmFsaWRhdGUgKi9cbiBcbiBcdGF0b21pY190ICAgICAgICAgICAgIHNjX3NxX2F2YWlsO1x0LyogU1FFcyByZWFkeSB0byBiZSBjb25zdW1lZCAqL1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvcmRtYS9pYl92ZXJicy5oIGIvaW5jbHVkZS9yZG1hL2liX3ZlcmJzLmhcbmluZGV4IDlkZDc2ZjQ4OWEwYmE0Li5iOGIyMjFiNWY1NjQ3MyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvcmRtYS9pYl92ZXJicy5oXG4rKysgYi9pbmNsdWRlL3JkbWEvaWJfdmVyYnMuaFxuQEAgLTQwNiwzNiArNDA2LDM2IEBAIHN0cnVjdCBpYl9kZXZpY2VfYXR0ciB7XG4gXHR1MzJcdFx0XHR2ZW5kb3JfaWQ7XG4gXHR1MzJcdFx0XHR2ZW5kb3JfcGFydF9pZDtcbiBcdHUzMlx0XHRcdGh3X3Zlcjtcbi1cdGludFx0XHRcdG1heF9xcDtcbi1cdGludFx0XHRcdG1heF9xcF93cjtcbitcdHUzMlx0XHRcdG1heF9xcDtcbitcdHUzMlx0XHRcdG1heF9xcF93cjtcbiBcdHU2NFx0XHRcdGRldmljZV9jYXBfZmxhZ3M7XG4gXHR1NjRcdFx0XHRrZXJuZWxfY2FwX2ZsYWdzO1xuLVx0aW50XHRcdFx0bWF4X3NlbmRfc2dlO1xuLVx0aW50XHRcdFx0bWF4X3JlY3Zfc2dlO1xuLVx0aW50XHRcdFx0bWF4X3NnZV9yZDtcbi1cdGludFx0XHRcdG1heF9jcTtcbi1cdGludFx0XHRcdG1heF9jcWU7XG4tXHRpbnRcdFx0XHRtYXhfbXI7XG4tXHRpbnRcdFx0XHRtYXhfcGQ7XG4tXHRpbnRcdFx0XHRtYXhfcXBfcmRfYXRvbTtcbi1cdGludFx0XHRcdG1heF9lZV9yZF9hdG9tO1xuLVx0aW50XHRcdFx0bWF4X3Jlc19yZF9hdG9tO1xuLVx0aW50XHRcdFx0bWF4X3FwX2luaXRfcmRfYXRvbTtcbi1cdGludFx0XHRcdG1heF9lZV9pbml0X3JkX2F0b207XG4rXHR1MzJcdFx0XHRtYXhfc2VuZF9zZ2U7XG4rXHR1MzJcdFx0XHRtYXhfcmVjdl9zZ2U7XG4rXHR1MzJcdFx0XHRtYXhfc2dlX3JkO1xuK1x0dTMyXHRcdFx0bWF4X2NxO1xuK1x0dTMyXHRcdFx0bWF4X2NxZTtcbitcdHUzMlx0XHRcdG1heF9tcjtcbitcdHUzMlx0XHRcdG1heF9wZDtcbitcdHUzMlx0XHRcdG1heF9xcF9yZF9hdG9tO1xuK1x0dTMyXHRcdFx0bWF4X2VlX3JkX2F0b207XG4rXHR1MzJcdFx0XHRtYXhfcmVzX3JkX2F0b207XG4rXHR1MzJcdFx0XHRtYXhfcXBfaW5pdF9yZF9hdG9tO1xuK1x0dTMyXHRcdFx0bWF4X2VlX2luaXRfcmRfYXRvbTtcbiBcdGVudW0gaWJfYXRvbWljX2NhcFx0YXRvbWljX2NhcDtcbiBcdGVudW0gaWJfYXRvbWljX2NhcFx0bWFza2VkX2F0b21pY19jYXA7XG4tXHRpbnRcdFx0XHRtYXhfZWU7XG4tXHRpbnRcdFx0XHRtYXhfcmRkO1xuLVx0aW50XHRcdFx0bWF4X213O1xuLVx0aW50XHRcdFx0bWF4X3Jhd19pcHY2X3FwO1xuLVx0aW50XHRcdFx0bWF4X3Jhd19ldGh5X3FwO1xuLVx0aW50XHRcdFx0bWF4X21jYXN0X2dycDtcbi1cdGludFx0XHRcdG1heF9tY2FzdF9xcF9hdHRhY2g7XG4tXHRpbnRcdFx0XHRtYXhfdG90YWxfbWNhc3RfcXBfYXR0YWNoO1xuLVx0aW50XHRcdFx0bWF4X2FoO1xuK1x0dTMyXHRcdFx0bWF4X2VlO1xuK1x0dTMyXHRcdFx0bWF4X3JkZDtcbitcdHUzMlx0XHRcdG1heF9tdztcbitcdHUzMlx0XHRcdG1heF9yYXdfaXB2Nl9xcDtcbitcdHUzMlx0XHRcdG1heF9yYXdfZXRoeV9xcDtcbitcdHUzMlx0XHRcdG1heF9tY2FzdF9ncnA7XG4rXHR1MzJcdFx0XHRtYXhfbWNhc3RfcXBfYXR0YWNoO1xuK1x0dTMyXHRcdFx0bWF4X3RvdGFsX21jYXN0X3FwX2F0dGFjaDtcbitcdHUzMlx0XHRcdG1heF9haDtcbiBcdGludFx0XHRcdG1heF9zcnE7XG4tXHRpbnRcdFx0XHRtYXhfc3JxX3dyO1xuLVx0aW50XHRcdFx0bWF4X3NycV9zZ2U7XG4rXHR1MzJcdFx0XHRtYXhfc3JxX3dyO1xuK1x0dTMyXHRcdFx0bWF4X3NycV9zZ2U7XG4gXHR1bnNpZ25lZCBpbnRcdFx0bWF4X2Zhc3RfcmVnX3BhZ2VfbGlzdF9sZW47XG4gXHR1bnNpZ25lZCBpbnRcdFx0bWF4X3BpX2Zhc3RfcmVnX3BhZ2VfbGlzdF9sZW47XG4gXHR1MTZcdFx0XHRtYXhfcGtleXM7XG5kaWZmIC0tZ2l0IGEvbmV0L3Jkcy9pYi5jIGIvbmV0L3Jkcy9pYi5jXG5pbmRleCAzOWY4NzI3MmUwNzFiZi4uYzYyNjg0ZDQyNTljNGYgMTAwNjQ0XG4tLS0gYS9uZXQvcmRzL2liLmNcbisrKyBiL25ldC9yZHMvaWIuY1xuQEAgLTE2MiwxMiArMTYyLDEyIEBAIHN0YXRpYyBpbnQgcmRzX2liX2FkZF9vbmUoc3RydWN0IGliX2RldmljZSAqZGV2aWNlKVxuIFx0XHQgICBJQl9PRFBfU1VQUE9SVF9SRUFEKTtcbiBcbiBcdHJkc19pYmRldi1cdTAwM2VtYXhfMW1fbXJzID0gZGV2aWNlLVx1MDAzZWF0dHJzLm1heF9tciA/XG4tXHRcdG1pbl90KHVuc2lnbmVkIGludCwgKGRldmljZS1cdTAwM2VhdHRycy5tYXhfbXIgLyAyKSxcbi1cdFx0ICAgICAgcmRzX2liX21yXzFtX3Bvb2xfc2l6ZSkgOiByZHNfaWJfbXJfMW1fcG9vbF9zaXplO1xuK1x0XHRtaW4oZGV2aWNlLVx1MDAzZWF0dHJzLm1heF9tciAvIDIsXG4rXHRcdCAgICByZHNfaWJfbXJfMW1fcG9vbF9zaXplKSA6IHJkc19pYl9tcl8xbV9wb29sX3NpemU7XG4gXG4gXHRyZHNfaWJkZXYtXHUwMDNlbWF4XzhrX21ycyA9IGRldmljZS1cdTAwM2VhdHRycy5tYXhfbXIgP1xuLVx0XHRtaW5fdCh1bnNpZ25lZCBpbnQsICgoZGV2aWNlLVx1MDAzZWF0dHJzLm1heF9tciAvIDIpICogUkRTX01SXzhLX1NDQUxFKSxcbi1cdFx0ICAgICAgcmRzX2liX21yXzhrX3Bvb2xfc2l6ZSkgOiByZHNfaWJfbXJfOGtfcG9vbF9zaXplO1xuK1x0XHRtaW4oKGRldmljZS1cdTAwM2VhdHRycy5tYXhfbXIgLyAyKSAqIFJEU19NUl84S19TQ0FMRSxcbitcdFx0ICAgIHJkc19pYl9tcl84a19wb29sX3NpemUpIDogcmRzX2liX21yXzhrX3Bvb2xfc2l6ZTtcbiBcbiBcdHJkc19pYmRldi1cdTAwM2VtYXhfaW5pdGlhdG9yX2RlcHRoID0gZGV2aWNlLVx1MDAzZWF0dHJzLm1heF9xcF9pbml0X3JkX2F0b207XG4gXHRyZHNfaWJkZXYtXHUwMDNlbWF4X3Jlc3BvbmRlcl9yZXNvdXJjZXMgPSBkZXZpY2UtXHUwMDNlYXR0cnMubWF4X3FwX3JkX2F0b207XG5AQCAtMjA0LDcgKzIwNCw3IEBAIHN0YXRpYyBpbnQgcmRzX2liX2FkZF9vbmUoc3RydWN0IGliX2RldmljZSAqZGV2aWNlKVxuIFx0XHRnb3RvIHB1dF9kZXY7XG4gXHR9XG4gXG4tXHRyZHNkZWJ1ZyhcIlJEUy9JQjogbWF4X21yID0gJWQsIG1heF93cnMgPSAlZCwgbWF4X3NnZSA9ICVkLCBtYXhfMW1fbXJzID0gJWQsIG1heF84a19tcnMgPSAlZFxcblwiLFxuK1x0cmRzZGVidWcoXCJSRFMvSUI6IG1heF9tciA9ICV1LCBtYXhfd3JzID0gJWQsIG1heF9zZ2UgPSAlZCwgbWF4XzFtX21ycyA9ICVkLCBtYXhfOGtfbXJzID0gJWRcXG5cIixcbiBcdFx0IGRldmljZS1cdTAwM2VhdHRycy5tYXhfbXIsIHJkc19pYmRldi1cdTAwM2VtYXhfd3JzLCByZHNfaWJkZXYtXHUwMDNlbWF4X3NnZSxcbiBcdFx0IHJkc19pYmRldi1cdTAwM2VtYXhfMW1fbXJzLCByZHNfaWJkZXYtXHUwMDNlbWF4XzhrX21ycyk7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L3Jkcy9pYl9jbS5jIGIvbmV0L3Jkcy9pYl9jbS5jXG5pbmRleCA1NjY3ZjAxNzNiNDdmMi4uMTdlNTg3YzMwMDc2NjMgMTAwNjQ0XG4tLS0gYS9uZXQvcmRzL2liX2NtLmNcbisrKyBiL25ldC9yZHMvaWJfY20uY1xuQEAgLTE3MywxMSArMTczLDExIEBAIHN0YXRpYyB2b2lkIHJkc19pYl9jbV9maWxsX2Nvbm5fcGFyYW0oc3RydWN0IHJkc19jb25uZWN0aW9uICpjb25uLFxuIFxuIFx0bWVtc2V0KGNvbm5fcGFyYW0sIDAsIHNpemVvZihzdHJ1Y3QgcmRtYV9jb25uX3BhcmFtKSk7XG4gXG4tXHRjb25uX3BhcmFtLVx1MDAzZXJlc3BvbmRlcl9yZXNvdXJjZXMgPVxuLVx0XHRtaW5fdCh1MzIsIHJkc19pYmRldi1cdTAwM2VtYXhfcmVzcG9uZGVyX3Jlc291cmNlcywgbWF4X3Jlc3BvbmRlcl9yZXNvdXJjZXMpO1xuLVx0Y29ubl9wYXJhbS1cdTAwM2Vpbml0aWF0b3JfZGVwdGggPVxuLVx0XHRtaW5fdCh1MzIsIHJkc19pYmRldi1cdTAwM2VtYXhfaW5pdGlhdG9yX2RlcHRoLCBtYXhfaW5pdGlhdG9yX2RlcHRoKTtcbi1cdGNvbm5fcGFyYW0tXHUwMDNlcmV0cnlfY291bnQgPSBtaW5fdCh1bnNpZ25lZCBpbnQsIHJkc19pYl9yZXRyeV9jb3VudCwgNyk7XG4rXHRjb25uX3BhcmFtLVx1MDAzZXJlc3BvbmRlcl9yZXNvdXJjZXMgPSBtaW4zKHJkc19pYmRldi1cdTAwM2VtYXhfcmVzcG9uZGVyX3Jlc291cmNlcyxcbitcdFx0XHRcdFx0ICAgICAgIG1heF9yZXNwb25kZXJfcmVzb3VyY2VzLCBVOF9NQVgpO1xuK1x0Y29ubl9wYXJhbS1cdTAwM2Vpbml0aWF0b3JfZGVwdGggPSBtaW4zKHJkc19pYmRldi1cdTAwM2VtYXhfaW5pdGlhdG9yX2RlcHRoLFxuK1x0XHRcdFx0XHQgICBtYXhfaW5pdGlhdG9yX2RlcHRoLCBVOF9NQVgpO1xuK1x0Y29ubl9wYXJhbS1cdTAwM2VyZXRyeV9jb3VudCA9IG1pbihyZHNfaWJfcmV0cnlfY291bnQsIDdVKTtcbiBcdGNvbm5fcGFyYW0tXHUwMDNlcm5yX3JldHJ5X2NvdW50ID0gNztcbiBcbiBcdGlmIChkcCkge1xuZGlmZiAtLWdpdCBhL25ldC9zdW5ycGMveHBydHJkbWEvZnJ3cl9vcHMuYyBiL25ldC9zdW5ycGMveHBydHJkbWEvZnJ3cl9vcHMuY1xuaW5kZXggN2Y3OWEwYTI2MDFlNjUuLmIyZTQzN2FmZTA5ZGFhIDEwMDY0NFxuLS0tIGEvbmV0L3N1bnJwYy94cHJ0cmRtYS9mcndyX29wcy5jXG4rKysgYi9uZXQvc3VucnBjL3hwcnRyZG1hL2Zyd3Jfb3BzLmNcbkBAIC0xNzIsOCArMTcyLDkgQEAgaW50IGZyd3JfbXJfaW5pdChzdHJ1Y3QgcnBjcmRtYV94cHJ0ICpyX3hwcnQsIHN0cnVjdCBycGNyZG1hX21yICptcilcbiBpbnQgZnJ3cl9xdWVyeV9kZXZpY2Uoc3RydWN0IHJwY3JkbWFfZXAgKmVwLCBjb25zdCBzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGliX2RldmljZV9hdHRyICphdHRycyA9IFx1MDAyNmRldmljZS1cdTAwM2VhdHRycztcbi1cdGludCBtYXhfcXBfd3IsIGRlcHRoLCBkZWx0YTtcbiBcdHVuc2lnbmVkIGludCBtYXhfc2dlO1xuK1x0dTMyIG1heF9xcF93cjtcbitcdGludCBkZXB0aCwgZGVsdGE7XG4gXG4gXHRpZiAoIShhdHRycy1cdTAwM2VkZXZpY2VfY2FwX2ZsYWdzIFx1MDAyNiBJQl9ERVZJQ0VfTUVNX01HVF9FWFRFTlNJT05TKSB8fFxuIFx0ICAgIGF0dHJzLVx1MDAzZW1heF9mYXN0X3JlZ19wYWdlX2xpc3RfbGVuID09IDApIHtcbkBAIC0yMjksMTAgKzIzMCwxMCBAQCBpbnQgZnJ3cl9xdWVyeV9kZXZpY2Uoc3RydWN0IHJwY3JkbWFfZXAgKmVwLCBjb25zdCBzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UpXG4gXHR9XG4gXG4gXHRtYXhfcXBfd3IgPSBhdHRycy1cdTAwM2VtYXhfcXBfd3I7XG4rXHRpZiAobWF4X3FwX3dyIFx1MDAzYyBSUENSRE1BX0JBQ0tXQVJEX1dSUyArIDEgKyBSUENSRE1BX01JTl9TTE9UX1RBQkxFKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbiBcdG1heF9xcF93ciAtPSBSUENSRE1BX0JBQ0tXQVJEX1dSUztcbiBcdG1heF9xcF93ciAtPSAxO1xuLVx0aWYgKG1heF9xcF93ciBcdTAwM2MgUlBDUkRNQV9NSU5fU0xPVF9UQUJMRSlcbi1cdFx0cmV0dXJuIC1FTk9NRU07XG4gXHRpZiAoZXAtXHUwMDNlcmVfbWF4X3JlcXVlc3RzIFx1MDAzZSBtYXhfcXBfd3IpXG4gXHRcdGVwLVx1MDAzZXJlX21heF9yZXF1ZXN0cyA9IG1heF9xcF93cjtcbiBcdGVwLVx1MDAzZXJlX2F0dHIuY2FwLm1heF9zZW5kX3dyID0gZXAtXHUwMDNlcmVfbWF4X3JlcXVlc3RzICogZGVwdGg7XG5kaWZmIC0tZ2l0IGEvbmV0L3N1bnJwYy94cHJ0cmRtYS9zdmNfcmRtYV90cmFuc3BvcnQuYyBiL25ldC9zdW5ycGMveHBydHJkbWEvc3ZjX3JkbWFfdHJhbnNwb3J0LmNcbmluZGV4IGYxOGJjNjBkOWY0ZmZhLi5jNzY4Y2RhMmU1NDQ0YSAxMDA2NDRcbi0tLSBhL25ldC9zdW5ycGMveHBydHJkbWEvc3ZjX3JkbWFfdHJhbnNwb3J0LmNcbisrKyBiL25ldC9zdW5ycGMveHBydHJkbWEvc3ZjX3JkbWFfdHJhbnNwb3J0LmNcbkBAIC01NDQsOCArNTQ0LDcgQEAgc3RhdGljIHN0cnVjdCBzdmNfeHBydCAqc3ZjX3JkbWFfYWNjZXB0KHN0cnVjdCBzdmNfeHBydCAqeHBydClcbiBcdHNldF9iaXQoUkRNQVhQUlRfQ09OTl9QRU5ESU5HLCBcdTAwMjZuZXd4cHJ0LVx1MDAzZXNjX2ZsYWdzKTtcbiBcdG1lbXNldChcdTAwMjZjb25uX3BhcmFtLCAwLCBzaXplb2YgY29ubl9wYXJhbSk7XG4gXHRjb25uX3BhcmFtLnJlc3BvbmRlcl9yZXNvdXJjZXMgPSAwO1xuLVx0Y29ubl9wYXJhbS5pbml0aWF0b3JfZGVwdGggPSBtaW5fdChpbnQsIG5ld3hwcnQtXHUwMDNlc2Nfb3JkLFxuLVx0XHRcdFx0XHQgICBkZXYtXHUwMDNlYXR0cnMubWF4X3FwX2luaXRfcmRfYXRvbSk7XG4rXHRjb25uX3BhcmFtLmluaXRpYXRvcl9kZXB0aCA9IG1pbihuZXd4cHJ0LVx1MDAzZXNjX29yZCwgZGV2LVx1MDAzZWF0dHJzLm1heF9xcF9pbml0X3JkX2F0b20pO1xuIFx0aWYgKCFjb25uX3BhcmFtLmluaXRpYXRvcl9kZXB0aCkge1xuIFx0XHRyZXQgPSAtRUlOVkFMO1xuIFx0XHR0cmFjZV9zdmNyZG1hX2luaXRkZXB0aF9lcnIobmV3eHBydCwgcmV0KTtcbkBAIC01NzAsNyArNTY5LDcgQEAgc3RhdGljIHN0cnVjdCBzdmNfeHBydCAqc3ZjX3JkbWFfYWNjZXB0KHN0cnVjdCBzdmNfeHBydCAqeHBydClcbiBcdFx0ZHByaW50ayhcIiAgICBsb2NhbCBhZGRyZXNzICAgOiAlcElTOiV1XFxuXCIsIHNhcCwgcnBjX2dldF9wb3J0KHNhcCkpO1xuIFx0XHRzYXAgPSAoc3RydWN0IHNvY2thZGRyICopXHUwMDI2bmV3eHBydC1cdTAwM2VzY19jbV9pZC1cdTAwM2Vyb3V0ZS5hZGRyLmRzdF9hZGRyO1xuIFx0XHRkcHJpbnRrKFwiICAgIHJlbW90ZSBhZGRyZXNzICA6ICVwSVM6JXVcXG5cIiwgc2FwLCBycGNfZ2V0X3BvcnQoc2FwKSk7XG4tXHRcdGRwcmludGsoXCIgICAgbWF4X3NnZSAgICAgICAgIDogJWRcXG5cIiwgbmV3eHBydC1cdTAwM2VzY19tYXhfc2VuZF9zZ2VzKTtcbitcdFx0ZHByaW50ayhcIiAgICBtYXhfc2dlICAgICAgICAgOiAldVxcblwiLCBuZXd4cHJ0LVx1MDAzZXNjX21heF9zZW5kX3NnZXMpO1xuIFx0XHRkcHJpbnRrKFwiICAgIHNxX2RlcHRoICAgICAgICA6ICVkXFxuXCIsIG5ld3hwcnQtXHUwMDNlc2Nfc3FfZGVwdGgpO1xuIFx0XHRkcHJpbnRrKFwiICAgIHJkbWFfcndfY3R4cyAgICA6ICVkXFxuXCIsIGN0eHRzKTtcbiBcdFx0ZHByaW50ayhcIiAgICBtYXhfcmVxdWVzdHMgICAgOiAlZFxcblwiLCBuZXd4cHJ0LVx1MDAzZXNjX21heF9yZXF1ZXN0cyk7XG5kaWZmIC0tZ2l0IGEvbmV0L3N1bnJwYy94cHJ0cmRtYS92ZXJicy5jIGIvbmV0L3N1bnJwYy94cHJ0cmRtYS92ZXJicy5jXG5pbmRleCBhZWNmOWMwYTE1M2YzNi4uOGVkOWRhNmQyZDJmNzcgMTAwNjQ0XG4tLS0gYS9uZXQvc3VucnBjL3hwcnRyZG1hL3ZlcmJzLmNcbisrKyBiL25ldC9zdW5ycGMveHBydHJkbWEvdmVyYnMuY1xuQEAgLTQ1Myw3ICs0NTMsNyBAQCBzdGF0aWMgaW50IHJwY3JkbWFfZXBfY3JlYXRlKHN0cnVjdCBycGNyZG1hX3hwcnQgKnJfeHBydClcbiBcdC8qIENsaWVudCBvZmZlcnMgUkRNQSBSZWFkIGJ1dCBkb2VzIG5vdCBpbml0aWF0ZSAqL1xuIFx0ZXAtXHUwMDNlcmVfcmVtb3RlX2NtYS5pbml0aWF0b3JfZGVwdGggPSAwO1xuIFx0ZXAtXHUwMDNlcmVfcmVtb3RlX2NtYS5yZXNwb25kZXJfcmVzb3VyY2VzID1cbi1cdFx0bWluX3QoaW50LCBVOF9NQVgsIGRldmljZS1cdTAwM2VhdHRycy5tYXhfcXBfcmRfYXRvbSk7XG4rXHRcdG1pbihkZXZpY2UtXHUwMDNlYXR0cnMubWF4X3FwX3JkX2F0b20sIFU4X01BWCk7XG4gXG4gXHQvKiBMaW1pdCB0cmFuc3BvcnQgcmV0cmllcyBzbyBjbGllbnQgY2FuIGRldGVjdCBzZXJ2ZXJcbiBcdCAqIEdJRCBjaGFuZ2VzIHF1aWNrbHkuIFJQQyBsYXllciBoYW5kbGVzIHJlLWVzdGFibGlzaGluZ1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDY6MjUuMzA5MjYxODc4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ3MDk0OTI0MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUkRNQSBTdWJzeXN0ZW0gVHlwZSBSZWZhY3RvcmluZyBcdTAwMjYgVW5kZXJmbG93IEZpeGVzIC0gV29ydGggRnV6emluZz8qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIG1ha2luZyBzb21lIHByZXR0eSBzaWduaWZpY2FudCB0eXBlIGNoYW5nZXMgaW4gdGhlIFJETUEvSW5maW5pQmFuZCBzdWJzeXN0ZW0uIFNwZWNpZmljYWxseSwgYSBsb3Qgb2YgZmllbGRzIGluIGBzdHJ1Y3QgaWJfZGV2aWNlX2F0dHJgIGFyZSBnb2luZyBmcm9tIGBpbnRgIHRvIGB1MzJgLCB3aGljaCBzZWVtcyBsaWtlIGEgZ29vZCBtb3ZlIGZvciBjb25zaXN0ZW5jeS4gV2UncmUgYWxzbyBzZWVpbmcgdGhlIHVzdWFsIHVwZGF0ZXMgdG8gdXNlIGBtaW4oKWAgaW5zdGVhZCBvZiBgbWluX3QoKWAgYW5kIHRoZSBhc3NvY2lhdGVkIGZvcm1hdCBzdHJpbmcgdXBkYXRlcyAoYCVkYCB0byBgJXVgKS4gU3RhbmRhcmQgc3R1ZmYuXG5cbkJ1dCB3YWl0LCBpcyB0aGlzIGp1c3QgcmVmYWN0b3JpbmcsIG9yIGFyZSB0aGVyZSBmdW5jdGlvbmFsIGltcGxpY2F0aW9ucyB0aGF0IHdhcnJhbnQgZnV6emluZz8gTGV0J3MgZGlnIGluLiBJdCdzIGVzc2VudGlhbGx5IGEgdHlwZSBjaGFuZ2UgYW5kIHVuZGVyZmxvdyBwcmV2ZW50aW9uLCBidXQgdGhlIGRldGFpbHMgYXJlIGltcG9ydGFudC4gTG9va2luZyBhdCB0aGUgZGlmZiwgaXQgc2VlbXMgdGhhdCB0aGVyZSBhcmUgdHdvIHBsYWNlcyB3aGVyZSB0aGVyZSBhcmUgbWVhbmluZ2Z1bCBjaGFuZ2VzOlxuSW4gYG52bWVfcmRtYV9maW5kX2dldF9kZXZpY2VgIGFuZCBgbnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2VgLCB0aGVyZSdzIGEgY29ycmVjdGlvbiB0byBwcmV2ZW50IHVuZGVyZmxvdyBpZiBgbWF4X3NlbmRfc2dlYCBpcyAwLCB3aGljaCBpcyBpbXBvcnRhbnQuXG5BZGRpdGlvbmFsbHksIGluIGBmcndyX3F1ZXJ5X2RldmljZWAsIHRoZSBjaGFuZ2UgcHJldmVudHMgYW4gdW5kZXJmbG93IGluIGBtYXhfcXBfd3JgIHRoYXQgY291bGQgaGF2ZSByZXN1bHRlZCBpbiBlcnJvcnMuXG5cblRoaXMgcGF0Y2ggdG91Y2hlcyBhIGxvdCBvZiBSRE1BIGNvZGU6IHRoZSBjb3JlLCBSWEUsIE5WTWUgb3ZlciBGYWJyaWNzIChSRE1BKSwgU1JQLCBTUlBULCBpU0VSLCBpU0VSVCwgU01CIERpcmVjdCwgUlBDIFJETUEsIGFuZCBSRFMuIEEgbG90IG9mIGNvbm5lY3Rpb25zIGNvdWxkIGJlIGFmZmVjdGVkIGJ5IHRoaXMgcGF0Y2guXG5cblRoZSBwcm9tcHQgc2F5cyB0byByZXR1cm4gXCJXb3J0aEZ1enppbmc9ZmFsc2VcIiBpZiBpdCBvbmx5IGNvbnRhaW5zIG51bWVyaWMgY29uc3RhbnQgb3IgbWFjcm8gY2hhbmdlcy4gVGhpcyBpcyBtb3N0bHkgYSB0eXBlIGNoYW5nZSB3aXRoIHNvbWUgdW5kZXJmbG93IGNoZWNrcy4gSG93ZXZlciwgdGhlcmUgYXJlIHNvbWUgY2hhbmdlcyBpbiBgbnZtZV9yZG1hX2ZpbmRfZ2V0X2RldmljZWAsIGBudm1ldF9yZG1hX2ZpbmRfZ2V0X2RldmljZWAsIGFuZCBgZnJ3cl9xdWVyeV9kZXZpY2VgIGZ1bmN0aW9ucyBhbmQgdGh1cywgYXJlIHdvcnRoIGNvbnNpZGVyaW5nLlxuXG5MZXQncyBzZWU6IGBudm1lX3JkbWFfZmluZF9nZXRfZGV2aWNlYCBhbmQgYG52bWV0X3JkbWFfZmluZF9nZXRfZGV2aWNlYCBhcmUgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IGZ1bmN0aW9ucyB3aXRoaW4gdGhlIE5WTWUtb0YgY29udGV4dCwgYW5kIGBmcndyX3F1ZXJ5X2RldmljZWAgaXMgY2FsbGVkIGR1cmluZyBSUEMgUkRNQSB0cmFuc3BvcnQgc2V0dXAuIENhbiB3ZSBmdXp6IHRoZW0gZWZmZWN0aXZlbHk/IFN5emthbGxlciBoYXMgc29tZSBOVk1lLW9GIGFuZCBSRE1BIHN1cHBvcnQgKHBhcnRpY3VsYXJseSBSWEUpLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZS5cblxuXCJJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoIHRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlwiIFJYRSBpcyBzb2Z0d2FyZSBSRE1BIGFuZCBjYW4gYmUgZXhlY3V0ZWQuIE5WTWUtb0Ygb3ZlciBSRE1BIGNhbiBydW4gd2l0aCBSWEUuIEFuZCBSUEMgUkRNQSBjYW4gcnVuIHdpdGggUlhFLlxuXG5CYXNlZCBvbiB0aGF0LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlc2UgZnVuY3Rpb25zOlxuLSBgbnZtZV9yZG1hX2ZpbmRfZ2V0X2RldmljZWBcbi0gYG52bWV0X3JkbWFfZmluZF9nZXRfZGV2aWNlYFxuLSBgZnJ3cl9xdWVyeV9kZXZpY2VgXG4tIGByeGVfcXBfY2hrX2NhcGBcbi0gYHJ4ZV9xcF9jaGtfYXR0cmBcbi0gYHJ4ZV9zcnFfY2hrX2luaXRgXG4tIGByeGVfc3JxX2Noa19hdHRyYFxuXG5JJ2xsIHZlcmlmeSB0aGVzZSBmdW5jdGlvbnMgZXhpc3QgYW5kIGFyZSByZWFjaGFibGUsIGFuZCB0aGVuIGNvbnNpZGVyIHRoaXMgcGF0Y2ggZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjEwNSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0Njo0MC4wMTg3NTYyMDdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY5NDEyMTI2MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihzdGF0aWMgKT8oaW50fHZvaWR8c3RydWN0IFthLXpBLVowLTlfXSsgXFxcXCopIG52bWVfcmRtYV9maW5kX2dldF9kZXZpY2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ2OjQzLjcxMjg4NjM0N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMzA4OTY5MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipEZWJ1Z2dpbmcgdGhlIE5WTWUtUkRNQSBDb2RlKipcblxuQWxyaWdodCwgc29tZXRoaW5nIGlzbid0IHF1aXRlIHJpZ2h0IHdpdGggdGhpcyBgZ3JlcGAgZXhwcmVzc2lvbi4gSXQncyBqdXN0IG5vdCBnaXZpbmcgbWUgd2hhdCBJIG5lZWQuIFBlcmhhcHMgSSd2ZSBiZWVuIHRvbyBicm9hZCBpbiBteSBzZWFyY2ggdGVybXMuIEkgbmVlZCB0byBiZSBtb3JlIHByZWNpc2UsIG1vcmUgdGFyZ2V0ZWQuIExldCdzIG5hcnJvdyB0aGlzIGRvd24gYW5kIGJlIHNwZWNpZmljOiBJJ2xsIGZvY3VzIG9uIHRoZSBjb3JlIGZ1bmN0aW9uLCB0aGUgb25lIHRoYXQncyBnaXZpbmcgbWUgdGhlIG1vc3QgdHJvdWJsZS4gRm9yZ2V0IHRoZSBpbml0aWFsIGJyb2FkIGFwcHJvYWNoLCBsZXQncyBqdXN0IGdyZXAgZGlyZWN0bHkgZm9yIHRoZSBuYW1lIG9mIHRoYXQgY3JpdGljYWwgZnVuY3Rpb246IGBudm1lX3JkbWFfZmluZF9nZXRfZGV2aWNlYC4gVGhhdCBzaG91bGQgY3V0IHRocm91Z2ggdGhlIG5vaXNlIGFuZCBnaXZlIG1lIGEgbGFzZXItZm9jdXNlZCB2aWV3IG9mIGl0cyB1c2UuIFRoaXMgc2hvdWxkIGJlIGEgbXVjaCBtb3JlIGVmZmljaWVudCB3YXkgdG8gZHJpbGwgZG93biB0byB0aGUgcHJvYmxlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgxNjYsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0Njo0OC44NDM3ODY1OTVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk5OTUxMTI3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudm1lX3JkbWFfZmluZF9nZXRfZGV2aWNlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbnZtZS9ob3N0L3JkbWEuYz0zNjY9c3RhdGljIHN0cnVjdCBudm1lX3JkbWFfZGV2aWNlICpcXG5kcml2ZXJzL252bWUvaG9zdC9yZG1hLmM6MzY3Om52bWVfcmRtYV9maW5kX2dldF9kZXZpY2Uoc3RydWN0IHJkbWFfY21faWQgKmNtX2lkKVxcbmRyaXZlcnMvbnZtZS9ob3N0L3JkbWEuYy0zNjgte1xcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvcmRtYS5jPTQ5MT1zdGF0aWMgaW50IG52bWVfcmRtYV9jcmVhdGVfcXVldWVfaWIoc3RydWN0IG52bWVfcmRtYV9xdWV1ZSAqcXVldWUpXFxuLS1cXG5kcml2ZXJzL252bWUvaG9zdC9yZG1hLmMtNDk3LVxcbmRyaXZlcnMvbnZtZS9ob3N0L3JkbWEuYzo0OTg6XFx0cXVldWUtXFx1MDAzZWRldmljZSA9IG52bWVfcmRtYV9maW5kX2dldF9kZXZpY2UocXVldWUtXFx1MDAzZWNtX2lkKTtcXG5kcml2ZXJzL252bWUvaG9zdC9yZG1hLmMtNDk5LVxcdGlmICghcXVldWUtXFx1MDAzZWRldmljZSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0Njo1MC44NDMzMDQ3NzJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjQ0OTI3Mjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgTlZNZS9SRE1BIENvZGViYXNlKipcblxuQWxyaWdodCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IE5WTWUgb3ZlciBSRE1BIGRldmljZXMgYXJlIGRpc2NvdmVyZWQuIEkgcmVtZW1iZXIgc2VlaW5nIGBudm1lX3JkbWFfZmluZF9nZXRfZGV2aWNlYCBpbiB0aGUga2VybmVsIHNvdXJjZSBiZWZvcmUuIExldCBtZSBzZWUuLi4geWVzLCB0aGF0J3MgcmlnaHQsIGl0J3MgbG9jYXRlZCBpbiBgZHJpdmVycy9udm1lL2hvc3QvcmRtYS5jYC4gVGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gTm93LCB0byB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGNvbnRleHQsIEkgbmVlZCB0byBzZWUgd2hlcmUgdGhhdCBmdW5jdGlvbiBpcyB1c2VkIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIE5WTWUtb0YgdGFyZ2V0IHNpZGUuIEkgYmV0IHRoZXJlIGlzIGEgYG52bWV0X3JkbWFfZmluZF9nZXRfZGV2aWNlYCB0aGF0IHdpbGwgYmUgcmVsZXZhbnQuIEkgc2hvdWxkIGNoZWNrIHRoYXQgYXMgdGhlIG5leHQgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg2MTYsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0Njo1NC4wODgyMzQ4NzFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgxOTc5NTY2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudm1ldF9yZG1hX2ZpbmRfZ2V0X2RldmljZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL252bWUvdGFyZ2V0L3JkbWEuYz0xMTkzPXN0YXRpYyBzdHJ1Y3QgbnZtZXRfcmRtYV9kZXZpY2UgKlxcbmRyaXZlcnMvbnZtZS90YXJnZXQvcmRtYS5jOjExOTQ6bnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2Uoc3RydWN0IHJkbWFfY21faWQgKmNtX2lkKVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvcmRtYS5jLTExOTUte1xcbi0tXFxuZHJpdmVycy9udm1lL3RhcmdldC9yZG1hLmM9MTU3Mz1zdGF0aWMgaW50IG52bWV0X3JkbWFfcXVldWVfY29ubmVjdChzdHJ1Y3QgcmRtYV9jbV9pZCAqY21faWQsXFxuLS1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L3JkbWEuYy0xNTc5LVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvcmRtYS5jOjE1ODA6XFx0bmRldiA9IG52bWV0X3JkbWFfZmluZF9nZXRfZGV2aWNlKGNtX2lkKTtcXG5kcml2ZXJzL252bWUvdGFyZ2V0L3JkbWEuYy0xNTgxLVxcdGlmICghbmRldikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0Njo1NS45MDgwMzY4NTJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTYwMTU3MDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipBbmFseXppbmcgYGZyd3JfcXVlcnlfZGV2aWNlYCoqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIGBmcndyX3F1ZXJ5X2RldmljZWAuIExldCdzIHNlZSB3aGF0J3MgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZnVuY3Rpb25hbGl0eSBhbmQgd2hlcmUgaXQgZml0cyB3aXRoaW4gdGhlIGxhcmdlciBhcmNoaXRlY3R1cmUuIEknbSBnb2luZyB0byBzdGFydCBieSB0cmFjaW5nIGl0cyBkZXBlbmRlbmNpZXMgYW5kIHNlZSB3aGF0IG90aGVyIG1vZHVsZXMgb3IgZnVuY3Rpb25zIGl0IGludGVyYWN0cyB3aXRoLiBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyBmb3Igb3B0aW1pemF0aW9uIGhlcmU/IEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgaXQgaGFuZGxlcyBlcnJvciBjb25kaXRpb25zIGFuZCBlZGdlIGNhc2VzOyByb2J1c3RuZXNzIGlzIGFsd2F5cyBhIGtleSBjb25zaWRlcmF0aW9uLCBlc3BlY2lhbGx5IGluIHRoaXMgZG9tYWluLiBXaGF0IGtpbmQgb2YgZGF0YSBpcyB0aGlzIGZ1bmN0aW9uIHF1ZXJ5aW5nLCBhbmQgaG93IGlzIHRoYXQgZGF0YSB1c2VkIGRvd25zdHJlYW0/IEFyZSB0aGVyZSBhbnkgb3Bwb3J0dW5pdGllcyB0byBsZXZlcmFnZSBjYWNoaW5nIG9yIHByZS1jb21wdXRlZCB2YWx1ZXMgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZT8gVGhpcyB3YXJyYW50cyBhIGRlZXAgaW52ZXN0aWdhdGlvbi4gTGV0J3Mgc3RhcnQgd2l0aCBhIHN5c3RlbWF0aWMgY29kZSByZXZpZXcgYW5kIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2Vybi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkwODEsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0NzowMS40NjgxOTYyOVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg2MDIzMjgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmcndyX3F1ZXJ5X2RldmljZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc3VucnBjL3hwcnRyZG1hL2Zyd3Jfb3BzLmM9MTIyPWludCBmcndyX21yX2luaXQoc3RydWN0IHJwY3JkbWFfeHBydCAqcl94cHJ0LCBzdHJ1Y3QgcnBjcmRtYV9tciAqbXIpXFxuLS1cXG5uZXQvc3VucnBjL3hwcnRyZG1hL2Zyd3Jfb3BzLmMtMTU1LS8qKlxcbm5ldC9zdW5ycGMveHBydHJkbWEvZnJ3cl9vcHMuYzoxNTY6ICogZnJ3cl9xdWVyeV9kZXZpY2UgLSBQcmVwYXJlIGEgdHJhbnNwb3J0IGZvciB1c2Ugd2l0aCBGUldSXFxubmV0L3N1bnJwYy94cHJ0cmRtYS9mcndyX29wcy5jLTE1Ny0gKiBAZXA6IGVuZHBvaW50IHRvIGZpbGwgaW5cXG4tLVxcbm5ldC9zdW5ycGMveHBydHJkbWEvZnJ3cl9vcHMuYy0xNzEtICovXFxubmV0L3N1bnJwYy94cHJ0cmRtYS9mcndyX29wcy5jOjE3MjppbnQgZnJ3cl9xdWVyeV9kZXZpY2Uoc3RydWN0IHJwY3JkbWFfZXAgKmVwLCBjb25zdCBzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UpXFxubmV0L3N1bnJwYy94cHJ0cmRtYS9mcndyX29wcy5jLTE3My17XFxuLS1cXG5uZXQvc3VucnBjL3hwcnRyZG1hL3ZlcmJzLmM9Mzc4PXN0YXRpYyBpbnQgcnBjcmRtYV9lcF9jcmVhdGUoc3RydWN0IHJwY3JkbWFfeHBydCAqcl94cHJ0KVxcbi0tXFxubmV0L3N1bnJwYy94cHJ0cmRtYS92ZXJicy5jLTQwNC1cXHRlcC1cXHUwMDNlcmVfaW5saW5lX3JlY3YgPSB4cHJ0X3JkbWFfbWF4X2lubGluZV9yZWFkO1xcbm5ldC9zdW5ycGMveHBydHJkbWEvdmVyYnMuYzo0MDU6XFx0cmMgPSBmcndyX3F1ZXJ5X2RldmljZShlcCwgZGV2aWNlKTtcXG5uZXQvc3VucnBjL3hwcnRyZG1hL3ZlcmJzLmMtNDA2LVxcdGlmIChyYylcXG4tLVxcbm5ldC9zdW5ycGMveHBydHJkbWEveHBydF9yZG1hLmg9NTUxPXZvaWQgZnJ3cl9yZXNldChzdHJ1Y3QgcnBjcmRtYV9yZXEgKnJlcSk7XFxubmV0L3N1bnJwYy94cHJ0cmRtYS94cHJ0X3JkbWEuaDo1NTI6aW50IGZyd3JfcXVlcnlfZGV2aWNlKHN0cnVjdCBycGNyZG1hX2VwICplcCwgY29uc3Qgc3RydWN0IGliX2RldmljZSAqZGV2aWNlKTtcXG5uZXQvc3VucnBjL3hwcnRyZG1hL3hwcnRfcmRtYS5oLTU1My1pbnQgZnJ3cl9tcl9pbml0KHN0cnVjdCBycGNyZG1hX3hwcnQgKnJfeHBydCwgc3RydWN0IHJwY3JkbWFfbXIgKm1yKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDc6MDMuMzI4NDQwMTlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcxOTA2Nzc2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHN1bW1hcml6aW5nIHRoZSBcIlRob3VnaHRzXCIgYmFzZWQgb24gbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIGByeGVfcXBfY2hrX2NhcGAqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcyBgcnhlX3FwX2Noa19jYXBgLiBJIHNlZSB0aGlzIGFzIGEgcG90ZW50aWFsIHBvaW50IG9mIGludGVyZXN0LiBJbW1lZGlhdGVseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMg4oCTIHRoaXMgbGlrZWx5IHJlZmVycyB0byBhIGZ1bmN0aW9uIG9yIHJvdXRpbmUgd2l0aGluIHRoZSBSWEUgKFJETUEgb3ZlciBDb252ZXJnZWQgRXRoZXJuZXQpIGNvbnRleHQgdGhhdCdzIHJlc3BvbnNpYmxlIGZvciBjaGVja2luZyB0aGUgY2FwYWJpbGl0aWVzIG9yIGNvbnN0cmFpbnRzIG9mIGEgUXVldWUgUGFpciAoUVApLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJ20gYWxyZWFkeSBmb3JtdWxhdGluZyBxdWVzdGlvbnM6IFdoYXQgYXNwZWN0cyBvZiB0aGUgUVAgYXJlIHdlIGNoZWNraW5nPyBJcyB0aGlzIHJlbGF0ZWQgdG8gcmVzb3VyY2UgbGltaXRzLCBwcm90b2NvbCByZXN0cmljdGlvbnMsIG9yIGhhcmR3YXJlIHN1cHBvcnQ/IElzIHRoaXMgY2hlY2tpbmcgdGhlIFFQIHN0YXRlPyBUaGUgc2l6ZSwgbnVtYmVyIG9mIFdRRXMsIGFueSBvdGhlciBmZWF0dXJlIGJpdHM/IFRoZSBzcGVjaWZpYyBjb250ZXh0IGhlcmUgaXMgaW1wb3J0YW50IGFzIGRpZmZlcmVudCBjYXBhYmlsaXRpZXMgYXJlIGNoZWNrZWQgYXQgZGlmZmVyZW50IHRpbWVzLiBJZiBJIGtub3cgdGhlIGNvbnRleHQsIGFuZCB0aGUgb3RoZXIgY29kZSwgSSBjYW4gZ2l2ZSBhIG11Y2ggcmljaGVyIGFuc3dlci4gRnJvbSB0aGlzIHN0YXJ0aW5nIHBvaW50LCBJJ2Qgd2FudCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgZnVuY3Rpb24gZml0cyBpbnRvIHRoZSBvdmVyYWxsIFJYRSBzdGFjaywgd2hhdCB0cmlnZ2VycyBpdHMgZXhlY3V0aW9uLCBhbmQgd2hhdCB0aGUgY29uc2VxdWVuY2VzIG9mIGl0cyByZXR1cm4gdmFsdWVzIGFyZS4gVGhhdCB3b3VsZCBnaXZlIG1lIHNvbWUgaW5zaWdodCBvbiB3aGF0J3MgZ29pbmcgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODY4LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDc6MDcuMDQ3NTEwNzY5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODYxMjMxNDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ4ZV9xcF9jaGtfY2FwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3FwLmM9Mzc9c3RhdGljIGlubGluZSB2b2lkIHJ4ZV9yZWNsYXNzaWZ5X3NlbmRfc29ja2V0KHN0cnVjdCBzb2NrZXQgKnNvY2spXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jLTY1LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3FwLmM6NjY6c3RhdGljIGludCByeGVfcXBfY2hrX2NhcChzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgaWJfcXBfY2FwICpjYXAsXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfcXAuYy02Ny1cXHRcXHRcXHQgIGludCBoYXNfc3JxKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfcXAuYz0xMDc9aW50IHJ4ZV9xcF9jaGtfaW5pdChzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgaWJfcXBfaW5pdF9hdHRyICppbml0KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfcXAuYy0xMjctXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfcXAuYzoxMjg6XFx0aWYgKHJ4ZV9xcF9jaGtfY2FwKHJ4ZSwgY2FwLCAhIWluaXQtXFx1MDAzZXNycSkpXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfcXAuYy0xMjktXFx0XFx0Z290byBlcnIxO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfcXAuYz00ODc9aW50IHJ4ZV9xcF9jaGtfYXR0cihzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgcnhlX3FwICpxcCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3FwLmMtNDk2LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3FwLmM6NDk3OlxcdGlmIChtYXNrIFxcdTAwMjYgSUJfUVBfQ0FQIFxcdTAwMjZcXHUwMDI2IHJ4ZV9xcF9jaGtfY2FwKHJ4ZSwgXFx1MDAyNmF0dHItXFx1MDAzZWNhcCwgISFxcC1cXHUwMDNlc3JxKSlcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jLTQ5OC1cXHRcXHRnb3RvIGVycjE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ3OjA4LjkwODc0OTY5OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTkxMTEzNjY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBhdGNoIEFuYWx5c2lzIGZvciBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgbmVlZCB0byBsb29rIGF0IG1vcmUgY2xvc2VseS4gSXQgaW1wYWN0cyBmdW5jdGlvbmFsIGxvZ2ljIGFjY2Vzc2libGUgd2l0aGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBiZWNhdXNlIHdlJ3JlIGRlYWxpbmcgd2l0aCBSWEUsIHdoaWNoIGlzLCBvZiBjb3Vyc2UsIGEgc29mdHdhcmUgUkRNQSBkcml2ZXIuIFRoYXQgcmFpc2VzIGEgZmxhZy4gSSBzZWUgdGhlIGNoYW5nZXMgYXJlICpwcmltYXJpbHkqIHR5cGUgYWRqdXN0bWVudHMsIHdoaWNoIGlzIGdlbmVyYWxseSBsZXNzIGNvbmNlcm5pbmcsIGJ1dCB0aGV5IGFsc28gYWRkcmVzcyBwb3RlbnRpYWwgdW5kZXJmbG93IGlzc3VlcyBvciBsb2dpYyBlcnJvcnMgbGlua2VkIHRvIGBtYXhfc2VuZF9zZ2VgIGFuZCBgbWF4X3FwX3dyYC4gSG1tLlxuXG5UaGUgbmV4dCBxdWVzdGlvbiwgbmF0dXJhbGx5LCBpcyB3aGV0aGVyIGZ1enppbmcgaXMgd2FycmFudGVkIGhlcmUuIEdpdmVuIHRoYXQgaXQgdG91Y2hlcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIGRyaXZlcnMsIHRoZSBhbnN3ZXIgaXMgYSByZXNvdW5kaW5nICp5ZXMqLiBBYnNvbHV0ZWx5LCBmdXp6aW5nIGlzIHJlcXVpcmVkLiBUaGlzIGhhcyB0aGUgcG90ZW50aWFsIGZvciBzaWduaWZpY2FudCBpbXBhY3QsIGV2ZW4gd2l0aCB0aGUgdHlwZS1yZWxhdGVkIGNoYW5nZXMuXG5cbk5vdywgbGV0J3MgaWRlbnRpZnkgYWxsIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gRm9yIFJYRSwgdGhhdCdzIHN0cmFpZ2h0Zm9yd2FyZDogYFJETUFfUlhFYC4gVGhlbiB3ZSBoYXZlIE5WTWUtb0YgUkRNQSwgd2hpY2ggcmVxdWlyZXMgYE5WTUVfUkRNQWAgYW5kIGBOVk1FX1RBUkdFVF9SRE1BYC4gUlBDIFJETUEgbmVlZHMgYFNVTlJQQ19YUFJUX1JETUFgIGFuZCBgU1ZDX1JETUFgLiBTTUIgRGlyZWN0IGlzIGNvbnRyb2xsZWQgYnkgYENJRlNfU01CX0RJUkVDVGAsIGFuZCBTUlAvU1JQVCBpbnZvbHZlcyBgSU5GSU5JQkFORF9TUlBgIGFuZCBgSU5GSU5JQkFORF9TUlBUYC4gRm9yIGlTRVIvaVNFUlQgaXQncyBgSU5GSU5JQkFORF9JU0VSYCBhbmQgYElORklOSUJBTkRfSVNFUlRgLiBGaW5hbGx5LCBSRFMgdXNlcyBgUkRTYCBhbmQgYFJEU19SRE1BYC5cblxuQWxyaWdodCwgdGltZSB0byBnbyBhbmQgY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgYW5kIHNlZSB3aGF0IG1vcmUgSSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA2NTEsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDc6MTQuMDk5ODY2MDE2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODk2NTU0OTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSRE1BX1JYRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL0tjb25maWc6Mjpjb25maWcgUkRNQV9SWEVcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU29mdHdhcmUgUkRNQSBvdmVyIEV0aGVybmV0IChSb0NFKSBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ3OjE1Ljk5NjQyNjc2NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTI0NTc5OTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqTlZNRV9SRE1BIERlZXAgRGl2ZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZm9jdXMuIEZpcnN0IHRoaW5ncyBmaXJzdDogYE5WTUVfUkRNQWAuIEdvdCB0byBnZXQgbXkgaGVhZCBiYWNrIGluIHRoYXQgc3BhY2UuIExldCdzIHNlZS4uLiB3aGF0J3MgbXkgaW5pdGlhbCBtZW50YWwgY2hlY2tsaXN0PyBMYXRlbmN5LCBiYW5kd2lkdGgsIGZhYnJpYyBjb25zaWRlcmF0aW9ucy4uLiB0aGUgdXN1YWwgc3VzcGVjdHMuIEkgbmVlZCB0byByZWZyZXNoIHRoZSBrZXkgY29uY2VwdHMsIHRoZSBjcml0aWNhbCBkZXNpZ24gZGVjaXNpb25zIGJlaGluZCBpdC4gV2FzIHRoZXJlIGEgc3BlY2lmaWMgdXNlIGNhc2Ugb3IgcGFwZXIgdGhhdCBJIHdhcyB0aGlua2luZyBhYm91dCBlYXJsaWVyIHRvZGF5PyBSaWdodCwgbmVlZCB0byBlbnN1cmUgZXZlcnl0aGluZydzIGNsZWFyIG9uIG15IG1pbmQgYmVmb3JlIGRpdmluZyBpbnRvIHRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtcy4gT2theSwgdGltZSB0byBicmluZyB1cCB0aGUgcmVsZXZhbnQgcGFwZXJzIGFuZCBzdGFydCBjb25uZWN0aW5nIHRoZSBkb3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTM0NSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ3OjE4LjkyMTAwODdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MTc4MTYxOTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5WTUVfUkRNQVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL252bWUvaG9zdC9LY29uZmlnPTQ3PWNvbmZpZyBOVk1FX0ZBQlJJQ1NcXG4tLVxcbmRyaXZlcnMvbnZtZS9ob3N0L0tjb25maWctNTEtXFxuZHJpdmVycy9udm1lL2hvc3QvS2NvbmZpZzo1Mjpjb25maWcgTlZNRV9SRE1BXFxuZHJpdmVycy9udm1lL2hvc3QvS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiTlZNIEV4cHJlc3Mgb3ZlciBGYWJyaWNzIFJETUEgaG9zdCBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ3OjIwLjczODgzMDk4MVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTU0ODI5NTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyB0aGUgTlZNZSBPdmVyIEZhYnJpY3MgTGFuZHNjYXBlKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodD8gTGV0J3MgemVybyBpbiBvbiB0aGUgYE5WTUVfVEFSR0VUX1JETUFgIGFzcGVjdCBvZiB0aGlzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW50YWwgbW9kZWwgb2YgdGhhdCBzcGVjaWZpYyBjb25maWd1cmF0aW9uLiBJJ20gYWxyZWFkeSB0aGlua2luZyBhYm91dCBpdHMgbnVhbmNlcyBjb21wYXJlZCB0byBvdGhlciBmYWJyaWMgdHJhbnNwb3J0cyDigJMgc3BlY2lmaWNhbGx5LCBob3cgaXQgaGFuZGxlcyB0aGUgZGlyZWN0IG1lbW9yeSBhY2Nlc3MgaW1wbGljYXRpb25zLiBBcmUgd2UgdGFsa2luZyBmdWxsIFJETUEgc2VtYW50aWNzLCBvciBhIG1vcmUgbnVhbmNlZCBhcHByb2FjaD8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBmb3IgdGhlIHRhcmdldCdzIHJlc291cmNlIG1hbmFnZW1lbnQgYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBob3N0J3MgUkRNQSB2ZXJicz8gSSdtIGFudGljaXBhdGluZyBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MgaW4gdGhlIG5ldHdvcmsgb3IgaG9zdC1zaWRlIHByb3RvY29sIHByb2Nlc3NpbmcsIGFuZCBgTlZNRV9UQVJHRVRfUkRNQWAgaXMgdGhlIGtleSBwaWVjZSBvZiB0aGF0IHB1enpsZS4gSXQncyB0aW1lIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgcmVsZXZhbnQgUkZDcyBhbmQgYW55IHJlY2VudCBwZXJmb3JtYW5jZSByZXBvcnRzIHJlbGF0ZWQgdG8gdGhpcyBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSBhIHNvbGlkIGdyaXAgb24gdGhlIHNwZWNpZmljIFJETUEgaW1wbGVtZW50YXRpb24gYmVpbmcgdXNlZCBhbmQgaXRzIGltcGFjdCBvbiBlbmQtdG8tZW5kIGxhdGVuY3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNjI5LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDc6MjMuNjkzNjYzMjA3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODI1MTQ5MjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOVk1FX1RBUkdFVF9SRE1BXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZz00MT1jb25maWcgTlZNRV9UQVJHRVRfTE9PUFxcbi0tXFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTUxLVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZzo1Mjpjb25maWcgTlZNRV9UQVJHRVRfUkRNQVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiTlZNZSBvdmVyIEZhYnJpY3MgUkRNQSB0YXJnZXQgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDc6MjUuNTE4ODIwNjI3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1MDA3MjQyMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzczpcblxuKipSRE1BIFRyYW5zcG9ydCBDb25maWd1cmF0aW9uIENoZWNrKipcblxuT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgemVybyBpbiBvbiB0aGUgUkRNQSBhc3BlY3RzIG9mIHRoaXMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGl2ZSByaWdodCBpbnRvIGNoZWNraW5nIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gUmVtb3RlIERpcmVjdCBNZW1vcnkgQWNjZXNzIGluIHRoaXMgY29udGV4dC4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gbG9vayBmb3IgdGhlIHByZXNlbmNlIGFuZCBzZXR0aW5ncyBvZiBgU1VOUlBDX1hQUlRfUkRNQWAgYW5kIGBTVkNfUkRNQWAuIFRoZXNlIGFyZSB0aGUga2V5cyB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgdHJhbnNwb3J0IGxheWVyIGlzIHNldCB1cCBhbmQgaWYgUkRNQSBpcyBwcm9wZXJseSBlbmFibGVkIGFuZCBjb25maWd1cmVkIG9uIHRoZSBzZXJ2ZXItc2lkZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE5OTEsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0NzoyOC4wMTk1NDc4MDJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4Mzc1NTQ1MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNVTlJQQ19YUFJUX1JETUFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3N1bnJwYy9LY29uZmlnPTEwND1jb25maWcgU1VOUlBDX0RFQlVHX1RSQUNFXFxuLS1cXG5uZXQvc3VucnBjL0tjb25maWctMTE3LVxcbm5ldC9zdW5ycGMvS2NvbmZpZzoxMTg6Y29uZmlnIFNVTlJQQ19YUFJUX1JETUFcXG5uZXQvc3VucnBjL0tjb25maWctMTE5LVxcdHRyaXN0YXRlIFxcXCJSUEMtb3Zlci1SRE1BIHRyYW5zcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDc6MjkuODU3MTA3NTAyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3NDI5MDQxMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjoyMjI1MywiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDc6MzEuNjAwMDE0MjE1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTA4NTIyMjU4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU1VOUlBDX1NWQ19SRE1BXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0NzozMy41MDg1NDczMTNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkwNjEzOTc1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBzdmNfcmRtYV90cmFuc3BvcnQuY2AgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgbmVlZCB0byBnZXQgbXkgYmVhcmluZ3MgaGVyZS4gSSdtIGRlZXAgaW4gdGhlIHdlZWRzIHdpdGggYHN2Y19yZG1hX3RyYW5zcG9ydC5jYCwgYW5kIEkndmUgaGl0IGEgbWVudGFsIHJvYWRibG9jay4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHRoYXQgYXJlIGRyaXZpbmcgdGhpcyBtb2R1bGUuIEl0J3MgYSBjcml0aWNhbCBwaWVjZSwgb2J2aW91c2x5LCBidXQgSSdtIGdldHRpbmcgYSBtZW50YWwgYmxhbmsgb24gdGhlIG9wdGlvbnMgYXZhaWxhYmxlLiBJIGtub3cgdGhlcmUgYXJlIHNldmVyYWwgdHVuaW5nIHBhcmFtZXRlcnMgaW4gdGhpcyBhcmVhLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIGNoZWNrIHdoYXQncyBzZXQgdXAgaW4gb3VyIHBhcnRpY3VsYXIgZW52aXJvbm1lbnQuIEnigJltIHRoaW5raW5nIHRoZXJlIGlzIGEgdHVuaW5nIHByb2JsZW0gb3IgY29uZmlndXJhdGlvbiBpc3N1ZSBzbyBJIG5lZWQgdG8ga25vdyB3aGVyZSBJIGFtIHdpdGggdGhlIHNldHRpbmdzLiBJIG5lZWQgdG8ga25vdyB0aGUgZGVmYXVsdHMgYXMgd2VsbC4gSSBuZWVkIHRvIGZpbmQgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24gYW5kIGhvdyBpdCBhZmZlY3RzIHRoZSB0cmFuc3BvcnQuIFJpZ2h0LiBCYWNrIHRvIHRoZSBkb2N1bWVudGF0aW9uLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMjg5LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDc6MzYuNDE0NjkwNDM5WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzI3MTM4MTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN2Y19yZG1hX3RyYW5zcG9ydFxcXFwub1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc3VucnBjL3hwcnRyZG1hL01ha2VmaWxlPTQ9cnBjcmRtYS15IDo9IHRyYW5zcG9ydC5vIHJwY19yZG1hLm8gdmVyYnMubyBmcndyX29wcy5vIGliX2NsaWVudC5vIFxcXFxcXG5uZXQvc3VucnBjL3hwcnRyZG1hL01ha2VmaWxlOjU6XFx0c3ZjX3JkbWEubyBzdmNfcmRtYV9iYWNrY2hhbm5lbC5vIHN2Y19yZG1hX3RyYW5zcG9ydC5vIFxcXFxcXG5uZXQvc3VucnBjL3hwcnRyZG1hL01ha2VmaWxlLTYtXFx0c3ZjX3JkbWFfc2VuZHRvLm8gc3ZjX3JkbWFfcmVjdmZyb20ubyBzdmNfcmRtYV9ydy5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDc6MzkuMTQxODM0NjUxWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2NDYzNzQyODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJpemVkIHRob3VnaHQgcHJvY2VzcywgcHJlc2VudGVkIGFzIGlmIEknbSBhbmFseXppbmcgdGhpcyBjb2RlIG15c2VsZjpcblxuKipUcmFjaW5nIHRoZSBTb3VyY2U6IHJwY3JkbWEteSBcdTAwMjYgdGhlIE1ha2VmaWxlKipcblxuUmlnaHQsIHNvIHRoaXMgYXBwZWFycyB0byBiZSBvcmlnaW5hdGluZyBmcm9tIGBycGNyZG1hLXlgLiBUaGF0IGluc3RhbnRseSB0ZWxscyBtZSBhIGZldyB0aGluZ3MsIG1vc3RseSByZWxhdGVkIHRvIFJETUEsIHBvdGVudGlhbGx5IHJlbGF0ZWQgdG8gcmVtb3RlIHByb2NlZHVyZSBjYWxscyBvdmVyIFJETUEuIE15IGltbWVkaWF0ZSByZWFjdGlvbiBpcyB0byBjaGVjayB0aGUgYE1ha2VmaWxlYC4gVGhhdCdzIHdoZXJlIEknbSBnb2luZyB0byBmaW5kIHRoZSBidWlsZCBydWxlcywgZGVwZW5kZW5jaWVzLCBhbmQgbGlrZWx5IHRoZSBjcnVjaWFsIGNvbXBpbGF0aW9uIGZsYWdzIG9yIGxpbmtlciBzZXR0aW5ncyBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb21wb25lbnQuIFRoZSBgTWFrZWZpbGVgIGlzIHRoZSBSb3NldHRhIFN0b25lIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGBycGNyZG1hLXlgIG1vZHVsZSBmaXRzIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLiBJdCdzIHRoZSBsb2dpY2FsIG5leHQgc3RlcCB0byB1bnJhdmVsaW5nIHRoZSBwdXJwb3NlIGFuZCBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI2NzAsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0Nzo0NS43ODgyMTM1OTZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMzk3ODU2MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnBjcmRtYS15XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zdW5ycGMveHBydHJkbWEvTWFrZWZpbGU9Mj1vYmotJChDT05GSUdfU1VOUlBDX1hQUlRfUkRNQSkgKz0gcnBjcmRtYS5vXFxubmV0L3N1bnJwYy94cHJ0cmRtYS9NYWtlZmlsZS0zLVxcbm5ldC9zdW5ycGMveHBydHJkbWEvTWFrZWZpbGU6NDpycGNyZG1hLXkgOj0gdHJhbnNwb3J0Lm8gcnBjX3JkbWEubyB2ZXJicy5vIGZyd3Jfb3BzLm8gaWJfY2xpZW50Lm8gXFxcXFxcbm5ldC9zdW5ycGMveHBydHJkbWEvTWFrZWZpbGUtNS1cXHRzdmNfcmRtYS5vIHN2Y19yZG1hX2JhY2tjaGFubmVsLm8gc3ZjX3JkbWFfdHJhbnNwb3J0Lm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0Nzo0OC4xMjgwMDUxMDVaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzM2MjM4MzQxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiBSRE1BIGFuZCBDSUZTKipcblxuQWxyaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBuZXR3b3JrIHByb3RvY29scywgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBTVU5SUENfWFBSVF9SRE1BYCBsaWtlbHkgY292ZXJzIHRoZSBSRE1BIGFzcGVjdCBlZmZlY3RpdmVseS4gVGhhdCdzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQuIEhvd2V2ZXIsIHdlJ3JlIG5vdCBqdXN0IGxvb2tpbmcgYXQgUkRNQSwgc28sIGJlZm9yZSBJIGdldCB0b28gaW52ZXN0ZWQgaW4gdGhhdCBhcmVhLCBpdCdzIHdvcnRoIGNyb3NzLXJlZmVyZW5jaW5nIHRoaXMgdGhpbmtpbmcgYWdhaW5zdCB0aGUgb3RoZXIgcHJvdG9jb2wgbWVudGlvbmVkLiBNeSBuZXh0IG1vdmUgaXMgdG8gdmVyaWZ5IHRoYXQgYENJRlNfU01CX0RJUkVDVGAgaXMgdGhlIHJpZ2h0IHByb3RvY29sLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzAyNCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ3OjU1LjQ5MDM5MTU0NVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEyODM0Nzk0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQ0lGU19TTUJfRElSRUNUXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL3NtYi9jbGllbnQvS2NvbmZpZz0xNzk9aWYgQ0lGU1xcbmZzL3NtYi9jbGllbnQvS2NvbmZpZy0xODAtXFxuZnMvc21iL2NsaWVudC9LY29uZmlnOjE4MTpjb25maWcgQ0lGU19TTUJfRElSRUNUXFxuZnMvc21iL2NsaWVudC9LY29uZmlnLTE4Mi1cXHRib29sIFxcXCJTTUIgRGlyZWN0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ3OjU3LjYxODc0NTg5OFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTI3NzEwNjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgU01CIERpcmVjdCBBY2NlcHQgRnVuY3Rpb24qKlxuXG5Pa2F5LCB0aGUgcHJvYmxlbSBzZWVtcyB0byBiZSBvcmlnaW5hdGluZyB3aXRoaW4gYGZzL3NtYi9zbWJkaXJlY3QvYWNjZXB0LmNgLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbi4gQmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgSSBzaG91bGQgdGFrZSBhIHN0ZXAgYmFjayBhbmQgZ2V0IGEgaGFuZGxlIG9uIHRoZSBidWlsZCBlbnZpcm9ubWVudC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgc3BlY2lmaWMgZmlsZSBpcyBjb21waWxlZCBhbmQgbGlua2VkLiBUaGVyZWZvcmUsIHRoZSB2ZXJ5IGZpcnN0IHRoaW5nIEknbGwgZG8gaXMgY2hlY2sgdGhlIGBNYWtlZmlsZWAgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZGlyZWN0b3J5LiBVbmRlcnN0YW5kaW5nIHRoZSBidWlsZCBwcm9jZXNzIHdpbGwgaWxsdW1pbmF0ZSBkZXBlbmRlbmNpZXMsIGNvbXBpbGVyIGZsYWdzLCBhbmQgYW55IHJlbGV2YW50IHByZXByb2Nlc3NvciBkZWZpbml0aW9ucyB0aGF0IG1pZ2h0IGltcGFjdCB0aGUgYmVoYXZpb3IgSSdtIHNlZWluZy4gR2V0dGluZyB0aGUgYnVpbGQgY29udGV4dCBpcyBjcnVjaWFsIGJlZm9yZSBJIGV2ZW4gc3RhcnQgcmVhZGluZyB0aGUgQyBjb2RlLiBJdCdsbCBnaXZlIG1lIGEgY2xlYXJlciBwaWN0dXJlIG9mIGhvdyB0aGlzIGZ1bmN0aW9uIGZpdHMgaW50byB0aGUgb3ZlcmFsbCBTTUIgRGlyZWN0IGluZnJhc3RydWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzI5NSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ4OjAxLjc0NjQ1OTAzOFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE1NTc4NzYwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWJkaXJlY3QvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIk1BSU5UQUlORVJTPTI0NzY5PUY6XFx0ZnMvc21iL2NsaWVudC9zbWJkaXJlY3QuKlxcbk1BSU5UQUlORVJTOjI0NzcwOkY6XFx0ZnMvc21iL3NtYmRpcmVjdC9cXG5NQUlOVEFJTkVSUy0yNDc3MS1GOlxcdGZzL3NtYi9zZXJ2ZXIvdHJhbnNwb3J0X3JkbWEuKlxcbi0tXFxuZnMvc21iL0tjb25maWc9Nj1zb3VyY2UgXFxcImZzL3NtYi9zZXJ2ZXIvS2NvbmZpZ1xcXCJcXG5mcy9zbWIvS2NvbmZpZzo3OnNvdXJjZSBcXFwiZnMvc21iL3NtYmRpcmVjdC9LY29uZmlnXFxcIlxcbmZzL3NtYi9LY29uZmlnLTgtXFxuLS1cXG5mcy9zbWIvTWFrZWZpbGU9Mz1vYmotJChDT05GSUdfU01CRlMpXFx0XFx0Kz0gY29tbW9uL1xcbmZzL3NtYi9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19TTUJESVJFQ1QpXFx0XFx0Kz0gc21iZGlyZWN0L1xcbmZzL3NtYi9NYWtlZmlsZS01LW9iai0kKENPTkZJR19DSUZTKVxcdFxcdCs9IGNsaWVudC9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDg6MDMuOTAyMjY5NDEyWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwODA2MTEzNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipSZWZsZWN0aW5nIG9uIGBDT05GSUdfU01CRElSRUNUYCoqXG5cbkFscmlnaHQsIHNvIHRoZSBwcm9tcHQganVzdCB0aHJldyBvdXQgYENPTkZJR19TTUJESVJFQ1RgLiBUaGF0IGltbWVkaWF0ZWx5IG1ha2VzIG1lIHN0YXJ0IHRoaW5raW5nIGFib3V0IFJETUEsIHNwZWNpZmljYWxseSBJbmZpbmlCYW5kIG9yIFJvQ0UsIGFuZCBpdHMgYXBwbGljYXRpb24gd2l0aGluIHRoZSBTTUIgcHJvdG9jb2wuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYnlwYXNzaW5nIHRoZSB0cmFkaXRpb25hbCBUQ1AvSVAgc3RhY2sgdG8gcHJvdmlkZSBsb3ctbGF0ZW5jeSwgaGlnaC1iYW5kd2lkdGggZmlsZSBzaGFyaW5nLCB3aGljaCBpcyBwcmV0dHkgZXhjaXRpbmcuIEknbSBtZW50YWxseSBwYXJzaW5nIHRoZSBpbXBsaWNhdGlvbnM6IGluY3JlYXNlZCBDUFUgb2ZmbG9hZCwgcG90ZW50aWFsbHkgbG93ZXIgbGF0ZW5jeSBib3R0bGVuZWNrcyBvbiBoaWdobHkgbG9hZGVkIHN5c3RlbXMuIEknbSBhbHNvIGNvbnNpZGVyaW5nIHRoZSBoYXJkd2FyZSByZXF1aXJlbWVudHMgLSBhcmUgd2UgZGVhbGluZyB3aXRoIGRlZGljYXRlZCBSRE1BIE5JQ3MsIHNwZWNpZmljIG5ldHdvcmsgZmFicmljIGRlcGVuZGVuY2llcywgYW5kIHdoYXQgYWJvdXQgdGhlIGtlcm5lbCBzdXBwb3J0PyBUaGUgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJlbmVmaXRzIGFyZSB0aGVyZSwgYnV0IHRoZSBjb21wbGV4aXR5IGluY3JlYXNlcyBwcm9wb3J0aW9uYWxseS4gVGhlIG1lbW9yeSBtb2RlbCBpbXBsaWNhdGlvbnMgYXJlIGZyb250IGFuZCBjZW50ZXIgYXMgd2VsbCDigJMgaG93IGFyZSB0aGV5IGhhbmRsaW5nIHRoZSBkaXJlY3QgbWVtb3J5IGFjY2VzcyBhbmQgcHJvdGVjdGlvbiB3aXRoIHRoZSBhcHBsaWNhdGlvbj8gSSB3b3VsZCBiZSBhc2tpbmcgaWYgdGhlIGtlcm5lbCBoYXMgdGhlIGFwcHJvcHJpYXRlIG1vZHVsZXMgYnVpbHQgaW4gb3IgZXZlbiBpbmNsdWRlZC4gSSB3b25kZXIgaG93IHRoZSBzZWN1cml0eSBtb2RlbCBpbnRlZ3JhdGVzIHdpdGggdGhlIFJETUEgY2FwYWJpbGl0aWVzIGFuZCBpZiB0aGUgc2VjdXJpdHkgbGF5ZXJzIGFuZCBpbnRlZ3JpdHkgYXJlIGZ1bGx5IHN1cHBvcnRlZC5cbkkgYWxzbyB3YW50IHRvIGtub3cgdGhlIGN1cnJlbnQgc3RhdHVzOiBJcyBpdCBzdGlsbCBhIGhpZ2hseS1zcGVjaWFsaXplZCBuaWNoZSBpbXBsZW1lbnRhdGlvbiwgb3IgaXMgaXQgcmVhY2hpbmcgYSBwb2ludCBvZiBicm9hZGVyIGFkb3B0aW9uIGluIG1haW5zdHJlYW0gc3RvcmFnZSBzb2x1dGlvbnM/IFdoYXQncyB0aGUgc3RhdGUgb2YgdGhlIGFydCB3aGVuIGl0IGNvbWVzIHRvIGludGVyb3BlcmFiaWxpdHkgd2l0aCBkaWZmZXJlbnQgU01CIGRpYWxlY3RzIGFuZCB2ZXJzaW9ucz8gSSBpbWFnaW5lIHRoZXJlJ3MgYSB0cmFkZS1vZmYgYmV0d2VlbiBwZXJmb3JtYW5jZSBnYWluIGFuZCBmZWF0dXJlIGNvbXBhdGliaWxpdHkuIExldCdzIHNlZSBob3cgdGhpcyBwbGF5cyBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNzM4LCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0ODowNy45ODI4ODQxNjNaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMjc4MjY4MDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNNQkRJUkVDVFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9zbWIvc21iZGlyZWN0L0tjb25maWctNC1cXG5mcy9zbWIvc21iZGlyZWN0L0tjb25maWc6NTpjb25maWcgU01CRElSRUNUXFxuZnMvc21iL3NtYmRpcmVjdC9LY29uZmlnLTYtXFx0ZGVmX3RyaXN0YXRlIG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDg6MTAuMDEwNzE2MzE5WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4ODkwMzk2NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkV2YWx1YXRpbmcgSW5maW5pQmFuZCBTUlAgYW5kIFNSUFQgQ29uZmlndXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcsIGxldCdzIGp1c3QgbWFrZSBzdXJlIHdlJ3ZlIGxvb2tlZCBhdCB0aGUgY3VycmVudCBzZXR1cCBmb3IgYElORklOSUJBTkRfU1JQYCBhbmQgYElORklOSUJBTkRfU1JQVGAuIEkgd2FudCB0byBnZXQgYSBnb29kIHNlbnNlIG9mIHRoZSBjb25maWd1cmF0aW9uIGFuZCBlbnN1cmUgbm90aGluZyBvYnZpb3VzIGlzIG1pc3NlZC4gVGhpcyBjaGVjayBpcyBjcnVjaWFsIGZvciBwZXJmb3JtYW5jZSBhbmQgc3RhYmlsaXR5LCBnaXZlbiB0aGUgY3JpdGljYWwgcm9sZSBvZiBTUlAgYW5kIFNSUFQgd2l0aGluIHRoZSBJbmZpbmlCYW5kIGVudmlyb25tZW50LiBUaGlzIHNob3VsZCBiZSBhIHF1aWNrIGRpYWdub3N0aWMgc3RlcCwgYnV0IGltcG9ydGFudCB0byBkbyBtZXRob2RpY2FsbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MTQ5LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDg6MTIuODk5NzU4ODg2WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTI1NDg2OTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJTkZJTklCQU5EX1NSUFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnAvS2NvbmZpZzoyOmNvbmZpZyBJTkZJTklCQU5EX1NSUFxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSW5maW5pQmFuZCBTQ1NJIFJETUEgUHJvdG9jb2xcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycHQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwdC9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfU1JQVFxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwdC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkluZmluaUJhbmQgU0NTSSBSRE1BIFByb3RvY29sIHRhcmdldCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0ODoxNC44MjUyNTA1NTRaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4NTI5NzY1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXM6XG5cbioqSW52ZXN0aWdhdGluZyBJbmZpbmliYW5kIGlTRVIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB0aGUgc3RhdHVzIG9yIHJlbGV2YW5jZSBvZiB0aGVzZSBJbmZpbmliYW5kLXJlbGF0ZWQgdmFyaWFibGVzLiBGaXJzdCwgSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9ucyBmb3IgYm90aCBgSU5GSU5JQkFORF9JU0VSYCBhbmQgYElORklOSUJBTkRfSVNFUlRgLiBJJ20gZ29pbmcgdG8gYXNzdW1lIHRoaXMgaXMgcmVsYXRlZCB0byBpU0VSIChpU0NTSSBFeHRlbnNpb25zIGZvciBSRE1BKSBiZWNhdXNlIG9mIHRoZSBuYW1pbmcgY29udmVudGlvbiwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoZSBzcGVjaWZpYyBmdW5jdGlvbiBlYWNoIG9uZSBoYW5kbGVzIHdpdGhpbiB0aGUgYnJvYWRlciBJbmZpbmliYW5kIGVjb3N5c3RlbS4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkb2N1bWVudGF0aW9uLCBvciBtYXliZSBsb29rIGF0IHNvbWUgZXhhbXBsZSBjb25maWd1cmF0aW9ucy4gSG9wZWZ1bGx5LCB0aGUgbmFtaW5nIGlzIGludHVpdGl2ZSwgYW5kIHRoZWlyIHB1cnBvc2UgYW5kIHJlbGF0aW9uIHdpbGwgYmUgc2VsZi1ldmlkZW50LiBJZGVhbGx5LCBJIGNhbiBzZWUgZXhhY3RseSB3aGF0IHNldHRpbmcgdGhlc2UgdmFyaWFibGVzIGltcGFjdHMgd2l0aGluIHRoZSBpU0VSIHN0YWNrIHRvIGVuc3VyZSB0aGF0IGl0J3MgY29ycmVjdGx5IGNvbmZpZ3VyZWQgb3IgdGhhdCBJIGNhbiBpZGVudGlmeSBhIHByb2JsZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NDk3LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDg6MTguMDEwNTUwMjY1WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODk2NjkyODQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJTkZJTklCQU5EX0lTRVJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvS2NvbmZpZzoyOmNvbmZpZyBJTkZJTklCQU5EX0lTRVJcXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJpU0NTSSBFeHRlbnNpb25zIGZvciBSRE1BIChpU0VSKVxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvS2NvbmZpZzoyOmNvbmZpZyBJTkZJTklCQU5EX0lTRVJUXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VydC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcImlTQ1NJIEV4dGVuc2lvbnMgZm9yIFJETUEgKGlTRVIpIHRhcmdldCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0ODoxOS45MDcyNDg4ODRaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE0MzcxMDg4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIEluZmluaWJhbmQgUm91dGVyIENsaWVudCBhbmQgU2VydmVyIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIHJpZ2h0IGluIGFuZCBkaXNzZWN0IHdoYXQncyBnb2luZyBvbiB3aXRoIHRoZSBgSU5GSU5JQkFORF9SVFJTX0NMSUVOVGAgYW5kIGBJTkZJTklCQU5EX1JUUlNfU0VSVkVSYCBzZXR0aW5ncy4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gcXVpY2tseSBjb25maXJtIHRoZSBzdGF0ZSBvZiB0aGVzZSB2YXJpYWJsZXMuIERlcGVuZGluZyBvbiB0aGVpciBjb25maWd1cmF0aW9uLCB3ZSBjYW4gYmVnaW4gdG8gdHJvdWJsZXNob290IGlzc3VlcyB3aXRoIEluZmluaWJhbmQgcm91dGluZy4gVGhleSBhcmUgZnVuZGFtZW50YWwgaW4gZGV0ZXJtaW5pbmcgdGhlIGZ1bmN0aW9uYWwgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGNvbm5lY3RlZCBkZXZpY2VzLiBFc3NlbnRpYWxseSwgYXJlIHRoZXkgYWN0aXZlLCBpbmFjdGl2ZSwgd2hhdCBhcmUgdGhlIGN1cnJlbnQgdmFsdWVzPyBBcmUgdGhleSBjb3JyZWN0bHkgY29uZmlndXJlZCByZWxhdGl2ZSB0byBlYWNoIG90aGVyPyBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4gY2xpZW50IGFuZCBzZXJ2ZXIgd2lsbCBiZWNvbWUgY3JpdGljYWwgaWYgdGhlcmUgaXMgYW55IHRyYWZmaWMgZmxvdyBwcm9ibGVtcy4gS25vd2luZyB0aGUgdmFsdWVzIGdpdmVzIGEgc29saWQgZm91bmRhdGlvbi4gVGhlc2UgdmFyaWFibGVzLCBpbiB0aGUgY29udGV4dCBvZiByb3V0aW5nLCBpbW1lZGlhdGVseSB0cmlnZ2VyIHF1ZXN0aW9ucyBhcm91bmQgd2hldGhlciB0aGV5IGFyZSBwcm9wZXJseSBkZWZpbmVkLCBpZiB0aGVyZSBhcmUgYW55IGNvbmZsaWN0cywgYW5kIGlmIHRoZXkgYWxpZ24gd2l0aCB0aGUgZXhwZWN0ZWQgY29tbXVuaWNhdGlvbiBtb2RlbC4gSSdsbCBuZWVkIHRvIGtub3cgdGhlIGNvbnRleHQgb2YgdGhlIGxhcmdlciBzZXR1cCB0byB1bmRlcnN0YW5kIGFueSBzcGVjaWZpYyBpc3N1ZXMsIGJ1dCB0aGVzZSB2YXJpYWJsZXMgYXJlIGEgZ3JlYXQgc3RhcnRpbmcgcG9pbnQgZm9yIGFuYWx5emluZyByb3V0aW5nIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0OTE3LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDg6MjMuMDUwOTYxNTI1WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTU3NTEyNDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJTkZJTklCQU5EX1JUUlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL0tjb25maWctMi1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZzozOmNvbmZpZyBJTkZJTklCQU5EX1JUUlNcXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZy00LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZy02LVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9LY29uZmlnOjc6Y29uZmlnIElORklOSUJBTkRfUlRSU19DTElFTlRcXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZy04LVxcdHRyaXN0YXRlIFxcXCJSVFJTIGNsaWVudCBtb2R1bGVcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZy0xNy1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZzoxODpjb25maWcgSU5GSU5JQkFORF9SVFJTX1NFUlZFUlxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJSVFJTIHNlcnZlciBtb2R1bGVcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ4OjI1LjAwODQ3OTgwMloiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTIxNzc1MjU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSB0aGUgZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgUkRNQSB3aXRoaW4gUkRTKipcblxuQWxyaWdodCwgdGhlIG1lbnRhbCBnZWFycyBhcmUgc3RhcnRpbmcgdG8gdHVybi4gXCJSRFNfUkRNQVwiLi4uIHRoYXQncyB0aGUgdHJpZ2dlci4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiB0aGlzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBSRE1BIGludGVyYWN0cyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgUmVtb3RlIERpcmVjdCBNZW1vcnkgQWNjZXNzIChSRE1BKSBhbmQgUmVsYXRpb25hbCBEYXRhYmFzZSBTZXJ2aWNlIChSRFMpLiBJIG5lZWQgdG8gY2hlY2sgdGhlIGN1cnJlbnQgc3RhdHVzLCBhbmQgc3RhcnQgbXkgaW52ZXN0aWdhdGlvbiBmcm9tIHRoZXJlLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU0MjMsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0ODoyNy45MzAyNTgwNDlaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4ODEyNDQ3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJEU19SRE1BXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9yZHMvS2NvbmZpZz0zPWNvbmZpZyBSRFNcXG4tLVxcbm5ldC9yZHMvS2NvbmZpZy05LVxcbm5ldC9yZHMvS2NvbmZpZzoxMDpjb25maWcgUkRTX1JETUFcXG5uZXQvcmRzL0tjb25maWctMTEtXFx0dHJpc3RhdGUgXFxcIlJEUyBvdmVyIEluZmluaWJhbmRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ4OjI5LjgxMTUwODA5OFoiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjkyOTgxMDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgSU5GSU5JQkFORF9JUE9JQmAgVmFyaWFibGUqKlxuXG5SaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYElORklOSUJBTkRfSVBPSUJgIHRoaW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgY29uc2lkZXIgaXRzIGNvbnRleHQuIFdlJ3JlIG9idmlvdXNseSBkZWFsaW5nIHdpdGggSW5maW5pQmFuZCwgYW5kIHRoZSBwcmVzZW5jZSBvZiBcIklQT0lCXCIgc3VnZ2VzdHMgd2UncmUgdGFsa2luZyBhYm91dCBJUCBvdmVyIElCLiBUaGlzIGlzIHVzdWFsbHkgdGhlIGFyZWEgb2YgcG90ZW50aWFsIHBlcmZvcm1hbmNlIHR1bmluZy9jb25maWd1cmF0aW9uLCBvciBkZWJ1Z2dpbmcgZm9yIElCIGZhYnJpYyBiZWhhdmlvci4gTXkgbWluZCBpbW1lZGlhdGVseSBmbGFzaGVzIHRvIHNjZW5hcmlvcyBsaWtlOiBpcyB0aGlzIHNldHRpbmcgYSBkcml2ZXIgZmxhZywgYW4gZW52aXJvbm1lbnRhbCB2YXJpYWJsZSwgb3IgYSBrZXJuZWwgcGFyYW1ldGVyPyBXaGF0IGxldmVsIG9mIHRoZSBzdGFjayBpcyBpdCBpbXBhY3Rpbmc/IEFuZCBmcm9tIHRoZXJlLCB3aGF0IG1pZ2h0IGJlIGl0cyBlZmZlY3RzIG9uLCBzYXksIHRocm91Z2hwdXQsIGxhdGVuY3ksIG9yIGV2ZW4gb3ZlcmFsbCBzeXN0ZW0gc3RhYmlsaXR5PyBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgcXVlc3Rpb25zIGFib3V0IG5ldHdvcmsgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24gYW5kIHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvdGhlciBuZXR3b3JrIHNldHVwcywgcGVyaGFwcyBldmVuIHdpdGggdGhpbmdzIGxpa2UgYHJkbWFfY21gLiBJIG5lZWQgdG8gYXNzZXNzIHdoYXQgaXQgZG9lcyB0byB0aGUgZGVmYXVsdCBiZWhhdmlvci4gSXMgdGhpcyBzZXR0aW5nIGJlaW5nIHVzZWQgdG8gZW5hYmxlLCBkaXNhYmxlLCBvciBtb2RpZnkgc29tZSBhc3BlY3Qgb2YgSVBPSUI/IElzIGl0IGEgZ2VuZXJhbCBzZXR0aW5nLCBvciBzcGVjaWZpYyB0byBhIGNlcnRhaW4gdmVuZG9yJ3MgaW1wbGVtZW50YXRpb24sIG9yIHBvc3NpYmx5IHRoZSBsaW51eCBrZXJuZWw/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgaXQncyAqZG9pbmcqIGJlZm9yZSBJIGNhbiB1bmRlcnN0YW5kIGl0cyBpbXBhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NjQzLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDg6MzQuNTA0NDkxMjU1WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTA0NDU2MjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJTkZJTklCQU5EX0lQT0lCXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvS2NvbmZpZzoyOmNvbmZpZyBJTkZJTklCQU5EX0lQT0lCXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIklQLW92ZXItSW5maW5pQmFuZFxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWc6MTI6Y29uZmlnIElORklOSUJBTkRfSVBPSUJfQ01cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWctMTMtXFx0Ym9vbCBcXFwiSVAtb3Zlci1JbmZpbmlCYW5kIENvbm5lY3RlZCBNb2RlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWctMjYtXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnOjI3OmNvbmZpZyBJTkZJTklCQU5EX0lQT0lCX0RFQlVHXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIklQLW92ZXItSW5maW5pQmFuZCBkZWJ1Z2dpbmdcXFwiIGlmIEVYUEVSVFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTQxLVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvS2NvbmZpZzo0Mjpjb25maWcgSU5GSU5JQkFORF9JUE9JQl9ERUJVR19EQVRBXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTQzLVxcdGJvb2wgXFxcIklQLW92ZXItSW5maW5pQmFuZCBkYXRhIHBhdGggZGVidWdnaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0ODozNi40MDg5NTU5NzRaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk5OTk2Nzg5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIFJETUEgQ29uZmlndXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGVzZSBSRE1BLXJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIEkgc2VlIGEgcHJldHR5IGNvbXByZWhlbnNpdmUgbGlzdCBoZXJlOiBgUkRNQV9SWEVgLCBgTlZNRV9SRE1BYCwgYE5WTUVfVEFSR0VUX1JETUFgLCBgU1VOUlBDX1hQUlRfUkRNQWAsIGBTTUJESVJFQ1RgLCBgSU5GSU5JQkFORF9TUlBgLCBgSU5GSU5JQkFORF9TUlBUYCwgYElORklOSUJBTkRfSVNFUmAsIGBJTkZJTklCQU5EX0lTRVJUYCwgYElORklOSUJBTkRfUlRSU19DTElFTlRgLCBgSU5GSU5JQkFORF9SVFJTX1NFUlZFUmAsIGBSRFNfUkRNQWAsIGFuZCBgSU5GSU5JQkFORF9JUE9JQmAuIFNlZW1zIGxpa2UgdGhlIGtlcm5lbCBkZXZlbG9wZXJzIGhhdmUgYmVlbiBrZWVwaW5nIGJ1c3khXG5cbkhhbmcgb24gYSBzZWNvbmTigKYgaXNuJ3QgYFNNQkRJUkVDVGAgYSBoaWRkZW4gY29uZmlnPyBUaGF0IHJpbmdzIGEgYmVsbC4gR290dGEgZG91YmxlLWNoZWNrIHRoYXQuIExldCBtZSBxdWlja2x5IGdvIGxvb2sgaW4gYGZzL3NtYi9zbWJkaXJlY3QvS2NvbmZpZ2AgdG8gY29uZmlybSBhbmQgcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGRlcGVuZGVuY2llcyBhbmQgcHVycG9zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYyODksIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDg6NDEuNDA4OTI3MDg1WiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTM4MDI1Njk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTUJESVJFQ1RcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvc21iL3NtYmRpcmVjdC9LY29uZmlnLTQtXFxuZnMvc21iL3NtYmRpcmVjdC9LY29uZmlnOjU6Y29uZmlnIFNNQkRJUkVDVFxcbmZzL3NtYi9zbWJkaXJlY3QvS2NvbmZpZy02LVxcdGRlZl90cmlzdGF0ZSBuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ4OjQzLjM0Njk1ODY0M1oiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODQwNjAzMjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgRnVuY3Rpb24gRGVmaW5pdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBoZXJlOiBgZGVmX3RyaXN0YXRlIG5gLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCB3aGVyZSBpcyBgZGVmX3RyaXN0YXRlYCBiZWluZyBpbnZva2VkIGZyb20/IEl0cyBzaWduYXR1cmUgYWxvbmUgZG9lc24ndCBnaXZlIG1lIG11Y2ggY29udGV4dCwgc28gSSBuZWVkIHRvIHRyYWNlIGJhY2sgdGhlIGNhbGwgY2hhaW4gdG8gdW5kZXJzdGFuZCBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0uIFRoaXMgaW1wbGllcyB0aGF0IHRoZXJlIGlzIHNvbWUgZXh0ZXJuYWwgZmFjdG9yIGF0IHBsYXkgd2hpY2ggaXMgc2VsZWN0aW5nIHRoaXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhhdCB0cmlnZ2VyIGlzLCBhbmQgd2hhdCBwb3NzaWJsZSBvdXRjb21lcyBhcmUgYXQgcGxheSBoZXJlLiBXaXRob3V0IHRoYXQgdW5kZXJzdGFuZGluZywgSSdtIGp1c3QgbG9va2luZyBhdCBhIHN5bnRhY3RpYyBzbmlwcGV0LiBJdHMgc2VsZWN0aW9uIGluZGljYXRlcyB0aGF0IHRoZXJlJ3MgYSBzcGVjaWZpYyBsb2dpYyBwYXRoIGJlaW5nIGNob3NlbiwgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25kaXRpb25zIHRoYXQgbGVhZCB0byBpdHMgZXhlY3V0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjcxOCwiT3V0cHV0VG9rZW5zIjoxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ4OjQ2LjE4NzU2NDc0MVoiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE2MTM2NTgwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgU01CRElSRUNUXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL3NtYi9jbGllbnQvS2NvbmZpZz0xODE9Y29uZmlnIENJRlNfU01CX0RJUkVDVFxcbi0tXFxuZnMvc21iL2NsaWVudC9LY29uZmlnLTE4NC1cXHRkZXBlbmRzIG9uIENJRlM9bSB8fCBJTkZJTklCQU5EPXlcXG5mcy9zbWIvY2xpZW50L0tjb25maWc6MTg1OlxcdHNlbGVjdCBTTUJESVJFQ1RcXG5mcy9zbWIvY2xpZW50L0tjb25maWctMTg2LVxcdGhlbHBcXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvS2NvbmZpZz00OD1jb25maWcgU01CX1NFUlZFUl9TTUJESVJFQ1RcXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvS2NvbmZpZy01MS1cXHRkZXBlbmRzIG9uIFNNQl9TRVJWRVI9bSB8fCBJTkZJTklCQU5EPXlcXG5mcy9zbWIvc2VydmVyL0tjb25maWc6NTI6XFx0c2VsZWN0IFNNQkRJUkVDVFxcbmZzL3NtYi9zZXJ2ZXIvS2NvbmZpZy01My1cXHRkZWZhdWx0IG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDg6NDguMzQ4OTM2MDE0WiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MjAzMzAxNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkVuYWJsaW5nIFNNQiBEaXJlY3QgYW5kIFJETUEgZm9yIE9wdGltYWwgUGVyZm9ybWFuY2UqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgYXJjaGl0ZWN0dXJlLCBJIG5lZWQgdG8gZm9jdXMgb24gZW5hYmxpbmcgYENJRlNfU01CX0RJUkVDVGAgYW5kIGBTTUJfU0VSVkVSX1NNQkRJUkVDVGAgZmlyc3QgYW5kIGZvcmVtb3N0LiBUaGVzZSBhcmUgdGhlIGtleSBzZXR0aW5ncyB0byB1bmxvY2sgdGhlIHBlcmZvcm1hbmNlIGJlbmVmaXRzIG9mIFNNQiBEaXJlY3QgYW5kIFJlbW90ZSBEaXJlY3QgTWVtb3J5IEFjY2VzcyAoUkRNQSkuIFRoYXQncyB0aGUgYmFzZWxpbmUsIHRoZSBmb3VuZGF0aW9uLlxuXG5Ob3csIGxldCdzIHBpdm90IHRvIHRoZSBoYXJkd2FyZS4gSSBuZWVkIHRvIHNwZWNpZmljYWxseSBjb25maXJtIHRoaXMgaXMgcG9zc2libGUgd2l0aCB0aGUgYFFFRFJgIChRTG9naWMgRmFzdExpblEgNHh4eHggQ29yZSBNb2R1bGUpIEknbSB3b3JraW5nIHdpdGguIFRoaXMgd2lsbCBiZSB0aGUgZGVjaWRpbmcgZmFjdG9yIGlmIEkgY2FuIG1ha2UgdXNlIG9mIFNNQiBEaXJlY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MTA4LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDg6NTMuMjY5MjY5MjQ3WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTI3MDg2Njk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJTkZJTklCQU5EX1FFRFJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L3FlZHIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9xZWRyL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9RRURSXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3FlZHIvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJRTG9naWMgUm9DRSBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ4OjU1LjE5NjM2MjIzNVoiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTMzNDUxNjAxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSRE1BIEF0dHJpYnV0ZSBUeXBlIENoYW5nZSBhbmQgRnV6emluZyBTdHJhdGVneSoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGlzIHBhdGNoLiBGaXJzdCBvZmYsIFFFRFIgaXMgYSBoYXJkd2FyZSBkcml2ZXIsIHJpZ2h0PyBTbywgaXQncyBub3QgcmVsZXZhbnQgaGVyZSBzaW5jZSB3ZSdyZSBmb2N1c2VkIG9uIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFJYRSBpcyBvdXIgc29mdHdhcmUgUkRNQSBzb2x1dGlvbiwgc28gdGhhdCdzIHRoZSBhbmdsZSB3ZSBuZWVkIHRvIHRha2UuIE5vIG5lZWQgdG8gZ2V0IGJvZ2dlZCBkb3duIGluIFFFRFIuXG5cbkFscmlnaHQsIGxldCdzIGxvb2sgYXQgdGhlIGZ1bmN0aW9ucyBpbXBhY3RlZC4gSW5pdGlhbGx5LCBJIGhhZCBhIHByZXR0eSBleGhhdXN0aXZlIGxpc3QsIGJ1dCB0aGF0J3MgZ29pbmcgdG8gYmUgdG9vIG11Y2ggZm9yIHRlc3RpbmcuIFRpbWUgdG8gaG9uZSBpbiBvbiB0aGUgaW1wb3J0YW50IG9uZXMuIEkgbmVlZCBhIHJlcHJlc2VudGF0aXZlIHNldCBvZiBmdW5jdGlvbnMgdGhhdCBhcmUgZGlyZWN0bHkgbW9kaWZpZWQgYW5kIGFyZSBub3QgZnJlcXVlbnRseSBhY2Nlc3NlZCBcImhvdCBwYXRoc1wiIHNvIHRoYXQgdGhleSBjYW4gYmUgZnV6emVkIHdpdGhvdXQgaW1wYWN0aW5nIHRoZSBzeXN0ZW0gaW4gYW4gaW1wYWN0ZnVsIG1hbm5lci5cblxuSSd2ZSBnb3QgYSBzbGlnaHRseSBtb3JlIG1hbmFnZWFibGUgbGlzdCBub3c6IGBudm1lX3JkbWFfZmluZF9nZXRfZGV2aWNlYCwgYG52bWV0X3JkbWFfZmluZF9nZXRfZGV2aWNlYCwgYGZyd3JfcXVlcnlfZGV2aWNlYCwgYHJ4ZV9xcF9jaGtfY2FwYCwgYHJ4ZV9zcnFfY2hrX2luaXRgLCBgc21iZGlyZWN0X2Nvbm5lY3Rpb25fY3JlYXRlX3FwYCwgYHJkc19pYl9jbV9maWxsX2Nvbm5fcGFyYW1gLCBgc3ZjX3JkbWFfYWNjZXB0YCwgYW5kIGBycGNyZG1hX2VwX2NyZWF0ZWAuIFRoZXNlIGFsbCBzZWVtIHJlYXNvbmFibGUuIFdlJ3JlIGxvb2tpbmcgYXQgY29ubmVjdGlvbiBzZXR1cCwgRVAgY3JlYXRpb24sIFFQL1NSUSBjcmVhdGlvbiwgc28gbm90IHVzdWFsbHkgaW4gdGhlIGhvdCBwYXRoLiBQZXJmZWN0LlxuXG5Ob3csIGFzIGZhciBhcyBjb25maWdzIGdvLCBiZXNpZGVzIHRoZSBgUkRNQV9SWEVgLCB3ZSBoYXZlIGEgYnVuY2ggbW9yZS4gSSdsbCBuZWVkIHRvIGdvIHRocm91Z2ggYWxsIG9mIHRoZW0gKGBOVk1FX1JETUFgLCBgTlZNRV9UQVJHRVRfUkRNQWAsIGBTVU5SUENfWFBSVF9SRE1BYCwgYENJRlNfU01CX0RJUkVDVGAsIGBTTUJfU0VSVkVSX1NNQkRJUkVDVGAsIGBJTkZJTklCQU5EX1NSUGAsIGBJTkZJTklCQU5EX1NSUFRgLCBgSU5GSU5JQkFORF9JU0VSYCwgYElORklOSUJBTkRfSVNFUlRgLCBgSU5GSU5JQkFORF9SVFJTX0NMSUVOVGAsIGBJTkZJTklCQU5EX1JUUlNfU0VSVkVSYCwgYFJEU19SRE1BYCwgYElORklOSUJBTkRfSVBPSUJgKSB0byBlbnN1cmUgdGhlIGNoYW5nZXMgYXJlIGNvcnJlY3RseSBoYW5kbGVkLiBKdXN0IGNvbmZpcm1pbmcgYFJETUFfUlhFYCBpcyBzdWZmaWNpZW50IGZvciBzb2Z0d2FyZSBSRE1BIC0geWVzLCB3ZSBhcmUgZ29vZC4gSnVzdCBpbiBjYXNlLCBJIGFsc28gbWFkZSBub3RlIG9mIGBSRE1BX1NJV2AsIGJ1dCB3ZSdyZSBmb2N1c2luZyBvbiBSWEUgaGVyZS5cblxuT2theSwgbGV0J3MgcmVjYXAgbXkgcmVhc29uaW5nLiBUaGlzIHBhdGNoIGlzIGNoYW5naW5nIGludGVnZXIgdHlwZXMgZnJvbSBgaW50YCB0byBgdTMyYCBmb3IgUkRNQSBkZXZpY2UgYXR0cmlidXRlcywgYWxzbyB1cGRhdGluZyBgbWluKClgIGNhbGxzIGFuZCBmb3JtYXQgc3RyaW5ncy4gVGhlcmUgYXJlIGZpeGVzIGZvciBwb3RlbnRpYWwgdW5kZXJmbG93cyBpbiBzb21lIGNydWNpYWwgZnVuY3Rpb25zOiBgbnZtZV9yZG1hX2ZpbmRfZ2V0X2RldmljZWAsIGBudm1ldF9yZG1hX2ZpbmRfZ2V0X2RldmljZWAsIGFuZCBgZnJ3cl9xdWVyeV9kZXZpY2VgLiBUaGVzZSBjaGFuZ2VzIHRvdWNoIHRoZSBjb3JlIFJETUEgbG9naWMgYW5kIG11bHRpcGxlIFVMUHMgd2hpY2ggY2FuIGJlIHRlc3RlZCBpbiBvdXIgZW52aXJvbm1lbnQgdXNpbmcgdGhlIFJYRSBzb2Z0d2FyZSBSRE1BIGRyaXZlci4gVGhpcyBtZWFucyB3ZSdsbCBuZWVkIGZ1enppbmcgdG8gbWFrZSBzdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIGFueSBuZXcgaW50ZWdlciBvdmVyZmxvdy91bmRlcmZsb3cgYnVncyBoYXZlIGJlZW4gaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzLlxuTm93IEkgdGhpbmsgSSBoYXZlIGEgY2xlYXIgcGxhbi4gVGltZSB0byBwcm9kdWNlIGEgY29uY2lzZSBzdW1tYXJ5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzQ0MiwiT3V0cHV0VG9rZW5zIjozNjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTAyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ5OjEwLjUzMDg4MTE0MVoiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1Nzc2Nzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSRE1BX1JYRVwiLFxuICAgIFwiTlZNRV9SRE1BXCIsXG4gICAgXCJOVk1FX1RBUkdFVF9SRE1BXCIsXG4gICAgXCJTVU5SUENfWFBSVF9SRE1BXCIsXG4gICAgXCJDSUZTX1NNQl9ESVJFQ1RcIixcbiAgICBcIlNNQl9TRVJWRVJfU01CRElSRUNUXCIsXG4gICAgXCJJTkZJTklCQU5EX1NSUFwiLFxuICAgIFwiSU5GSU5JQkFORF9TUlBUXCIsXG4gICAgXCJJTkZJTklCQU5EX0lTRVJcIixcbiAgICBcIklORklOSUJBTkRfSVNFUlRcIixcbiAgICBcIklORklOSUJBTkRfUlRSU19DTElFTlRcIixcbiAgICBcIklORklOSUJBTkRfUlRSU19TRVJWRVJcIixcbiAgICBcIlJEU19SRE1BXCIsXG4gICAgXCJJTkZJTklCQU5EX0lQT0lCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnZtZV9yZG1hX2ZpbmRfZ2V0X2RldmljZVwiLFxuICAgIFwibnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2VcIixcbiAgICBcImZyd3JfcXVlcnlfZGV2aWNlXCIsXG4gICAgXCJyeGVfcXBfY2hrX2NhcFwiLFxuICAgIFwicnhlX3NycV9jaGtfaW5pdFwiLFxuICAgIFwic21iZGlyZWN0X2Nvbm5lY3Rpb25fY3JlYXRlX3FwXCIsXG4gICAgXCJyZHNfaWJfY21fZmlsbF9jb25uX3BhcmFtXCIsXG4gICAgXCJzdmNfcmRtYV9hY2NlcHRcIixcbiAgICBcInJwY3JkbWFfZXBfY3JlYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZXMgb2YgdmFyaW91cyBSRE1BIGRldmljZSBhdHRyaWJ1dGVzIGZyb20gYGludGAgdG8gYHUzMmAgYW5kIHVwZGF0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgYG1pbigpYCBjYWxscyBhbmQgZm9ybWF0IHN0cmluZ3MuIEl0IGFsc28gZml4ZXMgc29tZSBwb3RlbnRpYWwgdW5kZXJmbG93cyBpbiBjb25uZWN0aW9uIHNldHVwIGZ1bmN0aW9ucy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgUkRNQSBsb2dpYyBhbmQgdmFyaW91cyBSRE1BIFVMUHMgKFVwcGVyIExheWVyIFByb3RvY29scykgd2hpY2ggY2FuIGJlIHRlc3RlZCB1c2luZyB0aGUgc29mdHdhcmUgUkRNQSBkcml2ZXIgKFJYRSkuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyBpbnRlZ2VyIG92ZXJmbG93L3VuZGVyZmxvdyBidWdzIHdlcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSRE1BX1JYRVwiLFxuICAgIFwiTlZNRV9SRE1BXCIsXG4gICAgXCJOVk1FX1RBUkdFVF9SRE1BXCIsXG4gICAgXCJTVU5SUENfWFBSVF9SRE1BXCIsXG4gICAgXCJDSUZTX1NNQl9ESVJFQ1RcIixcbiAgICBcIlNNQl9TRVJWRVJfU01CRElSRUNUXCIsXG4gICAgXCJJTkZJTklCQU5EX1NSUFwiLFxuICAgIFwiSU5GSU5JQkFORF9TUlBUXCIsXG4gICAgXCJJTkZJTklCQU5EX0lTRVJcIixcbiAgICBcIklORklOSUJBTkRfSVNFUlRcIixcbiAgICBcIklORklOSUJBTkRfUlRSU19DTElFTlRcIixcbiAgICBcIklORklOSUJBTkRfUlRSU19TRVJWRVJcIixcbiAgICBcIlJEU19SRE1BXCIsXG4gICAgXCJJTkZJTklCQU5EX0lQT0lCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnZtZV9yZG1hX2ZpbmRfZ2V0X2RldmljZVwiLFxuICAgIFwibnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2VcIixcbiAgICBcImZyd3JfcXVlcnlfZGV2aWNlXCIsXG4gICAgXCJyeGVfcXBfY2hrX2NhcFwiLFxuICAgIFwicnhlX3NycV9jaGtfaW5pdFwiLFxuICAgIFwic21iZGlyZWN0X2Nvbm5lY3Rpb25fY3JlYXRlX3FwXCIsXG4gICAgXCJyZHNfaWJfY21fZmlsbF9jb25uX3BhcmFtXCIsXG4gICAgXCJzdmNfcmRtYV9hY2NlcHRcIixcbiAgICBcInJwY3JkbWFfZXBfY3JlYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZXMgb2YgdmFyaW91cyBSRE1BIGRldmljZSBhdHRyaWJ1dGVzIGZyb20gYGludGAgdG8gYHUzMmAgYW5kIHVwZGF0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgYG1pbigpYCBjYWxscyBhbmQgZm9ybWF0IHN0cmluZ3MuIEl0IGFsc28gZml4ZXMgc29tZSBwb3RlbnRpYWwgdW5kZXJmbG93cyBpbiBjb25uZWN0aW9uIHNldHVwIGZ1bmN0aW9ucy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgUkRNQSBsb2dpYyBhbmQgdmFyaW91cyBSRE1BIFVMUHMgKFVwcGVyIExheWVyIFByb3RvY29scykgd2hpY2ggY2FuIGJlIHRlc3RlZCB1c2luZyB0aGUgc29mdHdhcmUgUkRNQSBkcml2ZXIgKFJYRSkuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyBpbnRlZ2VyIG92ZXJmbG93L3VuZGVyZmxvdyBidWdzIHdlcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow5488v[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-19 20:37:39 +0000 UTC FinishedAt: 2026-06-19 20:49:11 +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": "96e7f9122aae0ed000ee321f324b812a447906d9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RDMA_RXE", "NVME_RDMA", "NVME_TARGET_RDMA", "SUNRPC_XPRT_RDMA", "CIFS_SMB_DIRECT", "SMB_SERVER_SMBDIRECT", "INFINIBAND_SRP", "INFINIBAND_SRPT", "INFINIBAND_ISER", "INFINIBAND_ISERT", "INFINIBAND_RTRS_CLIENT", "INFINIBAND_RTRS_SERVER", "RDS_RDMA", "INFINIBAND_IPOIB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "96e7f9122aae0ed000ee321f324b812a447906d9", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RDMA_RXE", "NVME_RDMA", "NVME_TARGET_RDMA", "SUNRPC_XPRT_RDMA", "CIFS_SMB_DIRECT", "SMB_SERVER_SMBDIRECT", "INFINIBAND_SRP", "INFINIBAND_SRPT", "INFINIBAND_ISER", "INFINIBAND_ISERT", "INFINIBAND_RTRS_CLIENT", "INFINIBAND_RTRS_SERVER", "RDS_RDMA", "INFINIBAND_IPOIB" ], "series_id": "57d6a629-de1f-458c-a52b-c75a84ca9738" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nvme_rdma_find_get_device", "nvmet_rdma_find_get_device", "frwr_query_device", "rxe_qp_chk_cap", "rxe_srq_chk_init", "smbdirect_connection_create_qp", "rds_ib_cm_fill_conn_param", "svc_rdma_accept", "rpcrdma_ep_create" ], "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+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JETUFfUlhFJiMzNDssCiAgICAmIzM0O05WTUVfUkRNQSYjMzQ7LAogICAgJiMzNDtOVk1FX1RBUkdFVF9SRE1BJiMzNDssCiAgICAmIzM0O1NVTlJQQ19YUFJUX1JETUEmIzM0OywKICAgICYjMzQ7Q0lGU19TTUJfRElSRUNUJiMzNDssCiAgICAmIzM0O1NNQl9TRVJWRVJfU01CRElSRUNUJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfU1JQJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfU1JQVCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX0lTRVImIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9JU0VSVCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX1JUUlNfQ0xJRU5UJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfUlRSU19TRVJWRVImIzM0OywKICAgICYjMzQ7UkRTX1JETUEmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9JUE9JQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O252bWVfcmRtYV9maW5kX2dldF9kZXZpY2UmIzM0OywKICAgICYjMzQ7bnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2UmIzM0OywKICAgICYjMzQ7ZnJ3cl9xdWVyeV9kZXZpY2UmIzM0OywKICAgICYjMzQ7cnhlX3FwX2Noa19jYXAmIzM0OywKICAgICYjMzQ7cnhlX3NycV9jaGtfaW5pdCYjMzQ7LAogICAgJiMzNDtzbWJkaXJlY3RfY29ubmVjdGlvbl9jcmVhdGVfcXAmIzM0OywKICAgICYjMzQ7cmRzX2liX2NtX2ZpbGxfY29ubl9wYXJhbSYjMzQ7LAogICAgJiMzNDtzdmNfcmRtYV9hY2NlcHQmIzM0OywKICAgICYjMzQ7cnBjcmRtYV9lcF9jcmVhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZXMgb2YgdmFyaW91cyBSRE1BIGRldmljZSBhdHRyaWJ1dGVzIGZyb20gYGludGAgdG8gYHUzMmAgYW5kIHVwZGF0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgYG1pbigpYCBjYWxscyBhbmQgZm9ybWF0IHN0cmluZ3MuIEl0IGFsc28gZml4ZXMgc29tZSBwb3RlbnRpYWwgdW5kZXJmbG93cyBpbiBjb25uZWN0aW9uIHNldHVwIGZ1bmN0aW9ucy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgUkRNQSBsb2dpYyBhbmQgdmFyaW91cyBSRE1BIFVMUHMgKFVwcGVyIExheWVyIFByb3RvY29scykgd2hpY2ggY2FuIGJlIHRlc3RlZCB1c2luZyB0aGUgc29mdHdhcmUgUkRNQSBkcml2ZXIgKFJYRSkuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyBpbnRlZ2VyIG92ZXJmbG93L3VuZGVyZmxvdyBidWdzIHdlcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAyMDo0NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDMwMjUzOTBiMDkzNTllMTkwNGQyMzlhMWIyNzQxNjE0NDg0YmU3MjVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1biAxOSAyMDo0NjoyMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvY29yZS9jcS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvY3EuY1xuaW5kZXggM2Q3YjZjZGRkMTMxYzQuLmVlOTgxODhlNTdmYjVmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvY3EuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvY3EuY1xuQEAgLTM5Myw4ICYjNDM7MzkzLDcgQEAgc3RhdGljIGludCBpYl9hbGxvY19jcXMoc3RydWN0IGliX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgbnJfY3FlcyxcbiBcdCAqIGEgcmVhc29uYWJsZSBiYXRjaCBzaXplIHNvIHRoYXQgd2UgY2FuIHNoYXJlIENRcyBiZXR3ZWVuXG4gXHQgKiBtdWx0aXBsZSB1c2VycyBpbnN0ZWFkIG9mIGFsbG9jYXRpbmcgYSBsYXJnZXIgbnVtYmVyIG9mIENRcy5cbiBcdCAqL1xuLVx0bnJfY3FlcyA9IG1pbl90KHVuc2lnbmVkIGludCwgZGV2LVx1MDAzZWF0dHJzLm1heF9jcWUsXG4tXHRcdFx0bWF4KG5yX2NxZXMsIElCX01BWF9TSEFSRURfQ1FfU1opKTtcbiYjNDM7XHRucl9jcWVzID0gbWluKGRldi1cdTAwM2VhdHRycy5tYXhfY3FlLCBtYXgobnJfY3FlcywgSUJfTUFYX1NIQVJFRF9DUV9TWikpO1xuIFx0bnJfY3FzID0gbWluX3QodW5zaWduZWQgaW50LCBkZXYtXHUwMDNlbnVtX2NvbXBfdmVjdG9ycywgbnVtX29ubGluZV9jcHVzKCkpO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnJfY3FzOyBpJiM0MzsmIzQzOykge1xuIFx0XHRjcSA9IGliX2FsbG9jX2NxKGRldiwgTlVMTCwgbnJfY3FlcywgaSwgcG9sbF9jdHgpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xZWRyL3ZlcmJzLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWVkci92ZXJicy5jXG5pbmRleCA2NzlhYTZmM2E2M2JjNS4uYTg1YWQwMTcxMTM0OGUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWVkci92ZXJicy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWVkci92ZXJicy5jXG5AQCAtMTUxLDcgJiM0MzsxNTEsNyBAQCBpbnQgcWVkcl9xdWVyeV9kZXZpY2Uoc3RydWN0IGliX2RldmljZSAqaWJkZXYsXG4gXHRhdHRyLVx1MDAzZW1heF9xcF9pbml0X3JkX2F0b20gPVxuIFx0ICAgIDEgXHUwMDNjXHUwMDNjIChmbHMocWF0dHItXHUwMDNlbWF4X3FwX3JlcV9yZF9hdG9taWNfcmVzYykgLSAxKTtcbiBcdGF0dHItXHUwMDNlbWF4X3FwX3JkX2F0b20gPVxuLVx0ICAgIG1pbigxIFx1MDAzY1x1MDAzYyAoZmxzKHFhdHRyLVx1MDAzZW1heF9xcF9yZXNwX3JkX2F0b21pY19yZXNjKSAtIDEpLFxuJiM0MztcdCAgICBtaW4oMVUgXHUwMDNjXHUwMDNjIChmbHMocWF0dHItXHUwMDNlbWF4X3FwX3Jlc3BfcmRfYXRvbWljX3Jlc2MpIC0gMSksXG4gXHRcdGF0dHItXHUwMDNlbWF4X3FwX2luaXRfcmRfYXRvbSk7XG4gXG4gXHRhdHRyLVx1MDAzZW1heF9zcnEgPSBxYXR0ci1cdTAwM2VtYXhfc3JxO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3FwLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jXG5pbmRleCBmM2RmZjFhZWE5NmFmYy4uN2EwNTI5YTE3OTkyYzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jXG5AQCAtNjcsMjcgJiM0Mzs2NywyNyBAQCBzdGF0aWMgaW50IHJ4ZV9xcF9jaGtfY2FwKHN0cnVjdCByeGVfZGV2ICpyeGUsIHN0cnVjdCBpYl9xcF9jYXAgKmNhcCxcbiBcdFx0XHQgIGludCBoYXNfc3JxKVxuIHtcbiBcdGlmIChjYXAtXHUwMDNlbWF4X3NlbmRfd3IgXHUwMDNlIHJ4ZS1cdTAwM2VhdHRyLm1heF9xcF93cikge1xuLVx0XHRyeGVfZGJnX2RldihyeGUsIFwmIzM0O2ludmFsaWQgc2VuZCB3ciA9ICV1IFx1MDAzZSAlZFxcblwmIzM0Oyxcbi1cdFx0XHQgY2FwLVx1MDAzZW1heF9zZW5kX3dyLCByeGUtXHUwMDNlYXR0ci5tYXhfcXBfd3IpO1xuJiM0MztcdFx0cnhlX2RiZ19kZXYocnhlLCBcJiMzNDtpbnZhbGlkIHNlbmQgd3IgPSAldSBcdTAwM2UgJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCAgICBjYXAtXHUwMDNlbWF4X3NlbmRfd3IsIHJ4ZS1cdTAwM2VhdHRyLm1heF9xcF93cik7XG4gXHRcdGdvdG8gZXJyMTtcbiBcdH1cbiBcbiBcdGlmIChjYXAtXHUwMDNlbWF4X3NlbmRfc2dlIFx1MDAzZSByeGUtXHUwMDNlYXR0ci5tYXhfc2VuZF9zZ2UpIHtcbi1cdFx0cnhlX2RiZ19kZXYocnhlLCBcJiMzNDtpbnZhbGlkIHNlbmQgc2dlID0gJXUgXHUwMDNlICVkXFxuXCYjMzQ7LFxuLVx0XHRcdCBjYXAtXHUwMDNlbWF4X3NlbmRfc2dlLCByeGUtXHUwMDNlYXR0ci5tYXhfc2VuZF9zZ2UpO1xuJiM0MztcdFx0cnhlX2RiZ19kZXYocnhlLCBcJiMzNDtpbnZhbGlkIHNlbmQgc2dlID0gJXUgXHUwMDNlICV1XFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgY2FwLVx1MDAzZW1heF9zZW5kX3NnZSwgcnhlLVx1MDAzZWF0dHIubWF4X3NlbmRfc2dlKTtcbiBcdFx0Z290byBlcnIxO1xuIFx0fVxuIFxuIFx0aWYgKCFoYXNfc3JxKSB7XG4gXHRcdGlmIChjYXAtXHUwMDNlbWF4X3JlY3Zfd3IgXHUwMDNlIHJ4ZS1cdTAwM2VhdHRyLm1heF9xcF93cikge1xuLVx0XHRcdHJ4ZV9kYmdfZGV2KHJ4ZSwgXCYjMzQ7aW52YWxpZCByZWN2IHdyID0gJXUgXHUwMDNlICVkXFxuXCYjMzQ7LFxuLVx0XHRcdFx0IGNhcC1cdTAwM2VtYXhfcmVjdl93ciwgcnhlLVx1MDAzZWF0dHIubWF4X3FwX3dyKTtcbiYjNDM7XHRcdFx0cnhlX2RiZ19kZXYocnhlLCBcJiMzNDtpbnZhbGlkIHJlY3Ygd3IgPSAldSBcdTAwM2UgJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0ICAgIGNhcC1cdTAwM2VtYXhfcmVjdl93ciwgcnhlLVx1MDAzZWF0dHIubWF4X3FwX3dyKTtcbiBcdFx0XHRnb3RvIGVycjE7XG4gXHRcdH1cbiBcbiBcdFx0aWYgKGNhcC1cdTAwM2VtYXhfcmVjdl9zZ2UgXHUwMDNlIHJ4ZS1cdTAwM2VhdHRyLm1heF9yZWN2X3NnZSkge1xuLVx0XHRcdHJ4ZV9kYmdfZGV2KHJ4ZSwgXCYjMzQ7aW52YWxpZCByZWN2IHNnZSA9ICV1IFx1MDAzZSAlZFxcblwmIzM0Oyxcbi1cdFx0XHRcdCBjYXAtXHUwMDNlbWF4X3JlY3Zfc2dlLCByeGUtXHUwMDNlYXR0ci5tYXhfcmVjdl9zZ2UpO1xuJiM0MztcdFx0XHRyeGVfZGJnX2RldihyeGUsIFwmIzM0O2ludmFsaWQgcmVjdiBzZ2UgPSAldSBcdTAwM2UgJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0ICAgIGNhcC1cdTAwM2VtYXhfcmVjdl9zZ2UsIHJ4ZS1cdTAwM2VhdHRyLm1heF9yZWN2X3NnZSk7XG4gXHRcdFx0Z290byBlcnIxO1xuIFx0XHR9XG4gXHR9XG5AQCAtNTM3LDkgJiM0Mzs1MzcsOSBAQCBpbnQgcnhlX3FwX2Noa19hdHRyKHN0cnVjdCByeGVfZGV2ICpyeGUsIHN0cnVjdCByeGVfcXAgKnFwLFxuIFxuIFx0aWYgKG1hc2sgXHUwMDI2IElCX1FQX01BWF9RUF9SRF9BVE9NSUMpIHtcbiBcdFx0aWYgKGF0dHItXHUwMDNlbWF4X3JkX2F0b21pYyBcdTAwM2UgcnhlLVx1MDAzZWF0dHIubWF4X3FwX3JkX2F0b20pIHtcbi1cdFx0XHRyeGVfZGJnX3FwKHFwLCBcJiMzNDtpbnZhbGlkIG1heF9yZF9hdG9taWMgJWQgXHUwMDNlICVkXFxuXCYjMzQ7LFxuLVx0XHRcdFx0IGF0dHItXHUwMDNlbWF4X3JkX2F0b21pYyxcbi1cdFx0XHRcdCByeGUtXHUwMDNlYXR0ci5tYXhfcXBfcmRfYXRvbSk7XG4mIzQzO1x0XHRcdHJ4ZV9kYmdfcXAocXAsIFwmIzM0O2ludmFsaWQgbWF4X3JkX2F0b21pYyAldSBcdTAwM2UgJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdFx0ICAgYXR0ci1cdTAwM2VtYXhfcmRfYXRvbWljLFxuJiM0MztcdFx0XHRcdCAgIHJ4ZS1cdTAwM2VhdHRyLm1heF9xcF9yZF9hdG9tKTtcbiBcdFx0XHRnb3RvIGVycjE7XG4gXHRcdH1cbiBcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9zcnEuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3NycS5jXG5pbmRleCBjOWE3Y2QzODk1M2QzMS4uNzQ5MDRhNmZkZjJiMjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9zcnEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfc3JxLmNcbkBAIC0xMyw4ICYjNDM7MTMsOCBAQCBpbnQgcnhlX3NycV9jaGtfaW5pdChzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgaWJfc3JxX2luaXRfYXR0ciAqaW5pdClcbiBcdHN0cnVjdCBpYl9zcnFfYXR0ciAqYXR0ciA9IFx1MDAyNmluaXQtXHUwMDNlYXR0cjtcbiBcbiBcdGlmIChhdHRyLVx1MDAzZW1heF93ciBcdTAwM2UgcnhlLVx1MDAzZWF0dHIubWF4X3NycV93cikge1xuLVx0XHRyeGVfZGJnX2RldihyeGUsIFwmIzM0O21heF93ciglZCkgXHUwMDNlIG1heF9zcnFfd3IoJWQpXFxuXCYjMzQ7LFxuLVx0XHRcdGF0dHItXHUwMDNlbWF4X3dyLCByeGUtXHUwMDNlYXR0ci5tYXhfc3JxX3dyKTtcbiYjNDM7XHRcdHJ4ZV9kYmdfZGV2KHJ4ZSwgXCYjMzQ7bWF4X3dyKCV1KSBcdTAwM2UgbWF4X3NycV93cigldSlcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCAgICBhdHRyLVx1MDAzZW1heF93ciwgcnhlLVx1MDAzZWF0dHIubWF4X3NycV93cik7XG4gXHRcdGdvdG8gZXJyMTtcbiBcdH1cbiBcbkBAIC0yNyw4ICYjNDM7MjcsOCBAQCBpbnQgcnhlX3NycV9jaGtfaW5pdChzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgaWJfc3JxX2luaXRfYXR0ciAqaW5pdClcbiBcdFx0YXR0ci1cdTAwM2VtYXhfd3IgPSBSWEVfTUlOX1NSUV9XUjtcbiBcbiBcdGlmIChhdHRyLVx1MDAzZW1heF9zZ2UgXHUwMDNlIHJ4ZS1cdTAwM2VhdHRyLm1heF9zcnFfc2dlKSB7XG4tXHRcdHJ4ZV9kYmdfZGV2KHJ4ZSwgXCYjMzQ7bWF4X3NnZSglZCkgXHUwMDNlIG1heF9zcnFfc2dlKCVkKVxcblwmIzM0Oyxcbi1cdFx0XHRhdHRyLVx1MDAzZW1heF9zZ2UsIHJ4ZS1cdTAwM2VhdHRyLm1heF9zcnFfc2dlKTtcbiYjNDM7XHRcdHJ4ZV9kYmdfZGV2KHJ4ZSwgXCYjMzQ7bWF4X3NnZSgldSkgXHUwMDNlIG1heF9zcnFfc2dlKCV1KVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgIGF0dHItXHUwMDNlbWF4X3NnZSwgcnhlLVx1MDAzZWF0dHIubWF4X3NycV9zZ2UpO1xuIFx0XHRnb3RvIGVycjE7XG4gXHR9XG4gXG5AQCAtMTA3LDggJiM0MzsxMDcsOCBAQCBpbnQgcnhlX3NycV9jaGtfYXR0cihzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgcnhlX3NycSAqc3JxLFxuIFxuIFx0aWYgKG1hc2sgXHUwMDI2IElCX1NSUV9NQVhfV1IpIHtcbiBcdFx0aWYgKGF0dHItXHUwMDNlbWF4X3dyIFx1MDAzZSByeGUtXHUwMDNlYXR0ci5tYXhfc3JxX3dyKSB7XG4tXHRcdFx0cnhlX2RiZ19zcnEoc3JxLCBcJiMzNDttYXhfd3IoJWQpIFx1MDAzZSBtYXhfc3JxX3dyKCVkKVxcblwmIzM0Oyxcbi1cdFx0XHRcdGF0dHItXHUwMDNlbWF4X3dyLCByeGUtXHUwMDNlYXR0ci5tYXhfc3JxX3dyKTtcbiYjNDM7XHRcdFx0cnhlX2RiZ19zcnEoc3JxLCBcJiMzNDttYXhfd3IoJXUpIFx1MDAzZSBtYXhfc3JxX3dyKCV1KVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgICAgYXR0ci1cdTAwM2VtYXhfd3IsIHJ4ZS1cdTAwM2VhdHRyLm1heF9zcnFfd3IpO1xuIFx0XHRcdGdvdG8gZXJyMTtcbiBcdFx0fVxuIFxuQEAgLTEyOSw4ICYjNDM7MTI5LDggQEAgaW50IHJ4ZV9zcnFfY2hrX2F0dHIoc3RydWN0IHJ4ZV9kZXYgKnJ4ZSwgc3RydWN0IHJ4ZV9zcnEgKnNycSxcbiBcbiBcdGlmIChtYXNrIFx1MDAyNiBJQl9TUlFfTElNSVQpIHtcbiBcdFx0aWYgKGF0dHItXHUwMDNlc3JxX2xpbWl0IFx1MDAzZSByeGUtXHUwMDNlYXR0ci5tYXhfc3JxX3dyKSB7XG4tXHRcdFx0cnhlX2RiZ19zcnEoc3JxLCBcJiMzNDtzcnFfbGltaXQoJWQpIFx1MDAzZSBtYXhfc3JxX3dyKCVkKVxcblwmIzM0Oyxcbi1cdFx0XHRcdGF0dHItXHUwMDNlc3JxX2xpbWl0LCByeGUtXHUwMDNlYXR0ci5tYXhfc3JxX3dyKTtcbiYjNDM7XHRcdFx0cnhlX2RiZ19zcnEoc3JxLCBcJiMzNDtzcnFfbGltaXQoJXUpIFx1MDAzZSBtYXhfc3JxX3dyKCV1KVxcblwmIzM0OyxcbiYjNDM7XHRcdFx0XHQgICAgYXR0ci1cdTAwM2VzcnFfbGltaXQsIHJ4ZS1cdTAwM2VhdHRyLm1heF9zcnFfd3IpO1xuIFx0XHRcdGdvdG8gZXJyMTtcbiBcdFx0fVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfY20uYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfY20uY1xuaW5kZXggNTdmZWM4OGExNjI5MGEuLmVkMDU5Mjg5ODM4NGQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYl9jbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX2NtLmNcbkBAIC0xMDcxLDggJiM0MzsxMDcxLDcgQEAgc3RhdGljIHN0cnVjdCBpYl9xcCAqaXBvaWJfY21fY3JlYXRlX3R4X3FwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpcG9pYl9cbiBcdHN0cnVjdCBpYl9xcCAqdHhfcXA7XG4gXG4gXHRpZiAoZGV2LVx1MDAzZWZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX1NHKVxuLVx0XHRhdHRyLmNhcC5tYXhfc2VuZF9zZ2UgPSBtaW5fdCh1MzIsIHByaXYtXHUwMDNlY2EtXHUwMDNlYXR0cnMubWF4X3NlbmRfc2dlLFxuLVx0XHRcdFx0XHQgICAgICBNQVhfU0tCX0ZSQUdTICYjNDM7IDEpO1xuJiM0MztcdFx0YXR0ci5jYXAubWF4X3NlbmRfc2dlID0gbWluKHByaXYtXHUwMDNlY2EtXHUwMDNlYXR0cnMubWF4X3NlbmRfc2dlLCBNQVhfU0tCX0ZSQUdTICYjNDM7IDEpO1xuIFxuIFx0dHhfcXAgPSBpYl9jcmVhdGVfcXAocHJpdi1cdTAwM2VwZCwgXHUwMDI2YXR0cik7XG4gXHR0eC1cdTAwM2VtYXhfc2VuZF9zZ2UgPSBhdHRyLmNhcC5tYXhfc2VuZF9zZ2U7XG5AQCAtMTU4Miw3ICYjNDM7MTU4MSw4IEBAIHN0YXRpYyB2b2lkIGlwb2liX2NtX2NyZWF0ZV9zcnEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG1heF9zZ2UpXG4gaW50IGlwb2liX2NtX2Rldl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuIFx0c3RydWN0IGlwb2liX2Rldl9wcml2ICpwcml2ID0gaXBvaWJfcHJpdihkZXYpO1xuLVx0aW50IG1heF9zcnFfc2dlLCBpO1xuJiM0MztcdHUzMiBtYXhfc3JxX3NnZTtcbiYjNDM7XHRpbnQgaTtcbiBcdHU4IGFkZHI7XG4gXG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZwcml2LVx1MDAzZWNtLnBhc3NpdmVfaWRzKTtcbkBAIC0xNjAwLDkgJiM0MzsxNjAwLDkgQEAgaW50IGlwb2liX2NtX2Rldl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gXHRza2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNnByaXYtXHUwMDNlY20uc2tiX3F1ZXVlKTtcbiBcbi1cdGlwb2liX2RiZyhwcml2LCBcJiMzNDttYXhfc3JxX3NnZT0lZFxcblwmIzM0OywgcHJpdi1cdTAwM2VjYS1cdTAwM2VhdHRycy5tYXhfc3JxX3NnZSk7XG4mIzQzO1x0aXBvaWJfZGJnKHByaXYsIFwmIzM0O21heF9zcnFfc2dlPSV1XFxuXCYjMzQ7LCBwcml2LVx1MDAzZWNhLVx1MDAzZWF0dHJzLm1heF9zcnFfc2dlKTtcbiBcbi1cdG1heF9zcnFfc2dlID0gbWluX3QoaW50LCBJUE9JQl9DTV9SWF9TRywgcHJpdi1cdTAwM2VjYS1cdTAwM2VhdHRycy5tYXhfc3JxX3NnZSk7XG4mIzQzO1x0bWF4X3NycV9zZ2UgPSBtaW4ocHJpdi1cdTAwM2VjYS1cdTAwM2VhdHRycy5tYXhfc3JxX3NnZSwgSVBPSUJfQ01fUlhfU0cpO1xuIFx0aXBvaWJfY21fY3JlYXRlX3NycShkZXYsIG1heF9zcnFfc2dlKTtcbiBcdGlmIChpcG9pYl9jbV9oYXNfc3JxKGRldikpIHtcbiBcdFx0cHJpdi1cdTAwM2VjbS5tYXhfY21fbXR1ID0gbWF4X3NycV9zZ2UgKiBQQUdFX1NJWkUgLSAweDEwO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfdmVyYnMuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfdmVyYnMuY1xuaW5kZXggM2VkMWVhNTY2NjkwZGQuLjI0OTA2OTZhMWFhYmM4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYl92ZXJicy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX3ZlcmJzLmNcbkBAIC0xNDcsOCAmIzQzOzE0Nyw3IEBAIGludCBpcG9pYl90cmFuc3BvcnRfZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGliX2RldmljZSAqY2EpXG4gXHRcdC5jYXAgPSB7XG4gXHRcdFx0Lm1heF9zZW5kX3dyICA9IGlwb2liX3NlbmRxX3NpemUsXG4gXHRcdFx0Lm1heF9yZWN2X3dyICA9IGlwb2liX3JlY3ZxX3NpemUsXG4tXHRcdFx0Lm1heF9zZW5kX3NnZSA9IG1pbl90KHUzMiwgcHJpdi1cdTAwM2VjYS1cdTAwM2VhdHRycy5tYXhfc2VuZF9zZ2UsXG4tXHRcdFx0XHRcdCAgICAgIE1BWF9TS0JfRlJBR1MgJiM0MzsgMSksXG4mIzQzO1x0XHRcdC5tYXhfc2VuZF9zZ2UgPSBtaW4ocHJpdi1cdTAwM2VjYS1cdTAwM2VhdHRycy5tYXhfc2VuZF9zZ2UsIE1BWF9TS0JfRlJBR1MgJiM0MzsgMSksXG4gXHRcdFx0Lm1heF9yZWN2X3NnZSA9IElQT0lCX1VEX1JYX1NHXG4gXHRcdH0sXG4gXHRcdC5zcV9zaWdfdHlwZSA9IElCX1NJR05BTF9BTExfV1IsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL2lzZXJfdmVyYnMuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlci9pc2VyX3ZlcmJzLmNcbmluZGV4IGYwM2IzYmIzYzBjNGMxLi41NWZlNjhlNWI4Mzc1ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlci9pc2VyX3ZlcmJzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlci9pc2VyX3ZlcmJzLmNcbkBAIC0yNDQsOCAmIzQzOzI0NCw3IEBAIHN0YXRpYyBpbnQgaXNlcl9jcmVhdGVfaWJfY29ubl9yZXMoc3RydWN0IGliX2Nvbm4gKmliX2Nvbm4pXG4gXHRcdG1heF9zZW5kX3dyID0gSVNFUl9RUF9TSUdfTUFYX1JFUV9EVE9TICYjNDM7IDE7XG4gXHRlbHNlXG4gXHRcdG1heF9zZW5kX3dyID0gSVNFUl9RUF9NQVhfUkVRX0RUT1MgJiM0MzsgMTtcbi1cdG1heF9zZW5kX3dyID0gbWluX3QodW5zaWduZWQgaW50LCBtYXhfc2VuZF93cixcbi1cdFx0XHQgICAgKHVuc2lnbmVkIGludClpYl9kZXYtXHUwMDNlYXR0cnMubWF4X3FwX3dyKTtcbiYjNDM7XHRtYXhfc2VuZF93ciA9IG1pbihtYXhfc2VuZF93ciwgaWJfZGV2LVx1MDAzZWF0dHJzLm1heF9xcF93cik7XG4gXG4gXHRjcV9zaXplID0gbWF4X3NlbmRfd3IgJiM0MzsgSVNFUl9RUF9NQVhfUkVDVl9EVE9TO1xuIFx0aWJfY29ubi1cdTAwM2VjcSA9IGliX2NxX3Bvb2xfZ2V0KGliX2RldiwgY3Ffc2l6ZSwgLTEsIElCX1BPTExfU09GVElSUSk7XG5AQCAtNTg5LDcgJiM0Mzs1ODgsNyBAQCBzdGF0aWMgdm9pZCBpc2VyX3JvdXRlX2hhbmRsZXIoc3RydWN0IHJkbWFfY21faWQgKmNtYV9pZClcbiBcdFx0Z290byBmYWlsdXJlO1xuIFxuIFx0bWVtc2V0KFx1MDAyNmNvbm5fcGFyYW0sIDAsIHNpemVvZiBjb25uX3BhcmFtKTtcbi1cdGNvbm5fcGFyYW0ucmVzcG9uZGVyX3Jlc291cmNlcyA9IGliX2Rldi1cdTAwM2VhdHRycy5tYXhfcXBfcmRfYXRvbTtcbiYjNDM7XHRjb25uX3BhcmFtLnJlc3BvbmRlcl9yZXNvdXJjZXMgPSBtaW4oaWJfZGV2LVx1MDAzZWF0dHJzLm1heF9xcF9yZF9hdG9tLCBVOF9NQVgpO1xuIFx0Y29ubl9wYXJhbS5pbml0aWF0b3JfZGVwdGggPSAxO1xuIFx0Y29ubl9wYXJhbS5yZXRyeV9jb3VudCA9IDc7XG4gXHRjb25uX3BhcmFtLnJucl9yZXRyeV9jb3VudCA9IDY7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VydC9pYl9pc2VydC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VydC9pYl9pc2VydC5jXG5pbmRleCAxMDE1YTUxZjc1MGFmNC4uNDY5MTg0NWJmODE1ZjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXJ0L2liX2lzZXJ0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvaWJfaXNlcnQuY1xuQEAgLTIxNCw5ICYjNDM7MjE0LDkgQEAgaXNlcnRfY3JlYXRlX2RldmljZV9pYl9yZXMoc3RydWN0IGlzZXJ0X2RldmljZSAqZGV2aWNlKVxuIFx0c3RydWN0IGliX2RldmljZSAqaWJfZGV2ID0gZGV2aWNlLVx1MDAzZWliX2RldmljZTtcbiBcdGludCByZXQ7XG4gXG4tXHRpc2VydF9kYmcoXCYjMzQ7ZGV2YXR0ci1cdTAwM2VtYXhfc2VuZF9zZ2U6ICVkIGRldmF0dHItXHUwMDNlbWF4X3JlY3Zfc2dlICVkXFxuXCYjMzQ7LFxuJiM0MztcdGlzZXJ0X2RiZyhcJiMzNDtkZXZhdHRyLVx1MDAzZW1heF9zZW5kX3NnZTogJXUgZGV2YXR0ci1cdTAwM2VtYXhfcmVjdl9zZ2UgJXVcXG5cJiMzNDssXG4gXHRcdCAgaWJfZGV2LVx1MDAzZWF0dHJzLm1heF9zZW5kX3NnZSwgaWJfZGV2LVx1MDAzZWF0dHJzLm1heF9yZWN2X3NnZSk7XG4tXHRpc2VydF9kYmcoXCYjMzQ7ZGV2YXR0ci1cdTAwM2VtYXhfc2dlX3JkOiAlZFxcblwmIzM0OywgaWJfZGV2LVx1MDAzZWF0dHJzLm1heF9zZ2VfcmQpO1xuJiM0MztcdGlzZXJ0X2RiZyhcJiMzNDtkZXZhdHRyLVx1MDAzZW1heF9zZ2VfcmQ6ICV1XFxuXCYjMzQ7LCBpYl9kZXYtXHUwMDNlYXR0cnMubWF4X3NnZV9yZCk7XG4gXG4gXHRkZXZpY2UtXHUwMDNlcGQgPSBpYl9hbGxvY19wZChpYl9kZXYsIDApO1xuIFx0aWYgKElTX0VSUihkZXZpY2UtXHUwMDNlcGQpKSB7XG5AQCAtMzgxLDggJiM0MzszODEsNyBAQCBpc2VydF9zZXRfbmVnb19wYXJhbXMoc3RydWN0IGlzZXJ0X2Nvbm4gKmlzZXJ0X2Nvbm4sXG4gXHRzdHJ1Y3QgaWJfZGV2aWNlX2F0dHIgKmF0dHIgPSBcdTAwMjZpc2VydF9jb25uLVx1MDAzZWRldmljZS1cdTAwM2VpYl9kZXZpY2UtXHUwMDNlYXR0cnM7XG4gXG4gXHQvKiBTZXQgbWF4IGluZmxpZ2h0IFJETUEgUkVBRCByZXF1ZXN0cyAqL1xuLVx0aXNlcnRfY29ubi1cdTAwM2Vpbml0aWF0b3JfZGVwdGggPSBtaW5fdCh1OCwgcGFyYW0tXHUwMDNlaW5pdGlhdG9yX2RlcHRoLFxuLVx0XHRcdFx0YXR0ci1cdTAwM2VtYXhfcXBfaW5pdF9yZF9hdG9tKTtcbiYjNDM7XHRpc2VydF9jb25uLVx1MDAzZWluaXRpYXRvcl9kZXB0aCA9IG1pbihwYXJhbS1cdTAwM2Vpbml0aWF0b3JfZGVwdGgsIGF0dHItXHUwMDNlbWF4X3FwX2luaXRfcmRfYXRvbSk7XG4gXHRpc2VydF9kYmcoXCYjMzQ7VXNpbmcgaW5pdGlhdG9yX2RlcHRoOiAldVxcblwmIzM0OywgaXNlcnRfY29ubi1cdTAwM2Vpbml0aWF0b3JfZGVwdGgpO1xuIFxuIFx0aWYgKHBhcmFtLVx1MDAzZXByaXZhdGVfZGF0YSkge1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9ydHJzLWNsdC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtY2x0LmNcbmluZGV4IGUzNTE1NTI3MzNkZjIzLi44MGIwODY5N2Y5NmI1OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9ydHJzLWNsdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvcnRycy1jbHQuY1xuQEAgLTE2ODEsOCAmIzQzOzE2ODEsNyBAQCBzdGF0aWMgaW50IGNyZWF0ZV9jb25fY3FfcXAoc3RydWN0IHJ0cnNfY2x0X2NvbiAqY29uKVxuIFx0XHQgKiAmIzQzOyAyIGZvciBkcmFpbiBhbmQgaGVhcnRiZWF0XG4gXHRcdCAqIGluIGNhc2UgcXAgZ2V0cyBpbnRvIGVycm9yIHN0YXRlLlxuIFx0XHQgKi9cbi1cdFx0bWF4X3NlbmRfd3IgPVxuLVx0XHRcdG1pbl90KGludCwgd3JfbGltaXQsIFNFUlZJQ0VfQ09OX1FVRVVFX0RFUFRIICogMiAmIzQzOyAyKTtcbiYjNDM7XHRcdG1heF9zZW5kX3dyID0gbWluKHdyX2xpbWl0LCBTRVJWSUNFX0NPTl9RVUVVRV9ERVBUSCAqIDIgJiM0MzsgMik7XG4gXHRcdG1heF9yZWN2X3dyID0gbWF4X3NlbmRfd3I7XG4gXHR9IGVsc2Uge1xuIFx0XHQvKlxuQEAgLTE2OTgsMTEgJiM0MzsxNjk3LDkgQEAgc3RhdGljIGludCBjcmVhdGVfY29uX2NxX3FwKHN0cnVjdCBydHJzX2NsdF9jb24gKmNvbilcbiBcdFx0d3JfbGltaXQgPSBjbHRfcGF0aC1cdTAwM2VzLmRldi1cdTAwM2VpYl9kZXYtXHUwMDNlYXR0cnMubWF4X3FwX3dyO1xuIFx0XHQvKiBTaGFyZWQgYmV0d2VlbiBjb25uZWN0aW9ucyAqL1xuIFx0XHRjbHRfcGF0aC1cdTAwM2VzLmRldl9yZWYmIzQzOyYjNDM7O1xuLVx0XHRtYXhfc2VuZF93ciA9IG1pbl90KGludCwgd3JfbGltaXQsXG4tXHRcdFx0ICAgICAgLyogUUQgKiAoUkVRICYjNDM7IFJTUCAmIzQzOyBGUiBSRUdTIG9yIElOVlMpICYjNDM7IGRyYWluICovXG4tXHRcdFx0ICAgICAgY2x0X3BhdGgtXHUwMDNlcXVldWVfZGVwdGggKiA0ICYjNDM7IDEpO1xuLVx0XHRtYXhfcmVjdl93ciA9IG1pbl90KGludCwgd3JfbGltaXQsXG4tXHRcdFx0ICAgICAgY2x0X3BhdGgtXHUwMDNlcXVldWVfZGVwdGggKiAzICYjNDM7IDEpO1xuJiM0MztcdFx0LyogUUQgKiAoUkVRICYjNDM7IFJTUCAmIzQzOyBGUiBSRUdTIG9yIElOVlMpICYjNDM7IGRyYWluICovXG4mIzQzO1x0XHRtYXhfc2VuZF93ciA9IG1pbih3cl9saW1pdCwgY2x0X3BhdGgtXHUwMDNlcXVldWVfZGVwdGggKiA0ICYjNDM7IDEpO1xuJiM0MztcdFx0bWF4X3JlY3Zfd3IgPSBtaW4od3JfbGltaXQsIGNsdF9wYXRoLVx1MDAzZXF1ZXVlX2RlcHRoICogMyAmIzQzOyAxKTtcbiBcdFx0bWF4X3NlbmRfc2dlID0gMjtcbiBcdH1cbiBcdGF0b21pY19zZXQoXHUwMDI2Y29uLVx1MDAzZWMuc3Ffd3JfYXZhaWwsIG1heF9zZW5kX3dyKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvcnRycy1zcnYuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9ydHJzLXNydi5jXG5pbmRleCA2NDgyYWQ4NTliZDEwOC4uZjVhNjg5MDIzNWJjYzQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvcnRycy1zcnYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtc3J2LmNcbkBAIC0xNzMxLDIxICYjNDM7MTczMSwxNiBAQCBzdGF0aWMgaW50IGNyZWF0ZV9jb24oc3RydWN0IHJ0cnNfc3J2X3BhdGggKnNydl9wYXRoLFxuIFx0XHQgKiBBbGwgcmVjZWl2ZSBhbmQgYWxsIHNlbmQgKGVhY2ggcmVxdWlyaW5nIGludmFsaWRhdGUpXG4gXHRcdCAqICYjNDM7IDIgZm9yIGRyYWluIGFuZCBoZWFydGJlYXRcbiBcdFx0ICovXG4tXHRcdG1heF9zZW5kX3dyID0gbWluX3QoaW50LCB3cl9saW1pdCxcbi1cdFx0XHRcdCAgICBTRVJWSUNFX0NPTl9RVUVVRV9ERVBUSCAqIDIgJiM0MzsgMik7XG4mIzQzO1x0XHRtYXhfc2VuZF93ciA9IG1pbih3cl9saW1pdCwgU0VSVklDRV9DT05fUVVFVUVfREVQVEggKiAyICYjNDM7IDIpO1xuIFx0XHRtYXhfcmVjdl93ciA9IG1heF9zZW5kX3dyO1xuIFx0XHRzLVx1MDAzZXNpZ25hbF9pbnRlcnZhbCA9IG1pbl9ub3RfemVybyhzcnYtXHUwMDNlcXVldWVfZGVwdGgsXG4gXHRcdFx0XHRcdFx0ICAoc2l6ZV90KVNFUlZJQ0VfQ09OX1FVRVVFX0RFUFRIKTtcbiBcdH0gZWxzZSB7XG4gXHRcdC8qIHdoZW4gYWx3YXlzX2ludmxhaWRhdGUgZW5hbGJlZCwgd2UgbmVlZCBsaW52JiM0MztyaW52JiM0MzttciYjNDM7aW1tICovXG4gXHRcdGlmIChhbHdheXNfaW52YWxpZGF0ZSlcbi1cdFx0XHRtYXhfc2VuZF93ciA9XG4tXHRcdFx0XHRtaW5fdChpbnQsIHdyX2xpbWl0LFxuLVx0XHRcdFx0ICAgICAgc3J2LVx1MDAzZXF1ZXVlX2RlcHRoICogKDEgJiM0MzsgNCkgJiM0MzsgMSk7XG4mIzQzO1x0XHRcdG1heF9zZW5kX3dyID0gbWluKHdyX2xpbWl0LCBzcnYtXHUwMDNlcXVldWVfZGVwdGggKiAoMSAmIzQzOyA0KSAmIzQzOyAxKTtcbiBcdFx0ZWxzZVxuLVx0XHRcdG1heF9zZW5kX3dyID1cbi1cdFx0XHRcdG1pbl90KGludCwgd3JfbGltaXQsXG4tXHRcdFx0XHQgICAgICBzcnYtXHUwMDNlcXVldWVfZGVwdGggKiAoMSAmIzQzOyAyKSAmIzQzOyAxKTtcbiYjNDM7XHRcdFx0bWF4X3NlbmRfd3IgPSBtaW4od3JfbGltaXQsIHNydi1cdTAwM2VxdWV1ZV9kZXB0aCAqICgxICYjNDM7IDIpICYjNDM7IDEpO1xuIFxuIFx0XHRtYXhfcmVjdl93ciA9IHNydi1cdTAwM2VxdWV1ZV9kZXB0aCAmIzQzOyAxO1xuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL2liX3NycC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnAvaWJfc3JwLmNcbmluZGV4IGFjYmQ3ODdkZTI2NWI1Li4wY2FlYmJjMjgxMGZmMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL2liX3NycC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycC9pYl9zcnAuY1xuQEAgLTU1Nyw3ICYjNDM7NTU3LDcgQEAgc3RhdGljIGludCBzcnBfY3JlYXRlX2NoX2liKHN0cnVjdCBzcnBfcmRtYV9jaCAqY2gpXG4gXHRpbml0X2F0dHItXHUwMDNlY2FwLm1heF9zZW5kX3dyICAgICA9IG0gKiB0YXJnZXQtXHUwMDNlcXVldWVfc2l6ZTtcbiBcdGluaXRfYXR0ci1cdTAwM2VjYXAubWF4X3JlY3Zfd3IgICAgID0gdGFyZ2V0LVx1MDAzZXF1ZXVlX3NpemUgJiM0MzsgMTtcbiBcdGluaXRfYXR0ci1cdTAwM2VjYXAubWF4X3JlY3Zfc2dlICAgID0gMTtcbi1cdGluaXRfYXR0ci1cdTAwM2VjYXAubWF4X3NlbmRfc2dlICAgID0gbWluKFNSUF9NQVhfU0dFLCBhdHRyLVx1MDAzZW1heF9zZW5kX3NnZSk7XG4mIzQzO1x0aW5pdF9hdHRyLVx1MDAzZWNhcC5tYXhfc2VuZF9zZ2UgICAgPSBtaW4oYXR0ci1cdTAwM2VtYXhfc2VuZF9zZ2UsIFNSUF9NQVhfU0dFKTtcbiBcdGluaXRfYXR0ci1cdTAwM2VzcV9zaWdfdHlwZSAgICAgICAgID0gSUJfU0lHTkFMX1JFUV9XUjtcbiBcdGluaXRfYXR0ci1cdTAwM2VxcF90eXBlICAgICAgICAgICAgID0gSUJfUVBUX1JDO1xuIFx0aW5pdF9hdHRyLVx1MDAzZXNlbmRfY3EgICAgICAgICAgICAgPSBzZW5kX2NxO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwdC9pYl9zcnB0LmMgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycHQvaWJfc3JwdC5jXG5pbmRleCA5YWVjNWQ4MDExN2YxZi4uYTRlNGZlYmE0YTAyNTMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycHQvaWJfc3JwdC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycHQvaWJfc3JwdC5jXG5AQCAtNzcsOCAmIzQzOzc3LDggQEAgbW9kdWxlX3BhcmFtKHNycF9tYXhfcmVxX3NpemUsIGludCwgMDQ0NCk7XG4gTU9EVUxFX1BBUk1fREVTQyhzcnBfbWF4X3JlcV9zaXplLFxuIFx0XHQgXCYjMzQ7TWF4aW11bSBzaXplIG9mIFNSUCByZXF1ZXN0IG1lc3NhZ2VzIGluIGJ5dGVzLlwmIzM0Oyk7XG4gXG4tc3RhdGljIGludCBzcnB0X3NycV9zaXplID0gREVGQVVMVF9TUlBUX1NSUV9TSVpFO1xuLW1vZHVsZV9wYXJhbShzcnB0X3NycV9zaXplLCBpbnQsIDA0NDQpO1xuJiM0MztzdGF0aWMgdW5zaWduZWQgaW50IHNycHRfc3JxX3NpemUgPSBERUZBVUxUX1NSUFRfU1JRX1NJWkU7XG4mIzQzO21vZHVsZV9wYXJhbShzcnB0X3NycV9zaXplLCB1aW50LCAwNDQ0KTtcbiBNT0RVTEVfUEFSTV9ERVNDKHNycHRfc3JxX3NpemUsXG4gXHRcdCBcJiMzNDtTaGFyZWQgcmVjZWl2ZSBxdWV1ZSAoU1JRKSBzaXplLlwmIzM0Oyk7XG4gXG5AQCAtNDA1LDggJiM0Mzs0MDUsNyBAQCBzdGF0aWMgdm9pZCBzcnB0X2dldF9pb2Moc3RydWN0IHNycHRfcG9ydCAqc3BvcnQsIHUzMiBzbG90LFxuIFx0aWYgKHNkZXYtXHUwMDNldXNlX3NycSlcbiBcdFx0c2VuZF9xdWV1ZV9kZXB0aCA9IHNkZXYtXHUwMDNlc3JxX3NpemU7XG4gXHRlbHNlXG4tXHRcdHNlbmRfcXVldWVfZGVwdGggPSBtaW4oTUFYX1NSUFRfUlFfU0laRSxcbi1cdFx0XHRcdCAgICAgICBzZGV2LVx1MDAzZWRldmljZS1cdTAwM2VhdHRycy5tYXhfcXBfd3IpO1xuJiM0MztcdFx0c2VuZF9xdWV1ZV9kZXB0aCA9IG1pbihzZGV2LVx1MDAzZWRldmljZS1cdTAwM2VhdHRycy5tYXhfcXBfd3IsIE1BWF9TUlBUX1JRX1NJWkUpO1xuIFxuIFx0bWVtc2V0KGlvY3AsIDAsIHNpemVvZigqaW9jcCkpO1xuIFx0c3RyY3B5KGlvY3AtXHUwMDNlaWRfc3RyaW5nLCBTUlBUX0lEX1NUUklORyk7XG5AQCAtMTg1MCw3ICYjNDM7MTg0OSw3IEBAIHN0YXRpYyBpbnQgc3JwdF9jcmVhdGVfY2hfaWIoc3RydWN0IHNycHRfcmRtYV9jaCAqY2gpXG4gXHRzdHJ1Y3Qgc3JwdF9wb3J0ICpzcG9ydCA9IGNoLVx1MDAzZXNwb3J0O1xuIFx0c3RydWN0IHNycHRfZGV2aWNlICpzZGV2ID0gc3BvcnQtXHUwMDNlc2RldjtcbiBcdGNvbnN0IHN0cnVjdCBpYl9kZXZpY2VfYXR0ciAqYXR0cnMgPSBcdTAwMjZzZGV2LVx1MDAzZWRldmljZS1cdTAwM2VhdHRycztcbi1cdGludCBzcV9zaXplID0gc3BvcnQtXHUwMDNlcG9ydF9hdHRyaWIuc3JwX3NxX3NpemU7XG4mIzQzO1x0dTMyIHNxX3NpemUgPSBzcG9ydC1cdTAwM2Vwb3J0X2F0dHJpYi5zcnBfc3Ffc2l6ZTtcbiBcdGludCBpLCByZXQ7XG4gXG4gXHRXQVJOX09OKGNoLVx1MDAzZXJxX3NpemUgXHUwMDNjIDEpO1xuQEAgLTE5MTEsMTMgJiM0MzsxOTEwLDEzIEBAIHN0YXRpYyBpbnQgc3JwdF9jcmVhdGVfY2hfaWIoc3RydWN0IHNycHRfcmRtYV9jaCAqY2gpXG4gXHRcdGJvb2wgcmV0cnkgPSBzcV9zaXplIFx1MDAzZSBNSU5fU1JQVF9TUV9TSVpFO1xuIFxuIFx0XHRpZiAocmV0cnkpIHtcbi1cdFx0XHRwcl9kZWJ1ZyhcJiMzNDtmYWlsZWQgdG8gY3JlYXRlIHF1ZXVlIHBhaXIgd2l0aCBzcV9zaXplID0gJWQgKCVkKSAtIHJldHJ5aW5nXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRwcl9kZWJ1ZyhcJiMzNDtmYWlsZWQgdG8gY3JlYXRlIHF1ZXVlIHBhaXIgd2l0aCBzcV9zaXplID0gJXUgKCVkKSAtIHJldHJ5aW5nXFxuXCYjMzQ7LFxuIFx0XHRcdFx0IHNxX3NpemUsIHJldCk7XG4gXHRcdFx0aWJfY3FfcG9vbF9wdXQoY2gtXHUwMDNlY3EsIGNoLVx1MDAzZWNxX3NpemUpO1xuIFx0XHRcdHNxX3NpemUgPSBtYXgoc3Ffc2l6ZSAvIDIsIE1JTl9TUlBUX1NRX1NJWkUpO1xuIFx0XHRcdGdvdG8gcmV0cnk7XG4gXHRcdH0gZWxzZSB7XG4tXHRcdFx0cHJfZXJyKFwmIzM0O2ZhaWxlZCB0byBjcmVhdGUgcXVldWUgcGFpciB3aXRoIHNxX3NpemUgPSAlZCAoJWQpXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHRwcl9lcnIoXCYjMzQ7ZmFpbGVkIHRvIGNyZWF0ZSBxdWV1ZSBwYWlyIHdpdGggc3Ffc2l6ZSA9ICV1ICglZClcXG5cJiMzNDssXG4gXHRcdFx0ICAgICAgIHNxX3NpemUsIHJldCk7XG4gXHRcdFx0Z290byBlcnJfZGVzdHJveV9jcTtcbiBcdFx0fVxuQEAgLTE5MjUsNyAmIzQzOzE5MjQsNyBAQCBzdGF0aWMgaW50IHNycHRfY3JlYXRlX2NoX2liKHN0cnVjdCBzcnB0X3JkbWFfY2ggKmNoKVxuIFxuIFx0YXRvbWljX3NldChcdTAwMjZjaC1cdTAwM2VzcV93cl9hdmFpbCwgcXBfaW5pdC1cdTAwM2VjYXAubWF4X3NlbmRfd3IpO1xuIFxuLVx0cHJfZGVidWcoXCYjMzQ7JXM6IG1heF9jcWU9ICVkIG1heF9zZ2U9ICVkIHNxX3NpemUgPSAlZCBjaD0gJXBcXG5cJiMzNDssXG4mIzQzO1x0cHJfZGVidWcoXCYjMzQ7JXM6IG1heF9jcWU9ICVkIG1heF9zZ2U9ICVkIHNxX3NpemUgPSAldSBjaD0gJXBcXG5cJiMzNDssXG4gXHRcdCBfX2Z1bmNfXywgY2gtXHUwMDNlY3EtXHUwMDNlY3FlLCBxcF9pbml0LVx1MDAzZWNhcC5tYXhfc2VuZF9zZ2UsXG4gXHRcdCBxcF9pbml0LVx1MDAzZWNhcC5tYXhfc2VuZF93ciwgY2gpO1xuIFxuQEAgLTIyOTgsNyAmIzQzOzIyOTcsNyBAQCBzdGF0aWMgaW50IHNycHRfY21fcmVxX3JlY3Yoc3RydWN0IHNycHRfZGV2aWNlICpjb25zdCBzZGV2LFxuIFx0ICogZGVwdGggdG8gYXZvaWQgdGhhdCB0aGUgaW5pdGlhdG9yIGRyaXZlciBoYXMgdG8gcmVwb3J0IFFVRVVFX0ZVTExcbiBcdCAqIHRvIHRoZSBTQ1NJIG1pZC1sYXllci5cbiBcdCAqL1xuLVx0Y2gtXHUwMDNlcnFfc2l6ZSA9IG1pbihNQVhfU1JQVF9SUV9TSVpFLCBzZGV2LVx1MDAzZWRldmljZS1cdTAwM2VhdHRycy5tYXhfcXBfd3IpO1xuJiM0MztcdGNoLVx1MDAzZXJxX3NpemUgPSBtaW4oc2Rldi1cdTAwM2VkZXZpY2UtXHUwMDNlYXR0cnMubWF4X3FwX3dyLCBNQVhfU1JQVF9SUV9TSVpFKTtcbiBcdHNwaW5fbG9ja19pbml0KFx1MDAyNmNoLVx1MDAzZXNwaW5sb2NrKTtcbiBcdGNoLVx1MDAzZXN0YXRlID0gQ0hfQ09OTkVDVElORztcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmNoLVx1MDAzZWNtZF93YWl0X2xpc3QpO1xuQEAgLTMxMzYsNyAmIzQzOzMxMzUsNyBAQCBzdGF0aWMgaW50IHNycHRfYWxsb2Nfc3JxKHN0cnVjdCBzcnB0X2RldmljZSAqc2RldilcbiBcdFx0cmV0dXJuIFBUUl9FUlIoc3JxKTtcbiBcdH1cbiBcbi1cdHByX2RlYnVnKFwmIzM0O2NyZWF0ZSBTUlEgI3dyPSAlZCBtYXhfYWxsb3c9JWQgZGV2PSAlc1xcblwmIzM0Oywgc2Rldi1cdTAwM2VzcnFfc2l6ZSxcbiYjNDM7XHRwcl9kZWJ1ZyhcJiMzNDtjcmVhdGUgU1JRICN3cj0gJWQgbWF4X2FsbG93PSV1IGRldj0gJXNcXG5cJiMzNDssIHNkZXYtXHUwMDNlc3JxX3NpemUsXG4gXHRcdCBzZGV2LVx1MDAzZWRldmljZS1cdTAwM2VhdHRycy5tYXhfc3JxX3dyLCBkZXZfbmFtZShcdTAwMjZkZXZpY2UtXHUwMDNlZGV2KSk7XG4gXG4gXHRzZGV2LVx1MDAzZXJlcV9idWZfY2FjaGUgPSBzcnB0X2NhY2hlX2dldChzcnBfbWF4X3JlcV9zaXplKTtcbkBAIC0zOTUxLDcgJiM0MzszOTUwLDcgQEAgc3RhdGljIGludCBfX2luaXQgc3JwdF9pbml0X21vZHVsZSh2b2lkKVxuIFxuIFx0aWYgKHNycHRfc3JxX3NpemUgXHUwMDNjIE1JTl9TUlBUX1NSUV9TSVpFXG4gXHQgICAgfHwgc3JwdF9zcnFfc2l6ZSBcdTAwM2UgTUFYX1NSUFRfU1JRX1NJWkUpIHtcbi1cdFx0cHJfZXJyKFwmIzM0O2ludmFsaWQgdmFsdWUgJWQgZm9yIGtlcm5lbCBtb2R1bGUgcGFyYW1ldGVyIHNycHRfc3JxX3NpemUgLS0gbXVzdCBiZSBpbiB0aGUgcmFuZ2UgWyVkLi4lZF0uXFxuXCYjMzQ7LFxuJiM0MztcdFx0cHJfZXJyKFwmIzM0O2ludmFsaWQgdmFsdWUgJXUgZm9yIGtlcm5lbCBtb2R1bGUgcGFyYW1ldGVyIHNycHRfc3JxX3NpemUgLS0gbXVzdCBiZSBpbiB0aGUgcmFuZ2UgWyVkLi4lZF0uXFxuXCYjMzQ7LFxuIFx0XHQgICAgICAgc3JwdF9zcnFfc2l6ZSwgTUlOX1NSUFRfU1JRX1NJWkUsIE1BWF9TUlBUX1NSUV9TSVpFKTtcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lL2hvc3QvcmRtYS5jIGIvZHJpdmVycy9udm1lL2hvc3QvcmRtYS5jXG5pbmRleCA2OTA5ZTM1NDI3OTQyNy4uNTZjZDIyOGFmMWQ1N2EgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL252bWUvaG9zdC9yZG1hLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbnZtZS9ob3N0L3JkbWEuY1xuQEAgLTM5NCw4ICYjNDM7Mzk0LDEwIEBAIG52bWVfcmRtYV9maW5kX2dldF9kZXZpY2Uoc3RydWN0IHJkbWFfY21faWQgKmNtX2lkKVxuIFx0XHRnb3RvIG91dF9mcmVlX3BkO1xuIFx0fVxuIFxuLVx0bmRldi1cdTAwM2VudW1faW5saW5lX3NlZ21lbnRzID0gbWluKE5WTUVfUkRNQV9NQVhfSU5MSU5FX1NFR01FTlRTLFxuLVx0XHRcdFx0XHRuZGV2LVx1MDAzZWRldi1cdTAwM2VhdHRycy5tYXhfc2VuZF9zZ2UgLSAxKTtcbiYjNDM7XHRuZGV2LVx1MDAzZW51bV9pbmxpbmVfc2VnbWVudHMgPSBuZGV2LVx1MDAzZWRldi1cdTAwM2VhdHRycy5tYXhfc2VuZF9zZ2U7XG4mIzQzO1x0aWYgKG5kZXYtXHUwMDNlbnVtX2lubGluZV9zZWdtZW50cylcbiYjNDM7XHRcdG5kZXYtXHUwMDNlbnVtX2lubGluZV9zZWdtZW50cy0tO1xuJiM0MztcdG5kZXYtXHUwMDNlbnVtX2lubGluZV9zZWdtZW50cyA9IG1pbihuZGV2LVx1MDAzZW51bV9pbmxpbmVfc2VnbWVudHMsIE5WTUVfUkRNQV9NQVhfSU5MSU5FX1NFR01FTlRTKTtcbiBcdGxpc3RfYWRkKFx1MDAyNm5kZXYtXHUwMDNlZW50cnksIFx1MDAyNmRldmljZV9saXN0KTtcbiBvdXRfdW5sb2NrOlxuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNmRldmljZV9saXN0X211dGV4KTtcbkBAIC0xODQ3LDcgJiM0MzsxODQ5LDcgQEAgc3RhdGljIGludCBudm1lX3JkbWFfcm91dGVfcmVzb2x2ZWQoc3RydWN0IG52bWVfcmRtYV9xdWV1ZSAqcXVldWUpXG4gXHRwYXJhbS5xcF9udW0gPSBxdWV1ZS1cdTAwM2VxcC1cdTAwM2VxcF9udW07XG4gXHRwYXJhbS5mbG93X2NvbnRyb2wgPSAxO1xuIFxuLVx0cGFyYW0ucmVzcG9uZGVyX3Jlc291cmNlcyA9IHF1ZXVlLVx1MDAzZWRldmljZS1cdTAwM2VkZXYtXHUwMDNlYXR0cnMubWF4X3FwX3JkX2F0b207XG4mIzQzO1x0cGFyYW0ucmVzcG9uZGVyX3Jlc291cmNlcyA9IG1pbihxdWV1ZS1cdTAwM2VkZXZpY2UtXHUwMDNlZGV2LVx1MDAzZWF0dHJzLm1heF9xcF9yZF9hdG9tLCBVOF9NQVgpO1xuIFx0LyogbWF4aW11bSByZXRyeSBjb3VudCAqL1xuIFx0cGFyYW0ucmV0cnlfY291bnQgPSA3O1xuIFx0cGFyYW0ucm5yX3JldHJ5X2NvdW50ID0gNztcbmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvdGFyZ2V0L3JkbWEuYyBiL2RyaXZlcnMvbnZtZS90YXJnZXQvcmRtYS5jXG5pbmRleCBhYzI2ZjRmNzc0YzRkZS4uMWMzMzJkNjYyMjJhMGIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL252bWUvdGFyZ2V0L3JkbWEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9udm1lL3RhcmdldC9yZG1hLmNcbkBAIC0xNTIsNyAmIzQzOzE1Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtX29wcyBzcnFfc2l6ZV9vcHMgPSB7XG4gXHQuZ2V0ID0gcGFyYW1fZ2V0X2ludCxcbiB9O1xuIFxuLXN0YXRpYyBpbnQgbnZtZXRfcmRtYV9zcnFfc2l6ZSA9IDEwMjQ7XG4mIzQzO3N0YXRpYyB1bnNpZ25lZCBpbnQgbnZtZXRfcmRtYV9zcnFfc2l6ZSA9IDEwMjQ7XG4gbW9kdWxlX3BhcmFtX2NiKHNycV9zaXplLCBcdTAwMjZzcnFfc2l6ZV9vcHMsIFx1MDAyNm52bWV0X3JkbWFfc3JxX3NpemUsIDA2NDQpO1xuIE1PRFVMRV9QQVJNX0RFU0Moc3JxX3NpemUsIFwmIzM0O3NldCBTaGFyZWQgUmVjZWl2ZSBRdWV1ZSAoU1JRKSBzaXplLCBzaG91bGQgXHUwMDNlPSAyNTYgKGRlZmF1bHQ6IDEwMjQpXCYjMzQ7KTtcbiBcbkBAIC0xMTk3LDcgJiM0MzsxMTk3LDcgQEAgbnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2Uoc3RydWN0IHJkbWFfY21faWQgKmNtX2lkKVxuIFx0c3RydWN0IG52bWV0X3BvcnQgKm5wb3J0ID0gcG9ydC1cdTAwM2VucG9ydDtcbiBcdHN0cnVjdCBudm1ldF9yZG1hX2RldmljZSAqbmRldjtcbiBcdGludCBpbmxpbmVfcGFnZV9jb3VudDtcbi1cdGludCBpbmxpbmVfc2dlX2NvdW50O1xuJiM0MztcdHUzMiBpbmxpbmVfc2dlX2NvdW50O1xuIFx0aW50IHJldDtcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2ZGV2aWNlX2xpc3RfbXV0ZXgpO1xuQEAgLTEyMTMsNyAmIzQzOzEyMTMsOSBAQCBudm1ldF9yZG1hX2ZpbmRfZ2V0X2RldmljZShzdHJ1Y3QgcmRtYV9jbV9pZCAqY21faWQpXG4gXG4gXHRpbmxpbmVfcGFnZV9jb3VudCA9IG51bV9wYWdlcyhucG9ydC1cdTAwM2VpbmxpbmVfZGF0YV9zaXplKTtcbiBcdGlubGluZV9zZ2VfY291bnQgPSBtYXgoY21faWQtXHUwMDNlZGV2aWNlLVx1MDAzZWF0dHJzLm1heF9zZ2VfcmQsXG4tXHRcdFx0XHRjbV9pZC1cdTAwM2VkZXZpY2UtXHUwMDNlYXR0cnMubWF4X3JlY3Zfc2dlKSAtIDE7XG4mIzQzO1x0XHRcdFx0Y21faWQtXHUwMDNlZGV2aWNlLVx1MDAzZWF0dHJzLm1heF9yZWN2X3NnZSk7XG4mIzQzO1x0aWYgKGlubGluZV9zZ2VfY291bnQpXG4mIzQzO1x0XHRpbmxpbmVfc2dlX2NvdW50LS07XG4gXHRpZiAoaW5saW5lX3BhZ2VfY291bnQgXHUwMDNlIGlubGluZV9zZ2VfY291bnQpIHtcbiBcdFx0cHJfd2FybihcJiMzNDtpbmxpbmVfZGF0YV9zaXplICVkIGNhbm5vdCBiZSBzdXBwb3J0ZWQgYnkgZGV2aWNlICVzLiBSZWR1Y2luZyB0byAlbHUuXFxuXCYjMzQ7LFxuIFx0XHRcdG5wb3J0LVx1MDAzZWlubGluZV9kYXRhX3NpemUsIGNtX2lkLVx1MDAzZWRldmljZS1cdTAwM2VuYW1lLFxuQEAgLTE1NTMsOCAmIzQzOzE1NTUsOSBAQCBzdGF0aWMgaW50IG52bWV0X3JkbWFfY21fYWNjZXB0KHN0cnVjdCByZG1hX2NtX2lkICpjbV9pZCxcbiBcbiBcdHBhcmFtLnJucl9yZXRyeV9jb3VudCA9IDc7XG4gXHRwYXJhbS5mbG93X2NvbnRyb2wgPSAxO1xuLVx0cGFyYW0uaW5pdGlhdG9yX2RlcHRoID0gbWluX3QodTgsIHAtXHUwMDNlaW5pdGlhdG9yX2RlcHRoLFxuLVx0XHRxdWV1ZS1cdTAwM2VkZXYtXHUwMDNlZGV2aWNlLVx1MDAzZWF0dHJzLm1heF9xcF9pbml0X3JkX2F0b20pO1xuJiM0MztcdHBhcmFtLmluaXRpYXRvcl9kZXB0aCA9IG1pbjMocC1cdTAwM2Vpbml0aWF0b3JfZGVwdGgsXG4mIzQzO1x0XHRcdFx0ICAgICBxdWV1ZS1cdTAwM2VkZXYtXHUwMDNlZGV2aWNlLVx1MDAzZWF0dHJzLm1heF9xcF9pbml0X3JkX2F0b20sXG4mIzQzO1x0XHRcdFx0ICAgICBVOF9NQVgpO1xuIFx0cGFyYW0ucHJpdmF0ZV9kYXRhID0gXHUwMDI2cHJpdjtcbiBcdHBhcmFtLnByaXZhdGVfZGF0YV9sZW4gPSBzaXplb2YocHJpdik7XG4gXHRwcml2LnJlY2ZtdCA9IGNwdV90b19sZTE2KE5WTUVfUkRNQV9DTV9GTVRfMV8wKTtcbmRpZmYgLS1naXQgYS9mcy9zbWIvc21iZGlyZWN0L2FjY2VwdC5jIGIvZnMvc21iL3NtYmRpcmVjdC9hY2NlcHQuY1xuaW5kZXggNTI5NzQwMDA1ODM4NWUuLjQ0YjY4MWEyMDcyNTM2IDEwMDY0NFxuLS0tIGEvZnMvc21iL3NtYmRpcmVjdC9hY2NlcHQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvc21iL3NtYmRpcmVjdC9hY2NlcHQuY1xuQEAgLTMyLDggJiM0MzszMiw5IEBAIGludCBzbWJkaXJlY3RfYWNjZXB0X2Nvbm5lY3RfcmVxdWVzdChzdHJ1Y3Qgc21iZGlyZWN0X3NvY2tldCAqc2MsXG4gXHQvKlxuIFx0ICogRmlyc3Qgc2V0IHdoYXQgdGhlIHdlIGFzIHNlcnZlciBhcmUgYWJsZSB0byBzdXBwb3J0XG4gXHQgKi9cbi1cdHNwLVx1MDAzZWluaXRpYXRvcl9kZXB0aCA9IG1pbl90KHU4LCBzcC1cdTAwM2Vpbml0aWF0b3JfZGVwdGgsXG4tXHRcdFx0XHQgICAgc2MtXHUwMDNlaWIuZGV2LVx1MDAzZWF0dHJzLm1heF9xcF9yZF9hdG9tKTtcbiYjNDM7XHRzcC1cdTAwM2Vpbml0aWF0b3JfZGVwdGggPSBtaW4zKHNwLVx1MDAzZWluaXRpYXRvcl9kZXB0aCxcbiYjNDM7XHRcdFx0XHQgICBzYy1cdTAwM2VpYi5kZXYtXHUwMDNlYXR0cnMubWF4X3FwX3JkX2F0b20sXG4mIzQzO1x0XHRcdFx0ICAgVThfTUFYKTtcbiBcbiBcdHBlZXJfaW5pdGlhdG9yX2RlcHRoID0gcGFyYW0tXHUwMDNlaW5pdGlhdG9yX2RlcHRoO1xuIFx0cGVlcl9yZXNwb25kZXJfcmVzb3VyY2VzID0gcGFyYW0tXHUwMDNlcmVzcG9uZGVyX3Jlc291cmNlcztcbmRpZmYgLS1naXQgYS9mcy9zbWIvc21iZGlyZWN0L2Nvbm5lY3QuYyBiL2ZzL3NtYi9zbWJkaXJlY3QvY29ubmVjdC5jXG5pbmRleCBjZDcyNmIzOTlhZmVjYi4uMzRhM2U3MmMzOGZiYmEgMTAwNjQ0XG4tLS0gYS9mcy9zbWIvc21iZGlyZWN0L2Nvbm5lY3QuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvc21iL3NtYmRpcmVjdC9jb25uZWN0LmNcbkBAIC0xODIsOCAmIzQzOzE4Miw5IEBAIHN0YXRpYyBpbnQgc21iZGlyZWN0X2Nvbm5lY3RfcmRtYV9jb25uZWN0KHN0cnVjdCBzbWJkaXJlY3Rfc29ja2V0ICpzYylcbiBcdGlmIChzYy1cdTAwM2VpYi5kZXYtXHUwMDNlYXR0cnMua2VybmVsX2NhcF9mbGFncyBcdTAwMjYgSUJLX1NHX0dBUFNfUkVHKVxuIFx0XHRzYy1cdTAwM2Vtcl9pby50eXBlID0gSUJfTVJfVFlQRV9TR19HQVBTO1xuIFxuLVx0c3AtXHUwMDNlcmVzcG9uZGVyX3Jlc291cmNlcyA9IG1pbl90KHU4LCBzcC1cdTAwM2VyZXNwb25kZXJfcmVzb3VyY2VzLFxuLVx0XHRcdFx0XHRzYy1cdTAwM2VpYi5kZXYtXHUwMDNlYXR0cnMubWF4X3FwX3JkX2F0b20pO1xuJiM0MztcdHNwLVx1MDAzZXJlc3BvbmRlcl9yZXNvdXJjZXMgPSBtaW4zKHNwLVx1MDAzZXJlc3BvbmRlcl9yZXNvdXJjZXMsXG4mIzQzO1x0XHRcdFx0ICAgICAgIHNjLVx1MDAzZWliLmRldi1cdTAwM2VhdHRycy5tYXhfcXBfcmRfYXRvbSxcbiYjNDM7XHRcdFx0XHQgICAgICAgVThfTUFYKTtcbiBcdHNtYmRpcmVjdF9sb2dfcmRtYV9tcihzYywgU01CRElSRUNUX0xPR19JTkZPLFxuIFx0XHRcJiMzNDtyZXNwb25kZXJfcmVzb3VyY2VzPSVkXFxuXCYjMzQ7LFxuIFx0XHRzcC1cdTAwM2VyZXNwb25kZXJfcmVzb3VyY2VzKTtcbmRpZmYgLS1naXQgYS9mcy9zbWIvc21iZGlyZWN0L2Nvbm5lY3Rpb24uYyBiL2ZzL3NtYi9zbWJkaXJlY3QvY29ubmVjdGlvbi5jXG5pbmRleCA4YWRmNTgwOTc1MzQ0Yi4uNjkwYWNiODRlMWI1OTEgMTAwNjQ0XG4tLS0gYS9mcy9zbWIvc21iZGlyZWN0L2Nvbm5lY3Rpb24uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZnMvc21iL3NtYmRpcmVjdC9jb25uZWN0aW9uLmNcbkBAIC0yODcsNyAmIzQzOzI4Nyw3IEBAIGludCBzbWJkaXJlY3RfY29ubmVjdGlvbl9jcmVhdGVfcXAoc3RydWN0IHNtYmRpcmVjdF9zb2NrZXQgKnNjKVxuIFx0ICAgIHFwX2NhcC5tYXhfc2VuZF93ciBcdTAwM2Ugc2MtXHUwMDNlaWIuZGV2LVx1MDAzZWF0dHJzLm1heF9xcF93cikge1xuIFx0XHRwcl9lcnIoXCYjMzQ7UG9zc2libGUgQ1FFIG92ZXJydW46IG1heF9zZW5kX3dyICVkXFxuXCYjMzQ7LFxuIFx0XHQgICAgICAgcXBfY2FwLm1heF9zZW5kX3dyKTtcbi1cdFx0cHJfZXJyKFwmIzM0O2RldmljZSAlLipzIHJlcG9ydGluZyBtYXhfY3FlICVkIG1heF9xcF93ciAlZFxcblwmIzM0OyxcbiYjNDM7XHRcdHByX2VycihcJiMzNDtkZXZpY2UgJS4qcyByZXBvcnRpbmcgbWF4X2NxZSAldSBtYXhfcXBfd3IgJXVcXG5cJiMzNDssXG4gXHRcdCAgICAgICBJQl9ERVZJQ0VfTkFNRV9NQVgsXG4gXHRcdCAgICAgICBzYy1cdTAwM2VpYi5kZXYtXHUwMDNlbmFtZSxcbiBcdFx0ICAgICAgIHNjLVx1MDAzZWliLmRldi1cdTAwM2VhdHRycy5tYXhfY3FlLFxuQEAgLTMwMiw3ICYjNDM7MzAyLDcgQEAgaW50IHNtYmRpcmVjdF9jb25uZWN0aW9uX2NyZWF0ZV9xcChzdHJ1Y3Qgc21iZGlyZWN0X3NvY2tldCAqc2MpXG4gXHQgICAgIG1heF9zZW5kX3dyIFx1MDAzZT0gc2MtXHUwMDNlaWIuZGV2LVx1MDAzZWF0dHJzLm1heF9xcF93cikpIHtcbiBcdFx0cHJfZXJyKFwmIzM0O1Bvc3NpYmxlIENRRSBvdmVycnVuOiByZG1hX3NlbmRfd3IgJWQgJiM0MzsgbWF4X3NlbmRfd3IgJWQgPSAlZFxcblwmIzM0OyxcbiBcdFx0ICAgICAgIHJkbWFfc2VuZF93ciwgcXBfY2FwLm1heF9zZW5kX3dyLCBtYXhfc2VuZF93cik7XG4tXHRcdHByX2VycihcJiMzNDtkZXZpY2UgJS4qcyByZXBvcnRpbmcgbWF4X2NxZSAlZCBtYXhfcXBfd3IgJWRcXG5cJiMzNDssXG4mIzQzO1x0XHRwcl9lcnIoXCYjMzQ7ZGV2aWNlICUuKnMgcmVwb3J0aW5nIG1heF9jcWUgJXUgbWF4X3FwX3dyICV1XFxuXCYjMzQ7LFxuIFx0XHQgICAgICAgSUJfREVWSUNFX05BTUVfTUFYLFxuIFx0XHQgICAgICAgc2MtXHUwMDNlaWIuZGV2LVx1MDAzZW5hbWUsXG4gXHRcdCAgICAgICBzYy1cdTAwM2VpYi5kZXYtXHUwMDNlYXR0cnMubWF4X2NxZSxcbkBAIC0zMTYsNyAmIzQzOzMxNiw3IEBAIGludCBzbWJkaXJlY3RfY29ubmVjdGlvbl9jcmVhdGVfcXAoc3RydWN0IHNtYmRpcmVjdF9zb2NrZXQgKnNjKVxuIFx0ICAgIHFwX2NhcC5tYXhfcmVjdl93ciBcdTAwM2Ugc2MtXHUwMDNlaWIuZGV2LVx1MDAzZWF0dHJzLm1heF9xcF93cikge1xuIFx0XHRwcl9lcnIoXCYjMzQ7UG9zc2libGUgQ1FFIG92ZXJydW46IG1heF9yZWN2X3dyICVkXFxuXCYjMzQ7LFxuIFx0XHQgICAgICAgcXBfY2FwLm1heF9yZWN2X3dyKTtcbi1cdFx0cHJfZXJyKFwmIzM0O2RldmljZSAlLipzIHJlcG9ydGluZyBtYXhfY3FlICVkIG1heF9xcF93ciAlZFxcblwmIzM0OyxcbiYjNDM7XHRcdHByX2VycihcJiMzNDtkZXZpY2UgJS4qcyByZXBvcnRpbmcgbWF4X2NxZSAldSBtYXhfcXBfd3IgJXVcXG5cJiMzNDssXG4gXHRcdCAgICAgICBJQl9ERVZJQ0VfTkFNRV9NQVgsXG4gXHRcdCAgICAgICBzYy1cdTAwM2VpYi5kZXYtXHUwMDNlbmFtZSxcbiBcdFx0ICAgICAgIHNjLVx1MDAzZWliLmRldi1cdTAwM2VhdHRycy5tYXhfY3FlLFxuQEAgLTMyOCw3ICYjNDM7MzI4LDcgQEAgaW50IHNtYmRpcmVjdF9jb25uZWN0aW9uX2NyZWF0ZV9xcChzdHJ1Y3Qgc21iZGlyZWN0X3NvY2tldCAqc2MpXG4gXG4gXHRpZiAocXBfY2FwLm1heF9zZW5kX3NnZSBcdTAwM2Ugc2MtXHUwMDNlaWIuZGV2LVx1MDAzZWF0dHJzLm1heF9zZW5kX3NnZSB8fFxuIFx0ICAgIHFwX2NhcC5tYXhfcmVjdl9zZ2UgXHUwMDNlIHNjLVx1MDAzZWliLmRldi1cdTAwM2VhdHRycy5tYXhfcmVjdl9zZ2UpIHtcbi1cdFx0cHJfZXJyKFwmIzM0O2RldmljZSAlLipzIG1heF9zZW5kX3NnZS9tYXhfcmVjdl9zZ2UgPSAlZC8lZCB0b28gc21hbGxcXG5cJiMzNDssXG4mIzQzO1x0XHRwcl9lcnIoXCYjMzQ7ZGV2aWNlICUuKnMgbWF4X3NlbmRfc2dlL21heF9yZWN2X3NnZSA9ICV1LyV1IHRvbyBzbWFsbFxcblwmIzM0OyxcbiBcdFx0ICAgICAgIElCX0RFVklDRV9OQU1FX01BWCxcbiBcdFx0ICAgICAgIHNjLVx1MDAzZWliLmRldi1cdTAwM2VuYW1lLFxuIFx0XHQgICAgICAgc2MtXHUwMDNlaWIuZGV2LVx1MDAzZWF0dHJzLm1heF9zZW5kX3NnZSxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3N1bnJwYy9zdmNfcmRtYS5oIGIvaW5jbHVkZS9saW51eC9zdW5ycGMvc3ZjX3JkbWEuaFxuaW5kZXggZGY2ZTA4YWFhZDU3MDkuLjIxN2YwMDBiZTVkNmUyIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9zdW5ycGMvc3ZjX3JkbWEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9zdW5ycGMvc3ZjX3JkbWEuaFxuQEAgLTc4LDggJiM0Mzs3OCw4IEBAIHN0cnVjdCBzdmN4cHJ0X3JkbWEge1xuIFx0c3RydWN0IHJkbWFfY21faWQgICAgKnNjX2NtX2lkO1x0XHQvKiBSRE1BIGNvbm5lY3Rpb24gaWQgKi9cbiBcdHN0cnVjdCBsaXN0X2hlYWQgICAgIHNjX2FjY2VwdF9xO1x0LyogQ29ubi4gd2FpdGluZyBhY2NlcHQgKi9cbiBcdHN0cnVjdCBycGNyZG1hX25vdGlmaWNhdGlvbiBzY19ybjtcdC8qIHJlbW92YWwgbm90aWZpY2F0aW9uICovXG4tXHRpbnRcdFx0ICAgICBzY19vcmQ7XHRcdC8qIFJETUEgcmVhZCBsaW1pdCAqL1xuLVx0aW50ICAgICAgICAgICAgICAgICAgc2NfbWF4X3NlbmRfc2dlcztcbiYjNDM7XHR1MzJcdFx0ICAgICBzY19vcmQ7XHRcdC8qIFJETUEgcmVhZCBsaW1pdCAqL1xuJiM0MztcdHVuc2lnbmVkIGludCAgICAgICAgIHNjX21heF9zZW5kX3NnZXM7XG4gXHRib29sXHRcdCAgICAgc2Nfc25kX3dfaW52O1x0LyogT0sgdG8gdXNlIFNlbmQgV2l0aCBJbnZhbGlkYXRlICovXG4gXG4gXHRhdG9taWNfdCAgICAgICAgICAgICBzY19zcV9hdmFpbDtcdC8qIFNRRXMgcmVhZHkgdG8gYmUgY29uc3VtZWQgKi9cbmRpZmYgLS1naXQgYS9pbmNsdWRlL3JkbWEvaWJfdmVyYnMuaCBiL2luY2x1ZGUvcmRtYS9pYl92ZXJicy5oXG5pbmRleCA5ZGQ3NmY0ODlhMGJhNC4uYjhiMjIxYjVmNTY0NzMgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL3JkbWEvaWJfdmVyYnMuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9yZG1hL2liX3ZlcmJzLmhcbkBAIC00MDYsMzYgJiM0Mzs0MDYsMzYgQEAgc3RydWN0IGliX2RldmljZV9hdHRyIHtcbiBcdHUzMlx0XHRcdHZlbmRvcl9pZDtcbiBcdHUzMlx0XHRcdHZlbmRvcl9wYXJ0X2lkO1xuIFx0dTMyXHRcdFx0aHdfdmVyO1xuLVx0aW50XHRcdFx0bWF4X3FwO1xuLVx0aW50XHRcdFx0bWF4X3FwX3dyO1xuJiM0MztcdHUzMlx0XHRcdG1heF9xcDtcbiYjNDM7XHR1MzJcdFx0XHRtYXhfcXBfd3I7XG4gXHR1NjRcdFx0XHRkZXZpY2VfY2FwX2ZsYWdzO1xuIFx0dTY0XHRcdFx0a2VybmVsX2NhcF9mbGFncztcbi1cdGludFx0XHRcdG1heF9zZW5kX3NnZTtcbi1cdGludFx0XHRcdG1heF9yZWN2X3NnZTtcbi1cdGludFx0XHRcdG1heF9zZ2VfcmQ7XG4tXHRpbnRcdFx0XHRtYXhfY3E7XG4tXHRpbnRcdFx0XHRtYXhfY3FlO1xuLVx0aW50XHRcdFx0bWF4X21yO1xuLVx0aW50XHRcdFx0bWF4X3BkO1xuLVx0aW50XHRcdFx0bWF4X3FwX3JkX2F0b207XG4tXHRpbnRcdFx0XHRtYXhfZWVfcmRfYXRvbTtcbi1cdGludFx0XHRcdG1heF9yZXNfcmRfYXRvbTtcbi1cdGludFx0XHRcdG1heF9xcF9pbml0X3JkX2F0b207XG4tXHRpbnRcdFx0XHRtYXhfZWVfaW5pdF9yZF9hdG9tO1xuJiM0MztcdHUzMlx0XHRcdG1heF9zZW5kX3NnZTtcbiYjNDM7XHR1MzJcdFx0XHRtYXhfcmVjdl9zZ2U7XG4mIzQzO1x0dTMyXHRcdFx0bWF4X3NnZV9yZDtcbiYjNDM7XHR1MzJcdFx0XHRtYXhfY3E7XG4mIzQzO1x0dTMyXHRcdFx0bWF4X2NxZTtcbiYjNDM7XHR1MzJcdFx0XHRtYXhfbXI7XG4mIzQzO1x0dTMyXHRcdFx0bWF4X3BkO1xuJiM0MztcdHUzMlx0XHRcdG1heF9xcF9yZF9hdG9tO1xuJiM0MztcdHUzMlx0XHRcdG1heF9lZV9yZF9hdG9tO1xuJiM0MztcdHUzMlx0XHRcdG1heF9yZXNfcmRfYXRvbTtcbiYjNDM7XHR1MzJcdFx0XHRtYXhfcXBfaW5pdF9yZF9hdG9tO1xuJiM0MztcdHUzMlx0XHRcdG1heF9lZV9pbml0X3JkX2F0b207XG4gXHRlbnVtIGliX2F0b21pY19jYXBcdGF0b21pY19jYXA7XG4gXHRlbnVtIGliX2F0b21pY19jYXBcdG1hc2tlZF9hdG9taWNfY2FwO1xuLVx0aW50XHRcdFx0bWF4X2VlO1xuLVx0aW50XHRcdFx0bWF4X3JkZDtcbi1cdGludFx0XHRcdG1heF9tdztcbi1cdGludFx0XHRcdG1heF9yYXdfaXB2Nl9xcDtcbi1cdGludFx0XHRcdG1heF9yYXdfZXRoeV9xcDtcbi1cdGludFx0XHRcdG1heF9tY2FzdF9ncnA7XG4tXHRpbnRcdFx0XHRtYXhfbWNhc3RfcXBfYXR0YWNoO1xuLVx0aW50XHRcdFx0bWF4X3RvdGFsX21jYXN0X3FwX2F0dGFjaDtcbi1cdGludFx0XHRcdG1heF9haDtcbiYjNDM7XHR1MzJcdFx0XHRtYXhfZWU7XG4mIzQzO1x0dTMyXHRcdFx0bWF4X3JkZDtcbiYjNDM7XHR1MzJcdFx0XHRtYXhfbXc7XG4mIzQzO1x0dTMyXHRcdFx0bWF4X3Jhd19pcHY2X3FwO1xuJiM0MztcdHUzMlx0XHRcdG1heF9yYXdfZXRoeV9xcDtcbiYjNDM7XHR1MzJcdFx0XHRtYXhfbWNhc3RfZ3JwO1xuJiM0MztcdHUzMlx0XHRcdG1heF9tY2FzdF9xcF9hdHRhY2g7XG4mIzQzO1x0dTMyXHRcdFx0bWF4X3RvdGFsX21jYXN0X3FwX2F0dGFjaDtcbiYjNDM7XHR1MzJcdFx0XHRtYXhfYWg7XG4gXHRpbnRcdFx0XHRtYXhfc3JxO1xuLVx0aW50XHRcdFx0bWF4X3NycV93cjtcbi1cdGludFx0XHRcdG1heF9zcnFfc2dlO1xuJiM0MztcdHUzMlx0XHRcdG1heF9zcnFfd3I7XG4mIzQzO1x0dTMyXHRcdFx0bWF4X3NycV9zZ2U7XG4gXHR1bnNpZ25lZCBpbnRcdFx0bWF4X2Zhc3RfcmVnX3BhZ2VfbGlzdF9sZW47XG4gXHR1bnNpZ25lZCBpbnRcdFx0bWF4X3BpX2Zhc3RfcmVnX3BhZ2VfbGlzdF9sZW47XG4gXHR1MTZcdFx0XHRtYXhfcGtleXM7XG5kaWZmIC0tZ2l0IGEvbmV0L3Jkcy9pYi5jIGIvbmV0L3Jkcy9pYi5jXG5pbmRleCAzOWY4NzI3MmUwNzFiZi4uYzYyNjg0ZDQyNTljNGYgMTAwNjQ0XG4tLS0gYS9uZXQvcmRzL2liLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9yZHMvaWIuY1xuQEAgLTE2MiwxMiAmIzQzOzE2MiwxMiBAQCBzdGF0aWMgaW50IHJkc19pYl9hZGRfb25lKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSlcbiBcdFx0ICAgSUJfT0RQX1NVUFBPUlRfUkVBRCk7XG4gXG4gXHRyZHNfaWJkZXYtXHUwMDNlbWF4XzFtX21ycyA9IGRldmljZS1cdTAwM2VhdHRycy5tYXhfbXIgP1xuLVx0XHRtaW5fdCh1bnNpZ25lZCBpbnQsIChkZXZpY2UtXHUwMDNlYXR0cnMubWF4X21yIC8gMiksXG4tXHRcdCAgICAgIHJkc19pYl9tcl8xbV9wb29sX3NpemUpIDogcmRzX2liX21yXzFtX3Bvb2xfc2l6ZTtcbiYjNDM7XHRcdG1pbihkZXZpY2UtXHUwMDNlYXR0cnMubWF4X21yIC8gMixcbiYjNDM7XHRcdCAgICByZHNfaWJfbXJfMW1fcG9vbF9zaXplKSA6IHJkc19pYl9tcl8xbV9wb29sX3NpemU7XG4gXG4gXHRyZHNfaWJkZXYtXHUwMDNlbWF4XzhrX21ycyA9IGRldmljZS1cdTAwM2VhdHRycy5tYXhfbXIgP1xuLVx0XHRtaW5fdCh1bnNpZ25lZCBpbnQsICgoZGV2aWNlLVx1MDAzZWF0dHJzLm1heF9tciAvIDIpICogUkRTX01SXzhLX1NDQUxFKSxcbi1cdFx0ICAgICAgcmRzX2liX21yXzhrX3Bvb2xfc2l6ZSkgOiByZHNfaWJfbXJfOGtfcG9vbF9zaXplO1xuJiM0MztcdFx0bWluKChkZXZpY2UtXHUwMDNlYXR0cnMubWF4X21yIC8gMikgKiBSRFNfTVJfOEtfU0NBTEUsXG4mIzQzO1x0XHQgICAgcmRzX2liX21yXzhrX3Bvb2xfc2l6ZSkgOiByZHNfaWJfbXJfOGtfcG9vbF9zaXplO1xuIFxuIFx0cmRzX2liZGV2LVx1MDAzZW1heF9pbml0aWF0b3JfZGVwdGggPSBkZXZpY2UtXHUwMDNlYXR0cnMubWF4X3FwX2luaXRfcmRfYXRvbTtcbiBcdHJkc19pYmRldi1cdTAwM2VtYXhfcmVzcG9uZGVyX3Jlc291cmNlcyA9IGRldmljZS1cdTAwM2VhdHRycy5tYXhfcXBfcmRfYXRvbTtcbkBAIC0yMDQsNyAmIzQzOzIwNCw3IEBAIHN0YXRpYyBpbnQgcmRzX2liX2FkZF9vbmUoc3RydWN0IGliX2RldmljZSAqZGV2aWNlKVxuIFx0XHRnb3RvIHB1dF9kZXY7XG4gXHR9XG4gXG4tXHRyZHNkZWJ1ZyhcJiMzNDtSRFMvSUI6IG1heF9tciA9ICVkLCBtYXhfd3JzID0gJWQsIG1heF9zZ2UgPSAlZCwgbWF4XzFtX21ycyA9ICVkLCBtYXhfOGtfbXJzID0gJWRcXG5cJiMzNDssXG4mIzQzO1x0cmRzZGVidWcoXCYjMzQ7UkRTL0lCOiBtYXhfbXIgPSAldSwgbWF4X3dycyA9ICVkLCBtYXhfc2dlID0gJWQsIG1heF8xbV9tcnMgPSAlZCwgbWF4XzhrX21ycyA9ICVkXFxuXCYjMzQ7LFxuIFx0XHQgZGV2aWNlLVx1MDAzZWF0dHJzLm1heF9tciwgcmRzX2liZGV2LVx1MDAzZW1heF93cnMsIHJkc19pYmRldi1cdTAwM2VtYXhfc2dlLFxuIFx0XHQgcmRzX2liZGV2LVx1MDAzZW1heF8xbV9tcnMsIHJkc19pYmRldi1cdTAwM2VtYXhfOGtfbXJzKTtcbiBcbmRpZmYgLS1naXQgYS9uZXQvcmRzL2liX2NtLmMgYi9uZXQvcmRzL2liX2NtLmNcbmluZGV4IDU2NjdmMDE3M2I0N2YyLi4xN2U1ODdjMzAwNzY2MyAxMDA2NDRcbi0tLSBhL25ldC9yZHMvaWJfY20uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3Jkcy9pYl9jbS5jXG5AQCAtMTczLDExICYjNDM7MTczLDExIEBAIHN0YXRpYyB2b2lkIHJkc19pYl9jbV9maWxsX2Nvbm5fcGFyYW0oc3RydWN0IHJkc19jb25uZWN0aW9uICpjb25uLFxuIFxuIFx0bWVtc2V0KGNvbm5fcGFyYW0sIDAsIHNpemVvZihzdHJ1Y3QgcmRtYV9jb25uX3BhcmFtKSk7XG4gXG4tXHRjb25uX3BhcmFtLVx1MDAzZXJlc3BvbmRlcl9yZXNvdXJjZXMgPVxuLVx0XHRtaW5fdCh1MzIsIHJkc19pYmRldi1cdTAwM2VtYXhfcmVzcG9uZGVyX3Jlc291cmNlcywgbWF4X3Jlc3BvbmRlcl9yZXNvdXJjZXMpO1xuLVx0Y29ubl9wYXJhbS1cdTAwM2Vpbml0aWF0b3JfZGVwdGggPVxuLVx0XHRtaW5fdCh1MzIsIHJkc19pYmRldi1cdTAwM2VtYXhfaW5pdGlhdG9yX2RlcHRoLCBtYXhfaW5pdGlhdG9yX2RlcHRoKTtcbi1cdGNvbm5fcGFyYW0tXHUwMDNlcmV0cnlfY291bnQgPSBtaW5fdCh1bnNpZ25lZCBpbnQsIHJkc19pYl9yZXRyeV9jb3VudCwgNyk7XG4mIzQzO1x0Y29ubl9wYXJhbS1cdTAwM2VyZXNwb25kZXJfcmVzb3VyY2VzID0gbWluMyhyZHNfaWJkZXYtXHUwMDNlbWF4X3Jlc3BvbmRlcl9yZXNvdXJjZXMsXG4mIzQzO1x0XHRcdFx0XHQgICAgICAgbWF4X3Jlc3BvbmRlcl9yZXNvdXJjZXMsIFU4X01BWCk7XG4mIzQzO1x0Y29ubl9wYXJhbS1cdTAwM2Vpbml0aWF0b3JfZGVwdGggPSBtaW4zKHJkc19pYmRldi1cdTAwM2VtYXhfaW5pdGlhdG9yX2RlcHRoLFxuJiM0MztcdFx0XHRcdFx0ICAgbWF4X2luaXRpYXRvcl9kZXB0aCwgVThfTUFYKTtcbiYjNDM7XHRjb25uX3BhcmFtLVx1MDAzZXJldHJ5X2NvdW50ID0gbWluKHJkc19pYl9yZXRyeV9jb3VudCwgN1UpO1xuIFx0Y29ubl9wYXJhbS1cdTAwM2VybnJfcmV0cnlfY291bnQgPSA3O1xuIFxuIFx0aWYgKGRwKSB7XG5kaWZmIC0tZ2l0IGEvbmV0L3N1bnJwYy94cHJ0cmRtYS9mcndyX29wcy5jIGIvbmV0L3N1bnJwYy94cHJ0cmRtYS9mcndyX29wcy5jXG5pbmRleCA3Zjc5YTBhMjYwMWU2NS4uYjJlNDM3YWZlMDlkYWEgMTAwNjQ0XG4tLS0gYS9uZXQvc3VucnBjL3hwcnRyZG1hL2Zyd3Jfb3BzLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9zdW5ycGMveHBydHJkbWEvZnJ3cl9vcHMuY1xuQEAgLTE3Miw4ICYjNDM7MTcyLDkgQEAgaW50IGZyd3JfbXJfaW5pdChzdHJ1Y3QgcnBjcmRtYV94cHJ0ICpyX3hwcnQsIHN0cnVjdCBycGNyZG1hX21yICptcilcbiBpbnQgZnJ3cl9xdWVyeV9kZXZpY2Uoc3RydWN0IHJwY3JkbWFfZXAgKmVwLCBjb25zdCBzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGliX2RldmljZV9hdHRyICphdHRycyA9IFx1MDAyNmRldmljZS1cdTAwM2VhdHRycztcbi1cdGludCBtYXhfcXBfd3IsIGRlcHRoLCBkZWx0YTtcbiBcdHVuc2lnbmVkIGludCBtYXhfc2dlO1xuJiM0MztcdHUzMiBtYXhfcXBfd3I7XG4mIzQzO1x0aW50IGRlcHRoLCBkZWx0YTtcbiBcbiBcdGlmICghKGF0dHJzLVx1MDAzZWRldmljZV9jYXBfZmxhZ3MgXHUwMDI2IElCX0RFVklDRV9NRU1fTUdUX0VYVEVOU0lPTlMpIHx8XG4gXHQgICAgYXR0cnMtXHUwMDNlbWF4X2Zhc3RfcmVnX3BhZ2VfbGlzdF9sZW4gPT0gMCkge1xuQEAgLTIyOSwxMCAmIzQzOzIzMCwxMCBAQCBpbnQgZnJ3cl9xdWVyeV9kZXZpY2Uoc3RydWN0IHJwY3JkbWFfZXAgKmVwLCBjb25zdCBzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UpXG4gXHR9XG4gXG4gXHRtYXhfcXBfd3IgPSBhdHRycy1cdTAwM2VtYXhfcXBfd3I7XG4mIzQzO1x0aWYgKG1heF9xcF93ciBcdTAwM2MgUlBDUkRNQV9CQUNLV0FSRF9XUlMgJiM0MzsgMSAmIzQzOyBSUENSRE1BX01JTl9TTE9UX1RBQkxFKVxuJiM0MztcdFx0cmV0dXJuIC1FTk9NRU07XG4gXHRtYXhfcXBfd3IgLT0gUlBDUkRNQV9CQUNLV0FSRF9XUlM7XG4gXHRtYXhfcXBfd3IgLT0gMTtcbi1cdGlmIChtYXhfcXBfd3IgXHUwMDNjIFJQQ1JETUFfTUlOX1NMT1RfVEFCTEUpXG4tXHRcdHJldHVybiAtRU5PTUVNO1xuIFx0aWYgKGVwLVx1MDAzZXJlX21heF9yZXF1ZXN0cyBcdTAwM2UgbWF4X3FwX3dyKVxuIFx0XHRlcC1cdTAwM2VyZV9tYXhfcmVxdWVzdHMgPSBtYXhfcXBfd3I7XG4gXHRlcC1cdTAwM2VyZV9hdHRyLmNhcC5tYXhfc2VuZF93ciA9IGVwLVx1MDAzZXJlX21heF9yZXF1ZXN0cyAqIGRlcHRoO1xuZGlmZiAtLWdpdCBhL25ldC9zdW5ycGMveHBydHJkbWEvc3ZjX3JkbWFfdHJhbnNwb3J0LmMgYi9uZXQvc3VucnBjL3hwcnRyZG1hL3N2Y19yZG1hX3RyYW5zcG9ydC5jXG5pbmRleCBmMThiYzYwZDlmNGZmYS4uYzc2OGNkYTJlNTQ0NGEgMTAwNjQ0XG4tLS0gYS9uZXQvc3VucnBjL3hwcnRyZG1hL3N2Y19yZG1hX3RyYW5zcG9ydC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc3VucnBjL3hwcnRyZG1hL3N2Y19yZG1hX3RyYW5zcG9ydC5jXG5AQCAtNTQ0LDggJiM0Mzs1NDQsNyBAQCBzdGF0aWMgc3RydWN0IHN2Y194cHJ0ICpzdmNfcmRtYV9hY2NlcHQoc3RydWN0IHN2Y194cHJ0ICp4cHJ0KVxuIFx0c2V0X2JpdChSRE1BWFBSVF9DT05OX1BFTkRJTkcsIFx1MDAyNm5ld3hwcnQtXHUwMDNlc2NfZmxhZ3MpO1xuIFx0bWVtc2V0KFx1MDAyNmNvbm5fcGFyYW0sIDAsIHNpemVvZiBjb25uX3BhcmFtKTtcbiBcdGNvbm5fcGFyYW0ucmVzcG9uZGVyX3Jlc291cmNlcyA9IDA7XG4tXHRjb25uX3BhcmFtLmluaXRpYXRvcl9kZXB0aCA9IG1pbl90KGludCwgbmV3eHBydC1cdTAwM2VzY19vcmQsXG4tXHRcdFx0XHRcdCAgIGRldi1cdTAwM2VhdHRycy5tYXhfcXBfaW5pdF9yZF9hdG9tKTtcbiYjNDM7XHRjb25uX3BhcmFtLmluaXRpYXRvcl9kZXB0aCA9IG1pbihuZXd4cHJ0LVx1MDAzZXNjX29yZCwgZGV2LVx1MDAzZWF0dHJzLm1heF9xcF9pbml0X3JkX2F0b20pO1xuIFx0aWYgKCFjb25uX3BhcmFtLmluaXRpYXRvcl9kZXB0aCkge1xuIFx0XHRyZXQgPSAtRUlOVkFMO1xuIFx0XHR0cmFjZV9zdmNyZG1hX2luaXRkZXB0aF9lcnIobmV3eHBydCwgcmV0KTtcbkBAIC01NzAsNyAmIzQzOzU2OSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3ZjX3hwcnQgKnN2Y19yZG1hX2FjY2VwdChzdHJ1Y3Qgc3ZjX3hwcnQgKnhwcnQpXG4gXHRcdGRwcmludGsoXCYjMzQ7ICAgIGxvY2FsIGFkZHJlc3MgICA6ICVwSVM6JXVcXG5cJiMzNDssIHNhcCwgcnBjX2dldF9wb3J0KHNhcCkpO1xuIFx0XHRzYXAgPSAoc3RydWN0IHNvY2thZGRyICopXHUwMDI2bmV3eHBydC1cdTAwM2VzY19jbV9pZC1cdTAwM2Vyb3V0ZS5hZGRyLmRzdF9hZGRyO1xuIFx0XHRkcHJpbnRrKFwmIzM0OyAgICByZW1vdGUgYWRkcmVzcyAgOiAlcElTOiV1XFxuXCYjMzQ7LCBzYXAsIHJwY19nZXRfcG9ydChzYXApKTtcbi1cdFx0ZHByaW50ayhcJiMzNDsgICAgbWF4X3NnZSAgICAgICAgIDogJWRcXG5cJiMzNDssIG5ld3hwcnQtXHUwMDNlc2NfbWF4X3NlbmRfc2dlcyk7XG4mIzQzO1x0XHRkcHJpbnRrKFwmIzM0OyAgICBtYXhfc2dlICAgICAgICAgOiAldVxcblwmIzM0OywgbmV3eHBydC1cdTAwM2VzY19tYXhfc2VuZF9zZ2VzKTtcbiBcdFx0ZHByaW50ayhcJiMzNDsgICAgc3FfZGVwdGggICAgICAgIDogJWRcXG5cJiMzNDssIG5ld3hwcnQtXHUwMDNlc2Nfc3FfZGVwdGgpO1xuIFx0XHRkcHJpbnRrKFwmIzM0OyAgICByZG1hX3J3X2N0eHMgICAgOiAlZFxcblwmIzM0OywgY3R4dHMpO1xuIFx0XHRkcHJpbnRrKFwmIzM0OyAgICBtYXhfcmVxdWVzdHMgICAgOiAlZFxcblwmIzM0OywgbmV3eHBydC1cdTAwM2VzY19tYXhfcmVxdWVzdHMpO1xuZGlmZiAtLWdpdCBhL25ldC9zdW5ycGMveHBydHJkbWEvdmVyYnMuYyBiL25ldC9zdW5ycGMveHBydHJkbWEvdmVyYnMuY1xuaW5kZXggYWVjZjljMGExNTNmMzYuLjhlZDlkYTZkMmQyZjc3IDEwMDY0NFxuLS0tIGEvbmV0L3N1bnJwYy94cHJ0cmRtYS92ZXJicy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc3VucnBjL3hwcnRyZG1hL3ZlcmJzLmNcbkBAIC00NTMsNyAmIzQzOzQ1Myw3IEBAIHN0YXRpYyBpbnQgcnBjcmRtYV9lcF9jcmVhdGUoc3RydWN0IHJwY3JkbWFfeHBydCAqcl94cHJ0KVxuIFx0LyogQ2xpZW50IG9mZmVycyBSRE1BIFJlYWQgYnV0IGRvZXMgbm90IGluaXRpYXRlICovXG4gXHRlcC1cdTAwM2VyZV9yZW1vdGVfY21hLmluaXRpYXRvcl9kZXB0aCA9IDA7XG4gXHRlcC1cdTAwM2VyZV9yZW1vdGVfY21hLnJlc3BvbmRlcl9yZXNvdXJjZXMgPVxuLVx0XHRtaW5fdChpbnQsIFU4X01BWCwgZGV2aWNlLVx1MDAzZWF0dHJzLm1heF9xcF9yZF9hdG9tKTtcbiYjNDM7XHRcdG1pbihkZXZpY2UtXHUwMDNlYXR0cnMubWF4X3FwX3JkX2F0b20sIFU4X01BWCk7XG4gXG4gXHQvKiBMaW1pdCB0cmFuc3BvcnQgcmV0cmllcyBzbyBjbGllbnQgY2FuIGRldGVjdCBzZXJ2ZXJcbiBcdCAqIEdJRCBjaGFuZ2VzIHF1aWNrbHkuIFJQQyBsYXllciBoYW5kbGVzIHJlLWVzdGFibGlzaGluZ1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JETUFfUlhFJiMzNDssCiAgICAmIzM0O05WTUVfUkRNQSYjMzQ7LAogICAgJiMzNDtOVk1FX1RBUkdFVF9SRE1BJiMzNDssCiAgICAmIzM0O1NVTlJQQ19YUFJUX1JETUEmIzM0OywKICAgICYjMzQ7Q0lGU19TTUJfRElSRUNUJiMzNDssCiAgICAmIzM0O1NNQl9TRVJWRVJfU01CRElSRUNUJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfU1JQJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfU1JQVCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX0lTRVImIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9JU0VSVCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX1JUUlNfQ0xJRU5UJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfUlRSU19TRVJWRVImIzM0OywKICAgICYjMzQ7UkRTX1JETUEmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9JUE9JQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O252bWVfcmRtYV9maW5kX2dldF9kZXZpY2UmIzM0OywKICAgICYjMzQ7bnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2UmIzM0OywKICAgICYjMzQ7ZnJ3cl9xdWVyeV9kZXZpY2UmIzM0OywKICAgICYjMzQ7cnhlX3FwX2Noa19jYXAmIzM0OywKICAgICYjMzQ7cnhlX3NycV9jaGtfaW5pdCYjMzQ7LAogICAgJiMzNDtzbWJkaXJlY3RfY29ubmVjdGlvbl9jcmVhdGVfcXAmIzM0OywKICAgICYjMzQ7cmRzX2liX2NtX2ZpbGxfY29ubl9wYXJhbSYjMzQ7LAogICAgJiMzNDtzdmNfcmRtYV9hY2NlcHQmIzM0OywKICAgICYjMzQ7cnBjcmRtYV9lcF9jcmVhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZXMgb2YgdmFyaW91cyBSRE1BIGRldmljZSBhdHRyaWJ1dGVzIGZyb20gYGludGAgdG8gYHUzMmAgYW5kIHVwZGF0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgYG1pbigpYCBjYWxscyBhbmQgZm9ybWF0IHN0cmluZ3MuIEl0IGFsc28gZml4ZXMgc29tZSBwb3RlbnRpYWwgdW5kZXJmbG93cyBpbiBjb25uZWN0aW9uIHNldHVwIGZ1bmN0aW9ucy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgUkRNQSBsb2dpYyBhbmQgdmFyaW91cyBSRE1BIFVMUHMgKFVwcGVyIExheWVyIFByb3RvY29scykgd2hpY2ggY2FuIGJlIHRlc3RlZCB1c2luZyB0aGUgc29mdHdhcmUgUkRNQSBkcml2ZXIgKFJYRSkuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyBpbnRlZ2VyIG92ZXJmbG93L3VuZGVyZmxvdyBidWdzIHdlcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMzAyNTM5MGIwOTM1OWUxOTA0ZDIzOWExYjI3NDE2MTQ0ODRiZTcyNQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVuIDE5IDIwOjQ2OjIzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvY3EuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL2NxLmMKaW5kZXggM2Q3YjZjZGRkMTMxYzQuLmVlOTgxODhlNTdmYjVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvY29yZS9jcS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL2NxLmMKQEAgLTM5Myw4ICYjNDM7MzkzLDcgQEAgc3RhdGljIGludCBpYl9hbGxvY19jcXMoc3RydWN0IGliX2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgbnJfY3FlcywKIAkgKiBhIHJlYXNvbmFibGUgYmF0Y2ggc2l6ZSBzbyB0aGF0IHdlIGNhbiBzaGFyZSBDUXMgYmV0d2VlbgogCSAqIG11bHRpcGxlIHVzZXJzIGluc3RlYWQgb2YgYWxsb2NhdGluZyBhIGxhcmdlciBudW1iZXIgb2YgQ1FzLgogCSAqLwotCW5yX2NxZXMgPSBtaW5fdCh1bnNpZ25lZCBpbnQsIGRldi0mZ3Q7YXR0cnMubWF4X2NxZSwKLQkJCW1heChucl9jcWVzLCBJQl9NQVhfU0hBUkVEX0NRX1NaKSk7CiYjNDM7CW5yX2NxZXMgPSBtaW4oZGV2LSZndDthdHRycy5tYXhfY3FlLCBtYXgobnJfY3FlcywgSUJfTUFYX1NIQVJFRF9DUV9TWikpOwogCW5yX2NxcyA9IG1pbl90KHVuc2lnbmVkIGludCwgZGV2LSZndDtudW1fY29tcF92ZWN0b3JzLCBudW1fb25saW5lX2NwdXMoKSk7CiAJZm9yIChpID0gMDsgaSAmbHQ7IG5yX2NxczsgaSYjNDM7JiM0MzspIHsKIAkJY3EgPSBpYl9hbGxvY19jcShkZXYsIE5VTEwsIG5yX2NxZXMsIGksIHBvbGxfY3R4KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xZWRyL3ZlcmJzLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWVkci92ZXJicy5jCmluZGV4IDY3OWFhNmYzYTYzYmM1Li5hODVhZDAxNzExMzQ4ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FlZHIvdmVyYnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWVkci92ZXJicy5jCkBAIC0xNTEsNyAmIzQzOzE1MSw3IEBAIGludCBxZWRyX3F1ZXJ5X2RldmljZShzdHJ1Y3QgaWJfZGV2aWNlICppYmRldiwKIAlhdHRyLSZndDttYXhfcXBfaW5pdF9yZF9hdG9tID0KIAkgICAgMSAmbHQ7Jmx0OyAoZmxzKHFhdHRyLSZndDttYXhfcXBfcmVxX3JkX2F0b21pY19yZXNjKSAtIDEpOwogCWF0dHItJmd0O21heF9xcF9yZF9hdG9tID0KLQkgICAgbWluKDEgJmx0OyZsdDsgKGZscyhxYXR0ci0mZ3Q7bWF4X3FwX3Jlc3BfcmRfYXRvbWljX3Jlc2MpIC0gMSksCiYjNDM7CSAgICBtaW4oMVUgJmx0OyZsdDsgKGZscyhxYXR0ci0mZ3Q7bWF4X3FwX3Jlc3BfcmRfYXRvbWljX3Jlc2MpIC0gMSksCiAJCWF0dHItJmd0O21heF9xcF9pbml0X3JkX2F0b20pOwogCiAJYXR0ci0mZ3Q7bWF4X3NycSA9IHFhdHRyLSZndDttYXhfc3JxOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfcXAuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3FwLmMKaW5kZXggZjNkZmYxYWVhOTZhZmMuLjdhMDUyOWExNzk5MmM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3FwLmMKQEAgLTY3LDI3ICYjNDM7NjcsMjcgQEAgc3RhdGljIGludCByeGVfcXBfY2hrX2NhcChzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgaWJfcXBfY2FwICpjYXAsCiAJCQkgIGludCBoYXNfc3JxKQogewogCWlmIChjYXAtJmd0O21heF9zZW5kX3dyICZndDsgcnhlLSZndDthdHRyLm1heF9xcF93cikgewotCQlyeGVfZGJnX2RldihyeGUsICYjMzQ7aW52YWxpZCBzZW5kIHdyID0gJXUgJmd0OyAlZFxuJiMzNDssCi0JCQkgY2FwLSZndDttYXhfc2VuZF93ciwgcnhlLSZndDthdHRyLm1heF9xcF93cik7CiYjNDM7CQlyeGVfZGJnX2RldihyeGUsICYjMzQ7aW52YWxpZCBzZW5kIHdyID0gJXUgJmd0OyAldVxuJiMzNDssCiYjNDM7CQkJICAgIGNhcC0mZ3Q7bWF4X3NlbmRfd3IsIHJ4ZS0mZ3Q7YXR0ci5tYXhfcXBfd3IpOwogCQlnb3RvIGVycjE7CiAJfQogCiAJaWYgKGNhcC0mZ3Q7bWF4X3NlbmRfc2dlICZndDsgcnhlLSZndDthdHRyLm1heF9zZW5kX3NnZSkgewotCQlyeGVfZGJnX2RldihyeGUsICYjMzQ7aW52YWxpZCBzZW5kIHNnZSA9ICV1ICZndDsgJWRcbiYjMzQ7LAotCQkJIGNhcC0mZ3Q7bWF4X3NlbmRfc2dlLCByeGUtJmd0O2F0dHIubWF4X3NlbmRfc2dlKTsKJiM0MzsJCXJ4ZV9kYmdfZGV2KHJ4ZSwgJiMzNDtpbnZhbGlkIHNlbmQgc2dlID0gJXUgJmd0OyAldVxuJiMzNDssCiYjNDM7CQkJICAgIGNhcC0mZ3Q7bWF4X3NlbmRfc2dlLCByeGUtJmd0O2F0dHIubWF4X3NlbmRfc2dlKTsKIAkJZ290byBlcnIxOwogCX0KIAogCWlmICghaGFzX3NycSkgewogCQlpZiAoY2FwLSZndDttYXhfcmVjdl93ciAmZ3Q7IHJ4ZS0mZ3Q7YXR0ci5tYXhfcXBfd3IpIHsKLQkJCXJ4ZV9kYmdfZGV2KHJ4ZSwgJiMzNDtpbnZhbGlkIHJlY3Ygd3IgPSAldSAmZ3Q7ICVkXG4mIzM0OywKLQkJCQkgY2FwLSZndDttYXhfcmVjdl93ciwgcnhlLSZndDthdHRyLm1heF9xcF93cik7CiYjNDM7CQkJcnhlX2RiZ19kZXYocnhlLCAmIzM0O2ludmFsaWQgcmVjdiB3ciA9ICV1ICZndDsgJXVcbiYjMzQ7LAomIzQzOwkJCQkgICAgY2FwLSZndDttYXhfcmVjdl93ciwgcnhlLSZndDthdHRyLm1heF9xcF93cik7CiAJCQlnb3RvIGVycjE7CiAJCX0KIAogCQlpZiAoY2FwLSZndDttYXhfcmVjdl9zZ2UgJmd0OyByeGUtJmd0O2F0dHIubWF4X3JlY3Zfc2dlKSB7Ci0JCQlyeGVfZGJnX2RldihyeGUsICYjMzQ7aW52YWxpZCByZWN2IHNnZSA9ICV1ICZndDsgJWRcbiYjMzQ7LAotCQkJCSBjYXAtJmd0O21heF9yZWN2X3NnZSwgcnhlLSZndDthdHRyLm1heF9yZWN2X3NnZSk7CiYjNDM7CQkJcnhlX2RiZ19kZXYocnhlLCAmIzM0O2ludmFsaWQgcmVjdiBzZ2UgPSAldSAmZ3Q7ICV1XG4mIzM0OywKJiM0MzsJCQkJICAgIGNhcC0mZ3Q7bWF4X3JlY3Zfc2dlLCByeGUtJmd0O2F0dHIubWF4X3JlY3Zfc2dlKTsKIAkJCWdvdG8gZXJyMTsKIAkJfQogCX0KQEAgLTUzNyw5ICYjNDM7NTM3LDkgQEAgaW50IHJ4ZV9xcF9jaGtfYXR0cihzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgcnhlX3FwICpxcCwKIAogCWlmIChtYXNrICZhbXA7IElCX1FQX01BWF9RUF9SRF9BVE9NSUMpIHsKIAkJaWYgKGF0dHItJmd0O21heF9yZF9hdG9taWMgJmd0OyByeGUtJmd0O2F0dHIubWF4X3FwX3JkX2F0b20pIHsKLQkJCXJ4ZV9kYmdfcXAocXAsICYjMzQ7aW52YWxpZCBtYXhfcmRfYXRvbWljICVkICZndDsgJWRcbiYjMzQ7LAotCQkJCSBhdHRyLSZndDttYXhfcmRfYXRvbWljLAotCQkJCSByeGUtJmd0O2F0dHIubWF4X3FwX3JkX2F0b20pOwomIzQzOwkJCXJ4ZV9kYmdfcXAocXAsICYjMzQ7aW52YWxpZCBtYXhfcmRfYXRvbWljICV1ICZndDsgJXVcbiYjMzQ7LAomIzQzOwkJCQkgICBhdHRyLSZndDttYXhfcmRfYXRvbWljLAomIzQzOwkJCQkgICByeGUtJmd0O2F0dHIubWF4X3FwX3JkX2F0b20pOwogCQkJZ290byBlcnIxOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfc3JxLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9zcnEuYwppbmRleCBjOWE3Y2QzODk1M2QzMS4uNzQ5MDRhNmZkZjJiMjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3NycS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3NycS5jCkBAIC0xMyw4ICYjNDM7MTMsOCBAQCBpbnQgcnhlX3NycV9jaGtfaW5pdChzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgaWJfc3JxX2luaXRfYXR0ciAqaW5pdCkKIAlzdHJ1Y3QgaWJfc3JxX2F0dHIgKmF0dHIgPSAmYW1wO2luaXQtJmd0O2F0dHI7CiAKIAlpZiAoYXR0ci0mZ3Q7bWF4X3dyICZndDsgcnhlLSZndDthdHRyLm1heF9zcnFfd3IpIHsKLQkJcnhlX2RiZ19kZXYocnhlLCAmIzM0O21heF93ciglZCkgJmd0OyBtYXhfc3JxX3dyKCVkKVxuJiMzNDssCi0JCQlhdHRyLSZndDttYXhfd3IsIHJ4ZS0mZ3Q7YXR0ci5tYXhfc3JxX3dyKTsKJiM0MzsJCXJ4ZV9kYmdfZGV2KHJ4ZSwgJiMzNDttYXhfd3IoJXUpICZndDsgbWF4X3NycV93cigldSlcbiYjMzQ7LAomIzQzOwkJCSAgICBhdHRyLSZndDttYXhfd3IsIHJ4ZS0mZ3Q7YXR0ci5tYXhfc3JxX3dyKTsKIAkJZ290byBlcnIxOwogCX0KIApAQCAtMjcsOCAmIzQzOzI3LDggQEAgaW50IHJ4ZV9zcnFfY2hrX2luaXQoc3RydWN0IHJ4ZV9kZXYgKnJ4ZSwgc3RydWN0IGliX3NycV9pbml0X2F0dHIgKmluaXQpCiAJCWF0dHItJmd0O21heF93ciA9IFJYRV9NSU5fU1JRX1dSOwogCiAJaWYgKGF0dHItJmd0O21heF9zZ2UgJmd0OyByeGUtJmd0O2F0dHIubWF4X3NycV9zZ2UpIHsKLQkJcnhlX2RiZ19kZXYocnhlLCAmIzM0O21heF9zZ2UoJWQpICZndDsgbWF4X3NycV9zZ2UoJWQpXG4mIzM0OywKLQkJCWF0dHItJmd0O21heF9zZ2UsIHJ4ZS0mZ3Q7YXR0ci5tYXhfc3JxX3NnZSk7CiYjNDM7CQlyeGVfZGJnX2RldihyeGUsICYjMzQ7bWF4X3NnZSgldSkgJmd0OyBtYXhfc3JxX3NnZSgldSlcbiYjMzQ7LAomIzQzOwkJCSAgICBhdHRyLSZndDttYXhfc2dlLCByeGUtJmd0O2F0dHIubWF4X3NycV9zZ2UpOwogCQlnb3RvIGVycjE7CiAJfQogCkBAIC0xMDcsOCAmIzQzOzEwNyw4IEBAIGludCByeGVfc3JxX2Noa19hdHRyKHN0cnVjdCByeGVfZGV2ICpyeGUsIHN0cnVjdCByeGVfc3JxICpzcnEsCiAKIAlpZiAobWFzayAmYW1wOyBJQl9TUlFfTUFYX1dSKSB7CiAJCWlmIChhdHRyLSZndDttYXhfd3IgJmd0OyByeGUtJmd0O2F0dHIubWF4X3NycV93cikgewotCQkJcnhlX2RiZ19zcnEoc3JxLCAmIzM0O21heF93ciglZCkgJmd0OyBtYXhfc3JxX3dyKCVkKVxuJiMzNDssCi0JCQkJYXR0ci0mZ3Q7bWF4X3dyLCByeGUtJmd0O2F0dHIubWF4X3NycV93cik7CiYjNDM7CQkJcnhlX2RiZ19zcnEoc3JxLCAmIzM0O21heF93cigldSkgJmd0OyBtYXhfc3JxX3dyKCV1KVxuJiMzNDssCiYjNDM7CQkJCSAgICBhdHRyLSZndDttYXhfd3IsIHJ4ZS0mZ3Q7YXR0ci5tYXhfc3JxX3dyKTsKIAkJCWdvdG8gZXJyMTsKIAkJfQogCkBAIC0xMjksOCAmIzQzOzEyOSw4IEBAIGludCByeGVfc3JxX2Noa19hdHRyKHN0cnVjdCByeGVfZGV2ICpyeGUsIHN0cnVjdCByeGVfc3JxICpzcnEsCiAKIAlpZiAobWFzayAmYW1wOyBJQl9TUlFfTElNSVQpIHsKIAkJaWYgKGF0dHItJmd0O3NycV9saW1pdCAmZ3Q7IHJ4ZS0mZ3Q7YXR0ci5tYXhfc3JxX3dyKSB7Ci0JCQlyeGVfZGJnX3NycShzcnEsICYjMzQ7c3JxX2xpbWl0KCVkKSAmZ3Q7IG1heF9zcnFfd3IoJWQpXG4mIzM0OywKLQkJCQlhdHRyLSZndDtzcnFfbGltaXQsIHJ4ZS0mZ3Q7YXR0ci5tYXhfc3JxX3dyKTsKJiM0MzsJCQlyeGVfZGJnX3NycShzcnEsICYjMzQ7c3JxX2xpbWl0KCV1KSAmZ3Q7IG1heF9zcnFfd3IoJXUpXG4mIzM0OywKJiM0MzsJCQkJICAgIGF0dHItJmd0O3NycV9saW1pdCwgcnhlLSZndDthdHRyLm1heF9zcnFfd3IpOwogCQkJZ290byBlcnIxOwogCQl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfY20uYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfY20uYwppbmRleCA1N2ZlYzg4YTE2MjkwYS4uZWQwNTkyODk4Mzg0ZDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfY20uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX2NtLmMKQEAgLTEwNzEsOCAmIzQzOzEwNzEsNyBAQCBzdGF0aWMgc3RydWN0IGliX3FwICppcG9pYl9jbV9jcmVhdGVfdHhfcXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlwb2liXwogCXN0cnVjdCBpYl9xcCAqdHhfcXA7CiAKIAlpZiAoZGV2LSZndDtmZWF0dXJlcyAmYW1wOyBORVRJRl9GX1NHKQotCQlhdHRyLmNhcC5tYXhfc2VuZF9zZ2UgPSBtaW5fdCh1MzIsIHByaXYtJmd0O2NhLSZndDthdHRycy5tYXhfc2VuZF9zZ2UsCi0JCQkJCSAgICAgIE1BWF9TS0JfRlJBR1MgJiM0MzsgMSk7CiYjNDM7CQlhdHRyLmNhcC5tYXhfc2VuZF9zZ2UgPSBtaW4ocHJpdi0mZ3Q7Y2EtJmd0O2F0dHJzLm1heF9zZW5kX3NnZSwgTUFYX1NLQl9GUkFHUyAmIzQzOyAxKTsKIAogCXR4X3FwID0gaWJfY3JlYXRlX3FwKHByaXYtJmd0O3BkLCAmYW1wO2F0dHIpOwogCXR4LSZndDttYXhfc2VuZF9zZ2UgPSBhdHRyLmNhcC5tYXhfc2VuZF9zZ2U7CkBAIC0xNTgyLDcgJiM0MzsxNTgxLDggQEAgc3RhdGljIHZvaWQgaXBvaWJfY21fY3JlYXRlX3NycShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbWF4X3NnZSkKIGludCBpcG9pYl9jbV9kZXZfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewogCXN0cnVjdCBpcG9pYl9kZXZfcHJpdiAqcHJpdiA9IGlwb2liX3ByaXYoZGV2KTsKLQlpbnQgbWF4X3NycV9zZ2UsIGk7CiYjNDM7CXUzMiBtYXhfc3JxX3NnZTsKJiM0MzsJaW50IGk7CiAJdTggYWRkcjsKIAogCUlOSVRfTElTVF9IRUFEKCZhbXA7cHJpdi0mZ3Q7Y20ucGFzc2l2ZV9pZHMpOwpAQCAtMTYwMCw5ICYjNDM7MTYwMCw5IEBAIGludCBpcG9pYl9jbV9kZXZfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCiAJc2tiX3F1ZXVlX2hlYWRfaW5pdCgmYW1wO3ByaXYtJmd0O2NtLnNrYl9xdWV1ZSk7CiAKLQlpcG9pYl9kYmcocHJpdiwgJiMzNDttYXhfc3JxX3NnZT0lZFxuJiMzNDssIHByaXYtJmd0O2NhLSZndDthdHRycy5tYXhfc3JxX3NnZSk7CiYjNDM7CWlwb2liX2RiZyhwcml2LCAmIzM0O21heF9zcnFfc2dlPSV1XG4mIzM0OywgcHJpdi0mZ3Q7Y2EtJmd0O2F0dHJzLm1heF9zcnFfc2dlKTsKIAotCW1heF9zcnFfc2dlID0gbWluX3QoaW50LCBJUE9JQl9DTV9SWF9TRywgcHJpdi0mZ3Q7Y2EtJmd0O2F0dHJzLm1heF9zcnFfc2dlKTsKJiM0MzsJbWF4X3NycV9zZ2UgPSBtaW4ocHJpdi0mZ3Q7Y2EtJmd0O2F0dHJzLm1heF9zcnFfc2dlLCBJUE9JQl9DTV9SWF9TRyk7CiAJaXBvaWJfY21fY3JlYXRlX3NycShkZXYsIG1heF9zcnFfc2dlKTsKIAlpZiAoaXBvaWJfY21faGFzX3NycShkZXYpKSB7CiAJCXByaXYtJmd0O2NtLm1heF9jbV9tdHUgPSBtYXhfc3JxX3NnZSAqIFBBR0VfU0laRSAtIDB4MTA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX3ZlcmJzLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX3ZlcmJzLmMKaW5kZXggM2VkMWVhNTY2NjkwZGQuLjI0OTA2OTZhMWFhYmM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX3ZlcmJzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYl92ZXJicy5jCkBAIC0xNDcsOCAmIzQzOzE0Nyw3IEBAIGludCBpcG9pYl90cmFuc3BvcnRfZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGliX2RldmljZSAqY2EpCiAJCS5jYXAgPSB7CiAJCQkubWF4X3NlbmRfd3IgID0gaXBvaWJfc2VuZHFfc2l6ZSwKIAkJCS5tYXhfcmVjdl93ciAgPSBpcG9pYl9yZWN2cV9zaXplLAotCQkJLm1heF9zZW5kX3NnZSA9IG1pbl90KHUzMiwgcHJpdi0mZ3Q7Y2EtJmd0O2F0dHJzLm1heF9zZW5kX3NnZSwKLQkJCQkJICAgICAgTUFYX1NLQl9GUkFHUyAmIzQzOyAxKSwKJiM0MzsJCQkubWF4X3NlbmRfc2dlID0gbWluKHByaXYtJmd0O2NhLSZndDthdHRycy5tYXhfc2VuZF9zZ2UsIE1BWF9TS0JfRlJBR1MgJiM0MzsgMSksCiAJCQkubWF4X3JlY3Zfc2dlID0gSVBPSUJfVURfUlhfU0cKIAkJfSwKIAkJLnNxX3NpZ190eXBlID0gSUJfU0lHTkFMX0FMTF9XUiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlci9pc2VyX3ZlcmJzLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvaXNlcl92ZXJicy5jCmluZGV4IGYwM2IzYmIzYzBjNGMxLi41NWZlNjhlNWI4Mzc1ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL2lzZXJfdmVyYnMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvaXNlcl92ZXJicy5jCkBAIC0yNDQsOCAmIzQzOzI0NCw3IEBAIHN0YXRpYyBpbnQgaXNlcl9jcmVhdGVfaWJfY29ubl9yZXMoc3RydWN0IGliX2Nvbm4gKmliX2Nvbm4pCiAJCW1heF9zZW5kX3dyID0gSVNFUl9RUF9TSUdfTUFYX1JFUV9EVE9TICYjNDM7IDE7CiAJZWxzZQogCQltYXhfc2VuZF93ciA9IElTRVJfUVBfTUFYX1JFUV9EVE9TICYjNDM7IDE7Ci0JbWF4X3NlbmRfd3IgPSBtaW5fdCh1bnNpZ25lZCBpbnQsIG1heF9zZW5kX3dyLAotCQkJICAgICh1bnNpZ25lZCBpbnQpaWJfZGV2LSZndDthdHRycy5tYXhfcXBfd3IpOwomIzQzOwltYXhfc2VuZF93ciA9IG1pbihtYXhfc2VuZF93ciwgaWJfZGV2LSZndDthdHRycy5tYXhfcXBfd3IpOwogCiAJY3Ffc2l6ZSA9IG1heF9zZW5kX3dyICYjNDM7IElTRVJfUVBfTUFYX1JFQ1ZfRFRPUzsKIAlpYl9jb25uLSZndDtjcSA9IGliX2NxX3Bvb2xfZ2V0KGliX2RldiwgY3Ffc2l6ZSwgLTEsIElCX1BPTExfU09GVElSUSk7CkBAIC01ODksNyAmIzQzOzU4OCw3IEBAIHN0YXRpYyB2b2lkIGlzZXJfcm91dGVfaGFuZGxlcihzdHJ1Y3QgcmRtYV9jbV9pZCAqY21hX2lkKQogCQlnb3RvIGZhaWx1cmU7CiAKIAltZW1zZXQoJmFtcDtjb25uX3BhcmFtLCAwLCBzaXplb2YgY29ubl9wYXJhbSk7Ci0JY29ubl9wYXJhbS5yZXNwb25kZXJfcmVzb3VyY2VzID0gaWJfZGV2LSZndDthdHRycy5tYXhfcXBfcmRfYXRvbTsKJiM0MzsJY29ubl9wYXJhbS5yZXNwb25kZXJfcmVzb3VyY2VzID0gbWluKGliX2Rldi0mZ3Q7YXR0cnMubWF4X3FwX3JkX2F0b20sIFU4X01BWCk7CiAJY29ubl9wYXJhbS5pbml0aWF0b3JfZGVwdGggPSAxOwogCWNvbm5fcGFyYW0ucmV0cnlfY291bnQgPSA3OwogCWNvbm5fcGFyYW0ucm5yX3JldHJ5X2NvdW50ID0gNjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvaWJfaXNlcnQuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvaWJfaXNlcnQuYwppbmRleCAxMDE1YTUxZjc1MGFmNC4uNDY5MTg0NWJmODE1ZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvaWJfaXNlcnQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXJ0L2liX2lzZXJ0LmMKQEAgLTIxNCw5ICYjNDM7MjE0LDkgQEAgaXNlcnRfY3JlYXRlX2RldmljZV9pYl9yZXMoc3RydWN0IGlzZXJ0X2RldmljZSAqZGV2aWNlKQogCXN0cnVjdCBpYl9kZXZpY2UgKmliX2RldiA9IGRldmljZS0mZ3Q7aWJfZGV2aWNlOwogCWludCByZXQ7CiAKLQlpc2VydF9kYmcoJiMzNDtkZXZhdHRyLSZndDttYXhfc2VuZF9zZ2U6ICVkIGRldmF0dHItJmd0O21heF9yZWN2X3NnZSAlZFxuJiMzNDssCiYjNDM7CWlzZXJ0X2RiZygmIzM0O2RldmF0dHItJmd0O21heF9zZW5kX3NnZTogJXUgZGV2YXR0ci0mZ3Q7bWF4X3JlY3Zfc2dlICV1XG4mIzM0OywKIAkJICBpYl9kZXYtJmd0O2F0dHJzLm1heF9zZW5kX3NnZSwgaWJfZGV2LSZndDthdHRycy5tYXhfcmVjdl9zZ2UpOwotCWlzZXJ0X2RiZygmIzM0O2RldmF0dHItJmd0O21heF9zZ2VfcmQ6ICVkXG4mIzM0OywgaWJfZGV2LSZndDthdHRycy5tYXhfc2dlX3JkKTsKJiM0MzsJaXNlcnRfZGJnKCYjMzQ7ZGV2YXR0ci0mZ3Q7bWF4X3NnZV9yZDogJXVcbiYjMzQ7LCBpYl9kZXYtJmd0O2F0dHJzLm1heF9zZ2VfcmQpOwogCiAJZGV2aWNlLSZndDtwZCA9IGliX2FsbG9jX3BkKGliX2RldiwgMCk7CiAJaWYgKElTX0VSUihkZXZpY2UtJmd0O3BkKSkgewpAQCAtMzgxLDggJiM0MzszODEsNyBAQCBpc2VydF9zZXRfbmVnb19wYXJhbXMoc3RydWN0IGlzZXJ0X2Nvbm4gKmlzZXJ0X2Nvbm4sCiAJc3RydWN0IGliX2RldmljZV9hdHRyICphdHRyID0gJmFtcDtpc2VydF9jb25uLSZndDtkZXZpY2UtJmd0O2liX2RldmljZS0mZ3Q7YXR0cnM7CiAKIAkvKiBTZXQgbWF4IGluZmxpZ2h0IFJETUEgUkVBRCByZXF1ZXN0cyAqLwotCWlzZXJ0X2Nvbm4tJmd0O2luaXRpYXRvcl9kZXB0aCA9IG1pbl90KHU4LCBwYXJhbS0mZ3Q7aW5pdGlhdG9yX2RlcHRoLAotCQkJCWF0dHItJmd0O21heF9xcF9pbml0X3JkX2F0b20pOwomIzQzOwlpc2VydF9jb25uLSZndDtpbml0aWF0b3JfZGVwdGggPSBtaW4ocGFyYW0tJmd0O2luaXRpYXRvcl9kZXB0aCwgYXR0ci0mZ3Q7bWF4X3FwX2luaXRfcmRfYXRvbSk7CiAJaXNlcnRfZGJnKCYjMzQ7VXNpbmcgaW5pdGlhdG9yX2RlcHRoOiAldVxuJiMzNDssIGlzZXJ0X2Nvbm4tJmd0O2luaXRpYXRvcl9kZXB0aCk7CiAKIAlpZiAocGFyYW0tJmd0O3ByaXZhdGVfZGF0YSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtY2x0LmMgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvcnRycy1jbHQuYwppbmRleCBlMzUxNTUyNzMzZGYyMy4uODBiMDg2OTdmOTZiNTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9ydHJzLWNsdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9ydHJzLWNsdC5jCkBAIC0xNjgxLDggJiM0MzsxNjgxLDcgQEAgc3RhdGljIGludCBjcmVhdGVfY29uX2NxX3FwKHN0cnVjdCBydHJzX2NsdF9jb24gKmNvbikKIAkJICogJiM0MzsgMiBmb3IgZHJhaW4gYW5kIGhlYXJ0YmVhdAogCQkgKiBpbiBjYXNlIHFwIGdldHMgaW50byBlcnJvciBzdGF0ZS4KIAkJICovCi0JCW1heF9zZW5kX3dyID0KLQkJCW1pbl90KGludCwgd3JfbGltaXQsIFNFUlZJQ0VfQ09OX1FVRVVFX0RFUFRIICogMiAmIzQzOyAyKTsKJiM0MzsJCW1heF9zZW5kX3dyID0gbWluKHdyX2xpbWl0LCBTRVJWSUNFX0NPTl9RVUVVRV9ERVBUSCAqIDIgJiM0MzsgMik7CiAJCW1heF9yZWN2X3dyID0gbWF4X3NlbmRfd3I7CiAJfSBlbHNlIHsKIAkJLyoKQEAgLTE2OTgsMTEgJiM0MzsxNjk3LDkgQEAgc3RhdGljIGludCBjcmVhdGVfY29uX2NxX3FwKHN0cnVjdCBydHJzX2NsdF9jb24gKmNvbikKIAkJd3JfbGltaXQgPSBjbHRfcGF0aC0mZ3Q7cy5kZXYtJmd0O2liX2Rldi0mZ3Q7YXR0cnMubWF4X3FwX3dyOwogCQkvKiBTaGFyZWQgYmV0d2VlbiBjb25uZWN0aW9ucyAqLwogCQljbHRfcGF0aC0mZ3Q7cy5kZXZfcmVmJiM0MzsmIzQzOzsKLQkJbWF4X3NlbmRfd3IgPSBtaW5fdChpbnQsIHdyX2xpbWl0LAotCQkJICAgICAgLyogUUQgKiAoUkVRICYjNDM7IFJTUCAmIzQzOyBGUiBSRUdTIG9yIElOVlMpICYjNDM7IGRyYWluICovCi0JCQkgICAgICBjbHRfcGF0aC0mZ3Q7cXVldWVfZGVwdGggKiA0ICYjNDM7IDEpOwotCQltYXhfcmVjdl93ciA9IG1pbl90KGludCwgd3JfbGltaXQsCi0JCQkgICAgICBjbHRfcGF0aC0mZ3Q7cXVldWVfZGVwdGggKiAzICYjNDM7IDEpOwomIzQzOwkJLyogUUQgKiAoUkVRICYjNDM7IFJTUCAmIzQzOyBGUiBSRUdTIG9yIElOVlMpICYjNDM7IGRyYWluICovCiYjNDM7CQltYXhfc2VuZF93ciA9IG1pbih3cl9saW1pdCwgY2x0X3BhdGgtJmd0O3F1ZXVlX2RlcHRoICogNCAmIzQzOyAxKTsKJiM0MzsJCW1heF9yZWN2X3dyID0gbWluKHdyX2xpbWl0LCBjbHRfcGF0aC0mZ3Q7cXVldWVfZGVwdGggKiAzICYjNDM7IDEpOwogCQltYXhfc2VuZF9zZ2UgPSAyOwogCX0KIAlhdG9taWNfc2V0KCZhbXA7Y29uLSZndDtjLnNxX3dyX2F2YWlsLCBtYXhfc2VuZF93cik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvcnRycy1zcnYuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9ydHJzLXNydi5jCmluZGV4IDY0ODJhZDg1OWJkMTA4Li5mNWE2ODkwMjM1YmNjNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtc3J2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtc3J2LmMKQEAgLTE3MzEsMjEgJiM0MzsxNzMxLDE2IEBAIHN0YXRpYyBpbnQgY3JlYXRlX2NvbihzdHJ1Y3QgcnRyc19zcnZfcGF0aCAqc3J2X3BhdGgsCiAJCSAqIEFsbCByZWNlaXZlIGFuZCBhbGwgc2VuZCAoZWFjaCByZXF1aXJpbmcgaW52YWxpZGF0ZSkKIAkJICogJiM0MzsgMiBmb3IgZHJhaW4gYW5kIGhlYXJ0YmVhdAogCQkgKi8KLQkJbWF4X3NlbmRfd3IgPSBtaW5fdChpbnQsIHdyX2xpbWl0LAotCQkJCSAgICBTRVJWSUNFX0NPTl9RVUVVRV9ERVBUSCAqIDIgJiM0MzsgMik7CiYjNDM7CQltYXhfc2VuZF93ciA9IG1pbih3cl9saW1pdCwgU0VSVklDRV9DT05fUVVFVUVfREVQVEggKiAyICYjNDM7IDIpOwogCQltYXhfcmVjdl93ciA9IG1heF9zZW5kX3dyOwogCQlzLSZndDtzaWduYWxfaW50ZXJ2YWwgPSBtaW5fbm90X3plcm8oc3J2LSZndDtxdWV1ZV9kZXB0aCwKIAkJCQkJCSAgKHNpemVfdClTRVJWSUNFX0NPTl9RVUVVRV9ERVBUSCk7CiAJfSBlbHNlIHsKIAkJLyogd2hlbiBhbHdheXNfaW52bGFpZGF0ZSBlbmFsYmVkLCB3ZSBuZWVkIGxpbnYmIzQzO3JpbnYmIzQzO21yJiM0MztpbW0gKi8KIAkJaWYgKGFsd2F5c19pbnZhbGlkYXRlKQotCQkJbWF4X3NlbmRfd3IgPQotCQkJCW1pbl90KGludCwgd3JfbGltaXQsCi0JCQkJICAgICAgc3J2LSZndDtxdWV1ZV9kZXB0aCAqICgxICYjNDM7IDQpICYjNDM7IDEpOwomIzQzOwkJCW1heF9zZW5kX3dyID0gbWluKHdyX2xpbWl0LCBzcnYtJmd0O3F1ZXVlX2RlcHRoICogKDEgJiM0MzsgNCkgJiM0MzsgMSk7CiAJCWVsc2UKLQkJCW1heF9zZW5kX3dyID0KLQkJCQltaW5fdChpbnQsIHdyX2xpbWl0LAotCQkJCSAgICAgIHNydi0mZ3Q7cXVldWVfZGVwdGggKiAoMSAmIzQzOyAyKSAmIzQzOyAxKTsKJiM0MzsJCQltYXhfc2VuZF93ciA9IG1pbih3cl9saW1pdCwgc3J2LSZndDtxdWV1ZV9kZXB0aCAqICgxICYjNDM7IDIpICYjNDM7IDEpOwogCiAJCW1heF9yZWN2X3dyID0gc3J2LSZndDtxdWV1ZV9kZXB0aCAmIzQzOyAxOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL2liX3NycC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnAvaWJfc3JwLmMKaW5kZXggYWNiZDc4N2RlMjY1YjUuLjBjYWViYmMyODEwZmYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycC9pYl9zcnAuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycC9pYl9zcnAuYwpAQCAtNTU3LDcgJiM0Mzs1NTcsNyBAQCBzdGF0aWMgaW50IHNycF9jcmVhdGVfY2hfaWIoc3RydWN0IHNycF9yZG1hX2NoICpjaCkKIAlpbml0X2F0dHItJmd0O2NhcC5tYXhfc2VuZF93ciAgICAgPSBtICogdGFyZ2V0LSZndDtxdWV1ZV9zaXplOwogCWluaXRfYXR0ci0mZ3Q7Y2FwLm1heF9yZWN2X3dyICAgICA9IHRhcmdldC0mZ3Q7cXVldWVfc2l6ZSAmIzQzOyAxOwogCWluaXRfYXR0ci0mZ3Q7Y2FwLm1heF9yZWN2X3NnZSAgICA9IDE7Ci0JaW5pdF9hdHRyLSZndDtjYXAubWF4X3NlbmRfc2dlICAgID0gbWluKFNSUF9NQVhfU0dFLCBhdHRyLSZndDttYXhfc2VuZF9zZ2UpOwomIzQzOwlpbml0X2F0dHItJmd0O2NhcC5tYXhfc2VuZF9zZ2UgICAgPSBtaW4oYXR0ci0mZ3Q7bWF4X3NlbmRfc2dlLCBTUlBfTUFYX1NHRSk7CiAJaW5pdF9hdHRyLSZndDtzcV9zaWdfdHlwZSAgICAgICAgID0gSUJfU0lHTkFMX1JFUV9XUjsKIAlpbml0X2F0dHItJmd0O3FwX3R5cGUgICAgICAgICAgICAgPSBJQl9RUFRfUkM7CiAJaW5pdF9hdHRyLSZndDtzZW5kX2NxICAgICAgICAgICAgID0gc2VuZF9jcTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwdC9pYl9zcnB0LmMgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycHQvaWJfc3JwdC5jCmluZGV4IDlhZWM1ZDgwMTE3ZjFmLi5hNGU0ZmViYTRhMDI1MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnB0L2liX3NycHQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycHQvaWJfc3JwdC5jCkBAIC03Nyw4ICYjNDM7NzcsOCBAQCBtb2R1bGVfcGFyYW0oc3JwX21heF9yZXFfc2l6ZSwgaW50LCAwNDQ0KTsKIE1PRFVMRV9QQVJNX0RFU0Moc3JwX21heF9yZXFfc2l6ZSwKIAkJICYjMzQ7TWF4aW11bSBzaXplIG9mIFNSUCByZXF1ZXN0IG1lc3NhZ2VzIGluIGJ5dGVzLiYjMzQ7KTsKIAotc3RhdGljIGludCBzcnB0X3NycV9zaXplID0gREVGQVVMVF9TUlBUX1NSUV9TSVpFOwotbW9kdWxlX3BhcmFtKHNycHRfc3JxX3NpemUsIGludCwgMDQ0NCk7CiYjNDM7c3RhdGljIHVuc2lnbmVkIGludCBzcnB0X3NycV9zaXplID0gREVGQVVMVF9TUlBUX1NSUV9TSVpFOwomIzQzO21vZHVsZV9wYXJhbShzcnB0X3NycV9zaXplLCB1aW50LCAwNDQ0KTsKIE1PRFVMRV9QQVJNX0RFU0Moc3JwdF9zcnFfc2l6ZSwKIAkJICYjMzQ7U2hhcmVkIHJlY2VpdmUgcXVldWUgKFNSUSkgc2l6ZS4mIzM0Oyk7CiAKQEAgLTQwNSw4ICYjNDM7NDA1LDcgQEAgc3RhdGljIHZvaWQgc3JwdF9nZXRfaW9jKHN0cnVjdCBzcnB0X3BvcnQgKnNwb3J0LCB1MzIgc2xvdCwKIAlpZiAoc2Rldi0mZ3Q7dXNlX3NycSkKIAkJc2VuZF9xdWV1ZV9kZXB0aCA9IHNkZXYtJmd0O3NycV9zaXplOwogCWVsc2UKLQkJc2VuZF9xdWV1ZV9kZXB0aCA9IG1pbihNQVhfU1JQVF9SUV9TSVpFLAotCQkJCSAgICAgICBzZGV2LSZndDtkZXZpY2UtJmd0O2F0dHJzLm1heF9xcF93cik7CiYjNDM7CQlzZW5kX3F1ZXVlX2RlcHRoID0gbWluKHNkZXYtJmd0O2RldmljZS0mZ3Q7YXR0cnMubWF4X3FwX3dyLCBNQVhfU1JQVF9SUV9TSVpFKTsKIAogCW1lbXNldChpb2NwLCAwLCBzaXplb2YoKmlvY3ApKTsKIAlzdHJjcHkoaW9jcC0mZ3Q7aWRfc3RyaW5nLCBTUlBUX0lEX1NUUklORyk7CkBAIC0xODUwLDcgJiM0MzsxODQ5LDcgQEAgc3RhdGljIGludCBzcnB0X2NyZWF0ZV9jaF9pYihzdHJ1Y3Qgc3JwdF9yZG1hX2NoICpjaCkKIAlzdHJ1Y3Qgc3JwdF9wb3J0ICpzcG9ydCA9IGNoLSZndDtzcG9ydDsKIAlzdHJ1Y3Qgc3JwdF9kZXZpY2UgKnNkZXYgPSBzcG9ydC0mZ3Q7c2RldjsKIAljb25zdCBzdHJ1Y3QgaWJfZGV2aWNlX2F0dHIgKmF0dHJzID0gJmFtcDtzZGV2LSZndDtkZXZpY2UtJmd0O2F0dHJzOwotCWludCBzcV9zaXplID0gc3BvcnQtJmd0O3BvcnRfYXR0cmliLnNycF9zcV9zaXplOwomIzQzOwl1MzIgc3Ffc2l6ZSA9IHNwb3J0LSZndDtwb3J0X2F0dHJpYi5zcnBfc3Ffc2l6ZTsKIAlpbnQgaSwgcmV0OwogCiAJV0FSTl9PTihjaC0mZ3Q7cnFfc2l6ZSAmbHQ7IDEpOwpAQCAtMTkxMSwxMyAmIzQzOzE5MTAsMTMgQEAgc3RhdGljIGludCBzcnB0X2NyZWF0ZV9jaF9pYihzdHJ1Y3Qgc3JwdF9yZG1hX2NoICpjaCkKIAkJYm9vbCByZXRyeSA9IHNxX3NpemUgJmd0OyBNSU5fU1JQVF9TUV9TSVpFOwogCiAJCWlmIChyZXRyeSkgewotCQkJcHJfZGVidWcoJiMzNDtmYWlsZWQgdG8gY3JlYXRlIHF1ZXVlIHBhaXIgd2l0aCBzcV9zaXplID0gJWQgKCVkKSAtIHJldHJ5aW5nXG4mIzM0OywKJiM0MzsJCQlwcl9kZWJ1ZygmIzM0O2ZhaWxlZCB0byBjcmVhdGUgcXVldWUgcGFpciB3aXRoIHNxX3NpemUgPSAldSAoJWQpIC0gcmV0cnlpbmdcbiYjMzQ7LAogCQkJCSBzcV9zaXplLCByZXQpOwogCQkJaWJfY3FfcG9vbF9wdXQoY2gtJmd0O2NxLCBjaC0mZ3Q7Y3Ffc2l6ZSk7CiAJCQlzcV9zaXplID0gbWF4KHNxX3NpemUgLyAyLCBNSU5fU1JQVF9TUV9TSVpFKTsKIAkJCWdvdG8gcmV0cnk7CiAJCX0gZWxzZSB7Ci0JCQlwcl9lcnIoJiMzNDtmYWlsZWQgdG8gY3JlYXRlIHF1ZXVlIHBhaXIgd2l0aCBzcV9zaXplID0gJWQgKCVkKVxuJiMzNDssCiYjNDM7CQkJcHJfZXJyKCYjMzQ7ZmFpbGVkIHRvIGNyZWF0ZSBxdWV1ZSBwYWlyIHdpdGggc3Ffc2l6ZSA9ICV1ICglZClcbiYjMzQ7LAogCQkJICAgICAgIHNxX3NpemUsIHJldCk7CiAJCQlnb3RvIGVycl9kZXN0cm95X2NxOwogCQl9CkBAIC0xOTI1LDcgJiM0MzsxOTI0LDcgQEAgc3RhdGljIGludCBzcnB0X2NyZWF0ZV9jaF9pYihzdHJ1Y3Qgc3JwdF9yZG1hX2NoICpjaCkKIAogCWF0b21pY19zZXQoJmFtcDtjaC0mZ3Q7c3Ffd3JfYXZhaWwsIHFwX2luaXQtJmd0O2NhcC5tYXhfc2VuZF93cik7CiAKLQlwcl9kZWJ1ZygmIzM0OyVzOiBtYXhfY3FlPSAlZCBtYXhfc2dlPSAlZCBzcV9zaXplID0gJWQgY2g9ICVwXG4mIzM0OywKJiM0MzsJcHJfZGVidWcoJiMzNDslczogbWF4X2NxZT0gJWQgbWF4X3NnZT0gJWQgc3Ffc2l6ZSA9ICV1IGNoPSAlcFxuJiMzNDssCiAJCSBfX2Z1bmNfXywgY2gtJmd0O2NxLSZndDtjcWUsIHFwX2luaXQtJmd0O2NhcC5tYXhfc2VuZF9zZ2UsCiAJCSBxcF9pbml0LSZndDtjYXAubWF4X3NlbmRfd3IsIGNoKTsKIApAQCAtMjI5OCw3ICYjNDM7MjI5Nyw3IEBAIHN0YXRpYyBpbnQgc3JwdF9jbV9yZXFfcmVjdihzdHJ1Y3Qgc3JwdF9kZXZpY2UgKmNvbnN0IHNkZXYsCiAJICogZGVwdGggdG8gYXZvaWQgdGhhdCB0aGUgaW5pdGlhdG9yIGRyaXZlciBoYXMgdG8gcmVwb3J0IFFVRVVFX0ZVTEwKIAkgKiB0byB0aGUgU0NTSSBtaWQtbGF5ZXIuCiAJICovCi0JY2gtJmd0O3JxX3NpemUgPSBtaW4oTUFYX1NSUFRfUlFfU0laRSwgc2Rldi0mZ3Q7ZGV2aWNlLSZndDthdHRycy5tYXhfcXBfd3IpOwomIzQzOwljaC0mZ3Q7cnFfc2l6ZSA9IG1pbihzZGV2LSZndDtkZXZpY2UtJmd0O2F0dHJzLm1heF9xcF93ciwgTUFYX1NSUFRfUlFfU0laRSk7CiAJc3Bpbl9sb2NrX2luaXQoJmFtcDtjaC0mZ3Q7c3BpbmxvY2spOwogCWNoLSZndDtzdGF0ZSA9IENIX0NPTk5FQ1RJTkc7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDtjaC0mZ3Q7Y21kX3dhaXRfbGlzdCk7CkBAIC0zMTM2LDcgJiM0MzszMTM1LDcgQEAgc3RhdGljIGludCBzcnB0X2FsbG9jX3NycShzdHJ1Y3Qgc3JwdF9kZXZpY2UgKnNkZXYpCiAJCXJldHVybiBQVFJfRVJSKHNycSk7CiAJfQogCi0JcHJfZGVidWcoJiMzNDtjcmVhdGUgU1JRICN3cj0gJWQgbWF4X2FsbG93PSVkIGRldj0gJXNcbiYjMzQ7LCBzZGV2LSZndDtzcnFfc2l6ZSwKJiM0MzsJcHJfZGVidWcoJiMzNDtjcmVhdGUgU1JRICN3cj0gJWQgbWF4X2FsbG93PSV1IGRldj0gJXNcbiYjMzQ7LCBzZGV2LSZndDtzcnFfc2l6ZSwKIAkJIHNkZXYtJmd0O2RldmljZS0mZ3Q7YXR0cnMubWF4X3NycV93ciwgZGV2X25hbWUoJmFtcDtkZXZpY2UtJmd0O2RldikpOwogCiAJc2Rldi0mZ3Q7cmVxX2J1Zl9jYWNoZSA9IHNycHRfY2FjaGVfZ2V0KHNycF9tYXhfcmVxX3NpemUpOwpAQCAtMzk1MSw3ICYjNDM7Mzk1MCw3IEBAIHN0YXRpYyBpbnQgX19pbml0IHNycHRfaW5pdF9tb2R1bGUodm9pZCkKIAogCWlmIChzcnB0X3NycV9zaXplICZsdDsgTUlOX1NSUFRfU1JRX1NJWkUKIAkgICAgfHwgc3JwdF9zcnFfc2l6ZSAmZ3Q7IE1BWF9TUlBUX1NSUV9TSVpFKSB7Ci0JCXByX2VycigmIzM0O2ludmFsaWQgdmFsdWUgJWQgZm9yIGtlcm5lbCBtb2R1bGUgcGFyYW1ldGVyIHNycHRfc3JxX3NpemUgLS0gbXVzdCBiZSBpbiB0aGUgcmFuZ2UgWyVkLi4lZF0uXG4mIzM0OywKJiM0MzsJCXByX2VycigmIzM0O2ludmFsaWQgdmFsdWUgJXUgZm9yIGtlcm5lbCBtb2R1bGUgcGFyYW1ldGVyIHNycHRfc3JxX3NpemUgLS0gbXVzdCBiZSBpbiB0aGUgcmFuZ2UgWyVkLi4lZF0uXG4mIzM0OywKIAkJICAgICAgIHNycHRfc3JxX3NpemUsIE1JTl9TUlBUX1NSUV9TSVpFLCBNQVhfU1JQVF9TUlFfU0laRSk7CiAJCWdvdG8gb3V0OwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS9ob3N0L3JkbWEuYyBiL2RyaXZlcnMvbnZtZS9ob3N0L3JkbWEuYwppbmRleCA2OTA5ZTM1NDI3OTQyNy4uNTZjZDIyOGFmMWQ1N2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbnZtZS9ob3N0L3JkbWEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL252bWUvaG9zdC9yZG1hLmMKQEAgLTM5NCw4ICYjNDM7Mzk0LDEwIEBAIG52bWVfcmRtYV9maW5kX2dldF9kZXZpY2Uoc3RydWN0IHJkbWFfY21faWQgKmNtX2lkKQogCQlnb3RvIG91dF9mcmVlX3BkOwogCX0KIAotCW5kZXYtJmd0O251bV9pbmxpbmVfc2VnbWVudHMgPSBtaW4oTlZNRV9SRE1BX01BWF9JTkxJTkVfU0VHTUVOVFMsCi0JCQkJCW5kZXYtJmd0O2Rldi0mZ3Q7YXR0cnMubWF4X3NlbmRfc2dlIC0gMSk7CiYjNDM7CW5kZXYtJmd0O251bV9pbmxpbmVfc2VnbWVudHMgPSBuZGV2LSZndDtkZXYtJmd0O2F0dHJzLm1heF9zZW5kX3NnZTsKJiM0MzsJaWYgKG5kZXYtJmd0O251bV9pbmxpbmVfc2VnbWVudHMpCiYjNDM7CQluZGV2LSZndDtudW1faW5saW5lX3NlZ21lbnRzLS07CiYjNDM7CW5kZXYtJmd0O251bV9pbmxpbmVfc2VnbWVudHMgPSBtaW4obmRldi0mZ3Q7bnVtX2lubGluZV9zZWdtZW50cywgTlZNRV9SRE1BX01BWF9JTkxJTkVfU0VHTUVOVFMpOwogCWxpc3RfYWRkKCZhbXA7bmRldi0mZ3Q7ZW50cnksICZhbXA7ZGV2aWNlX2xpc3QpOwogb3V0X3VubG9jazoKIAltdXRleF91bmxvY2soJmFtcDtkZXZpY2VfbGlzdF9tdXRleCk7CkBAIC0xODQ3LDcgJiM0MzsxODQ5LDcgQEAgc3RhdGljIGludCBudm1lX3JkbWFfcm91dGVfcmVzb2x2ZWQoc3RydWN0IG52bWVfcmRtYV9xdWV1ZSAqcXVldWUpCiAJcGFyYW0ucXBfbnVtID0gcXVldWUtJmd0O3FwLSZndDtxcF9udW07CiAJcGFyYW0uZmxvd19jb250cm9sID0gMTsKIAotCXBhcmFtLnJlc3BvbmRlcl9yZXNvdXJjZXMgPSBxdWV1ZS0mZ3Q7ZGV2aWNlLSZndDtkZXYtJmd0O2F0dHJzLm1heF9xcF9yZF9hdG9tOwomIzQzOwlwYXJhbS5yZXNwb25kZXJfcmVzb3VyY2VzID0gbWluKHF1ZXVlLSZndDtkZXZpY2UtJmd0O2Rldi0mZ3Q7YXR0cnMubWF4X3FwX3JkX2F0b20sIFU4X01BWCk7CiAJLyogbWF4aW11bSByZXRyeSBjb3VudCAqLwogCXBhcmFtLnJldHJ5X2NvdW50ID0gNzsKIAlwYXJhbS5ybnJfcmV0cnlfY291bnQgPSA3OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lL3RhcmdldC9yZG1hLmMgYi9kcml2ZXJzL252bWUvdGFyZ2V0L3JkbWEuYwppbmRleCBhYzI2ZjRmNzc0YzRkZS4uMWMzMzJkNjYyMjJhMGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbnZtZS90YXJnZXQvcmRtYS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbnZtZS90YXJnZXQvcmRtYS5jCkBAIC0xNTIsNyAmIzQzOzE1Miw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtX29wcyBzcnFfc2l6ZV9vcHMgPSB7CiAJLmdldCA9IHBhcmFtX2dldF9pbnQsCiB9OwogCi1zdGF0aWMgaW50IG52bWV0X3JkbWFfc3JxX3NpemUgPSAxMDI0OwomIzQzO3N0YXRpYyB1bnNpZ25lZCBpbnQgbnZtZXRfcmRtYV9zcnFfc2l6ZSA9IDEwMjQ7CiBtb2R1bGVfcGFyYW1fY2Ioc3JxX3NpemUsICZhbXA7c3JxX3NpemVfb3BzLCAmYW1wO252bWV0X3JkbWFfc3JxX3NpemUsIDA2NDQpOwogTU9EVUxFX1BBUk1fREVTQyhzcnFfc2l6ZSwgJiMzNDtzZXQgU2hhcmVkIFJlY2VpdmUgUXVldWUgKFNSUSkgc2l6ZSwgc2hvdWxkICZndDs9IDI1NiAoZGVmYXVsdDogMTAyNCkmIzM0Oyk7CiAKQEAgLTExOTcsNyAmIzQzOzExOTcsNyBAQCBudm1ldF9yZG1hX2ZpbmRfZ2V0X2RldmljZShzdHJ1Y3QgcmRtYV9jbV9pZCAqY21faWQpCiAJc3RydWN0IG52bWV0X3BvcnQgKm5wb3J0ID0gcG9ydC0mZ3Q7bnBvcnQ7CiAJc3RydWN0IG52bWV0X3JkbWFfZGV2aWNlICpuZGV2OwogCWludCBpbmxpbmVfcGFnZV9jb3VudDsKLQlpbnQgaW5saW5lX3NnZV9jb3VudDsKJiM0MzsJdTMyIGlubGluZV9zZ2VfY291bnQ7CiAJaW50IHJldDsKIAogCW11dGV4X2xvY2soJmFtcDtkZXZpY2VfbGlzdF9tdXRleCk7CkBAIC0xMjEzLDcgJiM0MzsxMjEzLDkgQEAgbnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2Uoc3RydWN0IHJkbWFfY21faWQgKmNtX2lkKQogCiAJaW5saW5lX3BhZ2VfY291bnQgPSBudW1fcGFnZXMobnBvcnQtJmd0O2lubGluZV9kYXRhX3NpemUpOwogCWlubGluZV9zZ2VfY291bnQgPSBtYXgoY21faWQtJmd0O2RldmljZS0mZ3Q7YXR0cnMubWF4X3NnZV9yZCwKLQkJCQljbV9pZC0mZ3Q7ZGV2aWNlLSZndDthdHRycy5tYXhfcmVjdl9zZ2UpIC0gMTsKJiM0MzsJCQkJY21faWQtJmd0O2RldmljZS0mZ3Q7YXR0cnMubWF4X3JlY3Zfc2dlKTsKJiM0MzsJaWYgKGlubGluZV9zZ2VfY291bnQpCiYjNDM7CQlpbmxpbmVfc2dlX2NvdW50LS07CiAJaWYgKGlubGluZV9wYWdlX2NvdW50ICZndDsgaW5saW5lX3NnZV9jb3VudCkgewogCQlwcl93YXJuKCYjMzQ7aW5saW5lX2RhdGFfc2l6ZSAlZCBjYW5ub3QgYmUgc3VwcG9ydGVkIGJ5IGRldmljZSAlcy4gUmVkdWNpbmcgdG8gJWx1LlxuJiMzNDssCiAJCQlucG9ydC0mZ3Q7aW5saW5lX2RhdGFfc2l6ZSwgY21faWQtJmd0O2RldmljZS0mZ3Q7bmFtZSwKQEAgLTE1NTMsOCAmIzQzOzE1NTUsOSBAQCBzdGF0aWMgaW50IG52bWV0X3JkbWFfY21fYWNjZXB0KHN0cnVjdCByZG1hX2NtX2lkICpjbV9pZCwKIAogCXBhcmFtLnJucl9yZXRyeV9jb3VudCA9IDc7CiAJcGFyYW0uZmxvd19jb250cm9sID0gMTsKLQlwYXJhbS5pbml0aWF0b3JfZGVwdGggPSBtaW5fdCh1OCwgcC0mZ3Q7aW5pdGlhdG9yX2RlcHRoLAotCQlxdWV1ZS0mZ3Q7ZGV2LSZndDtkZXZpY2UtJmd0O2F0dHJzLm1heF9xcF9pbml0X3JkX2F0b20pOwomIzQzOwlwYXJhbS5pbml0aWF0b3JfZGVwdGggPSBtaW4zKHAtJmd0O2luaXRpYXRvcl9kZXB0aCwKJiM0MzsJCQkJICAgICBxdWV1ZS0mZ3Q7ZGV2LSZndDtkZXZpY2UtJmd0O2F0dHJzLm1heF9xcF9pbml0X3JkX2F0b20sCiYjNDM7CQkJCSAgICAgVThfTUFYKTsKIAlwYXJhbS5wcml2YXRlX2RhdGEgPSAmYW1wO3ByaXY7CiAJcGFyYW0ucHJpdmF0ZV9kYXRhX2xlbiA9IHNpemVvZihwcml2KTsKIAlwcml2LnJlY2ZtdCA9IGNwdV90b19sZTE2KE5WTUVfUkRNQV9DTV9GTVRfMV8wKTsKZGlmZiAtLWdpdCBhL2ZzL3NtYi9zbWJkaXJlY3QvYWNjZXB0LmMgYi9mcy9zbWIvc21iZGlyZWN0L2FjY2VwdC5jCmluZGV4IDUyOTc0MDAwNTgzODVlLi40NGI2ODFhMjA3MjUzNiAxMDA2NDQKLS0tIGEvZnMvc21iL3NtYmRpcmVjdC9hY2NlcHQuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9zbWIvc21iZGlyZWN0L2FjY2VwdC5jCkBAIC0zMiw4ICYjNDM7MzIsOSBAQCBpbnQgc21iZGlyZWN0X2FjY2VwdF9jb25uZWN0X3JlcXVlc3Qoc3RydWN0IHNtYmRpcmVjdF9zb2NrZXQgKnNjLAogCS8qCiAJICogRmlyc3Qgc2V0IHdoYXQgdGhlIHdlIGFzIHNlcnZlciBhcmUgYWJsZSB0byBzdXBwb3J0CiAJICovCi0Jc3AtJmd0O2luaXRpYXRvcl9kZXB0aCA9IG1pbl90KHU4LCBzcC0mZ3Q7aW5pdGlhdG9yX2RlcHRoLAotCQkJCSAgICBzYy0mZ3Q7aWIuZGV2LSZndDthdHRycy5tYXhfcXBfcmRfYXRvbSk7CiYjNDM7CXNwLSZndDtpbml0aWF0b3JfZGVwdGggPSBtaW4zKHNwLSZndDtpbml0aWF0b3JfZGVwdGgsCiYjNDM7CQkJCSAgIHNjLSZndDtpYi5kZXYtJmd0O2F0dHJzLm1heF9xcF9yZF9hdG9tLAomIzQzOwkJCQkgICBVOF9NQVgpOwogCiAJcGVlcl9pbml0aWF0b3JfZGVwdGggPSBwYXJhbS0mZ3Q7aW5pdGlhdG9yX2RlcHRoOwogCXBlZXJfcmVzcG9uZGVyX3Jlc291cmNlcyA9IHBhcmFtLSZndDtyZXNwb25kZXJfcmVzb3VyY2VzOwpkaWZmIC0tZ2l0IGEvZnMvc21iL3NtYmRpcmVjdC9jb25uZWN0LmMgYi9mcy9zbWIvc21iZGlyZWN0L2Nvbm5lY3QuYwppbmRleCBjZDcyNmIzOTlhZmVjYi4uMzRhM2U3MmMzOGZiYmEgMTAwNjQ0Ci0tLSBhL2ZzL3NtYi9zbWJkaXJlY3QvY29ubmVjdC5jCiYjNDM7JiM0MzsmIzQzOyBiL2ZzL3NtYi9zbWJkaXJlY3QvY29ubmVjdC5jCkBAIC0xODIsOCAmIzQzOzE4Miw5IEBAIHN0YXRpYyBpbnQgc21iZGlyZWN0X2Nvbm5lY3RfcmRtYV9jb25uZWN0KHN0cnVjdCBzbWJkaXJlY3Rfc29ja2V0ICpzYykKIAlpZiAoc2MtJmd0O2liLmRldi0mZ3Q7YXR0cnMua2VybmVsX2NhcF9mbGFncyAmYW1wOyBJQktfU0dfR0FQU19SRUcpCiAJCXNjLSZndDttcl9pby50eXBlID0gSUJfTVJfVFlQRV9TR19HQVBTOwogCi0Jc3AtJmd0O3Jlc3BvbmRlcl9yZXNvdXJjZXMgPSBtaW5fdCh1OCwgc3AtJmd0O3Jlc3BvbmRlcl9yZXNvdXJjZXMsCi0JCQkJCXNjLSZndDtpYi5kZXYtJmd0O2F0dHJzLm1heF9xcF9yZF9hdG9tKTsKJiM0MzsJc3AtJmd0O3Jlc3BvbmRlcl9yZXNvdXJjZXMgPSBtaW4zKHNwLSZndDtyZXNwb25kZXJfcmVzb3VyY2VzLAomIzQzOwkJCQkgICAgICAgc2MtJmd0O2liLmRldi0mZ3Q7YXR0cnMubWF4X3FwX3JkX2F0b20sCiYjNDM7CQkJCSAgICAgICBVOF9NQVgpOwogCXNtYmRpcmVjdF9sb2dfcmRtYV9tcihzYywgU01CRElSRUNUX0xPR19JTkZPLAogCQkmIzM0O3Jlc3BvbmRlcl9yZXNvdXJjZXM9JWRcbiYjMzQ7LAogCQlzcC0mZ3Q7cmVzcG9uZGVyX3Jlc291cmNlcyk7CmRpZmYgLS1naXQgYS9mcy9zbWIvc21iZGlyZWN0L2Nvbm5lY3Rpb24uYyBiL2ZzL3NtYi9zbWJkaXJlY3QvY29ubmVjdGlvbi5jCmluZGV4IDhhZGY1ODA5NzUzNDRiLi42OTBhY2I4NGUxYjU5MSAxMDA2NDQKLS0tIGEvZnMvc21iL3NtYmRpcmVjdC9jb25uZWN0aW9uLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvc21iL3NtYmRpcmVjdC9jb25uZWN0aW9uLmMKQEAgLTI4Nyw3ICYjNDM7Mjg3LDcgQEAgaW50IHNtYmRpcmVjdF9jb25uZWN0aW9uX2NyZWF0ZV9xcChzdHJ1Y3Qgc21iZGlyZWN0X3NvY2tldCAqc2MpCiAJICAgIHFwX2NhcC5tYXhfc2VuZF93ciAmZ3Q7IHNjLSZndDtpYi5kZXYtJmd0O2F0dHJzLm1heF9xcF93cikgewogCQlwcl9lcnIoJiMzNDtQb3NzaWJsZSBDUUUgb3ZlcnJ1bjogbWF4X3NlbmRfd3IgJWRcbiYjMzQ7LAogCQkgICAgICAgcXBfY2FwLm1heF9zZW5kX3dyKTsKLQkJcHJfZXJyKCYjMzQ7ZGV2aWNlICUuKnMgcmVwb3J0aW5nIG1heF9jcWUgJWQgbWF4X3FwX3dyICVkXG4mIzM0OywKJiM0MzsJCXByX2VycigmIzM0O2RldmljZSAlLipzIHJlcG9ydGluZyBtYXhfY3FlICV1IG1heF9xcF93ciAldVxuJiMzNDssCiAJCSAgICAgICBJQl9ERVZJQ0VfTkFNRV9NQVgsCiAJCSAgICAgICBzYy0mZ3Q7aWIuZGV2LSZndDtuYW1lLAogCQkgICAgICAgc2MtJmd0O2liLmRldi0mZ3Q7YXR0cnMubWF4X2NxZSwKQEAgLTMwMiw3ICYjNDM7MzAyLDcgQEAgaW50IHNtYmRpcmVjdF9jb25uZWN0aW9uX2NyZWF0ZV9xcChzdHJ1Y3Qgc21iZGlyZWN0X3NvY2tldCAqc2MpCiAJICAgICBtYXhfc2VuZF93ciAmZ3Q7PSBzYy0mZ3Q7aWIuZGV2LSZndDthdHRycy5tYXhfcXBfd3IpKSB7CiAJCXByX2VycigmIzM0O1Bvc3NpYmxlIENRRSBvdmVycnVuOiByZG1hX3NlbmRfd3IgJWQgJiM0MzsgbWF4X3NlbmRfd3IgJWQgPSAlZFxuJiMzNDssCiAJCSAgICAgICByZG1hX3NlbmRfd3IsIHFwX2NhcC5tYXhfc2VuZF93ciwgbWF4X3NlbmRfd3IpOwotCQlwcl9lcnIoJiMzNDtkZXZpY2UgJS4qcyByZXBvcnRpbmcgbWF4X2NxZSAlZCBtYXhfcXBfd3IgJWRcbiYjMzQ7LAomIzQzOwkJcHJfZXJyKCYjMzQ7ZGV2aWNlICUuKnMgcmVwb3J0aW5nIG1heF9jcWUgJXUgbWF4X3FwX3dyICV1XG4mIzM0OywKIAkJICAgICAgIElCX0RFVklDRV9OQU1FX01BWCwKIAkJICAgICAgIHNjLSZndDtpYi5kZXYtJmd0O25hbWUsCiAJCSAgICAgICBzYy0mZ3Q7aWIuZGV2LSZndDthdHRycy5tYXhfY3FlLApAQCAtMzE2LDcgJiM0MzszMTYsNyBAQCBpbnQgc21iZGlyZWN0X2Nvbm5lY3Rpb25fY3JlYXRlX3FwKHN0cnVjdCBzbWJkaXJlY3Rfc29ja2V0ICpzYykKIAkgICAgcXBfY2FwLm1heF9yZWN2X3dyICZndDsgc2MtJmd0O2liLmRldi0mZ3Q7YXR0cnMubWF4X3FwX3dyKSB7CiAJCXByX2VycigmIzM0O1Bvc3NpYmxlIENRRSBvdmVycnVuOiBtYXhfcmVjdl93ciAlZFxuJiMzNDssCiAJCSAgICAgICBxcF9jYXAubWF4X3JlY3Zfd3IpOwotCQlwcl9lcnIoJiMzNDtkZXZpY2UgJS4qcyByZXBvcnRpbmcgbWF4X2NxZSAlZCBtYXhfcXBfd3IgJWRcbiYjMzQ7LAomIzQzOwkJcHJfZXJyKCYjMzQ7ZGV2aWNlICUuKnMgcmVwb3J0aW5nIG1heF9jcWUgJXUgbWF4X3FwX3dyICV1XG4mIzM0OywKIAkJICAgICAgIElCX0RFVklDRV9OQU1FX01BWCwKIAkJICAgICAgIHNjLSZndDtpYi5kZXYtJmd0O25hbWUsCiAJCSAgICAgICBzYy0mZ3Q7aWIuZGV2LSZndDthdHRycy5tYXhfY3FlLApAQCAtMzI4LDcgJiM0MzszMjgsNyBAQCBpbnQgc21iZGlyZWN0X2Nvbm5lY3Rpb25fY3JlYXRlX3FwKHN0cnVjdCBzbWJkaXJlY3Rfc29ja2V0ICpzYykKIAogCWlmIChxcF9jYXAubWF4X3NlbmRfc2dlICZndDsgc2MtJmd0O2liLmRldi0mZ3Q7YXR0cnMubWF4X3NlbmRfc2dlIHx8CiAJICAgIHFwX2NhcC5tYXhfcmVjdl9zZ2UgJmd0OyBzYy0mZ3Q7aWIuZGV2LSZndDthdHRycy5tYXhfcmVjdl9zZ2UpIHsKLQkJcHJfZXJyKCYjMzQ7ZGV2aWNlICUuKnMgbWF4X3NlbmRfc2dlL21heF9yZWN2X3NnZSA9ICVkLyVkIHRvbyBzbWFsbFxuJiMzNDssCiYjNDM7CQlwcl9lcnIoJiMzNDtkZXZpY2UgJS4qcyBtYXhfc2VuZF9zZ2UvbWF4X3JlY3Zfc2dlID0gJXUvJXUgdG9vIHNtYWxsXG4mIzM0OywKIAkJICAgICAgIElCX0RFVklDRV9OQU1FX01BWCwKIAkJICAgICAgIHNjLSZndDtpYi5kZXYtJmd0O25hbWUsCiAJCSAgICAgICBzYy0mZ3Q7aWIuZGV2LSZndDthdHRycy5tYXhfc2VuZF9zZ2UsCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3N1bnJwYy9zdmNfcmRtYS5oIGIvaW5jbHVkZS9saW51eC9zdW5ycGMvc3ZjX3JkbWEuaAppbmRleCBkZjZlMDhhYWFkNTcwOS4uMjE3ZjAwMGJlNWQ2ZTIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc3VucnBjL3N2Y19yZG1hLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9zdW5ycGMvc3ZjX3JkbWEuaApAQCAtNzgsOCAmIzQzOzc4LDggQEAgc3RydWN0IHN2Y3hwcnRfcmRtYSB7CiAJc3RydWN0IHJkbWFfY21faWQgICAgKnNjX2NtX2lkOwkJLyogUkRNQSBjb25uZWN0aW9uIGlkICovCiAJc3RydWN0IGxpc3RfaGVhZCAgICAgc2NfYWNjZXB0X3E7CS8qIENvbm4uIHdhaXRpbmcgYWNjZXB0ICovCiAJc3RydWN0IHJwY3JkbWFfbm90aWZpY2F0aW9uIHNjX3JuOwkvKiByZW1vdmFsIG5vdGlmaWNhdGlvbiAqLwotCWludAkJICAgICBzY19vcmQ7CQkvKiBSRE1BIHJlYWQgbGltaXQgKi8KLQlpbnQgICAgICAgICAgICAgICAgICBzY19tYXhfc2VuZF9zZ2VzOwomIzQzOwl1MzIJCSAgICAgc2Nfb3JkOwkJLyogUkRNQSByZWFkIGxpbWl0ICovCiYjNDM7CXVuc2lnbmVkIGludCAgICAgICAgIHNjX21heF9zZW5kX3NnZXM7CiAJYm9vbAkJICAgICBzY19zbmRfd19pbnY7CS8qIE9LIHRvIHVzZSBTZW5kIFdpdGggSW52YWxpZGF0ZSAqLwogCiAJYXRvbWljX3QgICAgICAgICAgICAgc2Nfc3FfYXZhaWw7CS8qIFNRRXMgcmVhZHkgdG8gYmUgY29uc3VtZWQgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvcmRtYS9pYl92ZXJicy5oIGIvaW5jbHVkZS9yZG1hL2liX3ZlcmJzLmgKaW5kZXggOWRkNzZmNDg5YTBiYTQuLmI4YjIyMWI1ZjU2NDczIDEwMDY0NAotLS0gYS9pbmNsdWRlL3JkbWEvaWJfdmVyYnMuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL3JkbWEvaWJfdmVyYnMuaApAQCAtNDA2LDM2ICYjNDM7NDA2LDM2IEBAIHN0cnVjdCBpYl9kZXZpY2VfYXR0ciB7CiAJdTMyCQkJdmVuZG9yX2lkOwogCXUzMgkJCXZlbmRvcl9wYXJ0X2lkOwogCXUzMgkJCWh3X3ZlcjsKLQlpbnQJCQltYXhfcXA7Ci0JaW50CQkJbWF4X3FwX3dyOwomIzQzOwl1MzIJCQltYXhfcXA7CiYjNDM7CXUzMgkJCW1heF9xcF93cjsKIAl1NjQJCQlkZXZpY2VfY2FwX2ZsYWdzOwogCXU2NAkJCWtlcm5lbF9jYXBfZmxhZ3M7Ci0JaW50CQkJbWF4X3NlbmRfc2dlOwotCWludAkJCW1heF9yZWN2X3NnZTsKLQlpbnQJCQltYXhfc2dlX3JkOwotCWludAkJCW1heF9jcTsKLQlpbnQJCQltYXhfY3FlOwotCWludAkJCW1heF9tcjsKLQlpbnQJCQltYXhfcGQ7Ci0JaW50CQkJbWF4X3FwX3JkX2F0b207Ci0JaW50CQkJbWF4X2VlX3JkX2F0b207Ci0JaW50CQkJbWF4X3Jlc19yZF9hdG9tOwotCWludAkJCW1heF9xcF9pbml0X3JkX2F0b207Ci0JaW50CQkJbWF4X2VlX2luaXRfcmRfYXRvbTsKJiM0MzsJdTMyCQkJbWF4X3NlbmRfc2dlOwomIzQzOwl1MzIJCQltYXhfcmVjdl9zZ2U7CiYjNDM7CXUzMgkJCW1heF9zZ2VfcmQ7CiYjNDM7CXUzMgkJCW1heF9jcTsKJiM0MzsJdTMyCQkJbWF4X2NxZTsKJiM0MzsJdTMyCQkJbWF4X21yOwomIzQzOwl1MzIJCQltYXhfcGQ7CiYjNDM7CXUzMgkJCW1heF9xcF9yZF9hdG9tOwomIzQzOwl1MzIJCQltYXhfZWVfcmRfYXRvbTsKJiM0MzsJdTMyCQkJbWF4X3Jlc19yZF9hdG9tOwomIzQzOwl1MzIJCQltYXhfcXBfaW5pdF9yZF9hdG9tOwomIzQzOwl1MzIJCQltYXhfZWVfaW5pdF9yZF9hdG9tOwogCWVudW0gaWJfYXRvbWljX2NhcAlhdG9taWNfY2FwOwogCWVudW0gaWJfYXRvbWljX2NhcAltYXNrZWRfYXRvbWljX2NhcDsKLQlpbnQJCQltYXhfZWU7Ci0JaW50CQkJbWF4X3JkZDsKLQlpbnQJCQltYXhfbXc7Ci0JaW50CQkJbWF4X3Jhd19pcHY2X3FwOwotCWludAkJCW1heF9yYXdfZXRoeV9xcDsKLQlpbnQJCQltYXhfbWNhc3RfZ3JwOwotCWludAkJCW1heF9tY2FzdF9xcF9hdHRhY2g7Ci0JaW50CQkJbWF4X3RvdGFsX21jYXN0X3FwX2F0dGFjaDsKLQlpbnQJCQltYXhfYWg7CiYjNDM7CXUzMgkJCW1heF9lZTsKJiM0MzsJdTMyCQkJbWF4X3JkZDsKJiM0MzsJdTMyCQkJbWF4X213OwomIzQzOwl1MzIJCQltYXhfcmF3X2lwdjZfcXA7CiYjNDM7CXUzMgkJCW1heF9yYXdfZXRoeV9xcDsKJiM0MzsJdTMyCQkJbWF4X21jYXN0X2dycDsKJiM0MzsJdTMyCQkJbWF4X21jYXN0X3FwX2F0dGFjaDsKJiM0MzsJdTMyCQkJbWF4X3RvdGFsX21jYXN0X3FwX2F0dGFjaDsKJiM0MzsJdTMyCQkJbWF4X2FoOwogCWludAkJCW1heF9zcnE7Ci0JaW50CQkJbWF4X3NycV93cjsKLQlpbnQJCQltYXhfc3JxX3NnZTsKJiM0MzsJdTMyCQkJbWF4X3NycV93cjsKJiM0MzsJdTMyCQkJbWF4X3NycV9zZ2U7CiAJdW5zaWduZWQgaW50CQltYXhfZmFzdF9yZWdfcGFnZV9saXN0X2xlbjsKIAl1bnNpZ25lZCBpbnQJCW1heF9waV9mYXN0X3JlZ19wYWdlX2xpc3RfbGVuOwogCXUxNgkJCW1heF9wa2V5czsKZGlmZiAtLWdpdCBhL25ldC9yZHMvaWIuYyBiL25ldC9yZHMvaWIuYwppbmRleCAzOWY4NzI3MmUwNzFiZi4uYzYyNjg0ZDQyNTljNGYgMTAwNjQ0Ci0tLSBhL25ldC9yZHMvaWIuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvcmRzL2liLmMKQEAgLTE2MiwxMiAmIzQzOzE2MiwxMiBAQCBzdGF0aWMgaW50IHJkc19pYl9hZGRfb25lKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSkKIAkJICAgSUJfT0RQX1NVUFBPUlRfUkVBRCk7CiAKIAlyZHNfaWJkZXYtJmd0O21heF8xbV9tcnMgPSBkZXZpY2UtJmd0O2F0dHJzLm1heF9tciA/Ci0JCW1pbl90KHVuc2lnbmVkIGludCwgKGRldmljZS0mZ3Q7YXR0cnMubWF4X21yIC8gMiksCi0JCSAgICAgIHJkc19pYl9tcl8xbV9wb29sX3NpemUpIDogcmRzX2liX21yXzFtX3Bvb2xfc2l6ZTsKJiM0MzsJCW1pbihkZXZpY2UtJmd0O2F0dHJzLm1heF9tciAvIDIsCiYjNDM7CQkgICAgcmRzX2liX21yXzFtX3Bvb2xfc2l6ZSkgOiByZHNfaWJfbXJfMW1fcG9vbF9zaXplOwogCiAJcmRzX2liZGV2LSZndDttYXhfOGtfbXJzID0gZGV2aWNlLSZndDthdHRycy5tYXhfbXIgPwotCQltaW5fdCh1bnNpZ25lZCBpbnQsICgoZGV2aWNlLSZndDthdHRycy5tYXhfbXIgLyAyKSAqIFJEU19NUl84S19TQ0FMRSksCi0JCSAgICAgIHJkc19pYl9tcl84a19wb29sX3NpemUpIDogcmRzX2liX21yXzhrX3Bvb2xfc2l6ZTsKJiM0MzsJCW1pbigoZGV2aWNlLSZndDthdHRycy5tYXhfbXIgLyAyKSAqIFJEU19NUl84S19TQ0FMRSwKJiM0MzsJCSAgICByZHNfaWJfbXJfOGtfcG9vbF9zaXplKSA6IHJkc19pYl9tcl84a19wb29sX3NpemU7CiAKIAlyZHNfaWJkZXYtJmd0O21heF9pbml0aWF0b3JfZGVwdGggPSBkZXZpY2UtJmd0O2F0dHJzLm1heF9xcF9pbml0X3JkX2F0b207CiAJcmRzX2liZGV2LSZndDttYXhfcmVzcG9uZGVyX3Jlc291cmNlcyA9IGRldmljZS0mZ3Q7YXR0cnMubWF4X3FwX3JkX2F0b207CkBAIC0yMDQsNyAmIzQzOzIwNCw3IEBAIHN0YXRpYyBpbnQgcmRzX2liX2FkZF9vbmUoc3RydWN0IGliX2RldmljZSAqZGV2aWNlKQogCQlnb3RvIHB1dF9kZXY7CiAJfQogCi0JcmRzZGVidWcoJiMzNDtSRFMvSUI6IG1heF9tciA9ICVkLCBtYXhfd3JzID0gJWQsIG1heF9zZ2UgPSAlZCwgbWF4XzFtX21ycyA9ICVkLCBtYXhfOGtfbXJzID0gJWRcbiYjMzQ7LAomIzQzOwlyZHNkZWJ1ZygmIzM0O1JEUy9JQjogbWF4X21yID0gJXUsIG1heF93cnMgPSAlZCwgbWF4X3NnZSA9ICVkLCBtYXhfMW1fbXJzID0gJWQsIG1heF84a19tcnMgPSAlZFxuJiMzNDssCiAJCSBkZXZpY2UtJmd0O2F0dHJzLm1heF9tciwgcmRzX2liZGV2LSZndDttYXhfd3JzLCByZHNfaWJkZXYtJmd0O21heF9zZ2UsCiAJCSByZHNfaWJkZXYtJmd0O21heF8xbV9tcnMsIHJkc19pYmRldi0mZ3Q7bWF4XzhrX21ycyk7CiAKZGlmZiAtLWdpdCBhL25ldC9yZHMvaWJfY20uYyBiL25ldC9yZHMvaWJfY20uYwppbmRleCA1NjY3ZjAxNzNiNDdmMi4uMTdlNTg3YzMwMDc2NjMgMTAwNjQ0Ci0tLSBhL25ldC9yZHMvaWJfY20uYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvcmRzL2liX2NtLmMKQEAgLTE3MywxMSAmIzQzOzE3MywxMSBAQCBzdGF0aWMgdm9pZCByZHNfaWJfY21fZmlsbF9jb25uX3BhcmFtKHN0cnVjdCByZHNfY29ubmVjdGlvbiAqY29ubiwKIAogCW1lbXNldChjb25uX3BhcmFtLCAwLCBzaXplb2Yoc3RydWN0IHJkbWFfY29ubl9wYXJhbSkpOwogCi0JY29ubl9wYXJhbS0mZ3Q7cmVzcG9uZGVyX3Jlc291cmNlcyA9Ci0JCW1pbl90KHUzMiwgcmRzX2liZGV2LSZndDttYXhfcmVzcG9uZGVyX3Jlc291cmNlcywgbWF4X3Jlc3BvbmRlcl9yZXNvdXJjZXMpOwotCWNvbm5fcGFyYW0tJmd0O2luaXRpYXRvcl9kZXB0aCA9Ci0JCW1pbl90KHUzMiwgcmRzX2liZGV2LSZndDttYXhfaW5pdGlhdG9yX2RlcHRoLCBtYXhfaW5pdGlhdG9yX2RlcHRoKTsKLQljb25uX3BhcmFtLSZndDtyZXRyeV9jb3VudCA9IG1pbl90KHVuc2lnbmVkIGludCwgcmRzX2liX3JldHJ5X2NvdW50LCA3KTsKJiM0MzsJY29ubl9wYXJhbS0mZ3Q7cmVzcG9uZGVyX3Jlc291cmNlcyA9IG1pbjMocmRzX2liZGV2LSZndDttYXhfcmVzcG9uZGVyX3Jlc291cmNlcywKJiM0MzsJCQkJCSAgICAgICBtYXhfcmVzcG9uZGVyX3Jlc291cmNlcywgVThfTUFYKTsKJiM0MzsJY29ubl9wYXJhbS0mZ3Q7aW5pdGlhdG9yX2RlcHRoID0gbWluMyhyZHNfaWJkZXYtJmd0O21heF9pbml0aWF0b3JfZGVwdGgsCiYjNDM7CQkJCQkgICBtYXhfaW5pdGlhdG9yX2RlcHRoLCBVOF9NQVgpOwomIzQzOwljb25uX3BhcmFtLSZndDtyZXRyeV9jb3VudCA9IG1pbihyZHNfaWJfcmV0cnlfY291bnQsIDdVKTsKIAljb25uX3BhcmFtLSZndDtybnJfcmV0cnlfY291bnQgPSA3OwogCiAJaWYgKGRwKSB7CmRpZmYgLS1naXQgYS9uZXQvc3VucnBjL3hwcnRyZG1hL2Zyd3Jfb3BzLmMgYi9uZXQvc3VucnBjL3hwcnRyZG1hL2Zyd3Jfb3BzLmMKaW5kZXggN2Y3OWEwYTI2MDFlNjUuLmIyZTQzN2FmZTA5ZGFhIDEwMDY0NAotLS0gYS9uZXQvc3VucnBjL3hwcnRyZG1hL2Zyd3Jfb3BzLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3N1bnJwYy94cHJ0cmRtYS9mcndyX29wcy5jCkBAIC0xNzIsOCAmIzQzOzE3Miw5IEBAIGludCBmcndyX21yX2luaXQoc3RydWN0IHJwY3JkbWFfeHBydCAqcl94cHJ0LCBzdHJ1Y3QgcnBjcmRtYV9tciAqbXIpCiBpbnQgZnJ3cl9xdWVyeV9kZXZpY2Uoc3RydWN0IHJwY3JkbWFfZXAgKmVwLCBjb25zdCBzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UpCiB7CiAJY29uc3Qgc3RydWN0IGliX2RldmljZV9hdHRyICphdHRycyA9ICZhbXA7ZGV2aWNlLSZndDthdHRyczsKLQlpbnQgbWF4X3FwX3dyLCBkZXB0aCwgZGVsdGE7CiAJdW5zaWduZWQgaW50IG1heF9zZ2U7CiYjNDM7CXUzMiBtYXhfcXBfd3I7CiYjNDM7CWludCBkZXB0aCwgZGVsdGE7CiAKIAlpZiAoIShhdHRycy0mZ3Q7ZGV2aWNlX2NhcF9mbGFncyAmYW1wOyBJQl9ERVZJQ0VfTUVNX01HVF9FWFRFTlNJT05TKSB8fAogCSAgICBhdHRycy0mZ3Q7bWF4X2Zhc3RfcmVnX3BhZ2VfbGlzdF9sZW4gPT0gMCkgewpAQCAtMjI5LDEwICYjNDM7MjMwLDEwIEBAIGludCBmcndyX3F1ZXJ5X2RldmljZShzdHJ1Y3QgcnBjcmRtYV9lcCAqZXAsIGNvbnN0IHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSkKIAl9CiAKIAltYXhfcXBfd3IgPSBhdHRycy0mZ3Q7bWF4X3FwX3dyOwomIzQzOwlpZiAobWF4X3FwX3dyICZsdDsgUlBDUkRNQV9CQUNLV0FSRF9XUlMgJiM0MzsgMSAmIzQzOyBSUENSRE1BX01JTl9TTE9UX1RBQkxFKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiAJbWF4X3FwX3dyIC09IFJQQ1JETUFfQkFDS1dBUkRfV1JTOwogCW1heF9xcF93ciAtPSAxOwotCWlmIChtYXhfcXBfd3IgJmx0OyBSUENSRE1BX01JTl9TTE9UX1RBQkxFKQotCQlyZXR1cm4gLUVOT01FTTsKIAlpZiAoZXAtJmd0O3JlX21heF9yZXF1ZXN0cyAmZ3Q7IG1heF9xcF93cikKIAkJZXAtJmd0O3JlX21heF9yZXF1ZXN0cyA9IG1heF9xcF93cjsKIAllcC0mZ3Q7cmVfYXR0ci5jYXAubWF4X3NlbmRfd3IgPSBlcC0mZ3Q7cmVfbWF4X3JlcXVlc3RzICogZGVwdGg7CmRpZmYgLS1naXQgYS9uZXQvc3VucnBjL3hwcnRyZG1hL3N2Y19yZG1hX3RyYW5zcG9ydC5jIGIvbmV0L3N1bnJwYy94cHJ0cmRtYS9zdmNfcmRtYV90cmFuc3BvcnQuYwppbmRleCBmMThiYzYwZDlmNGZmYS4uYzc2OGNkYTJlNTQ0NGEgMTAwNjQ0Ci0tLSBhL25ldC9zdW5ycGMveHBydHJkbWEvc3ZjX3JkbWFfdHJhbnNwb3J0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3N1bnJwYy94cHJ0cmRtYS9zdmNfcmRtYV90cmFuc3BvcnQuYwpAQCAtNTQ0LDggJiM0Mzs1NDQsNyBAQCBzdGF0aWMgc3RydWN0IHN2Y194cHJ0ICpzdmNfcmRtYV9hY2NlcHQoc3RydWN0IHN2Y194cHJ0ICp4cHJ0KQogCXNldF9iaXQoUkRNQVhQUlRfQ09OTl9QRU5ESU5HLCAmYW1wO25ld3hwcnQtJmd0O3NjX2ZsYWdzKTsKIAltZW1zZXQoJmFtcDtjb25uX3BhcmFtLCAwLCBzaXplb2YgY29ubl9wYXJhbSk7CiAJY29ubl9wYXJhbS5yZXNwb25kZXJfcmVzb3VyY2VzID0gMDsKLQljb25uX3BhcmFtLmluaXRpYXRvcl9kZXB0aCA9IG1pbl90KGludCwgbmV3eHBydC0mZ3Q7c2Nfb3JkLAotCQkJCQkgICBkZXYtJmd0O2F0dHJzLm1heF9xcF9pbml0X3JkX2F0b20pOwomIzQzOwljb25uX3BhcmFtLmluaXRpYXRvcl9kZXB0aCA9IG1pbihuZXd4cHJ0LSZndDtzY19vcmQsIGRldi0mZ3Q7YXR0cnMubWF4X3FwX2luaXRfcmRfYXRvbSk7CiAJaWYgKCFjb25uX3BhcmFtLmluaXRpYXRvcl9kZXB0aCkgewogCQlyZXQgPSAtRUlOVkFMOwogCQl0cmFjZV9zdmNyZG1hX2luaXRkZXB0aF9lcnIobmV3eHBydCwgcmV0KTsKQEAgLTU3MCw3ICYjNDM7NTY5LDcgQEAgc3RhdGljIHN0cnVjdCBzdmNfeHBydCAqc3ZjX3JkbWFfYWNjZXB0KHN0cnVjdCBzdmNfeHBydCAqeHBydCkKIAkJZHByaW50aygmIzM0OyAgICBsb2NhbCBhZGRyZXNzICAgOiAlcElTOiV1XG4mIzM0Oywgc2FwLCBycGNfZ2V0X3BvcnQoc2FwKSk7CiAJCXNhcCA9IChzdHJ1Y3Qgc29ja2FkZHIgKikmYW1wO25ld3hwcnQtJmd0O3NjX2NtX2lkLSZndDtyb3V0ZS5hZGRyLmRzdF9hZGRyOwogCQlkcHJpbnRrKCYjMzQ7ICAgIHJlbW90ZSBhZGRyZXNzICA6ICVwSVM6JXVcbiYjMzQ7LCBzYXAsIHJwY19nZXRfcG9ydChzYXApKTsKLQkJZHByaW50aygmIzM0OyAgICBtYXhfc2dlICAgICAgICAgOiAlZFxuJiMzNDssIG5ld3hwcnQtJmd0O3NjX21heF9zZW5kX3NnZXMpOwomIzQzOwkJZHByaW50aygmIzM0OyAgICBtYXhfc2dlICAgICAgICAgOiAldVxuJiMzNDssIG5ld3hwcnQtJmd0O3NjX21heF9zZW5kX3NnZXMpOwogCQlkcHJpbnRrKCYjMzQ7ICAgIHNxX2RlcHRoICAgICAgICA6ICVkXG4mIzM0OywgbmV3eHBydC0mZ3Q7c2Nfc3FfZGVwdGgpOwogCQlkcHJpbnRrKCYjMzQ7ICAgIHJkbWFfcndfY3R4cyAgICA6ICVkXG4mIzM0OywgY3R4dHMpOwogCQlkcHJpbnRrKCYjMzQ7ICAgIG1heF9yZXF1ZXN0cyAgICA6ICVkXG4mIzM0OywgbmV3eHBydC0mZ3Q7c2NfbWF4X3JlcXVlc3RzKTsKZGlmZiAtLWdpdCBhL25ldC9zdW5ycGMveHBydHJkbWEvdmVyYnMuYyBiL25ldC9zdW5ycGMveHBydHJkbWEvdmVyYnMuYwppbmRleCBhZWNmOWMwYTE1M2YzNi4uOGVkOWRhNmQyZDJmNzcgMTAwNjQ0Ci0tLSBhL25ldC9zdW5ycGMveHBydHJkbWEvdmVyYnMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc3VucnBjL3hwcnRyZG1hL3ZlcmJzLmMKQEAgLTQ1Myw3ICYjNDM7NDUzLDcgQEAgc3RhdGljIGludCBycGNyZG1hX2VwX2NyZWF0ZShzdHJ1Y3QgcnBjcmRtYV94cHJ0ICpyX3hwcnQpCiAJLyogQ2xpZW50IG9mZmVycyBSRE1BIFJlYWQgYnV0IGRvZXMgbm90IGluaXRpYXRlICovCiAJZXAtJmd0O3JlX3JlbW90ZV9jbWEuaW5pdGlhdG9yX2RlcHRoID0gMDsKIAllcC0mZ3Q7cmVfcmVtb3RlX2NtYS5yZXNwb25kZXJfcmVzb3VyY2VzID0KLQkJbWluX3QoaW50LCBVOF9NQVgsIGRldmljZS0mZ3Q7YXR0cnMubWF4X3FwX3JkX2F0b20pOwomIzQzOwkJbWluKGRldmljZS0mZ3Q7YXR0cnMubWF4X3FwX3JkX2F0b20sIFU4X01BWCk7CiAKIAkvKiBMaW1pdCB0cmFuc3BvcnQgcmV0cmllcyBzbyBjbGllbnQgY2FuIGRldGVjdCBzZXJ2ZXIKIAkgKiBHSUQgY2hhbmdlcyBxdWlja2x5LiBSUEMgbGF5ZXIgaGFuZGxlcyByZS1lc3RhYmxpc2hpbmcKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYxMDUKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxMjkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlJETUEgU3Vic3lzdGVtIFR5cGUgUmVmYWN0b3JpbmcgJmFtcDsgVW5kZXJmbG93IEZpeGVzIC0gV29ydGggRnV6emluZz8qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIG1ha2luZyBzb21lIHByZXR0eSBzaWduaWZpY2FudCB0eXBlIGNoYW5nZXMgaW4gdGhlIFJETUEvSW5maW5pQmFuZCBzdWJzeXN0ZW0uIFNwZWNpZmljYWxseSwgYSBsb3Qgb2YgZmllbGRzIGluIGBzdHJ1Y3QgaWJfZGV2aWNlX2F0dHJgIGFyZSBnb2luZyBmcm9tIGBpbnRgIHRvIGB1MzJgLCB3aGljaCBzZWVtcyBsaWtlIGEgZ29vZCBtb3ZlIGZvciBjb25zaXN0ZW5jeS4gV2UmIzM5O3JlIGFsc28gc2VlaW5nIHRoZSB1c3VhbCB1cGRhdGVzIHRvIHVzZSBgbWluKClgIGluc3RlYWQgb2YgYG1pbl90KClgIGFuZCB0aGUgYXNzb2NpYXRlZCBmb3JtYXQgc3RyaW5nIHVwZGF0ZXMgKGAlZGAgdG8gYCV1YCkuIFN0YW5kYXJkIHN0dWZmLgoKQnV0IHdhaXQsIGlzIHRoaXMganVzdCByZWZhY3RvcmluZywgb3IgYXJlIHRoZXJlIGZ1bmN0aW9uYWwgaW1wbGljYXRpb25zIHRoYXQgd2FycmFudCBmdXp6aW5nPyBMZXQmIzM5O3MgZGlnIGluLiBJdCYjMzk7cyBlc3NlbnRpYWxseSBhIHR5cGUgY2hhbmdlIGFuZCB1bmRlcmZsb3cgcHJldmVudGlvbiwgYnV0IHRoZSBkZXRhaWxzIGFyZSBpbXBvcnRhbnQuIExvb2tpbmcgYXQgdGhlIGRpZmYsIGl0IHNlZW1zIHRoYXQgdGhlcmUgYXJlIHR3byBwbGFjZXMgd2hlcmUgdGhlcmUgYXJlIG1lYW5pbmdmdWwgY2hhbmdlczoKSW4gYG52bWVfcmRtYV9maW5kX2dldF9kZXZpY2VgIGFuZCBgbnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2VgLCB0aGVyZSYjMzk7cyBhIGNvcnJlY3Rpb24gdG8gcHJldmVudCB1bmRlcmZsb3cgaWYgYG1heF9zZW5kX3NnZWAgaXMgMCwgd2hpY2ggaXMgaW1wb3J0YW50LgpBZGRpdGlvbmFsbHksIGluIGBmcndyX3F1ZXJ5X2RldmljZWAsIHRoZSBjaGFuZ2UgcHJldmVudHMgYW4gdW5kZXJmbG93IGluIGBtYXhfcXBfd3JgIHRoYXQgY291bGQgaGF2ZSByZXN1bHRlZCBpbiBlcnJvcnMuCgpUaGlzIHBhdGNoIHRvdWNoZXMgYSBsb3Qgb2YgUkRNQSBjb2RlOiB0aGUgY29yZSwgUlhFLCBOVk1lIG92ZXIgRmFicmljcyAoUkRNQSksIFNSUCwgU1JQVCwgaVNFUiwgaVNFUlQsIFNNQiBEaXJlY3QsIFJQQyBSRE1BLCBhbmQgUkRTLiBBIGxvdCBvZiBjb25uZWN0aW9ucyBjb3VsZCBiZSBhZmZlY3RlZCBieSB0aGlzIHBhdGNoLgoKVGhlIHByb21wdCBzYXlzIHRvIHJldHVybiAmIzM0O1dvcnRoRnV6emluZz1mYWxzZSYjMzQ7IGlmIGl0IG9ubHkgY29udGFpbnMgbnVtZXJpYyBjb25zdGFudCBvciBtYWNybyBjaGFuZ2VzLiBUaGlzIGlzIG1vc3RseSBhIHR5cGUgY2hhbmdlIHdpdGggc29tZSB1bmRlcmZsb3cgY2hlY2tzLiBIb3dldmVyLCB0aGVyZSBhcmUgc29tZSBjaGFuZ2VzIGluIGBudm1lX3JkbWFfZmluZF9nZXRfZGV2aWNlYCwgYG52bWV0X3JkbWFfZmluZF9nZXRfZGV2aWNlYCwgYW5kIGBmcndyX3F1ZXJ5X2RldmljZWAgZnVuY3Rpb25zIGFuZCB0aHVzLCBhcmUgd29ydGggY29uc2lkZXJpbmcuCgpMZXQmIzM5O3Mgc2VlOiBgbnZtZV9yZG1hX2ZpbmRfZ2V0X2RldmljZWAgYW5kIGBudm1ldF9yZG1hX2ZpbmRfZ2V0X2RldmljZWAgYXJlIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBmdW5jdGlvbnMgd2l0aGluIHRoZSBOVk1lLW9GIGNvbnRleHQsIGFuZCBgZnJ3cl9xdWVyeV9kZXZpY2VgIGlzIGNhbGxlZCBkdXJpbmcgUlBDIFJETUEgdHJhbnNwb3J0IHNldHVwLiBDYW4gd2UgZnV6eiB0aGVtIGVmZmVjdGl2ZWx5PyBTeXprYWxsZXIgaGFzIHNvbWUgTlZNZS1vRiBhbmQgUkRNQSBzdXBwb3J0IChwYXJ0aWN1bGFybHkgUlhFKS4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUuCgomIzM0O0lmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2ggdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuJiMzNDsgUlhFIGlzIHNvZnR3YXJlIFJETUEgYW5kIGNhbiBiZSBleGVjdXRlZC4gTlZNZS1vRiBvdmVyIFJETUEgY2FuIHJ1biB3aXRoIFJYRS4gQW5kIFJQQyBSRE1BIGNhbiBydW4gd2l0aCBSWEUuCgpCYXNlZCBvbiB0aGF0LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZXNlIGZ1bmN0aW9uczoKLSBgbnZtZV9yZG1hX2ZpbmRfZ2V0X2RldmljZWAKLSBgbnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2VgCi0gYGZyd3JfcXVlcnlfZGV2aWNlYAotIGByeGVfcXBfY2hrX2NhcGAKLSBgcnhlX3FwX2Noa19hdHRyYAotIGByeGVfc3JxX2Noa19pbml0YAotIGByeGVfc3JxX2Noa19hdHRyYAoKSSYjMzk7bGwgdmVyaWZ5IHRoZXNlIGZ1bmN0aW9ucyBleGlzdCBhbmQgYXJlIHJlYWNoYWJsZSwgYW5kIHRoZW4gY29uc2lkZXIgdGhpcyBwYXRjaCBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKHN0YXRpYyApPyhpbnR8dm9pZHxzdHJ1Y3QgW2EtekEtWjAtOV9dJiM0MzsgXFwqKSBudm1lX3JkbWFfZmluZF9nZXRfZGV2aWNlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAyMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODE2NgoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OgoKKipEZWJ1Z2dpbmcgdGhlIE5WTWUtUkRNQSBDb2RlKioKCkFscmlnaHQsIHNvbWV0aGluZyBpc24mIzM5O3QgcXVpdGUgcmlnaHQgd2l0aCB0aGlzIGBncmVwYCBleHByZXNzaW9uLiBJdCYjMzk7cyBqdXN0IG5vdCBnaXZpbmcgbWUgd2hhdCBJIG5lZWQuIFBlcmhhcHMgSSYjMzk7dmUgYmVlbiB0b28gYnJvYWQgaW4gbXkgc2VhcmNoIHRlcm1zLiBJIG5lZWQgdG8gYmUgbW9yZSBwcmVjaXNlLCBtb3JlIHRhcmdldGVkLiBMZXQmIzM5O3MgbmFycm93IHRoaXMgZG93biBhbmQgYmUgc3BlY2lmaWM6IEkmIzM5O2xsIGZvY3VzIG9uIHRoZSBjb3JlIGZ1bmN0aW9uLCB0aGUgb25lIHRoYXQmIzM5O3MgZ2l2aW5nIG1lIHRoZSBtb3N0IHRyb3VibGUuIEZvcmdldCB0aGUgaW5pdGlhbCBicm9hZCBhcHByb2FjaCwgbGV0JiMzOTtzIGp1c3QgZ3JlcCBkaXJlY3RseSBmb3IgdGhlIG5hbWUgb2YgdGhhdCBjcml0aWNhbCBmdW5jdGlvbjogYG52bWVfcmRtYV9maW5kX2dldF9kZXZpY2VgLiBUaGF0IHNob3VsZCBjdXQgdGhyb3VnaCB0aGUgbm9pc2UgYW5kIGdpdmUgbWUgYSBsYXNlci1mb2N1c2VkIHZpZXcgb2YgaXRzIHVzZS4gVGhpcyBzaG91bGQgYmUgYSBtdWNoIG1vcmUgZWZmaWNpZW50IHdheSB0byBkcmlsbCBkb3duIHRvIHRoZSBwcm9ibGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O252bWVfcmRtYV9maW5kX2dldF9kZXZpY2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9udm1lL2hvc3QvcmRtYS5jPTM2Nj1zdGF0aWMgc3RydWN0IG52bWVfcmRtYV9kZXZpY2UgKlxuZHJpdmVycy9udm1lL2hvc3QvcmRtYS5jOjM2Nzpudm1lX3JkbWFfZmluZF9nZXRfZGV2aWNlKHN0cnVjdCByZG1hX2NtX2lkICpjbV9pZClcbmRyaXZlcnMvbnZtZS9ob3N0L3JkbWEuYy0zNjgte1xuLS1cbmRyaXZlcnMvbnZtZS9ob3N0L3JkbWEuYz00OTE9c3RhdGljIGludCBudm1lX3JkbWFfY3JlYXRlX3F1ZXVlX2liKHN0cnVjdCBudm1lX3JkbWFfcXVldWUgKnF1ZXVlKVxuLS1cbmRyaXZlcnMvbnZtZS9ob3N0L3JkbWEuYy00OTctXG5kcml2ZXJzL252bWUvaG9zdC9yZG1hLmM6NDk4Olx0cXVldWUtXHUwMDNlZGV2aWNlID0gbnZtZV9yZG1hX2ZpbmRfZ2V0X2RldmljZShxdWV1ZS1cdTAwM2VjbV9pZCk7XG5kcml2ZXJzL252bWUvaG9zdC9yZG1hLmMtNDk5LVx0aWYgKCFxdWV1ZS1cdTAwM2VkZXZpY2UpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAyMDo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODYxNgoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBOVk1lL1JETUEgQ29kZWJhc2UqKgoKQWxyaWdodCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IE5WTWUgb3ZlciBSRE1BIGRldmljZXMgYXJlIGRpc2NvdmVyZWQuIEkgcmVtZW1iZXIgc2VlaW5nIGBudm1lX3JkbWFfZmluZF9nZXRfZGV2aWNlYCBpbiB0aGUga2VybmVsIHNvdXJjZSBiZWZvcmUuIExldCBtZSBzZWUuLi4geWVzLCB0aGF0JiMzOTtzIHJpZ2h0LCBpdCYjMzk7cyBsb2NhdGVkIGluIGBkcml2ZXJzL252bWUvaG9zdC9yZG1hLmNgLiBUaGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludC4gTm93LCB0byB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGNvbnRleHQsIEkgbmVlZCB0byBzZWUgd2hlcmUgdGhhdCBmdW5jdGlvbiBpcyB1c2VkIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIE5WTWUtb0YgdGFyZ2V0IHNpZGUuIEkgYmV0IHRoZXJlIGlzIGEgYG52bWV0X3JkbWFfZmluZF9nZXRfZGV2aWNlYCB0aGF0IHdpbGwgYmUgcmVsZXZhbnQuIEkgc2hvdWxkIGNoZWNrIHRoYXQgYXMgdGhlIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAyMDo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudm1ldF9yZG1hX2ZpbmRfZ2V0X2RldmljZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL252bWUvdGFyZ2V0L3JkbWEuYz0xMTkzPXN0YXRpYyBzdHJ1Y3QgbnZtZXRfcmRtYV9kZXZpY2UgKlxuZHJpdmVycy9udm1lL3RhcmdldC9yZG1hLmM6MTE5NDpudm1ldF9yZG1hX2ZpbmRfZ2V0X2RldmljZShzdHJ1Y3QgcmRtYV9jbV9pZCAqY21faWQpXG5kcml2ZXJzL252bWUvdGFyZ2V0L3JkbWEuYy0xMTk1LXtcbi0tXG5kcml2ZXJzL252bWUvdGFyZ2V0L3JkbWEuYz0xNTczPXN0YXRpYyBpbnQgbnZtZXRfcmRtYV9xdWV1ZV9jb25uZWN0KHN0cnVjdCByZG1hX2NtX2lkICpjbV9pZCxcbi0tXG5kcml2ZXJzL252bWUvdGFyZ2V0L3JkbWEuYy0xNTc5LVxuZHJpdmVycy9udm1lL3RhcmdldC9yZG1hLmM6MTU4MDpcdG5kZXYgPSBudm1ldF9yZG1hX2ZpbmRfZ2V0X2RldmljZShjbV9pZCk7XG5kcml2ZXJzL252bWUvdGFyZ2V0L3JkbWEuYy0xNTgxLVx0aWYgKCFuZGV2KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkwODEKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipBbmFseXppbmcgYGZyd3JfcXVlcnlfZGV2aWNlYCoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byBgZnJ3cl9xdWVyeV9kZXZpY2VgLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZnVuY3Rpb25hbGl0eSBhbmQgd2hlcmUgaXQgZml0cyB3aXRoaW4gdGhlIGxhcmdlciBhcmNoaXRlY3R1cmUuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYnkgdHJhY2luZyBpdHMgZGVwZW5kZW5jaWVzIGFuZCBzZWUgd2hhdCBvdGhlciBtb2R1bGVzIG9yIGZ1bmN0aW9ucyBpdCBpbnRlcmFjdHMgd2l0aC4gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgYm90dGxlbmVja3Mgb3IgYXJlYXMgZm9yIG9wdGltaXphdGlvbiBoZXJlPyBJJiMzOTttIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBoYW5kbGVzIGVycm9yIGNvbmRpdGlvbnMgYW5kIGVkZ2UgY2FzZXM7IHJvYnVzdG5lc3MgaXMgYWx3YXlzIGEga2V5IGNvbnNpZGVyYXRpb24sIGVzcGVjaWFsbHkgaW4gdGhpcyBkb21haW4uIFdoYXQga2luZCBvZiBkYXRhIGlzIHRoaXMgZnVuY3Rpb24gcXVlcnlpbmcsIGFuZCBob3cgaXMgdGhhdCBkYXRhIHVzZWQgZG93bnN0cmVhbT8gQXJlIHRoZXJlIGFueSBvcHBvcnR1bml0aWVzIHRvIGxldmVyYWdlIGNhY2hpbmcgb3IgcHJlLWNvbXB1dGVkIHZhbHVlcyB0byBpbXByb3ZlIHBlcmZvcm1hbmNlPyBUaGlzIHdhcnJhbnRzIGEgZGVlcCBpbnZlc3RpZ2F0aW9uLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHN5c3RlbWF0aWMgY29kZSByZXZpZXcgYW5kIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2Vybi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZnJ3cl9xdWVyeV9kZXZpY2UmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3N1bnJwYy94cHJ0cmRtYS9mcndyX29wcy5jPTEyMj1pbnQgZnJ3cl9tcl9pbml0KHN0cnVjdCBycGNyZG1hX3hwcnQgKnJfeHBydCwgc3RydWN0IHJwY3JkbWFfbXIgKm1yKVxuLS1cbm5ldC9zdW5ycGMveHBydHJkbWEvZnJ3cl9vcHMuYy0xNTUtLyoqXG5uZXQvc3VucnBjL3hwcnRyZG1hL2Zyd3Jfb3BzLmM6MTU2OiAqIGZyd3JfcXVlcnlfZGV2aWNlIC0gUHJlcGFyZSBhIHRyYW5zcG9ydCBmb3IgdXNlIHdpdGggRlJXUlxubmV0L3N1bnJwYy94cHJ0cmRtYS9mcndyX29wcy5jLTE1Ny0gKiBAZXA6IGVuZHBvaW50IHRvIGZpbGwgaW5cbi0tXG5uZXQvc3VucnBjL3hwcnRyZG1hL2Zyd3Jfb3BzLmMtMTcxLSAqL1xubmV0L3N1bnJwYy94cHJ0cmRtYS9mcndyX29wcy5jOjE3MjppbnQgZnJ3cl9xdWVyeV9kZXZpY2Uoc3RydWN0IHJwY3JkbWFfZXAgKmVwLCBjb25zdCBzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UpXG5uZXQvc3VucnBjL3hwcnRyZG1hL2Zyd3Jfb3BzLmMtMTczLXtcbi0tXG5uZXQvc3VucnBjL3hwcnRyZG1hL3ZlcmJzLmM9Mzc4PXN0YXRpYyBpbnQgcnBjcmRtYV9lcF9jcmVhdGUoc3RydWN0IHJwY3JkbWFfeHBydCAqcl94cHJ0KVxuLS1cbm5ldC9zdW5ycGMveHBydHJkbWEvdmVyYnMuYy00MDQtXHRlcC1cdTAwM2VyZV9pbmxpbmVfcmVjdiA9IHhwcnRfcmRtYV9tYXhfaW5saW5lX3JlYWQ7XG5uZXQvc3VucnBjL3hwcnRyZG1hL3ZlcmJzLmM6NDA1Olx0cmMgPSBmcndyX3F1ZXJ5X2RldmljZShlcCwgZGV2aWNlKTtcbm5ldC9zdW5ycGMveHBydHJkbWEvdmVyYnMuYy00MDYtXHRpZiAocmMpXG4tLVxubmV0L3N1bnJwYy94cHJ0cmRtYS94cHJ0X3JkbWEuaD01NTE9dm9pZCBmcndyX3Jlc2V0KHN0cnVjdCBycGNyZG1hX3JlcSAqcmVxKTtcbm5ldC9zdW5ycGMveHBydHJkbWEveHBydF9yZG1hLmg6NTUyOmludCBmcndyX3F1ZXJ5X2RldmljZShzdHJ1Y3QgcnBjcmRtYV9lcCAqZXAsIGNvbnN0IHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSk7XG5uZXQvc3VucnBjL3hwcnRyZG1hL3hwcnRfcmRtYS5oLTU1My1pbnQgZnJ3cl9tcl9pbml0KHN0cnVjdCBycGNyZG1hX3hwcnQgKnJfeHBydCwgc3RydWN0IHJwY3JkbWFfbXIgKm1yKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk4NjgKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHN1bW1hcml6aW5nIHRoZSAmIzM0O1Rob3VnaHRzJiMzNDsgYmFzZWQgb24gbXkgZXhwZXJ0aXNlOgoKKipDaGVja2luZyBgcnhlX3FwX2Noa19jYXBgKioKCkFscmlnaHQsIHNvIHRoZSBmaXJzdCB0aGluZyB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIGByeGVfcXBfY2hrX2NhcGAuIEkgc2VlIHRoaXMgYXMgYSBwb3RlbnRpYWwgcG9pbnQgb2YgaW50ZXJlc3QuIEltbWVkaWF0ZWx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMg4oCTIHRoaXMgbGlrZWx5IHJlZmVycyB0byBhIGZ1bmN0aW9uIG9yIHJvdXRpbmUgd2l0aGluIHRoZSBSWEUgKFJETUEgb3ZlciBDb252ZXJnZWQgRXRoZXJuZXQpIGNvbnRleHQgdGhhdCYjMzk7cyByZXNwb25zaWJsZSBmb3IgY2hlY2tpbmcgdGhlIGNhcGFiaWxpdGllcyBvciBjb25zdHJhaW50cyBvZiBhIFF1ZXVlIFBhaXIgKFFQKS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSYjMzk7bSBhbHJlYWR5IGZvcm11bGF0aW5nIHF1ZXN0aW9uczogV2hhdCBhc3BlY3RzIG9mIHRoZSBRUCBhcmUgd2UgY2hlY2tpbmc/IElzIHRoaXMgcmVsYXRlZCB0byByZXNvdXJjZSBsaW1pdHMsIHByb3RvY29sIHJlc3RyaWN0aW9ucywgb3IgaGFyZHdhcmUgc3VwcG9ydD8gSXMgdGhpcyBjaGVja2luZyB0aGUgUVAgc3RhdGU/IFRoZSBzaXplLCBudW1iZXIgb2YgV1FFcywgYW55IG90aGVyIGZlYXR1cmUgYml0cz8gVGhlIHNwZWNpZmljIGNvbnRleHQgaGVyZSBpcyBpbXBvcnRhbnQgYXMgZGlmZmVyZW50IGNhcGFiaWxpdGllcyBhcmUgY2hlY2tlZCBhdCBkaWZmZXJlbnQgdGltZXMuIElmIEkga25vdyB0aGUgY29udGV4dCwgYW5kIHRoZSBvdGhlciBjb2RlLCBJIGNhbiBnaXZlIGEgbXVjaCByaWNoZXIgYW5zd2VyLiBGcm9tIHRoaXMgc3RhcnRpbmcgcG9pbnQsIEkmIzM5O2Qgd2FudCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgZnVuY3Rpb24gZml0cyBpbnRvIHRoZSBvdmVyYWxsIFJYRSBzdGFjaywgd2hhdCB0cmlnZ2VycyBpdHMgZXhlY3V0aW9uLCBhbmQgd2hhdCB0aGUgY29uc2VxdWVuY2VzIG9mIGl0cyByZXR1cm4gdmFsdWVzIGFyZS4gVGhhdCB3b3VsZCBnaXZlIG1lIHNvbWUgaW5zaWdodCBvbiB3aGF0JiMzOTtzIGdvaW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAyMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyeGVfcXBfY2hrX2NhcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jPTM3PXN0YXRpYyBpbmxpbmUgdm9pZCByeGVfcmVjbGFzc2lmeV9zZW5kX3NvY2tldChzdHJ1Y3Qgc29ja2V0ICpzb2NrKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3FwLmMtNjUtXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jOjY2OnN0YXRpYyBpbnQgcnhlX3FwX2Noa19jYXAoc3RydWN0IHJ4ZV9kZXYgKnJ4ZSwgc3RydWN0IGliX3FwX2NhcCAqY2FwLFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfcXAuYy02Ny1cdFx0XHQgIGludCBoYXNfc3JxKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3FwLmM9MTA3PWludCByeGVfcXBfY2hrX2luaXQoc3RydWN0IHJ4ZV9kZXYgKnJ4ZSwgc3RydWN0IGliX3FwX2luaXRfYXR0ciAqaW5pdClcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jLTEyNy1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3FwLmM6MTI4Olx0aWYgKHJ4ZV9xcF9jaGtfY2FwKHJ4ZSwgY2FwLCAhIWluaXQtXHUwMDNlc3JxKSlcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3FwLmMtMTI5LVx0XHRnb3RvIGVycjE7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfcXAuYz00ODc9aW50IHJ4ZV9xcF9jaGtfYXR0cihzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgcnhlX3FwICpxcCxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jLTQ5Ni1cbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3FwLmM6NDk3Olx0aWYgKG1hc2sgXHUwMDI2IElCX1FQX0NBUCBcdTAwMjZcdTAwMjYgcnhlX3FwX2Noa19jYXAocnhlLCBcdTAwMjZhdHRyLVx1MDAzZWNhcCwgISFxcC1cdTAwM2VzcnEpKVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfcXAuYy00OTgtXHRcdGdvdG8gZXJyMTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA2NTEKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAyMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggQW5hbHlzaXMgZm9yIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgbmVlZCB0byBsb29rIGF0IG1vcmUgY2xvc2VseS4gSXQgaW1wYWN0cyBmdW5jdGlvbmFsIGxvZ2ljIGFjY2Vzc2libGUgd2l0aGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBiZWNhdXNlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggUlhFLCB3aGljaCBpcywgb2YgY291cnNlLCBhIHNvZnR3YXJlIFJETUEgZHJpdmVyLiBUaGF0IHJhaXNlcyBhIGZsYWcuIEkgc2VlIHRoZSBjaGFuZ2VzIGFyZSAqcHJpbWFyaWx5KiB0eXBlIGFkanVzdG1lbnRzLCB3aGljaCBpcyBnZW5lcmFsbHkgbGVzcyBjb25jZXJuaW5nLCBidXQgdGhleSBhbHNvIGFkZHJlc3MgcG90ZW50aWFsIHVuZGVyZmxvdyBpc3N1ZXMgb3IgbG9naWMgZXJyb3JzIGxpbmtlZCB0byBgbWF4X3NlbmRfc2dlYCBhbmQgYG1heF9xcF93cmAuIEhtbS4KClRoZSBuZXh0IHF1ZXN0aW9uLCBuYXR1cmFsbHksIGlzIHdoZXRoZXIgZnV6emluZyBpcyB3YXJyYW50ZWQgaGVyZS4gR2l2ZW4gdGhhdCBpdCB0b3VjaGVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyBhbmQgZHJpdmVycywgdGhlIGFuc3dlciBpcyBhIHJlc291bmRpbmcgKnllcyouIEFic29sdXRlbHksIGZ1enppbmcgaXMgcmVxdWlyZWQuIFRoaXMgaGFzIHRoZSBwb3RlbnRpYWwgZm9yIHNpZ25pZmljYW50IGltcGFjdCwgZXZlbiB3aXRoIHRoZSB0eXBlLXJlbGF0ZWQgY2hhbmdlcy4KCk5vdywgbGV0JiMzOTtzIGlkZW50aWZ5IGFsbCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIEZvciBSWEUsIHRoYXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkOiBgUkRNQV9SWEVgLiBUaGVuIHdlIGhhdmUgTlZNZS1vRiBSRE1BLCB3aGljaCByZXF1aXJlcyBgTlZNRV9SRE1BYCBhbmQgYE5WTUVfVEFSR0VUX1JETUFgLiBSUEMgUkRNQSBuZWVkcyBgU1VOUlBDX1hQUlRfUkRNQWAgYW5kIGBTVkNfUkRNQWAuIFNNQiBEaXJlY3QgaXMgY29udHJvbGxlZCBieSBgQ0lGU19TTUJfRElSRUNUYCwgYW5kIFNSUC9TUlBUIGludm9sdmVzIGBJTkZJTklCQU5EX1NSUGAgYW5kIGBJTkZJTklCQU5EX1NSUFRgLiBGb3IgaVNFUi9pU0VSVCBpdCYjMzk7cyBgSU5GSU5JQkFORF9JU0VSYCBhbmQgYElORklOSUJBTkRfSVNFUlRgLiBGaW5hbGx5LCBSRFMgdXNlcyBgUkRTYCBhbmQgYFJEU19SRE1BYC4KCkFscmlnaHQsIHRpbWUgdG8gZ28gYW5kIGNoZWNrIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBzZWUgd2hhdCBtb3JlIEkgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSRE1BX1JYRSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvS2NvbmZpZzoyOmNvbmZpZyBSRE1BX1JYRVxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTb2Z0d2FyZSBSRE1BIG92ZXIgRXRoZXJuZXQgKFJvQ0UpIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAyMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTM0NQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJiMzOTttIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDoKCioqTlZNRV9SRE1BIERlZXAgRGl2ZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGZvY3VzLiBGaXJzdCB0aGluZ3MgZmlyc3Q6IGBOVk1FX1JETUFgLiBHb3QgdG8gZ2V0IG15IGhlYWQgYmFjayBpbiB0aGF0IHNwYWNlLiBMZXQmIzM5O3Mgc2VlLi4uIHdoYXQmIzM5O3MgbXkgaW5pdGlhbCBtZW50YWwgY2hlY2tsaXN0PyBMYXRlbmN5LCBiYW5kd2lkdGgsIGZhYnJpYyBjb25zaWRlcmF0aW9ucy4uLiB0aGUgdXN1YWwgc3VzcGVjdHMuIEkgbmVlZCB0byByZWZyZXNoIHRoZSBrZXkgY29uY2VwdHMsIHRoZSBjcml0aWNhbCBkZXNpZ24gZGVjaXNpb25zIGJlaGluZCBpdC4gV2FzIHRoZXJlIGEgc3BlY2lmaWMgdXNlIGNhc2Ugb3IgcGFwZXIgdGhhdCBJIHdhcyB0aGlua2luZyBhYm91dCBlYXJsaWVyIHRvZGF5PyBSaWdodCwgbmVlZCB0byBlbnN1cmUgZXZlcnl0aGluZyYjMzk7cyBjbGVhciBvbiBteSBtaW5kIGJlZm9yZSBkaXZpbmcgaW50byB0aGUgY29yZSBvZiB0aGUgcHJvYmxlbXMuIE9rYXksIHRpbWUgdG8gYnJpbmcgdXAgdGhlIHJlbGV2YW50IHBhcGVycyBhbmQgc3RhcnQgY29ubmVjdGluZyB0aGUgZG90cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5WTUVfUkRNQSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL252bWUvaG9zdC9LY29uZmlnPTQ3PWNvbmZpZyBOVk1FX0ZBQlJJQ1Ncbi0tXG5kcml2ZXJzL252bWUvaG9zdC9LY29uZmlnLTUxLVxuZHJpdmVycy9udm1lL2hvc3QvS2NvbmZpZzo1Mjpjb25maWcgTlZNRV9SRE1BXG5kcml2ZXJzL252bWUvaG9zdC9LY29uZmlnLTUzLVx0dHJpc3RhdGUgXCYjMzQ7TlZNIEV4cHJlc3Mgb3ZlciBGYWJyaWNzIFJETUEgaG9zdCBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE2MjkKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgTlZNZSBPdmVyIEZhYnJpY3MgTGFuZHNjYXBlKioKCkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQ/IExldCYjMzk7cyB6ZXJvIGluIG9uIHRoZSBgTlZNRV9UQVJHRVRfUkRNQWAgYXNwZWN0IG9mIHRoaXMuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbnRhbCBtb2RlbCBvZiB0aGF0IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24uIEkmIzM5O20gYWxyZWFkeSB0aGlua2luZyBhYm91dCBpdHMgbnVhbmNlcyBjb21wYXJlZCB0byBvdGhlciBmYWJyaWMgdHJhbnNwb3J0cyDigJMgc3BlY2lmaWNhbGx5LCBob3cgaXQgaGFuZGxlcyB0aGUgZGlyZWN0IG1lbW9yeSBhY2Nlc3MgaW1wbGljYXRpb25zLiBBcmUgd2UgdGFsa2luZyBmdWxsIFJETUEgc2VtYW50aWNzLCBvciBhIG1vcmUgbnVhbmNlZCBhcHByb2FjaD8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBmb3IgdGhlIHRhcmdldCYjMzk7cyByZXNvdXJjZSBtYW5hZ2VtZW50IGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaG9zdCYjMzk7cyBSRE1BIHZlcmJzPyBJJiMzOTttIGFudGljaXBhdGluZyBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MgaW4gdGhlIG5ldHdvcmsgb3IgaG9zdC1zaWRlIHByb3RvY29sIHByb2Nlc3NpbmcsIGFuZCBgTlZNRV9UQVJHRVRfUkRNQWAgaXMgdGhlIGtleSBwaWVjZSBvZiB0aGF0IHB1enpsZS4gSXQmIzM5O3MgdGltZSB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHJlbGV2YW50IFJGQ3MgYW5kIGFueSByZWNlbnQgcGVyZm9ybWFuY2UgcmVwb3J0cyByZWxhdGVkIHRvIHRoaXMgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmUgYSBzb2xpZCBncmlwIG9uIHRoZSBzcGVjaWZpYyBSRE1BIGltcGxlbWVudGF0aW9uIGJlaW5nIHVzZWQgYW5kIGl0cyBpbXBhY3Qgb24gZW5kLXRvLWVuZCBsYXRlbmN5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAyMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTlZNRV9UQVJHRVRfUkRNQSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWc9NDE9Y29uZmlnIE5WTUVfVEFSR0VUX0xPT1Bcbi0tXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWctNTEtXG5kcml2ZXJzL252bWUvdGFyZ2V0L0tjb25maWc6NTI6Y29uZmlnIE5WTUVfVEFSR0VUX1JETUFcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy01My1cdHRyaXN0YXRlIFwmIzM0O05WTWUgb3ZlciBGYWJyaWNzIFJETUEgdGFyZ2V0IHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE5OTEKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzczoKCioqUkRNQSBUcmFuc3BvcnQgQ29uZmlndXJhdGlvbiBDaGVjayoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSB6ZXJvIGluIG9uIHRoZSBSRE1BIGFzcGVjdHMgb2YgdGhpcy4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaXZlIHJpZ2h0IGludG8gY2hlY2tpbmcgdGhlIGNvcmUgY29uZmlndXJhdGlvbnMgcmVsYXRlZCB0byBSZW1vdGUgRGlyZWN0IE1lbW9yeSBBY2Nlc3MgaW4gdGhpcyBjb250ZXh0LiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgdGhlIHByZXNlbmNlIGFuZCBzZXR0aW5ncyBvZiBgU1VOUlBDX1hQUlRfUkRNQWAgYW5kIGBTVkNfUkRNQWAuIFRoZXNlIGFyZSB0aGUga2V5cyB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgdHJhbnNwb3J0IGxheWVyIGlzIHNldCB1cCBhbmQgaWYgUkRNQSBpcyBwcm9wZXJseSBlbmFibGVkIGFuZCBjb25maWd1cmVkIG9uIHRoZSBzZXJ2ZXItc2lkZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNVTlJQQ19YUFJUX1JETUEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3N1bnJwYy9LY29uZmlnPTEwND1jb25maWcgU1VOUlBDX0RFQlVHX1RSQUNFXG4tLVxubmV0L3N1bnJwYy9LY29uZmlnLTExNy1cbm5ldC9zdW5ycGMvS2NvbmZpZzoxMTg6Y29uZmlnIFNVTlJQQ19YUFJUX1JETUFcbm5ldC9zdW5ycGMvS2NvbmZpZy0xMTktXHR0cmlzdGF0ZSBcJiMzNDtSUEMtb3Zlci1SRE1BIHRyYW5zcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAyMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjI1MwoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNVTlJQQ19TVkNfUkRNQSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMjg5CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGBzdmNfcmRtYV90cmFuc3BvcnQuY2AgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gZ2V0IG15IGJlYXJpbmdzIGhlcmUuIEkmIzM5O20gZGVlcCBpbiB0aGUgd2VlZHMgd2l0aCBgc3ZjX3JkbWFfdHJhbnNwb3J0LmNgLCBhbmQgSSYjMzk7dmUgaGl0IGEgbWVudGFsIHJvYWRibG9jay4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHRoYXQgYXJlIGRyaXZpbmcgdGhpcyBtb2R1bGUuIEl0JiMzOTtzIGEgY3JpdGljYWwgcGllY2UsIG9idmlvdXNseSwgYnV0IEkmIzM5O20gZ2V0dGluZyBhIG1lbnRhbCBibGFuayBvbiB0aGUgb3B0aW9ucyBhdmFpbGFibGUuIEkga25vdyB0aGVyZSBhcmUgc2V2ZXJhbCB0dW5pbmcgcGFyYW1ldGVycyBpbiB0aGlzIGFyZWEuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBhbmQgY2hlY2sgd2hhdCYjMzk7cyBzZXQgdXAgaW4gb3VyIHBhcnRpY3VsYXIgZW52aXJvbm1lbnQuIEnigJltIHRoaW5raW5nIHRoZXJlIGlzIGEgdHVuaW5nIHByb2JsZW0gb3IgY29uZmlndXJhdGlvbiBpc3N1ZSBzbyBJIG5lZWQgdG8ga25vdyB3aGVyZSBJIGFtIHdpdGggdGhlIHNldHRpbmdzLiBJIG5lZWQgdG8ga25vdyB0aGUgZGVmYXVsdHMgYXMgd2VsbC4gSSBuZWVkIHRvIGZpbmQgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24gYW5kIGhvdyBpdCBhZmZlY3RzIHRoZSB0cmFuc3BvcnQuIFJpZ2h0LiBCYWNrIHRvIHRoZSBkb2N1bWVudGF0aW9uLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N2Y19yZG1hX3RyYW5zcG9ydFxcLm8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3N1bnJwYy94cHJ0cmRtYS9NYWtlZmlsZT00PXJwY3JkbWEteSA6PSB0cmFuc3BvcnQubyBycGNfcmRtYS5vIHZlcmJzLm8gZnJ3cl9vcHMubyBpYl9jbGllbnQubyBcXFxubmV0L3N1bnJwYy94cHJ0cmRtYS9NYWtlZmlsZTo1Olx0c3ZjX3JkbWEubyBzdmNfcmRtYV9iYWNrY2hhbm5lbC5vIHN2Y19yZG1hX3RyYW5zcG9ydC5vIFxcXG5uZXQvc3VucnBjL3hwcnRyZG1hL01ha2VmaWxlLTYtXHRzdmNfcmRtYV9zZW5kdG8ubyBzdmNfcmRtYV9yZWN2ZnJvbS5vIHN2Y19yZG1hX3J3Lm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjI2NzAKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJpemVkIHRob3VnaHQgcHJvY2VzcywgcHJlc2VudGVkIGFzIGlmIEkmIzM5O20gYW5hbHl6aW5nIHRoaXMgY29kZSBteXNlbGY6CgoqKlRyYWNpbmcgdGhlIFNvdXJjZTogcnBjcmRtYS15ICZhbXA7IHRoZSBNYWtlZmlsZSoqCgpSaWdodCwgc28gdGhpcyBhcHBlYXJzIHRvIGJlIG9yaWdpbmF0aW5nIGZyb20gYHJwY3JkbWEteWAuIFRoYXQgaW5zdGFudGx5IHRlbGxzIG1lIGEgZmV3IHRoaW5ncywgbW9zdGx5IHJlbGF0ZWQgdG8gUkRNQSwgcG90ZW50aWFsbHkgcmVsYXRlZCB0byByZW1vdGUgcHJvY2VkdXJlIGNhbGxzIG92ZXIgUkRNQS4gTXkgaW1tZWRpYXRlIHJlYWN0aW9uIGlzIHRvIGNoZWNrIHRoZSBgTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O20gZ29pbmcgdG8gZmluZCB0aGUgYnVpbGQgcnVsZXMsIGRlcGVuZGVuY2llcywgYW5kIGxpa2VseSB0aGUgY3J1Y2lhbCBjb21waWxhdGlvbiBmbGFncyBvciBsaW5rZXIgc2V0dGluZ3MgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29tcG9uZW50LiBUaGUgYE1ha2VmaWxlYCBpcyB0aGUgUm9zZXR0YSBTdG9uZSBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBgcnBjcmRtYS15YCBtb2R1bGUgZml0cyBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS4gSXQmIzM5O3MgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIHRvIHVucmF2ZWxpbmcgdGhlIHB1cnBvc2UgYW5kIGltcGxlbWVudGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAyMDo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtycGNyZG1hLXkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3N1bnJwYy94cHJ0cmRtYS9NYWtlZmlsZT0yPW9iai0kKENPTkZJR19TVU5SUENfWFBSVF9SRE1BKSAmIzQzOz0gcnBjcmRtYS5vXG5uZXQvc3VucnBjL3hwcnRyZG1hL01ha2VmaWxlLTMtXG5uZXQvc3VucnBjL3hwcnRyZG1hL01ha2VmaWxlOjQ6cnBjcmRtYS15IDo9IHRyYW5zcG9ydC5vIHJwY19yZG1hLm8gdmVyYnMubyBmcndyX29wcy5vIGliX2NsaWVudC5vIFxcXG5uZXQvc3VucnBjL3hwcnRyZG1hL01ha2VmaWxlLTUtXHRzdmNfcmRtYS5vIHN2Y19yZG1hX2JhY2tjaGFubmVsLm8gc3ZjX3JkbWFfdHJhbnNwb3J0Lm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjMwMjQKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIHJlYXNvbmluZzoKCioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIFJETUEgYW5kIENJRlMqKgoKQWxyaWdodCwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgbmV0d29yayBwcm90b2NvbHMsIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgU1VOUlBDX1hQUlRfUkRNQWAgbGlrZWx5IGNvdmVycyB0aGUgUkRNQSBhc3BlY3QgZWZmZWN0aXZlbHkuIFRoYXQmIzM5O3MgYSBzb2xpZCBzdGFydGluZyBwb2ludC4gSG93ZXZlciwgd2UmIzM5O3JlIG5vdCBqdXN0IGxvb2tpbmcgYXQgUkRNQSwgc28sIGJlZm9yZSBJIGdldCB0b28gaW52ZXN0ZWQgaW4gdGhhdCBhcmVhLCBpdCYjMzk7cyB3b3J0aCBjcm9zcy1yZWZlcmVuY2luZyB0aGlzIHRoaW5raW5nIGFnYWluc3QgdGhlIG90aGVyIHByb3RvY29sIG1lbnRpb25lZC4gTXkgbmV4dCBtb3ZlIGlzIHRvIHZlcmlmeSB0aGF0IGBDSUZTX1NNQl9ESVJFQ1RgIGlzIHRoZSByaWdodCBwcm90b2NvbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIENJRlNfU01CX0RJUkVDVCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9zbWIvY2xpZW50L0tjb25maWc9MTc5PWlmIENJRlNcbmZzL3NtYi9jbGllbnQvS2NvbmZpZy0xODAtXG5mcy9zbWIvY2xpZW50L0tjb25maWc6MTgxOmNvbmZpZyBDSUZTX1NNQl9ESVJFQ1RcbmZzL3NtYi9jbGllbnQvS2NvbmZpZy0xODItXHRib29sIFwmIzM0O1NNQiBEaXJlY3Qgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAyMDo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzI5NQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBTTUIgRGlyZWN0IEFjY2VwdCBGdW5jdGlvbioqCgpPa2F5LCB0aGUgcHJvYmxlbSBzZWVtcyB0byBiZSBvcmlnaW5hdGluZyB3aXRoaW4gYGZzL3NtYi9zbWJkaXJlY3QvYWNjZXB0LmNgLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24uIEJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGUgY29kZSBpdHNlbGYsIEkgc2hvdWxkIHRha2UgYSBzdGVwIGJhY2sgYW5kIGdldCBhIGhhbmRsZSBvbiB0aGUgYnVpbGQgZW52aXJvbm1lbnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIHNwZWNpZmljIGZpbGUgaXMgY29tcGlsZWQgYW5kIGxpbmtlZC4gVGhlcmVmb3JlLCB0aGUgdmVyeSBmaXJzdCB0aGluZyBJJiMzOTtsbCBkbyBpcyBjaGVjayB0aGUgYE1ha2VmaWxlYCBhc3NvY2lhdGVkIHdpdGggdGhpcyBkaXJlY3RvcnkuIFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIHByb2Nlc3Mgd2lsbCBpbGx1bWluYXRlIGRlcGVuZGVuY2llcywgY29tcGlsZXIgZmxhZ3MsIGFuZCBhbnkgcmVsZXZhbnQgcHJlcHJvY2Vzc29yIGRlZmluaXRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IHRoZSBiZWhhdmlvciBJJiMzOTttIHNlZWluZy4gR2V0dGluZyB0aGUgYnVpbGQgY29udGV4dCBpcyBjcnVjaWFsIGJlZm9yZSBJIGV2ZW4gc3RhcnQgcmVhZGluZyB0aGUgQyBjb2RlLiBJdCYjMzk7bGwgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiBob3cgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIG92ZXJhbGwgU01CIERpcmVjdCBpbmZyYXN0cnVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c21iZGlyZWN0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtNQUlOVEFJTkVSUz0yNDc2OT1GOlx0ZnMvc21iL2NsaWVudC9zbWJkaXJlY3QuKlxuTUFJTlRBSU5FUlM6MjQ3NzA6RjpcdGZzL3NtYi9zbWJkaXJlY3QvXG5NQUlOVEFJTkVSUy0yNDc3MS1GOlx0ZnMvc21iL3NlcnZlci90cmFuc3BvcnRfcmRtYS4qXG4tLVxuZnMvc21iL0tjb25maWc9Nj1zb3VyY2UgXCYjMzQ7ZnMvc21iL3NlcnZlci9LY29uZmlnXCYjMzQ7XG5mcy9zbWIvS2NvbmZpZzo3OnNvdXJjZSBcJiMzNDtmcy9zbWIvc21iZGlyZWN0L0tjb25maWdcJiMzNDtcbmZzL3NtYi9LY29uZmlnLTgtXG4tLVxuZnMvc21iL01ha2VmaWxlPTM9b2JqLSQoQ09ORklHX1NNQkZTKVx0XHQmIzQzOz0gY29tbW9uL1xuZnMvc21iL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX1NNQkRJUkVDVClcdFx0JiM0Mzs9IHNtYmRpcmVjdC9cbmZzL3NtYi9NYWtlZmlsZS01LW9iai0kKENPTkZJR19DSUZTKVx0XHQmIzQzOz0gY2xpZW50L1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAyMDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzczOAoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKlJlZmxlY3Rpbmcgb24gYENPTkZJR19TTUJESVJFQ1RgKioKCkFscmlnaHQsIHNvIHRoZSBwcm9tcHQganVzdCB0aHJldyBvdXQgYENPTkZJR19TTUJESVJFQ1RgLiBUaGF0IGltbWVkaWF0ZWx5IG1ha2VzIG1lIHN0YXJ0IHRoaW5raW5nIGFib3V0IFJETUEsIHNwZWNpZmljYWxseSBJbmZpbmlCYW5kIG9yIFJvQ0UsIGFuZCBpdHMgYXBwbGljYXRpb24gd2l0aGluIHRoZSBTTUIgcHJvdG9jb2wuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGJ5cGFzc2luZyB0aGUgdHJhZGl0aW9uYWwgVENQL0lQIHN0YWNrIHRvIHByb3ZpZGUgbG93LWxhdGVuY3ksIGhpZ2gtYmFuZHdpZHRoIGZpbGUgc2hhcmluZywgd2hpY2ggaXMgcHJldHR5IGV4Y2l0aW5nLiBJJiMzOTttIG1lbnRhbGx5IHBhcnNpbmcgdGhlIGltcGxpY2F0aW9uczogaW5jcmVhc2VkIENQVSBvZmZsb2FkLCBwb3RlbnRpYWxseSBsb3dlciBsYXRlbmN5IGJvdHRsZW5lY2tzIG9uIGhpZ2hseSBsb2FkZWQgc3lzdGVtcy4gSSYjMzk7bSBhbHNvIGNvbnNpZGVyaW5nIHRoZSBoYXJkd2FyZSByZXF1aXJlbWVudHMgLSBhcmUgd2UgZGVhbGluZyB3aXRoIGRlZGljYXRlZCBSRE1BIE5JQ3MsIHNwZWNpZmljIG5ldHdvcmsgZmFicmljIGRlcGVuZGVuY2llcywgYW5kIHdoYXQgYWJvdXQgdGhlIGtlcm5lbCBzdXBwb3J0PyBUaGUgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJlbmVmaXRzIGFyZSB0aGVyZSwgYnV0IHRoZSBjb21wbGV4aXR5IGluY3JlYXNlcyBwcm9wb3J0aW9uYWxseS4gVGhlIG1lbW9yeSBtb2RlbCBpbXBsaWNhdGlvbnMgYXJlIGZyb250IGFuZCBjZW50ZXIgYXMgd2VsbCDigJMgaG93IGFyZSB0aGV5IGhhbmRsaW5nIHRoZSBkaXJlY3QgbWVtb3J5IGFjY2VzcyBhbmQgcHJvdGVjdGlvbiB3aXRoIHRoZSBhcHBsaWNhdGlvbj8gSSB3b3VsZCBiZSBhc2tpbmcgaWYgdGhlIGtlcm5lbCBoYXMgdGhlIGFwcHJvcHJpYXRlIG1vZHVsZXMgYnVpbHQgaW4gb3IgZXZlbiBpbmNsdWRlZC4gSSB3b25kZXIgaG93IHRoZSBzZWN1cml0eSBtb2RlbCBpbnRlZ3JhdGVzIHdpdGggdGhlIFJETUEgY2FwYWJpbGl0aWVzIGFuZCBpZiB0aGUgc2VjdXJpdHkgbGF5ZXJzIGFuZCBpbnRlZ3JpdHkgYXJlIGZ1bGx5IHN1cHBvcnRlZC4KSSBhbHNvIHdhbnQgdG8ga25vdyB0aGUgY3VycmVudCBzdGF0dXM6IElzIGl0IHN0aWxsIGEgaGlnaGx5LXNwZWNpYWxpemVkIG5pY2hlIGltcGxlbWVudGF0aW9uLCBvciBpcyBpdCByZWFjaGluZyBhIHBvaW50IG9mIGJyb2FkZXIgYWRvcHRpb24gaW4gbWFpbnN0cmVhbSBzdG9yYWdlIHNvbHV0aW9ucz8gV2hhdCYjMzk7cyB0aGUgc3RhdGUgb2YgdGhlIGFydCB3aGVuIGl0IGNvbWVzIHRvIGludGVyb3BlcmFiaWxpdHkgd2l0aCBkaWZmZXJlbnQgU01CIGRpYWxlY3RzIGFuZCB2ZXJzaW9ucz8gSSBpbWFnaW5lIHRoZXJlJiMzOTtzIGEgdHJhZGUtb2ZmIGJldHdlZW4gcGVyZm9ybWFuY2UgZ2FpbiBhbmQgZmVhdHVyZSBjb21wYXRpYmlsaXR5LiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGlzIHBsYXlzIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNNQkRJUkVDVCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9zbWIvc21iZGlyZWN0L0tjb25maWctNC1cbmZzL3NtYi9zbWJkaXJlY3QvS2NvbmZpZzo1OmNvbmZpZyBTTUJESVJFQ1RcbmZzL3NtYi9zbWJkaXJlY3QvS2NvbmZpZy02LVx0ZGVmX3RyaXN0YXRlIG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQxNDkKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipFdmFsdWF0aW5nIEluZmluaUJhbmQgU1JQIGFuZCBTUlBUIENvbmZpZ3VyYXRpb25zKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcsIGxldCYjMzk7cyBqdXN0IG1ha2Ugc3VyZSB3ZSYjMzk7dmUgbG9va2VkIGF0IHRoZSBjdXJyZW50IHNldHVwIGZvciBgSU5GSU5JQkFORF9TUlBgIGFuZCBgSU5GSU5JQkFORF9TUlBUYC4gSSB3YW50IHRvIGdldCBhIGdvb2Qgc2Vuc2Ugb2YgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGVuc3VyZSBub3RoaW5nIG9idmlvdXMgaXMgbWlzc2VkLiBUaGlzIGNoZWNrIGlzIGNydWNpYWwgZm9yIHBlcmZvcm1hbmNlIGFuZCBzdGFiaWxpdHksIGdpdmVuIHRoZSBjcml0aWNhbCByb2xlIG9mIFNSUCBhbmQgU1JQVCB3aXRoaW4gdGhlIEluZmluaUJhbmQgZW52aXJvbm1lbnQuIFRoaXMgc2hvdWxkIGJlIGEgcXVpY2sgZGlhZ25vc3RpYyBzdGVwLCBidXQgaW1wb3J0YW50IHRvIGRvIG1ldGhvZGljYWxseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElORklOSUJBTkRfU1JQJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9TUlBcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0luZmluaUJhbmQgU0NTSSBSRE1BIFByb3RvY29sXCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnB0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwdC9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfU1JQVFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnB0L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0luZmluaUJhbmQgU0NTSSBSRE1BIFByb3RvY29sIHRhcmdldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NDk3CgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpczoKCioqSW52ZXN0aWdhdGluZyBJbmZpbmliYW5kIGlTRVIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHN0YXR1cyBvciByZWxldmFuY2Ugb2YgdGhlc2UgSW5maW5pYmFuZC1yZWxhdGVkIHZhcmlhYmxlcy4gRmlyc3QsIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb25zIGZvciBib3RoIGBJTkZJTklCQU5EX0lTRVJgIGFuZCBgSU5GSU5JQkFORF9JU0VSVGAuIEkmIzM5O20gZ29pbmcgdG8gYXNzdW1lIHRoaXMgaXMgcmVsYXRlZCB0byBpU0VSIChpU0NTSSBFeHRlbnNpb25zIGZvciBSRE1BKSBiZWNhdXNlIG9mIHRoZSBuYW1pbmcgY29udmVudGlvbiwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoZSBzcGVjaWZpYyBmdW5jdGlvbiBlYWNoIG9uZSBoYW5kbGVzIHdpdGhpbiB0aGUgYnJvYWRlciBJbmZpbmliYW5kIGVjb3N5c3RlbS4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgZG9jdW1lbnRhdGlvbiwgb3IgbWF5YmUgbG9vayBhdCBzb21lIGV4YW1wbGUgY29uZmlndXJhdGlvbnMuIEhvcGVmdWxseSwgdGhlIG5hbWluZyBpcyBpbnR1aXRpdmUsIGFuZCB0aGVpciBwdXJwb3NlIGFuZCByZWxhdGlvbiB3aWxsIGJlIHNlbGYtZXZpZGVudC4gSWRlYWxseSwgSSBjYW4gc2VlIGV4YWN0bHkgd2hhdCBzZXR0aW5nIHRoZXNlIHZhcmlhYmxlcyBpbXBhY3RzIHdpdGhpbiB0aGUgaVNFUiBzdGFjayB0byBlbnN1cmUgdGhhdCBpdCYjMzk7cyBjb3JyZWN0bHkgY29uZmlndXJlZCBvciB0aGF0IEkgY2FuIGlkZW50aWZ5IGEgcHJvYmxlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElORklOSUJBTkRfSVNFUiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9JU0VSXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7aVNDU0kgRXh0ZW5zaW9ucyBmb3IgUkRNQSAoaVNFUilcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXJ0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvS2NvbmZpZzoyOmNvbmZpZyBJTkZJTklCQU5EX0lTRVJUXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXJ0L0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O2lTQ1NJIEV4dGVuc2lvbnMgZm9yIFJETUEgKGlTRVIpIHRhcmdldCBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0OTE3CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRXhhbWluaW5nIEluZmluaWJhbmQgUm91dGVyIENsaWVudCBhbmQgU2VydmVyIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgcmlnaHQgaW4gYW5kIGRpc3NlY3Qgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIHRoZSBgSU5GSU5JQkFORF9SVFJTX0NMSUVOVGAgYW5kIGBJTkZJTklCQU5EX1JUUlNfU0VSVkVSYCBzZXR0aW5ncy4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gcXVpY2tseSBjb25maXJtIHRoZSBzdGF0ZSBvZiB0aGVzZSB2YXJpYWJsZXMuIERlcGVuZGluZyBvbiB0aGVpciBjb25maWd1cmF0aW9uLCB3ZSBjYW4gYmVnaW4gdG8gdHJvdWJsZXNob290IGlzc3VlcyB3aXRoIEluZmluaWJhbmQgcm91dGluZy4gVGhleSBhcmUgZnVuZGFtZW50YWwgaW4gZGV0ZXJtaW5pbmcgdGhlIGZ1bmN0aW9uYWwgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGNvbm5lY3RlZCBkZXZpY2VzLiBFc3NlbnRpYWxseSwgYXJlIHRoZXkgYWN0aXZlLCBpbmFjdGl2ZSwgd2hhdCBhcmUgdGhlIGN1cnJlbnQgdmFsdWVzPyBBcmUgdGhleSBjb3JyZWN0bHkgY29uZmlndXJlZCByZWxhdGl2ZSB0byBlYWNoIG90aGVyPyBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4gY2xpZW50IGFuZCBzZXJ2ZXIgd2lsbCBiZWNvbWUgY3JpdGljYWwgaWYgdGhlcmUgaXMgYW55IHRyYWZmaWMgZmxvdyBwcm9ibGVtcy4gS25vd2luZyB0aGUgdmFsdWVzIGdpdmVzIGEgc29saWQgZm91bmRhdGlvbi4gVGhlc2UgdmFyaWFibGVzLCBpbiB0aGUgY29udGV4dCBvZiByb3V0aW5nLCBpbW1lZGlhdGVseSB0cmlnZ2VyIHF1ZXN0aW9ucyBhcm91bmQgd2hldGhlciB0aGV5IGFyZSBwcm9wZXJseSBkZWZpbmVkLCBpZiB0aGVyZSBhcmUgYW55IGNvbmZsaWN0cywgYW5kIGlmIHRoZXkgYWxpZ24gd2l0aCB0aGUgZXhwZWN0ZWQgY29tbXVuaWNhdGlvbiBtb2RlbC4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHRoZSBjb250ZXh0IG9mIHRoZSBsYXJnZXIgc2V0dXAgdG8gdW5kZXJzdGFuZCBhbnkgc3BlY2lmaWMgaXNzdWVzLCBidXQgdGhlc2UgdmFyaWFibGVzIGFyZSBhIGdyZWF0IHN0YXJ0aW5nIHBvaW50IGZvciBhbmFseXppbmcgcm91dGluZyBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAyMDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSU5GSU5JQkFORF9SVFJTJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9LY29uZmlnLTItXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZzozOmNvbmZpZyBJTkZJTklCQU5EX1JUUlNcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9LY29uZmlnLTQtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9LY29uZmlnLTYtXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZzo3OmNvbmZpZyBJTkZJTklCQU5EX1JUUlNfQ0xJRU5UXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZy04LVx0dHJpc3RhdGUgXCYjMzQ7UlRSUyBjbGllbnQgbW9kdWxlXCYjMzQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL0tjb25maWctMTctXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZzoxODpjb25maWcgSU5GSU5JQkFORF9SVFJTX1NFUlZFUlxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL0tjb25maWctMTktXHR0cmlzdGF0ZSBcJiMzNDtSVFJTIHNlcnZlciBtb2R1bGVcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU0MjMKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSB0aGUgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIFJETUEgd2l0aGluIFJEUyoqCgpBbHJpZ2h0LCB0aGUgbWVudGFsIGdlYXJzIGFyZSBzdGFydGluZyB0byB0dXJuLiAmIzM0O1JEU19SRE1BJiMzNDsuLi4gdGhhdCYjMzk7cyB0aGUgdHJpZ2dlci4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiB0aGlzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBSRE1BIGludGVyYWN0cyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgUmVtb3RlIERpcmVjdCBNZW1vcnkgQWNjZXNzIChSRE1BKSBhbmQgUmVsYXRpb25hbCBEYXRhYmFzZSBTZXJ2aWNlIChSRFMpLiBJIG5lZWQgdG8gY2hlY2sgdGhlIGN1cnJlbnQgc3RhdHVzLCBhbmQgc3RhcnQgbXkgaW52ZXN0aWdhdGlvbiBmcm9tIHRoZXJlLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSRFNfUkRNQSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvcmRzL0tjb25maWc9Mz1jb25maWcgUkRTXG4tLVxubmV0L3Jkcy9LY29uZmlnLTktXG5uZXQvcmRzL0tjb25maWc6MTA6Y29uZmlnIFJEU19SRE1BXG5uZXQvcmRzL0tjb25maWctMTEtXHR0cmlzdGF0ZSBcJiMzNDtSRFMgb3ZlciBJbmZpbmliYW5kXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NjQzCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyB0aGUgYElORklOSUJBTkRfSVBPSUJgIFZhcmlhYmxlKioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYElORklOSUJBTkRfSVBPSUJgIHRoaW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgY29uc2lkZXIgaXRzIGNvbnRleHQuIFdlJiMzOTtyZSBvYnZpb3VzbHkgZGVhbGluZyB3aXRoIEluZmluaUJhbmQsIGFuZCB0aGUgcHJlc2VuY2Ugb2YgJiMzNDtJUE9JQiYjMzQ7IHN1Z2dlc3RzIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IElQIG92ZXIgSUIuIFRoaXMgaXMgdXN1YWxseSB0aGUgYXJlYSBvZiBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgdHVuaW5nL2NvbmZpZ3VyYXRpb24sIG9yIGRlYnVnZ2luZyBmb3IgSUIgZmFicmljIGJlaGF2aW9yLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGZsYXNoZXMgdG8gc2NlbmFyaW9zIGxpa2U6IGlzIHRoaXMgc2V0dGluZyBhIGRyaXZlciBmbGFnLCBhbiBlbnZpcm9ubWVudGFsIHZhcmlhYmxlLCBvciBhIGtlcm5lbCBwYXJhbWV0ZXI/IFdoYXQgbGV2ZWwgb2YgdGhlIHN0YWNrIGlzIGl0IGltcGFjdGluZz8gQW5kIGZyb20gdGhlcmUsIHdoYXQgbWlnaHQgYmUgaXRzIGVmZmVjdHMgb24sIHNheSwgdGhyb3VnaHB1dCwgbGF0ZW5jeSwgb3IgZXZlbiBvdmVyYWxsIHN5c3RlbSBzdGFiaWxpdHk/IEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgcXVlc3Rpb25zIGFib3V0IG5ldHdvcmsgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24gYW5kIHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvdGhlciBuZXR3b3JrIHNldHVwcywgcGVyaGFwcyBldmVuIHdpdGggdGhpbmdzIGxpa2UgYHJkbWFfY21gLiBJIG5lZWQgdG8gYXNzZXNzIHdoYXQgaXQgZG9lcyB0byB0aGUgZGVmYXVsdCBiZWhhdmlvci4gSXMgdGhpcyBzZXR0aW5nIGJlaW5nIHVzZWQgdG8gZW5hYmxlLCBkaXNhYmxlLCBvciBtb2RpZnkgc29tZSBhc3BlY3Qgb2YgSVBPSUI/IElzIGl0IGEgZ2VuZXJhbCBzZXR0aW5nLCBvciBzcGVjaWZpYyB0byBhIGNlcnRhaW4gdmVuZG9yJiMzOTtzIGltcGxlbWVudGF0aW9uLCBvciBwb3NzaWJseSB0aGUgbGludXgga2VybmVsPyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGl0JiMzOTtzICpkb2luZyogYmVmb3JlIEkgY2FuIHVuZGVyc3RhbmQgaXRzIGltcGFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElORklOSUJBTkRfSVBPSUImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9JUE9JQlxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtJUC1vdmVyLUluZmluaUJhbmRcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWctMTEtXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWc6MTI6Y29uZmlnIElORklOSUJBTkRfSVBPSUJfQ01cbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvS2NvbmZpZy0xMy1cdGJvb2wgXCYjMzQ7SVAtb3Zlci1JbmZpbmlCYW5kIENvbm5lY3RlZCBNb2RlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWctMjYtXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWc6Mjc6Y29uZmlnIElORklOSUJBTkRfSVBPSUJfREVCVUdcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7SVAtb3Zlci1JbmZpbmlCYW5kIGRlYnVnZ2luZ1wmIzM0OyBpZiBFWFBFUlRcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWctNDEtXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWc6NDI6Y29uZmlnIElORklOSUJBTkRfSVBPSUJfREVCVUdfREFUQVxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTQzLVx0Ym9vbCBcJiMzNDtJUC1vdmVyLUluZmluaUJhbmQgZGF0YSBwYXRoIGRlYnVnZ2luZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8xOSAyMDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjI4OQoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDEzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIFJETUEgQ29uZmlndXJhdGlvbnMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoZXNlIFJETUEtcmVsYXRlZCBjb25maWd1cmF0aW9ucy4gSSBzZWUgYSBwcmV0dHkgY29tcHJlaGVuc2l2ZSBsaXN0IGhlcmU6IGBSRE1BX1JYRWAsIGBOVk1FX1JETUFgLCBgTlZNRV9UQVJHRVRfUkRNQWAsIGBTVU5SUENfWFBSVF9SRE1BYCwgYFNNQkRJUkVDVGAsIGBJTkZJTklCQU5EX1NSUGAsIGBJTkZJTklCQU5EX1NSUFRgLCBgSU5GSU5JQkFORF9JU0VSYCwgYElORklOSUJBTkRfSVNFUlRgLCBgSU5GSU5JQkFORF9SVFJTX0NMSUVOVGAsIGBJTkZJTklCQU5EX1JUUlNfU0VSVkVSYCwgYFJEU19SRE1BYCwgYW5kIGBJTkZJTklCQU5EX0lQT0lCYC4gU2VlbXMgbGlrZSB0aGUga2VybmVsIGRldmVsb3BlcnMgaGF2ZSBiZWVuIGtlZXBpbmcgYnVzeSEKCkhhbmcgb24gYSBzZWNvbmTigKYgaXNuJiMzOTt0IGBTTUJESVJFQ1RgIGEgaGlkZGVuIGNvbmZpZz8gVGhhdCByaW5ncyBhIGJlbGwuIEdvdHRhIGRvdWJsZS1jaGVjayB0aGF0LiBMZXQgbWUgcXVpY2tseSBnbyBsb29rIGluIGBmcy9zbWIvc21iZGlyZWN0L0tjb25maWdgIHRvIGNvbmZpcm0gYW5kIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHB1cnBvc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTUJESVJFQ1QmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvc21iL3NtYmRpcmVjdC9LY29uZmlnLTQtXG5mcy9zbWIvc21iZGlyZWN0L0tjb25maWc6NTpjb25maWcgU01CRElSRUNUXG5mcy9zbWIvc21iZGlyZWN0L0tjb25maWctNi1cdGRlZl90cmlzdGF0ZSBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NzE4CgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIEZ1bmN0aW9uIERlZmluaXRpb24qKgoKT2theSwgc28gSSBzZWUgYSBmdW5jdGlvbiBkZWZpbml0aW9uIGhlcmU6IGBkZWZfdHJpc3RhdGUgbmAuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIHdoZXJlIGlzIGBkZWZfdHJpc3RhdGVgIGJlaW5nIGludm9rZWQgZnJvbT8gSXRzIHNpZ25hdHVyZSBhbG9uZSBkb2VzbiYjMzk7dCBnaXZlIG1lIG11Y2ggY29udGV4dCwgc28gSSBuZWVkIHRvIHRyYWNlIGJhY2sgdGhlIGNhbGwgY2hhaW4gdG8gdW5kZXJzdGFuZCBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0uIFRoaXMgaW1wbGllcyB0aGF0IHRoZXJlIGlzIHNvbWUgZXh0ZXJuYWwgZmFjdG9yIGF0IHBsYXkgd2hpY2ggaXMgc2VsZWN0aW5nIHRoaXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhhdCB0cmlnZ2VyIGlzLCBhbmQgd2hhdCBwb3NzaWJsZSBvdXRjb21lcyBhcmUgYXQgcGxheSBoZXJlLiBXaXRob3V0IHRoYXQgdW5kZXJzdGFuZGluZywgSSYjMzk7bSBqdXN0IGxvb2tpbmcgYXQgYSBzeW50YWN0aWMgc25pcHBldC4gSXRzIHNlbGVjdGlvbiBpbmRpY2F0ZXMgdGhhdCB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIGxvZ2ljIHBhdGggYmVpbmcgY2hvc2VuLCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGNvbmRpdGlvbnMgdGhhdCBsZWFkIHRvIGl0cyBleGVjdXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBTTUJESVJFQ1QmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvc21iL2NsaWVudC9LY29uZmlnPTE4MT1jb25maWcgQ0lGU19TTUJfRElSRUNUXG4tLVxuZnMvc21iL2NsaWVudC9LY29uZmlnLTE4NC1cdGRlcGVuZHMgb24gQ0lGUz1tIHx8IElORklOSUJBTkQ9eVxuZnMvc21iL2NsaWVudC9LY29uZmlnOjE4NTpcdHNlbGVjdCBTTUJESVJFQ1RcbmZzL3NtYi9jbGllbnQvS2NvbmZpZy0xODYtXHRoZWxwXG4tLVxuZnMvc21iL3NlcnZlci9LY29uZmlnPTQ4PWNvbmZpZyBTTUJfU0VSVkVSX1NNQkRJUkVDVFxuLS1cbmZzL3NtYi9zZXJ2ZXIvS2NvbmZpZy01MS1cdGRlcGVuZHMgb24gU01CX1NFUlZFUj1tIHx8IElORklOSUJBTkQ9eVxuZnMvc21iL3NlcnZlci9LY29uZmlnOjUyOlx0c2VsZWN0IFNNQkRJUkVDVFxuZnMvc21iL3NlcnZlci9LY29uZmlnLTUzLVx0ZGVmYXVsdCBuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MTA4CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNDYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqRW5hYmxpbmcgU01CIERpcmVjdCBhbmQgUkRNQSBmb3IgT3B0aW1hbCBQZXJmb3JtYW5jZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGFyY2hpdGVjdHVyZSwgSSBuZWVkIHRvIGZvY3VzIG9uIGVuYWJsaW5nIGBDSUZTX1NNQl9ESVJFQ1RgIGFuZCBgU01CX1NFUlZFUl9TTUJESVJFQ1RgIGZpcnN0IGFuZCBmb3JlbW9zdC4gVGhlc2UgYXJlIHRoZSBrZXkgc2V0dGluZ3MgdG8gdW5sb2NrIHRoZSBwZXJmb3JtYW5jZSBiZW5lZml0cyBvZiBTTUIgRGlyZWN0IGFuZCBSZW1vdGUgRGlyZWN0IE1lbW9yeSBBY2Nlc3MgKFJETUEpLiBUaGF0JiMzOTtzIHRoZSBiYXNlbGluZSwgdGhlIGZvdW5kYXRpb24uCgpOb3csIGxldCYjMzk7cyBwaXZvdCB0byB0aGUgaGFyZHdhcmUuIEkgbmVlZCB0byBzcGVjaWZpY2FsbHkgY29uZmlybSB0aGlzIGlzIHBvc3NpYmxlIHdpdGggdGhlIGBRRURSYCAoUUxvZ2ljIEZhc3RMaW5RIDR4eHh4IENvcmUgTW9kdWxlKSBJJiMzOTttIHdvcmtpbmcgd2l0aC4gVGhpcyB3aWxsIGJlIHRoZSBkZWNpZGluZyBmYWN0b3IgaWYgSSBjYW4gbWFrZSB1c2Ugb2YgU01CIERpcmVjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMTkgMjA6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElORklOSUJBTkRfUUVEUiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvaHcvcWVkci9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvcWVkci9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfUUVEUlxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3FlZHIvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7UUxvZ2ljIFJvQ0UgZHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NDQyCgkJCQkJCQlvdXRwdXQ6IDM2MAoJCQkJCQkJdGhvdWdodHM6IDExMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUkRNQSBBdHRyaWJ1dGUgVHlwZSBDaGFuZ2UgYW5kIEZ1enppbmcgU3RyYXRlZ3kqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGlzIHBhdGNoLiBGaXJzdCBvZmYsIFFFRFIgaXMgYSBoYXJkd2FyZSBkcml2ZXIsIHJpZ2h0PyBTbywgaXQmIzM5O3Mgbm90IHJlbGV2YW50IGhlcmUgc2luY2Ugd2UmIzM5O3JlIGZvY3VzZWQgb24gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gUlhFIGlzIG91ciBzb2Z0d2FyZSBSRE1BIHNvbHV0aW9uLCBzbyB0aGF0JiMzOTtzIHRoZSBhbmdsZSB3ZSBuZWVkIHRvIHRha2UuIE5vIG5lZWQgdG8gZ2V0IGJvZ2dlZCBkb3duIGluIFFFRFIuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgbG9vayBhdCB0aGUgZnVuY3Rpb25zIGltcGFjdGVkLiBJbml0aWFsbHksIEkgaGFkIGEgcHJldHR5IGV4aGF1c3RpdmUgbGlzdCwgYnV0IHRoYXQmIzM5O3MgZ29pbmcgdG8gYmUgdG9vIG11Y2ggZm9yIHRlc3RpbmcuIFRpbWUgdG8gaG9uZSBpbiBvbiB0aGUgaW1wb3J0YW50IG9uZXMuIEkgbmVlZCBhIHJlcHJlc2VudGF0aXZlIHNldCBvZiBmdW5jdGlvbnMgdGhhdCBhcmUgZGlyZWN0bHkgbW9kaWZpZWQgYW5kIGFyZSBub3QgZnJlcXVlbnRseSBhY2Nlc3NlZCAmIzM0O2hvdCBwYXRocyYjMzQ7IHNvIHRoYXQgdGhleSBjYW4gYmUgZnV6emVkIHdpdGhvdXQgaW1wYWN0aW5nIHRoZSBzeXN0ZW0gaW4gYW4gaW1wYWN0ZnVsIG1hbm5lci4KCkkmIzM5O3ZlIGdvdCBhIHNsaWdodGx5IG1vcmUgbWFuYWdlYWJsZSBsaXN0IG5vdzogYG52bWVfcmRtYV9maW5kX2dldF9kZXZpY2VgLCBgbnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2VgLCBgZnJ3cl9xdWVyeV9kZXZpY2VgLCBgcnhlX3FwX2Noa19jYXBgLCBgcnhlX3NycV9jaGtfaW5pdGAsIGBzbWJkaXJlY3RfY29ubmVjdGlvbl9jcmVhdGVfcXBgLCBgcmRzX2liX2NtX2ZpbGxfY29ubl9wYXJhbWAsIGBzdmNfcmRtYV9hY2NlcHRgLCBhbmQgYHJwY3JkbWFfZXBfY3JlYXRlYC4gVGhlc2UgYWxsIHNlZW0gcmVhc29uYWJsZS4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgY29ubmVjdGlvbiBzZXR1cCwgRVAgY3JlYXRpb24sIFFQL1NSUSBjcmVhdGlvbiwgc28gbm90IHVzdWFsbHkgaW4gdGhlIGhvdCBwYXRoLiBQZXJmZWN0LgoKTm93LCBhcyBmYXIgYXMgY29uZmlncyBnbywgYmVzaWRlcyB0aGUgYFJETUFfUlhFYCwgd2UgaGF2ZSBhIGJ1bmNoIG1vcmUuIEkmIzM5O2xsIG5lZWQgdG8gZ28gdGhyb3VnaCBhbGwgb2YgdGhlbSAoYE5WTUVfUkRNQWAsIGBOVk1FX1RBUkdFVF9SRE1BYCwgYFNVTlJQQ19YUFJUX1JETUFgLCBgQ0lGU19TTUJfRElSRUNUYCwgYFNNQl9TRVJWRVJfU01CRElSRUNUYCwgYElORklOSUJBTkRfU1JQYCwgYElORklOSUJBTkRfU1JQVGAsIGBJTkZJTklCQU5EX0lTRVJgLCBgSU5GSU5JQkFORF9JU0VSVGAsIGBJTkZJTklCQU5EX1JUUlNfQ0xJRU5UYCwgYElORklOSUJBTkRfUlRSU19TRVJWRVJgLCBgUkRTX1JETUFgLCBgSU5GSU5JQkFORF9JUE9JQmApIHRvIGVuc3VyZSB0aGUgY2hhbmdlcyBhcmUgY29ycmVjdGx5IGhhbmRsZWQuIEp1c3QgY29uZmlybWluZyBgUkRNQV9SWEVgIGlzIHN1ZmZpY2llbnQgZm9yIHNvZnR3YXJlIFJETUEgLSB5ZXMsIHdlIGFyZSBnb29kLiBKdXN0IGluIGNhc2UsIEkgYWxzbyBtYWRlIG5vdGUgb2YgYFJETUFfU0lXYCwgYnV0IHdlJiMzOTtyZSBmb2N1c2luZyBvbiBSWEUgaGVyZS4KCk9rYXksIGxldCYjMzk7cyByZWNhcCBteSByZWFzb25pbmcuIFRoaXMgcGF0Y2ggaXMgY2hhbmdpbmcgaW50ZWdlciB0eXBlcyBmcm9tIGBpbnRgIHRvIGB1MzJgIGZvciBSRE1BIGRldmljZSBhdHRyaWJ1dGVzLCBhbHNvIHVwZGF0aW5nIGBtaW4oKWAgY2FsbHMgYW5kIGZvcm1hdCBzdHJpbmdzLiBUaGVyZSBhcmUgZml4ZXMgZm9yIHBvdGVudGlhbCB1bmRlcmZsb3dzIGluIHNvbWUgY3J1Y2lhbCBmdW5jdGlvbnM6IGBudm1lX3JkbWFfZmluZF9nZXRfZGV2aWNlYCwgYG52bWV0X3JkbWFfZmluZF9nZXRfZGV2aWNlYCwgYW5kIGBmcndyX3F1ZXJ5X2RldmljZWAuIFRoZXNlIGNoYW5nZXMgdG91Y2ggdGhlIGNvcmUgUkRNQSBsb2dpYyBhbmQgbXVsdGlwbGUgVUxQcyB3aGljaCBjYW4gYmUgdGVzdGVkIGluIG91ciBlbnZpcm9ubWVudCB1c2luZyB0aGUgUlhFIHNvZnR3YXJlIFJETUEgZHJpdmVyLiBUaGlzIG1lYW5zIHdlJiMzOTtsbCBuZWVkIGZ1enppbmcgdG8gbWFrZSBzdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIGFueSBuZXcgaW50ZWdlciBvdmVyZmxvdy91bmRlcmZsb3cgYnVncyBoYXZlIGJlZW4gaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzLgpOb3cgSSB0aGluayBJIGhhdmUgYSBjbGVhciBwbGFuLiBUaW1lIHRvIHByb2R1Y2UgYSBjb25jaXNlIHN1bW1hcnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzE5IDIwOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSRE1BX1JYRSYjMzQ7LAogICAgJiMzNDtOVk1FX1JETUEmIzM0OywKICAgICYjMzQ7TlZNRV9UQVJHRVRfUkRNQSYjMzQ7LAogICAgJiMzNDtTVU5SUENfWFBSVF9SRE1BJiMzNDssCiAgICAmIzM0O0NJRlNfU01CX0RJUkVDVCYjMzQ7LAogICAgJiMzNDtTTUJfU0VSVkVSX1NNQkRJUkVDVCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX1NSUCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX1NSUFQmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9JU0VSJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfSVNFUlQmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9SVFJTX0NMSUVOVCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX1JUUlNfU0VSVkVSJiMzNDssCiAgICAmIzM0O1JEU19SRE1BJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfSVBPSUImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudm1lX3JkbWFfZmluZF9nZXRfZGV2aWNlJiMzNDssCiAgICAmIzM0O252bWV0X3JkbWFfZmluZF9nZXRfZGV2aWNlJiMzNDssCiAgICAmIzM0O2Zyd3JfcXVlcnlfZGV2aWNlJiMzNDssCiAgICAmIzM0O3J4ZV9xcF9jaGtfY2FwJiMzNDssCiAgICAmIzM0O3J4ZV9zcnFfY2hrX2luaXQmIzM0OywKICAgICYjMzQ7c21iZGlyZWN0X2Nvbm5lY3Rpb25fY3JlYXRlX3FwJiMzNDssCiAgICAmIzM0O3Jkc19pYl9jbV9maWxsX2Nvbm5fcGFyYW0mIzM0OywKICAgICYjMzQ7c3ZjX3JkbWFfYWNjZXB0JiMzNDssCiAgICAmIzM0O3JwY3JkbWFfZXBfY3JlYXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgdGhlIHR5cGVzIG9mIHZhcmlvdXMgUkRNQSBkZXZpY2UgYXR0cmlidXRlcyBmcm9tIGBpbnRgIHRvIGB1MzJgIGFuZCB1cGRhdGVzIHRoZSBjb3JyZXNwb25kaW5nIGBtaW4oKWAgY2FsbHMgYW5kIGZvcm1hdCBzdHJpbmdzLiBJdCBhbHNvIGZpeGVzIHNvbWUgcG90ZW50aWFsIHVuZGVyZmxvd3MgaW4gY29ubmVjdGlvbiBzZXR1cCBmdW5jdGlvbnMuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHRoZSBjb3JlIFJETUEgbG9naWMgYW5kIHZhcmlvdXMgUkRNQSBVTFBzIChVcHBlciBMYXllciBQcm90b2NvbHMpIHdoaWNoIGNhbiBiZSB0ZXN0ZWQgdXNpbmcgdGhlIHNvZnR3YXJlIFJETUEgZHJpdmVyIChSWEUpLiBJdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSBubyByZWdyZXNzaW9ucyBvciBuZXcgaW50ZWdlciBvdmVyZmxvdy91bmRlcmZsb3cgYnVncyB3ZXJlIGludHJvZHVjZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JETUFfUlhFJiMzNDssCiAgICAmIzM0O05WTUVfUkRNQSYjMzQ7LAogICAgJiMzNDtOVk1FX1RBUkdFVF9SRE1BJiMzNDssCiAgICAmIzM0O1NVTlJQQ19YUFJUX1JETUEmIzM0OywKICAgICYjMzQ7Q0lGU19TTUJfRElSRUNUJiMzNDssCiAgICAmIzM0O1NNQl9TRVJWRVJfU01CRElSRUNUJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfU1JQJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfU1JQVCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX0lTRVImIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9JU0VSVCYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX1JUUlNfQ0xJRU5UJiMzNDssCiAgICAmIzM0O0lORklOSUJBTkRfUlRSU19TRVJWRVImIzM0OywKICAgICYjMzQ7UkRTX1JETUEmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9JUE9JQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O252bWVfcmRtYV9maW5kX2dldF9kZXZpY2UmIzM0OywKICAgICYjMzQ7bnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2UmIzM0OywKICAgICYjMzQ7ZnJ3cl9xdWVyeV9kZXZpY2UmIzM0OywKICAgICYjMzQ7cnhlX3FwX2Noa19jYXAmIzM0OywKICAgICYjMzQ7cnhlX3NycV9jaGtfaW5pdCYjMzQ7LAogICAgJiMzNDtzbWJkaXJlY3RfY29ubmVjdGlvbl9jcmVhdGVfcXAmIzM0OywKICAgICYjMzQ7cmRzX2liX2NtX2ZpbGxfY29ubl9wYXJhbSYjMzQ7LAogICAgJiMzNDtzdmNfcmRtYV9hY2NlcHQmIzM0OywKICAgICYjMzQ7cnBjcmRtYV9lcF9jcmVhdGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZXMgb2YgdmFyaW91cyBSRE1BIGRldmljZSBhdHRyaWJ1dGVzIGZyb20gYGludGAgdG8gYHUzMmAgYW5kIHVwZGF0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgYG1pbigpYCBjYWxscyBhbmQgZm9ybWF0IHN0cmluZ3MuIEl0IGFsc28gZml4ZXMgc29tZSBwb3RlbnRpYWwgdW5kZXJmbG93cyBpbiBjb25uZWN0aW9uIHNldHVwIGZ1bmN0aW9ucy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgUkRNQSBsb2dpYyBhbmQgdmFyaW91cyBSRE1BIFVMUHMgKFVwcGVyIExheWVyIFByb3RvY29scykgd2hpY2ggY2FuIGJlIHRlc3RlZCB1c2luZyB0aGUgc29mdHdhcmUgUkRNQSBkcml2ZXIgKFJYRSkuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyBpbnRlZ2VyIG92ZXJmbG93L3VuZGVyZmxvdyBidWdzIHdlcmUgaW50cm9kdWNlZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ2OjI0LjcwMTY4NzM3MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NTkwNDk4NTc5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSRE1BX1JYRVwiLFxuICAgIFwiTlZNRV9SRE1BXCIsXG4gICAgXCJOVk1FX1RBUkdFVF9SRE1BXCIsXG4gICAgXCJTVU5SUENfWFBSVF9SRE1BXCIsXG4gICAgXCJDSUZTX1NNQl9ESVJFQ1RcIixcbiAgICBcIlNNQl9TRVJWRVJfU01CRElSRUNUXCIsXG4gICAgXCJJTkZJTklCQU5EX1NSUFwiLFxuICAgIFwiSU5GSU5JQkFORF9TUlBUXCIsXG4gICAgXCJJTkZJTklCQU5EX0lTRVJcIixcbiAgICBcIklORklOSUJBTkRfSVNFUlRcIixcbiAgICBcIklORklOSUJBTkRfUlRSU19DTElFTlRcIixcbiAgICBcIklORklOSUJBTkRfUlRSU19TRVJWRVJcIixcbiAgICBcIlJEU19SRE1BXCIsXG4gICAgXCJJTkZJTklCQU5EX0lQT0lCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnZtZV9yZG1hX2ZpbmRfZ2V0X2RldmljZVwiLFxuICAgIFwibnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2VcIixcbiAgICBcImZyd3JfcXVlcnlfZGV2aWNlXCIsXG4gICAgXCJyeGVfcXBfY2hrX2NhcFwiLFxuICAgIFwicnhlX3NycV9jaGtfaW5pdFwiLFxuICAgIFwic21iZGlyZWN0X2Nvbm5lY3Rpb25fY3JlYXRlX3FwXCIsXG4gICAgXCJyZHNfaWJfY21fZmlsbF9jb25uX3BhcmFtXCIsXG4gICAgXCJzdmNfcmRtYV9hY2NlcHRcIixcbiAgICBcInJwY3JkbWFfZXBfY3JlYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZXMgb2YgdmFyaW91cyBSRE1BIGRldmljZSBhdHRyaWJ1dGVzIGZyb20gYGludGAgdG8gYHUzMmAgYW5kIHVwZGF0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgYG1pbigpYCBjYWxscyBhbmQgZm9ybWF0IHN0cmluZ3MuIEl0IGFsc28gZml4ZXMgc29tZSBwb3RlbnRpYWwgdW5kZXJmbG93cyBpbiBjb25uZWN0aW9uIHNldHVwIGZ1bmN0aW9ucy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgUkRNQSBsb2dpYyBhbmQgdmFyaW91cyBSRE1BIFVMUHMgKFVwcGVyIExheWVyIFByb3RvY29scykgd2hpY2ggY2FuIGJlIHRlc3RlZCB1c2luZyB0aGUgc29mdHdhcmUgUkRNQSBkcml2ZXIgKFJYRSkuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyBpbnRlZ2VyIG92ZXJmbG93L3VuZGVyZmxvdyBidWdzIHdlcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDY6MjQuNzAxNjkzMzUyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDY5MzA3NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAzMDI1MzkwYjA5MzU5ZTE5MDRkMjM5YTFiMjc0MTYxNDQ4NGJlNzI1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVuIDE5IDIwOjQ2OjIzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL2NxLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvY29yZS9jcS5jXFxuaW5kZXggM2Q3YjZjZGRkMTMxYzQuLmVlOTgxODhlNTdmYjVmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9jb3JlL2NxLmNcXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvY29yZS9jcS5jXFxuQEAgLTM5Myw4ICszOTMsNyBAQCBzdGF0aWMgaW50IGliX2FsbG9jX2NxcyhzdHJ1Y3QgaWJfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBucl9jcWVzLFxcbiBcXHQgKiBhIHJlYXNvbmFibGUgYmF0Y2ggc2l6ZSBzbyB0aGF0IHdlIGNhbiBzaGFyZSBDUXMgYmV0d2VlblxcbiBcXHQgKiBtdWx0aXBsZSB1c2VycyBpbnN0ZWFkIG9mIGFsbG9jYXRpbmcgYSBsYXJnZXIgbnVtYmVyIG9mIENRcy5cXG4gXFx0ICovXFxuLVxcdG5yX2NxZXMgPSBtaW5fdCh1bnNpZ25lZCBpbnQsIGRldi1cXHUwMDNlYXR0cnMubWF4X2NxZSxcXG4tXFx0XFx0XFx0bWF4KG5yX2NxZXMsIElCX01BWF9TSEFSRURfQ1FfU1opKTtcXG4rXFx0bnJfY3FlcyA9IG1pbihkZXYtXFx1MDAzZWF0dHJzLm1heF9jcWUsIG1heChucl9jcWVzLCBJQl9NQVhfU0hBUkVEX0NRX1NaKSk7XFxuIFxcdG5yX2NxcyA9IG1pbl90KHVuc2lnbmVkIGludCwgZGV2LVxcdTAwM2VudW1fY29tcF92ZWN0b3JzLCBudW1fb25saW5lX2NwdXMoKSk7XFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBucl9jcXM7IGkrKykge1xcbiBcXHRcXHRjcSA9IGliX2FsbG9jX2NxKGRldiwgTlVMTCwgbnJfY3FlcywgaSwgcG9sbF9jdHgpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWVkci92ZXJicy5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FlZHIvdmVyYnMuY1xcbmluZGV4IDY3OWFhNmYzYTYzYmM1Li5hODVhZDAxNzExMzQ4ZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWVkci92ZXJicy5jXFxuKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FlZHIvdmVyYnMuY1xcbkBAIC0xNTEsNyArMTUxLDcgQEAgaW50IHFlZHJfcXVlcnlfZGV2aWNlKHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LFxcbiBcXHRhdHRyLVxcdTAwM2VtYXhfcXBfaW5pdF9yZF9hdG9tID1cXG4gXFx0ICAgIDEgXFx1MDAzY1xcdTAwM2MgKGZscyhxYXR0ci1cXHUwMDNlbWF4X3FwX3JlcV9yZF9hdG9taWNfcmVzYykgLSAxKTtcXG4gXFx0YXR0ci1cXHUwMDNlbWF4X3FwX3JkX2F0b20gPVxcbi1cXHQgICAgbWluKDEgXFx1MDAzY1xcdTAwM2MgKGZscyhxYXR0ci1cXHUwMDNlbWF4X3FwX3Jlc3BfcmRfYXRvbWljX3Jlc2MpIC0gMSksXFxuK1xcdCAgICBtaW4oMVUgXFx1MDAzY1xcdTAwM2MgKGZscyhxYXR0ci1cXHUwMDNlbWF4X3FwX3Jlc3BfcmRfYXRvbWljX3Jlc2MpIC0gMSksXFxuIFxcdFxcdGF0dHItXFx1MDAzZW1heF9xcF9pbml0X3JkX2F0b20pO1xcbiBcXG4gXFx0YXR0ci1cXHUwMDNlbWF4X3NycSA9IHFhdHRyLVxcdTAwM2VtYXhfc3JxO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfcXAuY1xcbmluZGV4IGYzZGZmMWFlYTk2YWZjLi43YTA1MjlhMTc5OTJjOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jXFxuKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfcXAuY1xcbkBAIC02NywyNyArNjcsMjcgQEAgc3RhdGljIGludCByeGVfcXBfY2hrX2NhcChzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgaWJfcXBfY2FwICpjYXAsXFxuIFxcdFxcdFxcdCAgaW50IGhhc19zcnEpXFxuIHtcXG4gXFx0aWYgKGNhcC1cXHUwMDNlbWF4X3NlbmRfd3IgXFx1MDAzZSByeGUtXFx1MDAzZWF0dHIubWF4X3FwX3dyKSB7XFxuLVxcdFxcdHJ4ZV9kYmdfZGV2KHJ4ZSwgXFxcImludmFsaWQgc2VuZCB3ciA9ICV1IFxcdTAwM2UgJWRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdCBjYXAtXFx1MDAzZW1heF9zZW5kX3dyLCByeGUtXFx1MDAzZWF0dHIubWF4X3FwX3dyKTtcXG4rXFx0XFx0cnhlX2RiZ19kZXYocnhlLCBcXFwiaW52YWxpZCBzZW5kIHdyID0gJXUgXFx1MDAzZSAldVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0ICAgIGNhcC1cXHUwMDNlbWF4X3NlbmRfd3IsIHJ4ZS1cXHUwMDNlYXR0ci5tYXhfcXBfd3IpO1xcbiBcXHRcXHRnb3RvIGVycjE7XFxuIFxcdH1cXG4gXFxuIFxcdGlmIChjYXAtXFx1MDAzZW1heF9zZW5kX3NnZSBcXHUwMDNlIHJ4ZS1cXHUwMDNlYXR0ci5tYXhfc2VuZF9zZ2UpIHtcXG4tXFx0XFx0cnhlX2RiZ19kZXYocnhlLCBcXFwiaW52YWxpZCBzZW5kIHNnZSA9ICV1IFxcdTAwM2UgJWRcXFxcblxcXCIsXFxuLVxcdFxcdFxcdCBjYXAtXFx1MDAzZW1heF9zZW5kX3NnZSwgcnhlLVxcdTAwM2VhdHRyLm1heF9zZW5kX3NnZSk7XFxuK1xcdFxcdHJ4ZV9kYmdfZGV2KHJ4ZSwgXFxcImludmFsaWQgc2VuZCBzZ2UgPSAldSBcXHUwMDNlICV1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgICAgY2FwLVxcdTAwM2VtYXhfc2VuZF9zZ2UsIHJ4ZS1cXHUwMDNlYXR0ci5tYXhfc2VuZF9zZ2UpO1xcbiBcXHRcXHRnb3RvIGVycjE7XFxuIFxcdH1cXG4gXFxuIFxcdGlmICghaGFzX3NycSkge1xcbiBcXHRcXHRpZiAoY2FwLVxcdTAwM2VtYXhfcmVjdl93ciBcXHUwMDNlIHJ4ZS1cXHUwMDNlYXR0ci5tYXhfcXBfd3IpIHtcXG4tXFx0XFx0XFx0cnhlX2RiZ19kZXYocnhlLCBcXFwiaW52YWxpZCByZWN2IHdyID0gJXUgXFx1MDAzZSAlZFxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0IGNhcC1cXHUwMDNlbWF4X3JlY3Zfd3IsIHJ4ZS1cXHUwMDNlYXR0ci5tYXhfcXBfd3IpO1xcbitcXHRcXHRcXHRyeGVfZGJnX2RldihyeGUsIFxcXCJpbnZhbGlkIHJlY3Ygd3IgPSAldSBcXHUwMDNlICV1XFxcXG5cXFwiLFxcbitcXHRcXHRcXHRcXHQgICAgY2FwLVxcdTAwM2VtYXhfcmVjdl93ciwgcnhlLVxcdTAwM2VhdHRyLm1heF9xcF93cik7XFxuIFxcdFxcdFxcdGdvdG8gZXJyMTtcXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0aWYgKGNhcC1cXHUwMDNlbWF4X3JlY3Zfc2dlIFxcdTAwM2UgcnhlLVxcdTAwM2VhdHRyLm1heF9yZWN2X3NnZSkge1xcbi1cXHRcXHRcXHRyeGVfZGJnX2RldihyeGUsIFxcXCJpbnZhbGlkIHJlY3Ygc2dlID0gJXUgXFx1MDAzZSAlZFxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0IGNhcC1cXHUwMDNlbWF4X3JlY3Zfc2dlLCByeGUtXFx1MDAzZWF0dHIubWF4X3JlY3Zfc2dlKTtcXG4rXFx0XFx0XFx0cnhlX2RiZ19kZXYocnhlLCBcXFwiaW52YWxpZCByZWN2IHNnZSA9ICV1IFxcdTAwM2UgJXVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdCAgICBjYXAtXFx1MDAzZW1heF9yZWN2X3NnZSwgcnhlLVxcdTAwM2VhdHRyLm1heF9yZWN2X3NnZSk7XFxuIFxcdFxcdFxcdGdvdG8gZXJyMTtcXG4gXFx0XFx0fVxcbiBcXHR9XFxuQEAgLTUzNyw5ICs1MzcsOSBAQCBpbnQgcnhlX3FwX2Noa19hdHRyKHN0cnVjdCByeGVfZGV2ICpyeGUsIHN0cnVjdCByeGVfcXAgKnFwLFxcbiBcXG4gXFx0aWYgKG1hc2sgXFx1MDAyNiBJQl9RUF9NQVhfUVBfUkRfQVRPTUlDKSB7XFxuIFxcdFxcdGlmIChhdHRyLVxcdTAwM2VtYXhfcmRfYXRvbWljIFxcdTAwM2UgcnhlLVxcdTAwM2VhdHRyLm1heF9xcF9yZF9hdG9tKSB7XFxuLVxcdFxcdFxcdHJ4ZV9kYmdfcXAocXAsIFxcXCJpbnZhbGlkIG1heF9yZF9hdG9taWMgJWQgXFx1MDAzZSAlZFxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0IGF0dHItXFx1MDAzZW1heF9yZF9hdG9taWMsXFxuLVxcdFxcdFxcdFxcdCByeGUtXFx1MDAzZWF0dHIubWF4X3FwX3JkX2F0b20pO1xcbitcXHRcXHRcXHRyeGVfZGJnX3FwKHFwLCBcXFwiaW52YWxpZCBtYXhfcmRfYXRvbWljICV1IFxcdTAwM2UgJXVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdFxcdCAgIGF0dHItXFx1MDAzZW1heF9yZF9hdG9taWMsXFxuK1xcdFxcdFxcdFxcdCAgIHJ4ZS1cXHUwMDNlYXR0ci5tYXhfcXBfcmRfYXRvbSk7XFxuIFxcdFxcdFxcdGdvdG8gZXJyMTtcXG4gXFx0XFx0fVxcbiBcXHR9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3NycS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfc3JxLmNcXG5pbmRleCBjOWE3Y2QzODk1M2QzMS4uNzQ5MDRhNmZkZjJiMjEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfc3JxLmNcXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9zcnEuY1xcbkBAIC0xMyw4ICsxMyw4IEBAIGludCByeGVfc3JxX2Noa19pbml0KHN0cnVjdCByeGVfZGV2ICpyeGUsIHN0cnVjdCBpYl9zcnFfaW5pdF9hdHRyICppbml0KVxcbiBcXHRzdHJ1Y3QgaWJfc3JxX2F0dHIgKmF0dHIgPSBcXHUwMDI2aW5pdC1cXHUwMDNlYXR0cjtcXG4gXFxuIFxcdGlmIChhdHRyLVxcdTAwM2VtYXhfd3IgXFx1MDAzZSByeGUtXFx1MDAzZWF0dHIubWF4X3NycV93cikge1xcbi1cXHRcXHRyeGVfZGJnX2RldihyeGUsIFxcXCJtYXhfd3IoJWQpIFxcdTAwM2UgbWF4X3NycV93ciglZClcXFxcblxcXCIsXFxuLVxcdFxcdFxcdGF0dHItXFx1MDAzZW1heF93ciwgcnhlLVxcdTAwM2VhdHRyLm1heF9zcnFfd3IpO1xcbitcXHRcXHRyeGVfZGJnX2RldihyeGUsIFxcXCJtYXhfd3IoJXUpIFxcdTAwM2UgbWF4X3NycV93cigldSlcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgICBhdHRyLVxcdTAwM2VtYXhfd3IsIHJ4ZS1cXHUwMDNlYXR0ci5tYXhfc3JxX3dyKTtcXG4gXFx0XFx0Z290byBlcnIxO1xcbiBcXHR9XFxuIFxcbkBAIC0yNyw4ICsyNyw4IEBAIGludCByeGVfc3JxX2Noa19pbml0KHN0cnVjdCByeGVfZGV2ICpyeGUsIHN0cnVjdCBpYl9zcnFfaW5pdF9hdHRyICppbml0KVxcbiBcXHRcXHRhdHRyLVxcdTAwM2VtYXhfd3IgPSBSWEVfTUlOX1NSUV9XUjtcXG4gXFxuIFxcdGlmIChhdHRyLVxcdTAwM2VtYXhfc2dlIFxcdTAwM2UgcnhlLVxcdTAwM2VhdHRyLm1heF9zcnFfc2dlKSB7XFxuLVxcdFxcdHJ4ZV9kYmdfZGV2KHJ4ZSwgXFxcIm1heF9zZ2UoJWQpIFxcdTAwM2UgbWF4X3NycV9zZ2UoJWQpXFxcXG5cXFwiLFxcbi1cXHRcXHRcXHRhdHRyLVxcdTAwM2VtYXhfc2dlLCByeGUtXFx1MDAzZWF0dHIubWF4X3NycV9zZ2UpO1xcbitcXHRcXHRyeGVfZGJnX2RldihyeGUsIFxcXCJtYXhfc2dlKCV1KSBcXHUwMDNlIG1heF9zcnFfc2dlKCV1KVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0ICAgIGF0dHItXFx1MDAzZW1heF9zZ2UsIHJ4ZS1cXHUwMDNlYXR0ci5tYXhfc3JxX3NnZSk7XFxuIFxcdFxcdGdvdG8gZXJyMTtcXG4gXFx0fVxcbiBcXG5AQCAtMTA3LDggKzEwNyw4IEBAIGludCByeGVfc3JxX2Noa19hdHRyKHN0cnVjdCByeGVfZGV2ICpyeGUsIHN0cnVjdCByeGVfc3JxICpzcnEsXFxuIFxcbiBcXHRpZiAobWFzayBcXHUwMDI2IElCX1NSUV9NQVhfV1IpIHtcXG4gXFx0XFx0aWYgKGF0dHItXFx1MDAzZW1heF93ciBcXHUwMDNlIHJ4ZS1cXHUwMDNlYXR0ci5tYXhfc3JxX3dyKSB7XFxuLVxcdFxcdFxcdHJ4ZV9kYmdfc3JxKHNycSwgXFxcIm1heF93ciglZCkgXFx1MDAzZSBtYXhfc3JxX3dyKCVkKVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0YXR0ci1cXHUwMDNlbWF4X3dyLCByeGUtXFx1MDAzZWF0dHIubWF4X3NycV93cik7XFxuK1xcdFxcdFxcdHJ4ZV9kYmdfc3JxKHNycSwgXFxcIm1heF93cigldSkgXFx1MDAzZSBtYXhfc3JxX3dyKCV1KVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0ICAgIGF0dHItXFx1MDAzZW1heF93ciwgcnhlLVxcdTAwM2VhdHRyLm1heF9zcnFfd3IpO1xcbiBcXHRcXHRcXHRnb3RvIGVycjE7XFxuIFxcdFxcdH1cXG4gXFxuQEAgLTEyOSw4ICsxMjksOCBAQCBpbnQgcnhlX3NycV9jaGtfYXR0cihzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgcnhlX3NycSAqc3JxLFxcbiBcXG4gXFx0aWYgKG1hc2sgXFx1MDAyNiBJQl9TUlFfTElNSVQpIHtcXG4gXFx0XFx0aWYgKGF0dHItXFx1MDAzZXNycV9saW1pdCBcXHUwMDNlIHJ4ZS1cXHUwMDNlYXR0ci5tYXhfc3JxX3dyKSB7XFxuLVxcdFxcdFxcdHJ4ZV9kYmdfc3JxKHNycSwgXFxcInNycV9saW1pdCglZCkgXFx1MDAzZSBtYXhfc3JxX3dyKCVkKVxcXFxuXFxcIixcXG4tXFx0XFx0XFx0XFx0YXR0ci1cXHUwMDNlc3JxX2xpbWl0LCByeGUtXFx1MDAzZWF0dHIubWF4X3NycV93cik7XFxuK1xcdFxcdFxcdHJ4ZV9kYmdfc3JxKHNycSwgXFxcInNycV9saW1pdCgldSkgXFx1MDAzZSBtYXhfc3JxX3dyKCV1KVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0XFx0ICAgIGF0dHItXFx1MDAzZXNycV9saW1pdCwgcnhlLVxcdTAwM2VhdHRyLm1heF9zcnFfd3IpO1xcbiBcXHRcXHRcXHRnb3RvIGVycjE7XFxuIFxcdFxcdH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfY20uYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfY20uY1xcbmluZGV4IDU3ZmVjODhhMTYyOTBhLi5lZDA1OTI4OTgzODRkMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX2NtLmNcXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX2NtLmNcXG5AQCAtMTA3MSw4ICsxMDcxLDcgQEAgc3RhdGljIHN0cnVjdCBpYl9xcCAqaXBvaWJfY21fY3JlYXRlX3R4X3FwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpcG9pYl9cXG4gXFx0c3RydWN0IGliX3FwICp0eF9xcDtcXG4gXFxuIFxcdGlmIChkZXYtXFx1MDAzZWZlYXR1cmVzIFxcdTAwMjYgTkVUSUZfRl9TRylcXG4tXFx0XFx0YXR0ci5jYXAubWF4X3NlbmRfc2dlID0gbWluX3QodTMyLCBwcml2LVxcdTAwM2VjYS1cXHUwMDNlYXR0cnMubWF4X3NlbmRfc2dlLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgICBNQVhfU0tCX0ZSQUdTICsgMSk7XFxuK1xcdFxcdGF0dHIuY2FwLm1heF9zZW5kX3NnZSA9IG1pbihwcml2LVxcdTAwM2VjYS1cXHUwMDNlYXR0cnMubWF4X3NlbmRfc2dlLCBNQVhfU0tCX0ZSQUdTICsgMSk7XFxuIFxcbiBcXHR0eF9xcCA9IGliX2NyZWF0ZV9xcChwcml2LVxcdTAwM2VwZCwgXFx1MDAyNmF0dHIpO1xcbiBcXHR0eC1cXHUwMDNlbWF4X3NlbmRfc2dlID0gYXR0ci5jYXAubWF4X3NlbmRfc2dlO1xcbkBAIC0xNTgyLDcgKzE1ODEsOCBAQCBzdGF0aWMgdm9pZCBpcG9pYl9jbV9jcmVhdGVfc3JxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBtYXhfc2dlKVxcbiBpbnQgaXBvaWJfY21fZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4ge1xcbiBcXHRzdHJ1Y3QgaXBvaWJfZGV2X3ByaXYgKnByaXYgPSBpcG9pYl9wcml2KGRldik7XFxuLVxcdGludCBtYXhfc3JxX3NnZSwgaTtcXG4rXFx0dTMyIG1heF9zcnFfc2dlO1xcbitcXHRpbnQgaTtcXG4gXFx0dTggYWRkcjtcXG4gXFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZwcml2LVxcdTAwM2VjbS5wYXNzaXZlX2lkcyk7XFxuQEAgLTE2MDAsOSArMTYwMCw5IEBAIGludCBpcG9pYl9jbV9kZXZfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXG4gXFx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2cHJpdi1cXHUwMDNlY20uc2tiX3F1ZXVlKTtcXG4gXFxuLVxcdGlwb2liX2RiZyhwcml2LCBcXFwibWF4X3NycV9zZ2U9JWRcXFxcblxcXCIsIHByaXYtXFx1MDAzZWNhLVxcdTAwM2VhdHRycy5tYXhfc3JxX3NnZSk7XFxuK1xcdGlwb2liX2RiZyhwcml2LCBcXFwibWF4X3NycV9zZ2U9JXVcXFxcblxcXCIsIHByaXYtXFx1MDAzZWNhLVxcdTAwM2VhdHRycy5tYXhfc3JxX3NnZSk7XFxuIFxcbi1cXHRtYXhfc3JxX3NnZSA9IG1pbl90KGludCwgSVBPSUJfQ01fUlhfU0csIHByaXYtXFx1MDAzZWNhLVxcdTAwM2VhdHRycy5tYXhfc3JxX3NnZSk7XFxuK1xcdG1heF9zcnFfc2dlID0gbWluKHByaXYtXFx1MDAzZWNhLVxcdTAwM2VhdHRycy5tYXhfc3JxX3NnZSwgSVBPSUJfQ01fUlhfU0cpO1xcbiBcXHRpcG9pYl9jbV9jcmVhdGVfc3JxKGRldiwgbWF4X3NycV9zZ2UpO1xcbiBcXHRpZiAoaXBvaWJfY21faGFzX3NycShkZXYpKSB7XFxuIFxcdFxcdHByaXYtXFx1MDAzZWNtLm1heF9jbV9tdHUgPSBtYXhfc3JxX3NnZSAqIFBBR0VfU0laRSAtIDB4MTA7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfdmVyYnMuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfdmVyYnMuY1xcbmluZGV4IDNlZDFlYTU2NjY5MGRkLi4yNDkwNjk2YTFhYWJjOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX3ZlcmJzLmNcXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX3ZlcmJzLmNcXG5AQCAtMTQ3LDggKzE0Nyw3IEBAIGludCBpcG9pYl90cmFuc3BvcnRfZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGliX2RldmljZSAqY2EpXFxuIFxcdFxcdC5jYXAgPSB7XFxuIFxcdFxcdFxcdC5tYXhfc2VuZF93ciAgPSBpcG9pYl9zZW5kcV9zaXplLFxcbiBcXHRcXHRcXHQubWF4X3JlY3Zfd3IgID0gaXBvaWJfcmVjdnFfc2l6ZSxcXG4tXFx0XFx0XFx0Lm1heF9zZW5kX3NnZSA9IG1pbl90KHUzMiwgcHJpdi1cXHUwMDNlY2EtXFx1MDAzZWF0dHJzLm1heF9zZW5kX3NnZSxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICAgTUFYX1NLQl9GUkFHUyArIDEpLFxcbitcXHRcXHRcXHQubWF4X3NlbmRfc2dlID0gbWluKHByaXYtXFx1MDAzZWNhLVxcdTAwM2VhdHRycy5tYXhfc2VuZF9zZ2UsIE1BWF9TS0JfRlJBR1MgKyAxKSxcXG4gXFx0XFx0XFx0Lm1heF9yZWN2X3NnZSA9IElQT0lCX1VEX1JYX1NHXFxuIFxcdFxcdH0sXFxuIFxcdFxcdC5zcV9zaWdfdHlwZSA9IElCX1NJR05BTF9BTExfV1IsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlci9pc2VyX3ZlcmJzLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvaXNlcl92ZXJicy5jXFxuaW5kZXggZjAzYjNiYjNjMGM0YzEuLjU1ZmU2OGU1YjgzNzVlIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlci9pc2VyX3ZlcmJzLmNcXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvaXNlcl92ZXJicy5jXFxuQEAgLTI0NCw4ICsyNDQsNyBAQCBzdGF0aWMgaW50IGlzZXJfY3JlYXRlX2liX2Nvbm5fcmVzKHN0cnVjdCBpYl9jb25uICppYl9jb25uKVxcbiBcXHRcXHRtYXhfc2VuZF93ciA9IElTRVJfUVBfU0lHX01BWF9SRVFfRFRPUyArIDE7XFxuIFxcdGVsc2VcXG4gXFx0XFx0bWF4X3NlbmRfd3IgPSBJU0VSX1FQX01BWF9SRVFfRFRPUyArIDE7XFxuLVxcdG1heF9zZW5kX3dyID0gbWluX3QodW5zaWduZWQgaW50LCBtYXhfc2VuZF93cixcXG4tXFx0XFx0XFx0ICAgICh1bnNpZ25lZCBpbnQpaWJfZGV2LVxcdTAwM2VhdHRycy5tYXhfcXBfd3IpO1xcbitcXHRtYXhfc2VuZF93ciA9IG1pbihtYXhfc2VuZF93ciwgaWJfZGV2LVxcdTAwM2VhdHRycy5tYXhfcXBfd3IpO1xcbiBcXG4gXFx0Y3Ffc2l6ZSA9IG1heF9zZW5kX3dyICsgSVNFUl9RUF9NQVhfUkVDVl9EVE9TO1xcbiBcXHRpYl9jb25uLVxcdTAwM2VjcSA9IGliX2NxX3Bvb2xfZ2V0KGliX2RldiwgY3Ffc2l6ZSwgLTEsIElCX1BPTExfU09GVElSUSk7XFxuQEAgLTU4OSw3ICs1ODgsNyBAQCBzdGF0aWMgdm9pZCBpc2VyX3JvdXRlX2hhbmRsZXIoc3RydWN0IHJkbWFfY21faWQgKmNtYV9pZClcXG4gXFx0XFx0Z290byBmYWlsdXJlO1xcbiBcXG4gXFx0bWVtc2V0KFxcdTAwMjZjb25uX3BhcmFtLCAwLCBzaXplb2YgY29ubl9wYXJhbSk7XFxuLVxcdGNvbm5fcGFyYW0ucmVzcG9uZGVyX3Jlc291cmNlcyA9IGliX2Rldi1cXHUwMDNlYXR0cnMubWF4X3FwX3JkX2F0b207XFxuK1xcdGNvbm5fcGFyYW0ucmVzcG9uZGVyX3Jlc291cmNlcyA9IG1pbihpYl9kZXYtXFx1MDAzZWF0dHJzLm1heF9xcF9yZF9hdG9tLCBVOF9NQVgpO1xcbiBcXHRjb25uX3BhcmFtLmluaXRpYXRvcl9kZXB0aCA9IDE7XFxuIFxcdGNvbm5fcGFyYW0ucmV0cnlfY291bnQgPSA3O1xcbiBcXHRjb25uX3BhcmFtLnJucl9yZXRyeV9jb3VudCA9IDY7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvaWJfaXNlcnQuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvaWJfaXNlcnQuY1xcbmluZGV4IDEwMTVhNTFmNzUwYWY0Li40NjkxODQ1YmY4MTVmOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXJ0L2liX2lzZXJ0LmNcXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXJ0L2liX2lzZXJ0LmNcXG5AQCAtMjE0LDkgKzIxNCw5IEBAIGlzZXJ0X2NyZWF0ZV9kZXZpY2VfaWJfcmVzKHN0cnVjdCBpc2VydF9kZXZpY2UgKmRldmljZSlcXG4gXFx0c3RydWN0IGliX2RldmljZSAqaWJfZGV2ID0gZGV2aWNlLVxcdTAwM2VpYl9kZXZpY2U7XFxuIFxcdGludCByZXQ7XFxuIFxcbi1cXHRpc2VydF9kYmcoXFxcImRldmF0dHItXFx1MDAzZW1heF9zZW5kX3NnZTogJWQgZGV2YXR0ci1cXHUwMDNlbWF4X3JlY3Zfc2dlICVkXFxcXG5cXFwiLFxcbitcXHRpc2VydF9kYmcoXFxcImRldmF0dHItXFx1MDAzZW1heF9zZW5kX3NnZTogJXUgZGV2YXR0ci1cXHUwMDNlbWF4X3JlY3Zfc2dlICV1XFxcXG5cXFwiLFxcbiBcXHRcXHQgIGliX2Rldi1cXHUwMDNlYXR0cnMubWF4X3NlbmRfc2dlLCBpYl9kZXYtXFx1MDAzZWF0dHJzLm1heF9yZWN2X3NnZSk7XFxuLVxcdGlzZXJ0X2RiZyhcXFwiZGV2YXR0ci1cXHUwMDNlbWF4X3NnZV9yZDogJWRcXFxcblxcXCIsIGliX2Rldi1cXHUwMDNlYXR0cnMubWF4X3NnZV9yZCk7XFxuK1xcdGlzZXJ0X2RiZyhcXFwiZGV2YXR0ci1cXHUwMDNlbWF4X3NnZV9yZDogJXVcXFxcblxcXCIsIGliX2Rldi1cXHUwMDNlYXR0cnMubWF4X3NnZV9yZCk7XFxuIFxcbiBcXHRkZXZpY2UtXFx1MDAzZXBkID0gaWJfYWxsb2NfcGQoaWJfZGV2LCAwKTtcXG4gXFx0aWYgKElTX0VSUihkZXZpY2UtXFx1MDAzZXBkKSkge1xcbkBAIC0zODEsOCArMzgxLDcgQEAgaXNlcnRfc2V0X25lZ29fcGFyYW1zKHN0cnVjdCBpc2VydF9jb25uICppc2VydF9jb25uLFxcbiBcXHRzdHJ1Y3QgaWJfZGV2aWNlX2F0dHIgKmF0dHIgPSBcXHUwMDI2aXNlcnRfY29ubi1cXHUwMDNlZGV2aWNlLVxcdTAwM2VpYl9kZXZpY2UtXFx1MDAzZWF0dHJzO1xcbiBcXG4gXFx0LyogU2V0IG1heCBpbmZsaWdodCBSRE1BIFJFQUQgcmVxdWVzdHMgKi9cXG4tXFx0aXNlcnRfY29ubi1cXHUwMDNlaW5pdGlhdG9yX2RlcHRoID0gbWluX3QodTgsIHBhcmFtLVxcdTAwM2Vpbml0aWF0b3JfZGVwdGgsXFxuLVxcdFxcdFxcdFxcdGF0dHItXFx1MDAzZW1heF9xcF9pbml0X3JkX2F0b20pO1xcbitcXHRpc2VydF9jb25uLVxcdTAwM2Vpbml0aWF0b3JfZGVwdGggPSBtaW4ocGFyYW0tXFx1MDAzZWluaXRpYXRvcl9kZXB0aCwgYXR0ci1cXHUwMDNlbWF4X3FwX2luaXRfcmRfYXRvbSk7XFxuIFxcdGlzZXJ0X2RiZyhcXFwiVXNpbmcgaW5pdGlhdG9yX2RlcHRoOiAldVxcXFxuXFxcIiwgaXNlcnRfY29ubi1cXHUwMDNlaW5pdGlhdG9yX2RlcHRoKTtcXG4gXFxuIFxcdGlmIChwYXJhbS1cXHUwMDNlcHJpdmF0ZV9kYXRhKSB7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9ydHJzLWNsdC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtY2x0LmNcXG5pbmRleCBlMzUxNTUyNzMzZGYyMy4uODBiMDg2OTdmOTZiNTkgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtY2x0LmNcXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvcnRycy1jbHQuY1xcbkBAIC0xNjgxLDggKzE2ODEsNyBAQCBzdGF0aWMgaW50IGNyZWF0ZV9jb25fY3FfcXAoc3RydWN0IHJ0cnNfY2x0X2NvbiAqY29uKVxcbiBcXHRcXHQgKiArIDIgZm9yIGRyYWluIGFuZCBoZWFydGJlYXRcXG4gXFx0XFx0ICogaW4gY2FzZSBxcCBnZXRzIGludG8gZXJyb3Igc3RhdGUuXFxuIFxcdFxcdCAqL1xcbi1cXHRcXHRtYXhfc2VuZF93ciA9XFxuLVxcdFxcdFxcdG1pbl90KGludCwgd3JfbGltaXQsIFNFUlZJQ0VfQ09OX1FVRVVFX0RFUFRIICogMiArIDIpO1xcbitcXHRcXHRtYXhfc2VuZF93ciA9IG1pbih3cl9saW1pdCwgU0VSVklDRV9DT05fUVVFVUVfREVQVEggKiAyICsgMik7XFxuIFxcdFxcdG1heF9yZWN2X3dyID0gbWF4X3NlbmRfd3I7XFxuIFxcdH0gZWxzZSB7XFxuIFxcdFxcdC8qXFxuQEAgLTE2OTgsMTEgKzE2OTcsOSBAQCBzdGF0aWMgaW50IGNyZWF0ZV9jb25fY3FfcXAoc3RydWN0IHJ0cnNfY2x0X2NvbiAqY29uKVxcbiBcXHRcXHR3cl9saW1pdCA9IGNsdF9wYXRoLVxcdTAwM2VzLmRldi1cXHUwMDNlaWJfZGV2LVxcdTAwM2VhdHRycy5tYXhfcXBfd3I7XFxuIFxcdFxcdC8qIFNoYXJlZCBiZXR3ZWVuIGNvbm5lY3Rpb25zICovXFxuIFxcdFxcdGNsdF9wYXRoLVxcdTAwM2VzLmRldl9yZWYrKztcXG4tXFx0XFx0bWF4X3NlbmRfd3IgPSBtaW5fdChpbnQsIHdyX2xpbWl0LFxcbi1cXHRcXHRcXHQgICAgICAvKiBRRCAqIChSRVEgKyBSU1AgKyBGUiBSRUdTIG9yIElOVlMpICsgZHJhaW4gKi9cXG4tXFx0XFx0XFx0ICAgICAgY2x0X3BhdGgtXFx1MDAzZXF1ZXVlX2RlcHRoICogNCArIDEpO1xcbi1cXHRcXHRtYXhfcmVjdl93ciA9IG1pbl90KGludCwgd3JfbGltaXQsXFxuLVxcdFxcdFxcdCAgICAgIGNsdF9wYXRoLVxcdTAwM2VxdWV1ZV9kZXB0aCAqIDMgKyAxKTtcXG4rXFx0XFx0LyogUUQgKiAoUkVRICsgUlNQICsgRlIgUkVHUyBvciBJTlZTKSArIGRyYWluICovXFxuK1xcdFxcdG1heF9zZW5kX3dyID0gbWluKHdyX2xpbWl0LCBjbHRfcGF0aC1cXHUwMDNlcXVldWVfZGVwdGggKiA0ICsgMSk7XFxuK1xcdFxcdG1heF9yZWN2X3dyID0gbWluKHdyX2xpbWl0LCBjbHRfcGF0aC1cXHUwMDNlcXVldWVfZGVwdGggKiAzICsgMSk7XFxuIFxcdFxcdG1heF9zZW5kX3NnZSA9IDI7XFxuIFxcdH1cXG4gXFx0YXRvbWljX3NldChcXHUwMDI2Y29uLVxcdTAwM2VjLnNxX3dyX2F2YWlsLCBtYXhfc2VuZF93cik7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9ydHJzLXNydi5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtc3J2LmNcXG5pbmRleCA2NDgyYWQ4NTliZDEwOC4uZjVhNjg5MDIzNWJjYzQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtc3J2LmNcXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvcnRycy1zcnYuY1xcbkBAIC0xNzMxLDIxICsxNzMxLDE2IEBAIHN0YXRpYyBpbnQgY3JlYXRlX2NvbihzdHJ1Y3QgcnRyc19zcnZfcGF0aCAqc3J2X3BhdGgsXFxuIFxcdFxcdCAqIEFsbCByZWNlaXZlIGFuZCBhbGwgc2VuZCAoZWFjaCByZXF1aXJpbmcgaW52YWxpZGF0ZSlcXG4gXFx0XFx0ICogKyAyIGZvciBkcmFpbiBhbmQgaGVhcnRiZWF0XFxuIFxcdFxcdCAqL1xcbi1cXHRcXHRtYXhfc2VuZF93ciA9IG1pbl90KGludCwgd3JfbGltaXQsXFxuLVxcdFxcdFxcdFxcdCAgICBTRVJWSUNFX0NPTl9RVUVVRV9ERVBUSCAqIDIgKyAyKTtcXG4rXFx0XFx0bWF4X3NlbmRfd3IgPSBtaW4od3JfbGltaXQsIFNFUlZJQ0VfQ09OX1FVRVVFX0RFUFRIICogMiArIDIpO1xcbiBcXHRcXHRtYXhfcmVjdl93ciA9IG1heF9zZW5kX3dyO1xcbiBcXHRcXHRzLVxcdTAwM2VzaWduYWxfaW50ZXJ2YWwgPSBtaW5fbm90X3plcm8oc3J2LVxcdTAwM2VxdWV1ZV9kZXB0aCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAoc2l6ZV90KVNFUlZJQ0VfQ09OX1FVRVVFX0RFUFRIKTtcXG4gXFx0fSBlbHNlIHtcXG4gXFx0XFx0Lyogd2hlbiBhbHdheXNfaW52bGFpZGF0ZSBlbmFsYmVkLCB3ZSBuZWVkIGxpbnYrcmludittcitpbW0gKi9cXG4gXFx0XFx0aWYgKGFsd2F5c19pbnZhbGlkYXRlKVxcbi1cXHRcXHRcXHRtYXhfc2VuZF93ciA9XFxuLVxcdFxcdFxcdFxcdG1pbl90KGludCwgd3JfbGltaXQsXFxuLVxcdFxcdFxcdFxcdCAgICAgIHNydi1cXHUwMDNlcXVldWVfZGVwdGggKiAoMSArIDQpICsgMSk7XFxuK1xcdFxcdFxcdG1heF9zZW5kX3dyID0gbWluKHdyX2xpbWl0LCBzcnYtXFx1MDAzZXF1ZXVlX2RlcHRoICogKDEgKyA0KSArIDEpO1xcbiBcXHRcXHRlbHNlXFxuLVxcdFxcdFxcdG1heF9zZW5kX3dyID1cXG4tXFx0XFx0XFx0XFx0bWluX3QoaW50LCB3cl9saW1pdCxcXG4tXFx0XFx0XFx0XFx0ICAgICAgc3J2LVxcdTAwM2VxdWV1ZV9kZXB0aCAqICgxICsgMikgKyAxKTtcXG4rXFx0XFx0XFx0bWF4X3NlbmRfd3IgPSBtaW4od3JfbGltaXQsIHNydi1cXHUwMDNlcXVldWVfZGVwdGggKiAoMSArIDIpICsgMSk7XFxuIFxcbiBcXHRcXHRtYXhfcmVjdl93ciA9IHNydi1cXHUwMDNlcXVldWVfZGVwdGggKyAxO1xcbiBcXHR9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL2liX3NycC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnAvaWJfc3JwLmNcXG5pbmRleCBhY2JkNzg3ZGUyNjViNS4uMGNhZWJiYzI4MTBmZjMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnAvaWJfc3JwLmNcXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycC9pYl9zcnAuY1xcbkBAIC01NTcsNyArNTU3LDcgQEAgc3RhdGljIGludCBzcnBfY3JlYXRlX2NoX2liKHN0cnVjdCBzcnBfcmRtYV9jaCAqY2gpXFxuIFxcdGluaXRfYXR0ci1cXHUwMDNlY2FwLm1heF9zZW5kX3dyICAgICA9IG0gKiB0YXJnZXQtXFx1MDAzZXF1ZXVlX3NpemU7XFxuIFxcdGluaXRfYXR0ci1cXHUwMDNlY2FwLm1heF9yZWN2X3dyICAgICA9IHRhcmdldC1cXHUwMDNlcXVldWVfc2l6ZSArIDE7XFxuIFxcdGluaXRfYXR0ci1cXHUwMDNlY2FwLm1heF9yZWN2X3NnZSAgICA9IDE7XFxuLVxcdGluaXRfYXR0ci1cXHUwMDNlY2FwLm1heF9zZW5kX3NnZSAgICA9IG1pbihTUlBfTUFYX1NHRSwgYXR0ci1cXHUwMDNlbWF4X3NlbmRfc2dlKTtcXG4rXFx0aW5pdF9hdHRyLVxcdTAwM2VjYXAubWF4X3NlbmRfc2dlICAgID0gbWluKGF0dHItXFx1MDAzZW1heF9zZW5kX3NnZSwgU1JQX01BWF9TR0UpO1xcbiBcXHRpbml0X2F0dHItXFx1MDAzZXNxX3NpZ190eXBlICAgICAgICAgPSBJQl9TSUdOQUxfUkVRX1dSO1xcbiBcXHRpbml0X2F0dHItXFx1MDAzZXFwX3R5cGUgICAgICAgICAgICAgPSBJQl9RUFRfUkM7XFxuIFxcdGluaXRfYXR0ci1cXHUwMDNlc2VuZF9jcSAgICAgICAgICAgICA9IHNlbmRfY3E7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwdC9pYl9zcnB0LmMgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycHQvaWJfc3JwdC5jXFxuaW5kZXggOWFlYzVkODAxMTdmMWYuLmE0ZTRmZWJhNGEwMjUzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwdC9pYl9zcnB0LmNcXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycHQvaWJfc3JwdC5jXFxuQEAgLTc3LDggKzc3LDggQEAgbW9kdWxlX3BhcmFtKHNycF9tYXhfcmVxX3NpemUsIGludCwgMDQ0NCk7XFxuIE1PRFVMRV9QQVJNX0RFU0Moc3JwX21heF9yZXFfc2l6ZSxcXG4gXFx0XFx0IFxcXCJNYXhpbXVtIHNpemUgb2YgU1JQIHJlcXVlc3QgbWVzc2FnZXMgaW4gYnl0ZXMuXFxcIik7XFxuIFxcbi1zdGF0aWMgaW50IHNycHRfc3JxX3NpemUgPSBERUZBVUxUX1NSUFRfU1JRX1NJWkU7XFxuLW1vZHVsZV9wYXJhbShzcnB0X3NycV9zaXplLCBpbnQsIDA0NDQpO1xcbitzdGF0aWMgdW5zaWduZWQgaW50IHNycHRfc3JxX3NpemUgPSBERUZBVUxUX1NSUFRfU1JRX1NJWkU7XFxuK21vZHVsZV9wYXJhbShzcnB0X3NycV9zaXplLCB1aW50LCAwNDQ0KTtcXG4gTU9EVUxFX1BBUk1fREVTQyhzcnB0X3NycV9zaXplLFxcbiBcXHRcXHQgXFxcIlNoYXJlZCByZWNlaXZlIHF1ZXVlIChTUlEpIHNpemUuXFxcIik7XFxuIFxcbkBAIC00MDUsOCArNDA1LDcgQEAgc3RhdGljIHZvaWQgc3JwdF9nZXRfaW9jKHN0cnVjdCBzcnB0X3BvcnQgKnNwb3J0LCB1MzIgc2xvdCxcXG4gXFx0aWYgKHNkZXYtXFx1MDAzZXVzZV9zcnEpXFxuIFxcdFxcdHNlbmRfcXVldWVfZGVwdGggPSBzZGV2LVxcdTAwM2VzcnFfc2l6ZTtcXG4gXFx0ZWxzZVxcbi1cXHRcXHRzZW5kX3F1ZXVlX2RlcHRoID0gbWluKE1BWF9TUlBUX1JRX1NJWkUsXFxuLVxcdFxcdFxcdFxcdCAgICAgICBzZGV2LVxcdTAwM2VkZXZpY2UtXFx1MDAzZWF0dHJzLm1heF9xcF93cik7XFxuK1xcdFxcdHNlbmRfcXVldWVfZGVwdGggPSBtaW4oc2Rldi1cXHUwMDNlZGV2aWNlLVxcdTAwM2VhdHRycy5tYXhfcXBfd3IsIE1BWF9TUlBUX1JRX1NJWkUpO1xcbiBcXG4gXFx0bWVtc2V0KGlvY3AsIDAsIHNpemVvZigqaW9jcCkpO1xcbiBcXHRzdHJjcHkoaW9jcC1cXHUwMDNlaWRfc3RyaW5nLCBTUlBUX0lEX1NUUklORyk7XFxuQEAgLTE4NTAsNyArMTg0OSw3IEBAIHN0YXRpYyBpbnQgc3JwdF9jcmVhdGVfY2hfaWIoc3RydWN0IHNycHRfcmRtYV9jaCAqY2gpXFxuIFxcdHN0cnVjdCBzcnB0X3BvcnQgKnNwb3J0ID0gY2gtXFx1MDAzZXNwb3J0O1xcbiBcXHRzdHJ1Y3Qgc3JwdF9kZXZpY2UgKnNkZXYgPSBzcG9ydC1cXHUwMDNlc2RldjtcXG4gXFx0Y29uc3Qgc3RydWN0IGliX2RldmljZV9hdHRyICphdHRycyA9IFxcdTAwMjZzZGV2LVxcdTAwM2VkZXZpY2UtXFx1MDAzZWF0dHJzO1xcbi1cXHRpbnQgc3Ffc2l6ZSA9IHNwb3J0LVxcdTAwM2Vwb3J0X2F0dHJpYi5zcnBfc3Ffc2l6ZTtcXG4rXFx0dTMyIHNxX3NpemUgPSBzcG9ydC1cXHUwMDNlcG9ydF9hdHRyaWIuc3JwX3NxX3NpemU7XFxuIFxcdGludCBpLCByZXQ7XFxuIFxcbiBcXHRXQVJOX09OKGNoLVxcdTAwM2VycV9zaXplIFxcdTAwM2MgMSk7XFxuQEAgLTE5MTEsMTMgKzE5MTAsMTMgQEAgc3RhdGljIGludCBzcnB0X2NyZWF0ZV9jaF9pYihzdHJ1Y3Qgc3JwdF9yZG1hX2NoICpjaClcXG4gXFx0XFx0Ym9vbCByZXRyeSA9IHNxX3NpemUgXFx1MDAzZSBNSU5fU1JQVF9TUV9TSVpFO1xcbiBcXG4gXFx0XFx0aWYgKHJldHJ5KSB7XFxuLVxcdFxcdFxcdHByX2RlYnVnKFxcXCJmYWlsZWQgdG8gY3JlYXRlIHF1ZXVlIHBhaXIgd2l0aCBzcV9zaXplID0gJWQgKCVkKSAtIHJldHJ5aW5nXFxcXG5cXFwiLFxcbitcXHRcXHRcXHRwcl9kZWJ1ZyhcXFwiZmFpbGVkIHRvIGNyZWF0ZSBxdWV1ZSBwYWlyIHdpdGggc3Ffc2l6ZSA9ICV1ICglZCkgLSByZXRyeWluZ1xcXFxuXFxcIixcXG4gXFx0XFx0XFx0XFx0IHNxX3NpemUsIHJldCk7XFxuIFxcdFxcdFxcdGliX2NxX3Bvb2xfcHV0KGNoLVxcdTAwM2VjcSwgY2gtXFx1MDAzZWNxX3NpemUpO1xcbiBcXHRcXHRcXHRzcV9zaXplID0gbWF4KHNxX3NpemUgLyAyLCBNSU5fU1JQVF9TUV9TSVpFKTtcXG4gXFx0XFx0XFx0Z290byByZXRyeTtcXG4gXFx0XFx0fSBlbHNlIHtcXG4tXFx0XFx0XFx0cHJfZXJyKFxcXCJmYWlsZWQgdG8gY3JlYXRlIHF1ZXVlIHBhaXIgd2l0aCBzcV9zaXplID0gJWQgKCVkKVxcXFxuXFxcIixcXG4rXFx0XFx0XFx0cHJfZXJyKFxcXCJmYWlsZWQgdG8gY3JlYXRlIHF1ZXVlIHBhaXIgd2l0aCBzcV9zaXplID0gJXUgKCVkKVxcXFxuXFxcIixcXG4gXFx0XFx0XFx0ICAgICAgIHNxX3NpemUsIHJldCk7XFxuIFxcdFxcdFxcdGdvdG8gZXJyX2Rlc3Ryb3lfY3E7XFxuIFxcdFxcdH1cXG5AQCAtMTkyNSw3ICsxOTI0LDcgQEAgc3RhdGljIGludCBzcnB0X2NyZWF0ZV9jaF9pYihzdHJ1Y3Qgc3JwdF9yZG1hX2NoICpjaClcXG4gXFxuIFxcdGF0b21pY19zZXQoXFx1MDAyNmNoLVxcdTAwM2VzcV93cl9hdmFpbCwgcXBfaW5pdC1cXHUwMDNlY2FwLm1heF9zZW5kX3dyKTtcXG4gXFxuLVxcdHByX2RlYnVnKFxcXCIlczogbWF4X2NxZT0gJWQgbWF4X3NnZT0gJWQgc3Ffc2l6ZSA9ICVkIGNoPSAlcFxcXFxuXFxcIixcXG4rXFx0cHJfZGVidWcoXFxcIiVzOiBtYXhfY3FlPSAlZCBtYXhfc2dlPSAlZCBzcV9zaXplID0gJXUgY2g9ICVwXFxcXG5cXFwiLFxcbiBcXHRcXHQgX19mdW5jX18sIGNoLVxcdTAwM2VjcS1cXHUwMDNlY3FlLCBxcF9pbml0LVxcdTAwM2VjYXAubWF4X3NlbmRfc2dlLFxcbiBcXHRcXHQgcXBfaW5pdC1cXHUwMDNlY2FwLm1heF9zZW5kX3dyLCBjaCk7XFxuIFxcbkBAIC0yMjk4LDcgKzIyOTcsNyBAQCBzdGF0aWMgaW50IHNycHRfY21fcmVxX3JlY3Yoc3RydWN0IHNycHRfZGV2aWNlICpjb25zdCBzZGV2LFxcbiBcXHQgKiBkZXB0aCB0byBhdm9pZCB0aGF0IHRoZSBpbml0aWF0b3IgZHJpdmVyIGhhcyB0byByZXBvcnQgUVVFVUVfRlVMTFxcbiBcXHQgKiB0byB0aGUgU0NTSSBtaWQtbGF5ZXIuXFxuIFxcdCAqL1xcbi1cXHRjaC1cXHUwMDNlcnFfc2l6ZSA9IG1pbihNQVhfU1JQVF9SUV9TSVpFLCBzZGV2LVxcdTAwM2VkZXZpY2UtXFx1MDAzZWF0dHJzLm1heF9xcF93cik7XFxuK1xcdGNoLVxcdTAwM2VycV9zaXplID0gbWluKHNkZXYtXFx1MDAzZWRldmljZS1cXHUwMDNlYXR0cnMubWF4X3FwX3dyLCBNQVhfU1JQVF9SUV9TSVpFKTtcXG4gXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmNoLVxcdTAwM2VzcGlubG9jayk7XFxuIFxcdGNoLVxcdTAwM2VzdGF0ZSA9IENIX0NPTk5FQ1RJTkc7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZjaC1cXHUwMDNlY21kX3dhaXRfbGlzdCk7XFxuQEAgLTMxMzYsNyArMzEzNSw3IEBAIHN0YXRpYyBpbnQgc3JwdF9hbGxvY19zcnEoc3RydWN0IHNycHRfZGV2aWNlICpzZGV2KVxcbiBcXHRcXHRyZXR1cm4gUFRSX0VSUihzcnEpO1xcbiBcXHR9XFxuIFxcbi1cXHRwcl9kZWJ1ZyhcXFwiY3JlYXRlIFNSUSAjd3I9ICVkIG1heF9hbGxvdz0lZCBkZXY9ICVzXFxcXG5cXFwiLCBzZGV2LVxcdTAwM2VzcnFfc2l6ZSxcXG4rXFx0cHJfZGVidWcoXFxcImNyZWF0ZSBTUlEgI3dyPSAlZCBtYXhfYWxsb3c9JXUgZGV2PSAlc1xcXFxuXFxcIiwgc2Rldi1cXHUwMDNlc3JxX3NpemUsXFxuIFxcdFxcdCBzZGV2LVxcdTAwM2VkZXZpY2UtXFx1MDAzZWF0dHJzLm1heF9zcnFfd3IsIGRldl9uYW1lKFxcdTAwMjZkZXZpY2UtXFx1MDAzZWRldikpO1xcbiBcXG4gXFx0c2Rldi1cXHUwMDNlcmVxX2J1Zl9jYWNoZSA9IHNycHRfY2FjaGVfZ2V0KHNycF9tYXhfcmVxX3NpemUpO1xcbkBAIC0zOTUxLDcgKzM5NTAsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBzcnB0X2luaXRfbW9kdWxlKHZvaWQpXFxuIFxcbiBcXHRpZiAoc3JwdF9zcnFfc2l6ZSBcXHUwMDNjIE1JTl9TUlBUX1NSUV9TSVpFXFxuIFxcdCAgICB8fCBzcnB0X3NycV9zaXplIFxcdTAwM2UgTUFYX1NSUFRfU1JRX1NJWkUpIHtcXG4tXFx0XFx0cHJfZXJyKFxcXCJpbnZhbGlkIHZhbHVlICVkIGZvciBrZXJuZWwgbW9kdWxlIHBhcmFtZXRlciBzcnB0X3NycV9zaXplIC0tIG11c3QgYmUgaW4gdGhlIHJhbmdlIFslZC4uJWRdLlxcXFxuXFxcIixcXG4rXFx0XFx0cHJfZXJyKFxcXCJpbnZhbGlkIHZhbHVlICV1IGZvciBrZXJuZWwgbW9kdWxlIHBhcmFtZXRlciBzcnB0X3NycV9zaXplIC0tIG11c3QgYmUgaW4gdGhlIHJhbmdlIFslZC4uJWRdLlxcXFxuXFxcIixcXG4gXFx0XFx0ICAgICAgIHNycHRfc3JxX3NpemUsIE1JTl9TUlBUX1NSUV9TSVpFLCBNQVhfU1JQVF9TUlFfU0laRSk7XFxuIFxcdFxcdGdvdG8gb3V0O1xcbiBcXHR9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS9ob3N0L3JkbWEuYyBiL2RyaXZlcnMvbnZtZS9ob3N0L3JkbWEuY1xcbmluZGV4IDY5MDllMzU0Mjc5NDI3Li41NmNkMjI4YWYxZDU3YSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL252bWUvaG9zdC9yZG1hLmNcXG4rKysgYi9kcml2ZXJzL252bWUvaG9zdC9yZG1hLmNcXG5AQCAtMzk0LDggKzM5NCwxMCBAQCBudm1lX3JkbWFfZmluZF9nZXRfZGV2aWNlKHN0cnVjdCByZG1hX2NtX2lkICpjbV9pZClcXG4gXFx0XFx0Z290byBvdXRfZnJlZV9wZDtcXG4gXFx0fVxcbiBcXG4tXFx0bmRldi1cXHUwMDNlbnVtX2lubGluZV9zZWdtZW50cyA9IG1pbihOVk1FX1JETUFfTUFYX0lOTElORV9TRUdNRU5UUyxcXG4tXFx0XFx0XFx0XFx0XFx0bmRldi1cXHUwMDNlZGV2LVxcdTAwM2VhdHRycy5tYXhfc2VuZF9zZ2UgLSAxKTtcXG4rXFx0bmRldi1cXHUwMDNlbnVtX2lubGluZV9zZWdtZW50cyA9IG5kZXYtXFx1MDAzZWRldi1cXHUwMDNlYXR0cnMubWF4X3NlbmRfc2dlO1xcbitcXHRpZiAobmRldi1cXHUwMDNlbnVtX2lubGluZV9zZWdtZW50cylcXG4rXFx0XFx0bmRldi1cXHUwMDNlbnVtX2lubGluZV9zZWdtZW50cy0tO1xcbitcXHRuZGV2LVxcdTAwM2VudW1faW5saW5lX3NlZ21lbnRzID0gbWluKG5kZXYtXFx1MDAzZW51bV9pbmxpbmVfc2VnbWVudHMsIE5WTUVfUkRNQV9NQVhfSU5MSU5FX1NFR01FTlRTKTtcXG4gXFx0bGlzdF9hZGQoXFx1MDAyNm5kZXYtXFx1MDAzZWVudHJ5LCBcXHUwMDI2ZGV2aWNlX2xpc3QpO1xcbiBvdXRfdW5sb2NrOlxcbiBcXHRtdXRleF91bmxvY2soXFx1MDAyNmRldmljZV9saXN0X211dGV4KTtcXG5AQCAtMTg0Nyw3ICsxODQ5LDcgQEAgc3RhdGljIGludCBudm1lX3JkbWFfcm91dGVfcmVzb2x2ZWQoc3RydWN0IG52bWVfcmRtYV9xdWV1ZSAqcXVldWUpXFxuIFxcdHBhcmFtLnFwX251bSA9IHF1ZXVlLVxcdTAwM2VxcC1cXHUwMDNlcXBfbnVtO1xcbiBcXHRwYXJhbS5mbG93X2NvbnRyb2wgPSAxO1xcbiBcXG4tXFx0cGFyYW0ucmVzcG9uZGVyX3Jlc291cmNlcyA9IHF1ZXVlLVxcdTAwM2VkZXZpY2UtXFx1MDAzZWRldi1cXHUwMDNlYXR0cnMubWF4X3FwX3JkX2F0b207XFxuK1xcdHBhcmFtLnJlc3BvbmRlcl9yZXNvdXJjZXMgPSBtaW4ocXVldWUtXFx1MDAzZWRldmljZS1cXHUwMDNlZGV2LVxcdTAwM2VhdHRycy5tYXhfcXBfcmRfYXRvbSwgVThfTUFYKTtcXG4gXFx0LyogbWF4aW11bSByZXRyeSBjb3VudCAqL1xcbiBcXHRwYXJhbS5yZXRyeV9jb3VudCA9IDc7XFxuIFxcdHBhcmFtLnJucl9yZXRyeV9jb3VudCA9IDc7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS90YXJnZXQvcmRtYS5jIGIvZHJpdmVycy9udm1lL3RhcmdldC9yZG1hLmNcXG5pbmRleCBhYzI2ZjRmNzc0YzRkZS4uMWMzMzJkNjYyMjJhMGIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9udm1lL3RhcmdldC9yZG1hLmNcXG4rKysgYi9kcml2ZXJzL252bWUvdGFyZ2V0L3JkbWEuY1xcbkBAIC0xNTIsNyArMTUyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBrZXJuZWxfcGFyYW1fb3BzIHNycV9zaXplX29wcyA9IHtcXG4gXFx0LmdldCA9IHBhcmFtX2dldF9pbnQsXFxuIH07XFxuIFxcbi1zdGF0aWMgaW50IG52bWV0X3JkbWFfc3JxX3NpemUgPSAxMDI0O1xcbitzdGF0aWMgdW5zaWduZWQgaW50IG52bWV0X3JkbWFfc3JxX3NpemUgPSAxMDI0O1xcbiBtb2R1bGVfcGFyYW1fY2Ioc3JxX3NpemUsIFxcdTAwMjZzcnFfc2l6ZV9vcHMsIFxcdTAwMjZudm1ldF9yZG1hX3NycV9zaXplLCAwNjQ0KTtcXG4gTU9EVUxFX1BBUk1fREVTQyhzcnFfc2l6ZSwgXFxcInNldCBTaGFyZWQgUmVjZWl2ZSBRdWV1ZSAoU1JRKSBzaXplLCBzaG91bGQgXFx1MDAzZT0gMjU2IChkZWZhdWx0OiAxMDI0KVxcXCIpO1xcbiBcXG5AQCAtMTE5Nyw3ICsxMTk3LDcgQEAgbnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2Uoc3RydWN0IHJkbWFfY21faWQgKmNtX2lkKVxcbiBcXHRzdHJ1Y3QgbnZtZXRfcG9ydCAqbnBvcnQgPSBwb3J0LVxcdTAwM2VucG9ydDtcXG4gXFx0c3RydWN0IG52bWV0X3JkbWFfZGV2aWNlICpuZGV2O1xcbiBcXHRpbnQgaW5saW5lX3BhZ2VfY291bnQ7XFxuLVxcdGludCBpbmxpbmVfc2dlX2NvdW50O1xcbitcXHR1MzIgaW5saW5lX3NnZV9jb3VudDtcXG4gXFx0aW50IHJldDtcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNmRldmljZV9saXN0X211dGV4KTtcXG5AQCAtMTIxMyw3ICsxMjEzLDkgQEAgbnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2Uoc3RydWN0IHJkbWFfY21faWQgKmNtX2lkKVxcbiBcXG4gXFx0aW5saW5lX3BhZ2VfY291bnQgPSBudW1fcGFnZXMobnBvcnQtXFx1MDAzZWlubGluZV9kYXRhX3NpemUpO1xcbiBcXHRpbmxpbmVfc2dlX2NvdW50ID0gbWF4KGNtX2lkLVxcdTAwM2VkZXZpY2UtXFx1MDAzZWF0dHJzLm1heF9zZ2VfcmQsXFxuLVxcdFxcdFxcdFxcdGNtX2lkLVxcdTAwM2VkZXZpY2UtXFx1MDAzZWF0dHJzLm1heF9yZWN2X3NnZSkgLSAxO1xcbitcXHRcXHRcXHRcXHRjbV9pZC1cXHUwMDNlZGV2aWNlLVxcdTAwM2VhdHRycy5tYXhfcmVjdl9zZ2UpO1xcbitcXHRpZiAoaW5saW5lX3NnZV9jb3VudClcXG4rXFx0XFx0aW5saW5lX3NnZV9jb3VudC0tO1xcbiBcXHRpZiAoaW5saW5lX3BhZ2VfY291bnQgXFx1MDAzZSBpbmxpbmVfc2dlX2NvdW50KSB7XFxuIFxcdFxcdHByX3dhcm4oXFxcImlubGluZV9kYXRhX3NpemUgJWQgY2Fubm90IGJlIHN1cHBvcnRlZCBieSBkZXZpY2UgJXMuIFJlZHVjaW5nIHRvICVsdS5cXFxcblxcXCIsXFxuIFxcdFxcdFxcdG5wb3J0LVxcdTAwM2VpbmxpbmVfZGF0YV9zaXplLCBjbV9pZC1cXHUwMDNlZGV2aWNlLVxcdTAwM2VuYW1lLFxcbkBAIC0xNTUzLDggKzE1NTUsOSBAQCBzdGF0aWMgaW50IG52bWV0X3JkbWFfY21fYWNjZXB0KHN0cnVjdCByZG1hX2NtX2lkICpjbV9pZCxcXG4gXFxuIFxcdHBhcmFtLnJucl9yZXRyeV9jb3VudCA9IDc7XFxuIFxcdHBhcmFtLmZsb3dfY29udHJvbCA9IDE7XFxuLVxcdHBhcmFtLmluaXRpYXRvcl9kZXB0aCA9IG1pbl90KHU4LCBwLVxcdTAwM2Vpbml0aWF0b3JfZGVwdGgsXFxuLVxcdFxcdHF1ZXVlLVxcdTAwM2VkZXYtXFx1MDAzZWRldmljZS1cXHUwMDNlYXR0cnMubWF4X3FwX2luaXRfcmRfYXRvbSk7XFxuK1xcdHBhcmFtLmluaXRpYXRvcl9kZXB0aCA9IG1pbjMocC1cXHUwMDNlaW5pdGlhdG9yX2RlcHRoLFxcbitcXHRcXHRcXHRcXHQgICAgIHF1ZXVlLVxcdTAwM2VkZXYtXFx1MDAzZWRldmljZS1cXHUwMDNlYXR0cnMubWF4X3FwX2luaXRfcmRfYXRvbSxcXG4rXFx0XFx0XFx0XFx0ICAgICBVOF9NQVgpO1xcbiBcXHRwYXJhbS5wcml2YXRlX2RhdGEgPSBcXHUwMDI2cHJpdjtcXG4gXFx0cGFyYW0ucHJpdmF0ZV9kYXRhX2xlbiA9IHNpemVvZihwcml2KTtcXG4gXFx0cHJpdi5yZWNmbXQgPSBjcHVfdG9fbGUxNihOVk1FX1JETUFfQ01fRk1UXzFfMCk7XFxuZGlmZiAtLWdpdCBhL2ZzL3NtYi9zbWJkaXJlY3QvYWNjZXB0LmMgYi9mcy9zbWIvc21iZGlyZWN0L2FjY2VwdC5jXFxuaW5kZXggNTI5NzQwMDA1ODM4NWUuLjQ0YjY4MWEyMDcyNTM2IDEwMDY0NFxcbi0tLSBhL2ZzL3NtYi9zbWJkaXJlY3QvYWNjZXB0LmNcXG4rKysgYi9mcy9zbWIvc21iZGlyZWN0L2FjY2VwdC5jXFxuQEAgLTMyLDggKzMyLDkgQEAgaW50IHNtYmRpcmVjdF9hY2NlcHRfY29ubmVjdF9yZXF1ZXN0KHN0cnVjdCBzbWJkaXJlY3Rfc29ja2V0ICpzYyxcXG4gXFx0LypcXG4gXFx0ICogRmlyc3Qgc2V0IHdoYXQgdGhlIHdlIGFzIHNlcnZlciBhcmUgYWJsZSB0byBzdXBwb3J0XFxuIFxcdCAqL1xcbi1cXHRzcC1cXHUwMDNlaW5pdGlhdG9yX2RlcHRoID0gbWluX3QodTgsIHNwLVxcdTAwM2Vpbml0aWF0b3JfZGVwdGgsXFxuLVxcdFxcdFxcdFxcdCAgICBzYy1cXHUwMDNlaWIuZGV2LVxcdTAwM2VhdHRycy5tYXhfcXBfcmRfYXRvbSk7XFxuK1xcdHNwLVxcdTAwM2Vpbml0aWF0b3JfZGVwdGggPSBtaW4zKHNwLVxcdTAwM2Vpbml0aWF0b3JfZGVwdGgsXFxuK1xcdFxcdFxcdFxcdCAgIHNjLVxcdTAwM2VpYi5kZXYtXFx1MDAzZWF0dHJzLm1heF9xcF9yZF9hdG9tLFxcbitcXHRcXHRcXHRcXHQgICBVOF9NQVgpO1xcbiBcXG4gXFx0cGVlcl9pbml0aWF0b3JfZGVwdGggPSBwYXJhbS1cXHUwMDNlaW5pdGlhdG9yX2RlcHRoO1xcbiBcXHRwZWVyX3Jlc3BvbmRlcl9yZXNvdXJjZXMgPSBwYXJhbS1cXHUwMDNlcmVzcG9uZGVyX3Jlc291cmNlcztcXG5kaWZmIC0tZ2l0IGEvZnMvc21iL3NtYmRpcmVjdC9jb25uZWN0LmMgYi9mcy9zbWIvc21iZGlyZWN0L2Nvbm5lY3QuY1xcbmluZGV4IGNkNzI2YjM5OWFmZWNiLi4zNGEzZTcyYzM4ZmJiYSAxMDA2NDRcXG4tLS0gYS9mcy9zbWIvc21iZGlyZWN0L2Nvbm5lY3QuY1xcbisrKyBiL2ZzL3NtYi9zbWJkaXJlY3QvY29ubmVjdC5jXFxuQEAgLTE4Miw4ICsxODIsOSBAQCBzdGF0aWMgaW50IHNtYmRpcmVjdF9jb25uZWN0X3JkbWFfY29ubmVjdChzdHJ1Y3Qgc21iZGlyZWN0X3NvY2tldCAqc2MpXFxuIFxcdGlmIChzYy1cXHUwMDNlaWIuZGV2LVxcdTAwM2VhdHRycy5rZXJuZWxfY2FwX2ZsYWdzIFxcdTAwMjYgSUJLX1NHX0dBUFNfUkVHKVxcbiBcXHRcXHRzYy1cXHUwMDNlbXJfaW8udHlwZSA9IElCX01SX1RZUEVfU0dfR0FQUztcXG4gXFxuLVxcdHNwLVxcdTAwM2VyZXNwb25kZXJfcmVzb3VyY2VzID0gbWluX3QodTgsIHNwLVxcdTAwM2VyZXNwb25kZXJfcmVzb3VyY2VzLFxcbi1cXHRcXHRcXHRcXHRcXHRzYy1cXHUwMDNlaWIuZGV2LVxcdTAwM2VhdHRycy5tYXhfcXBfcmRfYXRvbSk7XFxuK1xcdHNwLVxcdTAwM2VyZXNwb25kZXJfcmVzb3VyY2VzID0gbWluMyhzcC1cXHUwMDNlcmVzcG9uZGVyX3Jlc291cmNlcyxcXG4rXFx0XFx0XFx0XFx0ICAgICAgIHNjLVxcdTAwM2VpYi5kZXYtXFx1MDAzZWF0dHJzLm1heF9xcF9yZF9hdG9tLFxcbitcXHRcXHRcXHRcXHQgICAgICAgVThfTUFYKTtcXG4gXFx0c21iZGlyZWN0X2xvZ19yZG1hX21yKHNjLCBTTUJESVJFQ1RfTE9HX0lORk8sXFxuIFxcdFxcdFxcXCJyZXNwb25kZXJfcmVzb3VyY2VzPSVkXFxcXG5cXFwiLFxcbiBcXHRcXHRzcC1cXHUwMDNlcmVzcG9uZGVyX3Jlc291cmNlcyk7XFxuZGlmZiAtLWdpdCBhL2ZzL3NtYi9zbWJkaXJlY3QvY29ubmVjdGlvbi5jIGIvZnMvc21iL3NtYmRpcmVjdC9jb25uZWN0aW9uLmNcXG5pbmRleCA4YWRmNTgwOTc1MzQ0Yi4uNjkwYWNiODRlMWI1OTEgMTAwNjQ0XFxuLS0tIGEvZnMvc21iL3NtYmRpcmVjdC9jb25uZWN0aW9uLmNcXG4rKysgYi9mcy9zbWIvc21iZGlyZWN0L2Nvbm5lY3Rpb24uY1xcbkBAIC0yODcsNyArMjg3LDcgQEAgaW50IHNtYmRpcmVjdF9jb25uZWN0aW9uX2NyZWF0ZV9xcChzdHJ1Y3Qgc21iZGlyZWN0X3NvY2tldCAqc2MpXFxuIFxcdCAgICBxcF9jYXAubWF4X3NlbmRfd3IgXFx1MDAzZSBzYy1cXHUwMDNlaWIuZGV2LVxcdTAwM2VhdHRycy5tYXhfcXBfd3IpIHtcXG4gXFx0XFx0cHJfZXJyKFxcXCJQb3NzaWJsZSBDUUUgb3ZlcnJ1bjogbWF4X3NlbmRfd3IgJWRcXFxcblxcXCIsXFxuIFxcdFxcdCAgICAgICBxcF9jYXAubWF4X3NlbmRfd3IpO1xcbi1cXHRcXHRwcl9lcnIoXFxcImRldmljZSAlLipzIHJlcG9ydGluZyBtYXhfY3FlICVkIG1heF9xcF93ciAlZFxcXFxuXFxcIixcXG4rXFx0XFx0cHJfZXJyKFxcXCJkZXZpY2UgJS4qcyByZXBvcnRpbmcgbWF4X2NxZSAldSBtYXhfcXBfd3IgJXVcXFxcblxcXCIsXFxuIFxcdFxcdCAgICAgICBJQl9ERVZJQ0VfTkFNRV9NQVgsXFxuIFxcdFxcdCAgICAgICBzYy1cXHUwMDNlaWIuZGV2LVxcdTAwM2VuYW1lLFxcbiBcXHRcXHQgICAgICAgc2MtXFx1MDAzZWliLmRldi1cXHUwMDNlYXR0cnMubWF4X2NxZSxcXG5AQCAtMzAyLDcgKzMwMiw3IEBAIGludCBzbWJkaXJlY3RfY29ubmVjdGlvbl9jcmVhdGVfcXAoc3RydWN0IHNtYmRpcmVjdF9zb2NrZXQgKnNjKVxcbiBcXHQgICAgIG1heF9zZW5kX3dyIFxcdTAwM2U9IHNjLVxcdTAwM2VpYi5kZXYtXFx1MDAzZWF0dHJzLm1heF9xcF93cikpIHtcXG4gXFx0XFx0cHJfZXJyKFxcXCJQb3NzaWJsZSBDUUUgb3ZlcnJ1bjogcmRtYV9zZW5kX3dyICVkICsgbWF4X3NlbmRfd3IgJWQgPSAlZFxcXFxuXFxcIixcXG4gXFx0XFx0ICAgICAgIHJkbWFfc2VuZF93ciwgcXBfY2FwLm1heF9zZW5kX3dyLCBtYXhfc2VuZF93cik7XFxuLVxcdFxcdHByX2VycihcXFwiZGV2aWNlICUuKnMgcmVwb3J0aW5nIG1heF9jcWUgJWQgbWF4X3FwX3dyICVkXFxcXG5cXFwiLFxcbitcXHRcXHRwcl9lcnIoXFxcImRldmljZSAlLipzIHJlcG9ydGluZyBtYXhfY3FlICV1IG1heF9xcF93ciAldVxcXFxuXFxcIixcXG4gXFx0XFx0ICAgICAgIElCX0RFVklDRV9OQU1FX01BWCxcXG4gXFx0XFx0ICAgICAgIHNjLVxcdTAwM2VpYi5kZXYtXFx1MDAzZW5hbWUsXFxuIFxcdFxcdCAgICAgICBzYy1cXHUwMDNlaWIuZGV2LVxcdTAwM2VhdHRycy5tYXhfY3FlLFxcbkBAIC0zMTYsNyArMzE2LDcgQEAgaW50IHNtYmRpcmVjdF9jb25uZWN0aW9uX2NyZWF0ZV9xcChzdHJ1Y3Qgc21iZGlyZWN0X3NvY2tldCAqc2MpXFxuIFxcdCAgICBxcF9jYXAubWF4X3JlY3Zfd3IgXFx1MDAzZSBzYy1cXHUwMDNlaWIuZGV2LVxcdTAwM2VhdHRycy5tYXhfcXBfd3IpIHtcXG4gXFx0XFx0cHJfZXJyKFxcXCJQb3NzaWJsZSBDUUUgb3ZlcnJ1bjogbWF4X3JlY3Zfd3IgJWRcXFxcblxcXCIsXFxuIFxcdFxcdCAgICAgICBxcF9jYXAubWF4X3JlY3Zfd3IpO1xcbi1cXHRcXHRwcl9lcnIoXFxcImRldmljZSAlLipzIHJlcG9ydGluZyBtYXhfY3FlICVkIG1heF9xcF93ciAlZFxcXFxuXFxcIixcXG4rXFx0XFx0cHJfZXJyKFxcXCJkZXZpY2UgJS4qcyByZXBvcnRpbmcgbWF4X2NxZSAldSBtYXhfcXBfd3IgJXVcXFxcblxcXCIsXFxuIFxcdFxcdCAgICAgICBJQl9ERVZJQ0VfTkFNRV9NQVgsXFxuIFxcdFxcdCAgICAgICBzYy1cXHUwMDNlaWIuZGV2LVxcdTAwM2VuYW1lLFxcbiBcXHRcXHQgICAgICAgc2MtXFx1MDAzZWliLmRldi1cXHUwMDNlYXR0cnMubWF4X2NxZSxcXG5AQCAtMzI4LDcgKzMyOCw3IEBAIGludCBzbWJkaXJlY3RfY29ubmVjdGlvbl9jcmVhdGVfcXAoc3RydWN0IHNtYmRpcmVjdF9zb2NrZXQgKnNjKVxcbiBcXG4gXFx0aWYgKHFwX2NhcC5tYXhfc2VuZF9zZ2UgXFx1MDAzZSBzYy1cXHUwMDNlaWIuZGV2LVxcdTAwM2VhdHRycy5tYXhfc2VuZF9zZ2UgfHxcXG4gXFx0ICAgIHFwX2NhcC5tYXhfcmVjdl9zZ2UgXFx1MDAzZSBzYy1cXHUwMDNlaWIuZGV2LVxcdTAwM2VhdHRycy5tYXhfcmVjdl9zZ2UpIHtcXG4tXFx0XFx0cHJfZXJyKFxcXCJkZXZpY2UgJS4qcyBtYXhfc2VuZF9zZ2UvbWF4X3JlY3Zfc2dlID0gJWQvJWQgdG9vIHNtYWxsXFxcXG5cXFwiLFxcbitcXHRcXHRwcl9lcnIoXFxcImRldmljZSAlLipzIG1heF9zZW5kX3NnZS9tYXhfcmVjdl9zZ2UgPSAldS8ldSB0b28gc21hbGxcXFxcblxcXCIsXFxuIFxcdFxcdCAgICAgICBJQl9ERVZJQ0VfTkFNRV9NQVgsXFxuIFxcdFxcdCAgICAgICBzYy1cXHUwMDNlaWIuZGV2LVxcdTAwM2VuYW1lLFxcbiBcXHRcXHQgICAgICAgc2MtXFx1MDAzZWliLmRldi1cXHUwMDNlYXR0cnMubWF4X3NlbmRfc2dlLFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3N1bnJwYy9zdmNfcmRtYS5oIGIvaW5jbHVkZS9saW51eC9zdW5ycGMvc3ZjX3JkbWEuaFxcbmluZGV4IGRmNmUwOGFhYWQ1NzA5Li4yMTdmMDAwYmU1ZDZlMiAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3N1bnJwYy9zdmNfcmRtYS5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9zdW5ycGMvc3ZjX3JkbWEuaFxcbkBAIC03OCw4ICs3OCw4IEBAIHN0cnVjdCBzdmN4cHJ0X3JkbWEge1xcbiBcXHRzdHJ1Y3QgcmRtYV9jbV9pZCAgICAqc2NfY21faWQ7XFx0XFx0LyogUkRNQSBjb25uZWN0aW9uIGlkICovXFxuIFxcdHN0cnVjdCBsaXN0X2hlYWQgICAgIHNjX2FjY2VwdF9xO1xcdC8qIENvbm4uIHdhaXRpbmcgYWNjZXB0ICovXFxuIFxcdHN0cnVjdCBycGNyZG1hX25vdGlmaWNhdGlvbiBzY19ybjtcXHQvKiByZW1vdmFsIG5vdGlmaWNhdGlvbiAqL1xcbi1cXHRpbnRcXHRcXHQgICAgIHNjX29yZDtcXHRcXHQvKiBSRE1BIHJlYWQgbGltaXQgKi9cXG4tXFx0aW50ICAgICAgICAgICAgICAgICAgc2NfbWF4X3NlbmRfc2dlcztcXG4rXFx0dTMyXFx0XFx0ICAgICBzY19vcmQ7XFx0XFx0LyogUkRNQSByZWFkIGxpbWl0ICovXFxuK1xcdHVuc2lnbmVkIGludCAgICAgICAgIHNjX21heF9zZW5kX3NnZXM7XFxuIFxcdGJvb2xcXHRcXHQgICAgIHNjX3NuZF93X2ludjtcXHQvKiBPSyB0byB1c2UgU2VuZCBXaXRoIEludmFsaWRhdGUgKi9cXG4gXFxuIFxcdGF0b21pY190ICAgICAgICAgICAgIHNjX3NxX2F2YWlsO1xcdC8qIFNRRXMgcmVhZHkgdG8gYmUgY29uc3VtZWQgKi9cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9yZG1hL2liX3ZlcmJzLmggYi9pbmNsdWRlL3JkbWEvaWJfdmVyYnMuaFxcbmluZGV4IDlkZDc2ZjQ4OWEwYmE0Li5iOGIyMjFiNWY1NjQ3MyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL3JkbWEvaWJfdmVyYnMuaFxcbisrKyBiL2luY2x1ZGUvcmRtYS9pYl92ZXJicy5oXFxuQEAgLTQwNiwzNiArNDA2LDM2IEBAIHN0cnVjdCBpYl9kZXZpY2VfYXR0ciB7XFxuIFxcdHUzMlxcdFxcdFxcdHZlbmRvcl9pZDtcXG4gXFx0dTMyXFx0XFx0XFx0dmVuZG9yX3BhcnRfaWQ7XFxuIFxcdHUzMlxcdFxcdFxcdGh3X3ZlcjtcXG4tXFx0aW50XFx0XFx0XFx0bWF4X3FwO1xcbi1cXHRpbnRcXHRcXHRcXHRtYXhfcXBfd3I7XFxuK1xcdHUzMlxcdFxcdFxcdG1heF9xcDtcXG4rXFx0dTMyXFx0XFx0XFx0bWF4X3FwX3dyO1xcbiBcXHR1NjRcXHRcXHRcXHRkZXZpY2VfY2FwX2ZsYWdzO1xcbiBcXHR1NjRcXHRcXHRcXHRrZXJuZWxfY2FwX2ZsYWdzO1xcbi1cXHRpbnRcXHRcXHRcXHRtYXhfc2VuZF9zZ2U7XFxuLVxcdGludFxcdFxcdFxcdG1heF9yZWN2X3NnZTtcXG4tXFx0aW50XFx0XFx0XFx0bWF4X3NnZV9yZDtcXG4tXFx0aW50XFx0XFx0XFx0bWF4X2NxO1xcbi1cXHRpbnRcXHRcXHRcXHRtYXhfY3FlO1xcbi1cXHRpbnRcXHRcXHRcXHRtYXhfbXI7XFxuLVxcdGludFxcdFxcdFxcdG1heF9wZDtcXG4tXFx0aW50XFx0XFx0XFx0bWF4X3FwX3JkX2F0b207XFxuLVxcdGludFxcdFxcdFxcdG1heF9lZV9yZF9hdG9tO1xcbi1cXHRpbnRcXHRcXHRcXHRtYXhfcmVzX3JkX2F0b207XFxuLVxcdGludFxcdFxcdFxcdG1heF9xcF9pbml0X3JkX2F0b207XFxuLVxcdGludFxcdFxcdFxcdG1heF9lZV9pbml0X3JkX2F0b207XFxuK1xcdHUzMlxcdFxcdFxcdG1heF9zZW5kX3NnZTtcXG4rXFx0dTMyXFx0XFx0XFx0bWF4X3JlY3Zfc2dlO1xcbitcXHR1MzJcXHRcXHRcXHRtYXhfc2dlX3JkO1xcbitcXHR1MzJcXHRcXHRcXHRtYXhfY3E7XFxuK1xcdHUzMlxcdFxcdFxcdG1heF9jcWU7XFxuK1xcdHUzMlxcdFxcdFxcdG1heF9tcjtcXG4rXFx0dTMyXFx0XFx0XFx0bWF4X3BkO1xcbitcXHR1MzJcXHRcXHRcXHRtYXhfcXBfcmRfYXRvbTtcXG4rXFx0dTMyXFx0XFx0XFx0bWF4X2VlX3JkX2F0b207XFxuK1xcdHUzMlxcdFxcdFxcdG1heF9yZXNfcmRfYXRvbTtcXG4rXFx0dTMyXFx0XFx0XFx0bWF4X3FwX2luaXRfcmRfYXRvbTtcXG4rXFx0dTMyXFx0XFx0XFx0bWF4X2VlX2luaXRfcmRfYXRvbTtcXG4gXFx0ZW51bSBpYl9hdG9taWNfY2FwXFx0YXRvbWljX2NhcDtcXG4gXFx0ZW51bSBpYl9hdG9taWNfY2FwXFx0bWFza2VkX2F0b21pY19jYXA7XFxuLVxcdGludFxcdFxcdFxcdG1heF9lZTtcXG4tXFx0aW50XFx0XFx0XFx0bWF4X3JkZDtcXG4tXFx0aW50XFx0XFx0XFx0bWF4X213O1xcbi1cXHRpbnRcXHRcXHRcXHRtYXhfcmF3X2lwdjZfcXA7XFxuLVxcdGludFxcdFxcdFxcdG1heF9yYXdfZXRoeV9xcDtcXG4tXFx0aW50XFx0XFx0XFx0bWF4X21jYXN0X2dycDtcXG4tXFx0aW50XFx0XFx0XFx0bWF4X21jYXN0X3FwX2F0dGFjaDtcXG4tXFx0aW50XFx0XFx0XFx0bWF4X3RvdGFsX21jYXN0X3FwX2F0dGFjaDtcXG4tXFx0aW50XFx0XFx0XFx0bWF4X2FoO1xcbitcXHR1MzJcXHRcXHRcXHRtYXhfZWU7XFxuK1xcdHUzMlxcdFxcdFxcdG1heF9yZGQ7XFxuK1xcdHUzMlxcdFxcdFxcdG1heF9tdztcXG4rXFx0dTMyXFx0XFx0XFx0bWF4X3Jhd19pcHY2X3FwO1xcbitcXHR1MzJcXHRcXHRcXHRtYXhfcmF3X2V0aHlfcXA7XFxuK1xcdHUzMlxcdFxcdFxcdG1heF9tY2FzdF9ncnA7XFxuK1xcdHUzMlxcdFxcdFxcdG1heF9tY2FzdF9xcF9hdHRhY2g7XFxuK1xcdHUzMlxcdFxcdFxcdG1heF90b3RhbF9tY2FzdF9xcF9hdHRhY2g7XFxuK1xcdHUzMlxcdFxcdFxcdG1heF9haDtcXG4gXFx0aW50XFx0XFx0XFx0bWF4X3NycTtcXG4tXFx0aW50XFx0XFx0XFx0bWF4X3NycV93cjtcXG4tXFx0aW50XFx0XFx0XFx0bWF4X3NycV9zZ2U7XFxuK1xcdHUzMlxcdFxcdFxcdG1heF9zcnFfd3I7XFxuK1xcdHUzMlxcdFxcdFxcdG1heF9zcnFfc2dlO1xcbiBcXHR1bnNpZ25lZCBpbnRcXHRcXHRtYXhfZmFzdF9yZWdfcGFnZV9saXN0X2xlbjtcXG4gXFx0dW5zaWduZWQgaW50XFx0XFx0bWF4X3BpX2Zhc3RfcmVnX3BhZ2VfbGlzdF9sZW47XFxuIFxcdHUxNlxcdFxcdFxcdG1heF9wa2V5cztcXG5kaWZmIC0tZ2l0IGEvbmV0L3Jkcy9pYi5jIGIvbmV0L3Jkcy9pYi5jXFxuaW5kZXggMzlmODcyNzJlMDcxYmYuLmM2MjY4NGQ0MjU5YzRmIDEwMDY0NFxcbi0tLSBhL25ldC9yZHMvaWIuY1xcbisrKyBiL25ldC9yZHMvaWIuY1xcbkBAIC0xNjIsMTIgKzE2MiwxMiBAQCBzdGF0aWMgaW50IHJkc19pYl9hZGRfb25lKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSlcXG4gXFx0XFx0ICAgSUJfT0RQX1NVUFBPUlRfUkVBRCk7XFxuIFxcbiBcXHRyZHNfaWJkZXYtXFx1MDAzZW1heF8xbV9tcnMgPSBkZXZpY2UtXFx1MDAzZWF0dHJzLm1heF9tciA/XFxuLVxcdFxcdG1pbl90KHVuc2lnbmVkIGludCwgKGRldmljZS1cXHUwMDNlYXR0cnMubWF4X21yIC8gMiksXFxuLVxcdFxcdCAgICAgIHJkc19pYl9tcl8xbV9wb29sX3NpemUpIDogcmRzX2liX21yXzFtX3Bvb2xfc2l6ZTtcXG4rXFx0XFx0bWluKGRldmljZS1cXHUwMDNlYXR0cnMubWF4X21yIC8gMixcXG4rXFx0XFx0ICAgIHJkc19pYl9tcl8xbV9wb29sX3NpemUpIDogcmRzX2liX21yXzFtX3Bvb2xfc2l6ZTtcXG4gXFxuIFxcdHJkc19pYmRldi1cXHUwMDNlbWF4XzhrX21ycyA9IGRldmljZS1cXHUwMDNlYXR0cnMubWF4X21yID9cXG4tXFx0XFx0bWluX3QodW5zaWduZWQgaW50LCAoKGRldmljZS1cXHUwMDNlYXR0cnMubWF4X21yIC8gMikgKiBSRFNfTVJfOEtfU0NBTEUpLFxcbi1cXHRcXHQgICAgICByZHNfaWJfbXJfOGtfcG9vbF9zaXplKSA6IHJkc19pYl9tcl84a19wb29sX3NpemU7XFxuK1xcdFxcdG1pbigoZGV2aWNlLVxcdTAwM2VhdHRycy5tYXhfbXIgLyAyKSAqIFJEU19NUl84S19TQ0FMRSxcXG4rXFx0XFx0ICAgIHJkc19pYl9tcl84a19wb29sX3NpemUpIDogcmRzX2liX21yXzhrX3Bvb2xfc2l6ZTtcXG4gXFxuIFxcdHJkc19pYmRldi1cXHUwMDNlbWF4X2luaXRpYXRvcl9kZXB0aCA9IGRldmljZS1cXHUwMDNlYXR0cnMubWF4X3FwX2luaXRfcmRfYXRvbTtcXG4gXFx0cmRzX2liZGV2LVxcdTAwM2VtYXhfcmVzcG9uZGVyX3Jlc291cmNlcyA9IGRldmljZS1cXHUwMDNlYXR0cnMubWF4X3FwX3JkX2F0b207XFxuQEAgLTIwNCw3ICsyMDQsNyBAQCBzdGF0aWMgaW50IHJkc19pYl9hZGRfb25lKHN0cnVjdCBpYl9kZXZpY2UgKmRldmljZSlcXG4gXFx0XFx0Z290byBwdXRfZGV2O1xcbiBcXHR9XFxuIFxcbi1cXHRyZHNkZWJ1ZyhcXFwiUkRTL0lCOiBtYXhfbXIgPSAlZCwgbWF4X3dycyA9ICVkLCBtYXhfc2dlID0gJWQsIG1heF8xbV9tcnMgPSAlZCwgbWF4XzhrX21ycyA9ICVkXFxcXG5cXFwiLFxcbitcXHRyZHNkZWJ1ZyhcXFwiUkRTL0lCOiBtYXhfbXIgPSAldSwgbWF4X3dycyA9ICVkLCBtYXhfc2dlID0gJWQsIG1heF8xbV9tcnMgPSAlZCwgbWF4XzhrX21ycyA9ICVkXFxcXG5cXFwiLFxcbiBcXHRcXHQgZGV2aWNlLVxcdTAwM2VhdHRycy5tYXhfbXIsIHJkc19pYmRldi1cXHUwMDNlbWF4X3dycywgcmRzX2liZGV2LVxcdTAwM2VtYXhfc2dlLFxcbiBcXHRcXHQgcmRzX2liZGV2LVxcdTAwM2VtYXhfMW1fbXJzLCByZHNfaWJkZXYtXFx1MDAzZW1heF84a19tcnMpO1xcbiBcXG5kaWZmIC0tZ2l0IGEvbmV0L3Jkcy9pYl9jbS5jIGIvbmV0L3Jkcy9pYl9jbS5jXFxuaW5kZXggNTY2N2YwMTczYjQ3ZjIuLjE3ZTU4N2MzMDA3NjYzIDEwMDY0NFxcbi0tLSBhL25ldC9yZHMvaWJfY20uY1xcbisrKyBiL25ldC9yZHMvaWJfY20uY1xcbkBAIC0xNzMsMTEgKzE3MywxMSBAQCBzdGF0aWMgdm9pZCByZHNfaWJfY21fZmlsbF9jb25uX3BhcmFtKHN0cnVjdCByZHNfY29ubmVjdGlvbiAqY29ubixcXG4gXFxuIFxcdG1lbXNldChjb25uX3BhcmFtLCAwLCBzaXplb2Yoc3RydWN0IHJkbWFfY29ubl9wYXJhbSkpO1xcbiBcXG4tXFx0Y29ubl9wYXJhbS1cXHUwMDNlcmVzcG9uZGVyX3Jlc291cmNlcyA9XFxuLVxcdFxcdG1pbl90KHUzMiwgcmRzX2liZGV2LVxcdTAwM2VtYXhfcmVzcG9uZGVyX3Jlc291cmNlcywgbWF4X3Jlc3BvbmRlcl9yZXNvdXJjZXMpO1xcbi1cXHRjb25uX3BhcmFtLVxcdTAwM2Vpbml0aWF0b3JfZGVwdGggPVxcbi1cXHRcXHRtaW5fdCh1MzIsIHJkc19pYmRldi1cXHUwMDNlbWF4X2luaXRpYXRvcl9kZXB0aCwgbWF4X2luaXRpYXRvcl9kZXB0aCk7XFxuLVxcdGNvbm5fcGFyYW0tXFx1MDAzZXJldHJ5X2NvdW50ID0gbWluX3QodW5zaWduZWQgaW50LCByZHNfaWJfcmV0cnlfY291bnQsIDcpO1xcbitcXHRjb25uX3BhcmFtLVxcdTAwM2VyZXNwb25kZXJfcmVzb3VyY2VzID0gbWluMyhyZHNfaWJkZXYtXFx1MDAzZW1heF9yZXNwb25kZXJfcmVzb3VyY2VzLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgICAgbWF4X3Jlc3BvbmRlcl9yZXNvdXJjZXMsIFU4X01BWCk7XFxuK1xcdGNvbm5fcGFyYW0tXFx1MDAzZWluaXRpYXRvcl9kZXB0aCA9IG1pbjMocmRzX2liZGV2LVxcdTAwM2VtYXhfaW5pdGlhdG9yX2RlcHRoLFxcbitcXHRcXHRcXHRcXHRcXHQgICBtYXhfaW5pdGlhdG9yX2RlcHRoLCBVOF9NQVgpO1xcbitcXHRjb25uX3BhcmFtLVxcdTAwM2VyZXRyeV9jb3VudCA9IG1pbihyZHNfaWJfcmV0cnlfY291bnQsIDdVKTtcXG4gXFx0Y29ubl9wYXJhbS1cXHUwMDNlcm5yX3JldHJ5X2NvdW50ID0gNztcXG4gXFxuIFxcdGlmIChkcCkge1xcbmRpZmYgLS1naXQgYS9uZXQvc3VucnBjL3hwcnRyZG1hL2Zyd3Jfb3BzLmMgYi9uZXQvc3VucnBjL3hwcnRyZG1hL2Zyd3Jfb3BzLmNcXG5pbmRleCA3Zjc5YTBhMjYwMWU2NS4uYjJlNDM3YWZlMDlkYWEgMTAwNjQ0XFxuLS0tIGEvbmV0L3N1bnJwYy94cHJ0cmRtYS9mcndyX29wcy5jXFxuKysrIGIvbmV0L3N1bnJwYy94cHJ0cmRtYS9mcndyX29wcy5jXFxuQEAgLTE3Miw4ICsxNzIsOSBAQCBpbnQgZnJ3cl9tcl9pbml0KHN0cnVjdCBycGNyZG1hX3hwcnQgKnJfeHBydCwgc3RydWN0IHJwY3JkbWFfbXIgKm1yKVxcbiBpbnQgZnJ3cl9xdWVyeV9kZXZpY2Uoc3RydWN0IHJwY3JkbWFfZXAgKmVwLCBjb25zdCBzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UpXFxuIHtcXG4gXFx0Y29uc3Qgc3RydWN0IGliX2RldmljZV9hdHRyICphdHRycyA9IFxcdTAwMjZkZXZpY2UtXFx1MDAzZWF0dHJzO1xcbi1cXHRpbnQgbWF4X3FwX3dyLCBkZXB0aCwgZGVsdGE7XFxuIFxcdHVuc2lnbmVkIGludCBtYXhfc2dlO1xcbitcXHR1MzIgbWF4X3FwX3dyO1xcbitcXHRpbnQgZGVwdGgsIGRlbHRhO1xcbiBcXG4gXFx0aWYgKCEoYXR0cnMtXFx1MDAzZWRldmljZV9jYXBfZmxhZ3MgXFx1MDAyNiBJQl9ERVZJQ0VfTUVNX01HVF9FWFRFTlNJT05TKSB8fFxcbiBcXHQgICAgYXR0cnMtXFx1MDAzZW1heF9mYXN0X3JlZ19wYWdlX2xpc3RfbGVuID09IDApIHtcXG5AQCAtMjI5LDEwICsyMzAsMTAgQEAgaW50IGZyd3JfcXVlcnlfZGV2aWNlKHN0cnVjdCBycGNyZG1hX2VwICplcCwgY29uc3Qgc3RydWN0IGliX2RldmljZSAqZGV2aWNlKVxcbiBcXHR9XFxuIFxcbiBcXHRtYXhfcXBfd3IgPSBhdHRycy1cXHUwMDNlbWF4X3FwX3dyO1xcbitcXHRpZiAobWF4X3FwX3dyIFxcdTAwM2MgUlBDUkRNQV9CQUNLV0FSRF9XUlMgKyAxICsgUlBDUkRNQV9NSU5fU0xPVF9UQUJMRSlcXG4rXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcdG1heF9xcF93ciAtPSBSUENSRE1BX0JBQ0tXQVJEX1dSUztcXG4gXFx0bWF4X3FwX3dyIC09IDE7XFxuLVxcdGlmIChtYXhfcXBfd3IgXFx1MDAzYyBSUENSRE1BX01JTl9TTE9UX1RBQkxFKVxcbi1cXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFx0aWYgKGVwLVxcdTAwM2VyZV9tYXhfcmVxdWVzdHMgXFx1MDAzZSBtYXhfcXBfd3IpXFxuIFxcdFxcdGVwLVxcdTAwM2VyZV9tYXhfcmVxdWVzdHMgPSBtYXhfcXBfd3I7XFxuIFxcdGVwLVxcdTAwM2VyZV9hdHRyLmNhcC5tYXhfc2VuZF93ciA9IGVwLVxcdTAwM2VyZV9tYXhfcmVxdWVzdHMgKiBkZXB0aDtcXG5kaWZmIC0tZ2l0IGEvbmV0L3N1bnJwYy94cHJ0cmRtYS9zdmNfcmRtYV90cmFuc3BvcnQuYyBiL25ldC9zdW5ycGMveHBydHJkbWEvc3ZjX3JkbWFfdHJhbnNwb3J0LmNcXG5pbmRleCBmMThiYzYwZDlmNGZmYS4uYzc2OGNkYTJlNTQ0NGEgMTAwNjQ0XFxuLS0tIGEvbmV0L3N1bnJwYy94cHJ0cmRtYS9zdmNfcmRtYV90cmFuc3BvcnQuY1xcbisrKyBiL25ldC9zdW5ycGMveHBydHJkbWEvc3ZjX3JkbWFfdHJhbnNwb3J0LmNcXG5AQCAtNTQ0LDggKzU0NCw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3ZjX3hwcnQgKnN2Y19yZG1hX2FjY2VwdChzdHJ1Y3Qgc3ZjX3hwcnQgKnhwcnQpXFxuIFxcdHNldF9iaXQoUkRNQVhQUlRfQ09OTl9QRU5ESU5HLCBcXHUwMDI2bmV3eHBydC1cXHUwMDNlc2NfZmxhZ3MpO1xcbiBcXHRtZW1zZXQoXFx1MDAyNmNvbm5fcGFyYW0sIDAsIHNpemVvZiBjb25uX3BhcmFtKTtcXG4gXFx0Y29ubl9wYXJhbS5yZXNwb25kZXJfcmVzb3VyY2VzID0gMDtcXG4tXFx0Y29ubl9wYXJhbS5pbml0aWF0b3JfZGVwdGggPSBtaW5fdChpbnQsIG5ld3hwcnQtXFx1MDAzZXNjX29yZCxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgZGV2LVxcdTAwM2VhdHRycy5tYXhfcXBfaW5pdF9yZF9hdG9tKTtcXG4rXFx0Y29ubl9wYXJhbS5pbml0aWF0b3JfZGVwdGggPSBtaW4obmV3eHBydC1cXHUwMDNlc2Nfb3JkLCBkZXYtXFx1MDAzZWF0dHJzLm1heF9xcF9pbml0X3JkX2F0b20pO1xcbiBcXHRpZiAoIWNvbm5fcGFyYW0uaW5pdGlhdG9yX2RlcHRoKSB7XFxuIFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuIFxcdFxcdHRyYWNlX3N2Y3JkbWFfaW5pdGRlcHRoX2VycihuZXd4cHJ0LCByZXQpO1xcbkBAIC01NzAsNyArNTY5LDcgQEAgc3RhdGljIHN0cnVjdCBzdmNfeHBydCAqc3ZjX3JkbWFfYWNjZXB0KHN0cnVjdCBzdmNfeHBydCAqeHBydClcXG4gXFx0XFx0ZHByaW50ayhcXFwiICAgIGxvY2FsIGFkZHJlc3MgICA6ICVwSVM6JXVcXFxcblxcXCIsIHNhcCwgcnBjX2dldF9wb3J0KHNhcCkpO1xcbiBcXHRcXHRzYXAgPSAoc3RydWN0IHNvY2thZGRyICopXFx1MDAyNm5ld3hwcnQtXFx1MDAzZXNjX2NtX2lkLVxcdTAwM2Vyb3V0ZS5hZGRyLmRzdF9hZGRyO1xcbiBcXHRcXHRkcHJpbnRrKFxcXCIgICAgcmVtb3RlIGFkZHJlc3MgIDogJXBJUzoldVxcXFxuXFxcIiwgc2FwLCBycGNfZ2V0X3BvcnQoc2FwKSk7XFxuLVxcdFxcdGRwcmludGsoXFxcIiAgICBtYXhfc2dlICAgICAgICAgOiAlZFxcXFxuXFxcIiwgbmV3eHBydC1cXHUwMDNlc2NfbWF4X3NlbmRfc2dlcyk7XFxuK1xcdFxcdGRwcmludGsoXFxcIiAgICBtYXhfc2dlICAgICAgICAgOiAldVxcXFxuXFxcIiwgbmV3eHBydC1cXHUwMDNlc2NfbWF4X3NlbmRfc2dlcyk7XFxuIFxcdFxcdGRwcmludGsoXFxcIiAgICBzcV9kZXB0aCAgICAgICAgOiAlZFxcXFxuXFxcIiwgbmV3eHBydC1cXHUwMDNlc2Nfc3FfZGVwdGgpO1xcbiBcXHRcXHRkcHJpbnRrKFxcXCIgICAgcmRtYV9yd19jdHhzICAgIDogJWRcXFxcblxcXCIsIGN0eHRzKTtcXG4gXFx0XFx0ZHByaW50ayhcXFwiICAgIG1heF9yZXF1ZXN0cyAgICA6ICVkXFxcXG5cXFwiLCBuZXd4cHJ0LVxcdTAwM2VzY19tYXhfcmVxdWVzdHMpO1xcbmRpZmYgLS1naXQgYS9uZXQvc3VucnBjL3hwcnRyZG1hL3ZlcmJzLmMgYi9uZXQvc3VucnBjL3hwcnRyZG1hL3ZlcmJzLmNcXG5pbmRleCBhZWNmOWMwYTE1M2YzNi4uOGVkOWRhNmQyZDJmNzcgMTAwNjQ0XFxuLS0tIGEvbmV0L3N1bnJwYy94cHJ0cmRtYS92ZXJicy5jXFxuKysrIGIvbmV0L3N1bnJwYy94cHJ0cmRtYS92ZXJicy5jXFxuQEAgLTQ1Myw3ICs0NTMsNyBAQCBzdGF0aWMgaW50IHJwY3JkbWFfZXBfY3JlYXRlKHN0cnVjdCBycGNyZG1hX3hwcnQgKnJfeHBydClcXG4gXFx0LyogQ2xpZW50IG9mZmVycyBSRE1BIFJlYWQgYnV0IGRvZXMgbm90IGluaXRpYXRlICovXFxuIFxcdGVwLVxcdTAwM2VyZV9yZW1vdGVfY21hLmluaXRpYXRvcl9kZXB0aCA9IDA7XFxuIFxcdGVwLVxcdTAwM2VyZV9yZW1vdGVfY21hLnJlc3BvbmRlcl9yZXNvdXJjZXMgPVxcbi1cXHRcXHRtaW5fdChpbnQsIFU4X01BWCwgZGV2aWNlLVxcdTAwM2VhdHRycy5tYXhfcXBfcmRfYXRvbSk7XFxuK1xcdFxcdG1pbihkZXZpY2UtXFx1MDAzZWF0dHJzLm1heF9xcF9yZF9hdG9tLCBVOF9NQVgpO1xcbiBcXG4gXFx0LyogTGltaXQgdHJhbnNwb3J0IHJldHJpZXMgc28gY2xpZW50IGNhbiBkZXRlY3Qgc2VydmVyXFxuIFxcdCAqIEdJRCBjaGFuZ2VzIHF1aWNrbHkuIFJQQyBsYXllciBoYW5kbGVzIHJlLWVzdGFibGlzaGluZ1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0NjoyNS4zMDkyNjAyMThaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2NTI5NzQwMzc1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSRE1BX1JYRVwiLFxuICAgIFwiTlZNRV9SRE1BXCIsXG4gICAgXCJOVk1FX1RBUkdFVF9SRE1BXCIsXG4gICAgXCJTVU5SUENfWFBSVF9SRE1BXCIsXG4gICAgXCJDSUZTX1NNQl9ESVJFQ1RcIixcbiAgICBcIlNNQl9TRVJWRVJfU01CRElSRUNUXCIsXG4gICAgXCJJTkZJTklCQU5EX1NSUFwiLFxuICAgIFwiSU5GSU5JQkFORF9TUlBUXCIsXG4gICAgXCJJTkZJTklCQU5EX0lTRVJcIixcbiAgICBcIklORklOSUJBTkRfSVNFUlRcIixcbiAgICBcIklORklOSUJBTkRfUlRSU19DTElFTlRcIixcbiAgICBcIklORklOSUJBTkRfUlRSU19TRVJWRVJcIixcbiAgICBcIlJEU19SRE1BXCIsXG4gICAgXCJJTkZJTklCQU5EX0lQT0lCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnZtZV9yZG1hX2ZpbmRfZ2V0X2RldmljZVwiLFxuICAgIFwibnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2VcIixcbiAgICBcImZyd3JfcXVlcnlfZGV2aWNlXCIsXG4gICAgXCJyeGVfcXBfY2hrX2NhcFwiLFxuICAgIFwicnhlX3NycV9jaGtfaW5pdFwiLFxuICAgIFwic21iZGlyZWN0X2Nvbm5lY3Rpb25fY3JlYXRlX3FwXCIsXG4gICAgXCJyZHNfaWJfY21fZmlsbF9jb25uX3BhcmFtXCIsXG4gICAgXCJzdmNfcmRtYV9hY2NlcHRcIixcbiAgICBcInJwY3JkbWFfZXBfY3JlYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZXMgb2YgdmFyaW91cyBSRE1BIGRldmljZSBhdHRyaWJ1dGVzIGZyb20gYGludGAgdG8gYHUzMmAgYW5kIHVwZGF0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgYG1pbigpYCBjYWxscyBhbmQgZm9ybWF0IHN0cmluZ3MuIEl0IGFsc28gZml4ZXMgc29tZSBwb3RlbnRpYWwgdW5kZXJmbG93cyBpbiBjb25uZWN0aW9uIHNldHVwIGZ1bmN0aW9ucy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgUkRNQSBsb2dpYyBhbmQgdmFyaW91cyBSRE1BIFVMUHMgKFVwcGVyIExheWVyIFByb3RvY29scykgd2hpY2ggY2FuIGJlIHRlc3RlZCB1c2luZyB0aGUgc29mdHdhcmUgUkRNQSBkcml2ZXIgKFJYRSkuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyBpbnRlZ2VyIG92ZXJmbG93L3VuZGVyZmxvdyBidWdzIHdlcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzMDI1MzkwYjA5MzU5ZTE5MDRkMjM5YTFiMjc0MTYxNDQ4NGJlNzI1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdW4gMTkgMjA6NDY6MjMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvY29yZS9jcS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvY3EuY1xuaW5kZXggM2Q3YjZjZGRkMTMxYzQuLmVlOTgxODhlNTdmYjVmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvY3EuY1xuKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2NvcmUvY3EuY1xuQEAgLTM5Myw4ICszOTMsNyBAQCBzdGF0aWMgaW50IGliX2FsbG9jX2NxcyhzdHJ1Y3QgaWJfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBucl9jcWVzLFxuIFx0ICogYSByZWFzb25hYmxlIGJhdGNoIHNpemUgc28gdGhhdCB3ZSBjYW4gc2hhcmUgQ1FzIGJldHdlZW5cbiBcdCAqIG11bHRpcGxlIHVzZXJzIGluc3RlYWQgb2YgYWxsb2NhdGluZyBhIGxhcmdlciBudW1iZXIgb2YgQ1FzLlxuIFx0ICovXG4tXHRucl9jcWVzID0gbWluX3QodW5zaWduZWQgaW50LCBkZXYtXHUwMDNlYXR0cnMubWF4X2NxZSxcbi1cdFx0XHRtYXgobnJfY3FlcywgSUJfTUFYX1NIQVJFRF9DUV9TWikpO1xuK1x0bnJfY3FlcyA9IG1pbihkZXYtXHUwMDNlYXR0cnMubWF4X2NxZSwgbWF4KG5yX2NxZXMsIElCX01BWF9TSEFSRURfQ1FfU1opKTtcbiBcdG5yX2NxcyA9IG1pbl90KHVuc2lnbmVkIGludCwgZGV2LVx1MDAzZW51bV9jb21wX3ZlY3RvcnMsIG51bV9vbmxpbmVfY3B1cygpKTtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIG5yX2NxczsgaSsrKSB7XG4gXHRcdGNxID0gaWJfYWxsb2NfY3EoZGV2LCBOVUxMLCBucl9jcWVzLCBpLCBwb2xsX2N0eCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FlZHIvdmVyYnMuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xZWRyL3ZlcmJzLmNcbmluZGV4IDY3OWFhNmYzYTYzYmM1Li5hODVhZDAxNzExMzQ4ZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xZWRyL3ZlcmJzLmNcbisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xZWRyL3ZlcmJzLmNcbkBAIC0xNTEsNyArMTUxLDcgQEAgaW50IHFlZHJfcXVlcnlfZGV2aWNlKHN0cnVjdCBpYl9kZXZpY2UgKmliZGV2LFxuIFx0YXR0ci1cdTAwM2VtYXhfcXBfaW5pdF9yZF9hdG9tID1cbiBcdCAgICAxIFx1MDAzY1x1MDAzYyAoZmxzKHFhdHRyLVx1MDAzZW1heF9xcF9yZXFfcmRfYXRvbWljX3Jlc2MpIC0gMSk7XG4gXHRhdHRyLVx1MDAzZW1heF9xcF9yZF9hdG9tID1cbi1cdCAgICBtaW4oMSBcdTAwM2NcdTAwM2MgKGZscyhxYXR0ci1cdTAwM2VtYXhfcXBfcmVzcF9yZF9hdG9taWNfcmVzYykgLSAxKSxcbitcdCAgICBtaW4oMVUgXHUwMDNjXHUwMDNjIChmbHMocWF0dHItXHUwMDNlbWF4X3FwX3Jlc3BfcmRfYXRvbWljX3Jlc2MpIC0gMSksXG4gXHRcdGF0dHItXHUwMDNlbWF4X3FwX2luaXRfcmRfYXRvbSk7XG4gXG4gXHRhdHRyLVx1MDAzZW1heF9zcnEgPSBxYXR0ci1cdTAwM2VtYXhfc3JxO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3FwLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jXG5pbmRleCBmM2RmZjFhZWE5NmFmYy4uN2EwNTI5YTE3OTkyYzggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jXG5AQCAtNjcsMjcgKzY3LDI3IEBAIHN0YXRpYyBpbnQgcnhlX3FwX2Noa19jYXAoc3RydWN0IHJ4ZV9kZXYgKnJ4ZSwgc3RydWN0IGliX3FwX2NhcCAqY2FwLFxuIFx0XHRcdCAgaW50IGhhc19zcnEpXG4ge1xuIFx0aWYgKGNhcC1cdTAwM2VtYXhfc2VuZF93ciBcdTAwM2UgcnhlLVx1MDAzZWF0dHIubWF4X3FwX3dyKSB7XG4tXHRcdHJ4ZV9kYmdfZGV2KHJ4ZSwgXCJpbnZhbGlkIHNlbmQgd3IgPSAldSBcdTAwM2UgJWRcXG5cIixcbi1cdFx0XHQgY2FwLVx1MDAzZW1heF9zZW5kX3dyLCByeGUtXHUwMDNlYXR0ci5tYXhfcXBfd3IpO1xuK1x0XHRyeGVfZGJnX2RldihyeGUsIFwiaW52YWxpZCBzZW5kIHdyID0gJXUgXHUwMDNlICV1XFxuXCIsXG4rXHRcdFx0ICAgIGNhcC1cdTAwM2VtYXhfc2VuZF93ciwgcnhlLVx1MDAzZWF0dHIubWF4X3FwX3dyKTtcbiBcdFx0Z290byBlcnIxO1xuIFx0fVxuIFxuIFx0aWYgKGNhcC1cdTAwM2VtYXhfc2VuZF9zZ2UgXHUwMDNlIHJ4ZS1cdTAwM2VhdHRyLm1heF9zZW5kX3NnZSkge1xuLVx0XHRyeGVfZGJnX2RldihyeGUsIFwiaW52YWxpZCBzZW5kIHNnZSA9ICV1IFx1MDAzZSAlZFxcblwiLFxuLVx0XHRcdCBjYXAtXHUwMDNlbWF4X3NlbmRfc2dlLCByeGUtXHUwMDNlYXR0ci5tYXhfc2VuZF9zZ2UpO1xuK1x0XHRyeGVfZGJnX2RldihyeGUsIFwiaW52YWxpZCBzZW5kIHNnZSA9ICV1IFx1MDAzZSAldVxcblwiLFxuK1x0XHRcdCAgICBjYXAtXHUwMDNlbWF4X3NlbmRfc2dlLCByeGUtXHUwMDNlYXR0ci5tYXhfc2VuZF9zZ2UpO1xuIFx0XHRnb3RvIGVycjE7XG4gXHR9XG4gXG4gXHRpZiAoIWhhc19zcnEpIHtcbiBcdFx0aWYgKGNhcC1cdTAwM2VtYXhfcmVjdl93ciBcdTAwM2UgcnhlLVx1MDAzZWF0dHIubWF4X3FwX3dyKSB7XG4tXHRcdFx0cnhlX2RiZ19kZXYocnhlLCBcImludmFsaWQgcmVjdiB3ciA9ICV1IFx1MDAzZSAlZFxcblwiLFxuLVx0XHRcdFx0IGNhcC1cdTAwM2VtYXhfcmVjdl93ciwgcnhlLVx1MDAzZWF0dHIubWF4X3FwX3dyKTtcbitcdFx0XHRyeGVfZGJnX2RldihyeGUsIFwiaW52YWxpZCByZWN2IHdyID0gJXUgXHUwMDNlICV1XFxuXCIsXG4rXHRcdFx0XHQgICAgY2FwLVx1MDAzZW1heF9yZWN2X3dyLCByeGUtXHUwMDNlYXR0ci5tYXhfcXBfd3IpO1xuIFx0XHRcdGdvdG8gZXJyMTtcbiBcdFx0fVxuIFxuIFx0XHRpZiAoY2FwLVx1MDAzZW1heF9yZWN2X3NnZSBcdTAwM2UgcnhlLVx1MDAzZWF0dHIubWF4X3JlY3Zfc2dlKSB7XG4tXHRcdFx0cnhlX2RiZ19kZXYocnhlLCBcImludmFsaWQgcmVjdiBzZ2UgPSAldSBcdTAwM2UgJWRcXG5cIixcbi1cdFx0XHRcdCBjYXAtXHUwMDNlbWF4X3JlY3Zfc2dlLCByeGUtXHUwMDNlYXR0ci5tYXhfcmVjdl9zZ2UpO1xuK1x0XHRcdHJ4ZV9kYmdfZGV2KHJ4ZSwgXCJpbnZhbGlkIHJlY3Ygc2dlID0gJXUgXHUwMDNlICV1XFxuXCIsXG4rXHRcdFx0XHQgICAgY2FwLVx1MDAzZW1heF9yZWN2X3NnZSwgcnhlLVx1MDAzZWF0dHIubWF4X3JlY3Zfc2dlKTtcbiBcdFx0XHRnb3RvIGVycjE7XG4gXHRcdH1cbiBcdH1cbkBAIC01MzcsOSArNTM3LDkgQEAgaW50IHJ4ZV9xcF9jaGtfYXR0cihzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgcnhlX3FwICpxcCxcbiBcbiBcdGlmIChtYXNrIFx1MDAyNiBJQl9RUF9NQVhfUVBfUkRfQVRPTUlDKSB7XG4gXHRcdGlmIChhdHRyLVx1MDAzZW1heF9yZF9hdG9taWMgXHUwMDNlIHJ4ZS1cdTAwM2VhdHRyLm1heF9xcF9yZF9hdG9tKSB7XG4tXHRcdFx0cnhlX2RiZ19xcChxcCwgXCJpbnZhbGlkIG1heF9yZF9hdG9taWMgJWQgXHUwMDNlICVkXFxuXCIsXG4tXHRcdFx0XHQgYXR0ci1cdTAwM2VtYXhfcmRfYXRvbWljLFxuLVx0XHRcdFx0IHJ4ZS1cdTAwM2VhdHRyLm1heF9xcF9yZF9hdG9tKTtcbitcdFx0XHRyeGVfZGJnX3FwKHFwLCBcImludmFsaWQgbWF4X3JkX2F0b21pYyAldSBcdTAwM2UgJXVcXG5cIixcbitcdFx0XHRcdCAgIGF0dHItXHUwMDNlbWF4X3JkX2F0b21pYyxcbitcdFx0XHRcdCAgIHJ4ZS1cdTAwM2VhdHRyLm1heF9xcF9yZF9hdG9tKTtcbiBcdFx0XHRnb3RvIGVycjE7XG4gXHRcdH1cbiBcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9zcnEuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3NycS5jXG5pbmRleCBjOWE3Y2QzODk1M2QzMS4uNzQ5MDRhNmZkZjJiMjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9zcnEuY1xuKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfc3JxLmNcbkBAIC0xMyw4ICsxMyw4IEBAIGludCByeGVfc3JxX2Noa19pbml0KHN0cnVjdCByeGVfZGV2ICpyeGUsIHN0cnVjdCBpYl9zcnFfaW5pdF9hdHRyICppbml0KVxuIFx0c3RydWN0IGliX3NycV9hdHRyICphdHRyID0gXHUwMDI2aW5pdC1cdTAwM2VhdHRyO1xuIFxuIFx0aWYgKGF0dHItXHUwMDNlbWF4X3dyIFx1MDAzZSByeGUtXHUwMDNlYXR0ci5tYXhfc3JxX3dyKSB7XG4tXHRcdHJ4ZV9kYmdfZGV2KHJ4ZSwgXCJtYXhfd3IoJWQpIFx1MDAzZSBtYXhfc3JxX3dyKCVkKVxcblwiLFxuLVx0XHRcdGF0dHItXHUwMDNlbWF4X3dyLCByeGUtXHUwMDNlYXR0ci5tYXhfc3JxX3dyKTtcbitcdFx0cnhlX2RiZ19kZXYocnhlLCBcIm1heF93cigldSkgXHUwMDNlIG1heF9zcnFfd3IoJXUpXFxuXCIsXG4rXHRcdFx0ICAgIGF0dHItXHUwMDNlbWF4X3dyLCByeGUtXHUwMDNlYXR0ci5tYXhfc3JxX3dyKTtcbiBcdFx0Z290byBlcnIxO1xuIFx0fVxuIFxuQEAgLTI3LDggKzI3LDggQEAgaW50IHJ4ZV9zcnFfY2hrX2luaXQoc3RydWN0IHJ4ZV9kZXYgKnJ4ZSwgc3RydWN0IGliX3NycV9pbml0X2F0dHIgKmluaXQpXG4gXHRcdGF0dHItXHUwMDNlbWF4X3dyID0gUlhFX01JTl9TUlFfV1I7XG4gXG4gXHRpZiAoYXR0ci1cdTAwM2VtYXhfc2dlIFx1MDAzZSByeGUtXHUwMDNlYXR0ci5tYXhfc3JxX3NnZSkge1xuLVx0XHRyeGVfZGJnX2RldihyeGUsIFwibWF4X3NnZSglZCkgXHUwMDNlIG1heF9zcnFfc2dlKCVkKVxcblwiLFxuLVx0XHRcdGF0dHItXHUwMDNlbWF4X3NnZSwgcnhlLVx1MDAzZWF0dHIubWF4X3NycV9zZ2UpO1xuK1x0XHRyeGVfZGJnX2RldihyeGUsIFwibWF4X3NnZSgldSkgXHUwMDNlIG1heF9zcnFfc2dlKCV1KVxcblwiLFxuK1x0XHRcdCAgICBhdHRyLVx1MDAzZW1heF9zZ2UsIHJ4ZS1cdTAwM2VhdHRyLm1heF9zcnFfc2dlKTtcbiBcdFx0Z290byBlcnIxO1xuIFx0fVxuIFxuQEAgLTEwNyw4ICsxMDcsOCBAQCBpbnQgcnhlX3NycV9jaGtfYXR0cihzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgcnhlX3NycSAqc3JxLFxuIFxuIFx0aWYgKG1hc2sgXHUwMDI2IElCX1NSUV9NQVhfV1IpIHtcbiBcdFx0aWYgKGF0dHItXHUwMDNlbWF4X3dyIFx1MDAzZSByeGUtXHUwMDNlYXR0ci5tYXhfc3JxX3dyKSB7XG4tXHRcdFx0cnhlX2RiZ19zcnEoc3JxLCBcIm1heF93ciglZCkgXHUwMDNlIG1heF9zcnFfd3IoJWQpXFxuXCIsXG4tXHRcdFx0XHRhdHRyLVx1MDAzZW1heF93ciwgcnhlLVx1MDAzZWF0dHIubWF4X3NycV93cik7XG4rXHRcdFx0cnhlX2RiZ19zcnEoc3JxLCBcIm1heF93cigldSkgXHUwMDNlIG1heF9zcnFfd3IoJXUpXFxuXCIsXG4rXHRcdFx0XHQgICAgYXR0ci1cdTAwM2VtYXhfd3IsIHJ4ZS1cdTAwM2VhdHRyLm1heF9zcnFfd3IpO1xuIFx0XHRcdGdvdG8gZXJyMTtcbiBcdFx0fVxuIFxuQEAgLTEyOSw4ICsxMjksOCBAQCBpbnQgcnhlX3NycV9jaGtfYXR0cihzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgcnhlX3NycSAqc3JxLFxuIFxuIFx0aWYgKG1hc2sgXHUwMDI2IElCX1NSUV9MSU1JVCkge1xuIFx0XHRpZiAoYXR0ci1cdTAwM2VzcnFfbGltaXQgXHUwMDNlIHJ4ZS1cdTAwM2VhdHRyLm1heF9zcnFfd3IpIHtcbi1cdFx0XHRyeGVfZGJnX3NycShzcnEsIFwic3JxX2xpbWl0KCVkKSBcdTAwM2UgbWF4X3NycV93ciglZClcXG5cIixcbi1cdFx0XHRcdGF0dHItXHUwMDNlc3JxX2xpbWl0LCByeGUtXHUwMDNlYXR0ci5tYXhfc3JxX3dyKTtcbitcdFx0XHRyeGVfZGJnX3NycShzcnEsIFwic3JxX2xpbWl0KCV1KSBcdTAwM2UgbWF4X3NycV93cigldSlcXG5cIixcbitcdFx0XHRcdCAgICBhdHRyLVx1MDAzZXNycV9saW1pdCwgcnhlLVx1MDAzZWF0dHIubWF4X3NycV93cik7XG4gXHRcdFx0Z290byBlcnIxO1xuIFx0XHR9XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYl9jbS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYl9jbS5jXG5pbmRleCA1N2ZlYzg4YTE2MjkwYS4uZWQwNTkyODk4Mzg0ZDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX2NtLmNcbisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfY20uY1xuQEAgLTEwNzEsOCArMTA3MSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaWJfcXAgKmlwb2liX2NtX2NyZWF0ZV90eF9xcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgaXBvaWJfXG4gXHRzdHJ1Y3QgaWJfcXAgKnR4X3FwO1xuIFxuIFx0aWYgKGRldi1cdTAwM2VmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9TRylcbi1cdFx0YXR0ci5jYXAubWF4X3NlbmRfc2dlID0gbWluX3QodTMyLCBwcml2LVx1MDAzZWNhLVx1MDAzZWF0dHJzLm1heF9zZW5kX3NnZSxcbi1cdFx0XHRcdFx0ICAgICAgTUFYX1NLQl9GUkFHUyArIDEpO1xuK1x0XHRhdHRyLmNhcC5tYXhfc2VuZF9zZ2UgPSBtaW4ocHJpdi1cdTAwM2VjYS1cdTAwM2VhdHRycy5tYXhfc2VuZF9zZ2UsIE1BWF9TS0JfRlJBR1MgKyAxKTtcbiBcbiBcdHR4X3FwID0gaWJfY3JlYXRlX3FwKHByaXYtXHUwMDNlcGQsIFx1MDAyNmF0dHIpO1xuIFx0dHgtXHUwMDNlbWF4X3NlbmRfc2dlID0gYXR0ci5jYXAubWF4X3NlbmRfc2dlO1xuQEAgLTE1ODIsNyArMTU4MSw4IEBAIHN0YXRpYyB2b2lkIGlwb2liX2NtX2NyZWF0ZV9zcnEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgaW50IG1heF9zZ2UpXG4gaW50IGlwb2liX2NtX2Rldl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4ge1xuIFx0c3RydWN0IGlwb2liX2Rldl9wcml2ICpwcml2ID0gaXBvaWJfcHJpdihkZXYpO1xuLVx0aW50IG1heF9zcnFfc2dlLCBpO1xuK1x0dTMyIG1heF9zcnFfc2dlO1xuK1x0aW50IGk7XG4gXHR1OCBhZGRyO1xuIFxuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2cHJpdi1cdTAwM2VjbS5wYXNzaXZlX2lkcyk7XG5AQCAtMTYwMCw5ICsxNjAwLDkgQEAgaW50IGlwb2liX2NtX2Rldl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gXHRza2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNnByaXYtXHUwMDNlY20uc2tiX3F1ZXVlKTtcbiBcbi1cdGlwb2liX2RiZyhwcml2LCBcIm1heF9zcnFfc2dlPSVkXFxuXCIsIHByaXYtXHUwMDNlY2EtXHUwMDNlYXR0cnMubWF4X3NycV9zZ2UpO1xuK1x0aXBvaWJfZGJnKHByaXYsIFwibWF4X3NycV9zZ2U9JXVcXG5cIiwgcHJpdi1cdTAwM2VjYS1cdTAwM2VhdHRycy5tYXhfc3JxX3NnZSk7XG4gXG4tXHRtYXhfc3JxX3NnZSA9IG1pbl90KGludCwgSVBPSUJfQ01fUlhfU0csIHByaXYtXHUwMDNlY2EtXHUwMDNlYXR0cnMubWF4X3NycV9zZ2UpO1xuK1x0bWF4X3NycV9zZ2UgPSBtaW4ocHJpdi1cdTAwM2VjYS1cdTAwM2VhdHRycy5tYXhfc3JxX3NnZSwgSVBPSUJfQ01fUlhfU0cpO1xuIFx0aXBvaWJfY21fY3JlYXRlX3NycShkZXYsIG1heF9zcnFfc2dlKTtcbiBcdGlmIChpcG9pYl9jbV9oYXNfc3JxKGRldikpIHtcbiBcdFx0cHJpdi1cdTAwM2VjbS5tYXhfY21fbXR1ID0gbWF4X3NycV9zZ2UgKiBQQUdFX1NJWkUgLSAweDEwO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfdmVyYnMuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvaXBvaWJfdmVyYnMuY1xuaW5kZXggM2VkMWVhNTY2NjkwZGQuLjI0OTA2OTZhMWFhYmM4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9pcG9pYl92ZXJicy5jXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL2lwb2liX3ZlcmJzLmNcbkBAIC0xNDcsOCArMTQ3LDcgQEAgaW50IGlwb2liX3RyYW5zcG9ydF9kZXZfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgaWJfZGV2aWNlICpjYSlcbiBcdFx0LmNhcCA9IHtcbiBcdFx0XHQubWF4X3NlbmRfd3IgID0gaXBvaWJfc2VuZHFfc2l6ZSxcbiBcdFx0XHQubWF4X3JlY3Zfd3IgID0gaXBvaWJfcmVjdnFfc2l6ZSxcbi1cdFx0XHQubWF4X3NlbmRfc2dlID0gbWluX3QodTMyLCBwcml2LVx1MDAzZWNhLVx1MDAzZWF0dHJzLm1heF9zZW5kX3NnZSxcbi1cdFx0XHRcdFx0ICAgICAgTUFYX1NLQl9GUkFHUyArIDEpLFxuK1x0XHRcdC5tYXhfc2VuZF9zZ2UgPSBtaW4ocHJpdi1cdTAwM2VjYS1cdTAwM2VhdHRycy5tYXhfc2VuZF9zZ2UsIE1BWF9TS0JfRlJBR1MgKyAxKSxcbiBcdFx0XHQubWF4X3JlY3Zfc2dlID0gSVBPSUJfVURfUlhfU0dcbiBcdFx0fSxcbiBcdFx0LnNxX3NpZ190eXBlID0gSUJfU0lHTkFMX0FMTF9XUixcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvaXNlcl92ZXJicy5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL2lzZXJfdmVyYnMuY1xuaW5kZXggZjAzYjNiYjNjMGM0YzEuLjU1ZmU2OGU1YjgzNzVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL2lzZXJfdmVyYnMuY1xuKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL2lzZXJfdmVyYnMuY1xuQEAgLTI0NCw4ICsyNDQsNyBAQCBzdGF0aWMgaW50IGlzZXJfY3JlYXRlX2liX2Nvbm5fcmVzKHN0cnVjdCBpYl9jb25uICppYl9jb25uKVxuIFx0XHRtYXhfc2VuZF93ciA9IElTRVJfUVBfU0lHX01BWF9SRVFfRFRPUyArIDE7XG4gXHRlbHNlXG4gXHRcdG1heF9zZW5kX3dyID0gSVNFUl9RUF9NQVhfUkVRX0RUT1MgKyAxO1xuLVx0bWF4X3NlbmRfd3IgPSBtaW5fdCh1bnNpZ25lZCBpbnQsIG1heF9zZW5kX3dyLFxuLVx0XHRcdCAgICAodW5zaWduZWQgaW50KWliX2Rldi1cdTAwM2VhdHRycy5tYXhfcXBfd3IpO1xuK1x0bWF4X3NlbmRfd3IgPSBtaW4obWF4X3NlbmRfd3IsIGliX2Rldi1cdTAwM2VhdHRycy5tYXhfcXBfd3IpO1xuIFxuIFx0Y3Ffc2l6ZSA9IG1heF9zZW5kX3dyICsgSVNFUl9RUF9NQVhfUkVDVl9EVE9TO1xuIFx0aWJfY29ubi1cdTAwM2VjcSA9IGliX2NxX3Bvb2xfZ2V0KGliX2RldiwgY3Ffc2l6ZSwgLTEsIElCX1BPTExfU09GVElSUSk7XG5AQCAtNTg5LDcgKzU4OCw3IEBAIHN0YXRpYyB2b2lkIGlzZXJfcm91dGVfaGFuZGxlcihzdHJ1Y3QgcmRtYV9jbV9pZCAqY21hX2lkKVxuIFx0XHRnb3RvIGZhaWx1cmU7XG4gXG4gXHRtZW1zZXQoXHUwMDI2Y29ubl9wYXJhbSwgMCwgc2l6ZW9mIGNvbm5fcGFyYW0pO1xuLVx0Y29ubl9wYXJhbS5yZXNwb25kZXJfcmVzb3VyY2VzID0gaWJfZGV2LVx1MDAzZWF0dHJzLm1heF9xcF9yZF9hdG9tO1xuK1x0Y29ubl9wYXJhbS5yZXNwb25kZXJfcmVzb3VyY2VzID0gbWluKGliX2Rldi1cdTAwM2VhdHRycy5tYXhfcXBfcmRfYXRvbSwgVThfTUFYKTtcbiBcdGNvbm5fcGFyYW0uaW5pdGlhdG9yX2RlcHRoID0gMTtcbiBcdGNvbm5fcGFyYW0ucmV0cnlfY291bnQgPSA3O1xuIFx0Y29ubl9wYXJhbS5ybnJfcmV0cnlfY291bnQgPSA2O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvaWJfaXNlcnQuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvaWJfaXNlcnQuY1xuaW5kZXggMTAxNWE1MWY3NTBhZjQuLjQ2OTE4NDViZjgxNWY5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VydC9pYl9pc2VydC5jXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXJ0L2liX2lzZXJ0LmNcbkBAIC0yMTQsOSArMjE0LDkgQEAgaXNlcnRfY3JlYXRlX2RldmljZV9pYl9yZXMoc3RydWN0IGlzZXJ0X2RldmljZSAqZGV2aWNlKVxuIFx0c3RydWN0IGliX2RldmljZSAqaWJfZGV2ID0gZGV2aWNlLVx1MDAzZWliX2RldmljZTtcbiBcdGludCByZXQ7XG4gXG4tXHRpc2VydF9kYmcoXCJkZXZhdHRyLVx1MDAzZW1heF9zZW5kX3NnZTogJWQgZGV2YXR0ci1cdTAwM2VtYXhfcmVjdl9zZ2UgJWRcXG5cIixcbitcdGlzZXJ0X2RiZyhcImRldmF0dHItXHUwMDNlbWF4X3NlbmRfc2dlOiAldSBkZXZhdHRyLVx1MDAzZW1heF9yZWN2X3NnZSAldVxcblwiLFxuIFx0XHQgIGliX2Rldi1cdTAwM2VhdHRycy5tYXhfc2VuZF9zZ2UsIGliX2Rldi1cdTAwM2VhdHRycy5tYXhfcmVjdl9zZ2UpO1xuLVx0aXNlcnRfZGJnKFwiZGV2YXR0ci1cdTAwM2VtYXhfc2dlX3JkOiAlZFxcblwiLCBpYl9kZXYtXHUwMDNlYXR0cnMubWF4X3NnZV9yZCk7XG4rXHRpc2VydF9kYmcoXCJkZXZhdHRyLVx1MDAzZW1heF9zZ2VfcmQ6ICV1XFxuXCIsIGliX2Rldi1cdTAwM2VhdHRycy5tYXhfc2dlX3JkKTtcbiBcbiBcdGRldmljZS1cdTAwM2VwZCA9IGliX2FsbG9jX3BkKGliX2RldiwgMCk7XG4gXHRpZiAoSVNfRVJSKGRldmljZS1cdTAwM2VwZCkpIHtcbkBAIC0zODEsOCArMzgxLDcgQEAgaXNlcnRfc2V0X25lZ29fcGFyYW1zKHN0cnVjdCBpc2VydF9jb25uICppc2VydF9jb25uLFxuIFx0c3RydWN0IGliX2RldmljZV9hdHRyICphdHRyID0gXHUwMDI2aXNlcnRfY29ubi1cdTAwM2VkZXZpY2UtXHUwMDNlaWJfZGV2aWNlLVx1MDAzZWF0dHJzO1xuIFxuIFx0LyogU2V0IG1heCBpbmZsaWdodCBSRE1BIFJFQUQgcmVxdWVzdHMgKi9cbi1cdGlzZXJ0X2Nvbm4tXHUwMDNlaW5pdGlhdG9yX2RlcHRoID0gbWluX3QodTgsIHBhcmFtLVx1MDAzZWluaXRpYXRvcl9kZXB0aCxcbi1cdFx0XHRcdGF0dHItXHUwMDNlbWF4X3FwX2luaXRfcmRfYXRvbSk7XG4rXHRpc2VydF9jb25uLVx1MDAzZWluaXRpYXRvcl9kZXB0aCA9IG1pbihwYXJhbS1cdTAwM2Vpbml0aWF0b3JfZGVwdGgsIGF0dHItXHUwMDNlbWF4X3FwX2luaXRfcmRfYXRvbSk7XG4gXHRpc2VydF9kYmcoXCJVc2luZyBpbml0aWF0b3JfZGVwdGg6ICV1XFxuXCIsIGlzZXJ0X2Nvbm4tXHUwMDNlaW5pdGlhdG9yX2RlcHRoKTtcbiBcbiBcdGlmIChwYXJhbS1cdTAwM2Vwcml2YXRlX2RhdGEpIHtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvcnRycy1jbHQuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9ydHJzLWNsdC5jXG5pbmRleCBlMzUxNTUyNzMzZGYyMy4uODBiMDg2OTdmOTZiNTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvcnRycy1jbHQuY1xuKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtY2x0LmNcbkBAIC0xNjgxLDggKzE2ODEsNyBAQCBzdGF0aWMgaW50IGNyZWF0ZV9jb25fY3FfcXAoc3RydWN0IHJ0cnNfY2x0X2NvbiAqY29uKVxuIFx0XHQgKiArIDIgZm9yIGRyYWluIGFuZCBoZWFydGJlYXRcbiBcdFx0ICogaW4gY2FzZSBxcCBnZXRzIGludG8gZXJyb3Igc3RhdGUuXG4gXHRcdCAqL1xuLVx0XHRtYXhfc2VuZF93ciA9XG4tXHRcdFx0bWluX3QoaW50LCB3cl9saW1pdCwgU0VSVklDRV9DT05fUVVFVUVfREVQVEggKiAyICsgMik7XG4rXHRcdG1heF9zZW5kX3dyID0gbWluKHdyX2xpbWl0LCBTRVJWSUNFX0NPTl9RVUVVRV9ERVBUSCAqIDIgKyAyKTtcbiBcdFx0bWF4X3JlY3Zfd3IgPSBtYXhfc2VuZF93cjtcbiBcdH0gZWxzZSB7XG4gXHRcdC8qXG5AQCAtMTY5OCwxMSArMTY5Nyw5IEBAIHN0YXRpYyBpbnQgY3JlYXRlX2Nvbl9jcV9xcChzdHJ1Y3QgcnRyc19jbHRfY29uICpjb24pXG4gXHRcdHdyX2xpbWl0ID0gY2x0X3BhdGgtXHUwMDNlcy5kZXYtXHUwMDNlaWJfZGV2LVx1MDAzZWF0dHJzLm1heF9xcF93cjtcbiBcdFx0LyogU2hhcmVkIGJldHdlZW4gY29ubmVjdGlvbnMgKi9cbiBcdFx0Y2x0X3BhdGgtXHUwMDNlcy5kZXZfcmVmKys7XG4tXHRcdG1heF9zZW5kX3dyID0gbWluX3QoaW50LCB3cl9saW1pdCxcbi1cdFx0XHQgICAgICAvKiBRRCAqIChSRVEgKyBSU1AgKyBGUiBSRUdTIG9yIElOVlMpICsgZHJhaW4gKi9cbi1cdFx0XHQgICAgICBjbHRfcGF0aC1cdTAwM2VxdWV1ZV9kZXB0aCAqIDQgKyAxKTtcbi1cdFx0bWF4X3JlY3Zfd3IgPSBtaW5fdChpbnQsIHdyX2xpbWl0LFxuLVx0XHRcdCAgICAgIGNsdF9wYXRoLVx1MDAzZXF1ZXVlX2RlcHRoICogMyArIDEpO1xuK1x0XHQvKiBRRCAqIChSRVEgKyBSU1AgKyBGUiBSRUdTIG9yIElOVlMpICsgZHJhaW4gKi9cbitcdFx0bWF4X3NlbmRfd3IgPSBtaW4od3JfbGltaXQsIGNsdF9wYXRoLVx1MDAzZXF1ZXVlX2RlcHRoICogNCArIDEpO1xuK1x0XHRtYXhfcmVjdl93ciA9IG1pbih3cl9saW1pdCwgY2x0X3BhdGgtXHUwMDNlcXVldWVfZGVwdGggKiAzICsgMSk7XG4gXHRcdG1heF9zZW5kX3NnZSA9IDI7XG4gXHR9XG4gXHRhdG9taWNfc2V0KFx1MDAyNmNvbi1cdTAwM2VjLnNxX3dyX2F2YWlsLCBtYXhfc2VuZF93cik7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtc3J2LmMgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvcnRycy1zcnYuY1xuaW5kZXggNjQ4MmFkODU5YmQxMDguLmY1YTY4OTAyMzViY2M0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL3J0cnMtc3J2LmNcbisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9ydHJzLXNydi5jXG5AQCAtMTczMSwyMSArMTczMSwxNiBAQCBzdGF0aWMgaW50IGNyZWF0ZV9jb24oc3RydWN0IHJ0cnNfc3J2X3BhdGggKnNydl9wYXRoLFxuIFx0XHQgKiBBbGwgcmVjZWl2ZSBhbmQgYWxsIHNlbmQgKGVhY2ggcmVxdWlyaW5nIGludmFsaWRhdGUpXG4gXHRcdCAqICsgMiBmb3IgZHJhaW4gYW5kIGhlYXJ0YmVhdFxuIFx0XHQgKi9cbi1cdFx0bWF4X3NlbmRfd3IgPSBtaW5fdChpbnQsIHdyX2xpbWl0LFxuLVx0XHRcdFx0ICAgIFNFUlZJQ0VfQ09OX1FVRVVFX0RFUFRIICogMiArIDIpO1xuK1x0XHRtYXhfc2VuZF93ciA9IG1pbih3cl9saW1pdCwgU0VSVklDRV9DT05fUVVFVUVfREVQVEggKiAyICsgMik7XG4gXHRcdG1heF9yZWN2X3dyID0gbWF4X3NlbmRfd3I7XG4gXHRcdHMtXHUwMDNlc2lnbmFsX2ludGVydmFsID0gbWluX25vdF96ZXJvKHNydi1cdTAwM2VxdWV1ZV9kZXB0aCxcbiBcdFx0XHRcdFx0XHQgIChzaXplX3QpU0VSVklDRV9DT05fUVVFVUVfREVQVEgpO1xuIFx0fSBlbHNlIHtcbiBcdFx0Lyogd2hlbiBhbHdheXNfaW52bGFpZGF0ZSBlbmFsYmVkLCB3ZSBuZWVkIGxpbnYrcmludittcitpbW0gKi9cbiBcdFx0aWYgKGFsd2F5c19pbnZhbGlkYXRlKVxuLVx0XHRcdG1heF9zZW5kX3dyID1cbi1cdFx0XHRcdG1pbl90KGludCwgd3JfbGltaXQsXG4tXHRcdFx0XHQgICAgICBzcnYtXHUwMDNlcXVldWVfZGVwdGggKiAoMSArIDQpICsgMSk7XG4rXHRcdFx0bWF4X3NlbmRfd3IgPSBtaW4od3JfbGltaXQsIHNydi1cdTAwM2VxdWV1ZV9kZXB0aCAqICgxICsgNCkgKyAxKTtcbiBcdFx0ZWxzZVxuLVx0XHRcdG1heF9zZW5kX3dyID1cbi1cdFx0XHRcdG1pbl90KGludCwgd3JfbGltaXQsXG4tXHRcdFx0XHQgICAgICBzcnYtXHUwMDNlcXVldWVfZGVwdGggKiAoMSArIDIpICsgMSk7XG4rXHRcdFx0bWF4X3NlbmRfd3IgPSBtaW4od3JfbGltaXQsIHNydi1cdTAwM2VxdWV1ZV9kZXB0aCAqICgxICsgMikgKyAxKTtcbiBcbiBcdFx0bWF4X3JlY3Zfd3IgPSBzcnYtXHUwMDNlcXVldWVfZGVwdGggKyAxO1xuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL2liX3NycC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnAvaWJfc3JwLmNcbmluZGV4IGFjYmQ3ODdkZTI2NWI1Li4wY2FlYmJjMjgxMGZmMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL2liX3NycC5jXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycC9pYl9zcnAuY1xuQEAgLTU1Nyw3ICs1NTcsNyBAQCBzdGF0aWMgaW50IHNycF9jcmVhdGVfY2hfaWIoc3RydWN0IHNycF9yZG1hX2NoICpjaClcbiBcdGluaXRfYXR0ci1cdTAwM2VjYXAubWF4X3NlbmRfd3IgICAgID0gbSAqIHRhcmdldC1cdTAwM2VxdWV1ZV9zaXplO1xuIFx0aW5pdF9hdHRyLVx1MDAzZWNhcC5tYXhfcmVjdl93ciAgICAgPSB0YXJnZXQtXHUwMDNlcXVldWVfc2l6ZSArIDE7XG4gXHRpbml0X2F0dHItXHUwMDNlY2FwLm1heF9yZWN2X3NnZSAgICA9IDE7XG4tXHRpbml0X2F0dHItXHUwMDNlY2FwLm1heF9zZW5kX3NnZSAgICA9IG1pbihTUlBfTUFYX1NHRSwgYXR0ci1cdTAwM2VtYXhfc2VuZF9zZ2UpO1xuK1x0aW5pdF9hdHRyLVx1MDAzZWNhcC5tYXhfc2VuZF9zZ2UgICAgPSBtaW4oYXR0ci1cdTAwM2VtYXhfc2VuZF9zZ2UsIFNSUF9NQVhfU0dFKTtcbiBcdGluaXRfYXR0ci1cdTAwM2VzcV9zaWdfdHlwZSAgICAgICAgID0gSUJfU0lHTkFMX1JFUV9XUjtcbiBcdGluaXRfYXR0ci1cdTAwM2VxcF90eXBlICAgICAgICAgICAgID0gSUJfUVBUX1JDO1xuIFx0aW5pdF9hdHRyLVx1MDAzZXNlbmRfY3EgICAgICAgICAgICAgPSBzZW5kX2NxO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwdC9pYl9zcnB0LmMgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycHQvaWJfc3JwdC5jXG5pbmRleCA5YWVjNWQ4MDExN2YxZi4uYTRlNGZlYmE0YTAyNTMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycHQvaWJfc3JwdC5jXG4rKysgYi9kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycHQvaWJfc3JwdC5jXG5AQCAtNzcsOCArNzcsOCBAQCBtb2R1bGVfcGFyYW0oc3JwX21heF9yZXFfc2l6ZSwgaW50LCAwNDQ0KTtcbiBNT0RVTEVfUEFSTV9ERVNDKHNycF9tYXhfcmVxX3NpemUsXG4gXHRcdCBcIk1heGltdW0gc2l6ZSBvZiBTUlAgcmVxdWVzdCBtZXNzYWdlcyBpbiBieXRlcy5cIik7XG4gXG4tc3RhdGljIGludCBzcnB0X3NycV9zaXplID0gREVGQVVMVF9TUlBUX1NSUV9TSVpFO1xuLW1vZHVsZV9wYXJhbShzcnB0X3NycV9zaXplLCBpbnQsIDA0NDQpO1xuK3N0YXRpYyB1bnNpZ25lZCBpbnQgc3JwdF9zcnFfc2l6ZSA9IERFRkFVTFRfU1JQVF9TUlFfU0laRTtcbittb2R1bGVfcGFyYW0oc3JwdF9zcnFfc2l6ZSwgdWludCwgMDQ0NCk7XG4gTU9EVUxFX1BBUk1fREVTQyhzcnB0X3NycV9zaXplLFxuIFx0XHQgXCJTaGFyZWQgcmVjZWl2ZSBxdWV1ZSAoU1JRKSBzaXplLlwiKTtcbiBcbkBAIC00MDUsOCArNDA1LDcgQEAgc3RhdGljIHZvaWQgc3JwdF9nZXRfaW9jKHN0cnVjdCBzcnB0X3BvcnQgKnNwb3J0LCB1MzIgc2xvdCxcbiBcdGlmIChzZGV2LVx1MDAzZXVzZV9zcnEpXG4gXHRcdHNlbmRfcXVldWVfZGVwdGggPSBzZGV2LVx1MDAzZXNycV9zaXplO1xuIFx0ZWxzZVxuLVx0XHRzZW5kX3F1ZXVlX2RlcHRoID0gbWluKE1BWF9TUlBUX1JRX1NJWkUsXG4tXHRcdFx0XHQgICAgICAgc2Rldi1cdTAwM2VkZXZpY2UtXHUwMDNlYXR0cnMubWF4X3FwX3dyKTtcbitcdFx0c2VuZF9xdWV1ZV9kZXB0aCA9IG1pbihzZGV2LVx1MDAzZWRldmljZS1cdTAwM2VhdHRycy5tYXhfcXBfd3IsIE1BWF9TUlBUX1JRX1NJWkUpO1xuIFxuIFx0bWVtc2V0KGlvY3AsIDAsIHNpemVvZigqaW9jcCkpO1xuIFx0c3RyY3B5KGlvY3AtXHUwMDNlaWRfc3RyaW5nLCBTUlBUX0lEX1NUUklORyk7XG5AQCAtMTg1MCw3ICsxODQ5LDcgQEAgc3RhdGljIGludCBzcnB0X2NyZWF0ZV9jaF9pYihzdHJ1Y3Qgc3JwdF9yZG1hX2NoICpjaClcbiBcdHN0cnVjdCBzcnB0X3BvcnQgKnNwb3J0ID0gY2gtXHUwMDNlc3BvcnQ7XG4gXHRzdHJ1Y3Qgc3JwdF9kZXZpY2UgKnNkZXYgPSBzcG9ydC1cdTAwM2VzZGV2O1xuIFx0Y29uc3Qgc3RydWN0IGliX2RldmljZV9hdHRyICphdHRycyA9IFx1MDAyNnNkZXYtXHUwMDNlZGV2aWNlLVx1MDAzZWF0dHJzO1xuLVx0aW50IHNxX3NpemUgPSBzcG9ydC1cdTAwM2Vwb3J0X2F0dHJpYi5zcnBfc3Ffc2l6ZTtcbitcdHUzMiBzcV9zaXplID0gc3BvcnQtXHUwMDNlcG9ydF9hdHRyaWIuc3JwX3NxX3NpemU7XG4gXHRpbnQgaSwgcmV0O1xuIFxuIFx0V0FSTl9PTihjaC1cdTAwM2VycV9zaXplIFx1MDAzYyAxKTtcbkBAIC0xOTExLDEzICsxOTEwLDEzIEBAIHN0YXRpYyBpbnQgc3JwdF9jcmVhdGVfY2hfaWIoc3RydWN0IHNycHRfcmRtYV9jaCAqY2gpXG4gXHRcdGJvb2wgcmV0cnkgPSBzcV9zaXplIFx1MDAzZSBNSU5fU1JQVF9TUV9TSVpFO1xuIFxuIFx0XHRpZiAocmV0cnkpIHtcbi1cdFx0XHRwcl9kZWJ1ZyhcImZhaWxlZCB0byBjcmVhdGUgcXVldWUgcGFpciB3aXRoIHNxX3NpemUgPSAlZCAoJWQpIC0gcmV0cnlpbmdcXG5cIixcbitcdFx0XHRwcl9kZWJ1ZyhcImZhaWxlZCB0byBjcmVhdGUgcXVldWUgcGFpciB3aXRoIHNxX3NpemUgPSAldSAoJWQpIC0gcmV0cnlpbmdcXG5cIixcbiBcdFx0XHRcdCBzcV9zaXplLCByZXQpO1xuIFx0XHRcdGliX2NxX3Bvb2xfcHV0KGNoLVx1MDAzZWNxLCBjaC1cdTAwM2VjcV9zaXplKTtcbiBcdFx0XHRzcV9zaXplID0gbWF4KHNxX3NpemUgLyAyLCBNSU5fU1JQVF9TUV9TSVpFKTtcbiBcdFx0XHRnb3RvIHJldHJ5O1xuIFx0XHR9IGVsc2Uge1xuLVx0XHRcdHByX2VycihcImZhaWxlZCB0byBjcmVhdGUgcXVldWUgcGFpciB3aXRoIHNxX3NpemUgPSAlZCAoJWQpXFxuXCIsXG4rXHRcdFx0cHJfZXJyKFwiZmFpbGVkIHRvIGNyZWF0ZSBxdWV1ZSBwYWlyIHdpdGggc3Ffc2l6ZSA9ICV1ICglZClcXG5cIixcbiBcdFx0XHQgICAgICAgc3Ffc2l6ZSwgcmV0KTtcbiBcdFx0XHRnb3RvIGVycl9kZXN0cm95X2NxO1xuIFx0XHR9XG5AQCAtMTkyNSw3ICsxOTI0LDcgQEAgc3RhdGljIGludCBzcnB0X2NyZWF0ZV9jaF9pYihzdHJ1Y3Qgc3JwdF9yZG1hX2NoICpjaClcbiBcbiBcdGF0b21pY19zZXQoXHUwMDI2Y2gtXHUwMDNlc3Ffd3JfYXZhaWwsIHFwX2luaXQtXHUwMDNlY2FwLm1heF9zZW5kX3dyKTtcbiBcbi1cdHByX2RlYnVnKFwiJXM6IG1heF9jcWU9ICVkIG1heF9zZ2U9ICVkIHNxX3NpemUgPSAlZCBjaD0gJXBcXG5cIixcbitcdHByX2RlYnVnKFwiJXM6IG1heF9jcWU9ICVkIG1heF9zZ2U9ICVkIHNxX3NpemUgPSAldSBjaD0gJXBcXG5cIixcbiBcdFx0IF9fZnVuY19fLCBjaC1cdTAwM2VjcS1cdTAwM2VjcWUsIHFwX2luaXQtXHUwMDNlY2FwLm1heF9zZW5kX3NnZSxcbiBcdFx0IHFwX2luaXQtXHUwMDNlY2FwLm1heF9zZW5kX3dyLCBjaCk7XG4gXG5AQCAtMjI5OCw3ICsyMjk3LDcgQEAgc3RhdGljIGludCBzcnB0X2NtX3JlcV9yZWN2KHN0cnVjdCBzcnB0X2RldmljZSAqY29uc3Qgc2RldixcbiBcdCAqIGRlcHRoIHRvIGF2b2lkIHRoYXQgdGhlIGluaXRpYXRvciBkcml2ZXIgaGFzIHRvIHJlcG9ydCBRVUVVRV9GVUxMXG4gXHQgKiB0byB0aGUgU0NTSSBtaWQtbGF5ZXIuXG4gXHQgKi9cbi1cdGNoLVx1MDAzZXJxX3NpemUgPSBtaW4oTUFYX1NSUFRfUlFfU0laRSwgc2Rldi1cdTAwM2VkZXZpY2UtXHUwMDNlYXR0cnMubWF4X3FwX3dyKTtcbitcdGNoLVx1MDAzZXJxX3NpemUgPSBtaW4oc2Rldi1cdTAwM2VkZXZpY2UtXHUwMDNlYXR0cnMubWF4X3FwX3dyLCBNQVhfU1JQVF9SUV9TSVpFKTtcbiBcdHNwaW5fbG9ja19pbml0KFx1MDAyNmNoLVx1MDAzZXNwaW5sb2NrKTtcbiBcdGNoLVx1MDAzZXN0YXRlID0gQ0hfQ09OTkVDVElORztcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmNoLVx1MDAzZWNtZF93YWl0X2xpc3QpO1xuQEAgLTMxMzYsNyArMzEzNSw3IEBAIHN0YXRpYyBpbnQgc3JwdF9hbGxvY19zcnEoc3RydWN0IHNycHRfZGV2aWNlICpzZGV2KVxuIFx0XHRyZXR1cm4gUFRSX0VSUihzcnEpO1xuIFx0fVxuIFxuLVx0cHJfZGVidWcoXCJjcmVhdGUgU1JRICN3cj0gJWQgbWF4X2FsbG93PSVkIGRldj0gJXNcXG5cIiwgc2Rldi1cdTAwM2VzcnFfc2l6ZSxcbitcdHByX2RlYnVnKFwiY3JlYXRlIFNSUSAjd3I9ICVkIG1heF9hbGxvdz0ldSBkZXY9ICVzXFxuXCIsIHNkZXYtXHUwMDNlc3JxX3NpemUsXG4gXHRcdCBzZGV2LVx1MDAzZWRldmljZS1cdTAwM2VhdHRycy5tYXhfc3JxX3dyLCBkZXZfbmFtZShcdTAwMjZkZXZpY2UtXHUwMDNlZGV2KSk7XG4gXG4gXHRzZGV2LVx1MDAzZXJlcV9idWZfY2FjaGUgPSBzcnB0X2NhY2hlX2dldChzcnBfbWF4X3JlcV9zaXplKTtcbkBAIC0zOTUxLDcgKzM5NTAsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBzcnB0X2luaXRfbW9kdWxlKHZvaWQpXG4gXG4gXHRpZiAoc3JwdF9zcnFfc2l6ZSBcdTAwM2MgTUlOX1NSUFRfU1JRX1NJWkVcbiBcdCAgICB8fCBzcnB0X3NycV9zaXplIFx1MDAzZSBNQVhfU1JQVF9TUlFfU0laRSkge1xuLVx0XHRwcl9lcnIoXCJpbnZhbGlkIHZhbHVlICVkIGZvciBrZXJuZWwgbW9kdWxlIHBhcmFtZXRlciBzcnB0X3NycV9zaXplIC0tIG11c3QgYmUgaW4gdGhlIHJhbmdlIFslZC4uJWRdLlxcblwiLFxuK1x0XHRwcl9lcnIoXCJpbnZhbGlkIHZhbHVlICV1IGZvciBrZXJuZWwgbW9kdWxlIHBhcmFtZXRlciBzcnB0X3NycV9zaXplIC0tIG11c3QgYmUgaW4gdGhlIHJhbmdlIFslZC4uJWRdLlxcblwiLFxuIFx0XHQgICAgICAgc3JwdF9zcnFfc2l6ZSwgTUlOX1NSUFRfU1JRX1NJWkUsIE1BWF9TUlBUX1NSUV9TSVpFKTtcbiBcdFx0Z290byBvdXQ7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9udm1lL2hvc3QvcmRtYS5jIGIvZHJpdmVycy9udm1lL2hvc3QvcmRtYS5jXG5pbmRleCA2OTA5ZTM1NDI3OTQyNy4uNTZjZDIyOGFmMWQ1N2EgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL252bWUvaG9zdC9yZG1hLmNcbisrKyBiL2RyaXZlcnMvbnZtZS9ob3N0L3JkbWEuY1xuQEAgLTM5NCw4ICszOTQsMTAgQEAgbnZtZV9yZG1hX2ZpbmRfZ2V0X2RldmljZShzdHJ1Y3QgcmRtYV9jbV9pZCAqY21faWQpXG4gXHRcdGdvdG8gb3V0X2ZyZWVfcGQ7XG4gXHR9XG4gXG4tXHRuZGV2LVx1MDAzZW51bV9pbmxpbmVfc2VnbWVudHMgPSBtaW4oTlZNRV9SRE1BX01BWF9JTkxJTkVfU0VHTUVOVFMsXG4tXHRcdFx0XHRcdG5kZXYtXHUwMDNlZGV2LVx1MDAzZWF0dHJzLm1heF9zZW5kX3NnZSAtIDEpO1xuK1x0bmRldi1cdTAwM2VudW1faW5saW5lX3NlZ21lbnRzID0gbmRldi1cdTAwM2VkZXYtXHUwMDNlYXR0cnMubWF4X3NlbmRfc2dlO1xuK1x0aWYgKG5kZXYtXHUwMDNlbnVtX2lubGluZV9zZWdtZW50cylcbitcdFx0bmRldi1cdTAwM2VudW1faW5saW5lX3NlZ21lbnRzLS07XG4rXHRuZGV2LVx1MDAzZW51bV9pbmxpbmVfc2VnbWVudHMgPSBtaW4obmRldi1cdTAwM2VudW1faW5saW5lX3NlZ21lbnRzLCBOVk1FX1JETUFfTUFYX0lOTElORV9TRUdNRU5UUyk7XG4gXHRsaXN0X2FkZChcdTAwMjZuZGV2LVx1MDAzZWVudHJ5LCBcdTAwMjZkZXZpY2VfbGlzdCk7XG4gb3V0X3VubG9jazpcbiBcdG11dGV4X3VubG9jayhcdTAwMjZkZXZpY2VfbGlzdF9tdXRleCk7XG5AQCAtMTg0Nyw3ICsxODQ5LDcgQEAgc3RhdGljIGludCBudm1lX3JkbWFfcm91dGVfcmVzb2x2ZWQoc3RydWN0IG52bWVfcmRtYV9xdWV1ZSAqcXVldWUpXG4gXHRwYXJhbS5xcF9udW0gPSBxdWV1ZS1cdTAwM2VxcC1cdTAwM2VxcF9udW07XG4gXHRwYXJhbS5mbG93X2NvbnRyb2wgPSAxO1xuIFxuLVx0cGFyYW0ucmVzcG9uZGVyX3Jlc291cmNlcyA9IHF1ZXVlLVx1MDAzZWRldmljZS1cdTAwM2VkZXYtXHUwMDNlYXR0cnMubWF4X3FwX3JkX2F0b207XG4rXHRwYXJhbS5yZXNwb25kZXJfcmVzb3VyY2VzID0gbWluKHF1ZXVlLVx1MDAzZWRldmljZS1cdTAwM2VkZXYtXHUwMDNlYXR0cnMubWF4X3FwX3JkX2F0b20sIFU4X01BWCk7XG4gXHQvKiBtYXhpbXVtIHJldHJ5IGNvdW50ICovXG4gXHRwYXJhbS5yZXRyeV9jb3VudCA9IDc7XG4gXHRwYXJhbS5ybnJfcmV0cnlfY291bnQgPSA3O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS90YXJnZXQvcmRtYS5jIGIvZHJpdmVycy9udm1lL3RhcmdldC9yZG1hLmNcbmluZGV4IGFjMjZmNGY3NzRjNGRlLi4xYzMzMmQ2NjIyMmEwYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbnZtZS90YXJnZXQvcmRtYS5jXG4rKysgYi9kcml2ZXJzL252bWUvdGFyZ2V0L3JkbWEuY1xuQEAgLTE1Miw3ICsxNTIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGtlcm5lbF9wYXJhbV9vcHMgc3JxX3NpemVfb3BzID0ge1xuIFx0LmdldCA9IHBhcmFtX2dldF9pbnQsXG4gfTtcbiBcbi1zdGF0aWMgaW50IG52bWV0X3JkbWFfc3JxX3NpemUgPSAxMDI0O1xuK3N0YXRpYyB1bnNpZ25lZCBpbnQgbnZtZXRfcmRtYV9zcnFfc2l6ZSA9IDEwMjQ7XG4gbW9kdWxlX3BhcmFtX2NiKHNycV9zaXplLCBcdTAwMjZzcnFfc2l6ZV9vcHMsIFx1MDAyNm52bWV0X3JkbWFfc3JxX3NpemUsIDA2NDQpO1xuIE1PRFVMRV9QQVJNX0RFU0Moc3JxX3NpemUsIFwic2V0IFNoYXJlZCBSZWNlaXZlIFF1ZXVlIChTUlEpIHNpemUsIHNob3VsZCBcdTAwM2U9IDI1NiAoZGVmYXVsdDogMTAyNClcIik7XG4gXG5AQCAtMTE5Nyw3ICsxMTk3LDcgQEAgbnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2Uoc3RydWN0IHJkbWFfY21faWQgKmNtX2lkKVxuIFx0c3RydWN0IG52bWV0X3BvcnQgKm5wb3J0ID0gcG9ydC1cdTAwM2VucG9ydDtcbiBcdHN0cnVjdCBudm1ldF9yZG1hX2RldmljZSAqbmRldjtcbiBcdGludCBpbmxpbmVfcGFnZV9jb3VudDtcbi1cdGludCBpbmxpbmVfc2dlX2NvdW50O1xuK1x0dTMyIGlubGluZV9zZ2VfY291bnQ7XG4gXHRpbnQgcmV0O1xuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZkZXZpY2VfbGlzdF9tdXRleCk7XG5AQCAtMTIxMyw3ICsxMjEzLDkgQEAgbnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2Uoc3RydWN0IHJkbWFfY21faWQgKmNtX2lkKVxuIFxuIFx0aW5saW5lX3BhZ2VfY291bnQgPSBudW1fcGFnZXMobnBvcnQtXHUwMDNlaW5saW5lX2RhdGFfc2l6ZSk7XG4gXHRpbmxpbmVfc2dlX2NvdW50ID0gbWF4KGNtX2lkLVx1MDAzZWRldmljZS1cdTAwM2VhdHRycy5tYXhfc2dlX3JkLFxuLVx0XHRcdFx0Y21faWQtXHUwMDNlZGV2aWNlLVx1MDAzZWF0dHJzLm1heF9yZWN2X3NnZSkgLSAxO1xuK1x0XHRcdFx0Y21faWQtXHUwMDNlZGV2aWNlLVx1MDAzZWF0dHJzLm1heF9yZWN2X3NnZSk7XG4rXHRpZiAoaW5saW5lX3NnZV9jb3VudClcbitcdFx0aW5saW5lX3NnZV9jb3VudC0tO1xuIFx0aWYgKGlubGluZV9wYWdlX2NvdW50IFx1MDAzZSBpbmxpbmVfc2dlX2NvdW50KSB7XG4gXHRcdHByX3dhcm4oXCJpbmxpbmVfZGF0YV9zaXplICVkIGNhbm5vdCBiZSBzdXBwb3J0ZWQgYnkgZGV2aWNlICVzLiBSZWR1Y2luZyB0byAlbHUuXFxuXCIsXG4gXHRcdFx0bnBvcnQtXHUwMDNlaW5saW5lX2RhdGFfc2l6ZSwgY21faWQtXHUwMDNlZGV2aWNlLVx1MDAzZW5hbWUsXG5AQCAtMTU1Myw4ICsxNTU1LDkgQEAgc3RhdGljIGludCBudm1ldF9yZG1hX2NtX2FjY2VwdChzdHJ1Y3QgcmRtYV9jbV9pZCAqY21faWQsXG4gXG4gXHRwYXJhbS5ybnJfcmV0cnlfY291bnQgPSA3O1xuIFx0cGFyYW0uZmxvd19jb250cm9sID0gMTtcbi1cdHBhcmFtLmluaXRpYXRvcl9kZXB0aCA9IG1pbl90KHU4LCBwLVx1MDAzZWluaXRpYXRvcl9kZXB0aCxcbi1cdFx0cXVldWUtXHUwMDNlZGV2LVx1MDAzZWRldmljZS1cdTAwM2VhdHRycy5tYXhfcXBfaW5pdF9yZF9hdG9tKTtcbitcdHBhcmFtLmluaXRpYXRvcl9kZXB0aCA9IG1pbjMocC1cdTAwM2Vpbml0aWF0b3JfZGVwdGgsXG4rXHRcdFx0XHQgICAgIHF1ZXVlLVx1MDAzZWRldi1cdTAwM2VkZXZpY2UtXHUwMDNlYXR0cnMubWF4X3FwX2luaXRfcmRfYXRvbSxcbitcdFx0XHRcdCAgICAgVThfTUFYKTtcbiBcdHBhcmFtLnByaXZhdGVfZGF0YSA9IFx1MDAyNnByaXY7XG4gXHRwYXJhbS5wcml2YXRlX2RhdGFfbGVuID0gc2l6ZW9mKHByaXYpO1xuIFx0cHJpdi5yZWNmbXQgPSBjcHVfdG9fbGUxNihOVk1FX1JETUFfQ01fRk1UXzFfMCk7XG5kaWZmIC0tZ2l0IGEvZnMvc21iL3NtYmRpcmVjdC9hY2NlcHQuYyBiL2ZzL3NtYi9zbWJkaXJlY3QvYWNjZXB0LmNcbmluZGV4IDUyOTc0MDAwNTgzODVlLi40NGI2ODFhMjA3MjUzNiAxMDA2NDRcbi0tLSBhL2ZzL3NtYi9zbWJkaXJlY3QvYWNjZXB0LmNcbisrKyBiL2ZzL3NtYi9zbWJkaXJlY3QvYWNjZXB0LmNcbkBAIC0zMiw4ICszMiw5IEBAIGludCBzbWJkaXJlY3RfYWNjZXB0X2Nvbm5lY3RfcmVxdWVzdChzdHJ1Y3Qgc21iZGlyZWN0X3NvY2tldCAqc2MsXG4gXHQvKlxuIFx0ICogRmlyc3Qgc2V0IHdoYXQgdGhlIHdlIGFzIHNlcnZlciBhcmUgYWJsZSB0byBzdXBwb3J0XG4gXHQgKi9cbi1cdHNwLVx1MDAzZWluaXRpYXRvcl9kZXB0aCA9IG1pbl90KHU4LCBzcC1cdTAwM2Vpbml0aWF0b3JfZGVwdGgsXG4tXHRcdFx0XHQgICAgc2MtXHUwMDNlaWIuZGV2LVx1MDAzZWF0dHJzLm1heF9xcF9yZF9hdG9tKTtcbitcdHNwLVx1MDAzZWluaXRpYXRvcl9kZXB0aCA9IG1pbjMoc3AtXHUwMDNlaW5pdGlhdG9yX2RlcHRoLFxuK1x0XHRcdFx0ICAgc2MtXHUwMDNlaWIuZGV2LVx1MDAzZWF0dHJzLm1heF9xcF9yZF9hdG9tLFxuK1x0XHRcdFx0ICAgVThfTUFYKTtcbiBcbiBcdHBlZXJfaW5pdGlhdG9yX2RlcHRoID0gcGFyYW0tXHUwMDNlaW5pdGlhdG9yX2RlcHRoO1xuIFx0cGVlcl9yZXNwb25kZXJfcmVzb3VyY2VzID0gcGFyYW0tXHUwMDNlcmVzcG9uZGVyX3Jlc291cmNlcztcbmRpZmYgLS1naXQgYS9mcy9zbWIvc21iZGlyZWN0L2Nvbm5lY3QuYyBiL2ZzL3NtYi9zbWJkaXJlY3QvY29ubmVjdC5jXG5pbmRleCBjZDcyNmIzOTlhZmVjYi4uMzRhM2U3MmMzOGZiYmEgMTAwNjQ0XG4tLS0gYS9mcy9zbWIvc21iZGlyZWN0L2Nvbm5lY3QuY1xuKysrIGIvZnMvc21iL3NtYmRpcmVjdC9jb25uZWN0LmNcbkBAIC0xODIsOCArMTgyLDkgQEAgc3RhdGljIGludCBzbWJkaXJlY3RfY29ubmVjdF9yZG1hX2Nvbm5lY3Qoc3RydWN0IHNtYmRpcmVjdF9zb2NrZXQgKnNjKVxuIFx0aWYgKHNjLVx1MDAzZWliLmRldi1cdTAwM2VhdHRycy5rZXJuZWxfY2FwX2ZsYWdzIFx1MDAyNiBJQktfU0dfR0FQU19SRUcpXG4gXHRcdHNjLVx1MDAzZW1yX2lvLnR5cGUgPSBJQl9NUl9UWVBFX1NHX0dBUFM7XG4gXG4tXHRzcC1cdTAwM2VyZXNwb25kZXJfcmVzb3VyY2VzID0gbWluX3QodTgsIHNwLVx1MDAzZXJlc3BvbmRlcl9yZXNvdXJjZXMsXG4tXHRcdFx0XHRcdHNjLVx1MDAzZWliLmRldi1cdTAwM2VhdHRycy5tYXhfcXBfcmRfYXRvbSk7XG4rXHRzcC1cdTAwM2VyZXNwb25kZXJfcmVzb3VyY2VzID0gbWluMyhzcC1cdTAwM2VyZXNwb25kZXJfcmVzb3VyY2VzLFxuK1x0XHRcdFx0ICAgICAgIHNjLVx1MDAzZWliLmRldi1cdTAwM2VhdHRycy5tYXhfcXBfcmRfYXRvbSxcbitcdFx0XHRcdCAgICAgICBVOF9NQVgpO1xuIFx0c21iZGlyZWN0X2xvZ19yZG1hX21yKHNjLCBTTUJESVJFQ1RfTE9HX0lORk8sXG4gXHRcdFwicmVzcG9uZGVyX3Jlc291cmNlcz0lZFxcblwiLFxuIFx0XHRzcC1cdTAwM2VyZXNwb25kZXJfcmVzb3VyY2VzKTtcbmRpZmYgLS1naXQgYS9mcy9zbWIvc21iZGlyZWN0L2Nvbm5lY3Rpb24uYyBiL2ZzL3NtYi9zbWJkaXJlY3QvY29ubmVjdGlvbi5jXG5pbmRleCA4YWRmNTgwOTc1MzQ0Yi4uNjkwYWNiODRlMWI1OTEgMTAwNjQ0XG4tLS0gYS9mcy9zbWIvc21iZGlyZWN0L2Nvbm5lY3Rpb24uY1xuKysrIGIvZnMvc21iL3NtYmRpcmVjdC9jb25uZWN0aW9uLmNcbkBAIC0yODcsNyArMjg3LDcgQEAgaW50IHNtYmRpcmVjdF9jb25uZWN0aW9uX2NyZWF0ZV9xcChzdHJ1Y3Qgc21iZGlyZWN0X3NvY2tldCAqc2MpXG4gXHQgICAgcXBfY2FwLm1heF9zZW5kX3dyIFx1MDAzZSBzYy1cdTAwM2VpYi5kZXYtXHUwMDNlYXR0cnMubWF4X3FwX3dyKSB7XG4gXHRcdHByX2VycihcIlBvc3NpYmxlIENRRSBvdmVycnVuOiBtYXhfc2VuZF93ciAlZFxcblwiLFxuIFx0XHQgICAgICAgcXBfY2FwLm1heF9zZW5kX3dyKTtcbi1cdFx0cHJfZXJyKFwiZGV2aWNlICUuKnMgcmVwb3J0aW5nIG1heF9jcWUgJWQgbWF4X3FwX3dyICVkXFxuXCIsXG4rXHRcdHByX2VycihcImRldmljZSAlLipzIHJlcG9ydGluZyBtYXhfY3FlICV1IG1heF9xcF93ciAldVxcblwiLFxuIFx0XHQgICAgICAgSUJfREVWSUNFX05BTUVfTUFYLFxuIFx0XHQgICAgICAgc2MtXHUwMDNlaWIuZGV2LVx1MDAzZW5hbWUsXG4gXHRcdCAgICAgICBzYy1cdTAwM2VpYi5kZXYtXHUwMDNlYXR0cnMubWF4X2NxZSxcbkBAIC0zMDIsNyArMzAyLDcgQEAgaW50IHNtYmRpcmVjdF9jb25uZWN0aW9uX2NyZWF0ZV9xcChzdHJ1Y3Qgc21iZGlyZWN0X3NvY2tldCAqc2MpXG4gXHQgICAgIG1heF9zZW5kX3dyIFx1MDAzZT0gc2MtXHUwMDNlaWIuZGV2LVx1MDAzZWF0dHJzLm1heF9xcF93cikpIHtcbiBcdFx0cHJfZXJyKFwiUG9zc2libGUgQ1FFIG92ZXJydW46IHJkbWFfc2VuZF93ciAlZCArIG1heF9zZW5kX3dyICVkID0gJWRcXG5cIixcbiBcdFx0ICAgICAgIHJkbWFfc2VuZF93ciwgcXBfY2FwLm1heF9zZW5kX3dyLCBtYXhfc2VuZF93cik7XG4tXHRcdHByX2VycihcImRldmljZSAlLipzIHJlcG9ydGluZyBtYXhfY3FlICVkIG1heF9xcF93ciAlZFxcblwiLFxuK1x0XHRwcl9lcnIoXCJkZXZpY2UgJS4qcyByZXBvcnRpbmcgbWF4X2NxZSAldSBtYXhfcXBfd3IgJXVcXG5cIixcbiBcdFx0ICAgICAgIElCX0RFVklDRV9OQU1FX01BWCxcbiBcdFx0ICAgICAgIHNjLVx1MDAzZWliLmRldi1cdTAwM2VuYW1lLFxuIFx0XHQgICAgICAgc2MtXHUwMDNlaWIuZGV2LVx1MDAzZWF0dHJzLm1heF9jcWUsXG5AQCAtMzE2LDcgKzMxNiw3IEBAIGludCBzbWJkaXJlY3RfY29ubmVjdGlvbl9jcmVhdGVfcXAoc3RydWN0IHNtYmRpcmVjdF9zb2NrZXQgKnNjKVxuIFx0ICAgIHFwX2NhcC5tYXhfcmVjdl93ciBcdTAwM2Ugc2MtXHUwMDNlaWIuZGV2LVx1MDAzZWF0dHJzLm1heF9xcF93cikge1xuIFx0XHRwcl9lcnIoXCJQb3NzaWJsZSBDUUUgb3ZlcnJ1bjogbWF4X3JlY3Zfd3IgJWRcXG5cIixcbiBcdFx0ICAgICAgIHFwX2NhcC5tYXhfcmVjdl93cik7XG4tXHRcdHByX2VycihcImRldmljZSAlLipzIHJlcG9ydGluZyBtYXhfY3FlICVkIG1heF9xcF93ciAlZFxcblwiLFxuK1x0XHRwcl9lcnIoXCJkZXZpY2UgJS4qcyByZXBvcnRpbmcgbWF4X2NxZSAldSBtYXhfcXBfd3IgJXVcXG5cIixcbiBcdFx0ICAgICAgIElCX0RFVklDRV9OQU1FX01BWCxcbiBcdFx0ICAgICAgIHNjLVx1MDAzZWliLmRldi1cdTAwM2VuYW1lLFxuIFx0XHQgICAgICAgc2MtXHUwMDNlaWIuZGV2LVx1MDAzZWF0dHJzLm1heF9jcWUsXG5AQCAtMzI4LDcgKzMyOCw3IEBAIGludCBzbWJkaXJlY3RfY29ubmVjdGlvbl9jcmVhdGVfcXAoc3RydWN0IHNtYmRpcmVjdF9zb2NrZXQgKnNjKVxuIFxuIFx0aWYgKHFwX2NhcC5tYXhfc2VuZF9zZ2UgXHUwMDNlIHNjLVx1MDAzZWliLmRldi1cdTAwM2VhdHRycy5tYXhfc2VuZF9zZ2UgfHxcbiBcdCAgICBxcF9jYXAubWF4X3JlY3Zfc2dlIFx1MDAzZSBzYy1cdTAwM2VpYi5kZXYtXHUwMDNlYXR0cnMubWF4X3JlY3Zfc2dlKSB7XG4tXHRcdHByX2VycihcImRldmljZSAlLipzIG1heF9zZW5kX3NnZS9tYXhfcmVjdl9zZ2UgPSAlZC8lZCB0b28gc21hbGxcXG5cIixcbitcdFx0cHJfZXJyKFwiZGV2aWNlICUuKnMgbWF4X3NlbmRfc2dlL21heF9yZWN2X3NnZSA9ICV1LyV1IHRvbyBzbWFsbFxcblwiLFxuIFx0XHQgICAgICAgSUJfREVWSUNFX05BTUVfTUFYLFxuIFx0XHQgICAgICAgc2MtXHUwMDNlaWIuZGV2LVx1MDAzZW5hbWUsXG4gXHRcdCAgICAgICBzYy1cdTAwM2VpYi5kZXYtXHUwMDNlYXR0cnMubWF4X3NlbmRfc2dlLFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc3VucnBjL3N2Y19yZG1hLmggYi9pbmNsdWRlL2xpbnV4L3N1bnJwYy9zdmNfcmRtYS5oXG5pbmRleCBkZjZlMDhhYWFkNTcwOS4uMjE3ZjAwMGJlNWQ2ZTIgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3N1bnJwYy9zdmNfcmRtYS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3N1bnJwYy9zdmNfcmRtYS5oXG5AQCAtNzgsOCArNzgsOCBAQCBzdHJ1Y3Qgc3ZjeHBydF9yZG1hIHtcbiBcdHN0cnVjdCByZG1hX2NtX2lkICAgICpzY19jbV9pZDtcdFx0LyogUkRNQSBjb25uZWN0aW9uIGlkICovXG4gXHRzdHJ1Y3QgbGlzdF9oZWFkICAgICBzY19hY2NlcHRfcTtcdC8qIENvbm4uIHdhaXRpbmcgYWNjZXB0ICovXG4gXHRzdHJ1Y3QgcnBjcmRtYV9ub3RpZmljYXRpb24gc2Nfcm47XHQvKiByZW1vdmFsIG5vdGlmaWNhdGlvbiAqL1xuLVx0aW50XHRcdCAgICAgc2Nfb3JkO1x0XHQvKiBSRE1BIHJlYWQgbGltaXQgKi9cbi1cdGludCAgICAgICAgICAgICAgICAgIHNjX21heF9zZW5kX3NnZXM7XG4rXHR1MzJcdFx0ICAgICBzY19vcmQ7XHRcdC8qIFJETUEgcmVhZCBsaW1pdCAqL1xuK1x0dW5zaWduZWQgaW50ICAgICAgICAgc2NfbWF4X3NlbmRfc2dlcztcbiBcdGJvb2xcdFx0ICAgICBzY19zbmRfd19pbnY7XHQvKiBPSyB0byB1c2UgU2VuZCBXaXRoIEludmFsaWRhdGUgKi9cbiBcbiBcdGF0b21pY190ICAgICAgICAgICAgIHNjX3NxX2F2YWlsO1x0LyogU1FFcyByZWFkeSB0byBiZSBjb25zdW1lZCAqL1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvcmRtYS9pYl92ZXJicy5oIGIvaW5jbHVkZS9yZG1hL2liX3ZlcmJzLmhcbmluZGV4IDlkZDc2ZjQ4OWEwYmE0Li5iOGIyMjFiNWY1NjQ3MyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvcmRtYS9pYl92ZXJicy5oXG4rKysgYi9pbmNsdWRlL3JkbWEvaWJfdmVyYnMuaFxuQEAgLTQwNiwzNiArNDA2LDM2IEBAIHN0cnVjdCBpYl9kZXZpY2VfYXR0ciB7XG4gXHR1MzJcdFx0XHR2ZW5kb3JfaWQ7XG4gXHR1MzJcdFx0XHR2ZW5kb3JfcGFydF9pZDtcbiBcdHUzMlx0XHRcdGh3X3Zlcjtcbi1cdGludFx0XHRcdG1heF9xcDtcbi1cdGludFx0XHRcdG1heF9xcF93cjtcbitcdHUzMlx0XHRcdG1heF9xcDtcbitcdHUzMlx0XHRcdG1heF9xcF93cjtcbiBcdHU2NFx0XHRcdGRldmljZV9jYXBfZmxhZ3M7XG4gXHR1NjRcdFx0XHRrZXJuZWxfY2FwX2ZsYWdzO1xuLVx0aW50XHRcdFx0bWF4X3NlbmRfc2dlO1xuLVx0aW50XHRcdFx0bWF4X3JlY3Zfc2dlO1xuLVx0aW50XHRcdFx0bWF4X3NnZV9yZDtcbi1cdGludFx0XHRcdG1heF9jcTtcbi1cdGludFx0XHRcdG1heF9jcWU7XG4tXHRpbnRcdFx0XHRtYXhfbXI7XG4tXHRpbnRcdFx0XHRtYXhfcGQ7XG4tXHRpbnRcdFx0XHRtYXhfcXBfcmRfYXRvbTtcbi1cdGludFx0XHRcdG1heF9lZV9yZF9hdG9tO1xuLVx0aW50XHRcdFx0bWF4X3Jlc19yZF9hdG9tO1xuLVx0aW50XHRcdFx0bWF4X3FwX2luaXRfcmRfYXRvbTtcbi1cdGludFx0XHRcdG1heF9lZV9pbml0X3JkX2F0b207XG4rXHR1MzJcdFx0XHRtYXhfc2VuZF9zZ2U7XG4rXHR1MzJcdFx0XHRtYXhfcmVjdl9zZ2U7XG4rXHR1MzJcdFx0XHRtYXhfc2dlX3JkO1xuK1x0dTMyXHRcdFx0bWF4X2NxO1xuK1x0dTMyXHRcdFx0bWF4X2NxZTtcbitcdHUzMlx0XHRcdG1heF9tcjtcbitcdHUzMlx0XHRcdG1heF9wZDtcbitcdHUzMlx0XHRcdG1heF9xcF9yZF9hdG9tO1xuK1x0dTMyXHRcdFx0bWF4X2VlX3JkX2F0b207XG4rXHR1MzJcdFx0XHRtYXhfcmVzX3JkX2F0b207XG4rXHR1MzJcdFx0XHRtYXhfcXBfaW5pdF9yZF9hdG9tO1xuK1x0dTMyXHRcdFx0bWF4X2VlX2luaXRfcmRfYXRvbTtcbiBcdGVudW0gaWJfYXRvbWljX2NhcFx0YXRvbWljX2NhcDtcbiBcdGVudW0gaWJfYXRvbWljX2NhcFx0bWFza2VkX2F0b21pY19jYXA7XG4tXHRpbnRcdFx0XHRtYXhfZWU7XG4tXHRpbnRcdFx0XHRtYXhfcmRkO1xuLVx0aW50XHRcdFx0bWF4X213O1xuLVx0aW50XHRcdFx0bWF4X3Jhd19pcHY2X3FwO1xuLVx0aW50XHRcdFx0bWF4X3Jhd19ldGh5X3FwO1xuLVx0aW50XHRcdFx0bWF4X21jYXN0X2dycDtcbi1cdGludFx0XHRcdG1heF9tY2FzdF9xcF9hdHRhY2g7XG4tXHRpbnRcdFx0XHRtYXhfdG90YWxfbWNhc3RfcXBfYXR0YWNoO1xuLVx0aW50XHRcdFx0bWF4X2FoO1xuK1x0dTMyXHRcdFx0bWF4X2VlO1xuK1x0dTMyXHRcdFx0bWF4X3JkZDtcbitcdHUzMlx0XHRcdG1heF9tdztcbitcdHUzMlx0XHRcdG1heF9yYXdfaXB2Nl9xcDtcbitcdHUzMlx0XHRcdG1heF9yYXdfZXRoeV9xcDtcbitcdHUzMlx0XHRcdG1heF9tY2FzdF9ncnA7XG4rXHR1MzJcdFx0XHRtYXhfbWNhc3RfcXBfYXR0YWNoO1xuK1x0dTMyXHRcdFx0bWF4X3RvdGFsX21jYXN0X3FwX2F0dGFjaDtcbitcdHUzMlx0XHRcdG1heF9haDtcbiBcdGludFx0XHRcdG1heF9zcnE7XG4tXHRpbnRcdFx0XHRtYXhfc3JxX3dyO1xuLVx0aW50XHRcdFx0bWF4X3NycV9zZ2U7XG4rXHR1MzJcdFx0XHRtYXhfc3JxX3dyO1xuK1x0dTMyXHRcdFx0bWF4X3NycV9zZ2U7XG4gXHR1bnNpZ25lZCBpbnRcdFx0bWF4X2Zhc3RfcmVnX3BhZ2VfbGlzdF9sZW47XG4gXHR1bnNpZ25lZCBpbnRcdFx0bWF4X3BpX2Zhc3RfcmVnX3BhZ2VfbGlzdF9sZW47XG4gXHR1MTZcdFx0XHRtYXhfcGtleXM7XG5kaWZmIC0tZ2l0IGEvbmV0L3Jkcy9pYi5jIGIvbmV0L3Jkcy9pYi5jXG5pbmRleCAzOWY4NzI3MmUwNzFiZi4uYzYyNjg0ZDQyNTljNGYgMTAwNjQ0XG4tLS0gYS9uZXQvcmRzL2liLmNcbisrKyBiL25ldC9yZHMvaWIuY1xuQEAgLTE2MiwxMiArMTYyLDEyIEBAIHN0YXRpYyBpbnQgcmRzX2liX2FkZF9vbmUoc3RydWN0IGliX2RldmljZSAqZGV2aWNlKVxuIFx0XHQgICBJQl9PRFBfU1VQUE9SVF9SRUFEKTtcbiBcbiBcdHJkc19pYmRldi1cdTAwM2VtYXhfMW1fbXJzID0gZGV2aWNlLVx1MDAzZWF0dHJzLm1heF9tciA/XG4tXHRcdG1pbl90KHVuc2lnbmVkIGludCwgKGRldmljZS1cdTAwM2VhdHRycy5tYXhfbXIgLyAyKSxcbi1cdFx0ICAgICAgcmRzX2liX21yXzFtX3Bvb2xfc2l6ZSkgOiByZHNfaWJfbXJfMW1fcG9vbF9zaXplO1xuK1x0XHRtaW4oZGV2aWNlLVx1MDAzZWF0dHJzLm1heF9tciAvIDIsXG4rXHRcdCAgICByZHNfaWJfbXJfMW1fcG9vbF9zaXplKSA6IHJkc19pYl9tcl8xbV9wb29sX3NpemU7XG4gXG4gXHRyZHNfaWJkZXYtXHUwMDNlbWF4XzhrX21ycyA9IGRldmljZS1cdTAwM2VhdHRycy5tYXhfbXIgP1xuLVx0XHRtaW5fdCh1bnNpZ25lZCBpbnQsICgoZGV2aWNlLVx1MDAzZWF0dHJzLm1heF9tciAvIDIpICogUkRTX01SXzhLX1NDQUxFKSxcbi1cdFx0ICAgICAgcmRzX2liX21yXzhrX3Bvb2xfc2l6ZSkgOiByZHNfaWJfbXJfOGtfcG9vbF9zaXplO1xuK1x0XHRtaW4oKGRldmljZS1cdTAwM2VhdHRycy5tYXhfbXIgLyAyKSAqIFJEU19NUl84S19TQ0FMRSxcbitcdFx0ICAgIHJkc19pYl9tcl84a19wb29sX3NpemUpIDogcmRzX2liX21yXzhrX3Bvb2xfc2l6ZTtcbiBcbiBcdHJkc19pYmRldi1cdTAwM2VtYXhfaW5pdGlhdG9yX2RlcHRoID0gZGV2aWNlLVx1MDAzZWF0dHJzLm1heF9xcF9pbml0X3JkX2F0b207XG4gXHRyZHNfaWJkZXYtXHUwMDNlbWF4X3Jlc3BvbmRlcl9yZXNvdXJjZXMgPSBkZXZpY2UtXHUwMDNlYXR0cnMubWF4X3FwX3JkX2F0b207XG5AQCAtMjA0LDcgKzIwNCw3IEBAIHN0YXRpYyBpbnQgcmRzX2liX2FkZF9vbmUoc3RydWN0IGliX2RldmljZSAqZGV2aWNlKVxuIFx0XHRnb3RvIHB1dF9kZXY7XG4gXHR9XG4gXG4tXHRyZHNkZWJ1ZyhcIlJEUy9JQjogbWF4X21yID0gJWQsIG1heF93cnMgPSAlZCwgbWF4X3NnZSA9ICVkLCBtYXhfMW1fbXJzID0gJWQsIG1heF84a19tcnMgPSAlZFxcblwiLFxuK1x0cmRzZGVidWcoXCJSRFMvSUI6IG1heF9tciA9ICV1LCBtYXhfd3JzID0gJWQsIG1heF9zZ2UgPSAlZCwgbWF4XzFtX21ycyA9ICVkLCBtYXhfOGtfbXJzID0gJWRcXG5cIixcbiBcdFx0IGRldmljZS1cdTAwM2VhdHRycy5tYXhfbXIsIHJkc19pYmRldi1cdTAwM2VtYXhfd3JzLCByZHNfaWJkZXYtXHUwMDNlbWF4X3NnZSxcbiBcdFx0IHJkc19pYmRldi1cdTAwM2VtYXhfMW1fbXJzLCByZHNfaWJkZXYtXHUwMDNlbWF4XzhrX21ycyk7XG4gXG5kaWZmIC0tZ2l0IGEvbmV0L3Jkcy9pYl9jbS5jIGIvbmV0L3Jkcy9pYl9jbS5jXG5pbmRleCA1NjY3ZjAxNzNiNDdmMi4uMTdlNTg3YzMwMDc2NjMgMTAwNjQ0XG4tLS0gYS9uZXQvcmRzL2liX2NtLmNcbisrKyBiL25ldC9yZHMvaWJfY20uY1xuQEAgLTE3MywxMSArMTczLDExIEBAIHN0YXRpYyB2b2lkIHJkc19pYl9jbV9maWxsX2Nvbm5fcGFyYW0oc3RydWN0IHJkc19jb25uZWN0aW9uICpjb25uLFxuIFxuIFx0bWVtc2V0KGNvbm5fcGFyYW0sIDAsIHNpemVvZihzdHJ1Y3QgcmRtYV9jb25uX3BhcmFtKSk7XG4gXG4tXHRjb25uX3BhcmFtLVx1MDAzZXJlc3BvbmRlcl9yZXNvdXJjZXMgPVxuLVx0XHRtaW5fdCh1MzIsIHJkc19pYmRldi1cdTAwM2VtYXhfcmVzcG9uZGVyX3Jlc291cmNlcywgbWF4X3Jlc3BvbmRlcl9yZXNvdXJjZXMpO1xuLVx0Y29ubl9wYXJhbS1cdTAwM2Vpbml0aWF0b3JfZGVwdGggPVxuLVx0XHRtaW5fdCh1MzIsIHJkc19pYmRldi1cdTAwM2VtYXhfaW5pdGlhdG9yX2RlcHRoLCBtYXhfaW5pdGlhdG9yX2RlcHRoKTtcbi1cdGNvbm5fcGFyYW0tXHUwMDNlcmV0cnlfY291bnQgPSBtaW5fdCh1bnNpZ25lZCBpbnQsIHJkc19pYl9yZXRyeV9jb3VudCwgNyk7XG4rXHRjb25uX3BhcmFtLVx1MDAzZXJlc3BvbmRlcl9yZXNvdXJjZXMgPSBtaW4zKHJkc19pYmRldi1cdTAwM2VtYXhfcmVzcG9uZGVyX3Jlc291cmNlcyxcbitcdFx0XHRcdFx0ICAgICAgIG1heF9yZXNwb25kZXJfcmVzb3VyY2VzLCBVOF9NQVgpO1xuK1x0Y29ubl9wYXJhbS1cdTAwM2Vpbml0aWF0b3JfZGVwdGggPSBtaW4zKHJkc19pYmRldi1cdTAwM2VtYXhfaW5pdGlhdG9yX2RlcHRoLFxuK1x0XHRcdFx0XHQgICBtYXhfaW5pdGlhdG9yX2RlcHRoLCBVOF9NQVgpO1xuK1x0Y29ubl9wYXJhbS1cdTAwM2VyZXRyeV9jb3VudCA9IG1pbihyZHNfaWJfcmV0cnlfY291bnQsIDdVKTtcbiBcdGNvbm5fcGFyYW0tXHUwMDNlcm5yX3JldHJ5X2NvdW50ID0gNztcbiBcbiBcdGlmIChkcCkge1xuZGlmZiAtLWdpdCBhL25ldC9zdW5ycGMveHBydHJkbWEvZnJ3cl9vcHMuYyBiL25ldC9zdW5ycGMveHBydHJkbWEvZnJ3cl9vcHMuY1xuaW5kZXggN2Y3OWEwYTI2MDFlNjUuLmIyZTQzN2FmZTA5ZGFhIDEwMDY0NFxuLS0tIGEvbmV0L3N1bnJwYy94cHJ0cmRtYS9mcndyX29wcy5jXG4rKysgYi9uZXQvc3VucnBjL3hwcnRyZG1hL2Zyd3Jfb3BzLmNcbkBAIC0xNzIsOCArMTcyLDkgQEAgaW50IGZyd3JfbXJfaW5pdChzdHJ1Y3QgcnBjcmRtYV94cHJ0ICpyX3hwcnQsIHN0cnVjdCBycGNyZG1hX21yICptcilcbiBpbnQgZnJ3cl9xdWVyeV9kZXZpY2Uoc3RydWN0IHJwY3JkbWFfZXAgKmVwLCBjb25zdCBzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGliX2RldmljZV9hdHRyICphdHRycyA9IFx1MDAyNmRldmljZS1cdTAwM2VhdHRycztcbi1cdGludCBtYXhfcXBfd3IsIGRlcHRoLCBkZWx0YTtcbiBcdHVuc2lnbmVkIGludCBtYXhfc2dlO1xuK1x0dTMyIG1heF9xcF93cjtcbitcdGludCBkZXB0aCwgZGVsdGE7XG4gXG4gXHRpZiAoIShhdHRycy1cdTAwM2VkZXZpY2VfY2FwX2ZsYWdzIFx1MDAyNiBJQl9ERVZJQ0VfTUVNX01HVF9FWFRFTlNJT05TKSB8fFxuIFx0ICAgIGF0dHJzLVx1MDAzZW1heF9mYXN0X3JlZ19wYWdlX2xpc3RfbGVuID09IDApIHtcbkBAIC0yMjksMTAgKzIzMCwxMCBAQCBpbnQgZnJ3cl9xdWVyeV9kZXZpY2Uoc3RydWN0IHJwY3JkbWFfZXAgKmVwLCBjb25zdCBzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UpXG4gXHR9XG4gXG4gXHRtYXhfcXBfd3IgPSBhdHRycy1cdTAwM2VtYXhfcXBfd3I7XG4rXHRpZiAobWF4X3FwX3dyIFx1MDAzYyBSUENSRE1BX0JBQ0tXQVJEX1dSUyArIDEgKyBSUENSRE1BX01JTl9TTE9UX1RBQkxFKVxuK1x0XHRyZXR1cm4gLUVOT01FTTtcbiBcdG1heF9xcF93ciAtPSBSUENSRE1BX0JBQ0tXQVJEX1dSUztcbiBcdG1heF9xcF93ciAtPSAxO1xuLVx0aWYgKG1heF9xcF93ciBcdTAwM2MgUlBDUkRNQV9NSU5fU0xPVF9UQUJMRSlcbi1cdFx0cmV0dXJuIC1FTk9NRU07XG4gXHRpZiAoZXAtXHUwMDNlcmVfbWF4X3JlcXVlc3RzIFx1MDAzZSBtYXhfcXBfd3IpXG4gXHRcdGVwLVx1MDAzZXJlX21heF9yZXF1ZXN0cyA9IG1heF9xcF93cjtcbiBcdGVwLVx1MDAzZXJlX2F0dHIuY2FwLm1heF9zZW5kX3dyID0gZXAtXHUwMDNlcmVfbWF4X3JlcXVlc3RzICogZGVwdGg7XG5kaWZmIC0tZ2l0IGEvbmV0L3N1bnJwYy94cHJ0cmRtYS9zdmNfcmRtYV90cmFuc3BvcnQuYyBiL25ldC9zdW5ycGMveHBydHJkbWEvc3ZjX3JkbWFfdHJhbnNwb3J0LmNcbmluZGV4IGYxOGJjNjBkOWY0ZmZhLi5jNzY4Y2RhMmU1NDQ0YSAxMDA2NDRcbi0tLSBhL25ldC9zdW5ycGMveHBydHJkbWEvc3ZjX3JkbWFfdHJhbnNwb3J0LmNcbisrKyBiL25ldC9zdW5ycGMveHBydHJkbWEvc3ZjX3JkbWFfdHJhbnNwb3J0LmNcbkBAIC01NDQsOCArNTQ0LDcgQEAgc3RhdGljIHN0cnVjdCBzdmNfeHBydCAqc3ZjX3JkbWFfYWNjZXB0KHN0cnVjdCBzdmNfeHBydCAqeHBydClcbiBcdHNldF9iaXQoUkRNQVhQUlRfQ09OTl9QRU5ESU5HLCBcdTAwMjZuZXd4cHJ0LVx1MDAzZXNjX2ZsYWdzKTtcbiBcdG1lbXNldChcdTAwMjZjb25uX3BhcmFtLCAwLCBzaXplb2YgY29ubl9wYXJhbSk7XG4gXHRjb25uX3BhcmFtLnJlc3BvbmRlcl9yZXNvdXJjZXMgPSAwO1xuLVx0Y29ubl9wYXJhbS5pbml0aWF0b3JfZGVwdGggPSBtaW5fdChpbnQsIG5ld3hwcnQtXHUwMDNlc2Nfb3JkLFxuLVx0XHRcdFx0XHQgICBkZXYtXHUwMDNlYXR0cnMubWF4X3FwX2luaXRfcmRfYXRvbSk7XG4rXHRjb25uX3BhcmFtLmluaXRpYXRvcl9kZXB0aCA9IG1pbihuZXd4cHJ0LVx1MDAzZXNjX29yZCwgZGV2LVx1MDAzZWF0dHJzLm1heF9xcF9pbml0X3JkX2F0b20pO1xuIFx0aWYgKCFjb25uX3BhcmFtLmluaXRpYXRvcl9kZXB0aCkge1xuIFx0XHRyZXQgPSAtRUlOVkFMO1xuIFx0XHR0cmFjZV9zdmNyZG1hX2luaXRkZXB0aF9lcnIobmV3eHBydCwgcmV0KTtcbkBAIC01NzAsNyArNTY5LDcgQEAgc3RhdGljIHN0cnVjdCBzdmNfeHBydCAqc3ZjX3JkbWFfYWNjZXB0KHN0cnVjdCBzdmNfeHBydCAqeHBydClcbiBcdFx0ZHByaW50ayhcIiAgICBsb2NhbCBhZGRyZXNzICAgOiAlcElTOiV1XFxuXCIsIHNhcCwgcnBjX2dldF9wb3J0KHNhcCkpO1xuIFx0XHRzYXAgPSAoc3RydWN0IHNvY2thZGRyICopXHUwMDI2bmV3eHBydC1cdTAwM2VzY19jbV9pZC1cdTAwM2Vyb3V0ZS5hZGRyLmRzdF9hZGRyO1xuIFx0XHRkcHJpbnRrKFwiICAgIHJlbW90ZSBhZGRyZXNzICA6ICVwSVM6JXVcXG5cIiwgc2FwLCBycGNfZ2V0X3BvcnQoc2FwKSk7XG4tXHRcdGRwcmludGsoXCIgICAgbWF4X3NnZSAgICAgICAgIDogJWRcXG5cIiwgbmV3eHBydC1cdTAwM2VzY19tYXhfc2VuZF9zZ2VzKTtcbitcdFx0ZHByaW50ayhcIiAgICBtYXhfc2dlICAgICAgICAgOiAldVxcblwiLCBuZXd4cHJ0LVx1MDAzZXNjX21heF9zZW5kX3NnZXMpO1xuIFx0XHRkcHJpbnRrKFwiICAgIHNxX2RlcHRoICAgICAgICA6ICVkXFxuXCIsIG5ld3hwcnQtXHUwMDNlc2Nfc3FfZGVwdGgpO1xuIFx0XHRkcHJpbnRrKFwiICAgIHJkbWFfcndfY3R4cyAgICA6ICVkXFxuXCIsIGN0eHRzKTtcbiBcdFx0ZHByaW50ayhcIiAgICBtYXhfcmVxdWVzdHMgICAgOiAlZFxcblwiLCBuZXd4cHJ0LVx1MDAzZXNjX21heF9yZXF1ZXN0cyk7XG5kaWZmIC0tZ2l0IGEvbmV0L3N1bnJwYy94cHJ0cmRtYS92ZXJicy5jIGIvbmV0L3N1bnJwYy94cHJ0cmRtYS92ZXJicy5jXG5pbmRleCBhZWNmOWMwYTE1M2YzNi4uOGVkOWRhNmQyZDJmNzcgMTAwNjQ0XG4tLS0gYS9uZXQvc3VucnBjL3hwcnRyZG1hL3ZlcmJzLmNcbisrKyBiL25ldC9zdW5ycGMveHBydHJkbWEvdmVyYnMuY1xuQEAgLTQ1Myw3ICs0NTMsNyBAQCBzdGF0aWMgaW50IHJwY3JkbWFfZXBfY3JlYXRlKHN0cnVjdCBycGNyZG1hX3hwcnQgKnJfeHBydClcbiBcdC8qIENsaWVudCBvZmZlcnMgUkRNQSBSZWFkIGJ1dCBkb2VzIG5vdCBpbml0aWF0ZSAqL1xuIFx0ZXAtXHUwMDNlcmVfcmVtb3RlX2NtYS5pbml0aWF0b3JfZGVwdGggPSAwO1xuIFx0ZXAtXHUwMDNlcmVfcmVtb3RlX2NtYS5yZXNwb25kZXJfcmVzb3VyY2VzID1cbi1cdFx0bWluX3QoaW50LCBVOF9NQVgsIGRldmljZS1cdTAwM2VhdHRycy5tYXhfcXBfcmRfYXRvbSk7XG4rXHRcdG1pbihkZXZpY2UtXHUwMDNlYXR0cnMubWF4X3FwX3JkX2F0b20sIFU4X01BWCk7XG4gXG4gXHQvKiBMaW1pdCB0cmFuc3BvcnQgcmV0cmllcyBzbyBjbGllbnQgY2FuIGRldGVjdCBzZXJ2ZXJcbiBcdCAqIEdJRCBjaGFuZ2VzIHF1aWNrbHkuIFJQQyBsYXllciBoYW5kbGVzIHJlLWVzdGFibGlzaGluZ1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDY6MjUuMzA5MjYxODc4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ3MDk0OTI0MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUkRNQSBTdWJzeXN0ZW0gVHlwZSBSZWZhY3RvcmluZyBcdTAwMjYgVW5kZXJmbG93IEZpeGVzIC0gV29ydGggRnV6emluZz8qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIG1ha2luZyBzb21lIHByZXR0eSBzaWduaWZpY2FudCB0eXBlIGNoYW5nZXMgaW4gdGhlIFJETUEvSW5maW5pQmFuZCBzdWJzeXN0ZW0uIFNwZWNpZmljYWxseSwgYSBsb3Qgb2YgZmllbGRzIGluIGBzdHJ1Y3QgaWJfZGV2aWNlX2F0dHJgIGFyZSBnb2luZyBmcm9tIGBpbnRgIHRvIGB1MzJgLCB3aGljaCBzZWVtcyBsaWtlIGEgZ29vZCBtb3ZlIGZvciBjb25zaXN0ZW5jeS4gV2UncmUgYWxzbyBzZWVpbmcgdGhlIHVzdWFsIHVwZGF0ZXMgdG8gdXNlIGBtaW4oKWAgaW5zdGVhZCBvZiBgbWluX3QoKWAgYW5kIHRoZSBhc3NvY2lhdGVkIGZvcm1hdCBzdHJpbmcgdXBkYXRlcyAoYCVkYCB0byBgJXVgKS4gU3RhbmRhcmQgc3R1ZmYuXG5cbkJ1dCB3YWl0LCBpcyB0aGlzIGp1c3QgcmVmYWN0b3JpbmcsIG9yIGFyZSB0aGVyZSBmdW5jdGlvbmFsIGltcGxpY2F0aW9ucyB0aGF0IHdhcnJhbnQgZnV6emluZz8gTGV0J3MgZGlnIGluLiBJdCdzIGVzc2VudGlhbGx5IGEgdHlwZSBjaGFuZ2UgYW5kIHVuZGVyZmxvdyBwcmV2ZW50aW9uLCBidXQgdGhlIGRldGFpbHMgYXJlIGltcG9ydGFudC4gTG9va2luZyBhdCB0aGUgZGlmZiwgaXQgc2VlbXMgdGhhdCB0aGVyZSBhcmUgdHdvIHBsYWNlcyB3aGVyZSB0aGVyZSBhcmUgbWVhbmluZ2Z1bCBjaGFuZ2VzOlxuSW4gYG52bWVfcmRtYV9maW5kX2dldF9kZXZpY2VgIGFuZCBgbnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2VgLCB0aGVyZSdzIGEgY29ycmVjdGlvbiB0byBwcmV2ZW50IHVuZGVyZmxvdyBpZiBgbWF4X3NlbmRfc2dlYCBpcyAwLCB3aGljaCBpcyBpbXBvcnRhbnQuXG5BZGRpdGlvbmFsbHksIGluIGBmcndyX3F1ZXJ5X2RldmljZWAsIHRoZSBjaGFuZ2UgcHJldmVudHMgYW4gdW5kZXJmbG93IGluIGBtYXhfcXBfd3JgIHRoYXQgY291bGQgaGF2ZSByZXN1bHRlZCBpbiBlcnJvcnMuXG5cblRoaXMgcGF0Y2ggdG91Y2hlcyBhIGxvdCBvZiBSRE1BIGNvZGU6IHRoZSBjb3JlLCBSWEUsIE5WTWUgb3ZlciBGYWJyaWNzIChSRE1BKSwgU1JQLCBTUlBULCBpU0VSLCBpU0VSVCwgU01CIERpcmVjdCwgUlBDIFJETUEsIGFuZCBSRFMuIEEgbG90IG9mIGNvbm5lY3Rpb25zIGNvdWxkIGJlIGFmZmVjdGVkIGJ5IHRoaXMgcGF0Y2guXG5cblRoZSBwcm9tcHQgc2F5cyB0byByZXR1cm4gXCJXb3J0aEZ1enppbmc9ZmFsc2VcIiBpZiBpdCBvbmx5IGNvbnRhaW5zIG51bWVyaWMgY29uc3RhbnQgb3IgbWFjcm8gY2hhbmdlcy4gVGhpcyBpcyBtb3N0bHkgYSB0eXBlIGNoYW5nZSB3aXRoIHNvbWUgdW5kZXJmbG93IGNoZWNrcy4gSG93ZXZlciwgdGhlcmUgYXJlIHNvbWUgY2hhbmdlcyBpbiBgbnZtZV9yZG1hX2ZpbmRfZ2V0X2RldmljZWAsIGBudm1ldF9yZG1hX2ZpbmRfZ2V0X2RldmljZWAsIGFuZCBgZnJ3cl9xdWVyeV9kZXZpY2VgIGZ1bmN0aW9ucyBhbmQgdGh1cywgYXJlIHdvcnRoIGNvbnNpZGVyaW5nLlxuXG5MZXQncyBzZWU6IGBudm1lX3JkbWFfZmluZF9nZXRfZGV2aWNlYCBhbmQgYG52bWV0X3JkbWFfZmluZF9nZXRfZGV2aWNlYCBhcmUgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IGZ1bmN0aW9ucyB3aXRoaW4gdGhlIE5WTWUtb0YgY29udGV4dCwgYW5kIGBmcndyX3F1ZXJ5X2RldmljZWAgaXMgY2FsbGVkIGR1cmluZyBSUEMgUkRNQSB0cmFuc3BvcnQgc2V0dXAuIENhbiB3ZSBmdXp6IHRoZW0gZWZmZWN0aXZlbHk/IFN5emthbGxlciBoYXMgc29tZSBOVk1lLW9GIGFuZCBSRE1BIHN1cHBvcnQgKHBhcnRpY3VsYXJseSBSWEUpLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZS5cblxuXCJJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoIHRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlwiIFJYRSBpcyBzb2Z0d2FyZSBSRE1BIGFuZCBjYW4gYmUgZXhlY3V0ZWQuIE5WTWUtb0Ygb3ZlciBSRE1BIGNhbiBydW4gd2l0aCBSWEUuIEFuZCBSUEMgUkRNQSBjYW4gcnVuIHdpdGggUlhFLlxuXG5CYXNlZCBvbiB0aGF0LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlc2UgZnVuY3Rpb25zOlxuLSBgbnZtZV9yZG1hX2ZpbmRfZ2V0X2RldmljZWBcbi0gYG52bWV0X3JkbWFfZmluZF9nZXRfZGV2aWNlYFxuLSBgZnJ3cl9xdWVyeV9kZXZpY2VgXG4tIGByeGVfcXBfY2hrX2NhcGBcbi0gYHJ4ZV9xcF9jaGtfYXR0cmBcbi0gYHJ4ZV9zcnFfY2hrX2luaXRgXG4tIGByeGVfc3JxX2Noa19hdHRyYFxuXG5JJ2xsIHZlcmlmeSB0aGVzZSBmdW5jdGlvbnMgZXhpc3QgYW5kIGFyZSByZWFjaGFibGUsIGFuZCB0aGVuIGNvbnNpZGVyIHRoaXMgcGF0Y2ggZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjEwNSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0Njo0MC4wMTg3NTYyMDdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzY5NDEyMTI2MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihzdGF0aWMgKT8oaW50fHZvaWR8c3RydWN0IFthLXpBLVowLTlfXSsgXFxcXCopIG52bWVfcmRtYV9maW5kX2dldF9kZXZpY2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ2OjQzLjcxMjg4NjM0N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMzA4OTY5MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipEZWJ1Z2dpbmcgdGhlIE5WTWUtUkRNQSBDb2RlKipcblxuQWxyaWdodCwgc29tZXRoaW5nIGlzbid0IHF1aXRlIHJpZ2h0IHdpdGggdGhpcyBgZ3JlcGAgZXhwcmVzc2lvbi4gSXQncyBqdXN0IG5vdCBnaXZpbmcgbWUgd2hhdCBJIG5lZWQuIFBlcmhhcHMgSSd2ZSBiZWVuIHRvbyBicm9hZCBpbiBteSBzZWFyY2ggdGVybXMuIEkgbmVlZCB0byBiZSBtb3JlIHByZWNpc2UsIG1vcmUgdGFyZ2V0ZWQuIExldCdzIG5hcnJvdyB0aGlzIGRvd24gYW5kIGJlIHNwZWNpZmljOiBJJ2xsIGZvY3VzIG9uIHRoZSBjb3JlIGZ1bmN0aW9uLCB0aGUgb25lIHRoYXQncyBnaXZpbmcgbWUgdGhlIG1vc3QgdHJvdWJsZS4gRm9yZ2V0IHRoZSBpbml0aWFsIGJyb2FkIGFwcHJvYWNoLCBsZXQncyBqdXN0IGdyZXAgZGlyZWN0bHkgZm9yIHRoZSBuYW1lIG9mIHRoYXQgY3JpdGljYWwgZnVuY3Rpb246IGBudm1lX3JkbWFfZmluZF9nZXRfZGV2aWNlYC4gVGhhdCBzaG91bGQgY3V0IHRocm91Z2ggdGhlIG5vaXNlIGFuZCBnaXZlIG1lIGEgbGFzZXItZm9jdXNlZCB2aWV3IG9mIGl0cyB1c2UuIFRoaXMgc2hvdWxkIGJlIGEgbXVjaCBtb3JlIGVmZmljaWVudCB3YXkgdG8gZHJpbGwgZG93biB0byB0aGUgcHJvYmxlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgxNjYsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0Njo0OC44NDM3ODY1OTVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk5OTUxMTI3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudm1lX3JkbWFfZmluZF9nZXRfZGV2aWNlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbnZtZS9ob3N0L3JkbWEuYz0zNjY9c3RhdGljIHN0cnVjdCBudm1lX3JkbWFfZGV2aWNlICpcXG5kcml2ZXJzL252bWUvaG9zdC9yZG1hLmM6MzY3Om52bWVfcmRtYV9maW5kX2dldF9kZXZpY2Uoc3RydWN0IHJkbWFfY21faWQgKmNtX2lkKVxcbmRyaXZlcnMvbnZtZS9ob3N0L3JkbWEuYy0zNjgte1xcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvcmRtYS5jPTQ5MT1zdGF0aWMgaW50IG52bWVfcmRtYV9jcmVhdGVfcXVldWVfaWIoc3RydWN0IG52bWVfcmRtYV9xdWV1ZSAqcXVldWUpXFxuLS1cXG5kcml2ZXJzL252bWUvaG9zdC9yZG1hLmMtNDk3LVxcbmRyaXZlcnMvbnZtZS9ob3N0L3JkbWEuYzo0OTg6XFx0cXVldWUtXFx1MDAzZWRldmljZSA9IG52bWVfcmRtYV9maW5kX2dldF9kZXZpY2UocXVldWUtXFx1MDAzZWNtX2lkKTtcXG5kcml2ZXJzL252bWUvaG9zdC9yZG1hLmMtNDk5LVxcdGlmICghcXVldWUtXFx1MDAzZWRldmljZSkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0Njo1MC44NDMzMDQ3NzJaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjQ0OTI3Mjk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgTlZNZS9SRE1BIENvZGViYXNlKipcblxuQWxyaWdodCwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IE5WTWUgb3ZlciBSRE1BIGRldmljZXMgYXJlIGRpc2NvdmVyZWQuIEkgcmVtZW1iZXIgc2VlaW5nIGBudm1lX3JkbWFfZmluZF9nZXRfZGV2aWNlYCBpbiB0aGUga2VybmVsIHNvdXJjZSBiZWZvcmUuIExldCBtZSBzZWUuLi4geWVzLCB0aGF0J3MgcmlnaHQsIGl0J3MgbG9jYXRlZCBpbiBgZHJpdmVycy9udm1lL2hvc3QvcmRtYS5jYC4gVGhhdCdzIHRoZSBzdGFydGluZyBwb2ludC4gTm93LCB0byB1bmRlcnN0YW5kIHRoZSBicm9hZGVyIGNvbnRleHQsIEkgbmVlZCB0byBzZWUgd2hlcmUgdGhhdCBmdW5jdGlvbiBpcyB1c2VkIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIE5WTWUtb0YgdGFyZ2V0IHNpZGUuIEkgYmV0IHRoZXJlIGlzIGEgYG52bWV0X3JkbWFfZmluZF9nZXRfZGV2aWNlYCB0aGF0IHdpbGwgYmUgcmVsZXZhbnQuIEkgc2hvdWxkIGNoZWNrIHRoYXQgYXMgdGhlIG5leHQgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg2MTYsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0Njo1NC4wODgyMzQ4NzFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgxOTc5NTY2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudm1ldF9yZG1hX2ZpbmRfZ2V0X2RldmljZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL252bWUvdGFyZ2V0L3JkbWEuYz0xMTkzPXN0YXRpYyBzdHJ1Y3QgbnZtZXRfcmRtYV9kZXZpY2UgKlxcbmRyaXZlcnMvbnZtZS90YXJnZXQvcmRtYS5jOjExOTQ6bnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2Uoc3RydWN0IHJkbWFfY21faWQgKmNtX2lkKVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvcmRtYS5jLTExOTUte1xcbi0tXFxuZHJpdmVycy9udm1lL3RhcmdldC9yZG1hLmM9MTU3Mz1zdGF0aWMgaW50IG52bWV0X3JkbWFfcXVldWVfY29ubmVjdChzdHJ1Y3QgcmRtYV9jbV9pZCAqY21faWQsXFxuLS1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L3JkbWEuYy0xNTc5LVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvcmRtYS5jOjE1ODA6XFx0bmRldiA9IG52bWV0X3JkbWFfZmluZF9nZXRfZGV2aWNlKGNtX2lkKTtcXG5kcml2ZXJzL252bWUvdGFyZ2V0L3JkbWEuYy0xNTgxLVxcdGlmICghbmRldikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0Njo1NS45MDgwMzY4NTJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NTYwMTU3MDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipBbmFseXppbmcgYGZyd3JfcXVlcnlfZGV2aWNlYCoqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIGBmcndyX3F1ZXJ5X2RldmljZWAuIExldCdzIHNlZSB3aGF0J3MgaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZnVuY3Rpb25hbGl0eSBhbmQgd2hlcmUgaXQgZml0cyB3aXRoaW4gdGhlIGxhcmdlciBhcmNoaXRlY3R1cmUuIEknbSBnb2luZyB0byBzdGFydCBieSB0cmFjaW5nIGl0cyBkZXBlbmRlbmNpZXMgYW5kIHNlZSB3aGF0IG90aGVyIG1vZHVsZXMgb3IgZnVuY3Rpb25zIGl0IGludGVyYWN0cyB3aXRoLiBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBib3R0bGVuZWNrcyBvciBhcmVhcyBmb3Igb3B0aW1pemF0aW9uIGhlcmU/IEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBob3cgaXQgaGFuZGxlcyBlcnJvciBjb25kaXRpb25zIGFuZCBlZGdlIGNhc2VzOyByb2J1c3RuZXNzIGlzIGFsd2F5cyBhIGtleSBjb25zaWRlcmF0aW9uLCBlc3BlY2lhbGx5IGluIHRoaXMgZG9tYWluLiBXaGF0IGtpbmQgb2YgZGF0YSBpcyB0aGlzIGZ1bmN0aW9uIHF1ZXJ5aW5nLCBhbmQgaG93IGlzIHRoYXQgZGF0YSB1c2VkIGRvd25zdHJlYW0/IEFyZSB0aGVyZSBhbnkgb3Bwb3J0dW5pdGllcyB0byBsZXZlcmFnZSBjYWNoaW5nIG9yIHByZS1jb21wdXRlZCB2YWx1ZXMgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZT8gVGhpcyB3YXJyYW50cyBhIGRlZXAgaW52ZXN0aWdhdGlvbi4gTGV0J3Mgc3RhcnQgd2l0aCBhIHN5c3RlbWF0aWMgY29kZSByZXZpZXcgYW5kIGlkZW50aWZ5IGFueSBwb3RlbnRpYWwgYXJlYXMgb2YgY29uY2Vybi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkwODEsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0NzowMS40NjgxOTYyOVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg2MDIzMjgyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmcndyX3F1ZXJ5X2RldmljZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc3VucnBjL3hwcnRyZG1hL2Zyd3Jfb3BzLmM9MTIyPWludCBmcndyX21yX2luaXQoc3RydWN0IHJwY3JkbWFfeHBydCAqcl94cHJ0LCBzdHJ1Y3QgcnBjcmRtYV9tciAqbXIpXFxuLS1cXG5uZXQvc3VucnBjL3hwcnRyZG1hL2Zyd3Jfb3BzLmMtMTU1LS8qKlxcbm5ldC9zdW5ycGMveHBydHJkbWEvZnJ3cl9vcHMuYzoxNTY6ICogZnJ3cl9xdWVyeV9kZXZpY2UgLSBQcmVwYXJlIGEgdHJhbnNwb3J0IGZvciB1c2Ugd2l0aCBGUldSXFxubmV0L3N1bnJwYy94cHJ0cmRtYS9mcndyX29wcy5jLTE1Ny0gKiBAZXA6IGVuZHBvaW50IHRvIGZpbGwgaW5cXG4tLVxcbm5ldC9zdW5ycGMveHBydHJkbWEvZnJ3cl9vcHMuYy0xNzEtICovXFxubmV0L3N1bnJwYy94cHJ0cmRtYS9mcndyX29wcy5jOjE3MjppbnQgZnJ3cl9xdWVyeV9kZXZpY2Uoc3RydWN0IHJwY3JkbWFfZXAgKmVwLCBjb25zdCBzdHJ1Y3QgaWJfZGV2aWNlICpkZXZpY2UpXFxubmV0L3N1bnJwYy94cHJ0cmRtYS9mcndyX29wcy5jLTE3My17XFxuLS1cXG5uZXQvc3VucnBjL3hwcnRyZG1hL3ZlcmJzLmM9Mzc4PXN0YXRpYyBpbnQgcnBjcmRtYV9lcF9jcmVhdGUoc3RydWN0IHJwY3JkbWFfeHBydCAqcl94cHJ0KVxcbi0tXFxubmV0L3N1bnJwYy94cHJ0cmRtYS92ZXJicy5jLTQwNC1cXHRlcC1cXHUwMDNlcmVfaW5saW5lX3JlY3YgPSB4cHJ0X3JkbWFfbWF4X2lubGluZV9yZWFkO1xcbm5ldC9zdW5ycGMveHBydHJkbWEvdmVyYnMuYzo0MDU6XFx0cmMgPSBmcndyX3F1ZXJ5X2RldmljZShlcCwgZGV2aWNlKTtcXG5uZXQvc3VucnBjL3hwcnRyZG1hL3ZlcmJzLmMtNDA2LVxcdGlmIChyYylcXG4tLVxcbm5ldC9zdW5ycGMveHBydHJkbWEveHBydF9yZG1hLmg9NTUxPXZvaWQgZnJ3cl9yZXNldChzdHJ1Y3QgcnBjcmRtYV9yZXEgKnJlcSk7XFxubmV0L3N1bnJwYy94cHJ0cmRtYS94cHJ0X3JkbWEuaDo1NTI6aW50IGZyd3JfcXVlcnlfZGV2aWNlKHN0cnVjdCBycGNyZG1hX2VwICplcCwgY29uc3Qgc3RydWN0IGliX2RldmljZSAqZGV2aWNlKTtcXG5uZXQvc3VucnBjL3hwcnRyZG1hL3hwcnRfcmRtYS5oLTU1My1pbnQgZnJ3cl9tcl9pbml0KHN0cnVjdCBycGNyZG1hX3hwcnQgKnJfeHBydCwgc3RydWN0IHJwY3JkbWFfbXIgKm1yKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDc6MDMuMzI4NDQwMTlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzcxOTA2Nzc2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHN1bW1hcml6aW5nIHRoZSBcIlRob3VnaHRzXCIgYmFzZWQgb24gbXkgZXhwZXJ0aXNlOlxuXG4qKkNoZWNraW5nIGByeGVfcXBfY2hrX2NhcGAqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcyBgcnhlX3FwX2Noa19jYXBgLiBJIHNlZSB0aGlzIGFzIGEgcG90ZW50aWFsIHBvaW50IG9mIGludGVyZXN0LiBJbW1lZGlhdGVseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMg4oCTIHRoaXMgbGlrZWx5IHJlZmVycyB0byBhIGZ1bmN0aW9uIG9yIHJvdXRpbmUgd2l0aGluIHRoZSBSWEUgKFJETUEgb3ZlciBDb252ZXJnZWQgRXRoZXJuZXQpIGNvbnRleHQgdGhhdCdzIHJlc3BvbnNpYmxlIGZvciBjaGVja2luZyB0aGUgY2FwYWJpbGl0aWVzIG9yIGNvbnN0cmFpbnRzIG9mIGEgUXVldWUgUGFpciAoUVApLiBHaXZlbiBteSBleHBlcmllbmNlLCBJJ20gYWxyZWFkeSBmb3JtdWxhdGluZyBxdWVzdGlvbnM6IFdoYXQgYXNwZWN0cyBvZiB0aGUgUVAgYXJlIHdlIGNoZWNraW5nPyBJcyB0aGlzIHJlbGF0ZWQgdG8gcmVzb3VyY2UgbGltaXRzLCBwcm90b2NvbCByZXN0cmljdGlvbnMsIG9yIGhhcmR3YXJlIHN1cHBvcnQ/IElzIHRoaXMgY2hlY2tpbmcgdGhlIFFQIHN0YXRlPyBUaGUgc2l6ZSwgbnVtYmVyIG9mIFdRRXMsIGFueSBvdGhlciBmZWF0dXJlIGJpdHM/IFRoZSBzcGVjaWZpYyBjb250ZXh0IGhlcmUgaXMgaW1wb3J0YW50IGFzIGRpZmZlcmVudCBjYXBhYmlsaXRpZXMgYXJlIGNoZWNrZWQgYXQgZGlmZmVyZW50IHRpbWVzLiBJZiBJIGtub3cgdGhlIGNvbnRleHQsIGFuZCB0aGUgb3RoZXIgY29kZSwgSSBjYW4gZ2l2ZSBhIG11Y2ggcmljaGVyIGFuc3dlci4gRnJvbSB0aGlzIHN0YXJ0aW5nIHBvaW50LCBJJ2Qgd2FudCB0byB1bmRlcnN0YW5kIHdoZXJlIHRoaXMgZnVuY3Rpb24gZml0cyBpbnRvIHRoZSBvdmVyYWxsIFJYRSBzdGFjaywgd2hhdCB0cmlnZ2VycyBpdHMgZXhlY3V0aW9uLCBhbmQgd2hhdCB0aGUgY29uc2VxdWVuY2VzIG9mIGl0cyByZXR1cm4gdmFsdWVzIGFyZS4gVGhhdCB3b3VsZCBnaXZlIG1lIHNvbWUgaW5zaWdodCBvbiB3aGF0J3MgZ29pbmcgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODY4LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDc6MDcuMDQ3NTEwNzY5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODYxMjMxNDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ4ZV9xcF9jaGtfY2FwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3FwLmM9Mzc9c3RhdGljIGlubGluZSB2b2lkIHJ4ZV9yZWNsYXNzaWZ5X3NlbmRfc29ja2V0KHN0cnVjdCBzb2NrZXQgKnNvY2spXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jLTY1LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3FwLmM6NjY6c3RhdGljIGludCByeGVfcXBfY2hrX2NhcChzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgaWJfcXBfY2FwICpjYXAsXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfcXAuYy02Ny1cXHRcXHRcXHQgIGludCBoYXNfc3JxKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfcXAuYz0xMDc9aW50IHJ4ZV9xcF9jaGtfaW5pdChzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgaWJfcXBfaW5pdF9hdHRyICppbml0KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfcXAuYy0xMjctXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfcXAuYzoxMjg6XFx0aWYgKHJ4ZV9xcF9jaGtfY2FwKHJ4ZSwgY2FwLCAhIWluaXQtXFx1MDAzZXNycSkpXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfcXAuYy0xMjktXFx0XFx0Z290byBlcnIxO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3N3L3J4ZS9yeGVfcXAuYz00ODc9aW50IHJ4ZV9xcF9jaGtfYXR0cihzdHJ1Y3QgcnhlX2RldiAqcnhlLCBzdHJ1Y3QgcnhlX3FwICpxcCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3FwLmMtNDk2LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9zdy9yeGUvcnhlX3FwLmM6NDk3OlxcdGlmIChtYXNrIFxcdTAwMjYgSUJfUVBfQ0FQIFxcdTAwMjZcXHUwMDI2IHJ4ZV9xcF9jaGtfY2FwKHJ4ZSwgXFx1MDAyNmF0dHItXFx1MDAzZWNhcCwgISFxcC1cXHUwMDNlc3JxKSlcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL3J4ZV9xcC5jLTQ5OC1cXHRcXHRnb3RvIGVycjE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ3OjA4LjkwODc0OTY5OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTkxMTEzNjY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBhdGNoIEFuYWx5c2lzIGZvciBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgbmVlZCB0byBsb29rIGF0IG1vcmUgY2xvc2VseS4gSXQgaW1wYWN0cyBmdW5jdGlvbmFsIGxvZ2ljIGFjY2Vzc2libGUgd2l0aGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBiZWNhdXNlIHdlJ3JlIGRlYWxpbmcgd2l0aCBSWEUsIHdoaWNoIGlzLCBvZiBjb3Vyc2UsIGEgc29mdHdhcmUgUkRNQSBkcml2ZXIuIFRoYXQgcmFpc2VzIGEgZmxhZy4gSSBzZWUgdGhlIGNoYW5nZXMgYXJlICpwcmltYXJpbHkqIHR5cGUgYWRqdXN0bWVudHMsIHdoaWNoIGlzIGdlbmVyYWxseSBsZXNzIGNvbmNlcm5pbmcsIGJ1dCB0aGV5IGFsc28gYWRkcmVzcyBwb3RlbnRpYWwgdW5kZXJmbG93IGlzc3VlcyBvciBsb2dpYyBlcnJvcnMgbGlua2VkIHRvIGBtYXhfc2VuZF9zZ2VgIGFuZCBgbWF4X3FwX3dyYC4gSG1tLlxuXG5UaGUgbmV4dCBxdWVzdGlvbiwgbmF0dXJhbGx5LCBpcyB3aGV0aGVyIGZ1enppbmcgaXMgd2FycmFudGVkIGhlcmUuIEdpdmVuIHRoYXQgaXQgdG91Y2hlcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgYW5kIGRyaXZlcnMsIHRoZSBhbnN3ZXIgaXMgYSByZXNvdW5kaW5nICp5ZXMqLiBBYnNvbHV0ZWx5LCBmdXp6aW5nIGlzIHJlcXVpcmVkLiBUaGlzIGhhcyB0aGUgcG90ZW50aWFsIGZvciBzaWduaWZpY2FudCBpbXBhY3QsIGV2ZW4gd2l0aCB0aGUgdHlwZS1yZWxhdGVkIGNoYW5nZXMuXG5cbk5vdywgbGV0J3MgaWRlbnRpZnkgYWxsIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gRm9yIFJYRSwgdGhhdCdzIHN0cmFpZ2h0Zm9yd2FyZDogYFJETUFfUlhFYC4gVGhlbiB3ZSBoYXZlIE5WTWUtb0YgUkRNQSwgd2hpY2ggcmVxdWlyZXMgYE5WTUVfUkRNQWAgYW5kIGBOVk1FX1RBUkdFVF9SRE1BYC4gUlBDIFJETUEgbmVlZHMgYFNVTlJQQ19YUFJUX1JETUFgIGFuZCBgU1ZDX1JETUFgLiBTTUIgRGlyZWN0IGlzIGNvbnRyb2xsZWQgYnkgYENJRlNfU01CX0RJUkVDVGAsIGFuZCBTUlAvU1JQVCBpbnZvbHZlcyBgSU5GSU5JQkFORF9TUlBgIGFuZCBgSU5GSU5JQkFORF9TUlBUYC4gRm9yIGlTRVIvaVNFUlQgaXQncyBgSU5GSU5JQkFORF9JU0VSYCBhbmQgYElORklOSUJBTkRfSVNFUlRgLiBGaW5hbGx5LCBSRFMgdXNlcyBgUkRTYCBhbmQgYFJEU19SRE1BYC5cblxuQWxyaWdodCwgdGltZSB0byBnbyBhbmQgY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgYW5kIHNlZSB3aGF0IG1vcmUgSSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA2NTEsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDc6MTQuMDk5ODY2MDE2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODk2NTU0OTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBSRE1BX1JYRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL0tjb25maWc6Mjpjb25maWcgUkRNQV9SWEVcXG5kcml2ZXJzL2luZmluaWJhbmQvc3cvcnhlL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiU29mdHdhcmUgUkRNQSBvdmVyIEV0aGVybmV0IChSb0NFKSBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ3OjE1Ljk5NjQyNjc2NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTI0NTc5OTU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqTlZNRV9SRE1BIERlZXAgRGl2ZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZm9jdXMuIEZpcnN0IHRoaW5ncyBmaXJzdDogYE5WTUVfUkRNQWAuIEdvdCB0byBnZXQgbXkgaGVhZCBiYWNrIGluIHRoYXQgc3BhY2UuIExldCdzIHNlZS4uLiB3aGF0J3MgbXkgaW5pdGlhbCBtZW50YWwgY2hlY2tsaXN0PyBMYXRlbmN5LCBiYW5kd2lkdGgsIGZhYnJpYyBjb25zaWRlcmF0aW9ucy4uLiB0aGUgdXN1YWwgc3VzcGVjdHMuIEkgbmVlZCB0byByZWZyZXNoIHRoZSBrZXkgY29uY2VwdHMsIHRoZSBjcml0aWNhbCBkZXNpZ24gZGVjaXNpb25zIGJlaGluZCBpdC4gV2FzIHRoZXJlIGEgc3BlY2lmaWMgdXNlIGNhc2Ugb3IgcGFwZXIgdGhhdCBJIHdhcyB0aGlua2luZyBhYm91dCBlYXJsaWVyIHRvZGF5PyBSaWdodCwgbmVlZCB0byBlbnN1cmUgZXZlcnl0aGluZydzIGNsZWFyIG9uIG15IG1pbmQgYmVmb3JlIGRpdmluZyBpbnRvIHRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtcy4gT2theSwgdGltZSB0byBicmluZyB1cCB0aGUgcmVsZXZhbnQgcGFwZXJzIGFuZCBzdGFydCBjb25uZWN0aW5nIHRoZSBkb3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTM0NSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ3OjE4LjkyMTAwODdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MTc4MTYxOTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5WTUVfUkRNQVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL252bWUvaG9zdC9LY29uZmlnPTQ3PWNvbmZpZyBOVk1FX0ZBQlJJQ1NcXG4tLVxcbmRyaXZlcnMvbnZtZS9ob3N0L0tjb25maWctNTEtXFxuZHJpdmVycy9udm1lL2hvc3QvS2NvbmZpZzo1Mjpjb25maWcgTlZNRV9SRE1BXFxuZHJpdmVycy9udm1lL2hvc3QvS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiTlZNIEV4cHJlc3Mgb3ZlciBGYWJyaWNzIFJETUEgaG9zdCBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ3OjIwLjczODgzMDk4MVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTU0ODI5NTk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyB0aGUgTlZNZSBPdmVyIEZhYnJpY3MgTGFuZHNjYXBlKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodD8gTGV0J3MgemVybyBpbiBvbiB0aGUgYE5WTUVfVEFSR0VUX1JETUFgIGFzcGVjdCBvZiB0aGlzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW50YWwgbW9kZWwgb2YgdGhhdCBzcGVjaWZpYyBjb25maWd1cmF0aW9uLiBJJ20gYWxyZWFkeSB0aGlua2luZyBhYm91dCBpdHMgbnVhbmNlcyBjb21wYXJlZCB0byBvdGhlciBmYWJyaWMgdHJhbnNwb3J0cyDigJMgc3BlY2lmaWNhbGx5LCBob3cgaXQgaGFuZGxlcyB0aGUgZGlyZWN0IG1lbW9yeSBhY2Nlc3MgaW1wbGljYXRpb25zLiBBcmUgd2UgdGFsa2luZyBmdWxsIFJETUEgc2VtYW50aWNzLCBvciBhIG1vcmUgbnVhbmNlZCBhcHByb2FjaD8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBmb3IgdGhlIHRhcmdldCdzIHJlc291cmNlIG1hbmFnZW1lbnQgYW5kIGl0cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBob3N0J3MgUkRNQSB2ZXJicz8gSSdtIGFudGljaXBhdGluZyBwb3RlbnRpYWwgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MgaW4gdGhlIG5ldHdvcmsgb3IgaG9zdC1zaWRlIHByb3RvY29sIHByb2Nlc3NpbmcsIGFuZCBgTlZNRV9UQVJHRVRfUkRNQWAgaXMgdGhlIGtleSBwaWVjZSBvZiB0aGF0IHB1enpsZS4gSXQncyB0aW1lIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgcmVsZXZhbnQgUkZDcyBhbmQgYW55IHJlY2VudCBwZXJmb3JtYW5jZSByZXBvcnRzIHJlbGF0ZWQgdG8gdGhpcyBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSBhIHNvbGlkIGdyaXAgb24gdGhlIHNwZWNpZmljIFJETUEgaW1wbGVtZW50YXRpb24gYmVpbmcgdXNlZCBhbmQgaXRzIGltcGFjdCBvbiBlbmQtdG8tZW5kIGxhdGVuY3kuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNjI5LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDc6MjMuNjkzNjYzMjA3WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODI1MTQ5MjIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOVk1FX1RBUkdFVF9SRE1BXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZz00MT1jb25maWcgTlZNRV9UQVJHRVRfTE9PUFxcbi0tXFxuZHJpdmVycy9udm1lL3RhcmdldC9LY29uZmlnLTUxLVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZzo1Mjpjb25maWcgTlZNRV9UQVJHRVRfUkRNQVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiTlZNZSBvdmVyIEZhYnJpY3MgUkRNQSB0YXJnZXQgc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDc6MjUuNTE4ODIwNjI3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1MDA3MjQyMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzczpcblxuKipSRE1BIFRyYW5zcG9ydCBDb25maWd1cmF0aW9uIENoZWNrKipcblxuT2theSwgc28gSSBuZWVkIHRvIHF1aWNrbHkgemVybyBpbiBvbiB0aGUgUkRNQSBhc3BlY3RzIG9mIHRoaXMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGl2ZSByaWdodCBpbnRvIGNoZWNraW5nIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb25zIHJlbGF0ZWQgdG8gUmVtb3RlIERpcmVjdCBNZW1vcnkgQWNjZXNzIGluIHRoaXMgY29udGV4dC4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gbG9vayBmb3IgdGhlIHByZXNlbmNlIGFuZCBzZXR0aW5ncyBvZiBgU1VOUlBDX1hQUlRfUkRNQWAgYW5kIGBTVkNfUkRNQWAuIFRoZXNlIGFyZSB0aGUga2V5cyB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgdHJhbnNwb3J0IGxheWVyIGlzIHNldCB1cCBhbmQgaWYgUkRNQSBpcyBwcm9wZXJseSBlbmFibGVkIGFuZCBjb25maWd1cmVkIG9uIHRoZSBzZXJ2ZXItc2lkZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE5OTEsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0NzoyOC4wMTk1NDc4MDJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4Mzc1NTQ1MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNVTlJQQ19YUFJUX1JETUFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3N1bnJwYy9LY29uZmlnPTEwND1jb25maWcgU1VOUlBDX0RFQlVHX1RSQUNFXFxuLS1cXG5uZXQvc3VucnBjL0tjb25maWctMTE3LVxcbm5ldC9zdW5ycGMvS2NvbmZpZzoxMTg6Y29uZmlnIFNVTlJQQ19YUFJUX1JETUFcXG5uZXQvc3VucnBjL0tjb25maWctMTE5LVxcdHRyaXN0YXRlIFxcXCJSUEMtb3Zlci1SRE1BIHRyYW5zcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDc6MjkuODU3MTA3NTAyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3NDI5MDQxMTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjoyMjI1MywiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDc6MzEuNjAwMDE0MjE1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTA4NTIyMjU4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU1VOUlBDX1NWQ19SRE1BXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0NzozMy41MDg1NDczMTNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkwNjEzOTc1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBzdmNfcmRtYV90cmFuc3BvcnQuY2AgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgbmVlZCB0byBnZXQgbXkgYmVhcmluZ3MgaGVyZS4gSSdtIGRlZXAgaW4gdGhlIHdlZWRzIHdpdGggYHN2Y19yZG1hX3RyYW5zcG9ydC5jYCwgYW5kIEkndmUgaGl0IGEgbWVudGFsIHJvYWRibG9jay4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHRoYXQgYXJlIGRyaXZpbmcgdGhpcyBtb2R1bGUuIEl0J3MgYSBjcml0aWNhbCBwaWVjZSwgb2J2aW91c2x5LCBidXQgSSdtIGdldHRpbmcgYSBtZW50YWwgYmxhbmsgb24gdGhlIG9wdGlvbnMgYXZhaWxhYmxlLiBJIGtub3cgdGhlcmUgYXJlIHNldmVyYWwgdHVuaW5nIHBhcmFtZXRlcnMgaW4gdGhpcyBhcmVhLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgYW5kIGNoZWNrIHdoYXQncyBzZXQgdXAgaW4gb3VyIHBhcnRpY3VsYXIgZW52aXJvbm1lbnQuIEnigJltIHRoaW5raW5nIHRoZXJlIGlzIGEgdHVuaW5nIHByb2JsZW0gb3IgY29uZmlndXJhdGlvbiBpc3N1ZSBzbyBJIG5lZWQgdG8ga25vdyB3aGVyZSBJIGFtIHdpdGggdGhlIHNldHRpbmdzLiBJIG5lZWQgdG8ga25vdyB0aGUgZGVmYXVsdHMgYXMgd2VsbC4gSSBuZWVkIHRvIGZpbmQgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24gYW5kIGhvdyBpdCBhZmZlY3RzIHRoZSB0cmFuc3BvcnQuIFJpZ2h0LiBCYWNrIHRvIHRoZSBkb2N1bWVudGF0aW9uLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMjg5LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDc6MzYuNDE0NjkwNDM5WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzI3MTM4MTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN2Y19yZG1hX3RyYW5zcG9ydFxcXFwub1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc3VucnBjL3hwcnRyZG1hL01ha2VmaWxlPTQ9cnBjcmRtYS15IDo9IHRyYW5zcG9ydC5vIHJwY19yZG1hLm8gdmVyYnMubyBmcndyX29wcy5vIGliX2NsaWVudC5vIFxcXFxcXG5uZXQvc3VucnBjL3hwcnRyZG1hL01ha2VmaWxlOjU6XFx0c3ZjX3JkbWEubyBzdmNfcmRtYV9iYWNrY2hhbm5lbC5vIHN2Y19yZG1hX3RyYW5zcG9ydC5vIFxcXFxcXG5uZXQvc3VucnBjL3hwcnRyZG1hL01ha2VmaWxlLTYtXFx0c3ZjX3JkbWFfc2VuZHRvLm8gc3ZjX3JkbWFfcmVjdmZyb20ubyBzdmNfcmRtYV9ydy5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDc6MzkuMTQxODM0NjUxWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2NDYzNzQyODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJpemVkIHRob3VnaHQgcHJvY2VzcywgcHJlc2VudGVkIGFzIGlmIEknbSBhbmFseXppbmcgdGhpcyBjb2RlIG15c2VsZjpcblxuKipUcmFjaW5nIHRoZSBTb3VyY2U6IHJwY3JkbWEteSBcdTAwMjYgdGhlIE1ha2VmaWxlKipcblxuUmlnaHQsIHNvIHRoaXMgYXBwZWFycyB0byBiZSBvcmlnaW5hdGluZyBmcm9tIGBycGNyZG1hLXlgLiBUaGF0IGluc3RhbnRseSB0ZWxscyBtZSBhIGZldyB0aGluZ3MsIG1vc3RseSByZWxhdGVkIHRvIFJETUEsIHBvdGVudGlhbGx5IHJlbGF0ZWQgdG8gcmVtb3RlIHByb2NlZHVyZSBjYWxscyBvdmVyIFJETUEuIE15IGltbWVkaWF0ZSByZWFjdGlvbiBpcyB0byBjaGVjayB0aGUgYE1ha2VmaWxlYC4gVGhhdCdzIHdoZXJlIEknbSBnb2luZyB0byBmaW5kIHRoZSBidWlsZCBydWxlcywgZGVwZW5kZW5jaWVzLCBhbmQgbGlrZWx5IHRoZSBjcnVjaWFsIGNvbXBpbGF0aW9uIGZsYWdzIG9yIGxpbmtlciBzZXR0aW5ncyBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb21wb25lbnQuIFRoZSBgTWFrZWZpbGVgIGlzIHRoZSBSb3NldHRhIFN0b25lIGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGlzIGBycGNyZG1hLXlgIG1vZHVsZSBmaXRzIGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLiBJdCdzIHRoZSBsb2dpY2FsIG5leHQgc3RlcCB0byB1bnJhdmVsaW5nIHRoZSBwdXJwb3NlIGFuZCBpbXBsZW1lbnRhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI2NzAsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0Nzo0NS43ODgyMTM1OTZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMzk3ODU2MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnBjcmRtYS15XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zdW5ycGMveHBydHJkbWEvTWFrZWZpbGU9Mj1vYmotJChDT05GSUdfU1VOUlBDX1hQUlRfUkRNQSkgKz0gcnBjcmRtYS5vXFxubmV0L3N1bnJwYy94cHJ0cmRtYS9NYWtlZmlsZS0zLVxcbm5ldC9zdW5ycGMveHBydHJkbWEvTWFrZWZpbGU6NDpycGNyZG1hLXkgOj0gdHJhbnNwb3J0Lm8gcnBjX3JkbWEubyB2ZXJicy5vIGZyd3Jfb3BzLm8gaWJfY2xpZW50Lm8gXFxcXFxcbm5ldC9zdW5ycGMveHBydHJkbWEvTWFrZWZpbGUtNS1cXHRzdmNfcmRtYS5vIHN2Y19yZG1hX2JhY2tjaGFubmVsLm8gc3ZjX3JkbWFfdHJhbnNwb3J0Lm8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0Nzo0OC4xMjgwMDUxMDVaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzM2MjM4MzQxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gcmVhc29uaW5nOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudCBvZiBSRE1BIGFuZCBDSUZTKipcblxuQWxyaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBuZXR3b3JrIHByb3RvY29scywgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBTVU5SUENfWFBSVF9SRE1BYCBsaWtlbHkgY292ZXJzIHRoZSBSRE1BIGFzcGVjdCBlZmZlY3RpdmVseS4gVGhhdCdzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQuIEhvd2V2ZXIsIHdlJ3JlIG5vdCBqdXN0IGxvb2tpbmcgYXQgUkRNQSwgc28sIGJlZm9yZSBJIGdldCB0b28gaW52ZXN0ZWQgaW4gdGhhdCBhcmVhLCBpdCdzIHdvcnRoIGNyb3NzLXJlZmVyZW5jaW5nIHRoaXMgdGhpbmtpbmcgYWdhaW5zdCB0aGUgb3RoZXIgcHJvdG9jb2wgbWVudGlvbmVkLiBNeSBuZXh0IG1vdmUgaXMgdG8gdmVyaWZ5IHRoYXQgYENJRlNfU01CX0RJUkVDVGAgaXMgdGhlIHJpZ2h0IHByb3RvY29sLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzAyNCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ3OjU1LjQ5MDM5MTU0NVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEyODM0Nzk0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQ0lGU19TTUJfRElSRUNUXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL3NtYi9jbGllbnQvS2NvbmZpZz0xNzk9aWYgQ0lGU1xcbmZzL3NtYi9jbGllbnQvS2NvbmZpZy0xODAtXFxuZnMvc21iL2NsaWVudC9LY29uZmlnOjE4MTpjb25maWcgQ0lGU19TTUJfRElSRUNUXFxuZnMvc21iL2NsaWVudC9LY29uZmlnLTE4Mi1cXHRib29sIFxcXCJTTUIgRGlyZWN0IHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ3OjU3LjYxODc0NTg5OFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTI3NzEwNjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgU01CIERpcmVjdCBBY2NlcHQgRnVuY3Rpb24qKlxuXG5Pa2F5LCB0aGUgcHJvYmxlbSBzZWVtcyB0byBiZSBvcmlnaW5hdGluZyB3aXRoaW4gYGZzL3NtYi9zbWJkaXJlY3QvYWNjZXB0LmNgLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbi4gQmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgSSBzaG91bGQgdGFrZSBhIHN0ZXAgYmFjayBhbmQgZ2V0IGEgaGFuZGxlIG9uIHRoZSBidWlsZCBlbnZpcm9ubWVudC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgc3BlY2lmaWMgZmlsZSBpcyBjb21waWxlZCBhbmQgbGlua2VkLiBUaGVyZWZvcmUsIHRoZSB2ZXJ5IGZpcnN0IHRoaW5nIEknbGwgZG8gaXMgY2hlY2sgdGhlIGBNYWtlZmlsZWAgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZGlyZWN0b3J5LiBVbmRlcnN0YW5kaW5nIHRoZSBidWlsZCBwcm9jZXNzIHdpbGwgaWxsdW1pbmF0ZSBkZXBlbmRlbmNpZXMsIGNvbXBpbGVyIGZsYWdzLCBhbmQgYW55IHJlbGV2YW50IHByZXByb2Nlc3NvciBkZWZpbml0aW9ucyB0aGF0IG1pZ2h0IGltcGFjdCB0aGUgYmVoYXZpb3IgSSdtIHNlZWluZy4gR2V0dGluZyB0aGUgYnVpbGQgY29udGV4dCBpcyBjcnVjaWFsIGJlZm9yZSBJIGV2ZW4gc3RhcnQgcmVhZGluZyB0aGUgQyBjb2RlLiBJdCdsbCBnaXZlIG1lIGEgY2xlYXJlciBwaWN0dXJlIG9mIGhvdyB0aGlzIGZ1bmN0aW9uIGZpdHMgaW50byB0aGUgb3ZlcmFsbCBTTUIgRGlyZWN0IGluZnJhc3RydWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzI5NSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ4OjAxLjc0NjQ1OTAzOFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE1NTc4NzYwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzbWJkaXJlY3QvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIk1BSU5UQUlORVJTPTI0NzY5PUY6XFx0ZnMvc21iL2NsaWVudC9zbWJkaXJlY3QuKlxcbk1BSU5UQUlORVJTOjI0NzcwOkY6XFx0ZnMvc21iL3NtYmRpcmVjdC9cXG5NQUlOVEFJTkVSUy0yNDc3MS1GOlxcdGZzL3NtYi9zZXJ2ZXIvdHJhbnNwb3J0X3JkbWEuKlxcbi0tXFxuZnMvc21iL0tjb25maWc9Nj1zb3VyY2UgXFxcImZzL3NtYi9zZXJ2ZXIvS2NvbmZpZ1xcXCJcXG5mcy9zbWIvS2NvbmZpZzo3OnNvdXJjZSBcXFwiZnMvc21iL3NtYmRpcmVjdC9LY29uZmlnXFxcIlxcbmZzL3NtYi9LY29uZmlnLTgtXFxuLS1cXG5mcy9zbWIvTWFrZWZpbGU9Mz1vYmotJChDT05GSUdfU01CRlMpXFx0XFx0Kz0gY29tbW9uL1xcbmZzL3NtYi9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19TTUJESVJFQ1QpXFx0XFx0Kz0gc21iZGlyZWN0L1xcbmZzL3NtYi9NYWtlZmlsZS01LW9iai0kKENPTkZJR19DSUZTKVxcdFxcdCs9IGNsaWVudC9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDg6MDMuOTAyMjY5NDEyWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwODA2MTEzNzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipSZWZsZWN0aW5nIG9uIGBDT05GSUdfU01CRElSRUNUYCoqXG5cbkFscmlnaHQsIHNvIHRoZSBwcm9tcHQganVzdCB0aHJldyBvdXQgYENPTkZJR19TTUJESVJFQ1RgLiBUaGF0IGltbWVkaWF0ZWx5IG1ha2VzIG1lIHN0YXJ0IHRoaW5raW5nIGFib3V0IFJETUEsIHNwZWNpZmljYWxseSBJbmZpbmlCYW5kIG9yIFJvQ0UsIGFuZCBpdHMgYXBwbGljYXRpb24gd2l0aGluIHRoZSBTTUIgcHJvdG9jb2wuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYnlwYXNzaW5nIHRoZSB0cmFkaXRpb25hbCBUQ1AvSVAgc3RhY2sgdG8gcHJvdmlkZSBsb3ctbGF0ZW5jeSwgaGlnaC1iYW5kd2lkdGggZmlsZSBzaGFyaW5nLCB3aGljaCBpcyBwcmV0dHkgZXhjaXRpbmcuIEknbSBtZW50YWxseSBwYXJzaW5nIHRoZSBpbXBsaWNhdGlvbnM6IGluY3JlYXNlZCBDUFUgb2ZmbG9hZCwgcG90ZW50aWFsbHkgbG93ZXIgbGF0ZW5jeSBib3R0bGVuZWNrcyBvbiBoaWdobHkgbG9hZGVkIHN5c3RlbXMuIEknbSBhbHNvIGNvbnNpZGVyaW5nIHRoZSBoYXJkd2FyZSByZXF1aXJlbWVudHMgLSBhcmUgd2UgZGVhbGluZyB3aXRoIGRlZGljYXRlZCBSRE1BIE5JQ3MsIHNwZWNpZmljIG5ldHdvcmsgZmFicmljIGRlcGVuZGVuY2llcywgYW5kIHdoYXQgYWJvdXQgdGhlIGtlcm5lbCBzdXBwb3J0PyBUaGUgcG90ZW50aWFsIHBlcmZvcm1hbmNlIGJlbmVmaXRzIGFyZSB0aGVyZSwgYnV0IHRoZSBjb21wbGV4aXR5IGluY3JlYXNlcyBwcm9wb3J0aW9uYWxseS4gVGhlIG1lbW9yeSBtb2RlbCBpbXBsaWNhdGlvbnMgYXJlIGZyb250IGFuZCBjZW50ZXIgYXMgd2VsbCDigJMgaG93IGFyZSB0aGV5IGhhbmRsaW5nIHRoZSBkaXJlY3QgbWVtb3J5IGFjY2VzcyBhbmQgcHJvdGVjdGlvbiB3aXRoIHRoZSBhcHBsaWNhdGlvbj8gSSB3b3VsZCBiZSBhc2tpbmcgaWYgdGhlIGtlcm5lbCBoYXMgdGhlIGFwcHJvcHJpYXRlIG1vZHVsZXMgYnVpbHQgaW4gb3IgZXZlbiBpbmNsdWRlZC4gSSB3b25kZXIgaG93IHRoZSBzZWN1cml0eSBtb2RlbCBpbnRlZ3JhdGVzIHdpdGggdGhlIFJETUEgY2FwYWJpbGl0aWVzIGFuZCBpZiB0aGUgc2VjdXJpdHkgbGF5ZXJzIGFuZCBpbnRlZ3JpdHkgYXJlIGZ1bGx5IHN1cHBvcnRlZC5cbkkgYWxzbyB3YW50IHRvIGtub3cgdGhlIGN1cnJlbnQgc3RhdHVzOiBJcyBpdCBzdGlsbCBhIGhpZ2hseS1zcGVjaWFsaXplZCBuaWNoZSBpbXBsZW1lbnRhdGlvbiwgb3IgaXMgaXQgcmVhY2hpbmcgYSBwb2ludCBvZiBicm9hZGVyIGFkb3B0aW9uIGluIG1haW5zdHJlYW0gc3RvcmFnZSBzb2x1dGlvbnM/IFdoYXQncyB0aGUgc3RhdGUgb2YgdGhlIGFydCB3aGVuIGl0IGNvbWVzIHRvIGludGVyb3BlcmFiaWxpdHkgd2l0aCBkaWZmZXJlbnQgU01CIGRpYWxlY3RzIGFuZCB2ZXJzaW9ucz8gSSBpbWFnaW5lIHRoZXJlJ3MgYSB0cmFkZS1vZmYgYmV0d2VlbiBwZXJmb3JtYW5jZSBnYWluIGFuZCBmZWF0dXJlIGNvbXBhdGliaWxpdHkuIExldCdzIHNlZSBob3cgdGhpcyBwbGF5cyBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNzM4LCJPdXRwdXRUb2tlbnMiOjE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0ODowNy45ODI4ODQxNjNaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMjc4MjY4MDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNNQkRJUkVDVFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9zbWIvc21iZGlyZWN0L0tjb25maWctNC1cXG5mcy9zbWIvc21iZGlyZWN0L0tjb25maWc6NTpjb25maWcgU01CRElSRUNUXFxuZnMvc21iL3NtYmRpcmVjdC9LY29uZmlnLTYtXFx0ZGVmX3RyaXN0YXRlIG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDg6MTAuMDEwNzE2MzE5WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4ODkwMzk2NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOlxuXG4qKkV2YWx1YXRpbmcgSW5maW5pQmFuZCBTUlAgYW5kIFNSUFQgQ29uZmlndXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcsIGxldCdzIGp1c3QgbWFrZSBzdXJlIHdlJ3ZlIGxvb2tlZCBhdCB0aGUgY3VycmVudCBzZXR1cCBmb3IgYElORklOSUJBTkRfU1JQYCBhbmQgYElORklOSUJBTkRfU1JQVGAuIEkgd2FudCB0byBnZXQgYSBnb29kIHNlbnNlIG9mIHRoZSBjb25maWd1cmF0aW9uIGFuZCBlbnN1cmUgbm90aGluZyBvYnZpb3VzIGlzIG1pc3NlZC4gVGhpcyBjaGVjayBpcyBjcnVjaWFsIGZvciBwZXJmb3JtYW5jZSBhbmQgc3RhYmlsaXR5LCBnaXZlbiB0aGUgY3JpdGljYWwgcm9sZSBvZiBTUlAgYW5kIFNSUFQgd2l0aGluIHRoZSBJbmZpbmlCYW5kIGVudmlyb25tZW50LiBUaGlzIHNob3VsZCBiZSBhIHF1aWNrIGRpYWdub3N0aWMgc3RlcCwgYnV0IGltcG9ydGFudCB0byBkbyBtZXRob2RpY2FsbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MTQ5LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDg6MTIuODk5NzU4ODg2WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTI1NDg2OTA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJTkZJTklCQU5EX1NSUFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9zcnAvS2NvbmZpZzoyOmNvbmZpZyBJTkZJTklCQU5EX1NSUFxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSW5maW5pQmFuZCBTQ1NJIFJETUEgUHJvdG9jb2xcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3NycHQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwdC9LY29uZmlnOjI6Y29uZmlnIElORklOSUJBTkRfU1JQVFxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvc3JwdC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkluZmluaUJhbmQgU0NTSSBSRE1BIFByb3RvY29sIHRhcmdldCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0ODoxNC44MjUyNTA1NTRaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE4NTI5NzY1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXM6XG5cbioqSW52ZXN0aWdhdGluZyBJbmZpbmliYW5kIGlTRVIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB0aGUgc3RhdHVzIG9yIHJlbGV2YW5jZSBvZiB0aGVzZSBJbmZpbmliYW5kLXJlbGF0ZWQgdmFyaWFibGVzLiBGaXJzdCwgSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9ucyBmb3IgYm90aCBgSU5GSU5JQkFORF9JU0VSYCBhbmQgYElORklOSUJBTkRfSVNFUlRgLiBJJ20gZ29pbmcgdG8gYXNzdW1lIHRoaXMgaXMgcmVsYXRlZCB0byBpU0VSIChpU0NTSSBFeHRlbnNpb25zIGZvciBSRE1BKSBiZWNhdXNlIG9mIHRoZSBuYW1pbmcgY29udmVudGlvbiwgYnV0IEkgbmVlZCB0byBjb25maXJtIHRoZSBzcGVjaWZpYyBmdW5jdGlvbiBlYWNoIG9uZSBoYW5kbGVzIHdpdGhpbiB0aGUgYnJvYWRlciBJbmZpbmliYW5kIGVjb3N5c3RlbS4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkb2N1bWVudGF0aW9uLCBvciBtYXliZSBsb29rIGF0IHNvbWUgZXhhbXBsZSBjb25maWd1cmF0aW9ucy4gSG9wZWZ1bGx5LCB0aGUgbmFtaW5nIGlzIGludHVpdGl2ZSwgYW5kIHRoZWlyIHB1cnBvc2UgYW5kIHJlbGF0aW9uIHdpbGwgYmUgc2VsZi1ldmlkZW50LiBJZGVhbGx5LCBJIGNhbiBzZWUgZXhhY3RseSB3aGF0IHNldHRpbmcgdGhlc2UgdmFyaWFibGVzIGltcGFjdHMgd2l0aGluIHRoZSBpU0VSIHN0YWNrIHRvIGVuc3VyZSB0aGF0IGl0J3MgY29ycmVjdGx5IGNvbmZpZ3VyZWQgb3IgdGhhdCBJIGNhbiBpZGVudGlmeSBhIHByb2JsZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NDk3LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDg6MTguMDEwNTUwMjY1WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODk2NjkyODQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJTkZJTklCQU5EX0lTRVJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvS2NvbmZpZzoyOmNvbmZpZyBJTkZJTklCQU5EX0lTRVJcXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJpU0NTSSBFeHRlbnNpb25zIGZvciBSRE1BIChpU0VSKVxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlcnQvS2NvbmZpZzoyOmNvbmZpZyBJTkZJTklCQU5EX0lTRVJUXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VydC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcImlTQ1NJIEV4dGVuc2lvbnMgZm9yIFJETUEgKGlTRVIpIHRhcmdldCBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0ODoxOS45MDcyNDg4ODRaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE0MzcxMDg4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIEluZmluaWJhbmQgUm91dGVyIENsaWVudCBhbmQgU2VydmVyIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIHJpZ2h0IGluIGFuZCBkaXNzZWN0IHdoYXQncyBnb2luZyBvbiB3aXRoIHRoZSBgSU5GSU5JQkFORF9SVFJTX0NMSUVOVGAgYW5kIGBJTkZJTklCQU5EX1JUUlNfU0VSVkVSYCBzZXR0aW5ncy4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgdG8gcXVpY2tseSBjb25maXJtIHRoZSBzdGF0ZSBvZiB0aGVzZSB2YXJpYWJsZXMuIERlcGVuZGluZyBvbiB0aGVpciBjb25maWd1cmF0aW9uLCB3ZSBjYW4gYmVnaW4gdG8gdHJvdWJsZXNob290IGlzc3VlcyB3aXRoIEluZmluaWJhbmQgcm91dGluZy4gVGhleSBhcmUgZnVuZGFtZW50YWwgaW4gZGV0ZXJtaW5pbmcgdGhlIGZ1bmN0aW9uYWwgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGNvbm5lY3RlZCBkZXZpY2VzLiBFc3NlbnRpYWxseSwgYXJlIHRoZXkgYWN0aXZlLCBpbmFjdGl2ZSwgd2hhdCBhcmUgdGhlIGN1cnJlbnQgdmFsdWVzPyBBcmUgdGhleSBjb3JyZWN0bHkgY29uZmlndXJlZCByZWxhdGl2ZSB0byBlYWNoIG90aGVyPyBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4gY2xpZW50IGFuZCBzZXJ2ZXIgd2lsbCBiZWNvbWUgY3JpdGljYWwgaWYgdGhlcmUgaXMgYW55IHRyYWZmaWMgZmxvdyBwcm9ibGVtcy4gS25vd2luZyB0aGUgdmFsdWVzIGdpdmVzIGEgc29saWQgZm91bmRhdGlvbi4gVGhlc2UgdmFyaWFibGVzLCBpbiB0aGUgY29udGV4dCBvZiByb3V0aW5nLCBpbW1lZGlhdGVseSB0cmlnZ2VyIHF1ZXN0aW9ucyBhcm91bmQgd2hldGhlciB0aGV5IGFyZSBwcm9wZXJseSBkZWZpbmVkLCBpZiB0aGVyZSBhcmUgYW55IGNvbmZsaWN0cywgYW5kIGlmIHRoZXkgYWxpZ24gd2l0aCB0aGUgZXhwZWN0ZWQgY29tbXVuaWNhdGlvbiBtb2RlbC4gSSdsbCBuZWVkIHRvIGtub3cgdGhlIGNvbnRleHQgb2YgdGhlIGxhcmdlciBzZXR1cCB0byB1bmRlcnN0YW5kIGFueSBzcGVjaWZpYyBpc3N1ZXMsIGJ1dCB0aGVzZSB2YXJpYWJsZXMgYXJlIGEgZ3JlYXQgc3RhcnRpbmcgcG9pbnQgZm9yIGFuYWx5emluZyByb3V0aW5nIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0OTE3LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDg6MjMuMDUwOTYxNTI1WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTU3NTEyNDk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJTkZJTklCQU5EX1JUUlNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL3VscC9ydHJzL0tjb25maWctMi1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZzozOmNvbmZpZyBJTkZJTklCQU5EX1JUUlNcXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZy00LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZy02LVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9LY29uZmlnOjc6Y29uZmlnIElORklOSUJBTkRfUlRSU19DTElFTlRcXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZy04LVxcdHRyaXN0YXRlIFxcXCJSVFJTIGNsaWVudCBtb2R1bGVcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZy0xNy1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL3J0cnMvS2NvbmZpZzoxODpjb25maWcgSU5GSU5JQkFORF9SVFJTX1NFUlZFUlxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvcnRycy9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJSVFJTIHNlcnZlciBtb2R1bGVcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ4OjI1LjAwODQ3OTgwMloiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTIxNzc1MjU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSB0aGUgZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgUkRNQSB3aXRoaW4gUkRTKipcblxuQWxyaWdodCwgdGhlIG1lbnRhbCBnZWFycyBhcmUgc3RhcnRpbmcgdG8gdHVybi4gXCJSRFNfUkRNQVwiLi4uIHRoYXQncyB0aGUgdHJpZ2dlci4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiB0aGlzLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBSRE1BIGludGVyYWN0cyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgUmVtb3RlIERpcmVjdCBNZW1vcnkgQWNjZXNzIChSRE1BKSBhbmQgUmVsYXRpb25hbCBEYXRhYmFzZSBTZXJ2aWNlIChSRFMpLiBJIG5lZWQgdG8gY2hlY2sgdGhlIGN1cnJlbnQgc3RhdHVzLCBhbmQgc3RhcnQgbXkgaW52ZXN0aWdhdGlvbiBmcm9tIHRoZXJlLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU0MjMsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0ODoyNy45MzAyNTgwNDlaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4ODEyNDQ3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJEU19SRE1BXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9yZHMvS2NvbmZpZz0zPWNvbmZpZyBSRFNcXG4tLVxcbm5ldC9yZHMvS2NvbmZpZy05LVxcbm5ldC9yZHMvS2NvbmZpZzoxMDpjb25maWcgUkRTX1JETUFcXG5uZXQvcmRzL0tjb25maWctMTEtXFx0dHJpc3RhdGUgXFxcIlJEUyBvdmVyIEluZmluaWJhbmRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ4OjI5LjgxMTUwODA5OFoiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjkyOTgxMDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgSU5GSU5JQkFORF9JUE9JQmAgVmFyaWFibGUqKlxuXG5SaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYElORklOSUJBTkRfSVBPSUJgIHRoaW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW1tZWRpYXRlbHkgY29uc2lkZXIgaXRzIGNvbnRleHQuIFdlJ3JlIG9idmlvdXNseSBkZWFsaW5nIHdpdGggSW5maW5pQmFuZCwgYW5kIHRoZSBwcmVzZW5jZSBvZiBcIklQT0lCXCIgc3VnZ2VzdHMgd2UncmUgdGFsa2luZyBhYm91dCBJUCBvdmVyIElCLiBUaGlzIGlzIHVzdWFsbHkgdGhlIGFyZWEgb2YgcG90ZW50aWFsIHBlcmZvcm1hbmNlIHR1bmluZy9jb25maWd1cmF0aW9uLCBvciBkZWJ1Z2dpbmcgZm9yIElCIGZhYnJpYyBiZWhhdmlvci4gTXkgbWluZCBpbW1lZGlhdGVseSBmbGFzaGVzIHRvIHNjZW5hcmlvcyBsaWtlOiBpcyB0aGlzIHNldHRpbmcgYSBkcml2ZXIgZmxhZywgYW4gZW52aXJvbm1lbnRhbCB2YXJpYWJsZSwgb3IgYSBrZXJuZWwgcGFyYW1ldGVyPyBXaGF0IGxldmVsIG9mIHRoZSBzdGFjayBpcyBpdCBpbXBhY3Rpbmc/IEFuZCBmcm9tIHRoZXJlLCB3aGF0IG1pZ2h0IGJlIGl0cyBlZmZlY3RzIG9uLCBzYXksIHRocm91Z2hwdXQsIGxhdGVuY3ksIG9yIGV2ZW4gb3ZlcmFsbCBzeXN0ZW0gc3RhYmlsaXR5PyBJJ20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgcXVlc3Rpb25zIGFib3V0IG5ldHdvcmsgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24gYW5kIHBvdGVudGlhbCBjb25mbGljdHMgd2l0aCBvdGhlciBuZXR3b3JrIHNldHVwcywgcGVyaGFwcyBldmVuIHdpdGggdGhpbmdzIGxpa2UgYHJkbWFfY21gLiBJIG5lZWQgdG8gYXNzZXNzIHdoYXQgaXQgZG9lcyB0byB0aGUgZGVmYXVsdCBiZWhhdmlvci4gSXMgdGhpcyBzZXR0aW5nIGJlaW5nIHVzZWQgdG8gZW5hYmxlLCBkaXNhYmxlLCBvciBtb2RpZnkgc29tZSBhc3BlY3Qgb2YgSVBPSUI/IElzIGl0IGEgZ2VuZXJhbCBzZXR0aW5nLCBvciBzcGVjaWZpYyB0byBhIGNlcnRhaW4gdmVuZG9yJ3MgaW1wbGVtZW50YXRpb24sIG9yIHBvc3NpYmx5IHRoZSBsaW51eCBrZXJuZWw/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgaXQncyAqZG9pbmcqIGJlZm9yZSBJIGNhbiB1bmRlcnN0YW5kIGl0cyBpbXBhY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NjQzLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDg6MzQuNTA0NDkxMjU1WiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTA0NDU2MjY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJTkZJTklCQU5EX0lQT0lCXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvS2NvbmZpZzoyOmNvbmZpZyBJTkZJTklCQU5EX0lQT0lCXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIklQLW92ZXItSW5maW5pQmFuZFxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvS2NvbmZpZy0xMS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWc6MTI6Y29uZmlnIElORklOSUJBTkRfSVBPSUJfQ01cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWctMTMtXFx0Ym9vbCBcXFwiSVAtb3Zlci1JbmZpbmlCYW5kIENvbm5lY3RlZCBNb2RlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lwb2liL0tjb25maWctMjYtXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnOjI3OmNvbmZpZyBJTkZJTklCQU5EX0lQT0lCX0RFQlVHXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTI4LVxcdGJvb2wgXFxcIklQLW92ZXItSW5maW5pQmFuZCBkZWJ1Z2dpbmdcXFwiIGlmIEVYUEVSVFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTQxLVxcbmRyaXZlcnMvaW5maW5pYmFuZC91bHAvaXBvaWIvS2NvbmZpZzo0Mjpjb25maWcgSU5GSU5JQkFORF9JUE9JQl9ERUJVR19EQVRBXFxuZHJpdmVycy9pbmZpbmliYW5kL3VscC9pcG9pYi9LY29uZmlnLTQzLVxcdGJvb2wgXFxcIklQLW92ZXItSW5maW5pQmFuZCBkYXRhIHBhdGggZGVidWdnaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0xOVQyMDo0ODozNi40MDg5NTU5NzRaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDk5OTk2Nzg5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIFJETUEgQ29uZmlndXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGVzZSBSRE1BLXJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIEkgc2VlIGEgcHJldHR5IGNvbXByZWhlbnNpdmUgbGlzdCBoZXJlOiBgUkRNQV9SWEVgLCBgTlZNRV9SRE1BYCwgYE5WTUVfVEFSR0VUX1JETUFgLCBgU1VOUlBDX1hQUlRfUkRNQWAsIGBTTUJESVJFQ1RgLCBgSU5GSU5JQkFORF9TUlBgLCBgSU5GSU5JQkFORF9TUlBUYCwgYElORklOSUJBTkRfSVNFUmAsIGBJTkZJTklCQU5EX0lTRVJUYCwgYElORklOSUJBTkRfUlRSU19DTElFTlRgLCBgSU5GSU5JQkFORF9SVFJTX1NFUlZFUmAsIGBSRFNfUkRNQWAsIGFuZCBgSU5GSU5JQkFORF9JUE9JQmAuIFNlZW1zIGxpa2UgdGhlIGtlcm5lbCBkZXZlbG9wZXJzIGhhdmUgYmVlbiBrZWVwaW5nIGJ1c3khXG5cbkhhbmcgb24gYSBzZWNvbmTigKYgaXNuJ3QgYFNNQkRJUkVDVGAgYSBoaWRkZW4gY29uZmlnPyBUaGF0IHJpbmdzIGEgYmVsbC4gR290dGEgZG91YmxlLWNoZWNrIHRoYXQuIExldCBtZSBxdWlja2x5IGdvIGxvb2sgaW4gYGZzL3NtYi9zbWJkaXJlY3QvS2NvbmZpZ2AgdG8gY29uZmlybSBhbmQgcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGRlcGVuZGVuY2llcyBhbmQgcHVycG9zZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYyODksIk91dHB1dFRva2VucyI6MTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDg6NDEuNDA4OTI3MDg1WiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTM4MDI1Njk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTUJESVJFQ1RcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvc21iL3NtYmRpcmVjdC9LY29uZmlnLTQtXFxuZnMvc21iL3NtYmRpcmVjdC9LY29uZmlnOjU6Y29uZmlnIFNNQkRJUkVDVFxcbmZzL3NtYi9zbWJkaXJlY3QvS2NvbmZpZy02LVxcdGRlZl90cmlzdGF0ZSBuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ4OjQzLjM0Njk1ODY0M1oiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODQwNjAzMjk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgRnVuY3Rpb24gRGVmaW5pdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBoZXJlOiBgZGVmX3RyaXN0YXRlIG5gLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCB3aGVyZSBpcyBgZGVmX3RyaXN0YXRlYCBiZWluZyBpbnZva2VkIGZyb20/IEl0cyBzaWduYXR1cmUgYWxvbmUgZG9lc24ndCBnaXZlIG1lIG11Y2ggY29udGV4dCwgc28gSSBuZWVkIHRvIHRyYWNlIGJhY2sgdGhlIGNhbGwgY2hhaW4gdG8gdW5kZXJzdGFuZCBpdHMgcHVycG9zZSB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0uIFRoaXMgaW1wbGllcyB0aGF0IHRoZXJlIGlzIHNvbWUgZXh0ZXJuYWwgZmFjdG9yIGF0IHBsYXkgd2hpY2ggaXMgc2VsZWN0aW5nIHRoaXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhhdCB0cmlnZ2VyIGlzLCBhbmQgd2hhdCBwb3NzaWJsZSBvdXRjb21lcyBhcmUgYXQgcGxheSBoZXJlLiBXaXRob3V0IHRoYXQgdW5kZXJzdGFuZGluZywgSSdtIGp1c3QgbG9va2luZyBhdCBhIHN5bnRhY3RpYyBzbmlwcGV0LiBJdHMgc2VsZWN0aW9uIGluZGljYXRlcyB0aGF0IHRoZXJlJ3MgYSBzcGVjaWZpYyBsb2dpYyBwYXRoIGJlaW5nIGNob3NlbiwgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25kaXRpb25zIHRoYXQgbGVhZCB0byBpdHMgZXhlY3V0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjcxOCwiT3V0cHV0VG9rZW5zIjoxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ4OjQ2LjE4NzU2NDc0MVoiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE2MTM2NTgwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgU01CRElSRUNUXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL3NtYi9jbGllbnQvS2NvbmZpZz0xODE9Y29uZmlnIENJRlNfU01CX0RJUkVDVFxcbi0tXFxuZnMvc21iL2NsaWVudC9LY29uZmlnLTE4NC1cXHRkZXBlbmRzIG9uIENJRlM9bSB8fCBJTkZJTklCQU5EPXlcXG5mcy9zbWIvY2xpZW50L0tjb25maWc6MTg1OlxcdHNlbGVjdCBTTUJESVJFQ1RcXG5mcy9zbWIvY2xpZW50L0tjb25maWctMTg2LVxcdGhlbHBcXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvS2NvbmZpZz00OD1jb25maWcgU01CX1NFUlZFUl9TTUJESVJFQ1RcXG4tLVxcbmZzL3NtYi9zZXJ2ZXIvS2NvbmZpZy01MS1cXHRkZXBlbmRzIG9uIFNNQl9TRVJWRVI9bSB8fCBJTkZJTklCQU5EPXlcXG5mcy9zbWIvc2VydmVyL0tjb25maWc6NTI6XFx0c2VsZWN0IFNNQkRJUkVDVFxcbmZzL3NtYi9zZXJ2ZXIvS2NvbmZpZy01My1cXHRkZWZhdWx0IG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDg6NDguMzQ4OTM2MDE0WiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MjAzMzAxNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkVuYWJsaW5nIFNNQiBEaXJlY3QgYW5kIFJETUEgZm9yIE9wdGltYWwgUGVyZm9ybWFuY2UqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgYXJjaGl0ZWN0dXJlLCBJIG5lZWQgdG8gZm9jdXMgb24gZW5hYmxpbmcgYENJRlNfU01CX0RJUkVDVGAgYW5kIGBTTUJfU0VSVkVSX1NNQkRJUkVDVGAgZmlyc3QgYW5kIGZvcmVtb3N0LiBUaGVzZSBhcmUgdGhlIGtleSBzZXR0aW5ncyB0byB1bmxvY2sgdGhlIHBlcmZvcm1hbmNlIGJlbmVmaXRzIG9mIFNNQiBEaXJlY3QgYW5kIFJlbW90ZSBEaXJlY3QgTWVtb3J5IEFjY2VzcyAoUkRNQSkuIFRoYXQncyB0aGUgYmFzZWxpbmUsIHRoZSBmb3VuZGF0aW9uLlxuXG5Ob3csIGxldCdzIHBpdm90IHRvIHRoZSBoYXJkd2FyZS4gSSBuZWVkIHRvIHNwZWNpZmljYWxseSBjb25maXJtIHRoaXMgaXMgcG9zc2libGUgd2l0aCB0aGUgYFFFRFJgIChRTG9naWMgRmFzdExpblEgNHh4eHggQ29yZSBNb2R1bGUpIEknbSB3b3JraW5nIHdpdGguIFRoaXMgd2lsbCBiZSB0aGUgZGVjaWRpbmcgZmFjdG9yIGlmIEkgY2FuIG1ha2UgdXNlIG9mIFNNQiBEaXJlY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3MTA4LCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMTlUMjA6NDg6NTMuMjY5MjY5MjQ3WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTI3MDg2Njk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJTkZJTklCQU5EX1FFRFJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9pbmZpbmliYW5kL2h3L3FlZHIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9xZWRyL0tjb25maWc6Mjpjb25maWcgSU5GSU5JQkFORF9RRURSXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L3FlZHIvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJRTG9naWMgUm9DRSBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ4OjU1LjE5NjM2MjIzNVoiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNTMzNDUxNjAxNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSRE1BIEF0dHJpYnV0ZSBUeXBlIENoYW5nZSBhbmQgRnV6emluZyBTdHJhdGVneSoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGlzIHBhdGNoLiBGaXJzdCBvZmYsIFFFRFIgaXMgYSBoYXJkd2FyZSBkcml2ZXIsIHJpZ2h0PyBTbywgaXQncyBub3QgcmVsZXZhbnQgaGVyZSBzaW5jZSB3ZSdyZSBmb2N1c2VkIG9uIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFJYRSBpcyBvdXIgc29mdHdhcmUgUkRNQSBzb2x1dGlvbiwgc28gdGhhdCdzIHRoZSBhbmdsZSB3ZSBuZWVkIHRvIHRha2UuIE5vIG5lZWQgdG8gZ2V0IGJvZ2dlZCBkb3duIGluIFFFRFIuXG5cbkFscmlnaHQsIGxldCdzIGxvb2sgYXQgdGhlIGZ1bmN0aW9ucyBpbXBhY3RlZC4gSW5pdGlhbGx5LCBJIGhhZCBhIHByZXR0eSBleGhhdXN0aXZlIGxpc3QsIGJ1dCB0aGF0J3MgZ29pbmcgdG8gYmUgdG9vIG11Y2ggZm9yIHRlc3RpbmcuIFRpbWUgdG8gaG9uZSBpbiBvbiB0aGUgaW1wb3J0YW50IG9uZXMuIEkgbmVlZCBhIHJlcHJlc2VudGF0aXZlIHNldCBvZiBmdW5jdGlvbnMgdGhhdCBhcmUgZGlyZWN0bHkgbW9kaWZpZWQgYW5kIGFyZSBub3QgZnJlcXVlbnRseSBhY2Nlc3NlZCBcImhvdCBwYXRoc1wiIHNvIHRoYXQgdGhleSBjYW4gYmUgZnV6emVkIHdpdGhvdXQgaW1wYWN0aW5nIHRoZSBzeXN0ZW0gaW4gYW4gaW1wYWN0ZnVsIG1hbm5lci5cblxuSSd2ZSBnb3QgYSBzbGlnaHRseSBtb3JlIG1hbmFnZWFibGUgbGlzdCBub3c6IGBudm1lX3JkbWFfZmluZF9nZXRfZGV2aWNlYCwgYG52bWV0X3JkbWFfZmluZF9nZXRfZGV2aWNlYCwgYGZyd3JfcXVlcnlfZGV2aWNlYCwgYHJ4ZV9xcF9jaGtfY2FwYCwgYHJ4ZV9zcnFfY2hrX2luaXRgLCBgc21iZGlyZWN0X2Nvbm5lY3Rpb25fY3JlYXRlX3FwYCwgYHJkc19pYl9jbV9maWxsX2Nvbm5fcGFyYW1gLCBgc3ZjX3JkbWFfYWNjZXB0YCwgYW5kIGBycGNyZG1hX2VwX2NyZWF0ZWAuIFRoZXNlIGFsbCBzZWVtIHJlYXNvbmFibGUuIFdlJ3JlIGxvb2tpbmcgYXQgY29ubmVjdGlvbiBzZXR1cCwgRVAgY3JlYXRpb24sIFFQL1NSUSBjcmVhdGlvbiwgc28gbm90IHVzdWFsbHkgaW4gdGhlIGhvdCBwYXRoLiBQZXJmZWN0LlxuXG5Ob3csIGFzIGZhciBhcyBjb25maWdzIGdvLCBiZXNpZGVzIHRoZSBgUkRNQV9SWEVgLCB3ZSBoYXZlIGEgYnVuY2ggbW9yZS4gSSdsbCBuZWVkIHRvIGdvIHRocm91Z2ggYWxsIG9mIHRoZW0gKGBOVk1FX1JETUFgLCBgTlZNRV9UQVJHRVRfUkRNQWAsIGBTVU5SUENfWFBSVF9SRE1BYCwgYENJRlNfU01CX0RJUkVDVGAsIGBTTUJfU0VSVkVSX1NNQkRJUkVDVGAsIGBJTkZJTklCQU5EX1NSUGAsIGBJTkZJTklCQU5EX1NSUFRgLCBgSU5GSU5JQkFORF9JU0VSYCwgYElORklOSUJBTkRfSVNFUlRgLCBgSU5GSU5JQkFORF9SVFJTX0NMSUVOVGAsIGBJTkZJTklCQU5EX1JUUlNfU0VSVkVSYCwgYFJEU19SRE1BYCwgYElORklOSUJBTkRfSVBPSUJgKSB0byBlbnN1cmUgdGhlIGNoYW5nZXMgYXJlIGNvcnJlY3RseSBoYW5kbGVkLiBKdXN0IGNvbmZpcm1pbmcgYFJETUFfUlhFYCBpcyBzdWZmaWNpZW50IGZvciBzb2Z0d2FyZSBSRE1BIC0geWVzLCB3ZSBhcmUgZ29vZC4gSnVzdCBpbiBjYXNlLCBJIGFsc28gbWFkZSBub3RlIG9mIGBSRE1BX1NJV2AsIGJ1dCB3ZSdyZSBmb2N1c2luZyBvbiBSWEUgaGVyZS5cblxuT2theSwgbGV0J3MgcmVjYXAgbXkgcmVhc29uaW5nLiBUaGlzIHBhdGNoIGlzIGNoYW5naW5nIGludGVnZXIgdHlwZXMgZnJvbSBgaW50YCB0byBgdTMyYCBmb3IgUkRNQSBkZXZpY2UgYXR0cmlidXRlcywgYWxzbyB1cGRhdGluZyBgbWluKClgIGNhbGxzIGFuZCBmb3JtYXQgc3RyaW5ncy4gVGhlcmUgYXJlIGZpeGVzIGZvciBwb3RlbnRpYWwgdW5kZXJmbG93cyBpbiBzb21lIGNydWNpYWwgZnVuY3Rpb25zOiBgbnZtZV9yZG1hX2ZpbmRfZ2V0X2RldmljZWAsIGBudm1ldF9yZG1hX2ZpbmRfZ2V0X2RldmljZWAsIGFuZCBgZnJ3cl9xdWVyeV9kZXZpY2VgLiBUaGVzZSBjaGFuZ2VzIHRvdWNoIHRoZSBjb3JlIFJETUEgbG9naWMgYW5kIG11bHRpcGxlIFVMUHMgd2hpY2ggY2FuIGJlIHRlc3RlZCBpbiBvdXIgZW52aXJvbm1lbnQgdXNpbmcgdGhlIFJYRSBzb2Z0d2FyZSBSRE1BIGRyaXZlci4gVGhpcyBtZWFucyB3ZSdsbCBuZWVkIGZ1enppbmcgdG8gbWFrZSBzdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIGFueSBuZXcgaW50ZWdlciBvdmVyZmxvdy91bmRlcmZsb3cgYnVncyBoYXZlIGJlZW4gaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzLlxuTm93IEkgdGhpbmsgSSBoYXZlIGEgY2xlYXIgcGxhbi4gVGltZSB0byBwcm9kdWNlIGEgY29uY2lzZSBzdW1tYXJ5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzQ0MiwiT3V0cHV0VG9rZW5zIjozNjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTAyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTE5VDIwOjQ5OjEwLjUzMDg4MTE0MVoiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1Nzc2Nzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSRE1BX1JYRVwiLFxuICAgIFwiTlZNRV9SRE1BXCIsXG4gICAgXCJOVk1FX1RBUkdFVF9SRE1BXCIsXG4gICAgXCJTVU5SUENfWFBSVF9SRE1BXCIsXG4gICAgXCJDSUZTX1NNQl9ESVJFQ1RcIixcbiAgICBcIlNNQl9TRVJWRVJfU01CRElSRUNUXCIsXG4gICAgXCJJTkZJTklCQU5EX1NSUFwiLFxuICAgIFwiSU5GSU5JQkFORF9TUlBUXCIsXG4gICAgXCJJTkZJTklCQU5EX0lTRVJcIixcbiAgICBcIklORklOSUJBTkRfSVNFUlRcIixcbiAgICBcIklORklOSUJBTkRfUlRSU19DTElFTlRcIixcbiAgICBcIklORklOSUJBTkRfUlRSU19TRVJWRVJcIixcbiAgICBcIlJEU19SRE1BXCIsXG4gICAgXCJJTkZJTklCQU5EX0lQT0lCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnZtZV9yZG1hX2ZpbmRfZ2V0X2RldmljZVwiLFxuICAgIFwibnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2VcIixcbiAgICBcImZyd3JfcXVlcnlfZGV2aWNlXCIsXG4gICAgXCJyeGVfcXBfY2hrX2NhcFwiLFxuICAgIFwicnhlX3NycV9jaGtfaW5pdFwiLFxuICAgIFwic21iZGlyZWN0X2Nvbm5lY3Rpb25fY3JlYXRlX3FwXCIsXG4gICAgXCJyZHNfaWJfY21fZmlsbF9jb25uX3BhcmFtXCIsXG4gICAgXCJzdmNfcmRtYV9hY2NlcHRcIixcbiAgICBcInJwY3JkbWFfZXBfY3JlYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZXMgb2YgdmFyaW91cyBSRE1BIGRldmljZSBhdHRyaWJ1dGVzIGZyb20gYGludGAgdG8gYHUzMmAgYW5kIHVwZGF0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgYG1pbigpYCBjYWxscyBhbmQgZm9ybWF0IHN0cmluZ3MuIEl0IGFsc28gZml4ZXMgc29tZSBwb3RlbnRpYWwgdW5kZXJmbG93cyBpbiBjb25uZWN0aW9uIHNldHVwIGZ1bmN0aW9ucy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgUkRNQSBsb2dpYyBhbmQgdmFyaW91cyBSRE1BIFVMUHMgKFVwcGVyIExheWVyIFByb3RvY29scykgd2hpY2ggY2FuIGJlIHRlc3RlZCB1c2luZyB0aGUgc29mdHdhcmUgUkRNQSBkcml2ZXIgKFJYRSkuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyBpbnRlZ2VyIG92ZXJmbG93L3VuZGVyZmxvdyBidWdzIHdlcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSRE1BX1JYRVwiLFxuICAgIFwiTlZNRV9SRE1BXCIsXG4gICAgXCJOVk1FX1RBUkdFVF9SRE1BXCIsXG4gICAgXCJTVU5SUENfWFBSVF9SRE1BXCIsXG4gICAgXCJDSUZTX1NNQl9ESVJFQ1RcIixcbiAgICBcIlNNQl9TRVJWRVJfU01CRElSRUNUXCIsXG4gICAgXCJJTkZJTklCQU5EX1NSUFwiLFxuICAgIFwiSU5GSU5JQkFORF9TUlBUXCIsXG4gICAgXCJJTkZJTklCQU5EX0lTRVJcIixcbiAgICBcIklORklOSUJBTkRfSVNFUlRcIixcbiAgICBcIklORklOSUJBTkRfUlRSU19DTElFTlRcIixcbiAgICBcIklORklOSUJBTkRfUlRSU19TRVJWRVJcIixcbiAgICBcIlJEU19SRE1BXCIsXG4gICAgXCJJTkZJTklCQU5EX0lQT0lCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnZtZV9yZG1hX2ZpbmRfZ2V0X2RldmljZVwiLFxuICAgIFwibnZtZXRfcmRtYV9maW5kX2dldF9kZXZpY2VcIixcbiAgICBcImZyd3JfcXVlcnlfZGV2aWNlXCIsXG4gICAgXCJyeGVfcXBfY2hrX2NhcFwiLFxuICAgIFwicnhlX3NycV9jaGtfaW5pdFwiLFxuICAgIFwic21iZGlyZWN0X2Nvbm5lY3Rpb25fY3JlYXRlX3FwXCIsXG4gICAgXCJyZHNfaWJfY21fZmlsbF9jb25uX3BhcmFtXCIsXG4gICAgXCJzdmNfcmRtYV9hY2NlcHRcIixcbiAgICBcInJwY3JkbWFfZXBfY3JlYXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgdHlwZXMgb2YgdmFyaW91cyBSRE1BIGRldmljZSBhdHRyaWJ1dGVzIGZyb20gYGludGAgdG8gYHUzMmAgYW5kIHVwZGF0ZXMgdGhlIGNvcnJlc3BvbmRpbmcgYG1pbigpYCBjYWxscyBhbmQgZm9ybWF0IHN0cmluZ3MuIEl0IGFsc28gZml4ZXMgc29tZSBwb3RlbnRpYWwgdW5kZXJmbG93cyBpbiBjb25uZWN0aW9uIHNldHVwIGZ1bmN0aW9ucy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgdGhlIGNvcmUgUkRNQSBsb2dpYyBhbmQgdmFyaW91cyBSRE1BIFVMUHMgKFVwcGVyIExheWVyIFByb3RvY29scykgd2hpY2ggY2FuIGJlIHRlc3RlZCB1c2luZyB0aGUgc29mdHdhcmUgUkRNQSBkcml2ZXIgKFJYRSkuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIG9yIG5ldyBpbnRlZ2VyIG92ZXJmbG93L3VuZGVyZmxvdyBidWdzIHdlcmUgaW50cm9kdWNlZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow5488v[1] Phase: Succeeded StartedAt: 2026-06-19 20:49:21 +0000 UTC FinishedAt: 2026-06-19 20:49:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5488v[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-19 20:49:21 +0000 UTC FinishedAt: 2026-06-19 20:49:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5488v[2] Phase: Succeeded StartedAt: 2026-06-19 20:49:21 +0000 UTC FinishedAt: 2026-06-20 00:40:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 20:49:21 +0000 UTC FinishedAt: 2026-06-20 00:40:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 20:49:21 +0000 UTC FinishedAt: 2026-06-19 20:49:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 20:49:21 +0000 UTC FinishedAt: 2026-06-19 20:49:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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-workflow5488v/series-workflow5488v-convert-artifact-1061934187/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 20:49:31 +0000 UTC FinishedAt: 2026-06-19 21:12:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 20:49:31 +0000 UTC FinishedAt: 2026-06-19 21:12:12 +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:*f9d0f74d-d48b-4236-a1ee-e60eb12b30f5,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-workflow5488v/series-workflow5488v-convert-artifact-1061934187/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": "0a88ef00-9a72-44cf-9d66-207ecb50db57", "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-workflow5488v/series-workflow5488v-build-action-107890793/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 20:49:31 +0000 UTC FinishedAt: 2026-06-19 21:12:02 +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:*f9d0f74d-d48b-4236-a1ee-e60eb12b30f5,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-workflow5488v/series-workflow5488v-convert-artifact-1061934187/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": "0a88ef00-9a72-44cf-9d66-207ecb50db57", "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-workflow5488v/series-workflow5488v-build-action-107890793/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 21:12:12 +0000 UTC FinishedAt: 2026-06-19 21:12:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 21:12:12 +0000 UTC FinishedAt: 2026-06-19 21:12:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 21:12:12 +0000 UTC FinishedAt: 2026-06-19 21:12:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 21:12:12 +0000 UTC FinishedAt: 2026-06-19 21:12:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-workflow5488v/series-workflow5488v-convert-artifact-3062897730/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 21:12:22 +0000 UTC FinishedAt: 2026-06-19 21:14:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 21:12:22 +0000 UTC FinishedAt: 2026-06-19 21:14:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0a88ef00-9a72-44cf-9d66-207ecb50db57,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-workflow5488v/series-workflow5488v-build-action-107890793/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-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 21:14:16 +0000 UTC FinishedAt: 2026-06-19 21:14:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 21:14:16 +0000 UTC FinishedAt: 2026-06-19 21:14:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 21:14:16 +0000 UTC FinishedAt: 2026-06-19 21:36:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 21:14:16 +0000 UTC FinishedAt: 2026-06-19 21:36:39 +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:*f9d0f74d-d48b-4236-a1ee-e60eb12b30f5,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-workflow5488v/series-workflow5488v-convert-artifact-3062897730/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": "30f8b897-944d-49e3-b671-87a6fdc0e1ac", "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-workflow5488v/series-workflow5488v-build-action-3918450326/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 21:14:16 +0000 UTC FinishedAt: 2026-06-19 21:36:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*f9d0f74d-d48b-4236-a1ee-e60eb12b30f5,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-workflow5488v/series-workflow5488v-convert-artifact-3062897730/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": "30f8b897-944d-49e3-b671-87a6fdc0e1ac", "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-workflow5488v/series-workflow5488v-build-action-3918450326/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 21:36:39 +0000 UTC FinishedAt: 2026-06-19 21:36:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 21:36:39 +0000 UTC FinishedAt: 2026-06-19 21:36:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 21:36:39 +0000 UTC FinishedAt: 2026-06-19 21:38:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 21:36:39 +0000 UTC FinishedAt: 2026-06-19 21:38: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:*30f8b897-944d-49e3-b671-87a6fdc0e1ac,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-workflow5488v/series-workflow5488v-build-action-3918450326/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-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 21:38:46 +0000 UTC FinishedAt: 2026-06-20 00:40:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 21:38:46 +0000 UTC FinishedAt: 2026-06-20 00:40:06 +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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"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:*0a88ef00-9a72-44cf-9d66-207ecb50db57,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*30f8b897-944d-49e3-b671-87a6fdc0e1ac,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-workflow5488v/series-workflow5488v-build-action-107890793/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-workflow5488v/series-workflow5488v-build-action-3918450326/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 21:38:46 +0000 UTC FinishedAt: 2026-06-19 21:38:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 21:38:46 +0000 UTC FinishedAt: 2026-06-19 21:38:50 +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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"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-workflow5488v/series-workflow5488v-convert-artifact-652655223/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 21:38:46 +0000 UTC FinishedAt: 2026-06-19 21:38:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 21:38:46 +0000 UTC FinishedAt: 2026-06-19 21:38:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 21:38:46 +0000 UTC FinishedAt: 2026-06-19 21:38:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 21:38:56 +0000 UTC FinishedAt: 2026-06-20 00:40:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5488v[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"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":["nvme_rdma_find_get_device","nvmet_rdma_find_get_device","frwr_query_device","rxe_qp_chk_cap","rxe_srq_chk_init","smbdirect_connection_create_qp","rds_ib_cm_fill_conn_param","svc_rdma_accept","rpcrdma_ep_create"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"96e7f9122aae0ed000ee321f324b812a447906d9","config_name":"upstream-apparmor-kasan.config","enable_configs":["RDMA_RXE","NVME_RDMA","NVME_TARGET_RDMA","SUNRPC_XPRT_RDMA","CIFS_SMB_DIRECT","SMB_SERVER_SMBDIRECT","INFINIBAND_SRP","INFINIBAND_SRPT","INFINIBAND_ISER","INFINIBAND_ISERT","INFINIBAND_RTRS_CLIENT","INFINIBAND_RTRS_SERVER","RDS_RDMA","INFINIBAND_IPOIB"],"series_id":"57d6a629-de1f-458c-a52b-c75a84ca9738","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-19 21:38:56 +0000 UTC FinishedAt: 2026-06-20 00:39:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0a88ef00-9a72-44cf-9d66-207ecb50db57,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*30f8b897-944d-49e3-b671-87a6fdc0e1ac,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-workflow5488v/series-workflow5488v-build-action-107890793/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-workflow5488v/series-workflow5488v-build-action-3918450326/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-workflow5488v/series-workflow5488v-convert-artifact-652655223/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,}