Name: series-workflowwflkj Phase: Succeeded StartedAt: 2026-08-17 08:43:58 +0000 UTC FinishedAt: 2026-08-17 12:45:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwflkj[0] Phase: Succeeded StartedAt: 2026-08-17 08:43:58 +0000 UTC FinishedAt: 2026-08-17 09:03:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwflkj[0].run-triage Phase: Succeeded StartedAt: 2026-08-17 08:43:58 +0000 UTC FinishedAt: 2026-08-17 09:03:46 +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": "24ef02f934eeb48830cff6b739abc3c62b1d107b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "24ef02f934eeb48830cff6b739abc3c62b1d107b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM" ], "series_id": "ff301211-15e2-4125-a14d-d2e1d19625f9" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nsim_create", "nsim_destroy", "nsim_drv_port_add", "nsim_drv_port_del", "netdev_rx_queue_restart", "netif_queue_set_napi" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25zaW1fY3JlYXRlJiMzNDssCiAgICAmIzM0O25zaW1fZGVzdHJveSYjMzQ7LAogICAgJiMzNDtuc2ltX2Rydl9wb3J0X2FkZCYjMzQ7LAogICAgJiMzNDtuc2ltX2Rydl9wb3J0X2RlbCYjMzQ7LAogICAgJiMzNDtuZXRkZXZfcnhfcXVldWVfcmVzdGFydCYjMzQ7LAogICAgJiMzNDtuZXRpZl9xdWV1ZV9zZXRfbmFwaSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRkZXZzaW0gZHJpdmVyIHRvIGNvcnJlY3RseSBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIGluc3RhbmNlcyB3aXRoIFJYIHF1ZXVlcyB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGkoKWAuIFRoZXNlIGNoYW5nZXMgb25seSBpbnZvbHZlIHNldHRpbmcgYSBwb2ludGVyIGluIHRoZSBxdWV1ZSBzdHJ1Y3R1cmUgdG8gdHJhY2sgdGhlIE5BUEkgY29udGV4dC4gVGhlcmUgYXJlIG5vIG1vZGlmaWNhdGlvbnMgdG8gZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm8gbmV3IGFsbG9jYXRpb25zIG9mIGNvbXBsZXggc3RydWN0dXJlcywgYW5kIG5vIGNoYW5nZXMgdG8gZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIG9yIGJvdW5kcyBjaGVja3MuIFRoZSByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIG5vbi1leGlzdGVudC4gQW55IHBvdGVudGlhbCBpc3N1ZXMgYXJpc2luZyBmcm9tIHRoZXNlIGNoYW5nZXMsIHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgbnVsbC1wb2ludGVyIGRlcmVmZXJlbmNlcywgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fZGVsX25hcGlgIGluIHRoZSBuZXRkZXZzaW0gZHJpdmVyIHRvIGFzc29jaWF0ZSBhbmQgZGlzYXNzb2NpYXRlIE5BUEkgaW5zdGFuY2VzIHdpdGggUlggcXVldWVzIHVzaW5nIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAuIE5ldGRldnNpbSBpcyBhIHNvZnR3YXJlLWVtdWxhdGVkIG5ldHdvcmsgZGV2aWNlIHVzZWQgZm9yIHRlc3RpbmcgYW5kIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZSBjaGFuZ2VzIGFmZmVjdCBxdWV1ZSBtYW5hZ2VtZW50IGFuZCBOQVBJIGxpZmVjeWNsZSwgd2hpY2ggYXJlIGZ1bmN0aW9uYWxseSBzaWduaWZpY2FudCBhbmQgd29ydGggZnV6emluZy4gRm9jdXMgc3ltYm9scyBpbmNsdWRlIHRoZSBuZXRkZXZzaW0gY3JlYXRpb24vZGVzdHJ1Y3Rpb24gYW5kIHBvcnQgbWFuYWdlbWVudCBmdW5jdGlvbnMsIGFzIHdlbGwgYXMgdGhlIHF1ZXVlIHJlc3RhcnQgYW5kIE5BUEkgYXNzb2NpYXRpb24gQVBJIGZ1bmN0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDIxZTJiM2MzNGJkMzVkNDZkMjFkN2FmYjU2ZjI1ODc1MzVmNmMzZDZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxNyAwOTowMTowNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcbmluZGV4IDRlOWQ3ZTEwYjUyN2UuLmI0YTk5ZjNjZWFjNjAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1xuQEAgLTUyOSw2ICYjNDM7NTI5LDcgQEAgc3RhdGljIHZvaWQgbnNpbV9kZWxfbmFwaShzdHJ1Y3QgbmV0ZGV2c2ltICpucylcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRldi1cdTAwM2VudW1fcnhfcXVldWVzOyBpJiM0MzsmIzQzOykge1xuIFx0XHRzdHJ1Y3QgbnNpbV9ycSAqcnEgPSBucy1cdTAwM2VycVtpXTtcbiBcbiYjNDM7XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuIFx0XHRuYXBpX2Rpc2FibGVfbG9ja2VkKFx1MDAyNnJxLVx1MDAzZW5hcGkpO1xuIFx0XHRfX25ldGlmX25hcGlfZGVsX2xvY2tlZChcdTAwMjZycS1cdTAwM2VuYXBpKTtcbiBcdH1cbkBAIC04MjYsNiAmIzQzOzgyNyw3IEBAIG5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsXG4gXHR9XG4gXG4gXHRucy1cdTAwM2VycVtpZHhdID0gcW1lbS1cdTAwM2VycTtcbiYjNDM7XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFx1MDAyNm5zLVx1MDAzZXJxW2lkeF0tXHUwMDNlbmFwaSk7XG4gXHRuYXBpX2VuYWJsZV9sb2NrZWQoXHUwMDI2bnMtXHUwMDNlcnFbaWR4XS1cdTAwM2VuYXBpKTtcbiBcbiBcdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRERVZTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuc2ltX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtuc2ltX2Rlc3Ryb3kmIzM0OywKICAgICYjMzQ7bnNpbV9kcnZfcG9ydF9hZGQmIzM0OywKICAgICYjMzQ7bnNpbV9kcnZfcG9ydF9kZWwmIzM0OywKICAgICYjMzQ7bmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnQmIzM0OywKICAgICYjMzQ7bmV0aWZfcXVldWVfc2V0X25hcGkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9kZWxfbmFwaWAgaW4gdGhlIG5ldGRldnNpbSBkcml2ZXIgdG8gYXNzb2NpYXRlIGFuZCBkaXNhc3NvY2lhdGUgTkFQSSBpbnN0YW5jZXMgd2l0aCBSWCBxdWV1ZXMgdXNpbmcgYG5ldGlmX3F1ZXVlX3NldF9uYXBpYC4gTmV0ZGV2c2ltIGlzIGEgc29mdHdhcmUtZW11bGF0ZWQgbmV0d29yayBkZXZpY2UgdXNlZCBmb3IgdGVzdGluZyBhbmQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIGNoYW5nZXMgYWZmZWN0IHF1ZXVlIG1hbmFnZW1lbnQgYW5kIE5BUEkgbGlmZWN5Y2xlLCB3aGljaCBhcmUgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50IGFuZCB3b3J0aCBmdXp6aW5nLiBGb2N1cyBzeW1ib2xzIGluY2x1ZGUgdGhlIG5ldGRldnNpbSBjcmVhdGlvbi9kZXN0cnVjdGlvbiBhbmQgcG9ydCBtYW5hZ2VtZW50IGZ1bmN0aW9ucywgYXMgd2VsbCBhcyB0aGUgcXVldWUgcmVzdGFydCBhbmQgTkFQSSBhc3NvY2lhdGlvbiBBUEkgZnVuY3Rpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjFlMmIzYzM0YmQzNWQ0NmQyMWQ3YWZiNTZmMjU4NzUzNWY2YzNkNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDE3IDA5OjAxOjA1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jIGIvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jCmluZGV4IDRlOWQ3ZTEwYjUyN2UuLmI0YTk5ZjNjZWFjNjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMKQEAgLTUyOSw2ICYjNDM7NTI5LDcgQEAgc3RhdGljIHZvaWQgbnNpbV9kZWxfbmFwaShzdHJ1Y3QgbmV0ZGV2c2ltICpucykKIAlmb3IgKGkgPSAwOyBpICZsdDsgZGV2LSZndDtudW1fcnhfcXVldWVzOyBpJiM0MzsmIzQzOykgewogCQlzdHJ1Y3QgbnNpbV9ycSAqcnEgPSBucy0mZ3Q7cnFbaV07CiAKJiM0MzsJCW5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpOwogCQluYXBpX2Rpc2FibGVfbG9ja2VkKCZhbXA7cnEtJmd0O25hcGkpOwogCQlfX25ldGlmX25hcGlfZGVsX2xvY2tlZCgmYW1wO3JxLSZndDtuYXBpKTsKIAl9CkBAIC04MjYsNiAmIzQzOzgyNyw3IEBAIG5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsCiAJfQogCiAJbnMtJmd0O3JxW2lkeF0gPSBxbWVtLSZndDtycTsKJiM0MzsJbmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCAmYW1wO25zLSZndDtycVtpZHhdLSZndDtuYXBpKTsKIAluYXBpX2VuYWJsZV9sb2NrZWQoJmFtcDtucy0mZ3Q7cnFbaWR4XS0mZ3Q7bmFwaSk7CiAKIAlyZXR1cm4gMDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE0NwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldGRldnNpbSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY2AuIEl0JiMzOTtzIGdvdCB0aGVzZSBuZXcgY2FsbHMgdG8gYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCBpbiBgbnNpbV9kZWxfbmFwaWAgYW5kIGBuc2ltX3F1ZXVlX3N0YXJ0YC4gUmlnaHQgYXdheSwgbXkgcmFkYXIgZ29lcyB1cC4gTmV0ZGV2c2ltIGlzIHRoYXQgc29mdHdhcmUtZW11bGF0ZWQgbmV0d29yayBkZXZpY2Ug4oCTIHBlcmZlY3QgZm9yIGZ1enppbmchIEl0JiMzOTtzIHByYWN0aWNhbGx5ICpkZXNpZ25lZCogdG8gYmUgcHJvYmVkLiBXZSBoYXZlIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIGZ1enppbmcgdGhpcyBwYXRjaC4KClNvLCBsZXQmIzM5O3MgZHJpbGwgZG93biBpbnRvIHRob3NlIHR3byBmdW5jdGlvbnM6IGBuc2ltX2RlbF9uYXBpYCBhbmQgYG5zaW1fcXVldWVfc3RhcnRgLiBgbnNpbV9xdWV1ZV9zdGFydGAgc2VlbXMgbGlrZSBpdCYjMzk7cyBhIHF1ZXVlIHN0YXJ0IGNhbGxiYWNrLiBZZWFoLCB0aGF0IG1ha2VzIHNlbnNlLiBJdCYjMzk7cyBsaWtlbHkgaW52b2x2ZWQgd2l0aCB0aGUgbmV0ZGV2IHF1ZXVlIEFQSSwgc28gaXQgaXMgcHJvYmFibHkgY2FsbGVkIHdoZW4gYSBxdWV1ZSBpcyBzdGFydGVkLiBBbmQgYG5zaW1fZGVsX25hcGlgIGxvb2tzIGxpa2UgYSBjbGVhbnVwIGZ1bmN0aW9uLgoKSSBuZWVkIHRvIHNlZSBob3cgdGhlc2UgdGhpbmdzIGFyZSB1c2VkLiBUaW1lIHRvIGNoZWNrIHZpc2liaWxpdHkuIEkgbmVlZCB0byBncmVwIGZvciBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX2RlbF9uYXBpYCB0byBzZWUgaWYgdGhleSYjMzk7cmUgc3RhdGljIG9yIGV4cG9ydGVkLiBBaCwgYG5zaW1fZGVsX25hcGlgIGlzIHN0YXRpYy4gT0suIEFuZCBgbnNpbV9xdWV1ZV9zdGFydGAgaXMuLi4gYWxzbyBzdGF0aWM/IEdvdHRhIGRvdWJsZS1jaGVjayB0aGF0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIGhvdyBhY2Nlc3NpYmxlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgdG8gc2VlIHdoZXJlIHRoZXkgYXJlIGNhbGxlZCBmcm9tLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25zaW1fcXVldWVfc3RhcnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTgwMT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6ODAyOm5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODAzLVx0XHQgdm9pZCAqcGVyX3F1ZXVlX21lbSwgaW50IGlkeClcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9ODU1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIG5zaW1fcXVldWVfbWdtdF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTg1OC1cdC5uZG9fcXVldWVfbWVtX2ZyZWVcdD0gbnNpbV9xdWV1ZV9tZW1fZnJlZSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo4NTk6XHQubmRvX3F1ZXVlX3N0YXJ0XHQ9IG5zaW1fcXVldWVfc3RhcnQsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODYwLVx0Lm5kb19xdWV1ZV9zdG9wXHRcdD0gbnNpbV9xdWV1ZV9zdG9wLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgU3RhdGljIEZ1bmN0aW9ucyBhbmQgVGhlaXIgVXNhZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIHR3byBmdW5jdGlvbnMsIGFuZCB0aGV5JiMzOTtyZSBib3RoIGRlY2xhcmVkIGFzIHN0YXRpYy4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBzY29wZTsgdGhleSYjMzk7cmUgb25seSB2aXNpYmxlIHdpdGhpbiB0aGVpciBjb21waWxhdGlvbiB1bml0LCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncyBpbiBzb21lIHdheXMsIGJ1dCBhbHNvIG1lYW5zIEkgbmVlZCB0byBkaWcgYSBsaXR0bGUgZGVlcGVyIHRvIHVuZGVyc3RhbmQgdGhlaXIgcm9sZSBpbiB0aGUgYmlnZ2VyIHBpY3R1cmUuIE15IG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IGhvdyB0aGV5JiMzOTtyZSAqdXNlZCouIFNpbmNlIHRoZXkmIzM5O3JlIHN0YXRpYywgSSYjMzk7bSBleHBlY3Rpbmcgb3RoZXIgZnVuY3Rpb25zIHdpdGhpbiB0aGUgc2FtZSBmaWxlIHRvIGJlIGNhbGxpbmcgdGhlbSBvciBhdCBsZWFzdCB1c2luZyB0aGVpciBvdXRwdXQuIExldCYjMzk7cyBmaW5kIHRob3NlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGFuZCBzZWUgd2hlcmUgdGhlc2Ugc3RhdGljIG9uZXMgZml0IGluLgoKQWgsIGBuc2ltX3F1ZXVlX21nbXRfb3BzYCBhcHBlYXJzIHRvIGJlIHVzZWQgYnkgYG5zaW1fY3JlYXRlYC4gVGltZSB0byBjaGVjayBgbnNpbV9jcmVhdGVgIGFuZCBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuc2ltX2NyZWF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9NDA1PXN0YXRpYyBpbnQgbnNpbV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNDE2LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjQxNzpzdGF0aWMgaW50IG5zaW1fY3JlYXRlX3BhZ2VfcG9vbChzdHJ1Y3QgcGFnZV9wb29sICoqcCwgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQxOC17XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTQzOD1zdGF0aWMgaW50IG5zaW1faW5pdF9uYXBpKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy00NTItXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6NDUzOlx0XHRlcnIgPSBuc2ltX2NyZWF0ZV9wYWdlX3Bvb2woXHUwMDI2cnEtXHUwMDNlcGFnZV9wb29sLCBcdTAwMjZycS1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy00NTQtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTc1MT1uc2ltX3F1ZXVlX21lbV9hbGxvYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy03NjQtXHRcdFx0cmV0dXJuIC1FTkVURE9XTjtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo3NjU6XHRcdHJldHVybiBuc2ltX2NyZWF0ZV9wYWdlX3Bvb2woXHUwMDI2cW1lbS1cdTAwM2VwcCwgXHUwMDI2bnMtXHUwMDNlcnFbaWR4XS1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy03NjYtXHR9XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTc3MS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo3NzI6XHRlcnIgPSBuc2ltX2NyZWF0ZV9wYWdlX3Bvb2woXHUwMDI2cW1lbS1cdTAwM2VycS1cdTAwM2VwYWdlX3Bvb2wsIFx1MDAyNnFtZW0tXHUwMDNlcnEtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNzczLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9MTEyMj1zdGF0aWMgdm9pZCBuc2ltX2V4aXRfbmV0ZGV2c2ltKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy0xMTI3LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjExMjg6c3RydWN0IG5ldGRldnNpbSAqbnNpbV9jcmVhdGUoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldixcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy0xMTI5LVx0XHRcdCAgICAgIHN0cnVjdCBuc2ltX2Rldl9wb3J0ICpuc2ltX2Rldl9wb3J0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4ODQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGVidWdnaW5nIGEgUG90ZW50aWFsIFNjb3BlIElzc3VlKioKCk9rYXksIHNvIGBuc2ltX2NyZWF0ZWAgaXMgZWl0aGVyIGRlY2xhcmVkIHdpdGggZXh0ZXJuYWwgbGlua2FnZSAoZXhwb3J0ZWQpIG9yIGl0JiMzOTtzIG5vdCBkZWNsYXJlZCBhcyBgc3RhdGljYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGJyb2FkbHkgaXQmIzM5O3MgYmVpbmcgdXNlZC4gSWYgaXQmIzM5O3MgYmVpbmcgYWNjZXNzZWQgb3V0c2lkZSB0aGUgaW50ZW5kZWQgc2NvcGUsIHRoYXQmIzM5O3MgYSBwcm9ibGVtLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBtb3N0IGRpcmVjdCByb3V0ZSBpcyB0byB0cmFjZSB3aGVyZSBpdCYjMzk7cyBiZWluZyBjYWxsZWQuIEkgbmVlZCB0byBnZXQgYSBsaXN0IG9mIHJlZmVyZW5jZXMgdG8gYG5zaW1fY3JlYXRlYC4gVGltZSB0byBmaXJlIHVwIHRoZSBkZWJ1Z2dlciAob3IgdXNlIG15IGNvZGUgc2VhcmNoIHRvb2xzLCBkZXBlbmRpbmcgb24gdGhlIGVudmlyb25tZW50KSBhbmQgZ2V0IHRvIHdvcmsuIEnigJlsbCBzdGFydCBieSB0cmFja2luZyBkb3duIGFsbCBjYWxsIHNpdGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25zaW1fY3JlYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM9MTQ1NT1zdGF0aWMgaW50IF9fbnNpbV9kZXZfcG9ydF9hZGQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldiwgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTUwOC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNTA5Olx0bnNpbV9kZXZfcG9ydC1cdTAwM2VucyA9IG5zaW1fY3JlYXRlKG5zaW1fZGV2LCBuc2ltX2Rldl9wb3J0LCBwZXJtX2FkZHIpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1MTAtXHRpZiAoSVNfRVJSKG5zaW1fZGV2X3BvcnQtXHUwMDNlbnMpKSB7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTQwNT1zdGF0aWMgaW50IG5zaW1fcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQxNi1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo0MTc6c3RhdGljIGludCBuc2ltX2NyZWF0ZV9wYWdlX3Bvb2woc3RydWN0IHBhZ2VfcG9vbCAqKnAsIHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSlcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy00MTgte1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz00Mzg9c3RhdGljIGludCBuc2ltX2luaXRfbmFwaShzdHJ1Y3QgbmV0ZGV2c2ltICpucylcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNDUyLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjQ1MzpcdFx0ZXJyID0gbnNpbV9jcmVhdGVfcGFnZV9wb29sKFx1MDAyNnJxLVx1MDAzZXBhZ2VfcG9vbCwgXHUwMDI2cnEtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNDU0LVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz03NTE9bnNpbV9xdWV1ZV9tZW1fYWxsb2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNzY0LVx0XHRcdHJldHVybiAtRU5FVERPV047XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6NzY1Olx0XHRyZXR1cm4gbnNpbV9jcmVhdGVfcGFnZV9wb29sKFx1MDAyNnFtZW0tXHUwMDNlcHAsIFx1MDAyNm5zLVx1MDAzZXJxW2lkeF0tXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNzY2LVx0fVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy03NzEtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6NzcyOlx0ZXJyID0gbnNpbV9jcmVhdGVfcGFnZV9wb29sKFx1MDAyNnFtZW0tXHUwMDNlcnEtXHUwMDNlcGFnZV9wb29sLCBcdTAwMjZxbWVtLVx1MDAzZXJxLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTc3My1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTExMjI9c3RhdGljIHZvaWQgbnNpbV9leGl0X25ldGRldnNpbShzdHJ1Y3QgbmV0ZGV2c2ltICpucylcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtMTEyNy1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzoxMTI4OnN0cnVjdCBuZXRkZXZzaW0gKm5zaW1fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtMTEyOS1cdFx0XHQgICAgICBzdHJ1Y3QgbnNpbV9kZXZfcG9ydCAqbnNpbV9kZXZfcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg9MTA3PXN0cnVjdCBuZXRkZXZzaW0ge1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xNjUtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTY2OnN0cnVjdCBuZXRkZXZzaW0gKm5zaW1fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTY3LVx0XHRcdCAgICAgIHN0cnVjdCBuc2ltX2Rldl9wb3J0ICpuc2ltX2Rldl9wb3J0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5NzMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqVHJhY2luZyBCYWNrIHRoZSBTdGF0aWMgTmF0dXJlIG9mIGBfX25zaW1fZGV2X3BvcnRfYWRkYCoqCgpPa2F5LCBzbyBgX19uc2ltX2Rldl9wb3J0X2FkZGAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlZCBteSBpbnRlcmVzdC4gTGV0JiMzOTtzIHRyYWNlIGJhY2sgZnJvbSB0aGVyZS4gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiBhIHN0YXRpYyBmdW5jdGlvbiBpbiB0aGlzIGNvbnRleHQ/IEl0IG1lYW5zIGl0JiMzOTtzIG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhlIGNvbXBpbGF0aW9uIHVuaXQgd2hlcmUgaXQmIzM5O3MgZGVmaW5lZC4gU28sIGl0JiMzOTtzICpub3QqIGludGVuZGVkIGZvciBleHRlcm5hbCBsaW5raW5nIG9yIHVzZSBieSBvdGhlciBtb2R1bGVzLCB3aGljaCB0ZWxscyBtZSB0aGUgZGV2ZWxvcGVycyBhcmUgdHJ5aW5nIHRvIGxpbWl0IGl0cyBzY29wZSBhbmQgcHJldmVudCBhY2NpZGVudGFsIG9yIHVuaW50ZW5kZWQgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLiBUaGV54oCZcmUgcHJvYmFibHkgdHJ5aW5nIHRvIG1haW50YWluIHNvbWUgc29ydCBvZiBlbmNhcHN1bGF0aW9uIGZvciB0aGUgbnNpbSBkZXZpY2UgcG9ydCBzdWJzeXN0ZW0uCgpJIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGV5IGNob3NlIHRoYXQuIElzIGl0IGEgZGVzaWduIGNob2ljZSB0byBtYW5hZ2UgYWNjZXNzLCBwZXJoYXBzIHByb3RlY3RpbmcgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIHdpdGhpbiB0aGUgYG5zaW1gIG1vZHVsZT8gT3IgaXMgaXQgbW9yZSBvZiBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgcmVseWluZyBvbiB0aGUgY29tcGlsZXImIzM5O3MgYWJpbGl0eSB0byBpbmxpbmUgdGhlIGZ1bmN0aW9uIG1vcmUgYWdncmVzc2l2ZWx5LCBzaW5jZSBpdHMgYWRkcmVzcyBpcyBvbmx5IGtub3duIHdpdGhpbiBhIHNpbmdsZSB0cmFuc2xhdGlvbiB1bml0PyBPciBwZXJoYXBzLCB0aGV5IHdhbnQgdG8ga2VlcCB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBoaWRkZW4sIHByZXZlbnRpbmcgc29tZW9uZSBmcm9tIGluYWR2ZXJ0ZW50bHkgdHJ5aW5nIHRvIGNhbGwgaXQgd2l0aCBhbiBpbmFwcHJvcHJpYXRlIGRhdGEgc3RydWN0dXJlPwoKSSBzdXNwZWN0IGl0JiMzOTtzIGxpa2VseSBhIGNvbWJpbmF0aW9uIG9mIHRoZXNlIHRoaW5ncywgYnV0IGl0IGFsbCBoaW5nZXMgb24gdGhlIHNwZWNpZmljIGRlc2lnbiBvZiB0aGUgYG5zaW1gIGRyaXZlci4gSSYjMzk7bSBnb2luZyB0byBmb2xsb3cgdGhlIHVzZXMgb2YgdGhpcyBmdW5jdGlvbiB0byB1bmRlcnN0YW5kIGl0cyByb2xlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGRhdGEgaXMgYmVpbmcgcGFzc2VkIGluLCB3aGVyZSBpdCYjMzk7cyBiZWluZyB1c2VkLCBhbmQgd2hpY2ggb3RoZXIgaW50ZXJuYWwgZnVuY3Rpb25zIGludGVyYWN0IHdpdGggdGhpcyBhZGQgZnVuY3Rpb25hbGl0eS4gSG9wZWZ1bGx5LCBJJiMzOTtsbCBiZSBhYmxlIHRvIGdsZWFuIHRoZWlyIGludGVudCB0aHJvdWdoIGV4YW1pbmluZyB0aGUgc3Vycm91bmRpbmcgY29kZS4gSXTigJlzIHJhcmVseSBhIHN0YW5kYWxvbmUgY2hvaWNlOyB0aGVyZeKAmXMgYWx3YXlzIGFuIGFyY2hpdGVjdHVyYWwgZGVjaXNpb24gdGhhdCBsZWQgdG8gbWFraW5nIHNvbWV0aGluZyBzdGF0aWMuIEkgbmVlZCB0byBmaW5kIHRoZSB1bmRlcmx5aW5nIHJlYXNvbmluZy4gVGhpcyB3aWxsIGluZm9ybSBteSBhc3Nlc3NtZW50IG9mIHRoZSBvdmVyYWxsIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19uc2ltX2Rldl9wb3J0X2FkZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTY0OD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6NjQ5Ol9fbnNpbV9kZXZfcG9ydF9hZGQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldiwgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy02NTAtXHRcdCAgICB1bnNpZ25lZCBpbnQgcG9ydF9pbmRleCwgdTggcGVybV9hZGRyW0VUSF9BTEVOXSk7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTY2Nz1zdGF0aWMgaW50IG5zaW1fZXN3X3N3aXRjaGRldl9lbmFibGUoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2Rldixcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtNjczLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnNpbV9kZXZfZ2V0X3Zmcyhuc2ltX2Rldik7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6Njc0Olx0XHRlcnIgPSBfX25zaW1fZGV2X3BvcnRfYWRkKG5zaW1fZGV2LCBOU0lNX0RFVl9QT1JUX1RZUEVfVkYsIGksIE5VTEwpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTY3NS1cdFx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYz0xNDI1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2bGlua19vcHMgbnNpbV9kZXZfZGV2bGlua19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE0NTQtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTQ1NTpzdGF0aWMgaW50IF9fbnNpbV9kZXZfcG9ydF9hZGQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldiwgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNDU2LVx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgcG9ydF9pbmRleCwgdTggcGVybV9hZGRyW0VUSF9BTEVOXSlcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM9MTU2ND1zdGF0aWMgaW50IG5zaW1fZGV2X3BvcnRfYWRkX2FsbChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNTY5LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcG9ydF9jb3VudDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNTcwOlx0XHRlcnIgPSBfX25zaW1fZGV2X3BvcnRfYWRkKG5zaW1fZGV2LCBOU0lNX0RFVl9QT1JUX1RZUEVfUEYsIGksIE5VTEwpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1NzEtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTE4Mjk9aW50IG5zaW1fZHJ2X3BvcnRfYWRkKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiwgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTgzOC1cdGVsc2VcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxODM5Olx0XHRlcnIgPSBfX25zaW1fZGV2X3BvcnRfYWRkKG5zaW1fZGV2LCB0eXBlLCBwb3J0X2luZGV4LCBwZXJtX2FkZHIpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE4NDAtXHRkZXZsX3VubG9jayhwcml2X3RvX2RldmxpbmsobnNpbV9kZXYpKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE2MwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKlRyYWNpbmcgdGhlIGBuc2ltX2Rydl9wb3J0X2FkZGAgRnVuY3Rpb24qKgoKT2theSwgc28gYG5zaW1fZHJ2X3BvcnRfYWRkYCBpcyBleHBvcnRlZCwgbWVhbmluZyBpdCYjMzk7cyBhIGNyaXRpY2FsIGZ1bmN0aW9uLCBsaWtlbHkgcGFydCBvZiBhbiBleHRlcm5hbCBpbnRlcmZhY2UuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgaW4gYW5kIHRyYWNlIGl0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZnVuY3Rpb24gZG9lcywgaG93IGl0JiMzOTtzIHVzZWQsIGFuZCB3aGF0IGRhdGEgc3RydWN0dXJlcyBpdCBtYW5pcHVsYXRlcy4gVGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGFueSBkZWVwZXIgYW5hbHlzaXMuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIHdoZXJlIGl0JiMzOTtzIGRlZmluZWQgYW5kIGZpZ3VyZSBvdXQgaXRzIGNhbGxpbmcgY29udmVudGlvbi4gSG9wZWZ1bGx5LCBJIGNhbiBmaW5kIHNvbWUgY29tbWVudHMgb3IgZG9jdW1lbnRhdGlvbiB0byBndWlkZSBtZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuc2ltX2Rydl9wb3J0X2FkZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTY1PW5ld19wb3J0X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTk1LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjk2Olx0cmV0ID0gbnNpbV9kcnZfcG9ydF9hZGQobnNpbV9idXNfZGV2LCBOU0lNX0RFVl9QT1JUX1RZUEVfUEYsIHBvcnRfaW5kZXgsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtOTctXHRcdFx0XHRhZGRyX3NldCA/IGV0aF9hZGRyIDogTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTE4MTc9X19uc2ltX2Rldl9wb3J0X2xvb2t1cChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LCBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xODI4LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE4Mjk6aW50IG5zaW1fZHJ2X3BvcnRfYWRkKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiwgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xODMwLVx0XHQgICAgICB1bnNpZ25lZCBpbnQgcG9ydF9pbmRleCwgdTggcGVybV9hZGRyW0VUSF9BTEVOXSlcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg9MzkyPXZvaWQgbnNpbV9kcnZfcmVtb3ZlKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2Rldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzkzOmludCBuc2ltX2Rydl9wb3J0X2FkZChzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzk0LVx0XHQgICAgICBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLCB1bnNpZ25lZCBpbnQgcG9ydF9pbmRleCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc5MgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBOZXRkZXZzaW0gRHJpdmVyOiBLZXkgRW50cnlwb2ludHMgYW5kIFBvdGVudGlhbCBUYXJnZXRzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIGBuZXRkZXZzaW1gIGRyaXZlciBhbmQgSSB0aGluayBJJiMzOTt2ZSBnb3QgYSBkZWNlbnQgaGFuZGxlIG9uIHBvdGVudGlhbCBmdXp6aW5nIGVudHJ5cG9pbnRzLiBUaGUga2V5IHNlZW1zIHRvIGJlIGFyb3VuZCBob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgc3lzdGVtLiBJIHNlZSB0aGF0IGBuZXdfcG9ydF9zdG9yZWAgaXMgZGVmaW5lZCBhcyBhIHN5c2ZzIGF0dHJpYnV0ZSwgd2hpY2ggbWVhbnMgd2UgY2FuIGRpcmVjdGx5IGludGVyYWN0IHdpdGggaXQgdGhyb3VnaCB0aGUgZmlsZSBzeXN0ZW0sIGFuZCB0aGF0JiMzOTtzIGFsd2F5cyBhbiBpbnRlcmVzdGluZyB0YXJnZXQgZm9yIGZ1enppbmcuCgpNb3JlIGltcG9ydGFudGx5LCBgbnNpbV9kZXZfcG9ydF9hZGRfYWxsYCBpcyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBgbnNpbV9kcnZfcHJvYmVgLiBTaW5jZSBgbnNpbV9kcnZfcHJvYmVgIGlzIHRoZSBidXMgcHJvYmUgZnVuY3Rpb24sIHRoYXQgbWVhbnMgd2Uga25vdyBmb3Igc3VyZSBgbmV0ZGV2c2ltYCBpcyByZWFjaGFibGUuIEkmIzM5O20gbm90aW5nIHRoaXMgaXMgZGVmaW5pdGVseSBhIGdvb2Qgc3BvdCB0byBpbnZlc3Qgc29tZSBmdXp6aW5nIHRpbWUuCgpOb3csIGdsYW5jaW5nIG92ZXIgdGhlIHBhdGNoLCBJIHNlZSBtb2RpZmljYXRpb25zIHRvIGBuc2ltX2RlbF9uYXBpYCBhbmQgYG5zaW1fcXVldWVfc3RhcnRgLiBgbnNpbV9xdWV1ZV9zdGFydGAgaXMgYSBjYWxsYmFjaywgc3BlY2lmaWNhbGx5IGZvciBgLm5kb19xdWV1ZV9zdGFydGAuIE9rYXksIGludGVyZXN0aW5nLCB0aGF0IHBvaW50cyB0b3dhcmRzIHNvbWUgbmV0d29yayBpbnRlcmFjdGlvbiBhdCBhIGxvd2VyIGxldmVsLiBgbnNpbV9kZWxfbmFwaWAgaXMgY2FsbGVkIGZyb20gdHdvIHBsYWNlczogYG5zaW1fZGVzdHJveWAgYW5kIGBuc2ltX2luaXRfbmFwaWAgKGluIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoKS4gU2luY2UgYG5zaW1fZGVzdHJveWAgaXMgYSBjcml0aWNhbCBmdW5jdGlvbiwgSSYjMzk7bSBnb2luZyB0byBmb2N1cyBvbiB0aGF0IG5leHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHRoZXJlIHRvIHNlZSBpZiB3ZSBjYW4gdHJpZ2dlciBhbnkgaW50ZXJlc3Rpbmcgc3RhdGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuc2ltX2Rlc3Ryb3kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYz0xNDU1PXN0YXRpYyBpbnQgX19uc2ltX2Rldl9wb3J0X2FkZChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LCBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNTE4LVx0XHRpZiAoZXJyKVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE1MTk6XHRcdFx0Z290byBlcnJfbnNpbV9kZXN0cm95O1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1MjAtXHR9XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1MjUtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTUyNjplcnJfbnNpbV9kZXN0cm95OlxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE1Mjc6XHRuc2ltX2Rlc3Ryb3kobnNpbV9kZXZfcG9ydC1cdTAwM2Vucyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTUyOC1lcnJfcG9ydF9kZWJ1Z2ZzX2V4aXQ6XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTE1NDA9c3RhdGljIHZvaWQgX19uc2ltX2Rldl9wb3J0X2RlbChzdHJ1Y3QgbnNpbV9kZXZfcG9ydCAqbnNpbV9kZXZfcG9ydClcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTU0Ni1cdFx0ZGV2bF9yYXRlX2xlYWZfZGVzdHJveShcdTAwMjZuc2ltX2Rldl9wb3J0LVx1MDAzZWRldmxpbmtfcG9ydCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTU0NzpcdG5zaW1fZGVzdHJveShuc2ltX2Rldl9wb3J0LVx1MDAzZW5zKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNTQ4LVx0bnNpbV9kZXZfcG9ydF9kZWJ1Z2ZzX2V4aXQobnNpbV9kZXZfcG9ydCk7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTExMjg9c3RydWN0IG5ldGRldnNpbSAqbnNpbV9jcmVhdGUoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2Rldixcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtMTE3NC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzoxMTc1OnZvaWQgbnNpbV9kZXN0cm95KHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTExNzYte1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaD0xNjY9c3RydWN0IG5ldGRldnNpbSAqbnNpbV9jcmVhdGUoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2Rldixcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTY4LVx0XHRcdCAgICAgIHU4IHBlcm1fYWRkcltFVEhfQUxFTl0pO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE2OTp2b2lkIG5zaW1fZGVzdHJveShzdHJ1Y3QgbmV0ZGV2c2ltICpucyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTcwLWJvb2wgbmV0ZGV2X2lzX25zaW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5NTQKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBGdXp6aW5nIFN0cmF0ZWd5IGZvciBOZXRkZXZzaW0qKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGBuZXRkZXZzaW1gIGRyaXZlciwgYW5kIHRoZSBmaXJzdCB0aGluZ3MgdGhhdCBqdW1wIG91dCBhcmUgdGhlIGBuc2ltX2NyZWF0ZWAgYW5kIGBuc2ltX2Rlc3Ryb3lgIGZ1bmN0aW9ucyDigJMgdGhvc2UgYXJlIHRoZSBvYnZpb3VzIGVudHJ5IGFuZCBleGl0IHBvaW50cyBmb3IgdGhlIHNpbXVsYXRlZCBuZXR3b3JrIGRldmljZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1ha2Ugc3VyZSB0aGVzZSBhcmUgcm9idXN0bHkgaGFuZGxlZC4KCkhvbGQgb24gYSBzZWMuLi4gYG5zaW1fcXVldWVfc3RhcnRgIGlzIGEgY2FsbGJhY2sgZm9yIGAubmRvX3F1ZXVlX3N0YXJ0YC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZzsgaXQmIzM5O3MgTkFQSSByZWxhdGVkLiBXaGljaCBtZWFucyBJIHNob3VsZCBwcm9iYWJseSBsb29rIGF0IHRoYXQsIHRvbyEKClRoaXMgcGF0Y2ggYWxzbyBtZW50aW9ucyBgbmV0aWZfcXVldWVfc2V0X25hcGlgIGNhbGxzLCB3aGljaCBpcyBkZWZpbml0ZWx5IHJlbGV2YW50IHRvIE5BUEkgYW5kIHF1ZXVlIG1hbmFnZW1lbnQuIFRoYXQgZnVuY3Rpb24gaXMgd29ydGggYSBkZWVwIGRpdmUgc2luY2UgaXQmIzM5O3MgYSBjb3JlIG5ldHdvcmtpbmcgZnVuY3Rpb24uIFNvIGl0IGxvb2tzIGxpa2UgSSBuZWVkIHRvIHJlYWxseSBwYXkgYXR0ZW50aW9uIHRvIHRoYXQuIFRoZSBwYXRjaCBpcyBpbiBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jYCwgc28gSSBzaG91bGQgZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGNvZGUgYXJvdW5kIHRoZXJlLgoKU28sIEkmIzM5O2xsIGRlZmluaXRlbHkgYmUgZnV6emluZyBgbnNpbV9jcmVhdGVgLCBgbnNpbV9kZXN0cm95YCwgYG5zaW1fZHJ2X3Byb2JlYCwgYW5kIGBuc2ltX2Rydl9wb3J0X2FkZGAgZ2l2ZW4gdGhhdCB0aGV5IGFyZSB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgaGVyZS4KCldhaXQgYSBtaW51dGUsIGBuc2ltX3F1ZXVlX3N0YXJ0YCBpcyBhICpjYWxsYmFjayogZm9yIGAubmRvX3F1ZXVlX3N0YXJ0YC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgKmhvdyogYC5uZG9fcXVldWVfc3RhcnRgIGlzIGFjdHVhbGx5IHRyaWdnZXJlZCBpbiB0aGUga2VybmVsLCBhbmQgaG93IEkgY2FuIGNvbnRyb2wgdGhhdC4gSSBuZWVkIHRvIHRyaWdnZXIgdGhhdCBjYWxsYmFjayBmdW5jdGlvbi4KCkkmIzM5O2xsIGNoZWNrIGBuZXRkZXZfcXVldWVfbWdtdF9vcHNgIGFuZCBob3cgaXQmIzM5O3MgdXNlZC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY29udGV4dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdG8gZ2V0IHRoYXQgY2FsbGJhY2sgdG8gZmlyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmRvX3F1ZXVlX3N0YXJ0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NvcmUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTk4PXN0YXRpYyBpbnQgbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTA4LVx0aWYgKCFxb3BzIHx8ICFxb3BzLVx1MDAzZW5kb19xdWV1ZV9zdG9wIHx8ICFxb3BzLVx1MDAzZW5kb19xdWV1ZV9tZW1fZnJlZSB8fFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTA5Olx0ICAgICFxb3BzLVx1MDAzZW5kb19xdWV1ZV9tZW1fYWxsb2MgfHwgIXFvcHMtXHUwMDNlbmRvX3F1ZXVlX3N0YXJ0KVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTEwLVx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTM2LVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTM3Olx0XHRlcnIgPSBxb3BzLVx1MDAzZW5kb19xdWV1ZV9zdGFydChkZXYsIHFjZmdfbmV3LCBuZXdfbWVtLCByeHFfaWR4KTtcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTEzOC1cdFx0aWYgKGVycilcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xNTgtXHQgKi9cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjE1OTpcdGlmIChxb3BzLVx1MDAzZW5kb19xdWV1ZV9zdGFydChkZXYsIHFjZmdfb2xkLCBvbGRfbWVtLCByeHFfaWR4KSkge1xubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTYwLVx0XHRXQVJOKDEsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5MjgKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBgbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnYCYjMzk7cyBDYWxsZXJzKioKCkFscmlnaHQsIHNvIGBuZXRkZXZfcnhfcXVldWVfcmVjb25maWdgIGtpY2tzIG9mZiBhIGNhbGwgdG8gYG5kb19xdWV1ZV9zdGFydGAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFuZCBpdCBzdWdnZXN0cyBhIGZhaXJseSBpbXBvcnRhbnQgcmVjb25maWd1cmF0aW9uIGV2ZW50IGlzIGhhcHBlbmluZywgc2luY2UgaXQmIzM5O3MgaW52b2x2ZWQgaW4gc3RhcnRpbmcgb3IgcmVzdGFydGluZyBhIHF1ZXVlLiBUbyByZWFsbHkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zLCBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIGBuZXRkZXZfcnhfcXVldWVfcmVjb25maWdgLiBMZXQmIzM5O3Mgc2VlLi4uIEkgd2FudCB0byBxdWlja2x5IGlkZW50aWZ5IHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKmNhbGxlZCogd2l0aGluIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IG9mIGl0cyBjYWxscyB3aWxsIHByb3ZpZGUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBmdW5jdGlvbi4gVGltZSB0byBzdGFydCBkaWdnaW5nIHRocm91Z2ggdGhlIGNvZGUuLi4gbGV0JiMzOTtzIHNlZSB3aGVyZSB0aGlzIGlzIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz05MT1ib29sIG5ldGlmX3J4cV9oYXNfbXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgpXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtOTctXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzo5ODpzdGF0aWMgaW50IG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtOTktXHRcdFx0XHQgICAgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM9MTc4PWludCBuZXRkZXZfcnhfcXVldWVfcmVzdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeClcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODItXHRuZXRkZXZfcXVldWVfY29uZmlnKGRldiwgcnhxX2lkeCwgXHUwMDI2cWNmZyk7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxODM6XHRyZXR1cm4gbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnKGRldiwgcnhxX2lkeCwgXHUwMDI2cWNmZywgXHUwMDI2cWNmZyk7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODQtfVxuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTE4Nz1zdGF0aWMgaW50IF9fbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjMzLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjM0Olx0cmV0ID0gbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnKGRldiwgcnhxX2lkeCwgXHUwMDI2cWNmZ1swXSwgXHUwMDI2cWNmZ1sxXSk7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yMzUtXHRpZiAocmV0KVxuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTI3OD1zdGF0aWMgdm9pZCBfX25ldGlmX21wX2Nsb3NlX3J4cShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeCxcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0zMDEtXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzozMDI6XHRlcnIgPSBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoZGV2LCByeHFfaWR4LCBcdTAwMjZxY2ZnWzBdLCBcdTAwMjZxY2ZnWzFdKTtcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTMwMy1cdFdBUk5fT04oZXJyIFx1MDAyNlx1MDAyNiBlcnIgIT0gLUVORVRET1dOKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTc0NAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDaGVja2luZyBgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRgJiMzOTtzIEV4cG9ydCBTdGF0dXMqKgoKQWxyaWdodCwgdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSSBzZWUgYSByZWZlcmVuY2UgdG8gYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YC4gVGhlIHF1ZXN0aW9uIHRoYXQgaW1tZWRpYXRlbHkgcG9wcyBpbnRvIG15IGhlYWQgaXM6IGlzIHRoYXQgZnVuY3Rpb24gKmV4cG9ydGVkKj8gSXMgaXQgYWNjZXNzaWJsZSBvdXRzaWRlIG9mIGl0cyBpbW1lZGlhdGUgbW9kdWxlPyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgd2hldGhlciBpdCYjMzk7cyBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJLCBvciBpZiBpdCYjMzk7cyBpbnRlcm5hbCBhbmQsIHRoZXJlZm9yZSwgcG90ZW50aWFsbHkgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCB0aGUgc2FtZSBsZXZlbCBvZiBjb25jZXJuIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBVbmRlcnN0YW5kaW5nIGl0cyBleHBvcnQgc3RhdHVzIGlzIGFic29sdXRlbHkgY3J1Y2lhbCBiZWZvcmUgSSBjYW4gYXNzZXNzIGl0cyBpbnRlbmRlZCB1c2UsIGRlcGVuZGVuY2llcywgb3IgcG90ZW50aWFsIGltcGFjdHMgaW4gdGhlIGNvbnRleHQgSSYjMzk7bSBjdXJyZW50bHkgd29ya2luZyB3aXRoLiBBIHF1aWNrIGNoZWNrIGlzIGluIG9yZGVyLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIHN5bWJvbCB0YWJsZSB0ZWxscyB1cyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY29yZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM9OTg9c3RhdGljIGludCBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xNzctXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxNzg6aW50IG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByeHFfaWR4KVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTc5LXtcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODQtfVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTg1OkVYUE9SVF9TWU1CT0xfTlNfR1BMKG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0LCBcJiMzNDtORVRERVZfSU5URVJOQUxcJiMzNDspO1xubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTg2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDE3NwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgTmV0d29yayBEZXZpY2UgUlggUXVldWUgUmVzdGFydCoqCgpPa2F5LCBzbyBgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRgIGlzIGRlZmluaXRlbHkgZXhwb3J0ZWQsIHRoYXQmIzM5O3MgZ29vZCB0byBrbm93LiBCdXQgSSYjMzk7bSB3b25kZXJpbmcgYWJvdXQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoYXQgYW5kIGBfX25ldGlmX21wX29wZW5fcnhxYC4gVGhhdCBvbmUgc2VlbXMgdG8gYmUgc3RhdGljLCB3aGljaCBtYWtlcyB0aGluZ3MgYSBiaXQgbW9yZSBpbnRlcmVzdGluZywgcG90ZW50aWFsbHkgbGltaXRpbmcgaG93IHdlIGNhbiBpbnRlcmFjdCB3aXRoIGl0LiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBJcyB0aGVyZSBhIHB1YmxpYyBBUEkgb3IgYSBoaWdoZXItbGV2ZWwgbWVjaGFuaXNtIHRoYXQgdWx0aW1hdGVseSB0cmlnZ2VycyBgX19uZXRpZl9tcF9vcGVuX3J4cWAgb3IgcHJvdmlkZXMgYW4gaW5kaXJlY3QgcGF0aHdheT8gVGhhdCYjMzk7cyB3aGF0IEkgcmVhbGx5IG5lZWQgdG8gdW5kZXJzdGFuZC4KClRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgY2FsbCBzaXRlcyBvZiBgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRgLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBmbG93IGFuZCBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBpbml0aWF0aW5nIHRoYXQgZnVuY3Rpb24gY2FsbC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY2x1ZXMgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGludGVuZGVkIGJlaGF2aW9yIGFuZCBpZGVudGlmeSBpZiB0aGVyZSBpcyBhbiBpbnRlbmRlZCwgaGlnaCBsZXZlbCB0cmlnZ2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXRkZXZfcnhfcXVldWVfcmVzdGFydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM9OTg9c3RhdGljIGludCBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xNzctXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxNzg6aW50IG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByeHFfaWR4KVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTc5LXtcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODQtfVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTg1OkVYUE9SVF9TWU1CT0xfTlNfR1BMKG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0LCBcJiMzNDtORVRERVZfSU5URVJOQUxcJiMzNDspO1xubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTg2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDY3NwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipJbnZlc3RpZ2F0aW5nIGEgTmV0d29yayBNb2R1bGUgRXhwb3J0KioKCk9rYXksIHNvIEkgc2VlIHRoaXMgZnVuY3Rpb24gb3IgdmFyaWFibGUgaXMgZXhwb3J0ZWQsIG1lYW5pbmcgaXQmIzM5O3MgaW50ZW5kZWQgdG8gYmUgdXNlZCBvdXRzaWRlIHRoZSBtb2R1bGUgd2hlcmUgaXQmIzM5O3MgZGVmaW5lZC4gQnV0IHRoZSBvYnZpb3VzIHBsYWNlIHRvIGxvb2ssIGBuZXQvYCwgaXNuJiMzOTt0IGNhbGxpbmcgaXQuIFRoYXQmIzM5O3MgdW51c3VhbC4gVXN1YWxseSwgdGhlIG1vZHVsZSB0aGF0IGV4cG9ydHMgc29tZXRoaW5nIGlzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIG1vZHVsZXMgdGhhdCB1c2UgaXQuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGEgYml0IGRlZXBlci4gR2l2ZW4gdGhpcyBpcyBuZXR3b3JrLXJlbGF0ZWQgY29kZSwgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGBkcml2ZXJzL25ldC9gIGRpcmVjdG9yeS4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgYWN0dWFsIG5ldHdvcmsgZGV2aWNlIGRyaXZlcnMgbGl2ZSwgYW5kIHRoYXQmIzM5O3MgdGhlIG1vc3QgbGlrZWx5IHBsYWNlIHRvIGZpbmQgc29tZXRoaW5nIHRoYXQgbWlnaHQgbGV2ZXJhZ2UgdGhlIGV4cG9ydGVkIGZlYXR1cmUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBiZWluZyBpbXBvcnRlZCBhbmQgaG93IGl0JiMzOTtzIGJlaW5nIHVzZWQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE0NDc4PXN0YXRpYyB2b2lkIGJueHRfdHBoX3VwZGF0ZShzdHJ1Y3QgYm54dCAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTQ1MDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNDUwMTpcdFx0ZXJyID0gbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnQoZGV2LCBpcnEtXHUwMDNlcmluZ19ucik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNDUwMi1cdFx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04NjQ9bnNpbV9xcmVzZXRfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICpkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04ODgtXHRucy1cdTAwM2VycV9yZXNldF9tb2RlID0gbW9kZTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo4ODk6XHRyZXQgPSBuZXRkZXZfcnhfcXVldWVfcmVzdGFydChucy1cdTAwM2VuZXRkZXYsIHF1ZXVlKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04OTAtXHRucy1cdTAwM2VycV9yZXNldF9tb2RlID0gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyMDIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBkZWVwIGluIHRoZSB3ZWVkcyBvZiBuZXR3b3JrIGRldmljZSBkcml2ZXIgZGV2ZWxvcG1lbnQ6CgoqKlRyYWNpbmcgYSBRdWV1ZSBSZXN0YXJ0IElzc3VlKioKClJpZ2h0LCBzbyBgbnNpbV9xcmVzZXRfd3JpdGVgIGlzIGZpcmluZyB1cCBgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRgIOKAkyB0aGF0JiMzOTtzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uLiBUaGF0JiMzOTtzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nIGJlY2F1c2UgaXQgdGVsbHMgbWUgd2hlcmUgdGhlIHJlc2V0IGlzIGFjdHVhbGx5IGhhcHBlbmluZyBpbiB0aGUgcmVjZWl2ZSBwYXRoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0LiBJIG5lZWQgdG8gZ28gYmFjayBhbmQgZG91YmxlLWNoZWNrIGV4YWN0bHkgaG93IGBuc2ltX3FyZXNldF93cml0ZWAgd29ya3MuIFRoYXQgZnVuY3Rpb24gY2FsbCBpcyBsaWtlbHkgdGhlIHRyaWdnZXIgZm9yIHdoYXRldmVyIGlzIGhhcHBlbmluZyBkb3duIHRoZSBsaW5lLCBzbyBkaWdnaW5nIGludG8gaXQgd2lsbCBwcm9iYWJseSBzaGVkIGxpZ2h0IG9uIHRoZSBwcm9ibGVtIEkmIzM5O20gdHJ5aW5nIHRvIHNvbHZlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCB0aGF0IGZ1bmN0aW9uIGlzIGRvaW5nLiBMZXQmIzM5O3Mgc2VlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25zaW1fcXJlc2V0X3dyaXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9ODYzPXN0YXRpYyBzc2l6ZV90XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6ODY0Om5zaW1fcXJlc2V0X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqZGF0YSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NjUtXHRcdCAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTkwMD1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBuc2ltX3FyZXNldF9mb3BzID0ge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTkwMS1cdC5vcGVuID0gc2ltcGxlX29wZW4sXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6OTAyOlx0LndyaXRlID0gbnNpbV9xcmVzZXRfd3JpdGUsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtOTAzLVx0Lm93bmVyID0gVEhJU19NT0RVTEUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNjY3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVidWdnaW5nIERlZXAgRGl2ZTogQSBGdXp6aW5nIE9wcG9ydHVuaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGl0JiMzOTtzIGNsZWFybHkgYSBkZWJ1Z2ZzIGZpbGUgb3BlcmF0aW9uLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIGBuc2ltX3FyZXNldF93cml0ZWAgaXMgYSBwb3RlbnRpYWwgdGFyZ2V0LiBBIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLCBhY3R1YWxseS4gSXQmIzM5O3MgYWxtb3N0IGd1YXJhbnRlZWQgdG8gYmUgcmVhY2hhYmxlIGJlY2F1c2UgaXQmIzM5O3MgZXhwb3NlZCB0aGF0IHdheS4KCk5vdywgSSYjMzk7bSBzZWVpbmcgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZXNlIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgY2FsbHMuIEhtbSwgaW50ZXJlc3RpbmcuIFRob3NlIGFyZSBkZWZpbml0ZWx5IHdvcnRoIGEgY2xvc2VyIGxvb2suIExldCBtZSBzaGlmdCBteSBmb2N1cyBhbmQgdGFrZSBhIGRldGFpbGVkIGxvb2sgYXQgaG93IGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgZnVuY3Rpb25zLiBJdCBjb3VsZCBiZSBhbiBhdmVudWUgdG8gZXhwbG9pdCB3aXRoaW4gdGhpcyBkZWJ1Z2ZzIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25ldGlmX3F1ZXVlX3NldF9uYXBpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NvcmUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL2Rldi5jPTcyODk9RVhQT1JUX1NZTUJPTChuZXRpZl90aHJlYWRlZF9lbmFibGUpO1xuLS1cbm5ldC9jb3JlL2Rldi5jLTcyOTEtLyoqXG5uZXQvY29yZS9kZXYuYzo3MjkyOiAqIG5ldGlmX3F1ZXVlX3NldF9uYXBpIC0gQXNzb2NpYXRlIHF1ZXVlIHdpdGggdGhlIG5hcGlcbm5ldC9jb3JlL2Rldi5jLTcyOTMtICogQGRldjogZGV2aWNlIHRvIHdoaWNoIE5BUEkgYW5kIHF1ZXVlIGJlbG9uZ1xuLS1cbm5ldC9jb3JlL2Rldi5jLTczMDEtICovXG5uZXQvY29yZS9kZXYuYzo3MzAyOnZvaWQgbmV0aWZfcXVldWVfc2V0X25hcGkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHF1ZXVlX2luZGV4LFxubmV0L2NvcmUvZGV2LmMtNzMwMy1cdFx0XHQgIGVudW0gbmV0ZGV2X3F1ZXVlX3R5cGUgdHlwZSwgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKVxuLS1cbm5ldC9jb3JlL2Rldi5jLTczMjQtfVxubmV0L2NvcmUvZGV2LmM6NzMyNTpFWFBPUlRfU1lNQk9MKG5ldGlmX3F1ZXVlX3NldF9uYXBpKTtcbm5ldC9jb3JlL2Rldi5jLTczMjYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMTY4CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0d29yayBJbnRlcmZhY2UgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIE5BUEkgc2V0dXAsIHNwZWNpZmljYWxseSBgbnNpbV9kZWxfbmFwaWAgYW5kIGBuc2ltX3F1ZXVlX3N0YXJ0YC4gYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCBpcyBhbiBleHBvcnRlZCBmdW5jdGlvbiwgc28gdGhhdCBnaXZlcyBtZSBhIGdvb2QgZW50cnkgcG9pbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlci4KClJpZ2h0LCBgbnNpbV9kZWxfbmFwaWAgaXMgY2FsbGVkIGZyb20gYG5zaW1fZGVzdHJveWAgYW5kIGBuc2ltX2luaXRfbmFwaWAuIFRoYXQgbmFycm93cyBkb3duIHRoZSBjcml0aWNhbCBhcmVhcy4gQW5kIGBuc2ltX3F1ZXVlX3N0YXJ0YCBpcyB0cmlnZ2VyZWQgdGhyb3VnaCBgbmRvX3F1ZXVlX3N0YXJ0YCBpbiBgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRgLCB3aGljaCBpcyBpdHNlbGYga2lja2VkIG9mZiBieSBgbnNpbV9xcmVzZXRfd3JpdGVgLiBBaGEhIGBuc2ltX3FyZXNldF93cml0ZWAgaXMgYSBkZWJ1Z2ZzIHdyaXRlIGZ1bmN0aW9uLi4uIFRoYXQgc2VlbXMgaGlnaGx5IHNwZWNpZmljLgoKTm93LCBhIGRlYnVnZnMgd3JpdGUgaW1wbGllcyB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgcHJpbWFyaWx5IGV4cG9zZWQgZm9yIHRlc3Rpbmcgb3IgZGlhZ25vc3RpYyBwdXJwb3Nlcy4gQnV0LCBJIG5lZWQgdG8gbWFrZSAqYWJzb2x1dGVseSogY2VydGFpbiBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhIG1vcmUgY3JpdGljYWwgcGF0aC4gQ291bGQgdGhlcmUgYmUgYW55IG90aGVyIHdheSBgbmRvX3F1ZXVlX3N0YXJ0YCBnZXRzIHRyaWdnZXJlZD8gTmVlZCB0byBkb3VibGUtY2hlY2sgY2FsbGVycyBvZiBgbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnYCBpbiBgbmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmNgIGFnYWluLiBHb3R0YSBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhIGNydWNpYWwgY29kZSBwYXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXRkZXZfcnhfcXVldWVfcmVjb25maWcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz05MT1ib29sIG5ldGlmX3J4cV9oYXNfbXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgpXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtOTctXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzo5ODpzdGF0aWMgaW50IG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtOTktXHRcdFx0XHQgICAgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM9MTc4PWludCBuZXRkZXZfcnhfcXVldWVfcmVzdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeClcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODItXHRuZXRkZXZfcXVldWVfY29uZmlnKGRldiwgcnhxX2lkeCwgXHUwMDI2cWNmZyk7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxODM6XHRyZXR1cm4gbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnKGRldiwgcnhxX2lkeCwgXHUwMDI2cWNmZywgXHUwMDI2cWNmZyk7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODQtfVxuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTE4Nz1zdGF0aWMgaW50IF9fbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjMzLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjM0Olx0cmV0ID0gbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnKGRldiwgcnhxX2lkeCwgXHUwMDI2cWNmZ1swXSwgXHUwMDI2cWNmZ1sxXSk7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yMzUtXHRpZiAocmV0KVxuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTI3OD1zdGF0aWMgdm9pZCBfX25ldGlmX21wX2Nsb3NlX3J4cShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeCxcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0zMDEtXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzozMDI6XHRlcnIgPSBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoZGV2LCByeHFfaWR4LCBcdTAwMjZxY2ZnWzBdLCBcdTAwMjZxY2ZnWzFdKTtcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTMwMy1cdFdBUk5fT04oZXJyIFx1MDAyNlx1MDAyNiBlcnIgIT0gLUVORVRET1dOKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMyNjkKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgbXlzZWxmOgoKKipJbnZlc3RpZ2F0aW5nIFN0YXRpYyBGdW5jdGlvbiBVc2FnZSBpbiB0aGUgTmV0d29yayBJbnRlcmZhY2UgQ29kZSoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGVzZSBgX19uZXRpZl9tcF9vcGVuX3J4cWAgYW5kIGBfX25ldGlmX21wX2Nsb3NlX3J4cWAgZnVuY3Rpb25zLiBUaGUga2V5IHRoaW5nIGhlcmUgaXMgdGhhdCB0aGV5JiMzOTtyZSBkZWNsYXJlZCBhcyBgc3RhdGljYC4gVGhhdCBtZWFucyB0aGV5IGhhdmUgaW50ZXJuYWwgbGlua2FnZSwgYW5kIGFyZSBvbmx5IHZpc2libGUgd2l0aGluIHRoZSBjb21waWxhdGlvbiB1bml0IGluIHdoaWNoIHRoZXkmIzM5O3JlIGRlZmluZWQuIFRoaXMgaXMgZ29vZCBwcmFjdGljZSBmb3IgZW5jYXBzdWxhdGlvbiwgYnV0IGl0IGFsc28gbWVhbnMgSSBoYXZlIHRvIGJlIGEgbGl0dGxlIG1vcmUgZGVsaWJlcmF0ZSBpbiBmaWd1cmluZyBvdXQgd2hlcmUgdGhleSYjMzk7cmUgYmVpbmcgdXNlZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgZ2l2ZW4gdGhleSYjMzk7cmUgc3RhdGljLCB0aGUgY2FsbHMgdG8gdGhlc2UgZnVuY3Rpb25zIGhhdmUgdG8gYmUgd2l0aGluIHRoZSBzYW1lIHNvdXJjZSBmaWxlLiYjMzQ7IExldCYjMzk7cyB0cmFjZSB0aGVpciB1c2FnZSBhbmQgc2VlIHdoZXJlIHRoZXkmIzM5O3JlIGNhbGxlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlaXIgY2FsbHMgdG8gYXNzZXNzIHRoZWlyIGJlaGF2aW91ci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19uZXRpZl9tcF9vcGVuX3J4cSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTE4NT1FWFBPUlRfU1lNQk9MX05TX0dQTChuZXRkZXZfcnhfcXVldWVfcmVzdGFydCwgXCYjMzQ7TkVUREVWX0lOVEVSTkFMXCYjMzQ7KTtcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE4Ni1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjE4NzpzdGF0aWMgaW50IF9fbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODgtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwcF9tZW1vcnlfcHJvdmlkZXJfcGFyYW1zICpwLFxuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTI0NT1pbnQgbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjYwLVx0aWYgKCFuZXRpZl9yeHFfaXNfbGVhc2VkKGRldiwgcnhxX2lkeCkpXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoyNjE6XHRcdHJldHVybiBfX25ldGlmX21wX29wZW5fcnhxKGRldiwgcnhxX2lkeCwgcCwgZXh0YWNrKTtcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTI2Mi1cbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNzItXHRuZXRkZXZfbG9jayhkZXYpO1xubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjczOlx0cmV0ID0gX19uZXRpZl9tcF9vcGVuX3J4cShkZXYsIHJ4cV9pZHgsIHAsIGV4dGFjayk7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNzQtXHRuZXRkZXZfdW5sb2NrKGRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzOTI5CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKlZlcmlmeWluZyB0aGUgRXhwb3J0IG9mIGBuZXRpZl9tcF9vcGVuX3J4cWAqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYG5ldGlmX21wX29wZW5fcnhxYCBmdW5jdGlvbiBjYWxsLCBhbmQgdGhlIHF1ZXN0aW9uIHRoYXQgaW1tZWRpYXRlbHkgcG9wcyBpbnRvIG15IGhlYWQgaXM6ICpJcyB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5IGV4cG9ydGVkPyogSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGl0JiMzOTtzIGFjY2Vzc2libGUgd2hlcmUgaXQmIzM5O3MgYmVpbmcgdXNlZC4gSSBjYW4mIzM5O3QganVzdCBhc3N1bWUgaXQmIzM5O3MgcHVibGljbHkgYXZhaWxhYmxlIGFuZCB1c2FibGUgb3V0c2lkZSBvZiBpdHMgb3JpZ2luYWwgbW9kdWxlLiBUaGlzIGlzIGEgY3J1Y2lhbCBmaXJzdCBzdGVwIGluIGRlYnVnZ2luZyBvciB1bmRlcnN0YW5kaW5nIHRoZSBjb2RlJiMzOTtzIGFyY2hpdGVjdHVyZS4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBpdCBoYXMgYmVlbiBleHBsaWNpdGx5IG1hZGUgYXZhaWxhYmxlLCBwcm9iYWJseSB0aHJvdWdoIGEgc3ltYm9sIHRhYmxlIG9yIHNvbWUgb3RoZXIgbWVjaGFuaXNtIGluIHRoaXMga2VybmVsIGJ1aWxkIG9yIHByb2plY3QuIElmIGl0IGlzbiYjMzk7dCBleHBvcnRlZCwgdGhhdCB3b3VsZCBsaWtlbHkgZXhwbGFpbiBhbnkgaXNzdWVzIEkmIzM5O20gc2VlaW5nIHdpdGggaXRzIHVzYWdlLiBTbywgdGltZSB0byBjaGVjayB0aGUgc3ltYm9sIGV4cG9ydCBsaXN0cywgb3IgdGhlIHJlbGV2YW50IGhlYWRlciBmaWxlcywgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgaW5kZWVkIGRlY2xhcmVkIGFzIHNvbWV0aGluZyB0aGF0IGNhbiBiZSBjYWxsZWQgZnJvbSB0aGlzIHNjb3BlLiBMZXQmIzM5O3MgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXRpZl9tcF9vcGVuX3J4cSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTE4NT1FWFBPUlRfU1lNQk9MX05TX0dQTChuZXRkZXZfcnhfcXVldWVfcmVzdGFydCwgXCYjMzQ7TkVUREVWX0lOVEVSTkFMXCYjMzQ7KTtcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE4Ni1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjE4NzpzdGF0aWMgaW50IF9fbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODgtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwcF9tZW1vcnlfcHJvdmlkZXJfcGFyYW1zICpwLFxuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTI0NC1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjI0NTppbnQgbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNDYtXHRcdCAgICAgIGNvbnN0IHN0cnVjdCBwcF9tZW1vcnlfcHJvdmlkZXJfcGFyYW1zICpwLFxuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTI2MC1cdGlmICghbmV0aWZfcnhxX2lzX2xlYXNlZChkZXYsIHJ4cV9pZHgpKVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjYxOlx0XHRyZXR1cm4gX19uZXRpZl9tcF9vcGVuX3J4cShkZXYsIHJ4cV9pZHgsIHAsIGV4dGFjayk7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNjItXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjcyLVx0bmV0ZGV2X2xvY2soZGV2KTtcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjI3MzpcdHJldCA9IF9fbmV0aWZfbXBfb3Blbl9yeHEoZGV2LCByeHFfaWR4LCBwLCBleHRhY2spO1xubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjc0LVx0bmV0ZGV2X3VubG9jayhkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDY1MgoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipJbnZlc3RpZ2F0aW5nIENhbGwgU2l0ZXMgb2YgYG5ldGlmX21wX29wZW5fcnhxYCoqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBzZWUgdGhlIGNvbnRleHQgb2YgdGhpcyBgbmV0aWZfbXBfb3Blbl9yeHFgIGZ1bmN0aW9uLiBNeSBpbnN0aW5jdCBpcyB0byB0cmFjZSBpdHMgY2FsbCBzaXRlcy4gS25vd2luZyB3aGVyZSBpdCYjMzk7cyAqdXNlZCogd2lsbCBnaXZlIG1lIGEgaHVnZSBhbW91bnQgb2YgaW5mb3JtYXRpb24gYWJvdXQgaXRzIHB1cnBvc2UgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgbmV0d29yayBpbnRlcmZhY2UgbXVsdGktcXVldWUgbWFuYWdlbWVudCBmcmFtZXdvcmsuIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgc3RhcnQgd2l0aCBhIHN0cmFpZ2h0Zm9yd2FyZCBjb2RlIHNlYXJjaC4gUGVyaGFwcyBhIGdyZXAgb3IgYSBzaW1pbGFyIHRvb2wgdG8gcGlucG9pbnQgYWxsIGluc3RhbmNlcyBvZiBjYWxscyB0byB0aGF0IHNwZWNpZmljIGZ1bmN0aW9uIG5hbWUuIFRoaXMgd2lsbCBob3BlZnVsbHkgcXVpY2tseSByZXZlYWwgdGhlIHJlbGV2YW50IHBhcnRzIG9mIHRoZSBjb2RlLiBPbmNlIEkgZmluZCB0aG9zZSBjYWxscywgSSB3aWxsIHN0YXJ0IHRvIHVucGFjayB0aGUgbG9naWMgYXJvdW5kIGVhY2ggY2FsbCwgc28gdGhhdCBJIGNhbiBmaWd1cmUgb3V0IHRoZSBjb250cm9sIGZsb3csIGFuZCB3aGF0IHRoZSBkZXBlbmRlbmNpZXMgbWlnaHQgYmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgdG9vLCBzbyBJJiMzOTtsbCBhbHNvIGNoZWNrIGl0cyBkZWZpbml0aW9uIHRvIHNlZSB3aGF0IGFyZ3VtZW50cyBpdCBleHBlY3RzLiBJIGJldCB0aGUgYXJndW1lbnRzIGNhbiBnaXZlIG1lIGNsdWVzIGFib3V0IHRoZSBzcGVjaWZpYyBkYXRhIGl0IHdvcmtzIG9uLCBhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byBvdGhlciBmdW5jdGlvbnMgaW4gdGhlIGRyaXZlciwgb3IgbWF5YmUgaW4gdGhlIGNvcmUgbmV0d29yayBzdGFjay4gVGhpcyBpbnZlc3RpZ2F0aW9uIHdpbGwgbGVhZCBtZSB0byBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgcmVjZWl2ZSBxdWV1ZSBpcyBvcGVuZWQgYW5kIG1hbmFnZWQgd2l0aGluIHRoaXMgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25ldGlmX21wX29wZW5fcnhxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9kZXZtZW0uYz0xNTQ9aW50IG5ldF9kZXZtZW1fYmluZF9kbWFidWZfdG9fcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHJ4cV9pZHgsXG4tLVxubmV0L2NvcmUvZGV2bWVtLmMtMTY1LVxubmV0L2NvcmUvZGV2bWVtLmM6MTY2Olx0ZXJyID0gbmV0aWZfbXBfb3Blbl9yeHEoZGV2LCByeHFfaWR4LCBcdTAwMjZtcF9wYXJhbXMsIGV4dGFjayk7XG5uZXQvY29yZS9kZXZtZW0uYy0xNjctXHRpZiAoZXJyKVxuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTE4NT1FWFBPUlRfU1lNQk9MX05TX0dQTChuZXRkZXZfcnhfcXVldWVfcmVzdGFydCwgXCYjMzQ7TkVUREVWX0lOVEVSTkFMXCYjMzQ7KTtcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE4Ni1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjE4NzpzdGF0aWMgaW50IF9fbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODgtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwcF9tZW1vcnlfcHJvdmlkZXJfcGFyYW1zICpwLFxuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTI0NC1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjI0NTppbnQgbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNDYtXHRcdCAgICAgIGNvbnN0IHN0cnVjdCBwcF9tZW1vcnlfcHJvdmlkZXJfcGFyYW1zICpwLFxuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTI2MC1cdGlmICghbmV0aWZfcnhxX2lzX2xlYXNlZChkZXYsIHJ4cV9pZHgpKVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjYxOlx0XHRyZXR1cm4gX19uZXRpZl9tcF9vcGVuX3J4cShkZXYsIHJ4cV9pZHgsIHAsIGV4dGFjayk7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNjItXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjcyLVx0bmV0ZGV2X2xvY2soZGV2KTtcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjI3MzpcdHJldCA9IF9fbmV0aWZfbXBfb3Blbl9yeHEoZGV2LCByeHFfaWR4LCBwLCBleHRhY2spO1xubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjc0LVx0bmV0ZGV2X3VubG9jayhkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTUyOQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBuZXRfZGV2bWVtX2JpbmRfZG1hYnVmX3RvX3F1ZXVlYCBJbnRlcmFjdGlvbioqCgpPa2F5LCBzbyBgbmV0X2Rldm1lbV9iaW5kX2RtYWJ1Zl90b19xdWV1ZWAgaXMgYmVpbmcgdHJpZ2dlcmVkIGZyb20gbmV0bGluaywgd2hpY2ggbWVhbnMgdGhlIGBuZG9fcXVldWVfc3RhcnRgIGZ1bmN0aW9uIGNhbiBiZSBpbmRpcmVjdGx5IGNhbGxlZCB0aHJvdWdoIGEgZGV2bWVtIGJpbmQgb3BlcmF0aW9uIGluaXRpYXRlZCB2aWEgbmV0bGluay4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIHByb3ZpZGVzIGEgcG90ZW50aWFsIG5ldyBhdHRhY2sgdmVjdG9yIG9yIGF0IGxlYXN0IGEgbmV3IHBhdGggZm9yIHRyaWdnZXJpbmcgdGhpcyBmdW5jdGlvbi4gVGhlIHBhdGNoIGluIHF1ZXN0aW9uIHNlZW1zIHRvIGJlIGZvY3VzZWQgb24gbW9kaWZ5aW5nIHRoZSBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX2RlbF9uYXBpYCBmdW5jdGlvbnMsIHN1Z2dlc3RpbmcgaXQmIzM5O3MgZGlyZWN0bHkgaW1wYWN0aW5nIHRoZSBuZXR3b3JrIHNpbXVsYXRvciYjMzk7cyBxdWV1aW5nIG9yIE5BUEkgKG5ldHdvcmsgQVBJKSBoYW5kbGluZy4gR2l2ZW4gdGhlIHBvdGVudGlhbCBpbXBhY3QgYW5kIHRoZSBmdW5jdGlvbmFsIG5hdHVyZSBvZiB0aGUgcGF0Y2gsIG15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoZXNlIGNoYW5nZXMgYXJlIGluZGVlZCB3b3J0aCBzb21lIHNlcmlvdXMgZnV6emluZy4gTm93LCBsZXQmIzM5O3MganVzdCBjb25maXJtIHRoZSBuZWNlc3NhcnkgY29uZmlnIG9wdGlvbnMgdG8gZW5hYmxlIGFuZCB3b3JrIHdpdGggbmV0ZGV2c2ltLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZW52aXJvbm1lbnQgdG8gc2V0dXAgdGhlIGZ1enppbmcgY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUREVWU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9NjAyPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9oeXBlcnYvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZy02MDMtXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwNDpjb25maWcgTkVUREVWU0lNXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwNS1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCBuZXR3b3JraW5nIGRldmljZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTk0NwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDdXJyZW50IFRoaW5raW5nIEFib3V0IHRoZSBOZXRkZXZzaW0gTW9kdWxlKioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gYE5FVERFVlNJTWAgYXMgdGhlIGtleSBjb25maWd1cmF0aW9uIGZsYWcsIHRoYXTigJlzIG15IHN0YXJ0aW5nIHBvaW50LiBOb3csIGxldOKAmXMgZGlnIGEgYml0IGRlZXBlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzaW11bGF0b3IgaW50ZXJhY3RzIHdpdGggdGhlIG5ldHdvcmsgc3RhY2suIEkga25vdyBgbmV0aWZfcXVldWVfc2V0X25hcGlgIGlzIGluIGBuZXQvY29yZS9kZXYuY2AsIHNvIHRoYXTigJlzIGEgcG90ZW50aWFsIGludGVyYWN0aW9uIHBvaW50LiBCYWNrIHRvIGBORVRERVZTSU1gIGJlaW5nIHRoZSBjZW50cmFsIGNvbmZpZywgdGhhdCBzZWVtcyBzb2xpZC4KCkFscmlnaHQsIGxldCYjMzk7cyByZXZpc2l0IGBuc2ltX3FyZXNldF93cml0ZWAuIEl04oCZcyBhIGRlYnVnZnMgZmlsZSB3cml0ZSwgd2hpY2ggc3VnZ2VzdHMgYSB3YXkgdG8gaW50ZXJhY3Qgd2l0aCBhbmQgY29udHJvbCB0aGUgc2ltdWxhdG9yLiBBcmUgdGhlcmUgb3RoZXIgYXJlYXMgb2YgaW50ZXJlc3Q/IGBuc2ltX3F1ZXVlX3N0YXJ0YCBsb29rcyBsaWtlIGEga2V5IGZ1bmN0aW9uLCBidXQgaXQmIzM5O3Mgc3RhdGljLCBzbyBJIGNhbiYjMzk7dCBkaXJlY3RseSB0YXJnZXQgaXQuIGBuc2ltX2NyZWF0ZWAgYW5kIGBuc2ltX2Rlc3Ryb3lgIGFyZSBleGNlbGxlbnQgY2FuZGlkYXRlczsgdGhleSBoYW5kbGUgdGhlIGxpZmVjeWNsZSBvZiB0aGUgc2ltdWxhdGVkIGVudGl0eS4gYG5zaW1fZHJ2X3BvcnRfYWRkYCBpcyBhbHNvIHByb21pc2luZywgd2hpY2ggbWF5IGJlIGhvdyB0aGUgc2ltdWxhdGVkIHBvcnQgaXMgaGFuZGxlZC4gSSBuZWVkIHRvIGNvbmZpcm0gYG5zaW1fcXJlc2V0X3dyaXRlYCBpcyBzdGF0aWMuIE9oLCBpdCBpcy4gCgpMZXQmIzM5O3MgY2hlY2sgaWYgYG5zaW1fY3JlYXRlYCBpcyBzdGF0aWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25zaW1fY3JlYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz00MDU9c3RhdGljIGludCBuc2ltX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy00MTYtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6NDE3OnN0YXRpYyBpbnQgbnNpbV9jcmVhdGVfcGFnZV9wb29sKHN0cnVjdCBwYWdlX3Bvb2wgKipwLCBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGkpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNDE4LXtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9NDM4PXN0YXRpYyBpbnQgbnNpbV9pbml0X25hcGkoc3RydWN0IG5ldGRldnNpbSAqbnMpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQ1Mi1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo0NTM6XHRcdGVyciA9IG5zaW1fY3JlYXRlX3BhZ2VfcG9vbChcdTAwMjZycS1cdTAwM2VwYWdlX3Bvb2wsIFx1MDAyNnJxLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQ1NC1cdFx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9NzUxPW5zaW1fcXVldWVfbWVtX2FsbG9jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTc2NC1cdFx0XHRyZXR1cm4gLUVORVRET1dOO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjc2NTpcdFx0cmV0dXJuIG5zaW1fY3JlYXRlX3BhZ2VfcG9vbChcdTAwMjZxbWVtLVx1MDAzZXBwLCBcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTc2Ni1cdH1cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNzcxLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjc3MjpcdGVyciA9IG5zaW1fY3JlYXRlX3BhZ2VfcG9vbChcdTAwMjZxbWVtLVx1MDAzZXJxLVx1MDAzZXBhZ2VfcG9vbCwgXHUwMDI2cW1lbS1cdTAwM2VycS1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy03NzMtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz0xMTIyPXN0YXRpYyB2b2lkIG5zaW1fZXhpdF9uZXRkZXZzaW0oc3RydWN0IG5ldGRldnNpbSAqbnMpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTExMjctXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6MTEyODpzdHJ1Y3QgbmV0ZGV2c2ltICpuc2ltX2NyZWF0ZShzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTExMjktXHRcdFx0ICAgICAgc3RydWN0IG5zaW1fZGV2X3BvcnQgKm5zaW1fZGV2X3BvcnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MDU5CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBpbnRlcm5hbCBwcm9jZXNzOgoKKipJbnRlcm5hbCBBc3Nlc3NtZW50IG9mIE5ldFNpbSBEcml2ZXIgU3RydWN0dXJlKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgTmV0U2ltIGZ1bmN0aW9ucywgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGBuc2ltX2NyZWF0ZWAsIGBuc2ltX2Rlc3Ryb3lgLCBhbmQgYG5zaW1fZHJ2X3BvcnRfYWRkYCBhcmVuJiMzOTt0IGRlZmluZWQgYXMgYHN0YXRpY2AuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgZGVzaWduIGNoYXJhY3RlcmlzdGljOyB0aGV5JiMzOTtyZSBsaWtlbHkgaW50ZW5kZWQgdG8gYmUgYWNjZXNzaWJsZSBvdXRzaWRlIHRoZSBzcGVjaWZpYyBtb2R1bGUgdGhleSYjMzk7cmUgZGVmaW5lZCBpbi4gVGhhdCBtYWtlcyBzZW5zZSwgZ2l2ZW4gTmV0U2ltJiMzOTtzIG92ZXJhbGwgcHVycG9zZTogdG8gc2ltdWxhdGUgbmV0d29yayBiZWhhdmlvciBhbmQgaW50ZXJhY3Qgd2l0aCBwb3RlbnRpYWxseSBvdGhlciBwYXJ0cyBvZiBhIGxhcmdlciBzeXN0ZW0uCgpOb3csIEkgbmVlZCB0byBzZWUgaWYgdGhlcmUgaXMgYW5vdGhlciBmdW5jdGlvbiB0aGF0IGlzIGEgY2FuZGlkYXRlIHRvIHJlcGxhY2Ugc29tZXRoaW5nIHRoYXQgZG9lcyBub3QgbmVlZCB0byBiZSBzdGF0aWMuIEhtbSwgaXMgYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YCBhIGdvb2QgY2FuZGlkYXRlIHRvIHVzZSBhcyByZXBsYWNlbWVudD8gSSBuZWVkIHRvIGxvb2sgaW50byB0aGlzIG1vcmUgZGVlcGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXRkZXZfcnhfcXVldWVfcmVzdGFydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTk4PXN0YXRpYyBpbnQgbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTc3LVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTc4OmludCBuZXRkZXZfcnhfcXVldWVfcmVzdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeClcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE3OS17XG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTg0LX1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjE4NTpFWFBPUlRfU1lNQk9MX05TX0dQTChuZXRkZXZfcnhfcXVldWVfcmVzdGFydCwgXCYjMzQ7TkVUREVWX0lOVEVSTkFMXCYjMzQ7KTtcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE4Ni1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc1NTcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgRHJpdmVyIFJlc3RhcnQgTG9naWMqKgoKQWxyaWdodCwgc28gYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YCBpcyBkZWZpbml0ZWx5IGV4cG9ydGVkLCBnb29kLiBOb3csIGxldCYjMzk7cyBwaXZvdCB0byBleGFtaW5lIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAuIEl0JiMzOTtzIGxpa2VseSB0aGF0IGZ1bmN0aW9uIGlzIGludm9sdmVkIGluIG1hbmFnaW5nIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiBOQVBJIGFuZCB0aGUgcmVzdGFydCBtZWNoYW5pc20uIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQmIzM5O3MgdXNlZCB3aXRoaW4gdGhlIGJyb2FkZXIgY29udGV4dCBvZiB0aGUgbmV0d29yayBkcml2ZXImIzM5O3MgaW50ZXJydXB0IGhhbmRsaW5nIGFuZCBob3cgaXQmIzM5O3MgaW5mbHVlbmNpbmcgcXVldWUgc3RhdGUgdHJhbnNpdGlvbnMgd2hlbiBOQVBJIGlzIGVuYWJsZWQsIGdpdmVuIHRoYXQgdGhlIGluaXRpYWwgdGhvdWdodCBjbGVhcmx5IGNvbmZpcm1zIHRoZSBhdmFpbGFiaWxpdHkgb2YgYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YC4gSSBhbnRpY2lwYXRlIHRoYXQgYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCBtaWdodCBiZSBzZXR0aW5nIHVwIHRoZSBOQVBJIGNvbnRleHQgZm9yIHRoZSBxdWV1ZSwgcG9zc2libHkgc2V0dGluZyBvciBjbGVhcmluZyB0aGUgaW50ZXJydXB0IGVuYWJsZSBmbGFncyBmb3IgdGhlIGhhcmR3YXJlLCBvciBtYXliZSBpdCYjMzk7cyBkb2luZyBzb21ldGhpbmcgbW9yZSBudWFuY2VkIHRvIHN5bmNocm9uaXplIHRoZSBzdGF0ZXMuIEkmIzM5O2xsIGZvY3VzIG9uIGhvdyB0aGUgaW50ZXJwbGF5IG9mIHRoZXNlIHR3byByb3V0aW5lcyBkcml2ZXMgdGhlIGNvcmUgbG9naWMgZm9yIHRoZSByZXN0YXJ0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXRpZl9xdWV1ZV9zZXRfbmFwaSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL2Rldi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL2Rldi5jPTcyODk9RVhQT1JUX1NZTUJPTChuZXRpZl90aHJlYWRlZF9lbmFibGUpO1xuLS1cbm5ldC9jb3JlL2Rldi5jLTcyOTEtLyoqXG5uZXQvY29yZS9kZXYuYzo3MjkyOiAqIG5ldGlmX3F1ZXVlX3NldF9uYXBpIC0gQXNzb2NpYXRlIHF1ZXVlIHdpdGggdGhlIG5hcGlcbm5ldC9jb3JlL2Rldi5jLTcyOTMtICogQGRldjogZGV2aWNlIHRvIHdoaWNoIE5BUEkgYW5kIHF1ZXVlIGJlbG9uZ1xuLS1cbm5ldC9jb3JlL2Rldi5jLTczMDEtICovXG5uZXQvY29yZS9kZXYuYzo3MzAyOnZvaWQgbmV0aWZfcXVldWVfc2V0X25hcGkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHF1ZXVlX2luZGV4LFxubmV0L2NvcmUvZGV2LmMtNzMwMy1cdFx0XHQgIGVudW0gbmV0ZGV2X3F1ZXVlX3R5cGUgdHlwZSwgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKVxuLS1cbm5ldC9jb3JlL2Rldi5jLTczMjQtfVxubmV0L2NvcmUvZGV2LmM6NzMyNTpFWFBPUlRfU1lNQk9MKG5ldGlmX3F1ZXVlX3NldF9uYXBpKTtcbm5ldC9jb3JlL2Rldi5jLTczMjYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MDk2CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBgbmV0aWZfcXVldWVfc2V0X25hcGlgIGlzIGRlZmluaXRlbHkgYW4gZXhwb3J0ZWQgZnVuY3Rpb24uIEdvb2QsIGdvb2QuIFRoYXQgbmFycm93cyBkb3duIG15IGZvY3VzLiBOb3csIHRoZSBrZXkgZnVuY3Rpb25zIHRvIHJlYWxseSBkaWcgaW50byBoZXJlIGFyZTogYG5zaW1fY3JlYXRlYCwgYG5zaW1fZGVzdHJveWAsIGBuc2ltX2Rydl9wb3J0X2FkZGAsIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGAsIGFuZCBgbmV0aWZfcXVldWVfc2V0X25hcGlgLgoKTGV0JiMzOTtzIHNlZSwgbm8sIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgYW5kIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGAgYXJlbiYjMzk7dCBob3QgcGF0aHMuIFRoZXkgYXJlIGludm9sdmVkIGluIHF1ZXVlIHNldHVwIGFuZCB0ZWFyZG93biwgbm90IHRoZSBjb3JlIGRhdGEgcGF0aC4gVGhhdCYjMzk7cyBhIHJlbGllZiwgbGVzcyB0byB3b3JyeSBhYm91dCB0aGVyZS4gTGV0JiMzOTtzIHJldmlzaXQgYG5zaW1fZHJ2X3BvcnRfYWRkYCAtIEkgc2hvdWxkIGdpdmUgaXQgYW5vdGhlciBsb29rLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuc2ltX2Rydl9wb3J0X2FkZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTY1PW5ld19wb3J0X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTk1LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjk2Olx0cmV0ID0gbnNpbV9kcnZfcG9ydF9hZGQobnNpbV9idXNfZGV2LCBOU0lNX0RFVl9QT1JUX1RZUEVfUEYsIHBvcnRfaW5kZXgsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtOTctXHRcdFx0XHRhZGRyX3NldCA/IGV0aF9hZGRyIDogTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTE4MTc9X19uc2ltX2Rldl9wb3J0X2xvb2t1cChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LCBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xODI4LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE4Mjk6aW50IG5zaW1fZHJ2X3BvcnRfYWRkKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiwgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xODMwLVx0XHQgICAgICB1bnNpZ25lZCBpbnQgcG9ydF9pbmRleCwgdTggcGVybV9hZGRyW0VUSF9BTEVOXSlcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg9MzkyPXZvaWQgbnNpbV9kcnZfcmVtb3ZlKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2Rldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzkzOmludCBuc2ltX2Rydl9wb3J0X2FkZChzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzk0LVx0XHQgICAgICBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLCB1bnNpZ25lZCBpbnQgcG9ydF9pbmRleCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg4OTIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBjb25zaWRlcmluZyBteSBleHBlcnRpc2U6CgoqKkZ1enppbmcgRGVidWdmcyB3aXRoIGBuc2ltX3FyZXNldF93cml0ZWAqKgoKUmlnaHQsIHNvIHRoaXMgZnVuY3Rpb24sIGBuc2ltX3FyZXNldF93cml0ZWAsIGl0JiMzOTtzIGV4cG9ydGVkIGZyb20gd2l0aGluIHRoZSBtb2R1bGUuIFRoYXQgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBIb2xkIG9uLi4uIGlzbiYjMzk7dCB0aGlzIGZ1bmN0aW9uICpwYXJ0KiBvZiBkZWJ1Z2ZzLCBhIHdyaXRlIG9wZXJhdGlvbj8gQW5kIGlmIGl0IGlzLi4uICpjb3VsZCogd2UgZnV6eiBkZWJ1Z2ZzIHdyaXRlcz8gVGhhdCYjMzk7cyB0aGUgcXVlc3Rpb24uCgpUaGUgYW5zd2VyLCBsb2dpY2FsbHksIHdvdWxkIGJlIHRoYXQgeWVzLCBvZiBjb3Vyc2UsIHN5emthbGxlciAqY2FuKiBmdXp6IGRlYnVnZnMgd3JpdGVzIGlmIHRoZSB0YXJnZXQgZmlsZSBpcyBrbm93bi4gVGhlIGlzc3VlLCBhcyBhbHdheXMsIHdpbGwgYmUgdGhlIG1lYW5zIG9mIGRpc2NvdmVyeS4gVGhpcyB3b3VsZCBiZSBhIHBlcmZlY3Qgb3Bwb3J0dW5pdHksIGFuZCBhbiBleGNpdGluZyB2ZWN0b3IsIGlmIG9ubHkgd2UgY291bGQgZmluZCBhIHdheS4KClRoZSBwcm9ibGVtLCBhcyBJIHJlY2FsbCBmcm9tIG15IHByZXZpb3VzIHJlc2VhcmNoLCBpcyB0aGF0IHdlIGNhbiYjMzk7dCBqdXN0IGFkZCBzdGF0aWMgZnVuY3Rpb25zIHRvIHRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0LCBzbyB0aGF0JiMzOTtzIGEgZGVhZCBlbmQuIFdlIG5lZWQgYSB3YXkgdG8gaW5zdHJ1bWVudCB0aGlzIGZ1cnRoZXIsIGJ1dCB0aGUgbWVhbnMgb2YgZG9pbmcgc28gaXMgbm90IGltbWVkaWF0ZWx5IGNsZWFyLgoKU28sIGxldCYjMzk7cyBiYWNrIHVwIGEgc3RlcC4gTGV0JiMzOTtzIHNlZSBpZiB3ZSBjYW4gZ2V0IGEgaGFuZGxlIG9uIGl0LiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHRob3JvdWdoIGNoZWNrIG9mIHRoZSBtb2R1bGUsIHNwZWNpZmljYWxseSBgbnNpbV9kcnZfcG9ydF9hZGRgIGFuZCBgbnNpbV9kcnZfcG9ydF9kZWxgLiBQZXJoYXBzIHRoZXJlJiMzOTtzIGFuIG9idmlvdXMgbGluayB3ZSBjYW4gdHJhY2UgdGhhdCB3ZSYjMzk7dmUgbWlzc2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuc2ltX2Rydl9wb3J0X2RlbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTEwND1kZWxfcG9ydF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xMTctXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTE4Olx0cmV0ID0gbnNpbV9kcnZfcG9ydF9kZWwobnNpbV9idXNfZGV2LCBOU0lNX0RFVl9QT1JUX1RZUEVfUEYsIHBvcnRfaW5kZXgpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTExOS1cdHJldHVybiByZXQgPyByZXQgOiBjb3VudDtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM9MTgyOT1pbnQgbnNpbV9kcnZfcG9ydF9hZGQoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LCBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xODQzLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE4NDQ6aW50IG5zaW1fZHJ2X3BvcnRfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiwgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xODQ1LVx0XHQgICAgICB1bnNpZ25lZCBpbnQgcG9ydF9pbmRleClcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg9MzkzPWludCBuc2ltX2Rydl9wb3J0X2FkZChzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM5NS1cdFx0ICAgICAgdTggcGVybV9hZGRyW0VUSF9BTEVOXSk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mzk2OmludCBuc2ltX2Rydl9wb3J0X2RlbChzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzk3LVx0XHQgICAgICBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTc3MQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDIwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBOZXRkZXZzaW0gRHJpdmVyIEZvY3VzIFN5bWJvbHMqKgoKT2theSwgc28gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYG5zaW1fZHJ2X3BvcnRfZGVsYCBpcyBpbmRlZWQgYW4gZXhwb3J0ZWQgc3ltYm9sLiBUaGF0JiMzOTtzIGdvb2QuCgpUaGVyZWZvcmUsIG15IGxpc3Qgb2YgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OyDigJMgdGhlIGtleSBmdW5jdGlvbnMgZHJpdmluZyBteSBhbmFseXNpcyBvZiB0aGUgYG5ldGRldnNpbWAgZHJpdmVyIOKAkyBuZWVkcyB0byBpbmNsdWRlOgoKKiAgIGBuc2ltX2NyZWF0ZWAKKiAgIGBuc2ltX2Rlc3Ryb3lgCiogICBgbnNpbV9kcnZfcG9ydF9hZGRgCiogICBgbnNpbV9kcnZfcG9ydF9kZWxgCiogICBgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRgCiogICBgbmV0aWZfcXVldWVfc2V0X25hcGlgCgpOb3csIGxldCBtZSBqdXN0IGNvbmZpcm0gdGhlIHN1aXRhYmlsaXR5IG9mIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgYW5kIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGAuIEJvdGggYXJlIGNsZWFybHkgQVBJIGZ1bmN0aW9uczsgc28gdGhleSYjMzk7cmUgZ29vZCBjYW5kaWRhdGVzIGZvciB0aGUgYW5hbHlzaXMuCgpGaW5hbGx5LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBjb25maWd1cmF0aW9ucy4gQWxyaWdodCwgYSBxdWljayBjaGVjayB0ZWxscyBtZSB0aGF0IGBORVRERVZTSU1gIGlzIGluZGVlZCB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIGZvciB0aGUgYG5ldGRldnNpbWAgZHJpdmVyLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQuIExldCBtZSBqdXN0IHNjYW4gYWdhaW4gZm9yIGFueSBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVERFVlNJTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTYwMj1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWctNjAzLVxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDQ6Y29uZmlnIE5FVERFVlNJTVxuZHJpdmVycy9uZXQvS2NvbmZpZy02MDUtXHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAzNDQKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRlcGVuZGVuY3kgRGVlcCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgTkVUREVWU0lNYC4gQmVmb3JlIEkgZ2V0IGludG8gYW55dGhpbmcgc3BlY2lmaWMsIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIG1hcCBvdXQgdGhlIGRlcGVuZGVuY3kgZ3JhcGguIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyB0aGluZyBsZWFucyBvbi4gV2hhdCBhcmUgdGhlIGNvcmUgbGlicmFyaWVzLCB0aGUgc3VwcG9ydGluZyBtb2R1bGVzLCB0aGUgZXh0ZXJuYWwgQVBJcyBpdCYjMzk7cyBjYWxsaW5nPyBXaGF0IHZlcnNpb25zIGFyZSBzcGVjaWZpZWQsIGFuZCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRob3NlIHZlcnNpb24gY29uc3RyYWludHM/IEEgY29tcHJlaGVuc2l2ZSBkZXBlbmRlbmN5IGNoZWNrIGlzIGNydWNpYWwgaGVyZS4gQXJlIHRoZXJlIGFueSBrbm93biB2dWxuZXJhYmlsaXRpZXMgaW4gYW55IG9mIHRoZSBpbW1lZGlhdGUgb3IgdHJhbnNpdGl2ZSBkZXBlbmRlbmNpZXM/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyB0aGF0IG1pZ2h0IGFyaXNlIGRvd24gdGhlIGxpbmUgd2l0aCBvdGhlciBjb21wb25lbnRzIGluIHRoZSBzeXN0ZW0sIG9yIHdpdGggcGxhbm5lZCBmdXR1cmUgaW50ZWdyYXRpb24gd29yaz8gVGhpcyBpc24mIzM5O3QganVzdCBhYm91dCBlbnN1cmluZyB0aGUgY29kZSBjb21waWxlczsgaXQmIzM5O3MgYWJvdXQgYW50aWNpcGF0aW5nIHBvdGVudGlhbCBydW50aW1lIGlzc3VlcyBhbmQgZW5zdXJpbmcgbG9uZy10ZXJtIG1haW50YWluYWJpbGl0eSBhbmQgc2VjdXJpdHkuIExldCYjMzk7cyBzZWUgaG93IGRlZXAgdGhpcyByYWJiaXQgaG9sZSBnb2VzLiBJIHdhbnQgdG8gYnVpbGQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyBmb3VuZGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTY9bWVudWNvbmZpZyBORVRERVZJQ0VTXG5kcml2ZXJzL25ldC9LY29uZmlnLTctXHRkZWZhdWx0IHkgaWYgVU1MXG5kcml2ZXJzL25ldC9LY29uZmlnOjg6XHRkZXBlbmRzIG9uIE5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy05LVx0Ym9vbCBcJiMzNDtOZXR3b3JrIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00MT1jb25maWcgQk9ORElOR1xuZHJpdmVycy9uZXQvS2NvbmZpZy00Mi1cdHRyaXN0YXRlIFwmIzM0O0JvbmRpbmcgZHJpdmVyIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDM6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWc6NDQ6XHRkZXBlbmRzIG9uIFRMUyB8fCBUTFNfREVWSUNFPW5cbmRyaXZlcnMvbmV0L0tjb25maWctNDUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz03ND1jb25maWcgV0lSRUdVQVJEXG5kcml2ZXJzL25ldC9LY29uZmlnLTc1LVx0dHJpc3RhdGUgXCYjMzQ7V2lyZUd1YXJkIHNlY3VyZSBuZXR3b3JrIHR1bm5lbFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo3NjpcdGRlcGVuZHMgb24gTkVUIFx1MDAyNlx1MDAyNiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnLTc3LVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz05Mj1jb25maWcgV0lSRUdVQVJEX0RFQlVHXG5kcml2ZXJzL25ldC9LY29uZmlnLTkzLVx0Ym9vbCBcJiMzNDtEZWJ1Z2dpbmcgY2hlY2tzIGFuZCB2ZXJib3NlIG1lc3NhZ2VzXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjk0Olx0ZGVwZW5kcyBvbiBXSVJFR1VBUkRcbmRyaXZlcnMvbmV0L0tjb25maWctOTUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0xMDM9Y29uZmlnIE9WUE5cbmRyaXZlcnMvbmV0L0tjb25maWctMTA0LVx0dHJpc3RhdGUgXCYjMzQ7T3BlblZQTiBkYXRhIGNoYW5uZWwgb2ZmbG9hZFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoxMDU6XHRkZXBlbmRzIG9uIE5FVCBcdTAwMjZcdTAwMjYgSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMDYtXHRzZWxlY3QgRFNUX0NBQ0hFXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0xMzY9Y29uZmlnIE5FVF9GQ1xuZHJpdmVycy9uZXQvS2NvbmZpZy0xMzctXHRib29sIFwmIzM0O0ZpYnJlIENoYW5uZWwgZHJpdmVyIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6MTM4Olx0ZGVwZW5kcyBvbiBTQ1NJIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvbmV0L0tjb25maWctMTM5LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MTQ5PWNvbmZpZyBJRkJcbmRyaXZlcnMvbmV0L0tjb25maWctMTUwLVx0dHJpc3RhdGUgXCYjMzQ7SW50ZXJtZWRpYXRlIEZ1bmN0aW9uYWwgQmxvY2sgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoxNTE6XHRkZXBlbmRzIG9uIE5FVF9BQ1RfTUlSUkVEIHx8IE5GVF9GV0RfTkVUREVWXG5kcml2ZXJzL25ldC9LY29uZmlnLTE1Mi1cdHNlbGVjdCBORVRfUkVESVJFQ1Rcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTE3OT1jb25maWcgTUFDVlRBUFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xODAtXHR0cmlzdGF0ZSBcJiMzNDtNQUMtVkxBTiBiYXNlZCB0YXAgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjE4MTpcdGRlcGVuZHMgb24gTUFDVkxBTlxuZHJpdmVycy9uZXQvS2NvbmZpZzoxODI6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMTgzLVx0c2VsZWN0IFRBUFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MTkzPWNvbmZpZyBJUFZMQU5fTDNTXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5NDpcdGRlcGVuZHMgb24gTkVURklMVEVSXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5NTpcdGRlcGVuZHMgb24gSVBWTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnLTE5Ni1cdGRlZl9ib29sIHlcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTE5OT1jb25maWcgSVBWTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnLTIwMC1cdHRyaXN0YXRlIFwmIzM0O0lQLVZMQU4gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyMDE6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjAyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MjE2PWNvbmZpZyBJUFZUQVBcbmRyaXZlcnMvbmV0L0tjb25maWctMjE3LVx0dHJpc3RhdGUgXCYjMzQ7SVAtVkxBTiBiYXNlZCB0YXAgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjIxODpcdGRlcGVuZHMgb24gSVBWTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnOjIxOTpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMjAtXHRzZWxlY3QgVEFQXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yMzA9Y29uZmlnIFZYTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzMS1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgZVh0ZW5zaWJsZSBMb2NhbCBBcmVhIE5ldHdvcmsgKFZYTEFOKVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyMzI6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjMzLVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNDU9Y29uZmlnIEdFTkVWRVxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNDYtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIE5ldHdvcmsgVmlydHVhbGl6YXRpb24gRW5jYXBzdWxhdGlvblwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyNDc6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjQ4LVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNjA9Y29uZmlnIEJBUkVVRFBcbmRyaXZlcnMvbmV0L0tjb25maWctMjYxLVx0dHJpc3RhdGUgXCYjMzQ7QmFyZSBVRFAgRW5jYXBzdWxhdGlvblwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyNjI6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjYzLVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNzI9Y29uZmlnIEdUUFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzMtXHR0cmlzdGF0ZSBcJiMzNDtHUFJTIFR1bm5lbGluZyBQcm90b2NvbCBkYXRhcGF0aCAoR1RQLVUpXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjI3NDpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzUtXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTI4OT1jb25maWcgUEZDUFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yOTAtXHR0cmlzdGF0ZSBcJiMzNDtQYWNrZXQgRm9yd2FyZGluZyBDb250cm9sIFByb3RvY29sIChQRkNQKVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyOTE6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjkyLVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zMDI9Y29uZmlnIEFNVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDMtXHR0cmlzdGF0ZSBcJiMzNDtBdXRvbWF0aWMgTXVsdGljYXN0IFR1bm5lbGluZyAoQU1UKVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozMDQ6XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IElQX01VTFRJQ0FTVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDUtXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTMyNz1jb25maWcgTkVUQ09OU09MRVxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMjgtXHR0cmlzdGF0ZSBcJiMzNDtOZXR3b3JrIGNvbnNvbGUgbG9nZ2luZyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjMyOTpcdGRlcGVuZHMgb24gUFJJTlRLXG5kcml2ZXJzL25ldC9LY29uZmlnLTMzMC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTMzND1jb25maWcgTkVUQ09OU09MRV9EWU5BTUlDXG5kcml2ZXJzL25ldC9LY29uZmlnLTMzNS1cdGJvb2wgXCYjMzQ7RHluYW1pYyByZWNvbmZpZ3VyYXRpb24gb2YgbG9nZ2luZyB0YXJnZXRzXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjMzNjpcdGRlcGVuZHMgb24gTkVUQ09OU09MRSBcdTAwMjZcdTAwMjYgU1lTRlMgXHUwMDI2XHUwMDI2IENPTkZJR0ZTX0ZTIFx1MDAyNlx1MDAyNiBcXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMzctXHRcdFx0IShORVRDT05TT0xFPXkgXHUwMDI2XHUwMDI2IENPTkZJR0ZTX0ZTPW0pXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNDU9Y29uZmlnIE5FVENPTlNPTEVfRVhURU5ERURfTE9HXG5kcml2ZXJzL25ldC9LY29uZmlnLTM0Ni1cdGJvb2wgXCYjMzQ7U2V0IGtlcm5lbCBleHRlbmRlZCBtZXNzYWdlIGJ5IGRlZmF1bHRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6MzQ3Olx0ZGVwZW5kcyBvbiBORVRDT05TT0xFXG5kcml2ZXJzL25ldC9LY29uZmlnLTM0OC1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MzU1PWNvbmZpZyBORVRDT05TT0xFX1BSRVBFTkRfUkVMRUFTRVxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNTYtXHRib29sIFwmIzM0O1ByZXBlbmQga2VybmVsIHJlbGVhc2UgdmVyc2lvbiBpbiB0aGUgbWVzc2FnZSBieSBkZWZhdWx0XCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjM1NzpcdGRlcGVuZHMgb24gTkVUQ09OU09MRV9FWFRFTkRFRF9MT0dcbmRyaXZlcnMvbmV0L0tjb25maWctMzU4LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNzM9Y29uZmlnIE5UQl9ORVRERVZcbmRyaXZlcnMvbmV0L0tjb25maWctMzc0LVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBFdGhlcm5ldCBvdmVyIE5UQiBUcmFuc3BvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6Mzc1Olx0ZGVwZW5kcyBvbiBOVEJfVFJBTlNQT1JUXG5kcml2ZXJzL25ldC9LY29uZmlnLTM3Ni1cbmRyaXZlcnMvbmV0L0tjb25maWc9Mzc3PWNvbmZpZyBSSU9ORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMzc4LVx0dHJpc3RhdGUgXCYjMzQ7UmFwaWRJTyBFdGhlcm5ldCBvdmVyIG1lc3NhZ2luZyBkcml2ZXIgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozNzk6XHRkZXBlbmRzIG9uIFJBUElESU9cbmRyaXZlcnMvbmV0L0tjb25maWctMzgwLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zODE9Y29uZmlnIFJJT05FVF9UWF9TSVpFXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4Mi1cdGludCBcJiMzNDtOdW1iZXIgb2Ygb3V0Ym91bmQgcXVldWUgZW50cmllc1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozODM6XHRkZXBlbmRzIG9uIFJJT05FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zODQtXHRkZWZhdWx0IFwmIzM0OzEyOFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9Mzg2PWNvbmZpZyBSSU9ORVRfUlhfU0laRVxuZHJpdmVycy9uZXQvS2NvbmZpZy0zODctXHRpbnQgXCYjMzQ7TnVtYmVyIG9mIGluYm91bmQgcXVldWUgZW50cmllc1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozODg6XHRkZXBlbmRzIG9uIFJJT05FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zODktXHRkZWZhdWx0IFwmIzM0OzEyOFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MzkxPWNvbmZpZyBUVU5cbmRyaXZlcnMvbmV0L0tjb25maWctMzkyLVx0dHJpc3RhdGUgXCYjMzQ7VW5pdmVyc2FsIFRVTi9UQVAgZGV2aWNlIGRyaXZlciBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjM5MzpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zOTQtXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ0Mz1jb25maWcgVklSVElPX05FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDQtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0aW8gbmV0d29yayBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDQ1Olx0ZGVwZW5kcyBvbiBWSVJUSU9cbmRyaXZlcnMvbmV0L0tjb25maWctNDQ2LVx0c2VsZWN0IE5FVF9GQUlMT1ZFUlxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NDYzPWNvbmZpZyBORVRLSVRcbmRyaXZlcnMvbmV0L0tjb25maWctNDY0LVx0Ym9vbCBcJiMzNDtCUEYtcHJvZ3JhbW1hYmxlIG5ldHdvcmsgZGV2aWNlXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjQ2NTpcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcbmRyaXZlcnMvbmV0L0tjb25maWctNDY2LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NDcyPWNvbmZpZyBORVRfVlJGXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ3My1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgUm91dGluZyBhbmQgRm9yd2FyZGluZyAoTGl0ZSlcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc0Olx0ZGVwZW5kcyBvbiBJUF9NVUxUSVBMRV9UQUJMRVNcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc1Olx0ZGVwZW5kcyBvbiBORVRfTDNfTUFTVEVSX0RFVlxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NzY6XHRkZXBlbmRzIG9uIElQVjZfTVVMVElQTEVfVEFCTEVTIHx8IElQVjY9blxuZHJpdmVycy9uZXQvS2NvbmZpZy00NzctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00ODE9Y29uZmlnIFZTT0NLTU9OXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ4Mi1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgdnNvY2sgbW9uaXRvcmluZyBkZXZpY2VcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDgzOlx0ZGVwZW5kcyBvbiBWSE9TVF9WU09DS1xuZHJpdmVycy9uZXQvS2NvbmZpZy00ODQtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00ODk9Y29uZmlnIE1ISV9ORVRcbmRyaXZlcnMvbmV0L0tjb25maWctNDkwLVx0dHJpc3RhdGUgXCYjMzQ7TUhJIG5ldHdvcmsgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjQ5MTpcdGRlcGVuZHMgb24gTUhJX0JVU1xuZHJpdmVycy9uZXQvS2NvbmZpZy00OTItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz01NDQ9Y29uZmlnIFhFTl9ORVRERVZfRlJPTlRFTkRcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ1LVx0dHJpc3RhdGUgXCYjMzQ7WGVuIG5ldHdvcmsgZGV2aWNlIGZyb250ZW5kIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo1NDY6XHRkZXBlbmRzIG9uIFhFTlxuZHJpdmVycy9uZXQvS2NvbmZpZy01NDctXHRzZWxlY3QgWEVOX1hFTkJVU19GUk9OVEVORFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NTYyPWNvbmZpZyBYRU5fTkVUREVWX0JBQ0tFTkRcbmRyaXZlcnMvbmV0L0tjb25maWctNTYzLVx0dHJpc3RhdGUgXCYjMzQ7WGVuIGJhY2tlbmQgbmV0d29yayBkZXZpY2VcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NTY0Olx0ZGVwZW5kcyBvbiBYRU5fQkFDS0VORFxuZHJpdmVycy9uZXQvS2NvbmZpZy01NjUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz01ODQ9Y29uZmlnIFZNWE5FVDNcbmRyaXZlcnMvbmV0L0tjb25maWctNTg1LVx0dHJpc3RhdGUgXCYjMzQ7Vk13YXJlIFZNWE5FVDMgZXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjU4NjpcdGRlcGVuZHMgb24gUENJIFx1MDAyNlx1MDAyNiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnOjU4NzpcdGRlcGVuZHMgb24gUEFHRV9TSVpFX0xFU1NfVEhBTl82NEtCXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4OC1cdHNlbGVjdCBQQUdFX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTU5ND1jb25maWcgRlVKSVRTVV9FU1xuZHJpdmVycy9uZXQvS2NvbmZpZy01OTUtXHR0cmlzdGF0ZSBcJiMzNDtGVUpJVFNVIEV4dGVuZGVkIFNvY2tldCBOZXR3b3JrIERldmljZSBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NTk2Olx0ZGVwZW5kcyBvbiBBQ1BJXG5kcml2ZXJzL25ldC9LY29uZmlnLTU5Ny1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTYwND1jb25maWcgTkVUREVWU0lNXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwNS1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCBuZXR3b3JraW5nIGRldmljZVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDY6XHRkZXBlbmRzIG9uIERFQlVHX0ZTXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwNzpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDg6XHRkZXBlbmRzIG9uIFBTQU1QTEUgfHwgUFNBTVBMRT1uXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwOTpcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfTU9DSyB8fCBQVFBfMTU4OF9DTE9DS19NT0NLPW5cbmRyaXZlcnMvbmV0L0tjb25maWctNjEwLVx0c2VsZWN0IE5FVF9ERVZMSU5LXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNTkyCgkJCQkJCQlvdXRwdXQ6IDIxNAoJCQkJCQkJdGhvdWdodHM6IDMwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBOZXRkZXZzaW0gUGF0Y2gqKgoKT2theSwgc28gSSBzZWUgdGhpcyBgTkVUREVWU0lNYCBtb2R1bGUgaXMgdGhlIGNvcmUgb2YgdGhpcyBzaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2UgZHJpdmVyLiBJdCBsb29rcyBsaWtlIGl0IHJlbGllcyBvbiBhIGZldyBvdGhlciBjb21wb25lbnRzOiBgREVCVUdfRlNgLCBgSU5FVGAsIGFuZCB0aGVuIG9wdGlvbmFsbHkgYFBTQU1QTEVgIGFuZCBgUFRQXzE1ODhfQ0xPQ0tfTU9DS2AuIFJpZ2h0LCBgTkVUREVWU0lNYCAqaXMqIHRoZSBrZXkgY29uZmlnIG9wdGlvbiBoZXJlLgoKTGV0IG1lIGp1c3QgY29uZmlybeKApiBZZXAsIGxvb2tzIGxpa2UgZW5hYmxpbmcgYE5FVERFVlNJTWAgaXMgdGhlIHNpbmdsZSBwb2ludCBvZiBlbnRyeSB0byB1c2UgdGhlIGVtdWxhdGVkIGRldmljZS4KCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4KCiogICAqKkZ1enppbmcgUG90ZW50aWFsOioqIFRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgSSB3YW50IHRvIGZ1enouIEJhc2VkIG9uIHRoZSBjaGFuZ2VzLCB0aGlzIGlzIGdvaW5nIHRvIGJlIGhpZ2ggdmFsdWUuCiogICAqKktleSBTeW1ib2xzIHRvIFRhcmdldDoqKiBJJiMzOTttIGdvaW5nIHRvIHdhbnQgdG8gZm9jdXMgaW4gb246IGBuc2ltX2NyZWF0ZWAsIGBuc2ltX2Rlc3Ryb3lgLCBgbnNpbV9kcnZfcG9ydF9hZGRgLCBgbnNpbV9kcnZfcG9ydF9kZWxgLCBgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRgLCBhbmQgYG5ldGlmX3F1ZXVlX3NldF9uYXBpYC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgcmVzcG9uc2libGUgZm9yIGRldmljZSBjcmVhdGlvbi9kZXN0cnVjdGlvbiwgcG9ydCBtYW5hZ2VtZW50LCBxdWV1ZSByZXN0YXJ0LCBhbmQgTkFQSSBhc3NvY2lhdGlvbi4gVGhleSBhcmUgY3JpdGljYWwgZW50cnkgcG9pbnRzIHRvIGNvdmVyIHRoZSBOQVBJIGNoYW5nZXMuCiogICAqKkNvbmZpZ3VyYXRpb246KiogVGhlIHBhdGNoIHJlcXVpcmVzIGBORVRERVZTSU1gLgoqICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIG1vZGlmaWVzIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fZGVsX25hcGlgIHRvIG1hbmFnZSBOQVBJIGluc3RhbmNlcyB3aXRoIFJYIHF1ZXVlcyB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGlgLiBUaGlzIGBuZXRkZXZzaW1gIGRyaXZlciBpcyBzb2Z0d2FyZS1lbXVsYXRlZCwgb2Z0ZW4gdXNlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEl0IGFmZmVjdHMgcXVldWUgbWFuYWdlbWVudCBhbmQgdGhlIE5BUEkgbGlmZWN5Y2xlLiBJdCBsb29rcyBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQsIHdoaWNoIG1ha2VzIGl0IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFRoZSBrZXkgZnVuY3Rpb25zIEkgbWVudGlvbmVkIGFib3ZlIGFyZSB0aGUgbW9zdCBpbXBvcnRhbnQgZnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUuIEkgc2hvdWxkIGdldCBhIGxvdCBvZiBjb2RlIGNvdmVyYWdlIG91dCBvZiB0aGVzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25zaW1fY3JlYXRlJiMzNDssCiAgICAmIzM0O25zaW1fZGVzdHJveSYjMzQ7LAogICAgJiMzNDtuc2ltX2Rydl9wb3J0X2FkZCYjMzQ7LAogICAgJiMzNDtuc2ltX2Rydl9wb3J0X2RlbCYjMzQ7LAogICAgJiMzNDtuZXRkZXZfcnhfcXVldWVfcmVzdGFydCYjMzQ7LAogICAgJiMzNDtuZXRpZl9xdWV1ZV9zZXRfbmFwaSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX2RlbF9uYXBpYCBpbiB0aGUgbmV0ZGV2c2ltIGRyaXZlciB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIGluc3RhbmNlcyB3aXRoIFJYIHF1ZXVlcyB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGlgLiBOZXRkZXZzaW0gaXMgYSBzb2Z0d2FyZS1lbXVsYXRlZCBuZXR3b3JrIGRldmljZSB1c2VkIGZvciB0ZXN0aW5nIGFuZCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgY2hhbmdlcyBhZmZlY3QgcXVldWUgbWFuYWdlbWVudCBhbmQgTkFQSSBsaWZlY3ljbGUsIHdoaWNoIGFyZSBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgYW5kIHdvcnRoIGZ1enppbmcuIEZvY3VzIHN5bWJvbHMgaW5jbHVkZSB0aGUgbmV0ZGV2c2ltIGNyZWF0aW9uL2Rlc3RydWN0aW9uIGFuZCBwb3J0IG1hbmFnZW1lbnQgZnVuY3Rpb25zLCBhcyB3ZWxsIGFzIHRoZSBxdWV1ZSByZXN0YXJ0IGFuZCBOQVBJIGFzc29jaWF0aW9uIEFQSSBmdW5jdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25zaW1fY3JlYXRlJiMzNDssCiAgICAmIzM0O25zaW1fZGVzdHJveSYjMzQ7LAogICAgJiMzNDtuc2ltX2Rydl9wb3J0X2FkZCYjMzQ7LAogICAgJiMzNDtuc2ltX2Rydl9wb3J0X2RlbCYjMzQ7LAogICAgJiMzNDtuZXRkZXZfcnhfcXVldWVfcmVzdGFydCYjMzQ7LAogICAgJiMzNDtuZXRpZl9xdWV1ZV9zZXRfbmFwaSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX2RlbF9uYXBpYCBpbiB0aGUgbmV0ZGV2c2ltIGRyaXZlciB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIGluc3RhbmNlcyB3aXRoIFJYIHF1ZXVlcyB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGlgLiBOZXRkZXZzaW0gaXMgYSBzb2Z0d2FyZS1lbXVsYXRlZCBuZXR3b3JrIGRldmljZSB1c2VkIGZvciB0ZXN0aW5nIGFuZCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgY2hhbmdlcyBhZmZlY3QgcXVldWUgbWFuYWdlbWVudCBhbmQgTkFQSSBsaWZlY3ljbGUsIHdoaWNoIGFyZSBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgYW5kIHdvcnRoIGZ1enppbmcuIEZvY3VzIHN5bWJvbHMgaW5jbHVkZSB0aGUgbmV0ZGV2c2ltIGNyZWF0aW9uL2Rlc3RydWN0aW9uIGFuZCBwb3J0IG1hbmFnZW1lbnQgZnVuY3Rpb25zLCBhcyB3ZWxsIGFzIHRoZSBxdWV1ZSByZXN0YXJ0IGFuZCBOQVBJIGFzc29jaWF0aW9uIEFQSSBmdW5jdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGRldnNpbSBkcml2ZXIgdG8gY29ycmVjdGx5IGFzc29jaWF0ZSBhbmQgZGlzYXNzb2NpYXRlIE5BUEkgaW5zdGFuY2VzIHdpdGggUlggcXVldWVzIHVzaW5nIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaSgpYC4gVGhlc2UgY2hhbmdlcyBvbmx5IGludm9sdmUgc2V0dGluZyBhIHBvaW50ZXIgaW4gdGhlIHF1ZXVlIHN0cnVjdHVyZSB0byB0cmFjayB0aGUgTkFQSSBjb250ZXh0LiBUaGVyZSBhcmUgbm8gbW9kaWZpY2F0aW9ucyB0byBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBubyBuZXcgYWxsb2NhdGlvbnMgb2YgY29tcGxleCBzdHJ1Y3R1cmVzLCBhbmQgbm8gY2hhbmdlcyB0byBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgb3IgYm91bmRzIGNoZWNrcy4gVGhlIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgbm9uLWV4aXN0ZW50LiBBbnkgcG90ZW50aWFsIGlzc3VlcyBhcmlzaW5nIGZyb20gdGhlc2UgY2hhbmdlcywgc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBudWxsLXBvaW50ZXIgZGVyZWZlcmVuY2VzLCB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjFlMmIzYzM0YmQzNWQ0NmQyMWQ3YWZiNTZmMjU4NzUzNWY2YzNkNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDE3IDA5OjAxOjA1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jIGIvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jCmluZGV4IDRlOWQ3ZTEwYjUyN2UuLmI0YTk5ZjNjZWFjNjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMKQEAgLTUyOSw2ICYjNDM7NTI5LDcgQEAgc3RhdGljIHZvaWQgbnNpbV9kZWxfbmFwaShzdHJ1Y3QgbmV0ZGV2c2ltICpucykKIAlmb3IgKGkgPSAwOyBpICZsdDsgZGV2LSZndDtudW1fcnhfcXVldWVzOyBpJiM0MzsmIzQzOykgewogCQlzdHJ1Y3QgbnNpbV9ycSAqcnEgPSBucy0mZ3Q7cnFbaV07CiAKJiM0MzsJCW5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpOwogCQluYXBpX2Rpc2FibGVfbG9ja2VkKCZhbXA7cnEtJmd0O25hcGkpOwogCQlfX25ldGlmX25hcGlfZGVsX2xvY2tlZCgmYW1wO3JxLSZndDtuYXBpKTsKIAl9CkBAIC04MjYsNiAmIzQzOzgyNyw3IEBAIG5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsCiAJfQogCiAJbnMtJmd0O3JxW2lkeF0gPSBxbWVtLSZndDtycTsKJiM0MzsJbmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCAmYW1wO25zLSZndDtycVtpZHhdLSZndDtuYXBpKTsKIAluYXBpX2VuYWJsZV9sb2NrZWQoJmFtcDtucy0mZ3Q7cnFbaWR4XS0mZ3Q7bmFwaSk7CiAKIAlyZXR1cm4gMDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNDQKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE5BUEkgUXVldWUgQXNzb2NpYXRpb24gQ2hhbmdlcyoqCgpPa2F5LCBzbyB0aGUgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY2AsIHNwZWNpZmljYWxseSBhcm91bmQgTkFQSSBxdWV1ZSBtYW5hZ2VtZW50LiBJIHNlZSB0aGV5JiMzOTtyZSBhZGRpbmcgYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCBjYWxscyDigJMgb25lIGluIGBuc2ltX2RlbF9uYXBpYCBhbmQgYW5vdGhlciBpbiBgbnNpbV9xdWV1ZV9zdGFydGAuIFRoZSBmaXJzdCBvbmUgc2V0cyB0aGUgTkFQSSBjb250ZXh0IHRvIE5VTEwgYW5kIHRoZSBzZWNvbmQgc2V0cyBpdCB0byB0aGUgYWRkcmVzcyBvZiB0aGUgbmFwaSBzdHJ1Y3R1cmUuIEltbWVkaWF0ZWx5LCBteSBjb25jZXJuIGlzIHdoZXRoZXIgdGhlc2UgY2hhbmdlcyBjb3VsZCBpbnRyb2R1Y2Ugc29tZSBzdWJ0bGUgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiBUaGF0JiMzOTtzIGFsd2F5cyBhIHBvc3NpYmlsaXR5IHdpdGggcG9pbnRlciBtYW5pcHVsYXRpb24sIGJ1dCBsZXQmIzM5O3MgZGlnIGRlZXBlci4KClJpZ2h0LCBgbmV0aWZfcXVldWVfc2V0X25hcGlgIGl0c2VsZiwgZnJvbSBteSB1bmRlcnN0YW5kaW5nLCBpcyBqdXN0IHNldHRpbmcgYSBwb2ludGVyIHdpdGhpbiB0aGUgcXVldWUgc3RydWN0dXJlLiBUaGF04oCZcyBub3QgYSBLTVNBTiBraW5kIG9mIHRoaW5nOyBLTVNBTiByZWFsbHkgbmFpbHMgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNlLiBXaGF0IEkmIzM5O20gdGhpbmtpbmcgaGVyZSBhcmUgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcywgb3IgbWF5YmUgYSBudWxsLXBvaW50ZXIgZGVyZWZlcmVuY2UsIG9yIHBlcmhhcHMgYSBsb2dpYyBidWcgd2hlcmUgYSBxdWV1ZSBnZXRzIHNldCB1cCB3cm9uZy4gSWYgaXQgd2VyZSBhIFVBRiBvciBPT0IsIEtBU0FOIHdvdWxkIHByb2JhYmx5IGNhdGNoIHRoYXQuIEdpdmVuIHRoaXMsIEkgZG9uJiMzOTt0IHNlZSBhbnkgaW1tZWRpYXRlIHJlZCBmbGFncyBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIEJ1dCwgeW91IGtub3csIGl0JiMzOTtzIGFsd2F5cyBnb29kIHRvIGRvdWJsZSBjaGVjay4KCkxldCBtZSBqdXN0IHF1aWNrbHkgdmVyaWZ5IHRoZSBkZWZpbml0aW9uIG9mIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSYjMzk7bGwgZ3JlcCBmb3IgaXQgaW4gdGhlIHNvdXJjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV0aWZfcXVldWVfc2V0X25hcGkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmM9MTgwNj1zdGF0aWMgdm9pZCBlbmFfbmFwaV9kaXNhYmxlX2luX3JhbmdlKHN0cnVjdCBlbmFfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODE2LVx0XHRcdC8qIFRoaXMgQVBJIGlzIHN1cHBvcnRlZCBmb3Igbm9uLVhEUCBxdWV1ZXMgb25seSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmM6MTgxNzpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVx1MDAzZW5ldGRldiwgaSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jLTE4MTgtXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmM6MTgxOTpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVx1MDAzZW5ldGRldiwgaSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jLTE4MjAtXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jPTE4MjY9c3RhdGljIHZvaWQgZW5hX25hcGlfZW5hYmxlX2luX3JhbmdlKHN0cnVjdCBlbmFfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODM3LVx0XHRcdC8qIFRoaXMgQVBJIGlzIHN1cHBvcnRlZCBmb3Igbm9uLVhEUCBxdWV1ZXMgb25seSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmM6MTgzODpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVx1MDAzZW5ldGRldiwgaSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jLTE4MzktXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIG5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmM6MTg0MDpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVx1MDAzZW5ldGRldiwgaSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jLTE4NDEtXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIG5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYz0xNjU5PXN0YXRpYyB2b2lkIGJuZ2VfaW5pdF9vbmVfcnhfcmluZ19wYWlyKHN0cnVjdCBibmdlX25ldCAqYm4sIGludCByaW5nX25yKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0xNjY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jOjE2NjY6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShibi1cdTAwM2VuZXRkZXYsIHJpbmdfbnIsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTE2NjctXHRcdFx0ICAgICBcdTAwMjZyeHItXHUwMDNlYm5hcGktXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jPTE3MDE9c3RhdGljIHZvaWQgYm5nZV9pbml0X3R4X3JpbmdzKHN0cnVjdCBibmdlX25ldCAqYm4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTE3MTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmM6MTcxMzpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYm4tXHUwMDNlbmV0ZGV2LCBpLCBORVRERVZfUVVFVUVfVFlQRV9UWCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0xNzE0LVx0XHRcdFx0ICAgICBcdTAwMjZ0eHItXHUwMDNlYm5hcGktXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jPTI3MjU9c3RhdGljIHZvaWQgYm5nZV9kZWxfbmFwaShzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0yNzMwLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYmQtXHUwMDNlcnhfbnJfcmluZ3M7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jOjI3MzE6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJuLVx1MDAzZW5ldGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTI3MzItXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBiZC1cdTAwM2V0eF9ucl9yaW5nczsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmM6MjczMzpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYm4tXHUwMDNlbmV0ZGV2LCBpLCBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMjczNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz00NjI4PXN0YXRpYyBpbnQgYm54dF9pbml0X29uZV9yeF9yaW5nKHN0cnVjdCBibnh0ICpicCwgaW50IHJpbmdfbnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNDYzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjQ2MzU6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShicC1cdTAwM2VkZXYsIHJpbmdfbnIsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNDYzNi1cdFx0XHQgICAgIFx1MDAyNnJ4ci1cdTAwM2VibmFwaS1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz00NjkzPXN0YXRpYyBpbnQgYm54dF9pbml0X3R4X3JpbmdzKHN0cnVjdCBibnh0ICpicClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy00NzA5LVx0XHRpZiAoaSBcdTAwM2U9IGJwLVx1MDAzZXR4X25yX3JpbmdzX3hkcClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjQ3MTA6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYnAtXHUwMDNlZGV2LCBpIC0gYnAtXHUwMDNldHhfbnJfcmluZ3NfeGRwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNDcxMS1cdFx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz0xMTk4MD1zdGF0aWMgdm9pZCBibnh0X2RlbF9uYXBpKHN0cnVjdCBibnh0ICpicClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xMTk4Ny1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJwLVx1MDAzZXJ4X25yX3JpbmdzOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjExOTg4Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShicC1cdTAwM2VkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTExOTg5LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYnAtXHUwMDNldHhfbnJfcmluZ3MgLSBicC1cdTAwM2V0eF9ucl9yaW5nc194ZHA7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTE5OTA6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJwLVx1MDAzZWRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTE5OTEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM9NzM5ND1zdGF0aWMgdm9pZCB0ZzNfbmFwaV9kaXNhYmxlKHN0cnVjdCB0ZzMgKnRwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MDMtXHRcdGlmICh0bmFwaS1cdTAwM2V0eF9idWZmZXJzKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzo3NDA0Olx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVx1MDAzZWRldiwgdHhxX2lkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MDUtXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MDgtXHRcdGlmICh0bmFwaS1cdTAwM2VyeF9yY2IpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjc0MDk6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkodHAtXHUwMDNlZGV2LCByeHFfaWR4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtNzQxMC1cdFx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM9NzQxNz1zdGF0aWMgdm9pZCB0ZzNfbmFwaV9lbmFibGUoc3RydWN0IHRnMyAqdHApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtNzQyNi1cdFx0aWYgKHRuYXBpLVx1MDAzZXR4X2J1ZmZlcnMpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjc0Mjc6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkodHAtXHUwMDNlZGV2LCB0eHFfaWR4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtNzQyOC1cdFx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy03NDMyLVx0XHRpZiAodG5hcGktXHUwMDNlcnhfcmNiKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzo3NDMzOlx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVx1MDAzZWRldiwgcnhxX2lkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MzQtXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jPTE5NzQ9c3RhdGljIHZvaWQgdHNuZXBfcXVldWVfZW5hYmxlKHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTE5ODItXHRpZiAocXVldWUtXHUwMDNldHgpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYzoxOTgzOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVx1MDAzZW5ldGRldiwgcXVldWUtXHUwMDNldHgtXHUwMDNlcXVldWVfaW5kZXgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMTk4NC1cdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFx1MDAyNnF1ZXVlLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTg4LVx0aWYgKHF1ZXVlLVx1MDAzZXJ4KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MTk4OTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsIHF1ZXVlLVx1MDAzZXJ4LVx1MDAzZXF1ZXVlX2luZGV4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTE5OTAtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcdTAwMjZxdWV1ZS1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM9MTk5NT1zdGF0aWMgdm9pZCB0c25lcF9xdWV1ZV9kaXNhYmxlKHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTE5OTktXHRpZiAocXVldWUtXHUwMDNlcngpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MjAwMDpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsIHF1ZXVlLVx1MDAzZXJ4LVx1MDAzZXF1ZXVlX2luZGV4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTIwMDEtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjAwNC1cdFx0dHNuZXBfdHhfZGlzYWJsZShxdWV1ZS1cdTAwM2V0eCwgXHUwMDI2cXVldWUtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MjAwNTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsIHF1ZXVlLVx1MDAzZXR4LVx1MDAzZXF1ZXVlX2luZGV4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTIwMDYtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM9MTkyND1zdGF0aWMgdm9pZCBndmVfdHVybmRvd24oc3RydWN0IGd2ZV9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xOTQyLVx0XHRpZiAoaWR4IFx1MDAzYyBwcml2LVx1MDAzZXR4X2NmZy5udW1fcXVldWVzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjE5NDM6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkocHJpdi1cdTAwM2VkZXYsIGlkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xOTQ0LVx0XHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk1NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxOTU1Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShwcml2LVx1MDAzZWRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xOTU2LVx0XHRcdFx0ICAgICBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM9MTk3Mj1zdGF0aWMgdm9pZCBndmVfdHVybnVwKHN0cnVjdCBndmVfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk4OS1cdFx0aWYgKGlkeCBcdTAwM2MgcHJpdi1cdTAwM2V0eF9jZmcubnVtX3F1ZXVlcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxOTkwOlx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHByaXYtXHUwMDNlZGV2LCBpZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk5MS1cdFx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMjAxNS1cdFx0bmFwaV9lbmFibGVfbG9ja2VkKFx1MDAyNmJsb2NrLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjIwMTY6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHByaXYtXHUwMDNlZGV2LCBpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTIwMTctXHRcdFx0XHQgICAgIFx1MDAyNmJsb2NrLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jPTE5OD1pbnQgaGluaWMzX3Fwc19pcnFfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTIzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjIzNDpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cdTAwM2VuZXRkZXYsIHFfaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yMzUtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcdTAwMjZpcnFfY2ZnLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmM6MjM2Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShpcnFfY2ZnLVx1MDAzZW5ldGRldiwgcV9pZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTIzNy1cdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFx1MDAyNmlycV9jZmctXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjUyLVx0XHRxcF9kZWxfbmFwaShpcnFfY2ZnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjI1MzpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cdTAwM2VuZXRkZXYsIHFfaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yNTQtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjI1NTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cdTAwM2VuZXRkZXYsIHFfaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yNTYtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYz0yNzA9dm9pZCBoaW5pYzNfcXBzX2lycV91bmluaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yNzgtXHRcdHFwX2RlbF9uYXBpKGlycV9jZmcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmM6Mjc5Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShpcnFfY2ZnLVx1MDAzZW5ldGRldiwgcV9pZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTI4MC1cdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmM6MjgxOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShpcnFfY2ZnLVx1MDAzZW5ldGRldiwgcV9pZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTI4Mi1cdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYz00ODE9dm9pZCBlMTAwMF9kb3duKHN0cnVjdCBlMTAwMF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy01MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM6NTExOlx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM6NTEyOlx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtNTEzLVx0bmFwaV9kaXNhYmxlKFx1MDAyNmFkYXB0ZXItXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jPTEzNTI9aW50IGUxMDAwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtMTM5Ny1cdG5hcGlfZW5hYmxlKFx1MDAyNmFkYXB0ZXItXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM6MTM5ODpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFx1MDAyNmFkYXB0ZXItXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM6MTM5OTpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFx1MDAyNmFkYXB0ZXItXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtMTQwMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM9NDYzNj1pbnQgZTEwMDBlX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmMtNDcxMi1cdG5hcGlfZW5hYmxlKFx1MDAyNmFkYXB0ZXItXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM6NDcxMzpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFx1MDAyNmFkYXB0ZXItXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM6NDcxNDpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFx1MDAyNmFkYXB0ZXItXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmMtNDcxNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM9NDc1Mj1pbnQgZTEwMDBlX2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTQ3NzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM6NDc3MzpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjQ3NzQ6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYy00Nzc1LVx0bmFwaV9kaXNhYmxlKFx1MDAyNmFkYXB0ZXItXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYz0yNzgzPXZvaWQgaWNlX3ZzaV9zZXRfbmFwaV9xdWV1ZXMoc3RydWN0IGljZV92c2kgKnZzaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI3OTMtXHRcdGlmICh2c2ktXHUwMDNlcnhfcmluZ3NbcV9pZHhdIFx1MDAyNlx1MDAyNiB2c2ktXHUwMDNlcnhfcmluZ3NbcV9pZHhdLVx1MDAzZXFfdmVjdG9yKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYzoyNzk0Olx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgcV9pZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yNzk1LVx0XHRcdFx0XHQgICAgIFx1MDAyNnZzaS1cdTAwM2VyeF9yaW5nc1txX2lkeF0tXHUwMDNlcV92ZWN0b3ItXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yNzk4LVx0XHRpZiAodnNpLVx1MDAzZXR4X3JpbmdzW3FfaWR4XSBcdTAwMjZcdTAwMjYgdnNpLVx1MDAzZXR4X3JpbmdzW3FfaWR4XS1cdTAwM2VxX3ZlY3RvcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6Mjc5OTpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIHFfaWR4LCBORVRERVZfUVVFVUVfVFlQRV9UWCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjgwMC1cdFx0XHRcdFx0ICAgICBcdTAwMjZ2c2ktXHUwMDNldHhfcmluZ3NbcV9pZHhdLVx1MDAzZXFfdmVjdG9yLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM9MjgxNT12b2lkIGljZV92c2lfY2xlYXJfbmFwaV9xdWV1ZXMoc3RydWN0IGljZV92c2kgKnZzaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI4MzEtXHRpY2VfZm9yX2VhY2hfdHhxKHZzaSwgcV9pZHgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jOjI4MzI6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgcV9pZHgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjgzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjgzNC1cdGljZV9mb3JfZWFjaF9yeHEodnNpLCBxX2lkeClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6MjgzNTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCBxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yODM2LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jPTM4Mzg9c3RhdGljIHZvaWQgaWRwZl9xX3ZlY3Rvcl9zZXRfbmFwaShzdHJ1Y3QgaWRwZl9xX3ZlY3RvciAqcV92ZWN0b3IsIGJvb2wgbGluaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jLTM4NDMtXHRmb3IgKHUzMiBpID0gMDsgaSBcdTAwM2MgcV92ZWN0b3ItXHUwMDNlbnVtX3J4cTsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jOjM4NDQ6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgcV92ZWN0b3ItXHUwMDNlcnhbaV0tXHUwMDNlaWR4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYy0zODQ1LVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYy0zODQ3LVx0Zm9yICh1MzIgaSA9IDA7IGkgXHUwMDNjIHFfdmVjdG9yLVx1MDAzZW51bV90eHE7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYzozODQ4Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIHFfdmVjdG9yLVx1MDAzZXR4W2ldLVx1MDAzZWlkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMtMzg0OS1cdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIG5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jPTIxMDI9dm9pZCBpZ2Jfc2V0X3F1ZXVlX25hcGkoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLCBpbnQgdmVjdG9yLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTIxMDctXHRpZiAocV92ZWN0b3ItXHUwMDNlcngucmluZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jOjIxMDg6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXHUwMDNlbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMjEwOS1cdFx0XHRcdCAgICAgcV92ZWN0b3ItXHUwMDNlcngucmluZy1cdTAwM2VxdWV1ZV9pbmRleCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0yMTEyLVx0aWYgKHFfdmVjdG9yLVx1MDAzZXR4LnJpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzoyMTEzOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVx1MDAzZW5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTIxMTQtXHRcdFx0XHQgICAgIHFfdmVjdG9yLVx1MDAzZXR4LnJpbmctXHUwMDNlcXVldWVfaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9NTA5Mj1zdGF0aWMgdm9pZCBpZ2Nfc2V0X3F1ZXVlX25hcGkoc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyLCBpbnQgdmVjdG9yLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTUwOTctXHRpZiAocV92ZWN0b3ItXHUwMDNlcngucmluZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjUwOTg6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXHUwMDNlbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtNTA5OS1cdFx0XHRcdCAgICAgcV92ZWN0b3ItXHUwMDNlcngucmluZy1cdTAwM2VxdWV1ZV9pbmRleCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy01MTAyLVx0aWYgKHFfdmVjdG9yLVx1MDAzZXR4LnJpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzo1MTAzOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVx1MDAzZW5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTUxMDQtXHRcdFx0XHQgICAgIHFfdmVjdG9yLVx1MDAzZXR4LnJpbmctXHUwMDNlcXVldWVfaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jPTg5PWludCBtbHg0X2VuX2FjdGl2YXRlX2NxKHN0cnVjdCBtbHg0X2VuX3ByaXYgKnByaXYsIHN0cnVjdCBtbHg0X2VuX2NxICpjcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmMtMTU0LVx0XHRuYXBpX2VuYWJsZShcdTAwMjZjcS1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYzoxNTU6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGNxLVx1MDAzZWRldiwgY3FfaWR4LCBORVRERVZfUVVFVUVfVFlQRV9UWCwgXHUwMDI2Y3EtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmMtMTU2LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmMtMTYyLVx0XHRuYXBpX2VuYWJsZShcdTAwMjZjcS1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYzoxNjM6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGNxLVx1MDAzZWRldiwgY3FfaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgXHUwMDI2Y3EtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmMtMTY0LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmM9MTk2PXZvaWQgbWx4NF9lbl9kZWFjdGl2YXRlX2NxKHN0cnVjdCBtbHg0X2VuX3ByaXYgKnByaXYsIHN0cnVjdCBtbHg0X2VuX2NxICpjcSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmMtMjA1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jOjIwNjpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoY3EtXHUwMDNlZGV2LCBjcS1cdTAwM2VjcV9pZHgsIHF0eXBlLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYy0yMDctXHRcdG5hcGlfZGlzYWJsZShcdTAwMjZjcS1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmM9OTM5PXZvaWQgbWx4NWVfcHRwX2FjdGl2YXRlX2NoYW5uZWwoc3RydWN0IG1seDVlX3B0cCAqYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmMtOTUxLVx0XHRtbHg1ZV9hY3RpdmF0ZV9ycShcdTAwMjZjLVx1MDAzZXJxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYzo5NTI6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGMtXHUwMDNlbmV0ZGV2LCBjLVx1MDAzZXJxLml4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgXHUwMDI2Yy1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYy05NTMtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jPTk1Nz12b2lkIG1seDVlX3B0cF9kZWFjdGl2YXRlX2NoYW5uZWwoc3RydWN0IG1seDVlX3B0cCAqYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmMtOTYxLVx0aWYgKHRlc3RfYml0KE1MWDVFX1BUUF9TVEFURV9SWCwgYy1cdTAwM2VzdGF0ZSkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYzo5NjI6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGMtXHUwMDNlbmV0ZGV2LCBjLVx1MDAzZXJxLml4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmMtOTYzLVx0XHRtbHg1ZV9kZWFjdGl2YXRlX3JxKFx1MDAyNmMtXHUwMDNlcnEpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9MTkzOT12b2lkIG1seDVlX2FjdGl2YXRlX3R4cXNxKHN0cnVjdCBtbHg1ZV90eHFzcSAqc3EpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xOTQ2LVx0bmV0aWZfdHhfc3RhcnRfcXVldWUoc3EtXHUwMDNldHhxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6MTk0NzpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHNxLVx1MDAzZW5ldGRldiwgc3EtXHUwMDNldHhxX2l4LCBORVRERVZfUVVFVUVfVFlQRV9UWCwgc3EtXHUwMDNlY3EubmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTE5NDgtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9MTk1Nz12b2lkIG1seDVlX2RlYWN0aXZhdGVfdHhxc3Eoc3RydWN0IG1seDVlX3R4cXNxICpzcSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTE5NjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjE5NjE6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShzcS1cdTAwM2VuZXRkZXYsIHNxLVx1MDAzZXR4cV9peCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xOTYyLVx0Y2xlYXJfYml0KE1MWDVFX1NRX1NUQVRFX0VOQUJMRUQsIFx1MDAyNnNxLVx1MDAzZXN0YXRlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTI5MTk9c3RhdGljIHZvaWQgbWx4NWVfYWN0aXZhdGVfY2hhbm5lbChzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTI5MzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjI5MzY6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShjLVx1MDAzZW5ldGRldiwgYy1cdTAwM2VpeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFx1MDAyNmMtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTI5MzctfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9MjkzOT1zdGF0aWMgdm9pZCBtbHg1ZV9kZWFjdGl2YXRlX2NoYW5uZWwoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0yOTQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoyOTQzOlx0bmV0aWZfcXVldWVfc2V0X25hcGkoYy1cdTAwM2VuZXRkZXYsIGMtXHUwMDNlaXgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMjk0NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYz0yMTE1PXN0YXRpYyB2b2lkIGZibmljX3NldF9uZXRpZl9uYXBpKHN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciAqbnYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjEyMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjIxMjM6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG52LVx1MDAzZW5hcGkuZGV2LCBxdC1cdTAwM2VzdWIwLnFfaWR4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjEyNC1cdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFx1MDAyNm52LVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxMzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYzoyMTMxOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShudi1cdTAwM2VuYXBpLmRldiwgcXQtXHUwMDNlY21wbC5xX2lkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxMzItXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcdTAwMjZudi1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYz0yMTM2PXN0YXRpYyB2b2lkIGZibmljX3Jlc2V0X25ldGlmX25hcGkoc3RydWN0IGZibmljX25hcGlfdmVjdG9yICpudilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTQzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM6MjE0NDpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkobnYtXHUwMDNlbmFwaS5kZXYsIHF0LVx1MDAzZXN1YjAucV9pZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTQ1LVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjE1MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjIxNTI6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG52LVx1MDAzZW5hcGkuZGV2LCBxdC1cdTAwM2VjbXBsLnFfaWR4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjE1My1cdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jPTMyMT1zdGF0aWMgdm9pZCBydGFzZV90eF9kZXNjX2luaXQoc3RydWN0IHJ0YXNlX3ByaXZhdGUgKnRwLCB1MTYgaWR4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTM1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jOjM1MzpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVx1MDAzZWRldiwgcmluZy1cdTAwM2VpbmRleCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTM1NC1cdFx0XHQgICAgIHJpbmctXHUwMDNldHlwZSwgXHUwMDI2cmluZy1cdTAwM2VpdmVjLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jPTU5MD1zdGF0aWMgdm9pZCBydGFzZV9yeF9kZXNjX2luaXQoc3RydWN0IHJ0YXNlX3ByaXZhdGUgKnRwLCB1MTYgaWR4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTYwNy1cdHJpbmctXHUwMDNlaXZlYyA9IFx1MDAyNnRwLVx1MDAzZWludF92ZWN0b3JbaWR4XTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jOjYwODpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVx1MDAzZWRldiwgcmluZy1cdTAwM2VpbmRleCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTYwOS1cdFx0XHQgICAgIHJpbmctXHUwMDNldHlwZSwgXHUwMDI2cmluZy1cdTAwM2VpdmVjLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jPTExNjY9c3RhdGljIHZvaWQgcnRhc2VfZG93bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTExNzctXHRcdFx0XHRcdCByaW5nX2VudHJ5KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYzoxMTc4Olx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVx1MDAzZWRldiwgcmluZy1cdTAwM2VpbmRleCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTExNzktXHRcdFx0XHRcdCAgICAgcmluZy1cdTAwM2V0eXBlLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYz0xNzE3PXN0YXRpYyB2b2lkIHJ0YXNlX3N3X3Jlc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmMtMTczNy1cdFx0XHRcdFx0IHJpbmdfZW50cnkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jOjE3Mzg6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkodHAtXHUwMDNlZGV2LCByaW5nLVx1MDAzZWluZGV4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmMtMTczOS1cdFx0XHRcdFx0ICAgICByaW5nLVx1MDAzZXR5cGUsIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYz02OTA9dm9pZCBuZXR2c2NfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UpXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcxNi1cdFx0aWYgKGkgXHUwMDNjIG5kZXYtXHUwMDNlcmVhbF9udW1fcnhfcXVldWVzKSB7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NzE3Olx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcxOC1cdFx0XHRcdFx0ICAgICBOVUxMKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo3MTk6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzIwLVx0XHRcdFx0XHQgICAgIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYz0xNzcyPXN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXR2c2NfZGV2aWNlX2FkZChzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE4MjUtXHRuYXBpX2VuYWJsZShcdTAwMjZuZXRfZGV2aWNlLVx1MDAzZWNoYW5fdGFibGVbMF0ubmFwaSk7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTgyNjpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE4MjctXHRcdFx0ICAgICBcdTAwMjZuZXRfZGV2aWNlLVx1MDAzZWNoYW5fdGFibGVbMF0ubmFwaSk7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTgyODpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE4MjktXHRcdFx0ICAgICBcdTAwMjZuZXRfZGV2aWNlLVx1MDAzZWNoYW5fdGFibGVbMF0ubmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE4NzAtY2xlYW51cDpcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxODcxOlx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE4NzI6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTg3My1cdG5hcGlfZGlzYWJsZShcdTAwMjZuZXRfZGV2aWNlLVx1MDAzZWNoYW5fdGFibGVbMF0ubmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jPTEyMjM9c3RhdGljIHZvaWQgbmV0dnNjX3NjX29wZW4oc3RydWN0IHZtYnVzX2NoYW5uZWwgKm5ld19zYylcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmMtMTI1OS1cdG5hcGlfZW5hYmxlKFx1MDAyNm52Y2hhbi1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYzoxMjYwOlx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgY2huX2luZGV4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYy0xMjYxLVx0XHRcdCAgICAgXHUwMDI2bnZjaGFuLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jOjEyNjI6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCBjaG5faW5kZXgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jLTEyNjMtXHRcdFx0ICAgICBcdTAwMjZudmNoYW4tXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jLTEyNjktXHRcdG5ldGRldl9ub3RpY2UobmRldiwgXCYjMzQ7c3ViIGNoYW5uZWwgb3BlbiBmYWlsZWQ6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jOjEyNzA6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIGNobl9pbmRleCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmMtMTI3MS1cdFx0XHRcdCAgICAgTlVMTCk7XG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmM6MTI3MjpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgY2huX2luZGV4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYy0xMjczLVx0XHRcdFx0ICAgICBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9NDg4PXN0YXRpYyB2b2lkIG5zaW1fZW5hYmxlX25hcGkoc3RydWN0IG5ldGRldnNpbSAqbnMpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQ5NS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo0OTY6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFx1MDAyNnJxLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQ5Ny1cdFx0bmFwaV9lbmFibGVfbG9ja2VkKFx1MDAyNnJxLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz01MjQ9c3RhdGljIHZvaWQgbnNpbV9kZWxfbmFwaShzdHJ1Y3QgbmV0ZGV2c2ltICpucylcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNTMxLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjUzMjpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpLCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNTMzLVx0XHRuYXBpX2Rpc2FibGVfbG9ja2VkKFx1MDAyNnJxLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04MDI9bnNpbV9xdWV1ZV9zdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX2NvbmZpZyAqcWNmZyxcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODI5LVx0bnMtXHUwMDNlcnFbaWR4XSA9IHFtZW0tXHUwMDNlcnE7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6ODMwOlx0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTgzMS1cdG5hcGlfZW5hYmxlX2xvY2tlZChcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0yODE1PXN0YXRpYyB2b2lkIHZpcnRuZXRfbmFwaV9lbmFibGUoc3RydWN0IHJlY2VpdmVfcXVldWUgKnJxKVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yODIwLVx0dmlydG5ldF9uYXBpX2RvX2VuYWJsZShycS1cdTAwM2V2cSwgXHUwMDI2cnEtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6MjgyMTpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVx1MDAzZWRldiwgcWlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFx1MDAyNnJxLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4MjItfVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0yODI0PXN0YXRpYyB2b2lkIHZpcnRuZXRfbmFwaV90eF9lbmFibGUoc3RydWN0IHNlbmRfcXVldWUgKnNxKVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yODQxLVx0dmlydG5ldF9uYXBpX2RvX2VuYWJsZShzcS1cdTAwM2V2cSwgbmFwaSk7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mjg0MjpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVx1MDAzZWRldiwgcWlkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIG5hcGkpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NDMtfVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0yODQ1PXN0YXRpYyB2b2lkIHZpcnRuZXRfbmFwaV90eF9kaXNhYmxlKHN0cnVjdCBzZW5kX3F1ZXVlICpzcSlcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjg1MS1cdGlmIChuYXBpLVx1MDAzZXdlaWdodCkge1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjI4NTI6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVx1MDAzZWRldiwgcWlkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NTMtXHRcdG5hcGlfZGlzYWJsZShuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9Mjg1Nz1zdGF0aWMgdm9pZCB2aXJ0bmV0X25hcGlfZGlzYWJsZShzdHJ1Y3QgcmVjZWl2ZV9xdWV1ZSAqcnEpXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NjItXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mjg2MzpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVx1MDAzZWRldiwgcWlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NjQtXHRuYXBpX2Rpc2FibGUobmFwaSk7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0yODI3PXN0YXRpYyBpbmxpbmUgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldl9mcm9tX3ByaXYoY29uc3Qgdm9pZCAqcHJpdilcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI4NDItXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjI4NDM6dm9pZCBuZXRpZl9xdWV1ZV9zZXRfbmFwaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcXVldWVfaW5kZXgsXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI4NDQtXHRcdFx0ICBlbnVtIG5ldGRldl9xdWV1ZV90eXBlIHR5cGUsXG4tLVxubmV0L2NvcmUvZGV2LmM9NzI4OT1FWFBPUlRfU1lNQk9MKG5ldGlmX3RocmVhZGVkX2VuYWJsZSk7XG4tLVxubmV0L2NvcmUvZGV2LmMtNzI5MS0vKipcbm5ldC9jb3JlL2Rldi5jOjcyOTI6ICogbmV0aWZfcXVldWVfc2V0X25hcGkgLSBBc3NvY2lhdGUgcXVldWUgd2l0aCB0aGUgbmFwaVxubmV0L2NvcmUvZGV2LmMtNzI5My0gKiBAZGV2OiBkZXZpY2UgdG8gd2hpY2ggTkFQSSBhbmQgcXVldWUgYmVsb25nXG4tLVxubmV0L2NvcmUvZGV2LmMtNzMwMS0gKi9cbm5ldC9jb3JlL2Rldi5jOjczMDI6dm9pZCBuZXRpZl9xdWV1ZV9zZXRfbmFwaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcXVldWVfaW5kZXgsXG5uZXQvY29yZS9kZXYuYy03MzAzLVx0XHRcdCAgZW51bSBuZXRkZXZfcXVldWVfdHlwZSB0eXBlLCBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGkpXG4tLVxubmV0L2NvcmUvZGV2LmMtNzMyNC19XG5uZXQvY29yZS9kZXYuYzo3MzI1OkVYUE9SVF9TWU1CT0wobmV0aWZfcXVldWVfc2V0X25hcGkpO1xubmV0L2NvcmUvZGV2LmMtNzMyNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ2MTAKCQkJCQkJCW91dHB1dDogMTYzCgkJCQkJCQl0aG91Z2h0czogMjI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBuZXRkZXZzaW1gIE5BUEkgQXNzb2NpYXRpb24gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBzdHJhaWdodGZvcndhcmQuIEl0JiMzOTtzIHJlYWxseSBqdXN0IGFib3V0IGNvcnJlY3RseSBsaW5raW5nIGFuZCB1bmxpbmtpbmcgTkFQSSBpbnN0YW5jZXMgdG8gUlggcXVldWVzIHdpdGhpbiB0aGUgYG5ldGRldnNpbWAgZHJpdmVyLiBUaGUgY29kZSBpcyB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGkoKWAgd2hpY2gsIGZyb20gbXkgdW5kZXJzdGFuZGluZywgc2ltcGx5IHNldHMgYSBwb2ludGVyIHdpdGhpbiB0aGUgcXVldWUgc3RydWN0dXJlLiBJdCYjMzk7cyBhIGNsZWFuIHBvaW50ZXIgYXNzaWdubWVudDsgdGhhdCYjMzk7cyBhbGwgaXQgZG9lcy4KClRoZXJlJiMzOTtzIG5vIGNvbXBsZXggbWVtb3J5IG1hbmlwdWxhdGlvbiBoYXBwZW5pbmcgaGVyZS4gSSYjMzk7bSBzZWVpbmcgbm8gYWxsb2NhdGlvbnMgb2YgYW55IG5ldyBzaWduaWZpY2FudCBkYXRhIHN0cnVjdHVyZXMsIG5vIGNhbGN1bGF0aW9ucyBiZWluZyBjaGFuZ2VkIHRoYXQgd291bGQgYWZmZWN0IGRhdGEgbGVuZ3RocyBvciBib3VuZCBjaGVja3MsIGFuZCBkZWZpbml0ZWx5IG5vIGV4cG9zdXJlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGF0JiMzOTtzIGEgaHVnZSByZWxpZWYuIFRoZSByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGVmZmVjdGl2ZWx5IG5vbmV4aXN0ZW50IHdpdGggdGhlc2UgcGFydGljdWxhciBjaGFuZ2VzLgoKRXZlbiBpZiB0aGVyZSB3ZXJlIHNvbWUgb2JzY3VyZSBlZGdlIGNhc2UgLSBzb21ldGhpbmcgbGlrZSBhIHVzZS1hZnRlci1mcmVlIG9yIGEgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIC0gdGhhdCBjb3VsZCBzbGlwIHRocm91Z2gsIEtBU0FOIHdvdWxkIGJlIHRoZSBwZXJmZWN0IHRvb2wgdG8gY2F0Y2ggaXQuIENvbnNpZGVyaW5nIHRoYXQsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBzZWVtcyB1bm5lY2Vzc2FyeSBoZXJlLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgc2ltcGxlIHBvaW50ZXIgYXNzaWdubWVudCBhbmQgYmFzaWMgbGlua2luZywgc28gS0FTQU4gaXMgc3VmZmljaWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGRldnNpbSBkcml2ZXIgdG8gY29ycmVjdGx5IGFzc29jaWF0ZSBhbmQgZGlzYXNzb2NpYXRlIE5BUEkgaW5zdGFuY2VzIHdpdGggUlggcXVldWVzIHVzaW5nIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaSgpYC4gVGhlc2UgY2hhbmdlcyBvbmx5IGludm9sdmUgc2V0dGluZyBhIHBvaW50ZXIgaW4gdGhlIHF1ZXVlIHN0cnVjdHVyZSB0byB0cmFjayB0aGUgTkFQSSBjb250ZXh0LiBUaGVyZSBhcmUgbm8gbW9kaWZpY2F0aW9ucyB0byBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBubyBuZXcgYWxsb2NhdGlvbnMgb2YgY29tcGxleCBzdHJ1Y3R1cmVzLCBhbmQgbm8gY2hhbmdlcyB0byBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgb3IgYm91bmRzIGNoZWNrcy4gVGhlIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgbm9uLWV4aXN0ZW50LiBBbnkgcG90ZW50aWFsIGlzc3VlcyBhcmlzaW5nIGZyb20gdGhlc2UgY2hhbmdlcywgc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBudWxsLXBvaW50ZXIgZGVyZWZlcmVuY2VzLCB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRkZXZzaW0gZHJpdmVyIHRvIGNvcnJlY3RseSBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIGluc3RhbmNlcyB3aXRoIFJYIHF1ZXVlcyB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGkoKWAuIFRoZXNlIGNoYW5nZXMgb25seSBpbnZvbHZlIHNldHRpbmcgYSBwb2ludGVyIGluIHRoZSBxdWV1ZSBzdHJ1Y3R1cmUgdG8gdHJhY2sgdGhlIE5BUEkgY29udGV4dC4gVGhlcmUgYXJlIG5vIG1vZGlmaWNhdGlvbnMgdG8gZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm8gbmV3IGFsbG9jYXRpb25zIG9mIGNvbXBsZXggc3RydWN0dXJlcywgYW5kIG5vIGNoYW5nZXMgdG8gZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIG9yIGJvdW5kcyBjaGVja3MuIFRoZSByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIG5vbi1leGlzdGVudC4gQW55IHBvdGVudGlhbCBpc3N1ZXMgYXJpc2luZyBmcm9tIHRoZXNlIGNoYW5nZXMsIHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgbnVsbC1wb2ludGVyIGRlcmVmZXJlbmNlcywgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAxOjA2LjAyNzg2MjM3M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODkyMjMxNjA5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRERVZTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuc2ltX2NyZWF0ZVwiLFxuICAgIFwibnNpbV9kZXN0cm95XCIsXG4gICAgXCJuc2ltX2Rydl9wb3J0X2FkZFwiLFxuICAgIFwibnNpbV9kcnZfcG9ydF9kZWxcIixcbiAgICBcIm5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0XCIsXG4gICAgXCJuZXRpZl9xdWV1ZV9zZXRfbmFwaVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGRldnNpbSBkcml2ZXIgdG8gY29ycmVjdGx5IGFzc29jaWF0ZSBhbmQgZGlzYXNzb2NpYXRlIE5BUEkgaW5zdGFuY2VzIHdpdGggUlggcXVldWVzIHVzaW5nIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaSgpYC4gVGhlc2UgY2hhbmdlcyBvbmx5IGludm9sdmUgc2V0dGluZyBhIHBvaW50ZXIgaW4gdGhlIHF1ZXVlIHN0cnVjdHVyZSB0byB0cmFjayB0aGUgTkFQSSBjb250ZXh0LiBUaGVyZSBhcmUgbm8gbW9kaWZpY2F0aW9ucyB0byBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBubyBuZXcgYWxsb2NhdGlvbnMgb2YgY29tcGxleCBzdHJ1Y3R1cmVzLCBhbmQgbm8gY2hhbmdlcyB0byBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgb3IgYm91bmRzIGNoZWNrcy4gVGhlIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgbm9uLWV4aXN0ZW50LiBBbnkgcG90ZW50aWFsIGlzc3VlcyBhcmlzaW5nIGZyb20gdGhlc2UgY2hhbmdlcywgc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBudWxsLXBvaW50ZXIgZGVyZWZlcmVuY2VzLCB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX2RlbF9uYXBpYCBpbiB0aGUgbmV0ZGV2c2ltIGRyaXZlciB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIGluc3RhbmNlcyB3aXRoIFJYIHF1ZXVlcyB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGlgLiBOZXRkZXZzaW0gaXMgYSBzb2Z0d2FyZS1lbXVsYXRlZCBuZXR3b3JrIGRldmljZSB1c2VkIGZvciB0ZXN0aW5nIGFuZCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgY2hhbmdlcyBhZmZlY3QgcXVldWUgbWFuYWdlbWVudCBhbmQgTkFQSSBsaWZlY3ljbGUsIHdoaWNoIGFyZSBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgYW5kIHdvcnRoIGZ1enppbmcuIEZvY3VzIHN5bWJvbHMgaW5jbHVkZSB0aGUgbmV0ZGV2c2ltIGNyZWF0aW9uL2Rlc3RydWN0aW9uIGFuZCBwb3J0IG1hbmFnZW1lbnQgZnVuY3Rpb25zLCBhcyB3ZWxsIGFzIHRoZSBxdWV1ZSByZXN0YXJ0IGFuZCBOQVBJIGFzc29jaWF0aW9uIEFQSSBmdW5jdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAxOjA2LjAyNzg2ODQ0M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIzMDYyMTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjFlMmIzYzM0YmQzNWQ0NmQyMWQ3YWZiNTZmMjU4NzUzNWY2YzNkNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAxNyAwOTowMTowNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcXG5pbmRleCA0ZTlkN2UxMGI1MjdlLi5iNGE5OWYzY2VhYzYwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1xcbisrKyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1xcbkBAIC01MjksNiArNTI5LDcgQEAgc3RhdGljIHZvaWQgbnNpbV9kZWxfbmFwaShzdHJ1Y3QgbmV0ZGV2c2ltICpucylcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGRldi1cXHUwMDNlbnVtX3J4X3F1ZXVlczsgaSsrKSB7XFxuIFxcdFxcdHN0cnVjdCBuc2ltX3JxICpycSA9IG5zLVxcdTAwM2VycVtpXTtcXG4gXFxuK1xcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xcbiBcXHRcXHRuYXBpX2Rpc2FibGVfbG9ja2VkKFxcdTAwMjZycS1cXHUwMDNlbmFwaSk7XFxuIFxcdFxcdF9fbmV0aWZfbmFwaV9kZWxfbG9ja2VkKFxcdTAwMjZycS1cXHUwMDNlbmFwaSk7XFxuIFxcdH1cXG5AQCAtODI2LDYgKzgyNyw3IEBAIG5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsXFxuIFxcdH1cXG4gXFxuIFxcdG5zLVxcdTAwM2VycVtpZHhdID0gcW1lbS1cXHUwMDNlcnE7XFxuK1xcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgXFx1MDAyNm5zLVxcdTAwM2VycVtpZHhdLVxcdTAwM2VuYXBpKTtcXG4gXFx0bmFwaV9lbmFibGVfbG9ja2VkKFxcdTAwMjZucy1cXHUwMDNlcnFbaWR4XS1cXHUwMDNlbmFwaSk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDE6MDYuNTUxOTk4NDE3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTM0NjYzNDc5MDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVERFVlNJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5zaW1fY3JlYXRlXCIsXG4gICAgXCJuc2ltX2Rlc3Ryb3lcIixcbiAgICBcIm5zaW1fZHJ2X3BvcnRfYWRkXCIsXG4gICAgXCJuc2ltX2Rydl9wb3J0X2RlbFwiLFxuICAgIFwibmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRcIixcbiAgICBcIm5ldGlmX3F1ZXVlX3NldF9uYXBpXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9kZWxfbmFwaWAgaW4gdGhlIG5ldGRldnNpbSBkcml2ZXIgdG8gYXNzb2NpYXRlIGFuZCBkaXNhc3NvY2lhdGUgTkFQSSBpbnN0YW5jZXMgd2l0aCBSWCBxdWV1ZXMgdXNpbmcgYG5ldGlmX3F1ZXVlX3NldF9uYXBpYC4gTmV0ZGV2c2ltIGlzIGEgc29mdHdhcmUtZW11bGF0ZWQgbmV0d29yayBkZXZpY2UgdXNlZCBmb3IgdGVzdGluZyBhbmQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIGNoYW5nZXMgYWZmZWN0IHF1ZXVlIG1hbmFnZW1lbnQgYW5kIE5BUEkgbGlmZWN5Y2xlLCB3aGljaCBhcmUgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50IGFuZCB3b3J0aCBmdXp6aW5nLiBGb2N1cyBzeW1ib2xzIGluY2x1ZGUgdGhlIG5ldGRldnNpbSBjcmVhdGlvbi9kZXN0cnVjdGlvbiBhbmQgcG9ydCBtYW5hZ2VtZW50IGZ1bmN0aW9ucywgYXMgd2VsbCBhcyB0aGUgcXVldWUgcmVzdGFydCBhbmQgTkFQSSBhc3NvY2lhdGlvbiBBUEkgZnVuY3Rpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyMWUyYjNjMzRiZDM1ZDQ2ZDIxZDdhZmI1NmYyNTg3NTM1ZjZjM2Q2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTcgMDk6MDE6MDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcbmluZGV4IDRlOWQ3ZTEwYjUyN2UuLmI0YTk5ZjNjZWFjNjAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcbisrKyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1xuQEAgLTUyOSw2ICs1MjksNyBAQCBzdGF0aWMgdm9pZCBuc2ltX2RlbF9uYXBpKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZGV2LVx1MDAzZW51bV9yeF9xdWV1ZXM7IGkrKykge1xuIFx0XHRzdHJ1Y3QgbnNpbV9ycSAqcnEgPSBucy1cdTAwM2VycVtpXTtcbiBcbitcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpLCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG4gXHRcdG5hcGlfZGlzYWJsZV9sb2NrZWQoXHUwMDI2cnEtXHUwMDNlbmFwaSk7XG4gXHRcdF9fbmV0aWZfbmFwaV9kZWxfbG9ja2VkKFx1MDAyNnJxLVx1MDAzZW5hcGkpO1xuIFx0fVxuQEAgLTgyNiw2ICs4MjcsNyBAQCBuc2ltX3F1ZXVlX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfcXVldWVfY29uZmlnICpxY2ZnLFxuIFx0fVxuIFxuIFx0bnMtXHUwMDNlcnFbaWR4XSA9IHFtZW0tXHUwMDNlcnE7XG4rXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFx1MDAyNm5zLVx1MDAzZXJxW2lkeF0tXHUwMDNlbmFwaSk7XG4gXHRuYXBpX2VuYWJsZV9sb2NrZWQoXHUwMDI2bnMtXHUwMDNlcnFbaWR4XS1cdTAwM2VuYXBpKTtcbiBcbiBcdHJldHVybiAwO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDE6MDYuNTUyMDAxMzY3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA5NDg1OTA2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldGRldnNpbSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNgLiBJdCdzIGdvdCB0aGVzZSBuZXcgY2FsbHMgdG8gYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCBpbiBgbnNpbV9kZWxfbmFwaWAgYW5kIGBuc2ltX3F1ZXVlX3N0YXJ0YC4gUmlnaHQgYXdheSwgbXkgcmFkYXIgZ29lcyB1cC4gTmV0ZGV2c2ltIGlzIHRoYXQgc29mdHdhcmUtZW11bGF0ZWQgbmV0d29yayBkZXZpY2Ug4oCTIHBlcmZlY3QgZm9yIGZ1enppbmchIEl0J3MgcHJhY3RpY2FsbHkgKmRlc2lnbmVkKiB0byBiZSBwcm9iZWQuIFdlIGhhdmUgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgZnV6emluZyB0aGlzIHBhdGNoLlxuXG5TbywgbGV0J3MgZHJpbGwgZG93biBpbnRvIHRob3NlIHR3byBmdW5jdGlvbnM6IGBuc2ltX2RlbF9uYXBpYCBhbmQgYG5zaW1fcXVldWVfc3RhcnRgLiBgbnNpbV9xdWV1ZV9zdGFydGAgc2VlbXMgbGlrZSBpdCdzIGEgcXVldWUgc3RhcnQgY2FsbGJhY2suIFllYWgsIHRoYXQgbWFrZXMgc2Vuc2UuIEl0J3MgbGlrZWx5IGludm9sdmVkIHdpdGggdGhlIG5ldGRldiBxdWV1ZSBBUEksIHNvIGl0IGlzIHByb2JhYmx5IGNhbGxlZCB3aGVuIGEgcXVldWUgaXMgc3RhcnRlZC4gQW5kIGBuc2ltX2RlbF9uYXBpYCBsb29rcyBsaWtlIGEgY2xlYW51cCBmdW5jdGlvbi5cblxuSSBuZWVkIHRvIHNlZSBob3cgdGhlc2UgdGhpbmdzIGFyZSB1c2VkLiBUaW1lIHRvIGNoZWNrIHZpc2liaWxpdHkuIEkgbmVlZCB0byBncmVwIGZvciBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX2RlbF9uYXBpYCB0byBzZWUgaWYgdGhleSdyZSBzdGF0aWMgb3IgZXhwb3J0ZWQuIEFoLCBgbnNpbV9kZWxfbmFwaWAgaXMgc3RhdGljLiBPSy4gQW5kIGBuc2ltX3F1ZXVlX3N0YXJ0YCBpcy4uLiBhbHNvIHN0YXRpYz8gR290dGEgZG91YmxlLWNoZWNrIHRoYXQuIEkgbmVlZCB0byBtYWtlIHN1cmUgaG93IGFjY2Vzc2libGUgdGhlc2UgZnVuY3Rpb25zIGFyZSB0byBzZWUgd2hlcmUgdGhleSBhcmUgY2FsbGVkIGZyb20uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNDcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMToxMS42NDY4NzExMjRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI3NTE2ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnNpbV9xdWV1ZV9zdGFydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTgwMT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjgwMjpuc2ltX3F1ZXVlX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfcXVldWVfY29uZmlnICpxY2ZnLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04MDMtXFx0XFx0IHZvaWQgKnBlcl9xdWV1ZV9tZW0sIGludCBpZHgpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9ODU1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIG5zaW1fcXVldWVfbWdtdF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODU4LVxcdC5uZG9fcXVldWVfbWVtX2ZyZWVcXHQ9IG5zaW1fcXVldWVfbWVtX2ZyZWUsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjg1OTpcXHQubmRvX3F1ZXVlX3N0YXJ0XFx0PSBuc2ltX3F1ZXVlX3N0YXJ0LFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NjAtXFx0Lm5kb19xdWV1ZV9zdG9wXFx0XFx0PSBuc2ltX3F1ZXVlX3N0b3AsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAxOjExLjcxOTYyOTQzMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyOTc3Nzc3NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFN0YXRpYyBGdW5jdGlvbnMgYW5kIFRoZWlyIFVzYWdlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgdHdvIGZ1bmN0aW9ucywgYW5kIHRoZXkncmUgYm90aCBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgc2NvcGU7IHRoZXkncmUgb25seSB2aXNpYmxlIHdpdGhpbiB0aGVpciBjb21waWxhdGlvbiB1bml0LCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncyBpbiBzb21lIHdheXMsIGJ1dCBhbHNvIG1lYW5zIEkgbmVlZCB0byBkaWcgYSBsaXR0bGUgZGVlcGVyIHRvIHVuZGVyc3RhbmQgdGhlaXIgcm9sZSBpbiB0aGUgYmlnZ2VyIHBpY3R1cmUuIE15IG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IGhvdyB0aGV5J3JlICp1c2VkKi4gU2luY2UgdGhleSdyZSBzdGF0aWMsIEknbSBleHBlY3Rpbmcgb3RoZXIgZnVuY3Rpb25zIHdpdGhpbiB0aGUgc2FtZSBmaWxlIHRvIGJlIGNhbGxpbmcgdGhlbSBvciBhdCBsZWFzdCB1c2luZyB0aGVpciBvdXRwdXQuIExldCdzIGZpbmQgdGhvc2Ugbm9uLXN0YXRpYyBmdW5jdGlvbnMgYW5kIHNlZSB3aGVyZSB0aGVzZSBzdGF0aWMgb25lcyBmaXQgaW4uXG5cbkFoLCBgbnNpbV9xdWV1ZV9tZ210X29wc2AgYXBwZWFycyB0byBiZSB1c2VkIGJ5IGBuc2ltX2NyZWF0ZWAuIFRpbWUgdG8gY2hlY2sgYG5zaW1fY3JlYXRlYCBhbmQgc2VlIHdoYXQncyBnb2luZyBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAxNCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAxOjE1LjAxNzQwOTEzMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDc2OTA3MDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnNpbV9jcmVhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz00MDU9c3RhdGljIGludCBuc2ltX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQxNi1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6NDE3OnN0YXRpYyBpbnQgbnNpbV9jcmVhdGVfcGFnZV9wb29sKHN0cnVjdCBwYWdlX3Bvb2wgKipwLCBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGkpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQxOC17XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9NDM4PXN0YXRpYyBpbnQgbnNpbV9pbml0X25hcGkoc3RydWN0IG5ldGRldnNpbSAqbnMpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNDUyLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo0NTM6XFx0XFx0ZXJyID0gbnNpbV9jcmVhdGVfcGFnZV9wb29sKFxcdTAwMjZycS1cXHUwMDNlcGFnZV9wb29sLCBcXHUwMDI2cnEtXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy00NTQtXFx0XFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz03NTE9bnNpbV9xdWV1ZV9tZW1fYWxsb2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy03NjQtXFx0XFx0XFx0cmV0dXJuIC1FTkVURE9XTjtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6NzY1OlxcdFxcdHJldHVybiBuc2ltX2NyZWF0ZV9wYWdlX3Bvb2woXFx1MDAyNnFtZW0tXFx1MDAzZXBwLCBcXHUwMDI2bnMtXFx1MDAzZXJxW2lkeF0tXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy03NjYtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTc3MS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6NzcyOlxcdGVyciA9IG5zaW1fY3JlYXRlX3BhZ2VfcG9vbChcXHUwMDI2cW1lbS1cXHUwMDNlcnEtXFx1MDAzZXBhZ2VfcG9vbCwgXFx1MDAyNnFtZW0tXFx1MDAzZXJxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNzczLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9MTEyMj1zdGF0aWMgdm9pZCBuc2ltX2V4aXRfbmV0ZGV2c2ltKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTExMjctXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjExMjg6c3RydWN0IG5ldGRldnNpbSAqbnNpbV9jcmVhdGUoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldixcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtMTEyOS1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgbnNpbV9kZXZfcG9ydCAqbnNpbV9kZXZfcG9ydCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDE6MTUuMjI1MTA0MTA2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyMzE0NzYyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBTY29wZSBJc3N1ZSoqXG5cbk9rYXksIHNvIGBuc2ltX2NyZWF0ZWAgaXMgZWl0aGVyIGRlY2xhcmVkIHdpdGggZXh0ZXJuYWwgbGlua2FnZSAoZXhwb3J0ZWQpIG9yIGl0J3Mgbm90IGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYnJvYWRseSBpdCdzIGJlaW5nIHVzZWQuIElmIGl0J3MgYmVpbmcgYWNjZXNzZWQgb3V0c2lkZSB0aGUgaW50ZW5kZWQgc2NvcGUsIHRoYXQncyBhIHByb2JsZW0uIExldCdzIHNlZS4uLiB0aGUgbW9zdCBkaXJlY3Qgcm91dGUgaXMgdG8gdHJhY2Ugd2hlcmUgaXQncyBiZWluZyBjYWxsZWQuIEkgbmVlZCB0byBnZXQgYSBsaXN0IG9mIHJlZmVyZW5jZXMgdG8gYG5zaW1fY3JlYXRlYC4gVGltZSB0byBmaXJlIHVwIHRoZSBkZWJ1Z2dlciAob3IgdXNlIG15IGNvZGUgc2VhcmNoIHRvb2xzLCBkZXBlbmRpbmcgb24gdGhlIGVudmlyb25tZW50KSBhbmQgZ2V0IHRvIHdvcmsuIEnigJlsbCBzdGFydCBieSB0cmFja2luZyBkb3duIGFsbCBjYWxsIHNpdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODg0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDE6MTguMzQ4MjU0MzcyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3NTE3NzY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5zaW1fY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTE0NTU9c3RhdGljIGludCBfX25zaW1fZGV2X3BvcnRfYWRkKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsIGVudW0gbnNpbV9kZXZfcG9ydF90eXBlIHR5cGUsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTUwOC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTUwOTpcXHRuc2ltX2Rldl9wb3J0LVxcdTAwM2VucyA9IG5zaW1fY3JlYXRlKG5zaW1fZGV2LCBuc2ltX2Rldl9wb3J0LCBwZXJtX2FkZHIpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNTEwLVxcdGlmIChJU19FUlIobnNpbV9kZXZfcG9ydC1cXHUwMDNlbnMpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9NDA1PXN0YXRpYyBpbnQgbnNpbV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy00MTYtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjQxNzpzdGF0aWMgaW50IG5zaW1fY3JlYXRlX3BhZ2VfcG9vbChzdHJ1Y3QgcGFnZV9wb29sICoqcCwgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy00MTgte1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTQzOD1zdGF0aWMgaW50IG5zaW1faW5pdF9uYXBpKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQ1Mi1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6NDUzOlxcdFxcdGVyciA9IG5zaW1fY3JlYXRlX3BhZ2VfcG9vbChcXHUwMDI2cnEtXFx1MDAzZXBhZ2VfcG9vbCwgXFx1MDAyNnJxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNDU0LVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9NzUxPW5zaW1fcXVldWVfbWVtX2FsbG9jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNzY0LVxcdFxcdFxcdHJldHVybiAtRU5FVERPV047XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjc2NTpcXHRcXHRyZXR1cm4gbnNpbV9jcmVhdGVfcGFnZV9wb29sKFxcdTAwMjZxbWVtLVxcdTAwM2VwcCwgXFx1MDAyNm5zLVxcdTAwM2VycVtpZHhdLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNzY2LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy03NzEtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjc3MjpcXHRlcnIgPSBuc2ltX2NyZWF0ZV9wYWdlX3Bvb2woXFx1MDAyNnFtZW0tXFx1MDAzZXJxLVxcdTAwM2VwYWdlX3Bvb2wsIFxcdTAwMjZxbWVtLVxcdTAwM2VycS1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTc3My1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTExMjI9c3RhdGljIHZvaWQgbnNpbV9leGl0X25ldGRldnNpbShzdHJ1Y3QgbmV0ZGV2c2ltICpucylcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy0xMTI3LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzoxMTI4OnN0cnVjdCBuZXRkZXZzaW0gKm5zaW1fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTExMjktXFx0XFx0XFx0ICAgICAgc3RydWN0IG5zaW1fZGV2X3BvcnQgKm5zaW1fZGV2X3BvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg9MTA3PXN0cnVjdCBuZXRkZXZzaW0ge1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE2NS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTY2OnN0cnVjdCBuZXRkZXZzaW0gKm5zaW1fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE2Ny1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgbnNpbV9kZXZfcG9ydCAqbnNpbV9kZXZfcG9ydCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDE6MTguNDE1Nzc4MzVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDMzODIzOTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqVHJhY2luZyBCYWNrIHRoZSBTdGF0aWMgTmF0dXJlIG9mIGBfX25zaW1fZGV2X3BvcnRfYWRkYCoqXG5cbk9rYXksIHNvIGBfX25zaW1fZGV2X3BvcnRfYWRkYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoYXQgaW1tZWRpYXRlbHkgcGlxdWVkIG15IGludGVyZXN0LiBMZXQncyB0cmFjZSBiYWNrIGZyb20gdGhlcmUuIFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgYSBzdGF0aWMgZnVuY3Rpb24gaW4gdGhpcyBjb250ZXh0PyBJdCBtZWFucyBpdCdzIG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhlIGNvbXBpbGF0aW9uIHVuaXQgd2hlcmUgaXQncyBkZWZpbmVkLiBTbywgaXQncyAqbm90KiBpbnRlbmRlZCBmb3IgZXh0ZXJuYWwgbGlua2luZyBvciB1c2UgYnkgb3RoZXIgbW9kdWxlcywgd2hpY2ggdGVsbHMgbWUgdGhlIGRldmVsb3BlcnMgYXJlIHRyeWluZyB0byBsaW1pdCBpdHMgc2NvcGUgYW5kIHByZXZlbnQgYWNjaWRlbnRhbCBvciB1bmludGVuZGVkIGV4dGVybmFsIGRlcGVuZGVuY2llcy4gVGhleeKAmXJlIHByb2JhYmx5IHRyeWluZyB0byBtYWludGFpbiBzb21lIHNvcnQgb2YgZW5jYXBzdWxhdGlvbiBmb3IgdGhlIG5zaW0gZGV2aWNlIHBvcnQgc3Vic3lzdGVtLlxuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGV5IGNob3NlIHRoYXQuIElzIGl0IGEgZGVzaWduIGNob2ljZSB0byBtYW5hZ2UgYWNjZXNzLCBwZXJoYXBzIHByb3RlY3RpbmcgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIHdpdGhpbiB0aGUgYG5zaW1gIG1vZHVsZT8gT3IgaXMgaXQgbW9yZSBvZiBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgcmVseWluZyBvbiB0aGUgY29tcGlsZXIncyBhYmlsaXR5IHRvIGlubGluZSB0aGUgZnVuY3Rpb24gbW9yZSBhZ2dyZXNzaXZlbHksIHNpbmNlIGl0cyBhZGRyZXNzIGlzIG9ubHkga25vd24gd2l0aGluIGEgc2luZ2xlIHRyYW5zbGF0aW9uIHVuaXQ/IE9yIHBlcmhhcHMsIHRoZXkgd2FudCB0byBrZWVwIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGhpZGRlbiwgcHJldmVudGluZyBzb21lb25lIGZyb20gaW5hZHZlcnRlbnRseSB0cnlpbmcgdG8gY2FsbCBpdCB3aXRoIGFuIGluYXBwcm9wcmlhdGUgZGF0YSBzdHJ1Y3R1cmU/XG5cbkkgc3VzcGVjdCBpdCdzIGxpa2VseSBhIGNvbWJpbmF0aW9uIG9mIHRoZXNlIHRoaW5ncywgYnV0IGl0IGFsbCBoaW5nZXMgb24gdGhlIHNwZWNpZmljIGRlc2lnbiBvZiB0aGUgYG5zaW1gIGRyaXZlci4gSSdtIGdvaW5nIHRvIGZvbGxvdyB0aGUgdXNlcyBvZiB0aGlzIGZ1bmN0aW9uIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZGF0YSBpcyBiZWluZyBwYXNzZWQgaW4sIHdoZXJlIGl0J3MgYmVpbmcgdXNlZCwgYW5kIHdoaWNoIG90aGVyIGludGVybmFsIGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoIHRoaXMgYWRkIGZ1bmN0aW9uYWxpdHkuIEhvcGVmdWxseSwgSSdsbCBiZSBhYmxlIHRvIGdsZWFuIHRoZWlyIGludGVudCB0aHJvdWdoIGV4YW1pbmluZyB0aGUgc3Vycm91bmRpbmcgY29kZS4gSXTigJlzIHJhcmVseSBhIHN0YW5kYWxvbmUgY2hvaWNlOyB0aGVyZeKAmXMgYWx3YXlzIGFuIGFyY2hpdGVjdHVyYWwgZGVjaXNpb24gdGhhdCBsZWQgdG8gbWFraW5nIHNvbWV0aGluZyBzdGF0aWMuIEkgbmVlZCB0byBmaW5kIHRoZSB1bmRlcmx5aW5nIHJlYXNvbmluZy4gVGhpcyB3aWxsIGluZm9ybSBteSBhc3Nlc3NtZW50IG9mIHRoZSBvdmVyYWxsIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk3MywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAxOjIyLjQ0OTYwNjc2OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE1MjkzODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19uc2ltX2Rldl9wb3J0X2FkZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYz02NDg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzo2NDk6X19uc2ltX2Rldl9wb3J0X2FkZChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LCBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy02NTAtXFx0XFx0ICAgIHVuc2lnbmVkIGludCBwb3J0X2luZGV4LCB1OCBwZXJtX2FkZHJbRVRIX0FMRU5dKTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYz02Njc9c3RhdGljIGludCBuc2ltX2Vzd19zd2l0Y2hkZXZfZW5hYmxlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtNjczLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBuc2ltX2Rldl9nZXRfdmZzKG5zaW1fZGV2KTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjY3NDpcXHRcXHRlcnIgPSBfX25zaW1fZGV2X3BvcnRfYWRkKG5zaW1fZGV2LCBOU0lNX0RFVl9QT1JUX1RZUEVfVkYsIGksIE5VTEwpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy02NzUtXFx0XFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTE0MjU9c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZsaW5rX29wcyBuc2ltX2Rldl9kZXZsaW5rX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNDU0LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNDU1OnN0YXRpYyBpbnQgX19uc2ltX2Rldl9wb3J0X2FkZChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LCBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNDU2LVxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgcG9ydF9pbmRleCwgdTggcGVybV9hZGRyW0VUSF9BTEVOXSlcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYz0xNTY0PXN0YXRpYyBpbnQgbnNpbV9kZXZfcG9ydF9hZGRfYWxsKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTU2OS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcG9ydF9jb3VudDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE1NzA6XFx0XFx0ZXJyID0gX19uc2ltX2Rldl9wb3J0X2FkZChuc2ltX2RldiwgTlNJTV9ERVZfUE9SVF9UWVBFX1BGLCBpLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTU3MS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTE4Mjk9aW50IG5zaW1fZHJ2X3BvcnRfYWRkKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiwgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xODM4LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTgzOTpcXHRcXHRlcnIgPSBfX25zaW1fZGV2X3BvcnRfYWRkKG5zaW1fZGV2LCB0eXBlLCBwb3J0X2luZGV4LCBwZXJtX2FkZHIpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xODQwLVxcdGRldmxfdW5sb2NrKHByaXZfdG9fZGV2bGluayhuc2ltX2RldikpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMToyMi41MjExNDEyMDZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg0ODM4MTMwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqVHJhY2luZyB0aGUgYG5zaW1fZHJ2X3BvcnRfYWRkYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIGBuc2ltX2Rydl9wb3J0X2FkZGAgaXMgZXhwb3J0ZWQsIG1lYW5pbmcgaXQncyBhIGNyaXRpY2FsIGZ1bmN0aW9uLCBsaWtlbHkgcGFydCBvZiBhbiBleHRlcm5hbCBpbnRlcmZhY2UuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgaW4gYW5kIHRyYWNlIGl0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZnVuY3Rpb24gZG9lcywgaG93IGl0J3MgdXNlZCwgYW5kIHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGl0IG1hbmlwdWxhdGVzLiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBhbnkgZGVlcGVyIGFuYWx5c2lzLiBJJ2xsIG5lZWQgdG8gc2VlIHdoZXJlIGl0J3MgZGVmaW5lZCBhbmQgZmlndXJlIG91dCBpdHMgY2FsbGluZyBjb252ZW50aW9uLiBIb3BlZnVsbHksIEkgY2FuIGZpbmQgc29tZSBjb21tZW50cyBvciBkb2N1bWVudGF0aW9uIHRvIGd1aWRlIG1lLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZCFcblxuXG4iLCJJbnB1dFRva2VucyI6NjE2MywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAxOjI1LjM2OTUyNTY3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDgzODU3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuc2ltX2Rydl9wb3J0X2FkZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz02NT1uZXdfcG9ydF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTk1LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo5NjpcXHRyZXQgPSBuc2ltX2Rydl9wb3J0X2FkZChuc2ltX2J1c19kZXYsIE5TSU1fREVWX1BPUlRfVFlQRV9QRiwgcG9ydF9pbmRleCxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtOTctXFx0XFx0XFx0XFx0YWRkcl9zZXQgPyBldGhfYWRkciA6IE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTE4MTc9X19uc2ltX2Rldl9wb3J0X2xvb2t1cChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LCBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE4MjgtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE4Mjk6aW50IG5zaW1fZHJ2X3BvcnRfYWRkKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiwgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTgzMC1cXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgcG9ydF9pbmRleCwgdTggcGVybV9hZGRyW0VUSF9BTEVOXSlcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaD0zOTI9dm9pZCBuc2ltX2Rydl9yZW1vdmUoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzkzOmludCBuc2ltX2Rydl9wb3J0X2FkZChzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM5NC1cXHRcXHQgICAgICBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLCB1bnNpZ25lZCBpbnQgcG9ydF9pbmRleCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDE6MjUuNDMwMzY4NDk4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2MDQ5NTcyODg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE5ldGRldnNpbSBEcml2ZXI6IEtleSBFbnRyeXBvaW50cyBhbmQgUG90ZW50aWFsIFRhcmdldHMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIGBuZXRkZXZzaW1gIGRyaXZlciBhbmQgSSB0aGluayBJJ3ZlIGdvdCBhIGRlY2VudCBoYW5kbGUgb24gcG90ZW50aWFsIGZ1enppbmcgZW50cnlwb2ludHMuIFRoZSBrZXkgc2VlbXMgdG8gYmUgYXJvdW5kIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBzeXN0ZW0uIEkgc2VlIHRoYXQgYG5ld19wb3J0X3N0b3JlYCBpcyBkZWZpbmVkIGFzIGEgc3lzZnMgYXR0cmlidXRlLCB3aGljaCBtZWFucyB3ZSBjYW4gZGlyZWN0bHkgaW50ZXJhY3Qgd2l0aCBpdCB0aHJvdWdoIHRoZSBmaWxlIHN5c3RlbSwgYW5kIHRoYXQncyBhbHdheXMgYW4gaW50ZXJlc3RpbmcgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5Nb3JlIGltcG9ydGFudGx5LCBgbnNpbV9kZXZfcG9ydF9hZGRfYWxsYCBpcyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBgbnNpbV9kcnZfcHJvYmVgLiBTaW5jZSBgbnNpbV9kcnZfcHJvYmVgIGlzIHRoZSBidXMgcHJvYmUgZnVuY3Rpb24sIHRoYXQgbWVhbnMgd2Uga25vdyBmb3Igc3VyZSBgbmV0ZGV2c2ltYCBpcyByZWFjaGFibGUuIEknbSBub3RpbmcgdGhpcyBpcyBkZWZpbml0ZWx5IGEgZ29vZCBzcG90IHRvIGludmVzdCBzb21lIGZ1enppbmcgdGltZS5cblxuTm93LCBnbGFuY2luZyBvdmVyIHRoZSBwYXRjaCwgSSBzZWUgbW9kaWZpY2F0aW9ucyB0byBgbnNpbV9kZWxfbmFwaWAgYW5kIGBuc2ltX3F1ZXVlX3N0YXJ0YC4gYG5zaW1fcXVldWVfc3RhcnRgIGlzIGEgY2FsbGJhY2ssIHNwZWNpZmljYWxseSBmb3IgYC5uZG9fcXVldWVfc3RhcnRgLiBPa2F5LCBpbnRlcmVzdGluZywgdGhhdCBwb2ludHMgdG93YXJkcyBzb21lIG5ldHdvcmsgaW50ZXJhY3Rpb24gYXQgYSBsb3dlciBsZXZlbC4gYG5zaW1fZGVsX25hcGlgIGlzIGNhbGxlZCBmcm9tIHR3byBwbGFjZXM6IGBuc2ltX2Rlc3Ryb3lgIGFuZCBgbnNpbV9pbml0X25hcGlgIChpbiB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCkuIFNpbmNlIGBuc2ltX2Rlc3Ryb3lgIGlzIGEgY3JpdGljYWwgZnVuY3Rpb24sIEknbSBnb2luZyB0byBmb2N1cyBvbiB0aGF0IG5leHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgdGhlcmUgdG8gc2VlIGlmIHdlIGNhbiB0cmlnZ2VyIGFueSBpbnRlcmVzdGluZyBzdGF0ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3OTIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDE6NDEuNDc5OTQ0NzkzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTAwMDA2MTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnNpbV9kZXN0cm95XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTE0NTU9c3RhdGljIGludCBfX25zaW1fZGV2X3BvcnRfYWRkKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsIGVudW0gbnNpbV9kZXZfcG9ydF90eXBlIHR5cGUsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTUxOC1cXHRcXHRpZiAoZXJyKVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNTE5OlxcdFxcdFxcdGdvdG8gZXJyX25zaW1fZGVzdHJveTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTUyMC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTUyNS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTUyNjplcnJfbnNpbV9kZXN0cm95OlxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNTI3OlxcdG5zaW1fZGVzdHJveShuc2ltX2Rldl9wb3J0LVxcdTAwM2Vucyk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1MjgtZXJyX3BvcnRfZGVidWdmc19leGl0Olxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTE1NDA9c3RhdGljIHZvaWQgX19uc2ltX2Rldl9wb3J0X2RlbChzdHJ1Y3QgbnNpbV9kZXZfcG9ydCAqbnNpbV9kZXZfcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNTQ2LVxcdFxcdGRldmxfcmF0ZV9sZWFmX2Rlc3Ryb3koXFx1MDAyNm5zaW1fZGV2X3BvcnQtXFx1MDAzZWRldmxpbmtfcG9ydCk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE1NDc6XFx0bnNpbV9kZXN0cm95KG5zaW1fZGV2X3BvcnQtXFx1MDAzZW5zKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTU0OC1cXHRuc2ltX2Rldl9wb3J0X2RlYnVnZnNfZXhpdChuc2ltX2Rldl9wb3J0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz0xMTI4PXN0cnVjdCBuZXRkZXZzaW0gKm5zaW1fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtMTE3NC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6MTE3NTp2b2lkIG5zaW1fZGVzdHJveShzdHJ1Y3QgbmV0ZGV2c2ltICpucylcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtMTE3Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg9MTY2PXN0cnVjdCBuZXRkZXZzaW0gKm5zaW1fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTY4LVxcdFxcdFxcdCAgICAgIHU4IHBlcm1fYWRkcltFVEhfQUxFTl0pO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxNjk6dm9pZCBuc2ltX2Rlc3Ryb3koc3RydWN0IG5ldGRldnNpbSAqbnMpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xNzAtYm9vbCBuZXRkZXZfaXNfbnNpbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDE6NDEuNTg5OTUyNjhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE3NzYzNjg0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEZ1enppbmcgU3RyYXRlZ3kgZm9yIE5ldGRldnNpbSoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGBuZXRkZXZzaW1gIGRyaXZlciwgYW5kIHRoZSBmaXJzdCB0aGluZ3MgdGhhdCBqdW1wIG91dCBhcmUgdGhlIGBuc2ltX2NyZWF0ZWAgYW5kIGBuc2ltX2Rlc3Ryb3lgIGZ1bmN0aW9ucyDigJMgdGhvc2UgYXJlIHRoZSBvYnZpb3VzIGVudHJ5IGFuZCBleGl0IHBvaW50cyBmb3IgdGhlIHNpbXVsYXRlZCBuZXR3b3JrIGRldmljZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1ha2Ugc3VyZSB0aGVzZSBhcmUgcm9idXN0bHkgaGFuZGxlZC5cblxuSG9sZCBvbiBhIHNlYy4uLiBgbnNpbV9xdWV1ZV9zdGFydGAgaXMgYSBjYWxsYmFjayBmb3IgYC5uZG9fcXVldWVfc3RhcnRgLiBUaGF0J3MgaW50ZXJlc3Rpbmc7IGl0J3MgTkFQSSByZWxhdGVkLiBXaGljaCBtZWFucyBJIHNob3VsZCBwcm9iYWJseSBsb29rIGF0IHRoYXQsIHRvbyFcblxuVGhpcyBwYXRjaCBhbHNvIG1lbnRpb25zIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgY2FsbHMsIHdoaWNoIGlzIGRlZmluaXRlbHkgcmVsZXZhbnQgdG8gTkFQSSBhbmQgcXVldWUgbWFuYWdlbWVudC4gVGhhdCBmdW5jdGlvbiBpcyB3b3J0aCBhIGRlZXAgZGl2ZSBzaW5jZSBpdCdzIGEgY29yZSBuZXR3b3JraW5nIGZ1bmN0aW9uLiBTbyBpdCBsb29rcyBsaWtlIEkgbmVlZCB0byByZWFsbHkgcGF5IGF0dGVudGlvbiB0byB0aGF0LiBUaGUgcGF0Y2ggaXMgaW4gYGRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY2AsIHNvIEkgc2hvdWxkIGZvY3VzIG15IGF0dGVudGlvbiBvbiBjb2RlIGFyb3VuZCB0aGVyZS5cblxuU28sIEknbGwgZGVmaW5pdGVseSBiZSBmdXp6aW5nIGBuc2ltX2NyZWF0ZWAsIGBuc2ltX2Rlc3Ryb3lgLCBgbnNpbV9kcnZfcHJvYmVgLCBhbmQgYG5zaW1fZHJ2X3BvcnRfYWRkYCBnaXZlbiB0aGF0IHRoZXkgYXJlIHRoZSBwcmltYXJ5IGZ1bmN0aW9ucyBoZXJlLlxuXG5XYWl0IGEgbWludXRlLCBgbnNpbV9xdWV1ZV9zdGFydGAgaXMgYSAqY2FsbGJhY2sqIGZvciBgLm5kb19xdWV1ZV9zdGFydGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0ICpob3cqIGAubmRvX3F1ZXVlX3N0YXJ0YCBpcyBhY3R1YWxseSB0cmlnZ2VyZWQgaW4gdGhlIGtlcm5lbCwgYW5kIGhvdyBJIGNhbiBjb250cm9sIHRoYXQuIEkgbmVlZCB0byB0cmlnZ2VyIHRoYXQgY2FsbGJhY2sgZnVuY3Rpb24uXG5cbkknbGwgY2hlY2sgYG5ldGRldl9xdWV1ZV9tZ210X29wc2AgYW5kIGhvdyBpdCdzIHVzZWQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRvIGdldCB0aGF0IGNhbGxiYWNrIHRvIGZpcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5NTQsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDE6NDYuNzY3NTkyMzA0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mzg0NTQ0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZG9fcXVldWVfc3RhcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NvcmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTk4PXN0YXRpYyBpbnQgbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xMDgtXFx0aWYgKCFxb3BzIHx8ICFxb3BzLVxcdTAwM2VuZG9fcXVldWVfc3RvcCB8fCAhcW9wcy1cXHUwMDNlbmRvX3F1ZXVlX21lbV9mcmVlIHx8XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTA5OlxcdCAgICAhcW9wcy1cXHUwMDNlbmRvX3F1ZXVlX21lbV9hbGxvYyB8fCAhcW9wcy1cXHUwMDNlbmRvX3F1ZXVlX3N0YXJ0KVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTExMC1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xMzYtXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTM3OlxcdFxcdGVyciA9IHFvcHMtXFx1MDAzZW5kb19xdWV1ZV9zdGFydChkZXYsIHFjZmdfbmV3LCBuZXdfbWVtLCByeHFfaWR4KTtcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xMzgtXFx0XFx0aWYgKGVycilcXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE1OC1cXHQgKi9cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxNTk6XFx0aWYgKHFvcHMtXFx1MDAzZW5kb19xdWV1ZV9zdGFydChkZXYsIHFjZmdfb2xkLCBvbGRfbWVtLCByeHFfaWR4KSkge1xcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE2MC1cXHRcXHRXQVJOKDEsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAxOjQ2LjgzMTQ0NzE2MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODQyMDAyMzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBuZXRkZXZfcnhfcXVldWVfcmVjb25maWdgJ3MgQ2FsbGVycyoqXG5cbkFscmlnaHQsIHNvIGBuZXRkZXZfcnhfcXVldWVfcmVjb25maWdgIGtpY2tzIG9mZiBhIGNhbGwgdG8gYG5kb19xdWV1ZV9zdGFydGAuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIGl0IHN1Z2dlc3RzIGEgZmFpcmx5IGltcG9ydGFudCByZWNvbmZpZ3VyYXRpb24gZXZlbnQgaXMgaGFwcGVuaW5nLCBzaW5jZSBpdCdzIGludm9sdmVkIGluIHN0YXJ0aW5nIG9yIHJlc3RhcnRpbmcgYSBxdWV1ZS4gVG8gcmVhbGx5IHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucywgSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBgbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnYC4gTGV0J3Mgc2VlLi4uIEkgd2FudCB0byBxdWlja2x5IGlkZW50aWZ5IHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKmNhbGxlZCogd2l0aGluIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IG9mIGl0cyBjYWxscyB3aWxsIHByb3ZpZGUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBmdW5jdGlvbi4gVGltZSB0byBzdGFydCBkaWdnaW5nIHRocm91Z2ggdGhlIGNvZGUuLi4gbGV0J3Mgc2VlIHdoZXJlIHRoaXMgaXMgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODkyOCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAxOjQ5LjY3MzQ1MzQyNVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgwOTAwODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz05MT1ib29sIG5ldGlmX3J4cV9oYXNfbXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgpXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy05Ny1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzo5ODpzdGF0aWMgaW50IG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTk5LVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgcnhxX2lkeCxcXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTE3OD1pbnQgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgpXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODItXFx0bmV0ZGV2X3F1ZXVlX2NvbmZpZyhkZXYsIHJ4cV9pZHgsIFxcdTAwMjZxY2ZnKTtcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxODM6XFx0cmV0dXJuIG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyhkZXYsIHJ4cV9pZHgsIFxcdTAwMjZxY2ZnLCBcXHUwMDI2cWNmZyk7XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTg0LX1cXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTE4Nz1zdGF0aWMgaW50IF9fbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yMzMtXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjM0OlxcdHJldCA9IG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyhkZXYsIHJ4cV9pZHgsIFxcdTAwMjZxY2ZnWzBdLCBcXHUwMDI2cWNmZ1sxXSk7XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjM1LVxcdGlmIChyZXQpXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz0yNzg9c3RhdGljIHZvaWQgX19uZXRpZl9tcF9jbG9zZV9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0zMDEtXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MzAyOlxcdGVyciA9IG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyhkZXYsIHJ4cV9pZHgsIFxcdTAwMjZxY2ZnWzBdLCBcXHUwMDI2cWNmZ1sxXSk7XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMzAzLVxcdFdBUk5fT04oZXJyIFxcdTAwMjZcXHUwMDI2IGVyciAhPSAtRU5FVERPV04pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMTo0OS43MzE1NTA4NDRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4MTM1MzExOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQ2hlY2tpbmcgYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YCdzIEV4cG9ydCBTdGF0dXMqKlxuXG5BbHJpZ2h0LCB0aGF0J3MgaW50ZXJlc3RpbmcuIEkgc2VlIGEgcmVmZXJlbmNlIHRvIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGAuIFRoZSBxdWVzdGlvbiB0aGF0IGltbWVkaWF0ZWx5IHBvcHMgaW50byBteSBoZWFkIGlzOiBpcyB0aGF0IGZ1bmN0aW9uICpleHBvcnRlZCo/IElzIGl0IGFjY2Vzc2libGUgb3V0c2lkZSBvZiBpdHMgaW1tZWRpYXRlIG1vZHVsZT8gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXRoZXIgaXQncyBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJLCBvciBpZiBpdCdzIGludGVybmFsIGFuZCwgdGhlcmVmb3JlLCBwb3RlbnRpYWxseSBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IHRoZSBzYW1lIGxldmVsIG9mIGNvbmNlcm4gZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIFVuZGVyc3RhbmRpbmcgaXRzIGV4cG9ydCBzdGF0dXMgaXMgYWJzb2x1dGVseSBjcnVjaWFsIGJlZm9yZSBJIGNhbiBhc3Nlc3MgaXRzIGludGVuZGVkIHVzZSwgZGVwZW5kZW5jaWVzLCBvciBwb3RlbnRpYWwgaW1wYWN0cyBpbiB0aGUgY29udGV4dCBJJ20gY3VycmVudGx5IHdvcmtpbmcgd2l0aC4gQSBxdWljayBjaGVjayBpcyBpbiBvcmRlci4gTGV0J3Mgc2VlIHdoYXQgdGhlIHN5bWJvbCB0YWJsZSB0ZWxscyB1cyFcblxuXG4iLCJJbnB1dFRva2VucyI6OTc0NCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAxOjUzLjExMjkwNjQ1MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0OTQ2NTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz05OD1zdGF0aWMgaW50IG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTc3LVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjE3ODppbnQgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgpXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTc5LXtcXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE4NC19XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTg1OkVYUE9SVF9TWU1CT0xfTlNfR1BMKG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0LCBcXFwiTkVUREVWX0lOVEVSTkFMXFxcIik7XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTg2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMTo1My4yMTc4NTczNDlaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0ODc0MjU5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgRGV2aWNlIFJYIFF1ZXVlIFJlc3RhcnQqKlxuXG5Pa2F5LCBzbyBgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRgIGlzIGRlZmluaXRlbHkgZXhwb3J0ZWQsIHRoYXQncyBnb29kIHRvIGtub3cuIEJ1dCBJJ20gd29uZGVyaW5nIGFib3V0IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGF0IGFuZCBgX19uZXRpZl9tcF9vcGVuX3J4cWAuIFRoYXQgb25lIHNlZW1zIHRvIGJlIHN0YXRpYywgd2hpY2ggbWFrZXMgdGhpbmdzIGEgYml0IG1vcmUgaW50ZXJlc3RpbmcsIHBvdGVudGlhbGx5IGxpbWl0aW5nIGhvdyB3ZSBjYW4gaW50ZXJhY3Qgd2l0aCBpdC4gVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogSXMgdGhlcmUgYSBwdWJsaWMgQVBJIG9yIGEgaGlnaGVyLWxldmVsIG1lY2hhbmlzbSB0aGF0IHVsdGltYXRlbHkgdHJpZ2dlcnMgYF9fbmV0aWZfbXBfb3Blbl9yeHFgIG9yIHByb3ZpZGVzIGFuIGluZGlyZWN0IHBhdGh3YXk/IFRoYXQncyB3aGF0IEkgcmVhbGx5IG5lZWQgdG8gdW5kZXJzdGFuZC5cblxuVG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjYWxsIHNpdGVzIG9mIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGAuIEkgbmVlZCB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIGZsb3cgYW5kIHNlZSB3aGF0J3MgYWN0dWFsbHkgaW5pdGlhdGluZyB0aGF0IGZ1bmN0aW9uIGNhbGwuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNsdWVzIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBpbnRlbmRlZCBiZWhhdmlvciBhbmQgaWRlbnRpZnkgaWYgdGhlcmUgaXMgYW4gaW50ZW5kZWQsIGhpZ2ggbGV2ZWwgdHJpZ2dlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAxNzcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMTo1Ni41NjY2MDQzODdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDg3NTAzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXRkZXZfcnhfcXVldWVfcmVzdGFydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTk4PXN0YXRpYyBpbnQgbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xNzctXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTc4OmludCBuZXRkZXZfcnhfcXVldWVfcmVzdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeClcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xNzkte1xcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTg0LX1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxODU6RVhQT1JUX1NZTUJPTF9OU19HUEwobmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnQsIFxcXCJORVRERVZfSU5URVJOQUxcXFwiKTtcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAxOjU2LjcwMTQ4Mzg4M1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDY5NTQ0NzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqSW52ZXN0aWdhdGluZyBhIE5ldHdvcmsgTW9kdWxlIEV4cG9ydCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgZnVuY3Rpb24gb3IgdmFyaWFibGUgaXMgZXhwb3J0ZWQsIG1lYW5pbmcgaXQncyBpbnRlbmRlZCB0byBiZSB1c2VkIG91dHNpZGUgdGhlIG1vZHVsZSB3aGVyZSBpdCdzIGRlZmluZWQuIEJ1dCB0aGUgb2J2aW91cyBwbGFjZSB0byBsb29rLCBgbmV0L2AsIGlzbid0IGNhbGxpbmcgaXQuIFRoYXQncyB1bnVzdWFsLiBVc3VhbGx5LCB0aGUgbW9kdWxlIHRoYXQgZXhwb3J0cyBzb21ldGhpbmcgaXMgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgbW9kdWxlcyB0aGF0IHVzZSBpdC4gSXQncyB0aW1lIHRvIGRpZyBhIGJpdCBkZWVwZXIuIEdpdmVuIHRoaXMgaXMgbmV0d29yay1yZWxhdGVkIGNvZGUsIHRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBgZHJpdmVycy9uZXQvYCBkaXJlY3RvcnkuIFRoYXQncyB3aGVyZSB0aGUgYWN0dWFsIG5ldHdvcmsgZGV2aWNlIGRyaXZlcnMgbGl2ZSwgYW5kIHRoYXQncyB0aGUgbW9zdCBsaWtlbHkgcGxhY2UgdG8gZmluZCBzb21ldGhpbmcgdGhhdCBtaWdodCBsZXZlcmFnZSB0aGUgZXhwb3J0ZWQgZmVhdHVyZS4gTGV0J3Mgc2VlIHdoYXQncyBiZWluZyBpbXBvcnRlZCBhbmQgaG93IGl0J3MgYmVpbmcgdXNlZCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2NzcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjowMC4xNzEwMzI4MzlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NjY2MzgwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXRkZXZfcnhfcXVldWVfcmVzdGFydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTQ0Nzg9c3RhdGljIHZvaWQgYm54dF90cGhfdXBkYXRlKHN0cnVjdCBibnh0ICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE0NTAwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE0NTAxOlxcdFxcdGVyciA9IG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0KGRldiwgaXJxLVxcdTAwM2VyaW5nX25yKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNDUwMi1cXHRcXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9ODY0PW5zaW1fcXJlc2V0X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04ODgtXFx0bnMtXFx1MDAzZXJxX3Jlc2V0X21vZGUgPSBtb2RlO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo4ODk6XFx0cmV0ID0gbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnQobnMtXFx1MDAzZW5ldGRldiwgcXVldWUpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04OTAtXFx0bnMtXFx1MDAzZXJxX3Jlc2V0X21vZGUgPSAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjowMC40MTc3MDA5OTJaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzNzA4ODQwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gZGVlcCBpbiB0aGUgd2VlZHMgb2YgbmV0d29yayBkZXZpY2UgZHJpdmVyIGRldmVsb3BtZW50OlxuXG4qKlRyYWNpbmcgYSBRdWV1ZSBSZXN0YXJ0IElzc3VlKipcblxuUmlnaHQsIHNvIGBuc2ltX3FyZXNldF93cml0ZWAgaXMgZmlyaW5nIHVwIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGAg4oCTIHRoYXQncyBhIGtleSBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gVGhhdCdzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nIGJlY2F1c2UgaXQgdGVsbHMgbWUgd2hlcmUgdGhlIHJlc2V0IGlzIGFjdHVhbGx5IGhhcHBlbmluZyBpbiB0aGUgcmVjZWl2ZSBwYXRoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0LiBJIG5lZWQgdG8gZ28gYmFjayBhbmQgZG91YmxlLWNoZWNrIGV4YWN0bHkgaG93IGBuc2ltX3FyZXNldF93cml0ZWAgd29ya3MuIFRoYXQgZnVuY3Rpb24gY2FsbCBpcyBsaWtlbHkgdGhlIHRyaWdnZXIgZm9yIHdoYXRldmVyIGlzIGhhcHBlbmluZyBkb3duIHRoZSBsaW5lLCBzbyBkaWdnaW5nIGludG8gaXQgd2lsbCBwcm9iYWJseSBzaGVkIGxpZ2h0IG9uIHRoZSBwcm9ibGVtIEknbSB0cnlpbmcgdG8gc29sdmUuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB3aGF0IHRoYXQgZnVuY3Rpb24gaXMgZG9pbmcuIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTIwMiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAyOjAzLjc1NDgxNTE1MloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc2MDcxMjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5zaW1fcXJlc2V0X3dyaXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTg2Mz1zdGF0aWMgc3NpemVfdFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo4NjQ6bnNpbV9xcmVzZXRfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICpkYXRhLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NjUtXFx0XFx0ICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz05MDA9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgbnNpbV9xcmVzZXRfZm9wcyA9IHtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtOTAxLVxcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjkwMjpcXHQud3JpdGUgPSBuc2ltX3FyZXNldF93cml0ZSxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtOTAzLVxcdC5vd25lciA9IFRISVNfTU9EVUxFLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjowNC4wMzA4OTE2OTNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4MDQ2NzQxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZWJ1Z2dpbmcgRGVlcCBEaXZlOiBBIEZ1enppbmcgT3Bwb3J0dW5pdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGl0J3MgY2xlYXJseSBhIGRlYnVnZnMgZmlsZSBvcGVyYXRpb24uIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgYG5zaW1fcXJlc2V0X3dyaXRlYCBpcyBhIHBvdGVudGlhbCB0YXJnZXQuIEEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcsIGFjdHVhbGx5LiBJdCdzIGFsbW9zdCBndWFyYW50ZWVkIHRvIGJlIHJlYWNoYWJsZSBiZWNhdXNlIGl0J3MgZXhwb3NlZCB0aGF0IHdheS5cblxuTm93LCBJJ20gc2VlaW5nIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0aGVzZSBgbmV0aWZfcXVldWVfc2V0X25hcGlgIGNhbGxzLiBIbW0sIGludGVyZXN0aW5nLiBUaG9zZSBhcmUgZGVmaW5pdGVseSB3b3J0aCBhIGNsb3NlciBsb29rLiBMZXQgbWUgc2hpZnQgbXkgZm9jdXMgYW5kIHRha2UgYSBkZXRhaWxlZCBsb29rIGF0IGhvdyBgbmV0aWZfcXVldWVfc2V0X25hcGlgIGZ1bmN0aW9ucy4gSXQgY291bGQgYmUgYW4gYXZlbnVlIHRvIGV4cGxvaXQgd2l0aGluIHRoaXMgZGVidWdmcyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTY2NywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAyOjA3LjQxMTM2MTU4MVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTMzNDE2OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV0aWZfcXVldWVfc2V0X25hcGlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NvcmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL2Rldi5jPTcyODk9RVhQT1JUX1NZTUJPTChuZXRpZl90aHJlYWRlZF9lbmFibGUpO1xcbi0tXFxubmV0L2NvcmUvZGV2LmMtNzI5MS0vKipcXG5uZXQvY29yZS9kZXYuYzo3MjkyOiAqIG5ldGlmX3F1ZXVlX3NldF9uYXBpIC0gQXNzb2NpYXRlIHF1ZXVlIHdpdGggdGhlIG5hcGlcXG5uZXQvY29yZS9kZXYuYy03MjkzLSAqIEBkZXY6IGRldmljZSB0byB3aGljaCBOQVBJIGFuZCBxdWV1ZSBiZWxvbmdcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTczMDEtICovXFxubmV0L2NvcmUvZGV2LmM6NzMwMjp2b2lkIG5ldGlmX3F1ZXVlX3NldF9uYXBpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBxdWV1ZV9pbmRleCxcXG5uZXQvY29yZS9kZXYuYy03MzAzLVxcdFxcdFxcdCAgZW51bSBuZXRkZXZfcXVldWVfdHlwZSB0eXBlLCBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGkpXFxuLS1cXG5uZXQvY29yZS9kZXYuYy03MzI0LX1cXG5uZXQvY29yZS9kZXYuYzo3MzI1OkVYUE9SVF9TWU1CT0wobmV0aWZfcXVldWVfc2V0X25hcGkpO1xcbm5ldC9jb3JlL2Rldi5jLTczMjYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAyOjA3LjUwNDcwODU3OFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODQwOTY4MzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV0d29yayBJbnRlcmZhY2UgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGUgTkFQSSBzZXR1cCwgc3BlY2lmaWNhbGx5IGBuc2ltX2RlbF9uYXBpYCBhbmQgYG5zaW1fcXVldWVfc3RhcnRgLiBgbmV0aWZfcXVldWVfc2V0X25hcGlgIGlzIGFuIGV4cG9ydGVkIGZ1bmN0aW9uLCBzbyB0aGF0IGdpdmVzIG1lIGEgZ29vZCBlbnRyeSBwb2ludCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGFsbCBmaXRzIHRvZ2V0aGVyLlxuXG5SaWdodCwgYG5zaW1fZGVsX25hcGlgIGlzIGNhbGxlZCBmcm9tIGBuc2ltX2Rlc3Ryb3lgIGFuZCBgbnNpbV9pbml0X25hcGlgLiBUaGF0IG5hcnJvd3MgZG93biB0aGUgY3JpdGljYWwgYXJlYXMuIEFuZCBgbnNpbV9xdWV1ZV9zdGFydGAgaXMgdHJpZ2dlcmVkIHRocm91Z2ggYG5kb19xdWV1ZV9zdGFydGAgaW4gYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YCwgd2hpY2ggaXMgaXRzZWxmIGtpY2tlZCBvZmYgYnkgYG5zaW1fcXJlc2V0X3dyaXRlYC4gQWhhISBgbnNpbV9xcmVzZXRfd3JpdGVgIGlzIGEgZGVidWdmcyB3cml0ZSBmdW5jdGlvbi4uLiBUaGF0IHNlZW1zIGhpZ2hseSBzcGVjaWZpYy5cblxuTm93LCBhIGRlYnVnZnMgd3JpdGUgaW1wbGllcyB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgcHJpbWFyaWx5IGV4cG9zZWQgZm9yIHRlc3Rpbmcgb3IgZGlhZ25vc3RpYyBwdXJwb3Nlcy4gQnV0LCBJIG5lZWQgdG8gbWFrZSAqYWJzb2x1dGVseSogY2VydGFpbiBJIGhhdmVuJ3QgbWlzc2VkIGEgbW9yZSBjcml0aWNhbCBwYXRoLiBDb3VsZCB0aGVyZSBiZSBhbnkgb3RoZXIgd2F5IGBuZG9fcXVldWVfc3RhcnRgIGdldHMgdHJpZ2dlcmVkPyBOZWVkIHRvIGRvdWJsZS1jaGVjayBjYWxsZXJzIG9mIGBuZXRkZXZfcnhfcXVldWVfcmVjb25maWdgIGluIGBuZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuY2AgYWdhaW4uIEdvdHRhIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYSBjcnVjaWFsIGNvZGUgcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIxNjgsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDI6MTQuMzQ1Njc5OTAyWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODMyNzE0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXRkZXZfcnhfcXVldWVfcmVjb25maWdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM9OTE9Ym9vbCBuZXRpZl9yeHFfaGFzX21wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByeHFfaWR4KVxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtOTctXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6OTg6c3RhdGljIGludCBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy05OS1cXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgaW50IHJ4cV9pZHgsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz0xNzg9aW50IG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByeHFfaWR4KVxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTgyLVxcdG5ldGRldl9xdWV1ZV9jb25maWcoZGV2LCByeHFfaWR4LCBcXHUwMDI2cWNmZyk7XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTgzOlxcdHJldHVybiBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoZGV2LCByeHFfaWR4LCBcXHUwMDI2cWNmZywgXFx1MDAyNnFjZmcpO1xcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE4NC19XFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz0xODc9c3RhdGljIGludCBfX25ldGlmX21wX29wZW5fcnhxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByeHFfaWR4LFxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjMzLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjIzNDpcXHRyZXQgPSBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoZGV2LCByeHFfaWR4LCBcXHUwMDI2cWNmZ1swXSwgXFx1MDAyNnFjZmdbMV0pO1xcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTIzNS1cXHRpZiAocmV0KVxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM9Mjc4PXN0YXRpYyB2b2lkIF9fbmV0aWZfbXBfY2xvc2VfcnhxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByeHFfaWR4LFxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMzAxLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjMwMjpcXHRlcnIgPSBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoZGV2LCByeHFfaWR4LCBcXHUwMDI2cWNmZ1swXSwgXFx1MDAyNnFjZmdbMV0pO1xcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTMwMy1cXHRXQVJOX09OKGVyciBcXHUwMDI2XFx1MDAyNiBlcnIgIT0gLUVORVRET1dOKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDI6MTQuNDE0MDEwODlaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc0ODIyMjkxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIFN0YXRpYyBGdW5jdGlvbiBVc2FnZSBpbiB0aGUgTmV0d29yayBJbnRlcmZhY2UgQ29kZSoqXG5cbkFscmlnaHQsIHNvIEknbSBkaWdnaW5nIGludG8gdGhlc2UgYF9fbmV0aWZfbXBfb3Blbl9yeHFgIGFuZCBgX19uZXRpZl9tcF9jbG9zZV9yeHFgIGZ1bmN0aW9ucy4gVGhlIGtleSB0aGluZyBoZXJlIGlzIHRoYXQgdGhleSdyZSBkZWNsYXJlZCBhcyBgc3RhdGljYC4gVGhhdCBtZWFucyB0aGV5IGhhdmUgaW50ZXJuYWwgbGlua2FnZSwgYW5kIGFyZSBvbmx5IHZpc2libGUgd2l0aGluIHRoZSBjb21waWxhdGlvbiB1bml0IGluIHdoaWNoIHRoZXkncmUgZGVmaW5lZC4gVGhpcyBpcyBnb29kIHByYWN0aWNlIGZvciBlbmNhcHN1bGF0aW9uLCBidXQgaXQgYWxzbyBtZWFucyBJIGhhdmUgdG8gYmUgYSBsaXR0bGUgbW9yZSBkZWxpYmVyYXRlIGluIGZpZ3VyaW5nIG91dCB3aGVyZSB0aGV5J3JlIGJlaW5nIHVzZWQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIGdpdmVuIHRoZXkncmUgc3RhdGljLCB0aGUgY2FsbHMgdG8gdGhlc2UgZnVuY3Rpb25zIGhhdmUgdG8gYmUgd2l0aGluIHRoZSBzYW1lIHNvdXJjZSBmaWxlLlwiIExldCdzIHRyYWNlIHRoZWlyIHVzYWdlIGFuZCBzZWUgd2hlcmUgdGhleSdyZSBjYWxsZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoZWlyIGNhbGxzIHRvIGFzc2VzcyB0aGVpciBiZWhhdmlvdXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMjY5LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDI6MTkuMTYyMjM3NDg3WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTI0MzEwNDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19uZXRpZl9tcF9vcGVuX3J4cVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz0xODU9RVhQT1JUX1NZTUJPTF9OU19HUEwobmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnQsIFxcXCJORVRERVZfSU5URVJOQUxcXFwiKTtcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODYtXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTg3OnN0YXRpYyBpbnQgX19uZXRpZl9tcF9vcGVuX3J4cShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeCxcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODgtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwcF9tZW1vcnlfcHJvdmlkZXJfcGFyYW1zICpwLFxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM9MjQ1PWludCBuZXRpZl9tcF9vcGVuX3J4cShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeCxcXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTI2MC1cXHRpZiAoIW5ldGlmX3J4cV9pc19sZWFzZWQoZGV2LCByeHFfaWR4KSlcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoyNjE6XFx0XFx0cmV0dXJuIF9fbmV0aWZfbXBfb3Blbl9yeHEoZGV2LCByeHFfaWR4LCBwLCBleHRhY2spO1xcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTI2Mi1cXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTI3Mi1cXHRuZXRkZXZfbG9jayhkZXYpO1xcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjI3MzpcXHRyZXQgPSBfX25ldGlmX21wX29wZW5fcnhxKGRldiwgcnhxX2lkeCwgcCwgZXh0YWNrKTtcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNzQtXFx0bmV0ZGV2X3VubG9jayhkZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjoxOS40MTQ2NzM0MTlaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc1ODQyODMxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqVmVyaWZ5aW5nIHRoZSBFeHBvcnQgb2YgYG5ldGlmX21wX29wZW5fcnhxYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG5ldGlmX21wX29wZW5fcnhxYCBmdW5jdGlvbiBjYWxsLCBhbmQgdGhlIHF1ZXN0aW9uIHRoYXQgaW1tZWRpYXRlbHkgcG9wcyBpbnRvIG15IGhlYWQgaXM6ICpJcyB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5IGV4cG9ydGVkPyogSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGl0J3MgYWNjZXNzaWJsZSB3aGVyZSBpdCdzIGJlaW5nIHVzZWQuIEkgY2FuJ3QganVzdCBhc3N1bWUgaXQncyBwdWJsaWNseSBhdmFpbGFibGUgYW5kIHVzYWJsZSBvdXRzaWRlIG9mIGl0cyBvcmlnaW5hbCBtb2R1bGUuIFRoaXMgaXMgYSBjcnVjaWFsIGZpcnN0IHN0ZXAgaW4gZGVidWdnaW5nIG9yIHVuZGVyc3RhbmRpbmcgdGhlIGNvZGUncyBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgaXQgaGFzIGJlZW4gZXhwbGljaXRseSBtYWRlIGF2YWlsYWJsZSwgcHJvYmFibHkgdGhyb3VnaCBhIHN5bWJvbCB0YWJsZSBvciBzb21lIG90aGVyIG1lY2hhbmlzbSBpbiB0aGlzIGtlcm5lbCBidWlsZCBvciBwcm9qZWN0LiBJZiBpdCBpc24ndCBleHBvcnRlZCwgdGhhdCB3b3VsZCBsaWtlbHkgZXhwbGFpbiBhbnkgaXNzdWVzIEknbSBzZWVpbmcgd2l0aCBpdHMgdXNhZ2UuIFNvLCB0aW1lIHRvIGNoZWNrIHRoZSBzeW1ib2wgZXhwb3J0IGxpc3RzLCBvciB0aGUgcmVsZXZhbnQgaGVhZGVyIGZpbGVzLCBhbmQgbWFrZSBzdXJlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBpbmRlZWQgZGVjbGFyZWQgYXMgc29tZXRoaW5nIHRoYXQgY2FuIGJlIGNhbGxlZCBmcm9tIHRoaXMgc2NvcGUuIExldCdzIGRpZyBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM5MjksIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjoyNS4xNzMxMDUzMTZaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2ODAwNzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ldGlmX21wX29wZW5fcnhxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTE4NT1FWFBPUlRfU1lNQk9MX05TX0dQTChuZXRkZXZfcnhfcXVldWVfcmVzdGFydCwgXFxcIk5FVERFVl9JTlRFUk5BTFxcXCIpO1xcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE4Ni1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxODc6c3RhdGljIGludCBfX25ldGlmX21wX29wZW5fcnhxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByeHFfaWR4LFxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE4OC1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHBwX21lbW9yeV9wcm92aWRlcl9wYXJhbXMgKnAsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNDQtXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjQ1OmludCBuZXRpZl9tcF9vcGVuX3J4cShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeCxcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNDYtXFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IHBwX21lbW9yeV9wcm92aWRlcl9wYXJhbXMgKnAsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNjAtXFx0aWYgKCFuZXRpZl9yeHFfaXNfbGVhc2VkKGRldiwgcnhxX2lkeCkpXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjYxOlxcdFxcdHJldHVybiBfX25ldGlmX21wX29wZW5fcnhxKGRldiwgcnhxX2lkeCwgcCwgZXh0YWNrKTtcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNjItXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNzItXFx0bmV0ZGV2X2xvY2soZGV2KTtcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoyNzM6XFx0cmV0ID0gX19uZXRpZl9tcF9vcGVuX3J4cShkZXYsIHJ4cV9pZHgsIHAsIGV4dGFjayk7XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjc0LVxcdG5ldGRldl91bmxvY2soZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDI6MjUuMjI5OTExOTM0WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNDM2NDY4NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIENhbGwgU2l0ZXMgb2YgYG5ldGlmX21wX29wZW5fcnhxYCoqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHNlZSB0aGUgY29udGV4dCBvZiB0aGlzIGBuZXRpZl9tcF9vcGVuX3J4cWAgZnVuY3Rpb24uIE15IGluc3RpbmN0IGlzIHRvIHRyYWNlIGl0cyBjYWxsIHNpdGVzLiBLbm93aW5nIHdoZXJlIGl0J3MgKnVzZWQqIHdpbGwgZ2l2ZSBtZSBhIGh1Z2UgYW1vdW50IG9mIGluZm9ybWF0aW9uIGFib3V0IGl0cyBwdXJwb3NlIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIG5ldHdvcmsgaW50ZXJmYWNlIG11bHRpLXF1ZXVlIG1hbmFnZW1lbnQgZnJhbWV3b3JrLiBJJ20gdGhpbmtpbmcgSSdsbCBzdGFydCB3aXRoIGEgc3RyYWlnaHRmb3J3YXJkIGNvZGUgc2VhcmNoLiBQZXJoYXBzIGEgZ3JlcCBvciBhIHNpbWlsYXIgdG9vbCB0byBwaW5wb2ludCBhbGwgaW5zdGFuY2VzIG9mIGNhbGxzIHRvIHRoYXQgc3BlY2lmaWMgZnVuY3Rpb24gbmFtZS4gVGhpcyB3aWxsIGhvcGVmdWxseSBxdWlja2x5IHJldmVhbCB0aGUgcmVsZXZhbnQgcGFydHMgb2YgdGhlIGNvZGUuIE9uY2UgSSBmaW5kIHRob3NlIGNhbGxzLCBJIHdpbGwgc3RhcnQgdG8gdW5wYWNrIHRoZSBsb2dpYyBhcm91bmQgZWFjaCBjYWxsLCBzbyB0aGF0IEkgY2FuIGZpZ3VyZSBvdXQgdGhlIGNvbnRyb2wgZmxvdywgYW5kIHdoYXQgdGhlIGRlcGVuZGVuY2llcyBtaWdodCBiZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSB0b28sIHNvIEknbGwgYWxzbyBjaGVjayBpdHMgZGVmaW5pdGlvbiB0byBzZWUgd2hhdCBhcmd1bWVudHMgaXQgZXhwZWN0cy4gSSBiZXQgdGhlIGFyZ3VtZW50cyBjYW4gZ2l2ZSBtZSBjbHVlcyBhYm91dCB0aGUgc3BlY2lmaWMgZGF0YSBpdCB3b3JrcyBvbiwgYW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gb3RoZXIgZnVuY3Rpb25zIGluIHRoZSBkcml2ZXIsIG9yIG1heWJlIGluIHRoZSBjb3JlIG5ldHdvcmsgc3RhY2suIFRoaXMgaW52ZXN0aWdhdGlvbiB3aWxsIGxlYWQgbWUgdG8gYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIHJlY2VpdmUgcXVldWUgaXMgb3BlbmVkIGFuZCBtYW5hZ2VkIHdpdGhpbiB0aGlzIGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDY1MiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAyOjI5LjM3MzU2MjcxOVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI4MzYzMDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ldGlmX21wX29wZW5fcnhxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NvcmUvZGV2bWVtLmM9MTU0PWludCBuZXRfZGV2bWVtX2JpbmRfZG1hYnVmX3RvX3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiByeHFfaWR4LFxcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmMtMTY1LVxcbm5ldC9jb3JlL2Rldm1lbS5jOjE2NjpcXHRlcnIgPSBuZXRpZl9tcF9vcGVuX3J4cShkZXYsIHJ4cV9pZHgsIFxcdTAwMjZtcF9wYXJhbXMsIGV4dGFjayk7XFxubmV0L2NvcmUvZGV2bWVtLmMtMTY3LVxcdGlmIChlcnIpXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz0xODU9RVhQT1JUX1NZTUJPTF9OU19HUEwobmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnQsIFxcXCJORVRERVZfSU5URVJOQUxcXFwiKTtcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODYtXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTg3OnN0YXRpYyBpbnQgX19uZXRpZl9tcF9vcGVuX3J4cShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeCxcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODgtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwcF9tZW1vcnlfcHJvdmlkZXJfcGFyYW1zICpwLFxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjQ0LVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjI0NTppbnQgbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjQ2LVxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBwcF9tZW1vcnlfcHJvdmlkZXJfcGFyYW1zICpwLFxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjYwLVxcdGlmICghbmV0aWZfcnhxX2lzX2xlYXNlZChkZXYsIHJ4cV9pZHgpKVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjI2MTpcXHRcXHRyZXR1cm4gX19uZXRpZl9tcF9vcGVuX3J4cShkZXYsIHJ4cV9pZHgsIHAsIGV4dGFjayk7XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjYyLVxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjcyLVxcdG5ldGRldl9sb2NrKGRldik7XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjczOlxcdHJldCA9IF9fbmV0aWZfbXBfb3Blbl9yeHEoZGV2LCByeHFfaWR4LCBwLCBleHRhY2spO1xcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTI3NC1cXHRuZXRkZXZfdW5sb2NrKGRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAyOjI5LjUwMTkzMTYyNVoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDkwMjYyMjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBuZXRfZGV2bWVtX2JpbmRfZG1hYnVmX3RvX3F1ZXVlYCBJbnRlcmFjdGlvbioqXG5cbk9rYXksIHNvIGBuZXRfZGV2bWVtX2JpbmRfZG1hYnVmX3RvX3F1ZXVlYCBpcyBiZWluZyB0cmlnZ2VyZWQgZnJvbSBuZXRsaW5rLCB3aGljaCBtZWFucyB0aGUgYG5kb19xdWV1ZV9zdGFydGAgZnVuY3Rpb24gY2FuIGJlIGluZGlyZWN0bHkgY2FsbGVkIHRocm91Z2ggYSBkZXZtZW0gYmluZCBvcGVyYXRpb24gaW5pdGlhdGVkIHZpYSBuZXRsaW5rLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGFuZCBwcm92aWRlcyBhIHBvdGVudGlhbCBuZXcgYXR0YWNrIHZlY3RvciBvciBhdCBsZWFzdCBhIG5ldyBwYXRoIGZvciB0cmlnZ2VyaW5nIHRoaXMgZnVuY3Rpb24uIFRoZSBwYXRjaCBpbiBxdWVzdGlvbiBzZWVtcyB0byBiZSBmb2N1c2VkIG9uIG1vZGlmeWluZyB0aGUgYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9kZWxfbmFwaWAgZnVuY3Rpb25zLCBzdWdnZXN0aW5nIGl0J3MgZGlyZWN0bHkgaW1wYWN0aW5nIHRoZSBuZXR3b3JrIHNpbXVsYXRvcidzIHF1ZXVpbmcgb3IgTkFQSSAobmV0d29yayBBUEkpIGhhbmRsaW5nLiBHaXZlbiB0aGUgcG90ZW50aWFsIGltcGFjdCBhbmQgdGhlIGZ1bmN0aW9uYWwgbmF0dXJlIG9mIHRoZSBwYXRjaCwgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhlc2UgY2hhbmdlcyBhcmUgaW5kZWVkIHdvcnRoIHNvbWUgc2VyaW91cyBmdXp6aW5nLiBOb3csIGxldCdzIGp1c3QgY29uZmlybSB0aGUgbmVjZXNzYXJ5IGNvbmZpZyBvcHRpb25zIHRvIGVuYWJsZSBhbmQgd29yayB3aXRoIG5ldGRldnNpbS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGVudmlyb25tZW50IHRvIHNldHVwIHRoZSBmdXp6aW5nIGNvcnJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU1MjksIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjozMy41OTIxOTgwMjJaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNjAxNzEwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUREVWU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTYwMj1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWctNjAzLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6NjA0OmNvbmZpZyBORVRERVZTSU1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwNS1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjozMy44MTgyMTkyNzVaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc0NDc4OTU3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDdXJyZW50IFRoaW5raW5nIEFib3V0IHRoZSBOZXRkZXZzaW0gTW9kdWxlKipcblxuT2theSwgc28gSSdtIGZvY3VzaW5nIG9uIGBORVRERVZTSU1gIGFzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBmbGFnLCB0aGF04oCZcyBteSBzdGFydGluZyBwb2ludC4gTm93LCBsZXTigJlzIGRpZyBhIGJpdCBkZWVwZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc2ltdWxhdG9yIGludGVyYWN0cyB3aXRoIHRoZSBuZXR3b3JrIHN0YWNrLiBJIGtub3cgYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCBpcyBpbiBgbmV0L2NvcmUvZGV2LmNgLCBzbyB0aGF04oCZcyBhIHBvdGVudGlhbCBpbnRlcmFjdGlvbiBwb2ludC4gQmFjayB0byBgTkVUREVWU0lNYCBiZWluZyB0aGUgY2VudHJhbCBjb25maWcsIHRoYXQgc2VlbXMgc29saWQuXG5cbkFscmlnaHQsIGxldCdzIHJldmlzaXQgYG5zaW1fcXJlc2V0X3dyaXRlYC4gSXTigJlzIGEgZGVidWdmcyBmaWxlIHdyaXRlLCB3aGljaCBzdWdnZXN0cyBhIHdheSB0byBpbnRlcmFjdCB3aXRoIGFuZCBjb250cm9sIHRoZSBzaW11bGF0b3IuIEFyZSB0aGVyZSBvdGhlciBhcmVhcyBvZiBpbnRlcmVzdD8gYG5zaW1fcXVldWVfc3RhcnRgIGxvb2tzIGxpa2UgYSBrZXkgZnVuY3Rpb24sIGJ1dCBpdCdzIHN0YXRpYywgc28gSSBjYW4ndCBkaXJlY3RseSB0YXJnZXQgaXQuIGBuc2ltX2NyZWF0ZWAgYW5kIGBuc2ltX2Rlc3Ryb3lgIGFyZSBleGNlbGxlbnQgY2FuZGlkYXRlczsgdGhleSBoYW5kbGUgdGhlIGxpZmVjeWNsZSBvZiB0aGUgc2ltdWxhdGVkIGVudGl0eS4gYG5zaW1fZHJ2X3BvcnRfYWRkYCBpcyBhbHNvIHByb21pc2luZywgd2hpY2ggbWF5IGJlIGhvdyB0aGUgc2ltdWxhdGVkIHBvcnQgaXMgaGFuZGxlZC4gSSBuZWVkIHRvIGNvbmZpcm0gYG5zaW1fcXJlc2V0X3dyaXRlYCBpcyBzdGF0aWMuIE9oLCBpdCBpcy4gXG5cbkxldCdzIGNoZWNrIGlmIGBuc2ltX2NyZWF0ZWAgaXMgc3RhdGljLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTk0NywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjozOS41NjMwMTIxNzFaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxNjkyMTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5zaW1fY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9NDA1PXN0YXRpYyBpbnQgbnNpbV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy00MTYtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjQxNzpzdGF0aWMgaW50IG5zaW1fY3JlYXRlX3BhZ2VfcG9vbChzdHJ1Y3QgcGFnZV9wb29sICoqcCwgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy00MTgte1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTQzOD1zdGF0aWMgaW50IG5zaW1faW5pdF9uYXBpKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQ1Mi1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6NDUzOlxcdFxcdGVyciA9IG5zaW1fY3JlYXRlX3BhZ2VfcG9vbChcXHUwMDI2cnEtXFx1MDAzZXBhZ2VfcG9vbCwgXFx1MDAyNnJxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNDU0LVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9NzUxPW5zaW1fcXVldWVfbWVtX2FsbG9jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNzY0LVxcdFxcdFxcdHJldHVybiAtRU5FVERPV047XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjc2NTpcXHRcXHRyZXR1cm4gbnNpbV9jcmVhdGVfcGFnZV9wb29sKFxcdTAwMjZxbWVtLVxcdTAwM2VwcCwgXFx1MDAyNm5zLVxcdTAwM2VycVtpZHhdLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNzY2LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy03NzEtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjc3MjpcXHRlcnIgPSBuc2ltX2NyZWF0ZV9wYWdlX3Bvb2woXFx1MDAyNnFtZW0tXFx1MDAzZXJxLVxcdTAwM2VwYWdlX3Bvb2wsIFxcdTAwMjZxbWVtLVxcdTAwM2VycS1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTc3My1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTExMjI9c3RhdGljIHZvaWQgbnNpbV9leGl0X25ldGRldnNpbShzdHJ1Y3QgbmV0ZGV2c2ltICpucylcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy0xMTI3LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzoxMTI4OnN0cnVjdCBuZXRkZXZzaW0gKm5zaW1fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTExMjktXFx0XFx0XFx0ICAgICAgc3RydWN0IG5zaW1fZGV2X3BvcnQgKm5zaW1fZGV2X3BvcnQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAyOjM5LjYyNDcxMTI1OVoiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzQwMjg2MjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBpbnRlcm5hbCBwcm9jZXNzOlxuXG4qKkludGVybmFsIEFzc2Vzc21lbnQgb2YgTmV0U2ltIERyaXZlciBTdHJ1Y3R1cmUqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgTmV0U2ltIGZ1bmN0aW9ucywgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGBuc2ltX2NyZWF0ZWAsIGBuc2ltX2Rlc3Ryb3lgLCBhbmQgYG5zaW1fZHJ2X3BvcnRfYWRkYCBhcmVuJ3QgZGVmaW5lZCBhcyBgc3RhdGljYC4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyBhIHBvdGVudGlhbCBkZXNpZ24gY2hhcmFjdGVyaXN0aWM7IHRoZXkncmUgbGlrZWx5IGludGVuZGVkIHRvIGJlIGFjY2Vzc2libGUgb3V0c2lkZSB0aGUgc3BlY2lmaWMgbW9kdWxlIHRoZXkncmUgZGVmaW5lZCBpbi4gVGhhdCBtYWtlcyBzZW5zZSwgZ2l2ZW4gTmV0U2ltJ3Mgb3ZlcmFsbCBwdXJwb3NlOiB0byBzaW11bGF0ZSBuZXR3b3JrIGJlaGF2aW9yIGFuZCBpbnRlcmFjdCB3aXRoIHBvdGVudGlhbGx5IG90aGVyIHBhcnRzIG9mIGEgbGFyZ2VyIHN5c3RlbS5cblxuTm93LCBJIG5lZWQgdG8gc2VlIGlmIHRoZXJlIGlzIGFub3RoZXIgZnVuY3Rpb24gdGhhdCBpcyBhIGNhbmRpZGF0ZSB0byByZXBsYWNlIHNvbWV0aGluZyB0aGF0IGRvZXMgbm90IG5lZWQgdG8gYmUgc3RhdGljLiBIbW0sIGlzIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGAgYSBnb29kIGNhbmRpZGF0ZSB0byB1c2UgYXMgcmVwbGFjZW1lbnQ/IEkgbmVlZCB0byBsb29rIGludG8gdGhpcyBtb3JlIGRlZXBseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcwNTksIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjo0My45NjUwMDA5MDlaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMjkzMjQ1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXRkZXZfcnhfcXVldWVfcmVzdGFydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz05OD1zdGF0aWMgaW50IG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTc3LVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjE3ODppbnQgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgpXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTc5LXtcXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE4NC19XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTg1OkVYUE9SVF9TWU1CT0xfTlNfR1BMKG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0LCBcXFwiTkVUREVWX0lOVEVSTkFMXFxcIik7XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTg2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjo0NC4wOTc5Mzg5NTVaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY3NzAyNDMyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIERyaXZlciBSZXN0YXJ0IExvZ2ljKipcblxuQWxyaWdodCwgc28gYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YCBpcyBkZWZpbml0ZWx5IGV4cG9ydGVkLCBnb29kLiBOb3csIGxldCdzIHBpdm90IHRvIGV4YW1pbmUgYG5ldGlmX3F1ZXVlX3NldF9uYXBpYC4gSXQncyBsaWtlbHkgdGhhdCBmdW5jdGlvbiBpcyBpbnZvbHZlZCBpbiBtYW5hZ2luZyB0aGUgaW50ZXJwbGF5IGJldHdlZW4gTkFQSSBhbmQgdGhlIHJlc3RhcnQgbWVjaGFuaXNtLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQncyB1c2VkIHdpdGhpbiB0aGUgYnJvYWRlciBjb250ZXh0IG9mIHRoZSBuZXR3b3JrIGRyaXZlcidzIGludGVycnVwdCBoYW5kbGluZyBhbmQgaG93IGl0J3MgaW5mbHVlbmNpbmcgcXVldWUgc3RhdGUgdHJhbnNpdGlvbnMgd2hlbiBOQVBJIGlzIGVuYWJsZWQsIGdpdmVuIHRoYXQgdGhlIGluaXRpYWwgdGhvdWdodCBjbGVhcmx5IGNvbmZpcm1zIHRoZSBhdmFpbGFiaWxpdHkgb2YgYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YC4gSSBhbnRpY2lwYXRlIHRoYXQgYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCBtaWdodCBiZSBzZXR0aW5nIHVwIHRoZSBOQVBJIGNvbnRleHQgZm9yIHRoZSBxdWV1ZSwgcG9zc2libHkgc2V0dGluZyBvciBjbGVhcmluZyB0aGUgaW50ZXJydXB0IGVuYWJsZSBmbGFncyBmb3IgdGhlIGhhcmR3YXJlLCBvciBtYXliZSBpdCdzIGRvaW5nIHNvbWV0aGluZyBtb3JlIG51YW5jZWQgdG8gc3luY2hyb25pemUgdGhlIHN0YXRlcy4gSSdsbCBmb2N1cyBvbiBob3cgdGhlIGludGVycGxheSBvZiB0aGVzZSB0d28gcm91dGluZXMgZHJpdmVzIHRoZSBjb3JlIGxvZ2ljIGZvciB0aGUgcmVzdGFydC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc1NTcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjo0OC43NzQ5NjcwMTNaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMDAyNzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ldGlmX3F1ZXVlX3NldF9uYXBpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL2Rldi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL2Rldi5jPTcyODk9RVhQT1JUX1NZTUJPTChuZXRpZl90aHJlYWRlZF9lbmFibGUpO1xcbi0tXFxubmV0L2NvcmUvZGV2LmMtNzI5MS0vKipcXG5uZXQvY29yZS9kZXYuYzo3MjkyOiAqIG5ldGlmX3F1ZXVlX3NldF9uYXBpIC0gQXNzb2NpYXRlIHF1ZXVlIHdpdGggdGhlIG5hcGlcXG5uZXQvY29yZS9kZXYuYy03MjkzLSAqIEBkZXY6IGRldmljZSB0byB3aGljaCBOQVBJIGFuZCBxdWV1ZSBiZWxvbmdcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTczMDEtICovXFxubmV0L2NvcmUvZGV2LmM6NzMwMjp2b2lkIG5ldGlmX3F1ZXVlX3NldF9uYXBpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBxdWV1ZV9pbmRleCxcXG5uZXQvY29yZS9kZXYuYy03MzAzLVxcdFxcdFxcdCAgZW51bSBuZXRkZXZfcXVldWVfdHlwZSB0eXBlLCBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGkpXFxuLS1cXG5uZXQvY29yZS9kZXYuYy03MzI0LX1cXG5uZXQvY29yZS9kZXYuYzo3MzI1OkVYUE9SVF9TWU1CT0wobmV0aWZfcXVldWVfc2V0X25hcGkpO1xcbm5ldC9jb3JlL2Rldi5jLTczMjYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAyOjQ4LjgzNjk4MDc5MloiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjQyMTEzODQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgaXMgZGVmaW5pdGVseSBhbiBleHBvcnRlZCBmdW5jdGlvbi4gR29vZCwgZ29vZC4gVGhhdCBuYXJyb3dzIGRvd24gbXkgZm9jdXMuIE5vdywgdGhlIGtleSBmdW5jdGlvbnMgdG8gcmVhbGx5IGRpZyBpbnRvIGhlcmUgYXJlOiBgbnNpbV9jcmVhdGVgLCBgbnNpbV9kZXN0cm95YCwgYG5zaW1fZHJ2X3BvcnRfYWRkYCwgYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YCwgYW5kIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAuXG5cbkxldCdzIHNlZSwgbm8sIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgYW5kIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGAgYXJlbid0IGhvdCBwYXRocy4gVGhleSBhcmUgaW52b2x2ZWQgaW4gcXVldWUgc2V0dXAgYW5kIHRlYXJkb3duLCBub3QgdGhlIGNvcmUgZGF0YSBwYXRoLiBUaGF0J3MgYSByZWxpZWYsIGxlc3MgdG8gd29ycnkgYWJvdXQgdGhlcmUuIExldCdzIHJldmlzaXQgYG5zaW1fZHJ2X3BvcnRfYWRkYCAtIEkgc2hvdWxkIGdpdmUgaXQgYW5vdGhlciBsb29rLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODA5NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjo1My40NzkwOTgzODJaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NDc3OTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5zaW1fZHJ2X3BvcnRfYWRkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTY1PW5ld19wb3J0X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtOTUtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjk2OlxcdHJldCA9IG5zaW1fZHJ2X3BvcnRfYWRkKG5zaW1fYnVzX2RldiwgTlNJTV9ERVZfUE9SVF9UWVBFX1BGLCBwb3J0X2luZGV4LFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy05Ny1cXHRcXHRcXHRcXHRhZGRyX3NldCA/IGV0aF9hZGRyIDogTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM9MTgxNz1fX25zaW1fZGV2X3BvcnRfbG9va3VwKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsIGVudW0gbnNpbV9kZXZfcG9ydF90eXBlIHR5cGUsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTgyOC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTgyOTppbnQgbnNpbV9kcnZfcG9ydF9hZGQoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LCBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xODMwLVxcdFxcdCAgICAgIHVuc2lnbmVkIGludCBwb3J0X2luZGV4LCB1OCBwZXJtX2FkZHJbRVRIX0FMRU5dKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oPTM5Mj12b2lkIG5zaW1fZHJ2X3JlbW92ZShzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozOTM6aW50IG5zaW1fZHJ2X3BvcnRfYWRkKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldixcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzk0LVxcdFxcdCAgICAgIGVudW0gbnNpbV9kZXZfcG9ydF90eXBlIHR5cGUsIHVuc2lnbmVkIGludCBwb3J0X2luZGV4LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjo1My41MzQ1ODIzNVoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzkxNzY2ODc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgY29uc2lkZXJpbmcgbXkgZXhwZXJ0aXNlOlxuXG4qKkZ1enppbmcgRGVidWdmcyB3aXRoIGBuc2ltX3FyZXNldF93cml0ZWAqKlxuXG5SaWdodCwgc28gdGhpcyBmdW5jdGlvbiwgYG5zaW1fcXJlc2V0X3dyaXRlYCwgaXQncyBleHBvcnRlZCBmcm9tIHdpdGhpbiB0aGUgbW9kdWxlLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSG9sZCBvbi4uLiBpc24ndCB0aGlzIGZ1bmN0aW9uICpwYXJ0KiBvZiBkZWJ1Z2ZzLCBhIHdyaXRlIG9wZXJhdGlvbj8gQW5kIGlmIGl0IGlzLi4uICpjb3VsZCogd2UgZnV6eiBkZWJ1Z2ZzIHdyaXRlcz8gVGhhdCdzIHRoZSBxdWVzdGlvbi5cblxuVGhlIGFuc3dlciwgbG9naWNhbGx5LCB3b3VsZCBiZSB0aGF0IHllcywgb2YgY291cnNlLCBzeXprYWxsZXIgKmNhbiogZnV6eiBkZWJ1Z2ZzIHdyaXRlcyBpZiB0aGUgdGFyZ2V0IGZpbGUgaXMga25vd24uIFRoZSBpc3N1ZSwgYXMgYWx3YXlzLCB3aWxsIGJlIHRoZSBtZWFucyBvZiBkaXNjb3ZlcnkuIFRoaXMgd291bGQgYmUgYSBwZXJmZWN0IG9wcG9ydHVuaXR5LCBhbmQgYW4gZXhjaXRpbmcgdmVjdG9yLCBpZiBvbmx5IHdlIGNvdWxkIGZpbmQgYSB3YXkuXG5cblRoZSBwcm9ibGVtLCBhcyBJIHJlY2FsbCBmcm9tIG15IHByZXZpb3VzIHJlc2VhcmNoLCBpcyB0aGF0IHdlIGNhbid0IGp1c3QgYWRkIHN0YXRpYyBmdW5jdGlvbnMgdG8gdGhlIGBGb2N1c1N5bWJvbHNgIGxpc3QsIHNvIHRoYXQncyBhIGRlYWQgZW5kLiBXZSBuZWVkIGEgd2F5IHRvIGluc3RydW1lbnQgdGhpcyBmdXJ0aGVyLCBidXQgdGhlIG1lYW5zIG9mIGRvaW5nIHNvIGlzIG5vdCBpbW1lZGlhdGVseSBjbGVhci5cblxuU28sIGxldCdzIGJhY2sgdXAgYSBzdGVwLiBMZXQncyBzZWUgaWYgd2UgY2FuIGdldCBhIGhhbmRsZSBvbiBpdC4gTGV0J3Mgc3RhcnQgd2l0aCBhIHRob3JvdWdoIGNoZWNrIG9mIHRoZSBtb2R1bGUsIHNwZWNpZmljYWxseSBgbnNpbV9kcnZfcG9ydF9hZGRgIGFuZCBgbnNpbV9kcnZfcG9ydF9kZWxgLiBQZXJoYXBzIHRoZXJlJ3MgYW4gb2J2aW91cyBsaW5rIHdlIGNhbiB0cmFjZSB0aGF0IHdlJ3ZlIG1pc3NlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg4OTIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjo1OS4zMjYzNTI4MDZaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4ODk4OTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5zaW1fZHJ2X3BvcnRfZGVsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTEwND1kZWxfcG9ydF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTExNy1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTE4OlxcdHJldCA9IG5zaW1fZHJ2X3BvcnRfZGVsKG5zaW1fYnVzX2RldiwgTlNJTV9ERVZfUE9SVF9UWVBFX1BGLCBwb3J0X2luZGV4KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTE5LVxcdHJldHVybiByZXQgPyByZXQgOiBjb3VudDtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYz0xODI5PWludCBuc2ltX2Rydl9wb3J0X2FkZChzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsIGVudW0gbnNpbV9kZXZfcG9ydF90eXBlIHR5cGUsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTg0My1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTg0NDppbnQgbnNpbV9kcnZfcG9ydF9kZWwoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LCBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xODQ1LVxcdFxcdCAgICAgIHVuc2lnbmVkIGludCBwb3J0X2luZGV4KVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oPTM5Mz1pbnQgbnNpbV9kcnZfcG9ydF9hZGQoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM5NS1cXHRcXHQgICAgICB1OCBwZXJtX2FkZHJbRVRIX0FMRU5dKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mzk2OmludCBuc2ltX2Rydl9wb3J0X2RlbChzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM5Ny1cXHRcXHQgICAgICBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjo1OS40MDUyNTU4NTRaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ4MjMzNzA1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBOZXRkZXZzaW0gRHJpdmVyIEZvY3VzIFN5bWJvbHMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBuc2ltX2Rydl9wb3J0X2RlbGAgaXMgaW5kZWVkIGFuIGV4cG9ydGVkIHN5bWJvbC4gVGhhdCdzIGdvb2QuXG5cblRoZXJlZm9yZSwgbXkgbGlzdCBvZiBcIkZvY3VzU3ltYm9sc1wiIOKAkyB0aGUga2V5IGZ1bmN0aW9ucyBkcml2aW5nIG15IGFuYWx5c2lzIG9mIHRoZSBgbmV0ZGV2c2ltYCBkcml2ZXIg4oCTIG5lZWRzIHRvIGluY2x1ZGU6XG5cbiogICBgbnNpbV9jcmVhdGVgXG4qICAgYG5zaW1fZGVzdHJveWBcbiogICBgbnNpbV9kcnZfcG9ydF9hZGRgXG4qICAgYG5zaW1fZHJ2X3BvcnRfZGVsYFxuKiAgIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGBcbiogICBgbmV0aWZfcXVldWVfc2V0X25hcGlgXG5cbk5vdywgbGV0IG1lIGp1c3QgY29uZmlybSB0aGUgc3VpdGFiaWxpdHkgb2YgYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCBhbmQgYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YC4gQm90aCBhcmUgY2xlYXJseSBBUEkgZnVuY3Rpb25zOyBzbyB0aGV5J3JlIGdvb2QgY2FuZGlkYXRlcyBmb3IgdGhlIGFuYWx5c2lzLlxuXG5GaW5hbGx5LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55IGNvbmZpZ3VyYXRpb25zLiBBbHJpZ2h0LCBhIHF1aWNrIGNoZWNrIHRlbGxzIG1lIHRoYXQgYE5FVERFVlNJTWAgaXMgaW5kZWVkIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBgbmV0ZGV2c2ltYCBkcml2ZXIuIEknbGwgbmVlZCB0byByZW1lbWJlciB0aGF0LiBMZXQgbWUganVzdCBzY2FuIGFnYWluIGZvciBhbnkgb3RoZXIgcG90ZW50aWFsbHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NzcxLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAzOjAzLjg4NzU5NjgxOVoiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU2MzU5NzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRERVZTSU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9NjAyPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MDMtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDQ6Y29uZmlnIE5FVERFVlNJTVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAzOjA0LjM0Mzk2NjE1NVoiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjcyMTI5ODkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRlcGVuZGVuY3kgRGVlcCBEaXZlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYE5FVERFVlNJTWAuIEJlZm9yZSBJIGdldCBpbnRvIGFueXRoaW5nIHNwZWNpZmljLCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBtYXAgb3V0IHRoZSBkZXBlbmRlbmN5IGdyYXBoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgdGhpbmcgbGVhbnMgb24uIFdoYXQgYXJlIHRoZSBjb3JlIGxpYnJhcmllcywgdGhlIHN1cHBvcnRpbmcgbW9kdWxlcywgdGhlIGV4dGVybmFsIEFQSXMgaXQncyBjYWxsaW5nPyBXaGF0IHZlcnNpb25zIGFyZSBzcGVjaWZpZWQsIGFuZCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRob3NlIHZlcnNpb24gY29uc3RyYWludHM/IEEgY29tcHJlaGVuc2l2ZSBkZXBlbmRlbmN5IGNoZWNrIGlzIGNydWNpYWwgaGVyZS4gQXJlIHRoZXJlIGFueSBrbm93biB2dWxuZXJhYmlsaXRpZXMgaW4gYW55IG9mIHRoZSBpbW1lZGlhdGUgb3IgdHJhbnNpdGl2ZSBkZXBlbmRlbmNpZXM/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyB0aGF0IG1pZ2h0IGFyaXNlIGRvd24gdGhlIGxpbmUgd2l0aCBvdGhlciBjb21wb25lbnRzIGluIHRoZSBzeXN0ZW0sIG9yIHdpdGggcGxhbm5lZCBmdXR1cmUgaW50ZWdyYXRpb24gd29yaz8gVGhpcyBpc24ndCBqdXN0IGFib3V0IGVuc3VyaW5nIHRoZSBjb2RlIGNvbXBpbGVzOyBpdCdzIGFib3V0IGFudGljaXBhdGluZyBwb3RlbnRpYWwgcnVudGltZSBpc3N1ZXMgYW5kIGVuc3VyaW5nIGxvbmctdGVybSBtYWludGFpbmFiaWxpdHkgYW5kIHNlY3VyaXR5LiBMZXQncyBzZWUgaG93IGRlZXAgdGhpcyByYWJiaXQgaG9sZSBnb2VzLiBJIHdhbnQgdG8gYnVpbGQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyBmb3VuZGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDM0NCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAzOjEwLjYxNjA5OTA3NloiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyODIwNjI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTY9bWVudWNvbmZpZyBORVRERVZJQ0VTXFxuZHJpdmVycy9uZXQvS2NvbmZpZy03LVxcdGRlZmF1bHQgeSBpZiBVTUxcXG5kcml2ZXJzL25ldC9LY29uZmlnOjg6XFx0ZGVwZW5kcyBvbiBORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTktXFx0Ym9vbCBcXFwiTmV0d29yayBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDE9Y29uZmlnIEJPTkRJTkdcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQyLVxcdHRyaXN0YXRlIFxcXCJCb25kaW5nIGRyaXZlciBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDM6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NDpcXHRkZXBlbmRzIG9uIFRMUyB8fCBUTFNfREVWSUNFPW5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NzQ9Y29uZmlnIFdJUkVHVUFSRFxcbmRyaXZlcnMvbmV0L0tjb25maWctNzUtXFx0dHJpc3RhdGUgXFxcIldpcmVHdWFyZCBzZWN1cmUgbmV0d29yayB0dW5uZWxcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo3NjpcXHRkZXBlbmRzIG9uIE5FVCBcXHUwMDI2XFx1MDAyNiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy03Ny1cXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9OTI9Y29uZmlnIFdJUkVHVUFSRF9ERUJVR1xcbmRyaXZlcnMvbmV0L0tjb25maWctOTMtXFx0Ym9vbCBcXFwiRGVidWdnaW5nIGNoZWNrcyBhbmQgdmVyYm9zZSBtZXNzYWdlc1xcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjk0OlxcdGRlcGVuZHMgb24gV0lSRUdVQVJEXFxuZHJpdmVycy9uZXQvS2NvbmZpZy05NS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTEwMz1jb25maWcgT1ZQTlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTA0LVxcdHRyaXN0YXRlIFxcXCJPcGVuVlBOIGRhdGEgY2hhbm5lbCBvZmZsb2FkXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTA1OlxcdGRlcGVuZHMgb24gTkVUIFxcdTAwMjZcXHUwMDI2IElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTEwNi1cXHRzZWxlY3QgRFNUX0NBQ0hFXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTEzNj1jb25maWcgTkVUX0ZDXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMzctXFx0Ym9vbCBcXFwiRmlicmUgQ2hhbm5lbCBkcml2ZXIgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjEzODpcXHRkZXBlbmRzIG9uIFNDU0kgXFx1MDAyNlxcdTAwMjYgUENJXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMzktXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0xNDk9Y29uZmlnIElGQlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTUwLVxcdHRyaXN0YXRlIFxcXCJJbnRlcm1lZGlhdGUgRnVuY3Rpb25hbCBCbG9jayBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTUxOlxcdGRlcGVuZHMgb24gTkVUX0FDVF9NSVJSRUQgfHwgTkZUX0ZXRF9ORVRERVZcXG5kcml2ZXJzL25ldC9LY29uZmlnLTE1Mi1cXHRzZWxlY3QgTkVUX1JFRElSRUNUXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTE3OT1jb25maWcgTUFDVlRBUFxcbmRyaXZlcnMvbmV0L0tjb25maWctMTgwLVxcdHRyaXN0YXRlIFxcXCJNQUMtVkxBTiBiYXNlZCB0YXAgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTgxOlxcdGRlcGVuZHMgb24gTUFDVkxBTlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTgyOlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMTgzLVxcdHNlbGVjdCBUQVBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MTkzPWNvbmZpZyBJUFZMQU5fTDNTXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoxOTQ6XFx0ZGVwZW5kcyBvbiBORVRGSUxURVJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5NTpcXHRkZXBlbmRzIG9uIElQVkxBTlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTk2LVxcdGRlZl9ib29sIHlcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MTk5PWNvbmZpZyBJUFZMQU5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiSVAtVkxBTiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjAxOlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjAyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MjE2PWNvbmZpZyBJUFZUQVBcXG5kcml2ZXJzL25ldC9LY29uZmlnLTIxNy1cXHR0cmlzdGF0ZSBcXFwiSVAtVkxBTiBiYXNlZCB0YXAgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjE4OlxcdGRlcGVuZHMgb24gSVBWTEFOXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyMTk6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMjAtXFx0c2VsZWN0IFRBUFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yMzA9Y29uZmlnIFZYTEFOXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMzEtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgZVh0ZW5zaWJsZSBMb2NhbCBBcmVhIE5ldHdvcmsgKFZYTEFOKVxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjIzMjpcXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzMy1cXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MjQ1PWNvbmZpZyBHRU5FVkVcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI0Ni1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBOZXR3b3JrIFZpcnR1YWxpemF0aW9uIEVuY2Fwc3VsYXRpb25cXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyNDc6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNDgtXFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTI2MD1jb25maWcgQkFSRVVEUFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjYxLVxcdHRyaXN0YXRlIFxcXCJCYXJlIFVEUCBFbmNhcHN1bGF0aW9uXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjYyOlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjYzLVxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNzI9Y29uZmlnIEdUUFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjczLVxcdHRyaXN0YXRlIFxcXCJHUFJTIFR1bm5lbGluZyBQcm90b2NvbCBkYXRhcGF0aCAoR1RQLVUpXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6Mjc0OlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjc1LVxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yODk9Y29uZmlnIFBGQ1BcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI5MC1cXHR0cmlzdGF0ZSBcXFwiUGFja2V0IEZvcndhcmRpbmcgQ29udHJvbCBQcm90b2NvbCAoUEZDUClcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyOTE6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yOTItXFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTMwMj1jb25maWcgQU1UXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDMtXFx0dHJpc3RhdGUgXFxcIkF1dG9tYXRpYyBNdWx0aWNhc3QgVHVubmVsaW5nIChBTVQpXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzA0OlxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBJUF9NVUxUSUNBU1RcXG5kcml2ZXJzL25ldC9LY29uZmlnLTMwNS1cXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MzI3PWNvbmZpZyBORVRDT05TT0xFXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMjgtXFx0dHJpc3RhdGUgXFxcIk5ldHdvcmsgY29uc29sZSBsb2dnaW5nIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozMjk6XFx0ZGVwZW5kcyBvbiBQUklOVEtcXG5kcml2ZXJzL25ldC9LY29uZmlnLTMzMC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTMzND1jb25maWcgTkVUQ09OU09MRV9EWU5BTUlDXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMzUtXFx0Ym9vbCBcXFwiRHluYW1pYyByZWNvbmZpZ3VyYXRpb24gb2YgbG9nZ2luZyB0YXJnZXRzXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzM2OlxcdGRlcGVuZHMgb24gTkVUQ09OU09MRSBcXHUwMDI2XFx1MDAyNiBTWVNGUyBcXHUwMDI2XFx1MDAyNiBDT05GSUdGU19GUyBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMzctXFx0XFx0XFx0IShORVRDT05TT0xFPXkgXFx1MDAyNlxcdTAwMjYgQ09ORklHRlNfRlM9bSlcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MzQ1PWNvbmZpZyBORVRDT05TT0xFX0VYVEVOREVEX0xPR1xcbmRyaXZlcnMvbmV0L0tjb25maWctMzQ2LVxcdGJvb2wgXFxcIlNldCBrZXJuZWwgZXh0ZW5kZWQgbWVzc2FnZSBieSBkZWZhdWx0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzQ3OlxcdGRlcGVuZHMgb24gTkVUQ09OU09MRVxcbmRyaXZlcnMvbmV0L0tjb25maWctMzQ4LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNTU9Y29uZmlnIE5FVENPTlNPTEVfUFJFUEVORF9SRUxFQVNFXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNTYtXFx0Ym9vbCBcXFwiUHJlcGVuZCBrZXJuZWwgcmVsZWFzZSB2ZXJzaW9uIGluIHRoZSBtZXNzYWdlIGJ5IGRlZmF1bHRcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozNTc6XFx0ZGVwZW5kcyBvbiBORVRDT05TT0xFX0VYVEVOREVEX0xPR1xcbmRyaXZlcnMvbmV0L0tjb25maWctMzU4LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNzM9Y29uZmlnIE5UQl9ORVRERVZcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM3NC1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBFdGhlcm5ldCBvdmVyIE5UQiBUcmFuc3BvcnRcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozNzU6XFx0ZGVwZW5kcyBvbiBOVEJfVFJBTlNQT1JUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNzYtXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNzc9Y29uZmlnIFJJT05FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMzc4LVxcdHRyaXN0YXRlIFxcXCJSYXBpZElPIEV0aGVybmV0IG92ZXIgbWVzc2FnaW5nIGRyaXZlciBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6Mzc5OlxcdGRlcGVuZHMgb24gUkFQSURJT1xcbmRyaXZlcnMvbmV0L0tjb25maWctMzgwLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MzgxPWNvbmZpZyBSSU9ORVRfVFhfU0laRVxcbmRyaXZlcnMvbmV0L0tjb25maWctMzgyLVxcdGludCBcXFwiTnVtYmVyIG9mIG91dGJvdW5kIHF1ZXVlIGVudHJpZXNcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozODM6XFx0ZGVwZW5kcyBvbiBSSU9ORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4NC1cXHRkZWZhdWx0IFxcXCIxMjhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTM4Nj1jb25maWcgUklPTkVUX1JYX1NJWkVcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4Ny1cXHRpbnQgXFxcIk51bWJlciBvZiBpbmJvdW5kIHF1ZXVlIGVudHJpZXNcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozODg6XFx0ZGVwZW5kcyBvbiBSSU9ORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4OS1cXHRkZWZhdWx0IFxcXCIxMjhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTM5MT1jb25maWcgVFVOXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zOTItXFx0dHJpc3RhdGUgXFxcIlVuaXZlcnNhbCBUVU4vVEFQIGRldmljZSBkcml2ZXIgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjM5MzpcXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM5NC1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDQzPWNvbmZpZyBWSVJUSU9fTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDQtXFx0dHJpc3RhdGUgXFxcIlZpcnRpbyBuZXR3b3JrIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ0NTpcXHRkZXBlbmRzIG9uIFZJUlRJT1xcbmRyaXZlcnMvbmV0L0tjb25maWctNDQ2LVxcdHNlbGVjdCBORVRfRkFJTE9WRVJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDYzPWNvbmZpZyBORVRLSVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ2NC1cXHRib29sIFxcXCJCUEYtcHJvZ3JhbW1hYmxlIG5ldHdvcmsgZGV2aWNlXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDY1OlxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ2Ni1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ3Mj1jb25maWcgTkVUX1ZSRlxcbmRyaXZlcnMvbmV0L0tjb25maWctNDczLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIFJvdXRpbmcgYW5kIEZvcndhcmRpbmcgKExpdGUpXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc0OlxcdGRlcGVuZHMgb24gSVBfTVVMVElQTEVfVEFCTEVTXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NzU6XFx0ZGVwZW5kcyBvbiBORVRfTDNfTUFTVEVSX0RFVlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc2OlxcdGRlcGVuZHMgb24gSVBWNl9NVUxUSVBMRV9UQUJMRVMgfHwgSVBWNj1uXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NzctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz00ODE9Y29uZmlnIFZTT0NLTU9OXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00ODItXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgdnNvY2sgbW9uaXRvcmluZyBkZXZpY2VcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0ODM6XFx0ZGVwZW5kcyBvbiBWSE9TVF9WU09DS1xcbmRyaXZlcnMvbmV0L0tjb25maWctNDg0LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDg5PWNvbmZpZyBNSElfTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00OTAtXFx0dHJpc3RhdGUgXFxcIk1ISSBuZXR3b3JrIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ5MTpcXHRkZXBlbmRzIG9uIE1ISV9CVVNcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ5Mi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTU0ND1jb25maWcgWEVOX05FVERFVl9GUk9OVEVORFxcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ1LVxcdHRyaXN0YXRlIFxcXCJYZW4gbmV0d29yayBkZXZpY2UgZnJvbnRlbmQgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NTQ2OlxcdGRlcGVuZHMgb24gWEVOXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01NDctXFx0c2VsZWN0IFhFTl9YRU5CVVNfRlJPTlRFTkRcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NTYyPWNvbmZpZyBYRU5fTkVUREVWX0JBQ0tFTkRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTU2My1cXHR0cmlzdGF0ZSBcXFwiWGVuIGJhY2tlbmQgbmV0d29yayBkZXZpY2VcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1NjQ6XFx0ZGVwZW5kcyBvbiBYRU5fQkFDS0VORFxcbmRyaXZlcnMvbmV0L0tjb25maWctNTY1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NTg0PWNvbmZpZyBWTVhORVQzXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01ODUtXFx0dHJpc3RhdGUgXFxcIlZNd2FyZSBWTVhORVQzIGV0aGVybmV0IGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjU4NjpcXHRkZXBlbmRzIG9uIFBDSSBcXHUwMDI2XFx1MDAyNiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1ODc6XFx0ZGVwZW5kcyBvbiBQQUdFX1NJWkVfTEVTU19USEFOXzY0S0JcXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4OC1cXHRzZWxlY3QgUEFHRV9QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTU5ND1jb25maWcgRlVKSVRTVV9FU1xcbmRyaXZlcnMvbmV0L0tjb25maWctNTk1LVxcdHRyaXN0YXRlIFxcXCJGVUpJVFNVIEV4dGVuZGVkIFNvY2tldCBOZXR3b3JrIERldmljZSBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1OTY6XFx0ZGVwZW5kcyBvbiBBQ1BJXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01OTctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz02MDQ9Y29uZmlnIE5FVERFVlNJTVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDY6XFx0ZGVwZW5kcyBvbiBERUJVR19GU1xcbmRyaXZlcnMvbmV0L0tjb25maWc6NjA3OlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWc6NjA4OlxcdGRlcGVuZHMgb24gUFNBTVBMRSB8fCBQU0FNUExFPW5cXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwOTpcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX01PQ0sgfHwgUFRQXzE1ODhfQ0xPQ0tfTU9DSz1uXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MTAtXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAzOjEwLjcxODkyNzYxM1oiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDM0MTMwMDMzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBOZXRkZXZzaW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGlzIGBORVRERVZTSU1gIG1vZHVsZSBpcyB0aGUgY29yZSBvZiB0aGlzIHNpbXVsYXRlZCBuZXR3b3JraW5nIGRldmljZSBkcml2ZXIuIEl0IGxvb2tzIGxpa2UgaXQgcmVsaWVzIG9uIGEgZmV3IG90aGVyIGNvbXBvbmVudHM6IGBERUJVR19GU2AsIGBJTkVUYCwgYW5kIHRoZW4gb3B0aW9uYWxseSBgUFNBTVBMRWAgYW5kIGBQVFBfMTU4OF9DTE9DS19NT0NLYC4gUmlnaHQsIGBORVRERVZTSU1gICppcyogdGhlIGtleSBjb25maWcgb3B0aW9uIGhlcmUuXG5cbkxldCBtZSBqdXN0IGNvbmZpcm3igKYgWWVwLCBsb29rcyBsaWtlIGVuYWJsaW5nIGBORVRERVZTSU1gIGlzIHRoZSBzaW5nbGUgcG9pbnQgb2YgZW50cnkgdG8gdXNlIHRoZSBlbXVsYXRlZCBkZXZpY2UuXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLlxuXG4qICAgKipGdXp6aW5nIFBvdGVudGlhbDoqKiBUaGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgd2FudCB0byBmdXp6LiBCYXNlZCBvbiB0aGUgY2hhbmdlcywgdGhpcyBpcyBnb2luZyB0byBiZSBoaWdoIHZhbHVlLlxuKiAgICoqS2V5IFN5bWJvbHMgdG8gVGFyZ2V0OioqIEknbSBnb2luZyB0byB3YW50IHRvIGZvY3VzIGluIG9uOiBgbnNpbV9jcmVhdGVgLCBgbnNpbV9kZXN0cm95YCwgYG5zaW1fZHJ2X3BvcnRfYWRkYCwgYG5zaW1fZHJ2X3BvcnRfZGVsYCwgYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YCwgYW5kIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHJlc3BvbnNpYmxlIGZvciBkZXZpY2UgY3JlYXRpb24vZGVzdHJ1Y3Rpb24sIHBvcnQgbWFuYWdlbWVudCwgcXVldWUgcmVzdGFydCwgYW5kIE5BUEkgYXNzb2NpYXRpb24uIFRoZXkgYXJlIGNyaXRpY2FsIGVudHJ5IHBvaW50cyB0byBjb3ZlciB0aGUgTkFQSSBjaGFuZ2VzLlxuKiAgICoqQ29uZmlndXJhdGlvbjoqKiBUaGUgcGF0Y2ggcmVxdWlyZXMgYE5FVERFVlNJTWAuXG4qICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIG1vZGlmaWVzIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fZGVsX25hcGlgIHRvIG1hbmFnZSBOQVBJIGluc3RhbmNlcyB3aXRoIFJYIHF1ZXVlcyB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGlgLiBUaGlzIGBuZXRkZXZzaW1gIGRyaXZlciBpcyBzb2Z0d2FyZS1lbXVsYXRlZCwgb2Z0ZW4gdXNlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEl0IGFmZmVjdHMgcXVldWUgbWFuYWdlbWVudCBhbmQgdGhlIE5BUEkgbGlmZWN5Y2xlLiBJdCBsb29rcyBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQsIHdoaWNoIG1ha2VzIGl0IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFRoZSBrZXkgZnVuY3Rpb25zIEkgbWVudGlvbmVkIGFib3ZlIGFyZSB0aGUgbW9zdCBpbXBvcnRhbnQgZnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUuIEkgc2hvdWxkIGdldCBhIGxvdCBvZiBjb2RlIGNvdmVyYWdlIG91dCBvZiB0aGVzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM1OTIsIk91dHB1dFRva2VucyI6MjE0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAzOjIxLjA2MDIzMjk0MloiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTI0MTAwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUREVWU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnNpbV9jcmVhdGVcIixcbiAgICBcIm5zaW1fZGVzdHJveVwiLFxuICAgIFwibnNpbV9kcnZfcG9ydF9hZGRcIixcbiAgICBcIm5zaW1fZHJ2X3BvcnRfZGVsXCIsXG4gICAgXCJuZXRkZXZfcnhfcXVldWVfcmVzdGFydFwiLFxuICAgIFwibmV0aWZfcXVldWVfc2V0X25hcGlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX2RlbF9uYXBpYCBpbiB0aGUgbmV0ZGV2c2ltIGRyaXZlciB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIGluc3RhbmNlcyB3aXRoIFJYIHF1ZXVlcyB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGlgLiBOZXRkZXZzaW0gaXMgYSBzb2Z0d2FyZS1lbXVsYXRlZCBuZXR3b3JrIGRldmljZSB1c2VkIGZvciB0ZXN0aW5nIGFuZCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgY2hhbmdlcyBhZmZlY3QgcXVldWUgbWFuYWdlbWVudCBhbmQgTkFQSSBsaWZlY3ljbGUsIHdoaWNoIGFyZSBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgYW5kIHdvcnRoIGZ1enppbmcuIEZvY3VzIHN5bWJvbHMgaW5jbHVkZSB0aGUgbmV0ZGV2c2ltIGNyZWF0aW9uL2Rlc3RydWN0aW9uIGFuZCBwb3J0IG1hbmFnZW1lbnQgZnVuY3Rpb25zLCBhcyB3ZWxsIGFzIHRoZSBxdWV1ZSByZXN0YXJ0IGFuZCBOQVBJIGFzc29jaWF0aW9uIEFQSSBmdW5jdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUREVWU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnNpbV9jcmVhdGVcIixcbiAgICBcIm5zaW1fZGVzdHJveVwiLFxuICAgIFwibnNpbV9kcnZfcG9ydF9hZGRcIixcbiAgICBcIm5zaW1fZHJ2X3BvcnRfZGVsXCIsXG4gICAgXCJuZXRkZXZfcnhfcXVldWVfcmVzdGFydFwiLFxuICAgIFwibmV0aWZfcXVldWVfc2V0X25hcGlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX2RlbF9uYXBpYCBpbiB0aGUgbmV0ZGV2c2ltIGRyaXZlciB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIGluc3RhbmNlcyB3aXRoIFJYIHF1ZXVlcyB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGlgLiBOZXRkZXZzaW0gaXMgYSBzb2Z0d2FyZS1lbXVsYXRlZCBuZXR3b3JrIGRldmljZSB1c2VkIGZvciB0ZXN0aW5nIGFuZCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgY2hhbmdlcyBhZmZlY3QgcXVldWUgbWFuYWdlbWVudCBhbmQgTkFQSSBsaWZlY3ljbGUsIHdoaWNoIGFyZSBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgYW5kIHdvcnRoIGZ1enppbmcuIEZvY3VzIHN5bWJvbHMgaW5jbHVkZSB0aGUgbmV0ZGV2c2ltIGNyZWF0aW9uL2Rlc3RydWN0aW9uIGFuZCBwb3J0IG1hbmFnZW1lbnQgZnVuY3Rpb25zLCBhcyB3ZWxsIGFzIHRoZSBxdWV1ZSByZXN0YXJ0IGFuZCBOQVBJIGFzc29jaWF0aW9uIEFQSSBmdW5jdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAzOjIxLjIxNTQ4MTkzOFoiLCJTZXEiOjU1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM3MzQ2ODA2MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMzoyMS4yMTYwMTQ3ODhaIiwiU2VxIjo1NiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTM3MzQxNDA2MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRkZXZzaW0gZHJpdmVyIHRvIGNvcnJlY3RseSBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIGluc3RhbmNlcyB3aXRoIFJYIHF1ZXVlcyB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGkoKWAuIFRoZXNlIGNoYW5nZXMgb25seSBpbnZvbHZlIHNldHRpbmcgYSBwb2ludGVyIGluIHRoZSBxdWV1ZSBzdHJ1Y3R1cmUgdG8gdHJhY2sgdGhlIE5BUEkgY29udGV4dC4gVGhlcmUgYXJlIG5vIG1vZGlmaWNhdGlvbnMgdG8gZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm8gbmV3IGFsbG9jYXRpb25zIG9mIGNvbXBsZXggc3RydWN0dXJlcywgYW5kIG5vIGNoYW5nZXMgdG8gZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIG9yIGJvdW5kcyBjaGVja3MuIFRoZSByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIG5vbi1leGlzdGVudC4gQW55IHBvdGVudGlhbCBpc3N1ZXMgYXJpc2luZyBmcm9tIHRoZXNlIGNoYW5nZXMsIHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgbnVsbC1wb2ludGVyIGRlcmVmZXJlbmNlcywgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjFlMmIzYzM0YmQzNWQ0NmQyMWQ3YWZiNTZmMjU4NzUzNWY2YzNkNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDE3IDA5OjAxOjA1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jIGIvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jXG5pbmRleCA0ZTlkN2UxMGI1MjdlLi5iNGE5OWYzY2VhYzYwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jXG4rKysgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcbkBAIC01MjksNiArNTI5LDcgQEAgc3RhdGljIHZvaWQgbnNpbV9kZWxfbmFwaShzdHJ1Y3QgbmV0ZGV2c2ltICpucylcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRldi1cdTAwM2VudW1fcnhfcXVldWVzOyBpKyspIHtcbiBcdFx0c3RydWN0IG5zaW1fcnEgKnJxID0gbnMtXHUwMDNlcnFbaV07XG4gXG4rXHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuIFx0XHRuYXBpX2Rpc2FibGVfbG9ja2VkKFx1MDAyNnJxLVx1MDAzZW5hcGkpO1xuIFx0XHRfX25ldGlmX25hcGlfZGVsX2xvY2tlZChcdTAwMjZycS1cdTAwM2VuYXBpKTtcbiBcdH1cbkBAIC04MjYsNiArODI3LDcgQEAgbnNpbV9xdWV1ZV9zdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX2NvbmZpZyAqcWNmZyxcbiBcdH1cbiBcbiBcdG5zLVx1MDAzZXJxW2lkeF0gPSBxbWVtLVx1MDAzZXJxO1xuK1x0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuIFx0bmFwaV9lbmFibGVfbG9ja2VkKFx1MDAyNm5zLVx1MDAzZXJxW2lkeF0tXHUwMDNlbmFwaSk7XG4gXG4gXHRyZXR1cm4gMDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAzOjIxLjIxNjAyMDAyOFoiLCJTZXEiOjU3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzExNDEwMjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBOQVBJIFF1ZXVlIEFzc29jaWF0aW9uIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyB0aGUgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY2AsIHNwZWNpZmljYWxseSBhcm91bmQgTkFQSSBxdWV1ZSBtYW5hZ2VtZW50LiBJIHNlZSB0aGV5J3JlIGFkZGluZyBgbmV0aWZfcXVldWVfc2V0X25hcGlgIGNhbGxzIOKAkyBvbmUgaW4gYG5zaW1fZGVsX25hcGlgIGFuZCBhbm90aGVyIGluIGBuc2ltX3F1ZXVlX3N0YXJ0YC4gVGhlIGZpcnN0IG9uZSBzZXRzIHRoZSBOQVBJIGNvbnRleHQgdG8gTlVMTCBhbmQgdGhlIHNlY29uZCBzZXRzIGl0IHRvIHRoZSBhZGRyZXNzIG9mIHRoZSBuYXBpIHN0cnVjdHVyZS4gSW1tZWRpYXRlbHksIG15IGNvbmNlcm4gaXMgd2hldGhlciB0aGVzZSBjaGFuZ2VzIGNvdWxkIGludHJvZHVjZSBzb21lIHN1YnRsZSB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuIFRoYXQncyBhbHdheXMgYSBwb3NzaWJpbGl0eSB3aXRoIHBvaW50ZXIgbWFuaXB1bGF0aW9uLCBidXQgbGV0J3MgZGlnIGRlZXBlci5cblxuUmlnaHQsIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgaXRzZWxmLCBmcm9tIG15IHVuZGVyc3RhbmRpbmcsIGlzIGp1c3Qgc2V0dGluZyBhIHBvaW50ZXIgd2l0aGluIHRoZSBxdWV1ZSBzdHJ1Y3R1cmUuIFRoYXTigJlzIG5vdCBhIEtNU0FOIGtpbmQgb2YgdGhpbmc7IEtNU0FOIHJlYWxseSBuYWlscyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2UuIFdoYXQgSSdtIHRoaW5raW5nIGhlcmUgYXJlIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpb3MsIG9yIG1heWJlIGEgbnVsbC1wb2ludGVyIGRlcmVmZXJlbmNlLCBvciBwZXJoYXBzIGEgbG9naWMgYnVnIHdoZXJlIGEgcXVldWUgZ2V0cyBzZXQgdXAgd3JvbmcuIElmIGl0IHdlcmUgYSBVQUYgb3IgT09CLCBLQVNBTiB3b3VsZCBwcm9iYWJseSBjYXRjaCB0aGF0LiBHaXZlbiB0aGlzLCBJIGRvbid0IHNlZSBhbnkgaW1tZWRpYXRlIHJlZCBmbGFncyBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIEJ1dCwgeW91IGtub3csIGl0J3MgYWx3YXlzIGdvb2QgdG8gZG91YmxlIGNoZWNrLlxuXG5MZXQgbWUganVzdCBxdWlja2x5IHZlcmlmeSB0aGUgZGVmaW5pdGlvbiBvZiBgbmV0aWZfcXVldWVfc2V0X25hcGlgIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSdsbCBncmVwIGZvciBpdCBpbiB0aGUgc291cmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTQ0LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDM6MjYuNTI3NDMyODc3WiIsIlNlcSI6NTgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzExNjIzMjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ldGlmX3F1ZXVlX3NldF9uYXBpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYz0xODA2PXN0YXRpYyB2b2lkIGVuYV9uYXBpX2Rpc2FibGVfaW5fcmFuZ2Uoc3RydWN0IGVuYV9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmMtMTgxNi1cXHRcXHRcXHQvKiBUaGlzIEFQSSBpcyBzdXBwb3J0ZWQgZm9yIG5vbi1YRFAgcXVldWVzIG9ubHkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYzoxODE3OlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXFx1MDAzZW5ldGRldiwgaSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODE4LVxcdFxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jOjE4MTk6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LCBpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jLTE4MjAtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYz0xODI2PXN0YXRpYyB2b2lkIGVuYV9uYXBpX2VuYWJsZV9pbl9yYW5nZShzdHJ1Y3QgZW5hX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODM3LVxcdFxcdFxcdC8qIFRoaXMgQVBJIGlzIHN1cHBvcnRlZCBmb3Igbm9uLVhEUCBxdWV1ZXMgb25seSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jOjE4Mzg6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LCBpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jLTE4MzktXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmM6MTg0MDpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVxcdTAwM2VuZXRkZXYsIGksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmMtMTg0MS1cXHRcXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYz0xNjU5PXN0YXRpYyB2b2lkIGJuZ2VfaW5pdF9vbmVfcnhfcmluZ19wYWlyKHN0cnVjdCBibmdlX25ldCAqYm4sIGludCByaW5nX25yKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTE2NjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jOjE2NjY6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYm4tXFx1MDAzZW5ldGRldiwgcmluZ19uciwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTE2NjctXFx0XFx0XFx0ICAgICBcXHUwMDI2cnhyLVxcdTAwM2VibmFwaS1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmM9MTcwMT1zdGF0aWMgdm9pZCBibmdlX2luaXRfdHhfcmluZ3Moc3RydWN0IGJuZ2VfbmV0ICpibilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0xNzEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYzoxNzEzOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJuLVxcdTAwM2VuZXRkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0xNzE0LVxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNnR4ci1cXHUwMDNlYm5hcGktXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jPTI3MjU9c3RhdGljIHZvaWQgYm5nZV9kZWxfbmFwaShzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTI3MzAtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGJkLVxcdTAwM2VyeF9ucl9yaW5nczsgaSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYzoyNzMxOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJuLVxcdTAwM2VuZXRkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMjczMi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYmQtXFx1MDAzZXR4X25yX3JpbmdzOyBpKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jOjI3MzM6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYm4tXFx1MDAzZW5ldGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0yNzM0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9NDYyOD1zdGF0aWMgaW50IGJueHRfaW5pdF9vbmVfcnhfcmluZyhzdHJ1Y3QgYm54dCAqYnAsIGludCByaW5nX25yKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNDYzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo0NjM1OlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJwLVxcdTAwM2VkZXYsIHJpbmdfbnIsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTQ2MzYtXFx0XFx0XFx0ICAgICBcXHUwMDI2cnhyLVxcdTAwM2VibmFwaS1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz00NjkzPXN0YXRpYyBpbnQgYm54dF9pbml0X3R4X3JpbmdzKHN0cnVjdCBibnh0ICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTQ3MDktXFx0XFx0aWYgKGkgXFx1MDAzZT0gYnAtXFx1MDAzZXR4X25yX3JpbmdzX3hkcClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo0NzEwOlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJwLVxcdTAwM2VkZXYsIGkgLSBicC1cXHUwMDNldHhfbnJfcmluZ3NfeGRwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTQ3MTEtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTExOTgwPXN0YXRpYyB2b2lkIGJueHRfZGVsX25hcGkoc3RydWN0IGJueHQgKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTE5ODctXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGJwLVxcdTAwM2VyeF9ucl9yaW5nczsgaSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjExOTg4OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJwLVxcdTAwM2VkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xMTk4OS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYnAtXFx1MDAzZXR4X25yX3JpbmdzIC0gYnAtXFx1MDAzZXR4X25yX3JpbmdzX3hkcDsgaSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjExOTkwOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJwLVxcdTAwM2VkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xMTk5MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTczOTQ9c3RhdGljIHZvaWQgdGczX25hcGlfZGlzYWJsZShzdHJ1Y3QgdGczICp0cClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MDMtXFx0XFx0aWYgKHRuYXBpLVxcdTAwM2V0eF9idWZmZXJzKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6NzQwNDpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cXHUwMDNlZGV2LCB0eHFfaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MDUtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy03NDA4LVxcdFxcdGlmICh0bmFwaS1cXHUwMDNlcnhfcmNiKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6NzQwOTpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cXHUwMDNlZGV2LCByeHFfaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MTAtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz03NDE3PXN0YXRpYyB2b2lkIHRnM19uYXBpX2VuYWJsZShzdHJ1Y3QgdGczICp0cClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MjYtXFx0XFx0aWYgKHRuYXBpLVxcdTAwM2V0eF9idWZmZXJzKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6NzQyNzpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cXHUwMDNlZGV2LCB0eHFfaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MjgtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MzItXFx0XFx0aWYgKHRuYXBpLVxcdTAwM2VyeF9yY2IpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzo3NDMzOlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVxcdTAwM2VkZXYsIHJ4cV9pZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtNzQzNC1cXHRcXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jPTE5NzQ9c3RhdGljIHZvaWQgdHNuZXBfcXVldWVfZW5hYmxlKHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMTk4Mi1cXHRpZiAocXVldWUtXFx1MDAzZXR4KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjE5ODM6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LCBxdWV1ZS1cXHUwMDNldHgtXFx1MDAzZXF1ZXVlX2luZGV4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTg0LVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFxcdTAwMjZxdWV1ZS1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMTk4OC1cXHRpZiAocXVldWUtXFx1MDAzZXJ4KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjE5ODk6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LCBxdWV1ZS1cXHUwMDNlcngtXFx1MDAzZXF1ZXVlX2luZGV4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTkwLVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFxcdTAwMjZxdWV1ZS1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM9MTk5NT1zdGF0aWMgdm9pZCB0c25lcF9xdWV1ZV9kaXNhYmxlKHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMTk5OS1cXHRpZiAocXVldWUtXFx1MDAzZXJ4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYzoyMDAwOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXFx1MDAzZW5ldGRldiwgcXVldWUtXFx1MDAzZXJ4LVxcdTAwM2VxdWV1ZV9pbmRleCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjAwMS1cXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yMDA0LVxcdFxcdHRzbmVwX3R4X2Rpc2FibGUocXVldWUtXFx1MDAzZXR4LCBcXHUwMDI2cXVldWUtXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYzoyMDA1OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXFx1MDAzZW5ldGRldiwgcXVldWUtXFx1MDAzZXR4LVxcdTAwM2VxdWV1ZV9pbmRleCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjAwNi1cXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYz0xOTI0PXN0YXRpYyB2b2lkIGd2ZV90dXJuZG93bihzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk0Mi1cXHRcXHRpZiAoaWR4IFxcdTAwM2MgcHJpdi1cXHUwMDNldHhfY2ZnLm51bV9xdWV1ZXMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjE5NDM6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkocHJpdi1cXHUwMDNlZGV2LCBpZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE5NDQtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTk1NTpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShwcml2LVxcdTAwM2VkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE5NTYtXFx0XFx0XFx0XFx0ICAgICBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYz0xOTcyPXN0YXRpYyB2b2lkIGd2ZV90dXJudXAoc3RydWN0IGd2ZV9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE5ODktXFx0XFx0aWYgKGlkeCBcXHUwMDNjIHByaXYtXFx1MDAzZXR4X2NmZy5udW1fcXVldWVzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxOTkwOlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHByaXYtXFx1MDAzZWRldiwgaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xOTkxLVxcdFxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMjAxNS1cXHRcXHRuYXBpX2VuYWJsZV9sb2NrZWQoXFx1MDAyNmJsb2NrLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MjAxNjpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShwcml2LVxcdTAwM2VkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTIwMTctXFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2YmxvY2stXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmM9MTk4PWludCBoaW5pYzNfcXBzX2lycV9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yMzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmM6MjM0OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGlycV9jZmctXFx1MDAzZW5ldGRldiwgcV9pZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yMzUtXFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgXFx1MDAyNmlycV9jZmctXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjIzNjpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShpcnFfY2ZnLVxcdTAwM2VuZXRkZXYsIHFfaWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjM3LVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFxcdTAwMjZpcnFfY2ZnLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTI1Mi1cXHRcXHRxcF9kZWxfbmFwaShpcnFfY2ZnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYzoyNTM6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cXHUwMDNlbmV0ZGV2LCBxX2lkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTI1NC1cXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYzoyNTU6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cXHUwMDNlbmV0ZGV2LCBxX2lkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTI1Ni1cXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jPTI3MD12b2lkIGhpbmljM19xcHNfaXJxX3VuaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjc4LVxcdFxcdHFwX2RlbF9uYXBpKGlycV9jZmcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjI3OTpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShpcnFfY2ZnLVxcdTAwM2VuZXRkZXYsIHFfaWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjgwLVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjI4MTpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShpcnFfY2ZnLVxcdTAwM2VuZXRkZXYsIHFfaWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjgyLVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jPTQ4MT12b2lkIGUxMDAwX2Rvd24oc3RydWN0IGUxMDAwX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtNTEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzo1MTE6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjUxMjpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtNTEzLVxcdG5hcGlfZGlzYWJsZShcXHUwMDI2YWRhcHRlci1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM9MTM1Mj1pbnQgZTEwMDBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTEzOTctXFx0bmFwaV9lbmFibGUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzoxMzk4OlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM6MTM5OTpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBcXHUwMDI2YWRhcHRlci1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTE0MDAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM9NDYzNj1pbnQgZTEwMDBlX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYy00NzEyLVxcdG5hcGlfZW5hYmxlKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM6NDcxMzpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcXHUwMDI2YWRhcHRlci1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjQ3MTQ6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9UWCwgXFx1MDAyNmFkYXB0ZXItXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYy00NzE1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jPTQ3NTI9aW50IGUxMDAwZV9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTQ3NzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjQ3NzM6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjQ3NzQ6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTQ3NzUtXFx0bmFwaV9kaXNhYmxlKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM9Mjc4Mz12b2lkIGljZV92c2lfc2V0X25hcGlfcXVldWVzKHN0cnVjdCBpY2VfdnNpICp2c2kpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI3OTMtXFx0XFx0aWYgKHZzaS1cXHUwMDNlcnhfcmluZ3NbcV9pZHhdIFxcdTAwMjZcXHUwMDI2IHZzaS1cXHUwMDNlcnhfcmluZ3NbcV9pZHhdLVxcdTAwM2VxX3ZlY3RvcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jOjI3OTQ6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCBxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yNzk1LVxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNnZzaS1cXHUwMDNlcnhfcmluZ3NbcV9pZHhdLVxcdTAwM2VxX3ZlY3Rvci1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI3OTgtXFx0XFx0aWYgKHZzaS1cXHUwMDNldHhfcmluZ3NbcV9pZHhdIFxcdTAwMjZcXHUwMDI2IHZzaS1cXHUwMDNldHhfcmluZ3NbcV9pZHhdLVxcdTAwM2VxX3ZlY3RvcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jOjI3OTk6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCBxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yODAwLVxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNnZzaS1cXHUwMDNldHhfcmluZ3NbcV9pZHhdLVxcdTAwM2VxX3ZlY3Rvci1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jPTI4MTU9dm9pZCBpY2VfdnNpX2NsZWFyX25hcGlfcXVldWVzKHN0cnVjdCBpY2VfdnNpICp2c2kpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI4MzEtXFx0aWNlX2Zvcl9lYWNoX3R4cSh2c2ksIHFfaWR4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6MjgzMjpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIHFfaWR4LCBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yODMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjgzNC1cXHRpY2VfZm9yX2VhY2hfcnhxKHZzaSwgcV9pZHgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYzoyODM1OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgcV9pZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI4MzYtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYz0zODM4PXN0YXRpYyB2b2lkIGlkcGZfcV92ZWN0b3Jfc2V0X25hcGkoc3RydWN0IGlkcGZfcV92ZWN0b3IgKnFfdmVjdG9yLCBib29sIGxpbmspXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jLTM4NDMtXFx0Zm9yICh1MzIgaSA9IDA7IGkgXFx1MDAzYyBxX3ZlY3Rvci1cXHUwMDNlbnVtX3J4cTsgaSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmM6Mzg0NDpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIHFfdmVjdG9yLVxcdTAwM2VyeFtpXS1cXHUwMDNlaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMtMzg0NS1cXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMtMzg0Ny1cXHRmb3IgKHUzMiBpID0gMDsgaSBcXHUwMDNjIHFfdmVjdG9yLVxcdTAwM2VudW1fdHhxOyBpKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYzozODQ4OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgcV92ZWN0b3ItXFx1MDAzZXR4W2ldLVxcdTAwM2VpZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYy0zODQ5LVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIG5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM9MjEwMj12b2lkIGlnYl9zZXRfcXVldWVfbmFwaShzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsIGludCB2ZWN0b3IsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0yMTA3LVxcdGlmIChxX3ZlY3Rvci1cXHUwMDNlcngucmluZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzoyMTA4OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXFx1MDAzZW5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0yMTA5LVxcdFxcdFxcdFxcdCAgICAgcV92ZWN0b3ItXFx1MDAzZXJ4LnJpbmctXFx1MDAzZXF1ZXVlX2luZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMjExMi1cXHRpZiAocV92ZWN0b3ItXFx1MDAzZXR4LnJpbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6MjExMzpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVxcdTAwM2VuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMjExNC1cXHRcXHRcXHRcXHQgICAgIHFfdmVjdG9yLVxcdTAwM2V0eC5yaW5nLVxcdTAwM2VxdWV1ZV9pbmRleCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jPTUwOTI9c3RhdGljIHZvaWQgaWdjX3NldF9xdWV1ZV9uYXBpKHN0cnVjdCBpZ2NfYWRhcHRlciAqYWRhcHRlciwgaW50IHZlY3RvcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTUwOTctXFx0aWYgKHFfdmVjdG9yLVxcdTAwM2VyeC5yaW5nKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjUwOTg6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTUwOTktXFx0XFx0XFx0XFx0ICAgICBxX3ZlY3Rvci1cXHUwMDNlcngucmluZy1cXHUwMDNlcXVldWVfaW5kZXgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy01MTAyLVxcdGlmIChxX3ZlY3Rvci1cXHUwMDNldHgucmluZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzo1MTAzOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXFx1MDAzZW5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy01MTA0LVxcdFxcdFxcdFxcdCAgICAgcV92ZWN0b3ItXFx1MDAzZXR4LnJpbmctXFx1MDAzZXF1ZXVlX2luZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jPTg5PWludCBtbHg0X2VuX2FjdGl2YXRlX2NxKHN0cnVjdCBtbHg0X2VuX3ByaXYgKnByaXYsIHN0cnVjdCBtbHg0X2VuX2NxICpjcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYy0xNTQtXFx0XFx0bmFwaV9lbmFibGUoXFx1MDAyNmNxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmM6MTU1OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGNxLVxcdTAwM2VkZXYsIGNxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFxcdTAwMjZjcS1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE1Ni1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYy0xNjItXFx0XFx0bmFwaV9lbmFibGUoXFx1MDAyNmNxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmM6MTYzOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGNxLVxcdTAwM2VkZXYsIGNxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFxcdTAwMjZjcS1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE2NC1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYz0xOTY9dm9pZCBtbHg0X2VuX2RlYWN0aXZhdGVfY3Eoc3RydWN0IG1seDRfZW5fcHJpdiAqcHJpdiwgc3RydWN0IG1seDRfZW5fY3EgKmNxKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTIwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmM6MjA2OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGNxLVxcdTAwM2VkZXYsIGNxLVxcdTAwM2VjcV9pZHgsIHF0eXBlLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmMtMjA3LVxcdFxcdG5hcGlfZGlzYWJsZShcXHUwMDI2Y3EtXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jPTkzOT12b2lkIG1seDVlX3B0cF9hY3RpdmF0ZV9jaGFubmVsKHN0cnVjdCBtbHg1ZV9wdHAgKmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmMtOTUxLVxcdFxcdG1seDVlX2FjdGl2YXRlX3JxKFxcdTAwMjZjLVxcdTAwM2VycSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jOjk1MjpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShjLVxcdTAwM2VuZXRkZXYsIGMtXFx1MDAzZXJxLml4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgXFx1MDAyNmMtXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYy05NTMtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jPTk1Nz12b2lkIG1seDVlX3B0cF9kZWFjdGl2YXRlX2NoYW5uZWwoc3RydWN0IG1seDVlX3B0cCAqYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYy05NjEtXFx0aWYgKHRlc3RfYml0KE1MWDVFX1BUUF9TVEFURV9SWCwgYy1cXHUwMDNlc3RhdGUpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jOjk2MjpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShjLVxcdTAwM2VuZXRkZXYsIGMtXFx1MDAzZXJxLml4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jLTk2My1cXHRcXHRtbHg1ZV9kZWFjdGl2YXRlX3JxKFxcdTAwMjZjLVxcdTAwM2VycSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTE5Mzk9dm9pZCBtbHg1ZV9hY3RpdmF0ZV90eHFzcShzdHJ1Y3QgbWx4NWVfdHhxc3EgKnNxKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xOTQ2LVxcdG5ldGlmX3R4X3N0YXJ0X3F1ZXVlKHNxLVxcdTAwM2V0eHEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6MTk0NzpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShzcS1cXHUwMDNlbmV0ZGV2LCBzcS1cXHUwMDNldHhxX2l4LCBORVRERVZfUVVFVUVfVFlQRV9UWCwgc3EtXFx1MDAzZWNxLm5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMTk0OC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTE5NTc9dm9pZCBtbHg1ZV9kZWFjdGl2YXRlX3R4cXNxKHN0cnVjdCBtbHg1ZV90eHFzcSAqc3EpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTE5NjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoxOTYxOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHNxLVxcdTAwM2VuZXRkZXYsIHNxLVxcdTAwM2V0eHFfaXgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTE5NjItXFx0Y2xlYXJfYml0KE1MWDVFX1NRX1NUQVRFX0VOQUJMRUQsIFxcdTAwMjZzcS1cXHUwMDNlc3RhdGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz0yOTE5PXN0YXRpYyB2b2lkIG1seDVlX2FjdGl2YXRlX2NoYW5uZWwoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTI5MzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoyOTM2OlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGMtXFx1MDAzZW5ldGRldiwgYy1cXHUwMDNlaXgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcXHUwMDI2Yy1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0yOTM3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9MjkzOT1zdGF0aWMgdm9pZCBtbHg1ZV9kZWFjdGl2YXRlX2NoYW5uZWwoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTI5NDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoyOTQzOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGMtXFx1MDAzZW5ldGRldiwgYy1cXHUwMDNlaXgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTI5NDQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYz0yMTE1PXN0YXRpYyB2b2lkIGZibmljX3NldF9uZXRpZl9uYXBpKHN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciAqbnYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTIyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjIxMjM6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobnYtXFx1MDAzZW5hcGkuZGV2LCBxdC1cXHUwMDNlc3ViMC5xX2lkeCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTI0LVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFxcdTAwMjZudi1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjIxMzE6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobnYtXFx1MDAzZW5hcGkuZGV2LCBxdC1cXHUwMDNlY21wbC5xX2lkeCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTMyLVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFxcdTAwMjZudi1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYz0yMTM2PXN0YXRpYyB2b2lkIGZibmljX3Jlc2V0X25ldGlmX25hcGkoc3RydWN0IGZibmljX25hcGlfdmVjdG9yICpudilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxNDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM6MjE0NDpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShudi1cXHUwMDNlbmFwaS5kZXYsIHF0LVxcdTAwM2VzdWIwLnFfaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxNDUtXFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTUxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjIxNTI6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobnYtXFx1MDAzZW5hcGkuZGV2LCBxdC1cXHUwMDNlY21wbC5xX2lkeCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTUzLVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM9MzIxPXN0YXRpYyB2b2lkIHJ0YXNlX3R4X2Rlc2NfaW5pdChzdHJ1Y3QgcnRhc2VfcHJpdmF0ZSAqdHAsIHUxNiBpZHgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0zNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM6MzUzOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVxcdTAwM2VkZXYsIHJpbmctXFx1MDAzZWluZGV4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTM1NC1cXHRcXHRcXHQgICAgIHJpbmctXFx1MDAzZXR5cGUsIFxcdTAwMjZyaW5nLVxcdTAwM2VpdmVjLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jPTU5MD1zdGF0aWMgdm9pZCBydGFzZV9yeF9kZXNjX2luaXQoc3RydWN0IHJ0YXNlX3ByaXZhdGUgKnRwLCB1MTYgaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmMtNjA3LVxcdHJpbmctXFx1MDAzZWl2ZWMgPSBcXHUwMDI2dHAtXFx1MDAzZWludF92ZWN0b3JbaWR4XTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYzo2MDg6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkodHAtXFx1MDAzZWRldiwgcmluZy1cXHUwMDNlaW5kZXgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmMtNjA5LVxcdFxcdFxcdCAgICAgcmluZy1cXHUwMDNldHlwZSwgXFx1MDAyNnJpbmctXFx1MDAzZWl2ZWMtXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM9MTE2Nj1zdGF0aWMgdm9pZCBydGFzZV9kb3duKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0xMTc3LVxcdFxcdFxcdFxcdFxcdCByaW5nX2VudHJ5KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM6MTE3ODpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cXHUwMDNlZGV2LCByaW5nLVxcdTAwM2VpbmRleCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0xMTc5LVxcdFxcdFxcdFxcdFxcdCAgICAgcmluZy1cXHUwMDNldHlwZSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYz0xNzE3PXN0YXRpYyB2b2lkIHJ0YXNlX3N3X3Jlc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0xNzM3LVxcdFxcdFxcdFxcdFxcdCByaW5nX2VudHJ5KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM6MTczODpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cXHUwMDNlZGV2LCByaW5nLVxcdTAwM2VpbmRleCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0xNzM5LVxcdFxcdFxcdFxcdFxcdCAgICAgcmluZy1cXHUwMDNldHlwZSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9NjkwPXZvaWQgbmV0dnNjX2RldmljZV9yZW1vdmUoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcxNi1cXHRcXHRpZiAoaSBcXHUwMDNjIG5kZXYtXFx1MDAzZXJlYWxfbnVtX3J4X3F1ZXVlcykge1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo3MTc6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcxOC1cXHRcXHRcXHRcXHRcXHQgICAgIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo3MTk6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcyMC1cXHRcXHRcXHRcXHRcXHQgICAgIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jPTE3NzI9c3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldHZzY19kZXZpY2VfYWRkKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODI1LVxcdG5hcGlfZW5hYmxlKFxcdTAwMjZuZXRfZGV2aWNlLVxcdTAwM2VjaGFuX3RhYmxlWzBdLm5hcGkpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxODI2OlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODI3LVxcdFxcdFxcdCAgICAgXFx1MDAyNm5ldF9kZXZpY2UtXFx1MDAzZWNoYW5fdGFibGVbMF0ubmFwaSk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE4Mjg6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE4MjktXFx0XFx0XFx0ICAgICBcXHUwMDI2bmV0X2RldmljZS1cXHUwMDNlY2hhbl90YWJsZVswXS5uYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODcwLWNsZWFudXA6XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE4NzE6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxODcyOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTg3My1cXHRuYXBpX2Rpc2FibGUoXFx1MDAyNm5ldF9kZXZpY2UtXFx1MDAzZWNoYW5fdGFibGVbMF0ubmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmM9MTIyMz1zdGF0aWMgdm9pZCBuZXR2c2Nfc2Nfb3BlbihzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqbmV3X3NjKVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jLTEyNTktXFx0bmFwaV9lbmFibGUoXFx1MDAyNm52Y2hhbi1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jOjEyNjA6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgY2huX2luZGV4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmMtMTI2MS1cXHRcXHRcXHQgICAgIFxcdTAwMjZudmNoYW4tXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYzoxMjYyOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIGNobl9pbmRleCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jLTEyNjMtXFx0XFx0XFx0ICAgICBcXHUwMDI2bnZjaGFuLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYy0xMjY5LVxcdFxcdG5ldGRldl9ub3RpY2UobmRldiwgXFxcInN1YiBjaGFubmVsIG9wZW4gZmFpbGVkOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmM6MTI3MDpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCBjaG5faW5kZXgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYy0xMjcxLVxcdFxcdFxcdFxcdCAgICAgTlVMTCk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jOjEyNzI6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgY2huX2luZGV4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmMtMTI3My1cXHRcXHRcXHRcXHQgICAgIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTQ4OD1zdGF0aWMgdm9pZCBuc2ltX2VuYWJsZV9uYXBpKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQ5NS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6NDk2OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFxcdTAwMjZycS1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQ5Ny1cXHRcXHRuYXBpX2VuYWJsZV9sb2NrZWQoXFx1MDAyNnJxLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz01MjQ9c3RhdGljIHZvaWQgbnNpbV9kZWxfbmFwaShzdHJ1Y3QgbmV0ZGV2c2ltICpucylcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy01MzEtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjUzMjpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNTMzLVxcdFxcdG5hcGlfZGlzYWJsZV9sb2NrZWQoXFx1MDAyNnJxLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04MDI9bnNpbV9xdWV1ZV9zdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX2NvbmZpZyAqcWNmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04MjktXFx0bnMtXFx1MDAzZXJxW2lkeF0gPSBxbWVtLVxcdTAwM2VycTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6ODMwOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgXFx1MDAyNm5zLVxcdTAwM2VycVtpZHhdLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODMxLVxcdG5hcGlfZW5hYmxlX2xvY2tlZChcXHUwMDI2bnMtXFx1MDAzZXJxW2lkeF0tXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTI4MTU9c3RhdGljIHZvaWQgdmlydG5ldF9uYXBpX2VuYWJsZShzdHJ1Y3QgcmVjZWl2ZV9xdWV1ZSAqcnEpXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjgyMC1cXHR2aXJ0bmV0X25hcGlfZG9fZW5hYmxlKHJxLVxcdTAwM2V2cSwgXFx1MDAyNnJxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6MjgyMTpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh2aS1cXHUwMDNlZGV2LCBxaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgXFx1MDAyNnJxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjgyMi19XFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9MjgyND1zdGF0aWMgdm9pZCB2aXJ0bmV0X25hcGlfdHhfZW5hYmxlKHN0cnVjdCBzZW5kX3F1ZXVlICpzcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yODQxLVxcdHZpcnRuZXRfbmFwaV9kb19lbmFibGUoc3EtXFx1MDAzZXZxLCBuYXBpKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mjg0MjpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh2aS1cXHUwMDNlZGV2LCBxaWR4LCBORVRERVZfUVVFVUVfVFlQRV9UWCwgbmFwaSk7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NDMtfVxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTI4NDU9c3RhdGljIHZvaWQgdmlydG5ldF9uYXBpX3R4X2Rpc2FibGUoc3RydWN0IHNlbmRfcXVldWUgKnNxKVxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NTEtXFx0aWYgKG5hcGktXFx1MDAzZXdlaWdodCkge1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzoyODUyOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVxcdTAwM2VkZXYsIHFpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjg1My1cXHRcXHRuYXBpX2Rpc2FibGUobmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9Mjg1Nz1zdGF0aWMgdm9pZCB2aXJ0bmV0X25hcGlfZGlzYWJsZShzdHJ1Y3QgcmVjZWl2ZV9xdWV1ZSAqcnEpXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjg2Mi1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mjg2MzpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh2aS1cXHUwMDNlZGV2LCBxaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NjQtXFx0bmFwaV9kaXNhYmxlKG5hcGkpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0yODI3PXN0YXRpYyBpbmxpbmUgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldl9mcm9tX3ByaXYoY29uc3Qgdm9pZCAqcHJpdilcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjg0Mi1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjI4NDM6dm9pZCBuZXRpZl9xdWV1ZV9zZXRfbmFwaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcXVldWVfaW5kZXgsXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yODQ0LVxcdFxcdFxcdCAgZW51bSBuZXRkZXZfcXVldWVfdHlwZSB0eXBlLFxcbi0tXFxubmV0L2NvcmUvZGV2LmM9NzI4OT1FWFBPUlRfU1lNQk9MKG5ldGlmX3RocmVhZGVkX2VuYWJsZSk7XFxuLS1cXG5uZXQvY29yZS9kZXYuYy03MjkxLS8qKlxcbm5ldC9jb3JlL2Rldi5jOjcyOTI6ICogbmV0aWZfcXVldWVfc2V0X25hcGkgLSBBc3NvY2lhdGUgcXVldWUgd2l0aCB0aGUgbmFwaVxcbm5ldC9jb3JlL2Rldi5jLTcyOTMtICogQGRldjogZGV2aWNlIHRvIHdoaWNoIE5BUEkgYW5kIHF1ZXVlIGJlbG9uZ1xcbi0tXFxubmV0L2NvcmUvZGV2LmMtNzMwMS0gKi9cXG5uZXQvY29yZS9kZXYuYzo3MzAyOnZvaWQgbmV0aWZfcXVldWVfc2V0X25hcGkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHF1ZXVlX2luZGV4LFxcbm5ldC9jb3JlL2Rldi5jLTczMDMtXFx0XFx0XFx0ICBlbnVtIG5ldGRldl9xdWV1ZV90eXBlIHR5cGUsIHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSlcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTczMjQtfVxcbm5ldC9jb3JlL2Rldi5jOjczMjU6RVhQT1JUX1NZTUJPTChuZXRpZl9xdWV1ZV9zZXRfbmFwaSk7XFxubmV0L2NvcmUvZGV2LmMtNzMyNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDM6MjguODM5MDYzODE3WiIsIlNlcSI6NTksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxMTEwNjIzMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYG5ldGRldnNpbWAgTkFQSSBBc3NvY2lhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3RyYWlnaHRmb3J3YXJkLiBJdCdzIHJlYWxseSBqdXN0IGFib3V0IGNvcnJlY3RseSBsaW5raW5nIGFuZCB1bmxpbmtpbmcgTkFQSSBpbnN0YW5jZXMgdG8gUlggcXVldWVzIHdpdGhpbiB0aGUgYG5ldGRldnNpbWAgZHJpdmVyLiBUaGUgY29kZSBpcyB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGkoKWAgd2hpY2gsIGZyb20gbXkgdW5kZXJzdGFuZGluZywgc2ltcGx5IHNldHMgYSBwb2ludGVyIHdpdGhpbiB0aGUgcXVldWUgc3RydWN0dXJlLiBJdCdzIGEgY2xlYW4gcG9pbnRlciBhc3NpZ25tZW50OyB0aGF0J3MgYWxsIGl0IGRvZXMuXG5cblRoZXJlJ3Mgbm8gY29tcGxleCBtZW1vcnkgbWFuaXB1bGF0aW9uIGhhcHBlbmluZyBoZXJlLiBJJ20gc2VlaW5nIG5vIGFsbG9jYXRpb25zIG9mIGFueSBuZXcgc2lnbmlmaWNhbnQgZGF0YSBzdHJ1Y3R1cmVzLCBubyBjYWxjdWxhdGlvbnMgYmVpbmcgY2hhbmdlZCB0aGF0IHdvdWxkIGFmZmVjdCBkYXRhIGxlbmd0aHMgb3IgYm91bmQgY2hlY2tzLCBhbmQgZGVmaW5pdGVseSBubyBleHBvc3VyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhhdCdzIGEgaHVnZSByZWxpZWYuIFRoZSByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGVmZmVjdGl2ZWx5IG5vbmV4aXN0ZW50IHdpdGggdGhlc2UgcGFydGljdWxhciBjaGFuZ2VzLlxuXG5FdmVuIGlmIHRoZXJlIHdlcmUgc29tZSBvYnNjdXJlIGVkZ2UgY2FzZSAtIHNvbWV0aGluZyBsaWtlIGEgdXNlLWFmdGVyLWZyZWUgb3IgYSBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UgLSB0aGF0IGNvdWxkIHNsaXAgdGhyb3VnaCwgS0FTQU4gd291bGQgYmUgdGhlIHBlcmZlY3QgdG9vbCB0byBjYXRjaCBpdC4gQ29uc2lkZXJpbmcgdGhhdCwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIHNlZW1zIHVubmVjZXNzYXJ5IGhlcmUuIFdlJ3JlIGRlYWxpbmcgd2l0aCBhIHNpbXBsZSBwb2ludGVyIGFzc2lnbm1lbnQgYW5kIGJhc2ljIGxpbmtpbmcsIHNvIEtBU0FOIGlzIHN1ZmZpY2llbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NjEwLCJPdXRwdXRUb2tlbnMiOjE2MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMzozNC45NTAxMjkzNTNaIiwiU2VxIjo2MCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRkZXZzaW0gZHJpdmVyIHRvIGNvcnJlY3RseSBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIGluc3RhbmNlcyB3aXRoIFJYIHF1ZXVlcyB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGkoKWAuIFRoZXNlIGNoYW5nZXMgb25seSBpbnZvbHZlIHNldHRpbmcgYSBwb2ludGVyIGluIHRoZSBxdWV1ZSBzdHJ1Y3R1cmUgdG8gdHJhY2sgdGhlIE5BUEkgY29udGV4dC4gVGhlcmUgYXJlIG5vIG1vZGlmaWNhdGlvbnMgdG8gZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm8gbmV3IGFsbG9jYXRpb25zIG9mIGNvbXBsZXggc3RydWN0dXJlcywgYW5kIG5vIGNoYW5nZXMgdG8gZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIG9yIGJvdW5kcyBjaGVja3MuIFRoZSByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIG5vbi1leGlzdGVudC4gQW55IHBvdGVudGlhbCBpc3N1ZXMgYXJpc2luZyBmcm9tIHRoZXNlIGNoYW5nZXMsIHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgbnVsbC1wb2ludGVyIGRlcmVmZXJlbmNlcywgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGRldnNpbSBkcml2ZXIgdG8gY29ycmVjdGx5IGFzc29jaWF0ZSBhbmQgZGlzYXNzb2NpYXRlIE5BUEkgaW5zdGFuY2VzIHdpdGggUlggcXVldWVzIHVzaW5nIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaSgpYC4gVGhlc2UgY2hhbmdlcyBvbmx5IGludm9sdmUgc2V0dGluZyBhIHBvaW50ZXIgaW4gdGhlIHF1ZXVlIHN0cnVjdHVyZSB0byB0cmFjayB0aGUgTkFQSSBjb250ZXh0LiBUaGVyZSBhcmUgbm8gbW9kaWZpY2F0aW9ucyB0byBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBubyBuZXcgYWxsb2NhdGlvbnMgb2YgY29tcGxleCBzdHJ1Y3R1cmVzLCBhbmQgbm8gY2hhbmdlcyB0byBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgb3IgYm91bmRzIGNoZWNrcy4gVGhlIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgbm9uLWV4aXN0ZW50LiBBbnkgcG90ZW50aWFsIGlzc3VlcyBhcmlzaW5nIGZyb20gdGhlc2UgY2hhbmdlcywgc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBudWxsLXBvaW50ZXIgZGVyZWZlcmVuY2VzLCB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowwflkj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-17 08:43:58 +0000 UTC FinishedAt: 2026-08-17 09:03:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "24ef02f934eeb48830cff6b739abc3c62b1d107b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "24ef02f934eeb48830cff6b739abc3c62b1d107b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM" ], "series_id": "ff301211-15e2-4125-a14d-d2e1d19625f9" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nsim_create", "nsim_destroy", "nsim_drv_port_add", "nsim_drv_port_del", "netdev_rx_queue_restart", "netif_queue_set_napi" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25zaW1fY3JlYXRlJiMzNDssCiAgICAmIzM0O25zaW1fZGVzdHJveSYjMzQ7LAogICAgJiMzNDtuc2ltX2Rydl9wb3J0X2FkZCYjMzQ7LAogICAgJiMzNDtuc2ltX2Rydl9wb3J0X2RlbCYjMzQ7LAogICAgJiMzNDtuZXRkZXZfcnhfcXVldWVfcmVzdGFydCYjMzQ7LAogICAgJiMzNDtuZXRpZl9xdWV1ZV9zZXRfbmFwaSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRkZXZzaW0gZHJpdmVyIHRvIGNvcnJlY3RseSBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIGluc3RhbmNlcyB3aXRoIFJYIHF1ZXVlcyB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGkoKWAuIFRoZXNlIGNoYW5nZXMgb25seSBpbnZvbHZlIHNldHRpbmcgYSBwb2ludGVyIGluIHRoZSBxdWV1ZSBzdHJ1Y3R1cmUgdG8gdHJhY2sgdGhlIE5BUEkgY29udGV4dC4gVGhlcmUgYXJlIG5vIG1vZGlmaWNhdGlvbnMgdG8gZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm8gbmV3IGFsbG9jYXRpb25zIG9mIGNvbXBsZXggc3RydWN0dXJlcywgYW5kIG5vIGNoYW5nZXMgdG8gZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIG9yIGJvdW5kcyBjaGVja3MuIFRoZSByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIG5vbi1leGlzdGVudC4gQW55IHBvdGVudGlhbCBpc3N1ZXMgYXJpc2luZyBmcm9tIHRoZXNlIGNoYW5nZXMsIHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgbnVsbC1wb2ludGVyIGRlcmVmZXJlbmNlcywgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fZGVsX25hcGlgIGluIHRoZSBuZXRkZXZzaW0gZHJpdmVyIHRvIGFzc29jaWF0ZSBhbmQgZGlzYXNzb2NpYXRlIE5BUEkgaW5zdGFuY2VzIHdpdGggUlggcXVldWVzIHVzaW5nIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAuIE5ldGRldnNpbSBpcyBhIHNvZnR3YXJlLWVtdWxhdGVkIG5ldHdvcmsgZGV2aWNlIHVzZWQgZm9yIHRlc3RpbmcgYW5kIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZSBjaGFuZ2VzIGFmZmVjdCBxdWV1ZSBtYW5hZ2VtZW50IGFuZCBOQVBJIGxpZmVjeWNsZSwgd2hpY2ggYXJlIGZ1bmN0aW9uYWxseSBzaWduaWZpY2FudCBhbmQgd29ydGggZnV6emluZy4gRm9jdXMgc3ltYm9scyBpbmNsdWRlIHRoZSBuZXRkZXZzaW0gY3JlYXRpb24vZGVzdHJ1Y3Rpb24gYW5kIHBvcnQgbWFuYWdlbWVudCBmdW5jdGlvbnMsIGFzIHdlbGwgYXMgdGhlIHF1ZXVlIHJlc3RhcnQgYW5kIE5BUEkgYXNzb2NpYXRpb24gQVBJIGZ1bmN0aW9ucy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDIxZTJiM2MzNGJkMzVkNDZkMjFkN2FmYjU2ZjI1ODc1MzVmNmMzZDZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAxNyAwOTowMTowNSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcbmluZGV4IDRlOWQ3ZTEwYjUyN2UuLmI0YTk5ZjNjZWFjNjAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1xuQEAgLTUyOSw2ICYjNDM7NTI5LDcgQEAgc3RhdGljIHZvaWQgbnNpbV9kZWxfbmFwaShzdHJ1Y3QgbmV0ZGV2c2ltICpucylcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRldi1cdTAwM2VudW1fcnhfcXVldWVzOyBpJiM0MzsmIzQzOykge1xuIFx0XHRzdHJ1Y3QgbnNpbV9ycSAqcnEgPSBucy1cdTAwM2VycVtpXTtcbiBcbiYjNDM7XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuIFx0XHRuYXBpX2Rpc2FibGVfbG9ja2VkKFx1MDAyNnJxLVx1MDAzZW5hcGkpO1xuIFx0XHRfX25ldGlmX25hcGlfZGVsX2xvY2tlZChcdTAwMjZycS1cdTAwM2VuYXBpKTtcbiBcdH1cbkBAIC04MjYsNiAmIzQzOzgyNyw3IEBAIG5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsXG4gXHR9XG4gXG4gXHRucy1cdTAwM2VycVtpZHhdID0gcW1lbS1cdTAwM2VycTtcbiYjNDM7XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFx1MDAyNm5zLVx1MDAzZXJxW2lkeF0tXHUwMDNlbmFwaSk7XG4gXHRuYXBpX2VuYWJsZV9sb2NrZWQoXHUwMDI2bnMtXHUwMDNlcnFbaWR4XS1cdTAwM2VuYXBpKTtcbiBcbiBcdHJldHVybiAwO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRERVZTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuc2ltX2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtuc2ltX2Rlc3Ryb3kmIzM0OywKICAgICYjMzQ7bnNpbV9kcnZfcG9ydF9hZGQmIzM0OywKICAgICYjMzQ7bnNpbV9kcnZfcG9ydF9kZWwmIzM0OywKICAgICYjMzQ7bmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnQmIzM0OywKICAgICYjMzQ7bmV0aWZfcXVldWVfc2V0X25hcGkmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9kZWxfbmFwaWAgaW4gdGhlIG5ldGRldnNpbSBkcml2ZXIgdG8gYXNzb2NpYXRlIGFuZCBkaXNhc3NvY2lhdGUgTkFQSSBpbnN0YW5jZXMgd2l0aCBSWCBxdWV1ZXMgdXNpbmcgYG5ldGlmX3F1ZXVlX3NldF9uYXBpYC4gTmV0ZGV2c2ltIGlzIGEgc29mdHdhcmUtZW11bGF0ZWQgbmV0d29yayBkZXZpY2UgdXNlZCBmb3IgdGVzdGluZyBhbmQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIGNoYW5nZXMgYWZmZWN0IHF1ZXVlIG1hbmFnZW1lbnQgYW5kIE5BUEkgbGlmZWN5Y2xlLCB3aGljaCBhcmUgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50IGFuZCB3b3J0aCBmdXp6aW5nLiBGb2N1cyBzeW1ib2xzIGluY2x1ZGUgdGhlIG5ldGRldnNpbSBjcmVhdGlvbi9kZXN0cnVjdGlvbiBhbmQgcG9ydCBtYW5hZ2VtZW50IGZ1bmN0aW9ucywgYXMgd2VsbCBhcyB0aGUgcXVldWUgcmVzdGFydCBhbmQgTkFQSSBhc3NvY2lhdGlvbiBBUEkgZnVuY3Rpb25zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjFlMmIzYzM0YmQzNWQ0NmQyMWQ3YWZiNTZmMjU4NzUzNWY2YzNkNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDE3IDA5OjAxOjA1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jIGIvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jCmluZGV4IDRlOWQ3ZTEwYjUyN2UuLmI0YTk5ZjNjZWFjNjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMKQEAgLTUyOSw2ICYjNDM7NTI5LDcgQEAgc3RhdGljIHZvaWQgbnNpbV9kZWxfbmFwaShzdHJ1Y3QgbmV0ZGV2c2ltICpucykKIAlmb3IgKGkgPSAwOyBpICZsdDsgZGV2LSZndDtudW1fcnhfcXVldWVzOyBpJiM0MzsmIzQzOykgewogCQlzdHJ1Y3QgbnNpbV9ycSAqcnEgPSBucy0mZ3Q7cnFbaV07CiAKJiM0MzsJCW5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpOwogCQluYXBpX2Rpc2FibGVfbG9ja2VkKCZhbXA7cnEtJmd0O25hcGkpOwogCQlfX25ldGlmX25hcGlfZGVsX2xvY2tlZCgmYW1wO3JxLSZndDtuYXBpKTsKIAl9CkBAIC04MjYsNiAmIzQzOzgyNyw3IEBAIG5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsCiAJfQogCiAJbnMtJmd0O3JxW2lkeF0gPSBxbWVtLSZndDtycTsKJiM0MzsJbmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCAmYW1wO25zLSZndDtycVtpZHhdLSZndDtuYXBpKTsKIAluYXBpX2VuYWJsZV9sb2NrZWQoJmFtcDtucy0mZ3Q7cnFbaWR4XS0mZ3Q7bmFwaSk7CiAKIAlyZXR1cm4gMDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE0NwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldGRldnNpbSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY2AuIEl0JiMzOTtzIGdvdCB0aGVzZSBuZXcgY2FsbHMgdG8gYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCBpbiBgbnNpbV9kZWxfbmFwaWAgYW5kIGBuc2ltX3F1ZXVlX3N0YXJ0YC4gUmlnaHQgYXdheSwgbXkgcmFkYXIgZ29lcyB1cC4gTmV0ZGV2c2ltIGlzIHRoYXQgc29mdHdhcmUtZW11bGF0ZWQgbmV0d29yayBkZXZpY2Ug4oCTIHBlcmZlY3QgZm9yIGZ1enppbmchIEl0JiMzOTtzIHByYWN0aWNhbGx5ICpkZXNpZ25lZCogdG8gYmUgcHJvYmVkLiBXZSBoYXZlIGEgc29saWQgc3RhcnRpbmcgcG9pbnQgZm9yIGZ1enppbmcgdGhpcyBwYXRjaC4KClNvLCBsZXQmIzM5O3MgZHJpbGwgZG93biBpbnRvIHRob3NlIHR3byBmdW5jdGlvbnM6IGBuc2ltX2RlbF9uYXBpYCBhbmQgYG5zaW1fcXVldWVfc3RhcnRgLiBgbnNpbV9xdWV1ZV9zdGFydGAgc2VlbXMgbGlrZSBpdCYjMzk7cyBhIHF1ZXVlIHN0YXJ0IGNhbGxiYWNrLiBZZWFoLCB0aGF0IG1ha2VzIHNlbnNlLiBJdCYjMzk7cyBsaWtlbHkgaW52b2x2ZWQgd2l0aCB0aGUgbmV0ZGV2IHF1ZXVlIEFQSSwgc28gaXQgaXMgcHJvYmFibHkgY2FsbGVkIHdoZW4gYSBxdWV1ZSBpcyBzdGFydGVkLiBBbmQgYG5zaW1fZGVsX25hcGlgIGxvb2tzIGxpa2UgYSBjbGVhbnVwIGZ1bmN0aW9uLgoKSSBuZWVkIHRvIHNlZSBob3cgdGhlc2UgdGhpbmdzIGFyZSB1c2VkLiBUaW1lIHRvIGNoZWNrIHZpc2liaWxpdHkuIEkgbmVlZCB0byBncmVwIGZvciBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX2RlbF9uYXBpYCB0byBzZWUgaWYgdGhleSYjMzk7cmUgc3RhdGljIG9yIGV4cG9ydGVkLiBBaCwgYG5zaW1fZGVsX25hcGlgIGlzIHN0YXRpYy4gT0suIEFuZCBgbnNpbV9xdWV1ZV9zdGFydGAgaXMuLi4gYWxzbyBzdGF0aWM/IEdvdHRhIGRvdWJsZS1jaGVjayB0aGF0LiBJIG5lZWQgdG8gbWFrZSBzdXJlIGhvdyBhY2Nlc3NpYmxlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgdG8gc2VlIHdoZXJlIHRoZXkgYXJlIGNhbGxlZCBmcm9tLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25zaW1fcXVldWVfc3RhcnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTgwMT1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6ODAyOm5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODAzLVx0XHQgdm9pZCAqcGVyX3F1ZXVlX21lbSwgaW50IGlkeClcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9ODU1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIG5zaW1fcXVldWVfbWdtdF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTg1OC1cdC5uZG9fcXVldWVfbWVtX2ZyZWVcdD0gbnNpbV9xdWV1ZV9tZW1fZnJlZSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo4NTk6XHQubmRvX3F1ZXVlX3N0YXJ0XHQ9IG5zaW1fcXVldWVfc3RhcnQsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODYwLVx0Lm5kb19xdWV1ZV9zdG9wXHRcdD0gbnNpbV9xdWV1ZV9zdG9wLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA1MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgU3RhdGljIEZ1bmN0aW9ucyBhbmQgVGhlaXIgVXNhZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIHR3byBmdW5jdGlvbnMsIGFuZCB0aGV5JiMzOTtyZSBib3RoIGRlY2xhcmVkIGFzIHN0YXRpYy4gVGhhdCBpbW1lZGlhdGVseSBtYWtlcyBtZSB0aGluayBhYm91dCBzY29wZTsgdGhleSYjMzk7cmUgb25seSB2aXNpYmxlIHdpdGhpbiB0aGVpciBjb21waWxhdGlvbiB1bml0LCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncyBpbiBzb21lIHdheXMsIGJ1dCBhbHNvIG1lYW5zIEkgbmVlZCB0byBkaWcgYSBsaXR0bGUgZGVlcGVyIHRvIHVuZGVyc3RhbmQgdGhlaXIgcm9sZSBpbiB0aGUgYmlnZ2VyIHBpY3R1cmUuIE15IG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IGhvdyB0aGV5JiMzOTtyZSAqdXNlZCouIFNpbmNlIHRoZXkmIzM5O3JlIHN0YXRpYywgSSYjMzk7bSBleHBlY3Rpbmcgb3RoZXIgZnVuY3Rpb25zIHdpdGhpbiB0aGUgc2FtZSBmaWxlIHRvIGJlIGNhbGxpbmcgdGhlbSBvciBhdCBsZWFzdCB1c2luZyB0aGVpciBvdXRwdXQuIExldCYjMzk7cyBmaW5kIHRob3NlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIGFuZCBzZWUgd2hlcmUgdGhlc2Ugc3RhdGljIG9uZXMgZml0IGluLgoKQWgsIGBuc2ltX3F1ZXVlX21nbXRfb3BzYCBhcHBlYXJzIHRvIGJlIHVzZWQgYnkgYG5zaW1fY3JlYXRlYC4gVGltZSB0byBjaGVjayBgbnNpbV9jcmVhdGVgIGFuZCBzZWUgd2hhdCYjMzk7cyBnb2luZyBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuc2ltX2NyZWF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9NDA1PXN0YXRpYyBpbnQgbnNpbV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNDE2LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjQxNzpzdGF0aWMgaW50IG5zaW1fY3JlYXRlX3BhZ2VfcG9vbChzdHJ1Y3QgcGFnZV9wb29sICoqcCwgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQxOC17XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTQzOD1zdGF0aWMgaW50IG5zaW1faW5pdF9uYXBpKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy00NTItXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6NDUzOlx0XHRlcnIgPSBuc2ltX2NyZWF0ZV9wYWdlX3Bvb2woXHUwMDI2cnEtXHUwMDNlcGFnZV9wb29sLCBcdTAwMjZycS1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy00NTQtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTc1MT1uc2ltX3F1ZXVlX21lbV9hbGxvYyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy03NjQtXHRcdFx0cmV0dXJuIC1FTkVURE9XTjtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo3NjU6XHRcdHJldHVybiBuc2ltX2NyZWF0ZV9wYWdlX3Bvb2woXHUwMDI2cW1lbS1cdTAwM2VwcCwgXHUwMDI2bnMtXHUwMDNlcnFbaWR4XS1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy03NjYtXHR9XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTc3MS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo3NzI6XHRlcnIgPSBuc2ltX2NyZWF0ZV9wYWdlX3Bvb2woXHUwMDI2cW1lbS1cdTAwM2VycS1cdTAwM2VwYWdlX3Bvb2wsIFx1MDAyNnFtZW0tXHUwMDNlcnEtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNzczLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9MTEyMj1zdGF0aWMgdm9pZCBuc2ltX2V4aXRfbmV0ZGV2c2ltKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy0xMTI3LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjExMjg6c3RydWN0IG5ldGRldnNpbSAqbnNpbV9jcmVhdGUoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldixcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy0xMTI5LVx0XHRcdCAgICAgIHN0cnVjdCBuc2ltX2Rldl9wb3J0ICpuc2ltX2Rldl9wb3J0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4ODQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGVidWdnaW5nIGEgUG90ZW50aWFsIFNjb3BlIElzc3VlKioKCk9rYXksIHNvIGBuc2ltX2NyZWF0ZWAgaXMgZWl0aGVyIGRlY2xhcmVkIHdpdGggZXh0ZXJuYWwgbGlua2FnZSAoZXhwb3J0ZWQpIG9yIGl0JiMzOTtzIG5vdCBkZWNsYXJlZCBhcyBgc3RhdGljYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGJyb2FkbHkgaXQmIzM5O3MgYmVpbmcgdXNlZC4gSWYgaXQmIzM5O3MgYmVpbmcgYWNjZXNzZWQgb3V0c2lkZSB0aGUgaW50ZW5kZWQgc2NvcGUsIHRoYXQmIzM5O3MgYSBwcm9ibGVtLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBtb3N0IGRpcmVjdCByb3V0ZSBpcyB0byB0cmFjZSB3aGVyZSBpdCYjMzk7cyBiZWluZyBjYWxsZWQuIEkgbmVlZCB0byBnZXQgYSBsaXN0IG9mIHJlZmVyZW5jZXMgdG8gYG5zaW1fY3JlYXRlYC4gVGltZSB0byBmaXJlIHVwIHRoZSBkZWJ1Z2dlciAob3IgdXNlIG15IGNvZGUgc2VhcmNoIHRvb2xzLCBkZXBlbmRpbmcgb24gdGhlIGVudmlyb25tZW50KSBhbmQgZ2V0IHRvIHdvcmsuIEnigJlsbCBzdGFydCBieSB0cmFja2luZyBkb3duIGFsbCBjYWxsIHNpdGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25zaW1fY3JlYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM9MTQ1NT1zdGF0aWMgaW50IF9fbnNpbV9kZXZfcG9ydF9hZGQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldiwgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTUwOC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNTA5Olx0bnNpbV9kZXZfcG9ydC1cdTAwM2VucyA9IG5zaW1fY3JlYXRlKG5zaW1fZGV2LCBuc2ltX2Rldl9wb3J0LCBwZXJtX2FkZHIpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1MTAtXHRpZiAoSVNfRVJSKG5zaW1fZGV2X3BvcnQtXHUwMDNlbnMpKSB7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTQwNT1zdGF0aWMgaW50IG5zaW1fcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGksIGludCBidWRnZXQpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQxNi1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo0MTc6c3RhdGljIGludCBuc2ltX2NyZWF0ZV9wYWdlX3Bvb2woc3RydWN0IHBhZ2VfcG9vbCAqKnAsIHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSlcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy00MTgte1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz00Mzg9c3RhdGljIGludCBuc2ltX2luaXRfbmFwaShzdHJ1Y3QgbmV0ZGV2c2ltICpucylcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNDUyLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjQ1MzpcdFx0ZXJyID0gbnNpbV9jcmVhdGVfcGFnZV9wb29sKFx1MDAyNnJxLVx1MDAzZXBhZ2VfcG9vbCwgXHUwMDI2cnEtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNDU0LVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz03NTE9bnNpbV9xdWV1ZV9tZW1fYWxsb2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNzY0LVx0XHRcdHJldHVybiAtRU5FVERPV047XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6NzY1Olx0XHRyZXR1cm4gbnNpbV9jcmVhdGVfcGFnZV9wb29sKFx1MDAyNnFtZW0tXHUwMDNlcHAsIFx1MDAyNm5zLVx1MDAzZXJxW2lkeF0tXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNzY2LVx0fVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy03NzEtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6NzcyOlx0ZXJyID0gbnNpbV9jcmVhdGVfcGFnZV9wb29sKFx1MDAyNnFtZW0tXHUwMDNlcnEtXHUwMDNlcGFnZV9wb29sLCBcdTAwMjZxbWVtLVx1MDAzZXJxLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTc3My1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTExMjI9c3RhdGljIHZvaWQgbnNpbV9leGl0X25ldGRldnNpbShzdHJ1Y3QgbmV0ZGV2c2ltICpucylcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtMTEyNy1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzoxMTI4OnN0cnVjdCBuZXRkZXZzaW0gKm5zaW1fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtMTEyOS1cdFx0XHQgICAgICBzdHJ1Y3QgbnNpbV9kZXZfcG9ydCAqbnNpbV9kZXZfcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg9MTA3PXN0cnVjdCBuZXRkZXZzaW0ge1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xNjUtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTY2OnN0cnVjdCBuZXRkZXZzaW0gKm5zaW1fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTY3LVx0XHRcdCAgICAgIHN0cnVjdCBuc2ltX2Rldl9wb3J0ICpuc2ltX2Rldl9wb3J0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5NzMKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqVHJhY2luZyBCYWNrIHRoZSBTdGF0aWMgTmF0dXJlIG9mIGBfX25zaW1fZGV2X3BvcnRfYWRkYCoqCgpPa2F5LCBzbyBgX19uc2ltX2Rldl9wb3J0X2FkZGAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlZCBteSBpbnRlcmVzdC4gTGV0JiMzOTtzIHRyYWNlIGJhY2sgZnJvbSB0aGVyZS4gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiBhIHN0YXRpYyBmdW5jdGlvbiBpbiB0aGlzIGNvbnRleHQ/IEl0IG1lYW5zIGl0JiMzOTtzIG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhlIGNvbXBpbGF0aW9uIHVuaXQgd2hlcmUgaXQmIzM5O3MgZGVmaW5lZC4gU28sIGl0JiMzOTtzICpub3QqIGludGVuZGVkIGZvciBleHRlcm5hbCBsaW5raW5nIG9yIHVzZSBieSBvdGhlciBtb2R1bGVzLCB3aGljaCB0ZWxscyBtZSB0aGUgZGV2ZWxvcGVycyBhcmUgdHJ5aW5nIHRvIGxpbWl0IGl0cyBzY29wZSBhbmQgcHJldmVudCBhY2NpZGVudGFsIG9yIHVuaW50ZW5kZWQgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLiBUaGV54oCZcmUgcHJvYmFibHkgdHJ5aW5nIHRvIG1haW50YWluIHNvbWUgc29ydCBvZiBlbmNhcHN1bGF0aW9uIGZvciB0aGUgbnNpbSBkZXZpY2UgcG9ydCBzdWJzeXN0ZW0uCgpJIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGV5IGNob3NlIHRoYXQuIElzIGl0IGEgZGVzaWduIGNob2ljZSB0byBtYW5hZ2UgYWNjZXNzLCBwZXJoYXBzIHByb3RlY3RpbmcgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIHdpdGhpbiB0aGUgYG5zaW1gIG1vZHVsZT8gT3IgaXMgaXQgbW9yZSBvZiBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgcmVseWluZyBvbiB0aGUgY29tcGlsZXImIzM5O3MgYWJpbGl0eSB0byBpbmxpbmUgdGhlIGZ1bmN0aW9uIG1vcmUgYWdncmVzc2l2ZWx5LCBzaW5jZSBpdHMgYWRkcmVzcyBpcyBvbmx5IGtub3duIHdpdGhpbiBhIHNpbmdsZSB0cmFuc2xhdGlvbiB1bml0PyBPciBwZXJoYXBzLCB0aGV5IHdhbnQgdG8ga2VlcCB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBoaWRkZW4sIHByZXZlbnRpbmcgc29tZW9uZSBmcm9tIGluYWR2ZXJ0ZW50bHkgdHJ5aW5nIHRvIGNhbGwgaXQgd2l0aCBhbiBpbmFwcHJvcHJpYXRlIGRhdGEgc3RydWN0dXJlPwoKSSBzdXNwZWN0IGl0JiMzOTtzIGxpa2VseSBhIGNvbWJpbmF0aW9uIG9mIHRoZXNlIHRoaW5ncywgYnV0IGl0IGFsbCBoaW5nZXMgb24gdGhlIHNwZWNpZmljIGRlc2lnbiBvZiB0aGUgYG5zaW1gIGRyaXZlci4gSSYjMzk7bSBnb2luZyB0byBmb2xsb3cgdGhlIHVzZXMgb2YgdGhpcyBmdW5jdGlvbiB0byB1bmRlcnN0YW5kIGl0cyByb2xlLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGRhdGEgaXMgYmVpbmcgcGFzc2VkIGluLCB3aGVyZSBpdCYjMzk7cyBiZWluZyB1c2VkLCBhbmQgd2hpY2ggb3RoZXIgaW50ZXJuYWwgZnVuY3Rpb25zIGludGVyYWN0IHdpdGggdGhpcyBhZGQgZnVuY3Rpb25hbGl0eS4gSG9wZWZ1bGx5LCBJJiMzOTtsbCBiZSBhYmxlIHRvIGdsZWFuIHRoZWlyIGludGVudCB0aHJvdWdoIGV4YW1pbmluZyB0aGUgc3Vycm91bmRpbmcgY29kZS4gSXTigJlzIHJhcmVseSBhIHN0YW5kYWxvbmUgY2hvaWNlOyB0aGVyZeKAmXMgYWx3YXlzIGFuIGFyY2hpdGVjdHVyYWwgZGVjaXNpb24gdGhhdCBsZWQgdG8gbWFraW5nIHNvbWV0aGluZyBzdGF0aWMuIEkgbmVlZCB0byBmaW5kIHRoZSB1bmRlcmx5aW5nIHJlYXNvbmluZy4gVGhpcyB3aWxsIGluZm9ybSBteSBhc3Nlc3NtZW50IG9mIHRoZSBvdmVyYWxsIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19uc2ltX2Rldl9wb3J0X2FkZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTY0OD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6NjQ5Ol9fbnNpbV9kZXZfcG9ydF9hZGQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldiwgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy02NTAtXHRcdCAgICB1bnNpZ25lZCBpbnQgcG9ydF9pbmRleCwgdTggcGVybV9hZGRyW0VUSF9BTEVOXSk7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTY2Nz1zdGF0aWMgaW50IG5zaW1fZXN3X3N3aXRjaGRldl9lbmFibGUoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2Rldixcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtNjczLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgbnNpbV9kZXZfZ2V0X3Zmcyhuc2ltX2Rldik7IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6Njc0Olx0XHRlcnIgPSBfX25zaW1fZGV2X3BvcnRfYWRkKG5zaW1fZGV2LCBOU0lNX0RFVl9QT1JUX1RZUEVfVkYsIGksIE5VTEwpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTY3NS1cdFx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYz0xNDI1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2bGlua19vcHMgbnNpbV9kZXZfZGV2bGlua19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE0NTQtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTQ1NTpzdGF0aWMgaW50IF9fbnNpbV9kZXZfcG9ydF9hZGQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldiwgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNDU2LVx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgcG9ydF9pbmRleCwgdTggcGVybV9hZGRyW0VUSF9BTEVOXSlcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM9MTU2ND1zdGF0aWMgaW50IG5zaW1fZGV2X3BvcnRfYWRkX2FsbChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNTY5LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgcG9ydF9jb3VudDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNTcwOlx0XHRlcnIgPSBfX25zaW1fZGV2X3BvcnRfYWRkKG5zaW1fZGV2LCBOU0lNX0RFVl9QT1JUX1RZUEVfUEYsIGksIE5VTEwpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1NzEtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTE4Mjk9aW50IG5zaW1fZHJ2X3BvcnRfYWRkKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiwgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTgzOC1cdGVsc2VcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxODM5Olx0XHRlcnIgPSBfX25zaW1fZGV2X3BvcnRfYWRkKG5zaW1fZGV2LCB0eXBlLCBwb3J0X2luZGV4LCBwZXJtX2FkZHIpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE4NDAtXHRkZXZsX3VubG9jayhwcml2X3RvX2RldmxpbmsobnNpbV9kZXYpKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE2MwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKlRyYWNpbmcgdGhlIGBuc2ltX2Rydl9wb3J0X2FkZGAgRnVuY3Rpb24qKgoKT2theSwgc28gYG5zaW1fZHJ2X3BvcnRfYWRkYCBpcyBleHBvcnRlZCwgbWVhbmluZyBpdCYjMzk7cyBhIGNyaXRpY2FsIGZ1bmN0aW9uLCBsaWtlbHkgcGFydCBvZiBhbiBleHRlcm5hbCBpbnRlcmZhY2UuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgaW4gYW5kIHRyYWNlIGl0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZnVuY3Rpb24gZG9lcywgaG93IGl0JiMzOTtzIHVzZWQsIGFuZCB3aGF0IGRhdGEgc3RydWN0dXJlcyBpdCBtYW5pcHVsYXRlcy4gVGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGFueSBkZWVwZXIgYW5hbHlzaXMuIEkmIzM5O2xsIG5lZWQgdG8gc2VlIHdoZXJlIGl0JiMzOTtzIGRlZmluZWQgYW5kIGZpZ3VyZSBvdXQgaXRzIGNhbGxpbmcgY29udmVudGlvbi4gSG9wZWZ1bGx5LCBJIGNhbiBmaW5kIHNvbWUgY29tbWVudHMgb3IgZG9jdW1lbnRhdGlvbiB0byBndWlkZSBtZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuc2ltX2Rydl9wb3J0X2FkZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTY1PW5ld19wb3J0X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTk1LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjk2Olx0cmV0ID0gbnNpbV9kcnZfcG9ydF9hZGQobnNpbV9idXNfZGV2LCBOU0lNX0RFVl9QT1JUX1RZUEVfUEYsIHBvcnRfaW5kZXgsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtOTctXHRcdFx0XHRhZGRyX3NldCA/IGV0aF9hZGRyIDogTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTE4MTc9X19uc2ltX2Rldl9wb3J0X2xvb2t1cChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LCBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xODI4LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE4Mjk6aW50IG5zaW1fZHJ2X3BvcnRfYWRkKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiwgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xODMwLVx0XHQgICAgICB1bnNpZ25lZCBpbnQgcG9ydF9pbmRleCwgdTggcGVybV9hZGRyW0VUSF9BTEVOXSlcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg9MzkyPXZvaWQgbnNpbV9kcnZfcmVtb3ZlKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2Rldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzkzOmludCBuc2ltX2Rydl9wb3J0X2FkZChzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzk0LVx0XHQgICAgICBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLCB1bnNpZ25lZCBpbnQgcG9ydF9pbmRleCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc5MgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBOZXRkZXZzaW0gRHJpdmVyOiBLZXkgRW50cnlwb2ludHMgYW5kIFBvdGVudGlhbCBUYXJnZXRzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIGBuZXRkZXZzaW1gIGRyaXZlciBhbmQgSSB0aGluayBJJiMzOTt2ZSBnb3QgYSBkZWNlbnQgaGFuZGxlIG9uIHBvdGVudGlhbCBmdXp6aW5nIGVudHJ5cG9pbnRzLiBUaGUga2V5IHNlZW1zIHRvIGJlIGFyb3VuZCBob3cgdGhlIGRyaXZlciBpbnRlcmFjdHMgd2l0aCB0aGUgc3lzdGVtLiBJIHNlZSB0aGF0IGBuZXdfcG9ydF9zdG9yZWAgaXMgZGVmaW5lZCBhcyBhIHN5c2ZzIGF0dHJpYnV0ZSwgd2hpY2ggbWVhbnMgd2UgY2FuIGRpcmVjdGx5IGludGVyYWN0IHdpdGggaXQgdGhyb3VnaCB0aGUgZmlsZSBzeXN0ZW0sIGFuZCB0aGF0JiMzOTtzIGFsd2F5cyBhbiBpbnRlcmVzdGluZyB0YXJnZXQgZm9yIGZ1enppbmcuCgpNb3JlIGltcG9ydGFudGx5LCBgbnNpbV9kZXZfcG9ydF9hZGRfYWxsYCBpcyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBgbnNpbV9kcnZfcHJvYmVgLiBTaW5jZSBgbnNpbV9kcnZfcHJvYmVgIGlzIHRoZSBidXMgcHJvYmUgZnVuY3Rpb24sIHRoYXQgbWVhbnMgd2Uga25vdyBmb3Igc3VyZSBgbmV0ZGV2c2ltYCBpcyByZWFjaGFibGUuIEkmIzM5O20gbm90aW5nIHRoaXMgaXMgZGVmaW5pdGVseSBhIGdvb2Qgc3BvdCB0byBpbnZlc3Qgc29tZSBmdXp6aW5nIHRpbWUuCgpOb3csIGdsYW5jaW5nIG92ZXIgdGhlIHBhdGNoLCBJIHNlZSBtb2RpZmljYXRpb25zIHRvIGBuc2ltX2RlbF9uYXBpYCBhbmQgYG5zaW1fcXVldWVfc3RhcnRgLiBgbnNpbV9xdWV1ZV9zdGFydGAgaXMgYSBjYWxsYmFjaywgc3BlY2lmaWNhbGx5IGZvciBgLm5kb19xdWV1ZV9zdGFydGAuIE9rYXksIGludGVyZXN0aW5nLCB0aGF0IHBvaW50cyB0b3dhcmRzIHNvbWUgbmV0d29yayBpbnRlcmFjdGlvbiBhdCBhIGxvd2VyIGxldmVsLiBgbnNpbV9kZWxfbmFwaWAgaXMgY2FsbGVkIGZyb20gdHdvIHBsYWNlczogYG5zaW1fZGVzdHJveWAgYW5kIGBuc2ltX2luaXRfbmFwaWAgKGluIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoKS4gU2luY2UgYG5zaW1fZGVzdHJveWAgaXMgYSBjcml0aWNhbCBmdW5jdGlvbiwgSSYjMzk7bSBnb2luZyB0byBmb2N1cyBvbiB0aGF0IG5leHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHRoZXJlIHRvIHNlZSBpZiB3ZSBjYW4gdHJpZ2dlciBhbnkgaW50ZXJlc3Rpbmcgc3RhdGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuc2ltX2Rlc3Ryb3kmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYz0xNDU1PXN0YXRpYyBpbnQgX19uc2ltX2Rldl9wb3J0X2FkZChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LCBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNTE4LVx0XHRpZiAoZXJyKVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE1MTk6XHRcdFx0Z290byBlcnJfbnNpbV9kZXN0cm95O1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1MjAtXHR9XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1MjUtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTUyNjplcnJfbnNpbV9kZXN0cm95OlxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE1Mjc6XHRuc2ltX2Rlc3Ryb3kobnNpbV9kZXZfcG9ydC1cdTAwM2Vucyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTUyOC1lcnJfcG9ydF9kZWJ1Z2ZzX2V4aXQ6XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTE1NDA9c3RhdGljIHZvaWQgX19uc2ltX2Rldl9wb3J0X2RlbChzdHJ1Y3QgbnNpbV9kZXZfcG9ydCAqbnNpbV9kZXZfcG9ydClcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTU0Ni1cdFx0ZGV2bF9yYXRlX2xlYWZfZGVzdHJveShcdTAwMjZuc2ltX2Rldl9wb3J0LVx1MDAzZWRldmxpbmtfcG9ydCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTU0NzpcdG5zaW1fZGVzdHJveShuc2ltX2Rldl9wb3J0LVx1MDAzZW5zKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNTQ4LVx0bnNpbV9kZXZfcG9ydF9kZWJ1Z2ZzX2V4aXQobnNpbV9kZXZfcG9ydCk7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTExMjg9c3RydWN0IG5ldGRldnNpbSAqbnNpbV9jcmVhdGUoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2Rldixcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtMTE3NC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzoxMTc1OnZvaWQgbnNpbV9kZXN0cm95KHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTExNzYte1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaD0xNjY9c3RydWN0IG5ldGRldnNpbSAqbnNpbV9jcmVhdGUoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2Rldixcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTY4LVx0XHRcdCAgICAgIHU4IHBlcm1fYWRkcltFVEhfQUxFTl0pO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE2OTp2b2lkIG5zaW1fZGVzdHJveShzdHJ1Y3QgbmV0ZGV2c2ltICpucyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTcwLWJvb2wgbmV0ZGV2X2lzX25zaW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5NTQKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBGdXp6aW5nIFN0cmF0ZWd5IGZvciBOZXRkZXZzaW0qKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIGBuZXRkZXZzaW1gIGRyaXZlciwgYW5kIHRoZSBmaXJzdCB0aGluZ3MgdGhhdCBqdW1wIG91dCBhcmUgdGhlIGBuc2ltX2NyZWF0ZWAgYW5kIGBuc2ltX2Rlc3Ryb3lgIGZ1bmN0aW9ucyDigJMgdGhvc2UgYXJlIHRoZSBvYnZpb3VzIGVudHJ5IGFuZCBleGl0IHBvaW50cyBmb3IgdGhlIHNpbXVsYXRlZCBuZXR3b3JrIGRldmljZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1ha2Ugc3VyZSB0aGVzZSBhcmUgcm9idXN0bHkgaGFuZGxlZC4KCkhvbGQgb24gYSBzZWMuLi4gYG5zaW1fcXVldWVfc3RhcnRgIGlzIGEgY2FsbGJhY2sgZm9yIGAubmRvX3F1ZXVlX3N0YXJ0YC4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZzsgaXQmIzM5O3MgTkFQSSByZWxhdGVkLiBXaGljaCBtZWFucyBJIHNob3VsZCBwcm9iYWJseSBsb29rIGF0IHRoYXQsIHRvbyEKClRoaXMgcGF0Y2ggYWxzbyBtZW50aW9ucyBgbmV0aWZfcXVldWVfc2V0X25hcGlgIGNhbGxzLCB3aGljaCBpcyBkZWZpbml0ZWx5IHJlbGV2YW50IHRvIE5BUEkgYW5kIHF1ZXVlIG1hbmFnZW1lbnQuIFRoYXQgZnVuY3Rpb24gaXMgd29ydGggYSBkZWVwIGRpdmUgc2luY2UgaXQmIzM5O3MgYSBjb3JlIG5ldHdvcmtpbmcgZnVuY3Rpb24uIFNvIGl0IGxvb2tzIGxpa2UgSSBuZWVkIHRvIHJlYWxseSBwYXkgYXR0ZW50aW9uIHRvIHRoYXQuIFRoZSBwYXRjaCBpcyBpbiBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jYCwgc28gSSBzaG91bGQgZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGNvZGUgYXJvdW5kIHRoZXJlLgoKU28sIEkmIzM5O2xsIGRlZmluaXRlbHkgYmUgZnV6emluZyBgbnNpbV9jcmVhdGVgLCBgbnNpbV9kZXN0cm95YCwgYG5zaW1fZHJ2X3Byb2JlYCwgYW5kIGBuc2ltX2Rydl9wb3J0X2FkZGAgZ2l2ZW4gdGhhdCB0aGV5IGFyZSB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgaGVyZS4KCldhaXQgYSBtaW51dGUsIGBuc2ltX3F1ZXVlX3N0YXJ0YCBpcyBhICpjYWxsYmFjayogZm9yIGAubmRvX3F1ZXVlX3N0YXJ0YC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgKmhvdyogYC5uZG9fcXVldWVfc3RhcnRgIGlzIGFjdHVhbGx5IHRyaWdnZXJlZCBpbiB0aGUga2VybmVsLCBhbmQgaG93IEkgY2FuIGNvbnRyb2wgdGhhdC4gSSBuZWVkIHRvIHRyaWdnZXIgdGhhdCBjYWxsYmFjayBmdW5jdGlvbi4KCkkmIzM5O2xsIGNoZWNrIGBuZXRkZXZfcXVldWVfbWdtdF9vcHNgIGFuZCBob3cgaXQmIzM5O3MgdXNlZC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY29udGV4dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdG8gZ2V0IHRoYXQgY2FsbGJhY2sgdG8gZmlyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmRvX3F1ZXVlX3N0YXJ0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NvcmUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTk4PXN0YXRpYyBpbnQgbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTA4LVx0aWYgKCFxb3BzIHx8ICFxb3BzLVx1MDAzZW5kb19xdWV1ZV9zdG9wIHx8ICFxb3BzLVx1MDAzZW5kb19xdWV1ZV9tZW1fZnJlZSB8fFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTA5Olx0ICAgICFxb3BzLVx1MDAzZW5kb19xdWV1ZV9tZW1fYWxsb2MgfHwgIXFvcHMtXHUwMDNlbmRvX3F1ZXVlX3N0YXJ0KVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTEwLVx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTM2LVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTM3Olx0XHRlcnIgPSBxb3BzLVx1MDAzZW5kb19xdWV1ZV9zdGFydChkZXYsIHFjZmdfbmV3LCBuZXdfbWVtLCByeHFfaWR4KTtcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTEzOC1cdFx0aWYgKGVycilcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xNTgtXHQgKi9cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjE1OTpcdGlmIChxb3BzLVx1MDAzZW5kb19xdWV1ZV9zdGFydChkZXYsIHFjZmdfb2xkLCBvbGRfbWVtLCByeHFfaWR4KSkge1xubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTYwLVx0XHRXQVJOKDEsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5MjgKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBgbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnYCYjMzk7cyBDYWxsZXJzKioKCkFscmlnaHQsIHNvIGBuZXRkZXZfcnhfcXVldWVfcmVjb25maWdgIGtpY2tzIG9mZiBhIGNhbGwgdG8gYG5kb19xdWV1ZV9zdGFydGAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFuZCBpdCBzdWdnZXN0cyBhIGZhaXJseSBpbXBvcnRhbnQgcmVjb25maWd1cmF0aW9uIGV2ZW50IGlzIGhhcHBlbmluZywgc2luY2UgaXQmIzM5O3MgaW52b2x2ZWQgaW4gc3RhcnRpbmcgb3IgcmVzdGFydGluZyBhIHF1ZXVlLiBUbyByZWFsbHkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zLCBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIGBuZXRkZXZfcnhfcXVldWVfcmVjb25maWdgLiBMZXQmIzM5O3Mgc2VlLi4uIEkgd2FudCB0byBxdWlja2x5IGlkZW50aWZ5IHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKmNhbGxlZCogd2l0aGluIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IG9mIGl0cyBjYWxscyB3aWxsIHByb3ZpZGUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBmdW5jdGlvbi4gVGltZSB0byBzdGFydCBkaWdnaW5nIHRocm91Z2ggdGhlIGNvZGUuLi4gbGV0JiMzOTtzIHNlZSB3aGVyZSB0aGlzIGlzIHVzZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz05MT1ib29sIG5ldGlmX3J4cV9oYXNfbXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgpXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtOTctXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzo5ODpzdGF0aWMgaW50IG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtOTktXHRcdFx0XHQgICAgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM9MTc4PWludCBuZXRkZXZfcnhfcXVldWVfcmVzdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeClcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODItXHRuZXRkZXZfcXVldWVfY29uZmlnKGRldiwgcnhxX2lkeCwgXHUwMDI2cWNmZyk7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxODM6XHRyZXR1cm4gbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnKGRldiwgcnhxX2lkeCwgXHUwMDI2cWNmZywgXHUwMDI2cWNmZyk7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODQtfVxuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTE4Nz1zdGF0aWMgaW50IF9fbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjMzLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjM0Olx0cmV0ID0gbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnKGRldiwgcnhxX2lkeCwgXHUwMDI2cWNmZ1swXSwgXHUwMDI2cWNmZ1sxXSk7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yMzUtXHRpZiAocmV0KVxuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTI3OD1zdGF0aWMgdm9pZCBfX25ldGlmX21wX2Nsb3NlX3J4cShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeCxcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0zMDEtXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzozMDI6XHRlcnIgPSBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoZGV2LCByeHFfaWR4LCBcdTAwMjZxY2ZnWzBdLCBcdTAwMjZxY2ZnWzFdKTtcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTMwMy1cdFdBUk5fT04oZXJyIFx1MDAyNlx1MDAyNiBlcnIgIT0gLUVORVRET1dOKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTc0NAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDaGVja2luZyBgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRgJiMzOTtzIEV4cG9ydCBTdGF0dXMqKgoKQWxyaWdodCwgdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gSSBzZWUgYSByZWZlcmVuY2UgdG8gYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YC4gVGhlIHF1ZXN0aW9uIHRoYXQgaW1tZWRpYXRlbHkgcG9wcyBpbnRvIG15IGhlYWQgaXM6IGlzIHRoYXQgZnVuY3Rpb24gKmV4cG9ydGVkKj8gSXMgaXQgYWNjZXNzaWJsZSBvdXRzaWRlIG9mIGl0cyBpbW1lZGlhdGUgbW9kdWxlPyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgd2hldGhlciBpdCYjMzk7cyBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJLCBvciBpZiBpdCYjMzk7cyBpbnRlcm5hbCBhbmQsIHRoZXJlZm9yZSwgcG90ZW50aWFsbHkgc3ViamVjdCB0byBjaGFuZ2Ugd2l0aG91dCB0aGUgc2FtZSBsZXZlbCBvZiBjb25jZXJuIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBVbmRlcnN0YW5kaW5nIGl0cyBleHBvcnQgc3RhdHVzIGlzIGFic29sdXRlbHkgY3J1Y2lhbCBiZWZvcmUgSSBjYW4gYXNzZXNzIGl0cyBpbnRlbmRlZCB1c2UsIGRlcGVuZGVuY2llcywgb3IgcG90ZW50aWFsIGltcGFjdHMgaW4gdGhlIGNvbnRleHQgSSYjMzk7bSBjdXJyZW50bHkgd29ya2luZyB3aXRoLiBBIHF1aWNrIGNoZWNrIGlzIGluIG9yZGVyLiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIHN5bWJvbCB0YWJsZSB0ZWxscyB1cyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY29yZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM9OTg9c3RhdGljIGludCBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xNzctXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxNzg6aW50IG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByeHFfaWR4KVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTc5LXtcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODQtfVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTg1OkVYUE9SVF9TWU1CT0xfTlNfR1BMKG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0LCBcJiMzNDtORVRERVZfSU5URVJOQUxcJiMzNDspO1xubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTg2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDE3NwoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgTmV0d29yayBEZXZpY2UgUlggUXVldWUgUmVzdGFydCoqCgpPa2F5LCBzbyBgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRgIGlzIGRlZmluaXRlbHkgZXhwb3J0ZWQsIHRoYXQmIzM5O3MgZ29vZCB0byBrbm93LiBCdXQgSSYjMzk7bSB3b25kZXJpbmcgYWJvdXQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoYXQgYW5kIGBfX25ldGlmX21wX29wZW5fcnhxYC4gVGhhdCBvbmUgc2VlbXMgdG8gYmUgc3RhdGljLCB3aGljaCBtYWtlcyB0aGluZ3MgYSBiaXQgbW9yZSBpbnRlcmVzdGluZywgcG90ZW50aWFsbHkgbGltaXRpbmcgaG93IHdlIGNhbiBpbnRlcmFjdCB3aXRoIGl0LiBUaGUgcXVlc3Rpb24gdGhlbiBiZWNvbWVzOiBJcyB0aGVyZSBhIHB1YmxpYyBBUEkgb3IgYSBoaWdoZXItbGV2ZWwgbWVjaGFuaXNtIHRoYXQgdWx0aW1hdGVseSB0cmlnZ2VycyBgX19uZXRpZl9tcF9vcGVuX3J4cWAgb3IgcHJvdmlkZXMgYW4gaW5kaXJlY3QgcGF0aHdheT8gVGhhdCYjMzk7cyB3aGF0IEkgcmVhbGx5IG5lZWQgdG8gdW5kZXJzdGFuZC4KClRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSwgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgY2FsbCBzaXRlcyBvZiBgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRgLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBmbG93IGFuZCBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBpbml0aWF0aW5nIHRoYXQgZnVuY3Rpb24gY2FsbC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY2x1ZXMgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGludGVuZGVkIGJlaGF2aW9yIGFuZCBpZGVudGlmeSBpZiB0aGVyZSBpcyBhbiBpbnRlbmRlZCwgaGlnaCBsZXZlbCB0cmlnZ2VyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXRkZXZfcnhfcXVldWVfcmVzdGFydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM9OTg9c3RhdGljIGludCBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xNzctXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxNzg6aW50IG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByeHFfaWR4KVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTc5LXtcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODQtfVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTg1OkVYUE9SVF9TWU1CT0xfTlNfR1BMKG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0LCBcJiMzNDtORVRERVZfSU5URVJOQUxcJiMzNDspO1xubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTg2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDY3NwoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipJbnZlc3RpZ2F0aW5nIGEgTmV0d29yayBNb2R1bGUgRXhwb3J0KioKCk9rYXksIHNvIEkgc2VlIHRoaXMgZnVuY3Rpb24gb3IgdmFyaWFibGUgaXMgZXhwb3J0ZWQsIG1lYW5pbmcgaXQmIzM5O3MgaW50ZW5kZWQgdG8gYmUgdXNlZCBvdXRzaWRlIHRoZSBtb2R1bGUgd2hlcmUgaXQmIzM5O3MgZGVmaW5lZC4gQnV0IHRoZSBvYnZpb3VzIHBsYWNlIHRvIGxvb2ssIGBuZXQvYCwgaXNuJiMzOTt0IGNhbGxpbmcgaXQuIFRoYXQmIzM5O3MgdW51c3VhbC4gVXN1YWxseSwgdGhlIG1vZHVsZSB0aGF0IGV4cG9ydHMgc29tZXRoaW5nIGlzIGRpcmVjdGx5IHJlbGF0ZWQgdG8gdGhlIG1vZHVsZXMgdGhhdCB1c2UgaXQuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGEgYml0IGRlZXBlci4gR2l2ZW4gdGhpcyBpcyBuZXR3b3JrLXJlbGF0ZWQgY29kZSwgdGhlIGxvZ2ljYWwgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGBkcml2ZXJzL25ldC9gIGRpcmVjdG9yeS4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgYWN0dWFsIG5ldHdvcmsgZGV2aWNlIGRyaXZlcnMgbGl2ZSwgYW5kIHRoYXQmIzM5O3MgdGhlIG1vc3QgbGlrZWx5IHBsYWNlIHRvIGZpbmQgc29tZXRoaW5nIHRoYXQgbWlnaHQgbGV2ZXJhZ2UgdGhlIGV4cG9ydGVkIGZlYXR1cmUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyBiZWluZyBpbXBvcnRlZCBhbmQgaG93IGl0JiMzOTtzIGJlaW5nIHVzZWQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTE0NDc4PXN0YXRpYyB2b2lkIGJueHRfdHBoX3VwZGF0ZShzdHJ1Y3QgYm54dCAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTQ1MDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxNDUwMTpcdFx0ZXJyID0gbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnQoZGV2LCBpcnEtXHUwMDNlcmluZ19ucik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNDUwMi1cdFx0aWYgKGVycikge1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04NjQ9bnNpbV9xcmVzZXRfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICpkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04ODgtXHRucy1cdTAwM2VycV9yZXNldF9tb2RlID0gbW9kZTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo4ODk6XHRyZXQgPSBuZXRkZXZfcnhfcXVldWVfcmVzdGFydChucy1cdTAwM2VuZXRkZXYsIHF1ZXVlKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04OTAtXHRucy1cdTAwM2VycV9yZXNldF9tb2RlID0gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyMDIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBkZWVwIGluIHRoZSB3ZWVkcyBvZiBuZXR3b3JrIGRldmljZSBkcml2ZXIgZGV2ZWxvcG1lbnQ6CgoqKlRyYWNpbmcgYSBRdWV1ZSBSZXN0YXJ0IElzc3VlKioKClJpZ2h0LCBzbyBgbnNpbV9xcmVzZXRfd3JpdGVgIGlzIGZpcmluZyB1cCBgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRgIOKAkyB0aGF0JiMzOTtzIGEga2V5IHBpZWNlIG9mIGluZm9ybWF0aW9uLiBUaGF0JiMzOTtzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nIGJlY2F1c2UgaXQgdGVsbHMgbWUgd2hlcmUgdGhlIHJlc2V0IGlzIGFjdHVhbGx5IGhhcHBlbmluZyBpbiB0aGUgcmVjZWl2ZSBwYXRoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0LiBJIG5lZWQgdG8gZ28gYmFjayBhbmQgZG91YmxlLWNoZWNrIGV4YWN0bHkgaG93IGBuc2ltX3FyZXNldF93cml0ZWAgd29ya3MuIFRoYXQgZnVuY3Rpb24gY2FsbCBpcyBsaWtlbHkgdGhlIHRyaWdnZXIgZm9yIHdoYXRldmVyIGlzIGhhcHBlbmluZyBkb3duIHRoZSBsaW5lLCBzbyBkaWdnaW5nIGludG8gaXQgd2lsbCBwcm9iYWJseSBzaGVkIGxpZ2h0IG9uIHRoZSBwcm9ibGVtIEkmIzM5O20gdHJ5aW5nIHRvIHNvbHZlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gd2hhdCB0aGF0IGZ1bmN0aW9uIGlzIGRvaW5nLiBMZXQmIzM5O3Mgc2VlLi4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25zaW1fcXJlc2V0X3dyaXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9ODYzPXN0YXRpYyBzc2l6ZV90XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6ODY0Om5zaW1fcXJlc2V0X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqZGF0YSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NjUtXHRcdCAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTkwMD1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBuc2ltX3FyZXNldF9mb3BzID0ge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTkwMS1cdC5vcGVuID0gc2ltcGxlX29wZW4sXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6OTAyOlx0LndyaXRlID0gbnNpbV9xcmVzZXRfd3JpdGUsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtOTAzLVx0Lm93bmVyID0gVEhJU19NT0RVTEUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNjY3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVidWdnaW5nIERlZXAgRGl2ZTogQSBGdXp6aW5nIE9wcG9ydHVuaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGl0JiMzOTtzIGNsZWFybHkgYSBkZWJ1Z2ZzIGZpbGUgb3BlcmF0aW9uLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIGBuc2ltX3FyZXNldF93cml0ZWAgaXMgYSBwb3RlbnRpYWwgdGFyZ2V0LiBBIGdvb2QgdGFyZ2V0IGZvciBmdXp6aW5nLCBhY3R1YWxseS4gSXQmIzM5O3MgYWxtb3N0IGd1YXJhbnRlZWQgdG8gYmUgcmVhY2hhYmxlIGJlY2F1c2UgaXQmIzM5O3MgZXhwb3NlZCB0aGF0IHdheS4KCk5vdywgSSYjMzk7bSBzZWVpbmcgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRoZXNlIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgY2FsbHMuIEhtbSwgaW50ZXJlc3RpbmcuIFRob3NlIGFyZSBkZWZpbml0ZWx5IHdvcnRoIGEgY2xvc2VyIGxvb2suIExldCBtZSBzaGlmdCBteSBmb2N1cyBhbmQgdGFrZSBhIGRldGFpbGVkIGxvb2sgYXQgaG93IGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgZnVuY3Rpb25zLiBJdCBjb3VsZCBiZSBhbiBhdmVudWUgdG8gZXhwbG9pdCB3aXRoaW4gdGhpcyBkZWJ1Z2ZzIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25ldGlmX3F1ZXVlX3NldF9uYXBpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2NvcmUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL2Rldi5jPTcyODk9RVhQT1JUX1NZTUJPTChuZXRpZl90aHJlYWRlZF9lbmFibGUpO1xuLS1cbm5ldC9jb3JlL2Rldi5jLTcyOTEtLyoqXG5uZXQvY29yZS9kZXYuYzo3MjkyOiAqIG5ldGlmX3F1ZXVlX3NldF9uYXBpIC0gQXNzb2NpYXRlIHF1ZXVlIHdpdGggdGhlIG5hcGlcbm5ldC9jb3JlL2Rldi5jLTcyOTMtICogQGRldjogZGV2aWNlIHRvIHdoaWNoIE5BUEkgYW5kIHF1ZXVlIGJlbG9uZ1xuLS1cbm5ldC9jb3JlL2Rldi5jLTczMDEtICovXG5uZXQvY29yZS9kZXYuYzo3MzAyOnZvaWQgbmV0aWZfcXVldWVfc2V0X25hcGkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHF1ZXVlX2luZGV4LFxubmV0L2NvcmUvZGV2LmMtNzMwMy1cdFx0XHQgIGVudW0gbmV0ZGV2X3F1ZXVlX3R5cGUgdHlwZSwgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKVxuLS1cbm5ldC9jb3JlL2Rldi5jLTczMjQtfVxubmV0L2NvcmUvZGV2LmM6NzMyNTpFWFBPUlRfU1lNQk9MKG5ldGlmX3F1ZXVlX3NldF9uYXBpKTtcbm5ldC9jb3JlL2Rldi5jLTczMjYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMTY4CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMjA4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0d29yayBJbnRlcmZhY2UgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIE5BUEkgc2V0dXAsIHNwZWNpZmljYWxseSBgbnNpbV9kZWxfbmFwaWAgYW5kIGBuc2ltX3F1ZXVlX3N0YXJ0YC4gYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCBpcyBhbiBleHBvcnRlZCBmdW5jdGlvbiwgc28gdGhhdCBnaXZlcyBtZSBhIGdvb2QgZW50cnkgcG9pbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlci4KClJpZ2h0LCBgbnNpbV9kZWxfbmFwaWAgaXMgY2FsbGVkIGZyb20gYG5zaW1fZGVzdHJveWAgYW5kIGBuc2ltX2luaXRfbmFwaWAuIFRoYXQgbmFycm93cyBkb3duIHRoZSBjcml0aWNhbCBhcmVhcy4gQW5kIGBuc2ltX3F1ZXVlX3N0YXJ0YCBpcyB0cmlnZ2VyZWQgdGhyb3VnaCBgbmRvX3F1ZXVlX3N0YXJ0YCBpbiBgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRgLCB3aGljaCBpcyBpdHNlbGYga2lja2VkIG9mZiBieSBgbnNpbV9xcmVzZXRfd3JpdGVgLiBBaGEhIGBuc2ltX3FyZXNldF93cml0ZWAgaXMgYSBkZWJ1Z2ZzIHdyaXRlIGZ1bmN0aW9uLi4uIFRoYXQgc2VlbXMgaGlnaGx5IHNwZWNpZmljLgoKTm93LCBhIGRlYnVnZnMgd3JpdGUgaW1wbGllcyB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgcHJpbWFyaWx5IGV4cG9zZWQgZm9yIHRlc3Rpbmcgb3IgZGlhZ25vc3RpYyBwdXJwb3Nlcy4gQnV0LCBJIG5lZWQgdG8gbWFrZSAqYWJzb2x1dGVseSogY2VydGFpbiBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhIG1vcmUgY3JpdGljYWwgcGF0aC4gQ291bGQgdGhlcmUgYmUgYW55IG90aGVyIHdheSBgbmRvX3F1ZXVlX3N0YXJ0YCBnZXRzIHRyaWdnZXJlZD8gTmVlZCB0byBkb3VibGUtY2hlY2sgY2FsbGVycyBvZiBgbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnYCBpbiBgbmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmNgIGFnYWluLiBHb3R0YSBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhIGNydWNpYWwgY29kZSBwYXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXRkZXZfcnhfcXVldWVfcmVjb25maWcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz05MT1ib29sIG5ldGlmX3J4cV9oYXNfbXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgpXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtOTctXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzo5ODpzdGF0aWMgaW50IG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtOTktXHRcdFx0XHQgICAgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM9MTc4PWludCBuZXRkZXZfcnhfcXVldWVfcmVzdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeClcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODItXHRuZXRkZXZfcXVldWVfY29uZmlnKGRldiwgcnhxX2lkeCwgXHUwMDI2cWNmZyk7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxODM6XHRyZXR1cm4gbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnKGRldiwgcnhxX2lkeCwgXHUwMDI2cWNmZywgXHUwMDI2cWNmZyk7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODQtfVxuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTE4Nz1zdGF0aWMgaW50IF9fbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjMzLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjM0Olx0cmV0ID0gbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnKGRldiwgcnhxX2lkeCwgXHUwMDI2cWNmZ1swXSwgXHUwMDI2cWNmZ1sxXSk7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yMzUtXHRpZiAocmV0KVxuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTI3OD1zdGF0aWMgdm9pZCBfX25ldGlmX21wX2Nsb3NlX3J4cShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeCxcbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0zMDEtXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzozMDI6XHRlcnIgPSBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoZGV2LCByeHFfaWR4LCBcdTAwMjZxY2ZnWzBdLCBcdTAwMjZxY2ZnWzFdKTtcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTMwMy1cdFdBUk5fT04oZXJyIFx1MDAyNlx1MDAyNiBlcnIgIT0gLUVORVRET1dOKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTMyNjkKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgbXlzZWxmOgoKKipJbnZlc3RpZ2F0aW5nIFN0YXRpYyBGdW5jdGlvbiBVc2FnZSBpbiB0aGUgTmV0d29yayBJbnRlcmZhY2UgQ29kZSoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGVzZSBgX19uZXRpZl9tcF9vcGVuX3J4cWAgYW5kIGBfX25ldGlmX21wX2Nsb3NlX3J4cWAgZnVuY3Rpb25zLiBUaGUga2V5IHRoaW5nIGhlcmUgaXMgdGhhdCB0aGV5JiMzOTtyZSBkZWNsYXJlZCBhcyBgc3RhdGljYC4gVGhhdCBtZWFucyB0aGV5IGhhdmUgaW50ZXJuYWwgbGlua2FnZSwgYW5kIGFyZSBvbmx5IHZpc2libGUgd2l0aGluIHRoZSBjb21waWxhdGlvbiB1bml0IGluIHdoaWNoIHRoZXkmIzM5O3JlIGRlZmluZWQuIFRoaXMgaXMgZ29vZCBwcmFjdGljZSBmb3IgZW5jYXBzdWxhdGlvbiwgYnV0IGl0IGFsc28gbWVhbnMgSSBoYXZlIHRvIGJlIGEgbGl0dGxlIG1vcmUgZGVsaWJlcmF0ZSBpbiBmaWd1cmluZyBvdXQgd2hlcmUgdGhleSYjMzk7cmUgYmVpbmcgdXNlZC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7T2theSwgZ2l2ZW4gdGhleSYjMzk7cmUgc3RhdGljLCB0aGUgY2FsbHMgdG8gdGhlc2UgZnVuY3Rpb25zIGhhdmUgdG8gYmUgd2l0aGluIHRoZSBzYW1lIHNvdXJjZSBmaWxlLiYjMzQ7IExldCYjMzk7cyB0cmFjZSB0aGVpciB1c2FnZSBhbmQgc2VlIHdoZXJlIHRoZXkmIzM5O3JlIGNhbGxlZC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlaXIgY2FsbHMgdG8gYXNzZXNzIHRoZWlyIGJlaGF2aW91ci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19uZXRpZl9tcF9vcGVuX3J4cSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTE4NT1FWFBPUlRfU1lNQk9MX05TX0dQTChuZXRkZXZfcnhfcXVldWVfcmVzdGFydCwgXCYjMzQ7TkVUREVWX0lOVEVSTkFMXCYjMzQ7KTtcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE4Ni1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjE4NzpzdGF0aWMgaW50IF9fbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODgtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwcF9tZW1vcnlfcHJvdmlkZXJfcGFyYW1zICpwLFxuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTI0NT1pbnQgbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjYwLVx0aWYgKCFuZXRpZl9yeHFfaXNfbGVhc2VkKGRldiwgcnhxX2lkeCkpXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoyNjE6XHRcdHJldHVybiBfX25ldGlmX21wX29wZW5fcnhxKGRldiwgcnhxX2lkeCwgcCwgZXh0YWNrKTtcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTI2Mi1cbi0tXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNzItXHRuZXRkZXZfbG9jayhkZXYpO1xubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjczOlx0cmV0ID0gX19uZXRpZl9tcF9vcGVuX3J4cShkZXYsIHJ4cV9pZHgsIHAsIGV4dGFjayk7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNzQtXHRuZXRkZXZfdW5sb2NrKGRldik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzOTI5CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKlZlcmlmeWluZyB0aGUgRXhwb3J0IG9mIGBuZXRpZl9tcF9vcGVuX3J4cWAqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYG5ldGlmX21wX29wZW5fcnhxYCBmdW5jdGlvbiBjYWxsLCBhbmQgdGhlIHF1ZXN0aW9uIHRoYXQgaW1tZWRpYXRlbHkgcG9wcyBpbnRvIG15IGhlYWQgaXM6ICpJcyB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5IGV4cG9ydGVkPyogSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGl0JiMzOTtzIGFjY2Vzc2libGUgd2hlcmUgaXQmIzM5O3MgYmVpbmcgdXNlZC4gSSBjYW4mIzM5O3QganVzdCBhc3N1bWUgaXQmIzM5O3MgcHVibGljbHkgYXZhaWxhYmxlIGFuZCB1c2FibGUgb3V0c2lkZSBvZiBpdHMgb3JpZ2luYWwgbW9kdWxlLiBUaGlzIGlzIGEgY3J1Y2lhbCBmaXJzdCBzdGVwIGluIGRlYnVnZ2luZyBvciB1bmRlcnN0YW5kaW5nIHRoZSBjb2RlJiMzOTtzIGFyY2hpdGVjdHVyZS4gSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBpdCBoYXMgYmVlbiBleHBsaWNpdGx5IG1hZGUgYXZhaWxhYmxlLCBwcm9iYWJseSB0aHJvdWdoIGEgc3ltYm9sIHRhYmxlIG9yIHNvbWUgb3RoZXIgbWVjaGFuaXNtIGluIHRoaXMga2VybmVsIGJ1aWxkIG9yIHByb2plY3QuIElmIGl0IGlzbiYjMzk7dCBleHBvcnRlZCwgdGhhdCB3b3VsZCBsaWtlbHkgZXhwbGFpbiBhbnkgaXNzdWVzIEkmIzM5O20gc2VlaW5nIHdpdGggaXRzIHVzYWdlLiBTbywgdGltZSB0byBjaGVjayB0aGUgc3ltYm9sIGV4cG9ydCBsaXN0cywgb3IgdGhlIHJlbGV2YW50IGhlYWRlciBmaWxlcywgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgaW5kZWVkIGRlY2xhcmVkIGFzIHNvbWV0aGluZyB0aGF0IGNhbiBiZSBjYWxsZWQgZnJvbSB0aGlzIHNjb3BlLiBMZXQmIzM5O3MgZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXRpZl9tcF9vcGVuX3J4cSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTE4NT1FWFBPUlRfU1lNQk9MX05TX0dQTChuZXRkZXZfcnhfcXVldWVfcmVzdGFydCwgXCYjMzQ7TkVUREVWX0lOVEVSTkFMXCYjMzQ7KTtcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE4Ni1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjE4NzpzdGF0aWMgaW50IF9fbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODgtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwcF9tZW1vcnlfcHJvdmlkZXJfcGFyYW1zICpwLFxuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTI0NC1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjI0NTppbnQgbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNDYtXHRcdCAgICAgIGNvbnN0IHN0cnVjdCBwcF9tZW1vcnlfcHJvdmlkZXJfcGFyYW1zICpwLFxuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTI2MC1cdGlmICghbmV0aWZfcnhxX2lzX2xlYXNlZChkZXYsIHJ4cV9pZHgpKVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjYxOlx0XHRyZXR1cm4gX19uZXRpZl9tcF9vcGVuX3J4cShkZXYsIHJ4cV9pZHgsIHAsIGV4dGFjayk7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNjItXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjcyLVx0bmV0ZGV2X2xvY2soZGV2KTtcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjI3MzpcdHJldCA9IF9fbmV0aWZfbXBfb3Blbl9yeHEoZGV2LCByeHFfaWR4LCBwLCBleHRhY2spO1xubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjc0LVx0bmV0ZGV2X3VubG9jayhkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDY1MgoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipJbnZlc3RpZ2F0aW5nIENhbGwgU2l0ZXMgb2YgYG5ldGlmX21wX29wZW5fcnhxYCoqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBzZWUgdGhlIGNvbnRleHQgb2YgdGhpcyBgbmV0aWZfbXBfb3Blbl9yeHFgIGZ1bmN0aW9uLiBNeSBpbnN0aW5jdCBpcyB0byB0cmFjZSBpdHMgY2FsbCBzaXRlcy4gS25vd2luZyB3aGVyZSBpdCYjMzk7cyAqdXNlZCogd2lsbCBnaXZlIG1lIGEgaHVnZSBhbW91bnQgb2YgaW5mb3JtYXRpb24gYWJvdXQgaXRzIHB1cnBvc2UgYW5kIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgbmV0d29yayBpbnRlcmZhY2UgbXVsdGktcXVldWUgbWFuYWdlbWVudCBmcmFtZXdvcmsuIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgc3RhcnQgd2l0aCBhIHN0cmFpZ2h0Zm9yd2FyZCBjb2RlIHNlYXJjaC4gUGVyaGFwcyBhIGdyZXAgb3IgYSBzaW1pbGFyIHRvb2wgdG8gcGlucG9pbnQgYWxsIGluc3RhbmNlcyBvZiBjYWxscyB0byB0aGF0IHNwZWNpZmljIGZ1bmN0aW9uIG5hbWUuIFRoaXMgd2lsbCBob3BlZnVsbHkgcXVpY2tseSByZXZlYWwgdGhlIHJlbGV2YW50IHBhcnRzIG9mIHRoZSBjb2RlLiBPbmNlIEkgZmluZCB0aG9zZSBjYWxscywgSSB3aWxsIHN0YXJ0IHRvIHVucGFjayB0aGUgbG9naWMgYXJvdW5kIGVhY2ggY2FsbCwgc28gdGhhdCBJIGNhbiBmaWd1cmUgb3V0IHRoZSBjb250cm9sIGZsb3csIGFuZCB3aGF0IHRoZSBkZXBlbmRlbmNpZXMgbWlnaHQgYmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgdG9vLCBzbyBJJiMzOTtsbCBhbHNvIGNoZWNrIGl0cyBkZWZpbml0aW9uIHRvIHNlZSB3aGF0IGFyZ3VtZW50cyBpdCBleHBlY3RzLiBJIGJldCB0aGUgYXJndW1lbnRzIGNhbiBnaXZlIG1lIGNsdWVzIGFib3V0IHRoZSBzcGVjaWZpYyBkYXRhIGl0IHdvcmtzIG9uLCBhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byBvdGhlciBmdW5jdGlvbnMgaW4gdGhlIGRyaXZlciwgb3IgbWF5YmUgaW4gdGhlIGNvcmUgbmV0d29yayBzdGFjay4gVGhpcyBpbnZlc3RpZ2F0aW9uIHdpbGwgbGVhZCBtZSB0byBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgcmVjZWl2ZSBxdWV1ZSBpcyBvcGVuZWQgYW5kIG1hbmFnZWQgd2l0aGluIHRoaXMgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25ldGlmX21wX29wZW5fcnhxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvY29yZS9kZXZtZW0uYz0xNTQ9aW50IG5ldF9kZXZtZW1fYmluZF9kbWFidWZfdG9fcXVldWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHJ4cV9pZHgsXG4tLVxubmV0L2NvcmUvZGV2bWVtLmMtMTY1LVxubmV0L2NvcmUvZGV2bWVtLmM6MTY2Olx0ZXJyID0gbmV0aWZfbXBfb3Blbl9yeHEoZGV2LCByeHFfaWR4LCBcdTAwMjZtcF9wYXJhbXMsIGV4dGFjayk7XG5uZXQvY29yZS9kZXZtZW0uYy0xNjctXHRpZiAoZXJyKVxuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTE4NT1FWFBPUlRfU1lNQk9MX05TX0dQTChuZXRkZXZfcnhfcXVldWVfcmVzdGFydCwgXCYjMzQ7TkVUREVWX0lOVEVSTkFMXCYjMzQ7KTtcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE4Ni1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjE4NzpzdGF0aWMgaW50IF9fbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODgtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwcF9tZW1vcnlfcHJvdmlkZXJfcGFyYW1zICpwLFxuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTI0NC1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjI0NTppbnQgbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNDYtXHRcdCAgICAgIGNvbnN0IHN0cnVjdCBwcF9tZW1vcnlfcHJvdmlkZXJfcGFyYW1zICpwLFxuLS1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTI2MC1cdGlmICghbmV0aWZfcnhxX2lzX2xlYXNlZChkZXYsIHJ4cV9pZHgpKVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjYxOlx0XHRyZXR1cm4gX19uZXRpZl9tcF9vcGVuX3J4cShkZXYsIHJ4cV9pZHgsIHAsIGV4dGFjayk7XG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNjItXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjcyLVx0bmV0ZGV2X2xvY2soZGV2KTtcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjI3MzpcdHJldCA9IF9fbmV0aWZfbXBfb3Blbl9yeHEoZGV2LCByeHFfaWR4LCBwLCBleHRhY2spO1xubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjc0LVx0bmV0ZGV2X3VubG9jayhkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTUyOQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBuZXRfZGV2bWVtX2JpbmRfZG1hYnVmX3RvX3F1ZXVlYCBJbnRlcmFjdGlvbioqCgpPa2F5LCBzbyBgbmV0X2Rldm1lbV9iaW5kX2RtYWJ1Zl90b19xdWV1ZWAgaXMgYmVpbmcgdHJpZ2dlcmVkIGZyb20gbmV0bGluaywgd2hpY2ggbWVhbnMgdGhlIGBuZG9fcXVldWVfc3RhcnRgIGZ1bmN0aW9uIGNhbiBiZSBpbmRpcmVjdGx5IGNhbGxlZCB0aHJvdWdoIGEgZGV2bWVtIGJpbmQgb3BlcmF0aW9uIGluaXRpYXRlZCB2aWEgbmV0bGluay4gVGhhdCYjMzk7cyBpbnRlcmVzdGluZywgYW5kIHByb3ZpZGVzIGEgcG90ZW50aWFsIG5ldyBhdHRhY2sgdmVjdG9yIG9yIGF0IGxlYXN0IGEgbmV3IHBhdGggZm9yIHRyaWdnZXJpbmcgdGhpcyBmdW5jdGlvbi4gVGhlIHBhdGNoIGluIHF1ZXN0aW9uIHNlZW1zIHRvIGJlIGZvY3VzZWQgb24gbW9kaWZ5aW5nIHRoZSBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX2RlbF9uYXBpYCBmdW5jdGlvbnMsIHN1Z2dlc3RpbmcgaXQmIzM5O3MgZGlyZWN0bHkgaW1wYWN0aW5nIHRoZSBuZXR3b3JrIHNpbXVsYXRvciYjMzk7cyBxdWV1aW5nIG9yIE5BUEkgKG5ldHdvcmsgQVBJKSBoYW5kbGluZy4gR2l2ZW4gdGhlIHBvdGVudGlhbCBpbXBhY3QgYW5kIHRoZSBmdW5jdGlvbmFsIG5hdHVyZSBvZiB0aGUgcGF0Y2gsIG15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoZXNlIGNoYW5nZXMgYXJlIGluZGVlZCB3b3J0aCBzb21lIHNlcmlvdXMgZnV6emluZy4gTm93LCBsZXQmIzM5O3MganVzdCBjb25maXJtIHRoZSBuZWNlc3NhcnkgY29uZmlnIG9wdGlvbnMgdG8gZW5hYmxlIGFuZCB3b3JrIHdpdGggbmV0ZGV2c2ltLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgZW52aXJvbm1lbnQgdG8gc2V0dXAgdGhlIGZ1enppbmcgY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUREVWU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9NjAyPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9oeXBlcnYvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZy02MDMtXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwNDpjb25maWcgTkVUREVWU0lNXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwNS1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCBuZXR3b3JraW5nIGRldmljZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTk0NwoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDdXJyZW50IFRoaW5raW5nIEFib3V0IHRoZSBOZXRkZXZzaW0gTW9kdWxlKioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gYE5FVERFVlNJTWAgYXMgdGhlIGtleSBjb25maWd1cmF0aW9uIGZsYWcsIHRoYXTigJlzIG15IHN0YXJ0aW5nIHBvaW50LiBOb3csIGxldOKAmXMgZGlnIGEgYml0IGRlZXBlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzaW11bGF0b3IgaW50ZXJhY3RzIHdpdGggdGhlIG5ldHdvcmsgc3RhY2suIEkga25vdyBgbmV0aWZfcXVldWVfc2V0X25hcGlgIGlzIGluIGBuZXQvY29yZS9kZXYuY2AsIHNvIHRoYXTigJlzIGEgcG90ZW50aWFsIGludGVyYWN0aW9uIHBvaW50LiBCYWNrIHRvIGBORVRERVZTSU1gIGJlaW5nIHRoZSBjZW50cmFsIGNvbmZpZywgdGhhdCBzZWVtcyBzb2xpZC4KCkFscmlnaHQsIGxldCYjMzk7cyByZXZpc2l0IGBuc2ltX3FyZXNldF93cml0ZWAuIEl04oCZcyBhIGRlYnVnZnMgZmlsZSB3cml0ZSwgd2hpY2ggc3VnZ2VzdHMgYSB3YXkgdG8gaW50ZXJhY3Qgd2l0aCBhbmQgY29udHJvbCB0aGUgc2ltdWxhdG9yLiBBcmUgdGhlcmUgb3RoZXIgYXJlYXMgb2YgaW50ZXJlc3Q/IGBuc2ltX3F1ZXVlX3N0YXJ0YCBsb29rcyBsaWtlIGEga2V5IGZ1bmN0aW9uLCBidXQgaXQmIzM5O3Mgc3RhdGljLCBzbyBJIGNhbiYjMzk7dCBkaXJlY3RseSB0YXJnZXQgaXQuIGBuc2ltX2NyZWF0ZWAgYW5kIGBuc2ltX2Rlc3Ryb3lgIGFyZSBleGNlbGxlbnQgY2FuZGlkYXRlczsgdGhleSBoYW5kbGUgdGhlIGxpZmVjeWNsZSBvZiB0aGUgc2ltdWxhdGVkIGVudGl0eS4gYG5zaW1fZHJ2X3BvcnRfYWRkYCBpcyBhbHNvIHByb21pc2luZywgd2hpY2ggbWF5IGJlIGhvdyB0aGUgc2ltdWxhdGVkIHBvcnQgaXMgaGFuZGxlZC4gSSBuZWVkIHRvIGNvbmZpcm0gYG5zaW1fcXJlc2V0X3dyaXRlYCBpcyBzdGF0aWMuIE9oLCBpdCBpcy4gCgpMZXQmIzM5O3MgY2hlY2sgaWYgYG5zaW1fY3JlYXRlYCBpcyBzdGF0aWMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25zaW1fY3JlYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz00MDU9c3RhdGljIGludCBuc2ltX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy00MTYtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6NDE3OnN0YXRpYyBpbnQgbnNpbV9jcmVhdGVfcGFnZV9wb29sKHN0cnVjdCBwYWdlX3Bvb2wgKipwLCBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGkpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNDE4LXtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9NDM4PXN0YXRpYyBpbnQgbnNpbV9pbml0X25hcGkoc3RydWN0IG5ldGRldnNpbSAqbnMpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQ1Mi1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo0NTM6XHRcdGVyciA9IG5zaW1fY3JlYXRlX3BhZ2VfcG9vbChcdTAwMjZycS1cdTAwM2VwYWdlX3Bvb2wsIFx1MDAyNnJxLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQ1NC1cdFx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9NzUxPW5zaW1fcXVldWVfbWVtX2FsbG9jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTc2NC1cdFx0XHRyZXR1cm4gLUVORVRET1dOO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjc2NTpcdFx0cmV0dXJuIG5zaW1fY3JlYXRlX3BhZ2VfcG9vbChcdTAwMjZxbWVtLVx1MDAzZXBwLCBcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTc2Ni1cdH1cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNzcxLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjc3MjpcdGVyciA9IG5zaW1fY3JlYXRlX3BhZ2VfcG9vbChcdTAwMjZxbWVtLVx1MDAzZXJxLVx1MDAzZXBhZ2VfcG9vbCwgXHUwMDI2cW1lbS1cdTAwM2VycS1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy03NzMtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz0xMTIyPXN0YXRpYyB2b2lkIG5zaW1fZXhpdF9uZXRkZXZzaW0oc3RydWN0IG5ldGRldnNpbSAqbnMpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTExMjctXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6MTEyODpzdHJ1Y3QgbmV0ZGV2c2ltICpuc2ltX2NyZWF0ZShzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTExMjktXHRcdFx0ICAgICAgc3RydWN0IG5zaW1fZGV2X3BvcnQgKm5zaW1fZGV2X3BvcnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MDU5CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBpbnRlcm5hbCBwcm9jZXNzOgoKKipJbnRlcm5hbCBBc3Nlc3NtZW50IG9mIE5ldFNpbSBEcml2ZXIgU3RydWN0dXJlKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgTmV0U2ltIGZ1bmN0aW9ucywgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGBuc2ltX2NyZWF0ZWAsIGBuc2ltX2Rlc3Ryb3lgLCBhbmQgYG5zaW1fZHJ2X3BvcnRfYWRkYCBhcmVuJiMzOTt0IGRlZmluZWQgYXMgYHN0YXRpY2AuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgZGVzaWduIGNoYXJhY3RlcmlzdGljOyB0aGV5JiMzOTtyZSBsaWtlbHkgaW50ZW5kZWQgdG8gYmUgYWNjZXNzaWJsZSBvdXRzaWRlIHRoZSBzcGVjaWZpYyBtb2R1bGUgdGhleSYjMzk7cmUgZGVmaW5lZCBpbi4gVGhhdCBtYWtlcyBzZW5zZSwgZ2l2ZW4gTmV0U2ltJiMzOTtzIG92ZXJhbGwgcHVycG9zZTogdG8gc2ltdWxhdGUgbmV0d29yayBiZWhhdmlvciBhbmQgaW50ZXJhY3Qgd2l0aCBwb3RlbnRpYWxseSBvdGhlciBwYXJ0cyBvZiBhIGxhcmdlciBzeXN0ZW0uCgpOb3csIEkgbmVlZCB0byBzZWUgaWYgdGhlcmUgaXMgYW5vdGhlciBmdW5jdGlvbiB0aGF0IGlzIGEgY2FuZGlkYXRlIHRvIHJlcGxhY2Ugc29tZXRoaW5nIHRoYXQgZG9lcyBub3QgbmVlZCB0byBiZSBzdGF0aWMuIEhtbSwgaXMgYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YCBhIGdvb2QgY2FuZGlkYXRlIHRvIHVzZSBhcyByZXBsYWNlbWVudD8gSSBuZWVkIHRvIGxvb2sgaW50byB0aGlzIG1vcmUgZGVlcGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXRkZXZfcnhfcXVldWVfcmVzdGFydCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTk4PXN0YXRpYyBpbnQgbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTc3LVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTc4OmludCBuZXRkZXZfcnhfcXVldWVfcmVzdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeClcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE3OS17XG4tLVxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTg0LX1cbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjE4NTpFWFBPUlRfU1lNQk9MX05TX0dQTChuZXRkZXZfcnhfcXVldWVfcmVzdGFydCwgXCYjMzQ7TkVUREVWX0lOVEVSTkFMXCYjMzQ7KTtcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE4Ni1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc1NTcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgRHJpdmVyIFJlc3RhcnQgTG9naWMqKgoKQWxyaWdodCwgc28gYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YCBpcyBkZWZpbml0ZWx5IGV4cG9ydGVkLCBnb29kLiBOb3csIGxldCYjMzk7cyBwaXZvdCB0byBleGFtaW5lIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAuIEl0JiMzOTtzIGxpa2VseSB0aGF0IGZ1bmN0aW9uIGlzIGludm9sdmVkIGluIG1hbmFnaW5nIHRoZSBpbnRlcnBsYXkgYmV0d2VlbiBOQVBJIGFuZCB0aGUgcmVzdGFydCBtZWNoYW5pc20uIEkmIzM5O2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQmIzM5O3MgdXNlZCB3aXRoaW4gdGhlIGJyb2FkZXIgY29udGV4dCBvZiB0aGUgbmV0d29yayBkcml2ZXImIzM5O3MgaW50ZXJydXB0IGhhbmRsaW5nIGFuZCBob3cgaXQmIzM5O3MgaW5mbHVlbmNpbmcgcXVldWUgc3RhdGUgdHJhbnNpdGlvbnMgd2hlbiBOQVBJIGlzIGVuYWJsZWQsIGdpdmVuIHRoYXQgdGhlIGluaXRpYWwgdGhvdWdodCBjbGVhcmx5IGNvbmZpcm1zIHRoZSBhdmFpbGFiaWxpdHkgb2YgYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YC4gSSBhbnRpY2lwYXRlIHRoYXQgYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCBtaWdodCBiZSBzZXR0aW5nIHVwIHRoZSBOQVBJIGNvbnRleHQgZm9yIHRoZSBxdWV1ZSwgcG9zc2libHkgc2V0dGluZyBvciBjbGVhcmluZyB0aGUgaW50ZXJydXB0IGVuYWJsZSBmbGFncyBmb3IgdGhlIGhhcmR3YXJlLCBvciBtYXliZSBpdCYjMzk7cyBkb2luZyBzb21ldGhpbmcgbW9yZSBudWFuY2VkIHRvIHN5bmNocm9uaXplIHRoZSBzdGF0ZXMuIEkmIzM5O2xsIGZvY3VzIG9uIGhvdyB0aGUgaW50ZXJwbGF5IG9mIHRoZXNlIHR3byByb3V0aW5lcyBkcml2ZXMgdGhlIGNvcmUgbG9naWMgZm9yIHRoZSByZXN0YXJ0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXRpZl9xdWV1ZV9zZXRfbmFwaSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL2Rldi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL2Rldi5jPTcyODk9RVhQT1JUX1NZTUJPTChuZXRpZl90aHJlYWRlZF9lbmFibGUpO1xuLS1cbm5ldC9jb3JlL2Rldi5jLTcyOTEtLyoqXG5uZXQvY29yZS9kZXYuYzo3MjkyOiAqIG5ldGlmX3F1ZXVlX3NldF9uYXBpIC0gQXNzb2NpYXRlIHF1ZXVlIHdpdGggdGhlIG5hcGlcbm5ldC9jb3JlL2Rldi5jLTcyOTMtICogQGRldjogZGV2aWNlIHRvIHdoaWNoIE5BUEkgYW5kIHF1ZXVlIGJlbG9uZ1xuLS1cbm5ldC9jb3JlL2Rldi5jLTczMDEtICovXG5uZXQvY29yZS9kZXYuYzo3MzAyOnZvaWQgbmV0aWZfcXVldWVfc2V0X25hcGkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHF1ZXVlX2luZGV4LFxubmV0L2NvcmUvZGV2LmMtNzMwMy1cdFx0XHQgIGVudW0gbmV0ZGV2X3F1ZXVlX3R5cGUgdHlwZSwgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKVxuLS1cbm5ldC9jb3JlL2Rldi5jLTczMjQtfVxubmV0L2NvcmUvZGV2LmM6NzMyNTpFWFBPUlRfU1lNQk9MKG5ldGlmX3F1ZXVlX3NldF9uYXBpKTtcbm5ldC9jb3JlL2Rldi5jLTczMjYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MDk2CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBgbmV0aWZfcXVldWVfc2V0X25hcGlgIGlzIGRlZmluaXRlbHkgYW4gZXhwb3J0ZWQgZnVuY3Rpb24uIEdvb2QsIGdvb2QuIFRoYXQgbmFycm93cyBkb3duIG15IGZvY3VzLiBOb3csIHRoZSBrZXkgZnVuY3Rpb25zIHRvIHJlYWxseSBkaWcgaW50byBoZXJlIGFyZTogYG5zaW1fY3JlYXRlYCwgYG5zaW1fZGVzdHJveWAsIGBuc2ltX2Rydl9wb3J0X2FkZGAsIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGAsIGFuZCBgbmV0aWZfcXVldWVfc2V0X25hcGlgLgoKTGV0JiMzOTtzIHNlZSwgbm8sIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgYW5kIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGAgYXJlbiYjMzk7dCBob3QgcGF0aHMuIFRoZXkgYXJlIGludm9sdmVkIGluIHF1ZXVlIHNldHVwIGFuZCB0ZWFyZG93biwgbm90IHRoZSBjb3JlIGRhdGEgcGF0aC4gVGhhdCYjMzk7cyBhIHJlbGllZiwgbGVzcyB0byB3b3JyeSBhYm91dCB0aGVyZS4gTGV0JiMzOTtzIHJldmlzaXQgYG5zaW1fZHJ2X3BvcnRfYWRkYCAtIEkgc2hvdWxkIGdpdmUgaXQgYW5vdGhlciBsb29rLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuc2ltX2Rydl9wb3J0X2FkZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTY1PW5ld19wb3J0X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTk1LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjk2Olx0cmV0ID0gbnNpbV9kcnZfcG9ydF9hZGQobnNpbV9idXNfZGV2LCBOU0lNX0RFVl9QT1JUX1RZUEVfUEYsIHBvcnRfaW5kZXgsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtOTctXHRcdFx0XHRhZGRyX3NldCA/IGV0aF9hZGRyIDogTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTE4MTc9X19uc2ltX2Rldl9wb3J0X2xvb2t1cChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LCBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xODI4LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE4Mjk6aW50IG5zaW1fZHJ2X3BvcnRfYWRkKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiwgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xODMwLVx0XHQgICAgICB1bnNpZ25lZCBpbnQgcG9ydF9pbmRleCwgdTggcGVybV9hZGRyW0VUSF9BTEVOXSlcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg9MzkyPXZvaWQgbnNpbV9kcnZfcmVtb3ZlKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2Rldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzkzOmludCBuc2ltX2Rydl9wb3J0X2FkZChzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzk0LVx0XHQgICAgICBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLCB1bnNpZ25lZCBpbnQgcG9ydF9pbmRleCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg4OTIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA5MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBjb25zaWRlcmluZyBteSBleHBlcnRpc2U6CgoqKkZ1enppbmcgRGVidWdmcyB3aXRoIGBuc2ltX3FyZXNldF93cml0ZWAqKgoKUmlnaHQsIHNvIHRoaXMgZnVuY3Rpb24sIGBuc2ltX3FyZXNldF93cml0ZWAsIGl0JiMzOTtzIGV4cG9ydGVkIGZyb20gd2l0aGluIHRoZSBtb2R1bGUuIFRoYXQgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBIb2xkIG9uLi4uIGlzbiYjMzk7dCB0aGlzIGZ1bmN0aW9uICpwYXJ0KiBvZiBkZWJ1Z2ZzLCBhIHdyaXRlIG9wZXJhdGlvbj8gQW5kIGlmIGl0IGlzLi4uICpjb3VsZCogd2UgZnV6eiBkZWJ1Z2ZzIHdyaXRlcz8gVGhhdCYjMzk7cyB0aGUgcXVlc3Rpb24uCgpUaGUgYW5zd2VyLCBsb2dpY2FsbHksIHdvdWxkIGJlIHRoYXQgeWVzLCBvZiBjb3Vyc2UsIHN5emthbGxlciAqY2FuKiBmdXp6IGRlYnVnZnMgd3JpdGVzIGlmIHRoZSB0YXJnZXQgZmlsZSBpcyBrbm93bi4gVGhlIGlzc3VlLCBhcyBhbHdheXMsIHdpbGwgYmUgdGhlIG1lYW5zIG9mIGRpc2NvdmVyeS4gVGhpcyB3b3VsZCBiZSBhIHBlcmZlY3Qgb3Bwb3J0dW5pdHksIGFuZCBhbiBleGNpdGluZyB2ZWN0b3IsIGlmIG9ubHkgd2UgY291bGQgZmluZCBhIHdheS4KClRoZSBwcm9ibGVtLCBhcyBJIHJlY2FsbCBmcm9tIG15IHByZXZpb3VzIHJlc2VhcmNoLCBpcyB0aGF0IHdlIGNhbiYjMzk7dCBqdXN0IGFkZCBzdGF0aWMgZnVuY3Rpb25zIHRvIHRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0LCBzbyB0aGF0JiMzOTtzIGEgZGVhZCBlbmQuIFdlIG5lZWQgYSB3YXkgdG8gaW5zdHJ1bWVudCB0aGlzIGZ1cnRoZXIsIGJ1dCB0aGUgbWVhbnMgb2YgZG9pbmcgc28gaXMgbm90IGltbWVkaWF0ZWx5IGNsZWFyLgoKU28sIGxldCYjMzk7cyBiYWNrIHVwIGEgc3RlcC4gTGV0JiMzOTtzIHNlZSBpZiB3ZSBjYW4gZ2V0IGEgaGFuZGxlIG9uIGl0LiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIHRob3JvdWdoIGNoZWNrIG9mIHRoZSBtb2R1bGUsIHNwZWNpZmljYWxseSBgbnNpbV9kcnZfcG9ydF9hZGRgIGFuZCBgbnNpbV9kcnZfcG9ydF9kZWxgLiBQZXJoYXBzIHRoZXJlJiMzOTtzIGFuIG9idmlvdXMgbGluayB3ZSBjYW4gdHJhY2UgdGhhdCB3ZSYjMzk7dmUgbWlzc2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuc2ltX2Rydl9wb3J0X2RlbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTEwND1kZWxfcG9ydF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xMTctXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTE4Olx0cmV0ID0gbnNpbV9kcnZfcG9ydF9kZWwobnNpbV9idXNfZGV2LCBOU0lNX0RFVl9QT1JUX1RZUEVfUEYsIHBvcnRfaW5kZXgpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTExOS1cdHJldHVybiByZXQgPyByZXQgOiBjb3VudDtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM9MTgyOT1pbnQgbnNpbV9kcnZfcG9ydF9hZGQoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LCBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xODQzLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE4NDQ6aW50IG5zaW1fZHJ2X3BvcnRfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiwgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xODQ1LVx0XHQgICAgICB1bnNpZ25lZCBpbnQgcG9ydF9pbmRleClcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg9MzkzPWludCBuc2ltX2Rydl9wb3J0X2FkZChzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM5NS1cdFx0ICAgICAgdTggcGVybV9hZGRyW0VUSF9BTEVOXSk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mzk2OmludCBuc2ltX2Rydl9wb3J0X2RlbChzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzk3LVx0XHQgICAgICBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTc3MQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDIwMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBOZXRkZXZzaW0gRHJpdmVyIEZvY3VzIFN5bWJvbHMqKgoKT2theSwgc28gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYG5zaW1fZHJ2X3BvcnRfZGVsYCBpcyBpbmRlZWQgYW4gZXhwb3J0ZWQgc3ltYm9sLiBUaGF0JiMzOTtzIGdvb2QuCgpUaGVyZWZvcmUsIG15IGxpc3Qgb2YgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OyDigJMgdGhlIGtleSBmdW5jdGlvbnMgZHJpdmluZyBteSBhbmFseXNpcyBvZiB0aGUgYG5ldGRldnNpbWAgZHJpdmVyIOKAkyBuZWVkcyB0byBpbmNsdWRlOgoKKiAgIGBuc2ltX2NyZWF0ZWAKKiAgIGBuc2ltX2Rlc3Ryb3lgCiogICBgbnNpbV9kcnZfcG9ydF9hZGRgCiogICBgbnNpbV9kcnZfcG9ydF9kZWxgCiogICBgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRgCiogICBgbmV0aWZfcXVldWVfc2V0X25hcGlgCgpOb3csIGxldCBtZSBqdXN0IGNvbmZpcm0gdGhlIHN1aXRhYmlsaXR5IG9mIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgYW5kIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGAuIEJvdGggYXJlIGNsZWFybHkgQVBJIGZ1bmN0aW9uczsgc28gdGhleSYjMzk7cmUgZ29vZCBjYW5kaWRhdGVzIGZvciB0aGUgYW5hbHlzaXMuCgpGaW5hbGx5LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBjb25maWd1cmF0aW9ucy4gQWxyaWdodCwgYSBxdWljayBjaGVjayB0ZWxscyBtZSB0aGF0IGBORVRERVZTSU1gIGlzIGluZGVlZCB0aGUgcHJpbWFyeSBjb25maWd1cmF0aW9uIGZvciB0aGUgYG5ldGRldnNpbWAgZHJpdmVyLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoYXQuIExldCBtZSBqdXN0IHNjYW4gYWdhaW4gZm9yIGFueSBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVERFVlNJTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTYwMj1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWctNjAzLVxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDQ6Y29uZmlnIE5FVERFVlNJTVxuZHJpdmVycy9uZXQvS2NvbmZpZy02MDUtXHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAzNDQKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRlcGVuZGVuY3kgRGVlcCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgTkVUREVWU0lNYC4gQmVmb3JlIEkgZ2V0IGludG8gYW55dGhpbmcgc3BlY2lmaWMsIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIG1hcCBvdXQgdGhlIGRlcGVuZGVuY3kgZ3JhcGguIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyB0aGluZyBsZWFucyBvbi4gV2hhdCBhcmUgdGhlIGNvcmUgbGlicmFyaWVzLCB0aGUgc3VwcG9ydGluZyBtb2R1bGVzLCB0aGUgZXh0ZXJuYWwgQVBJcyBpdCYjMzk7cyBjYWxsaW5nPyBXaGF0IHZlcnNpb25zIGFyZSBzcGVjaWZpZWQsIGFuZCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRob3NlIHZlcnNpb24gY29uc3RyYWludHM/IEEgY29tcHJlaGVuc2l2ZSBkZXBlbmRlbmN5IGNoZWNrIGlzIGNydWNpYWwgaGVyZS4gQXJlIHRoZXJlIGFueSBrbm93biB2dWxuZXJhYmlsaXRpZXMgaW4gYW55IG9mIHRoZSBpbW1lZGlhdGUgb3IgdHJhbnNpdGl2ZSBkZXBlbmRlbmNpZXM/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyB0aGF0IG1pZ2h0IGFyaXNlIGRvd24gdGhlIGxpbmUgd2l0aCBvdGhlciBjb21wb25lbnRzIGluIHRoZSBzeXN0ZW0sIG9yIHdpdGggcGxhbm5lZCBmdXR1cmUgaW50ZWdyYXRpb24gd29yaz8gVGhpcyBpc24mIzM5O3QganVzdCBhYm91dCBlbnN1cmluZyB0aGUgY29kZSBjb21waWxlczsgaXQmIzM5O3MgYWJvdXQgYW50aWNpcGF0aW5nIHBvdGVudGlhbCBydW50aW1lIGlzc3VlcyBhbmQgZW5zdXJpbmcgbG9uZy10ZXJtIG1haW50YWluYWJpbGl0eSBhbmQgc2VjdXJpdHkuIExldCYjMzk7cyBzZWUgaG93IGRlZXAgdGhpcyByYWJiaXQgaG9sZSBnb2VzLiBJIHdhbnQgdG8gYnVpbGQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyBmb3VuZGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNyAwOTowMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTY9bWVudWNvbmZpZyBORVRERVZJQ0VTXG5kcml2ZXJzL25ldC9LY29uZmlnLTctXHRkZWZhdWx0IHkgaWYgVU1MXG5kcml2ZXJzL25ldC9LY29uZmlnOjg6XHRkZXBlbmRzIG9uIE5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy05LVx0Ym9vbCBcJiMzNDtOZXR3b3JrIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00MT1jb25maWcgQk9ORElOR1xuZHJpdmVycy9uZXQvS2NvbmZpZy00Mi1cdHRyaXN0YXRlIFwmIzM0O0JvbmRpbmcgZHJpdmVyIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDM6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWc6NDQ6XHRkZXBlbmRzIG9uIFRMUyB8fCBUTFNfREVWSUNFPW5cbmRyaXZlcnMvbmV0L0tjb25maWctNDUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz03ND1jb25maWcgV0lSRUdVQVJEXG5kcml2ZXJzL25ldC9LY29uZmlnLTc1LVx0dHJpc3RhdGUgXCYjMzQ7V2lyZUd1YXJkIHNlY3VyZSBuZXR3b3JrIHR1bm5lbFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo3NjpcdGRlcGVuZHMgb24gTkVUIFx1MDAyNlx1MDAyNiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnLTc3LVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz05Mj1jb25maWcgV0lSRUdVQVJEX0RFQlVHXG5kcml2ZXJzL25ldC9LY29uZmlnLTkzLVx0Ym9vbCBcJiMzNDtEZWJ1Z2dpbmcgY2hlY2tzIGFuZCB2ZXJib3NlIG1lc3NhZ2VzXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjk0Olx0ZGVwZW5kcyBvbiBXSVJFR1VBUkRcbmRyaXZlcnMvbmV0L0tjb25maWctOTUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0xMDM9Y29uZmlnIE9WUE5cbmRyaXZlcnMvbmV0L0tjb25maWctMTA0LVx0dHJpc3RhdGUgXCYjMzQ7T3BlblZQTiBkYXRhIGNoYW5uZWwgb2ZmbG9hZFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoxMDU6XHRkZXBlbmRzIG9uIE5FVCBcdTAwMjZcdTAwMjYgSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMDYtXHRzZWxlY3QgRFNUX0NBQ0hFXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0xMzY9Y29uZmlnIE5FVF9GQ1xuZHJpdmVycy9uZXQvS2NvbmZpZy0xMzctXHRib29sIFwmIzM0O0ZpYnJlIENoYW5uZWwgZHJpdmVyIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6MTM4Olx0ZGVwZW5kcyBvbiBTQ1NJIFx1MDAyNlx1MDAyNiBQQ0lcbmRyaXZlcnMvbmV0L0tjb25maWctMTM5LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MTQ5PWNvbmZpZyBJRkJcbmRyaXZlcnMvbmV0L0tjb25maWctMTUwLVx0dHJpc3RhdGUgXCYjMzQ7SW50ZXJtZWRpYXRlIEZ1bmN0aW9uYWwgQmxvY2sgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoxNTE6XHRkZXBlbmRzIG9uIE5FVF9BQ1RfTUlSUkVEIHx8IE5GVF9GV0RfTkVUREVWXG5kcml2ZXJzL25ldC9LY29uZmlnLTE1Mi1cdHNlbGVjdCBORVRfUkVESVJFQ1Rcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTE3OT1jb25maWcgTUFDVlRBUFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xODAtXHR0cmlzdGF0ZSBcJiMzNDtNQUMtVkxBTiBiYXNlZCB0YXAgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjE4MTpcdGRlcGVuZHMgb24gTUFDVkxBTlxuZHJpdmVycy9uZXQvS2NvbmZpZzoxODI6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMTgzLVx0c2VsZWN0IFRBUFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MTkzPWNvbmZpZyBJUFZMQU5fTDNTXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5NDpcdGRlcGVuZHMgb24gTkVURklMVEVSXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5NTpcdGRlcGVuZHMgb24gSVBWTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnLTE5Ni1cdGRlZl9ib29sIHlcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTE5OT1jb25maWcgSVBWTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnLTIwMC1cdHRyaXN0YXRlIFwmIzM0O0lQLVZMQU4gc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyMDE6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjAyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MjE2PWNvbmZpZyBJUFZUQVBcbmRyaXZlcnMvbmV0L0tjb25maWctMjE3LVx0dHJpc3RhdGUgXCYjMzQ7SVAtVkxBTiBiYXNlZCB0YXAgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjIxODpcdGRlcGVuZHMgb24gSVBWTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnOjIxOTpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMjAtXHRzZWxlY3QgVEFQXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yMzA9Y29uZmlnIFZYTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzMS1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgZVh0ZW5zaWJsZSBMb2NhbCBBcmVhIE5ldHdvcmsgKFZYTEFOKVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyMzI6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjMzLVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNDU9Y29uZmlnIEdFTkVWRVxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNDYtXHR0cmlzdGF0ZSBcJiMzNDtHZW5lcmljIE5ldHdvcmsgVmlydHVhbGl6YXRpb24gRW5jYXBzdWxhdGlvblwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyNDc6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjQ4LVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNjA9Y29uZmlnIEJBUkVVRFBcbmRyaXZlcnMvbmV0L0tjb25maWctMjYxLVx0dHJpc3RhdGUgXCYjMzQ7QmFyZSBVRFAgRW5jYXBzdWxhdGlvblwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyNjI6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjYzLVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNzI9Y29uZmlnIEdUUFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzMtXHR0cmlzdGF0ZSBcJiMzNDtHUFJTIFR1bm5lbGluZyBQcm90b2NvbCBkYXRhcGF0aCAoR1RQLVUpXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjI3NDpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzUtXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTI4OT1jb25maWcgUEZDUFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yOTAtXHR0cmlzdGF0ZSBcJiMzNDtQYWNrZXQgRm9yd2FyZGluZyBDb250cm9sIFByb3RvY29sIChQRkNQKVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzoyOTE6XHRkZXBlbmRzIG9uIElORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMjkyLVx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zMDI9Y29uZmlnIEFNVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDMtXHR0cmlzdGF0ZSBcJiMzNDtBdXRvbWF0aWMgTXVsdGljYXN0IFR1bm5lbGluZyAoQU1UKVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozMDQ6XHRkZXBlbmRzIG9uIElORVQgXHUwMDI2XHUwMDI2IElQX01VTFRJQ0FTVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDUtXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTMyNz1jb25maWcgTkVUQ09OU09MRVxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMjgtXHR0cmlzdGF0ZSBcJiMzNDtOZXR3b3JrIGNvbnNvbGUgbG9nZ2luZyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjMyOTpcdGRlcGVuZHMgb24gUFJJTlRLXG5kcml2ZXJzL25ldC9LY29uZmlnLTMzMC1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTMzND1jb25maWcgTkVUQ09OU09MRV9EWU5BTUlDXG5kcml2ZXJzL25ldC9LY29uZmlnLTMzNS1cdGJvb2wgXCYjMzQ7RHluYW1pYyByZWNvbmZpZ3VyYXRpb24gb2YgbG9nZ2luZyB0YXJnZXRzXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjMzNjpcdGRlcGVuZHMgb24gTkVUQ09OU09MRSBcdTAwMjZcdTAwMjYgU1lTRlMgXHUwMDI2XHUwMDI2IENPTkZJR0ZTX0ZTIFx1MDAyNlx1MDAyNiBcXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMzctXHRcdFx0IShORVRDT05TT0xFPXkgXHUwMDI2XHUwMDI2IENPTkZJR0ZTX0ZTPW0pXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNDU9Y29uZmlnIE5FVENPTlNPTEVfRVhURU5ERURfTE9HXG5kcml2ZXJzL25ldC9LY29uZmlnLTM0Ni1cdGJvb2wgXCYjMzQ7U2V0IGtlcm5lbCBleHRlbmRlZCBtZXNzYWdlIGJ5IGRlZmF1bHRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6MzQ3Olx0ZGVwZW5kcyBvbiBORVRDT05TT0xFXG5kcml2ZXJzL25ldC9LY29uZmlnLTM0OC1cdGRlZmF1bHQgblxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MzU1PWNvbmZpZyBORVRDT05TT0xFX1BSRVBFTkRfUkVMRUFTRVxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNTYtXHRib29sIFwmIzM0O1ByZXBlbmQga2VybmVsIHJlbGVhc2UgdmVyc2lvbiBpbiB0aGUgbWVzc2FnZSBieSBkZWZhdWx0XCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjM1NzpcdGRlcGVuZHMgb24gTkVUQ09OU09MRV9FWFRFTkRFRF9MT0dcbmRyaXZlcnMvbmV0L0tjb25maWctMzU4LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNzM9Y29uZmlnIE5UQl9ORVRERVZcbmRyaXZlcnMvbmV0L0tjb25maWctMzc0LVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCBFdGhlcm5ldCBvdmVyIE5UQiBUcmFuc3BvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6Mzc1Olx0ZGVwZW5kcyBvbiBOVEJfVFJBTlNQT1JUXG5kcml2ZXJzL25ldC9LY29uZmlnLTM3Ni1cbmRyaXZlcnMvbmV0L0tjb25maWc9Mzc3PWNvbmZpZyBSSU9ORVRcbmRyaXZlcnMvbmV0L0tjb25maWctMzc4LVx0dHJpc3RhdGUgXCYjMzQ7UmFwaWRJTyBFdGhlcm5ldCBvdmVyIG1lc3NhZ2luZyBkcml2ZXIgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozNzk6XHRkZXBlbmRzIG9uIFJBUElESU9cbmRyaXZlcnMvbmV0L0tjb25maWctMzgwLVxuZHJpdmVycy9uZXQvS2NvbmZpZz0zODE9Y29uZmlnIFJJT05FVF9UWF9TSVpFXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4Mi1cdGludCBcJiMzNDtOdW1iZXIgb2Ygb3V0Ym91bmQgcXVldWUgZW50cmllc1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozODM6XHRkZXBlbmRzIG9uIFJJT05FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zODQtXHRkZWZhdWx0IFwmIzM0OzEyOFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9Mzg2PWNvbmZpZyBSSU9ORVRfUlhfU0laRVxuZHJpdmVycy9uZXQvS2NvbmZpZy0zODctXHRpbnQgXCYjMzQ7TnVtYmVyIG9mIGluYm91bmQgcXVldWUgZW50cmllc1wmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzozODg6XHRkZXBlbmRzIG9uIFJJT05FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zODktXHRkZWZhdWx0IFwmIzM0OzEyOFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9MzkxPWNvbmZpZyBUVU5cbmRyaXZlcnMvbmV0L0tjb25maWctMzkyLVx0dHJpc3RhdGUgXCYjMzQ7VW5pdmVyc2FsIFRVTi9UQVAgZGV2aWNlIGRyaXZlciBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjM5MzpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zOTQtXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ0Mz1jb25maWcgVklSVElPX05FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDQtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0aW8gbmV0d29yayBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDQ1Olx0ZGVwZW5kcyBvbiBWSVJUSU9cbmRyaXZlcnMvbmV0L0tjb25maWctNDQ2LVx0c2VsZWN0IE5FVF9GQUlMT1ZFUlxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NDYzPWNvbmZpZyBORVRLSVRcbmRyaXZlcnMvbmV0L0tjb25maWctNDY0LVx0Ym9vbCBcJiMzNDtCUEYtcHJvZ3JhbW1hYmxlIG5ldHdvcmsgZGV2aWNlXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjQ2NTpcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcbmRyaXZlcnMvbmV0L0tjb25maWctNDY2LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NDcyPWNvbmZpZyBORVRfVlJGXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ3My1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgUm91dGluZyBhbmQgRm9yd2FyZGluZyAoTGl0ZSlcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc0Olx0ZGVwZW5kcyBvbiBJUF9NVUxUSVBMRV9UQUJMRVNcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc1Olx0ZGVwZW5kcyBvbiBORVRfTDNfTUFTVEVSX0RFVlxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NzY6XHRkZXBlbmRzIG9uIElQVjZfTVVMVElQTEVfVEFCTEVTIHx8IElQVjY9blxuZHJpdmVycy9uZXQvS2NvbmZpZy00NzctXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00ODE9Y29uZmlnIFZTT0NLTU9OXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ4Mi1cdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgdnNvY2sgbW9uaXRvcmluZyBkZXZpY2VcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NDgzOlx0ZGVwZW5kcyBvbiBWSE9TVF9WU09DS1xuZHJpdmVycy9uZXQvS2NvbmZpZy00ODQtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz00ODk9Y29uZmlnIE1ISV9ORVRcbmRyaXZlcnMvbmV0L0tjb25maWctNDkwLVx0dHJpc3RhdGUgXCYjMzQ7TUhJIG5ldHdvcmsgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjQ5MTpcdGRlcGVuZHMgb24gTUhJX0JVU1xuZHJpdmVycy9uZXQvS2NvbmZpZy00OTItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz01NDQ9Y29uZmlnIFhFTl9ORVRERVZfRlJPTlRFTkRcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ1LVx0dHJpc3RhdGUgXCYjMzQ7WGVuIG5ldHdvcmsgZGV2aWNlIGZyb250ZW5kIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo1NDY6XHRkZXBlbmRzIG9uIFhFTlxuZHJpdmVycy9uZXQvS2NvbmZpZy01NDctXHRzZWxlY3QgWEVOX1hFTkJVU19GUk9OVEVORFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWc9NTYyPWNvbmZpZyBYRU5fTkVUREVWX0JBQ0tFTkRcbmRyaXZlcnMvbmV0L0tjb25maWctNTYzLVx0dHJpc3RhdGUgXCYjMzQ7WGVuIGJhY2tlbmQgbmV0d29yayBkZXZpY2VcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NTY0Olx0ZGVwZW5kcyBvbiBYRU5fQkFDS0VORFxuZHJpdmVycy9uZXQvS2NvbmZpZy01NjUtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZz01ODQ9Y29uZmlnIFZNWE5FVDNcbmRyaXZlcnMvbmV0L0tjb25maWctNTg1LVx0dHJpc3RhdGUgXCYjMzQ7Vk13YXJlIFZNWE5FVDMgZXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnOjU4NjpcdGRlcGVuZHMgb24gUENJIFx1MDAyNlx1MDAyNiBJTkVUXG5kcml2ZXJzL25ldC9LY29uZmlnOjU4NzpcdGRlcGVuZHMgb24gUEFHRV9TSVpFX0xFU1NfVEhBTl82NEtCXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4OC1cdHNlbGVjdCBQQUdFX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTU5ND1jb25maWcgRlVKSVRTVV9FU1xuZHJpdmVycy9uZXQvS2NvbmZpZy01OTUtXHR0cmlzdGF0ZSBcJiMzNDtGVUpJVFNVIEV4dGVuZGVkIFNvY2tldCBOZXR3b3JrIERldmljZSBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWc6NTk2Olx0ZGVwZW5kcyBvbiBBQ1BJXG5kcml2ZXJzL25ldC9LY29uZmlnLTU5Ny1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnPTYwND1jb25maWcgTkVUREVWU0lNXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwNS1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCBuZXR3b3JraW5nIGRldmljZVwmIzM0O1xuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDY6XHRkZXBlbmRzIG9uIERFQlVHX0ZTXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwNzpcdGRlcGVuZHMgb24gSU5FVFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDg6XHRkZXBlbmRzIG9uIFBTQU1QTEUgfHwgUFNBTVBMRT1uXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwOTpcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfTU9DSyB8fCBQVFBfMTU4OF9DTE9DS19NT0NLPW5cbmRyaXZlcnMvbmV0L0tjb25maWctNjEwLVx0c2VsZWN0IE5FVF9ERVZMSU5LXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNTkyCgkJCQkJCQlvdXRwdXQ6IDIxNAoJCQkJCQkJdGhvdWdodHM6IDMwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBOZXRkZXZzaW0gUGF0Y2gqKgoKT2theSwgc28gSSBzZWUgdGhpcyBgTkVUREVWU0lNYCBtb2R1bGUgaXMgdGhlIGNvcmUgb2YgdGhpcyBzaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2UgZHJpdmVyLiBJdCBsb29rcyBsaWtlIGl0IHJlbGllcyBvbiBhIGZldyBvdGhlciBjb21wb25lbnRzOiBgREVCVUdfRlNgLCBgSU5FVGAsIGFuZCB0aGVuIG9wdGlvbmFsbHkgYFBTQU1QTEVgIGFuZCBgUFRQXzE1ODhfQ0xPQ0tfTU9DS2AuIFJpZ2h0LCBgTkVUREVWU0lNYCAqaXMqIHRoZSBrZXkgY29uZmlnIG9wdGlvbiBoZXJlLgoKTGV0IG1lIGp1c3QgY29uZmlybeKApiBZZXAsIGxvb2tzIGxpa2UgZW5hYmxpbmcgYE5FVERFVlNJTWAgaXMgdGhlIHNpbmdsZSBwb2ludCBvZiBlbnRyeSB0byB1c2UgdGhlIGVtdWxhdGVkIGRldmljZS4KCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4KCiogICAqKkZ1enppbmcgUG90ZW50aWFsOioqIFRoaXMgaXMgZGVmaW5pdGVseSBzb21ldGhpbmcgSSB3YW50IHRvIGZ1enouIEJhc2VkIG9uIHRoZSBjaGFuZ2VzLCB0aGlzIGlzIGdvaW5nIHRvIGJlIGhpZ2ggdmFsdWUuCiogICAqKktleSBTeW1ib2xzIHRvIFRhcmdldDoqKiBJJiMzOTttIGdvaW5nIHRvIHdhbnQgdG8gZm9jdXMgaW4gb246IGBuc2ltX2NyZWF0ZWAsIGBuc2ltX2Rlc3Ryb3lgLCBgbnNpbV9kcnZfcG9ydF9hZGRgLCBgbnNpbV9kcnZfcG9ydF9kZWxgLCBgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRgLCBhbmQgYG5ldGlmX3F1ZXVlX3NldF9uYXBpYC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgcmVzcG9uc2libGUgZm9yIGRldmljZSBjcmVhdGlvbi9kZXN0cnVjdGlvbiwgcG9ydCBtYW5hZ2VtZW50LCBxdWV1ZSByZXN0YXJ0LCBhbmQgTkFQSSBhc3NvY2lhdGlvbi4gVGhleSBhcmUgY3JpdGljYWwgZW50cnkgcG9pbnRzIHRvIGNvdmVyIHRoZSBOQVBJIGNoYW5nZXMuCiogICAqKkNvbmZpZ3VyYXRpb246KiogVGhlIHBhdGNoIHJlcXVpcmVzIGBORVRERVZTSU1gLgoqICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIG1vZGlmaWVzIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fZGVsX25hcGlgIHRvIG1hbmFnZSBOQVBJIGluc3RhbmNlcyB3aXRoIFJYIHF1ZXVlcyB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGlgLiBUaGlzIGBuZXRkZXZzaW1gIGRyaXZlciBpcyBzb2Z0d2FyZS1lbXVsYXRlZCwgb2Z0ZW4gdXNlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEl0IGFmZmVjdHMgcXVldWUgbWFuYWdlbWVudCBhbmQgdGhlIE5BUEkgbGlmZWN5Y2xlLiBJdCBsb29rcyBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQsIHdoaWNoIG1ha2VzIGl0IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFRoZSBrZXkgZnVuY3Rpb25zIEkgbWVudGlvbmVkIGFib3ZlIGFyZSB0aGUgbW9zdCBpbXBvcnRhbnQgZnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUuIEkgc2hvdWxkIGdldCBhIGxvdCBvZiBjb2RlIGNvdmVyYWdlIG91dCBvZiB0aGVzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25zaW1fY3JlYXRlJiMzNDssCiAgICAmIzM0O25zaW1fZGVzdHJveSYjMzQ7LAogICAgJiMzNDtuc2ltX2Rydl9wb3J0X2FkZCYjMzQ7LAogICAgJiMzNDtuc2ltX2Rydl9wb3J0X2RlbCYjMzQ7LAogICAgJiMzNDtuZXRkZXZfcnhfcXVldWVfcmVzdGFydCYjMzQ7LAogICAgJiMzNDtuZXRpZl9xdWV1ZV9zZXRfbmFwaSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX2RlbF9uYXBpYCBpbiB0aGUgbmV0ZGV2c2ltIGRyaXZlciB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIGluc3RhbmNlcyB3aXRoIFJYIHF1ZXVlcyB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGlgLiBOZXRkZXZzaW0gaXMgYSBzb2Z0d2FyZS1lbXVsYXRlZCBuZXR3b3JrIGRldmljZSB1c2VkIGZvciB0ZXN0aW5nIGFuZCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgY2hhbmdlcyBhZmZlY3QgcXVldWUgbWFuYWdlbWVudCBhbmQgTkFQSSBsaWZlY3ljbGUsIHdoaWNoIGFyZSBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgYW5kIHdvcnRoIGZ1enppbmcuIEZvY3VzIHN5bWJvbHMgaW5jbHVkZSB0aGUgbmV0ZGV2c2ltIGNyZWF0aW9uL2Rlc3RydWN0aW9uIGFuZCBwb3J0IG1hbmFnZW1lbnQgZnVuY3Rpb25zLCBhcyB3ZWxsIGFzIHRoZSBxdWV1ZSByZXN0YXJ0IGFuZCBOQVBJIGFzc29jaWF0aW9uIEFQSSBmdW5jdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25zaW1fY3JlYXRlJiMzNDssCiAgICAmIzM0O25zaW1fZGVzdHJveSYjMzQ7LAogICAgJiMzNDtuc2ltX2Rydl9wb3J0X2FkZCYjMzQ7LAogICAgJiMzNDtuc2ltX2Rydl9wb3J0X2RlbCYjMzQ7LAogICAgJiMzNDtuZXRkZXZfcnhfcXVldWVfcmVzdGFydCYjMzQ7LAogICAgJiMzNDtuZXRpZl9xdWV1ZV9zZXRfbmFwaSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX2RlbF9uYXBpYCBpbiB0aGUgbmV0ZGV2c2ltIGRyaXZlciB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIGluc3RhbmNlcyB3aXRoIFJYIHF1ZXVlcyB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGlgLiBOZXRkZXZzaW0gaXMgYSBzb2Z0d2FyZS1lbXVsYXRlZCBuZXR3b3JrIGRldmljZSB1c2VkIGZvciB0ZXN0aW5nIGFuZCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgY2hhbmdlcyBhZmZlY3QgcXVldWUgbWFuYWdlbWVudCBhbmQgTkFQSSBsaWZlY3ljbGUsIHdoaWNoIGFyZSBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgYW5kIHdvcnRoIGZ1enppbmcuIEZvY3VzIHN5bWJvbHMgaW5jbHVkZSB0aGUgbmV0ZGV2c2ltIGNyZWF0aW9uL2Rlc3RydWN0aW9uIGFuZCBwb3J0IG1hbmFnZW1lbnQgZnVuY3Rpb25zLCBhcyB3ZWxsIGFzIHRoZSBxdWV1ZSByZXN0YXJ0IGFuZCBOQVBJIGFzc29jaWF0aW9uIEFQSSBmdW5jdGlvbnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGRldnNpbSBkcml2ZXIgdG8gY29ycmVjdGx5IGFzc29jaWF0ZSBhbmQgZGlzYXNzb2NpYXRlIE5BUEkgaW5zdGFuY2VzIHdpdGggUlggcXVldWVzIHVzaW5nIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaSgpYC4gVGhlc2UgY2hhbmdlcyBvbmx5IGludm9sdmUgc2V0dGluZyBhIHBvaW50ZXIgaW4gdGhlIHF1ZXVlIHN0cnVjdHVyZSB0byB0cmFjayB0aGUgTkFQSSBjb250ZXh0LiBUaGVyZSBhcmUgbm8gbW9kaWZpY2F0aW9ucyB0byBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBubyBuZXcgYWxsb2NhdGlvbnMgb2YgY29tcGxleCBzdHJ1Y3R1cmVzLCBhbmQgbm8gY2hhbmdlcyB0byBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgb3IgYm91bmRzIGNoZWNrcy4gVGhlIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgbm9uLWV4aXN0ZW50LiBBbnkgcG90ZW50aWFsIGlzc3VlcyBhcmlzaW5nIGZyb20gdGhlc2UgY2hhbmdlcywgc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBudWxsLXBvaW50ZXIgZGVyZWZlcmVuY2VzLCB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjFlMmIzYzM0YmQzNWQ0NmQyMWQ3YWZiNTZmMjU4NzUzNWY2YzNkNgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDE3IDA5OjAxOjA1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jIGIvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jCmluZGV4IDRlOWQ3ZTEwYjUyN2UuLmI0YTk5ZjNjZWFjNjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMKQEAgLTUyOSw2ICYjNDM7NTI5LDcgQEAgc3RhdGljIHZvaWQgbnNpbV9kZWxfbmFwaShzdHJ1Y3QgbmV0ZGV2c2ltICpucykKIAlmb3IgKGkgPSAwOyBpICZsdDsgZGV2LSZndDtudW1fcnhfcXVldWVzOyBpJiM0MzsmIzQzOykgewogCQlzdHJ1Y3QgbnNpbV9ycSAqcnEgPSBucy0mZ3Q7cnFbaV07CiAKJiM0MzsJCW5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpOwogCQluYXBpX2Rpc2FibGVfbG9ja2VkKCZhbXA7cnEtJmd0O25hcGkpOwogCQlfX25ldGlmX25hcGlfZGVsX2xvY2tlZCgmYW1wO3JxLSZndDtuYXBpKTsKIAl9CkBAIC04MjYsNiAmIzQzOzgyNyw3IEBAIG5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsCiAJfQogCiAJbnMtJmd0O3JxW2lkeF0gPSBxbWVtLSZndDtycTsKJiM0MzsJbmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCAmYW1wO25zLSZndDtycVtpZHhdLSZndDtuYXBpKTsKIAluYXBpX2VuYWJsZV9sb2NrZWQoJmFtcDtucy0mZ3Q7cnFbaWR4XS0mZ3Q7bmFwaSk7CiAKIAlyZXR1cm4gMDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE3IDA5OjAzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNDQKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIE5BUEkgUXVldWUgQXNzb2NpYXRpb24gQ2hhbmdlcyoqCgpPa2F5LCBzbyB0aGUgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY2AsIHNwZWNpZmljYWxseSBhcm91bmQgTkFQSSBxdWV1ZSBtYW5hZ2VtZW50LiBJIHNlZSB0aGV5JiMzOTtyZSBhZGRpbmcgYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCBjYWxscyDigJMgb25lIGluIGBuc2ltX2RlbF9uYXBpYCBhbmQgYW5vdGhlciBpbiBgbnNpbV9xdWV1ZV9zdGFydGAuIFRoZSBmaXJzdCBvbmUgc2V0cyB0aGUgTkFQSSBjb250ZXh0IHRvIE5VTEwgYW5kIHRoZSBzZWNvbmQgc2V0cyBpdCB0byB0aGUgYWRkcmVzcyBvZiB0aGUgbmFwaSBzdHJ1Y3R1cmUuIEltbWVkaWF0ZWx5LCBteSBjb25jZXJuIGlzIHdoZXRoZXIgdGhlc2UgY2hhbmdlcyBjb3VsZCBpbnRyb2R1Y2Ugc29tZSBzdWJ0bGUgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiBUaGF0JiMzOTtzIGFsd2F5cyBhIHBvc3NpYmlsaXR5IHdpdGggcG9pbnRlciBtYW5pcHVsYXRpb24sIGJ1dCBsZXQmIzM5O3MgZGlnIGRlZXBlci4KClJpZ2h0LCBgbmV0aWZfcXVldWVfc2V0X25hcGlgIGl0c2VsZiwgZnJvbSBteSB1bmRlcnN0YW5kaW5nLCBpcyBqdXN0IHNldHRpbmcgYSBwb2ludGVyIHdpdGhpbiB0aGUgcXVldWUgc3RydWN0dXJlLiBUaGF04oCZcyBub3QgYSBLTVNBTiBraW5kIG9mIHRoaW5nOyBLTVNBTiByZWFsbHkgbmFpbHMgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNlLiBXaGF0IEkmIzM5O20gdGhpbmtpbmcgaGVyZSBhcmUgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcywgb3IgbWF5YmUgYSBudWxsLXBvaW50ZXIgZGVyZWZlcmVuY2UsIG9yIHBlcmhhcHMgYSBsb2dpYyBidWcgd2hlcmUgYSBxdWV1ZSBnZXRzIHNldCB1cCB3cm9uZy4gSWYgaXQgd2VyZSBhIFVBRiBvciBPT0IsIEtBU0FOIHdvdWxkIHByb2JhYmx5IGNhdGNoIHRoYXQuIEdpdmVuIHRoaXMsIEkgZG9uJiMzOTt0IHNlZSBhbnkgaW1tZWRpYXRlIHJlZCBmbGFncyBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIEJ1dCwgeW91IGtub3csIGl0JiMzOTtzIGFsd2F5cyBnb29kIHRvIGRvdWJsZSBjaGVjay4KCkxldCBtZSBqdXN0IHF1aWNrbHkgdmVyaWZ5IHRoZSBkZWZpbml0aW9uIG9mIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSYjMzk7bGwgZ3JlcCBmb3IgaXQgaW4gdGhlIHNvdXJjZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmV0aWZfcXVldWVfc2V0X25hcGkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmM9MTgwNj1zdGF0aWMgdm9pZCBlbmFfbmFwaV9kaXNhYmxlX2luX3JhbmdlKHN0cnVjdCBlbmFfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODE2LVx0XHRcdC8qIFRoaXMgQVBJIGlzIHN1cHBvcnRlZCBmb3Igbm9uLVhEUCBxdWV1ZXMgb25seSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmM6MTgxNzpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVx1MDAzZW5ldGRldiwgaSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jLTE4MTgtXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmM6MTgxOTpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVx1MDAzZW5ldGRldiwgaSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jLTE4MjAtXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jPTE4MjY9c3RhdGljIHZvaWQgZW5hX25hcGlfZW5hYmxlX2luX3JhbmdlKHN0cnVjdCBlbmFfYWRhcHRlciAqYWRhcHRlcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODM3LVx0XHRcdC8qIFRoaXMgQVBJIGlzIHN1cHBvcnRlZCBmb3Igbm9uLVhEUCBxdWV1ZXMgb25seSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmM6MTgzODpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVx1MDAzZW5ldGRldiwgaSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jLTE4MzktXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIG5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmM6MTg0MDpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVx1MDAzZW5ldGRldiwgaSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jLTE4NDEtXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIG5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYz0xNjU5PXN0YXRpYyB2b2lkIGJuZ2VfaW5pdF9vbmVfcnhfcmluZ19wYWlyKHN0cnVjdCBibmdlX25ldCAqYm4sIGludCByaW5nX25yKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0xNjY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jOjE2NjY6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShibi1cdTAwM2VuZXRkZXYsIHJpbmdfbnIsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTE2NjctXHRcdFx0ICAgICBcdTAwMjZyeHItXHUwMDNlYm5hcGktXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jPTE3MDE9c3RhdGljIHZvaWQgYm5nZV9pbml0X3R4X3JpbmdzKHN0cnVjdCBibmdlX25ldCAqYm4pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTE3MTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmM6MTcxMzpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYm4tXHUwMDNlbmV0ZGV2LCBpLCBORVRERVZfUVVFVUVfVFlQRV9UWCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0xNzE0LVx0XHRcdFx0ICAgICBcdTAwMjZ0eHItXHUwMDNlYm5hcGktXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jPTI3MjU9c3RhdGljIHZvaWQgYm5nZV9kZWxfbmFwaShzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0yNzMwLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYmQtXHUwMDNlcnhfbnJfcmluZ3M7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jOjI3MzE6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJuLVx1MDAzZW5ldGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTI3MzItXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBiZC1cdTAwM2V0eF9ucl9yaW5nczsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmM6MjczMzpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYm4tXHUwMDNlbmV0ZGV2LCBpLCBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMjczNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz00NjI4PXN0YXRpYyBpbnQgYm54dF9pbml0X29uZV9yeF9yaW5nKHN0cnVjdCBibnh0ICpicCwgaW50IHJpbmdfbnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNDYzNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjQ2MzU6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShicC1cdTAwM2VkZXYsIHJpbmdfbnIsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNDYzNi1cdFx0XHQgICAgIFx1MDAyNnJ4ci1cdTAwM2VibmFwaS1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz00NjkzPXN0YXRpYyBpbnQgYm54dF9pbml0X3R4X3JpbmdzKHN0cnVjdCBibnh0ICpicClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy00NzA5LVx0XHRpZiAoaSBcdTAwM2U9IGJwLVx1MDAzZXR4X25yX3JpbmdzX3hkcClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjQ3MTA6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYnAtXHUwMDNlZGV2LCBpIC0gYnAtXHUwMDNldHhfbnJfcmluZ3NfeGRwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNDcxMS1cdFx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz0xMTk4MD1zdGF0aWMgdm9pZCBibnh0X2RlbF9uYXBpKHN0cnVjdCBibnh0ICpicClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xMTk4Ny1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJwLVx1MDAzZXJ4X25yX3JpbmdzOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjExOTg4Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShicC1cdTAwM2VkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTExOTg5LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYnAtXHUwMDNldHhfbnJfcmluZ3MgLSBicC1cdTAwM2V0eF9ucl9yaW5nc194ZHA7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTE5OTA6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJwLVx1MDAzZWRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTE5OTEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM9NzM5ND1zdGF0aWMgdm9pZCB0ZzNfbmFwaV9kaXNhYmxlKHN0cnVjdCB0ZzMgKnRwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MDMtXHRcdGlmICh0bmFwaS1cdTAwM2V0eF9idWZmZXJzKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzo3NDA0Olx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVx1MDAzZWRldiwgdHhxX2lkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MDUtXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MDgtXHRcdGlmICh0bmFwaS1cdTAwM2VyeF9yY2IpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjc0MDk6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkodHAtXHUwMDNlZGV2LCByeHFfaWR4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtNzQxMC1cdFx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM9NzQxNz1zdGF0aWMgdm9pZCB0ZzNfbmFwaV9lbmFibGUoc3RydWN0IHRnMyAqdHApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtNzQyNi1cdFx0aWYgKHRuYXBpLVx1MDAzZXR4X2J1ZmZlcnMpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjc0Mjc6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkodHAtXHUwMDNlZGV2LCB0eHFfaWR4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtNzQyOC1cdFx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy03NDMyLVx0XHRpZiAodG5hcGktXHUwMDNlcnhfcmNiKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzo3NDMzOlx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVx1MDAzZWRldiwgcnhxX2lkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MzQtXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jPTE5NzQ9c3RhdGljIHZvaWQgdHNuZXBfcXVldWVfZW5hYmxlKHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTE5ODItXHRpZiAocXVldWUtXHUwMDNldHgpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYzoxOTgzOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVx1MDAzZW5ldGRldiwgcXVldWUtXHUwMDNldHgtXHUwMDNlcXVldWVfaW5kZXgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMTk4NC1cdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFx1MDAyNnF1ZXVlLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTg4LVx0aWYgKHF1ZXVlLVx1MDAzZXJ4KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MTk4OTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsIHF1ZXVlLVx1MDAzZXJ4LVx1MDAzZXF1ZXVlX2luZGV4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTE5OTAtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcdTAwMjZxdWV1ZS1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM9MTk5NT1zdGF0aWMgdm9pZCB0c25lcF9xdWV1ZV9kaXNhYmxlKHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTE5OTktXHRpZiAocXVldWUtXHUwMDNlcngpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MjAwMDpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsIHF1ZXVlLVx1MDAzZXJ4LVx1MDAzZXF1ZXVlX2luZGV4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTIwMDEtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjAwNC1cdFx0dHNuZXBfdHhfZGlzYWJsZShxdWV1ZS1cdTAwM2V0eCwgXHUwMDI2cXVldWUtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MjAwNTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsIHF1ZXVlLVx1MDAzZXR4LVx1MDAzZXF1ZXVlX2luZGV4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTIwMDYtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM9MTkyND1zdGF0aWMgdm9pZCBndmVfdHVybmRvd24oc3RydWN0IGd2ZV9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xOTQyLVx0XHRpZiAoaWR4IFx1MDAzYyBwcml2LVx1MDAzZXR4X2NmZy5udW1fcXVldWVzKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjE5NDM6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkocHJpdi1cdTAwM2VkZXYsIGlkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xOTQ0LVx0XHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk1NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxOTU1Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShwcml2LVx1MDAzZWRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xOTU2LVx0XHRcdFx0ICAgICBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM9MTk3Mj1zdGF0aWMgdm9pZCBndmVfdHVybnVwKHN0cnVjdCBndmVfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk4OS1cdFx0aWYgKGlkeCBcdTAwM2MgcHJpdi1cdTAwM2V0eF9jZmcubnVtX3F1ZXVlcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxOTkwOlx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHByaXYtXHUwMDNlZGV2LCBpZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk5MS1cdFx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMjAxNS1cdFx0bmFwaV9lbmFibGVfbG9ja2VkKFx1MDAyNmJsb2NrLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjIwMTY6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHByaXYtXHUwMDNlZGV2LCBpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTIwMTctXHRcdFx0XHQgICAgIFx1MDAyNmJsb2NrLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jPTE5OD1pbnQgaGluaWMzX3Fwc19pcnFfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTIzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjIzNDpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cdTAwM2VuZXRkZXYsIHFfaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yMzUtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcdTAwMjZpcnFfY2ZnLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmM6MjM2Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShpcnFfY2ZnLVx1MDAzZW5ldGRldiwgcV9pZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTIzNy1cdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFx1MDAyNmlycV9jZmctXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjUyLVx0XHRxcF9kZWxfbmFwaShpcnFfY2ZnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjI1MzpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cdTAwM2VuZXRkZXYsIHFfaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yNTQtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjI1NTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cdTAwM2VuZXRkZXYsIHFfaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yNTYtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYz0yNzA9dm9pZCBoaW5pYzNfcXBzX2lycV91bmluaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yNzgtXHRcdHFwX2RlbF9uYXBpKGlycV9jZmcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmM6Mjc5Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShpcnFfY2ZnLVx1MDAzZW5ldGRldiwgcV9pZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTI4MC1cdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmM6MjgxOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShpcnFfY2ZnLVx1MDAzZW5ldGRldiwgcV9pZCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTI4Mi1cdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYz00ODE9dm9pZCBlMTAwMF9kb3duKHN0cnVjdCBlMTAwMF9hZGFwdGVyICphZGFwdGVyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy01MTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM6NTExOlx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM6NTEyOlx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtNTEzLVx0bmFwaV9kaXNhYmxlKFx1MDAyNmFkYXB0ZXItXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jPTEzNTI9aW50IGUxMDAwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtMTM5Ny1cdG5hcGlfZW5hYmxlKFx1MDAyNmFkYXB0ZXItXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM6MTM5ODpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFx1MDAyNmFkYXB0ZXItXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM6MTM5OTpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFx1MDAyNmFkYXB0ZXItXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtMTQwMC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM9NDYzNj1pbnQgZTEwMDBlX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmMtNDcxMi1cdG5hcGlfZW5hYmxlKFx1MDAyNmFkYXB0ZXItXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM6NDcxMzpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFx1MDAyNmFkYXB0ZXItXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM6NDcxNDpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFx1MDAyNmFkYXB0ZXItXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmMtNDcxNS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM9NDc1Mj1pbnQgZTEwMDBlX2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTQ3NzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM6NDc3MzpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjQ3NzQ6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYy00Nzc1LVx0bmFwaV9kaXNhYmxlKFx1MDAyNmFkYXB0ZXItXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYz0yNzgzPXZvaWQgaWNlX3ZzaV9zZXRfbmFwaV9xdWV1ZXMoc3RydWN0IGljZV92c2kgKnZzaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI3OTMtXHRcdGlmICh2c2ktXHUwMDNlcnhfcmluZ3NbcV9pZHhdIFx1MDAyNlx1MDAyNiB2c2ktXHUwMDNlcnhfcmluZ3NbcV9pZHhdLVx1MDAzZXFfdmVjdG9yKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYzoyNzk0Olx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgcV9pZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yNzk1LVx0XHRcdFx0XHQgICAgIFx1MDAyNnZzaS1cdTAwM2VyeF9yaW5nc1txX2lkeF0tXHUwMDNlcV92ZWN0b3ItXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yNzk4LVx0XHRpZiAodnNpLVx1MDAzZXR4X3JpbmdzW3FfaWR4XSBcdTAwMjZcdTAwMjYgdnNpLVx1MDAzZXR4X3JpbmdzW3FfaWR4XS1cdTAwM2VxX3ZlY3RvcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6Mjc5OTpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIHFfaWR4LCBORVRERVZfUVVFVUVfVFlQRV9UWCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjgwMC1cdFx0XHRcdFx0ICAgICBcdTAwMjZ2c2ktXHUwMDNldHhfcmluZ3NbcV9pZHhdLVx1MDAzZXFfdmVjdG9yLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM9MjgxNT12b2lkIGljZV92c2lfY2xlYXJfbmFwaV9xdWV1ZXMoc3RydWN0IGljZV92c2kgKnZzaSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI4MzEtXHRpY2VfZm9yX2VhY2hfdHhxKHZzaSwgcV9pZHgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jOjI4MzI6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgcV9pZHgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjgzMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjgzNC1cdGljZV9mb3JfZWFjaF9yeHEodnNpLCBxX2lkeClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6MjgzNTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCBxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yODM2LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jPTM4Mzg9c3RhdGljIHZvaWQgaWRwZl9xX3ZlY3Rvcl9zZXRfbmFwaShzdHJ1Y3QgaWRwZl9xX3ZlY3RvciAqcV92ZWN0b3IsIGJvb2wgbGluaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jLTM4NDMtXHRmb3IgKHUzMiBpID0gMDsgaSBcdTAwM2MgcV92ZWN0b3ItXHUwMDNlbnVtX3J4cTsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jOjM4NDQ6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgcV92ZWN0b3ItXHUwMDNlcnhbaV0tXHUwMDNlaWR4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYy0zODQ1LVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYy0zODQ3LVx0Zm9yICh1MzIgaSA9IDA7IGkgXHUwMDNjIHFfdmVjdG9yLVx1MDAzZW51bV90eHE7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYzozODQ4Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIHFfdmVjdG9yLVx1MDAzZXR4W2ldLVx1MDAzZWlkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMtMzg0OS1cdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIG5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jPTIxMDI9dm9pZCBpZ2Jfc2V0X3F1ZXVlX25hcGkoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyLCBpbnQgdmVjdG9yLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTIxMDctXHRpZiAocV92ZWN0b3ItXHUwMDNlcngucmluZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jOjIxMDg6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXHUwMDNlbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMjEwOS1cdFx0XHRcdCAgICAgcV92ZWN0b3ItXHUwMDNlcngucmluZy1cdTAwM2VxdWV1ZV9pbmRleCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0yMTEyLVx0aWYgKHFfdmVjdG9yLVx1MDAzZXR4LnJpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzoyMTEzOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVx1MDAzZW5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTIxMTQtXHRcdFx0XHQgICAgIHFfdmVjdG9yLVx1MDAzZXR4LnJpbmctXHUwMDNlcXVldWVfaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9NTA5Mj1zdGF0aWMgdm9pZCBpZ2Nfc2V0X3F1ZXVlX25hcGkoc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyLCBpbnQgdmVjdG9yLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTUwOTctXHRpZiAocV92ZWN0b3ItXHUwMDNlcngucmluZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjUwOTg6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXHUwMDNlbmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtNTA5OS1cdFx0XHRcdCAgICAgcV92ZWN0b3ItXHUwMDNlcngucmluZy1cdTAwM2VxdWV1ZV9pbmRleCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy01MTAyLVx0aWYgKHFfdmVjdG9yLVx1MDAzZXR4LnJpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzo1MTAzOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVx1MDAzZW5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTUxMDQtXHRcdFx0XHQgICAgIHFfdmVjdG9yLVx1MDAzZXR4LnJpbmctXHUwMDNlcXVldWVfaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jPTg5PWludCBtbHg0X2VuX2FjdGl2YXRlX2NxKHN0cnVjdCBtbHg0X2VuX3ByaXYgKnByaXYsIHN0cnVjdCBtbHg0X2VuX2NxICpjcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmMtMTU0LVx0XHRuYXBpX2VuYWJsZShcdTAwMjZjcS1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYzoxNTU6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGNxLVx1MDAzZWRldiwgY3FfaWR4LCBORVRERVZfUVVFVUVfVFlQRV9UWCwgXHUwMDI2Y3EtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmMtMTU2LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmMtMTYyLVx0XHRuYXBpX2VuYWJsZShcdTAwMjZjcS1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYzoxNjM6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGNxLVx1MDAzZWRldiwgY3FfaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgXHUwMDI2Y3EtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmMtMTY0LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmM9MTk2PXZvaWQgbWx4NF9lbl9kZWFjdGl2YXRlX2NxKHN0cnVjdCBtbHg0X2VuX3ByaXYgKnByaXYsIHN0cnVjdCBtbHg0X2VuX2NxICpjcSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmMtMjA1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jOjIwNjpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoY3EtXHUwMDNlZGV2LCBjcS1cdTAwM2VjcV9pZHgsIHF0eXBlLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYy0yMDctXHRcdG5hcGlfZGlzYWJsZShcdTAwMjZjcS1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmM9OTM5PXZvaWQgbWx4NWVfcHRwX2FjdGl2YXRlX2NoYW5uZWwoc3RydWN0IG1seDVlX3B0cCAqYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmMtOTUxLVx0XHRtbHg1ZV9hY3RpdmF0ZV9ycShcdTAwMjZjLVx1MDAzZXJxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYzo5NTI6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGMtXHUwMDNlbmV0ZGV2LCBjLVx1MDAzZXJxLml4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgXHUwMDI2Yy1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYy05NTMtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jPTk1Nz12b2lkIG1seDVlX3B0cF9kZWFjdGl2YXRlX2NoYW5uZWwoc3RydWN0IG1seDVlX3B0cCAqYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmMtOTYxLVx0aWYgKHRlc3RfYml0KE1MWDVFX1BUUF9TVEFURV9SWCwgYy1cdTAwM2VzdGF0ZSkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYzo5NjI6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGMtXHUwMDNlbmV0ZGV2LCBjLVx1MDAzZXJxLml4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmMtOTYzLVx0XHRtbHg1ZV9kZWFjdGl2YXRlX3JxKFx1MDAyNmMtXHUwMDNlcnEpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9MTkzOT12b2lkIG1seDVlX2FjdGl2YXRlX3R4cXNxKHN0cnVjdCBtbHg1ZV90eHFzcSAqc3EpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xOTQ2LVx0bmV0aWZfdHhfc3RhcnRfcXVldWUoc3EtXHUwMDNldHhxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6MTk0NzpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHNxLVx1MDAzZW5ldGRldiwgc3EtXHUwMDNldHhxX2l4LCBORVRERVZfUVVFVUVfVFlQRV9UWCwgc3EtXHUwMDNlY3EubmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTE5NDgtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9MTk1Nz12b2lkIG1seDVlX2RlYWN0aXZhdGVfdHhxc3Eoc3RydWN0IG1seDVlX3R4cXNxICpzcSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTE5NjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjE5NjE6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShzcS1cdTAwM2VuZXRkZXYsIHNxLVx1MDAzZXR4cV9peCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xOTYyLVx0Y2xlYXJfYml0KE1MWDVFX1NRX1NUQVRFX0VOQUJMRUQsIFx1MDAyNnNxLVx1MDAzZXN0YXRlKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTI5MTk9c3RhdGljIHZvaWQgbWx4NWVfYWN0aXZhdGVfY2hhbm5lbChzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTI5MzUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjI5MzY6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShjLVx1MDAzZW5ldGRldiwgYy1cdTAwM2VpeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFx1MDAyNmMtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTI5MzctfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9MjkzOT1zdGF0aWMgdm9pZCBtbHg1ZV9kZWFjdGl2YXRlX2NoYW5uZWwoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0yOTQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoyOTQzOlx0bmV0aWZfcXVldWVfc2V0X25hcGkoYy1cdTAwM2VuZXRkZXYsIGMtXHUwMDNlaXgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMjk0NC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYz0yMTE1PXN0YXRpYyB2b2lkIGZibmljX3NldF9uZXRpZl9uYXBpKHN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciAqbnYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjEyMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjIxMjM6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG52LVx1MDAzZW5hcGkuZGV2LCBxdC1cdTAwM2VzdWIwLnFfaWR4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjEyNC1cdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFx1MDAyNm52LVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxMzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYzoyMTMxOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShudi1cdTAwM2VuYXBpLmRldiwgcXQtXHUwMDNlY21wbC5xX2lkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxMzItXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcdTAwMjZudi1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYz0yMTM2PXN0YXRpYyB2b2lkIGZibmljX3Jlc2V0X25ldGlmX25hcGkoc3RydWN0IGZibmljX25hcGlfdmVjdG9yICpudilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTQzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM6MjE0NDpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkobnYtXHUwMDNlbmFwaS5kZXYsIHF0LVx1MDAzZXN1YjAucV9pZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTQ1LVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjE1MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjIxNTI6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG52LVx1MDAzZW5hcGkuZGV2LCBxdC1cdTAwM2VjbXBsLnFfaWR4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjE1My1cdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jPTMyMT1zdGF0aWMgdm9pZCBydGFzZV90eF9kZXNjX2luaXQoc3RydWN0IHJ0YXNlX3ByaXZhdGUgKnRwLCB1MTYgaWR4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTM1Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jOjM1MzpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVx1MDAzZWRldiwgcmluZy1cdTAwM2VpbmRleCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTM1NC1cdFx0XHQgICAgIHJpbmctXHUwMDNldHlwZSwgXHUwMDI2cmluZy1cdTAwM2VpdmVjLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jPTU5MD1zdGF0aWMgdm9pZCBydGFzZV9yeF9kZXNjX2luaXQoc3RydWN0IHJ0YXNlX3ByaXZhdGUgKnRwLCB1MTYgaWR4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTYwNy1cdHJpbmctXHUwMDNlaXZlYyA9IFx1MDAyNnRwLVx1MDAzZWludF92ZWN0b3JbaWR4XTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jOjYwODpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVx1MDAzZWRldiwgcmluZy1cdTAwM2VpbmRleCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTYwOS1cdFx0XHQgICAgIHJpbmctXHUwMDNldHlwZSwgXHUwMDI2cmluZy1cdTAwM2VpdmVjLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jPTExNjY9c3RhdGljIHZvaWQgcnRhc2VfZG93bihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTExNzctXHRcdFx0XHRcdCByaW5nX2VudHJ5KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYzoxMTc4Olx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVx1MDAzZWRldiwgcmluZy1cdTAwM2VpbmRleCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTExNzktXHRcdFx0XHRcdCAgICAgcmluZy1cdTAwM2V0eXBlLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYz0xNzE3PXN0YXRpYyB2b2lkIHJ0YXNlX3N3X3Jlc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmMtMTczNy1cdFx0XHRcdFx0IHJpbmdfZW50cnkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jOjE3Mzg6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkodHAtXHUwMDNlZGV2LCByaW5nLVx1MDAzZWluZGV4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmMtMTczOS1cdFx0XHRcdFx0ICAgICByaW5nLVx1MDAzZXR5cGUsIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYz02OTA9dm9pZCBuZXR2c2NfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UpXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcxNi1cdFx0aWYgKGkgXHUwMDNjIG5kZXYtXHUwMDNlcmVhbF9udW1fcnhfcXVldWVzKSB7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NzE3Olx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcxOC1cdFx0XHRcdFx0ICAgICBOVUxMKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo3MTk6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzIwLVx0XHRcdFx0XHQgICAgIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYz0xNzcyPXN0cnVjdCBuZXR2c2NfZGV2aWNlICpuZXR2c2NfZGV2aWNlX2FkZChzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UsXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE4MjUtXHRuYXBpX2VuYWJsZShcdTAwMjZuZXRfZGV2aWNlLVx1MDAzZWNoYW5fdGFibGVbMF0ubmFwaSk7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTgyNjpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE4MjctXHRcdFx0ICAgICBcdTAwMjZuZXRfZGV2aWNlLVx1MDAzZWNoYW5fdGFibGVbMF0ubmFwaSk7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTgyODpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE4MjktXHRcdFx0ICAgICBcdTAwMjZuZXRfZGV2aWNlLVx1MDAzZWNoYW5fdGFibGVbMF0ubmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE4NzAtY2xlYW51cDpcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxODcxOlx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE4NzI6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTg3My1cdG5hcGlfZGlzYWJsZShcdTAwMjZuZXRfZGV2aWNlLVx1MDAzZWNoYW5fdGFibGVbMF0ubmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jPTEyMjM9c3RhdGljIHZvaWQgbmV0dnNjX3NjX29wZW4oc3RydWN0IHZtYnVzX2NoYW5uZWwgKm5ld19zYylcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmMtMTI1OS1cdG5hcGlfZW5hYmxlKFx1MDAyNm52Y2hhbi1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYzoxMjYwOlx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgY2huX2luZGV4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYy0xMjYxLVx0XHRcdCAgICAgXHUwMDI2bnZjaGFuLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jOjEyNjI6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCBjaG5faW5kZXgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jLTEyNjMtXHRcdFx0ICAgICBcdTAwMjZudmNoYW4tXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jLTEyNjktXHRcdG5ldGRldl9ub3RpY2UobmRldiwgXCYjMzQ7c3ViIGNoYW5uZWwgb3BlbiBmYWlsZWQ6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jOjEyNzA6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIGNobl9pbmRleCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmMtMTI3MS1cdFx0XHRcdCAgICAgTlVMTCk7XG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmM6MTI3MjpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgY2huX2luZGV4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYy0xMjczLVx0XHRcdFx0ICAgICBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9NDg4PXN0YXRpYyB2b2lkIG5zaW1fZW5hYmxlX25hcGkoc3RydWN0IG5ldGRldnNpbSAqbnMpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQ5NS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo0OTY6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFx1MDAyNnJxLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQ5Ny1cdFx0bmFwaV9lbmFibGVfbG9ja2VkKFx1MDAyNnJxLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz01MjQ9c3RhdGljIHZvaWQgbnNpbV9kZWxfbmFwaShzdHJ1Y3QgbmV0ZGV2c2ltICpucylcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNTMxLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjUzMjpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpLCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNTMzLVx0XHRuYXBpX2Rpc2FibGVfbG9ja2VkKFx1MDAyNnJxLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04MDI9bnNpbV9xdWV1ZV9zdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX2NvbmZpZyAqcWNmZyxcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODI5LVx0bnMtXHUwMDNlcnFbaWR4XSA9IHFtZW0tXHUwMDNlcnE7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6ODMwOlx0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTgzMS1cdG5hcGlfZW5hYmxlX2xvY2tlZChcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0yODE1PXN0YXRpYyB2b2lkIHZpcnRuZXRfbmFwaV9lbmFibGUoc3RydWN0IHJlY2VpdmVfcXVldWUgKnJxKVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yODIwLVx0dmlydG5ldF9uYXBpX2RvX2VuYWJsZShycS1cdTAwM2V2cSwgXHUwMDI2cnEtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6MjgyMTpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVx1MDAzZWRldiwgcWlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFx1MDAyNnJxLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4MjItfVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0yODI0PXN0YXRpYyB2b2lkIHZpcnRuZXRfbmFwaV90eF9lbmFibGUoc3RydWN0IHNlbmRfcXVldWUgKnNxKVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yODQxLVx0dmlydG5ldF9uYXBpX2RvX2VuYWJsZShzcS1cdTAwM2V2cSwgbmFwaSk7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mjg0MjpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVx1MDAzZWRldiwgcWlkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIG5hcGkpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NDMtfVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0yODQ1PXN0YXRpYyB2b2lkIHZpcnRuZXRfbmFwaV90eF9kaXNhYmxlKHN0cnVjdCBzZW5kX3F1ZXVlICpzcSlcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjg1MS1cdGlmIChuYXBpLVx1MDAzZXdlaWdodCkge1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjI4NTI6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVx1MDAzZWRldiwgcWlkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NTMtXHRcdG5hcGlfZGlzYWJsZShuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9Mjg1Nz1zdGF0aWMgdm9pZCB2aXJ0bmV0X25hcGlfZGlzYWJsZShzdHJ1Y3QgcmVjZWl2ZV9xdWV1ZSAqcnEpXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NjItXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mjg2MzpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVx1MDAzZWRldiwgcWlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NjQtXHRuYXBpX2Rpc2FibGUobmFwaSk7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0yODI3PXN0YXRpYyBpbmxpbmUgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldl9mcm9tX3ByaXYoY29uc3Qgdm9pZCAqcHJpdilcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI4NDItXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjI4NDM6dm9pZCBuZXRpZl9xdWV1ZV9zZXRfbmFwaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcXVldWVfaW5kZXgsXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI4NDQtXHRcdFx0ICBlbnVtIG5ldGRldl9xdWV1ZV90eXBlIHR5cGUsXG4tLVxubmV0L2NvcmUvZGV2LmM9NzI4OT1FWFBPUlRfU1lNQk9MKG5ldGlmX3RocmVhZGVkX2VuYWJsZSk7XG4tLVxubmV0L2NvcmUvZGV2LmMtNzI5MS0vKipcbm5ldC9jb3JlL2Rldi5jOjcyOTI6ICogbmV0aWZfcXVldWVfc2V0X25hcGkgLSBBc3NvY2lhdGUgcXVldWUgd2l0aCB0aGUgbmFwaVxubmV0L2NvcmUvZGV2LmMtNzI5My0gKiBAZGV2OiBkZXZpY2UgdG8gd2hpY2ggTkFQSSBhbmQgcXVldWUgYmVsb25nXG4tLVxubmV0L2NvcmUvZGV2LmMtNzMwMS0gKi9cbm5ldC9jb3JlL2Rldi5jOjczMDI6dm9pZCBuZXRpZl9xdWV1ZV9zZXRfbmFwaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcXVldWVfaW5kZXgsXG5uZXQvY29yZS9kZXYuYy03MzAzLVx0XHRcdCAgZW51bSBuZXRkZXZfcXVldWVfdHlwZSB0eXBlLCBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGkpXG4tLVxubmV0L2NvcmUvZGV2LmMtNzMyNC19XG5uZXQvY29yZS9kZXYuYzo3MzI1OkVYUE9SVF9TWU1CT0wobmV0aWZfcXVldWVfc2V0X25hcGkpO1xubmV0L2NvcmUvZGV2LmMtNzMyNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ2MTAKCQkJCQkJCW91dHB1dDogMTYzCgkJCQkJCQl0aG91Z2h0czogMjI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBuZXRkZXZzaW1gIE5BUEkgQXNzb2NpYXRpb24gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBzdHJhaWdodGZvcndhcmQuIEl0JiMzOTtzIHJlYWxseSBqdXN0IGFib3V0IGNvcnJlY3RseSBsaW5raW5nIGFuZCB1bmxpbmtpbmcgTkFQSSBpbnN0YW5jZXMgdG8gUlggcXVldWVzIHdpdGhpbiB0aGUgYG5ldGRldnNpbWAgZHJpdmVyLiBUaGUgY29kZSBpcyB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGkoKWAgd2hpY2gsIGZyb20gbXkgdW5kZXJzdGFuZGluZywgc2ltcGx5IHNldHMgYSBwb2ludGVyIHdpdGhpbiB0aGUgcXVldWUgc3RydWN0dXJlLiBJdCYjMzk7cyBhIGNsZWFuIHBvaW50ZXIgYXNzaWdubWVudDsgdGhhdCYjMzk7cyBhbGwgaXQgZG9lcy4KClRoZXJlJiMzOTtzIG5vIGNvbXBsZXggbWVtb3J5IG1hbmlwdWxhdGlvbiBoYXBwZW5pbmcgaGVyZS4gSSYjMzk7bSBzZWVpbmcgbm8gYWxsb2NhdGlvbnMgb2YgYW55IG5ldyBzaWduaWZpY2FudCBkYXRhIHN0cnVjdHVyZXMsIG5vIGNhbGN1bGF0aW9ucyBiZWluZyBjaGFuZ2VkIHRoYXQgd291bGQgYWZmZWN0IGRhdGEgbGVuZ3RocyBvciBib3VuZCBjaGVja3MsIGFuZCBkZWZpbml0ZWx5IG5vIGV4cG9zdXJlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGF0JiMzOTtzIGEgaHVnZSByZWxpZWYuIFRoZSByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGVmZmVjdGl2ZWx5IG5vbmV4aXN0ZW50IHdpdGggdGhlc2UgcGFydGljdWxhciBjaGFuZ2VzLgoKRXZlbiBpZiB0aGVyZSB3ZXJlIHNvbWUgb2JzY3VyZSBlZGdlIGNhc2UgLSBzb21ldGhpbmcgbGlrZSBhIHVzZS1hZnRlci1mcmVlIG9yIGEgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIC0gdGhhdCBjb3VsZCBzbGlwIHRocm91Z2gsIEtBU0FOIHdvdWxkIGJlIHRoZSBwZXJmZWN0IHRvb2wgdG8gY2F0Y2ggaXQuIENvbnNpZGVyaW5nIHRoYXQsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBzZWVtcyB1bm5lY2Vzc2FyeSBoZXJlLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgc2ltcGxlIHBvaW50ZXIgYXNzaWdubWVudCBhbmQgYmFzaWMgbGlua2luZywgc28gS0FTQU4gaXMgc3VmZmljaWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTcgMDk6MDM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGRldnNpbSBkcml2ZXIgdG8gY29ycmVjdGx5IGFzc29jaWF0ZSBhbmQgZGlzYXNzb2NpYXRlIE5BUEkgaW5zdGFuY2VzIHdpdGggUlggcXVldWVzIHVzaW5nIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaSgpYC4gVGhlc2UgY2hhbmdlcyBvbmx5IGludm9sdmUgc2V0dGluZyBhIHBvaW50ZXIgaW4gdGhlIHF1ZXVlIHN0cnVjdHVyZSB0byB0cmFjayB0aGUgTkFQSSBjb250ZXh0LiBUaGVyZSBhcmUgbm8gbW9kaWZpY2F0aW9ucyB0byBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBubyBuZXcgYWxsb2NhdGlvbnMgb2YgY29tcGxleCBzdHJ1Y3R1cmVzLCBhbmQgbm8gY2hhbmdlcyB0byBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgb3IgYm91bmRzIGNoZWNrcy4gVGhlIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgbm9uLWV4aXN0ZW50LiBBbnkgcG90ZW50aWFsIGlzc3VlcyBhcmlzaW5nIGZyb20gdGhlc2UgY2hhbmdlcywgc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBudWxsLXBvaW50ZXIgZGVyZWZlcmVuY2VzLCB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRkZXZzaW0gZHJpdmVyIHRvIGNvcnJlY3RseSBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIGluc3RhbmNlcyB3aXRoIFJYIHF1ZXVlcyB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGkoKWAuIFRoZXNlIGNoYW5nZXMgb25seSBpbnZvbHZlIHNldHRpbmcgYSBwb2ludGVyIGluIHRoZSBxdWV1ZSBzdHJ1Y3R1cmUgdG8gdHJhY2sgdGhlIE5BUEkgY29udGV4dC4gVGhlcmUgYXJlIG5vIG1vZGlmaWNhdGlvbnMgdG8gZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm8gbmV3IGFsbG9jYXRpb25zIG9mIGNvbXBsZXggc3RydWN0dXJlcywgYW5kIG5vIGNoYW5nZXMgdG8gZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIG9yIGJvdW5kcyBjaGVja3MuIFRoZSByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIG5vbi1leGlzdGVudC4gQW55IHBvdGVudGlhbCBpc3N1ZXMgYXJpc2luZyBmcm9tIHRoZXNlIGNoYW5nZXMsIHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgbnVsbC1wb2ludGVyIGRlcmVmZXJlbmNlcywgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAxOjA2LjAyNzg2MjM3M1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODkyMjMxNjA5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRERVZTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuc2ltX2NyZWF0ZVwiLFxuICAgIFwibnNpbV9kZXN0cm95XCIsXG4gICAgXCJuc2ltX2Rydl9wb3J0X2FkZFwiLFxuICAgIFwibnNpbV9kcnZfcG9ydF9kZWxcIixcbiAgICBcIm5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0XCIsXG4gICAgXCJuZXRpZl9xdWV1ZV9zZXRfbmFwaVwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGRldnNpbSBkcml2ZXIgdG8gY29ycmVjdGx5IGFzc29jaWF0ZSBhbmQgZGlzYXNzb2NpYXRlIE5BUEkgaW5zdGFuY2VzIHdpdGggUlggcXVldWVzIHVzaW5nIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaSgpYC4gVGhlc2UgY2hhbmdlcyBvbmx5IGludm9sdmUgc2V0dGluZyBhIHBvaW50ZXIgaW4gdGhlIHF1ZXVlIHN0cnVjdHVyZSB0byB0cmFjayB0aGUgTkFQSSBjb250ZXh0LiBUaGVyZSBhcmUgbm8gbW9kaWZpY2F0aW9ucyB0byBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBubyBuZXcgYWxsb2NhdGlvbnMgb2YgY29tcGxleCBzdHJ1Y3R1cmVzLCBhbmQgbm8gY2hhbmdlcyB0byBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgb3IgYm91bmRzIGNoZWNrcy4gVGhlIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgbm9uLWV4aXN0ZW50LiBBbnkgcG90ZW50aWFsIGlzc3VlcyBhcmlzaW5nIGZyb20gdGhlc2UgY2hhbmdlcywgc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBudWxsLXBvaW50ZXIgZGVyZWZlcmVuY2VzLCB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX2RlbF9uYXBpYCBpbiB0aGUgbmV0ZGV2c2ltIGRyaXZlciB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIGluc3RhbmNlcyB3aXRoIFJYIHF1ZXVlcyB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGlgLiBOZXRkZXZzaW0gaXMgYSBzb2Z0d2FyZS1lbXVsYXRlZCBuZXR3b3JrIGRldmljZSB1c2VkIGZvciB0ZXN0aW5nIGFuZCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgY2hhbmdlcyBhZmZlY3QgcXVldWUgbWFuYWdlbWVudCBhbmQgTkFQSSBsaWZlY3ljbGUsIHdoaWNoIGFyZSBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgYW5kIHdvcnRoIGZ1enppbmcuIEZvY3VzIHN5bWJvbHMgaW5jbHVkZSB0aGUgbmV0ZGV2c2ltIGNyZWF0aW9uL2Rlc3RydWN0aW9uIGFuZCBwb3J0IG1hbmFnZW1lbnQgZnVuY3Rpb25zLCBhcyB3ZWxsIGFzIHRoZSBxdWV1ZSByZXN0YXJ0IGFuZCBOQVBJIGFzc29jaWF0aW9uIEFQSSBmdW5jdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAxOjA2LjAyNzg2ODQ0M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIzMDYyMTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjFlMmIzYzM0YmQzNWQ0NmQyMWQ3YWZiNTZmMjU4NzUzNWY2YzNkNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEF1ZyAxNyAwOTowMTowNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcXG5pbmRleCA0ZTlkN2UxMGI1MjdlLi5iNGE5OWYzY2VhYzYwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1xcbisrKyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1xcbkBAIC01MjksNiArNTI5LDcgQEAgc3RhdGljIHZvaWQgbnNpbV9kZWxfbmFwaShzdHJ1Y3QgbmV0ZGV2c2ltICpucylcXG4gXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGRldi1cXHUwMDNlbnVtX3J4X3F1ZXVlczsgaSsrKSB7XFxuIFxcdFxcdHN0cnVjdCBuc2ltX3JxICpycSA9IG5zLVxcdTAwM2VycVtpXTtcXG4gXFxuK1xcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xcbiBcXHRcXHRuYXBpX2Rpc2FibGVfbG9ja2VkKFxcdTAwMjZycS1cXHUwMDNlbmFwaSk7XFxuIFxcdFxcdF9fbmV0aWZfbmFwaV9kZWxfbG9ja2VkKFxcdTAwMjZycS1cXHUwMDNlbmFwaSk7XFxuIFxcdH1cXG5AQCAtODI2LDYgKzgyNyw3IEBAIG5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsXFxuIFxcdH1cXG4gXFxuIFxcdG5zLVxcdTAwM2VycVtpZHhdID0gcW1lbS1cXHUwMDNlcnE7XFxuK1xcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgXFx1MDAyNm5zLVxcdTAwM2VycVtpZHhdLVxcdTAwM2VuYXBpKTtcXG4gXFx0bmFwaV9lbmFibGVfbG9ja2VkKFxcdTAwMjZucy1cXHUwMDNlcnFbaWR4XS1cXHUwMDNlbmFwaSk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDE6MDYuNTUxOTk4NDE3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTM0NjYzNDc5MDQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVERFVlNJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5zaW1fY3JlYXRlXCIsXG4gICAgXCJuc2ltX2Rlc3Ryb3lcIixcbiAgICBcIm5zaW1fZHJ2X3BvcnRfYWRkXCIsXG4gICAgXCJuc2ltX2Rydl9wb3J0X2RlbFwiLFxuICAgIFwibmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRcIixcbiAgICBcIm5ldGlmX3F1ZXVlX3NldF9uYXBpXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9kZWxfbmFwaWAgaW4gdGhlIG5ldGRldnNpbSBkcml2ZXIgdG8gYXNzb2NpYXRlIGFuZCBkaXNhc3NvY2lhdGUgTkFQSSBpbnN0YW5jZXMgd2l0aCBSWCBxdWV1ZXMgdXNpbmcgYG5ldGlmX3F1ZXVlX3NldF9uYXBpYC4gTmV0ZGV2c2ltIGlzIGEgc29mdHdhcmUtZW11bGF0ZWQgbmV0d29yayBkZXZpY2UgdXNlZCBmb3IgdGVzdGluZyBhbmQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIGNoYW5nZXMgYWZmZWN0IHF1ZXVlIG1hbmFnZW1lbnQgYW5kIE5BUEkgbGlmZWN5Y2xlLCB3aGljaCBhcmUgZnVuY3Rpb25hbGx5IHNpZ25pZmljYW50IGFuZCB3b3J0aCBmdXp6aW5nLiBGb2N1cyBzeW1ib2xzIGluY2x1ZGUgdGhlIG5ldGRldnNpbSBjcmVhdGlvbi9kZXN0cnVjdGlvbiBhbmQgcG9ydCBtYW5hZ2VtZW50IGZ1bmN0aW9ucywgYXMgd2VsbCBhcyB0aGUgcXVldWUgcmVzdGFydCBhbmQgTkFQSSBhc3NvY2lhdGlvbiBBUEkgZnVuY3Rpb25zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyMWUyYjNjMzRiZDM1ZDQ2ZDIxZDdhZmI1NmYyNTg3NTM1ZjZjM2Q2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMTcgMDk6MDE6MDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcbmluZGV4IDRlOWQ3ZTEwYjUyN2UuLmI0YTk5ZjNjZWFjNjAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcbisrKyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1xuQEAgLTUyOSw2ICs1MjksNyBAQCBzdGF0aWMgdm9pZCBuc2ltX2RlbF9uYXBpKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZGV2LVx1MDAzZW51bV9yeF9xdWV1ZXM7IGkrKykge1xuIFx0XHRzdHJ1Y3QgbnNpbV9ycSAqcnEgPSBucy1cdTAwM2VycVtpXTtcbiBcbitcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpLCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG4gXHRcdG5hcGlfZGlzYWJsZV9sb2NrZWQoXHUwMDI2cnEtXHUwMDNlbmFwaSk7XG4gXHRcdF9fbmV0aWZfbmFwaV9kZWxfbG9ja2VkKFx1MDAyNnJxLVx1MDAzZW5hcGkpO1xuIFx0fVxuQEAgLTgyNiw2ICs4MjcsNyBAQCBuc2ltX3F1ZXVlX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfcXVldWVfY29uZmlnICpxY2ZnLFxuIFx0fVxuIFxuIFx0bnMtXHUwMDNlcnFbaWR4XSA9IHFtZW0tXHUwMDNlcnE7XG4rXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFx1MDAyNm5zLVx1MDAzZXJxW2lkeF0tXHUwMDNlbmFwaSk7XG4gXHRuYXBpX2VuYWJsZV9sb2NrZWQoXHUwMDI2bnMtXHUwMDNlcnFbaWR4XS1cdTAwM2VuYXBpKTtcbiBcbiBcdHJldHVybiAwO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDE6MDYuNTUyMDAxMzY3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA5NDg1OTA2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldGRldnNpbSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNgLiBJdCdzIGdvdCB0aGVzZSBuZXcgY2FsbHMgdG8gYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCBpbiBgbnNpbV9kZWxfbmFwaWAgYW5kIGBuc2ltX3F1ZXVlX3N0YXJ0YC4gUmlnaHQgYXdheSwgbXkgcmFkYXIgZ29lcyB1cC4gTmV0ZGV2c2ltIGlzIHRoYXQgc29mdHdhcmUtZW11bGF0ZWQgbmV0d29yayBkZXZpY2Ug4oCTIHBlcmZlY3QgZm9yIGZ1enppbmchIEl0J3MgcHJhY3RpY2FsbHkgKmRlc2lnbmVkKiB0byBiZSBwcm9iZWQuIFdlIGhhdmUgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgZnV6emluZyB0aGlzIHBhdGNoLlxuXG5TbywgbGV0J3MgZHJpbGwgZG93biBpbnRvIHRob3NlIHR3byBmdW5jdGlvbnM6IGBuc2ltX2RlbF9uYXBpYCBhbmQgYG5zaW1fcXVldWVfc3RhcnRgLiBgbnNpbV9xdWV1ZV9zdGFydGAgc2VlbXMgbGlrZSBpdCdzIGEgcXVldWUgc3RhcnQgY2FsbGJhY2suIFllYWgsIHRoYXQgbWFrZXMgc2Vuc2UuIEl0J3MgbGlrZWx5IGludm9sdmVkIHdpdGggdGhlIG5ldGRldiBxdWV1ZSBBUEksIHNvIGl0IGlzIHByb2JhYmx5IGNhbGxlZCB3aGVuIGEgcXVldWUgaXMgc3RhcnRlZC4gQW5kIGBuc2ltX2RlbF9uYXBpYCBsb29rcyBsaWtlIGEgY2xlYW51cCBmdW5jdGlvbi5cblxuSSBuZWVkIHRvIHNlZSBob3cgdGhlc2UgdGhpbmdzIGFyZSB1c2VkLiBUaW1lIHRvIGNoZWNrIHZpc2liaWxpdHkuIEkgbmVlZCB0byBncmVwIGZvciBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX2RlbF9uYXBpYCB0byBzZWUgaWYgdGhleSdyZSBzdGF0aWMgb3IgZXhwb3J0ZWQuIEFoLCBgbnNpbV9kZWxfbmFwaWAgaXMgc3RhdGljLiBPSy4gQW5kIGBuc2ltX3F1ZXVlX3N0YXJ0YCBpcy4uLiBhbHNvIHN0YXRpYz8gR290dGEgZG91YmxlLWNoZWNrIHRoYXQuIEkgbmVlZCB0byBtYWtlIHN1cmUgaG93IGFjY2Vzc2libGUgdGhlc2UgZnVuY3Rpb25zIGFyZSB0byBzZWUgd2hlcmUgdGhleSBhcmUgY2FsbGVkIGZyb20uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxNDcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMToxMS42NDY4NzExMjRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI3NTE2ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnNpbV9xdWV1ZV9zdGFydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTgwMT1zdGF0aWMgaW50XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjgwMjpuc2ltX3F1ZXVlX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfcXVldWVfY29uZmlnICpxY2ZnLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04MDMtXFx0XFx0IHZvaWQgKnBlcl9xdWV1ZV9tZW0sIGludCBpZHgpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9ODU1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIG5zaW1fcXVldWVfbWdtdF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODU4LVxcdC5uZG9fcXVldWVfbWVtX2ZyZWVcXHQ9IG5zaW1fcXVldWVfbWVtX2ZyZWUsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjg1OTpcXHQubmRvX3F1ZXVlX3N0YXJ0XFx0PSBuc2ltX3F1ZXVlX3N0YXJ0LFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NjAtXFx0Lm5kb19xdWV1ZV9zdG9wXFx0XFx0PSBuc2ltX3F1ZXVlX3N0b3AsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAxOjExLjcxOTYyOTQzMVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyOTc3Nzc3NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFN0YXRpYyBGdW5jdGlvbnMgYW5kIFRoZWlyIFVzYWdlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgdHdvIGZ1bmN0aW9ucywgYW5kIHRoZXkncmUgYm90aCBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoYXQgaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgc2NvcGU7IHRoZXkncmUgb25seSB2aXNpYmxlIHdpdGhpbiB0aGVpciBjb21waWxhdGlvbiB1bml0LCB3aGljaCBzaW1wbGlmaWVzIHRoaW5ncyBpbiBzb21lIHdheXMsIGJ1dCBhbHNvIG1lYW5zIEkgbmVlZCB0byBkaWcgYSBsaXR0bGUgZGVlcGVyIHRvIHVuZGVyc3RhbmQgdGhlaXIgcm9sZSBpbiB0aGUgYmlnZ2VyIHBpY3R1cmUuIE15IG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IGhvdyB0aGV5J3JlICp1c2VkKi4gU2luY2UgdGhleSdyZSBzdGF0aWMsIEknbSBleHBlY3Rpbmcgb3RoZXIgZnVuY3Rpb25zIHdpdGhpbiB0aGUgc2FtZSBmaWxlIHRvIGJlIGNhbGxpbmcgdGhlbSBvciBhdCBsZWFzdCB1c2luZyB0aGVpciBvdXRwdXQuIExldCdzIGZpbmQgdGhvc2Ugbm9uLXN0YXRpYyBmdW5jdGlvbnMgYW5kIHNlZSB3aGVyZSB0aGVzZSBzdGF0aWMgb25lcyBmaXQgaW4uXG5cbkFoLCBgbnNpbV9xdWV1ZV9tZ210X29wc2AgYXBwZWFycyB0byBiZSB1c2VkIGJ5IGBuc2ltX2NyZWF0ZWAuIFRpbWUgdG8gY2hlY2sgYG5zaW1fY3JlYXRlYCBhbmQgc2VlIHdoYXQncyBnb2luZyBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAxNCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAxOjE1LjAxNzQwOTEzMloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDc2OTA3MDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnNpbV9jcmVhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz00MDU9c3RhdGljIGludCBuc2ltX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQxNi1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6NDE3OnN0YXRpYyBpbnQgbnNpbV9jcmVhdGVfcGFnZV9wb29sKHN0cnVjdCBwYWdlX3Bvb2wgKipwLCBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGkpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQxOC17XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9NDM4PXN0YXRpYyBpbnQgbnNpbV9pbml0X25hcGkoc3RydWN0IG5ldGRldnNpbSAqbnMpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNDUyLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo0NTM6XFx0XFx0ZXJyID0gbnNpbV9jcmVhdGVfcGFnZV9wb29sKFxcdTAwMjZycS1cXHUwMDNlcGFnZV9wb29sLCBcXHUwMDI2cnEtXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy00NTQtXFx0XFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz03NTE9bnNpbV9xdWV1ZV9tZW1fYWxsb2Moc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy03NjQtXFx0XFx0XFx0cmV0dXJuIC1FTkVURE9XTjtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6NzY1OlxcdFxcdHJldHVybiBuc2ltX2NyZWF0ZV9wYWdlX3Bvb2woXFx1MDAyNnFtZW0tXFx1MDAzZXBwLCBcXHUwMDI2bnMtXFx1MDAzZXJxW2lkeF0tXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy03NjYtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTc3MS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6NzcyOlxcdGVyciA9IG5zaW1fY3JlYXRlX3BhZ2VfcG9vbChcXHUwMDI2cW1lbS1cXHUwMDNlcnEtXFx1MDAzZXBhZ2VfcG9vbCwgXFx1MDAyNnFtZW0tXFx1MDAzZXJxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNzczLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9MTEyMj1zdGF0aWMgdm9pZCBuc2ltX2V4aXRfbmV0ZGV2c2ltKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTExMjctXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjExMjg6c3RydWN0IG5ldGRldnNpbSAqbnNpbV9jcmVhdGUoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldixcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtMTEyOS1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgbnNpbV9kZXZfcG9ydCAqbnNpbV9kZXZfcG9ydCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDE6MTUuMjI1MTA0MTA2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyMzE0NzYyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRlYnVnZ2luZyBhIFBvdGVudGlhbCBTY29wZSBJc3N1ZSoqXG5cbk9rYXksIHNvIGBuc2ltX2NyZWF0ZWAgaXMgZWl0aGVyIGRlY2xhcmVkIHdpdGggZXh0ZXJuYWwgbGlua2FnZSAoZXhwb3J0ZWQpIG9yIGl0J3Mgbm90IGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYnJvYWRseSBpdCdzIGJlaW5nIHVzZWQuIElmIGl0J3MgYmVpbmcgYWNjZXNzZWQgb3V0c2lkZSB0aGUgaW50ZW5kZWQgc2NvcGUsIHRoYXQncyBhIHByb2JsZW0uIExldCdzIHNlZS4uLiB0aGUgbW9zdCBkaXJlY3Qgcm91dGUgaXMgdG8gdHJhY2Ugd2hlcmUgaXQncyBiZWluZyBjYWxsZWQuIEkgbmVlZCB0byBnZXQgYSBsaXN0IG9mIHJlZmVyZW5jZXMgdG8gYG5zaW1fY3JlYXRlYC4gVGltZSB0byBmaXJlIHVwIHRoZSBkZWJ1Z2dlciAob3IgdXNlIG15IGNvZGUgc2VhcmNoIHRvb2xzLCBkZXBlbmRpbmcgb24gdGhlIGVudmlyb25tZW50KSBhbmQgZ2V0IHRvIHdvcmsuIEnigJlsbCBzdGFydCBieSB0cmFja2luZyBkb3duIGFsbCBjYWxsIHNpdGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODg0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDE6MTguMzQ4MjU0MzcyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY3NTE3NzY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5zaW1fY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTE0NTU9c3RhdGljIGludCBfX25zaW1fZGV2X3BvcnRfYWRkKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsIGVudW0gbnNpbV9kZXZfcG9ydF90eXBlIHR5cGUsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTUwOC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTUwOTpcXHRuc2ltX2Rldl9wb3J0LVxcdTAwM2VucyA9IG5zaW1fY3JlYXRlKG5zaW1fZGV2LCBuc2ltX2Rldl9wb3J0LCBwZXJtX2FkZHIpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNTEwLVxcdGlmIChJU19FUlIobnNpbV9kZXZfcG9ydC1cXHUwMDNlbnMpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9NDA1PXN0YXRpYyBpbnQgbnNpbV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy00MTYtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjQxNzpzdGF0aWMgaW50IG5zaW1fY3JlYXRlX3BhZ2VfcG9vbChzdHJ1Y3QgcGFnZV9wb29sICoqcCwgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy00MTgte1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTQzOD1zdGF0aWMgaW50IG5zaW1faW5pdF9uYXBpKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQ1Mi1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6NDUzOlxcdFxcdGVyciA9IG5zaW1fY3JlYXRlX3BhZ2VfcG9vbChcXHUwMDI2cnEtXFx1MDAzZXBhZ2VfcG9vbCwgXFx1MDAyNnJxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNDU0LVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9NzUxPW5zaW1fcXVldWVfbWVtX2FsbG9jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNzY0LVxcdFxcdFxcdHJldHVybiAtRU5FVERPV047XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjc2NTpcXHRcXHRyZXR1cm4gbnNpbV9jcmVhdGVfcGFnZV9wb29sKFxcdTAwMjZxbWVtLVxcdTAwM2VwcCwgXFx1MDAyNm5zLVxcdTAwM2VycVtpZHhdLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNzY2LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy03NzEtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjc3MjpcXHRlcnIgPSBuc2ltX2NyZWF0ZV9wYWdlX3Bvb2woXFx1MDAyNnFtZW0tXFx1MDAzZXJxLVxcdTAwM2VwYWdlX3Bvb2wsIFxcdTAwMjZxbWVtLVxcdTAwM2VycS1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTc3My1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTExMjI9c3RhdGljIHZvaWQgbnNpbV9leGl0X25ldGRldnNpbShzdHJ1Y3QgbmV0ZGV2c2ltICpucylcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy0xMTI3LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzoxMTI4OnN0cnVjdCBuZXRkZXZzaW0gKm5zaW1fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTExMjktXFx0XFx0XFx0ICAgICAgc3RydWN0IG5zaW1fZGV2X3BvcnQgKm5zaW1fZGV2X3BvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg9MTA3PXN0cnVjdCBuZXRkZXZzaW0ge1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE2NS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTY2OnN0cnVjdCBuZXRkZXZzaW0gKm5zaW1fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE2Ny1cXHRcXHRcXHQgICAgICBzdHJ1Y3QgbnNpbV9kZXZfcG9ydCAqbnNpbV9kZXZfcG9ydCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDE6MTguNDE1Nzc4MzVaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDMzODIzOTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqVHJhY2luZyBCYWNrIHRoZSBTdGF0aWMgTmF0dXJlIG9mIGBfX25zaW1fZGV2X3BvcnRfYWRkYCoqXG5cbk9rYXksIHNvIGBfX25zaW1fZGV2X3BvcnRfYWRkYCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMuIFRoYXQgaW1tZWRpYXRlbHkgcGlxdWVkIG15IGludGVyZXN0LiBMZXQncyB0cmFjZSBiYWNrIGZyb20gdGhlcmUuIFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgYSBzdGF0aWMgZnVuY3Rpb24gaW4gdGhpcyBjb250ZXh0PyBJdCBtZWFucyBpdCdzIG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhlIGNvbXBpbGF0aW9uIHVuaXQgd2hlcmUgaXQncyBkZWZpbmVkLiBTbywgaXQncyAqbm90KiBpbnRlbmRlZCBmb3IgZXh0ZXJuYWwgbGlua2luZyBvciB1c2UgYnkgb3RoZXIgbW9kdWxlcywgd2hpY2ggdGVsbHMgbWUgdGhlIGRldmVsb3BlcnMgYXJlIHRyeWluZyB0byBsaW1pdCBpdHMgc2NvcGUgYW5kIHByZXZlbnQgYWNjaWRlbnRhbCBvciB1bmludGVuZGVkIGV4dGVybmFsIGRlcGVuZGVuY2llcy4gVGhleeKAmXJlIHByb2JhYmx5IHRyeWluZyB0byBtYWludGFpbiBzb21lIHNvcnQgb2YgZW5jYXBzdWxhdGlvbiBmb3IgdGhlIG5zaW0gZGV2aWNlIHBvcnQgc3Vic3lzdGVtLlxuXG5JIG5lZWQgdG8gdW5kZXJzdGFuZCAqd2h5KiB0aGV5IGNob3NlIHRoYXQuIElzIGl0IGEgZGVzaWduIGNob2ljZSB0byBtYW5hZ2UgYWNjZXNzLCBwZXJoYXBzIHByb3RlY3RpbmcgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIHdpdGhpbiB0aGUgYG5zaW1gIG1vZHVsZT8gT3IgaXMgaXQgbW9yZSBvZiBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiwgcmVseWluZyBvbiB0aGUgY29tcGlsZXIncyBhYmlsaXR5IHRvIGlubGluZSB0aGUgZnVuY3Rpb24gbW9yZSBhZ2dyZXNzaXZlbHksIHNpbmNlIGl0cyBhZGRyZXNzIGlzIG9ubHkga25vd24gd2l0aGluIGEgc2luZ2xlIHRyYW5zbGF0aW9uIHVuaXQ/IE9yIHBlcmhhcHMsIHRoZXkgd2FudCB0byBrZWVwIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGhpZGRlbiwgcHJldmVudGluZyBzb21lb25lIGZyb20gaW5hZHZlcnRlbnRseSB0cnlpbmcgdG8gY2FsbCBpdCB3aXRoIGFuIGluYXBwcm9wcmlhdGUgZGF0YSBzdHJ1Y3R1cmU/XG5cbkkgc3VzcGVjdCBpdCdzIGxpa2VseSBhIGNvbWJpbmF0aW9uIG9mIHRoZXNlIHRoaW5ncywgYnV0IGl0IGFsbCBoaW5nZXMgb24gdGhlIHNwZWNpZmljIGRlc2lnbiBvZiB0aGUgYG5zaW1gIGRyaXZlci4gSSdtIGdvaW5nIHRvIGZvbGxvdyB0aGUgdXNlcyBvZiB0aGlzIGZ1bmN0aW9uIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgZGF0YSBpcyBiZWluZyBwYXNzZWQgaW4sIHdoZXJlIGl0J3MgYmVpbmcgdXNlZCwgYW5kIHdoaWNoIG90aGVyIGludGVybmFsIGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoIHRoaXMgYWRkIGZ1bmN0aW9uYWxpdHkuIEhvcGVmdWxseSwgSSdsbCBiZSBhYmxlIHRvIGdsZWFuIHRoZWlyIGludGVudCB0aHJvdWdoIGV4YW1pbmluZyB0aGUgc3Vycm91bmRpbmcgY29kZS4gSXTigJlzIHJhcmVseSBhIHN0YW5kYWxvbmUgY2hvaWNlOyB0aGVyZeKAmXMgYWx3YXlzIGFuIGFyY2hpdGVjdHVyYWwgZGVjaXNpb24gdGhhdCBsZWQgdG8gbWFraW5nIHNvbWV0aGluZyBzdGF0aWMuIEkgbmVlZCB0byBmaW5kIHRoZSB1bmRlcmx5aW5nIHJlYXNvbmluZy4gVGhpcyB3aWxsIGluZm9ybSBteSBhc3Nlc3NtZW50IG9mIHRoZSBvdmVyYWxsIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk3MywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAxOjIyLjQ0OTYwNjc2OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzE1MjkzODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19uc2ltX2Rldl9wb3J0X2FkZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYz02NDg9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzo2NDk6X19uc2ltX2Rldl9wb3J0X2FkZChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LCBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy02NTAtXFx0XFx0ICAgIHVuc2lnbmVkIGludCBwb3J0X2luZGV4LCB1OCBwZXJtX2FkZHJbRVRIX0FMRU5dKTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYz02Njc9c3RhdGljIGludCBuc2ltX2Vzd19zd2l0Y2hkZXZfZW5hYmxlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtNjczLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBuc2ltX2Rldl9nZXRfdmZzKG5zaW1fZGV2KTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjY3NDpcXHRcXHRlcnIgPSBfX25zaW1fZGV2X3BvcnRfYWRkKG5zaW1fZGV2LCBOU0lNX0RFVl9QT1JUX1RZUEVfVkYsIGksIE5VTEwpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy02NzUtXFx0XFx0aWYgKGVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTE0MjU9c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZsaW5rX29wcyBuc2ltX2Rldl9kZXZsaW5rX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNDU0LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNDU1OnN0YXRpYyBpbnQgX19uc2ltX2Rldl9wb3J0X2FkZChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LCBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNDU2LVxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgcG9ydF9pbmRleCwgdTggcGVybV9hZGRyW0VUSF9BTEVOXSlcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYz0xNTY0PXN0YXRpYyBpbnQgbnNpbV9kZXZfcG9ydF9hZGRfYWxsKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTU2OS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgcG9ydF9jb3VudDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE1NzA6XFx0XFx0ZXJyID0gX19uc2ltX2Rldl9wb3J0X2FkZChuc2ltX2RldiwgTlNJTV9ERVZfUE9SVF9UWVBFX1BGLCBpLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTU3MS1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTE4Mjk9aW50IG5zaW1fZHJ2X3BvcnRfYWRkKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiwgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xODM4LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTgzOTpcXHRcXHRlcnIgPSBfX25zaW1fZGV2X3BvcnRfYWRkKG5zaW1fZGV2LCB0eXBlLCBwb3J0X2luZGV4LCBwZXJtX2FkZHIpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xODQwLVxcdGRldmxfdW5sb2NrKHByaXZfdG9fZGV2bGluayhuc2ltX2RldikpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMToyMi41MjExNDEyMDZaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg0ODM4MTMwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqVHJhY2luZyB0aGUgYG5zaW1fZHJ2X3BvcnRfYWRkYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIGBuc2ltX2Rydl9wb3J0X2FkZGAgaXMgZXhwb3J0ZWQsIG1lYW5pbmcgaXQncyBhIGNyaXRpY2FsIGZ1bmN0aW9uLCBsaWtlbHkgcGFydCBvZiBhbiBleHRlcm5hbCBpbnRlcmZhY2UuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRpdmUgaW4gYW5kIHRyYWNlIGl0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgZnVuY3Rpb24gZG9lcywgaG93IGl0J3MgdXNlZCwgYW5kIHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGl0IG1hbmlwdWxhdGVzLiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciBhbnkgZGVlcGVyIGFuYWx5c2lzLiBJJ2xsIG5lZWQgdG8gc2VlIHdoZXJlIGl0J3MgZGVmaW5lZCBhbmQgZmlndXJlIG91dCBpdHMgY2FsbGluZyBjb252ZW50aW9uLiBIb3BlZnVsbHksIEkgY2FuIGZpbmQgc29tZSBjb21tZW50cyBvciBkb2N1bWVudGF0aW9uIHRvIGd1aWRlIG1lLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZCFcblxuXG4iLCJJbnB1dFRva2VucyI6NjE2MywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAxOjI1LjM2OTUyNTY3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDgzODU3OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuc2ltX2Rydl9wb3J0X2FkZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz02NT1uZXdfcG9ydF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTk1LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo5NjpcXHRyZXQgPSBuc2ltX2Rydl9wb3J0X2FkZChuc2ltX2J1c19kZXYsIE5TSU1fREVWX1BPUlRfVFlQRV9QRiwgcG9ydF9pbmRleCxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtOTctXFx0XFx0XFx0XFx0YWRkcl9zZXQgPyBldGhfYWRkciA6IE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTE4MTc9X19uc2ltX2Rldl9wb3J0X2xvb2t1cChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LCBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE4MjgtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE4Mjk6aW50IG5zaW1fZHJ2X3BvcnRfYWRkKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiwgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTgzMC1cXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgcG9ydF9pbmRleCwgdTggcGVybV9hZGRyW0VUSF9BTEVOXSlcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaD0zOTI9dm9pZCBuc2ltX2Rydl9yZW1vdmUoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzkzOmludCBuc2ltX2Rydl9wb3J0X2FkZChzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM5NC1cXHRcXHQgICAgICBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLCB1bnNpZ25lZCBpbnQgcG9ydF9pbmRleCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDE6MjUuNDMwMzY4NDk4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE2MDQ5NTcyODg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgdGhlIE5ldGRldnNpbSBEcml2ZXI6IEtleSBFbnRyeXBvaW50cyBhbmQgUG90ZW50aWFsIFRhcmdldHMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIGBuZXRkZXZzaW1gIGRyaXZlciBhbmQgSSB0aGluayBJJ3ZlIGdvdCBhIGRlY2VudCBoYW5kbGUgb24gcG90ZW50aWFsIGZ1enppbmcgZW50cnlwb2ludHMuIFRoZSBrZXkgc2VlbXMgdG8gYmUgYXJvdW5kIGhvdyB0aGUgZHJpdmVyIGludGVyYWN0cyB3aXRoIHRoZSBzeXN0ZW0uIEkgc2VlIHRoYXQgYG5ld19wb3J0X3N0b3JlYCBpcyBkZWZpbmVkIGFzIGEgc3lzZnMgYXR0cmlidXRlLCB3aGljaCBtZWFucyB3ZSBjYW4gZGlyZWN0bHkgaW50ZXJhY3Qgd2l0aCBpdCB0aHJvdWdoIHRoZSBmaWxlIHN5c3RlbSwgYW5kIHRoYXQncyBhbHdheXMgYW4gaW50ZXJlc3RpbmcgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5Nb3JlIGltcG9ydGFudGx5LCBgbnNpbV9kZXZfcG9ydF9hZGRfYWxsYCBpcyBjYWxsZWQgZGlyZWN0bHkgZnJvbSBgbnNpbV9kcnZfcHJvYmVgLiBTaW5jZSBgbnNpbV9kcnZfcHJvYmVgIGlzIHRoZSBidXMgcHJvYmUgZnVuY3Rpb24sIHRoYXQgbWVhbnMgd2Uga25vdyBmb3Igc3VyZSBgbmV0ZGV2c2ltYCBpcyByZWFjaGFibGUuIEknbSBub3RpbmcgdGhpcyBpcyBkZWZpbml0ZWx5IGEgZ29vZCBzcG90IHRvIGludmVzdCBzb21lIGZ1enppbmcgdGltZS5cblxuTm93LCBnbGFuY2luZyBvdmVyIHRoZSBwYXRjaCwgSSBzZWUgbW9kaWZpY2F0aW9ucyB0byBgbnNpbV9kZWxfbmFwaWAgYW5kIGBuc2ltX3F1ZXVlX3N0YXJ0YC4gYG5zaW1fcXVldWVfc3RhcnRgIGlzIGEgY2FsbGJhY2ssIHNwZWNpZmljYWxseSBmb3IgYC5uZG9fcXVldWVfc3RhcnRgLiBPa2F5LCBpbnRlcmVzdGluZywgdGhhdCBwb2ludHMgdG93YXJkcyBzb21lIG5ldHdvcmsgaW50ZXJhY3Rpb24gYXQgYSBsb3dlciBsZXZlbC4gYG5zaW1fZGVsX25hcGlgIGlzIGNhbGxlZCBmcm9tIHR3byBwbGFjZXM6IGBuc2ltX2Rlc3Ryb3lgIGFuZCBgbnNpbV9pbml0X25hcGlgIChpbiB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCkuIFNpbmNlIGBuc2ltX2Rlc3Ryb3lgIGlzIGEgY3JpdGljYWwgZnVuY3Rpb24sIEknbSBnb2luZyB0byBmb2N1cyBvbiB0aGF0IG5leHQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgdGhlcmUgdG8gc2VlIGlmIHdlIGNhbiB0cmlnZ2VyIGFueSBpbnRlcmVzdGluZyBzdGF0ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3OTIsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDE6NDEuNDc5OTQ0NzkzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTAwMDA2MTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnNpbV9kZXN0cm95XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTE0NTU9c3RhdGljIGludCBfX25zaW1fZGV2X3BvcnRfYWRkKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsIGVudW0gbnNpbV9kZXZfcG9ydF90eXBlIHR5cGUsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTUxOC1cXHRcXHRpZiAoZXJyKVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNTE5OlxcdFxcdFxcdGdvdG8gZXJyX25zaW1fZGVzdHJveTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTUyMC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTUyNS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTUyNjplcnJfbnNpbV9kZXN0cm95OlxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNTI3OlxcdG5zaW1fZGVzdHJveShuc2ltX2Rldl9wb3J0LVxcdTAwM2Vucyk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1MjgtZXJyX3BvcnRfZGVidWdmc19leGl0Olxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTE1NDA9c3RhdGljIHZvaWQgX19uc2ltX2Rldl9wb3J0X2RlbChzdHJ1Y3QgbnNpbV9kZXZfcG9ydCAqbnNpbV9kZXZfcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNTQ2LVxcdFxcdGRldmxfcmF0ZV9sZWFmX2Rlc3Ryb3koXFx1MDAyNm5zaW1fZGV2X3BvcnQtXFx1MDAzZWRldmxpbmtfcG9ydCk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE1NDc6XFx0bnNpbV9kZXN0cm95KG5zaW1fZGV2X3BvcnQtXFx1MDAzZW5zKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTU0OC1cXHRuc2ltX2Rldl9wb3J0X2RlYnVnZnNfZXhpdChuc2ltX2Rldl9wb3J0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz0xMTI4PXN0cnVjdCBuZXRkZXZzaW0gKm5zaW1fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtMTE3NC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6MTE3NTp2b2lkIG5zaW1fZGVzdHJveShzdHJ1Y3QgbmV0ZGV2c2ltICpucylcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtMTE3Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg9MTY2PXN0cnVjdCBuZXRkZXZzaW0gKm5zaW1fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTY4LVxcdFxcdFxcdCAgICAgIHU4IHBlcm1fYWRkcltFVEhfQUxFTl0pO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxNjk6dm9pZCBuc2ltX2Rlc3Ryb3koc3RydWN0IG5ldGRldnNpbSAqbnMpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xNzAtYm9vbCBuZXRkZXZfaXNfbnNpbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDE6NDEuNTg5OTUyNjhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE3NzYzNjg0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEZ1enppbmcgU3RyYXRlZ3kgZm9yIE5ldGRldnNpbSoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGBuZXRkZXZzaW1gIGRyaXZlciwgYW5kIHRoZSBmaXJzdCB0aGluZ3MgdGhhdCBqdW1wIG91dCBhcmUgdGhlIGBuc2ltX2NyZWF0ZWAgYW5kIGBuc2ltX2Rlc3Ryb3lgIGZ1bmN0aW9ucyDigJMgdGhvc2UgYXJlIHRoZSBvYnZpb3VzIGVudHJ5IGFuZCBleGl0IHBvaW50cyBmb3IgdGhlIHNpbXVsYXRlZCBuZXR3b3JrIGRldmljZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIG1ha2Ugc3VyZSB0aGVzZSBhcmUgcm9idXN0bHkgaGFuZGxlZC5cblxuSG9sZCBvbiBhIHNlYy4uLiBgbnNpbV9xdWV1ZV9zdGFydGAgaXMgYSBjYWxsYmFjayBmb3IgYC5uZG9fcXVldWVfc3RhcnRgLiBUaGF0J3MgaW50ZXJlc3Rpbmc7IGl0J3MgTkFQSSByZWxhdGVkLiBXaGljaCBtZWFucyBJIHNob3VsZCBwcm9iYWJseSBsb29rIGF0IHRoYXQsIHRvbyFcblxuVGhpcyBwYXRjaCBhbHNvIG1lbnRpb25zIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgY2FsbHMsIHdoaWNoIGlzIGRlZmluaXRlbHkgcmVsZXZhbnQgdG8gTkFQSSBhbmQgcXVldWUgbWFuYWdlbWVudC4gVGhhdCBmdW5jdGlvbiBpcyB3b3J0aCBhIGRlZXAgZGl2ZSBzaW5jZSBpdCdzIGEgY29yZSBuZXR3b3JraW5nIGZ1bmN0aW9uLiBTbyBpdCBsb29rcyBsaWtlIEkgbmVlZCB0byByZWFsbHkgcGF5IGF0dGVudGlvbiB0byB0aGF0LiBUaGUgcGF0Y2ggaXMgaW4gYGRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY2AsIHNvIEkgc2hvdWxkIGZvY3VzIG15IGF0dGVudGlvbiBvbiBjb2RlIGFyb3VuZCB0aGVyZS5cblxuU28sIEknbGwgZGVmaW5pdGVseSBiZSBmdXp6aW5nIGBuc2ltX2NyZWF0ZWAsIGBuc2ltX2Rlc3Ryb3lgLCBgbnNpbV9kcnZfcHJvYmVgLCBhbmQgYG5zaW1fZHJ2X3BvcnRfYWRkYCBnaXZlbiB0aGF0IHRoZXkgYXJlIHRoZSBwcmltYXJ5IGZ1bmN0aW9ucyBoZXJlLlxuXG5XYWl0IGEgbWludXRlLCBgbnNpbV9xdWV1ZV9zdGFydGAgaXMgYSAqY2FsbGJhY2sqIGZvciBgLm5kb19xdWV1ZV9zdGFydGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0ICpob3cqIGAubmRvX3F1ZXVlX3N0YXJ0YCBpcyBhY3R1YWxseSB0cmlnZ2VyZWQgaW4gdGhlIGtlcm5lbCwgYW5kIGhvdyBJIGNhbiBjb250cm9sIHRoYXQuIEkgbmVlZCB0byB0cmlnZ2VyIHRoYXQgY2FsbGJhY2sgZnVuY3Rpb24uXG5cbkknbGwgY2hlY2sgYG5ldGRldl9xdWV1ZV9tZ210X29wc2AgYW5kIGhvdyBpdCdzIHVzZWQuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRvIGdldCB0aGF0IGNhbGxiYWNrIHRvIGZpcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc5NTQsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDE6NDYuNzY3NTkyMzA0WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2Mzg0NTQ0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZG9fcXVldWVfc3RhcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NvcmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTk4PXN0YXRpYyBpbnQgbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xMDgtXFx0aWYgKCFxb3BzIHx8ICFxb3BzLVxcdTAwM2VuZG9fcXVldWVfc3RvcCB8fCAhcW9wcy1cXHUwMDNlbmRvX3F1ZXVlX21lbV9mcmVlIHx8XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTA5OlxcdCAgICAhcW9wcy1cXHUwMDNlbmRvX3F1ZXVlX21lbV9hbGxvYyB8fCAhcW9wcy1cXHUwMDNlbmRvX3F1ZXVlX3N0YXJ0KVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTExMC1cXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xMzYtXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTM3OlxcdFxcdGVyciA9IHFvcHMtXFx1MDAzZW5kb19xdWV1ZV9zdGFydChkZXYsIHFjZmdfbmV3LCBuZXdfbWVtLCByeHFfaWR4KTtcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xMzgtXFx0XFx0aWYgKGVycilcXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE1OC1cXHQgKi9cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxNTk6XFx0aWYgKHFvcHMtXFx1MDAzZW5kb19xdWV1ZV9zdGFydChkZXYsIHFjZmdfb2xkLCBvbGRfbWVtLCByeHFfaWR4KSkge1xcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE2MC1cXHRcXHRXQVJOKDEsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAxOjQ2LjgzMTQ0NzE2MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODQyMDAyMzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBuZXRkZXZfcnhfcXVldWVfcmVjb25maWdgJ3MgQ2FsbGVycyoqXG5cbkFscmlnaHQsIHNvIGBuZXRkZXZfcnhfcXVldWVfcmVjb25maWdgIGtpY2tzIG9mZiBhIGNhbGwgdG8gYG5kb19xdWV1ZV9zdGFydGAuIFRoYXQncyBpbnRlcmVzdGluZywgYW5kIGl0IHN1Z2dlc3RzIGEgZmFpcmx5IGltcG9ydGFudCByZWNvbmZpZ3VyYXRpb24gZXZlbnQgaXMgaGFwcGVuaW5nLCBzaW5jZSBpdCdzIGludm9sdmVkIGluIHN0YXJ0aW5nIG9yIHJlc3RhcnRpbmcgYSBxdWV1ZS4gVG8gcmVhbGx5IHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucywgSSBuZWVkIHRvIHRyYWNlIGJhY2sgZnJvbSBgbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnYC4gTGV0J3Mgc2VlLi4uIEkgd2FudCB0byBxdWlja2x5IGlkZW50aWZ5IHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKmNhbGxlZCogd2l0aGluIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IG9mIGl0cyBjYWxscyB3aWxsIHByb3ZpZGUgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGl0cyBmdW5jdGlvbi4gVGltZSB0byBzdGFydCBkaWdnaW5nIHRocm91Z2ggdGhlIGNvZGUuLi4gbGV0J3Mgc2VlIHdoZXJlIHRoaXMgaXMgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODkyOCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAxOjQ5LjY3MzQ1MzQyNVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTgwOTAwODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz05MT1ib29sIG5ldGlmX3J4cV9oYXNfbXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgpXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy05Ny1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzo5ODpzdGF0aWMgaW50IG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTk5LVxcdFxcdFxcdFxcdCAgICB1bnNpZ25lZCBpbnQgcnhxX2lkeCxcXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTE3OD1pbnQgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgpXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODItXFx0bmV0ZGV2X3F1ZXVlX2NvbmZpZyhkZXYsIHJ4cV9pZHgsIFxcdTAwMjZxY2ZnKTtcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxODM6XFx0cmV0dXJuIG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyhkZXYsIHJ4cV9pZHgsIFxcdTAwMjZxY2ZnLCBcXHUwMDI2cWNmZyk7XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTg0LX1cXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTE4Nz1zdGF0aWMgaW50IF9fbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yMzMtXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjM0OlxcdHJldCA9IG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyhkZXYsIHJ4cV9pZHgsIFxcdTAwMjZxY2ZnWzBdLCBcXHUwMDI2cWNmZ1sxXSk7XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjM1LVxcdGlmIChyZXQpXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz0yNzg9c3RhdGljIHZvaWQgX19uZXRpZl9tcF9jbG9zZV9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0zMDEtXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MzAyOlxcdGVyciA9IG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyhkZXYsIHJ4cV9pZHgsIFxcdTAwMjZxY2ZnWzBdLCBcXHUwMDI2cWNmZ1sxXSk7XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMzAzLVxcdFdBUk5fT04oZXJyIFxcdTAwMjZcXHUwMDI2IGVyciAhPSAtRU5FVERPV04pO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMTo0OS43MzE1NTA4NDRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4MTM1MzExOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQ2hlY2tpbmcgYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YCdzIEV4cG9ydCBTdGF0dXMqKlxuXG5BbHJpZ2h0LCB0aGF0J3MgaW50ZXJlc3RpbmcuIEkgc2VlIGEgcmVmZXJlbmNlIHRvIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGAuIFRoZSBxdWVzdGlvbiB0aGF0IGltbWVkaWF0ZWx5IHBvcHMgaW50byBteSBoZWFkIGlzOiBpcyB0aGF0IGZ1bmN0aW9uICpleHBvcnRlZCo/IElzIGl0IGFjY2Vzc2libGUgb3V0c2lkZSBvZiBpdHMgaW1tZWRpYXRlIG1vZHVsZT8gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXRoZXIgaXQncyBwYXJ0IG9mIHRoZSBwdWJsaWMgQVBJLCBvciBpZiBpdCdzIGludGVybmFsIGFuZCwgdGhlcmVmb3JlLCBwb3RlbnRpYWxseSBzdWJqZWN0IHRvIGNoYW5nZSB3aXRob3V0IHRoZSBzYW1lIGxldmVsIG9mIGNvbmNlcm4gZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIFVuZGVyc3RhbmRpbmcgaXRzIGV4cG9ydCBzdGF0dXMgaXMgYWJzb2x1dGVseSBjcnVjaWFsIGJlZm9yZSBJIGNhbiBhc3Nlc3MgaXRzIGludGVuZGVkIHVzZSwgZGVwZW5kZW5jaWVzLCBvciBwb3RlbnRpYWwgaW1wYWN0cyBpbiB0aGUgY29udGV4dCBJJ20gY3VycmVudGx5IHdvcmtpbmcgd2l0aC4gQSBxdWljayBjaGVjayBpcyBpbiBvcmRlci4gTGV0J3Mgc2VlIHdoYXQgdGhlIHN5bWJvbCB0YWJsZSB0ZWxscyB1cyFcblxuXG4iLCJJbnB1dFRva2VucyI6OTc0NCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAxOjUzLjExMjkwNjQ1MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA0OTQ2NTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz05OD1zdGF0aWMgaW50IG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTc3LVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjE3ODppbnQgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgpXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTc5LXtcXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE4NC19XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTg1OkVYUE9SVF9TWU1CT0xfTlNfR1BMKG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0LCBcXFwiTkVUREVWX0lOVEVSTkFMXFxcIik7XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTg2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMTo1My4yMTc4NTczNDlaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0ODc0MjU5OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgRGV2aWNlIFJYIFF1ZXVlIFJlc3RhcnQqKlxuXG5Pa2F5LCBzbyBgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnRgIGlzIGRlZmluaXRlbHkgZXhwb3J0ZWQsIHRoYXQncyBnb29kIHRvIGtub3cuIEJ1dCBJJ20gd29uZGVyaW5nIGFib3V0IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGF0IGFuZCBgX19uZXRpZl9tcF9vcGVuX3J4cWAuIFRoYXQgb25lIHNlZW1zIHRvIGJlIHN0YXRpYywgd2hpY2ggbWFrZXMgdGhpbmdzIGEgYml0IG1vcmUgaW50ZXJlc3RpbmcsIHBvdGVudGlhbGx5IGxpbWl0aW5nIGhvdyB3ZSBjYW4gaW50ZXJhY3Qgd2l0aCBpdC4gVGhlIHF1ZXN0aW9uIHRoZW4gYmVjb21lczogSXMgdGhlcmUgYSBwdWJsaWMgQVBJIG9yIGEgaGlnaGVyLWxldmVsIG1lY2hhbmlzbSB0aGF0IHVsdGltYXRlbHkgdHJpZ2dlcnMgYF9fbmV0aWZfbXBfb3Blbl9yeHFgIG9yIHByb3ZpZGVzIGFuIGluZGlyZWN0IHBhdGh3YXk/IFRoYXQncyB3aGF0IEkgcmVhbGx5IG5lZWQgdG8gdW5kZXJzdGFuZC5cblxuVG8gZ2V0IGEgY2xlYXJlciBwaWN0dXJlLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjYWxsIHNpdGVzIG9mIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGAuIEkgbmVlZCB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIGZsb3cgYW5kIHNlZSB3aGF0J3MgYWN0dWFsbHkgaW5pdGlhdGluZyB0aGF0IGZ1bmN0aW9uIGNhbGwuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNsdWVzIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBpbnRlbmRlZCBiZWhhdmlvciBhbmQgaWRlbnRpZnkgaWYgdGhlcmUgaXMgYW4gaW50ZW5kZWQsIGhpZ2ggbGV2ZWwgdHJpZ2dlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAxNzcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMTo1Ni41NjY2MDQzODdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDg3NTAzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXRkZXZfcnhfcXVldWVfcmVzdGFydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTk4PXN0YXRpYyBpbnQgbmV0ZGV2X3J4X3F1ZXVlX3JlY29uZmlnKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xNzctXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTc4OmludCBuZXRkZXZfcnhfcXVldWVfcmVzdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeClcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xNzkte1xcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTg0LX1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxODU6RVhQT1JUX1NZTUJPTF9OU19HUEwobmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnQsIFxcXCJORVRERVZfSU5URVJOQUxcXFwiKTtcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAxOjU2LjcwMTQ4Mzg4M1oiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDY5NTQ0NzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqSW52ZXN0aWdhdGluZyBhIE5ldHdvcmsgTW9kdWxlIEV4cG9ydCoqXG5cbk9rYXksIHNvIEkgc2VlIHRoaXMgZnVuY3Rpb24gb3IgdmFyaWFibGUgaXMgZXhwb3J0ZWQsIG1lYW5pbmcgaXQncyBpbnRlbmRlZCB0byBiZSB1c2VkIG91dHNpZGUgdGhlIG1vZHVsZSB3aGVyZSBpdCdzIGRlZmluZWQuIEJ1dCB0aGUgb2J2aW91cyBwbGFjZSB0byBsb29rLCBgbmV0L2AsIGlzbid0IGNhbGxpbmcgaXQuIFRoYXQncyB1bnVzdWFsLiBVc3VhbGx5LCB0aGUgbW9kdWxlIHRoYXQgZXhwb3J0cyBzb21ldGhpbmcgaXMgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGUgbW9kdWxlcyB0aGF0IHVzZSBpdC4gSXQncyB0aW1lIHRvIGRpZyBhIGJpdCBkZWVwZXIuIEdpdmVuIHRoaXMgaXMgbmV0d29yay1yZWxhdGVkIGNvZGUsIHRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBgZHJpdmVycy9uZXQvYCBkaXJlY3RvcnkuIFRoYXQncyB3aGVyZSB0aGUgYWN0dWFsIG5ldHdvcmsgZGV2aWNlIGRyaXZlcnMgbGl2ZSwgYW5kIHRoYXQncyB0aGUgbW9zdCBsaWtlbHkgcGxhY2UgdG8gZmluZCBzb21ldGhpbmcgdGhhdCBtaWdodCBsZXZlcmFnZSB0aGUgZXhwb3J0ZWQgZmVhdHVyZS4gTGV0J3Mgc2VlIHdoYXQncyBiZWluZyBpbXBvcnRlZCBhbmQgaG93IGl0J3MgYmVpbmcgdXNlZCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2NzcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjowMC4xNzEwMzI4MzlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NjY2MzgwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXRkZXZfcnhfcXVldWVfcmVzdGFydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTQ0Nzg9c3RhdGljIHZvaWQgYm54dF90cGhfdXBkYXRlKHN0cnVjdCBibnh0ICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTE0NTAwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjE0NTAxOlxcdFxcdGVyciA9IG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0KGRldiwgaXJxLVxcdTAwM2VyaW5nX25yKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xNDUwMi1cXHRcXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9ODY0PW5zaW1fcXJlc2V0X3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04ODgtXFx0bnMtXFx1MDAzZXJxX3Jlc2V0X21vZGUgPSBtb2RlO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo4ODk6XFx0cmV0ID0gbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnQobnMtXFx1MDAzZW5ldGRldiwgcXVldWUpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04OTAtXFx0bnMtXFx1MDAzZXJxX3Jlc2V0X21vZGUgPSAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjowMC40MTc3MDA5OTJaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzNzA4ODQwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gZGVlcCBpbiB0aGUgd2VlZHMgb2YgbmV0d29yayBkZXZpY2UgZHJpdmVyIGRldmVsb3BtZW50OlxuXG4qKlRyYWNpbmcgYSBRdWV1ZSBSZXN0YXJ0IElzc3VlKipcblxuUmlnaHQsIHNvIGBuc2ltX3FyZXNldF93cml0ZWAgaXMgZmlyaW5nIHVwIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGAg4oCTIHRoYXQncyBhIGtleSBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gVGhhdCdzIGltbWVkaWF0ZWx5IGludGVyZXN0aW5nIGJlY2F1c2UgaXQgdGVsbHMgbWUgd2hlcmUgdGhlIHJlc2V0IGlzIGFjdHVhbGx5IGhhcHBlbmluZyBpbiB0aGUgcmVjZWl2ZSBwYXRoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0LiBJIG5lZWQgdG8gZ28gYmFjayBhbmQgZG91YmxlLWNoZWNrIGV4YWN0bHkgaG93IGBuc2ltX3FyZXNldF93cml0ZWAgd29ya3MuIFRoYXQgZnVuY3Rpb24gY2FsbCBpcyBsaWtlbHkgdGhlIHRyaWdnZXIgZm9yIHdoYXRldmVyIGlzIGhhcHBlbmluZyBkb3duIHRoZSBsaW5lLCBzbyBkaWdnaW5nIGludG8gaXQgd2lsbCBwcm9iYWJseSBzaGVkIGxpZ2h0IG9uIHRoZSBwcm9ibGVtIEknbSB0cnlpbmcgdG8gc29sdmUuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB3aGF0IHRoYXQgZnVuY3Rpb24gaXMgZG9pbmcuIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTIwMiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAyOjAzLjc1NDgxNTE1MloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc2MDcxMjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5zaW1fcXJlc2V0X3dyaXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTg2Mz1zdGF0aWMgc3NpemVfdFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo4NjQ6bnNpbV9xcmVzZXRfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICpkYXRhLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NjUtXFx0XFx0ICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz05MDA9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgbnNpbV9xcmVzZXRfZm9wcyA9IHtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtOTAxLVxcdC5vcGVuID0gc2ltcGxlX29wZW4sXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjkwMjpcXHQud3JpdGUgPSBuc2ltX3FyZXNldF93cml0ZSxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtOTAzLVxcdC5vd25lciA9IFRISVNfTU9EVUxFLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjowNC4wMzA4OTE2OTNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM4MDQ2NzQxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEZWJ1Z2dpbmcgRGVlcCBEaXZlOiBBIEZ1enppbmcgT3Bwb3J0dW5pdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGl0J3MgY2xlYXJseSBhIGRlYnVnZnMgZmlsZSBvcGVyYXRpb24uIFRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgYG5zaW1fcXJlc2V0X3dyaXRlYCBpcyBhIHBvdGVudGlhbCB0YXJnZXQuIEEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcsIGFjdHVhbGx5LiBJdCdzIGFsbW9zdCBndWFyYW50ZWVkIHRvIGJlIHJlYWNoYWJsZSBiZWNhdXNlIGl0J3MgZXhwb3NlZCB0aGF0IHdheS5cblxuTm93LCBJJ20gc2VlaW5nIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0aGVzZSBgbmV0aWZfcXVldWVfc2V0X25hcGlgIGNhbGxzLiBIbW0sIGludGVyZXN0aW5nLiBUaG9zZSBhcmUgZGVmaW5pdGVseSB3b3J0aCBhIGNsb3NlciBsb29rLiBMZXQgbWUgc2hpZnQgbXkgZm9jdXMgYW5kIHRha2UgYSBkZXRhaWxlZCBsb29rIGF0IGhvdyBgbmV0aWZfcXVldWVfc2V0X25hcGlgIGZ1bmN0aW9ucy4gSXQgY291bGQgYmUgYW4gYXZlbnVlIHRvIGV4cGxvaXQgd2l0aGluIHRoaXMgZGVidWdmcyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTY2NywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAyOjA3LjQxMTM2MTU4MVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTMzNDE2OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV0aWZfcXVldWVfc2V0X25hcGlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NvcmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL2Rldi5jPTcyODk9RVhQT1JUX1NZTUJPTChuZXRpZl90aHJlYWRlZF9lbmFibGUpO1xcbi0tXFxubmV0L2NvcmUvZGV2LmMtNzI5MS0vKipcXG5uZXQvY29yZS9kZXYuYzo3MjkyOiAqIG5ldGlmX3F1ZXVlX3NldF9uYXBpIC0gQXNzb2NpYXRlIHF1ZXVlIHdpdGggdGhlIG5hcGlcXG5uZXQvY29yZS9kZXYuYy03MjkzLSAqIEBkZXY6IGRldmljZSB0byB3aGljaCBOQVBJIGFuZCBxdWV1ZSBiZWxvbmdcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTczMDEtICovXFxubmV0L2NvcmUvZGV2LmM6NzMwMjp2b2lkIG5ldGlmX3F1ZXVlX3NldF9uYXBpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBxdWV1ZV9pbmRleCxcXG5uZXQvY29yZS9kZXYuYy03MzAzLVxcdFxcdFxcdCAgZW51bSBuZXRkZXZfcXVldWVfdHlwZSB0eXBlLCBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGkpXFxuLS1cXG5uZXQvY29yZS9kZXYuYy03MzI0LX1cXG5uZXQvY29yZS9kZXYuYzo3MzI1OkVYUE9SVF9TWU1CT0wobmV0aWZfcXVldWVfc2V0X25hcGkpO1xcbm5ldC9jb3JlL2Rldi5jLTczMjYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAyOjA3LjUwNDcwODU3OFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODQwOTY4MzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTmV0d29yayBJbnRlcmZhY2UgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGUgTkFQSSBzZXR1cCwgc3BlY2lmaWNhbGx5IGBuc2ltX2RlbF9uYXBpYCBhbmQgYG5zaW1fcXVldWVfc3RhcnRgLiBgbmV0aWZfcXVldWVfc2V0X25hcGlgIGlzIGFuIGV4cG9ydGVkIGZ1bmN0aW9uLCBzbyB0aGF0IGdpdmVzIG1lIGEgZ29vZCBlbnRyeSBwb2ludCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGFsbCBmaXRzIHRvZ2V0aGVyLlxuXG5SaWdodCwgYG5zaW1fZGVsX25hcGlgIGlzIGNhbGxlZCBmcm9tIGBuc2ltX2Rlc3Ryb3lgIGFuZCBgbnNpbV9pbml0X25hcGlgLiBUaGF0IG5hcnJvd3MgZG93biB0aGUgY3JpdGljYWwgYXJlYXMuIEFuZCBgbnNpbV9xdWV1ZV9zdGFydGAgaXMgdHJpZ2dlcmVkIHRocm91Z2ggYG5kb19xdWV1ZV9zdGFydGAgaW4gYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YCwgd2hpY2ggaXMgaXRzZWxmIGtpY2tlZCBvZmYgYnkgYG5zaW1fcXJlc2V0X3dyaXRlYC4gQWhhISBgbnNpbV9xcmVzZXRfd3JpdGVgIGlzIGEgZGVidWdmcyB3cml0ZSBmdW5jdGlvbi4uLiBUaGF0IHNlZW1zIGhpZ2hseSBzcGVjaWZpYy5cblxuTm93LCBhIGRlYnVnZnMgd3JpdGUgaW1wbGllcyB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgcHJpbWFyaWx5IGV4cG9zZWQgZm9yIHRlc3Rpbmcgb3IgZGlhZ25vc3RpYyBwdXJwb3Nlcy4gQnV0LCBJIG5lZWQgdG8gbWFrZSAqYWJzb2x1dGVseSogY2VydGFpbiBJIGhhdmVuJ3QgbWlzc2VkIGEgbW9yZSBjcml0aWNhbCBwYXRoLiBDb3VsZCB0aGVyZSBiZSBhbnkgb3RoZXIgd2F5IGBuZG9fcXVldWVfc3RhcnRgIGdldHMgdHJpZ2dlcmVkPyBOZWVkIHRvIGRvdWJsZS1jaGVjayBjYWxsZXJzIG9mIGBuZXRkZXZfcnhfcXVldWVfcmVjb25maWdgIGluIGBuZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuY2AgYWdhaW4uIEdvdHRhIG1ha2Ugc3VyZSBJJ20gbm90IG1pc3NpbmcgYSBjcnVjaWFsIGNvZGUgcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIxNjgsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDI6MTQuMzQ1Njc5OTAyWiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODMyNzE0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXRkZXZfcnhfcXVldWVfcmVjb25maWdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM9OTE9Ym9vbCBuZXRpZl9yeHFfaGFzX21wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByeHFfaWR4KVxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtOTctXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6OTg6c3RhdGljIGludCBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy05OS1cXHRcXHRcXHRcXHQgICAgdW5zaWduZWQgaW50IHJ4cV9pZHgsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz0xNzg9aW50IG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByeHFfaWR4KVxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTgyLVxcdG5ldGRldl9xdWV1ZV9jb25maWcoZGV2LCByeHFfaWR4LCBcXHUwMDI2cWNmZyk7XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTgzOlxcdHJldHVybiBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoZGV2LCByeHFfaWR4LCBcXHUwMDI2cWNmZywgXFx1MDAyNnFjZmcpO1xcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE4NC19XFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz0xODc9c3RhdGljIGludCBfX25ldGlmX21wX29wZW5fcnhxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByeHFfaWR4LFxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjMzLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjIzNDpcXHRyZXQgPSBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoZGV2LCByeHFfaWR4LCBcXHUwMDI2cWNmZ1swXSwgXFx1MDAyNnFjZmdbMV0pO1xcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTIzNS1cXHRpZiAocmV0KVxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM9Mjc4PXN0YXRpYyB2b2lkIF9fbmV0aWZfbXBfY2xvc2VfcnhxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByeHFfaWR4LFxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMzAxLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjMwMjpcXHRlcnIgPSBuZXRkZXZfcnhfcXVldWVfcmVjb25maWcoZGV2LCByeHFfaWR4LCBcXHUwMDI2cWNmZ1swXSwgXFx1MDAyNnFjZmdbMV0pO1xcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTMwMy1cXHRXQVJOX09OKGVyciBcXHUwMDI2XFx1MDAyNiBlcnIgIT0gLUVORVRET1dOKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDI6MTQuNDE0MDEwODlaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc0ODIyMjkxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIFN0YXRpYyBGdW5jdGlvbiBVc2FnZSBpbiB0aGUgTmV0d29yayBJbnRlcmZhY2UgQ29kZSoqXG5cbkFscmlnaHQsIHNvIEknbSBkaWdnaW5nIGludG8gdGhlc2UgYF9fbmV0aWZfbXBfb3Blbl9yeHFgIGFuZCBgX19uZXRpZl9tcF9jbG9zZV9yeHFgIGZ1bmN0aW9ucy4gVGhlIGtleSB0aGluZyBoZXJlIGlzIHRoYXQgdGhleSdyZSBkZWNsYXJlZCBhcyBgc3RhdGljYC4gVGhhdCBtZWFucyB0aGV5IGhhdmUgaW50ZXJuYWwgbGlua2FnZSwgYW5kIGFyZSBvbmx5IHZpc2libGUgd2l0aGluIHRoZSBjb21waWxhdGlvbiB1bml0IGluIHdoaWNoIHRoZXkncmUgZGVmaW5lZC4gVGhpcyBpcyBnb29kIHByYWN0aWNlIGZvciBlbmNhcHN1bGF0aW9uLCBidXQgaXQgYWxzbyBtZWFucyBJIGhhdmUgdG8gYmUgYSBsaXR0bGUgbW9yZSBkZWxpYmVyYXRlIGluIGZpZ3VyaW5nIG91dCB3aGVyZSB0aGV5J3JlIGJlaW5nIHVzZWQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIk9rYXksIGdpdmVuIHRoZXkncmUgc3RhdGljLCB0aGUgY2FsbHMgdG8gdGhlc2UgZnVuY3Rpb25zIGhhdmUgdG8gYmUgd2l0aGluIHRoZSBzYW1lIHNvdXJjZSBmaWxlLlwiIExldCdzIHRyYWNlIHRoZWlyIHVzYWdlIGFuZCBzZWUgd2hlcmUgdGhleSdyZSBjYWxsZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IG9mIHRoZWlyIGNhbGxzIHRvIGFzc2VzcyB0aGVpciBiZWhhdmlvdXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMjY5LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDI6MTkuMTYyMjM3NDg3WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTI0MzEwNDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19uZXRpZl9tcF9vcGVuX3J4cVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz0xODU9RVhQT1JUX1NZTUJPTF9OU19HUEwobmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnQsIFxcXCJORVRERVZfSU5URVJOQUxcXFwiKTtcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODYtXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTg3OnN0YXRpYyBpbnQgX19uZXRpZl9tcF9vcGVuX3J4cShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeCxcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODgtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwcF9tZW1vcnlfcHJvdmlkZXJfcGFyYW1zICpwLFxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM9MjQ1PWludCBuZXRpZl9tcF9vcGVuX3J4cShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeCxcXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTI2MC1cXHRpZiAoIW5ldGlmX3J4cV9pc19sZWFzZWQoZGV2LCByeHFfaWR4KSlcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoyNjE6XFx0XFx0cmV0dXJuIF9fbmV0aWZfbXBfb3Blbl9yeHEoZGV2LCByeHFfaWR4LCBwLCBleHRhY2spO1xcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTI2Mi1cXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTI3Mi1cXHRuZXRkZXZfbG9jayhkZXYpO1xcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjI3MzpcXHRyZXQgPSBfX25ldGlmX21wX29wZW5fcnhxKGRldiwgcnhxX2lkeCwgcCwgZXh0YWNrKTtcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNzQtXFx0bmV0ZGV2X3VubG9jayhkZXYpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjoxOS40MTQ2NzM0MTlaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc1ODQyODMxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqVmVyaWZ5aW5nIHRoZSBFeHBvcnQgb2YgYG5ldGlmX21wX29wZW5fcnhxYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYG5ldGlmX21wX29wZW5fcnhxYCBmdW5jdGlvbiBjYWxsLCBhbmQgdGhlIHF1ZXN0aW9uIHRoYXQgaW1tZWRpYXRlbHkgcG9wcyBpbnRvIG15IGhlYWQgaXM6ICpJcyB0aGlzIGZ1bmN0aW9uIGFjdHVhbGx5IGV4cG9ydGVkPyogSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGl0J3MgYWNjZXNzaWJsZSB3aGVyZSBpdCdzIGJlaW5nIHVzZWQuIEkgY2FuJ3QganVzdCBhc3N1bWUgaXQncyBwdWJsaWNseSBhdmFpbGFibGUgYW5kIHVzYWJsZSBvdXRzaWRlIG9mIGl0cyBvcmlnaW5hbCBtb2R1bGUuIFRoaXMgaXMgYSBjcnVjaWFsIGZpcnN0IHN0ZXAgaW4gZGVidWdnaW5nIG9yIHVuZGVyc3RhbmRpbmcgdGhlIGNvZGUncyBhcmNoaXRlY3R1cmUuIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgaXQgaGFzIGJlZW4gZXhwbGljaXRseSBtYWRlIGF2YWlsYWJsZSwgcHJvYmFibHkgdGhyb3VnaCBhIHN5bWJvbCB0YWJsZSBvciBzb21lIG90aGVyIG1lY2hhbmlzbSBpbiB0aGlzIGtlcm5lbCBidWlsZCBvciBwcm9qZWN0LiBJZiBpdCBpc24ndCBleHBvcnRlZCwgdGhhdCB3b3VsZCBsaWtlbHkgZXhwbGFpbiBhbnkgaXNzdWVzIEknbSBzZWVpbmcgd2l0aCBpdHMgdXNhZ2UuIFNvLCB0aW1lIHRvIGNoZWNrIHRoZSBzeW1ib2wgZXhwb3J0IGxpc3RzLCBvciB0aGUgcmVsZXZhbnQgaGVhZGVyIGZpbGVzLCBhbmQgbWFrZSBzdXJlIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyBpbmRlZWQgZGVjbGFyZWQgYXMgc29tZXRoaW5nIHRoYXQgY2FuIGJlIGNhbGxlZCBmcm9tIHRoaXMgc2NvcGUuIExldCdzIGRpZyBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM5MjksIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjoyNS4xNzMxMDUzMTZaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2ODAwNzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ldGlmX21wX29wZW5fcnhxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jPTE4NT1FWFBPUlRfU1lNQk9MX05TX0dQTChuZXRkZXZfcnhfcXVldWVfcmVzdGFydCwgXFxcIk5FVERFVl9JTlRFUk5BTFxcXCIpO1xcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE4Ni1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoxODc6c3RhdGljIGludCBfX25ldGlmX21wX29wZW5fcnhxKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCByeHFfaWR4LFxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE4OC1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHBwX21lbW9yeV9wcm92aWRlcl9wYXJhbXMgKnAsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNDQtXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjQ1OmludCBuZXRpZl9tcF9vcGVuX3J4cShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeCxcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNDYtXFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IHBwX21lbW9yeV9wcm92aWRlcl9wYXJhbXMgKnAsXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNjAtXFx0aWYgKCFuZXRpZl9yeHFfaXNfbGVhc2VkKGRldiwgcnhxX2lkeCkpXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjYxOlxcdFxcdHJldHVybiBfX25ldGlmX21wX29wZW5fcnhxKGRldiwgcnhxX2lkeCwgcCwgZXh0YWNrKTtcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNjItXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0yNzItXFx0bmV0ZGV2X2xvY2soZGV2KTtcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYzoyNzM6XFx0cmV0ID0gX19uZXRpZl9tcF9vcGVuX3J4cShkZXYsIHJ4cV9pZHgsIHAsIGV4dGFjayk7XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjc0LVxcdG5ldGRldl91bmxvY2soZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDI6MjUuMjI5OTExOTM0WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNDM2NDY4NzUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIENhbGwgU2l0ZXMgb2YgYG5ldGlmX21wX29wZW5fcnhxYCoqXG5cbk9rYXksIGZpcnN0IHRoaW5ncyBmaXJzdCwgSSBuZWVkIHRvIHNlZSB0aGUgY29udGV4dCBvZiB0aGlzIGBuZXRpZl9tcF9vcGVuX3J4cWAgZnVuY3Rpb24uIE15IGluc3RpbmN0IGlzIHRvIHRyYWNlIGl0cyBjYWxsIHNpdGVzLiBLbm93aW5nIHdoZXJlIGl0J3MgKnVzZWQqIHdpbGwgZ2l2ZSBtZSBhIGh1Z2UgYW1vdW50IG9mIGluZm9ybWF0aW9uIGFib3V0IGl0cyBwdXJwb3NlIGFuZCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIG5ldHdvcmsgaW50ZXJmYWNlIG11bHRpLXF1ZXVlIG1hbmFnZW1lbnQgZnJhbWV3b3JrLiBJJ20gdGhpbmtpbmcgSSdsbCBzdGFydCB3aXRoIGEgc3RyYWlnaHRmb3J3YXJkIGNvZGUgc2VhcmNoLiBQZXJoYXBzIGEgZ3JlcCBvciBhIHNpbWlsYXIgdG9vbCB0byBwaW5wb2ludCBhbGwgaW5zdGFuY2VzIG9mIGNhbGxzIHRvIHRoYXQgc3BlY2lmaWMgZnVuY3Rpb24gbmFtZS4gVGhpcyB3aWxsIGhvcGVmdWxseSBxdWlja2x5IHJldmVhbCB0aGUgcmVsZXZhbnQgcGFydHMgb2YgdGhlIGNvZGUuIE9uY2UgSSBmaW5kIHRob3NlIGNhbGxzLCBJIHdpbGwgc3RhcnQgdG8gdW5wYWNrIHRoZSBsb2dpYyBhcm91bmQgZWFjaCBjYWxsLCBzbyB0aGF0IEkgY2FuIGZpZ3VyZSBvdXQgdGhlIGNvbnRyb2wgZmxvdywgYW5kIHdoYXQgdGhlIGRlcGVuZGVuY2llcyBtaWdodCBiZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZSB0b28sIHNvIEknbGwgYWxzbyBjaGVjayBpdHMgZGVmaW5pdGlvbiB0byBzZWUgd2hhdCBhcmd1bWVudHMgaXQgZXhwZWN0cy4gSSBiZXQgdGhlIGFyZ3VtZW50cyBjYW4gZ2l2ZSBtZSBjbHVlcyBhYm91dCB0aGUgc3BlY2lmaWMgZGF0YSBpdCB3b3JrcyBvbiwgYW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gb3RoZXIgZnVuY3Rpb25zIGluIHRoZSBkcml2ZXIsIG9yIG1heWJlIGluIHRoZSBjb3JlIG5ldHdvcmsgc3RhY2suIFRoaXMgaW52ZXN0aWdhdGlvbiB3aWxsIGxlYWQgbWUgdG8gYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIHJlY2VpdmUgcXVldWUgaXMgb3BlbmVkIGFuZCBtYW5hZ2VkIHdpdGhpbiB0aGlzIGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDY1MiwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAyOjI5LjM3MzU2MjcxOVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI4MzYzMDA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ldGlmX21wX29wZW5fcnhxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2NvcmUvZGV2bWVtLmM9MTU0PWludCBuZXRfZGV2bWVtX2JpbmRfZG1hYnVmX3RvX3F1ZXVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHUzMiByeHFfaWR4LFxcbi0tXFxubmV0L2NvcmUvZGV2bWVtLmMtMTY1LVxcbm5ldC9jb3JlL2Rldm1lbS5jOjE2NjpcXHRlcnIgPSBuZXRpZl9tcF9vcGVuX3J4cShkZXYsIHJ4cV9pZHgsIFxcdTAwMjZtcF9wYXJhbXMsIGV4dGFjayk7XFxubmV0L2NvcmUvZGV2bWVtLmMtMTY3LVxcdGlmIChlcnIpXFxuLS1cXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz0xODU9RVhQT1JUX1NZTUJPTF9OU19HUEwobmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnQsIFxcXCJORVRERVZfSU5URVJOQUxcXFwiKTtcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODYtXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTg3OnN0YXRpYyBpbnQgX19uZXRpZl9tcF9vcGVuX3J4cShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcnhxX2lkeCxcXG5uZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYy0xODgtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBwcF9tZW1vcnlfcHJvdmlkZXJfcGFyYW1zICpwLFxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjQ0LVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjI0NTppbnQgbmV0aWZfbXBfb3Blbl9yeHEoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgsXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjQ2LVxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBwcF9tZW1vcnlfcHJvdmlkZXJfcGFyYW1zICpwLFxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjYwLVxcdGlmICghbmV0aWZfcnhxX2lzX2xlYXNlZChkZXYsIHJ4cV9pZHgpKVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjI2MTpcXHRcXHRyZXR1cm4gX19uZXRpZl9tcF9vcGVuX3J4cShkZXYsIHJ4cV9pZHgsIHAsIGV4dGFjayk7XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjYyLVxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMjcyLVxcdG5ldGRldl9sb2NrKGRldik7XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MjczOlxcdHJldCA9IF9fbmV0aWZfbXBfb3Blbl9yeHEoZGV2LCByeHFfaWR4LCBwLCBleHRhY2spO1xcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTI3NC1cXHRuZXRkZXZfdW5sb2NrKGRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAyOjI5LjUwMTkzMTYyNVoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDkwMjYyMjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBuZXRfZGV2bWVtX2JpbmRfZG1hYnVmX3RvX3F1ZXVlYCBJbnRlcmFjdGlvbioqXG5cbk9rYXksIHNvIGBuZXRfZGV2bWVtX2JpbmRfZG1hYnVmX3RvX3F1ZXVlYCBpcyBiZWluZyB0cmlnZ2VyZWQgZnJvbSBuZXRsaW5rLCB3aGljaCBtZWFucyB0aGUgYG5kb19xdWV1ZV9zdGFydGAgZnVuY3Rpb24gY2FuIGJlIGluZGlyZWN0bHkgY2FsbGVkIHRocm91Z2ggYSBkZXZtZW0gYmluZCBvcGVyYXRpb24gaW5pdGlhdGVkIHZpYSBuZXRsaW5rLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGFuZCBwcm92aWRlcyBhIHBvdGVudGlhbCBuZXcgYXR0YWNrIHZlY3RvciBvciBhdCBsZWFzdCBhIG5ldyBwYXRoIGZvciB0cmlnZ2VyaW5nIHRoaXMgZnVuY3Rpb24uIFRoZSBwYXRjaCBpbiBxdWVzdGlvbiBzZWVtcyB0byBiZSBmb2N1c2VkIG9uIG1vZGlmeWluZyB0aGUgYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9kZWxfbmFwaWAgZnVuY3Rpb25zLCBzdWdnZXN0aW5nIGl0J3MgZGlyZWN0bHkgaW1wYWN0aW5nIHRoZSBuZXR3b3JrIHNpbXVsYXRvcidzIHF1ZXVpbmcgb3IgTkFQSSAobmV0d29yayBBUEkpIGhhbmRsaW5nLiBHaXZlbiB0aGUgcG90ZW50aWFsIGltcGFjdCBhbmQgdGhlIGZ1bmN0aW9uYWwgbmF0dXJlIG9mIHRoZSBwYXRjaCwgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhlc2UgY2hhbmdlcyBhcmUgaW5kZWVkIHdvcnRoIHNvbWUgc2VyaW91cyBmdXp6aW5nLiBOb3csIGxldCdzIGp1c3QgY29uZmlybSB0aGUgbmVjZXNzYXJ5IGNvbmZpZyBvcHRpb25zIHRvIGVuYWJsZSBhbmQgd29yayB3aXRoIG5ldGRldnNpbS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGVudmlyb25tZW50IHRvIHNldHVwIHRoZSBmdXp6aW5nIGNvcnJlY3RseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU1MjksIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjozMy41OTIxOTgwMjJaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNjAxNzEwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUREVWU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTYwMj1zb3VyY2UgXFxcImRyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWctNjAzLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6NjA0OmNvbmZpZyBORVRERVZTSU1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTYwNS1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjozMy44MTgyMTkyNzVaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc0NDc4OTU3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDdXJyZW50IFRoaW5raW5nIEFib3V0IHRoZSBOZXRkZXZzaW0gTW9kdWxlKipcblxuT2theSwgc28gSSdtIGZvY3VzaW5nIG9uIGBORVRERVZTSU1gIGFzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBmbGFnLCB0aGF04oCZcyBteSBzdGFydGluZyBwb2ludC4gTm93LCBsZXTigJlzIGRpZyBhIGJpdCBkZWVwZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc2ltdWxhdG9yIGludGVyYWN0cyB3aXRoIHRoZSBuZXR3b3JrIHN0YWNrLiBJIGtub3cgYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCBpcyBpbiBgbmV0L2NvcmUvZGV2LmNgLCBzbyB0aGF04oCZcyBhIHBvdGVudGlhbCBpbnRlcmFjdGlvbiBwb2ludC4gQmFjayB0byBgTkVUREVWU0lNYCBiZWluZyB0aGUgY2VudHJhbCBjb25maWcsIHRoYXQgc2VlbXMgc29saWQuXG5cbkFscmlnaHQsIGxldCdzIHJldmlzaXQgYG5zaW1fcXJlc2V0X3dyaXRlYC4gSXTigJlzIGEgZGVidWdmcyBmaWxlIHdyaXRlLCB3aGljaCBzdWdnZXN0cyBhIHdheSB0byBpbnRlcmFjdCB3aXRoIGFuZCBjb250cm9sIHRoZSBzaW11bGF0b3IuIEFyZSB0aGVyZSBvdGhlciBhcmVhcyBvZiBpbnRlcmVzdD8gYG5zaW1fcXVldWVfc3RhcnRgIGxvb2tzIGxpa2UgYSBrZXkgZnVuY3Rpb24sIGJ1dCBpdCdzIHN0YXRpYywgc28gSSBjYW4ndCBkaXJlY3RseSB0YXJnZXQgaXQuIGBuc2ltX2NyZWF0ZWAgYW5kIGBuc2ltX2Rlc3Ryb3lgIGFyZSBleGNlbGxlbnQgY2FuZGlkYXRlczsgdGhleSBoYW5kbGUgdGhlIGxpZmVjeWNsZSBvZiB0aGUgc2ltdWxhdGVkIGVudGl0eS4gYG5zaW1fZHJ2X3BvcnRfYWRkYCBpcyBhbHNvIHByb21pc2luZywgd2hpY2ggbWF5IGJlIGhvdyB0aGUgc2ltdWxhdGVkIHBvcnQgaXMgaGFuZGxlZC4gSSBuZWVkIHRvIGNvbmZpcm0gYG5zaW1fcXJlc2V0X3dyaXRlYCBpcyBzdGF0aWMuIE9oLCBpdCBpcy4gXG5cbkxldCdzIGNoZWNrIGlmIGBuc2ltX2NyZWF0ZWAgaXMgc3RhdGljLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTk0NywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjozOS41NjMwMTIxNzFaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxNjkyMTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5zaW1fY3JlYXRlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9NDA1PXN0YXRpYyBpbnQgbnNpbV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSwgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy00MTYtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjQxNzpzdGF0aWMgaW50IG5zaW1fY3JlYXRlX3BhZ2VfcG9vbChzdHJ1Y3QgcGFnZV9wb29sICoqcCwgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy00MTgte1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTQzOD1zdGF0aWMgaW50IG5zaW1faW5pdF9uYXBpKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQ1Mi1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6NDUzOlxcdFxcdGVyciA9IG5zaW1fY3JlYXRlX3BhZ2VfcG9vbChcXHUwMDI2cnEtXFx1MDAzZXBhZ2VfcG9vbCwgXFx1MDAyNnJxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNDU0LVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9NzUxPW5zaW1fcXVldWVfbWVtX2FsbG9jKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNzY0LVxcdFxcdFxcdHJldHVybiAtRU5FVERPV047XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjc2NTpcXHRcXHRyZXR1cm4gbnNpbV9jcmVhdGVfcGFnZV9wb29sKFxcdTAwMjZxbWVtLVxcdTAwM2VwcCwgXFx1MDAyNm5zLVxcdTAwM2VycVtpZHhdLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNzY2LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy03NzEtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjc3MjpcXHRlcnIgPSBuc2ltX2NyZWF0ZV9wYWdlX3Bvb2woXFx1MDAyNnFtZW0tXFx1MDAzZXJxLVxcdTAwM2VwYWdlX3Bvb2wsIFxcdTAwMjZxbWVtLVxcdTAwM2VycS1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTc3My1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTExMjI9c3RhdGljIHZvaWQgbnNpbV9leGl0X25ldGRldnNpbShzdHJ1Y3QgbmV0ZGV2c2ltICpucylcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy0xMTI3LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzoxMTI4OnN0cnVjdCBuZXRkZXZzaW0gKm5zaW1fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTExMjktXFx0XFx0XFx0ICAgICAgc3RydWN0IG5zaW1fZGV2X3BvcnQgKm5zaW1fZGV2X3BvcnQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAyOjM5LjYyNDcxMTI1OVoiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzQwMjg2MjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBpbnRlcm5hbCBwcm9jZXNzOlxuXG4qKkludGVybmFsIEFzc2Vzc21lbnQgb2YgTmV0U2ltIERyaXZlciBTdHJ1Y3R1cmUqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgTmV0U2ltIGZ1bmN0aW9ucywgYW5kIHRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGBuc2ltX2NyZWF0ZWAsIGBuc2ltX2Rlc3Ryb3lgLCBhbmQgYG5zaW1fZHJ2X3BvcnRfYWRkYCBhcmVuJ3QgZGVmaW5lZCBhcyBgc3RhdGljYC4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyBhIHBvdGVudGlhbCBkZXNpZ24gY2hhcmFjdGVyaXN0aWM7IHRoZXkncmUgbGlrZWx5IGludGVuZGVkIHRvIGJlIGFjY2Vzc2libGUgb3V0c2lkZSB0aGUgc3BlY2lmaWMgbW9kdWxlIHRoZXkncmUgZGVmaW5lZCBpbi4gVGhhdCBtYWtlcyBzZW5zZSwgZ2l2ZW4gTmV0U2ltJ3Mgb3ZlcmFsbCBwdXJwb3NlOiB0byBzaW11bGF0ZSBuZXR3b3JrIGJlaGF2aW9yIGFuZCBpbnRlcmFjdCB3aXRoIHBvdGVudGlhbGx5IG90aGVyIHBhcnRzIG9mIGEgbGFyZ2VyIHN5c3RlbS5cblxuTm93LCBJIG5lZWQgdG8gc2VlIGlmIHRoZXJlIGlzIGFub3RoZXIgZnVuY3Rpb24gdGhhdCBpcyBhIGNhbmRpZGF0ZSB0byByZXBsYWNlIHNvbWV0aGluZyB0aGF0IGRvZXMgbm90IG5lZWQgdG8gYmUgc3RhdGljLiBIbW0sIGlzIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGAgYSBnb29kIGNhbmRpZGF0ZSB0byB1c2UgYXMgcmVwbGFjZW1lbnQ/IEkgbmVlZCB0byBsb29rIGludG8gdGhpcyBtb3JlIGRlZXBseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcwNTksIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjo0My45NjUwMDA5MDlaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMjkzMjQ1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXRkZXZfcnhfcXVldWVfcmVzdGFydFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9uZXRkZXZfcnhfcXVldWUuYz05OD1zdGF0aWMgaW50IG5ldGRldl9yeF9xdWV1ZV9yZWNvbmZpZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTc3LVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jOjE3ODppbnQgbmV0ZGV2X3J4X3F1ZXVlX3Jlc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHJ4cV9pZHgpXFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTc5LXtcXG4tLVxcbm5ldC9jb3JlL25ldGRldl9yeF9xdWV1ZS5jLTE4NC19XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmM6MTg1OkVYUE9SVF9TWU1CT0xfTlNfR1BMKG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0LCBcXFwiTkVUREVWX0lOVEVSTkFMXFxcIik7XFxubmV0L2NvcmUvbmV0ZGV2X3J4X3F1ZXVlLmMtMTg2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjo0NC4wOTc5Mzg5NTVaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY3NzAyNDMyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIERyaXZlciBSZXN0YXJ0IExvZ2ljKipcblxuQWxyaWdodCwgc28gYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YCBpcyBkZWZpbml0ZWx5IGV4cG9ydGVkLCBnb29kLiBOb3csIGxldCdzIHBpdm90IHRvIGV4YW1pbmUgYG5ldGlmX3F1ZXVlX3NldF9uYXBpYC4gSXQncyBsaWtlbHkgdGhhdCBmdW5jdGlvbiBpcyBpbnZvbHZlZCBpbiBtYW5hZ2luZyB0aGUgaW50ZXJwbGF5IGJldHdlZW4gTkFQSSBhbmQgdGhlIHJlc3RhcnQgbWVjaGFuaXNtLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQncyB1c2VkIHdpdGhpbiB0aGUgYnJvYWRlciBjb250ZXh0IG9mIHRoZSBuZXR3b3JrIGRyaXZlcidzIGludGVycnVwdCBoYW5kbGluZyBhbmQgaG93IGl0J3MgaW5mbHVlbmNpbmcgcXVldWUgc3RhdGUgdHJhbnNpdGlvbnMgd2hlbiBOQVBJIGlzIGVuYWJsZWQsIGdpdmVuIHRoYXQgdGhlIGluaXRpYWwgdGhvdWdodCBjbGVhcmx5IGNvbmZpcm1zIHRoZSBhdmFpbGFiaWxpdHkgb2YgYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YC4gSSBhbnRpY2lwYXRlIHRoYXQgYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCBtaWdodCBiZSBzZXR0aW5nIHVwIHRoZSBOQVBJIGNvbnRleHQgZm9yIHRoZSBxdWV1ZSwgcG9zc2libHkgc2V0dGluZyBvciBjbGVhcmluZyB0aGUgaW50ZXJydXB0IGVuYWJsZSBmbGFncyBmb3IgdGhlIGhhcmR3YXJlLCBvciBtYXliZSBpdCdzIGRvaW5nIHNvbWV0aGluZyBtb3JlIG51YW5jZWQgdG8gc3luY2hyb25pemUgdGhlIHN0YXRlcy4gSSdsbCBmb2N1cyBvbiBob3cgdGhlIGludGVycGxheSBvZiB0aGVzZSB0d28gcm91dGluZXMgZHJpdmVzIHRoZSBjb3JlIGxvZ2ljIGZvciB0aGUgcmVzdGFydC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc1NTcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjo0OC43NzQ5NjcwMTNaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMDAyNzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ldGlmX3F1ZXVlX3NldF9uYXBpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9jb3JlL2Rldi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL2Rldi5jPTcyODk9RVhQT1JUX1NZTUJPTChuZXRpZl90aHJlYWRlZF9lbmFibGUpO1xcbi0tXFxubmV0L2NvcmUvZGV2LmMtNzI5MS0vKipcXG5uZXQvY29yZS9kZXYuYzo3MjkyOiAqIG5ldGlmX3F1ZXVlX3NldF9uYXBpIC0gQXNzb2NpYXRlIHF1ZXVlIHdpdGggdGhlIG5hcGlcXG5uZXQvY29yZS9kZXYuYy03MjkzLSAqIEBkZXY6IGRldmljZSB0byB3aGljaCBOQVBJIGFuZCBxdWV1ZSBiZWxvbmdcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTczMDEtICovXFxubmV0L2NvcmUvZGV2LmM6NzMwMjp2b2lkIG5ldGlmX3F1ZXVlX3NldF9uYXBpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBxdWV1ZV9pbmRleCxcXG5uZXQvY29yZS9kZXYuYy03MzAzLVxcdFxcdFxcdCAgZW51bSBuZXRkZXZfcXVldWVfdHlwZSB0eXBlLCBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGkpXFxuLS1cXG5uZXQvY29yZS9kZXYuYy03MzI0LX1cXG5uZXQvY29yZS9kZXYuYzo3MzI1OkVYUE9SVF9TWU1CT0wobmV0aWZfcXVldWVfc2V0X25hcGkpO1xcbm5ldC9jb3JlL2Rldi5jLTczMjYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAyOjQ4LjgzNjk4MDc5MloiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjQyMTEzODQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCoqXG5cbk9rYXksIHNvIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgaXMgZGVmaW5pdGVseSBhbiBleHBvcnRlZCBmdW5jdGlvbi4gR29vZCwgZ29vZC4gVGhhdCBuYXJyb3dzIGRvd24gbXkgZm9jdXMuIE5vdywgdGhlIGtleSBmdW5jdGlvbnMgdG8gcmVhbGx5IGRpZyBpbnRvIGhlcmUgYXJlOiBgbnNpbV9jcmVhdGVgLCBgbnNpbV9kZXN0cm95YCwgYG5zaW1fZHJ2X3BvcnRfYWRkYCwgYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YCwgYW5kIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAuXG5cbkxldCdzIHNlZSwgbm8sIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgYW5kIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGAgYXJlbid0IGhvdCBwYXRocy4gVGhleSBhcmUgaW52b2x2ZWQgaW4gcXVldWUgc2V0dXAgYW5kIHRlYXJkb3duLCBub3QgdGhlIGNvcmUgZGF0YSBwYXRoLiBUaGF0J3MgYSByZWxpZWYsIGxlc3MgdG8gd29ycnkgYWJvdXQgdGhlcmUuIExldCdzIHJldmlzaXQgYG5zaW1fZHJ2X3BvcnRfYWRkYCAtIEkgc2hvdWxkIGdpdmUgaXQgYW5vdGhlciBsb29rLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODA5NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjo1My40NzkwOTgzODJaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1NDc3OTY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5zaW1fZHJ2X3BvcnRfYWRkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTY1PW5ld19wb3J0X3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtOTUtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjk2OlxcdHJldCA9IG5zaW1fZHJ2X3BvcnRfYWRkKG5zaW1fYnVzX2RldiwgTlNJTV9ERVZfUE9SVF9UWVBFX1BGLCBwb3J0X2luZGV4LFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy05Ny1cXHRcXHRcXHRcXHRhZGRyX3NldCA/IGV0aF9hZGRyIDogTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM9MTgxNz1fX25zaW1fZGV2X3BvcnRfbG9va3VwKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsIGVudW0gbnNpbV9kZXZfcG9ydF90eXBlIHR5cGUsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTgyOC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTgyOTppbnQgbnNpbV9kcnZfcG9ydF9hZGQoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LCBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xODMwLVxcdFxcdCAgICAgIHVuc2lnbmVkIGludCBwb3J0X2luZGV4LCB1OCBwZXJtX2FkZHJbRVRIX0FMRU5dKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oPTM5Mj12b2lkIG5zaW1fZHJ2X3JlbW92ZShzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozOTM6aW50IG5zaW1fZHJ2X3BvcnRfYWRkKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldixcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzk0LVxcdFxcdCAgICAgIGVudW0gbnNpbV9kZXZfcG9ydF90eXBlIHR5cGUsIHVuc2lnbmVkIGludCBwb3J0X2luZGV4LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjo1My41MzQ1ODIzNVoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NzkxNzY2ODc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgY29uc2lkZXJpbmcgbXkgZXhwZXJ0aXNlOlxuXG4qKkZ1enppbmcgRGVidWdmcyB3aXRoIGBuc2ltX3FyZXNldF93cml0ZWAqKlxuXG5SaWdodCwgc28gdGhpcyBmdW5jdGlvbiwgYG5zaW1fcXJlc2V0X3dyaXRlYCwgaXQncyBleHBvcnRlZCBmcm9tIHdpdGhpbiB0aGUgbW9kdWxlLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSG9sZCBvbi4uLiBpc24ndCB0aGlzIGZ1bmN0aW9uICpwYXJ0KiBvZiBkZWJ1Z2ZzLCBhIHdyaXRlIG9wZXJhdGlvbj8gQW5kIGlmIGl0IGlzLi4uICpjb3VsZCogd2UgZnV6eiBkZWJ1Z2ZzIHdyaXRlcz8gVGhhdCdzIHRoZSBxdWVzdGlvbi5cblxuVGhlIGFuc3dlciwgbG9naWNhbGx5LCB3b3VsZCBiZSB0aGF0IHllcywgb2YgY291cnNlLCBzeXprYWxsZXIgKmNhbiogZnV6eiBkZWJ1Z2ZzIHdyaXRlcyBpZiB0aGUgdGFyZ2V0IGZpbGUgaXMga25vd24uIFRoZSBpc3N1ZSwgYXMgYWx3YXlzLCB3aWxsIGJlIHRoZSBtZWFucyBvZiBkaXNjb3ZlcnkuIFRoaXMgd291bGQgYmUgYSBwZXJmZWN0IG9wcG9ydHVuaXR5LCBhbmQgYW4gZXhjaXRpbmcgdmVjdG9yLCBpZiBvbmx5IHdlIGNvdWxkIGZpbmQgYSB3YXkuXG5cblRoZSBwcm9ibGVtLCBhcyBJIHJlY2FsbCBmcm9tIG15IHByZXZpb3VzIHJlc2VhcmNoLCBpcyB0aGF0IHdlIGNhbid0IGp1c3QgYWRkIHN0YXRpYyBmdW5jdGlvbnMgdG8gdGhlIGBGb2N1c1N5bWJvbHNgIGxpc3QsIHNvIHRoYXQncyBhIGRlYWQgZW5kLiBXZSBuZWVkIGEgd2F5IHRvIGluc3RydW1lbnQgdGhpcyBmdXJ0aGVyLCBidXQgdGhlIG1lYW5zIG9mIGRvaW5nIHNvIGlzIG5vdCBpbW1lZGlhdGVseSBjbGVhci5cblxuU28sIGxldCdzIGJhY2sgdXAgYSBzdGVwLiBMZXQncyBzZWUgaWYgd2UgY2FuIGdldCBhIGhhbmRsZSBvbiBpdC4gTGV0J3Mgc3RhcnQgd2l0aCBhIHRob3JvdWdoIGNoZWNrIG9mIHRoZSBtb2R1bGUsIHNwZWNpZmljYWxseSBgbnNpbV9kcnZfcG9ydF9hZGRgIGFuZCBgbnNpbV9kcnZfcG9ydF9kZWxgLiBQZXJoYXBzIHRoZXJlJ3MgYW4gb2J2aW91cyBsaW5rIHdlIGNhbiB0cmFjZSB0aGF0IHdlJ3ZlIG1pc3NlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg4OTIsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjo1OS4zMjYzNTI4MDZaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4ODk4OTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5zaW1fZHJ2X3BvcnRfZGVsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTEwND1kZWxfcG9ydF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTExNy1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTE4OlxcdHJldCA9IG5zaW1fZHJ2X3BvcnRfZGVsKG5zaW1fYnVzX2RldiwgTlNJTV9ERVZfUE9SVF9UWVBFX1BGLCBwb3J0X2luZGV4KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTE5LVxcdHJldHVybiByZXQgPyByZXQgOiBjb3VudDtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYz0xODI5PWludCBuc2ltX2Rydl9wb3J0X2FkZChzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsIGVudW0gbnNpbV9kZXZfcG9ydF90eXBlIHR5cGUsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTg0My1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTg0NDppbnQgbnNpbV9kcnZfcG9ydF9kZWwoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LCBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xODQ1LVxcdFxcdCAgICAgIHVuc2lnbmVkIGludCBwb3J0X2luZGV4KVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oPTM5Mz1pbnQgbnNpbV9kcnZfcG9ydF9hZGQoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM5NS1cXHRcXHQgICAgICB1OCBwZXJtX2FkZHJbRVRIX0FMRU5dKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mzk2OmludCBuc2ltX2Rydl9wb3J0X2RlbChzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM5Ny1cXHRcXHQgICAgICBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMjo1OS40MDUyNTU4NTRaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ4MjMzNzA1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBOZXRkZXZzaW0gRHJpdmVyIEZvY3VzIFN5bWJvbHMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBuc2ltX2Rydl9wb3J0X2RlbGAgaXMgaW5kZWVkIGFuIGV4cG9ydGVkIHN5bWJvbC4gVGhhdCdzIGdvb2QuXG5cblRoZXJlZm9yZSwgbXkgbGlzdCBvZiBcIkZvY3VzU3ltYm9sc1wiIOKAkyB0aGUga2V5IGZ1bmN0aW9ucyBkcml2aW5nIG15IGFuYWx5c2lzIG9mIHRoZSBgbmV0ZGV2c2ltYCBkcml2ZXIg4oCTIG5lZWRzIHRvIGluY2x1ZGU6XG5cbiogICBgbnNpbV9jcmVhdGVgXG4qICAgYG5zaW1fZGVzdHJveWBcbiogICBgbnNpbV9kcnZfcG9ydF9hZGRgXG4qICAgYG5zaW1fZHJ2X3BvcnRfZGVsYFxuKiAgIGBuZXRkZXZfcnhfcXVldWVfcmVzdGFydGBcbiogICBgbmV0aWZfcXVldWVfc2V0X25hcGlgXG5cbk5vdywgbGV0IG1lIGp1c3QgY29uZmlybSB0aGUgc3VpdGFiaWxpdHkgb2YgYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCBhbmQgYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YC4gQm90aCBhcmUgY2xlYXJseSBBUEkgZnVuY3Rpb25zOyBzbyB0aGV5J3JlIGdvb2QgY2FuZGlkYXRlcyBmb3IgdGhlIGFuYWx5c2lzLlxuXG5GaW5hbGx5LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55IGNvbmZpZ3VyYXRpb25zLiBBbHJpZ2h0LCBhIHF1aWNrIGNoZWNrIHRlbGxzIG1lIHRoYXQgYE5FVERFVlNJTWAgaXMgaW5kZWVkIHRoZSBwcmltYXJ5IGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBgbmV0ZGV2c2ltYCBkcml2ZXIuIEknbGwgbmVlZCB0byByZW1lbWJlciB0aGF0LiBMZXQgbWUganVzdCBzY2FuIGFnYWluIGZvciBhbnkgb3RoZXIgcG90ZW50aWFsbHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NzcxLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAzOjAzLjg4NzU5NjgxOVoiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU2MzU5NzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRERVZTSU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9NjAyPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MDMtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDQ6Y29uZmlnIE5FVERFVlNJTVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAzOjA0LjM0Mzk2NjE1NVoiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjcyMTI5ODkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRlcGVuZGVuY3kgRGVlcCBEaXZlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYE5FVERFVlNJTWAuIEJlZm9yZSBJIGdldCBpbnRvIGFueXRoaW5nIHNwZWNpZmljLCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBtYXAgb3V0IHRoZSBkZXBlbmRlbmN5IGdyYXBoLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgdGhpbmcgbGVhbnMgb24uIFdoYXQgYXJlIHRoZSBjb3JlIGxpYnJhcmllcywgdGhlIHN1cHBvcnRpbmcgbW9kdWxlcywgdGhlIGV4dGVybmFsIEFQSXMgaXQncyBjYWxsaW5nPyBXaGF0IHZlcnNpb25zIGFyZSBzcGVjaWZpZWQsIGFuZCB3aGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRob3NlIHZlcnNpb24gY29uc3RyYWludHM/IEEgY29tcHJlaGVuc2l2ZSBkZXBlbmRlbmN5IGNoZWNrIGlzIGNydWNpYWwgaGVyZS4gQXJlIHRoZXJlIGFueSBrbm93biB2dWxuZXJhYmlsaXRpZXMgaW4gYW55IG9mIHRoZSBpbW1lZGlhdGUgb3IgdHJhbnNpdGl2ZSBkZXBlbmRlbmNpZXM/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyB0aGF0IG1pZ2h0IGFyaXNlIGRvd24gdGhlIGxpbmUgd2l0aCBvdGhlciBjb21wb25lbnRzIGluIHRoZSBzeXN0ZW0sIG9yIHdpdGggcGxhbm5lZCBmdXR1cmUgaW50ZWdyYXRpb24gd29yaz8gVGhpcyBpc24ndCBqdXN0IGFib3V0IGVuc3VyaW5nIHRoZSBjb2RlIGNvbXBpbGVzOyBpdCdzIGFib3V0IGFudGljaXBhdGluZyBwb3RlbnRpYWwgcnVudGltZSBpc3N1ZXMgYW5kIGVuc3VyaW5nIGxvbmctdGVybSBtYWludGFpbmFiaWxpdHkgYW5kIHNlY3VyaXR5LiBMZXQncyBzZWUgaG93IGRlZXAgdGhpcyByYWJiaXQgaG9sZSBnb2VzLiBJIHdhbnQgdG8gYnVpbGQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyBmb3VuZGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDM0NCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAzOjEwLjYxNjA5OTA3NloiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAyODIwNjI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnPTY9bWVudWNvbmZpZyBORVRERVZJQ0VTXFxuZHJpdmVycy9uZXQvS2NvbmZpZy03LVxcdGRlZmF1bHQgeSBpZiBVTUxcXG5kcml2ZXJzL25ldC9LY29uZmlnOjg6XFx0ZGVwZW5kcyBvbiBORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTktXFx0Ym9vbCBcXFwiTmV0d29yayBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDE9Y29uZmlnIEJPTkRJTkdcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQyLVxcdHRyaXN0YXRlIFxcXCJCb25kaW5nIGRyaXZlciBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDM6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NDpcXHRkZXBlbmRzIG9uIFRMUyB8fCBUTFNfREVWSUNFPW5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NzQ9Y29uZmlnIFdJUkVHVUFSRFxcbmRyaXZlcnMvbmV0L0tjb25maWctNzUtXFx0dHJpc3RhdGUgXFxcIldpcmVHdWFyZCBzZWN1cmUgbmV0d29yayB0dW5uZWxcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo3NjpcXHRkZXBlbmRzIG9uIE5FVCBcXHUwMDI2XFx1MDAyNiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy03Ny1cXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9OTI9Y29uZmlnIFdJUkVHVUFSRF9ERUJVR1xcbmRyaXZlcnMvbmV0L0tjb25maWctOTMtXFx0Ym9vbCBcXFwiRGVidWdnaW5nIGNoZWNrcyBhbmQgdmVyYm9zZSBtZXNzYWdlc1xcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjk0OlxcdGRlcGVuZHMgb24gV0lSRUdVQVJEXFxuZHJpdmVycy9uZXQvS2NvbmZpZy05NS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTEwMz1jb25maWcgT1ZQTlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTA0LVxcdHRyaXN0YXRlIFxcXCJPcGVuVlBOIGRhdGEgY2hhbm5lbCBvZmZsb2FkXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTA1OlxcdGRlcGVuZHMgb24gTkVUIFxcdTAwMjZcXHUwMDI2IElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTEwNi1cXHRzZWxlY3QgRFNUX0NBQ0hFXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTEzNj1jb25maWcgTkVUX0ZDXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMzctXFx0Ym9vbCBcXFwiRmlicmUgQ2hhbm5lbCBkcml2ZXIgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjEzODpcXHRkZXBlbmRzIG9uIFNDU0kgXFx1MDAyNlxcdTAwMjYgUENJXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xMzktXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0xNDk9Y29uZmlnIElGQlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTUwLVxcdHRyaXN0YXRlIFxcXCJJbnRlcm1lZGlhdGUgRnVuY3Rpb25hbCBCbG9jayBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTUxOlxcdGRlcGVuZHMgb24gTkVUX0FDVF9NSVJSRUQgfHwgTkZUX0ZXRF9ORVRERVZcXG5kcml2ZXJzL25ldC9LY29uZmlnLTE1Mi1cXHRzZWxlY3QgTkVUX1JFRElSRUNUXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTE3OT1jb25maWcgTUFDVlRBUFxcbmRyaXZlcnMvbmV0L0tjb25maWctMTgwLVxcdHRyaXN0YXRlIFxcXCJNQUMtVkxBTiBiYXNlZCB0YXAgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTgxOlxcdGRlcGVuZHMgb24gTUFDVkxBTlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTgyOlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMTgzLVxcdHNlbGVjdCBUQVBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MTkzPWNvbmZpZyBJUFZMQU5fTDNTXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoxOTQ6XFx0ZGVwZW5kcyBvbiBORVRGSUxURVJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5NTpcXHRkZXBlbmRzIG9uIElQVkxBTlxcbmRyaXZlcnMvbmV0L0tjb25maWctMTk2LVxcdGRlZl9ib29sIHlcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MTk5PWNvbmZpZyBJUFZMQU5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiSVAtVkxBTiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjAxOlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjAyLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MjE2PWNvbmZpZyBJUFZUQVBcXG5kcml2ZXJzL25ldC9LY29uZmlnLTIxNy1cXHR0cmlzdGF0ZSBcXFwiSVAtVkxBTiBiYXNlZCB0YXAgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjE4OlxcdGRlcGVuZHMgb24gSVBWTEFOXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyMTk6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMjAtXFx0c2VsZWN0IFRBUFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yMzA9Y29uZmlnIFZYTEFOXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMzEtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgZVh0ZW5zaWJsZSBMb2NhbCBBcmVhIE5ldHdvcmsgKFZYTEFOKVxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjIzMjpcXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTIzMy1cXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MjQ1PWNvbmZpZyBHRU5FVkVcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI0Ni1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBOZXR3b3JrIFZpcnR1YWxpemF0aW9uIEVuY2Fwc3VsYXRpb25cXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyNDc6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNDgtXFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTI2MD1jb25maWcgQkFSRVVEUFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjYxLVxcdHRyaXN0YXRlIFxcXCJCYXJlIFVEUCBFbmNhcHN1bGF0aW9uXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjYyOlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjYzLVxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yNzI9Y29uZmlnIEdUUFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjczLVxcdHRyaXN0YXRlIFxcXCJHUFJTIFR1bm5lbGluZyBQcm90b2NvbCBkYXRhcGF0aCAoR1RQLVUpXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6Mjc0OlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMjc1LVxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0yODk9Y29uZmlnIFBGQ1BcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI5MC1cXHR0cmlzdGF0ZSBcXFwiUGFja2V0IEZvcndhcmRpbmcgQ29udHJvbCBQcm90b2NvbCAoUEZDUClcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoyOTE6XFx0ZGVwZW5kcyBvbiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yOTItXFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTMwMj1jb25maWcgQU1UXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMDMtXFx0dHJpc3RhdGUgXFxcIkF1dG9tYXRpYyBNdWx0aWNhc3QgVHVubmVsaW5nIChBTVQpXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzA0OlxcdGRlcGVuZHMgb24gSU5FVCBcXHUwMDI2XFx1MDAyNiBJUF9NVUxUSUNBU1RcXG5kcml2ZXJzL25ldC9LY29uZmlnLTMwNS1cXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MzI3PWNvbmZpZyBORVRDT05TT0xFXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMjgtXFx0dHJpc3RhdGUgXFxcIk5ldHdvcmsgY29uc29sZSBsb2dnaW5nIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozMjk6XFx0ZGVwZW5kcyBvbiBQUklOVEtcXG5kcml2ZXJzL25ldC9LY29uZmlnLTMzMC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTMzND1jb25maWcgTkVUQ09OU09MRV9EWU5BTUlDXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMzUtXFx0Ym9vbCBcXFwiRHluYW1pYyByZWNvbmZpZ3VyYXRpb24gb2YgbG9nZ2luZyB0YXJnZXRzXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzM2OlxcdGRlcGVuZHMgb24gTkVUQ09OU09MRSBcXHUwMDI2XFx1MDAyNiBTWVNGUyBcXHUwMDI2XFx1MDAyNiBDT05GSUdGU19GUyBcXHUwMDI2XFx1MDAyNiBcXFxcXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zMzctXFx0XFx0XFx0IShORVRDT05TT0xFPXkgXFx1MDAyNlxcdTAwMjYgQ09ORklHRlNfRlM9bSlcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MzQ1PWNvbmZpZyBORVRDT05TT0xFX0VYVEVOREVEX0xPR1xcbmRyaXZlcnMvbmV0L0tjb25maWctMzQ2LVxcdGJvb2wgXFxcIlNldCBrZXJuZWwgZXh0ZW5kZWQgbWVzc2FnZSBieSBkZWZhdWx0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzQ3OlxcdGRlcGVuZHMgb24gTkVUQ09OU09MRVxcbmRyaXZlcnMvbmV0L0tjb25maWctMzQ4LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNTU9Y29uZmlnIE5FVENPTlNPTEVfUFJFUEVORF9SRUxFQVNFXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNTYtXFx0Ym9vbCBcXFwiUHJlcGVuZCBrZXJuZWwgcmVsZWFzZSB2ZXJzaW9uIGluIHRoZSBtZXNzYWdlIGJ5IGRlZmF1bHRcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozNTc6XFx0ZGVwZW5kcyBvbiBORVRDT05TT0xFX0VYVEVOREVEX0xPR1xcbmRyaXZlcnMvbmV0L0tjb25maWctMzU4LVxcdGRlZmF1bHQgblxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNzM9Y29uZmlnIE5UQl9ORVRERVZcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM3NC1cXHR0cmlzdGF0ZSBcXFwiVmlydHVhbCBFdGhlcm5ldCBvdmVyIE5UQiBUcmFuc3BvcnRcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozNzU6XFx0ZGVwZW5kcyBvbiBOVEJfVFJBTlNQT1JUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNzYtXFxuZHJpdmVycy9uZXQvS2NvbmZpZz0zNzc9Y29uZmlnIFJJT05FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctMzc4LVxcdHRyaXN0YXRlIFxcXCJSYXBpZElPIEV0aGVybmV0IG92ZXIgbWVzc2FnaW5nIGRyaXZlciBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6Mzc5OlxcdGRlcGVuZHMgb24gUkFQSURJT1xcbmRyaXZlcnMvbmV0L0tjb25maWctMzgwLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9MzgxPWNvbmZpZyBSSU9ORVRfVFhfU0laRVxcbmRyaXZlcnMvbmV0L0tjb25maWctMzgyLVxcdGludCBcXFwiTnVtYmVyIG9mIG91dGJvdW5kIHF1ZXVlIGVudHJpZXNcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozODM6XFx0ZGVwZW5kcyBvbiBSSU9ORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4NC1cXHRkZWZhdWx0IFxcXCIxMjhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTM4Nj1jb25maWcgUklPTkVUX1JYX1NJWkVcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4Ny1cXHRpbnQgXFxcIk51bWJlciBvZiBpbmJvdW5kIHF1ZXVlIGVudHJpZXNcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzozODg6XFx0ZGVwZW5kcyBvbiBSSU9ORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM4OS1cXHRkZWZhdWx0IFxcXCIxMjhcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTM5MT1jb25maWcgVFVOXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zOTItXFx0dHJpc3RhdGUgXFxcIlVuaXZlcnNhbCBUVU4vVEFQIGRldmljZSBkcml2ZXIgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjM5MzpcXHRkZXBlbmRzIG9uIElORVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTM5NC1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDQzPWNvbmZpZyBWSVJUSU9fTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDQtXFx0dHJpc3RhdGUgXFxcIlZpcnRpbyBuZXR3b3JrIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ0NTpcXHRkZXBlbmRzIG9uIFZJUlRJT1xcbmRyaXZlcnMvbmV0L0tjb25maWctNDQ2LVxcdHNlbGVjdCBORVRfRkFJTE9WRVJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDYzPWNvbmZpZyBORVRLSVRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ2NC1cXHRib29sIFxcXCJCUEYtcHJvZ3JhbW1hYmxlIG5ldHdvcmsgZGV2aWNlXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDY1OlxcdGRlcGVuZHMgb24gQlBGX1NZU0NBTExcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ2Ni1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTQ3Mj1jb25maWcgTkVUX1ZSRlxcbmRyaXZlcnMvbmV0L0tjb25maWctNDczLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIFJvdXRpbmcgYW5kIEZvcndhcmRpbmcgKExpdGUpXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc0OlxcdGRlcGVuZHMgb24gSVBfTVVMVElQTEVfVEFCTEVTXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0NzU6XFx0ZGVwZW5kcyBvbiBORVRfTDNfTUFTVEVSX0RFVlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NDc2OlxcdGRlcGVuZHMgb24gSVBWNl9NVUxUSVBMRV9UQUJMRVMgfHwgSVBWNj1uXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NzctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz00ODE9Y29uZmlnIFZTT0NLTU9OXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00ODItXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgdnNvY2sgbW9uaXRvcmluZyBkZXZpY2VcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo0ODM6XFx0ZGVwZW5kcyBvbiBWSE9TVF9WU09DS1xcbmRyaXZlcnMvbmV0L0tjb25maWctNDg0LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NDg5PWNvbmZpZyBNSElfTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZy00OTAtXFx0dHJpc3RhdGUgXFxcIk1ISSBuZXR3b3JrIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ5MTpcXHRkZXBlbmRzIG9uIE1ISV9CVVNcXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ5Mi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTU0ND1jb25maWcgWEVOX05FVERFVl9GUk9OVEVORFxcbmRyaXZlcnMvbmV0L0tjb25maWctNTQ1LVxcdHRyaXN0YXRlIFxcXCJYZW4gbmV0d29yayBkZXZpY2UgZnJvbnRlbmQgZHJpdmVyXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWc6NTQ2OlxcdGRlcGVuZHMgb24gWEVOXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01NDctXFx0c2VsZWN0IFhFTl9YRU5CVVNfRlJPTlRFTkRcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NTYyPWNvbmZpZyBYRU5fTkVUREVWX0JBQ0tFTkRcXG5kcml2ZXJzL25ldC9LY29uZmlnLTU2My1cXHR0cmlzdGF0ZSBcXFwiWGVuIGJhY2tlbmQgbmV0d29yayBkZXZpY2VcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1NjQ6XFx0ZGVwZW5kcyBvbiBYRU5fQkFDS0VORFxcbmRyaXZlcnMvbmV0L0tjb25maWctNTY1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWc9NTg0PWNvbmZpZyBWTVhORVQzXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01ODUtXFx0dHJpc3RhdGUgXFxcIlZNd2FyZSBWTVhORVQzIGV0aGVybmV0IGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnOjU4NjpcXHRkZXBlbmRzIG9uIFBDSSBcXHUwMDI2XFx1MDAyNiBJTkVUXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1ODc6XFx0ZGVwZW5kcyBvbiBQQUdFX1NJWkVfTEVTU19USEFOXzY0S0JcXG5kcml2ZXJzL25ldC9LY29uZmlnLTU4OC1cXHRzZWxlY3QgUEFHRV9QT09MXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnPTU5ND1jb25maWcgRlVKSVRTVV9FU1xcbmRyaXZlcnMvbmV0L0tjb25maWctNTk1LVxcdHRyaXN0YXRlIFxcXCJGVUpJVFNVIEV4dGVuZGVkIFNvY2tldCBOZXR3b3JrIERldmljZSBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo1OTY6XFx0ZGVwZW5kcyBvbiBBQ1BJXFxuZHJpdmVycy9uZXQvS2NvbmZpZy01OTctXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvS2NvbmZpZz02MDQ9Y29uZmlnIE5FVERFVlNJTVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDY6XFx0ZGVwZW5kcyBvbiBERUJVR19GU1xcbmRyaXZlcnMvbmV0L0tjb25maWc6NjA3OlxcdGRlcGVuZHMgb24gSU5FVFxcbmRyaXZlcnMvbmV0L0tjb25maWc6NjA4OlxcdGRlcGVuZHMgb24gUFNBTVBMRSB8fCBQU0FNUExFPW5cXG5kcml2ZXJzL25ldC9LY29uZmlnOjYwOTpcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX01PQ0sgfHwgUFRQXzE1ODhfQ0xPQ0tfTU9DSz1uXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MTAtXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAzOjEwLjcxODkyNzYxM1oiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDM0MTMwMDMzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBOZXRkZXZzaW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGlzIGBORVRERVZTSU1gIG1vZHVsZSBpcyB0aGUgY29yZSBvZiB0aGlzIHNpbXVsYXRlZCBuZXR3b3JraW5nIGRldmljZSBkcml2ZXIuIEl0IGxvb2tzIGxpa2UgaXQgcmVsaWVzIG9uIGEgZmV3IG90aGVyIGNvbXBvbmVudHM6IGBERUJVR19GU2AsIGBJTkVUYCwgYW5kIHRoZW4gb3B0aW9uYWxseSBgUFNBTVBMRWAgYW5kIGBQVFBfMTU4OF9DTE9DS19NT0NLYC4gUmlnaHQsIGBORVRERVZTSU1gICppcyogdGhlIGtleSBjb25maWcgb3B0aW9uIGhlcmUuXG5cbkxldCBtZSBqdXN0IGNvbmZpcm3igKYgWWVwLCBsb29rcyBsaWtlIGVuYWJsaW5nIGBORVRERVZTSU1gIGlzIHRoZSBzaW5nbGUgcG9pbnQgb2YgZW50cnkgdG8gdXNlIHRoZSBlbXVsYXRlZCBkZXZpY2UuXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLlxuXG4qICAgKipGdXp6aW5nIFBvdGVudGlhbDoqKiBUaGlzIGlzIGRlZmluaXRlbHkgc29tZXRoaW5nIEkgd2FudCB0byBmdXp6LiBCYXNlZCBvbiB0aGUgY2hhbmdlcywgdGhpcyBpcyBnb2luZyB0byBiZSBoaWdoIHZhbHVlLlxuKiAgICoqS2V5IFN5bWJvbHMgdG8gVGFyZ2V0OioqIEknbSBnb2luZyB0byB3YW50IHRvIGZvY3VzIGluIG9uOiBgbnNpbV9jcmVhdGVgLCBgbnNpbV9kZXN0cm95YCwgYG5zaW1fZHJ2X3BvcnRfYWRkYCwgYG5zaW1fZHJ2X3BvcnRfZGVsYCwgYG5ldGRldl9yeF9xdWV1ZV9yZXN0YXJ0YCwgYW5kIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHJlc3BvbnNpYmxlIGZvciBkZXZpY2UgY3JlYXRpb24vZGVzdHJ1Y3Rpb24sIHBvcnQgbWFuYWdlbWVudCwgcXVldWUgcmVzdGFydCwgYW5kIE5BUEkgYXNzb2NpYXRpb24uIFRoZXkgYXJlIGNyaXRpY2FsIGVudHJ5IHBvaW50cyB0byBjb3ZlciB0aGUgTkFQSSBjaGFuZ2VzLlxuKiAgICoqQ29uZmlndXJhdGlvbjoqKiBUaGUgcGF0Y2ggcmVxdWlyZXMgYE5FVERFVlNJTWAuXG4qICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIG1vZGlmaWVzIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fZGVsX25hcGlgIHRvIG1hbmFnZSBOQVBJIGluc3RhbmNlcyB3aXRoIFJYIHF1ZXVlcyB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGlgLiBUaGlzIGBuZXRkZXZzaW1gIGRyaXZlciBpcyBzb2Z0d2FyZS1lbXVsYXRlZCwgb2Z0ZW4gdXNlZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEl0IGFmZmVjdHMgcXVldWUgbWFuYWdlbWVudCBhbmQgdGhlIE5BUEkgbGlmZWN5Y2xlLiBJdCBsb29rcyBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQsIHdoaWNoIG1ha2VzIGl0IGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFRoZSBrZXkgZnVuY3Rpb25zIEkgbWVudGlvbmVkIGFib3ZlIGFyZSB0aGUgbW9zdCBpbXBvcnRhbnQgZnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUuIEkgc2hvdWxkIGdldCBhIGxvdCBvZiBjb2RlIGNvdmVyYWdlIG91dCBvZiB0aGVzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjM1OTIsIk91dHB1dFRva2VucyI6MjE0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAzOjIxLjA2MDIzMjk0MloiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTI0MTAwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUREVWU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnNpbV9jcmVhdGVcIixcbiAgICBcIm5zaW1fZGVzdHJveVwiLFxuICAgIFwibnNpbV9kcnZfcG9ydF9hZGRcIixcbiAgICBcIm5zaW1fZHJ2X3BvcnRfZGVsXCIsXG4gICAgXCJuZXRkZXZfcnhfcXVldWVfcmVzdGFydFwiLFxuICAgIFwibmV0aWZfcXVldWVfc2V0X25hcGlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX2RlbF9uYXBpYCBpbiB0aGUgbmV0ZGV2c2ltIGRyaXZlciB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIGluc3RhbmNlcyB3aXRoIFJYIHF1ZXVlcyB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGlgLiBOZXRkZXZzaW0gaXMgYSBzb2Z0d2FyZS1lbXVsYXRlZCBuZXR3b3JrIGRldmljZSB1c2VkIGZvciB0ZXN0aW5nIGFuZCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgY2hhbmdlcyBhZmZlY3QgcXVldWUgbWFuYWdlbWVudCBhbmQgTkFQSSBsaWZlY3ljbGUsIHdoaWNoIGFyZSBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgYW5kIHdvcnRoIGZ1enppbmcuIEZvY3VzIHN5bWJvbHMgaW5jbHVkZSB0aGUgbmV0ZGV2c2ltIGNyZWF0aW9uL2Rlc3RydWN0aW9uIGFuZCBwb3J0IG1hbmFnZW1lbnQgZnVuY3Rpb25zLCBhcyB3ZWxsIGFzIHRoZSBxdWV1ZSByZXN0YXJ0IGFuZCBOQVBJIGFzc29jaWF0aW9uIEFQSSBmdW5jdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUREVWU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnNpbV9jcmVhdGVcIixcbiAgICBcIm5zaW1fZGVzdHJveVwiLFxuICAgIFwibnNpbV9kcnZfcG9ydF9hZGRcIixcbiAgICBcIm5zaW1fZHJ2X3BvcnRfZGVsXCIsXG4gICAgXCJuZXRkZXZfcnhfcXVldWVfcmVzdGFydFwiLFxuICAgIFwibmV0aWZfcXVldWVfc2V0X25hcGlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX2RlbF9uYXBpYCBpbiB0aGUgbmV0ZGV2c2ltIGRyaXZlciB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIGluc3RhbmNlcyB3aXRoIFJYIHF1ZXVlcyB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGlgLiBOZXRkZXZzaW0gaXMgYSBzb2Z0d2FyZS1lbXVsYXRlZCBuZXR3b3JrIGRldmljZSB1c2VkIGZvciB0ZXN0aW5nIGFuZCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgY2hhbmdlcyBhZmZlY3QgcXVldWUgbWFuYWdlbWVudCBhbmQgTkFQSSBsaWZlY3ljbGUsIHdoaWNoIGFyZSBmdW5jdGlvbmFsbHkgc2lnbmlmaWNhbnQgYW5kIHdvcnRoIGZ1enppbmcuIEZvY3VzIHN5bWJvbHMgaW5jbHVkZSB0aGUgbmV0ZGV2c2ltIGNyZWF0aW9uL2Rlc3RydWN0aW9uIGFuZCBwb3J0IG1hbmFnZW1lbnQgZnVuY3Rpb25zLCBhcyB3ZWxsIGFzIHRoZSBxdWV1ZSByZXN0YXJ0IGFuZCBOQVBJIGFzc29jaWF0aW9uIEFQSSBmdW5jdGlvbnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAzOjIxLjIxNTQ4MTkzOFoiLCJTZXEiOjU1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM3MzQ2ODA2MjUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMzoyMS4yMTYwMTQ3ODhaIiwiU2VxIjo1NiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTM3MzQxNDA2MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRkZXZzaW0gZHJpdmVyIHRvIGNvcnJlY3RseSBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIGluc3RhbmNlcyB3aXRoIFJYIHF1ZXVlcyB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGkoKWAuIFRoZXNlIGNoYW5nZXMgb25seSBpbnZvbHZlIHNldHRpbmcgYSBwb2ludGVyIGluIHRoZSBxdWV1ZSBzdHJ1Y3R1cmUgdG8gdHJhY2sgdGhlIE5BUEkgY29udGV4dC4gVGhlcmUgYXJlIG5vIG1vZGlmaWNhdGlvbnMgdG8gZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm8gbmV3IGFsbG9jYXRpb25zIG9mIGNvbXBsZXggc3RydWN0dXJlcywgYW5kIG5vIGNoYW5nZXMgdG8gZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIG9yIGJvdW5kcyBjaGVja3MuIFRoZSByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIG5vbi1leGlzdGVudC4gQW55IHBvdGVudGlhbCBpc3N1ZXMgYXJpc2luZyBmcm9tIHRoZXNlIGNoYW5nZXMsIHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgbnVsbC1wb2ludGVyIGRlcmVmZXJlbmNlcywgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjFlMmIzYzM0YmQzNWQ0NmQyMWQ3YWZiNTZmMjU4NzUzNWY2YzNkNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDE3IDA5OjAxOjA1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jIGIvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jXG5pbmRleCA0ZTlkN2UxMGI1MjdlLi5iNGE5OWYzY2VhYzYwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jXG4rKysgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcbkBAIC01MjksNiArNTI5LDcgQEAgc3RhdGljIHZvaWQgbnNpbV9kZWxfbmFwaShzdHJ1Y3QgbmV0ZGV2c2ltICpucylcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRldi1cdTAwM2VudW1fcnhfcXVldWVzOyBpKyspIHtcbiBcdFx0c3RydWN0IG5zaW1fcnEgKnJxID0gbnMtXHUwMDNlcnFbaV07XG4gXG4rXHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuIFx0XHRuYXBpX2Rpc2FibGVfbG9ja2VkKFx1MDAyNnJxLVx1MDAzZW5hcGkpO1xuIFx0XHRfX25ldGlmX25hcGlfZGVsX2xvY2tlZChcdTAwMjZycS1cdTAwM2VuYXBpKTtcbiBcdH1cbkBAIC04MjYsNiArODI3LDcgQEAgbnNpbV9xdWV1ZV9zdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX2NvbmZpZyAqcWNmZyxcbiBcdH1cbiBcbiBcdG5zLVx1MDAzZXJxW2lkeF0gPSBxbWVtLVx1MDAzZXJxO1xuK1x0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuIFx0bmFwaV9lbmFibGVfbG9ja2VkKFx1MDAyNm5zLVx1MDAzZXJxW2lkeF0tXHUwMDNlbmFwaSk7XG4gXG4gXHRyZXR1cm4gMDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE3VDA5OjAzOjIxLjIxNjAyMDAyOFoiLCJTZXEiOjU3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzExNDEwMjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBOQVBJIFF1ZXVlIEFzc29jaWF0aW9uIENoYW5nZXMqKlxuXG5Pa2F5LCBzbyB0aGUgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY2AsIHNwZWNpZmljYWxseSBhcm91bmQgTkFQSSBxdWV1ZSBtYW5hZ2VtZW50LiBJIHNlZSB0aGV5J3JlIGFkZGluZyBgbmV0aWZfcXVldWVfc2V0X25hcGlgIGNhbGxzIOKAkyBvbmUgaW4gYG5zaW1fZGVsX25hcGlgIGFuZCBhbm90aGVyIGluIGBuc2ltX3F1ZXVlX3N0YXJ0YC4gVGhlIGZpcnN0IG9uZSBzZXRzIHRoZSBOQVBJIGNvbnRleHQgdG8gTlVMTCBhbmQgdGhlIHNlY29uZCBzZXRzIGl0IHRvIHRoZSBhZGRyZXNzIG9mIHRoZSBuYXBpIHN0cnVjdHVyZS4gSW1tZWRpYXRlbHksIG15IGNvbmNlcm4gaXMgd2hldGhlciB0aGVzZSBjaGFuZ2VzIGNvdWxkIGludHJvZHVjZSBzb21lIHN1YnRsZSB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuIFRoYXQncyBhbHdheXMgYSBwb3NzaWJpbGl0eSB3aXRoIHBvaW50ZXIgbWFuaXB1bGF0aW9uLCBidXQgbGV0J3MgZGlnIGRlZXBlci5cblxuUmlnaHQsIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgaXRzZWxmLCBmcm9tIG15IHVuZGVyc3RhbmRpbmcsIGlzIGp1c3Qgc2V0dGluZyBhIHBvaW50ZXIgd2l0aGluIHRoZSBxdWV1ZSBzdHJ1Y3R1cmUuIFRoYXTigJlzIG5vdCBhIEtNU0FOIGtpbmQgb2YgdGhpbmc7IEtNU0FOIHJlYWxseSBuYWlscyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2UuIFdoYXQgSSdtIHRoaW5raW5nIGhlcmUgYXJlIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBzY2VuYXJpb3MsIG9yIG1heWJlIGEgbnVsbC1wb2ludGVyIGRlcmVmZXJlbmNlLCBvciBwZXJoYXBzIGEgbG9naWMgYnVnIHdoZXJlIGEgcXVldWUgZ2V0cyBzZXQgdXAgd3JvbmcuIElmIGl0IHdlcmUgYSBVQUYgb3IgT09CLCBLQVNBTiB3b3VsZCBwcm9iYWJseSBjYXRjaCB0aGF0LiBHaXZlbiB0aGlzLCBJIGRvbid0IHNlZSBhbnkgaW1tZWRpYXRlIHJlZCBmbGFncyBmb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIEJ1dCwgeW91IGtub3csIGl0J3MgYWx3YXlzIGdvb2QgdG8gZG91YmxlIGNoZWNrLlxuXG5MZXQgbWUganVzdCBxdWlja2x5IHZlcmlmeSB0aGUgZGVmaW5pdGlvbiBvZiBgbmV0aWZfcXVldWVfc2V0X25hcGlgIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSdsbCBncmVwIGZvciBpdCBpbiB0aGUgc291cmNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTQ0LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDM6MjYuNTI3NDMyODc3WiIsIlNlcSI6NTgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzExNjIzMjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ldGlmX3F1ZXVlX3NldF9uYXBpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYz0xODA2PXN0YXRpYyB2b2lkIGVuYV9uYXBpX2Rpc2FibGVfaW5fcmFuZ2Uoc3RydWN0IGVuYV9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmMtMTgxNi1cXHRcXHRcXHQvKiBUaGlzIEFQSSBpcyBzdXBwb3J0ZWQgZm9yIG5vbi1YRFAgcXVldWVzIG9ubHkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYzoxODE3OlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXFx1MDAzZW5ldGRldiwgaSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODE4LVxcdFxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jOjE4MTk6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LCBpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jLTE4MjAtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYz0xODI2PXN0YXRpYyB2b2lkIGVuYV9uYXBpX2VuYWJsZV9pbl9yYW5nZShzdHJ1Y3QgZW5hX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODM3LVxcdFxcdFxcdC8qIFRoaXMgQVBJIGlzIHN1cHBvcnRlZCBmb3Igbm9uLVhEUCBxdWV1ZXMgb25seSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jOjE4Mzg6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LCBpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jLTE4MzktXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmM6MTg0MDpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVxcdTAwM2VuZXRkZXYsIGksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmMtMTg0MS1cXHRcXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYz0xNjU5PXN0YXRpYyB2b2lkIGJuZ2VfaW5pdF9vbmVfcnhfcmluZ19wYWlyKHN0cnVjdCBibmdlX25ldCAqYm4sIGludCByaW5nX25yKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTE2NjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jOjE2NjY6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYm4tXFx1MDAzZW5ldGRldiwgcmluZ19uciwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTE2NjctXFx0XFx0XFx0ICAgICBcXHUwMDI2cnhyLVxcdTAwM2VibmFwaS1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmM9MTcwMT1zdGF0aWMgdm9pZCBibmdlX2luaXRfdHhfcmluZ3Moc3RydWN0IGJuZ2VfbmV0ICpibilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0xNzEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYzoxNzEzOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJuLVxcdTAwM2VuZXRkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0xNzE0LVxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNnR4ci1cXHUwMDNlYm5hcGktXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jPTI3MjU9c3RhdGljIHZvaWQgYm5nZV9kZWxfbmFwaShzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTI3MzAtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGJkLVxcdTAwM2VyeF9ucl9yaW5nczsgaSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYzoyNzMxOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJuLVxcdTAwM2VuZXRkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMjczMi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYmQtXFx1MDAzZXR4X25yX3JpbmdzOyBpKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jOjI3MzM6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYm4tXFx1MDAzZW5ldGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0yNzM0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9NDYyOD1zdGF0aWMgaW50IGJueHRfaW5pdF9vbmVfcnhfcmluZyhzdHJ1Y3QgYm54dCAqYnAsIGludCByaW5nX25yKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNDYzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo0NjM1OlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJwLVxcdTAwM2VkZXYsIHJpbmdfbnIsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTQ2MzYtXFx0XFx0XFx0ICAgICBcXHUwMDI2cnhyLVxcdTAwM2VibmFwaS1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz00NjkzPXN0YXRpYyBpbnQgYm54dF9pbml0X3R4X3JpbmdzKHN0cnVjdCBibnh0ICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTQ3MDktXFx0XFx0aWYgKGkgXFx1MDAzZT0gYnAtXFx1MDAzZXR4X25yX3JpbmdzX3hkcClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo0NzEwOlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJwLVxcdTAwM2VkZXYsIGkgLSBicC1cXHUwMDNldHhfbnJfcmluZ3NfeGRwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTQ3MTEtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTExOTgwPXN0YXRpYyB2b2lkIGJueHRfZGVsX25hcGkoc3RydWN0IGJueHQgKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTE5ODctXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGJwLVxcdTAwM2VyeF9ucl9yaW5nczsgaSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjExOTg4OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJwLVxcdTAwM2VkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xMTk4OS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYnAtXFx1MDAzZXR4X25yX3JpbmdzIC0gYnAtXFx1MDAzZXR4X25yX3JpbmdzX3hkcDsgaSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjExOTkwOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJwLVxcdTAwM2VkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xMTk5MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTczOTQ9c3RhdGljIHZvaWQgdGczX25hcGlfZGlzYWJsZShzdHJ1Y3QgdGczICp0cClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MDMtXFx0XFx0aWYgKHRuYXBpLVxcdTAwM2V0eF9idWZmZXJzKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6NzQwNDpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cXHUwMDNlZGV2LCB0eHFfaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MDUtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy03NDA4LVxcdFxcdGlmICh0bmFwaS1cXHUwMDNlcnhfcmNiKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6NzQwOTpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cXHUwMDNlZGV2LCByeHFfaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MTAtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz03NDE3PXN0YXRpYyB2b2lkIHRnM19uYXBpX2VuYWJsZShzdHJ1Y3QgdGczICp0cClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MjYtXFx0XFx0aWYgKHRuYXBpLVxcdTAwM2V0eF9idWZmZXJzKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6NzQyNzpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cXHUwMDNlZGV2LCB0eHFfaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MjgtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MzItXFx0XFx0aWYgKHRuYXBpLVxcdTAwM2VyeF9yY2IpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzo3NDMzOlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVxcdTAwM2VkZXYsIHJ4cV9pZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtNzQzNC1cXHRcXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jPTE5NzQ9c3RhdGljIHZvaWQgdHNuZXBfcXVldWVfZW5hYmxlKHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMTk4Mi1cXHRpZiAocXVldWUtXFx1MDAzZXR4KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjE5ODM6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LCBxdWV1ZS1cXHUwMDNldHgtXFx1MDAzZXF1ZXVlX2luZGV4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTg0LVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFxcdTAwMjZxdWV1ZS1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMTk4OC1cXHRpZiAocXVldWUtXFx1MDAzZXJ4KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjE5ODk6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LCBxdWV1ZS1cXHUwMDNlcngtXFx1MDAzZXF1ZXVlX2luZGV4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTkwLVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFxcdTAwMjZxdWV1ZS1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM9MTk5NT1zdGF0aWMgdm9pZCB0c25lcF9xdWV1ZV9kaXNhYmxlKHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMTk5OS1cXHRpZiAocXVldWUtXFx1MDAzZXJ4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYzoyMDAwOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXFx1MDAzZW5ldGRldiwgcXVldWUtXFx1MDAzZXJ4LVxcdTAwM2VxdWV1ZV9pbmRleCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjAwMS1cXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yMDA0LVxcdFxcdHRzbmVwX3R4X2Rpc2FibGUocXVldWUtXFx1MDAzZXR4LCBcXHUwMDI2cXVldWUtXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYzoyMDA1OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXFx1MDAzZW5ldGRldiwgcXVldWUtXFx1MDAzZXR4LVxcdTAwM2VxdWV1ZV9pbmRleCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjAwNi1cXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYz0xOTI0PXN0YXRpYyB2b2lkIGd2ZV90dXJuZG93bihzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk0Mi1cXHRcXHRpZiAoaWR4IFxcdTAwM2MgcHJpdi1cXHUwMDNldHhfY2ZnLm51bV9xdWV1ZXMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjE5NDM6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkocHJpdi1cXHUwMDNlZGV2LCBpZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE5NDQtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTk1NTpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShwcml2LVxcdTAwM2VkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE5NTYtXFx0XFx0XFx0XFx0ICAgICBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYz0xOTcyPXN0YXRpYyB2b2lkIGd2ZV90dXJudXAoc3RydWN0IGd2ZV9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE5ODktXFx0XFx0aWYgKGlkeCBcXHUwMDNjIHByaXYtXFx1MDAzZXR4X2NmZy5udW1fcXVldWVzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxOTkwOlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHByaXYtXFx1MDAzZWRldiwgaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xOTkxLVxcdFxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMjAxNS1cXHRcXHRuYXBpX2VuYWJsZV9sb2NrZWQoXFx1MDAyNmJsb2NrLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MjAxNjpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShwcml2LVxcdTAwM2VkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTIwMTctXFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2YmxvY2stXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmM9MTk4PWludCBoaW5pYzNfcXBzX2lycV9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yMzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmM6MjM0OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGlycV9jZmctXFx1MDAzZW5ldGRldiwgcV9pZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yMzUtXFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgXFx1MDAyNmlycV9jZmctXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjIzNjpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShpcnFfY2ZnLVxcdTAwM2VuZXRkZXYsIHFfaWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjM3LVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFxcdTAwMjZpcnFfY2ZnLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTI1Mi1cXHRcXHRxcF9kZWxfbmFwaShpcnFfY2ZnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYzoyNTM6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cXHUwMDNlbmV0ZGV2LCBxX2lkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTI1NC1cXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYzoyNTU6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cXHUwMDNlbmV0ZGV2LCBxX2lkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTI1Ni1cXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jPTI3MD12b2lkIGhpbmljM19xcHNfaXJxX3VuaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjc4LVxcdFxcdHFwX2RlbF9uYXBpKGlycV9jZmcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjI3OTpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShpcnFfY2ZnLVxcdTAwM2VuZXRkZXYsIHFfaWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjgwLVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjI4MTpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShpcnFfY2ZnLVxcdTAwM2VuZXRkZXYsIHFfaWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjgyLVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jPTQ4MT12b2lkIGUxMDAwX2Rvd24oc3RydWN0IGUxMDAwX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtNTEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzo1MTE6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjUxMjpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtNTEzLVxcdG5hcGlfZGlzYWJsZShcXHUwMDI2YWRhcHRlci1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM9MTM1Mj1pbnQgZTEwMDBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTEzOTctXFx0bmFwaV9lbmFibGUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzoxMzk4OlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM6MTM5OTpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBcXHUwMDI2YWRhcHRlci1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTE0MDAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM9NDYzNj1pbnQgZTEwMDBlX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYy00NzEyLVxcdG5hcGlfZW5hYmxlKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM6NDcxMzpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcXHUwMDI2YWRhcHRlci1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjQ3MTQ6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9UWCwgXFx1MDAyNmFkYXB0ZXItXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYy00NzE1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jPTQ3NTI9aW50IGUxMDAwZV9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTQ3NzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjQ3NzM6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjQ3NzQ6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTQ3NzUtXFx0bmFwaV9kaXNhYmxlKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM9Mjc4Mz12b2lkIGljZV92c2lfc2V0X25hcGlfcXVldWVzKHN0cnVjdCBpY2VfdnNpICp2c2kpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI3OTMtXFx0XFx0aWYgKHZzaS1cXHUwMDNlcnhfcmluZ3NbcV9pZHhdIFxcdTAwMjZcXHUwMDI2IHZzaS1cXHUwMDNlcnhfcmluZ3NbcV9pZHhdLVxcdTAwM2VxX3ZlY3RvcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jOjI3OTQ6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCBxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yNzk1LVxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNnZzaS1cXHUwMDNlcnhfcmluZ3NbcV9pZHhdLVxcdTAwM2VxX3ZlY3Rvci1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI3OTgtXFx0XFx0aWYgKHZzaS1cXHUwMDNldHhfcmluZ3NbcV9pZHhdIFxcdTAwMjZcXHUwMDI2IHZzaS1cXHUwMDNldHhfcmluZ3NbcV9pZHhdLVxcdTAwM2VxX3ZlY3RvcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jOjI3OTk6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCBxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yODAwLVxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNnZzaS1cXHUwMDNldHhfcmluZ3NbcV9pZHhdLVxcdTAwM2VxX3ZlY3Rvci1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jPTI4MTU9dm9pZCBpY2VfdnNpX2NsZWFyX25hcGlfcXVldWVzKHN0cnVjdCBpY2VfdnNpICp2c2kpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI4MzEtXFx0aWNlX2Zvcl9lYWNoX3R4cSh2c2ksIHFfaWR4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6MjgzMjpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIHFfaWR4LCBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yODMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjgzNC1cXHRpY2VfZm9yX2VhY2hfcnhxKHZzaSwgcV9pZHgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYzoyODM1OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgcV9pZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI4MzYtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYz0zODM4PXN0YXRpYyB2b2lkIGlkcGZfcV92ZWN0b3Jfc2V0X25hcGkoc3RydWN0IGlkcGZfcV92ZWN0b3IgKnFfdmVjdG9yLCBib29sIGxpbmspXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jLTM4NDMtXFx0Zm9yICh1MzIgaSA9IDA7IGkgXFx1MDAzYyBxX3ZlY3Rvci1cXHUwMDNlbnVtX3J4cTsgaSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmM6Mzg0NDpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIHFfdmVjdG9yLVxcdTAwM2VyeFtpXS1cXHUwMDNlaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMtMzg0NS1cXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMtMzg0Ny1cXHRmb3IgKHUzMiBpID0gMDsgaSBcXHUwMDNjIHFfdmVjdG9yLVxcdTAwM2VudW1fdHhxOyBpKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYzozODQ4OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgcV92ZWN0b3ItXFx1MDAzZXR4W2ldLVxcdTAwM2VpZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYy0zODQ5LVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIG5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM9MjEwMj12b2lkIGlnYl9zZXRfcXVldWVfbmFwaShzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsIGludCB2ZWN0b3IsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0yMTA3LVxcdGlmIChxX3ZlY3Rvci1cXHUwMDNlcngucmluZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzoyMTA4OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXFx1MDAzZW5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0yMTA5LVxcdFxcdFxcdFxcdCAgICAgcV92ZWN0b3ItXFx1MDAzZXJ4LnJpbmctXFx1MDAzZXF1ZXVlX2luZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMjExMi1cXHRpZiAocV92ZWN0b3ItXFx1MDAzZXR4LnJpbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6MjExMzpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVxcdTAwM2VuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMjExNC1cXHRcXHRcXHRcXHQgICAgIHFfdmVjdG9yLVxcdTAwM2V0eC5yaW5nLVxcdTAwM2VxdWV1ZV9pbmRleCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jPTUwOTI9c3RhdGljIHZvaWQgaWdjX3NldF9xdWV1ZV9uYXBpKHN0cnVjdCBpZ2NfYWRhcHRlciAqYWRhcHRlciwgaW50IHZlY3RvcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTUwOTctXFx0aWYgKHFfdmVjdG9yLVxcdTAwM2VyeC5yaW5nKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjUwOTg6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTUwOTktXFx0XFx0XFx0XFx0ICAgICBxX3ZlY3Rvci1cXHUwMDNlcngucmluZy1cXHUwMDNlcXVldWVfaW5kZXgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy01MTAyLVxcdGlmIChxX3ZlY3Rvci1cXHUwMDNldHgucmluZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzo1MTAzOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXFx1MDAzZW5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy01MTA0LVxcdFxcdFxcdFxcdCAgICAgcV92ZWN0b3ItXFx1MDAzZXR4LnJpbmctXFx1MDAzZXF1ZXVlX2luZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jPTg5PWludCBtbHg0X2VuX2FjdGl2YXRlX2NxKHN0cnVjdCBtbHg0X2VuX3ByaXYgKnByaXYsIHN0cnVjdCBtbHg0X2VuX2NxICpjcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYy0xNTQtXFx0XFx0bmFwaV9lbmFibGUoXFx1MDAyNmNxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmM6MTU1OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGNxLVxcdTAwM2VkZXYsIGNxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFxcdTAwMjZjcS1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE1Ni1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYy0xNjItXFx0XFx0bmFwaV9lbmFibGUoXFx1MDAyNmNxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmM6MTYzOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGNxLVxcdTAwM2VkZXYsIGNxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFxcdTAwMjZjcS1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE2NC1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYz0xOTY9dm9pZCBtbHg0X2VuX2RlYWN0aXZhdGVfY3Eoc3RydWN0IG1seDRfZW5fcHJpdiAqcHJpdiwgc3RydWN0IG1seDRfZW5fY3EgKmNxKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTIwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmM6MjA2OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGNxLVxcdTAwM2VkZXYsIGNxLVxcdTAwM2VjcV9pZHgsIHF0eXBlLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmMtMjA3LVxcdFxcdG5hcGlfZGlzYWJsZShcXHUwMDI2Y3EtXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jPTkzOT12b2lkIG1seDVlX3B0cF9hY3RpdmF0ZV9jaGFubmVsKHN0cnVjdCBtbHg1ZV9wdHAgKmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmMtOTUxLVxcdFxcdG1seDVlX2FjdGl2YXRlX3JxKFxcdTAwMjZjLVxcdTAwM2VycSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jOjk1MjpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShjLVxcdTAwM2VuZXRkZXYsIGMtXFx1MDAzZXJxLml4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgXFx1MDAyNmMtXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYy05NTMtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jPTk1Nz12b2lkIG1seDVlX3B0cF9kZWFjdGl2YXRlX2NoYW5uZWwoc3RydWN0IG1seDVlX3B0cCAqYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYy05NjEtXFx0aWYgKHRlc3RfYml0KE1MWDVFX1BUUF9TVEFURV9SWCwgYy1cXHUwMDNlc3RhdGUpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jOjk2MjpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShjLVxcdTAwM2VuZXRkZXYsIGMtXFx1MDAzZXJxLml4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jLTk2My1cXHRcXHRtbHg1ZV9kZWFjdGl2YXRlX3JxKFxcdTAwMjZjLVxcdTAwM2VycSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTE5Mzk9dm9pZCBtbHg1ZV9hY3RpdmF0ZV90eHFzcShzdHJ1Y3QgbWx4NWVfdHhxc3EgKnNxKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xOTQ2LVxcdG5ldGlmX3R4X3N0YXJ0X3F1ZXVlKHNxLVxcdTAwM2V0eHEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6MTk0NzpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShzcS1cXHUwMDNlbmV0ZGV2LCBzcS1cXHUwMDNldHhxX2l4LCBORVRERVZfUVVFVUVfVFlQRV9UWCwgc3EtXFx1MDAzZWNxLm5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMTk0OC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTE5NTc9dm9pZCBtbHg1ZV9kZWFjdGl2YXRlX3R4cXNxKHN0cnVjdCBtbHg1ZV90eHFzcSAqc3EpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTE5NjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoxOTYxOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHNxLVxcdTAwM2VuZXRkZXYsIHNxLVxcdTAwM2V0eHFfaXgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTE5NjItXFx0Y2xlYXJfYml0KE1MWDVFX1NRX1NUQVRFX0VOQUJMRUQsIFxcdTAwMjZzcS1cXHUwMDNlc3RhdGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz0yOTE5PXN0YXRpYyB2b2lkIG1seDVlX2FjdGl2YXRlX2NoYW5uZWwoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTI5MzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoyOTM2OlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGMtXFx1MDAzZW5ldGRldiwgYy1cXHUwMDNlaXgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcXHUwMDI2Yy1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0yOTM3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9MjkzOT1zdGF0aWMgdm9pZCBtbHg1ZV9kZWFjdGl2YXRlX2NoYW5uZWwoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTI5NDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoyOTQzOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGMtXFx1MDAzZW5ldGRldiwgYy1cXHUwMDNlaXgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTI5NDQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYz0yMTE1PXN0YXRpYyB2b2lkIGZibmljX3NldF9uZXRpZl9uYXBpKHN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciAqbnYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTIyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjIxMjM6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobnYtXFx1MDAzZW5hcGkuZGV2LCBxdC1cXHUwMDNlc3ViMC5xX2lkeCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTI0LVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFxcdTAwMjZudi1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjIxMzE6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobnYtXFx1MDAzZW5hcGkuZGV2LCBxdC1cXHUwMDNlY21wbC5xX2lkeCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTMyLVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFxcdTAwMjZudi1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYz0yMTM2PXN0YXRpYyB2b2lkIGZibmljX3Jlc2V0X25ldGlmX25hcGkoc3RydWN0IGZibmljX25hcGlfdmVjdG9yICpudilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxNDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM6MjE0NDpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShudi1cXHUwMDNlbmFwaS5kZXYsIHF0LVxcdTAwM2VzdWIwLnFfaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxNDUtXFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTUxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjIxNTI6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobnYtXFx1MDAzZW5hcGkuZGV2LCBxdC1cXHUwMDNlY21wbC5xX2lkeCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTUzLVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM9MzIxPXN0YXRpYyB2b2lkIHJ0YXNlX3R4X2Rlc2NfaW5pdChzdHJ1Y3QgcnRhc2VfcHJpdmF0ZSAqdHAsIHUxNiBpZHgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0zNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM6MzUzOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVxcdTAwM2VkZXYsIHJpbmctXFx1MDAzZWluZGV4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTM1NC1cXHRcXHRcXHQgICAgIHJpbmctXFx1MDAzZXR5cGUsIFxcdTAwMjZyaW5nLVxcdTAwM2VpdmVjLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jPTU5MD1zdGF0aWMgdm9pZCBydGFzZV9yeF9kZXNjX2luaXQoc3RydWN0IHJ0YXNlX3ByaXZhdGUgKnRwLCB1MTYgaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmMtNjA3LVxcdHJpbmctXFx1MDAzZWl2ZWMgPSBcXHUwMDI2dHAtXFx1MDAzZWludF92ZWN0b3JbaWR4XTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYzo2MDg6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkodHAtXFx1MDAzZWRldiwgcmluZy1cXHUwMDNlaW5kZXgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmMtNjA5LVxcdFxcdFxcdCAgICAgcmluZy1cXHUwMDNldHlwZSwgXFx1MDAyNnJpbmctXFx1MDAzZWl2ZWMtXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM9MTE2Nj1zdGF0aWMgdm9pZCBydGFzZV9kb3duKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0xMTc3LVxcdFxcdFxcdFxcdFxcdCByaW5nX2VudHJ5KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM6MTE3ODpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cXHUwMDNlZGV2LCByaW5nLVxcdTAwM2VpbmRleCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0xMTc5LVxcdFxcdFxcdFxcdFxcdCAgICAgcmluZy1cXHUwMDNldHlwZSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYz0xNzE3PXN0YXRpYyB2b2lkIHJ0YXNlX3N3X3Jlc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0xNzM3LVxcdFxcdFxcdFxcdFxcdCByaW5nX2VudHJ5KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM6MTczODpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cXHUwMDNlZGV2LCByaW5nLVxcdTAwM2VpbmRleCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0xNzM5LVxcdFxcdFxcdFxcdFxcdCAgICAgcmluZy1cXHUwMDNldHlwZSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9NjkwPXZvaWQgbmV0dnNjX2RldmljZV9yZW1vdmUoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcxNi1cXHRcXHRpZiAoaSBcXHUwMDNjIG5kZXYtXFx1MDAzZXJlYWxfbnVtX3J4X3F1ZXVlcykge1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo3MTc6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcxOC1cXHRcXHRcXHRcXHRcXHQgICAgIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo3MTk6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcyMC1cXHRcXHRcXHRcXHRcXHQgICAgIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jPTE3NzI9c3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldHZzY19kZXZpY2VfYWRkKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODI1LVxcdG5hcGlfZW5hYmxlKFxcdTAwMjZuZXRfZGV2aWNlLVxcdTAwM2VjaGFuX3RhYmxlWzBdLm5hcGkpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxODI2OlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODI3LVxcdFxcdFxcdCAgICAgXFx1MDAyNm5ldF9kZXZpY2UtXFx1MDAzZWNoYW5fdGFibGVbMF0ubmFwaSk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE4Mjg6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE4MjktXFx0XFx0XFx0ICAgICBcXHUwMDI2bmV0X2RldmljZS1cXHUwMDNlY2hhbl90YWJsZVswXS5uYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODcwLWNsZWFudXA6XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE4NzE6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxODcyOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTg3My1cXHRuYXBpX2Rpc2FibGUoXFx1MDAyNm5ldF9kZXZpY2UtXFx1MDAzZWNoYW5fdGFibGVbMF0ubmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmM9MTIyMz1zdGF0aWMgdm9pZCBuZXR2c2Nfc2Nfb3BlbihzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqbmV3X3NjKVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jLTEyNTktXFx0bmFwaV9lbmFibGUoXFx1MDAyNm52Y2hhbi1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jOjEyNjA6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgY2huX2luZGV4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmMtMTI2MS1cXHRcXHRcXHQgICAgIFxcdTAwMjZudmNoYW4tXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYzoxMjYyOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIGNobl9pbmRleCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jLTEyNjMtXFx0XFx0XFx0ICAgICBcXHUwMDI2bnZjaGFuLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYy0xMjY5LVxcdFxcdG5ldGRldl9ub3RpY2UobmRldiwgXFxcInN1YiBjaGFubmVsIG9wZW4gZmFpbGVkOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmM6MTI3MDpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCBjaG5faW5kZXgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYy0xMjcxLVxcdFxcdFxcdFxcdCAgICAgTlVMTCk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jOjEyNzI6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgY2huX2luZGV4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmMtMTI3My1cXHRcXHRcXHRcXHQgICAgIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTQ4OD1zdGF0aWMgdm9pZCBuc2ltX2VuYWJsZV9uYXBpKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQ5NS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6NDk2OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFxcdTAwMjZycS1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQ5Ny1cXHRcXHRuYXBpX2VuYWJsZV9sb2NrZWQoXFx1MDAyNnJxLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz01MjQ9c3RhdGljIHZvaWQgbnNpbV9kZWxfbmFwaShzdHJ1Y3QgbmV0ZGV2c2ltICpucylcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy01MzEtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjUzMjpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNTMzLVxcdFxcdG5hcGlfZGlzYWJsZV9sb2NrZWQoXFx1MDAyNnJxLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04MDI9bnNpbV9xdWV1ZV9zdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX2NvbmZpZyAqcWNmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04MjktXFx0bnMtXFx1MDAzZXJxW2lkeF0gPSBxbWVtLVxcdTAwM2VycTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6ODMwOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgXFx1MDAyNm5zLVxcdTAwM2VycVtpZHhdLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODMxLVxcdG5hcGlfZW5hYmxlX2xvY2tlZChcXHUwMDI2bnMtXFx1MDAzZXJxW2lkeF0tXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTI4MTU9c3RhdGljIHZvaWQgdmlydG5ldF9uYXBpX2VuYWJsZShzdHJ1Y3QgcmVjZWl2ZV9xdWV1ZSAqcnEpXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjgyMC1cXHR2aXJ0bmV0X25hcGlfZG9fZW5hYmxlKHJxLVxcdTAwM2V2cSwgXFx1MDAyNnJxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6MjgyMTpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh2aS1cXHUwMDNlZGV2LCBxaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgXFx1MDAyNnJxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjgyMi19XFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9MjgyND1zdGF0aWMgdm9pZCB2aXJ0bmV0X25hcGlfdHhfZW5hYmxlKHN0cnVjdCBzZW5kX3F1ZXVlICpzcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yODQxLVxcdHZpcnRuZXRfbmFwaV9kb19lbmFibGUoc3EtXFx1MDAzZXZxLCBuYXBpKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mjg0MjpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh2aS1cXHUwMDNlZGV2LCBxaWR4LCBORVRERVZfUVVFVUVfVFlQRV9UWCwgbmFwaSk7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NDMtfVxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTI4NDU9c3RhdGljIHZvaWQgdmlydG5ldF9uYXBpX3R4X2Rpc2FibGUoc3RydWN0IHNlbmRfcXVldWUgKnNxKVxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NTEtXFx0aWYgKG5hcGktXFx1MDAzZXdlaWdodCkge1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzoyODUyOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVxcdTAwM2VkZXYsIHFpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjg1My1cXHRcXHRuYXBpX2Rpc2FibGUobmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9Mjg1Nz1zdGF0aWMgdm9pZCB2aXJ0bmV0X25hcGlfZGlzYWJsZShzdHJ1Y3QgcmVjZWl2ZV9xdWV1ZSAqcnEpXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjg2Mi1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mjg2MzpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh2aS1cXHUwMDNlZGV2LCBxaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NjQtXFx0bmFwaV9kaXNhYmxlKG5hcGkpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0yODI3PXN0YXRpYyBpbmxpbmUgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldl9mcm9tX3ByaXYoY29uc3Qgdm9pZCAqcHJpdilcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjg0Mi1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjI4NDM6dm9pZCBuZXRpZl9xdWV1ZV9zZXRfbmFwaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcXVldWVfaW5kZXgsXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yODQ0LVxcdFxcdFxcdCAgZW51bSBuZXRkZXZfcXVldWVfdHlwZSB0eXBlLFxcbi0tXFxubmV0L2NvcmUvZGV2LmM9NzI4OT1FWFBPUlRfU1lNQk9MKG5ldGlmX3RocmVhZGVkX2VuYWJsZSk7XFxuLS1cXG5uZXQvY29yZS9kZXYuYy03MjkxLS8qKlxcbm5ldC9jb3JlL2Rldi5jOjcyOTI6ICogbmV0aWZfcXVldWVfc2V0X25hcGkgLSBBc3NvY2lhdGUgcXVldWUgd2l0aCB0aGUgbmFwaVxcbm5ldC9jb3JlL2Rldi5jLTcyOTMtICogQGRldjogZGV2aWNlIHRvIHdoaWNoIE5BUEkgYW5kIHF1ZXVlIGJlbG9uZ1xcbi0tXFxubmV0L2NvcmUvZGV2LmMtNzMwMS0gKi9cXG5uZXQvY29yZS9kZXYuYzo3MzAyOnZvaWQgbmV0aWZfcXVldWVfc2V0X25hcGkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHF1ZXVlX2luZGV4LFxcbm5ldC9jb3JlL2Rldi5jLTczMDMtXFx0XFx0XFx0ICBlbnVtIG5ldGRldl9xdWV1ZV90eXBlIHR5cGUsIHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSlcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTczMjQtfVxcbm5ldC9jb3JlL2Rldi5jOjczMjU6RVhQT1JUX1NZTUJPTChuZXRpZl9xdWV1ZV9zZXRfbmFwaSk7XFxubmV0L2NvcmUvZGV2LmMtNzMyNi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTdUMDk6MDM6MjguODM5MDYzODE3WiIsIlNlcSI6NTksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxMTEwNjIzMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYG5ldGRldnNpbWAgTkFQSSBBc3NvY2lhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3RyYWlnaHRmb3J3YXJkLiBJdCdzIHJlYWxseSBqdXN0IGFib3V0IGNvcnJlY3RseSBsaW5raW5nIGFuZCB1bmxpbmtpbmcgTkFQSSBpbnN0YW5jZXMgdG8gUlggcXVldWVzIHdpdGhpbiB0aGUgYG5ldGRldnNpbWAgZHJpdmVyLiBUaGUgY29kZSBpcyB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGkoKWAgd2hpY2gsIGZyb20gbXkgdW5kZXJzdGFuZGluZywgc2ltcGx5IHNldHMgYSBwb2ludGVyIHdpdGhpbiB0aGUgcXVldWUgc3RydWN0dXJlLiBJdCdzIGEgY2xlYW4gcG9pbnRlciBhc3NpZ25tZW50OyB0aGF0J3MgYWxsIGl0IGRvZXMuXG5cblRoZXJlJ3Mgbm8gY29tcGxleCBtZW1vcnkgbWFuaXB1bGF0aW9uIGhhcHBlbmluZyBoZXJlLiBJJ20gc2VlaW5nIG5vIGFsbG9jYXRpb25zIG9mIGFueSBuZXcgc2lnbmlmaWNhbnQgZGF0YSBzdHJ1Y3R1cmVzLCBubyBjYWxjdWxhdGlvbnMgYmVpbmcgY2hhbmdlZCB0aGF0IHdvdWxkIGFmZmVjdCBkYXRhIGxlbmd0aHMgb3IgYm91bmQgY2hlY2tzLCBhbmQgZGVmaW5pdGVseSBubyBleHBvc3VyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhhdCdzIGEgaHVnZSByZWxpZWYuIFRoZSByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGVmZmVjdGl2ZWx5IG5vbmV4aXN0ZW50IHdpdGggdGhlc2UgcGFydGljdWxhciBjaGFuZ2VzLlxuXG5FdmVuIGlmIHRoZXJlIHdlcmUgc29tZSBvYnNjdXJlIGVkZ2UgY2FzZSAtIHNvbWV0aGluZyBsaWtlIGEgdXNlLWFmdGVyLWZyZWUgb3IgYSBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UgLSB0aGF0IGNvdWxkIHNsaXAgdGhyb3VnaCwgS0FTQU4gd291bGQgYmUgdGhlIHBlcmZlY3QgdG9vbCB0byBjYXRjaCBpdC4gQ29uc2lkZXJpbmcgdGhhdCwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIHNlZW1zIHVubmVjZXNzYXJ5IGhlcmUuIFdlJ3JlIGRlYWxpbmcgd2l0aCBhIHNpbXBsZSBwb2ludGVyIGFzc2lnbm1lbnQgYW5kIGJhc2ljIGxpbmtpbmcsIHNvIEtBU0FOIGlzIHN1ZmZpY2llbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NjEwLCJPdXRwdXRUb2tlbnMiOjE2MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xN1QwOTowMzozNC45NTAxMjkzNTNaIiwiU2VxIjo2MCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRkZXZzaW0gZHJpdmVyIHRvIGNvcnJlY3RseSBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIGluc3RhbmNlcyB3aXRoIFJYIHF1ZXVlcyB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGkoKWAuIFRoZXNlIGNoYW5nZXMgb25seSBpbnZvbHZlIHNldHRpbmcgYSBwb2ludGVyIGluIHRoZSBxdWV1ZSBzdHJ1Y3R1cmUgdG8gdHJhY2sgdGhlIE5BUEkgY29udGV4dC4gVGhlcmUgYXJlIG5vIG1vZGlmaWNhdGlvbnMgdG8gZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgbm8gbmV3IGFsbG9jYXRpb25zIG9mIGNvbXBsZXggc3RydWN0dXJlcywgYW5kIG5vIGNoYW5nZXMgdG8gZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIG9yIGJvdW5kcyBjaGVja3MuIFRoZSByaXNrIG9mIGV4cG9zaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIG5vbi1leGlzdGVudC4gQW55IHBvdGVudGlhbCBpc3N1ZXMgYXJpc2luZyBmcm9tIHRoZXNlIGNoYW5nZXMsIHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUgb3IgbnVsbC1wb2ludGVyIGRlcmVmZXJlbmNlcywgd291bGQgYmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGRldnNpbSBkcml2ZXIgdG8gY29ycmVjdGx5IGFzc29jaWF0ZSBhbmQgZGlzYXNzb2NpYXRlIE5BUEkgaW5zdGFuY2VzIHdpdGggUlggcXVldWVzIHVzaW5nIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaSgpYC4gVGhlc2UgY2hhbmdlcyBvbmx5IGludm9sdmUgc2V0dGluZyBhIHBvaW50ZXIgaW4gdGhlIHF1ZXVlIHN0cnVjdHVyZSB0byB0cmFjayB0aGUgTkFQSSBjb250ZXh0LiBUaGVyZSBhcmUgbm8gbW9kaWZpY2F0aW9ucyB0byBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBubyBuZXcgYWxsb2NhdGlvbnMgb2YgY29tcGxleCBzdHJ1Y3R1cmVzLCBhbmQgbm8gY2hhbmdlcyB0byBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgb3IgYm91bmRzIGNoZWNrcy4gVGhlIHJpc2sgb2YgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgbm9uLWV4aXN0ZW50LiBBbnkgcG90ZW50aWFsIGlzc3VlcyBhcmlzaW5nIGZyb20gdGhlc2UgY2hhbmdlcywgc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSBvciBudWxsLXBvaW50ZXIgZGVyZWZlcmVuY2VzLCB3b3VsZCBiZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4uIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowwflkj[1] Phase: Succeeded StartedAt: 2026-08-17 09:03:46 +0000 UTC FinishedAt: 2026-08-17 09:03:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwflkj[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-17 09:03:46 +0000 UTC FinishedAt: 2026-08-17 09:03:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwflkj[2] Phase: Succeeded StartedAt: 2026-08-17 09:03:46 +0000 UTC FinishedAt: 2026-08-17 12:45:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:03:46 +0000 UTC FinishedAt: 2026-08-17 12:45:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:03:46 +0000 UTC FinishedAt: 2026-08-17 09:03:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:03:46 +0000 UTC FinishedAt: 2026-08-17 09:03:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-workflowwflkj/series-workflowwflkj-convert-artifact-259764059/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:03:56 +0000 UTC FinishedAt: 2026-08-17 09:22:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:03:56 +0000 UTC FinishedAt: 2026-08-17 09:22:21 +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:*57f8cc78-ecba-4135-9246-e963bef0aef0,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-workflowwflkj/series-workflowwflkj-convert-artifact-259764059/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": "d037d78e-c450-42ed-b437-134364a9ff63", "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-workflowwflkj/series-workflowwflkj-build-action-1432579225/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:03:56 +0000 UTC FinishedAt: 2026-08-17 09:22:11 +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:*57f8cc78-ecba-4135-9246-e963bef0aef0,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-workflowwflkj/series-workflowwflkj-convert-artifact-259764059/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": "d037d78e-c450-42ed-b437-134364a9ff63", "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-workflowwflkj/series-workflowwflkj-build-action-1432579225/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:22:21 +0000 UTC FinishedAt: 2026-08-17 09:22:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:22:21 +0000 UTC FinishedAt: 2026-08-17 09:22:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:22:21 +0000 UTC FinishedAt: 2026-08-17 09:22:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:22:21 +0000 UTC FinishedAt: 2026-08-17 09:22:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-workflowwflkj/series-workflowwflkj-convert-artifact-2028455346/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:22:31 +0000 UTC FinishedAt: 2026-08-17 09:24:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:22:31 +0000 UTC FinishedAt: 2026-08-17 09:24:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d037d78e-c450-42ed-b437-134364a9ff63,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-workflowwflkj/series-workflowwflkj-build-action-1432579225/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-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:24:36 +0000 UTC FinishedAt: 2026-08-17 09:24:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:24:36 +0000 UTC FinishedAt: 2026-08-17 09:24:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:24:36 +0000 UTC FinishedAt: 2026-08-17 09:40:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:24:36 +0000 UTC FinishedAt: 2026-08-17 09:40:59 +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:*57f8cc78-ecba-4135-9246-e963bef0aef0,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-workflowwflkj/series-workflowwflkj-convert-artifact-2028455346/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": "429cee00-c7c8-4269-94d9-51cad48ceeb7", "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-workflowwflkj/series-workflowwflkj-build-action-2669983558/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:24:36 +0000 UTC FinishedAt: 2026-08-17 09:40:49 +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:*57f8cc78-ecba-4135-9246-e963bef0aef0,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-workflowwflkj/series-workflowwflkj-convert-artifact-2028455346/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": "429cee00-c7c8-4269-94d9-51cad48ceeb7", "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-workflowwflkj/series-workflowwflkj-build-action-2669983558/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:40:59 +0000 UTC FinishedAt: 2026-08-17 09:40:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:40:59 +0000 UTC FinishedAt: 2026-08-17 09:40:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:40:59 +0000 UTC FinishedAt: 2026-08-17 09:43:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:40:59 +0000 UTC FinishedAt: 2026-08-17 09:42:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*429cee00-c7c8-4269-94d9-51cad48ceeb7,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-workflowwflkj/series-workflowwflkj-build-action-2669983558/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-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:43:00 +0000 UTC FinishedAt: 2026-08-17 12:45:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:43:00 +0000 UTC FinishedAt: 2026-08-17 12:45:43 +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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"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:*d037d78e-c450-42ed-b437-134364a9ff63,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*429cee00-c7c8-4269-94d9-51cad48ceeb7,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-workflowwflkj/series-workflowwflkj-build-action-1432579225/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-workflowwflkj/series-workflowwflkj-build-action-2669983558/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:43:00 +0000 UTC FinishedAt: 2026-08-17 09:43:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:43:00 +0000 UTC FinishedAt: 2026-08-17 09:43:04 +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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"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-workflowwflkj/series-workflowwflkj-convert-artifact-776840455/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:43:00 +0000 UTC FinishedAt: 2026-08-17 09:43:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:43:00 +0000 UTC FinishedAt: 2026-08-17 09:43:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:43:00 +0000 UTC FinishedAt: 2026-08-17 09:43:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:43:10 +0000 UTC FinishedAt: 2026-08-17 12:45:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwflkj[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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":["nsim_create","nsim_destroy","nsim_drv_port_add","nsim_drv_port_del","netdev_rx_queue_restart","netif_queue_set_napi"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"ff301211-15e2-4125-a14d-d2e1d19625f9","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-08-17 09:43:10 +0000 UTC FinishedAt: 2026-08-17 12:45:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*d037d78e-c450-42ed-b437-134364a9ff63,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*429cee00-c7c8-4269-94d9-51cad48ceeb7,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-workflowwflkj/series-workflowwflkj-build-action-1432579225/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-workflowwflkj/series-workflowwflkj-build-action-2669983558/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-workflowwflkj/series-workflowwflkj-convert-artifact-776840455/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,}