Name: series-workflowmp6xj Phase: Failed StartedAt: 2026-09-10 06:51:09 +0000 UTC FinishedAt: 2026-09-10 07:15:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmp6xj[0] Phase: Succeeded StartedAt: 2026-09-10 06:51:09 +0000 UTC FinishedAt: 2026-09-10 07:15:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmp6xj[0].run-triage Phase: Succeeded StartedAt: 2026-09-10 06:51:09 +0000 UTC FinishedAt: 2026-09-10 07:15:26 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA3OjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZEREkmIzM0OywKICAgICYjMzQ7U0tGUCYjMzQ7LAogICAgJiMzNDtQQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0OyYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3MgaW4gZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLCB3aGljaCBpcyB0aGUgZHJpdmVyIGZvciBsZWdhY3kgU3lzS29ubmVjdCBGRERJIFBDSSBhZGFwdGVycyAoQ09ORklHX1NLRlApLiBUaGlzIGRyaXZlciBiaW5kcyB0byBzcGVjaWZpYyBwaHlzaWNhbCBQQ0kgaGFyZHdhcmUgKFBDSSBJRCAweDExNDg6MHg0MDAwKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIC8gc3l6a2FsbGVyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDc6MTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkMzBhNjFiYTQ2ODQxY2Y2NGIxMjFlZDdmMmU1ODA2ZjQyYjFhZTFmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMDc6MTQ6MzEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jXG5pbmRleCBhMjczMzYyYzllNzAzLi5mZWVhN2JhYTQ4MTY4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmNcbkBAIC05MjgsNyAmIzQzOzkyOCw4IEBAIHN0YXRpYyBpbnQgc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKmFkZHIpXG4gXG4gXHRkZXZfYWRkcl9zZXQoZGV2LCBwX3NvY2thZGRyLVx1MDAzZXNhX2RhdGEpO1xuIFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2YnAtXHUwMDNlRHJpdmVyTG9jaywgRmxhZ3MpO1xuLVx0UmVzZXRBZGFwdGVyKHNtYyk7XG4mIzQzO1x0aWYgKG5ldGlmX3J1bm5pbmcoZGV2KSlcbiYjNDM7XHRcdFJlc2V0QWRhcHRlcihzbWMpO1xuIFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZicC1cdTAwM2VEcml2ZXJMb2NrLCBGbGFncyk7XG4gXG4gXHRyZXR1cm4gMDtcdFx0LyogYWx3YXlzIHJldHVybiB6ZXJvICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDc6MTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RkRESSYjMzQ7LAogICAgJiMzNDtTS0ZQJiMzNDssCiAgICAmIzM0O1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3MgaW4gZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLCB3aGljaCBpcyB0aGUgZHJpdmVyIGZvciBsZWdhY3kgU3lzS29ubmVjdCBGRERJIFBDSSBhZGFwdGVycyAoQ09ORklHX1NLRlApLiBUaGlzIGRyaXZlciBiaW5kcyB0byBzcGVjaWZpYyBwaHlzaWNhbCBQQ0kgaGFyZHdhcmUgKFBDSSBJRCAweDExNDg6MHg0MDAwKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIC8gc3l6a2FsbGVyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkMzBhNjFiYTQ2ODQxY2Y2NGIxMjFlZDdmMmU1ODA2ZjQyYjFhZTFmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMTAgMDc6MTQ6MzEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMKaW5kZXggYTI3MzM2MmM5ZTcwMy4uZmVlYTdiYWE0ODE2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYwpAQCAtOTI4LDcgJiM0Mzs5MjgsOCBAQCBzdGF0aWMgaW50IHNrZnBfY3RsX3NldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICphZGRyKQogCiAJZGV2X2FkZHJfc2V0KGRldiwgcF9zb2NrYWRkci0mZ3Q7c2FfZGF0YSk7CiAJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDticC0mZ3Q7RHJpdmVyTG9jaywgRmxhZ3MpOwotCVJlc2V0QWRhcHRlcihzbWMpOwomIzQzOwlpZiAobmV0aWZfcnVubmluZyhkZXYpKQomIzQzOwkJUmVzZXRBZGFwdGVyKHNtYyk7CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2JwLSZndDtEcml2ZXJMb2NrLCBGbGFncyk7CiAKIAlyZXR1cm4gMDsJCS8qIGFsd2F5cyByZXR1cm4gemVybyAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNzoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTE5CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgcmV2aWV3aW5nIHRoaXMgcGF0Y2g6CgoqKkFuYWx5emluZyB0aGUgTmV0d29yayBEcml2ZXIgQ2hhbmdlKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIGZpcnN0IHN0ZXAgaXMgYWx3YXlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2UgYW5kIHRoZSBwb3RlbnRpYWwgaW1wYWN0LiBJIHNlZSB0aGUgZmlsZSBjaGFuZ2VkIGlzIGBkcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmNgLiBUaGF0IHRlbGxzIG1lIHRoaXMgaXMgcmVsYXRlZCB0byB0aGUgRkRESSAoRmliZXIgRGlzdHJpYnV0ZWQgRGF0YSBJbnRlcmZhY2UpIG5ldHdvcmsgZHJpdmVyIGZvciB0aGUgU0tGUCBoYXJkd2FyZS4KCk5vdywgYmVmb3JlIEkgZXZlbiBsb29rIGF0IHRoZSBjb2RlIGl0c2VsZiwgSSBuZWVkIHRoZSBjb250ZXh0LiBXaGF0IGhhcmR3YXJlIGFyZSB3ZSBhY3R1YWxseSB0YWxraW5nIGFib3V0IGhlcmU/IElzIHRoaXMgc3RpbGwgcmVsZXZhbnQgaGFyZHdhcmU/IEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyB0byBzZWUgaG93IHRoaXMgZHJpdmVyIGlzIGNvbmZpZ3VyZWQuIElzIGl0IGVuYWJsZWQgYnkgZGVmYXVsdD8gSXMgaXQgYnVpbHQgYXMgYSBtb2R1bGUsIG9yIGJ1aWx0IGluPyBXaGF0IGRlcGVuZGVuY2llcyBkb2VzIGl0IGhhdmU/IEkgbmVlZCB0byBhc2NlcnRhaW4gaWYgdGhpcyBpcyBhICYjMzQ7cmVhY2hhYmxlJiMzNDsgcGllY2Ugb2YgaGFyZHdhcmUgaW4gb3VyIGN1cnJlbnQgZWNvc3lzdGVtLCBvciBpZiBpdCYjMzk7cyBwb3RlbnRpYWxseSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuCgpNeSBuZXh0IG1vdmUgaXMgdG8gdXNlIGBnaXQgZ3JlcGAgb3Igc2VhcmNoIHRoZSBLY29uZmlnIGZpbGVzIGFyb3VuZCBgZHJpdmVycy9uZXQvZmRkaS9za2ZwL2AgdG8gdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGlzIGRyaXZlciBpcyBidWlsdCBhbmQgaW5jbHVkZWQgaW4gdGhlIGtlcm5lbC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBoYXJkd2FyZSBpdCBzdXBwb3J0cyBhbmQgdGhlIHRhcmdldCBwbGF0Zm9ybXMuIFRoaXMgaXMgY3J1Y2lhbCBiZWZvcmUgSSBldmVuIGNvbnNpZGVyIHRoZSBjb2RlIGl0c2VsZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtza2ZkZGkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9mZGRpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9NYWtlZmlsZT02PW9iai0kKENPTkZJR19TS0ZQKSAmIzQzOz0gc2tmcC5vXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvTWFrZWZpbGUtNy1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9NYWtlZmlsZTo4OnNrZnAtb2JqcyA6PSAgc2tmZGRpLm8gICAgaHdtdG0ubyAgICBmcGx1c3RtLm8gIHNtdC5vICAgICAgY2ZtLm8gICAgIFxcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvTWFrZWZpbGUtOS0gICAgICAgICAgICAgIGVjbS5vICAgICAgIHBjbXBsYy5vICAgcG1mLm8gICAgICBxdWV1ZS5vICAgIHJtdC5vICAgICBcXFxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9NYWtlZmlsZS0xNS0jICAgc3dpdGNoZWQgb2ZmIGJlbG93KSwgYnV0IEkgZGlkIG5vdCBmaXggdGhpcywgYmVjYXVzZSB0aGUgSGFyZHdhcmVcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9NYWtlZmlsZToxNjojICAgTW9kdWxlIHNvdXJjZSAoc2VlIHNrZmRkaS5jIGZvciBkZXRhaWxzKSBpcyB1c2VkIGZvciBkaWZmZXJlbnRcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9NYWtlZmlsZS0xNy0jICAgZHJpdmVycywgYW5kIGZpeGluZyBpdCBmb3IgTGludXggbWlnaHQgYnJpbmcgcHJvYmxlbXMgb24gb3RoZXJcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvY2ZtLmMtNi0gKlxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2NmbS5jOjc6ICpcdFNlZSB0aGUgZmlsZSBcJiMzNDtza2ZkZGkuY1wmIzM0OyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9jZm0uYy04LSAqXG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2RydmZiaS5jLTYtICpcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9kcnZmYmkuYzo3OiAqXHRTZWUgdGhlIGZpbGUgXCYjMzQ7c2tmZGRpLmNcJiMzNDsgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvZHJ2ZmJpLmMtOC0gKlxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9lY20uYy02LSAqXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvZWNtLmM6NzogKlx0U2VlIHRoZSBmaWxlIFwmIzM0O3NrZmRkaS5jXCYjMzQ7IGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLlxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2VjbS5jLTgtICpcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvZXNzLmMtNi0gKlxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2Vzcy5jOjc6ICpcdFNlZSB0aGUgZmlsZSBcJiMzNDtza2ZkZGkuY1wmIzM0OyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9lc3MuYy04LSAqXG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2ZwbHVzdG0uYy02LSAqXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvZnBsdXN0bS5jOjc6ICpcdFNlZSB0aGUgZmlsZSBcJiMzNDtza2ZkZGkuY1wmIzM0OyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9mcGx1c3RtLmMtOC0gKlxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL3RhcmdldG9zLmg9MTE4PXN0cnVjdCBzX3NtdF9vcyB7XG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2gvdGFyZ2V0b3MuaC0xNTctXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvaC90YXJnZXRvcy5oOjE1ODp0eXBlZGVmIHN0cnVjdCBzX3NtdF9vcyBza2ZkZGlfcHJpdjtcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL3RhcmdldG9zLmgtMTU5LVxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9od210bS5jLTYtICpcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9od210bS5jOjc6ICpcdFNlZSB0aGUgZmlsZSBcJiMzNDtza2ZkZGkuY1wmIzM0OyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9od210bS5jLTgtICpcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvaHd0LmMtNi0gKlxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2h3dC5jOjc6ICpcdFNlZSB0aGUgZmlsZSBcJiMzNDtza2ZkZGkuY1wmIzM0OyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9od3QuYy04LSAqXG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BjbXBsYy5jLTYtICpcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9wY21wbGMuYzo3OiAqXHRTZWUgdGhlIGZpbGUgXCYjMzQ7c2tmZGRpLmNcJiMzNDsgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvcGNtcGxjLmMtOC0gKlxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9wbWYuYy02LSAqXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvcG1mLmM6NzogKlx0U2VlIHRoZSBmaWxlIFwmIzM0O3NrZmRkaS5jXCYjMzQ7IGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLlxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BtZi5jLTgtICpcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvcXVldWUuYy02LSAqXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvcXVldWUuYzo3OiAqXHRTZWUgdGhlIGZpbGUgXCYjMzQ7c2tmZGRpLmNcJiMzNDsgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvcXVldWUuYy04LSAqXG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3JtdC5jLTYtICpcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9ybXQuYzo3OiAqXHRTZWUgdGhlIGZpbGUgXCYjMzQ7c2tmZGRpLmNcJiMzNDsgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvcm10LmMtOC0gKlxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0zLSAqIEZpbGUgTmFtZTpcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzo0OiAqICAgc2tmZGRpLmNcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy01LSAqXG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTM0LSAqICAgVGhlIG9ubHkgaGVhZGVyZmlsZXMgdGhhdCBhcmUgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGlzIHNvdXJjZVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjM1OiAqICAgYXJlIHNrZmRkaS5jLCBoL3R5cGVzLmgsIGgvb3NkZWYxc3QuaCwgaC90YXJnZXRvcy5oLlxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTM2LSAqICAgVGhlIG90aGVycyBiZWxvbmcgdG8gdGhlIFN5c0tvbm5lY3QgRkRESSBIYXJkd2FyZSBNb2R1bGUgYW5kXG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jPTE0OT1leHRlcm4gdm9pZCBlbmFibGVfdHhfaXJxKHN0cnVjdCBzX3NtYyAqc21jLCB1X3Nob3J0IHF1ZXVlKTtcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0xNTAtXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6MTUxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBza2ZkZGlfcGNpX3RibFtdID0ge1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTE1Mi1cdHsgUENJX1ZFTkRPUl9JRF9TSywgUENJX0RFVklDRV9JRF9TS19GUCwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgfSxcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMTU0LX07XG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6MTU1Ok1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBza2ZkZGlfcGNpX3RibCk7XG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMTU2LU1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtTeXNLb25uZWN0IEZEREkgUENJIGRyaXZlclwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jPTIwMz1zdGF0aWMgaW50IHNrZnBfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTIxOS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzoyMjA6XHRlcnIgPSBwY2lfcmVxdWVzdF9yZWdpb25zKHBkZXYsIFwmIzM0O3NrZmRkaVwmIzM0Oyk7XG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMjIxLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9MzgwPXN0YXRpYyAgaW50IHNrZnBfZHJpdmVyX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMzgyLVx0c3RydWN0IHNfc21jICpzbWMgPSBuZXRkZXZfcHJpdihkZXYpO1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjM4MzpcdHNrZmRkaV9wcml2ICpicCA9IFx1MDAyNnNtYy1cdTAwM2VvcztcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0zODQtXHRpbnQgZXJyID0gLUVJTztcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9NTQ5PXN0YXRpYyBpbnQgc2tmcF9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy01NTEtXHRzdHJ1Y3Qgc19zbWMgKnNtYyA9IG5ldGRldl9wcml2KGRldik7XG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6NTUyOlx0c2tmZGRpX3ByaXYgKmJwID0gXHUwMDI2c21jLVx1MDAzZW9zO1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTU1My1cbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9NjA2PXN0YXRpYyBpcnFyZXR1cm5fdCBza2ZwX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQpXG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTYwOS1cdHN0cnVjdCBzX3NtYyAqc21jO1x0LyogcHJpdmF0ZSBib2FyZCBzdHJ1Y3R1cmUgcG9pbnRlciAqL1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjYxMDpcdHNrZmRkaV9wcml2ICpicDtcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy02MTEtXG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jPTgzNz1zdGF0aWMgdm9pZCBza2ZwX2N0bF9zZXRfbXVsdGljYXN0X2xpc3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtODM5LVx0c3RydWN0IHNfc21jICpzbWMgPSBuZXRkZXZfcHJpdihkZXYpO1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjg0MDpcdHNrZmRkaV9wcml2ICpicCA9IFx1MDAyNnNtYy1cdTAwM2VvcztcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy04NDEtXHR1bnNpZ25lZCBsb25nIEZsYWdzO1xuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz05MjE9c3RhdGljIGludCBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqYWRkcilcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtOTI0LVx0c3RydWN0IHNvY2thZGRyICpwX3NvY2thZGRyID0gKHN0cnVjdCBzb2NrYWRkciAqKSBhZGRyO1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjkyNTpcdHNrZmRkaV9wcml2ICpicCA9IFx1MDAyNnNtYy1cdTAwM2VvcztcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy05MjYtXHR1bnNpZ25lZCBsb25nIEZsYWdzO1xuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz05NjI9c3RhdGljIGludCBza2ZwX3Npb2NkZXZwcml2YXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpZnJlcSAqcnEsIHZvaWQgX191c2VyICpkYXRhLCBpbnQgY21kKVxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy05NjQtXHRzdHJ1Y3Qgc19zbWMgKnNtYyA9IG5ldGRldl9wcml2KGRldik7XG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6OTY1Olx0c2tmZGRpX3ByaXYgKmxwID0gXHUwMDI2c21jLVx1MDAzZW9zO1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTk2Ni1cdHN0cnVjdCBzX3NrZnBfaW9jdGwgaW9jO1xuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz0xMDQ1PXN0YXRpYyBuZXRkZXZfdHhfdCBza2ZwX3NlbmRfcGt0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTEwNDgtXHRzdHJ1Y3Qgc19zbWMgKnNtYyA9IG5ldGRldl9wcml2KGRldik7XG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6MTA0OTpcdHNrZmRkaV9wcml2ICpicCA9IFx1MDAyNnNtYy1cdTAwM2VvcztcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0xMDUwLVxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz0xMTA4PXN0YXRpYyB2b2lkIHNlbmRfcXVldWVkX3BhY2tldHMoc3RydWN0IHNfc21jICpzbWMpXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMTEwOS17XG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6MTExMDpcdHNrZmRkaV9wcml2ICpicCA9IFx1MDAyNnNtYy1cdTAwM2VvcztcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0xMTExLVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9MTI4MD12b2lkIGxsY19yZXN0YXJ0X3R4KHN0cnVjdCBzX3NtYyAqc21jKVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTEyODEte1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjEyODI6XHRza2ZkZGlfcHJpdiAqYnAgPSBcdTAwMjZzbWMtXHUwMDNlb3M7XG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMTI4My1cbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9MTQ1MT12b2lkIGRtYV9jb21wbGV0ZShzdHJ1Y3Qgc19zbWMgKnNtYywgdm9sYXRpbGUgdW5pb24gc19mcF9kZXNjciAqZGVzY3IsIGludCBmbGFnKVxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0xNDY1LVx0aWYgKGZsYWcgXHUwMDI2IERNQV9XUikge1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjE0NjY6XHRcdHNrZmRkaV9wcml2ICpicCA9IFx1MDAyNnNtYy1cdTAwM2VvcztcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0xNDY3LVx0XHR2b2xhdGlsZSBzdHJ1Y3Qgc19zbXRfZnBfcnhkICpyID0gXHUwMDI2ZGVzY3ItXHUwMDNlcjtcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9MTU2ND12b2lkIG1hY19kcnZfcnhfY29tcGxldGUoc3RydWN0IHNfc21jICpzbWMsIHZvbGF0aWxlIHN0cnVjdCBzX3NtdF9mcF9yeGQgKnJ4ZCxcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMTU2Ni17XG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6MTU2NzpcdHNrZmRkaV9wcml2ICpicCA9IFx1MDAyNnNtYy1cdTAwM2VvcztcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0xNTY4LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9MTgyMj12b2lkIG1hY19kcnZfY2xlYXJfcnhkKHN0cnVjdCBzX3NtYyAqc21jLCB2b2xhdGlsZSBzdHJ1Y3Qgc19zbXRfZnBfcnhkICpyeGQsXG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTE4MzYtXHRcdGlmIChza2IgIT0gTlVMTCkge1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjE4Mzc6XHRcdFx0c2tmZGRpX3ByaXYgKmJwID0gXHUwMDI2c21jLVx1MDAzZW9zO1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTE4MzgtXHRcdFx0aW50IE1heEZyYW1lU2l6ZSA9IGJwLVx1MDAzZU1heEZyYW1lU2l6ZTtcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9MjIyMD12b2lkIGRydl9yZXNldF9pbmRpY2F0aW9uKHN0cnVjdCBzX3NtYyAqc21jKVxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0yMjI3LVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjIyMjg6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHNrZmRkaV9wY2lfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjIyMjk6XHQubmFtZVx0XHQ9IFwmIzM0O3NrZmRkaVwmIzM0OyxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzoyMjMwOlx0LmlkX3RhYmxlXHQ9IHNrZmRkaV9wY2lfdGJsLFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTIyMzEtXHQucHJvYmVcdFx0PSBza2ZwX2luaXRfb25lLFxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0yMjM0LVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjIyMzU6bW9kdWxlX3BjaV9kcml2ZXIoc2tmZGRpX3BjaV9kcml2ZXIpO1xuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9zbXQuYy02LSAqXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc210LmM6NzogKlx0U2VlIHRoZSBmaWxlIFwmIzM0O3NrZmRkaS5jXCYjMzQ7IGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLlxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NtdC5jLTgtICpcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc210ZGVmLmMtNi0gKlxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NtdGRlZi5jOjc6ICpcdFNlZSB0aGUgZmlsZSBcJiMzNDtza2ZkZGkuY1wmIzM0OyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9zbXRkZWYuYy04LSAqXG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NtdGluaXQuYy02LSAqXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc210aW5pdC5jOjc6ICpcdFNlZSB0aGUgZmlsZSBcJiMzNDtza2ZkZGkuY1wmIzM0OyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9zbXRpbml0LmMtOC0gKlxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9zbXR0aW1lci5jLTYtICpcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9zbXR0aW1lci5jOjc6ICpcdFNlZSB0aGUgZmlsZSBcJiMzNDtza2ZkZGkuY1wmIzM0OyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9zbXR0aW1lci5jLTgtICpcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc3JmLmMtNi0gKlxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NyZi5jOjc6ICpcdFNlZSB0aGUgZmlsZSBcJiMzNDtza2ZkZGkuY1wmIzM0OyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9zcmYuYy04LSAqXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDc6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzY4OAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgZHJpdmVyIGNvbmZpZ3VyYXRpb246CgoqKkludmVzdGlnYXRpbmcgdGhlIFNLRlAgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFNLRlAgZHJpdmVyIGlzIGNvbmZpZ3VyZWQuIEkga25vdyB0aGF0IEtjb25maWcgZmlsZXMgYXJlIHRoZSBzdGFuZGFyZCBmb3Iga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgc28gbXkgZmlyc3Qgc3RlcCBpcyBkZWZpbml0ZWx5IHRvIGRpdmUgaW50byBgZHJpdmVycy9uZXQvZmRkaS9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZSBkZXBlbmRlbmNpZXMsIGJ1aWxkIG9wdGlvbnMsIGFuZCBhbGwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyByZWxhdGVkIHRvIHRoZSBTS0ZQIGRyaXZlci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggb3B0aW9ucyBjb250cm9sIGl0cyBpbmNsdXNpb24sIGFueSBzcGVjaWZpYyBmZWF0dXJlcywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgbmV0d29yayBzdGFjay4gSSBhbnRpY2lwYXRlIHRoZXJlIG1pZ2h0IGJlIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgZmVhdHVyZXMgb3IgaGFyZHdhcmUsIHNvIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRob3NlIHRvby4gRXNzZW50aWFsbHksIEkmIzM5O20gdHJ5aW5nIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgaG93IHRoZSB1c2VyIGNhbiBlbmFibGUgb3IgZGlzYWJsZSB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyIHdpdGhpbiB0aGUgb3ZlcmFsbCBrZXJuZWwgYnVpbGQgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2ZkZGkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIEZEREkgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgRkRESVxuICAgNzpcdFx0dHJpc3RhdGUgXCYjMzQ7RkRESSBkcml2ZXIgc3VwcG9ydFwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiBQQ0kgfHwgRUlTQSB8fCBUQ1xuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBGaWJlciBEaXN0cmlidXRlZCBEYXRhIEludGVyZmFjZSBpcyBhIGhpZ2ggc3BlZWQgbG9jYWwgYXJlYSBuZXR3b3JrXG4gIDExOlx0XHQgIGRlc2lnbjsgZXNzZW50aWFsbHkgYSByZXBsYWNlbWVudCBmb3IgaGlnaCBzcGVlZCBFdGhlcm5ldC4gRkRESSBjYW5cbiAgMTI6XHRcdCAgcnVuIG92ZXIgY29wcGVyIG9yIGZpYmVyLiBJZiB5b3UgYXJlIGNvbm5lY3RlZCB0byBzdWNoIGEgbmV0d29yayBhbmRcbiAgMTM6XHRcdCAgd2FudCBhIGRyaXZlciBmb3IgdGhlIEZEREkgY2FyZCBpbiB5b3VyIGNvbXB1dGVyLCBzYXkgWSBoZXJlIChhbmRcbiAgMTQ6XHRcdCAgdGhlbiBhbHNvIFkgdG8gdGhlIGRyaXZlciBmb3IgeW91ciBGRERJIGNhcmQsIGJlbG93KS4gTW9zdCBwZW9wbGVcbiAgMTU6XHRcdCAgd2lsbCBzYXkgTi5cbiAgMTY6XHRcbiAgMTc6XHRpZiBGRERJXG4gIDE4Olx0XG4gIDE5Olx0Y29uZmlnIERFRlpBXG4gIDIwOlx0XHR0cmlzdGF0ZSBcJiMzNDtERUMgRkRESWNvbnRyb2xsZXIgNzAwLzcwMC1DIChERUZaQS14eCkgc3VwcG9ydFwmIzM0O1xuICAyMTpcdFx0ZGVwZW5kcyBvbiBGRERJIFx1MDAyNlx1MDAyNiBUQ1xuICAyMjpcdFx0aGVscFxuICAyMzpcdFx0ICBUaGlzIGlzIHN1cHBvcnQgZm9yIHRoZSBERUMgRkRESWNvbnRyb2xsZXIgNzAwIChERUZaQS1BQSwgZmliZXIpXG4gIDI0Olx0XHQgIGFuZCA3MDAtQyAoREVGWkEtQ0EsIGNvcHBlcikgVFVSQk9jaGFubmVsIG5ldHdvcmsgY2FyZHMgd2hpY2hcbiAgMjU6XHRcdCAgY2FuIGNvbm5lY3QgeW91IHRvIGEgbG9jYWwgRkRESSBuZXR3b3JrLlxuICAyNjpcdFxuICAyNzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gIDI4Olx0XHQgIHdpbGwgYmUgY2FsbGVkIGRlZnphLiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgMjk6XHRcbiAgMzA6XHRjb25maWcgREVGWFhcbiAgMzE6XHRcdHRyaXN0YXRlIFwmIzM0O0RpZ2l0YWwgREVGVEEvREVGRUEvREVGUEEgYWRhcHRlciBzdXBwb3J0XCYjMzQ7XG4gIDMyOlx0XHRkZXBlbmRzIG9uIEZEREkgXHUwMDI2XHUwMDI2IChQQ0kgfHwgRUlTQSB8fCBUQylcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgVGhpcyBpcyBzdXBwb3J0IGZvciB0aGUgRElHSVRBTCBzZXJpZXMgb2YgVFVSQk9jaGFubmVsIChERUZUQSksXG4gIDM1Olx0XHQgIEVJU0EgKERFRkVBKSBhbmQgUENJIChERUZQQSkgY29udHJvbGxlcnMgd2hpY2ggY2FuIGNvbm5lY3QgeW91XG4gIDM2Olx0XHQgIHRvIGEgbG9jYWwgRkRESSBuZXR3b3JrLlxuICAzNzpcdFxuICAzODpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gIDM5Olx0XHQgIHdpbGwgYmUgY2FsbGVkIGRlZnh4LiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNDA6XHRcbiAgNDE6XHRjb25maWcgU0tGUFxuICA0MjpcdFx0dHJpc3RhdGUgXCYjMzQ7U3lzS29ubmVjdCBGRERJIFBDSSBzdXBwb3J0XCYjMzQ7XG4gIDQzOlx0XHRkZXBlbmRzIG9uIEZEREkgXHUwMDI2XHUwMDI2IFBDSVxuICA0NDpcdFx0c2VsZWN0IEJJVFJFVkVSU0VcbiAgNDU6XHRcdGhlbHBcbiAgNDY6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3UgaGF2ZSBhIFN5c0tvbm5lY3QgRkRESSBQQ0kgYWRhcHRlci5cbiAgNDc6XHRcdCAgVGhlIGZvbGxvd2luZyBhZGFwdGVycyBhcmUgc3VwcG9ydGVkIGJ5IHRoaXMgZHJpdmVyOlxuICA0ODpcdFx0ICAtIFNLLTU1MjEgKFNLLU5FVCBGRERJLVVQKVxuICA0OTpcdFx0ICAtIFNLLTU1MjIgKFNLLU5FVCBGRERJLVVQIERBUylcbiAgNTA6XHRcdCAgLSBTSy01NTQxIChTSy1ORVQgRkRESS1GUClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNzoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjkyCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNjIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgU3lzS29ubmVjdCBGRERJIFBDSSBTdXBwb3J0IGluIFN5emthbGxlcioqCgpPa2F5LCBzbyBgU0tGUGAgaXMgY2xlYXJseSByZWZlcnJpbmcgdG8gU3lzS29ubmVjdCYjMzk7cyBGRERJIFBDSSBzdXBwb3J0LiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBoYXJkd2FyZSwgc3BlY2lmaWNhbGx5IHRoZSBTeXNLb25uZWN0IEZEREkgUENJIGFkYXB0ZXIsIGlzIGVpdGhlciBlbXVsYXRlZCB3aXRoaW4gUUVNVSBvciBhY2Nlc3NpYmxlIGluIHN5emthbGxlciYjMzk7cyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gTGV0JiMzOTtzIGRpZyBpbi4KClRoZSBmaXJzdCBzdGVwIGlzIHRvIGNvbmZpcm0gdGhlIGhhcmR3YXJlJiMzOTtzIGlkZW50aXR5LiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBwaHlzaWNhbCBQQ0kgaGFyZHdhcmUgZnJvbSBTeXNLb25uZWN0LCBzcGVjaWZpY2FsbHkgbW9kZWxzIGxpa2UgdGhlIFNLLTU1MjEsIFNLLTU1MjIsIGFuZCBzbyBvbi4gVGhpcyB1c2VzIGEgdmVuZG9yIElEIChQQ0lfVkVORE9SX0lEX1NLKSBhbmQgZGV2aWNlIElEIChQQ0lfREVWSUNFX0lEX1NLX0ZQKS4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IHdlIGFyZSBsaWtlbHkgZGVhbGluZyB3aXRoIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSwgd2hpY2ggaXMgb2Z0ZW4gcHJvYmxlbWF0aWMgaW4gdGhlIHZpcnR1YWxpemVkIGNvbnRleHQuIEkgbmVlZCB0byBrbm93IGlmIFFFTVUgb2ZmZXJzIGFuIGVtdWxhdGlvbiBmb3IgdGhpcy4KCkkmIzM5O3ZlIGdvdCB0byBjb25zdWx0IHRoZSBndWlkZWxpbmVzLCBzcGVjaWZpY2FsbHkgU2VjdGlvbiAyLCB3aGljaCBleHBsaWNpdGx5IGNhbGxzIG91dCAmIzM0O3N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSwmIzM0OyBzdWNoIGFzIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzLCB0aGF0IGRlcGVuZCBvbiBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCYjMzk7cyBhIHJlZCBmbGFnLgoKTm93IGxldCYjMzk7cyBjaGVjayB0aGUgZGV0YWlsczogYHNrZmRkaV9wY2lfdGJsYCBzaG93cyB0aGF0IHRoaXMgaXMgaW5kZWVkIHBoeXNpY2FsIFBDSSBGRERJIGhhcmR3YXJlIHdpdGggdmVuZG9yIElEIDB4MTE0OCBhbmQgZGV2aWNlIElEIDB4NDAwMC4gSXQmIzM5O3MgRkRESSDigJMgRmliZXIgRGlzdHJpYnV0ZWQgRGF0YSBJbnRlcmZhY2Ug4oCTIGEgbGVnYWN5IHRlY2hub2xvZ3kuIE15IGtub3dsZWRnZSBjb25maXJtcyB0aGF0IFN5c0tvbm5lY3QgRkRESSBQQ0kgY2FyZHMgYXJlIHBoeXNpY2FsIFBDSSBib2FyZHMsIG5vdCBzb21ldGhpbmcgdGhhdCBjYW4gYmUgZWFzaWx5IHZpcnR1YWxpemVkLgoKTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IFFFTVUmIzM5O3Mgc3RhbmRhcmQgbmV0d29yayBkZXZpY2UgZW11bGF0aW9uIGRvZXNuJiMzOTt0IGluY2x1ZGUgc3VwcG9ydCBmb3IgRkRESS4gVGhlIGVtdWxhdGVkIGRldmljZXMgYXJlIHRoaW5ncyBsaWtlIGUxMDAwLCBydGw4MTM5LCBhbmQgdmlydGlvLW5ldC1wY2kg4oCTIG5vbmUgb2YgdGhvc2Ugc3VwcG9ydCBGRERJLCB3aGljaCBhbGlnbnMgd2l0aCBteSBwYXN0IG9ic2VydmF0aW9ucy4KCldpdGhvdXQgUUVNVSBlbXVsYXRpb24gb3IgYSBwaHlzaWNhbCBkZXZpY2UsIGBza2ZwX2luaXRfb25lYCwgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiwgaXMgbmV2ZXIgY2FsbGVkLiBUaGlzIG1lYW5zIHRoZSBgbmV0X2RldmljZWAgZm9yIHRoZSBGRERJIGNhcmQgaXMgbmV2ZXIgcmVnaXN0ZXJlZC4gQXMgYSByZXN1bHQsIGNyaXRpY2FsIGZ1bmN0aW9ucyBsaWtlIGBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3NgIGFyZSB1bnJlYWNoYWJsZS4gVGhpcyBpcyBhIGRlYWQgZW5kIHVubGVzcyB0aGVyZSYjMzk7cyBhIHdvcmthcm91bmQuCgpJIG5lZWQgdG8gY29uZmlybSB0aGVyZSYjMzk7cyBhYnNvbHV0ZWx5IG5vIG90aGVyIHdheSB0byByZWFjaCBgc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzYC4gYHNrZnBfY3RsX3NldF9tYWNfYWRkcmVzc2AgaXMgZWZmZWN0aXZlbHkgdGhlIGBuZG9fc2V0X21hY19hZGRyZXNzYCBmb3IgdGhpcyBwYXJ0aWN1bGFyIG5ldGRldi4gVGhpcyBuZXRkZXYgaXMgcmVnaXN0ZXJlZCB3aXRoaW4gYHNrZnBfaW5pdF9vbmVgLiBMZXQmIzM5O3MgdGFrZSBhIGxvb2sgaW5zaWRlIGBkcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmNgIHRvIGNvbmZpcm0gbXkgZmluZGluZ3MgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHVuZXhwZWN0ZWQgZW50cnkgcG9pbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA3OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMDA6XHQgKiAgIGluaXRpYWxpemVkIGFuZCB0aGUgYm9hcmQgcmVzb3VyY2VzIGFyZSByZWFkIGFuZCBzdG9yZWQgaW5cbiAyMDE6XHQgKiAgIHRoZSBkZXZpY2Ugc3RydWN0dXJlLlxuIDIwMjpcdCAqL1xuIDIwMzpcdHN0YXRpYyBpbnQgc2tmcF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiAyMDQ6XHRcdFx0XHRcdGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4gMjA1Olx0e1xuIDIwNjpcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldjtcbiAyMDc6XHRcdHN0cnVjdCBzX3NtYyAqc21jO1x0LyogYm9hcmQgcG9pbnRlciAqL1xuIDIwODpcdFx0dm9pZCBfX2lvbWVtICptZW07XG4gMjA5Olx0XHRpbnQgZXJyO1xuIDIxMDpcdFxuIDIxMTpcdFx0cHJfZGVidWcoXCYjMzQ7ZW50ZXJpbmcgc2tmcF9pbml0X29uZVxcblwmIzM0Oyk7XG4gMjEyOlx0XG4gMjEzOlx0XHRpZiAobnVtX2JvYXJkcyA9PSAwKSBcbiAyMTQ6XHRcdFx0cHJpbnRrKFwmIzM0OyVzXFxuXCYjMzQ7LCBib290X21zZyk7XG4gMjE1Olx0XG4gMjE2Olx0XHRlcnIgPSBwY2lfZW5hYmxlX2RldmljZShwZGV2KTtcbiAyMTc6XHRcdGlmIChlcnIpXG4gMjE4Olx0XHRcdHJldHVybiBlcnI7XG4gMjE5Olx0XG4gMjIwOlx0XHRlcnIgPSBwY2lfcmVxdWVzdF9yZWdpb25zKHBkZXYsIFwmIzM0O3NrZmRkaVwmIzM0Oyk7XG4gMjIxOlx0XHRpZiAoZXJyKVxuIDIyMjpcdFx0XHRnb3RvIGVycl9vdXQxO1xuIDIyMzpcdFxuIDIyNDpcdFx0cGNpX3NldF9tYXN0ZXIocGRldik7XG4gMjI1Olx0XG4gMjI2Olx0I2lmZGVmIE1FTV9NQVBQRURfSU9cbiAyMjc6XHRcdGlmICghKHBjaV9yZXNvdXJjZV9mbGFncyhwZGV2LCAwKSBcdTAwMjYgSU9SRVNPVVJDRV9NRU0pKSB7XG4gMjI4Olx0XHRcdHByaW50ayhLRVJOX0VSUiBcJiMzNDtza2ZwOiByZWdpb24gaXMgbm90IGFuIE1NSU8gcmVzb3VyY2VcXG5cJiMzNDspO1xuIDIyOTpcdFx0XHRlcnIgPSAtRUlPO1xuIDIzMDpcdFx0XHRnb3RvIGVycl9vdXQyO1xuIDIzMTpcdFx0fVxuIDIzMjpcdFxuIDIzMzpcdFx0bWVtID0gaW9yZW1hcChwY2lfcmVzb3VyY2Vfc3RhcnQocGRldiwgMCksIDB4NDAwMCk7XG4gMjM0Olx0I2Vsc2VcbiAyMzU6XHRcdGlmICghKHBjaV9yZXNvdXJjZV9mbGFncyhwZGV2LCAxKSBcdTAwMjYgSU9fUkVTT1VSQ0VfSU8pKSB7XG4gMjM2Olx0XHRcdHByaW50ayhLRVJOX0VSUiBcJiMzNDtza2ZwOiByZWdpb24gaXMgbm90IFBJTyByZXNvdXJjZVxcblwmIzM0Oyk7XG4gMjM3Olx0XHRcdGVyciA9IC1FSU87XG4gMjM4Olx0XHRcdGdvdG8gZXJyX291dDI7XG4gMjM5Olx0XHR9XG4gMjQwOlx0XG4gMjQxOlx0XHRtZW0gPSBpb3BvcnRfbWFwKHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCAxKSwgRlBfSU9fTEVOKTtcbiAyNDI6XHQjZW5kaWZcbiAyNDM6XHRcdGlmICghbWVtKSB7XG4gMjQ0Olx0XHRcdHByaW50ayhLRVJOX0VSUiBcJiMzNDtza2ZwOiAgVW5hYmxlIHRvIG1hcCByZWdpc3RlciwgXCYjMzQ7XG4gMjQ1Olx0XHRcdFx0XHRcJiMzNDtGRERJIGFkYXB0ZXIgd2lsbCBiZSBkaXNhYmxlZC5cXG5cJiMzNDspO1xuIDI0NjpcdFx0XHRlcnIgPSAtRUlPO1xuIDI0NzpcdFx0XHRnb3RvIGVycl9vdXQyO1xuIDI0ODpcdFx0fVxuIDI0OTpcdFxuIDI1MDpcdFx0ZGV2ID0gYWxsb2NfZmRkaWRldihzaXplb2Yoc3RydWN0IHNfc21jKSk7XG4gMjUxOlx0XHRpZiAoIWRldikge1xuIDI1MjpcdFx0XHRwcmludGsoS0VSTl9FUlIgXCYjMzQ7c2tmcDogVW5hYmxlIHRvIGFsbG9jYXRlIGZkZGkgZGV2aWNlLCBcJiMzNDtcbiAyNTM6XHRcdFx0XHRcdFwmIzM0O0ZEREkgYWRhcHRlciB3aWxsIGJlIGRpc2FibGVkLlxcblwmIzM0Oyk7XG4gMjU0Olx0XHRcdGVyciA9IC1FTk9NRU07XG4gMjU1Olx0XHRcdGdvdG8gZXJyX291dDM7XG4gMjU2Olx0XHR9XG4gMjU3Olx0XG4gMjU4Olx0XHRkZXYtXHUwMDNlaXJxID0gcGRldi1cdTAwM2VpcnE7XG4gMjU5Olx0XHRkZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNnNrZnBfbmV0ZGV2X29wcztcbiAyNjA6XHRcbiAyNjE6XHRcdFNFVF9ORVRERVZfREVWKGRldiwgXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuIDI2MjpcdFxuIDI2MzpcdFx0LyogSW5pdGlhbGl6ZSBib2FyZCBzdHJ1Y3R1cmUgd2l0aCBidXMtc3BlY2lmaWMgaW5mbyAqL1xuIDI2NDpcdFx0c21jID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiAyNjU6XHRcdHNtYy1cdTAwM2Vvcy5kZXYgPSBkZXY7XG4gMjY2Olx0XHRzbWMtXHUwMDNlb3MuYnVzX3R5cGUgPSBTS19CVVNfVFlQRV9QQ0k7XG4gMjY3Olx0XHRzbWMtXHUwMDNlb3MucGRldiA9ICpwZGV2O1xuIDI2ODpcdFx0c21jLVx1MDAzZW9zLlF1ZXVlU2tiID0gTUFYX1RYX1FVRVVFX0xFTjtcbiAyNjk6XHRcdHNtYy1cdTAwM2Vvcy5NYXhGcmFtZVNpemUgPSBNQVhfRlJBTUVfU0laRTtcbiAyNzA6XHRcdHNtYy1cdTAwM2Vvcy5kZXYgPSBkZXY7XG4gMjcxOlx0XHRzbWMtXHUwMDNlaHcuc2xvdCA9IC0xO1xuIDI3MjpcdFx0c21jLVx1MDAzZWh3LmlvcCA9IG1lbTtcbiAyNzM6XHRcdHNtYy1cdTAwM2Vvcy5SZXNldFJlcXVlc3RlZCA9IEZBTFNFO1xuIDI3NDpcdFx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZzbWMtXHUwMDNlb3MuU2VuZFNrYlF1ZXVlKTtcbiAyNzU6XHRcbiAyNzY6XHRcdGRldi1cdTAwM2ViYXNlX2FkZHIgPSAodW5zaWduZWQgbG9uZyltZW07XG4gMjc3Olx0XG4gMjc4Olx0XHRlcnIgPSBza2ZwX2RyaXZlcl9pbml0KGRldik7XG4gMjc5Olx0XHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA3OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMjA3CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIGBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3NgKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gYHNrZnBfY3RsX3NldF9tYWNfYWRkcmVzc2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBzY29wZSBhbmQgaW1wYWN0LiBNeSBmaXJzdCBzdGVwIGlzIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkIGFuZCB3aGVyZSBpdCYjMzk7cyByZWZlcmVuY2VkIHdpdGhpbiB0aGUgY29kZWJhc2UuIEkgd2FudCB0byBidWlsZCBhIHF1aWNrIG1hcCBpbiBteSBoZWFkIG9mIGl0cyB1c2FnZS4gVGhpcyB3aWxsIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciBldmFsdWF0aW5nIGl0cyBiZWhhdmlvciwgcG90ZW50aWFsIGlzc3Vlcywgb3IgYXJlYXMgZm9yIG9wdGltaXphdGlvbiwgZGVwZW5kaW5nIG9uIHdoYXQgSSYjMzk7bSBsb29raW5nIGludG8gcmlnaHQgbm93LiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIGNhbGwgZ3JhcGggcmV2ZWFscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDc6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2tmcF9jdGxfc2V0X21hY19hZGRyZXNzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz0xMDY9c3RhdGljIHZvaWQgc2tmcF9jdGxfc2V0X211bHRpY2FzdF9saXN0X3dvX2xvY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6MTA3OnN0YXRpYyBpbnQgc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKmFkZHIpO1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTEwOC1zdGF0aWMgaW50IHNrZnBfc2lvY2RldnByaXZhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICpycSxcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9MTY0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgc2tmcF9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0xNjktXHQubmRvX3NldF9yeF9tb2RlXHQ9IHNrZnBfY3RsX3NldF9tdWx0aWNhc3RfbGlzdCxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzoxNzA6XHQubmRvX3NldF9tYWNfYWRkcmVzc1x0PSBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3MsXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMTcxLVx0Lm5kb19zaW9jZGV2cHJpdmF0ZVx0PSBza2ZwX3Npb2NkZXZwcml2YXRlLFxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz04NTA9c3RhdGljIHZvaWQgc2tmcF9jdGxfc2V0X211bHRpY2FzdF9saXN0X3dvX2xvY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtOTAzLSAqID09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjkwNDogKiA9IHNrZnBfY3RsX3NldF9tYWNfYWRkcmVzcyA9XG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtOTA1LSAqID09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy05MjAtICovXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6OTIxOnN0YXRpYyBpbnQgc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKmFkZHIpXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtOTIyLXtcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtOTM1LVx0cmV0dXJuIDA7XHRcdC8qIGFsd2F5cyByZXR1cm4gemVybyAqL1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjkzNjp9XHRcdFx0XHQvLyBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3NcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy05MzctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA3OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMDQ0CgkJCQkJCQlvdXRwdXQ6IDE0NgoJCQkJCQkJdGhvdWdodHM6IDQzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgc2tmcGAgRkRESSBEcml2ZXImIzM5O3MgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgYGRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9gIGRpcmVjdG9yeSBjb250YWlucyB0aGUgUENJIGRyaXZlciBmb3IgdGhvc2Ugb2xkIFN5c0tvbm5lY3QgRkRESSBuZXR3b3JrIGFkYXB0ZXJzLiBSaWdodCBhd2F5LCBJIHNlZSBhIHByb2JsZW06IHRoaXMgZHJpdmVyIG5lZWRzIGFjdHVhbCBwaHlzaWNhbCBQQ0kgaGFyZHdhcmUsIGEgU3lzS29ubmVjdCBGRERJIGNhcmQgc3BlY2lmaWNhbGx5ICh2ZW5kb3IgSUQgYDB4MTE0OGAsIGRldmljZSBJRCBgMHg0MDAwYCkuIFRoYXQmIzM5O3MgYSBkZWFsLWJyZWFrZXIgYmVjYXVzZSBzdGFuZGFyZCBRRU1VIGFuZCBzeXprYWxsZXIgZW52aXJvbm1lbnRzICpkb24mIzM5O3QqIGVtdWxhdGUgdGhpcyBraW5kIG9mIGxlZ2FjeSBoYXJkd2FyZS4KClNvLCB0aGUgbW9kaWZpZWQgY29kZSBpbiBgc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzYCBpcyBlZmZlY3RpdmVseSB1bnJlYWNoYWJsZSBpbiBvdXIgdHlwaWNhbCB2aXJ0dWFsaXplZCBmdXp6aW5nIHNldHVwcy4gV2UgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgdGhpcyBpcyB0cnVlLCBzbyBsZXQmIzM5O3MgY3Jvc3MtY2hlY2s6CgoqICAgKipVbnJlYWNoYWJsZSBIYXJkd2FyZToqKiBEb2VzIHRoZSBtb2RpZmljYXRpb24gZGVwZW5kIG9uIHNwZWNpYWwgaGFyZHdhcmU/IFllcy4gSXQmIzM5O3MgYSBjbGFzc2ljIHBoeXNpY2FsIG5ldHdvcmsgY2FyZCBkcml2ZXIuIEl0JiMzOTtzIG5vdCBsaWtlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggZW11bGF0ZWQgY29tcG9uZW50cy4KKiAgICoqSGFyZHdhcmUgRGVwZW5kZW5jaWVzOioqIFRoaXMgaXMgYSBjbGVhciBjYXNlIG9mIGEgZHJpdmVyIHRoYXQgb25seSB3b3JrcyB3aXRoIHBoeXNpY2FsIEFTSUNzL1BDSWUgY2FyZHMuIFRoaXMgaGFyZHdhcmUgaXMgbm90IHN1cHBvcnRlZCBieSBRRU1VIGVtdWxhdGlvbi4KClRoZXJlZm9yZSwgYmVjYXVzZSB0aGlzIGRyaXZlciBpcyBzb2xlbHkgZGVwZW5kZW50IG9uIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBvdXIgcHJpbWFyeSB0ZXN0IGVudmlyb25tZW50cywgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGRlZmluaXRlbHkgYmUgYGZhbHNlYC4KCkZvciBjb25maWd1cmF0aW9ucywgd2Ugc2hvdWxkIHNldCBgRW5hYmxlQ29uZmlnc2AgdG8gaW5jbHVkZSBtaW5pbWFsIHJlbGV2YW50IGNvbmZpZ3M7IGBbJiMzNDtGRERJJiMzNDssICYjMzQ7U0tGUCYjMzQ7LCAmIzM0O1BDSSYjMzQ7XWAgaXMgcHJvYmFibHkgYXBwcm9wcmlhdGUsIG9yIHBvc3NpYmx5IGV2ZW4gYW4gZW1wdHkgbGlzdCwgYmVjYXVzZSB0aGVyZSBpcyBubyBiZW5lZml0IHRvIGVuYWJsaW5nIGl0LgoKU2luY2UgdGhlIGZ1enppbmcgaXMgbm90IHdvcnRoIGl0LCB3ZSBkb24mIzM5O3QgbmVlZCB0byBzcGVjaWZ5IGBGb2N1c1N5bWJvbHNgLiBTbyBgRm9jdXNTeW1ib2xzYCBzaG91bGQgYmUgc2V0IHRvIGBbXWAuCgpUbyByZWluZm9yY2UgdGhpcywgbGV0JiMzOTtzIHN0ZXAgdGhyb3VnaCB0aGUgcmVhc29uaW5nIG9uY2UgbW9yZToKCjEuICBXZSYjMzk7cmUgbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgbW9kaWZpZXMgYHNrZnBfY3RsX3NldF9tYWNfYWRkcmVzc2AgaW4gYGRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuY2AuCjIuICBUaGF0IGZpbGUgaXMgcGFydCBvZiB0aGUgU3lzS29ubmVjdCBGRERJIFBDSSBhZGFwdGVyIGRyaXZlciAoYENPTkZJR19TS0ZQYCkuCjMuICBUaGlzIGRyaXZlciAqb25seSogd29ya3Mgd2l0aCBwaHlzaWNhbCBTeXNLb25uZWN0IEZEREkgUENJIGhhcmR3YXJlIHdpdGggdGhhdCBzcGVjaWZpYyBQQ0kgSUQuCjQuICBTdGFuZGFyZCBRRU1VIGFuZCBzeXprYWxsZXIgZG9uJiMzOTt0IGVtdWxhdGUgdGhpcy4KNS4gIFRodXMsIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLgoKT2theSwgdGhhdCBjb25maXJtcyBpdC4gVGltZSB0byBmaW5hbGl6ZSB0aGUgYXNzZXNzbWVudCBhbmQgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RkRESSYjMzQ7LAogICAgJiMzNDtTS0ZQJiMzNDssCiAgICAmIzM0O1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3MgaW4gZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLCB3aGljaCBpcyB0aGUgZHJpdmVyIGZvciBsZWdhY3kgU3lzS29ubmVjdCBGRERJIFBDSSBhZGFwdGVycyAoQ09ORklHX1NLRlApLiBUaGlzIGRyaXZlciBiaW5kcyB0byBzcGVjaWZpYyBwaHlzaWNhbCBQQ0kgaGFyZHdhcmUgKFBDSSBJRCAweDExNDg6MHg0MDAwKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIC8gc3l6a2FsbGVyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZEREkmIzM0OywKICAgICYjMzQ7U0tGUCYjMzQ7LAogICAgJiMzNDtQQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzIGluIGRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYywgd2hpY2ggaXMgdGhlIGRyaXZlciBmb3IgbGVnYWN5IFN5c0tvbm5lY3QgRkRESSBQQ0kgYWRhcHRlcnMgKENPTkZJR19TS0ZQKS4gVGhpcyBkcml2ZXIgYmluZHMgdG8gc3BlY2lmaWMgcGh5c2ljYWwgUENJIGhhcmR3YXJlIChQQ0kgSUQgMHgxMTQ4OjB4NDAwMCkgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSAvIHN5emthbGxlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNzoxNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTBUMDc6MTQ6MzMuMTAyNzMyMjA2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE0NzkwMTk2MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRkRESVwiLFxuICAgIFwiU0tGUFwiLFxuICAgIFwiUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3MgaW4gZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLCB3aGljaCBpcyB0aGUgZHJpdmVyIGZvciBsZWdhY3kgU3lzS29ubmVjdCBGRERJIFBDSSBhZGFwdGVycyAoQ09ORklHX1NLRlApLiBUaGlzIGRyaXZlciBiaW5kcyB0byBzcGVjaWZpYyBwaHlzaWNhbCBQQ0kgaGFyZHdhcmUgKFBDSSBJRCAweDExNDg6MHg0MDAwKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIC8gc3l6a2FsbGVyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA3OjE0OjMzLjEwMjczNzU2NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIyNDgyMDk2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQzMGE2MWJhNDY4NDFjZjY0YjEyMWVkN2YyZTU4MDZmNDJiMWFlMWZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBTZXAgMTAgMDc6MTQ6MzEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jXFxuaW5kZXggYTI3MzM2MmM5ZTcwMy4uZmVlYTdiYWE0ODE2OCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmNcXG4rKysgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmNcXG5AQCAtOTI4LDcgKzkyOCw4IEBAIHN0YXRpYyBpbnQgc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKmFkZHIpXFxuIFxcbiBcXHRkZXZfYWRkcl9zZXQoZGV2LCBwX3NvY2thZGRyLVxcdTAwM2VzYV9kYXRhKTtcXG4gXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmJwLVxcdTAwM2VEcml2ZXJMb2NrLCBGbGFncyk7XFxuLVxcdFJlc2V0QWRhcHRlcihzbWMpO1xcbitcXHRpZiAobmV0aWZfcnVubmluZyhkZXYpKVxcbitcXHRcXHRSZXNldEFkYXB0ZXIoc21jKTtcXG4gXFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2YnAtXFx1MDAzZURyaXZlckxvY2ssIEZsYWdzKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcdFxcdC8qIGFsd2F5cyByZXR1cm4gemVybyAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNzoxNDozNC4zMjg0NjU2NTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQwMjUzMjY5NzQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZERElcIixcbiAgICBcIlNLRlBcIixcbiAgICBcIlBDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3MgaW4gZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLCB3aGljaCBpcyB0aGUgZHJpdmVyIGZvciBsZWdhY3kgU3lzS29ubmVjdCBGRERJIFBDSSBhZGFwdGVycyAoQ09ORklHX1NLRlApLiBUaGlzIGRyaXZlciBiaW5kcyB0byBzcGVjaWZpYyBwaHlzaWNhbCBQQ0kgaGFyZHdhcmUgKFBDSSBJRCAweDExNDg6MHg0MDAwKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIC8gc3l6a2FsbGVyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDMwYTYxYmE0Njg0MWNmNjRiMTIxZWQ3ZjJlNTgwNmY0MmIxYWUxZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDA3OjE0OjMxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jXG5pbmRleCBhMjczMzYyYzllNzAzLi5mZWVhN2JhYTQ4MTY4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jXG4rKysgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmNcbkBAIC05MjgsNyArOTI4LDggQEAgc3RhdGljIGludCBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqYWRkcilcbiBcbiBcdGRldl9hZGRyX3NldChkZXYsIHBfc29ja2FkZHItXHUwMDNlc2FfZGF0YSk7XG4gXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZicC1cdTAwM2VEcml2ZXJMb2NrLCBGbGFncyk7XG4tXHRSZXNldEFkYXB0ZXIoc21jKTtcbitcdGlmIChuZXRpZl9ydW5uaW5nKGRldikpXG4rXHRcdFJlc2V0QWRhcHRlcihzbWMpO1xuIFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZicC1cdTAwM2VEcml2ZXJMb2NrLCBGbGFncyk7XG4gXG4gXHRyZXR1cm4gMDtcdFx0LyogYWx3YXlzIHJldHVybiB6ZXJvICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNzoxNDozNC4zMjg0NjcwMjdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo5MjY3OTE3NzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgcmV2aWV3aW5nIHRoaXMgcGF0Y2g6XG5cbioqQW5hbHl6aW5nIHRoZSBOZXR3b3JrIERyaXZlciBDaGFuZ2UqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gVGhlIGZpcnN0IHN0ZXAgaXMgYWx3YXlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2UgYW5kIHRoZSBwb3RlbnRpYWwgaW1wYWN0LiBJIHNlZSB0aGUgZmlsZSBjaGFuZ2VkIGlzIGBkcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmNgLiBUaGF0IHRlbGxzIG1lIHRoaXMgaXMgcmVsYXRlZCB0byB0aGUgRkRESSAoRmliZXIgRGlzdHJpYnV0ZWQgRGF0YSBJbnRlcmZhY2UpIG5ldHdvcmsgZHJpdmVyIGZvciB0aGUgU0tGUCBoYXJkd2FyZS5cblxuTm93LCBiZWZvcmUgSSBldmVuIGxvb2sgYXQgdGhlIGNvZGUgaXRzZWxmLCBJIG5lZWQgdGhlIGNvbnRleHQuIFdoYXQgaGFyZHdhcmUgYXJlIHdlIGFjdHVhbGx5IHRhbGtpbmcgYWJvdXQgaGVyZT8gSXMgdGhpcyBzdGlsbCByZWxldmFudCBoYXJkd2FyZT8gSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIHRvIHNlZSBob3cgdGhpcyBkcml2ZXIgaXMgY29uZmlndXJlZC4gSXMgaXQgZW5hYmxlZCBieSBkZWZhdWx0PyBJcyBpdCBidWlsdCBhcyBhIG1vZHVsZSwgb3IgYnVpbHQgaW4/IFdoYXQgZGVwZW5kZW5jaWVzIGRvZXMgaXQgaGF2ZT8gSSBuZWVkIHRvIGFzY2VydGFpbiBpZiB0aGlzIGlzIGEgXCJyZWFjaGFibGVcIiBwaWVjZSBvZiBoYXJkd2FyZSBpbiBvdXIgY3VycmVudCBlY29zeXN0ZW0sIG9yIGlmIGl0J3MgcG90ZW50aWFsbHkgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlxuXG5NeSBuZXh0IG1vdmUgaXMgdG8gdXNlIGBnaXQgZ3JlcGAgb3Igc2VhcmNoIHRoZSBLY29uZmlnIGZpbGVzIGFyb3VuZCBgZHJpdmVycy9uZXQvZmRkaS9za2ZwL2AgdG8gdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGlzIGRyaXZlciBpcyBidWlsdCBhbmQgaW5jbHVkZWQgaW4gdGhlIGtlcm5lbC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBoYXJkd2FyZSBpdCBzdXBwb3J0cyBhbmQgdGhlIHRhcmdldCBwbGF0Zm9ybXMuIFRoaXMgaXMgY3J1Y2lhbCBiZWZvcmUgSSBldmVuIGNvbnNpZGVyIHRoZSBjb2RlIGl0c2VsZi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkxOSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDc6MTQ6NDMuNTk2Mzg3MDQzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTg1MTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNrZmRkaVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9mZGRpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9NYWtlZmlsZT02PW9iai0kKENPTkZJR19TS0ZQKSArPSBza2ZwLm9cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvTWFrZWZpbGUtNy1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvTWFrZWZpbGU6ODpza2ZwLW9ianMgOj0gIHNrZmRkaS5vICAgIGh3bXRtLm8gICAgZnBsdXN0bS5vICBzbXQubyAgICAgIGNmbS5vICAgICBcXFxcXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL01ha2VmaWxlLTktICAgICAgICAgICAgICBlY20ubyAgICAgICBwY21wbGMubyAgIHBtZi5vICAgICAgcXVldWUubyAgICBybXQubyAgICAgXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL01ha2VmaWxlLTE1LSMgICBzd2l0Y2hlZCBvZmYgYmVsb3cpLCBidXQgSSBkaWQgbm90IGZpeCB0aGlzLCBiZWNhdXNlIHRoZSBIYXJkd2FyZVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9NYWtlZmlsZToxNjojICAgTW9kdWxlIHNvdXJjZSAoc2VlIHNrZmRkaS5jIGZvciBkZXRhaWxzKSBpcyB1c2VkIGZvciBkaWZmZXJlbnRcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvTWFrZWZpbGUtMTctIyAgIGRyaXZlcnMsIGFuZCBmaXhpbmcgaXQgZm9yIExpbnV4IG1pZ2h0IGJyaW5nIHByb2JsZW1zIG9uIG90aGVyXFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvY2ZtLmMtNi0gKlxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9jZm0uYzo3OiAqXFx0U2VlIHRoZSBmaWxlIFxcXCJza2ZkZGkuY1xcXCIgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2NmbS5jLTgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9kcnZmYmkuYy02LSAqXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2RydmZiaS5jOjc6ICpcXHRTZWUgdGhlIGZpbGUgXFxcInNrZmRkaS5jXFxcIiBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvZHJ2ZmJpLmMtOC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2VjbS5jLTYtICpcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvZWNtLmM6NzogKlxcdFNlZSB0aGUgZmlsZSBcXFwic2tmZGRpLmNcXFwiIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLlxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9lY20uYy04LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvZXNzLmMtNi0gKlxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9lc3MuYzo3OiAqXFx0U2VlIHRoZSBmaWxlIFxcXCJza2ZkZGkuY1xcXCIgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2Vzcy5jLTgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9mcGx1c3RtLmMtNi0gKlxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9mcGx1c3RtLmM6NzogKlxcdFNlZSB0aGUgZmlsZSBcXFwic2tmZGRpLmNcXFwiIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLlxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9mcGx1c3RtLmMtOC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2gvdGFyZ2V0b3MuaD0xMTg9c3RydWN0IHNfc210X29zIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL3RhcmdldG9zLmgtMTU3LVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL3RhcmdldG9zLmg6MTU4OnR5cGVkZWYgc3RydWN0IHNfc210X29zIHNrZmRkaV9wcml2O1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL3RhcmdldG9zLmgtMTU5LVxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2h3bXRtLmMtNi0gKlxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9od210bS5jOjc6ICpcXHRTZWUgdGhlIGZpbGUgXFxcInNrZmRkaS5jXFxcIiBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvaHdtdG0uYy04LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvaHd0LmMtNi0gKlxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9od3QuYzo3OiAqXFx0U2VlIHRoZSBmaWxlIFxcXCJza2ZkZGkuY1xcXCIgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2h3dC5jLTgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9wY21wbGMuYy02LSAqXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BjbXBsYy5jOjc6ICpcXHRTZWUgdGhlIGZpbGUgXFxcInNrZmRkaS5jXFxcIiBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvcGNtcGxjLmMtOC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BtZi5jLTYtICpcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvcG1mLmM6NzogKlxcdFNlZSB0aGUgZmlsZSBcXFwic2tmZGRpLmNcXFwiIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLlxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9wbWYuYy04LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvcXVldWUuYy02LSAqXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3F1ZXVlLmM6NzogKlxcdFNlZSB0aGUgZmlsZSBcXFwic2tmZGRpLmNcXFwiIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLlxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9xdWV1ZS5jLTgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9ybXQuYy02LSAqXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3JtdC5jOjc6ICpcXHRTZWUgdGhlIGZpbGUgXFxcInNrZmRkaS5jXFxcIiBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvcm10LmMtOC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTMtICogRmlsZSBOYW1lOlxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzo0OiAqICAgc2tmZGRpLmNcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtNS0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTM0LSAqICAgVGhlIG9ubHkgaGVhZGVyZmlsZXMgdGhhdCBhcmUgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGlzIHNvdXJjZVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzozNTogKiAgIGFyZSBza2ZkZGkuYywgaC90eXBlcy5oLCBoL29zZGVmMXN0LmgsIGgvdGFyZ2V0b3MuaC5cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMzYtICogICBUaGUgb3RoZXJzIGJlbG9uZyB0byB0aGUgU3lzS29ubmVjdCBGRERJIEhhcmR3YXJlIE1vZHVsZSBhbmRcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz0xNDk9ZXh0ZXJuIHZvaWQgZW5hYmxlX3R4X2lycShzdHJ1Y3Qgc19zbWMgKnNtYywgdV9zaG9ydCBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTE1MC1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6MTUxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBza2ZkZGlfcGNpX3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0xNTItXFx0eyBQQ0lfVkVORE9SX0lEX1NLLCBQQ0lfREVWSUNFX0lEX1NLX0ZQLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTE1NC19O1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzoxNTU6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHNrZmRkaV9wY2lfdGJsKTtcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMTU2LU1PRFVMRV9ERVNDUklQVElPTihcXFwiU3lzS29ubmVjdCBGRERJIFBDSSBkcml2ZXJcXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz0yMDM9c3RhdGljIGludCBza2ZwX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTIxOS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6MjIwOlxcdGVyciA9IHBjaV9yZXF1ZXN0X3JlZ2lvbnMocGRldiwgXFxcInNrZmRkaVxcXCIpO1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0yMjEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz0zODA9c3RhdGljICBpbnQgc2tmcF9kcml2ZXJfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTM4Mi1cXHRzdHJ1Y3Qgc19zbWMgKnNtYyA9IG5ldGRldl9wcml2KGRldik7XFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjM4MzpcXHRza2ZkZGlfcHJpdiAqYnAgPSBcXHUwMDI2c21jLVxcdTAwM2VvcztcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMzg0LVxcdGludCBlcnIgPSAtRUlPO1xcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jPTU0OT1zdGF0aWMgaW50IHNrZnBfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy01NTEtXFx0c3RydWN0IHNfc21jICpzbWMgPSBuZXRkZXZfcHJpdihkZXYpO1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzo1NTI6XFx0c2tmZGRpX3ByaXYgKmJwID0gXFx1MDAyNnNtYy1cXHUwMDNlb3M7XFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTU1My1cXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz02MDY9c3RhdGljIGlycXJldHVybl90IHNrZnBfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy02MDktXFx0c3RydWN0IHNfc21jICpzbWM7XFx0LyogcHJpdmF0ZSBib2FyZCBzdHJ1Y3R1cmUgcG9pbnRlciAqL1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzo2MTA6XFx0c2tmZGRpX3ByaXYgKmJwO1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy02MTEtXFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9ODM3PXN0YXRpYyB2b2lkIHNrZnBfY3RsX3NldF9tdWx0aWNhc3RfbGlzdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTgzOS1cXHRzdHJ1Y3Qgc19zbWMgKnNtYyA9IG5ldGRldl9wcml2KGRldik7XFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjg0MDpcXHRza2ZkZGlfcHJpdiAqYnAgPSBcXHUwMDI2c21jLVxcdTAwM2VvcztcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtODQxLVxcdHVuc2lnbmVkIGxvbmcgRmxhZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9OTIxPXN0YXRpYyBpbnQgc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKmFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtOTI0LVxcdHN0cnVjdCBzb2NrYWRkciAqcF9zb2NrYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKikgYWRkcjtcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6OTI1OlxcdHNrZmRkaV9wcml2ICpicCA9IFxcdTAwMjZzbWMtXFx1MDAzZW9zO1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy05MjYtXFx0dW5zaWduZWQgbG9uZyBGbGFncztcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz05NjI9c3RhdGljIGludCBza2ZwX3Npb2NkZXZwcml2YXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpZnJlcSAqcnEsIHZvaWQgX191c2VyICpkYXRhLCBpbnQgY21kKVxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTk2NC1cXHRzdHJ1Y3Qgc19zbWMgKnNtYyA9IG5ldGRldl9wcml2KGRldik7XFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjk2NTpcXHRza2ZkZGlfcHJpdiAqbHAgPSBcXHUwMDI2c21jLVxcdTAwM2VvcztcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtOTY2LVxcdHN0cnVjdCBzX3NrZnBfaW9jdGwgaW9jO1xcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jPTEwNDU9c3RhdGljIG5ldGRldl90eF90IHNrZnBfc2VuZF9wa3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0xMDQ4LVxcdHN0cnVjdCBzX3NtYyAqc21jID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6MTA0OTpcXHRza2ZkZGlfcHJpdiAqYnAgPSBcXHUwMDI2c21jLVxcdTAwM2VvcztcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMTA1MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz0xMTA4PXN0YXRpYyB2b2lkIHNlbmRfcXVldWVkX3BhY2tldHMoc3RydWN0IHNfc21jICpzbWMpXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTExMDkte1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzoxMTEwOlxcdHNrZmRkaV9wcml2ICpicCA9IFxcdTAwMjZzbWMtXFx1MDAzZW9zO1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0xMTExLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9MTI4MD12b2lkIGxsY19yZXN0YXJ0X3R4KHN0cnVjdCBzX3NtYyAqc21jKVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0xMjgxLXtcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6MTI4MjpcXHRza2ZkZGlfcHJpdiAqYnAgPSBcXHUwMDI2c21jLVxcdTAwM2VvcztcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMTI4My1cXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz0xNDUxPXZvaWQgZG1hX2NvbXBsZXRlKHN0cnVjdCBzX3NtYyAqc21jLCB2b2xhdGlsZSB1bmlvbiBzX2ZwX2Rlc2NyICpkZXNjciwgaW50IGZsYWcpXFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMTQ2NS1cXHRpZiAoZmxhZyBcXHUwMDI2IERNQV9XUikge1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzoxNDY2OlxcdFxcdHNrZmRkaV9wcml2ICpicCA9IFxcdTAwMjZzbWMtXFx1MDAzZW9zO1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0xNDY3LVxcdFxcdHZvbGF0aWxlIHN0cnVjdCBzX3NtdF9mcF9yeGQgKnIgPSBcXHUwMDI2ZGVzY3ItXFx1MDAzZXI7XFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9MTU2ND12b2lkIG1hY19kcnZfcnhfY29tcGxldGUoc3RydWN0IHNfc21jICpzbWMsIHZvbGF0aWxlIHN0cnVjdCBzX3NtdF9mcF9yeGQgKnJ4ZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0xNTY2LXtcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6MTU2NzpcXHRza2ZkZGlfcHJpdiAqYnAgPSBcXHUwMDI2c21jLVxcdTAwM2VvcztcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMTU2OC1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jPTE4MjI9dm9pZCBtYWNfZHJ2X2NsZWFyX3J4ZChzdHJ1Y3Qgc19zbWMgKnNtYywgdm9sYXRpbGUgc3RydWN0IHNfc210X2ZwX3J4ZCAqcnhkLFxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTE4MzYtXFx0XFx0aWYgKHNrYiAhPSBOVUxMKSB7XFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjE4Mzc6XFx0XFx0XFx0c2tmZGRpX3ByaXYgKmJwID0gXFx1MDAyNnNtYy1cXHUwMDNlb3M7XFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTE4MzgtXFx0XFx0XFx0aW50IE1heEZyYW1lU2l6ZSA9IGJwLVxcdTAwM2VNYXhGcmFtZVNpemU7XFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9MjIyMD12b2lkIGRydl9yZXNldF9pbmRpY2F0aW9uKHN0cnVjdCBzX3NtYyAqc21jKVxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTIyMjctXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjIyMjg6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHNrZmRkaV9wY2lfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzoyMjI5OlxcdC5uYW1lXFx0XFx0PSBcXFwic2tmZGRpXFxcIixcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6MjIzMDpcXHQuaWRfdGFibGVcXHQ9IHNrZmRkaV9wY2lfdGJsLFxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0yMjMxLVxcdC5wcm9iZVxcdFxcdD0gc2tmcF9pbml0X29uZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0yMjM0LVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzoyMjM1Om1vZHVsZV9wY2lfZHJpdmVyKHNrZmRkaV9wY2lfZHJpdmVyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9zbXQuYy02LSAqXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NtdC5jOjc6ICpcXHRTZWUgdGhlIGZpbGUgXFxcInNrZmRkaS5jXFxcIiBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc210LmMtOC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NtdGRlZi5jLTYtICpcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc210ZGVmLmM6NzogKlxcdFNlZSB0aGUgZmlsZSBcXFwic2tmZGRpLmNcXFwiIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLlxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9zbXRkZWYuYy04LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc210aW5pdC5jLTYtICpcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc210aW5pdC5jOjc6ICpcXHRTZWUgdGhlIGZpbGUgXFxcInNrZmRkaS5jXFxcIiBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc210aW5pdC5jLTgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9zbXR0aW1lci5jLTYtICpcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc210dGltZXIuYzo3OiAqXFx0U2VlIHRoZSBmaWxlIFxcXCJza2ZkZGkuY1xcXCIgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NtdHRpbWVyLmMtOC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NyZi5jLTYtICpcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc3JmLmM6NzogKlxcdFNlZSB0aGUgZmlsZSBcXFwic2tmZGRpLmNcXFwiIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLlxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9zcmYuYy04LSAqXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA3OjE0OjQzLjY0MjM3NTU3NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyMDE0MDk0ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGRyaXZlciBjb25maWd1cmF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFNLRlAgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgU0tGUCBkcml2ZXIgaXMgY29uZmlndXJlZC4gSSBrbm93IHRoYXQgS2NvbmZpZyBmaWxlcyBhcmUgdGhlIHN0YW5kYXJkIGZvciBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zLCBzbyBteSBmaXJzdCBzdGVwIGlzIGRlZmluaXRlbHkgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL25ldC9mZGRpL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgSSBleHBlY3QgdG8gZmluZCB0aGUgZGVwZW5kZW5jaWVzLCBidWlsZCBvcHRpb25zLCBhbmQgYWxsIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgcmVsYXRlZCB0byB0aGUgU0tGUCBkcml2ZXIuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIG9wdGlvbnMgY29udHJvbCBpdHMgaW5jbHVzaW9uLCBhbnkgc3BlY2lmaWMgZmVhdHVyZXMsIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIG5ldHdvcmsgc3RhY2suIEkgYW50aWNpcGF0ZSB0aGVyZSBtaWdodCBiZSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGZlYXR1cmVzIG9yIGhhcmR3YXJlLCBzbyBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRob3NlIHRvby4gRXNzZW50aWFsbHksIEknbSB0cnlpbmcgdG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZSBvZiBob3cgdGhlIHVzZXIgY2FuIGVuYWJsZSBvciBkaXNhYmxlIHRoaXMgcGFydGljdWxhciBkcml2ZXIgd2l0aGluIHRoZSBvdmVyYWxsIGtlcm5lbCBidWlsZCBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3Njg4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDc6MTQ6NDUuODQzNzg3OTc4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI1OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZmRkaS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIEZEREkgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgRkRESVxcbiAgIDc6XFx0XFx0dHJpc3RhdGUgXFxcIkZEREkgZHJpdmVyIHN1cHBvcnRcXFwiXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIFBDSSB8fCBFSVNBIHx8IFRDXFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHQgIEZpYmVyIERpc3RyaWJ1dGVkIERhdGEgSW50ZXJmYWNlIGlzIGEgaGlnaCBzcGVlZCBsb2NhbCBhcmVhIG5ldHdvcmtcXG4gIDExOlxcdFxcdCAgZGVzaWduOyBlc3NlbnRpYWxseSBhIHJlcGxhY2VtZW50IGZvciBoaWdoIHNwZWVkIEV0aGVybmV0LiBGRERJIGNhblxcbiAgMTI6XFx0XFx0ICBydW4gb3ZlciBjb3BwZXIgb3IgZmliZXIuIElmIHlvdSBhcmUgY29ubmVjdGVkIHRvIHN1Y2ggYSBuZXR3b3JrIGFuZFxcbiAgMTM6XFx0XFx0ICB3YW50IGEgZHJpdmVyIGZvciB0aGUgRkRESSBjYXJkIGluIHlvdXIgY29tcHV0ZXIsIHNheSBZIGhlcmUgKGFuZFxcbiAgMTQ6XFx0XFx0ICB0aGVuIGFsc28gWSB0byB0aGUgZHJpdmVyIGZvciB5b3VyIEZEREkgY2FyZCwgYmVsb3cpLiBNb3N0IHBlb3BsZVxcbiAgMTU6XFx0XFx0ICB3aWxsIHNheSBOLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRpZiBGRERJXFxuICAxODpcXHRcXG4gIDE5OlxcdGNvbmZpZyBERUZaQVxcbiAgMjA6XFx0XFx0dHJpc3RhdGUgXFxcIkRFQyBGRERJY29udHJvbGxlciA3MDAvNzAwLUMgKERFRlpBLXh4KSBzdXBwb3J0XFxcIlxcbiAgMjE6XFx0XFx0ZGVwZW5kcyBvbiBGRERJIFxcdTAwMjZcXHUwMDI2IFRDXFxuICAyMjpcXHRcXHRoZWxwXFxuICAyMzpcXHRcXHQgIFRoaXMgaXMgc3VwcG9ydCBmb3IgdGhlIERFQyBGRERJY29udHJvbGxlciA3MDAgKERFRlpBLUFBLCBmaWJlcilcXG4gIDI0OlxcdFxcdCAgYW5kIDcwMC1DIChERUZaQS1DQSwgY29wcGVyKSBUVVJCT2NoYW5uZWwgbmV0d29yayBjYXJkcyB3aGljaFxcbiAgMjU6XFx0XFx0ICBjYW4gY29ubmVjdCB5b3UgdG8gYSBsb2NhbCBGRERJIG5ldHdvcmsuXFxuICAyNjpcXHRcXG4gIDI3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAgMjg6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBkZWZ6YS4gIElmIHVuc3VyZSwgc2F5IE4uXFxuICAyOTpcXHRcXG4gIDMwOlxcdGNvbmZpZyBERUZYWFxcbiAgMzE6XFx0XFx0dHJpc3RhdGUgXFxcIkRpZ2l0YWwgREVGVEEvREVGRUEvREVGUEEgYWRhcHRlciBzdXBwb3J0XFxcIlxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBGRERJIFxcdTAwMjZcXHUwMDI2IChQQ0kgfHwgRUlTQSB8fCBUQylcXG4gIDMzOlxcdFxcdGhlbHBcXG4gIDM0OlxcdFxcdCAgVGhpcyBpcyBzdXBwb3J0IGZvciB0aGUgRElHSVRBTCBzZXJpZXMgb2YgVFVSQk9jaGFubmVsIChERUZUQSksXFxuICAzNTpcXHRcXHQgIEVJU0EgKERFRkVBKSBhbmQgUENJIChERUZQQSkgY29udHJvbGxlcnMgd2hpY2ggY2FuIGNvbm5lY3QgeW91XFxuICAzNjpcXHRcXHQgIHRvIGEgbG9jYWwgRkRESSBuZXR3b3JrLlxcbiAgMzc6XFx0XFxuICAzODpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gIDM5OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgZGVmeHguICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNDA6XFx0XFxuICA0MTpcXHRjb25maWcgU0tGUFxcbiAgNDI6XFx0XFx0dHJpc3RhdGUgXFxcIlN5c0tvbm5lY3QgRkRESSBQQ0kgc3VwcG9ydFxcXCJcXG4gIDQzOlxcdFxcdGRlcGVuZHMgb24gRkRESSBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gIDQ0OlxcdFxcdHNlbGVjdCBCSVRSRVZFUlNFXFxuICA0NTpcXHRcXHRoZWxwXFxuICA0NjpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IGhhdmUgYSBTeXNLb25uZWN0IEZEREkgUENJIGFkYXB0ZXIuXFxuICA0NzpcXHRcXHQgIFRoZSBmb2xsb3dpbmcgYWRhcHRlcnMgYXJlIHN1cHBvcnRlZCBieSB0aGlzIGRyaXZlcjpcXG4gIDQ4OlxcdFxcdCAgLSBTSy01NTIxIChTSy1ORVQgRkRESS1VUClcXG4gIDQ5OlxcdFxcdCAgLSBTSy01NTIyIChTSy1ORVQgRkRESS1VUCBEQVMpXFxuICA1MDpcXHRcXHQgIC0gU0stNTU0MSAoU0stTkVUIEZEREktRlApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA3OjE0OjQ1Ljg0Mzg1Mzk3OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjkzNTU1MDM4MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBTeXNLb25uZWN0IEZEREkgUENJIFN1cHBvcnQgaW4gU3l6a2FsbGVyKipcblxuT2theSwgc28gYFNLRlBgIGlzIGNsZWFybHkgcmVmZXJyaW5nIHRvIFN5c0tvbm5lY3QncyBGRERJIFBDSSBzdXBwb3J0LiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBoYXJkd2FyZSwgc3BlY2lmaWNhbGx5IHRoZSBTeXNLb25uZWN0IEZEREkgUENJIGFkYXB0ZXIsIGlzIGVpdGhlciBlbXVsYXRlZCB3aXRoaW4gUUVNVSBvciBhY2Nlc3NpYmxlIGluIHN5emthbGxlcidzIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBMZXQncyBkaWcgaW4uXG5cblRoZSBmaXJzdCBzdGVwIGlzIHRvIGNvbmZpcm0gdGhlIGhhcmR3YXJlJ3MgaWRlbnRpdHkuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgcGh5c2ljYWwgUENJIGhhcmR3YXJlIGZyb20gU3lzS29ubmVjdCwgc3BlY2lmaWNhbGx5IG1vZGVscyBsaWtlIHRoZSBTSy01NTIxLCBTSy01NTIyLCBhbmQgc28gb24uIFRoaXMgdXNlcyBhIHZlbmRvciBJRCAoUENJX1ZFTkRPUl9JRF9TSykgYW5kIGRldmljZSBJRCAoUENJX0RFVklDRV9JRF9TS19GUCkuIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCB3ZSBhcmUgbGlrZWx5IGRlYWxpbmcgd2l0aCB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUsIHdoaWNoIGlzIG9mdGVuIHByb2JsZW1hdGljIGluIHRoZSB2aXJ0dWFsaXplZCBjb250ZXh0LiBJIG5lZWQgdG8ga25vdyBpZiBRRU1VIG9mZmVycyBhbiBlbXVsYXRpb24gZm9yIHRoaXMuXG5cbkkndmUgZ290IHRvIGNvbnN1bHQgdGhlIGd1aWRlbGluZXMsIHNwZWNpZmljYWxseSBTZWN0aW9uIDIsIHdoaWNoIGV4cGxpY2l0bHkgY2FsbHMgb3V0IFwic3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLFwiIHN1Y2ggYXMgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMsIHRoYXQgZGVwZW5kIG9uIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0J3MgYSByZWQgZmxhZy5cblxuTm93IGxldCdzIGNoZWNrIHRoZSBkZXRhaWxzOiBgc2tmZGRpX3BjaV90YmxgIHNob3dzIHRoYXQgdGhpcyBpcyBpbmRlZWQgcGh5c2ljYWwgUENJIEZEREkgaGFyZHdhcmUgd2l0aCB2ZW5kb3IgSUQgMHgxMTQ4IGFuZCBkZXZpY2UgSUQgMHg0MDAwLiBJdCdzIEZEREkg4oCTIEZpYmVyIERpc3RyaWJ1dGVkIERhdGEgSW50ZXJmYWNlIOKAkyBhIGxlZ2FjeSB0ZWNobm9sb2d5LiBNeSBrbm93bGVkZ2UgY29uZmlybXMgdGhhdCBTeXNLb25uZWN0IEZEREkgUENJIGNhcmRzIGFyZSBwaHlzaWNhbCBQQ0kgYm9hcmRzLCBub3Qgc29tZXRoaW5nIHRoYXQgY2FuIGJlIGVhc2lseSB2aXJ0dWFsaXplZC5cblxuTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IFFFTVUncyBzdGFuZGFyZCBuZXR3b3JrIGRldmljZSBlbXVsYXRpb24gZG9lc24ndCBpbmNsdWRlIHN1cHBvcnQgZm9yIEZEREkuIFRoZSBlbXVsYXRlZCBkZXZpY2VzIGFyZSB0aGluZ3MgbGlrZSBlMTAwMCwgcnRsODEzOSwgYW5kIHZpcnRpby1uZXQtcGNpIOKAkyBub25lIG9mIHRob3NlIHN1cHBvcnQgRkRESSwgd2hpY2ggYWxpZ25zIHdpdGggbXkgcGFzdCBvYnNlcnZhdGlvbnMuXG5cbldpdGhvdXQgUUVNVSBlbXVsYXRpb24gb3IgYSBwaHlzaWNhbCBkZXZpY2UsIGBza2ZwX2luaXRfb25lYCwgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiwgaXMgbmV2ZXIgY2FsbGVkLiBUaGlzIG1lYW5zIHRoZSBgbmV0X2RldmljZWAgZm9yIHRoZSBGRERJIGNhcmQgaXMgbmV2ZXIgcmVnaXN0ZXJlZC4gQXMgYSByZXN1bHQsIGNyaXRpY2FsIGZ1bmN0aW9ucyBsaWtlIGBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3NgIGFyZSB1bnJlYWNoYWJsZS4gVGhpcyBpcyBhIGRlYWQgZW5kIHVubGVzcyB0aGVyZSdzIGEgd29ya2Fyb3VuZC5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhlcmUncyBhYnNvbHV0ZWx5IG5vIG90aGVyIHdheSB0byByZWFjaCBgc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzYC4gYHNrZnBfY3RsX3NldF9tYWNfYWRkcmVzc2AgaXMgZWZmZWN0aXZlbHkgdGhlIGBuZG9fc2V0X21hY19hZGRyZXNzYCBmb3IgdGhpcyBwYXJ0aWN1bGFyIG5ldGRldi4gVGhpcyBuZXRkZXYgaXMgcmVnaXN0ZXJlZCB3aXRoaW4gYHNrZnBfaW5pdF9vbmVgLiBMZXQncyB0YWtlIGEgbG9vayBpbnNpZGUgYGRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuY2AgdG8gY29uZmlybSBteSBmaW5kaW5ncyBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgdW5leHBlY3RlZCBlbnRyeSBwb2ludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2OTIsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNzoxNDo1NS4xOTkzNjEyNDFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjU2ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwMCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIwMDpcXHQgKiAgIGluaXRpYWxpemVkIGFuZCB0aGUgYm9hcmQgcmVzb3VyY2VzIGFyZSByZWFkIGFuZCBzdG9yZWQgaW5cXG4gMjAxOlxcdCAqICAgdGhlIGRldmljZSBzdHJ1Y3R1cmUuXFxuIDIwMjpcXHQgKi9cXG4gMjAzOlxcdHN0YXRpYyBpbnQgc2tmcF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gMjA0OlxcdFxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuIDIwNTpcXHR7XFxuIDIwNjpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xcbiAyMDc6XFx0XFx0c3RydWN0IHNfc21jICpzbWM7XFx0LyogYm9hcmQgcG9pbnRlciAqL1xcbiAyMDg6XFx0XFx0dm9pZCBfX2lvbWVtICptZW07XFxuIDIwOTpcXHRcXHRpbnQgZXJyO1xcbiAyMTA6XFx0XFxuIDIxMTpcXHRcXHRwcl9kZWJ1ZyhcXFwiZW50ZXJpbmcgc2tmcF9pbml0X29uZVxcXFxuXFxcIik7XFxuIDIxMjpcXHRcXG4gMjEzOlxcdFxcdGlmIChudW1fYm9hcmRzID09IDApIFxcbiAyMTQ6XFx0XFx0XFx0cHJpbnRrKFxcXCIlc1xcXFxuXFxcIiwgYm9vdF9tc2cpO1xcbiAyMTU6XFx0XFxuIDIxNjpcXHRcXHRlcnIgPSBwY2lfZW5hYmxlX2RldmljZShwZGV2KTtcXG4gMjE3OlxcdFxcdGlmIChlcnIpXFxuIDIxODpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiAyMTk6XFx0XFxuIDIyMDpcXHRcXHRlcnIgPSBwY2lfcmVxdWVzdF9yZWdpb25zKHBkZXYsIFxcXCJza2ZkZGlcXFwiKTtcXG4gMjIxOlxcdFxcdGlmIChlcnIpXFxuIDIyMjpcXHRcXHRcXHRnb3RvIGVycl9vdXQxO1xcbiAyMjM6XFx0XFxuIDIyNDpcXHRcXHRwY2lfc2V0X21hc3RlcihwZGV2KTtcXG4gMjI1OlxcdFxcbiAyMjY6XFx0I2lmZGVmIE1FTV9NQVBQRURfSU9cXG4gMjI3OlxcdFxcdGlmICghKHBjaV9yZXNvdXJjZV9mbGFncyhwZGV2LCAwKSBcXHUwMDI2IElPUkVTT1VSQ0VfTUVNKSkge1xcbiAyMjg6XFx0XFx0XFx0cHJpbnRrKEtFUk5fRVJSIFxcXCJza2ZwOiByZWdpb24gaXMgbm90IGFuIE1NSU8gcmVzb3VyY2VcXFxcblxcXCIpO1xcbiAyMjk6XFx0XFx0XFx0ZXJyID0gLUVJTztcXG4gMjMwOlxcdFxcdFxcdGdvdG8gZXJyX291dDI7XFxuIDIzMTpcXHRcXHR9XFxuIDIzMjpcXHRcXG4gMjMzOlxcdFxcdG1lbSA9IGlvcmVtYXAocGNpX3Jlc291cmNlX3N0YXJ0KHBkZXYsIDApLCAweDQwMDApO1xcbiAyMzQ6XFx0I2Vsc2VcXG4gMjM1OlxcdFxcdGlmICghKHBjaV9yZXNvdXJjZV9mbGFncyhwZGV2LCAxKSBcXHUwMDI2IElPX1JFU09VUkNFX0lPKSkge1xcbiAyMzY6XFx0XFx0XFx0cHJpbnRrKEtFUk5fRVJSIFxcXCJza2ZwOiByZWdpb24gaXMgbm90IFBJTyByZXNvdXJjZVxcXFxuXFxcIik7XFxuIDIzNzpcXHRcXHRcXHRlcnIgPSAtRUlPO1xcbiAyMzg6XFx0XFx0XFx0Z290byBlcnJfb3V0MjtcXG4gMjM5OlxcdFxcdH1cXG4gMjQwOlxcdFxcbiAyNDE6XFx0XFx0bWVtID0gaW9wb3J0X21hcChwY2lfcmVzb3VyY2Vfc3RhcnQocGRldiwgMSksIEZQX0lPX0xFTik7XFxuIDI0MjpcXHQjZW5kaWZcXG4gMjQzOlxcdFxcdGlmICghbWVtKSB7XFxuIDI0NDpcXHRcXHRcXHRwcmludGsoS0VSTl9FUlIgXFxcInNrZnA6ICBVbmFibGUgdG8gbWFwIHJlZ2lzdGVyLCBcXFwiXFxuIDI0NTpcXHRcXHRcXHRcXHRcXHRcXFwiRkRESSBhZGFwdGVyIHdpbGwgYmUgZGlzYWJsZWQuXFxcXG5cXFwiKTtcXG4gMjQ2OlxcdFxcdFxcdGVyciA9IC1FSU87XFxuIDI0NzpcXHRcXHRcXHRnb3RvIGVycl9vdXQyO1xcbiAyNDg6XFx0XFx0fVxcbiAyNDk6XFx0XFxuIDI1MDpcXHRcXHRkZXYgPSBhbGxvY19mZGRpZGV2KHNpemVvZihzdHJ1Y3Qgc19zbWMpKTtcXG4gMjUxOlxcdFxcdGlmICghZGV2KSB7XFxuIDI1MjpcXHRcXHRcXHRwcmludGsoS0VSTl9FUlIgXFxcInNrZnA6IFVuYWJsZSB0byBhbGxvY2F0ZSBmZGRpIGRldmljZSwgXFxcIlxcbiAyNTM6XFx0XFx0XFx0XFx0XFx0XFxcIkZEREkgYWRhcHRlciB3aWxsIGJlIGRpc2FibGVkLlxcXFxuXFxcIik7XFxuIDI1NDpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbiAyNTU6XFx0XFx0XFx0Z290byBlcnJfb3V0MztcXG4gMjU2OlxcdFxcdH1cXG4gMjU3OlxcdFxcbiAyNTg6XFx0XFx0ZGV2LVxcdTAwM2VpcnEgPSBwZGV2LVxcdTAwM2VpcnE7XFxuIDI1OTpcXHRcXHRkZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2c2tmcF9uZXRkZXZfb3BzO1xcbiAyNjA6XFx0XFxuIDI2MTpcXHRcXHRTRVRfTkVUREVWX0RFVihkZXYsIFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbiAyNjI6XFx0XFxuIDI2MzpcXHRcXHQvKiBJbml0aWFsaXplIGJvYXJkIHN0cnVjdHVyZSB3aXRoIGJ1cy1zcGVjaWZpYyBpbmZvICovXFxuIDI2NDpcXHRcXHRzbWMgPSBuZXRkZXZfcHJpdihkZXYpO1xcbiAyNjU6XFx0XFx0c21jLVxcdTAwM2Vvcy5kZXYgPSBkZXY7XFxuIDI2NjpcXHRcXHRzbWMtXFx1MDAzZW9zLmJ1c190eXBlID0gU0tfQlVTX1RZUEVfUENJO1xcbiAyNjc6XFx0XFx0c21jLVxcdTAwM2Vvcy5wZGV2ID0gKnBkZXY7XFxuIDI2ODpcXHRcXHRzbWMtXFx1MDAzZW9zLlF1ZXVlU2tiID0gTUFYX1RYX1FVRVVFX0xFTjtcXG4gMjY5OlxcdFxcdHNtYy1cXHUwMDNlb3MuTWF4RnJhbWVTaXplID0gTUFYX0ZSQU1FX1NJWkU7XFxuIDI3MDpcXHRcXHRzbWMtXFx1MDAzZW9zLmRldiA9IGRldjtcXG4gMjcxOlxcdFxcdHNtYy1cXHUwMDNlaHcuc2xvdCA9IC0xO1xcbiAyNzI6XFx0XFx0c21jLVxcdTAwM2Vody5pb3AgPSBtZW07XFxuIDI3MzpcXHRcXHRzbWMtXFx1MDAzZW9zLlJlc2V0UmVxdWVzdGVkID0gRkFMU0U7XFxuIDI3NDpcXHRcXHRza2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZzbWMtXFx1MDAzZW9zLlNlbmRTa2JRdWV1ZSk7XFxuIDI3NTpcXHRcXG4gMjc2OlxcdFxcdGRldi1cXHUwMDNlYmFzZV9hZGRyID0gKHVuc2lnbmVkIGxvbmcpbWVtO1xcbiAyNzc6XFx0XFxuIDI3ODpcXHRcXHRlcnIgPSBza2ZwX2RyaXZlcl9pbml0KGRldik7XFxuIDI3OTpcXHRcXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNzoxNDo1NS4xOTk1Mjg0NTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDM0MjMzMjc5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIGBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3NgKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byBgc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHNjb3BlIGFuZCBpbXBhY3QuIE15IGZpcnN0IHN0ZXAgaXMgdG8gcXVpY2tseSBkZXRlcm1pbmUgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQgYW5kIHdoZXJlIGl0J3MgcmVmZXJlbmNlZCB3aXRoaW4gdGhlIGNvZGViYXNlLiBJIHdhbnQgdG8gYnVpbGQgYSBxdWljayBtYXAgaW4gbXkgaGVhZCBvZiBpdHMgdXNhZ2UuIFRoaXMgd2lsbCBnaXZlIG1lIGEgc29saWQgZm91bmRhdGlvbiBmb3IgZXZhbHVhdGluZyBpdHMgYmVoYXZpb3IsIHBvdGVudGlhbCBpc3N1ZXMsIG9yIGFyZWFzIGZvciBvcHRpbWl6YXRpb24sIGRlcGVuZGluZyBvbiB3aGF0IEknbSBsb29raW5nIGludG8gcmlnaHQgbm93LiBMZXQncyBzZWUgd2hhdCB0aGUgY2FsbCBncmFwaCByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTIwNywiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDc6MTU6MDUuNTQxODYzNTEyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjEwODc1MzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNrZnBfY3RsX3NldF9tYWNfYWRkcmVzc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9MTA2PXN0YXRpYyB2b2lkIHNrZnBfY3RsX3NldF9tdWx0aWNhc3RfbGlzdF93b19sb2NrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzoxMDc6c3RhdGljIGludCBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqYWRkcik7XFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTEwOC1zdGF0aWMgaW50IHNrZnBfc2lvY2RldnByaXZhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICpycSxcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz0xNjQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBza2ZwX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMTY5LVxcdC5uZG9fc2V0X3J4X21vZGVcXHQ9IHNrZnBfY3RsX3NldF9tdWx0aWNhc3RfbGlzdCxcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6MTcwOlxcdC5uZG9fc2V0X21hY19hZGRyZXNzXFx0PSBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3MsXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTE3MS1cXHQubmRvX3Npb2NkZXZwcml2YXRlXFx0PSBza2ZwX3Npb2NkZXZwcml2YXRlLFxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jPTg1MD1zdGF0aWMgdm9pZCBza2ZwX2N0bF9zZXRfbXVsdGljYXN0X2xpc3Rfd29fbG9jayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTkwMy0gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6OTA0OiAqID0gc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzID1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtOTA1LSAqID09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTkyMC0gKi9cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6OTIxOnN0YXRpYyBpbnQgc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKmFkZHIpXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTkyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtOTM1LVxcdHJldHVybiAwO1xcdFxcdC8qIGFsd2F5cyByZXR1cm4gemVybyAqL1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzo5MzY6fVxcdFxcdFxcdFxcdC8vIHNrZnBfY3RsX3NldF9tYWNfYWRkcmVzc1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy05MzctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA3OjE1OjA3LjE1Mjc0NTk1NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3MzUwODUxNTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBza2ZwYCBGRERJIERyaXZlcidzIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBgZHJpdmVycy9uZXQvZmRkaS9za2ZwL2AgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBQQ0kgZHJpdmVyIGZvciB0aG9zZSBvbGQgU3lzS29ubmVjdCBGRERJIG5ldHdvcmsgYWRhcHRlcnMuIFJpZ2h0IGF3YXksIEkgc2VlIGEgcHJvYmxlbTogdGhpcyBkcml2ZXIgbmVlZHMgYWN0dWFsIHBoeXNpY2FsIFBDSSBoYXJkd2FyZSwgYSBTeXNLb25uZWN0IEZEREkgY2FyZCBzcGVjaWZpY2FsbHkgKHZlbmRvciBJRCBgMHgxMTQ4YCwgZGV2aWNlIElEIGAweDQwMDBgKS4gVGhhdCdzIGEgZGVhbC1icmVha2VyIGJlY2F1c2Ugc3RhbmRhcmQgUUVNVSBhbmQgc3l6a2FsbGVyIGVudmlyb25tZW50cyAqZG9uJ3QqIGVtdWxhdGUgdGhpcyBraW5kIG9mIGxlZ2FjeSBoYXJkd2FyZS5cblxuU28sIHRoZSBtb2RpZmllZCBjb2RlIGluIGBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3NgIGlzIGVmZmVjdGl2ZWx5IHVucmVhY2hhYmxlIGluIG91ciB0eXBpY2FsIHZpcnR1YWxpemVkIGZ1enppbmcgc2V0dXBzLiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGlzIGlzIHRydWUsIHNvIGxldCdzIGNyb3NzLWNoZWNrOlxuXG4qICAgKipVbnJlYWNoYWJsZSBIYXJkd2FyZToqKiBEb2VzIHRoZSBtb2RpZmljYXRpb24gZGVwZW5kIG9uIHNwZWNpYWwgaGFyZHdhcmU/IFllcy4gSXQncyBhIGNsYXNzaWMgcGh5c2ljYWwgbmV0d29yayBjYXJkIGRyaXZlci4gSXQncyBub3QgbGlrZSB3ZSdyZSBkZWFsaW5nIHdpdGggZW11bGF0ZWQgY29tcG9uZW50cy5cbiogICAqKkhhcmR3YXJlIERlcGVuZGVuY2llczoqKiBUaGlzIGlzIGEgY2xlYXIgY2FzZSBvZiBhIGRyaXZlciB0aGF0IG9ubHkgd29ya3Mgd2l0aCBwaHlzaWNhbCBBU0lDcy9QQ0llIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBzdXBwb3J0ZWQgYnkgUUVNVSBlbXVsYXRpb24uXG5cblRoZXJlZm9yZSwgYmVjYXVzZSB0aGlzIGRyaXZlciBpcyBzb2xlbHkgZGVwZW5kZW50IG9uIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBvdXIgcHJpbWFyeSB0ZXN0IGVudmlyb25tZW50cywgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGRlZmluaXRlbHkgYmUgYGZhbHNlYC5cblxuRm9yIGNvbmZpZ3VyYXRpb25zLCB3ZSBzaG91bGQgc2V0IGBFbmFibGVDb25maWdzYCB0byBpbmNsdWRlIG1pbmltYWwgcmVsZXZhbnQgY29uZmlnczsgYFtcIkZERElcIiwgXCJTS0ZQXCIsIFwiUENJXCJdYCBpcyBwcm9iYWJseSBhcHByb3ByaWF0ZSwgb3IgcG9zc2libHkgZXZlbiBhbiBlbXB0eSBsaXN0LCBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlbmVmaXQgdG8gZW5hYmxpbmcgaXQuXG5cblNpbmNlIHRoZSBmdXp6aW5nIGlzIG5vdCB3b3J0aCBpdCwgd2UgZG9uJ3QgbmVlZCB0byBzcGVjaWZ5IGBGb2N1c1N5bWJvbHNgLiBTbyBgRm9jdXNTeW1ib2xzYCBzaG91bGQgYmUgc2V0IHRvIGBbXWAuXG5cblRvIHJlaW5mb3JjZSB0aGlzLCBsZXQncyBzdGVwIHRocm91Z2ggdGhlIHJlYXNvbmluZyBvbmNlIG1vcmU6XG5cbjEuICBXZSdyZSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBtb2RpZmllcyBgc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzYCBpbiBgZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jYC5cbjIuICBUaGF0IGZpbGUgaXMgcGFydCBvZiB0aGUgU3lzS29ubmVjdCBGRERJIFBDSSBhZGFwdGVyIGRyaXZlciAoYENPTkZJR19TS0ZQYCkuXG4zLiAgVGhpcyBkcml2ZXIgKm9ubHkqIHdvcmtzIHdpdGggcGh5c2ljYWwgU3lzS29ubmVjdCBGRERJIFBDSSBoYXJkd2FyZSB3aXRoIHRoYXQgc3BlY2lmaWMgUENJIElELlxuNC4gIFN0YW5kYXJkIFFFTVUgYW5kIHN5emthbGxlciBkb24ndCBlbXVsYXRlIHRoaXMuXG41LiAgVGh1cywgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuXG5cbk9rYXksIHRoYXQgY29uZmlybXMgaXQuIFRpbWUgdG8gZmluYWxpemUgdGhlIGFzc2Vzc21lbnQgYW5kIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIwNDQsIk91dHB1dFRva2VucyI6MTQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA3OjE1OjE0LjUwMzYwMDI2NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4MTMxNzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGRERJXCIsXG4gICAgXCJTS0ZQXCIsXG4gICAgXCJQQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzIGluIGRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYywgd2hpY2ggaXMgdGhlIGRyaXZlciBmb3IgbGVnYWN5IFN5c0tvbm5lY3QgRkRESSBQQ0kgYWRhcHRlcnMgKENPTkZJR19TS0ZQKS4gVGhpcyBkcml2ZXIgYmluZHMgdG8gc3BlY2lmaWMgcGh5c2ljYWwgUENJIGhhcmR3YXJlIChQQ0kgSUQgMHgxMTQ4OjB4NDAwMCkgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSAvIHN5emthbGxlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZERElcIixcbiAgICBcIlNLRlBcIixcbiAgICBcIlBDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3MgaW4gZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLCB3aGljaCBpcyB0aGUgZHJpdmVyIGZvciBsZWdhY3kgU3lzS29ubmVjdCBGRERJIFBDSSBhZGFwdGVycyAoQ09ORklHX1NLRlApLiBUaGlzIGRyaXZlciBiaW5kcyB0byBzcGVjaWZpYyBwaHlzaWNhbCBQQ0kgaGFyZHdhcmUgKFBDSSBJRCAweDExNDg6MHg0MDAwKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIC8gc3l6a2FsbGVyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA3OjE1OjE0LjU4MTczOTE0M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowmp6xj[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-10 06:51:09 +0000 UTC FinishedAt: 2026-09-10 07:15:16 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA3OjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZEREkmIzM0OywKICAgICYjMzQ7U0tGUCYjMzQ7LAogICAgJiMzNDtQQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0OyYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3MgaW4gZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLCB3aGljaCBpcyB0aGUgZHJpdmVyIGZvciBsZWdhY3kgU3lzS29ubmVjdCBGRERJIFBDSSBhZGFwdGVycyAoQ09ORklHX1NLRlApLiBUaGlzIGRyaXZlciBiaW5kcyB0byBzcGVjaWZpYyBwaHlzaWNhbCBQQ0kgaGFyZHdhcmUgKFBDSSBJRCAweDExNDg6MHg0MDAwKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIC8gc3l6a2FsbGVyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDc6MTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkMzBhNjFiYTQ2ODQxY2Y2NGIxMjFlZDdmMmU1ODA2ZjQyYjFhZTFmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBTZXAgMTAgMDc6MTQ6MzEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jXG5pbmRleCBhMjczMzYyYzllNzAzLi5mZWVhN2JhYTQ4MTY4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmNcbkBAIC05MjgsNyAmIzQzOzkyOCw4IEBAIHN0YXRpYyBpbnQgc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKmFkZHIpXG4gXG4gXHRkZXZfYWRkcl9zZXQoZGV2LCBwX3NvY2thZGRyLVx1MDAzZXNhX2RhdGEpO1xuIFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2YnAtXHUwMDNlRHJpdmVyTG9jaywgRmxhZ3MpO1xuLVx0UmVzZXRBZGFwdGVyKHNtYyk7XG4mIzQzO1x0aWYgKG5ldGlmX3J1bm5pbmcoZGV2KSlcbiYjNDM7XHRcdFJlc2V0QWRhcHRlcihzbWMpO1xuIFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZicC1cdTAwM2VEcml2ZXJMb2NrLCBGbGFncyk7XG4gXG4gXHRyZXR1cm4gMDtcdFx0LyogYWx3YXlzIHJldHVybiB6ZXJvICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDc6MTQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RkRESSYjMzQ7LAogICAgJiMzNDtTS0ZQJiMzNDssCiAgICAmIzM0O1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3MgaW4gZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLCB3aGljaCBpcyB0aGUgZHJpdmVyIGZvciBsZWdhY3kgU3lzS29ubmVjdCBGRERJIFBDSSBhZGFwdGVycyAoQ09ORklHX1NLRlApLiBUaGlzIGRyaXZlciBiaW5kcyB0byBzcGVjaWZpYyBwaHlzaWNhbCBQQ0kgaGFyZHdhcmUgKFBDSSBJRCAweDExNDg6MHg0MDAwKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIC8gc3l6a2FsbGVyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkMzBhNjFiYTQ2ODQxY2Y2NGIxMjFlZDdmMmU1ODA2ZjQyYjFhZTFmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBTZXAgMTAgMDc6MTQ6MzEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMKaW5kZXggYTI3MzM2MmM5ZTcwMy4uZmVlYTdiYWE0ODE2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYwpAQCAtOTI4LDcgJiM0Mzs5MjgsOCBAQCBzdGF0aWMgaW50IHNrZnBfY3RsX3NldF9tYWNfYWRkcmVzcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICphZGRyKQogCiAJZGV2X2FkZHJfc2V0KGRldiwgcF9zb2NrYWRkci0mZ3Q7c2FfZGF0YSk7CiAJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDticC0mZ3Q7RHJpdmVyTG9jaywgRmxhZ3MpOwotCVJlc2V0QWRhcHRlcihzbWMpOwomIzQzOwlpZiAobmV0aWZfcnVubmluZyhkZXYpKQomIzQzOwkJUmVzZXRBZGFwdGVyKHNtYyk7CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2JwLSZndDtEcml2ZXJMb2NrLCBGbGFncyk7CiAKIAlyZXR1cm4gMDsJCS8qIGFsd2F5cyByZXR1cm4gemVybyAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNzoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTE5CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgcmV2aWV3aW5nIHRoaXMgcGF0Y2g6CgoqKkFuYWx5emluZyB0aGUgTmV0d29yayBEcml2ZXIgQ2hhbmdlKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIGZpcnN0IHN0ZXAgaXMgYWx3YXlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2UgYW5kIHRoZSBwb3RlbnRpYWwgaW1wYWN0LiBJIHNlZSB0aGUgZmlsZSBjaGFuZ2VkIGlzIGBkcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmNgLiBUaGF0IHRlbGxzIG1lIHRoaXMgaXMgcmVsYXRlZCB0byB0aGUgRkRESSAoRmliZXIgRGlzdHJpYnV0ZWQgRGF0YSBJbnRlcmZhY2UpIG5ldHdvcmsgZHJpdmVyIGZvciB0aGUgU0tGUCBoYXJkd2FyZS4KCk5vdywgYmVmb3JlIEkgZXZlbiBsb29rIGF0IHRoZSBjb2RlIGl0c2VsZiwgSSBuZWVkIHRoZSBjb250ZXh0LiBXaGF0IGhhcmR3YXJlIGFyZSB3ZSBhY3R1YWxseSB0YWxraW5nIGFib3V0IGhlcmU/IElzIHRoaXMgc3RpbGwgcmVsZXZhbnQgaGFyZHdhcmU/IEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyB0byBzZWUgaG93IHRoaXMgZHJpdmVyIGlzIGNvbmZpZ3VyZWQuIElzIGl0IGVuYWJsZWQgYnkgZGVmYXVsdD8gSXMgaXQgYnVpbHQgYXMgYSBtb2R1bGUsIG9yIGJ1aWx0IGluPyBXaGF0IGRlcGVuZGVuY2llcyBkb2VzIGl0IGhhdmU/IEkgbmVlZCB0byBhc2NlcnRhaW4gaWYgdGhpcyBpcyBhICYjMzQ7cmVhY2hhYmxlJiMzNDsgcGllY2Ugb2YgaGFyZHdhcmUgaW4gb3VyIGN1cnJlbnQgZWNvc3lzdGVtLCBvciBpZiBpdCYjMzk7cyBwb3RlbnRpYWxseSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuCgpNeSBuZXh0IG1vdmUgaXMgdG8gdXNlIGBnaXQgZ3JlcGAgb3Igc2VhcmNoIHRoZSBLY29uZmlnIGZpbGVzIGFyb3VuZCBgZHJpdmVycy9uZXQvZmRkaS9za2ZwL2AgdG8gdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGlzIGRyaXZlciBpcyBidWlsdCBhbmQgaW5jbHVkZWQgaW4gdGhlIGtlcm5lbC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBoYXJkd2FyZSBpdCBzdXBwb3J0cyBhbmQgdGhlIHRhcmdldCBwbGF0Zm9ybXMuIFRoaXMgaXMgY3J1Y2lhbCBiZWZvcmUgSSBldmVuIGNvbnNpZGVyIHRoZSBjb2RlIGl0c2VsZi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtza2ZkZGkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9mZGRpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9NYWtlZmlsZT02PW9iai0kKENPTkZJR19TS0ZQKSAmIzQzOz0gc2tmcC5vXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvTWFrZWZpbGUtNy1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9NYWtlZmlsZTo4OnNrZnAtb2JqcyA6PSAgc2tmZGRpLm8gICAgaHdtdG0ubyAgICBmcGx1c3RtLm8gIHNtdC5vICAgICAgY2ZtLm8gICAgIFxcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvTWFrZWZpbGUtOS0gICAgICAgICAgICAgIGVjbS5vICAgICAgIHBjbXBsYy5vICAgcG1mLm8gICAgICBxdWV1ZS5vICAgIHJtdC5vICAgICBcXFxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9NYWtlZmlsZS0xNS0jICAgc3dpdGNoZWQgb2ZmIGJlbG93KSwgYnV0IEkgZGlkIG5vdCBmaXggdGhpcywgYmVjYXVzZSB0aGUgSGFyZHdhcmVcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9NYWtlZmlsZToxNjojICAgTW9kdWxlIHNvdXJjZSAoc2VlIHNrZmRkaS5jIGZvciBkZXRhaWxzKSBpcyB1c2VkIGZvciBkaWZmZXJlbnRcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9NYWtlZmlsZS0xNy0jICAgZHJpdmVycywgYW5kIGZpeGluZyBpdCBmb3IgTGludXggbWlnaHQgYnJpbmcgcHJvYmxlbXMgb24gb3RoZXJcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvY2ZtLmMtNi0gKlxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2NmbS5jOjc6ICpcdFNlZSB0aGUgZmlsZSBcJiMzNDtza2ZkZGkuY1wmIzM0OyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9jZm0uYy04LSAqXG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2RydmZiaS5jLTYtICpcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9kcnZmYmkuYzo3OiAqXHRTZWUgdGhlIGZpbGUgXCYjMzQ7c2tmZGRpLmNcJiMzNDsgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvZHJ2ZmJpLmMtOC0gKlxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9lY20uYy02LSAqXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvZWNtLmM6NzogKlx0U2VlIHRoZSBmaWxlIFwmIzM0O3NrZmRkaS5jXCYjMzQ7IGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLlxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2VjbS5jLTgtICpcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvZXNzLmMtNi0gKlxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2Vzcy5jOjc6ICpcdFNlZSB0aGUgZmlsZSBcJiMzNDtza2ZkZGkuY1wmIzM0OyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9lc3MuYy04LSAqXG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2ZwbHVzdG0uYy02LSAqXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvZnBsdXN0bS5jOjc6ICpcdFNlZSB0aGUgZmlsZSBcJiMzNDtza2ZkZGkuY1wmIzM0OyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9mcGx1c3RtLmMtOC0gKlxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL3RhcmdldG9zLmg9MTE4PXN0cnVjdCBzX3NtdF9vcyB7XG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2gvdGFyZ2V0b3MuaC0xNTctXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvaC90YXJnZXRvcy5oOjE1ODp0eXBlZGVmIHN0cnVjdCBzX3NtdF9vcyBza2ZkZGlfcHJpdjtcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL3RhcmdldG9zLmgtMTU5LVxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9od210bS5jLTYtICpcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9od210bS5jOjc6ICpcdFNlZSB0aGUgZmlsZSBcJiMzNDtza2ZkZGkuY1wmIzM0OyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9od210bS5jLTgtICpcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvaHd0LmMtNi0gKlxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2h3dC5jOjc6ICpcdFNlZSB0aGUgZmlsZSBcJiMzNDtza2ZkZGkuY1wmIzM0OyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9od3QuYy04LSAqXG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BjbXBsYy5jLTYtICpcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9wY21wbGMuYzo3OiAqXHRTZWUgdGhlIGZpbGUgXCYjMzQ7c2tmZGRpLmNcJiMzNDsgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvcGNtcGxjLmMtOC0gKlxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9wbWYuYy02LSAqXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvcG1mLmM6NzogKlx0U2VlIHRoZSBmaWxlIFwmIzM0O3NrZmRkaS5jXCYjMzQ7IGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLlxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BtZi5jLTgtICpcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvcXVldWUuYy02LSAqXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvcXVldWUuYzo3OiAqXHRTZWUgdGhlIGZpbGUgXCYjMzQ7c2tmZGRpLmNcJiMzNDsgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvcXVldWUuYy04LSAqXG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3JtdC5jLTYtICpcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9ybXQuYzo3OiAqXHRTZWUgdGhlIGZpbGUgXCYjMzQ7c2tmZGRpLmNcJiMzNDsgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvcm10LmMtOC0gKlxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0zLSAqIEZpbGUgTmFtZTpcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzo0OiAqICAgc2tmZGRpLmNcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy01LSAqXG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTM0LSAqICAgVGhlIG9ubHkgaGVhZGVyZmlsZXMgdGhhdCBhcmUgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGlzIHNvdXJjZVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjM1OiAqICAgYXJlIHNrZmRkaS5jLCBoL3R5cGVzLmgsIGgvb3NkZWYxc3QuaCwgaC90YXJnZXRvcy5oLlxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTM2LSAqICAgVGhlIG90aGVycyBiZWxvbmcgdG8gdGhlIFN5c0tvbm5lY3QgRkRESSBIYXJkd2FyZSBNb2R1bGUgYW5kXG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jPTE0OT1leHRlcm4gdm9pZCBlbmFibGVfdHhfaXJxKHN0cnVjdCBzX3NtYyAqc21jLCB1X3Nob3J0IHF1ZXVlKTtcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0xNTAtXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6MTUxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBza2ZkZGlfcGNpX3RibFtdID0ge1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTE1Mi1cdHsgUENJX1ZFTkRPUl9JRF9TSywgUENJX0RFVklDRV9JRF9TS19GUCwgUENJX0FOWV9JRCwgUENJX0FOWV9JRCwgfSxcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMTU0LX07XG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6MTU1Ok1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBza2ZkZGlfcGNpX3RibCk7XG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMTU2LU1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtTeXNLb25uZWN0IEZEREkgUENJIGRyaXZlclwmIzM0Oyk7XG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jPTIwMz1zdGF0aWMgaW50IHNrZnBfaW5pdF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTIxOS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzoyMjA6XHRlcnIgPSBwY2lfcmVxdWVzdF9yZWdpb25zKHBkZXYsIFwmIzM0O3NrZmRkaVwmIzM0Oyk7XG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMjIxLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9MzgwPXN0YXRpYyAgaW50IHNrZnBfZHJpdmVyX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMzgyLVx0c3RydWN0IHNfc21jICpzbWMgPSBuZXRkZXZfcHJpdihkZXYpO1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjM4MzpcdHNrZmRkaV9wcml2ICpicCA9IFx1MDAyNnNtYy1cdTAwM2VvcztcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0zODQtXHRpbnQgZXJyID0gLUVJTztcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9NTQ5PXN0YXRpYyBpbnQgc2tmcF9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy01NTEtXHRzdHJ1Y3Qgc19zbWMgKnNtYyA9IG5ldGRldl9wcml2KGRldik7XG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6NTUyOlx0c2tmZGRpX3ByaXYgKmJwID0gXHUwMDI2c21jLVx1MDAzZW9zO1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTU1My1cbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9NjA2PXN0YXRpYyBpcnFyZXR1cm5fdCBza2ZwX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQpXG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTYwOS1cdHN0cnVjdCBzX3NtYyAqc21jO1x0LyogcHJpdmF0ZSBib2FyZCBzdHJ1Y3R1cmUgcG9pbnRlciAqL1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjYxMDpcdHNrZmRkaV9wcml2ICpicDtcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy02MTEtXG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jPTgzNz1zdGF0aWMgdm9pZCBza2ZwX2N0bF9zZXRfbXVsdGljYXN0X2xpc3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtODM5LVx0c3RydWN0IHNfc21jICpzbWMgPSBuZXRkZXZfcHJpdihkZXYpO1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjg0MDpcdHNrZmRkaV9wcml2ICpicCA9IFx1MDAyNnNtYy1cdTAwM2VvcztcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy04NDEtXHR1bnNpZ25lZCBsb25nIEZsYWdzO1xuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz05MjE9c3RhdGljIGludCBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqYWRkcilcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtOTI0LVx0c3RydWN0IHNvY2thZGRyICpwX3NvY2thZGRyID0gKHN0cnVjdCBzb2NrYWRkciAqKSBhZGRyO1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjkyNTpcdHNrZmRkaV9wcml2ICpicCA9IFx1MDAyNnNtYy1cdTAwM2VvcztcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy05MjYtXHR1bnNpZ25lZCBsb25nIEZsYWdzO1xuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz05NjI9c3RhdGljIGludCBza2ZwX3Npb2NkZXZwcml2YXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpZnJlcSAqcnEsIHZvaWQgX191c2VyICpkYXRhLCBpbnQgY21kKVxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy05NjQtXHRzdHJ1Y3Qgc19zbWMgKnNtYyA9IG5ldGRldl9wcml2KGRldik7XG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6OTY1Olx0c2tmZGRpX3ByaXYgKmxwID0gXHUwMDI2c21jLVx1MDAzZW9zO1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTk2Ni1cdHN0cnVjdCBzX3NrZnBfaW9jdGwgaW9jO1xuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz0xMDQ1PXN0YXRpYyBuZXRkZXZfdHhfdCBza2ZwX3NlbmRfcGt0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTEwNDgtXHRzdHJ1Y3Qgc19zbWMgKnNtYyA9IG5ldGRldl9wcml2KGRldik7XG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6MTA0OTpcdHNrZmRkaV9wcml2ICpicCA9IFx1MDAyNnNtYy1cdTAwM2VvcztcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0xMDUwLVxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz0xMTA4PXN0YXRpYyB2b2lkIHNlbmRfcXVldWVkX3BhY2tldHMoc3RydWN0IHNfc21jICpzbWMpXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMTEwOS17XG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6MTExMDpcdHNrZmRkaV9wcml2ICpicCA9IFx1MDAyNnNtYy1cdTAwM2VvcztcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0xMTExLVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9MTI4MD12b2lkIGxsY19yZXN0YXJ0X3R4KHN0cnVjdCBzX3NtYyAqc21jKVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTEyODEte1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjEyODI6XHRza2ZkZGlfcHJpdiAqYnAgPSBcdTAwMjZzbWMtXHUwMDNlb3M7XG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMTI4My1cbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9MTQ1MT12b2lkIGRtYV9jb21wbGV0ZShzdHJ1Y3Qgc19zbWMgKnNtYywgdm9sYXRpbGUgdW5pb24gc19mcF9kZXNjciAqZGVzY3IsIGludCBmbGFnKVxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0xNDY1LVx0aWYgKGZsYWcgXHUwMDI2IERNQV9XUikge1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjE0NjY6XHRcdHNrZmRkaV9wcml2ICpicCA9IFx1MDAyNnNtYy1cdTAwM2VvcztcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0xNDY3LVx0XHR2b2xhdGlsZSBzdHJ1Y3Qgc19zbXRfZnBfcnhkICpyID0gXHUwMDI2ZGVzY3ItXHUwMDNlcjtcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9MTU2ND12b2lkIG1hY19kcnZfcnhfY29tcGxldGUoc3RydWN0IHNfc21jICpzbWMsIHZvbGF0aWxlIHN0cnVjdCBzX3NtdF9mcF9yeGQgKnJ4ZCxcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMTU2Ni17XG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6MTU2NzpcdHNrZmRkaV9wcml2ICpicCA9IFx1MDAyNnNtYy1cdTAwM2VvcztcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0xNTY4LVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9MTgyMj12b2lkIG1hY19kcnZfY2xlYXJfcnhkKHN0cnVjdCBzX3NtYyAqc21jLCB2b2xhdGlsZSBzdHJ1Y3Qgc19zbXRfZnBfcnhkICpyeGQsXG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTE4MzYtXHRcdGlmIChza2IgIT0gTlVMTCkge1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjE4Mzc6XHRcdFx0c2tmZGRpX3ByaXYgKmJwID0gXHUwMDI2c21jLVx1MDAzZW9zO1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTE4MzgtXHRcdFx0aW50IE1heEZyYW1lU2l6ZSA9IGJwLVx1MDAzZU1heEZyYW1lU2l6ZTtcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9MjIyMD12b2lkIGRydl9yZXNldF9pbmRpY2F0aW9uKHN0cnVjdCBzX3NtYyAqc21jKVxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0yMjI3LVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjIyMjg6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHNrZmRkaV9wY2lfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjIyMjk6XHQubmFtZVx0XHQ9IFwmIzM0O3NrZmRkaVwmIzM0OyxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzoyMjMwOlx0LmlkX3RhYmxlXHQ9IHNrZmRkaV9wY2lfdGJsLFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTIyMzEtXHQucHJvYmVcdFx0PSBza2ZwX2luaXRfb25lLFxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0yMjM0LVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjIyMzU6bW9kdWxlX3BjaV9kcml2ZXIoc2tmZGRpX3BjaV9kcml2ZXIpO1xuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9zbXQuYy02LSAqXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc210LmM6NzogKlx0U2VlIHRoZSBmaWxlIFwmIzM0O3NrZmRkaS5jXCYjMzQ7IGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLlxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NtdC5jLTgtICpcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc210ZGVmLmMtNi0gKlxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NtdGRlZi5jOjc6ICpcdFNlZSB0aGUgZmlsZSBcJiMzNDtza2ZkZGkuY1wmIzM0OyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9zbXRkZWYuYy04LSAqXG4tLVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NtdGluaXQuYy02LSAqXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc210aW5pdC5jOjc6ICpcdFNlZSB0aGUgZmlsZSBcJiMzNDtza2ZkZGkuY1wmIzM0OyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9zbXRpbml0LmMtOC0gKlxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9zbXR0aW1lci5jLTYtICpcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9zbXR0aW1lci5jOjc6ICpcdFNlZSB0aGUgZmlsZSBcJiMzNDtza2ZkZGkuY1wmIzM0OyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9zbXR0aW1lci5jLTgtICpcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc3JmLmMtNi0gKlxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NyZi5jOjc6ICpcdFNlZSB0aGUgZmlsZSBcJiMzNDtza2ZkZGkuY1wmIzM0OyBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9zcmYuYy04LSAqXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDc6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzY4OAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgZHJpdmVyIGNvbmZpZ3VyYXRpb246CgoqKkludmVzdGlnYXRpbmcgdGhlIFNLRlAgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFNLRlAgZHJpdmVyIGlzIGNvbmZpZ3VyZWQuIEkga25vdyB0aGF0IEtjb25maWcgZmlsZXMgYXJlIHRoZSBzdGFuZGFyZCBmb3Iga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgc28gbXkgZmlyc3Qgc3RlcCBpcyBkZWZpbml0ZWx5IHRvIGRpdmUgaW50byBgZHJpdmVycy9uZXQvZmRkaS9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBJIGV4cGVjdCB0byBmaW5kIHRoZSBkZXBlbmRlbmNpZXMsIGJ1aWxkIG9wdGlvbnMsIGFuZCBhbGwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyByZWxhdGVkIHRvIHRoZSBTS0ZQIGRyaXZlci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggb3B0aW9ucyBjb250cm9sIGl0cyBpbmNsdXNpb24sIGFueSBzcGVjaWZpYyBmZWF0dXJlcywgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgbmV0d29yayBzdGFjay4gSSBhbnRpY2lwYXRlIHRoZXJlIG1pZ2h0IGJlIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgZmVhdHVyZXMgb3IgaGFyZHdhcmUsIHNvIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRob3NlIHRvby4gRXNzZW50aWFsbHksIEkmIzM5O20gdHJ5aW5nIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgaG93IHRoZSB1c2VyIGNhbiBlbmFibGUgb3IgZGlzYWJsZSB0aGlzIHBhcnRpY3VsYXIgZHJpdmVyIHdpdGhpbiB0aGUgb3ZlcmFsbCBrZXJuZWwgYnVpbGQgcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2ZkZGkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIEZEREkgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvblxuICAgNDpcdCNcbiAgIDU6XHRcbiAgIDY6XHRjb25maWcgRkRESVxuICAgNzpcdFx0dHJpc3RhdGUgXCYjMzQ7RkRESSBkcml2ZXIgc3VwcG9ydFwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiBQQ0kgfHwgRUlTQSB8fCBUQ1xuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBGaWJlciBEaXN0cmlidXRlZCBEYXRhIEludGVyZmFjZSBpcyBhIGhpZ2ggc3BlZWQgbG9jYWwgYXJlYSBuZXR3b3JrXG4gIDExOlx0XHQgIGRlc2lnbjsgZXNzZW50aWFsbHkgYSByZXBsYWNlbWVudCBmb3IgaGlnaCBzcGVlZCBFdGhlcm5ldC4gRkRESSBjYW5cbiAgMTI6XHRcdCAgcnVuIG92ZXIgY29wcGVyIG9yIGZpYmVyLiBJZiB5b3UgYXJlIGNvbm5lY3RlZCB0byBzdWNoIGEgbmV0d29yayBhbmRcbiAgMTM6XHRcdCAgd2FudCBhIGRyaXZlciBmb3IgdGhlIEZEREkgY2FyZCBpbiB5b3VyIGNvbXB1dGVyLCBzYXkgWSBoZXJlIChhbmRcbiAgMTQ6XHRcdCAgdGhlbiBhbHNvIFkgdG8gdGhlIGRyaXZlciBmb3IgeW91ciBGRERJIGNhcmQsIGJlbG93KS4gTW9zdCBwZW9wbGVcbiAgMTU6XHRcdCAgd2lsbCBzYXkgTi5cbiAgMTY6XHRcbiAgMTc6XHRpZiBGRERJXG4gIDE4Olx0XG4gIDE5Olx0Y29uZmlnIERFRlpBXG4gIDIwOlx0XHR0cmlzdGF0ZSBcJiMzNDtERUMgRkRESWNvbnRyb2xsZXIgNzAwLzcwMC1DIChERUZaQS14eCkgc3VwcG9ydFwmIzM0O1xuICAyMTpcdFx0ZGVwZW5kcyBvbiBGRERJIFx1MDAyNlx1MDAyNiBUQ1xuICAyMjpcdFx0aGVscFxuICAyMzpcdFx0ICBUaGlzIGlzIHN1cHBvcnQgZm9yIHRoZSBERUMgRkRESWNvbnRyb2xsZXIgNzAwIChERUZaQS1BQSwgZmliZXIpXG4gIDI0Olx0XHQgIGFuZCA3MDAtQyAoREVGWkEtQ0EsIGNvcHBlcikgVFVSQk9jaGFubmVsIG5ldHdvcmsgY2FyZHMgd2hpY2hcbiAgMjU6XHRcdCAgY2FuIGNvbm5lY3QgeW91IHRvIGEgbG9jYWwgRkRESSBuZXR3b3JrLlxuICAyNjpcdFxuICAyNzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gIDI4Olx0XHQgIHdpbGwgYmUgY2FsbGVkIGRlZnphLiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgMjk6XHRcbiAgMzA6XHRjb25maWcgREVGWFhcbiAgMzE6XHRcdHRyaXN0YXRlIFwmIzM0O0RpZ2l0YWwgREVGVEEvREVGRUEvREVGUEEgYWRhcHRlciBzdXBwb3J0XCYjMzQ7XG4gIDMyOlx0XHRkZXBlbmRzIG9uIEZEREkgXHUwMDI2XHUwMDI2IChQQ0kgfHwgRUlTQSB8fCBUQylcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgVGhpcyBpcyBzdXBwb3J0IGZvciB0aGUgRElHSVRBTCBzZXJpZXMgb2YgVFVSQk9jaGFubmVsIChERUZUQSksXG4gIDM1Olx0XHQgIEVJU0EgKERFRkVBKSBhbmQgUENJIChERUZQQSkgY29udHJvbGxlcnMgd2hpY2ggY2FuIGNvbm5lY3QgeW91XG4gIDM2Olx0XHQgIHRvIGEgbG9jYWwgRkRESSBuZXR3b3JrLlxuICAzNzpcdFxuICAzODpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gIDM5Olx0XHQgIHdpbGwgYmUgY2FsbGVkIGRlZnh4LiAgSWYgdW5zdXJlLCBzYXkgTi5cbiAgNDA6XHRcbiAgNDE6XHRjb25maWcgU0tGUFxuICA0MjpcdFx0dHJpc3RhdGUgXCYjMzQ7U3lzS29ubmVjdCBGRERJIFBDSSBzdXBwb3J0XCYjMzQ7XG4gIDQzOlx0XHRkZXBlbmRzIG9uIEZEREkgXHUwMDI2XHUwMDI2IFBDSVxuICA0NDpcdFx0c2VsZWN0IEJJVFJFVkVSU0VcbiAgNDU6XHRcdGhlbHBcbiAgNDY6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3UgaGF2ZSBhIFN5c0tvbm5lY3QgRkRESSBQQ0kgYWRhcHRlci5cbiAgNDc6XHRcdCAgVGhlIGZvbGxvd2luZyBhZGFwdGVycyBhcmUgc3VwcG9ydGVkIGJ5IHRoaXMgZHJpdmVyOlxuICA0ODpcdFx0ICAtIFNLLTU1MjEgKFNLLU5FVCBGRERJLVVQKVxuICA0OTpcdFx0ICAtIFNLLTU1MjIgKFNLLU5FVCBGRERJLVVQIERBUylcbiAgNTA6XHRcdCAgLSBTSy01NTQxIChTSy1ORVQgRkRESS1GUClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNzoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjkyCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNjIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgU3lzS29ubmVjdCBGRERJIFBDSSBTdXBwb3J0IGluIFN5emthbGxlcioqCgpPa2F5LCBzbyBgU0tGUGAgaXMgY2xlYXJseSByZWZlcnJpbmcgdG8gU3lzS29ubmVjdCYjMzk7cyBGRERJIFBDSSBzdXBwb3J0LiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBoYXJkd2FyZSwgc3BlY2lmaWNhbGx5IHRoZSBTeXNLb25uZWN0IEZEREkgUENJIGFkYXB0ZXIsIGlzIGVpdGhlciBlbXVsYXRlZCB3aXRoaW4gUUVNVSBvciBhY2Nlc3NpYmxlIGluIHN5emthbGxlciYjMzk7cyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gTGV0JiMzOTtzIGRpZyBpbi4KClRoZSBmaXJzdCBzdGVwIGlzIHRvIGNvbmZpcm0gdGhlIGhhcmR3YXJlJiMzOTtzIGlkZW50aXR5LiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBwaHlzaWNhbCBQQ0kgaGFyZHdhcmUgZnJvbSBTeXNLb25uZWN0LCBzcGVjaWZpY2FsbHkgbW9kZWxzIGxpa2UgdGhlIFNLLTU1MjEsIFNLLTU1MjIsIGFuZCBzbyBvbi4gVGhpcyB1c2VzIGEgdmVuZG9yIElEIChQQ0lfVkVORE9SX0lEX1NLKSBhbmQgZGV2aWNlIElEIChQQ0lfREVWSUNFX0lEX1NLX0ZQKS4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IHdlIGFyZSBsaWtlbHkgZGVhbGluZyB3aXRoIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSwgd2hpY2ggaXMgb2Z0ZW4gcHJvYmxlbWF0aWMgaW4gdGhlIHZpcnR1YWxpemVkIGNvbnRleHQuIEkgbmVlZCB0byBrbm93IGlmIFFFTVUgb2ZmZXJzIGFuIGVtdWxhdGlvbiBmb3IgdGhpcy4KCkkmIzM5O3ZlIGdvdCB0byBjb25zdWx0IHRoZSBndWlkZWxpbmVzLCBzcGVjaWZpY2FsbHkgU2VjdGlvbiAyLCB3aGljaCBleHBsaWNpdGx5IGNhbGxzIG91dCAmIzM0O3N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSwmIzM0OyBzdWNoIGFzIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzLCB0aGF0IGRlcGVuZCBvbiBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCYjMzk7cyBhIHJlZCBmbGFnLgoKTm93IGxldCYjMzk7cyBjaGVjayB0aGUgZGV0YWlsczogYHNrZmRkaV9wY2lfdGJsYCBzaG93cyB0aGF0IHRoaXMgaXMgaW5kZWVkIHBoeXNpY2FsIFBDSSBGRERJIGhhcmR3YXJlIHdpdGggdmVuZG9yIElEIDB4MTE0OCBhbmQgZGV2aWNlIElEIDB4NDAwMC4gSXQmIzM5O3MgRkRESSDigJMgRmliZXIgRGlzdHJpYnV0ZWQgRGF0YSBJbnRlcmZhY2Ug4oCTIGEgbGVnYWN5IHRlY2hub2xvZ3kuIE15IGtub3dsZWRnZSBjb25maXJtcyB0aGF0IFN5c0tvbm5lY3QgRkRESSBQQ0kgY2FyZHMgYXJlIHBoeXNpY2FsIFBDSSBib2FyZHMsIG5vdCBzb21ldGhpbmcgdGhhdCBjYW4gYmUgZWFzaWx5IHZpcnR1YWxpemVkLgoKTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IFFFTVUmIzM5O3Mgc3RhbmRhcmQgbmV0d29yayBkZXZpY2UgZW11bGF0aW9uIGRvZXNuJiMzOTt0IGluY2x1ZGUgc3VwcG9ydCBmb3IgRkRESS4gVGhlIGVtdWxhdGVkIGRldmljZXMgYXJlIHRoaW5ncyBsaWtlIGUxMDAwLCBydGw4MTM5LCBhbmQgdmlydGlvLW5ldC1wY2kg4oCTIG5vbmUgb2YgdGhvc2Ugc3VwcG9ydCBGRERJLCB3aGljaCBhbGlnbnMgd2l0aCBteSBwYXN0IG9ic2VydmF0aW9ucy4KCldpdGhvdXQgUUVNVSBlbXVsYXRpb24gb3IgYSBwaHlzaWNhbCBkZXZpY2UsIGBza2ZwX2luaXRfb25lYCwgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiwgaXMgbmV2ZXIgY2FsbGVkLiBUaGlzIG1lYW5zIHRoZSBgbmV0X2RldmljZWAgZm9yIHRoZSBGRERJIGNhcmQgaXMgbmV2ZXIgcmVnaXN0ZXJlZC4gQXMgYSByZXN1bHQsIGNyaXRpY2FsIGZ1bmN0aW9ucyBsaWtlIGBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3NgIGFyZSB1bnJlYWNoYWJsZS4gVGhpcyBpcyBhIGRlYWQgZW5kIHVubGVzcyB0aGVyZSYjMzk7cyBhIHdvcmthcm91bmQuCgpJIG5lZWQgdG8gY29uZmlybSB0aGVyZSYjMzk7cyBhYnNvbHV0ZWx5IG5vIG90aGVyIHdheSB0byByZWFjaCBgc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzYC4gYHNrZnBfY3RsX3NldF9tYWNfYWRkcmVzc2AgaXMgZWZmZWN0aXZlbHkgdGhlIGBuZG9fc2V0X21hY19hZGRyZXNzYCBmb3IgdGhpcyBwYXJ0aWN1bGFyIG5ldGRldi4gVGhpcyBuZXRkZXYgaXMgcmVnaXN0ZXJlZCB3aXRoaW4gYHNrZnBfaW5pdF9vbmVgLiBMZXQmIzM5O3MgdGFrZSBhIGxvb2sgaW5zaWRlIGBkcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmNgIHRvIGNvbmZpcm0gbXkgZmluZGluZ3MgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHVuZXhwZWN0ZWQgZW50cnkgcG9pbnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA3OjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMDA6XHQgKiAgIGluaXRpYWxpemVkIGFuZCB0aGUgYm9hcmQgcmVzb3VyY2VzIGFyZSByZWFkIGFuZCBzdG9yZWQgaW5cbiAyMDE6XHQgKiAgIHRoZSBkZXZpY2Ugc3RydWN0dXJlLlxuIDIwMjpcdCAqL1xuIDIwMzpcdHN0YXRpYyBpbnQgc2tmcF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiAyMDQ6XHRcdFx0XHRcdGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXG4gMjA1Olx0e1xuIDIwNjpcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldjtcbiAyMDc6XHRcdHN0cnVjdCBzX3NtYyAqc21jO1x0LyogYm9hcmQgcG9pbnRlciAqL1xuIDIwODpcdFx0dm9pZCBfX2lvbWVtICptZW07XG4gMjA5Olx0XHRpbnQgZXJyO1xuIDIxMDpcdFxuIDIxMTpcdFx0cHJfZGVidWcoXCYjMzQ7ZW50ZXJpbmcgc2tmcF9pbml0X29uZVxcblwmIzM0Oyk7XG4gMjEyOlx0XG4gMjEzOlx0XHRpZiAobnVtX2JvYXJkcyA9PSAwKSBcbiAyMTQ6XHRcdFx0cHJpbnRrKFwmIzM0OyVzXFxuXCYjMzQ7LCBib290X21zZyk7XG4gMjE1Olx0XG4gMjE2Olx0XHRlcnIgPSBwY2lfZW5hYmxlX2RldmljZShwZGV2KTtcbiAyMTc6XHRcdGlmIChlcnIpXG4gMjE4Olx0XHRcdHJldHVybiBlcnI7XG4gMjE5Olx0XG4gMjIwOlx0XHRlcnIgPSBwY2lfcmVxdWVzdF9yZWdpb25zKHBkZXYsIFwmIzM0O3NrZmRkaVwmIzM0Oyk7XG4gMjIxOlx0XHRpZiAoZXJyKVxuIDIyMjpcdFx0XHRnb3RvIGVycl9vdXQxO1xuIDIyMzpcdFxuIDIyNDpcdFx0cGNpX3NldF9tYXN0ZXIocGRldik7XG4gMjI1Olx0XG4gMjI2Olx0I2lmZGVmIE1FTV9NQVBQRURfSU9cbiAyMjc6XHRcdGlmICghKHBjaV9yZXNvdXJjZV9mbGFncyhwZGV2LCAwKSBcdTAwMjYgSU9SRVNPVVJDRV9NRU0pKSB7XG4gMjI4Olx0XHRcdHByaW50ayhLRVJOX0VSUiBcJiMzNDtza2ZwOiByZWdpb24gaXMgbm90IGFuIE1NSU8gcmVzb3VyY2VcXG5cJiMzNDspO1xuIDIyOTpcdFx0XHRlcnIgPSAtRUlPO1xuIDIzMDpcdFx0XHRnb3RvIGVycl9vdXQyO1xuIDIzMTpcdFx0fVxuIDIzMjpcdFxuIDIzMzpcdFx0bWVtID0gaW9yZW1hcChwY2lfcmVzb3VyY2Vfc3RhcnQocGRldiwgMCksIDB4NDAwMCk7XG4gMjM0Olx0I2Vsc2VcbiAyMzU6XHRcdGlmICghKHBjaV9yZXNvdXJjZV9mbGFncyhwZGV2LCAxKSBcdTAwMjYgSU9fUkVTT1VSQ0VfSU8pKSB7XG4gMjM2Olx0XHRcdHByaW50ayhLRVJOX0VSUiBcJiMzNDtza2ZwOiByZWdpb24gaXMgbm90IFBJTyByZXNvdXJjZVxcblwmIzM0Oyk7XG4gMjM3Olx0XHRcdGVyciA9IC1FSU87XG4gMjM4Olx0XHRcdGdvdG8gZXJyX291dDI7XG4gMjM5Olx0XHR9XG4gMjQwOlx0XG4gMjQxOlx0XHRtZW0gPSBpb3BvcnRfbWFwKHBjaV9yZXNvdXJjZV9zdGFydChwZGV2LCAxKSwgRlBfSU9fTEVOKTtcbiAyNDI6XHQjZW5kaWZcbiAyNDM6XHRcdGlmICghbWVtKSB7XG4gMjQ0Olx0XHRcdHByaW50ayhLRVJOX0VSUiBcJiMzNDtza2ZwOiAgVW5hYmxlIHRvIG1hcCByZWdpc3RlciwgXCYjMzQ7XG4gMjQ1Olx0XHRcdFx0XHRcJiMzNDtGRERJIGFkYXB0ZXIgd2lsbCBiZSBkaXNhYmxlZC5cXG5cJiMzNDspO1xuIDI0NjpcdFx0XHRlcnIgPSAtRUlPO1xuIDI0NzpcdFx0XHRnb3RvIGVycl9vdXQyO1xuIDI0ODpcdFx0fVxuIDI0OTpcdFxuIDI1MDpcdFx0ZGV2ID0gYWxsb2NfZmRkaWRldihzaXplb2Yoc3RydWN0IHNfc21jKSk7XG4gMjUxOlx0XHRpZiAoIWRldikge1xuIDI1MjpcdFx0XHRwcmludGsoS0VSTl9FUlIgXCYjMzQ7c2tmcDogVW5hYmxlIHRvIGFsbG9jYXRlIGZkZGkgZGV2aWNlLCBcJiMzNDtcbiAyNTM6XHRcdFx0XHRcdFwmIzM0O0ZEREkgYWRhcHRlciB3aWxsIGJlIGRpc2FibGVkLlxcblwmIzM0Oyk7XG4gMjU0Olx0XHRcdGVyciA9IC1FTk9NRU07XG4gMjU1Olx0XHRcdGdvdG8gZXJyX291dDM7XG4gMjU2Olx0XHR9XG4gMjU3Olx0XG4gMjU4Olx0XHRkZXYtXHUwMDNlaXJxID0gcGRldi1cdTAwM2VpcnE7XG4gMjU5Olx0XHRkZXYtXHUwMDNlbmV0ZGV2X29wcyA9IFx1MDAyNnNrZnBfbmV0ZGV2X29wcztcbiAyNjA6XHRcbiAyNjE6XHRcdFNFVF9ORVRERVZfREVWKGRldiwgXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuIDI2MjpcdFxuIDI2MzpcdFx0LyogSW5pdGlhbGl6ZSBib2FyZCBzdHJ1Y3R1cmUgd2l0aCBidXMtc3BlY2lmaWMgaW5mbyAqL1xuIDI2NDpcdFx0c21jID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiAyNjU6XHRcdHNtYy1cdTAwM2Vvcy5kZXYgPSBkZXY7XG4gMjY2Olx0XHRzbWMtXHUwMDNlb3MuYnVzX3R5cGUgPSBTS19CVVNfVFlQRV9QQ0k7XG4gMjY3Olx0XHRzbWMtXHUwMDNlb3MucGRldiA9ICpwZGV2O1xuIDI2ODpcdFx0c21jLVx1MDAzZW9zLlF1ZXVlU2tiID0gTUFYX1RYX1FVRVVFX0xFTjtcbiAyNjk6XHRcdHNtYy1cdTAwM2Vvcy5NYXhGcmFtZVNpemUgPSBNQVhfRlJBTUVfU0laRTtcbiAyNzA6XHRcdHNtYy1cdTAwM2Vvcy5kZXYgPSBkZXY7XG4gMjcxOlx0XHRzbWMtXHUwMDNlaHcuc2xvdCA9IC0xO1xuIDI3MjpcdFx0c21jLVx1MDAzZWh3LmlvcCA9IG1lbTtcbiAyNzM6XHRcdHNtYy1cdTAwM2Vvcy5SZXNldFJlcXVlc3RlZCA9IEZBTFNFO1xuIDI3NDpcdFx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZzbWMtXHUwMDNlb3MuU2VuZFNrYlF1ZXVlKTtcbiAyNzU6XHRcbiAyNzY6XHRcdGRldi1cdTAwM2ViYXNlX2FkZHIgPSAodW5zaWduZWQgbG9uZyltZW07XG4gMjc3Olx0XG4gMjc4Olx0XHRlcnIgPSBza2ZwX2RyaXZlcl9pbml0KGRldik7XG4gMjc5Olx0XHRpZiAoZXJyKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA3OjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMjA3CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIGBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3NgKioKCk9rYXksIHRpbWUgdG8gZGlnIGludG8gYHNrZnBfY3RsX3NldF9tYWNfYWRkcmVzc2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBzY29wZSBhbmQgaW1wYWN0LiBNeSBmaXJzdCBzdGVwIGlzIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkIGFuZCB3aGVyZSBpdCYjMzk7cyByZWZlcmVuY2VkIHdpdGhpbiB0aGUgY29kZWJhc2UuIEkgd2FudCB0byBidWlsZCBhIHF1aWNrIG1hcCBpbiBteSBoZWFkIG9mIGl0cyB1c2FnZS4gVGhpcyB3aWxsIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciBldmFsdWF0aW5nIGl0cyBiZWhhdmlvciwgcG90ZW50aWFsIGlzc3Vlcywgb3IgYXJlYXMgZm9yIG9wdGltaXphdGlvbiwgZGVwZW5kaW5nIG9uIHdoYXQgSSYjMzk7bSBsb29raW5nIGludG8gcmlnaHQgbm93LiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhlIGNhbGwgZ3JhcGggcmV2ZWFscy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDc6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2tmcF9jdGxfc2V0X21hY19hZGRyZXNzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz0xMDY9c3RhdGljIHZvaWQgc2tmcF9jdGxfc2V0X211bHRpY2FzdF9saXN0X3dvX2xvY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6MTA3OnN0YXRpYyBpbnQgc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKmFkZHIpO1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTEwOC1zdGF0aWMgaW50IHNrZnBfc2lvY2RldnByaXZhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICpycSxcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9MTY0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgc2tmcF9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0xNjktXHQubmRvX3NldF9yeF9tb2RlXHQ9IHNrZnBfY3RsX3NldF9tdWx0aWNhc3RfbGlzdCxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzoxNzA6XHQubmRvX3NldF9tYWNfYWRkcmVzc1x0PSBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3MsXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMTcxLVx0Lm5kb19zaW9jZGV2cHJpdmF0ZVx0PSBza2ZwX3Npb2NkZXZwcml2YXRlLFxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz04NTA9c3RhdGljIHZvaWQgc2tmcF9jdGxfc2V0X211bHRpY2FzdF9saXN0X3dvX2xvY2soc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtOTAzLSAqID09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjkwNDogKiA9IHNrZnBfY3RsX3NldF9tYWNfYWRkcmVzcyA9XG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtOTA1LSAqID09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLS1cbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy05MjAtICovXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6OTIxOnN0YXRpYyBpbnQgc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKmFkZHIpXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtOTIyLXtcbi0tXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtOTM1LVx0cmV0dXJuIDA7XHRcdC8qIGFsd2F5cyByZXR1cm4gemVybyAqL1xuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjkzNjp9XHRcdFx0XHQvLyBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3NcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy05MzctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA3OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMDQ0CgkJCQkJCQlvdXRwdXQ6IDE0NgoJCQkJCQkJdGhvdWdodHM6IDQzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgc2tmcGAgRkRESSBEcml2ZXImIzM5O3MgRnV6emluZyBTdWl0YWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgYGRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9gIGRpcmVjdG9yeSBjb250YWlucyB0aGUgUENJIGRyaXZlciBmb3IgdGhvc2Ugb2xkIFN5c0tvbm5lY3QgRkRESSBuZXR3b3JrIGFkYXB0ZXJzLiBSaWdodCBhd2F5LCBJIHNlZSBhIHByb2JsZW06IHRoaXMgZHJpdmVyIG5lZWRzIGFjdHVhbCBwaHlzaWNhbCBQQ0kgaGFyZHdhcmUsIGEgU3lzS29ubmVjdCBGRERJIGNhcmQgc3BlY2lmaWNhbGx5ICh2ZW5kb3IgSUQgYDB4MTE0OGAsIGRldmljZSBJRCBgMHg0MDAwYCkuIFRoYXQmIzM5O3MgYSBkZWFsLWJyZWFrZXIgYmVjYXVzZSBzdGFuZGFyZCBRRU1VIGFuZCBzeXprYWxsZXIgZW52aXJvbm1lbnRzICpkb24mIzM5O3QqIGVtdWxhdGUgdGhpcyBraW5kIG9mIGxlZ2FjeSBoYXJkd2FyZS4KClNvLCB0aGUgbW9kaWZpZWQgY29kZSBpbiBgc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzYCBpcyBlZmZlY3RpdmVseSB1bnJlYWNoYWJsZSBpbiBvdXIgdHlwaWNhbCB2aXJ0dWFsaXplZCBmdXp6aW5nIHNldHVwcy4gV2UgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgdGhpcyBpcyB0cnVlLCBzbyBsZXQmIzM5O3MgY3Jvc3MtY2hlY2s6CgoqICAgKipVbnJlYWNoYWJsZSBIYXJkd2FyZToqKiBEb2VzIHRoZSBtb2RpZmljYXRpb24gZGVwZW5kIG9uIHNwZWNpYWwgaGFyZHdhcmU/IFllcy4gSXQmIzM5O3MgYSBjbGFzc2ljIHBoeXNpY2FsIG5ldHdvcmsgY2FyZCBkcml2ZXIuIEl0JiMzOTtzIG5vdCBsaWtlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggZW11bGF0ZWQgY29tcG9uZW50cy4KKiAgICoqSGFyZHdhcmUgRGVwZW5kZW5jaWVzOioqIFRoaXMgaXMgYSBjbGVhciBjYXNlIG9mIGEgZHJpdmVyIHRoYXQgb25seSB3b3JrcyB3aXRoIHBoeXNpY2FsIEFTSUNzL1BDSWUgY2FyZHMuIFRoaXMgaGFyZHdhcmUgaXMgbm90IHN1cHBvcnRlZCBieSBRRU1VIGVtdWxhdGlvbi4KClRoZXJlZm9yZSwgYmVjYXVzZSB0aGlzIGRyaXZlciBpcyBzb2xlbHkgZGVwZW5kZW50IG9uIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBvdXIgcHJpbWFyeSB0ZXN0IGVudmlyb25tZW50cywgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGRlZmluaXRlbHkgYmUgYGZhbHNlYC4KCkZvciBjb25maWd1cmF0aW9ucywgd2Ugc2hvdWxkIHNldCBgRW5hYmxlQ29uZmlnc2AgdG8gaW5jbHVkZSBtaW5pbWFsIHJlbGV2YW50IGNvbmZpZ3M7IGBbJiMzNDtGRERJJiMzNDssICYjMzQ7U0tGUCYjMzQ7LCAmIzM0O1BDSSYjMzQ7XWAgaXMgcHJvYmFibHkgYXBwcm9wcmlhdGUsIG9yIHBvc3NpYmx5IGV2ZW4gYW4gZW1wdHkgbGlzdCwgYmVjYXVzZSB0aGVyZSBpcyBubyBiZW5lZml0IHRvIGVuYWJsaW5nIGl0LgoKU2luY2UgdGhlIGZ1enppbmcgaXMgbm90IHdvcnRoIGl0LCB3ZSBkb24mIzM5O3QgbmVlZCB0byBzcGVjaWZ5IGBGb2N1c1N5bWJvbHNgLiBTbyBgRm9jdXNTeW1ib2xzYCBzaG91bGQgYmUgc2V0IHRvIGBbXWAuCgpUbyByZWluZm9yY2UgdGhpcywgbGV0JiMzOTtzIHN0ZXAgdGhyb3VnaCB0aGUgcmVhc29uaW5nIG9uY2UgbW9yZToKCjEuICBXZSYjMzk7cmUgbG9va2luZyBhdCBhIHBhdGNoIHRoYXQgbW9kaWZpZXMgYHNrZnBfY3RsX3NldF9tYWNfYWRkcmVzc2AgaW4gYGRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuY2AuCjIuICBUaGF0IGZpbGUgaXMgcGFydCBvZiB0aGUgU3lzS29ubmVjdCBGRERJIFBDSSBhZGFwdGVyIGRyaXZlciAoYENPTkZJR19TS0ZQYCkuCjMuICBUaGlzIGRyaXZlciAqb25seSogd29ya3Mgd2l0aCBwaHlzaWNhbCBTeXNLb25uZWN0IEZEREkgUENJIGhhcmR3YXJlIHdpdGggdGhhdCBzcGVjaWZpYyBQQ0kgSUQuCjQuICBTdGFuZGFyZCBRRU1VIGFuZCBzeXprYWxsZXIgZG9uJiMzOTt0IGVtdWxhdGUgdGhpcy4KNS4gIFRodXMsIHRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLgoKT2theSwgdGhhdCBjb25maXJtcyBpdC4gVGltZSB0byBmaW5hbGl6ZSB0aGUgYXNzZXNzbWVudCBhbmQgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RkRESSYjMzQ7LAogICAgJiMzNDtTS0ZQJiMzNDssCiAgICAmIzM0O1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3MgaW4gZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLCB3aGljaCBpcyB0aGUgZHJpdmVyIGZvciBsZWdhY3kgU3lzS29ubmVjdCBGRERJIFBDSSBhZGFwdGVycyAoQ09ORklHX1NLRlApLiBUaGlzIGRyaXZlciBiaW5kcyB0byBzcGVjaWZpYyBwaHlzaWNhbCBQQ0kgaGFyZHdhcmUgKFBDSSBJRCAweDExNDg6MHg0MDAwKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIC8gc3l6a2FsbGVyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0ZEREkmIzM0OywKICAgICYjMzQ7U0tGUCYjMzQ7LAogICAgJiMzNDtQQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzIGluIGRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYywgd2hpY2ggaXMgdGhlIGRyaXZlciBmb3IgbGVnYWN5IFN5c0tvbm5lY3QgRkRESSBQQ0kgYWRhcHRlcnMgKENPTkZJR19TS0ZQKS4gVGhpcyBkcml2ZXIgYmluZHMgdG8gc3BlY2lmaWMgcGh5c2ljYWwgUENJIGhhcmR3YXJlIChQQ0kgSUQgMHgxMTQ4OjB4NDAwMCkgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSAvIHN5emthbGxlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwNzoxNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTBUMDc6MTQ6MzMuMTAyNzMyMjA2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE0NzkwMTk2MDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRkRESVwiLFxuICAgIFwiU0tGUFwiLFxuICAgIFwiUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3MgaW4gZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLCB3aGljaCBpcyB0aGUgZHJpdmVyIGZvciBsZWdhY3kgU3lzS29ubmVjdCBGRERJIFBDSSBhZGFwdGVycyAoQ09ORklHX1NLRlApLiBUaGlzIGRyaXZlciBiaW5kcyB0byBzcGVjaWZpYyBwaHlzaWNhbCBQQ0kgaGFyZHdhcmUgKFBDSSBJRCAweDExNDg6MHg0MDAwKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIC8gc3l6a2FsbGVyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA3OjE0OjMzLjEwMjczNzU2NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIyNDgyMDk2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQzMGE2MWJhNDY4NDFjZjY0YjEyMWVkN2YyZTU4MDZmNDJiMWFlMWZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBTZXAgMTAgMDc6MTQ6MzEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jXFxuaW5kZXggYTI3MzM2MmM5ZTcwMy4uZmVlYTdiYWE0ODE2OCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmNcXG4rKysgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmNcXG5AQCAtOTI4LDcgKzkyOCw4IEBAIHN0YXRpYyBpbnQgc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKmFkZHIpXFxuIFxcbiBcXHRkZXZfYWRkcl9zZXQoZGV2LCBwX3NvY2thZGRyLVxcdTAwM2VzYV9kYXRhKTtcXG4gXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmJwLVxcdTAwM2VEcml2ZXJMb2NrLCBGbGFncyk7XFxuLVxcdFJlc2V0QWRhcHRlcihzbWMpO1xcbitcXHRpZiAobmV0aWZfcnVubmluZyhkZXYpKVxcbitcXHRcXHRSZXNldEFkYXB0ZXIoc21jKTtcXG4gXFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2YnAtXFx1MDAzZURyaXZlckxvY2ssIEZsYWdzKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcdFxcdC8qIGFsd2F5cyByZXR1cm4gemVybyAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNzoxNDozNC4zMjg0NjU2NTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQwMjUzMjY5NzQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZERElcIixcbiAgICBcIlNLRlBcIixcbiAgICBcIlBDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3MgaW4gZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLCB3aGljaCBpcyB0aGUgZHJpdmVyIGZvciBsZWdhY3kgU3lzS29ubmVjdCBGRERJIFBDSSBhZGFwdGVycyAoQ09ORklHX1NLRlApLiBUaGlzIGRyaXZlciBiaW5kcyB0byBzcGVjaWZpYyBwaHlzaWNhbCBQQ0kgaGFyZHdhcmUgKFBDSSBJRCAweDExNDg6MHg0MDAwKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIC8gc3l6a2FsbGVyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDMwYTYxYmE0Njg0MWNmNjRiMTIxZWQ3ZjJlNTgwNmY0MmIxYWUxZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDA3OjE0OjMxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jIGIvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jXG5pbmRleCBhMjczMzYyYzllNzAzLi5mZWVhN2JhYTQ4MTY4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jXG4rKysgYi9kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmNcbkBAIC05MjgsNyArOTI4LDggQEAgc3RhdGljIGludCBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqYWRkcilcbiBcbiBcdGRldl9hZGRyX3NldChkZXYsIHBfc29ja2FkZHItXHUwMDNlc2FfZGF0YSk7XG4gXHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZicC1cdTAwM2VEcml2ZXJMb2NrLCBGbGFncyk7XG4tXHRSZXNldEFkYXB0ZXIoc21jKTtcbitcdGlmIChuZXRpZl9ydW5uaW5nKGRldikpXG4rXHRcdFJlc2V0QWRhcHRlcihzbWMpO1xuIFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZicC1cdTAwM2VEcml2ZXJMb2NrLCBGbGFncyk7XG4gXG4gXHRyZXR1cm4gMDtcdFx0LyogYWx3YXlzIHJldHVybiB6ZXJvICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNzoxNDozNC4zMjg0NjcwMjdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo5MjY3OTE3NzU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgcmV2aWV3aW5nIHRoaXMgcGF0Y2g6XG5cbioqQW5hbHl6aW5nIHRoZSBOZXR3b3JrIERyaXZlciBDaGFuZ2UqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gVGhlIGZpcnN0IHN0ZXAgaXMgYWx3YXlzIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoZSBjaGFuZ2UgYW5kIHRoZSBwb3RlbnRpYWwgaW1wYWN0LiBJIHNlZSB0aGUgZmlsZSBjaGFuZ2VkIGlzIGBkcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmNgLiBUaGF0IHRlbGxzIG1lIHRoaXMgaXMgcmVsYXRlZCB0byB0aGUgRkRESSAoRmliZXIgRGlzdHJpYnV0ZWQgRGF0YSBJbnRlcmZhY2UpIG5ldHdvcmsgZHJpdmVyIGZvciB0aGUgU0tGUCBoYXJkd2FyZS5cblxuTm93LCBiZWZvcmUgSSBldmVuIGxvb2sgYXQgdGhlIGNvZGUgaXRzZWxmLCBJIG5lZWQgdGhlIGNvbnRleHQuIFdoYXQgaGFyZHdhcmUgYXJlIHdlIGFjdHVhbGx5IHRhbGtpbmcgYWJvdXQgaGVyZT8gSXMgdGhpcyBzdGlsbCByZWxldmFudCBoYXJkd2FyZT8gSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIHRvIHNlZSBob3cgdGhpcyBkcml2ZXIgaXMgY29uZmlndXJlZC4gSXMgaXQgZW5hYmxlZCBieSBkZWZhdWx0PyBJcyBpdCBidWlsdCBhcyBhIG1vZHVsZSwgb3IgYnVpbHQgaW4/IFdoYXQgZGVwZW5kZW5jaWVzIGRvZXMgaXQgaGF2ZT8gSSBuZWVkIHRvIGFzY2VydGFpbiBpZiB0aGlzIGlzIGEgXCJyZWFjaGFibGVcIiBwaWVjZSBvZiBoYXJkd2FyZSBpbiBvdXIgY3VycmVudCBlY29zeXN0ZW0sIG9yIGlmIGl0J3MgcG90ZW50aWFsbHkgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlxuXG5NeSBuZXh0IG1vdmUgaXMgdG8gdXNlIGBnaXQgZ3JlcGAgb3Igc2VhcmNoIHRoZSBLY29uZmlnIGZpbGVzIGFyb3VuZCBgZHJpdmVycy9uZXQvZmRkaS9za2ZwL2AgdG8gdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGlzIGRyaXZlciBpcyBidWlsdCBhbmQgaW5jbHVkZWQgaW4gdGhlIGtlcm5lbC4gVGhpcyB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBoYXJkd2FyZSBpdCBzdXBwb3J0cyBhbmQgdGhlIHRhcmdldCBwbGF0Zm9ybXMuIFRoaXMgaXMgY3J1Y2lhbCBiZWZvcmUgSSBldmVuIGNvbnNpZGVyIHRoZSBjb2RlIGl0c2VsZi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkxOSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDc6MTQ6NDMuNTk2Mzg3MDQzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1OTg1MTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNrZmRkaVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9mZGRpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9NYWtlZmlsZT02PW9iai0kKENPTkZJR19TS0ZQKSArPSBza2ZwLm9cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvTWFrZWZpbGUtNy1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvTWFrZWZpbGU6ODpza2ZwLW9ianMgOj0gIHNrZmRkaS5vICAgIGh3bXRtLm8gICAgZnBsdXN0bS5vICBzbXQubyAgICAgIGNmbS5vICAgICBcXFxcXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL01ha2VmaWxlLTktICAgICAgICAgICAgICBlY20ubyAgICAgICBwY21wbGMubyAgIHBtZi5vICAgICAgcXVldWUubyAgICBybXQubyAgICAgXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL01ha2VmaWxlLTE1LSMgICBzd2l0Y2hlZCBvZmYgYmVsb3cpLCBidXQgSSBkaWQgbm90IGZpeCB0aGlzLCBiZWNhdXNlIHRoZSBIYXJkd2FyZVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9NYWtlZmlsZToxNjojICAgTW9kdWxlIHNvdXJjZSAoc2VlIHNrZmRkaS5jIGZvciBkZXRhaWxzKSBpcyB1c2VkIGZvciBkaWZmZXJlbnRcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvTWFrZWZpbGUtMTctIyAgIGRyaXZlcnMsIGFuZCBmaXhpbmcgaXQgZm9yIExpbnV4IG1pZ2h0IGJyaW5nIHByb2JsZW1zIG9uIG90aGVyXFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvY2ZtLmMtNi0gKlxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9jZm0uYzo3OiAqXFx0U2VlIHRoZSBmaWxlIFxcXCJza2ZkZGkuY1xcXCIgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2NmbS5jLTgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9kcnZmYmkuYy02LSAqXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2RydmZiaS5jOjc6ICpcXHRTZWUgdGhlIGZpbGUgXFxcInNrZmRkaS5jXFxcIiBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvZHJ2ZmJpLmMtOC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2VjbS5jLTYtICpcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvZWNtLmM6NzogKlxcdFNlZSB0aGUgZmlsZSBcXFwic2tmZGRpLmNcXFwiIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLlxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9lY20uYy04LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvZXNzLmMtNi0gKlxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9lc3MuYzo3OiAqXFx0U2VlIHRoZSBmaWxlIFxcXCJza2ZkZGkuY1xcXCIgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2Vzcy5jLTgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9mcGx1c3RtLmMtNi0gKlxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9mcGx1c3RtLmM6NzogKlxcdFNlZSB0aGUgZmlsZSBcXFwic2tmZGRpLmNcXFwiIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLlxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9mcGx1c3RtLmMtOC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2gvdGFyZ2V0b3MuaD0xMTg9c3RydWN0IHNfc210X29zIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL3RhcmdldG9zLmgtMTU3LVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL3RhcmdldG9zLmg6MTU4OnR5cGVkZWYgc3RydWN0IHNfc210X29zIHNrZmRkaV9wcml2O1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9oL3RhcmdldG9zLmgtMTU5LVxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2h3bXRtLmMtNi0gKlxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9od210bS5jOjc6ICpcXHRTZWUgdGhlIGZpbGUgXFxcInNrZmRkaS5jXFxcIiBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvaHdtdG0uYy04LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvaHd0LmMtNi0gKlxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9od3QuYzo3OiAqXFx0U2VlIHRoZSBmaWxlIFxcXCJza2ZkZGkuY1xcXCIgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL2h3dC5jLTgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9wY21wbGMuYy02LSAqXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BjbXBsYy5jOjc6ICpcXHRTZWUgdGhlIGZpbGUgXFxcInNrZmRkaS5jXFxcIiBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvcGNtcGxjLmMtOC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3BtZi5jLTYtICpcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvcG1mLmM6NzogKlxcdFNlZSB0aGUgZmlsZSBcXFwic2tmZGRpLmNcXFwiIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLlxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9wbWYuYy04LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvcXVldWUuYy02LSAqXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3F1ZXVlLmM6NzogKlxcdFNlZSB0aGUgZmlsZSBcXFwic2tmZGRpLmNcXFwiIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLlxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9xdWV1ZS5jLTgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9ybXQuYy02LSAqXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3JtdC5jOjc6ICpcXHRTZWUgdGhlIGZpbGUgXFxcInNrZmRkaS5jXFxcIiBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvcm10LmMtOC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTMtICogRmlsZSBOYW1lOlxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzo0OiAqICAgc2tmZGRpLmNcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtNS0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTM0LSAqICAgVGhlIG9ubHkgaGVhZGVyZmlsZXMgdGhhdCBhcmUgZGlyZWN0bHkgcmVsYXRlZCB0byB0aGlzIHNvdXJjZVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzozNTogKiAgIGFyZSBza2ZkZGkuYywgaC90eXBlcy5oLCBoL29zZGVmMXN0LmgsIGgvdGFyZ2V0b3MuaC5cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMzYtICogICBUaGUgb3RoZXJzIGJlbG9uZyB0byB0aGUgU3lzS29ubmVjdCBGRERJIEhhcmR3YXJlIE1vZHVsZSBhbmRcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz0xNDk9ZXh0ZXJuIHZvaWQgZW5hYmxlX3R4X2lycShzdHJ1Y3Qgc19zbWMgKnNtYywgdV9zaG9ydCBxdWV1ZSk7XFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTE1MC1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6MTUxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBza2ZkZGlfcGNpX3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0xNTItXFx0eyBQQ0lfVkVORE9SX0lEX1NLLCBQQ0lfREVWSUNFX0lEX1NLX0ZQLCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTE1NC19O1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzoxNTU6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHNrZmRkaV9wY2lfdGJsKTtcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMTU2LU1PRFVMRV9ERVNDUklQVElPTihcXFwiU3lzS29ubmVjdCBGRERJIFBDSSBkcml2ZXJcXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz0yMDM9c3RhdGljIGludCBza2ZwX2luaXRfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTIxOS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6MjIwOlxcdGVyciA9IHBjaV9yZXF1ZXN0X3JlZ2lvbnMocGRldiwgXFxcInNrZmRkaVxcXCIpO1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0yMjEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz0zODA9c3RhdGljICBpbnQgc2tmcF9kcml2ZXJfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTM4Mi1cXHRzdHJ1Y3Qgc19zbWMgKnNtYyA9IG5ldGRldl9wcml2KGRldik7XFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjM4MzpcXHRza2ZkZGlfcHJpdiAqYnAgPSBcXHUwMDI2c21jLVxcdTAwM2VvcztcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMzg0LVxcdGludCBlcnIgPSAtRUlPO1xcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jPTU0OT1zdGF0aWMgaW50IHNrZnBfY2xvc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy01NTEtXFx0c3RydWN0IHNfc21jICpzbWMgPSBuZXRkZXZfcHJpdihkZXYpO1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzo1NTI6XFx0c2tmZGRpX3ByaXYgKmJwID0gXFx1MDAyNnNtYy1cXHUwMDNlb3M7XFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTU1My1cXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz02MDY9c3RhdGljIGlycXJldHVybl90IHNrZnBfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKmRldl9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy02MDktXFx0c3RydWN0IHNfc21jICpzbWM7XFx0LyogcHJpdmF0ZSBib2FyZCBzdHJ1Y3R1cmUgcG9pbnRlciAqL1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzo2MTA6XFx0c2tmZGRpX3ByaXYgKmJwO1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy02MTEtXFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9ODM3PXN0YXRpYyB2b2lkIHNrZnBfY3RsX3NldF9tdWx0aWNhc3RfbGlzdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTgzOS1cXHRzdHJ1Y3Qgc19zbWMgKnNtYyA9IG5ldGRldl9wcml2KGRldik7XFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjg0MDpcXHRza2ZkZGlfcHJpdiAqYnAgPSBcXHUwMDI2c21jLVxcdTAwM2VvcztcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtODQxLVxcdHVuc2lnbmVkIGxvbmcgRmxhZ3M7XFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9OTIxPXN0YXRpYyBpbnQgc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKmFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtOTI0LVxcdHN0cnVjdCBzb2NrYWRkciAqcF9zb2NrYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKikgYWRkcjtcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6OTI1OlxcdHNrZmRkaV9wcml2ICpicCA9IFxcdTAwMjZzbWMtXFx1MDAzZW9zO1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy05MjYtXFx0dW5zaWduZWQgbG9uZyBGbGFncztcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz05NjI9c3RhdGljIGludCBza2ZwX3Npb2NkZXZwcml2YXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBpZnJlcSAqcnEsIHZvaWQgX191c2VyICpkYXRhLCBpbnQgY21kKVxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTk2NC1cXHRzdHJ1Y3Qgc19zbWMgKnNtYyA9IG5ldGRldl9wcml2KGRldik7XFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjk2NTpcXHRza2ZkZGlfcHJpdiAqbHAgPSBcXHUwMDI2c21jLVxcdTAwM2VvcztcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtOTY2LVxcdHN0cnVjdCBzX3NrZnBfaW9jdGwgaW9jO1xcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jPTEwNDU9c3RhdGljIG5ldGRldl90eF90IHNrZnBfc2VuZF9wa3Qoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0xMDQ4LVxcdHN0cnVjdCBzX3NtYyAqc21jID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6MTA0OTpcXHRza2ZkZGlfcHJpdiAqYnAgPSBcXHUwMDI2c21jLVxcdTAwM2VvcztcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMTA1MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz0xMTA4PXN0YXRpYyB2b2lkIHNlbmRfcXVldWVkX3BhY2tldHMoc3RydWN0IHNfc21jICpzbWMpXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTExMDkte1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzoxMTEwOlxcdHNrZmRkaV9wcml2ICpicCA9IFxcdTAwMjZzbWMtXFx1MDAzZW9zO1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0xMTExLVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9MTI4MD12b2lkIGxsY19yZXN0YXJ0X3R4KHN0cnVjdCBzX3NtYyAqc21jKVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0xMjgxLXtcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6MTI4MjpcXHRza2ZkZGlfcHJpdiAqYnAgPSBcXHUwMDI2c21jLVxcdTAwM2VvcztcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMTI4My1cXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz0xNDUxPXZvaWQgZG1hX2NvbXBsZXRlKHN0cnVjdCBzX3NtYyAqc21jLCB2b2xhdGlsZSB1bmlvbiBzX2ZwX2Rlc2NyICpkZXNjciwgaW50IGZsYWcpXFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMTQ2NS1cXHRpZiAoZmxhZyBcXHUwMDI2IERNQV9XUikge1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzoxNDY2OlxcdFxcdHNrZmRkaV9wcml2ICpicCA9IFxcdTAwMjZzbWMtXFx1MDAzZW9zO1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0xNDY3LVxcdFxcdHZvbGF0aWxlIHN0cnVjdCBzX3NtdF9mcF9yeGQgKnIgPSBcXHUwMDI2ZGVzY3ItXFx1MDAzZXI7XFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9MTU2ND12b2lkIG1hY19kcnZfcnhfY29tcGxldGUoc3RydWN0IHNfc21jICpzbWMsIHZvbGF0aWxlIHN0cnVjdCBzX3NtdF9mcF9yeGQgKnJ4ZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0xNTY2LXtcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6MTU2NzpcXHRza2ZkZGlfcHJpdiAqYnAgPSBcXHUwMDI2c21jLVxcdTAwM2VvcztcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMTU2OC1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jPTE4MjI9dm9pZCBtYWNfZHJ2X2NsZWFyX3J4ZChzdHJ1Y3Qgc19zbWMgKnNtYywgdm9sYXRpbGUgc3RydWN0IHNfc210X2ZwX3J4ZCAqcnhkLFxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTE4MzYtXFx0XFx0aWYgKHNrYiAhPSBOVUxMKSB7XFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjE4Mzc6XFx0XFx0XFx0c2tmZGRpX3ByaXYgKmJwID0gXFx1MDAyNnNtYy1cXHUwMDNlb3M7XFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTE4MzgtXFx0XFx0XFx0aW50IE1heEZyYW1lU2l6ZSA9IGJwLVxcdTAwM2VNYXhGcmFtZVNpemU7XFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9MjIyMD12b2lkIGRydl9yZXNldF9pbmRpY2F0aW9uKHN0cnVjdCBzX3NtYyAqc21jKVxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTIyMjctXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jOjIyMjg6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIHNrZmRkaV9wY2lfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzoyMjI5OlxcdC5uYW1lXFx0XFx0PSBcXFwic2tmZGRpXFxcIixcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6MjIzMDpcXHQuaWRfdGFibGVcXHQ9IHNrZmRkaV9wY2lfdGJsLFxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0yMjMxLVxcdC5wcm9iZVxcdFxcdD0gc2tmcF9pbml0X29uZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy0yMjM0LVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzoyMjM1Om1vZHVsZV9wY2lfZHJpdmVyKHNrZmRkaV9wY2lfZHJpdmVyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9zbXQuYy02LSAqXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NtdC5jOjc6ICpcXHRTZWUgdGhlIGZpbGUgXFxcInNrZmRkaS5jXFxcIiBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc210LmMtOC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NtdGRlZi5jLTYtICpcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc210ZGVmLmM6NzogKlxcdFNlZSB0aGUgZmlsZSBcXFwic2tmZGRpLmNcXFwiIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLlxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9zbXRkZWYuYy04LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc210aW5pdC5jLTYtICpcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc210aW5pdC5jOjc6ICpcXHRTZWUgdGhlIGZpbGUgXFxcInNrZmRkaS5jXFxcIiBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi5cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc210aW5pdC5jLTgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9zbXR0aW1lci5jLTYtICpcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc210dGltZXIuYzo3OiAqXFx0U2VlIHRoZSBmaWxlIFxcXCJza2ZkZGkuY1xcXCIgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NtdHRpbWVyLmMtOC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NyZi5jLTYtICpcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc3JmLmM6NzogKlxcdFNlZSB0aGUgZmlsZSBcXFwic2tmZGRpLmNcXFwiIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLlxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9zcmYuYy04LSAqXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA3OjE0OjQzLjY0MjM3NTU3NloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIyMDE0MDk0ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGRyaXZlciBjb25maWd1cmF0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIFNLRlAgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgU0tGUCBkcml2ZXIgaXMgY29uZmlndXJlZC4gSSBrbm93IHRoYXQgS2NvbmZpZyBmaWxlcyBhcmUgdGhlIHN0YW5kYXJkIGZvciBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zLCBzbyBteSBmaXJzdCBzdGVwIGlzIGRlZmluaXRlbHkgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL25ldC9mZGRpL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgSSBleHBlY3QgdG8gZmluZCB0aGUgZGVwZW5kZW5jaWVzLCBidWlsZCBvcHRpb25zLCBhbmQgYWxsIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgcmVsYXRlZCB0byB0aGUgU0tGUCBkcml2ZXIuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIG9wdGlvbnMgY29udHJvbCBpdHMgaW5jbHVzaW9uLCBhbnkgc3BlY2lmaWMgZmVhdHVyZXMsIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIG5ldHdvcmsgc3RhY2suIEkgYW50aWNpcGF0ZSB0aGVyZSBtaWdodCBiZSBjb25kaXRpb25hbCBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGZlYXR1cmVzIG9yIGhhcmR3YXJlLCBzbyBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRob3NlIHRvby4gRXNzZW50aWFsbHksIEknbSB0cnlpbmcgdG8gZ2V0IGEgY29tcGxldGUgcGljdHVyZSBvZiBob3cgdGhlIHVzZXIgY2FuIGVuYWJsZSBvciBkaXNhYmxlIHRoaXMgcGFydGljdWxhciBkcml2ZXIgd2l0aGluIHRoZSBvdmVyYWxsIGtlcm5lbCBidWlsZCBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3Njg4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDc6MTQ6NDUuODQzNzg3OTc4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI1OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZmRkaS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIEZEREkgbmV0d29yayBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgRkRESVxcbiAgIDc6XFx0XFx0dHJpc3RhdGUgXFxcIkZEREkgZHJpdmVyIHN1cHBvcnRcXFwiXFxuICAgODpcXHRcXHRkZXBlbmRzIG9uIFBDSSB8fCBFSVNBIHx8IFRDXFxuICAgOTpcXHRcXHRoZWxwXFxuICAxMDpcXHRcXHQgIEZpYmVyIERpc3RyaWJ1dGVkIERhdGEgSW50ZXJmYWNlIGlzIGEgaGlnaCBzcGVlZCBsb2NhbCBhcmVhIG5ldHdvcmtcXG4gIDExOlxcdFxcdCAgZGVzaWduOyBlc3NlbnRpYWxseSBhIHJlcGxhY2VtZW50IGZvciBoaWdoIHNwZWVkIEV0aGVybmV0LiBGRERJIGNhblxcbiAgMTI6XFx0XFx0ICBydW4gb3ZlciBjb3BwZXIgb3IgZmliZXIuIElmIHlvdSBhcmUgY29ubmVjdGVkIHRvIHN1Y2ggYSBuZXR3b3JrIGFuZFxcbiAgMTM6XFx0XFx0ICB3YW50IGEgZHJpdmVyIGZvciB0aGUgRkRESSBjYXJkIGluIHlvdXIgY29tcHV0ZXIsIHNheSBZIGhlcmUgKGFuZFxcbiAgMTQ6XFx0XFx0ICB0aGVuIGFsc28gWSB0byB0aGUgZHJpdmVyIGZvciB5b3VyIEZEREkgY2FyZCwgYmVsb3cpLiBNb3N0IHBlb3BsZVxcbiAgMTU6XFx0XFx0ICB3aWxsIHNheSBOLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRpZiBGRERJXFxuICAxODpcXHRcXG4gIDE5OlxcdGNvbmZpZyBERUZaQVxcbiAgMjA6XFx0XFx0dHJpc3RhdGUgXFxcIkRFQyBGRERJY29udHJvbGxlciA3MDAvNzAwLUMgKERFRlpBLXh4KSBzdXBwb3J0XFxcIlxcbiAgMjE6XFx0XFx0ZGVwZW5kcyBvbiBGRERJIFxcdTAwMjZcXHUwMDI2IFRDXFxuICAyMjpcXHRcXHRoZWxwXFxuICAyMzpcXHRcXHQgIFRoaXMgaXMgc3VwcG9ydCBmb3IgdGhlIERFQyBGRERJY29udHJvbGxlciA3MDAgKERFRlpBLUFBLCBmaWJlcilcXG4gIDI0OlxcdFxcdCAgYW5kIDcwMC1DIChERUZaQS1DQSwgY29wcGVyKSBUVVJCT2NoYW5uZWwgbmV0d29yayBjYXJkcyB3aGljaFxcbiAgMjU6XFx0XFx0ICBjYW4gY29ubmVjdCB5b3UgdG8gYSBsb2NhbCBGRERJIG5ldHdvcmsuXFxuICAyNjpcXHRcXG4gIDI3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAgMjg6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBkZWZ6YS4gIElmIHVuc3VyZSwgc2F5IE4uXFxuICAyOTpcXHRcXG4gIDMwOlxcdGNvbmZpZyBERUZYWFxcbiAgMzE6XFx0XFx0dHJpc3RhdGUgXFxcIkRpZ2l0YWwgREVGVEEvREVGRUEvREVGUEEgYWRhcHRlciBzdXBwb3J0XFxcIlxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBGRERJIFxcdTAwMjZcXHUwMDI2IChQQ0kgfHwgRUlTQSB8fCBUQylcXG4gIDMzOlxcdFxcdGhlbHBcXG4gIDM0OlxcdFxcdCAgVGhpcyBpcyBzdXBwb3J0IGZvciB0aGUgRElHSVRBTCBzZXJpZXMgb2YgVFVSQk9jaGFubmVsIChERUZUQSksXFxuICAzNTpcXHRcXHQgIEVJU0EgKERFRkVBKSBhbmQgUENJIChERUZQQSkgY29udHJvbGxlcnMgd2hpY2ggY2FuIGNvbm5lY3QgeW91XFxuICAzNjpcXHRcXHQgIHRvIGEgbG9jYWwgRkRESSBuZXR3b3JrLlxcbiAgMzc6XFx0XFxuICAzODpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gIDM5OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgZGVmeHguICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgNDA6XFx0XFxuICA0MTpcXHRjb25maWcgU0tGUFxcbiAgNDI6XFx0XFx0dHJpc3RhdGUgXFxcIlN5c0tvbm5lY3QgRkRESSBQQ0kgc3VwcG9ydFxcXCJcXG4gIDQzOlxcdFxcdGRlcGVuZHMgb24gRkRESSBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4gIDQ0OlxcdFxcdHNlbGVjdCBCSVRSRVZFUlNFXFxuICA0NTpcXHRcXHRoZWxwXFxuICA0NjpcXHRcXHQgIFNheSBZIGhlcmUgaWYgeW91IGhhdmUgYSBTeXNLb25uZWN0IEZEREkgUENJIGFkYXB0ZXIuXFxuICA0NzpcXHRcXHQgIFRoZSBmb2xsb3dpbmcgYWRhcHRlcnMgYXJlIHN1cHBvcnRlZCBieSB0aGlzIGRyaXZlcjpcXG4gIDQ4OlxcdFxcdCAgLSBTSy01NTIxIChTSy1ORVQgRkRESS1VUClcXG4gIDQ5OlxcdFxcdCAgLSBTSy01NTIyIChTSy1ORVQgRkRESS1VUCBEQVMpXFxuICA1MDpcXHRcXHQgIC0gU0stNTU0MSAoU0stTkVUIEZEREktRlApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA3OjE0OjQ1Ljg0Mzg1Mzk3OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjkzNTU1MDM4MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBTeXNLb25uZWN0IEZEREkgUENJIFN1cHBvcnQgaW4gU3l6a2FsbGVyKipcblxuT2theSwgc28gYFNLRlBgIGlzIGNsZWFybHkgcmVmZXJyaW5nIHRvIFN5c0tvbm5lY3QncyBGRERJIFBDSSBzdXBwb3J0LiBUaGUga2V5IHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBoYXJkd2FyZSwgc3BlY2lmaWNhbGx5IHRoZSBTeXNLb25uZWN0IEZEREkgUENJIGFkYXB0ZXIsIGlzIGVpdGhlciBlbXVsYXRlZCB3aXRoaW4gUUVNVSBvciBhY2Nlc3NpYmxlIGluIHN5emthbGxlcidzIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBMZXQncyBkaWcgaW4uXG5cblRoZSBmaXJzdCBzdGVwIGlzIHRvIGNvbmZpcm0gdGhlIGhhcmR3YXJlJ3MgaWRlbnRpdHkuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgcGh5c2ljYWwgUENJIGhhcmR3YXJlIGZyb20gU3lzS29ubmVjdCwgc3BlY2lmaWNhbGx5IG1vZGVscyBsaWtlIHRoZSBTSy01NTIxLCBTSy01NTIyLCBhbmQgc28gb24uIFRoaXMgdXNlcyBhIHZlbmRvciBJRCAoUENJX1ZFTkRPUl9JRF9TSykgYW5kIGRldmljZSBJRCAoUENJX0RFVklDRV9JRF9TS19GUCkuIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCB3ZSBhcmUgbGlrZWx5IGRlYWxpbmcgd2l0aCB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUsIHdoaWNoIGlzIG9mdGVuIHByb2JsZW1hdGljIGluIHRoZSB2aXJ0dWFsaXplZCBjb250ZXh0LiBJIG5lZWQgdG8ga25vdyBpZiBRRU1VIG9mZmVycyBhbiBlbXVsYXRpb24gZm9yIHRoaXMuXG5cbkkndmUgZ290IHRvIGNvbnN1bHQgdGhlIGd1aWRlbGluZXMsIHNwZWNpZmljYWxseSBTZWN0aW9uIDIsIHdoaWNoIGV4cGxpY2l0bHkgY2FsbHMgb3V0IFwic3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLFwiIHN1Y2ggYXMgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMsIHRoYXQgZGVwZW5kIG9uIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0J3MgYSByZWQgZmxhZy5cblxuTm93IGxldCdzIGNoZWNrIHRoZSBkZXRhaWxzOiBgc2tmZGRpX3BjaV90YmxgIHNob3dzIHRoYXQgdGhpcyBpcyBpbmRlZWQgcGh5c2ljYWwgUENJIEZEREkgaGFyZHdhcmUgd2l0aCB2ZW5kb3IgSUQgMHgxMTQ4IGFuZCBkZXZpY2UgSUQgMHg0MDAwLiBJdCdzIEZEREkg4oCTIEZpYmVyIERpc3RyaWJ1dGVkIERhdGEgSW50ZXJmYWNlIOKAkyBhIGxlZ2FjeSB0ZWNobm9sb2d5LiBNeSBrbm93bGVkZ2UgY29uZmlybXMgdGhhdCBTeXNLb25uZWN0IEZEREkgUENJIGNhcmRzIGFyZSBwaHlzaWNhbCBQQ0kgYm9hcmRzLCBub3Qgc29tZXRoaW5nIHRoYXQgY2FuIGJlIGVhc2lseSB2aXJ0dWFsaXplZC5cblxuTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IFFFTVUncyBzdGFuZGFyZCBuZXR3b3JrIGRldmljZSBlbXVsYXRpb24gZG9lc24ndCBpbmNsdWRlIHN1cHBvcnQgZm9yIEZEREkuIFRoZSBlbXVsYXRlZCBkZXZpY2VzIGFyZSB0aGluZ3MgbGlrZSBlMTAwMCwgcnRsODEzOSwgYW5kIHZpcnRpby1uZXQtcGNpIOKAkyBub25lIG9mIHRob3NlIHN1cHBvcnQgRkRESSwgd2hpY2ggYWxpZ25zIHdpdGggbXkgcGFzdCBvYnNlcnZhdGlvbnMuXG5cbldpdGhvdXQgUUVNVSBlbXVsYXRpb24gb3IgYSBwaHlzaWNhbCBkZXZpY2UsIGBza2ZwX2luaXRfb25lYCwgdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiwgaXMgbmV2ZXIgY2FsbGVkLiBUaGlzIG1lYW5zIHRoZSBgbmV0X2RldmljZWAgZm9yIHRoZSBGRERJIGNhcmQgaXMgbmV2ZXIgcmVnaXN0ZXJlZC4gQXMgYSByZXN1bHQsIGNyaXRpY2FsIGZ1bmN0aW9ucyBsaWtlIGBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3NgIGFyZSB1bnJlYWNoYWJsZS4gVGhpcyBpcyBhIGRlYWQgZW5kIHVubGVzcyB0aGVyZSdzIGEgd29ya2Fyb3VuZC5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhlcmUncyBhYnNvbHV0ZWx5IG5vIG90aGVyIHdheSB0byByZWFjaCBgc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzYC4gYHNrZnBfY3RsX3NldF9tYWNfYWRkcmVzc2AgaXMgZWZmZWN0aXZlbHkgdGhlIGBuZG9fc2V0X21hY19hZGRyZXNzYCBmb3IgdGhpcyBwYXJ0aWN1bGFyIG5ldGRldi4gVGhpcyBuZXRkZXYgaXMgcmVnaXN0ZXJlZCB3aXRoaW4gYHNrZnBfaW5pdF9vbmVgLiBMZXQncyB0YWtlIGEgbG9vayBpbnNpZGUgYGRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuY2AgdG8gY29uZmlybSBteSBmaW5kaW5ncyBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgdW5leHBlY3RlZCBlbnRyeSBwb2ludHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2OTIsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNzoxNDo1NS4xOTkzNjEyNDFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjU2ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwMCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIwMDpcXHQgKiAgIGluaXRpYWxpemVkIGFuZCB0aGUgYm9hcmQgcmVzb3VyY2VzIGFyZSByZWFkIGFuZCBzdG9yZWQgaW5cXG4gMjAxOlxcdCAqICAgdGhlIGRldmljZSBzdHJ1Y3R1cmUuXFxuIDIwMjpcXHQgKi9cXG4gMjAzOlxcdHN0YXRpYyBpbnQgc2tmcF9pbml0X29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gMjA0OlxcdFxcdFxcdFxcdFxcdGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuIDIwNTpcXHR7XFxuIDIwNjpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2O1xcbiAyMDc6XFx0XFx0c3RydWN0IHNfc21jICpzbWM7XFx0LyogYm9hcmQgcG9pbnRlciAqL1xcbiAyMDg6XFx0XFx0dm9pZCBfX2lvbWVtICptZW07XFxuIDIwOTpcXHRcXHRpbnQgZXJyO1xcbiAyMTA6XFx0XFxuIDIxMTpcXHRcXHRwcl9kZWJ1ZyhcXFwiZW50ZXJpbmcgc2tmcF9pbml0X29uZVxcXFxuXFxcIik7XFxuIDIxMjpcXHRcXG4gMjEzOlxcdFxcdGlmIChudW1fYm9hcmRzID09IDApIFxcbiAyMTQ6XFx0XFx0XFx0cHJpbnRrKFxcXCIlc1xcXFxuXFxcIiwgYm9vdF9tc2cpO1xcbiAyMTU6XFx0XFxuIDIxNjpcXHRcXHRlcnIgPSBwY2lfZW5hYmxlX2RldmljZShwZGV2KTtcXG4gMjE3OlxcdFxcdGlmIChlcnIpXFxuIDIxODpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiAyMTk6XFx0XFxuIDIyMDpcXHRcXHRlcnIgPSBwY2lfcmVxdWVzdF9yZWdpb25zKHBkZXYsIFxcXCJza2ZkZGlcXFwiKTtcXG4gMjIxOlxcdFxcdGlmIChlcnIpXFxuIDIyMjpcXHRcXHRcXHRnb3RvIGVycl9vdXQxO1xcbiAyMjM6XFx0XFxuIDIyNDpcXHRcXHRwY2lfc2V0X21hc3RlcihwZGV2KTtcXG4gMjI1OlxcdFxcbiAyMjY6XFx0I2lmZGVmIE1FTV9NQVBQRURfSU9cXG4gMjI3OlxcdFxcdGlmICghKHBjaV9yZXNvdXJjZV9mbGFncyhwZGV2LCAwKSBcXHUwMDI2IElPUkVTT1VSQ0VfTUVNKSkge1xcbiAyMjg6XFx0XFx0XFx0cHJpbnRrKEtFUk5fRVJSIFxcXCJza2ZwOiByZWdpb24gaXMgbm90IGFuIE1NSU8gcmVzb3VyY2VcXFxcblxcXCIpO1xcbiAyMjk6XFx0XFx0XFx0ZXJyID0gLUVJTztcXG4gMjMwOlxcdFxcdFxcdGdvdG8gZXJyX291dDI7XFxuIDIzMTpcXHRcXHR9XFxuIDIzMjpcXHRcXG4gMjMzOlxcdFxcdG1lbSA9IGlvcmVtYXAocGNpX3Jlc291cmNlX3N0YXJ0KHBkZXYsIDApLCAweDQwMDApO1xcbiAyMzQ6XFx0I2Vsc2VcXG4gMjM1OlxcdFxcdGlmICghKHBjaV9yZXNvdXJjZV9mbGFncyhwZGV2LCAxKSBcXHUwMDI2IElPX1JFU09VUkNFX0lPKSkge1xcbiAyMzY6XFx0XFx0XFx0cHJpbnRrKEtFUk5fRVJSIFxcXCJza2ZwOiByZWdpb24gaXMgbm90IFBJTyByZXNvdXJjZVxcXFxuXFxcIik7XFxuIDIzNzpcXHRcXHRcXHRlcnIgPSAtRUlPO1xcbiAyMzg6XFx0XFx0XFx0Z290byBlcnJfb3V0MjtcXG4gMjM5OlxcdFxcdH1cXG4gMjQwOlxcdFxcbiAyNDE6XFx0XFx0bWVtID0gaW9wb3J0X21hcChwY2lfcmVzb3VyY2Vfc3RhcnQocGRldiwgMSksIEZQX0lPX0xFTik7XFxuIDI0MjpcXHQjZW5kaWZcXG4gMjQzOlxcdFxcdGlmICghbWVtKSB7XFxuIDI0NDpcXHRcXHRcXHRwcmludGsoS0VSTl9FUlIgXFxcInNrZnA6ICBVbmFibGUgdG8gbWFwIHJlZ2lzdGVyLCBcXFwiXFxuIDI0NTpcXHRcXHRcXHRcXHRcXHRcXFwiRkRESSBhZGFwdGVyIHdpbGwgYmUgZGlzYWJsZWQuXFxcXG5cXFwiKTtcXG4gMjQ2OlxcdFxcdFxcdGVyciA9IC1FSU87XFxuIDI0NzpcXHRcXHRcXHRnb3RvIGVycl9vdXQyO1xcbiAyNDg6XFx0XFx0fVxcbiAyNDk6XFx0XFxuIDI1MDpcXHRcXHRkZXYgPSBhbGxvY19mZGRpZGV2KHNpemVvZihzdHJ1Y3Qgc19zbWMpKTtcXG4gMjUxOlxcdFxcdGlmICghZGV2KSB7XFxuIDI1MjpcXHRcXHRcXHRwcmludGsoS0VSTl9FUlIgXFxcInNrZnA6IFVuYWJsZSB0byBhbGxvY2F0ZSBmZGRpIGRldmljZSwgXFxcIlxcbiAyNTM6XFx0XFx0XFx0XFx0XFx0XFxcIkZEREkgYWRhcHRlciB3aWxsIGJlIGRpc2FibGVkLlxcXFxuXFxcIik7XFxuIDI1NDpcXHRcXHRcXHRlcnIgPSAtRU5PTUVNO1xcbiAyNTU6XFx0XFx0XFx0Z290byBlcnJfb3V0MztcXG4gMjU2OlxcdFxcdH1cXG4gMjU3OlxcdFxcbiAyNTg6XFx0XFx0ZGV2LVxcdTAwM2VpcnEgPSBwZGV2LVxcdTAwM2VpcnE7XFxuIDI1OTpcXHRcXHRkZXYtXFx1MDAzZW5ldGRldl9vcHMgPSBcXHUwMDI2c2tmcF9uZXRkZXZfb3BzO1xcbiAyNjA6XFx0XFxuIDI2MTpcXHRcXHRTRVRfTkVUREVWX0RFVihkZXYsIFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbiAyNjI6XFx0XFxuIDI2MzpcXHRcXHQvKiBJbml0aWFsaXplIGJvYXJkIHN0cnVjdHVyZSB3aXRoIGJ1cy1zcGVjaWZpYyBpbmZvICovXFxuIDI2NDpcXHRcXHRzbWMgPSBuZXRkZXZfcHJpdihkZXYpO1xcbiAyNjU6XFx0XFx0c21jLVxcdTAwM2Vvcy5kZXYgPSBkZXY7XFxuIDI2NjpcXHRcXHRzbWMtXFx1MDAzZW9zLmJ1c190eXBlID0gU0tfQlVTX1RZUEVfUENJO1xcbiAyNjc6XFx0XFx0c21jLVxcdTAwM2Vvcy5wZGV2ID0gKnBkZXY7XFxuIDI2ODpcXHRcXHRzbWMtXFx1MDAzZW9zLlF1ZXVlU2tiID0gTUFYX1RYX1FVRVVFX0xFTjtcXG4gMjY5OlxcdFxcdHNtYy1cXHUwMDNlb3MuTWF4RnJhbWVTaXplID0gTUFYX0ZSQU1FX1NJWkU7XFxuIDI3MDpcXHRcXHRzbWMtXFx1MDAzZW9zLmRldiA9IGRldjtcXG4gMjcxOlxcdFxcdHNtYy1cXHUwMDNlaHcuc2xvdCA9IC0xO1xcbiAyNzI6XFx0XFx0c21jLVxcdTAwM2Vody5pb3AgPSBtZW07XFxuIDI3MzpcXHRcXHRzbWMtXFx1MDAzZW9zLlJlc2V0UmVxdWVzdGVkID0gRkFMU0U7XFxuIDI3NDpcXHRcXHRza2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZzbWMtXFx1MDAzZW9zLlNlbmRTa2JRdWV1ZSk7XFxuIDI3NTpcXHRcXG4gMjc2OlxcdFxcdGRldi1cXHUwMDNlYmFzZV9hZGRyID0gKHVuc2lnbmVkIGxvbmcpbWVtO1xcbiAyNzc6XFx0XFxuIDI3ODpcXHRcXHRlcnIgPSBza2ZwX2RyaXZlcl9pbml0KGRldik7XFxuIDI3OTpcXHRcXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwNzoxNDo1NS4xOTk1Mjg0NTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMDM0MjMzMjc5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIGBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3NgKipcblxuT2theSwgdGltZSB0byBkaWcgaW50byBgc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHNjb3BlIGFuZCBpbXBhY3QuIE15IGZpcnN0IHN0ZXAgaXMgdG8gcXVpY2tseSBkZXRlcm1pbmUgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQgYW5kIHdoZXJlIGl0J3MgcmVmZXJlbmNlZCB3aXRoaW4gdGhlIGNvZGViYXNlLiBJIHdhbnQgdG8gYnVpbGQgYSBxdWljayBtYXAgaW4gbXkgaGVhZCBvZiBpdHMgdXNhZ2UuIFRoaXMgd2lsbCBnaXZlIG1lIGEgc29saWQgZm91bmRhdGlvbiBmb3IgZXZhbHVhdGluZyBpdHMgYmVoYXZpb3IsIHBvdGVudGlhbCBpc3N1ZXMsIG9yIGFyZWFzIGZvciBvcHRpbWl6YXRpb24sIGRlcGVuZGluZyBvbiB3aGF0IEknbSBsb29raW5nIGludG8gcmlnaHQgbm93LiBMZXQncyBzZWUgd2hhdCB0aGUgY2FsbCBncmFwaCByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTIwNywiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDc6MTU6MDUuNTQxODYzNTEyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjEwODc1MzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNrZnBfY3RsX3NldF9tYWNfYWRkcmVzc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM9MTA2PXN0YXRpYyB2b2lkIHNrZnBfY3RsX3NldF9tdWx0aWNhc3RfbGlzdF93b19sb2NrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzoxMDc6c3RhdGljIGludCBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqYWRkcik7XFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTEwOC1zdGF0aWMgaW50IHNrZnBfc2lvY2RldnByaXZhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGlmcmVxICpycSxcXG4tLVxcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYz0xNjQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBza2ZwX25ldGRldl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtMTY5LVxcdC5uZG9fc2V0X3J4X21vZGVcXHQ9IHNrZnBfY3RsX3NldF9tdWx0aWNhc3RfbGlzdCxcXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6MTcwOlxcdC5uZG9fc2V0X21hY19hZGRyZXNzXFx0PSBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3MsXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTE3MS1cXHQubmRvX3Npb2NkZXZwcml2YXRlXFx0PSBza2ZwX3Npb2NkZXZwcml2YXRlLFxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jPTg1MD1zdGF0aWMgdm9pZCBza2ZwX2N0bF9zZXRfbXVsdGljYXN0X2xpc3Rfd29fbG9jayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTkwMy0gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6OTA0OiAqID0gc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzID1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtOTA1LSAqID09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbi0tXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTkyMC0gKi9cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmM6OTIxOnN0YXRpYyBpbnQgc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKmFkZHIpXFxuZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLTkyMi17XFxuLS1cXG5kcml2ZXJzL25ldC9mZGRpL3NrZnAvc2tmZGRpLmMtOTM1LVxcdHJldHVybiAwO1xcdFxcdC8qIGFsd2F5cyByZXR1cm4gemVybyAqL1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYzo5MzY6fVxcdFxcdFxcdFxcdC8vIHNrZnBfY3RsX3NldF9tYWNfYWRkcmVzc1xcbmRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYy05MzctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA3OjE1OjA3LjE1Mjc0NTk1NFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3MzUwODUxNTcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBza2ZwYCBGRERJIERyaXZlcidzIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBgZHJpdmVycy9uZXQvZmRkaS9za2ZwL2AgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBQQ0kgZHJpdmVyIGZvciB0aG9zZSBvbGQgU3lzS29ubmVjdCBGRERJIG5ldHdvcmsgYWRhcHRlcnMuIFJpZ2h0IGF3YXksIEkgc2VlIGEgcHJvYmxlbTogdGhpcyBkcml2ZXIgbmVlZHMgYWN0dWFsIHBoeXNpY2FsIFBDSSBoYXJkd2FyZSwgYSBTeXNLb25uZWN0IEZEREkgY2FyZCBzcGVjaWZpY2FsbHkgKHZlbmRvciBJRCBgMHgxMTQ4YCwgZGV2aWNlIElEIGAweDQwMDBgKS4gVGhhdCdzIGEgZGVhbC1icmVha2VyIGJlY2F1c2Ugc3RhbmRhcmQgUUVNVSBhbmQgc3l6a2FsbGVyIGVudmlyb25tZW50cyAqZG9uJ3QqIGVtdWxhdGUgdGhpcyBraW5kIG9mIGxlZ2FjeSBoYXJkd2FyZS5cblxuU28sIHRoZSBtb2RpZmllZCBjb2RlIGluIGBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3NgIGlzIGVmZmVjdGl2ZWx5IHVucmVhY2hhYmxlIGluIG91ciB0eXBpY2FsIHZpcnR1YWxpemVkIGZ1enppbmcgc2V0dXBzLiBXZSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGlzIGlzIHRydWUsIHNvIGxldCdzIGNyb3NzLWNoZWNrOlxuXG4qICAgKipVbnJlYWNoYWJsZSBIYXJkd2FyZToqKiBEb2VzIHRoZSBtb2RpZmljYXRpb24gZGVwZW5kIG9uIHNwZWNpYWwgaGFyZHdhcmU/IFllcy4gSXQncyBhIGNsYXNzaWMgcGh5c2ljYWwgbmV0d29yayBjYXJkIGRyaXZlci4gSXQncyBub3QgbGlrZSB3ZSdyZSBkZWFsaW5nIHdpdGggZW11bGF0ZWQgY29tcG9uZW50cy5cbiogICAqKkhhcmR3YXJlIERlcGVuZGVuY2llczoqKiBUaGlzIGlzIGEgY2xlYXIgY2FzZSBvZiBhIGRyaXZlciB0aGF0IG9ubHkgd29ya3Mgd2l0aCBwaHlzaWNhbCBBU0lDcy9QQ0llIGNhcmRzLiBUaGlzIGhhcmR3YXJlIGlzIG5vdCBzdXBwb3J0ZWQgYnkgUUVNVSBlbXVsYXRpb24uXG5cblRoZXJlZm9yZSwgYmVjYXVzZSB0aGlzIGRyaXZlciBpcyBzb2xlbHkgZGVwZW5kZW50IG9uIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBvdXIgcHJpbWFyeSB0ZXN0IGVudmlyb25tZW50cywgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGRlZmluaXRlbHkgYmUgYGZhbHNlYC5cblxuRm9yIGNvbmZpZ3VyYXRpb25zLCB3ZSBzaG91bGQgc2V0IGBFbmFibGVDb25maWdzYCB0byBpbmNsdWRlIG1pbmltYWwgcmVsZXZhbnQgY29uZmlnczsgYFtcIkZERElcIiwgXCJTS0ZQXCIsIFwiUENJXCJdYCBpcyBwcm9iYWJseSBhcHByb3ByaWF0ZSwgb3IgcG9zc2libHkgZXZlbiBhbiBlbXB0eSBsaXN0LCBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlbmVmaXQgdG8gZW5hYmxpbmcgaXQuXG5cblNpbmNlIHRoZSBmdXp6aW5nIGlzIG5vdCB3b3J0aCBpdCwgd2UgZG9uJ3QgbmVlZCB0byBzcGVjaWZ5IGBGb2N1c1N5bWJvbHNgLiBTbyBgRm9jdXNTeW1ib2xzYCBzaG91bGQgYmUgc2V0IHRvIGBbXWAuXG5cblRvIHJlaW5mb3JjZSB0aGlzLCBsZXQncyBzdGVwIHRocm91Z2ggdGhlIHJlYXNvbmluZyBvbmNlIG1vcmU6XG5cbjEuICBXZSdyZSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBtb2RpZmllcyBgc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzYCBpbiBgZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jYC5cbjIuICBUaGF0IGZpbGUgaXMgcGFydCBvZiB0aGUgU3lzS29ubmVjdCBGRERJIFBDSSBhZGFwdGVyIGRyaXZlciAoYENPTkZJR19TS0ZQYCkuXG4zLiAgVGhpcyBkcml2ZXIgKm9ubHkqIHdvcmtzIHdpdGggcGh5c2ljYWwgU3lzS29ubmVjdCBGRERJIFBDSSBoYXJkd2FyZSB3aXRoIHRoYXQgc3BlY2lmaWMgUENJIElELlxuNC4gIFN0YW5kYXJkIFFFTVUgYW5kIHN5emthbGxlciBkb24ndCBlbXVsYXRlIHRoaXMuXG41LiAgVGh1cywgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUuXG5cbk9rYXksIHRoYXQgY29uZmlybXMgaXQuIFRpbWUgdG8gZmluYWxpemUgdGhlIGFzc2Vzc21lbnQgYW5kIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTIwNDQsIk91dHB1dFRva2VucyI6MTQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA3OjE1OjE0LjUwMzYwMDI2NVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4MTMxNzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJGRERJXCIsXG4gICAgXCJTS0ZQXCIsXG4gICAgXCJQQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgc2tmcF9jdGxfc2V0X21hY19hZGRyZXNzIGluIGRyaXZlcnMvbmV0L2ZkZGkvc2tmcC9za2ZkZGkuYywgd2hpY2ggaXMgdGhlIGRyaXZlciBmb3IgbGVnYWN5IFN5c0tvbm5lY3QgRkRESSBQQ0kgYWRhcHRlcnMgKENPTkZJR19TS0ZQKS4gVGhpcyBkcml2ZXIgYmluZHMgdG8gc3BlY2lmaWMgcGh5c2ljYWwgUENJIGhhcmR3YXJlIChQQ0kgSUQgMHgxMTQ4OjB4NDAwMCkgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSAvIHN5emthbGxlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkZERElcIixcbiAgICBcIlNLRlBcIixcbiAgICBcIlBDSVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBza2ZwX2N0bF9zZXRfbWFjX2FkZHJlc3MgaW4gZHJpdmVycy9uZXQvZmRkaS9za2ZwL3NrZmRkaS5jLCB3aGljaCBpcyB0aGUgZHJpdmVyIGZvciBsZWdhY3kgU3lzS29ubmVjdCBGRERJIFBDSSBhZGFwdGVycyAoQ09ORklHX1NLRlApLiBUaGlzIGRyaXZlciBiaW5kcyB0byBzcGVjaWZpYyBwaHlzaWNhbCBQQ0kgaGFyZHdhcmUgKFBDSSBJRCAweDExNDg6MHg0MDAwKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIC8gc3l6a2FsbGVyIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA3OjE1OjE0LjU4MTczOTE0M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowmp6xj[1] Phase: Running StartedAt: 2026-09-10 07:15:26 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmp6xj[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-10 07:15:26 +0000 UTC FinishedAt: 2026-09-10 07:15:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}