Name: series-workflowb7n7k Phase: Failed StartedAt: 2026-09-04 18:26:29 +0000 UTC FinishedAt: 2026-09-04 18:48:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7n7k[0] Phase: Succeeded StartedAt: 2026-09-04 18:26:29 +0000 UTC FinishedAt: 2026-09-04 18:48:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7n7k[0].run-triage Phase: Succeeded StartedAt: 2026-09-04 18:26:29 +0000 UTC FinishedAt: 2026-09-04 18:48:14 +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+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FJUl9FTjg4MTFIX1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7JiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBhaXJfd3JpdGVfYnVmYCBpbiBgZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmNgLCB3aGljaCBpcyBhIGRyaXZlciBmb3IgdGhlIEFpcm9oYSBFTjg4MTFIIGFuZCBBTjg4MTFIQiAyLjVHIEV0aGVybmV0IFBIWXMuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIEFpcm9oYSBQSFkgaGFyZHdhcmUgY29ubmVjdGVkIHZpYSBNRElPLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjQ2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYzQxMWFjODRkN2NiOWQ0NjA5MjA3ZGZjYzA1OTI0ZDI3MmFmZGNjZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMTg6NDY6MjIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMgYi9kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguY1xuaW5kZXggMGVlYjdiOWE0ZTI2MC4uMzRkMjcyN2U4MjIyYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguY1xuQEAgLTMxMiw2ICYjNDM7MzEyLDEyIEBAIHN0YXRpYyBpbnQgYWlyX3dyaXRlX2J1ZihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MzIgYWRkcmVzcyxcbiBcdGludCBzYXZlZF9wYWdlO1xuIFx0aW50IHJldCA9IDA7XG4gXG4mIzQzO1x0aWYgKGZ3LVx1MDAzZXNpemUgJSA0KSB7XG4mIzQzO1x0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7ZmlybXdhcmUgc2l6ZSAlenUgaXMgbm90IGEgbXVsdGlwbGUgb2YgNFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgZnctXHUwMDNlc2l6ZSk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0c2F2ZWRfcGFnZSA9IHBoeV9zZWxlY3RfcGFnZShwaHlkZXYsIEFJUl9QSFlfUEFHRV9FWFRFTkRFRF80KTtcbiBcbiBcdGlmIChzYXZlZF9wYWdlIFx1MDAzZT0gMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjQ2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FJUl9FTjg4MTFIX1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgYWlyX3dyaXRlX2J1ZmAgaW4gYGRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jYCwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIHRoZSBBaXJvaGEgRU44ODExSCBhbmQgQU44ODExSEIgMi41RyBFdGhlcm5ldCBQSFlzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBBaXJvaGEgUEhZIGhhcmR3YXJlIGNvbm5lY3RlZCB2aWEgTURJTywgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM0MTFhYzg0ZDdjYjlkNDYwOTIwN2RmY2MwNTkyNGQyNzJhZmRjY2UKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIFNlcCA0IDE4OjQ2OjIyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMgYi9kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYwppbmRleCAwZWViN2I5YTRlMjYwLi4zNGQyNzI3ZTgyMjJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYwpAQCAtMzEyLDYgJiM0MzszMTIsMTIgQEAgc3RhdGljIGludCBhaXJfd3JpdGVfYnVmKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUzMiBhZGRyZXNzLAogCWludCBzYXZlZF9wYWdlOwogCWludCByZXQgPSAwOwogCiYjNDM7CWlmIChmdy0mZ3Q7c2l6ZSAlIDQpIHsKJiM0MzsJCXBoeWRldl9lcnIocGh5ZGV2LCAmIzM0O2Zpcm13YXJlIHNpemUgJXp1IGlzIG5vdCBhIG11bHRpcGxlIG9mIDRcbiYjMzQ7LAomIzQzOwkJCSAgIGZ3LSZndDtzaXplKTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiAJc2F2ZWRfcGFnZSA9IHBoeV9zZWxlY3RfcGFnZShwaHlkZXYsIEFJUl9QSFlfUEFHRV9FWFRFTkRFRF80KTsKIAogCWlmIChzYXZlZF9wYWdlICZndDs9IDApIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkzMwoJCQkJCQkJb3V0cHV0OiA2OQoJCQkJCQkJdGhvdWdodHM6IDEyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBOZXR3b3JrIFBIWSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguY2AuIE15IGZpcnN0IHRob3VnaHQgaXMsICYjMzQ7V2hhdCYjMzk7cyB0aGlzIGRyaXZlciBhYm91dD8mIzM0OyBJIG5lZWQgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHdoYXQgdGhlIGBhaXJfZW44ODExaC5jYCBkcml2ZXIgaXMgcmVzcG9uc2libGUgZm9yLiBJcyBpdCBhIGNvbW1vbiBvciBuaWNoZSBQSFk/IElzIGl0IGZvciBhIHNwZWNpZmljIHR5cGUgb2YgbmV0d29yayBpbnRlcmZhY2U/CgpJIG5lZWQgdG8gcXVpY2tseSBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgc29tZXRoaW5nIEkgY2FuIGFjdHVhbGx5ICp0ZXN0KiBlZmZlY3RpdmVseSB3aXRoaW4gbXkgZXhpc3RpbmcgZnV6emluZyBzZXR1cC4gSXMgdGhpcyBhY2Nlc3NpYmxlIHdpdGhpbiBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZT8gRG9lcyBpdCByZXF1aXJlIHNvbWUgc3BlY2lhbGl6ZWQgaGFyZHdhcmUgbGlrZSBhbiBNRElPIGJ1cyBvciBhIHNwZWNpZmljIEV0aGVybmV0IFBIWSB0aGF0IEkmIzM5O2QgbmVlZCB0byBzaW11bGF0ZSBvciBhY3F1aXJlIHBoeXNpY2FsbHk/IFRoYXQmIzM5O3MgYSBjcml0aWNhbCBmaXJzdCBzdGVwLgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gd29yay4gSSYjMzk7bGwgdXNlIGVpdGhlciBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgYW5kIGltcG9ydGFudGx5LCBpdHMgS2NvbmZpZyBlbnRyeS4gVGhlIEtjb25maWcgd2lsbCB0ZWxsIG1lIGhvdyB0aGlzIGRyaXZlciBpcyBjb25maWd1cmVkLCBpdHMgZGVwZW5kZW5jaWVzLCBhbmQgYW55IHJlbGV2YW50IG9wdGlvbnMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNsdWVzIEkgbmVlZCB0byBkZXRlcm1pbmUgaXRzIHJlYWNoYWJpbGl0eSBhbmQgcG90ZW50aWFsIGltcGFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtBSVJfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMTM0IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz04MT1jb25maWcgQVMyMVhYWF9QSFlcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy05Mi1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjkzOmNvbmZpZyBBSVJfQU44ODAxX1BIWVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctOTQtXHR0cmlzdGF0ZSBcJiMzNDtBaXJvaGEgQU44ODAxIEdpZ2FiaXQgUEhZXCYjMzQ7XG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo5NTpcdHNlbGVjdCBBSVJfTkVUX1BIWUxJQlxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctOTYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctOTgtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo5OTpjb25maWcgQUlSX0VOODgxMUhfUEhZXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xMDAtXHR0cmlzdGF0ZSBcJiMzNDtBaXJvaGEgRU44ODExSCAyLjUgR2lnYWJpdCBQSFlcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjEwMTpcdHNlbGVjdCBBSVJfTkVUX1BIWUxJQlxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTAyLVx0c2VsZWN0IFBIWV9DT01NT05fUFJPUFNcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xMDUtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxMDY6Y29uZmlnIEFJUl9ORVRfUEhZTElCXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xMDctXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT0zMj1vYmotJChDT05GSUdfQURJTjExNDBfUEhZKVx0JiM0Mzs9IGFkaW4xMTQwLXBoeS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MzM6b2JqLSQoQ09ORklHX0FJUl9BTjg4MDFfUEhZKVx0JiM0Mzs9IGFpcl9hbjg4MDEub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19BSVJfRU44ODExSF9QSFkpICAgJiM0Mzs9IGFpcl9lbjg4MTFoLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTozNTpvYmotJChDT05GSUdfQUlSX05FVF9QSFlMSUIpXHQmIzQzOz0gYWlyX3BoeV9saWIub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTM2LW9iai0kKENPTkZJR19BTURfUEhZKVx0XHQmIzQzOz0gYW1kLm9cbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTYxLSNkZWZpbmUgQURJTjEzMDBfUEhZX1NUQVRVUzFcdFx0XHQweDAwMWFcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6NjI6I2RlZmluZSAgIEFESU4xMzAwX1BBSVJfMDFfU1dBUFx0XHRcdEJJVCgxMSlcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNjMtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYz03NDM9c3RhdGljIGludCBhZGluX21kaXhfdXBkYXRlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy03NzMtXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjc3NDpcdHN3YXBwZWQgPSAhIShyZWcgXHUwMDI2IEFESU4xMzAwX1BBSVJfMDFfU1dBUCk7XG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTc3NS1cbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jPTk3Nz1zdGF0aWMgaW50IGFkaW5fY2FibGVfdGVzdF9yZXBvcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTk4MS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6OTgyOlx0Zm9yIChwYWlyID0gRVRIVE9PTF9BX0NBQkxFX1BBSVJfQTsgcGFpciBcdTAwM2M9IEVUSFRPT0xfQV9DQUJMRV9QQUlSX0Q7IHBhaXImIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTk4My1cdFx0cmV0ID0gYWRpbl9jYWJsZV90ZXN0X3JlcG9ydF9wYWlyKHBoeWRldiwgcGFpcik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0xMjQtLyogTURJT19NTURfVkVORDEgUmVnaXN0ZXJzICovXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjEyNTojZGVmaW5lIEFOODgwMV9QSFlfVFhfUEFJUl9ETFlfU0VMX0dCRVx0MHgxM1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoxMjY6I2RlZmluZSAgIEFOODgwMV9QSFlfUEFJUl9ETFlfU0VMX0FfR0JFXHRHRU5NQVNLKDE0LCAxMilcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6MTI3OiNkZWZpbmUgICBBTjg4MDFfUEhZX1BBSVJfRExZX1NFTF9CX0dCRVx0R0VOTUFTSygxMCwgOClcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6MTI4OiNkZWZpbmUgICBBTjg4MDFfUEhZX1BBSVJfRExZX1NFTF9DX0dCRVx0R0VOTUFTSyg2LCA0KVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoxMjk6I2RlZmluZSAgIEFOODgwMV9QSFlfUEFJUl9ETFlfU0VMX0RfR0JFXHRHRU5NQVNLKDIsIDApXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTEzMC0jZGVmaW5lIEFOODgwMV9QSFlfUlhBRENfQ1RSTFx0XHQweGQ4XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYz05MDI9c3RhdGljIGludCBhbjg4MDFyX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05MjQtXHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTI1Olx0cmV0ID0gcGh5X3dyaXRlX3BhZ2VkKHBoeWRldiwgQUlSX1BIWV9QQUdFX0VYVEVOREVEXzEsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTkyNi1cdFx0XHQgICAgICBBTjg4MDFfRVhUX1JFR19QSFksXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05NTgtXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjk1OTpcdFx0XHQgICAgQU44ODAxX1BIWV9UWF9QQUlSX0RMWV9TRUxfR0JFLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5NjA6XHRcdFx0ICAgIEZJRUxEX1BSRVAoQU44ODAxX1BIWV9QQUlSX0RMWV9TRUxfQV9HQkUsIDQpIHxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTYxOlx0XHRcdCAgICBGSUVMRF9QUkVQKEFOODgwMV9QSFlfUEFJUl9ETFlfU0VMX0NfR0JFLCA0KSk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk2Mi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzQtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzozNTojZGVmaW5lIEFJUl9GV19BRERSX0RNXHQweDAwMDAwMDAwXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzozNjojZGVmaW5lIEFJUl9GV19BRERSX0RTUFx0MHgwMDEwMDAwMFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzctXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0zOC0vKiBNSUkgUmVnaXN0ZXJzICovXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzozOTojZGVmaW5lIEFJUl9BVVhfQ1RSTF9TVEFUVVNcdFx0MHgxZFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDA6I2RlZmluZSAgIEFJUl9BVVhfQ1RSTF9TVEFUVVNfU1BFRURfTUFTS1x0R0VOTUFTSyg0LCAyKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDE6I2RlZmluZSAgIEFJUl9BVVhfQ1RSTF9TVEFUVVNfU1BFRURfMTBcdFx0MHgwXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo0MjojZGVmaW5lICAgQUlSX0FVWF9DVFJMX1NUQVRVU19TUEVFRF8xMDBcdFx0MHg0XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo0MzojZGVmaW5lICAgQUlSX0FVWF9DVFJMX1NUQVRVU19TUEVFRF8xMDAwXHQweDhcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjQ0OiNkZWZpbmUgICBBSVJfQVVYX0NUUkxfU1RBVFVTX1NQRUVEXzI1MDBcdDB4Y1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDUtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDktXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1MDojZGVmaW5lIEFJUl9QSFlfTUNVX0NNRF8wXHRcdDB4ODAwYlxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTE6I2RlZmluZSBBSVJfUEhZX01DVV9DTURfMVx0XHQweDgwMGNcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjUyOiNkZWZpbmUgQUlSX1BIWV9NQ1VfQ01EXzFfTU9ERTFcdFx0XHQweDBcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjUzOiNkZWZpbmUgQUlSX1BIWV9NQ1VfQ01EXzJcdFx0MHg4MDBkXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1NDojZGVmaW5lIEFJUl9QSFlfTUNVX0NNRF8yX01PREUxXHRcdFx0MHgwXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1NTojZGVmaW5lIEFJUl9QSFlfTUNVX0NNRF8zXHRcdDB4ODAwZVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTY6I2RlZmluZSBBSVJfUEhZX01DVV9DTURfM19NT0RFMVx0XHRcdDB4MTEwMVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTc6I2RlZmluZSBBSVJfUEhZX01DVV9DTURfM19ET0NNRFx0XHRcdDB4MTEwMFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTg6I2RlZmluZSBBSVJfUEhZX01DVV9DTURfNFx0XHQweDgwMGZcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjU5OiNkZWZpbmUgQUlSX1BIWV9NQ1VfQ01EXzRfTU9ERTFcdFx0XHQweDAwMDJcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjYwOiNkZWZpbmUgQUlSX1BIWV9NQ1VfQ01EXzRfQ0FCTEVfUEFJUl9BXHRcdDB4MDBkN1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjE6I2RlZmluZSBBSVJfUEhZX01DVV9DTURfNF9DQUJMRV9QQUlSX0JcdFx0MHgwMGQ4XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo2MjojZGVmaW5lIEFJUl9QSFlfTUNVX0NNRF80X0NBQkxFX1BBSVJfQ1x0XHQweDAwZDlcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjYzOiNkZWZpbmUgQUlSX1BIWV9NQ1VfQ01EXzRfQ0FCTEVfUEFJUl9EXHRcdDB4MDBkYVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjQ6I2RlZmluZSBBSVJfUEhZX01DVV9DTURfNF9JTlRDTFJcdFx0MHgwMGU0XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02NS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTY2LS8qIFJlZ2lzdGVycyBvbiBNRElPX01NRF9WRU5EMiAqL1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Njc6I2RlZmluZSBBSVJfUEhZX0xFRF9CQ1JcdFx0XHQweDAyMVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Njg6I2RlZmluZSAgIEFJUl9QSFlfTEVEX0JDUl9NT0RFX01BU0tcdFx0R0VOTUFTSygxLCAwKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Njk6I2RlZmluZSAgIEFJUl9QSFlfTEVEX0JDUl9USU1FX1RFU1RcdFx0QklUKDIpXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3MDojZGVmaW5lICAgQUlSX1BIWV9MRURfQkNSX0NMS19FTlx0XHRCSVQoMylcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjcxOiNkZWZpbmUgICBBSVJfUEhZX0xFRF9CQ1JfRVhUX0NUUkxcdFx0QklUKDE1KVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzItXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3MzojZGVmaW5lIEFJUl9QSFlfTEVEX0RVUl9PTlx0XHQweDAyMlxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzQtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NTojZGVmaW5lIEFJUl9QSFlfTEVEX0RVUl9CTElOS1x0XHQweDAyM1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzYtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NzojZGVmaW5lIEFJUl9QSFlfTEVEX09OKGkpXHQgICAgICAgKDB4MDI0ICYjNDM7ICgoaSkgKiAyKSlcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc4OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9PTl9NQVNLXHRcdFx0KEdFTk1BU0soNiwgMCkgfCBCSVQoOCkpXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3OTojZGVmaW5lICAgQUlSX1BIWV9MRURfT05fTElOSzEwMDBcdFx0QklUKDApXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MDojZGVmaW5lICAgQUlSX1BIWV9MRURfT05fTElOSzEwMFx0XHRCSVQoMSlcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgxOiNkZWZpbmUgICBBSVJfUEhZX0xFRF9PTl9MSU5LMTBcdFx0XHRCSVQoMilcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgyOiNkZWZpbmUgICBBSVJfUEhZX0xFRF9PTl9MSU5LRE9XTlx0XHRCSVQoMylcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgzOiNkZWZpbmUgICBBSVJfUEhZX0xFRF9PTl9GRFhcdFx0XHRCSVQoNCkgLyogRnVsbCBkdXBsZXggKi9cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjg0OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9PTl9IRFhcdFx0XHRCSVQoNSkgLyogSGFsZiBkdXBsZXggKi9cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjg1OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9PTl9GT1JDRV9PTlx0XHRCSVQoNilcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjg2OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9PTl9MSU5LMjUwMFx0XHRCSVQoOClcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjg3OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9PTl9QT0xBUklUWVx0XHRCSVQoMTQpXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4ODojZGVmaW5lICAgQUlSX1BIWV9MRURfT05fRU5BQkxFXHRcdFx0QklUKDE1KVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODktXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo5MDojZGVmaW5lIEFJUl9QSFlfTEVEX0JMSU5LKGkpXHQgICAgICAgKDB4MDI1ICYjNDM7ICgoaSkgKiAyKSlcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjkxOiNkZWZpbmUgICBBSVJfUEhZX0xFRF9CTElOS18xMDAwVFhcdFx0QklUKDApXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo5MjojZGVmaW5lICAgQUlSX1BIWV9MRURfQkxJTktfMTAwMFJYXHRcdEJJVCgxKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6OTM6I2RlZmluZSAgIEFJUl9QSFlfTEVEX0JMSU5LXzEwMFRYXHRcdEJJVCgyKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6OTQ6I2RlZmluZSAgIEFJUl9QSFlfTEVEX0JMSU5LXzEwMFJYXHRcdEJJVCgzKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6OTU6I2RlZmluZSAgIEFJUl9QSFlfTEVEX0JMSU5LXzEwVFhcdFx0QklUKDQpXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo5NjojZGVmaW5lICAgQUlSX1BIWV9MRURfQkxJTktfMTBSWFx0XHRCSVQoNSlcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjk3OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9CTElOS19DT0xMSVNJT05cdFx0QklUKDYpXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo5ODojZGVmaW5lICAgQUlSX1BIWV9MRURfQkxJTktfUlhfQ1JDX0VSUlx0XHRCSVQoNylcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjk5OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9CTElOS19SWF9JRExFX0VSUlx0XHRCSVQoOClcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEwMDojZGVmaW5lICAgQUlSX1BIWV9MRURfQkxJTktfRk9SQ0VfQkxJTktcdFx0QklUKDkpXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMDE6I2RlZmluZSAgIEFJUl9QSFlfTEVEX0JMSU5LXzI1MDBUWFx0XHRCSVQoMTApXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMDI6I2RlZmluZSAgIEFJUl9QSFlfTEVEX0JMSU5LXzI1MDBSWFx0XHRCSVQoMTEpXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMDMtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMDQtLyogUmVnaXN0ZXJzIG9uIEJVQ0tQQlVTICovXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMDU6I2RlZmluZSBBSVJfUEhZX0NPTlRST0xcdFx0XHQweDNhOWNcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEwNjojZGVmaW5lICAgQUlSX1BIWV9DT05UUk9MX0lOVEVSTkFMXHRcdEJJVCgxMSlcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEwNy1cbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xNjUtLyogTUlJIHJlZ2lzdGVyIGNvbnN0YW50cyBmb3IgUEJVUyBhY2Nlc3MgKFBIWSBhZGRyICYjNDM7IDgpICovXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNjY6I2RlZmluZSBBSVJfUEJVU19BRERSX0hJR0hcdFx0MHgxY1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTY3OiNkZWZpbmUgQUlSX1BCVVNfREFUQV9ISUdIXHRcdDB4MTBcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE2ODojZGVmaW5lIEFJUl9QQlVTX1JFR19BRERSX0hJR0hfTUFTS1x0R0VOTUFTSygxNSwgNilcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE2OTojZGVmaW5lIEFJUl9QQlVTX1JFR19BRERSX0xPV19NQVNLXHRHRU5NQVNLKDUsIDIpXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xNzAtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTgwLSAqL1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTgxOiNkZWZpbmUgQUlSX0RFRkFVTFRfVFJJR0dFUl9MRUQwIChCSVQoVFJJR0dFUl9ORVRERVZfTElOSykgICAgICB8IFxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xODItXHRcdFx0XHQgIEJJVChUUklHR0VSX05FVERFVl9SWCkgICAgICAgIHwgXFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE4My1cdFx0XHRcdCAgQklUKFRSSUdHRVJfTkVUREVWX1RYKSlcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE4NDojZGVmaW5lIEFJUl9ERUZBVUxUX1RSSUdHRVJfTEVEMSAoQklUKFRSSUdHRVJfTkVUREVWX0xJTktfMjUwMCkgfCBcXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTg1LVx0XHRcdFx0ICBCSVQoVFJJR0dFUl9ORVRERVZfTElOS18xMDAwKSlcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE4NjojZGVmaW5lIEFJUl9ERUZBVUxUX1RSSUdHRVJfTEVEMiAoQklUKFRSSUdHRVJfTkVUREVWX0xJTktfMjUwMCkgfCBcXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTg3LVx0XHRcdFx0ICBCSVQoVFJJR0dFUl9ORVRERVZfTElOS18xMDApKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTIwNz1lbnVtIHtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjIwODpcdEFJUl9QSFlfTEVEX1NUQVRFX0ZPUkNFX09OLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjA5Olx0QUlSX1BIWV9MRURfU1RBVEVfRk9SQ0VfQkxJTkssXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yMTAtfTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0yMTI9ZW51bSB7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyMTM6XHRBSVJfUEhZX0xFRF9EVVJfQkxJTktfMzJNUyxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjIxNDpcdEFJUl9QSFlfTEVEX0RVUl9CTElOS182NE1TLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjE1Olx0QUlSX1BIWV9MRURfRFVSX0JMSU5LXzEyOE1TLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjE2Olx0QUlSX1BIWV9MRURfRFVSX0JMSU5LXzI1Nk1TLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjE3Olx0QUlSX1BIWV9MRURfRFVSX0JMSU5LXzUxMk1TLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjE4Olx0QUlSX1BIWV9MRURfRFVSX0JMSU5LXzEwMjRNUyxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTIxOS19O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTIyMT1lbnVtIHtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjIyMjpcdEFJUl9MRURfRElTQUJMRSxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjIyMzpcdEFJUl9MRURfRU5BQkxFLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjI0LX07XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MjI2PWVudW0ge1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjI3Olx0QUlSX0FDVElWRV9MT1csXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyMjg6XHRBSVJfQUNUSVZFX0hJR0gsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yMjktfTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0yMzE9ZW51bSB7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyMzI6XHRBSVJfTEVEX01PREVfRElTQUJMRSxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjIzMzpcdEFJUl9MRURfTU9ERV9VU0VSX0RFRklORSxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTIzNC19O1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjM1LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjM2OiNkZWZpbmUgQUlSX1BIWV9MRURfRFVSX1VOSVRcdDEwMjRcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjIzNzojZGVmaW5lIEFJUl9QSFlfTEVEX0RVUiAoQUlSX1BIWV9MRURfRFVSX1VOSVQgXHUwMDNjXHUwMDNjIEFJUl9QSFlfTEVEX0RVUl9CTElOS182NE1TKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjM4LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTI0OD1zdGF0aWMgaW50IF9fYWlyX3BidXNfcmVnX3dyaXRlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldixcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yNTItXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyNTM6XHRyZXQgPSBfX21kaW9idXNfd3JpdGUobWRpb2Rldi1cdTAwM2VidXMsIG1kaW9kZXYtXHUwMDNlYWRkciwgQUlSX0VYVF9QQUdFX0FDQ0VTUyxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTI1NC1cdFx0XHQgICAgICB1cHBlcl8xNl9iaXRzKHBidXNfcmVnKSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjU3LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjU4Olx0cmV0ID0gX19tZGlvYnVzX3dyaXRlKG1kaW9kZXYtXHUwMDNlYnVzLCBtZGlvZGV2LVx1MDAzZWFkZHIsIEFJUl9QQlVTX0FERFJfSElHSCxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjI1OTpcdFx0XHQgICAgICBGSUVMRF9HRVQoQUlSX1BCVVNfUkVHX0FERFJfSElHSF9NQVNLLCBwYnVzX3JlZykpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjYwLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yNjMtXHRyZXQgPSBfX21kaW9idXNfd3JpdGUobWRpb2Rldi1cdTAwM2VidXMsIG1kaW9kZXYtXHUwMDNlYWRkcixcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjI2NDpcdFx0XHQgICAgICBGSUVMRF9HRVQoQUlSX1BCVVNfUkVHX0FERFJfTE9XX01BU0ssIHBidXNfcmVnKSxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTI2NS1cdFx0XHQgICAgICBsb3dlcl8xNl9iaXRzKHBidXNfZGF0YSkpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTI2OC1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjI2OTpcdHJldHVybiBfX21kaW9idXNfd3JpdGUobWRpb2Rldi1cdTAwM2VidXMsIG1kaW9kZXYtXHUwMDNlYWRkciwgQUlSX1BCVVNfREFUQV9ISUdILFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjcwLVx0XHRcdCAgICAgICB1cHBlcl8xNl9iaXRzKHBidXNfZGF0YSkpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTI3Mz1zdGF0aWMgaW50IF9fYWlyX3dyaXRlX2J1ZihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MzIgYWRkcmVzcyxcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yNzktXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyODA6XHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIEFJUl9CUEJVU19NT0RFLCBBSVJfQlBCVVNfTU9ERV9BRERSX0lOQ1IpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjgxLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yODMtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyODQ6XHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIEFJUl9CUEJVU19XUl9BRERSX0hJR0gsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yODUtXHRcdFx0ICB1cHBlcl8xNl9iaXRzKGFkZHJlc3MpKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yODgtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyODk6XHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIEFJUl9CUEJVU19XUl9BRERSX0xPVyxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTI5MC1cdFx0XHQgIGxvd2VyXzE2X2JpdHMoYWRkcmVzcykpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTI5NS1cdFx0dmFsID0gZ2V0X3VuYWxpZ25lZF9sZTE2KFx1MDAyNmZ3LVx1MDAzZWRhdGFbb2Zmc2V0ICYjNDM7IDJdKTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjI5NjpcdFx0cmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBBSVJfQlBCVVNfV1JfREFUQV9ISUdILCB2YWwpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjk3LVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTMwMC1cdFx0dmFsID0gZ2V0X3VuYWxpZ25lZF9sZTE2KFx1MDAyNmZ3LVx1MDAzZWRhdGFbb2Zmc2V0XSk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzozMDE6XHRcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX1dSX0RBVEFfTE9XLCB2YWwpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzAyLVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTMwOT1zdGF0aWMgaW50IGFpcl93cml0ZV9idWYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIGFkZHJlc3MsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzIwLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MzIxOlx0c2F2ZWRfcGFnZSA9IHBoeV9zZWxlY3RfcGFnZShwaHlkZXYsIEFJUl9QSFlfUEFHRV9FWFRFTkRFRF80KTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTMyMi1cbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz00Njg9c3RhdGljIGludCBhbjg4MTFoYl9sb2FkX2Zpcm13YXJlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDg0LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDg1Olx0cmV0ID0gYW44ODExaGJfbG9hZF9maWxlKHBoeWRldiwgQU44ODExSEJfTUQzMl9ETSwgQUlSX0ZXX0FERFJfRE0pO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDg2LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy00OTQtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo0OTU6XHRyZXQgPSBhbjg4MTFoYl9sb2FkX2ZpbGUocGh5ZGV2LCBBTjg4MTFIQl9NRDMyX0RTUCwgQUlSX0ZXX0FERFJfRFNQKTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTQ5Ni1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9NTA4PXN0YXRpYyBpbnQgZW44ODExaF9sb2FkX2Zpcm13YXJlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTMyLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTMzOlx0cmV0ID0gYWlyX3dyaXRlX2J1ZihwaHlkZXYsIEFJUl9GV19BRERSX0RNLCAgZncxKTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTUzNC1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTM2LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTM3Olx0cmV0ID0gYWlyX3dyaXRlX2J1ZihwaHlkZXYsIEFJUl9GV19BRERSX0RTUCwgZncyKTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTUzOC1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9NTg2PXN0YXRpYyBpbnQgYWlyX2h3X2xlZF9vbl9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsIGJvb2wgb24pXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTk0LVx0aWYgKG9uKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTk1Olx0XHRjaGFuZ2VkID0gIXRlc3RfYW5kX3NldF9iaXQoQUlSX1BIWV9MRURfU1RBVEVfRk9SQ0VfT04sXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01OTYtXHRcdFx0XHRcdCAgICBcdTAwMjZwcml2LVx1MDAzZWxlZFtpbmRleF0uc3RhdGUpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTk3LVx0ZWxzZVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTk4Olx0XHRjaGFuZ2VkID0gISF0ZXN0X2FuZF9jbGVhcl9iaXQoQUlSX1BIWV9MRURfU1RBVEVfRk9SQ0VfT04sXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01OTktXHRcdFx0XHRcdCAgICAgICBcdTAwMjZwcml2LVx1MDAzZWxlZFtpbmRleF0uc3RhdGUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTYwOC1cdFx0cmV0dXJuIHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo2MDk6XHRcdFx0XHQgICAgICBBSVJfUEhZX0xFRF9PTihpbmRleCksXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo2MTA6XHRcdFx0XHQgICAgICBBSVJfUEhZX0xFRF9PTl9NQVNLLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjExOlx0XHRcdFx0ICAgICAgb24gPyBBSVJfUEhZX0xFRF9PTl9GT1JDRV9PTiA6IDApO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjEyLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTYxNj1zdGF0aWMgaW50IGFpcl9od19sZWRfYmxpbmtfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTYyNS1cdGlmIChibGlua2luZylcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjYyNjpcdFx0Y2hhbmdlZCA9ICF0ZXN0X2FuZF9zZXRfYml0KEFJUl9QSFlfTEVEX1NUQVRFX0ZPUkNFX0JMSU5LLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjI3LVx0XHRcdFx0XHQgICAgXHUwMDI2cHJpdi1cdTAwM2VsZWRbaW5kZXhdLnN0YXRlKTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTYyOC1cdGVsc2VcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjYyOTpcdFx0Y2hhbmdlZCA9ICEhdGVzdF9hbmRfY2xlYXJfYml0KEFJUl9QSFlfTEVEX1NUQVRFX0ZPUkNFX0JMSU5LLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjMwLVx0XHRcdFx0XHQgICAgICAgXHUwMDI2cHJpdi1cdTAwM2VsZWRbaW5kZXhdLnN0YXRlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02MzUtXHRcdHJldHVybiBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo2MzY6XHRcdFx0XHQgICAgIEFJUl9QSFlfTEVEX0JMSU5LKGluZGV4KSxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTYzNy1cdFx0XHRcdCAgICAgYmxpbmtpbmcgP1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjM4Olx0XHRcdFx0ICAgICBBSVJfUEhZX0xFRF9CTElOS19GT1JDRV9CTElOSyA6IDApO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjM5LVx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTY0Mz1zdGF0aWMgaW50IGFpcl9sZWRfYmxpbmtfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTY2OS1cdC8qIGh3LWNvbnRyb2wgaXMgb2ZmKi9cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjY3MDpcdGlmICghIXRlc3RfYml0KEFJUl9QSFlfTEVEX1NUQVRFX0ZPUkNFX0JMSU5LLCBcdTAwMjZwcml2LVx1MDAzZWxlZFtpbmRleF0uc3RhdGUpKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjcxLVx0XHRwcml2LVx1MDAzZWxlZFtpbmRleF0ucnVsZXMgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTY3Nj1zdGF0aWMgaW50IGFpcl9sZWRfYnJpZ2h0bmVzc19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjk0LVx0LyogaHctY29udHJvbCBpcyBvZmYgKi9cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjY5NTpcdGlmICghIXRlc3RfYml0KEFJUl9QSFlfTEVEX1NUQVRFX0ZPUkNFX09OLCBcdTAwMjZwcml2LVx1MDAzZWxlZFtpbmRleF0uc3RhdGUpKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjk2LVx0XHRwcml2LVx1MDAzZWxlZFtpbmRleF0ucnVsZXMgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTcxND1zdGF0aWMgaW50IGFpcl9sZWRfaHdfY29udHJvbF9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzI2LVx0aWYgKHJ1bGVzIFx1MDAyNiBCSVQoVFJJR0dFUl9ORVRERVZfRlVMTF9EVVBMRVgpKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NzI3Olx0XHRvbiB8PSBBSVJfUEhZX0xFRF9PTl9GRFg7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03MjgtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03MjktXHRpZiAocnVsZXMgXHUwMDI2IChCSVQoVFJJR0dFUl9ORVRERVZfTElOS18xMCkgfCBCSVQoVFJJR0dFUl9ORVRERVZfTElOSykpKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NzMwOlx0XHRvbiB8PSBBSVJfUEhZX0xFRF9PTl9MSU5LMTA7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03MzEtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03MzItXHRpZiAocnVsZXMgXHUwMDI2IChCSVQoVFJJR0dFUl9ORVRERVZfTElOS18xMDApIHwgQklUKFRSSUdHRVJfTkVUREVWX0xJTkspKSlcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjczMzpcdFx0b24gfD0gQUlSX1BIWV9MRURfT05fTElOSzEwMDtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTczNC1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTczNS1cdGlmIChydWxlcyBcdTAwMjYgKEJJVChUUklHR0VSX05FVERFVl9MSU5LXzEwMDApIHwgQklUKFRSSUdHRVJfTkVUREVWX0xJTkspKSlcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjczNjpcdFx0b24gfD0gQUlSX1BIWV9MRURfT05fTElOSzEwMDA7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03MzctXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03MzgtXHRpZiAocnVsZXMgXHUwMDI2IChCSVQoVFJJR0dFUl9ORVRERVZfTElOS18yNTAwKSB8IEJJVChUUklHR0VSX05FVERFVl9MSU5LKSkpXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3Mzk6XHRcdG9uIHw9IEFJUl9QSFlfTEVEX09OX0xJTksyNTAwO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzQwLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzQxLVx0aWYgKHJ1bGVzIFx1MDAyNiBCSVQoVFJJR0dFUl9ORVRERVZfUlgpKSB7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NDI6XHRcdGJsaW5rIHw9IEFJUl9QSFlfTEVEX0JMSU5LXzEwUlggICB8XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NDM6XHRcdFx0IEFJUl9QSFlfTEVEX0JMSU5LXzEwMFJYICB8XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NDQ6XHRcdFx0IEFJUl9QSFlfTEVEX0JMSU5LXzEwMDBSWCB8XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NDU6XHRcdFx0IEFJUl9QSFlfTEVEX0JMSU5LXzI1MDBSWDtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc0Ni1cdH1cbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03NDgtXHRpZiAocnVsZXMgXHUwMDI2IEJJVChUUklHR0VSX05FVERFVl9UWCkpIHtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc0OTpcdFx0YmxpbmsgfD0gQUlSX1BIWV9MRURfQkxJTktfMTBUWCAgIHxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc1MDpcdFx0XHQgQUlSX1BIWV9MRURfQkxJTktfMTAwVFggIHxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc1MTpcdFx0XHQgQUlSX1BIWV9MRURfQkxJTktfMTAwMFRYIHxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc1MjpcdFx0XHQgQUlSX1BIWV9MRURfQkxJTktfMjUwMFRYO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzUzLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc1Ni1cdFx0Lyogc3dpdGNoIGh3LWNvbnRyb2wgb24sIHNvIGxlZC1vbiBhbmQgbGVkLWJsaW5rIGFyZSBvZmYgKi9cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc1NzpcdFx0Y2xlYXJfYml0KEFJUl9QSFlfTEVEX1NUQVRFX0ZPUkNFX09OLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzU4LVx0XHRcdCAgXHUwMDI2cHJpdi1cdTAwM2VsZWRbaW5kZXhdLnN0YXRlKTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc1OTpcdFx0Y2xlYXJfYml0KEFJUl9QSFlfTEVEX1NUQVRFX0ZPUkNFX0JMSU5LLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzYwLVx0XHRcdCAgXHUwMDI2cHJpdi1cdTAwM2VsZWRbaW5kZXhdLnN0YXRlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03NjQtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NjU6XHRyZXQgPSBwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBBSVJfUEhZX0xFRF9PTihpbmRleCksXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NjY6XHRcdFx0ICAgICBBSVJfUEhZX0xFRF9PTl9NQVNLLCBvbik7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03NjctXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzcwLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NzcxOlx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgQUlSX1BIWV9MRURfQkxJTksoaW5kZXgpLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzcyLVx0XHRcdCAgICAgYmxpbmspO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTc3NT1zdGF0aWMgaW50IGFpcl9sZWRfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCwgdTggc3RhdGUsIHU4IHBvbClcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03ODItXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3ODM6XHRpZiAoc3RhdGUgPT0gQUlSX0xFRF9FTkFCTEUpXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3ODQ6XHRcdHZhbCB8PSBBSVJfUEhZX0xFRF9PTl9FTkFCTEU7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03ODUtXHRlbHNlXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3ODY6XHRcdHZhbCBcdTAwMjY9IH5BSVJfUEhZX0xFRF9PTl9FTkFCTEU7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03ODctXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3ODg6XHRpZiAocG9sID09IEFJUl9BQ1RJVkVfSElHSClcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc4OTpcdFx0dmFsIHw9IEFJUl9QSFlfTEVEX09OX1BPTEFSSVRZO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzkwLVx0ZWxzZVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NzkxOlx0XHR2YWwgXHUwMDI2PSB+QUlSX1BIWV9MRURfT05fUE9MQVJJVFk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03OTItXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3OTM6XHRlcnIgPSBwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBBSVJfUEhZX0xFRF9PTihpbmRleCksXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3OTQ6XHRcdFx0ICAgICBBSVJfUEhZX0xFRF9PTl9FTkFCTEUgfFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Nzk1Olx0XHRcdCAgICAgQUlSX1BIWV9MRURfT05fUE9MQVJJVFksIHZhbCk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03OTYtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9ODAzPXN0YXRpYyBpbnQgYWlyX2xlZHNfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgbnVtLCBpbnQgZHVyLCBpbnQgbW9kZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04MDctXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MDg6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIEFJUl9QSFlfTEVEX0RVUl9CTElOSyxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTgwOS1cdFx0XHQgICAgZHVyKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04MTItXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MTM6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIEFJUl9QSFlfTEVEX0RVUl9PTixcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTgxNC1cdFx0XHQgICAgZHVyIFx1MDAzZVx1MDAzZSAxKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04MTgtXHRzd2l0Y2ggKG1vZGUpIHtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgxOTpcdGNhc2UgQUlSX0xFRF9NT0RFX0RJU0FCTEU6XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MjA6XHRcdHJldCA9IHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIEFJUl9QSFlfTEVEX0JDUixcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgyMTpcdFx0XHRcdCAgICAgQUlSX1BIWV9MRURfQkNSX0VYVF9DVFJMIHxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgyMjpcdFx0XHRcdCAgICAgQUlSX1BIWV9MRURfQkNSX01PREVfTUFTSywgMCk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04MjMtXHRcdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODI1LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgyNjpcdGNhc2UgQUlSX0xFRF9NT0RFX1VTRVJfREVGSU5FOlxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6ODI3Olx0XHRyZXQgPSBwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBBSVJfUEhZX0xFRF9CQ1IsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4Mjg6XHRcdFx0XHQgICAgIEFJUl9QSFlfTEVEX0JDUl9FWFRfQ1RSTCB8XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4Mjk6XHRcdFx0XHQgICAgIEFJUl9QSFlfTEVEX0JDUl9DTEtfRU4sXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MzA6XHRcdFx0XHQgICAgIEFJUl9QSFlfTEVEX0JDUl9FWFRfQ1RSTCB8XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MzE6XHRcdFx0XHQgICAgIEFJUl9QSFlfTEVEX0JDUl9DTEtfRU4pO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODMyLVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTg0MC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG51bTsgJiM0MzsmIzQzO2kpIHtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjg0MTpcdFx0cmV0ID0gYWlyX2xlZF9pbml0KHBoeWRldiwgaSwgQUlSX0xFRF9FTkFCTEUsIEFJUl9BQ1RJVkVfSElHSCk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04NDItXHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0xMDYzPXN0YXRpYyBpbnQgZW44ODExaF9sZWRzX3NldHVwKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTA2Ny1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEwNjg6XHRwcml2LVx1MDAzZWxlZFswXS5ydWxlcyA9IEFJUl9ERUZBVUxUX1RSSUdHRVJfTEVEMDtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEwNjk6XHRwcml2LVx1MDAzZWxlZFsxXS5ydWxlcyA9IEFJUl9ERUZBVUxUX1RSSUdHRVJfTEVEMTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEwNzA6XHRwcml2LVx1MDAzZWxlZFsyXS5ydWxlcyA9IEFJUl9ERUZBVUxUX1RSSUdHRVJfTEVEMjtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEwNzEtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMDcyOlx0cmV0ID0gYWlyX2xlZHNfaW5pdChwaHlkZXYsIEVOODgxMUhfTEVEX0NPVU5ULCBBSVJfUEhZX0xFRF9EVVIsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMDczOlx0XHRcdCAgICBBSVJfTEVEX01PREVfRElTQUJMRSk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMDc0LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0xMjUzPXN0YXRpYyBpbnQgYW44ODExaGJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMjcxLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTI3MjpcdHJldCA9IGFpcl9sZWRzX2luaXQocGh5ZGV2LCBFTjg4MTFIX0xFRF9DT1VOVCwgQUlSX1BIWV9MRURfRFVSLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTI3MzpcdFx0XHQgICAgQUlSX0xFRF9NT0RFX1VTRVJfREVGSU5FKTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEyNzQtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTEyODA9c3RhdGljIGludCBlbjg4MTFoX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTI5Ny1cdCAqL1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTI5ODpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQUlSX1BIWV9NQ1VfQ01EXzEsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMjk5Olx0XHRcdCAgICBBSVJfUEhZX01DVV9DTURfMV9NT0RFMSk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzAwLVx0aWYgKHJldCBcdTAwM2MgMClcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMDEtXHRcdHJldHVybiByZXQ7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMzAyOlx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfMixcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEzMDM6XHRcdFx0ICAgIEFJUl9QSFlfTUNVX0NNRF8yX01PREUxKTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMDQtXHRpZiAocmV0IFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMwNS1cdFx0cmV0dXJuIHJldDtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEzMDY6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFJUl9QSFlfTUNVX0NNRF8zLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTMwNzpcdFx0XHQgICAgQUlSX1BIWV9NQ1VfQ01EXzNfTU9ERTEpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMwOC1cdGlmIChyZXQgXHUwMDNjIDApXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzA5LVx0XHRyZXR1cm4gcmV0O1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTMxMDpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQUlSX1BIWV9NQ1VfQ01EXzQsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMzExOlx0XHRcdCAgICBBSVJfUEhZX01DVV9DTURfNF9NT0RFMSk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzEyLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzE4LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTMxOTpcdHJldCA9IGFpcl9sZWRzX2luaXQocGh5ZGV2LCBFTjg4MTFIX0xFRF9DT1VOVCwgQUlSX1BIWV9MRURfRFVSLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTMyMDpcdFx0XHQgICAgQUlSX0xFRF9NT0RFX1VTRVJfREVGSU5FKTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMjEtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MTM3OD1zdGF0aWMgaW50IGVuODgxMWhfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xNDI4LVx0LyogR2V0IHJlYWwgc3BlZWQgZnJvbSB2ZW5kb3IgcmVnaXN0ZXIgKi9cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE0Mjk6XHR2YWwgPSBwaHlfcmVhZChwaHlkZXYsIEFJUl9BVVhfQ1RSTF9TVEFUVVMpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQzMC1cdGlmICh2YWwgXHUwMDNjIDApXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xNDMxLVx0XHRyZXR1cm4gdmFsO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTQzMjpcdHN3aXRjaCAodmFsIFx1MDAyNiBBSVJfQVVYX0NUUkxfU1RBVFVTX1NQRUVEX01BU0spIHtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE0MzM6XHRjYXNlIEFJUl9BVVhfQ1RSTF9TVEFUVVNfU1BFRURfMjUwMDpcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0MzQtXHRcdHBoeWRldi1cdTAwM2VzcGVlZCA9IFNQRUVEXzI1MDA7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xNDM1LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE0MzY6XHRjYXNlIEFJUl9BVVhfQ1RSTF9TVEFUVVNfU1BFRURfMTAwMDpcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0MzctXHRcdHBoeWRldi1cdTAwM2VzcGVlZCA9IFNQRUVEXzEwMDA7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xNDM4LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE0Mzk6XHRjYXNlIEFJUl9BVVhfQ1RSTF9TVEFUVVNfU1BFRURfMTAwOlxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQ0MC1cdFx0cGh5ZGV2LVx1MDAzZXNwZWVkID0gU1BFRURfMTAwO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQ0MS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNDQyOlx0Y2FzZSBBSVJfQVVYX0NUUkxfU1RBVFVTX1NQRUVEXzEwOlxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQ0My1cdFx0cGh5ZGV2LVx1MDAzZXNwZWVkID0gU1BFRURfMTA7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MTQ2Mj1zdGF0aWMgaW50IGVuODgxMWhfY2xlYXJfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0NjUtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNDY2Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfMyxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE0Njc6XHRcdFx0ICAgIEFJUl9QSFlfTUNVX0NNRF8zX0RPQ01EKTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0NjgtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0NzAtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNDcxOlx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfNCxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE0NzI6XHRcdFx0ICAgIEFJUl9QSFlfTUNVX0NNRF80X0lOVENMUik7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xNDczLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYz0xNz1zdGF0aWMgaW50IF9fYWlyX2J1Y2twYnVzX3JlZ19yZWFkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmMtMjItXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYzoyMzpcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX01PREUsIEFJUl9CUEJVU19NT0RFX0FERFJfRklYRUQpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmMtMjQtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTI2LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmM6Mjc6XHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIEFJUl9CUEJVU19SRF9BRERSX0hJR0gsXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYy0yOC1cdFx0XHQgIHVwcGVyXzE2X2JpdHMocGJ1c19hZGRyZXNzKSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmMtMzEtXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYzozMjpcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX1JEX0FERFJfTE9XLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmMtMzMtXHRcdFx0ICBsb3dlcl8xNl9iaXRzKHBidXNfYWRkcmVzcykpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTM2LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmM6Mzc6XHRwYnVzX2RhdGFfaGlnaCA9IF9fcGh5X3JlYWQocGh5ZGV2LCBBSVJfQlBCVVNfUkRfREFUQV9ISUdIKTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTM4LVx0aWYgKHBidXNfZGF0YV9oaWdoIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTQwLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmM6NDE6XHRwYnVzX2RhdGFfbG93ID0gX19waHlfcmVhZChwaHlkZXYsIEFJUl9CUEJVU19SRF9EQVRBX0xPVyk7XG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYy00Mi1cdGlmIChwYnVzX2RhdGFfbG93IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jPTQ5PXN0YXRpYyBpbnQgX19haXJfYnVja3BidXNfcmVnX3dyaXRlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmMtNTMtXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYzo1NDpcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX01PREUsIEFJUl9CUEJVU19NT0RFX0FERFJfRklYRUQpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmMtNTUtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTU3LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmM6NTg6XHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIEFJUl9CUEJVU19XUl9BRERSX0hJR0gsXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYy01OS1cdFx0XHQgIHVwcGVyXzE2X2JpdHMocGJ1c19hZGRyZXNzKSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmMtNjItXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYzo2MzpcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX1dSX0FERFJfTE9XLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmMtNjQtXHRcdFx0ICBsb3dlcl8xNl9iaXRzKHBidXNfYWRkcmVzcykpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTY3LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmM6Njg6XHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIEFJUl9CUEJVU19XUl9EQVRBX0hJR0gsXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYy02OS1cdFx0XHQgIHVwcGVyXzE2X2JpdHMocGJ1c19kYXRhKSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmMtNzItXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYzo3MzpcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX1dSX0RBVEFfTE9XLFxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wJiM0MztcbiAgIDI6XHQvKlxuICAgMzpcdCAqIERyaXZlciBmb3IgdGhlIEFpcm9oYSBFTjg4MTFIIGFuZCBBTjg4MTFIQiAyLjUgR2lnYWJpdCBQSFlzLlxuICAgNDpcdCAqXG4gICA1Olx0ICogTGltaXRhdGlvbnM6XG4gICA2Olx0ICogLSBPbmx5IGZ1bGwgZHVwbGV4IHN1cHBvcnRlZFxuICAgNzpcdCAqIC0gRm9yY2VkIHNwZWVkIChBTiBvZmYpIGlzIG5vdCBzdXBwb3J0ZWQgYnkgaGFyZHdhcmUgKDEwME1icHMpXG4gICA4Olx0ICpcbiAgIDk6XHQgKiBTb3VyY2Ugb3JpZ2luYXRlZCBmcm9tIGFpcm9oYSYjMzk7cyBlbjg4MTFoLmMgYW5kIGVuODgxMWguaCB2MS4yLjFcbiAgMTA6XHQgKiB3aXRoIEFOODgxMUhCIGJpdHMgZnJvbSBhaXJfYW44ODExaGIuYyB2MC4wLjRcbiAgMTE6XHQgKlxuICAxMjpcdCAqIENvcHlyaWdodCAoQykgMjAyMywgMjAyNiBBaXJvaGEgVGVjaG5vbG9neSBDb3JwLlxuICAxMzpcdCAqL1xuICAxNDpcdFxuICAxNTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2Nsay5oXHUwMDNlXG4gIDE2Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvY2xrLXByb3ZpZGVyLmhcdTAwM2VcbiAgMTc6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuICAxODpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS9waHktY29tbW9uLXByb3BzLmhcdTAwM2VcbiAgMTk6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9maXJtd2FyZS5oXHUwMDNlXG4gIDIwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvYml0ZmllbGQuaFx1MDAzZVxuICAyMTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbiAgMjI6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC93b3JkcGFydC5oXHUwMDNlXG4gIDIzOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbiAgMjQ6XHRcbiAgMjU6XHQjaW5jbHVkZSBcJiMzNDthaXJfcGh5X2xpYi5oXCYjMzQ7XG4gIDI2Olx0XG4gIDI3Olx0I2RlZmluZSBFTjg4MTFIX1BIWV9JRFx0XHQweDAzYTJhNDExXG4gIDI4Olx0I2RlZmluZSBBTjg4MTFIQl9QSFlfSURcdFx0MHhjMGZmMDRhMFxuICAyOTpcdFxuICAzMDpcdCNkZWZpbmUgRU44ODExSF9NRDMyX0RNXHRcdFwmIzM0O2Fpcm9oYS9FdGhNRDMyLmRtLmJpblwmIzM0O1xuICAzMTpcdCNkZWZpbmUgRU44ODExSF9NRDMyX0RTUFx0XCYjMzQ7YWlyb2hhL0V0aE1EMzIuRFNQLmJpblwmIzM0O1xuICAzMjpcdCNkZWZpbmUgQU44ODExSEJfTUQzMl9ETVx0XCYjMzQ7YWlyb2hhL2FuODgxMWhiL0V0aE1EMzJfQ1JDLkRNLmJpblwmIzM0O1xuICAzMzpcdCNkZWZpbmUgQU44ODExSEJfTUQzMl9EU1BcdFwmIzM0O2Fpcm9oYS9hbjg4MTFoYi9FdGhNRDMyX0NSQy5EU1AuYmluXCYjMzQ7XG4gIDM0Olx0XG4gIDM1Olx0I2RlZmluZSBBSVJfRldfQUREUl9ETVx0MHgwMDAwMDAwMFxuICAzNjpcdCNkZWZpbmUgQUlSX0ZXX0FERFJfRFNQXHQweDAwMTAwMDAwXG4gIDM3Olx0XG4gIDM4Olx0LyogTUlJIFJlZ2lzdGVycyAqL1xuICAzOTpcdCNkZWZpbmUgQUlSX0FVWF9DVFJMX1NUQVRVU1x0XHQweDFkXG4gIDQwOlx0I2RlZmluZSAgIEFJUl9BVVhfQ1RSTF9TVEFUVVNfU1BFRURfTUFTS1x0R0VOTUFTSyg0LCAyKVxuICA0MTpcdCNkZWZpbmUgICBBSVJfQVVYX0NUUkxfU1RBVFVTX1NQRUVEXzEwXHRcdDB4MFxuICA0MjpcdCNkZWZpbmUgICBBSVJfQVVYX0NUUkxfU1RBVFVTX1NQRUVEXzEwMFx0XHQweDRcbiAgNDM6XHQjZGVmaW5lICAgQUlSX0FVWF9DVFJMX1NUQVRVU19TUEVFRF8xMDAwXHQweDhcbiAgNDQ6XHQjZGVmaW5lICAgQUlSX0FVWF9DVFJMX1NUQVRVU19TUEVFRF8yNTAwXHQweGNcbiAgNDU6XHRcbiAgNDY6XHQvKiBSZWdpc3RlcnMgb24gTURJT19NTURfVkVORDEgKi9cbiAgNDc6XHQjZGVmaW5lIEVOODgxMUhfUEhZX0ZXX1NUQVRVU1x0XHQweDgwMDlcbiAgNDg6XHQjZGVmaW5lICAgRU44ODExSF9QSFlfUkVBRFlcdFx0XHQweDAyXG4gIDQ5Olx0XG4gIDUwOlx0I2RlZmluZSBBSVJfUEhZX01DVV9DTURfMFx0XHQweDgwMGJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTAyNwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgRGVlcGVyIGludG8gdGhlIEFpciBJbnRlcmZhY2UgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gcG9raW5nIGFyb3VuZCBpbiBgYWlyX2VuODgxMWguY2AgYW5kIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBgYWlyX3dyaXRlX2J1ZmAuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGhvdyB0aGlzIGRyaXZlciBhY3R1YWxseSB3b3Jrcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBhbmQgc2VlIHRoZSByZXN0IG9mIHRoZSBmaWxlIHN1cnJvdW5kaW5nIHRoaXMgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgSSYjMzk7bSBpbnRlcmVzdGVkIGluIGhvdyB0aGlzIGRyaXZlciBpcyByZWdpc3RlcmVkIHdpdGhpbiB0aGUga2VybmVsLCBhbmQgdGhlbiBldmVuIG1vcmUgcGFydGljdWxhcmx5IGhvdyBpdCYjMzk7cyAqYm91bmQqIHRvIHNwZWNpZmljIGhhcmR3YXJlIGRldmljZXMuIFVuZGVyc3RhbmRpbmcgdGhlIHJlZ2lzdHJhdGlvbiBhbmQgYmluZGluZyBwcm9jZXNzZXMgaXMga2V5IHRvIGZpZ3VyaW5nIG91dCB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIGhvdyB0aGUgbG93LWxldmVsIGZ1bmN0aW9ucyBsaWtlIGBhaXJfd3JpdGVfYnVmYCBmaXQgaW50byB0aGUgZ3JhbmQgc2NoZW1lIG9mIHRoaW5ncy4gSXQmIzM5O2xsIGdpdmUgbWUgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGRldmljZSYjMzk7cyBsaWZlY3ljbGUgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDMwMDpcdFx0XHR2YWwgPSBnZXRfdW5hbGlnbmVkX2xlMTYoXHUwMDI2ZnctXHUwMDNlZGF0YVtvZmZzZXRdKTtcbiAzMDE6XHRcdFx0cmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBBSVJfQlBCVVNfV1JfREFUQV9MT1csIHZhbCk7XG4gMzAyOlx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gMzAzOlx0XHRcdFx0cmV0dXJuIHJldDtcbiAzMDQ6XHRcdH1cbiAzMDU6XHRcbiAzMDY6XHRcdHJldHVybiAwO1xuIDMwNzpcdH1cbiAzMDg6XHRcbiAzMDk6XHRzdGF0aWMgaW50IGFpcl93cml0ZV9idWYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIGFkZHJlc3MsXG4gMzEwOlx0XHRcdFx0IGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncpXG4gMzExOlx0e1xuIDMxMjpcdFx0aW50IHNhdmVkX3BhZ2U7XG4gMzEzOlx0XHRpbnQgcmV0ID0gMDtcbiAzMTQ6XHRcbiAzMTU6XHRcdGlmIChmdy1cdTAwM2VzaXplICUgNCkge1xuIDMxNjpcdFx0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7ZmlybXdhcmUgc2l6ZSAlenUgaXMgbm90IGEgbXVsdGlwbGUgb2YgNFxcblwmIzM0OyxcbiAzMTc6XHRcdFx0XHQgICBmdy1cdTAwM2VzaXplKTtcbiAzMTg6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gMzE5Olx0XHR9XG4gMzIwOlx0XG4gMzIxOlx0XHRzYXZlZF9wYWdlID0gcGh5X3NlbGVjdF9wYWdlKHBoeWRldiwgQUlSX1BIWV9QQUdFX0VYVEVOREVEXzQpO1xuIDMyMjpcdFxuIDMyMzpcdFx0aWYgKHNhdmVkX3BhZ2UgXHUwMDNlPSAwKSB7XG4gMzI0Olx0XHRcdHJldCA9IF9fYWlyX3dyaXRlX2J1ZihwaHlkZXYsIGFkZHJlc3MsIGZ3KTtcbiAzMjU6XHRcdFx0aWYgKHJldCBcdTAwM2MgMClcbiAzMjY6XHRcdFx0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7JXMgMHglMDh4IGZhaWxlZDogJWRcXG5cJiMzNDssIF9fZnVuY19fLFxuIDMyNzpcdFx0XHRcdFx0ICAgYWRkcmVzcywgcmV0KTtcbiAzMjg6XHRcdH1cbiAzMjk6XHRcbiAzMzA6XHRcdHJldHVybiBwaHlfcmVzdG9yZV9wYWdlKHBoeWRldiwgc2F2ZWRfcGFnZSwgcmV0KTtcbiAzMzE6XHR9XG4gMzMyOlx0XG4gMzMzOlx0c3RhdGljIGludCBlbjg4MTFoX3dhaXRfbWN1X3JlYWR5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gMzM0Olx0e1xuIDMzNTpcdFx0aW50IHJldCwgcmVnX3ZhbHVlO1xuIDMzNjpcdFxuIDMzNzpcdFx0cmV0ID0gYWlyX3BoeV9idWNrcGJ1c19yZWdfd3JpdGUocGh5ZGV2LCBFTjg4MTFIX0ZXX0NUUkxfMSxcbiAzMzg6XHRcdFx0XHRcdFx0IEVOODgxMUhfRldfQ1RSTF8xX0ZJTklTSCk7XG4gMzM5Olx0XHRpZiAocmV0KVxuIDM0MDpcdFx0XHRyZXR1cm4gcmV0O1xuIDM0MTpcdFxuIDM0MjpcdFx0LyogQmVjYXVzZSBvZiBtZGlvLWxvY2ssIG1heSBoYXZlIHRvIHdhaXQgZm9yIG11bHRpcGxlIGxvYWRzICovXG4gMzQzOlx0XHRyZXQgPSBwaHlfcmVhZF9tbWRfcG9sbF90aW1lb3V0KHBoeWRldiwgTURJT19NTURfVkVORDEsXG4gMzQ0Olx0XHRcdFx0XHRcdEVOODgxMUhfUEhZX0ZXX1NUQVRVUywgcmVnX3ZhbHVlLFxuIDM0NTpcdFx0XHRcdFx0XHRyZWdfdmFsdWUgPT0gRU44ODExSF9QSFlfUkVBRFksXG4gMzQ2Olx0XHRcdFx0XHRcdDIwMDAwLCA3NTAwMDAwLCB0cnVlKTtcbiAzNDc6XHRcdGlmIChyZXQpIHtcbiAzNDg6XHRcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwmIzM0O01DVSBub3QgcmVhZHk6IDB4JXhcXG5cJiMzNDssIHJlZ192YWx1ZSk7XG4gMzQ5Olx0XHRcdHJldHVybiAtRU5PREVWO1xuIDM1MDpcdFx0fVxuIDM1MTpcdFxuIDM1MjpcdFx0cmV0dXJuIDA7XG4gMzUzOlx0fVxuIDM1NDpcdFxuIDM1NTpcdHN0YXRpYyBpbnQgYW44ODExaGJfY2hlY2tfY3JjKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUzMiBzZXQxLFxuIDM1NjpcdFx0XHRcdCAgICAgIHUzMiBtb24yLCB1MzIgbW9uMylcbiAzNTc6XHR7XG4gMzU4Olx0XHR1MzIgcGJ1c192YWx1ZTtcbiAzNTk6XHRcdGludCByZXRyeSA9IDI1O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjUxCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqTG9va2luZyBmb3IgUGh5IERyaXZlciBSZWdpc3RyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgUEhZIGRyaXZlciBpcyBiZWluZyBpbnRlZ3JhdGVkIGludG8gdGhlIHN5c3RlbSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgY29udGV4dCBvZiBgYWlyX2VuODgxMWguY2AuIFRoZSBtb3N0IGRpcmVjdCByb3V0ZSB0byB0aGF0IGlzIHRvIGp1bXAgc3RyYWlnaHQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZS4gVGhhdCYjMzk7cyB3aGVyZSBJIHNob3VsZCBmaW5kIHRoZSByZWdpc3RyYXRpb24gcHJvY2VzcyBmb3IgdGhlIFBIWSBkcml2ZXIuIEkmIzM5O20gYXNzdW1pbmcsIG9mIGNvdXJzZSwgdGhhdCB0aGUgY29kZSBmb2xsb3dzIHN0YW5kYXJkIGNvbnZlbnRpb25zIGFuZCB0aGF0JiMzOTtzIHRoZSB0eXBpY2FsIGxvY2F0aW9uIGZvciB0aGlzIGtpbmQgb2YgdGhpbmcuIExldCYjMzk7cyBzZWUgaWYgdGhhdCBhc3N1bXB0aW9uIGhvbGRzIHRydWUuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgYSBjYWxsLCBsaWtlbHkgaW52b2x2aW5nIGBtb2R1bGVfaW5pdGAgb3IgYSBzaW1pbGFyIG1hY3JvLCB0aGF0IHNldHMgZXZlcnl0aGluZyB1cC4gUmlnaHQsIGxldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQ1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNDUwOlx0XHRpZiAocHJpdi1cdTAwM2VmaXJtd2FyZV92ZXJzaW9uIFx1MDAzYyAweDI0MDExMjAyKSB7XG4xNDUxOlx0XHRcdGxpbmttb2RlX21vZF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMjUwMGJhc2VUX0Z1bGxfQklULFxuMTQ1MjpcdFx0XHRcdFx0IHBoeWRldi1cdTAwM2VscF9hZHZlcnRpc2luZyxcbjE0NTM6XHRcdFx0XHRcdCBwaHlkZXYtXHUwMDNlc3BlZWQgPT0gU1BFRURfMjUwMCk7XG4xNDU0Olx0XHR9XG4xNDU1Olx0XG4xNDU2Olx0XHQvKiBPbmx5IHN1cHBvcnRzIGZ1bGwgZHVwbGV4ICovXG4xNDU3Olx0XHRwaHlkZXYtXHUwMDNlZHVwbGV4ID0gRFVQTEVYX0ZVTEw7XG4xNDU4Olx0XG4xNDU5Olx0XHRyZXR1cm4gMDtcbjE0NjA6XHR9XG4xNDYxOlx0XG4xNDYyOlx0c3RhdGljIGludCBlbjg4MTFoX2NsZWFyX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbjE0NjM6XHR7XG4xNDY0Olx0XHRpbnQgcmV0O1xuMTQ2NTpcdFxuMTQ2NjpcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfMyxcbjE0Njc6XHRcdFx0XHQgICAgQUlSX1BIWV9NQ1VfQ01EXzNfRE9DTUQpO1xuMTQ2ODpcdFx0aWYgKHJldCBcdTAwM2MgMClcbjE0Njk6XHRcdFx0cmV0dXJuIHJldDtcbjE0NzA6XHRcbjE0NzE6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQUlSX1BIWV9NQ1VfQ01EXzQsXG4xNDcyOlx0XHRcdFx0ICAgIEFJUl9QSFlfTUNVX0NNRF80X0lOVENMUik7XG4xNDczOlx0XHRpZiAocmV0IFx1MDAzYyAwKVxuMTQ3NDpcdFx0XHRyZXR1cm4gcmV0O1xuMTQ3NTpcdFxuMTQ3NjpcdFx0cmV0dXJuIDA7XG4xNDc3Olx0fVxuMTQ3ODpcdFxuMTQ3OTpcdHN0YXRpYyBpcnFyZXR1cm5fdCBlbjg4MTFoX2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbjE0ODA6XHR7XG4xNDgxOlx0XHRpbnQgcmV0O1xuMTQ4MjpcdFxuMTQ4MzpcdFx0cmV0ID0gZW44ODExaF9jbGVhcl9pbnRyKHBoeWRldik7XG4xNDg0Olx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4xNDg1Olx0XHRcdHBoeV9lcnJvcihwaHlkZXYpO1xuMTQ4NjpcdFx0XHRyZXR1cm4gSVJRX05PTkU7XG4xNDg3Olx0XHR9XG4xNDg4Olx0XG4xNDg5Olx0XHRwaHlfdHJpZ2dlcl9tYWNoaW5lKHBoeWRldik7XG4xNDkwOlx0XG4xNDkxOlx0XHRyZXR1cm4gSVJRX0hBTkRMRUQ7XG4xNDkyOlx0fVxuMTQ5MzpcdFxuMTQ5NDpcdHN0YXRpYyBpbnQgZW44ODExaF9yZXN1bWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbjE0OTU6XHR7XG4xNDk2Olx0XHRjbGtfcmVzdG9yZV9jb250ZXh0KCk7XG4xNDk3Olx0XG4xNDk4Olx0XHRyZXR1cm4gZ2VucGh5X3Jlc3VtZShwaHlkZXYpO1xuMTQ5OTpcdH1cbjE1MDA6XHRcbjE1MDE6XHRzdGF0aWMgaW50IGVuODgxMWhfc3VzcGVuZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuMTUwMjpcdHtcbjE1MDM6XHRcdGNsa19zYXZlX2NvbnRleHQoKTtcbjE1MDQ6XHRcbjE1MDU6XHRcdHJldHVybiBnZW5waHlfc3VzcGVuZChwaHlkZXYpO1xuMTUwNjpcdH1cbjE1MDc6XHRcbjE1MDg6XHRzdGF0aWMgdm9pZCBhbjg4MTFoYl9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbjE1MDk6XHR7XG4xNTEwOlx0XHRzdHJ1Y3QgZW44ODExaF9wcml2ICpwcml2ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG4xNTExOlx0XG4xNTEyOlx0XHRpZiAocHJpdi1cdTAwM2VwYnVzZGV2KSB7XG4xNTEzOlx0XHRcdG1kaW9fZGV2aWNlX3JlbW92ZShwcml2LVx1MDAzZXBidXNkZXYpO1xuMTUxNDpcdFx0XHRtZGlvX2RldmljZV9mcmVlKHByaXYtXHUwMDNlcGJ1c2Rldik7XG4xNTE1Olx0XHR9XG4xNTE2Olx0fVxuMTUxNzpcdFxuMTUxODpcdHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBlbjg4MTFoX2RyaXZlcltdID0ge1xuMTUxOTpcdHtcbjE1MjA6XHRcdFBIWV9JRF9NQVRDSF9NT0RFTChFTjg4MTFIX1BIWV9JRCksXG4xNTIxOlx0XHQubmFtZVx0XHRcdD0gXCYjMzQ7QWlyb2hhIEVOODgxMUhcJiMzNDssXG4xNTIyOlx0XHQucHJvYmVcdFx0XHQ9IGVuODgxMWhfcHJvYmUsXG4xNTIzOlx0XHQuZ2V0X2ZlYXR1cmVzXHRcdD0gZW44ODExaF9nZXRfZmVhdHVyZXMsXG4xNTI0Olx0XHQuY29uZmlnX2luaXRcdFx0PSBlbjg4MTFoX2NvbmZpZ19pbml0LFxuMTUyNTpcdFx0LmdldF9yYXRlX21hdGNoaW5nXHQ9IGVuODgxMWhfZ2V0X3JhdGVfbWF0Y2hpbmcsXG4xNTI2Olx0XHQuY29uZmlnX2FuZWdcdFx0PSBlbjg4MTFoX2NvbmZpZ19hbmVnLFxuMTUyNzpcdFx0LnJlYWRfc3RhdHVzXHRcdD0gZW44ODExaF9yZWFkX3N0YXR1cyxcbjE1Mjg6XHRcdC5yZXN1bWVcdFx0XHQ9IGVuODgxMWhfcmVzdW1lLFxuMTUyOTpcdFx0LnN1c3BlbmRcdFx0PSBlbjg4MTFoX3N1c3BlbmQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNzE0CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMzE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgYGFpcl9lbjg4MTFoLmNgIFBIWSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBhaXJfZW44ODExaC5jYCwgYSBQSFkgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgQWlyb2hhIEVOODgxMUggYW5kIEFOODgxMUhCIEV0aGVybmV0IFBIWXMuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiwgYW5kIHRoZSBjcml0aWNhbCBvbmUgZm9yIGZ1enppbmcgYXBwbGljYWJpbGl0eSwgaXMgd2hldGhlciB0aGlzIHR5cGUgb2YgRXRoZXJuZXQgUEhZIGlzIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIGJlZm9yZSBJIHdhc3RlIGFueSB0aW1lLgoKSSByZW1lbWJlciB0aGUgZnV6emluZyBndWlkZWxpbmVzIHZlcnkgY2xlYXJseTogJiMzNDtSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURS4mIzM0OyBJIGNhbiBvbmx5IGZ1enogY29kZSB0aGF0ICphY3R1YWxseSogZXhlY3V0ZXMgaW4gdGhlc2UgZW11bGF0ZWQgc2V0dXBzLiBJZiBpdCYjMzk7cyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUsIHRoZSBmdXp6aW5nIGlzIGEgbm8tZ28sIG5vIG1hdHRlciBob3cgY2xldmVyIHRoZSBjb2RlIG9yIGNvbXBsZXggdGhlIGxvZ2ljIG1pZ2h0IGJlLgoKVGhlIGd1aWRlbGluZXMgYXJlIGV4cGxpY2l0IGFib3V0ICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCYjMzQ7IG1lbnRpb25pbmcgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMgKGxpa2UgbWx4c3csIHFlZCwgYW5kIGFtZGdwdSkgdGhhdCAqcmVxdWlyZSogcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzLCBub3QgZW11bGF0ZWQgb25lcy4gU28sIEkgbmVlZCB0byBjaGVjayBpZiB0aGVzZSBQSFkgZGV2aWNlcyAoc3BlY2lmaWNhbGx5IE1ESU8gcGh5IGRyaXZlcnMgbGlrZSBgYWlyX2VuODgxMWhgKSBuZWVkIHBoeXNpY2FsIGhhcmR3YXJlIG9yIHRoZSBNRElPIGJ1cyB0byB3b3JrLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgY2FuIGJlIGluc3RhbnRpYXRlZCB3aXRob3V0IGl0LCBvciBpZiB0aGV5IHJlcXVpcmUgdGhlIHBoeXNpY2FsIE1ESU8gYnVzIGFuZCBQSFkgaGFyZHdhcmUuCgpXYWl0IGEgc2Vjb25k4oCmY2FuIEkgZW11bGF0ZSBvciBpbnN0YW50aWF0ZSBNRElPIFBIWSBkZXZpY2VzIHdpdGhpbiBRRU1VPyBJIG5lZWQgdG8ga25vdyBpZiB0aGVyZSYjMzk7cyBhbnkgc3VwcG9ydCBmb3IgYSB2aXJ0dWFsIG9yIG1vY2sgTURJTyBidXMgaW4gdGhlIExpbnV4IGtlcm5lbCBvciBpZiBzeXprYWxsZXIgaGFzIGFueSB3b3JrYXJvdW5kcyBmb3IgaXQuIFRpbWUgdG8gc2VhcmNoIHRoZSB0cmVlIGZvciAmIzM0O21kaW8gbW9jayYjMzQ7IG9yICYjMzQ7dmlydHVhbCBtZGlvJiMzNDsgYnVzZXMuIFRoYXQmIzM5O3MgdGhlIGtleSB0byBtYWtpbmcgdGhpcyBmdXp6YWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpb19ncGlvfG1kaW8tZ3Bpb3xtZGlvLW5ldGxpbmt8ZHVtbXkuKm1kaW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jPTM4MT1pbnQgc3RtbWFjX21kaW9fcmVzZXQoc3RydWN0IG1paV9idXMgKmJ1cylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTQxNi1cdCAqIEl0IGRvZXNuJiMzOTt0IGNvbXBsZXRlIGl0cyByZXNldCB1bnRpbCBhdCBsZWFzdCBvbmUgY2xvY2sgY3ljbGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM6NDE3Olx0ICogb24gTURDLCBzbyBwZXJmb3JtIGEgZHVtbXkgbWRpbyByZWFkLiBUbyBiZSB1cGRhdGVkIGZvciBHTUFDNFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy00MTgtXHQgKiBpZiBuZWVkZWQuXG4tLVxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnPTkwPWNvbmZpZyBNRElPX0dQSU9cbi0tXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctOTctXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZzo5ODpcdCAgd2lsbCBiZSBjYWxsZWQgbWRpby1ncGlvLlxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTk5LVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGU9MTM9b2JqLSQoQ09ORklHX01ESU9fQ0FWSVVNKVx0XHQmIzQzOz0gbWRpby1jYXZpdW0ub1xuZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfTURJT19HUElPKVx0XHRcdCYjNDM7PSBtZGlvLWdwaW8ub1xuZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZS0xNS1vYmotJChDT05GSUdfTURJT19ISVNJX0ZFTUFDKVx0XHQmIzQzOz0gbWRpby1oaXNpLWZlbWFjLm9cbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTMxLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzozMjpzdHJ1Y3QgbWRpb19ncGlvX2luZm8ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0zMy1cdHN0cnVjdCBtZGlvYmJfY3RybCBjdHJsO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMzYtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjM3OnN0YXRpYyBpbnQgbWRpb19ncGlvX2dldF9kYXRhKHN0cnVjdCBkZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6Mzg6XHRcdFx0ICAgICAgc3RydWN0IG1kaW9fZ3Bpb19pbmZvICpiaXRiYW5nKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0zOS17XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYz01NT1zdGF0aWMgdm9pZCBtZGlvX2RpcihzdHJ1Y3QgbWRpb2JiX2N0cmwgKmN0cmwsIGludCBkaXIpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTU2LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6NTc6XHRzdHJ1Y3QgbWRpb19ncGlvX2luZm8gKmJpdGJhbmcgPVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzo1ODpcdFx0Y29udGFpbmVyX29mKGN0cmwsIHN0cnVjdCBtZGlvX2dwaW9faW5mbywgY3RybCk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTU5LVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM9NzY9c3RhdGljIGludCBtZGlvX2dldChzdHJ1Y3QgbWRpb2JiX2N0cmwgKmN0cmwpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTc3LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6Nzg6XHRzdHJ1Y3QgbWRpb19ncGlvX2luZm8gKmJpdGJhbmcgPVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzo3OTpcdFx0Y29udGFpbmVyX29mKGN0cmwsIHN0cnVjdCBtZGlvX2dwaW9faW5mbywgY3RybCk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTgwLVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM9ODQ9c3RhdGljIHZvaWQgbWRpb19zZXQoc3RydWN0IG1kaW9iYl9jdHJsICpjdHJsLCBpbnQgd2hhdClcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtODUte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzo4NjpcdHN0cnVjdCBtZGlvX2dwaW9faW5mbyAqYml0YmFuZyA9XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjg3Olx0XHRjb250YWluZXJfb2YoY3RybCwgc3RydWN0IG1kaW9fZ3Bpb19pbmZvLCBjdHJsKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtODgtXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYz05NT1zdGF0aWMgdm9pZCBtZGNfc2V0KHN0cnVjdCBtZGlvYmJfY3RybCAqY3RybCwgaW50IHdoYXQpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTk2LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6OTc6XHRzdHJ1Y3QgbWRpb19ncGlvX2luZm8gKmJpdGJhbmcgPVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzo5ODpcdFx0Y29udGFpbmVyX29mKGN0cmwsIHN0cnVjdCBtZGlvX2dwaW9faW5mbywgY3RybCk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTk5LVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTAyLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxMDM6c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvYmJfb3BzIG1kaW9fZ3Bpb19vcHMgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTEwNC1cdC5vd25lciA9IFRISVNfTU9EVUxFLFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTEwLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxMTE6c3RhdGljIHN0cnVjdCBtaWlfYnVzICptZGlvX2dwaW9fYnVzX2luaXQoc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxMTI6XHRcdFx0XHRcdCAgc3RydWN0IG1kaW9fZ3Bpb19pbmZvICpiaXRiYW5nLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xMTMtXHRcdFx0XHRcdCAgaW50IGJ1c19pZClcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTExNi1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTE3Olx0Yml0YmFuZy1cdTAwM2VjdHJsLm9wcyA9IFx1MDAyNm1kaW9fZ3Bpb19vcHM7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTExOC1cbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE0MS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTQyOnN0YXRpYyB2b2lkIG1kaW9fZ3Bpb19idXNfZGVpbml0KHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTQzLXtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE0OC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTQ5OnN0YXRpYyB2b2lkIG1kaW9fZ3Bpb19idXNfZGVzdHJveShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE1MC17XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xNTMtXHRtZGlvYnVzX3VucmVnaXN0ZXIoYnVzKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTU0Olx0bWRpb19ncGlvX2J1c19kZWluaXQoZGV2KTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTU1LX1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTU2LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxNTc6c3RhdGljIGludCBtZGlvX2dwaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTU4LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTU5Olx0c3RydWN0IG1kaW9fZ3Bpb19pbmZvICpiaXRiYW5nO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xNjAtXHRzdHJ1Y3QgbWlpX2J1cyAqbmV3X2J1cztcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE2Ni1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTY3Olx0cmV0ID0gbWRpb19ncGlvX2dldF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBiaXRiYW5nKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTY4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE3MS1cdGlmIChwZGV2LVx1MDAzZWRldi5vZl9ub2RlKSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE3MjpcdFx0YnVzX2lkID0gb2ZfYWxpYXNfZ2V0X2lkKHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUsIFwmIzM0O21kaW8tZ3Bpb1wmIzM0Oyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE3My1cdFx0aWYgKGJ1c19pZCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTgwLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxODE6XHRuZXdfYnVzID0gbWRpb19ncGlvX2J1c19pbml0KFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBiaXRiYW5nLCBidXNfaWQpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xODItXHRpZiAoIW5ld19idXMpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xODYtXHRpZiAocmV0KVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxODc6XHRcdG1kaW9fZ3Bpb19idXNfZGVpbml0KFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTg4LVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTkxLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxOTI6c3RhdGljIHZvaWQgbWRpb19ncGlvX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xOTMte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxOTQ6XHRtZGlvX2dwaW9fYnVzX2Rlc3Ryb3koXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xOTUtfVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xOTYtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE5NzpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtZGlvX2dwaW9fb2ZfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTk4Olx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7LCB9LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xOTktXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLG1kaW8tc21pMFwmIzM0OyB9LFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMjAxLX07XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjIwMjpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtZGlvX2dwaW9fb2ZfbWF0Y2gpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0yMDMtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjIwNDpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtZGlvX2dwaW9fZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoyMDU6XHQucHJvYmUgPSBtZGlvX2dwaW9fcHJvYmUsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjIwNjpcdC5yZW1vdmUgPSBtZGlvX2dwaW9fcmVtb3ZlLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0yMDctXHQuZHJpdmVyXHRcdD0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoyMDg6XHRcdC5uYW1lXHQ9IFwmIzM0O21kaW8tZ3Bpb1wmIzM0OyxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MjA5Olx0XHQub2ZfbWF0Y2hfdGFibGUgPSBtZGlvX2dwaW9fb2ZfbWF0Y2gsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTIxMC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0yMTItXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjIxMzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1kaW9fZ3Bpb19kcml2ZXIpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0yMTQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjIxNTpNT0RVTEVfQUxJQVMoXCYjMzQ7cGxhdGZvcm06bWRpby1ncGlvXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMjE2LU1PRFVMRV9BVVRIT1IoXCYjMzQ7TGF1cmVudCBQaW5jaGFydCwgUGF1bGl1cyBaYWxlY2thc1wmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MjUxCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgYWlyX2VuODgxMWhgIFBIWSBEcml2ZXIgUHJvYmUgU2VxdWVuY2UqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBhaXJfZW44ODExaGAgUEhZIGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgaXQmIzM5O3MgbWF0Y2hlZCBhbmQgdWx0aW1hdGVseSBwcm9iZWQgd2l0aGluIHRoZSBzeXN0ZW0uIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgY29yZSBvZiB0aGUgbWF0dGVyOiBgYWlyX2VuODgxMWguY2AgYW5kIGl0cyByZWdpc3RyYXRpb24gbWVjaGFuaXNtLiBJJiMzOTtsbCBiZSB0YXJnZXRpbmcgdGhlIGBtb2R1bGVfcGh5X2RyaXZlcmAgbWFjcm8gb3IgYSBkaXJlY3QgY2FsbCB0byBgcGh5X2RyaXZlcl9yZWdpc3RlcmAgd2l0aGluIHRoYXQgc291cmNlIGZpbGUuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIHdoZXJlIHRoZSBkcml2ZXIgYW5ub3VuY2VzIGl0cyBwcmVzZW5jZSBhbmQgY2FwYWJpbGl0aWVzIHRvIHRoZSBicm9hZGVyIFBIWSBmcmFtZXdvcmsuIFVuZGVyc3RhbmRpbmcgdGhlIHJlZ2lzdHJhdGlvbiBwb2ludCB3aWxsIHByb3ZpZGUgdGhlIGNyaXRpY2FsIGxpbmthZ2UgYmV0d2VlbiB0aGUgZHJpdmVyJiMzOTtzIGRlZmluaXRpb24gYW5kIHRoZSBzeXN0ZW0mIzM5O3MgYWJpbGl0eSB0byBsb2NhdGUgYW5kIHV0aWxpemUgaXQuIEZyb20gdGhlcmUsIEkgY2FuIHRyYWNlIHRoZSBtYXRjaGluZyBwcm9jZXNzIGFuZCB0aGUgZXZlbnR1YWwgcHJvYmUgZnVuY3Rpb24gZXhlY3V0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTUyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNTIwOlx0XHRQSFlfSURfTUFUQ0hfTU9ERUwoRU44ODExSF9QSFlfSUQpLFxuMTUyMTpcdFx0Lm5hbWVcdFx0XHQ9IFwmIzM0O0Fpcm9oYSBFTjg4MTFIXCYjMzQ7LFxuMTUyMjpcdFx0LnByb2JlXHRcdFx0PSBlbjg4MTFoX3Byb2JlLFxuMTUyMzpcdFx0LmdldF9mZWF0dXJlc1x0XHQ9IGVuODgxMWhfZ2V0X2ZlYXR1cmVzLFxuMTUyNDpcdFx0LmNvbmZpZ19pbml0XHRcdD0gZW44ODExaF9jb25maWdfaW5pdCxcbjE1MjU6XHRcdC5nZXRfcmF0ZV9tYXRjaGluZ1x0PSBlbjg4MTFoX2dldF9yYXRlX21hdGNoaW5nLFxuMTUyNjpcdFx0LmNvbmZpZ19hbmVnXHRcdD0gZW44ODExaF9jb25maWdfYW5lZyxcbjE1Mjc6XHRcdC5yZWFkX3N0YXR1c1x0XHQ9IGVuODgxMWhfcmVhZF9zdGF0dXMsXG4xNTI4Olx0XHQucmVzdW1lXHRcdFx0PSBlbjg4MTFoX3Jlc3VtZSxcbjE1Mjk6XHRcdC5zdXNwZW5kXHRcdD0gZW44ODExaF9zdXNwZW5kLFxuMTUzMDpcdFx0LmNvbmZpZ19pbnRyXHRcdD0gZW44ODExaF9jbGVhcl9pbnRyLFxuMTUzMTpcdFx0LmhhbmRsZV9pbnRlcnJ1cHRcdD0gZW44ODExaF9oYW5kbGVfaW50ZXJydXB0LFxuMTUzMjpcdFx0LmxlZF9od19pc19zdXBwb3J0ZWRcdD0gZW44ODExaF9sZWRfaHdfaXNfc3VwcG9ydGVkLFxuMTUzMzpcdFx0LnJlYWRfcGFnZVx0XHQ9IGFpcl9waHlfcmVhZF9wYWdlLFxuMTUzNDpcdFx0LndyaXRlX3BhZ2VcdFx0PSBhaXJfcGh5X3dyaXRlX3BhZ2UsXG4xNTM1Olx0XHQubGVkX2JsaW5rX3NldFx0XHQ9IGFpcl9sZWRfYmxpbmtfc2V0LFxuMTUzNjpcdFx0LmxlZF9icmlnaHRuZXNzX3NldFx0PSBhaXJfbGVkX2JyaWdodG5lc3Nfc2V0LFxuMTUzNzpcdFx0LmxlZF9od19jb250cm9sX3NldFx0PSBhaXJfbGVkX2h3X2NvbnRyb2xfc2V0LFxuMTUzODpcdFx0LmxlZF9od19jb250cm9sX2dldFx0PSBhaXJfbGVkX2h3X2NvbnRyb2xfZ2V0LFxuMTUzOTpcdH0sXG4xNTQwOlx0e1xuMTU0MTpcdFx0UEhZX0lEX01BVENIX01PREVMKEFOODgxMUhCX1BIWV9JRCksXG4xNTQyOlx0XHQubmFtZVx0XHRcdD0gXCYjMzQ7QWlyb2hhIEFOODgxMUhCXCYjMzQ7LFxuMTU0MzpcdFx0LnByb2JlXHRcdFx0PSBhbjg4MTFoYl9wcm9iZSxcbjE1NDQ6XHRcdC5yZW1vdmVcdFx0XHQ9IGFuODgxMWhiX3JlbW92ZSxcbjE1NDU6XHRcdC5nZXRfZmVhdHVyZXNcdFx0PSBlbjg4MTFoX2dldF9mZWF0dXJlcyxcbjE1NDY6XHRcdC5jb25maWdfaW5pdFx0XHQ9IGFuODgxMWhiX2NvbmZpZ19pbml0LFxuMTU0NzpcdFx0LmdldF9yYXRlX21hdGNoaW5nXHQ9IGVuODgxMWhfZ2V0X3JhdGVfbWF0Y2hpbmcsXG4xNTQ4Olx0XHQuY29uZmlnX2FuZWdcdFx0PSBlbjg4MTFoX2NvbmZpZ19hbmVnLFxuMTU0OTpcdFx0LnJlYWRfc3RhdHVzXHRcdD0gZW44ODExaF9yZWFkX3N0YXR1cyxcbjE1NTA6XHRcdC5yZXN1bWVcdFx0XHQ9IGVuODgxMWhfcmVzdW1lLFxuMTU1MTpcdFx0LnN1c3BlbmRcdFx0PSBlbjg4MTFoX3N1c3BlbmQsXG4xNTUyOlx0XHQuY29uZmlnX2ludHJcdFx0PSBlbjg4MTFoX2NsZWFyX2ludHIsXG4xNTUzOlx0XHQuaGFuZGxlX2ludGVycnVwdFx0PSBlbjg4MTFoX2hhbmRsZV9pbnRlcnJ1cHQsXG4xNTU0Olx0XHQubGVkX2h3X2lzX3N1cHBvcnRlZFx0PSBlbjg4MTFoX2xlZF9od19pc19zdXBwb3J0ZWQsXG4xNTU1Olx0XHQucmVhZF9wYWdlXHRcdD0gYWlyX3BoeV9yZWFkX3BhZ2UsXG4xNTU2Olx0XHQud3JpdGVfcGFnZVx0XHQ9IGFpcl9waHlfd3JpdGVfcGFnZSxcbjE1NTc6XHRcdC5sZWRfYmxpbmtfc2V0XHRcdD0gYWlyX2xlZF9ibGlua19zZXQsXG4xNTU4Olx0XHQubGVkX2JyaWdodG5lc3Nfc2V0XHQ9IGFpcl9sZWRfYnJpZ2h0bmVzc19zZXQsXG4xNTU5Olx0XHQubGVkX2h3X2NvbnRyb2xfc2V0XHQ9IGFpcl9sZWRfaHdfY29udHJvbF9zZXQsXG4xNTYwOlx0XHQubGVkX2h3X2NvbnRyb2xfZ2V0XHQ9IGFpcl9sZWRfaHdfY29udHJvbF9nZXQsXG4xNTYxOlx0fSB9O1xuMTU2MjpcdFxuMTU2MzpcdG1vZHVsZV9waHlfZHJpdmVyKGVuODgxMWhfZHJpdmVyKTtcbjE1NjQ6XHRcbjE1NjU6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGVuODgxMWhfdGJsW10gPSB7XG4xNTY2Olx0XHR7IFBIWV9JRF9NQVRDSF9NT0RFTChFTjg4MTFIX1BIWV9JRCkgfSxcbjE1Njc6XHRcdHsgUEhZX0lEX01BVENIX01PREVMKEFOODgxMUhCX1BIWV9JRCkgfSxcbjE1Njg6XHRcdHsgfVxuMTU2OTpcdH07XG4xNTcwOlx0XG4xNTcxOlx0TU9EVUxFX0RFVklDRV9UQUJMRShtZGlvLCBlbjg4MTFoX3RibCk7XG4xNTcyOlx0TU9EVUxFX0ZJUk1XQVJFKEVOODgxMUhfTUQzMl9ETSk7XG4xNTczOlx0TU9EVUxFX0ZJUk1XQVJFKEVOODgxMUhfTUQzMl9EU1ApO1xuMTU3NDpcdE1PRFVMRV9GSVJNV0FSRShBTjg4MTFIQl9NRDMyX0RNKTtcbjE1NzU6XHRNT0RVTEVfRklSTVdBUkUoQU44ODExSEJfTUQzMl9EU1ApO1xuMTU3NjpcdFxuMTU3NzpcdE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtBaXJvaGEgRU44ODExSCBhbmQgQU44ODExSEIgUEhZIGRyaXZlcnNcJiMzNDspO1xuMTU3ODpcdE1PRFVMRV9BVVRIT1IoXCYjMzQ7QWlyb2hhXCYjMzQ7KTtcbjE1Nzk6XHRNT0RVTEVfQVVUSE9SKFwmIzM0O0VyaWMgV291ZHN0cmEgXHUwMDNjZXJpY3dvdWRzQGdtYWlsLmNvbVx1MDAzZVwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2ODY0CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZToKCioqSW52ZXN0aWdhdGluZyBgYWlyX3dyaXRlX2J1ZmAgRHVyaW5nIEZpcm13YXJlIExvYWRpbmcqKgoKT2theSwgc28gYGFpcl93cml0ZV9idWZgIHBvcHMgdXAgZHVyaW5nIHRoZSBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFuZCB3YXJyYW50cyBhIGRlZXBlciBkaXZlLiBUaGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIG1hcCB0aGUgY2FsbCBncmFwaC4gTGV0JiMzOTtzIHNlZSB3aG8mIzM5O3MgYWN0dWFsbHkgKmNhbGxpbmcqIHRoaXMgZnVuY3Rpb24uIEtub3dpbmcgdGhlIGNvbnRleHQgb2YgdGhvc2UgY2FsbHMgd2lsbCBiZSBjcml0aWNhbCB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgaW1wbGljYXRpb25zLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoIGFuZCBpZGVudGlmeSB0aGUgcG9pbnRzIHdoZXJlIGRhdGEgaXMgYmVpbmcgd3JpdHRlbiwgYW5kIHdoeS4gVGhpcyBjb3VsZCBiZSB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkIGluIHRlcm1zIG9mIGZsYXNoaW5nIG9yIGluaXRpYWxpemF0aW9uLCBvciBtYXliZSBpdCYjMzk7cyBqdXN0IGEgZGlhZ25vc3RpYyBvciBsb2dnaW5nIGZ1bmN0aW9uLiBUaW1lIHRvIGJ1c3Qgb3V0IHRoZSBkZWJ1Z2dlciBhbmQgc3RhcnQgZGlnZ2luZyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWlyX3dyaXRlX2J1ZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTI0OD1zdGF0aWMgaW50IF9fYWlyX3BidXNfcmVnX3dyaXRlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldixcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yNzItXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyNzM6c3RhdGljIGludCBfX2Fpcl93cml0ZV9idWYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIGFkZHJlc3MsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yNzQtXHRcdFx0ICAgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0zMDgtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzozMDk6c3RhdGljIGludCBhaXJfd3JpdGVfYnVmKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUzMiBhZGRyZXNzLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzEwLVx0XHRcdCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTMyMy1cdGlmIChzYXZlZF9wYWdlIFx1MDAzZT0gMCkge1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MzI0Olx0XHRyZXQgPSBfX2Fpcl93cml0ZV9idWYocGh5ZGV2LCBhZGRyZXNzLCBmdyk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0zMjUtXHRcdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9NDAzPXN0YXRpYyBpbnQgYW44ODExaGJfbG9hZF9maWxlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGNvbnN0IGNoYXIgKm5hbWUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDEzLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDE0Olx0cmV0ID0gYWlyX3dyaXRlX2J1ZihwaHlkZXYsIGFkZHJlc3MsICBmdyk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy00MTUtXHRyZWxlYXNlX2Zpcm13YXJlKGZ3KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz01MDg9c3RhdGljIGludCBlbjg4MTFoX2xvYWRfZmlybXdhcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01MzItXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1MzM6XHRyZXQgPSBhaXJfd3JpdGVfYnVmKHBoeWRldiwgQUlSX0ZXX0FERFJfRE0sICBmdzEpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTM0LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01MzYtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1Mzc6XHRyZXQgPSBhaXJfd3JpdGVfYnVmKHBoeWRldiwgQUlSX0ZXX0FERFJfRFNQLCBmdzIpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTM4LVx0aWYgKHJldCBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc4MzMKCQkJCQkJCW91dHB1dDogNjEKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipUcmFjaW5nIEZ1bmN0aW9uIENhbGxzOiBgYW44ODExaGJfbG9hZF9maWxlYCBhbmQgYGVuODgxMWhfbG9hZF9maXJtd2FyZWAqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4ZWN1dGlvbiBmbG93IHN1cnJvdW5kaW5nIGBhbjg4MTFoYl9sb2FkX2ZpbGVgIGFuZCBgZW44ODExaF9sb2FkX2Zpcm13YXJlYC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGlkZW50aWZ5IGV2ZXJ5IGluc3RhbmNlIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgKmNhbGxlZCogd2l0aGluIHRoZSBjb2RlYmFzZS4gVGhlIGdvYWwgaGVyZSBpcyB0byBtYXAgb3V0IHRoZWlyIGRlcGVuZGVuY2llcyBhbmQgaG93IHRoZXkgZml0IGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLiBBcmUgdGhlc2UgY29yZSBsb2FkaW5nIGZ1bmN0aW9ucz8gQXJlIHRoZXkgcGFydCBvZiBhIGxhcmdlciBmaXJtd2FyZSB1cGRhdGUgcHJvY2Vzcywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEEgc2ltcGxlIGNhbGwgZ3JhcGggdHJhY2Ugc2hvdWxkIHByb3ZpZGUgdGhvc2UgYW5zd2Vycy4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgYmUgYWJsZSB0byBiZXR0ZXIgdW5kZXJzdGFuZCB0aGUgY29udGV4dHMgdGhlc2UgZnVuY3Rpb25zIG9wZXJhdGUgaW4gYW5kIHRoZWlyIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGluIGFuZCBmb2xsb3cgdGhlIGJyZWFkY3J1bWJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsoYW44ODExaGJfbG9hZF9maXJtd2FyZXxlbjg4MTFoX2xvYWRfZmlybXdhcmUpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9NDQzPXN0YXRpYyBpbnQgYW44ODExaGJfbWN1X2RlYXNzZXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDY3LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDY4OnN0YXRpYyBpbnQgYW44ODExaGJfbG9hZF9maXJtd2FyZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDY5LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01MDctXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1MDg6c3RhdGljIGludCBlbjg4MTFoX2xvYWRfZmlybXdhcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTUwOS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTE5LVx0aWYgKHJldCBcdTAwM2MgMClcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjUyMDpcdFx0Z290byBlbjg4MTFoX2xvYWRfZmlybXdhcmVfcmVsMTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTUyMS1cbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01MjQtXHRpZiAocmV0IFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTI1Olx0XHRnb3RvIGVuODgxMWhfbG9hZF9maXJtd2FyZV9vdXQ7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01MjYtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTMwLVx0aWYgKHJldCBcdTAwM2MgMClcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjUzMTpcdFx0Z290byBlbjg4MTFoX2xvYWRfZmlybXdhcmVfb3V0O1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTMyLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTUzNC1cdGlmIChyZXQgXHUwMDNjIDApXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1MzU6XHRcdGdvdG8gZW44ODExaF9sb2FkX2Zpcm13YXJlX291dDtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTUzNi1cbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01MzgtXHRpZiAocmV0IFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTM5Olx0XHRnb3RvIGVuODgxMWhfbG9hZF9maXJtd2FyZV9vdXQ7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01NDAtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTQzLVx0aWYgKHJldCBcdTAwM2MgMClcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjU0NDpcdFx0Z290byBlbjg4MTFoX2xvYWRfZmlybXdhcmVfb3V0O1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTQ1LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTU0Ny1cdGlmIChyZXQgXHUwMDNjIDApXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1NDg6XHRcdGdvdG8gZW44ODExaF9sb2FkX2Zpcm13YXJlX291dDtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTU0OS1cbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01NTEtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1NTI6ZW44ODExaF9sb2FkX2Zpcm13YXJlX291dDpcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTU1My1cdHJlbGVhc2VfZmlybXdhcmUoZncyKTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTU1NC1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjU1NTplbjg4MTFoX2xvYWRfZmlybXdhcmVfcmVsMTpcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTU1Ni1cdHJlbGVhc2VfZmlybXdhcmUoZncxKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0xMDgwPXN0YXRpYyBpbnQgYW44ODExaGJfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMTA5LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTExMDpcdHJldCA9IGFuODgxMWhiX2xvYWRfZmlybXdhcmUocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTExMTEtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MTE1MT1zdGF0aWMgaW50IGVuODgxMWhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMTYxLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTE2MjpcdHJldCA9IGVuODgxMWhfbG9hZF9maXJtd2FyZShwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTE2My1cdGlmIChyZXQgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NDQ4CgkJCQkJCQlvdXRwdXQ6IDE0NgoJCQkJCQkJdGhvdWdodHM6IDc4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiBNRElPIFBIWSBEcml2ZXIgUmVhY2hhYmlsaXR5IGZvciBGdXp6aW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSBgYWlyX2VuODgxMWguY2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBBSVJfRU44ODExSF9QSFlgIGNvbXBvbmVudCwgaXMgZXZlbiAqcmVhY2hhYmxlKiB3aXRoaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGlzOiBkb2VzIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLCB0aGUgZ28tdG8gcGxhdGZvcm1zIGZvciBmdXp6aW5nLCBhY3R1YWxseSAqZW11bGF0ZSogdGhlIEFpcm9oYSBFTjg4MTFIIC8gQU44ODExSEIgMi41IEdpZ2FiaXQgRXRoZXJuZXQgUEhZIGNoaXA/CgpJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBoYXJkd2FyZSByZXF1aXJlbWVudHMuIFRoaXMgc3BlY2lmaWMgUEhZIGNoaXAgcmVsaWVzIG9uIGFuIE1ESU8gYnVzIGZvciBjb21tdW5pY2F0aW9uLiBJIG5lZWQgdG8ga25vdyBpZiBhbnkgdmlydHVhbCBlbnZpcm9ubWVudCwgbGlrZSB0aG9zZSB1c2VkIHdpdGggc3l6a2FsbGVyLCBoYXMgYSB2aXJ0dWFsIE1ESU8gYnVzIG9yIGVtdWxhdGVzIGEgZGV2aWNlIHRoYXQgd291bGQgcHJvYmUgZm9yIHRoaXMgQWlyb2hhIFBIWSB3aXRoIGl0cyBzcGVjaWZpYyBJRCAoYDB4MDNhMmE0MTFgIG9yIGAweGMwZmYwNGEwYCkuCgpGcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhlIGFuc3dlciBpcyBuby4gU3RhbmRhcmQgUUVNVSBzZXR1cHMgdXNlIHZpcnR1YWwgbmV0d29yayBkZXZpY2VzIOKAkyBlMTAwMCwgdmlydGlvLW5ldCwgZXRjLiDigJMgYnV0IG5vbmUgb2YgdGhlc2UgZXZlbiByZW1vdGVseSByZXNlbWJsZSB0aGUgQWlyb2hhIEVOODgxMUguIFRoaXMgaXMgYSBwaHlzaWNhbCB0cmFuc2NlaXZlciwgYSBwaWVjZSBvZiBhY3R1YWwgaGFyZHdhcmUgdXN1YWxseSBmb3VuZCBvbiBwaHlzaWNhbCBib2FyZHMgYW5kIHJvdXRlcnMsIGxpa2UgdGhvc2UgdXNpbmcgTWVkaWFUZWsgRmlsb2dpYyBTb0NzLiBBaXJvaGEsIGFmdGVyIGFsbCwgaXMgYSBNZWRpYVRlayBzdWJzaWRpYXJ5IGFuZCB0aGVpciBjaGlwcyBhcmUgdXNlZCBpbiBwaHlzaWNhbCBoYXJkd2FyZS4KCk5vdywgbGV0JiMzOTtzIGNvbnN1bHQgdGhlIHRyaWFnZSBndWlkZWxpbmVzIG9uIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZS4gSXQmIzM5O3MgY2xlYXI6IGlmIHRoZSBjb2RlICpjYW4mIzM5O3QqIGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBpdCYjMzk7cyBhIG5vLWdvIGZvciBmdXp6aW5nLiBUaGUgZ3VpZGVsaW5lcyBleHBsaWNpdGx5IG1lbnRpb24gdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGxpa2UgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycy4gVGhpcyBgYWlyX2VuODgxMWguY2AgZHJpdmVyIGZvciBhIHBoeXNpY2FsIEV0aGVybmV0IFBIWSBmaXRzIHRoYXQgZGVzY3JpcHRpb24gcGVyZmVjdGx5LgoKVGhlIGZhY3QgaXMsIHRoaXMgZHJpdmVyIG5lZWRzIGEgcGh5c2ljYWwgQWlyb2hhIFBIWSBvbiBhbiBNRElPIGJ1cyB3aXRoIGEgc3BlY2lmaWMgdmVuZG9yIElELiBUaGlzIGlzIG5vdCBzb21ldGhpbmcgdGhhdCBpcyBlbXVsYXRlZCBpbiBRRU1VLiBUaGF0IG1ha2VzIGl0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igb3VyIHB1cnBvc2VzLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhpczogSSBzZWUgdGhhdCB0aGUgcGF0Y2ggbW9kaWZpZXMgb25seSB0aGUgYGFpcl9lbjg4MTFoLmNgIGZpbGUgYW5kIG9ubHkgdGhlIGBhaXJfd3JpdGVfYnVmKClgIGZ1bmN0aW9uLCB3aGVyZSBhIGNoZWNrIGZvciBgZnctJmd0O3NpemUgJSA0YCBoYXMgYmVlbiBhZGRlZC4gTm8gb3RoZXIgZmlsZXMgYXJlIHRvdWNoZWQuIFRoZSBkcml2ZXIgaXMgZW5hYmxlZCB2aWEgYENPTkZJR19BSVJfRU44ODExSF9QSFlgLiBUaGUgaGFyZHdhcmUgZGVwZW5kZW5jeSBpcyB0aGUgQWlyb2hhIEVOODgxMUgvQU44ODExSEIgMi41RyBFdGhlcm5ldCBQSFkuIFRoZSBrZXkgcG9pbnQgaXMgdGhhdCBpdHMgcmVhY2hhYmlsaXR5IGlzIHByZWRpY2F0ZWQgb24gcGh5c2ljYWwgaGFyZHdhcmUgb24gYW4gTURJTyBidXMsIGFuZCB0aGVyZWZvcmUgaXQgaXMgbm90IHJlYWNoYWJsZSBpbiBRRU1VLgoKR2l2ZW4gYWxsIG9mIHRoaXMsIHRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIHNob3VsZCBhYnNvbHV0ZWx5IGJlIHNldCB0byBgZmFsc2VgLiBMZXQmIzM5O3MgcHJlcGFyZSB0aGUgcmVhc29uaW5nLCB0aGUgcmVxdWlyZWQgY29uZmlncywgYW5kIHJlbWVtYmVyIHRvIGxlYXZlIHRoZSBmb2N1cyBzeW1ib2xzIGVtcHR5LCBzaWduYWxpbmcgdGhhdCB0aGlzIGlzbiYjMzk7dCBhIGZ1enppbmcgdGFyZ2V0LgoKVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBSVJfRU44ODExSF9QSFkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGFpcl93cml0ZV9idWZgIGluIGBkcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguY2AsIHdoaWNoIGlzIGEgZHJpdmVyIGZvciB0aGUgQWlyb2hhIEVOODgxMUggYW5kIEFOODgxMUhCIDIuNUcgRXRoZXJuZXQgUEhZcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgQWlyb2hhIFBIWSBoYXJkd2FyZSBjb25uZWN0ZWQgdmlhIE1ESU8sIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FJUl9FTjg4MTFIX1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgYWlyX3dyaXRlX2J1ZmAgaW4gYGRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jYCwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIHRoZSBBaXJvaGEgRU44ODExSCBhbmQgQU44ODExSEIgMi41RyBFdGhlcm5ldCBQSFlzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBBaXJvaGEgUEhZIGhhcmR3YXJlIGNvbm5lY3RlZCB2aWEgTURJTywgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6NDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjQ2OjIzLjcyNTUwODAwM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5NTM0NDQzMDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFJUl9FTjg4MTFIX1BIWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGFpcl93cml0ZV9idWZgIGluIGBkcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguY2AsIHdoaWNoIGlzIGEgZHJpdmVyIGZvciB0aGUgQWlyb2hhIEVOODgxMUggYW5kIEFOODgxMUhCIDIuNUcgRXRoZXJuZXQgUEhZcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgQWlyb2hhIFBIWSBoYXJkd2FyZSBjb25uZWN0ZWQgdmlhIE1ESU8sIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjQ2OjIzLjcyNTUxNDI3M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIxMjEzNDEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzQxMWFjODRkN2NiOWQ0NjA5MjA3ZGZjYzA1OTI0ZDI3MmFmZGNjZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIFNlcCA0IDE4OjQ2OjIyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jIGIvZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmNcXG5pbmRleCAwZWViN2I5YTRlMjYwLi4zNGQyNzI3ZTgyMjJiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmNcXG5AQCAtMzEyLDYgKzMxMiwxMiBAQCBzdGF0aWMgaW50IGFpcl93cml0ZV9idWYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIGFkZHJlc3MsXFxuIFxcdGludCBzYXZlZF9wYWdlO1xcbiBcXHRpbnQgcmV0ID0gMDtcXG4gXFxuK1xcdGlmIChmdy1cXHUwMDNlc2l6ZSAlIDQpIHtcXG4rXFx0XFx0cGh5ZGV2X2VycihwaHlkZXYsIFxcXCJmaXJtd2FyZSBzaXplICV6dSBpcyBub3QgYSBtdWx0aXBsZSBvZiA0XFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgICBmdy1cXHUwMDNlc2l6ZSk7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbiBcXHRzYXZlZF9wYWdlID0gcGh5X3NlbGVjdF9wYWdlKHBoeWRldiwgQUlSX1BIWV9QQUdFX0VYVEVOREVEXzQpO1xcbiBcXG4gXFx0aWYgKHNhdmVkX3BhZ2UgXFx1MDAzZT0gMCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODo0NjoyNC4yNDc1MjU2NDVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjk5MDEyMzg2NzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFJUl9FTjg4MTFIX1BIWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgYWlyX3dyaXRlX2J1ZmAgaW4gYGRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jYCwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIHRoZSBBaXJvaGEgRU44ODExSCBhbmQgQU44ODExSEIgMi41RyBFdGhlcm5ldCBQSFlzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBBaXJvaGEgUEhZIGhhcmR3YXJlIGNvbm5lY3RlZCB2aWEgTURJTywgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjNDExYWM4NGQ3Y2I5ZDQ2MDkyMDdkZmNjMDU5MjRkMjcyYWZkY2NlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgNCAxODo0NjoyMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jIGIvZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmNcbmluZGV4IDBlZWI3YjlhNGUyNjAuLjM0ZDI3MjdlODIyMmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmNcbkBAIC0zMTIsNiArMzEyLDEyIEBAIHN0YXRpYyBpbnQgYWlyX3dyaXRlX2J1ZihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MzIgYWRkcmVzcyxcbiBcdGludCBzYXZlZF9wYWdlO1xuIFx0aW50IHJldCA9IDA7XG4gXG4rXHRpZiAoZnctXHUwMDNlc2l6ZSAlIDQpIHtcbitcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwiZmlybXdhcmUgc2l6ZSAlenUgaXMgbm90IGEgbXVsdGlwbGUgb2YgNFxcblwiLFxuK1x0XHRcdCAgIGZ3LVx1MDAzZXNpemUpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbiBcdHNhdmVkX3BhZ2UgPSBwaHlfc2VsZWN0X3BhZ2UocGh5ZGV2LCBBSVJfUEhZX1BBR0VfRVhURU5ERURfNCk7XG4gXG4gXHRpZiAoc2F2ZWRfcGFnZSBcdTAwM2U9IDApIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjQ2OjI0LjI0NzUyNzU0NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU4NTkwMjI3NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0d29yayBQSFkgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguY2AuIE15IGZpcnN0IHRob3VnaHQgaXMsIFwiV2hhdCdzIHRoaXMgZHJpdmVyIGFib3V0P1wiIEkgbmVlZCB0byBxdWlja2x5IHVuZGVyc3RhbmQgd2hhdCB0aGUgYGFpcl9lbjg4MTFoLmNgIGRyaXZlciBpcyByZXNwb25zaWJsZSBmb3IuIElzIGl0IGEgY29tbW9uIG9yIG5pY2hlIFBIWT8gSXMgaXQgZm9yIGEgc3BlY2lmaWMgdHlwZSBvZiBuZXR3b3JrIGludGVyZmFjZT9cblxuSSBuZWVkIHRvIHF1aWNrbHkgZmlndXJlIG91dCBpZiB0aGlzIGlzIHNvbWV0aGluZyBJIGNhbiBhY3R1YWxseSAqdGVzdCogZWZmZWN0aXZlbHkgd2l0aGluIG15IGV4aXN0aW5nIGZ1enppbmcgc2V0dXAuIElzIHRoaXMgYWNjZXNzaWJsZSB3aXRoaW4gUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmU/IERvZXMgaXQgcmVxdWlyZSBzb21lIHNwZWNpYWxpemVkIGhhcmR3YXJlIGxpa2UgYW4gTURJTyBidXMgb3IgYSBzcGVjaWZpYyBFdGhlcm5ldCBQSFkgdGhhdCBJJ2QgbmVlZCB0byBzaW11bGF0ZSBvciBhY3F1aXJlIHBoeXNpY2FsbHk/IFRoYXQncyBhIGNyaXRpY2FsIGZpcnN0IHN0ZXAuXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHdvcmsuIEknbGwgdXNlIGVpdGhlciBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgYW5kIGltcG9ydGFudGx5LCBpdHMgS2NvbmZpZyBlbnRyeS4gVGhlIEtjb25maWcgd2lsbCB0ZWxsIG1lIGhvdyB0aGlzIGRyaXZlciBpcyBjb25maWd1cmVkLCBpdHMgZGVwZW5kZW5jaWVzLCBhbmQgYW55IHJlbGV2YW50IG9wdGlvbnMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNsdWVzIEkgbmVlZCB0byBkZXRlcm1pbmUgaXRzIHJlYWNoYWJpbGl0eSBhbmQgcG90ZW50aWFsIGltcGFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkzMywiT3V0cHV0VG9rZW5zIjo2OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjQ2OjMwLjEwNjU1MzEzMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTk1NTY2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJBSVJfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDExMzQgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTgxPWNvbmZpZyBBUzIxWFhYX1BIWVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctOTItXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6OTM6Y29uZmlnIEFJUl9BTjg4MDFfUEhZXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctOTQtXFx0dHJpc3RhdGUgXFxcIkFpcm9oYSBBTjg4MDEgR2lnYWJpdCBQSFlcXFwiXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6OTU6XFx0c2VsZWN0IEFJUl9ORVRfUEhZTElCXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctOTYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctOTgtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6OTk6Y29uZmlnIEFJUl9FTjg4MTFIX1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTEwMC1cXHR0cmlzdGF0ZSBcXFwiQWlyb2hhIEVOODgxMUggMi41IEdpZ2FiaXQgUEhZXFxcIlxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjEwMTpcXHRzZWxlY3QgQUlSX05FVF9QSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xMDItXFx0c2VsZWN0IFBIWV9DT01NT05fUFJPUFNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTEwNS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxMDY6Y29uZmlnIEFJUl9ORVRfUEhZTElCXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTA3LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9MzI9b2JqLSQoQ09ORklHX0FESU4xMTQwX1BIWSlcXHQrPSBhZGluMTE0MC1waHkub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTozMzpvYmotJChDT05GSUdfQUlSX0FOODgwMV9QSFkpXFx0Kz0gYWlyX2FuODgwMS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19BSVJfRU44ODExSF9QSFkpICAgKz0gYWlyX2VuODgxMWgub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTozNTpvYmotJChDT05GSUdfQUlSX05FVF9QSFlMSUIpXFx0Kz0gYWlyX3BoeV9saWIub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0zNi1vYmotJChDT05GSUdfQU1EX1BIWSlcXHRcXHQrPSBhbWQub1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy02MS0jZGVmaW5lIEFESU4xMzAwX1BIWV9TVEFUVVMxXFx0XFx0XFx0MHgwMDFhXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo2MjojZGVmaW5lICAgQURJTjEzMDBfUEFJUl8wMV9TV0FQXFx0XFx0XFx0QklUKDExKVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNjMtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jPTc0Mz1zdGF0aWMgaW50IGFkaW5fbWRpeF91cGRhdGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNzczLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6Nzc0OlxcdHN3YXBwZWQgPSAhIShyZWcgXFx1MDAyNiBBRElOMTMwMF9QQUlSXzAxX1NXQVApO1xcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNzc1LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYz05Nzc9c3RhdGljIGludCBhZGluX2NhYmxlX3Rlc3RfcmVwb3J0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTk4MS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjk4MjpcXHRmb3IgKHBhaXIgPSBFVEhUT09MX0FfQ0FCTEVfUEFJUl9BOyBwYWlyIFxcdTAwM2M9IEVUSFRPT0xfQV9DQUJMRV9QQUlSX0Q7IHBhaXIrKykge1xcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtOTgzLVxcdFxcdHJldCA9IGFkaW5fY2FibGVfdGVzdF9yZXBvcnRfcGFpcihwaHlkZXYsIHBhaXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0xMjQtLyogTURJT19NTURfVkVORDEgUmVnaXN0ZXJzICovXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoxMjU6I2RlZmluZSBBTjg4MDFfUEhZX1RYX1BBSVJfRExZX1NFTF9HQkVcXHQweDEzXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoxMjY6I2RlZmluZSAgIEFOODgwMV9QSFlfUEFJUl9ETFlfU0VMX0FfR0JFXFx0R0VOTUFTSygxNCwgMTIpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoxMjc6I2RlZmluZSAgIEFOODgwMV9QSFlfUEFJUl9ETFlfU0VMX0JfR0JFXFx0R0VOTUFTSygxMCwgOClcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjEyODojZGVmaW5lICAgQU44ODAxX1BIWV9QQUlSX0RMWV9TRUxfQ19HQkVcXHRHRU5NQVNLKDYsIDQpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoxMjk6I2RlZmluZSAgIEFOODgwMV9QSFlfUEFJUl9ETFlfU0VMX0RfR0JFXFx0R0VOTUFTSygyLCAwKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMTMwLSNkZWZpbmUgQU44ODAxX1BIWV9SWEFEQ19DVFJMXFx0XFx0MHhkOFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYz05MDI9c3RhdGljIGludCBhbjg4MDFyX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTkyNC1cXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjkyNTpcXHRyZXQgPSBwaHlfd3JpdGVfcGFnZWQocGh5ZGV2LCBBSVJfUEhZX1BBR0VfRVhURU5ERURfMSxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTkyNi1cXHRcXHRcXHQgICAgICBBTjg4MDFfRVhUX1JFR19QSFksXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk1OC1cXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5NTk6XFx0XFx0XFx0ICAgIEFOODgwMV9QSFlfVFhfUEFJUl9ETFlfU0VMX0dCRSxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjk2MDpcXHRcXHRcXHQgICAgRklFTERfUFJFUChBTjg4MDFfUEhZX1BBSVJfRExZX1NFTF9BX0dCRSwgNCkgfFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTYxOlxcdFxcdFxcdCAgICBGSUVMRF9QUkVQKEFOODgwMV9QSFlfUEFJUl9ETFlfU0VMX0NfR0JFLCA0KSk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05NjItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTM0LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjM1OiNkZWZpbmUgQUlSX0ZXX0FERFJfRE1cXHQweDAwMDAwMDAwXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MzY6I2RlZmluZSBBSVJfRldfQUREUl9EU1BcXHQweDAwMTAwMDAwXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzctXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzgtLyogTUlJIFJlZ2lzdGVycyAqL1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjM5OiNkZWZpbmUgQUlSX0FVWF9DVFJMX1NUQVRVU1xcdFxcdDB4MWRcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo0MDojZGVmaW5lICAgQUlSX0FVWF9DVFJMX1NUQVRVU19TUEVFRF9NQVNLXFx0R0VOTUFTSyg0LCAyKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjQxOiNkZWZpbmUgICBBSVJfQVVYX0NUUkxfU1RBVFVTX1NQRUVEXzEwXFx0XFx0MHgwXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDI6I2RlZmluZSAgIEFJUl9BVVhfQ1RSTF9TVEFUVVNfU1BFRURfMTAwXFx0XFx0MHg0XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDM6I2RlZmluZSAgIEFJUl9BVVhfQ1RSTF9TVEFUVVNfU1BFRURfMTAwMFxcdDB4OFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjQ0OiNkZWZpbmUgICBBSVJfQVVYX0NUUkxfU1RBVFVTX1NQRUVEXzI1MDBcXHQweGNcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy00NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTQ5LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjUwOiNkZWZpbmUgQUlSX1BIWV9NQ1VfQ01EXzBcXHRcXHQweDgwMGJcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1MTojZGVmaW5lIEFJUl9QSFlfTUNVX0NNRF8xXFx0XFx0MHg4MDBjXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTI6I2RlZmluZSBBSVJfUEhZX01DVV9DTURfMV9NT0RFMVxcdFxcdFxcdDB4MFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjUzOiNkZWZpbmUgQUlSX1BIWV9NQ1VfQ01EXzJcXHRcXHQweDgwMGRcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1NDojZGVmaW5lIEFJUl9QSFlfTUNVX0NNRF8yX01PREUxXFx0XFx0XFx0MHgwXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTU6I2RlZmluZSBBSVJfUEhZX01DVV9DTURfM1xcdFxcdDB4ODAwZVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjU2OiNkZWZpbmUgQUlSX1BIWV9NQ1VfQ01EXzNfTU9ERTFcXHRcXHRcXHQweDExMDFcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1NzojZGVmaW5lIEFJUl9QSFlfTUNVX0NNRF8zX0RPQ01EXFx0XFx0XFx0MHgxMTAwXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTg6I2RlZmluZSBBSVJfUEhZX01DVV9DTURfNFxcdFxcdDB4ODAwZlxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjU5OiNkZWZpbmUgQUlSX1BIWV9NQ1VfQ01EXzRfTU9ERTFcXHRcXHRcXHQweDAwMDJcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo2MDojZGVmaW5lIEFJUl9QSFlfTUNVX0NNRF80X0NBQkxFX1BBSVJfQVxcdFxcdDB4MDBkN1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjYxOiNkZWZpbmUgQUlSX1BIWV9NQ1VfQ01EXzRfQ0FCTEVfUEFJUl9CXFx0XFx0MHgwMGQ4XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjI6I2RlZmluZSBBSVJfUEhZX01DVV9DTURfNF9DQUJMRV9QQUlSX0NcXHRcXHQweDAwZDlcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo2MzojZGVmaW5lIEFJUl9QSFlfTUNVX0NNRF80X0NBQkxFX1BBSVJfRFxcdFxcdDB4MDBkYVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjY0OiNkZWZpbmUgQUlSX1BIWV9NQ1VfQ01EXzRfSU5UQ0xSXFx0XFx0MHgwMGU0XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjUtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjYtLyogUmVnaXN0ZXJzIG9uIE1ESU9fTU1EX1ZFTkQyICovXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Njc6I2RlZmluZSBBSVJfUEhZX0xFRF9CQ1JcXHRcXHRcXHQweDAyMVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjY4OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9CQ1JfTU9ERV9NQVNLXFx0XFx0R0VOTUFTSygxLCAwKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjY5OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9CQ1JfVElNRV9URVNUXFx0XFx0QklUKDIpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NzA6I2RlZmluZSAgIEFJUl9QSFlfTEVEX0JDUl9DTEtfRU5cXHRcXHRCSVQoMylcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3MTojZGVmaW5lICAgQUlSX1BIWV9MRURfQkNSX0VYVF9DVFJMXFx0XFx0QklUKDE1KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTcyLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjczOiNkZWZpbmUgQUlSX1BIWV9MRURfRFVSX09OXFx0XFx0MHgwMjJcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03NC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NTojZGVmaW5lIEFJUl9QSFlfTEVEX0RVUl9CTElOS1xcdFxcdDB4MDIzXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzYtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Nzc6I2RlZmluZSBBSVJfUEhZX0xFRF9PTihpKVxcdCAgICAgICAoMHgwMjQgKyAoKGkpICogMikpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Nzg6I2RlZmluZSAgIEFJUl9QSFlfTEVEX09OX01BU0tcXHRcXHRcXHQoR0VOTUFTSyg2LCAwKSB8IEJJVCg4KSlcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3OTojZGVmaW5lICAgQUlSX1BIWV9MRURfT05fTElOSzEwMDBcXHRcXHRCSVQoMClcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MDojZGVmaW5lICAgQUlSX1BIWV9MRURfT05fTElOSzEwMFxcdFxcdEJJVCgxKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgxOiNkZWZpbmUgICBBSVJfUEhZX0xFRF9PTl9MSU5LMTBcXHRcXHRcXHRCSVQoMilcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MjojZGVmaW5lICAgQUlSX1BIWV9MRURfT05fTElOS0RPV05cXHRcXHRCSVQoMylcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MzojZGVmaW5lICAgQUlSX1BIWV9MRURfT05fRkRYXFx0XFx0XFx0QklUKDQpIC8qIEZ1bGwgZHVwbGV4ICovXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6ODQ6I2RlZmluZSAgIEFJUl9QSFlfTEVEX09OX0hEWFxcdFxcdFxcdEJJVCg1KSAvKiBIYWxmIGR1cGxleCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjg1OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9PTl9GT1JDRV9PTlxcdFxcdEJJVCg2KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjg2OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9PTl9MSU5LMjUwMFxcdFxcdEJJVCg4KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjg3OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9PTl9QT0xBUklUWVxcdFxcdEJJVCgxNClcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4ODojZGVmaW5lICAgQUlSX1BIWV9MRURfT05fRU5BQkxFXFx0XFx0XFx0QklUKDE1KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTg5LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjkwOiNkZWZpbmUgQUlSX1BIWV9MRURfQkxJTksoaSlcXHQgICAgICAgKDB4MDI1ICsgKChpKSAqIDIpKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjkxOiNkZWZpbmUgICBBSVJfUEhZX0xFRF9CTElOS18xMDAwVFhcXHRcXHRCSVQoMClcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo5MjojZGVmaW5lICAgQUlSX1BIWV9MRURfQkxJTktfMTAwMFJYXFx0XFx0QklUKDEpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6OTM6I2RlZmluZSAgIEFJUl9QSFlfTEVEX0JMSU5LXzEwMFRYXFx0XFx0QklUKDIpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6OTQ6I2RlZmluZSAgIEFJUl9QSFlfTEVEX0JMSU5LXzEwMFJYXFx0XFx0QklUKDMpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6OTU6I2RlZmluZSAgIEFJUl9QSFlfTEVEX0JMSU5LXzEwVFhcXHRcXHRCSVQoNClcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo5NjojZGVmaW5lICAgQUlSX1BIWV9MRURfQkxJTktfMTBSWFxcdFxcdEJJVCg1KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjk3OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9CTElOS19DT0xMSVNJT05cXHRcXHRCSVQoNilcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo5ODojZGVmaW5lICAgQUlSX1BIWV9MRURfQkxJTktfUlhfQ1JDX0VSUlxcdFxcdEJJVCg3KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjk5OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9CTElOS19SWF9JRExFX0VSUlxcdFxcdEJJVCg4KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEwMDojZGVmaW5lICAgQUlSX1BIWV9MRURfQkxJTktfRk9SQ0VfQkxJTktcXHRcXHRCSVQoOSlcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMDE6I2RlZmluZSAgIEFJUl9QSFlfTEVEX0JMSU5LXzI1MDBUWFxcdFxcdEJJVCgxMClcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMDI6I2RlZmluZSAgIEFJUl9QSFlfTEVEX0JMSU5LXzI1MDBSWFxcdFxcdEJJVCgxMSlcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMDMtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTA0LS8qIFJlZ2lzdGVycyBvbiBCVUNLUEJVUyAqL1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEwNTojZGVmaW5lIEFJUl9QSFlfQ09OVFJPTFxcdFxcdFxcdDB4M2E5Y1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEwNjojZGVmaW5lICAgQUlSX1BIWV9DT05UUk9MX0lOVEVSTkFMXFx0XFx0QklUKDExKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEwNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE2NS0vKiBNSUkgcmVnaXN0ZXIgY29uc3RhbnRzIGZvciBQQlVTIGFjY2VzcyAoUEhZIGFkZHIgKyA4KSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE2NjojZGVmaW5lIEFJUl9QQlVTX0FERFJfSElHSFxcdFxcdDB4MWNcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNjc6I2RlZmluZSBBSVJfUEJVU19EQVRBX0hJR0hcXHRcXHQweDEwXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTY4OiNkZWZpbmUgQUlSX1BCVVNfUkVHX0FERFJfSElHSF9NQVNLXFx0R0VOTUFTSygxNSwgNilcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNjk6I2RlZmluZSBBSVJfUEJVU19SRUdfQUREUl9MT1dfTUFTS1xcdEdFTk1BU0soNSwgMilcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xNzAtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xODAtICovXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTgxOiNkZWZpbmUgQUlSX0RFRkFVTFRfVFJJR0dFUl9MRUQwIChCSVQoVFJJR0dFUl9ORVRERVZfTElOSykgICAgICB8IFxcXFxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xODItXFx0XFx0XFx0XFx0ICBCSVQoVFJJR0dFUl9ORVRERVZfUlgpICAgICAgICB8IFxcXFxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xODMtXFx0XFx0XFx0XFx0ICBCSVQoVFJJR0dFUl9ORVRERVZfVFgpKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE4NDojZGVmaW5lIEFJUl9ERUZBVUxUX1RSSUdHRVJfTEVEMSAoQklUKFRSSUdHRVJfTkVUREVWX0xJTktfMjUwMCkgfCBcXFxcXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTg1LVxcdFxcdFxcdFxcdCAgQklUKFRSSUdHRVJfTkVUREVWX0xJTktfMTAwMCkpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTg2OiNkZWZpbmUgQUlSX0RFRkFVTFRfVFJJR0dFUl9MRUQyIChCSVQoVFJJR0dFUl9ORVRERVZfTElOS18yNTAwKSB8IFxcXFxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xODctXFx0XFx0XFx0XFx0ICBCSVQoVFJJR0dFUl9ORVRERVZfTElOS18xMDApKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MjA3PWVudW0ge1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjIwODpcXHRBSVJfUEhZX0xFRF9TVEFURV9GT1JDRV9PTixcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyMDk6XFx0QUlSX1BIWV9MRURfU1RBVEVfRk9SQ0VfQkxJTkssXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjEwLX07XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0yMTI9ZW51bSB7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjEzOlxcdEFJUl9QSFlfTEVEX0RVUl9CTElOS18zMk1TLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjIxNDpcXHRBSVJfUEhZX0xFRF9EVVJfQkxJTktfNjRNUyxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyMTU6XFx0QUlSX1BIWV9MRURfRFVSX0JMSU5LXzEyOE1TLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjIxNjpcXHRBSVJfUEhZX0xFRF9EVVJfQkxJTktfMjU2TVMsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjE3OlxcdEFJUl9QSFlfTEVEX0RVUl9CTElOS181MTJNUyxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyMTg6XFx0QUlSX1BIWV9MRURfRFVSX0JMSU5LXzEwMjRNUyxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yMTktfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTIyMT1lbnVtIHtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyMjI6XFx0QUlSX0xFRF9ESVNBQkxFLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjIyMzpcXHRBSVJfTEVEX0VOQUJMRSxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yMjQtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTIyNj1lbnVtIHtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyMjc6XFx0QUlSX0FDVElWRV9MT1csXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjI4OlxcdEFJUl9BQ1RJVkVfSElHSCxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yMjktfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTIzMT1lbnVtIHtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyMzI6XFx0QUlSX0xFRF9NT0RFX0RJU0FCTEUsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjMzOlxcdEFJUl9MRURfTU9ERV9VU0VSX0RFRklORSxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yMzQtfTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yMzUtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjM2OiNkZWZpbmUgQUlSX1BIWV9MRURfRFVSX1VOSVRcXHQxMDI0XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjM3OiNkZWZpbmUgQUlSX1BIWV9MRURfRFVSIChBSVJfUEhZX0xFRF9EVVJfVU5JVCBcXHUwMDNjXFx1MDAzYyBBSVJfUEhZX0xFRF9EVVJfQkxJTktfNjRNUylcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yMzgtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0yNDg9c3RhdGljIGludCBfX2Fpcl9wYnVzX3JlZ193cml0ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yNTItXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjUzOlxcdHJldCA9IF9fbWRpb2J1c193cml0ZShtZGlvZGV2LVxcdTAwM2VidXMsIG1kaW9kZXYtXFx1MDAzZWFkZHIsIEFJUl9FWFRfUEFHRV9BQ0NFU1MsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjU0LVxcdFxcdFxcdCAgICAgIHVwcGVyXzE2X2JpdHMocGJ1c19yZWcpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTI1Ny1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyNTg6XFx0cmV0ID0gX19tZGlvYnVzX3dyaXRlKG1kaW9kZXYtXFx1MDAzZWJ1cywgbWRpb2Rldi1cXHUwMDNlYWRkciwgQUlSX1BCVVNfQUREUl9ISUdILFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjI1OTpcXHRcXHRcXHQgICAgICBGSUVMRF9HRVQoQUlSX1BCVVNfUkVHX0FERFJfSElHSF9NQVNLLCBwYnVzX3JlZykpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTI2MC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTI2My1cXHRyZXQgPSBfX21kaW9idXNfd3JpdGUobWRpb2Rldi1cXHUwMDNlYnVzLCBtZGlvZGV2LVxcdTAwM2VhZGRyLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjI2NDpcXHRcXHRcXHQgICAgICBGSUVMRF9HRVQoQUlSX1BCVVNfUkVHX0FERFJfTE9XX01BU0ssIHBidXNfcmVnKSxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yNjUtXFx0XFx0XFx0ICAgICAgbG93ZXJfMTZfYml0cyhwYnVzX2RhdGEpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTI2OC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyNjk6XFx0cmV0dXJuIF9fbWRpb2J1c193cml0ZShtZGlvZGV2LVxcdTAwM2VidXMsIG1kaW9kZXYtXFx1MDAzZWFkZHIsIEFJUl9QQlVTX0RBVEFfSElHSCxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yNzAtXFx0XFx0XFx0ICAgICAgIHVwcGVyXzE2X2JpdHMocGJ1c19kYXRhKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0yNzM9c3RhdGljIGludCBfX2Fpcl93cml0ZV9idWYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIGFkZHJlc3MsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yNzktXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjgwOlxcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX01PREUsIEFJUl9CUEJVU19NT0RFX0FERFJfSU5DUik7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjgxLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjgzLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjI4NDpcXHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIEFJUl9CUEJVU19XUl9BRERSX0hJR0gsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjg1LVxcdFxcdFxcdCAgdXBwZXJfMTZfYml0cyhhZGRyZXNzKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yODgtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Mjg5OlxcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX1dSX0FERFJfTE9XLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTI5MC1cXHRcXHRcXHQgIGxvd2VyXzE2X2JpdHMoYWRkcmVzcykpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjk1LVxcdFxcdHZhbCA9IGdldF91bmFsaWduZWRfbGUxNihcXHUwMDI2ZnctXFx1MDAzZWRhdGFbb2Zmc2V0ICsgMl0pO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjI5NjpcXHRcXHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIEFJUl9CUEJVU19XUl9EQVRBX0hJR0gsIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjk3LVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzAwLVxcdFxcdHZhbCA9IGdldF91bmFsaWduZWRfbGUxNihcXHUwMDI2ZnctXFx1MDAzZWRhdGFbb2Zmc2V0XSk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MzAxOlxcdFxcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX1dSX0RBVEFfTE9XLCB2YWwpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTMwMi1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTMwOT1zdGF0aWMgaW50IGFpcl93cml0ZV9idWYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIGFkZHJlc3MsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0zMjAtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MzIxOlxcdHNhdmVkX3BhZ2UgPSBwaHlfc2VsZWN0X3BhZ2UocGh5ZGV2LCBBSVJfUEhZX1BBR0VfRVhURU5ERURfNCk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzIyLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9NDY4PXN0YXRpYyBpbnQgYW44ODExaGJfbG9hZF9maXJtd2FyZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDg0LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjQ4NTpcXHRyZXQgPSBhbjg4MTFoYl9sb2FkX2ZpbGUocGh5ZGV2LCBBTjg4MTFIQl9NRDMyX0RNLCBBSVJfRldfQUREUl9ETSk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDg2LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDk0LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjQ5NTpcXHRyZXQgPSBhbjg4MTFoYl9sb2FkX2ZpbGUocGh5ZGV2LCBBTjg4MTFIQl9NRDMyX0RTUCwgQUlSX0ZXX0FERFJfRFNQKTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy00OTYtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz01MDg9c3RhdGljIGludCBlbjg4MTFoX2xvYWRfZmlybXdhcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTUzMi1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1MzM6XFx0cmV0ID0gYWlyX3dyaXRlX2J1ZihwaHlkZXYsIEFJUl9GV19BRERSX0RNLCAgZncxKTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01MzQtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01MzYtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTM3OlxcdHJldCA9IGFpcl93cml0ZV9idWYocGh5ZGV2LCBBSVJfRldfQUREUl9EU1AsIGZ3Mik7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTM4LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9NTg2PXN0YXRpYyBpbnQgYWlyX2h3X2xlZF9vbl9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsIGJvb2wgb24pXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01OTQtXFx0aWYgKG9uKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjU5NTpcXHRcXHRjaGFuZ2VkID0gIXRlc3RfYW5kX3NldF9iaXQoQUlSX1BIWV9MRURfU1RBVEVfRk9SQ0VfT04sXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTk2LVxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2cHJpdi1cXHUwMDNlbGVkW2luZGV4XS5zdGF0ZSk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTk3LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1OTg6XFx0XFx0Y2hhbmdlZCA9ICEhdGVzdF9hbmRfY2xlYXJfYml0KEFJUl9QSFlfTEVEX1NUQVRFX0ZPUkNFX09OLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTU5OS1cXHRcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNnByaXYtXFx1MDAzZWxlZFtpbmRleF0uc3RhdGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjA4LVxcdFxcdHJldHVybiBwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjYwOTpcXHRcXHRcXHRcXHQgICAgICBBSVJfUEhZX0xFRF9PTihpbmRleCksXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjEwOlxcdFxcdFxcdFxcdCAgICAgIEFJUl9QSFlfTEVEX09OX01BU0ssXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjExOlxcdFxcdFxcdFxcdCAgICAgIG9uID8gQUlSX1BIWV9MRURfT05fRk9SQ0VfT04gOiAwKTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02MTItXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz02MTY9c3RhdGljIGludCBhaXJfaHdfbGVkX2JsaW5rX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTYyNS1cXHRpZiAoYmxpbmtpbmcpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjI2OlxcdFxcdGNoYW5nZWQgPSAhdGVzdF9hbmRfc2V0X2JpdChBSVJfUEhZX0xFRF9TVEFURV9GT1JDRV9CTElOSyxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02MjctXFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZwcml2LVxcdTAwM2VsZWRbaW5kZXhdLnN0YXRlKTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02MjgtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjYyOTpcXHRcXHRjaGFuZ2VkID0gISF0ZXN0X2FuZF9jbGVhcl9iaXQoQUlSX1BIWV9MRURfU1RBVEVfRk9SQ0VfQkxJTkssXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjMwLVxcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2cHJpdi1cXHUwMDNlbGVkW2luZGV4XS5zdGF0ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02MzUtXFx0XFx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo2MzY6XFx0XFx0XFx0XFx0ICAgICBBSVJfUEhZX0xFRF9CTElOSyhpbmRleCksXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjM3LVxcdFxcdFxcdFxcdCAgICAgYmxpbmtpbmcgP1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjYzODpcXHRcXHRcXHRcXHQgICAgIEFJUl9QSFlfTEVEX0JMSU5LX0ZPUkNFX0JMSU5LIDogMCk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjM5LVxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTY0Mz1zdGF0aWMgaW50IGFpcl9sZWRfYmxpbmtfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjY5LVxcdC8qIGh3LWNvbnRyb2wgaXMgb2ZmKi9cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo2NzA6XFx0aWYgKCEhdGVzdF9iaXQoQUlSX1BIWV9MRURfU1RBVEVfRk9SQ0VfQkxJTkssIFxcdTAwMjZwcml2LVxcdTAwM2VsZWRbaW5kZXhdLnN0YXRlKSlcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02NzEtXFx0XFx0cHJpdi1cXHUwMDNlbGVkW2luZGV4XS5ydWxlcyA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz02NzY9c3RhdGljIGludCBhaXJfbGVkX2JyaWdodG5lc3Nfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjk0LVxcdC8qIGh3LWNvbnRyb2wgaXMgb2ZmICovXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Njk1OlxcdGlmICghIXRlc3RfYml0KEFJUl9QSFlfTEVEX1NUQVRFX0ZPUkNFX09OLCBcXHUwMDI2cHJpdi1cXHUwMDNlbGVkW2luZGV4XS5zdGF0ZSkpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjk2LVxcdFxcdHByaXYtXFx1MDAzZWxlZFtpbmRleF0ucnVsZXMgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9NzE0PXN0YXRpYyBpbnQgYWlyX2xlZF9od19jb250cm9sX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTcyNi1cXHRpZiAocnVsZXMgXFx1MDAyNiBCSVQoVFJJR0dFUl9ORVRERVZfRlVMTF9EVVBMRVgpKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjcyNzpcXHRcXHRvbiB8PSBBSVJfUEhZX0xFRF9PTl9GRFg7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzI4LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTcyOS1cXHRpZiAocnVsZXMgXFx1MDAyNiAoQklUKFRSSUdHRVJfTkVUREVWX0xJTktfMTApIHwgQklUKFRSSUdHRVJfTkVUREVWX0xJTkspKSlcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3MzA6XFx0XFx0b24gfD0gQUlSX1BIWV9MRURfT05fTElOSzEwO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTczMS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03MzItXFx0aWYgKHJ1bGVzIFxcdTAwMjYgKEJJVChUUklHR0VSX05FVERFVl9MSU5LXzEwMCkgfCBCSVQoVFJJR0dFUl9ORVRERVZfTElOSykpKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjczMzpcXHRcXHRvbiB8PSBBSVJfUEhZX0xFRF9PTl9MSU5LMTAwO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTczNC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03MzUtXFx0aWYgKHJ1bGVzIFxcdTAwMjYgKEJJVChUUklHR0VSX05FVERFVl9MSU5LXzEwMDApIHwgQklUKFRSSUdHRVJfTkVUREVWX0xJTkspKSlcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3MzY6XFx0XFx0b24gfD0gQUlSX1BIWV9MRURfT05fTElOSzEwMDA7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzM3LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTczOC1cXHRpZiAocnVsZXMgXFx1MDAyNiAoQklUKFRSSUdHRVJfTkVUREVWX0xJTktfMjUwMCkgfCBCSVQoVFJJR0dFUl9ORVRERVZfTElOSykpKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjczOTpcXHRcXHRvbiB8PSBBSVJfUEhZX0xFRF9PTl9MSU5LMjUwMDtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03NDAtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzQxLVxcdGlmIChydWxlcyBcXHUwMDI2IEJJVChUUklHR0VSX05FVERFVl9SWCkpIHtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NDI6XFx0XFx0YmxpbmsgfD0gQUlSX1BIWV9MRURfQkxJTktfMTBSWCAgIHxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NDM6XFx0XFx0XFx0IEFJUl9QSFlfTEVEX0JMSU5LXzEwMFJYICB8XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NzQ0OlxcdFxcdFxcdCBBSVJfUEhZX0xFRF9CTElOS18xMDAwUlggfFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc0NTpcXHRcXHRcXHQgQUlSX1BIWV9MRURfQkxJTktfMjUwMFJYO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc0Ni1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03NDgtXFx0aWYgKHJ1bGVzIFxcdTAwMjYgQklUKFRSSUdHRVJfTkVUREVWX1RYKSkge1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc0OTpcXHRcXHRibGluayB8PSBBSVJfUEhZX0xFRF9CTElOS18xMFRYICAgfFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc1MDpcXHRcXHRcXHQgQUlSX1BIWV9MRURfQkxJTktfMTAwVFggIHxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NTE6XFx0XFx0XFx0IEFJUl9QSFlfTEVEX0JMSU5LXzEwMDBUWCB8XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NzUyOlxcdFxcdFxcdCBBSVJfUEhZX0xFRF9CTElOS18yNTAwVFg7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzUzLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc1Ni1cXHRcXHQvKiBzd2l0Y2ggaHctY29udHJvbCBvbiwgc28gbGVkLW9uIGFuZCBsZWQtYmxpbmsgYXJlIG9mZiAqL1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc1NzpcXHRcXHRjbGVhcl9iaXQoQUlSX1BIWV9MRURfU1RBVEVfRk9SQ0VfT04sXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzU4LVxcdFxcdFxcdCAgXFx1MDAyNnByaXYtXFx1MDAzZWxlZFtpbmRleF0uc3RhdGUpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc1OTpcXHRcXHRjbGVhcl9iaXQoQUlSX1BIWV9MRURfU1RBVEVfRk9SQ0VfQkxJTkssXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzYwLVxcdFxcdFxcdCAgXFx1MDAyNnByaXYtXFx1MDAzZWxlZFtpbmRleF0uc3RhdGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzY0LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc2NTpcXHRyZXQgPSBwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBBSVJfUEhZX0xFRF9PTihpbmRleCksXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NzY2OlxcdFxcdFxcdCAgICAgQUlSX1BIWV9MRURfT05fTUFTSywgb24pO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc2Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc3MC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NzE6XFx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgQUlSX1BIWV9MRURfQkxJTksoaW5kZXgpLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc3Mi1cXHRcXHRcXHQgICAgIGJsaW5rKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTc3NT1zdGF0aWMgaW50IGFpcl9sZWRfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCwgdTggc3RhdGUsIHU4IHBvbClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc4Mi1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3ODM6XFx0aWYgKHN0YXRlID09IEFJUl9MRURfRU5BQkxFKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc4NDpcXHRcXHR2YWwgfD0gQUlSX1BIWV9MRURfT05fRU5BQkxFO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc4NS1cXHRlbHNlXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Nzg2OlxcdFxcdHZhbCBcXHUwMDI2PSB+QUlSX1BIWV9MRURfT05fRU5BQkxFO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc4Ny1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3ODg6XFx0aWYgKHBvbCA9PSBBSVJfQUNUSVZFX0hJR0gpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Nzg5OlxcdFxcdHZhbCB8PSBBSVJfUEhZX0xFRF9PTl9QT0xBUklUWTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03OTAtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc5MTpcXHRcXHR2YWwgXFx1MDAyNj0gfkFJUl9QSFlfTEVEX09OX1BPTEFSSVRZO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc5Mi1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3OTM6XFx0ZXJyID0gcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgQUlSX1BIWV9MRURfT04oaW5kZXgpLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc5NDpcXHRcXHRcXHQgICAgIEFJUl9QSFlfTEVEX09OX0VOQUJMRSB8XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Nzk1OlxcdFxcdFxcdCAgICAgQUlSX1BIWV9MRURfT05fUE9MQVJJVFksIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzk2LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9ODAzPXN0YXRpYyBpbnQgYWlyX2xlZHNfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgbnVtLCBpbnQgZHVyLCBpbnQgbW9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTgwNy1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MDg6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBBSVJfUEhZX0xFRF9EVVJfQkxJTkssXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODA5LVxcdFxcdFxcdCAgICBkdXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODEyLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgxMzpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIEFJUl9QSFlfTEVEX0RVUl9PTixcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04MTQtXFx0XFx0XFx0ICAgIGR1ciBcXHUwMDNlXFx1MDAzZSAxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTgxOC1cXHRzd2l0Y2ggKG1vZGUpIHtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MTk6XFx0Y2FzZSBBSVJfTEVEX01PREVfRElTQUJMRTpcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MjA6XFx0XFx0cmV0ID0gcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgQUlSX1BIWV9MRURfQkNSLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgyMTpcXHRcXHRcXHRcXHQgICAgIEFJUl9QSFlfTEVEX0JDUl9FWFRfQ1RSTCB8XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6ODIyOlxcdFxcdFxcdFxcdCAgICAgQUlSX1BIWV9MRURfQkNSX01PREVfTUFTSywgMCk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODIzLVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODI1LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgyNjpcXHRjYXNlIEFJUl9MRURfTU9ERV9VU0VSX0RFRklORTpcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4Mjc6XFx0XFx0cmV0ID0gcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgQUlSX1BIWV9MRURfQkNSLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgyODpcXHRcXHRcXHRcXHQgICAgIEFJUl9QSFlfTEVEX0JDUl9FWFRfQ1RSTCB8XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6ODI5OlxcdFxcdFxcdFxcdCAgICAgQUlSX1BIWV9MRURfQkNSX0NMS19FTixcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MzA6XFx0XFx0XFx0XFx0ICAgICBBSVJfUEhZX0xFRF9CQ1JfRVhUX0NUUkwgfFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgzMTpcXHRcXHRcXHRcXHQgICAgIEFJUl9QSFlfTEVEX0JDUl9DTEtfRU4pO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTgzMi1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTg0MC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnVtOyArK2kpIHtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4NDE6XFx0XFx0cmV0ID0gYWlyX2xlZF9pbml0KHBoeWRldiwgaSwgQUlSX0xFRF9FTkFCTEUsIEFJUl9BQ1RJVkVfSElHSCk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODQyLVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0xMDYzPXN0YXRpYyBpbnQgZW44ODExaF9sZWRzX3NldHVwKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMDY3LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEwNjg6XFx0cHJpdi1cXHUwMDNlbGVkWzBdLnJ1bGVzID0gQUlSX0RFRkFVTFRfVFJJR0dFUl9MRUQwO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEwNjk6XFx0cHJpdi1cXHUwMDNlbGVkWzFdLnJ1bGVzID0gQUlSX0RFRkFVTFRfVFJJR0dFUl9MRUQxO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEwNzA6XFx0cHJpdi1cXHUwMDNlbGVkWzJdLnJ1bGVzID0gQUlSX0RFRkFVTFRfVFJJR0dFUl9MRUQyO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEwNzEtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTA3MjpcXHRyZXQgPSBhaXJfbGVkc19pbml0KHBoeWRldiwgRU44ODExSF9MRURfQ09VTlQsIEFJUl9QSFlfTEVEX0RVUixcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMDczOlxcdFxcdFxcdCAgICBBSVJfTEVEX01PREVfRElTQUJMRSk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTA3NC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTEyNTM9c3RhdGljIGludCBhbjg4MTFoYl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTI3MS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMjcyOlxcdHJldCA9IGFpcl9sZWRzX2luaXQocGh5ZGV2LCBFTjg4MTFIX0xFRF9DT1VOVCwgQUlSX1BIWV9MRURfRFVSLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEyNzM6XFx0XFx0XFx0ICAgIEFJUl9MRURfTU9ERV9VU0VSX0RFRklORSk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTI3NC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTEyODA9c3RhdGljIGludCBlbjg4MTFoX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMjk3LVxcdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEyOTg6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfMSxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMjk5OlxcdFxcdFxcdCAgICBBSVJfUEhZX01DVV9DTURfMV9NT0RFMSk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMwMC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzAxLVxcdFxcdHJldHVybiByZXQ7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTMwMjpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFJUl9QSFlfTUNVX0NNRF8yLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEzMDM6XFx0XFx0XFx0ICAgIEFJUl9QSFlfTUNVX0NNRF8yX01PREUxKTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzA0LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMDUtXFx0XFx0cmV0dXJuIHJldDtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMzA2OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQUlSX1BIWV9NQ1VfQ01EXzMsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTMwNzpcXHRcXHRcXHQgICAgQUlSX1BIWV9NQ1VfQ01EXzNfTU9ERTEpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMDgtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMwOS1cXHRcXHRyZXR1cm4gcmV0O1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEzMTA6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfNCxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMzExOlxcdFxcdFxcdCAgICBBSVJfUEhZX01DVV9DTURfNF9NT0RFMSk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMxMi1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMTgtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTMxOTpcXHRyZXQgPSBhaXJfbGVkc19pbml0KHBoeWRldiwgRU44ODExSF9MRURfQ09VTlQsIEFJUl9QSFlfTEVEX0RVUixcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMzIwOlxcdFxcdFxcdCAgICBBSVJfTEVEX01PREVfVVNFUl9ERUZJTkUpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMjEtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTEzNzg9c3RhdGljIGludCBlbjg4MTFoX3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xNDI4LVxcdC8qIEdldCByZWFsIHNwZWVkIGZyb20gdmVuZG9yIHJlZ2lzdGVyICovXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTQyOTpcXHR2YWwgPSBwaHlfcmVhZChwaHlkZXYsIEFJUl9BVVhfQ1RSTF9TVEFUVVMpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0MzAtXFx0aWYgKHZhbCBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQzMS1cXHRcXHRyZXR1cm4gdmFsO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE0MzI6XFx0c3dpdGNoICh2YWwgXFx1MDAyNiBBSVJfQVVYX0NUUkxfU1RBVFVTX1NQRUVEX01BU0spIHtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNDMzOlxcdGNhc2UgQUlSX0FVWF9DVFJMX1NUQVRVU19TUEVFRF8yNTAwOlxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0MzQtXFx0XFx0cGh5ZGV2LVxcdTAwM2VzcGVlZCA9IFNQRUVEXzI1MDA7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQzNS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNDM2OlxcdGNhc2UgQUlSX0FVWF9DVFJMX1NUQVRVU19TUEVFRF8xMDAwOlxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0MzctXFx0XFx0cGh5ZGV2LVxcdTAwM2VzcGVlZCA9IFNQRUVEXzEwMDA7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQzOC1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNDM5OlxcdGNhc2UgQUlSX0FVWF9DVFJMX1NUQVRVU19TUEVFRF8xMDA6XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQ0MC1cXHRcXHRwaHlkZXYtXFx1MDAzZXNwZWVkID0gU1BFRURfMTAwO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0NDEtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTQ0MjpcXHRjYXNlIEFJUl9BVVhfQ1RSTF9TVEFUVVNfU1BFRURfMTA6XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQ0My1cXHRcXHRwaHlkZXYtXFx1MDAzZXNwZWVkID0gU1BFRURfMTA7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0xNDYyPXN0YXRpYyBpbnQgZW44ODExaF9jbGVhcl9pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xNDY1LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE0NjY6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfMyxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNDY3OlxcdFxcdFxcdCAgICBBSVJfUEhZX01DVV9DTURfM19ET0NNRCk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQ2OC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0NzAtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTQ3MTpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFJUl9QSFlfTUNVX0NNRF80LFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE0NzI6XFx0XFx0XFx0ICAgIEFJUl9QSFlfTUNVX0NNRF80X0lOVENMUik7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQ3My1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jPTE3PXN0YXRpYyBpbnQgX19haXJfYnVja3BidXNfcmVnX3JlYWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTIyLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jOjIzOlxcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX01PREUsIEFJUl9CUEJVU19NT0RFX0FERFJfRklYRUQpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTI0LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmMtMjYtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmM6Mjc6XFx0cmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBBSVJfQlBCVVNfUkRfQUREUl9ISUdILFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTI4LVxcdFxcdFxcdCAgdXBwZXJfMTZfYml0cyhwYnVzX2FkZHJlc3MpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTMxLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jOjMyOlxcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX1JEX0FERFJfTE9XLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTMzLVxcdFxcdFxcdCAgbG93ZXJfMTZfYml0cyhwYnVzX2FkZHJlc3MpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTM2LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jOjM3OlxcdHBidXNfZGF0YV9oaWdoID0gX19waHlfcmVhZChwaHlkZXYsIEFJUl9CUEJVU19SRF9EQVRBX0hJR0gpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTM4LVxcdGlmIChwYnVzX2RhdGFfaGlnaCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYy00MC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYzo0MTpcXHRwYnVzX2RhdGFfbG93ID0gX19waHlfcmVhZChwaHlkZXYsIEFJUl9CUEJVU19SRF9EQVRBX0xPVyk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmMtNDItXFx0aWYgKHBidXNfZGF0YV9sb3cgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmM9NDk9c3RhdGljIGludCBfX2Fpcl9idWNrcGJ1c19yZWdfd3JpdGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTUzLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jOjU0OlxcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX01PREUsIEFJUl9CUEJVU19NT0RFX0FERFJfRklYRUQpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTU1LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmMtNTctXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmM6NTg6XFx0cmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBBSVJfQlBCVVNfV1JfQUREUl9ISUdILFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTU5LVxcdFxcdFxcdCAgdXBwZXJfMTZfYml0cyhwYnVzX2FkZHJlc3MpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTYyLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jOjYzOlxcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX1dSX0FERFJfTE9XLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTY0LVxcdFxcdFxcdCAgbG93ZXJfMTZfYml0cyhwYnVzX2FkZHJlc3MpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTY3LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jOjY4OlxcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX1dSX0RBVEFfSElHSCxcXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYy02OS1cXHRcXHRcXHQgIHVwcGVyXzE2X2JpdHMocGJ1c19kYXRhKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYy03Mi1cXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYzo3MzpcXHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIEFJUl9CUEJVU19XUl9EQVRBX0xPVyxcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6NDY6MzAuMTU2NTEzMjE3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM3NjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArXFxuICAgMjpcXHQvKlxcbiAgIDM6XFx0ICogRHJpdmVyIGZvciB0aGUgQWlyb2hhIEVOODgxMUggYW5kIEFOODgxMUhCIDIuNSBHaWdhYml0IFBIWXMuXFxuICAgNDpcXHQgKlxcbiAgIDU6XFx0ICogTGltaXRhdGlvbnM6XFxuICAgNjpcXHQgKiAtIE9ubHkgZnVsbCBkdXBsZXggc3VwcG9ydGVkXFxuICAgNzpcXHQgKiAtIEZvcmNlZCBzcGVlZCAoQU4gb2ZmKSBpcyBub3Qgc3VwcG9ydGVkIGJ5IGhhcmR3YXJlICgxMDBNYnBzKVxcbiAgIDg6XFx0ICpcXG4gICA5OlxcdCAqIFNvdXJjZSBvcmlnaW5hdGVkIGZyb20gYWlyb2hhJ3MgZW44ODExaC5jIGFuZCBlbjg4MTFoLmggdjEuMi4xXFxuICAxMDpcXHQgKiB3aXRoIEFOODgxMUhCIGJpdHMgZnJvbSBhaXJfYW44ODExaGIuYyB2MC4wLjRcXG4gIDExOlxcdCAqXFxuICAxMjpcXHQgKiBDb3B5cmlnaHQgKEMpIDIwMjMsIDIwMjYgQWlyb2hhIFRlY2hub2xvZ3kgQ29ycC5cXG4gIDEzOlxcdCAqL1xcbiAgMTQ6XFx0XFxuICAxNTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvY2xrLmhcXHUwMDNlXFxuICAxNjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvY2xrLXByb3ZpZGVyLmhcXHUwMDNlXFxuICAxNzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5LmhcXHUwMDNlXFxuICAxODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5L3BoeS1jb21tb24tcHJvcHMuaFxcdTAwM2VcXG4gIDE5OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9maXJtd2FyZS5oXFx1MDAzZVxcbiAgMjA6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcXHUwMDNlXFxuICAyMTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcHJvcGVydHkuaFxcdTAwM2VcXG4gIDIyOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC93b3JkcGFydC5oXFx1MDAzZVxcbiAgMjM6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXFx1MDAzZVxcbiAgMjQ6XFx0XFxuICAyNTpcXHQjaW5jbHVkZSBcXFwiYWlyX3BoeV9saWIuaFxcXCJcXG4gIDI2OlxcdFxcbiAgMjc6XFx0I2RlZmluZSBFTjg4MTFIX1BIWV9JRFxcdFxcdDB4MDNhMmE0MTFcXG4gIDI4OlxcdCNkZWZpbmUgQU44ODExSEJfUEhZX0lEXFx0XFx0MHhjMGZmMDRhMFxcbiAgMjk6XFx0XFxuICAzMDpcXHQjZGVmaW5lIEVOODgxMUhfTUQzMl9ETVxcdFxcdFxcXCJhaXJvaGEvRXRoTUQzMi5kbS5iaW5cXFwiXFxuICAzMTpcXHQjZGVmaW5lIEVOODgxMUhfTUQzMl9EU1BcXHRcXFwiYWlyb2hhL0V0aE1EMzIuRFNQLmJpblxcXCJcXG4gIDMyOlxcdCNkZWZpbmUgQU44ODExSEJfTUQzMl9ETVxcdFxcXCJhaXJvaGEvYW44ODExaGIvRXRoTUQzMl9DUkMuRE0uYmluXFxcIlxcbiAgMzM6XFx0I2RlZmluZSBBTjg4MTFIQl9NRDMyX0RTUFxcdFxcXCJhaXJvaGEvYW44ODExaGIvRXRoTUQzMl9DUkMuRFNQLmJpblxcXCJcXG4gIDM0OlxcdFxcbiAgMzU6XFx0I2RlZmluZSBBSVJfRldfQUREUl9ETVxcdDB4MDAwMDAwMDBcXG4gIDM2OlxcdCNkZWZpbmUgQUlSX0ZXX0FERFJfRFNQXFx0MHgwMDEwMDAwMFxcbiAgMzc6XFx0XFxuICAzODpcXHQvKiBNSUkgUmVnaXN0ZXJzICovXFxuICAzOTpcXHQjZGVmaW5lIEFJUl9BVVhfQ1RSTF9TVEFUVVNcXHRcXHQweDFkXFxuICA0MDpcXHQjZGVmaW5lICAgQUlSX0FVWF9DVFJMX1NUQVRVU19TUEVFRF9NQVNLXFx0R0VOTUFTSyg0LCAyKVxcbiAgNDE6XFx0I2RlZmluZSAgIEFJUl9BVVhfQ1RSTF9TVEFUVVNfU1BFRURfMTBcXHRcXHQweDBcXG4gIDQyOlxcdCNkZWZpbmUgICBBSVJfQVVYX0NUUkxfU1RBVFVTX1NQRUVEXzEwMFxcdFxcdDB4NFxcbiAgNDM6XFx0I2RlZmluZSAgIEFJUl9BVVhfQ1RSTF9TVEFUVVNfU1BFRURfMTAwMFxcdDB4OFxcbiAgNDQ6XFx0I2RlZmluZSAgIEFJUl9BVVhfQ1RSTF9TVEFUVVNfU1BFRURfMjUwMFxcdDB4Y1xcbiAgNDU6XFx0XFxuICA0NjpcXHQvKiBSZWdpc3RlcnMgb24gTURJT19NTURfVkVORDEgKi9cXG4gIDQ3OlxcdCNkZWZpbmUgRU44ODExSF9QSFlfRldfU1RBVFVTXFx0XFx0MHg4MDA5XFxuICA0ODpcXHQjZGVmaW5lICAgRU44ODExSF9QSFlfUkVBRFlcXHRcXHRcXHQweDAyXFxuICA0OTpcXHRcXG4gIDUwOlxcdCNkZWZpbmUgQUlSX1BIWV9NQ1VfQ01EXzBcXHRcXHQweDgwMGJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6NDY6MzAuMTU2NjU0MDk3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjYyNTM1OTQ0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBEZWVwZXIgaW50byB0aGUgQWlyIEludGVyZmFjZSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gcG9raW5nIGFyb3VuZCBpbiBgYWlyX2VuODgxMWguY2AgYW5kIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBgYWlyX3dyaXRlX2J1ZmAuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGhvdyB0aGlzIGRyaXZlciBhY3R1YWxseSB3b3Jrcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBhbmQgc2VlIHRoZSByZXN0IG9mIHRoZSBmaWxlIHN1cnJvdW5kaW5nIHRoaXMgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgSSdtIGludGVyZXN0ZWQgaW4gaG93IHRoaXMgZHJpdmVyIGlzIHJlZ2lzdGVyZWQgd2l0aGluIHRoZSBrZXJuZWwsIGFuZCB0aGVuIGV2ZW4gbW9yZSBwYXJ0aWN1bGFybHkgaG93IGl0J3MgKmJvdW5kKiB0byBzcGVjaWZpYyBoYXJkd2FyZSBkZXZpY2VzLiBVbmRlcnN0YW5kaW5nIHRoZSByZWdpc3RyYXRpb24gYW5kIGJpbmRpbmcgcHJvY2Vzc2VzIGlzIGtleSB0byBmaWd1cmluZyBvdXQgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIGFuZCBob3cgdGhlIGxvdy1sZXZlbCBmdW5jdGlvbnMgbGlrZSBgYWlyX3dyaXRlX2J1ZmAgZml0IGludG8gdGhlIGdyYW5kIHNjaGVtZSBvZiB0aGluZ3MuIEl0J2xsIGdpdmUgbWUgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGRldmljZSdzIGxpZmVjeWNsZSBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MDI3LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6NDY6MzIuNzgyMDE2MzczWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyMjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMwMCxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDMwMDpcXHRcXHRcXHR2YWwgPSBnZXRfdW5hbGlnbmVkX2xlMTYoXFx1MDAyNmZ3LVxcdTAwM2VkYXRhW29mZnNldF0pO1xcbiAzMDE6XFx0XFx0XFx0cmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBBSVJfQlBCVVNfV1JfREFUQV9MT1csIHZhbCk7XFxuIDMwMjpcXHRcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gMzAzOlxcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDMwNDpcXHRcXHR9XFxuIDMwNTpcXHRcXG4gMzA2OlxcdFxcdHJldHVybiAwO1xcbiAzMDc6XFx0fVxcbiAzMDg6XFx0XFxuIDMwOTpcXHRzdGF0aWMgaW50IGFpcl93cml0ZV9idWYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIGFkZHJlc3MsXFxuIDMxMDpcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcXG4gMzExOlxcdHtcXG4gMzEyOlxcdFxcdGludCBzYXZlZF9wYWdlO1xcbiAzMTM6XFx0XFx0aW50IHJldCA9IDA7XFxuIDMxNDpcXHRcXG4gMzE1OlxcdFxcdGlmIChmdy1cXHUwMDNlc2l6ZSAlIDQpIHtcXG4gMzE2OlxcdFxcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiZmlybXdhcmUgc2l6ZSAlenUgaXMgbm90IGEgbXVsdGlwbGUgb2YgNFxcXFxuXFxcIixcXG4gMzE3OlxcdFxcdFxcdFxcdCAgIGZ3LVxcdTAwM2VzaXplKTtcXG4gMzE4OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAzMTk6XFx0XFx0fVxcbiAzMjA6XFx0XFxuIDMyMTpcXHRcXHRzYXZlZF9wYWdlID0gcGh5X3NlbGVjdF9wYWdlKHBoeWRldiwgQUlSX1BIWV9QQUdFX0VYVEVOREVEXzQpO1xcbiAzMjI6XFx0XFxuIDMyMzpcXHRcXHRpZiAoc2F2ZWRfcGFnZSBcXHUwMDNlPSAwKSB7XFxuIDMyNDpcXHRcXHRcXHRyZXQgPSBfX2Fpcl93cml0ZV9idWYocGh5ZGV2LCBhZGRyZXNzLCBmdyk7XFxuIDMyNTpcXHRcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gMzI2OlxcdFxcdFxcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiJXMgMHglMDh4IGZhaWxlZDogJWRcXFxcblxcXCIsIF9fZnVuY19fLFxcbiAzMjc6XFx0XFx0XFx0XFx0XFx0ICAgYWRkcmVzcywgcmV0KTtcXG4gMzI4OlxcdFxcdH1cXG4gMzI5OlxcdFxcbiAzMzA6XFx0XFx0cmV0dXJuIHBoeV9yZXN0b3JlX3BhZ2UocGh5ZGV2LCBzYXZlZF9wYWdlLCByZXQpO1xcbiAzMzE6XFx0fVxcbiAzMzI6XFx0XFxuIDMzMzpcXHRzdGF0aWMgaW50IGVuODgxMWhfd2FpdF9tY3VfcmVhZHkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gMzM0OlxcdHtcXG4gMzM1OlxcdFxcdGludCByZXQsIHJlZ192YWx1ZTtcXG4gMzM2OlxcdFxcbiAzMzc6XFx0XFx0cmV0ID0gYWlyX3BoeV9idWNrcGJ1c19yZWdfd3JpdGUocGh5ZGV2LCBFTjg4MTFIX0ZXX0NUUkxfMSxcXG4gMzM4OlxcdFxcdFxcdFxcdFxcdFxcdCBFTjg4MTFIX0ZXX0NUUkxfMV9GSU5JU0gpO1xcbiAzMzk6XFx0XFx0aWYgKHJldClcXG4gMzQwOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDM0MTpcXHRcXG4gMzQyOlxcdFxcdC8qIEJlY2F1c2Ugb2YgbWRpby1sb2NrLCBtYXkgaGF2ZSB0byB3YWl0IGZvciBtdWx0aXBsZSBsb2FkcyAqL1xcbiAzNDM6XFx0XFx0cmV0ID0gcGh5X3JlYWRfbW1kX3BvbGxfdGltZW91dChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxcbiAzNDQ6XFx0XFx0XFx0XFx0XFx0XFx0RU44ODExSF9QSFlfRldfU1RBVFVTLCByZWdfdmFsdWUsXFxuIDM0NTpcXHRcXHRcXHRcXHRcXHRcXHRyZWdfdmFsdWUgPT0gRU44ODExSF9QSFlfUkVBRFksXFxuIDM0NjpcXHRcXHRcXHRcXHRcXHRcXHQyMDAwMCwgNzUwMDAwMCwgdHJ1ZSk7XFxuIDM0NzpcXHRcXHRpZiAocmV0KSB7XFxuIDM0ODpcXHRcXHRcXHRwaHlkZXZfZXJyKHBoeWRldiwgXFxcIk1DVSBub3QgcmVhZHk6IDB4JXhcXFxcblxcXCIsIHJlZ192YWx1ZSk7XFxuIDM0OTpcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gMzUwOlxcdFxcdH1cXG4gMzUxOlxcdFxcbiAzNTI6XFx0XFx0cmV0dXJuIDA7XFxuIDM1MzpcXHR9XFxuIDM1NDpcXHRcXG4gMzU1OlxcdHN0YXRpYyBpbnQgYW44ODExaGJfY2hlY2tfY3JjKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUzMiBzZXQxLFxcbiAzNTY6XFx0XFx0XFx0XFx0ICAgICAgdTMyIG1vbjIsIHUzMiBtb24zKVxcbiAzNTc6XFx0e1xcbiAzNTg6XFx0XFx0dTMyIHBidXNfdmFsdWU7XFxuIDM1OTpcXHRcXHRpbnQgcmV0cnkgPSAyNTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6NDY6MzIuNzgyMTMwODAyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzY5NTEzNTg4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqTG9va2luZyBmb3IgUGh5IERyaXZlciBSZWdpc3RyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBQSFkgZHJpdmVyIGlzIGJlaW5nIGludGVncmF0ZWQgaW50byB0aGUgc3lzdGVtLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIGBhaXJfZW44ODExaC5jYC4gVGhlIG1vc3QgZGlyZWN0IHJvdXRlIHRvIHRoYXQgaXMgdG8ganVtcCBzdHJhaWdodCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlLiBUaGF0J3Mgd2hlcmUgSSBzaG91bGQgZmluZCB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3MgZm9yIHRoZSBQSFkgZHJpdmVyLiBJJ20gYXNzdW1pbmcsIG9mIGNvdXJzZSwgdGhhdCB0aGUgY29kZSBmb2xsb3dzIHN0YW5kYXJkIGNvbnZlbnRpb25zIGFuZCB0aGF0J3MgdGhlIHR5cGljYWwgbG9jYXRpb24gZm9yIHRoaXMga2luZCBvZiB0aGluZy4gTGV0J3Mgc2VlIGlmIHRoYXQgYXNzdW1wdGlvbiBob2xkcyB0cnVlLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgYSBjYWxsLCBsaWtlbHkgaW52b2x2aW5nIGBtb2R1bGVfaW5pdGAgb3IgYSBzaW1pbGFyIG1hY3JvLCB0aGF0IHNldHMgZXZlcnl0aGluZyB1cC4gUmlnaHQsIGxldCdzIHNlZSB3aGF0J3MgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMjUxLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODo0NjozNi40NzcyNzA0NTlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTEyMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQ1MCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTQ1MDpcXHRcXHRpZiAocHJpdi1cXHUwMDNlZmlybXdhcmVfdmVyc2lvbiBcXHUwMDNjIDB4MjQwMTEyMDIpIHtcXG4xNDUxOlxcdFxcdFxcdGxpbmttb2RlX21vZF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMjUwMGJhc2VUX0Z1bGxfQklULFxcbjE0NTI6XFx0XFx0XFx0XFx0XFx0IHBoeWRldi1cXHUwMDNlbHBfYWR2ZXJ0aXNpbmcsXFxuMTQ1MzpcXHRcXHRcXHRcXHRcXHQgcGh5ZGV2LVxcdTAwM2VzcGVlZCA9PSBTUEVFRF8yNTAwKTtcXG4xNDU0OlxcdFxcdH1cXG4xNDU1OlxcdFxcbjE0NTY6XFx0XFx0LyogT25seSBzdXBwb3J0cyBmdWxsIGR1cGxleCAqL1xcbjE0NTc6XFx0XFx0cGh5ZGV2LVxcdTAwM2VkdXBsZXggPSBEVVBMRVhfRlVMTDtcXG4xNDU4OlxcdFxcbjE0NTk6XFx0XFx0cmV0dXJuIDA7XFxuMTQ2MDpcXHR9XFxuMTQ2MTpcXHRcXG4xNDYyOlxcdHN0YXRpYyBpbnQgZW44ODExaF9jbGVhcl9pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuMTQ2MzpcXHR7XFxuMTQ2NDpcXHRcXHRpbnQgcmV0O1xcbjE0NjU6XFx0XFxuMTQ2NjpcXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFJUl9QSFlfTUNVX0NNRF8zLFxcbjE0Njc6XFx0XFx0XFx0XFx0ICAgIEFJUl9QSFlfTUNVX0NNRF8zX0RPQ01EKTtcXG4xNDY4OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbjE0Njk6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4xNDcwOlxcdFxcbjE0NzE6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfNCxcXG4xNDcyOlxcdFxcdFxcdFxcdCAgICBBSVJfUEhZX01DVV9DTURfNF9JTlRDTFIpO1xcbjE0NzM6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMTQ3NDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjE0NzU6XFx0XFxuMTQ3NjpcXHRcXHRyZXR1cm4gMDtcXG4xNDc3OlxcdH1cXG4xNDc4OlxcdFxcbjE0Nzk6XFx0c3RhdGljIGlycXJldHVybl90IGVuODgxMWhfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbjE0ODA6XFx0e1xcbjE0ODE6XFx0XFx0aW50IHJldDtcXG4xNDgyOlxcdFxcbjE0ODM6XFx0XFx0cmV0ID0gZW44ODExaF9jbGVhcl9pbnRyKHBoeWRldik7XFxuMTQ4NDpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbjE0ODU6XFx0XFx0XFx0cGh5X2Vycm9yKHBoeWRldik7XFxuMTQ4NjpcXHRcXHRcXHRyZXR1cm4gSVJRX05PTkU7XFxuMTQ4NzpcXHRcXHR9XFxuMTQ4ODpcXHRcXG4xNDg5OlxcdFxcdHBoeV90cmlnZ2VyX21hY2hpbmUocGh5ZGV2KTtcXG4xNDkwOlxcdFxcbjE0OTE6XFx0XFx0cmV0dXJuIElSUV9IQU5ETEVEO1xcbjE0OTI6XFx0fVxcbjE0OTM6XFx0XFxuMTQ5NDpcXHRzdGF0aWMgaW50IGVuODgxMWhfcmVzdW1lKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuMTQ5NTpcXHR7XFxuMTQ5NjpcXHRcXHRjbGtfcmVzdG9yZV9jb250ZXh0KCk7XFxuMTQ5NzpcXHRcXG4xNDk4OlxcdFxcdHJldHVybiBnZW5waHlfcmVzdW1lKHBoeWRldik7XFxuMTQ5OTpcXHR9XFxuMTUwMDpcXHRcXG4xNTAxOlxcdHN0YXRpYyBpbnQgZW44ODExaF9zdXNwZW5kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuMTUwMjpcXHR7XFxuMTUwMzpcXHRcXHRjbGtfc2F2ZV9jb250ZXh0KCk7XFxuMTUwNDpcXHRcXG4xNTA1OlxcdFxcdHJldHVybiBnZW5waHlfc3VzcGVuZChwaHlkZXYpO1xcbjE1MDY6XFx0fVxcbjE1MDc6XFx0XFxuMTUwODpcXHRzdGF0aWMgdm9pZCBhbjg4MTFoYl9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4xNTA5OlxcdHtcXG4xNTEwOlxcdFxcdHN0cnVjdCBlbjg4MTFoX3ByaXYgKnByaXYgPSBwaHlkZXYtXFx1MDAzZXByaXY7XFxuMTUxMTpcXHRcXG4xNTEyOlxcdFxcdGlmIChwcml2LVxcdTAwM2VwYnVzZGV2KSB7XFxuMTUxMzpcXHRcXHRcXHRtZGlvX2RldmljZV9yZW1vdmUocHJpdi1cXHUwMDNlcGJ1c2Rldik7XFxuMTUxNDpcXHRcXHRcXHRtZGlvX2RldmljZV9mcmVlKHByaXYtXFx1MDAzZXBidXNkZXYpO1xcbjE1MTU6XFx0XFx0fVxcbjE1MTY6XFx0fVxcbjE1MTc6XFx0XFxuMTUxODpcXHRzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZW44ODExaF9kcml2ZXJbXSA9IHtcXG4xNTE5OlxcdHtcXG4xNTIwOlxcdFxcdFBIWV9JRF9NQVRDSF9NT0RFTChFTjg4MTFIX1BIWV9JRCksXFxuMTUyMTpcXHRcXHQubmFtZVxcdFxcdFxcdD0gXFxcIkFpcm9oYSBFTjg4MTFIXFxcIixcXG4xNTIyOlxcdFxcdC5wcm9iZVxcdFxcdFxcdD0gZW44ODExaF9wcm9iZSxcXG4xNTIzOlxcdFxcdC5nZXRfZmVhdHVyZXNcXHRcXHQ9IGVuODgxMWhfZ2V0X2ZlYXR1cmVzLFxcbjE1MjQ6XFx0XFx0LmNvbmZpZ19pbml0XFx0XFx0PSBlbjg4MTFoX2NvbmZpZ19pbml0LFxcbjE1MjU6XFx0XFx0LmdldF9yYXRlX21hdGNoaW5nXFx0PSBlbjg4MTFoX2dldF9yYXRlX21hdGNoaW5nLFxcbjE1MjY6XFx0XFx0LmNvbmZpZ19hbmVnXFx0XFx0PSBlbjg4MTFoX2NvbmZpZ19hbmVnLFxcbjE1Mjc6XFx0XFx0LnJlYWRfc3RhdHVzXFx0XFx0PSBlbjg4MTFoX3JlYWRfc3RhdHVzLFxcbjE1Mjg6XFx0XFx0LnJlc3VtZVxcdFxcdFxcdD0gZW44ODExaF9yZXN1bWUsXFxuMTUyOTpcXHRcXHQuc3VzcGVuZFxcdFxcdD0gZW44ODExaF9zdXNwZW5kLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODo0NjozNi40NzczODQ0NTlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzY4Mzk4MTc3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIGBhaXJfZW44ODExaC5jYCBQSFkgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGFpcl9lbjg4MTFoLmNgLCBhIFBIWSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciBBaXJvaGEgRU44ODExSCBhbmQgQU44ODExSEIgRXRoZXJuZXQgUEhZcy4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uLCBhbmQgdGhlIGNyaXRpY2FsIG9uZSBmb3IgZnV6emluZyBhcHBsaWNhYmlsaXR5LCBpcyB3aGV0aGVyIHRoaXMgdHlwZSBvZiBFdGhlcm5ldCBQSFkgaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gYmVmb3JlIEkgd2FzdGUgYW55IHRpbWUuXG5cbkkgcmVtZW1iZXIgdGhlIGZ1enppbmcgZ3VpZGVsaW5lcyB2ZXJ5IGNsZWFybHk6IFwiUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEUuXCIgSSBjYW4gb25seSBmdXp6IGNvZGUgdGhhdCAqYWN0dWFsbHkqIGV4ZWN1dGVzIGluIHRoZXNlIGVtdWxhdGVkIHNldHVwcy4gSWYgaXQncyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUsIHRoZSBmdXp6aW5nIGlzIGEgbm8tZ28sIG5vIG1hdHRlciBob3cgY2xldmVyIHRoZSBjb2RlIG9yIGNvbXBsZXggdGhlIGxvZ2ljIG1pZ2h0IGJlLlxuXG5UaGUgZ3VpZGVsaW5lcyBhcmUgZXhwbGljaXQgYWJvdXQgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUsXCIgbWVudGlvbmluZyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBHUFUgZHJpdmVycyAobGlrZSBtbHhzdywgcWVkLCBhbmQgYW1kZ3B1KSB0aGF0ICpyZXF1aXJlKiBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMsIG5vdCBlbXVsYXRlZCBvbmVzLiBTbywgSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXNlIFBIWSBkZXZpY2VzIChzcGVjaWZpY2FsbHkgTURJTyBwaHkgZHJpdmVycyBsaWtlIGBhaXJfZW44ODExaGApIG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUgb3IgdGhlIE1ESU8gYnVzIHRvIHdvcmsuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhleSBjYW4gYmUgaW5zdGFudGlhdGVkIHdpdGhvdXQgaXQsIG9yIGlmIHRoZXkgcmVxdWlyZSB0aGUgcGh5c2ljYWwgTURJTyBidXMgYW5kIFBIWSBoYXJkd2FyZS5cblxuV2FpdCBhIHNlY29uZOKApmNhbiBJIGVtdWxhdGUgb3IgaW5zdGFudGlhdGUgTURJTyBQSFkgZGV2aWNlcyB3aXRoaW4gUUVNVT8gSSBuZWVkIHRvIGtub3cgaWYgdGhlcmUncyBhbnkgc3VwcG9ydCBmb3IgYSB2aXJ0dWFsIG9yIG1vY2sgTURJTyBidXMgaW4gdGhlIExpbnV4IGtlcm5lbCBvciBpZiBzeXprYWxsZXIgaGFzIGFueSB3b3JrYXJvdW5kcyBmb3IgaXQuIFRpbWUgdG8gc2VhcmNoIHRoZSB0cmVlIGZvciBcIm1kaW8gbW9ja1wiIG9yIFwidmlydHVhbCBtZGlvXCIgYnVzZXMuIFRoYXQncyB0aGUga2V5IHRvIG1ha2luZyB0aGlzIGZ1enphYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTcxNCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjQ2OjQwLjE2MTM2ODU2NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMxODA0NjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW9fZ3Bpb3xtZGlvLWdwaW98bWRpby1uZXRsaW5rfGR1bW15LiptZGlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM9MzgxPWludCBzdG1tYWNfbWRpb19yZXNldChzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy00MTYtXFx0ICogSXQgZG9lc24ndCBjb21wbGV0ZSBpdHMgcmVzZXQgdW50aWwgYXQgbGVhc3Qgb25lIGNsb2NrIGN5Y2xlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzo0MTc6XFx0ICogb24gTURDLCBzbyBwZXJmb3JtIGEgZHVtbXkgbWRpbyByZWFkLiBUbyBiZSB1cGRhdGVkIGZvciBHTUFDNFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNDE4LVxcdCAqIGlmIG5lZWRlZC5cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZz05MD1jb25maWcgTURJT19HUElPXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctOTctXFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnOjk4OlxcdCAgd2lsbCBiZSBjYWxsZWQgbWRpby1ncGlvLlxcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZy05OS1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGU9MTM9b2JqLSQoQ09ORklHX01ESU9fQ0FWSVVNKVxcdFxcdCs9IG1kaW8tY2F2aXVtLm9cXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlOjE0Om9iai0kKENPTkZJR19NRElPX0dQSU8pXFx0XFx0XFx0Kz0gbWRpby1ncGlvLm9cXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlLTE1LW9iai0kKENPTkZJR19NRElPX0hJU0lfRkVNQUMpXFx0XFx0Kz0gbWRpby1oaXNpLWZlbWFjLm9cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMzEtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzozMjpzdHJ1Y3QgbWRpb19ncGlvX2luZm8ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMzMtXFx0c3RydWN0IG1kaW9iYl9jdHJsIGN0cmw7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTM2LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6Mzc6c3RhdGljIGludCBtZGlvX2dwaW9fZ2V0X2RhdGEoc3RydWN0IGRldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6Mzg6XFx0XFx0XFx0ICAgICAgc3RydWN0IG1kaW9fZ3Bpb19pbmZvICpiaXRiYW5nKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMzkte1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYz01NT1zdGF0aWMgdm9pZCBtZGlvX2RpcihzdHJ1Y3QgbWRpb2JiX2N0cmwgKmN0cmwsIGludCBkaXIpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy01Ni17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzo1NzpcXHRzdHJ1Y3QgbWRpb19ncGlvX2luZm8gKmJpdGJhbmcgPVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6NTg6XFx0XFx0Y29udGFpbmVyX29mKGN0cmwsIHN0cnVjdCBtZGlvX2dwaW9faW5mbywgY3RybCk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy01OS1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM9NzY9c3RhdGljIGludCBtZGlvX2dldChzdHJ1Y3QgbWRpb2JiX2N0cmwgKmN0cmwpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy03Ny17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzo3ODpcXHRzdHJ1Y3QgbWRpb19ncGlvX2luZm8gKmJpdGJhbmcgPVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6Nzk6XFx0XFx0Y29udGFpbmVyX29mKGN0cmwsIHN0cnVjdCBtZGlvX2dwaW9faW5mbywgY3RybCk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy04MC1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM9ODQ9c3RhdGljIHZvaWQgbWRpb19zZXQoc3RydWN0IG1kaW9iYl9jdHJsICpjdHJsLCBpbnQgd2hhdClcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTg1LXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjg2OlxcdHN0cnVjdCBtZGlvX2dwaW9faW5mbyAqYml0YmFuZyA9XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzo4NzpcXHRcXHRjb250YWluZXJfb2YoY3RybCwgc3RydWN0IG1kaW9fZ3Bpb19pbmZvLCBjdHJsKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTg4LVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYz05NT1zdGF0aWMgdm9pZCBtZGNfc2V0KHN0cnVjdCBtZGlvYmJfY3RybCAqY3RybCwgaW50IHdoYXQpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy05Ni17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzo5NzpcXHRzdHJ1Y3QgbWRpb19ncGlvX2luZm8gKmJpdGJhbmcgPVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6OTg6XFx0XFx0Y29udGFpbmVyX29mKGN0cmwsIHN0cnVjdCBtZGlvX2dwaW9faW5mbywgY3RybCk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy05OS1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTAyLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTAzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb2JiX29wcyBtZGlvX2dwaW9fb3BzID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTA0LVxcdC5vd25lciA9IFRISVNfTU9EVUxFLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xMTAtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxMTE6c3RhdGljIHN0cnVjdCBtaWlfYnVzICptZGlvX2dwaW9fYnVzX2luaXQoc3RydWN0IGRldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTEyOlxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IG1kaW9fZ3Bpb19pbmZvICpiaXRiYW5nLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTEzLVxcdFxcdFxcdFxcdFxcdCAgaW50IGJ1c19pZClcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTE2LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTE3OlxcdGJpdGJhbmctXFx1MDAzZWN0cmwub3BzID0gXFx1MDAyNm1kaW9fZ3Bpb19vcHM7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xMTgtXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE0MS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE0MjpzdGF0aWMgdm9pZCBtZGlvX2dwaW9fYnVzX2RlaW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xNDMte1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xNDgtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxNDk6c3RhdGljIHZvaWQgbWRpb19ncGlvX2J1c19kZXN0cm95KHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE1MC17XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE1My1cXHRtZGlvYnVzX3VucmVnaXN0ZXIoYnVzKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE1NDpcXHRtZGlvX2dwaW9fYnVzX2RlaW5pdChkZXYpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTU1LX1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE1Ni1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE1NzpzdGF0aWMgaW50IG1kaW9fZ3Bpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTU4LXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE1OTpcXHRzdHJ1Y3QgbWRpb19ncGlvX2luZm8gKmJpdGJhbmc7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xNjAtXFx0c3RydWN0IG1paV9idXMgKm5ld19idXM7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE2Ni1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE2NzpcXHRyZXQgPSBtZGlvX2dwaW9fZ2V0X2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgYml0YmFuZyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xNjgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTcxLVxcdGlmIChwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSkge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTcyOlxcdFxcdGJ1c19pZCA9IG9mX2FsaWFzX2dldF9pZChwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSwgXFxcIm1kaW8tZ3Bpb1xcXCIpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTczLVxcdFxcdGlmIChidXNfaWQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE4MC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE4MTpcXHRuZXdfYnVzID0gbWRpb19ncGlvX2J1c19pbml0KFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIGJpdGJhbmcsIGJ1c19pZCk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xODItXFx0aWYgKCFuZXdfYnVzKVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xODYtXFx0aWYgKHJldClcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE4NzpcXHRcXHRtZGlvX2dwaW9fYnVzX2RlaW5pdChcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE4OC1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTkxLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTkyOnN0YXRpYyB2b2lkIG1kaW9fZ3Bpb19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE5My17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxOTQ6XFx0bWRpb19ncGlvX2J1c19kZXN0cm95KFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTk1LX1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE5Ni1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE5NzpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtZGlvX2dwaW9fb2ZfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE5ODpcXHR7IC5jb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIiwgfSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE5OS1cXHR7IC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxtZGlvLXNtaTBcXFwiIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTIwMS19O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MjAyOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1kaW9fZ3Bpb19vZl9tYXRjaCk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0yMDMtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoyMDQ6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbWRpb19ncGlvX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjIwNTpcXHQucHJvYmUgPSBtZGlvX2dwaW9fcHJvYmUsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoyMDY6XFx0LnJlbW92ZSA9IG1kaW9fZ3Bpb19yZW1vdmUsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0yMDctXFx0LmRyaXZlclxcdFxcdD0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MjA4OlxcdFxcdC5uYW1lXFx0PSBcXFwibWRpby1ncGlvXFxcIixcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjIwOTpcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBtZGlvX2dwaW9fb2ZfbWF0Y2gsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0yMTAtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMjEyLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MjEzOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobWRpb19ncGlvX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0yMTQtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoyMTU6TU9EVUxFX0FMSUFTKFxcXCJwbGF0Zm9ybTptZGlvLWdwaW9cXFwiKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTIxNi1NT0RVTEVfQVVUSE9SKFxcXCJMYXVyZW50IFBpbmNoYXJ0LCBQYXVsaXVzIFphbGVja2FzXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjQ2OjQwLjM5MzIxODc5OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMjYyODMzNDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGFpcl9lbjg4MTFoYCBQSFkgRHJpdmVyIFByb2JlIFNlcXVlbmNlKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYGFpcl9lbjg4MTFoYCBQSFkgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyBpdCdzIG1hdGNoZWQgYW5kIHVsdGltYXRlbHkgcHJvYmVkIHdpdGhpbiB0aGUgc3lzdGVtLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGNvcmUgb2YgdGhlIG1hdHRlcjogYGFpcl9lbjg4MTFoLmNgIGFuZCBpdHMgcmVnaXN0cmF0aW9uIG1lY2hhbmlzbS4gSSdsbCBiZSB0YXJnZXRpbmcgdGhlIGBtb2R1bGVfcGh5X2RyaXZlcmAgbWFjcm8gb3IgYSBkaXJlY3QgY2FsbCB0byBgcGh5X2RyaXZlcl9yZWdpc3RlcmAgd2l0aGluIHRoYXQgc291cmNlIGZpbGUuIFRoYXQncyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgd2hlcmUgdGhlIGRyaXZlciBhbm5vdW5jZXMgaXRzIHByZXNlbmNlIGFuZCBjYXBhYmlsaXRpZXMgdG8gdGhlIGJyb2FkZXIgUEhZIGZyYW1ld29yay4gVW5kZXJzdGFuZGluZyB0aGUgcmVnaXN0cmF0aW9uIHBvaW50IHdpbGwgcHJvdmlkZSB0aGUgY3JpdGljYWwgbGlua2FnZSBiZXR3ZWVuIHRoZSBkcml2ZXIncyBkZWZpbml0aW9uIGFuZCB0aGUgc3lzdGVtJ3MgYWJpbGl0eSB0byBsb2NhdGUgYW5kIHV0aWxpemUgaXQuIEZyb20gdGhlcmUsIEkgY2FuIHRyYWNlIHRoZSBtYXRjaGluZyBwcm9jZXNzIGFuZCB0aGUgZXZlbnR1YWwgcHJvYmUgZnVuY3Rpb24gZXhlY3V0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTI1MSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjQ2OjQzLjY1NjA1NTQzN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY3NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTUyMCxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTUyMDpcXHRcXHRQSFlfSURfTUFUQ0hfTU9ERUwoRU44ODExSF9QSFlfSUQpLFxcbjE1MjE6XFx0XFx0Lm5hbWVcXHRcXHRcXHQ9IFxcXCJBaXJvaGEgRU44ODExSFxcXCIsXFxuMTUyMjpcXHRcXHQucHJvYmVcXHRcXHRcXHQ9IGVuODgxMWhfcHJvYmUsXFxuMTUyMzpcXHRcXHQuZ2V0X2ZlYXR1cmVzXFx0XFx0PSBlbjg4MTFoX2dldF9mZWF0dXJlcyxcXG4xNTI0OlxcdFxcdC5jb25maWdfaW5pdFxcdFxcdD0gZW44ODExaF9jb25maWdfaW5pdCxcXG4xNTI1OlxcdFxcdC5nZXRfcmF0ZV9tYXRjaGluZ1xcdD0gZW44ODExaF9nZXRfcmF0ZV9tYXRjaGluZyxcXG4xNTI2OlxcdFxcdC5jb25maWdfYW5lZ1xcdFxcdD0gZW44ODExaF9jb25maWdfYW5lZyxcXG4xNTI3OlxcdFxcdC5yZWFkX3N0YXR1c1xcdFxcdD0gZW44ODExaF9yZWFkX3N0YXR1cyxcXG4xNTI4OlxcdFxcdC5yZXN1bWVcXHRcXHRcXHQ9IGVuODgxMWhfcmVzdW1lLFxcbjE1Mjk6XFx0XFx0LnN1c3BlbmRcXHRcXHQ9IGVuODgxMWhfc3VzcGVuZCxcXG4xNTMwOlxcdFxcdC5jb25maWdfaW50clxcdFxcdD0gZW44ODExaF9jbGVhcl9pbnRyLFxcbjE1MzE6XFx0XFx0LmhhbmRsZV9pbnRlcnJ1cHRcXHQ9IGVuODgxMWhfaGFuZGxlX2ludGVycnVwdCxcXG4xNTMyOlxcdFxcdC5sZWRfaHdfaXNfc3VwcG9ydGVkXFx0PSBlbjg4MTFoX2xlZF9od19pc19zdXBwb3J0ZWQsXFxuMTUzMzpcXHRcXHQucmVhZF9wYWdlXFx0XFx0PSBhaXJfcGh5X3JlYWRfcGFnZSxcXG4xNTM0OlxcdFxcdC53cml0ZV9wYWdlXFx0XFx0PSBhaXJfcGh5X3dyaXRlX3BhZ2UsXFxuMTUzNTpcXHRcXHQubGVkX2JsaW5rX3NldFxcdFxcdD0gYWlyX2xlZF9ibGlua19zZXQsXFxuMTUzNjpcXHRcXHQubGVkX2JyaWdodG5lc3Nfc2V0XFx0PSBhaXJfbGVkX2JyaWdodG5lc3Nfc2V0LFxcbjE1Mzc6XFx0XFx0LmxlZF9od19jb250cm9sX3NldFxcdD0gYWlyX2xlZF9od19jb250cm9sX3NldCxcXG4xNTM4OlxcdFxcdC5sZWRfaHdfY29udHJvbF9nZXRcXHQ9IGFpcl9sZWRfaHdfY29udHJvbF9nZXQsXFxuMTUzOTpcXHR9LFxcbjE1NDA6XFx0e1xcbjE1NDE6XFx0XFx0UEhZX0lEX01BVENIX01PREVMKEFOODgxMUhCX1BIWV9JRCksXFxuMTU0MjpcXHRcXHQubmFtZVxcdFxcdFxcdD0gXFxcIkFpcm9oYSBBTjg4MTFIQlxcXCIsXFxuMTU0MzpcXHRcXHQucHJvYmVcXHRcXHRcXHQ9IGFuODgxMWhiX3Byb2JlLFxcbjE1NDQ6XFx0XFx0LnJlbW92ZVxcdFxcdFxcdD0gYW44ODExaGJfcmVtb3ZlLFxcbjE1NDU6XFx0XFx0LmdldF9mZWF0dXJlc1xcdFxcdD0gZW44ODExaF9nZXRfZmVhdHVyZXMsXFxuMTU0NjpcXHRcXHQuY29uZmlnX2luaXRcXHRcXHQ9IGFuODgxMWhiX2NvbmZpZ19pbml0LFxcbjE1NDc6XFx0XFx0LmdldF9yYXRlX21hdGNoaW5nXFx0PSBlbjg4MTFoX2dldF9yYXRlX21hdGNoaW5nLFxcbjE1NDg6XFx0XFx0LmNvbmZpZ19hbmVnXFx0XFx0PSBlbjg4MTFoX2NvbmZpZ19hbmVnLFxcbjE1NDk6XFx0XFx0LnJlYWRfc3RhdHVzXFx0XFx0PSBlbjg4MTFoX3JlYWRfc3RhdHVzLFxcbjE1NTA6XFx0XFx0LnJlc3VtZVxcdFxcdFxcdD0gZW44ODExaF9yZXN1bWUsXFxuMTU1MTpcXHRcXHQuc3VzcGVuZFxcdFxcdD0gZW44ODExaF9zdXNwZW5kLFxcbjE1NTI6XFx0XFx0LmNvbmZpZ19pbnRyXFx0XFx0PSBlbjg4MTFoX2NsZWFyX2ludHIsXFxuMTU1MzpcXHRcXHQuaGFuZGxlX2ludGVycnVwdFxcdD0gZW44ODExaF9oYW5kbGVfaW50ZXJydXB0LFxcbjE1NTQ6XFx0XFx0LmxlZF9od19pc19zdXBwb3J0ZWRcXHQ9IGVuODgxMWhfbGVkX2h3X2lzX3N1cHBvcnRlZCxcXG4xNTU1OlxcdFxcdC5yZWFkX3BhZ2VcXHRcXHQ9IGFpcl9waHlfcmVhZF9wYWdlLFxcbjE1NTY6XFx0XFx0LndyaXRlX3BhZ2VcXHRcXHQ9IGFpcl9waHlfd3JpdGVfcGFnZSxcXG4xNTU3OlxcdFxcdC5sZWRfYmxpbmtfc2V0XFx0XFx0PSBhaXJfbGVkX2JsaW5rX3NldCxcXG4xNTU4OlxcdFxcdC5sZWRfYnJpZ2h0bmVzc19zZXRcXHQ9IGFpcl9sZWRfYnJpZ2h0bmVzc19zZXQsXFxuMTU1OTpcXHRcXHQubGVkX2h3X2NvbnRyb2xfc2V0XFx0PSBhaXJfbGVkX2h3X2NvbnRyb2xfc2V0LFxcbjE1NjA6XFx0XFx0LmxlZF9od19jb250cm9sX2dldFxcdD0gYWlyX2xlZF9od19jb250cm9sX2dldCxcXG4xNTYxOlxcdH0gfTtcXG4xNTYyOlxcdFxcbjE1NjM6XFx0bW9kdWxlX3BoeV9kcml2ZXIoZW44ODExaF9kcml2ZXIpO1xcbjE1NjQ6XFx0XFxuMTU2NTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGVuODgxMWhfdGJsW10gPSB7XFxuMTU2NjpcXHRcXHR7IFBIWV9JRF9NQVRDSF9NT0RFTChFTjg4MTFIX1BIWV9JRCkgfSxcXG4xNTY3OlxcdFxcdHsgUEhZX0lEX01BVENIX01PREVMKEFOODgxMUhCX1BIWV9JRCkgfSxcXG4xNTY4OlxcdFxcdHsgfVxcbjE1Njk6XFx0fTtcXG4xNTcwOlxcdFxcbjE1NzE6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShtZGlvLCBlbjg4MTFoX3RibCk7XFxuMTU3MjpcXHRNT0RVTEVfRklSTVdBUkUoRU44ODExSF9NRDMyX0RNKTtcXG4xNTczOlxcdE1PRFVMRV9GSVJNV0FSRShFTjg4MTFIX01EMzJfRFNQKTtcXG4xNTc0OlxcdE1PRFVMRV9GSVJNV0FSRShBTjg4MTFIQl9NRDMyX0RNKTtcXG4xNTc1OlxcdE1PRFVMRV9GSVJNV0FSRShBTjg4MTFIQl9NRDMyX0RTUCk7XFxuMTU3NjpcXHRcXG4xNTc3OlxcdE1PRFVMRV9ERVNDUklQVElPTihcXFwiQWlyb2hhIEVOODgxMUggYW5kIEFOODgxMUhCIFBIWSBkcml2ZXJzXFxcIik7XFxuMTU3ODpcXHRNT0RVTEVfQVVUSE9SKFxcXCJBaXJvaGFcXFwiKTtcXG4xNTc5OlxcdE1PRFVMRV9BVVRIT1IoXFxcIkVyaWMgV291ZHN0cmEgXFx1MDAzY2VyaWN3b3Vkc0BnbWFpbC5jb21cXHUwMDNlXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjQ2OjQzLjY1NjE2Mzc3N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODAxMTAxNjg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBhaXJfd3JpdGVfYnVmYCBEdXJpbmcgRmlybXdhcmUgTG9hZGluZyoqXG5cbk9rYXksIHNvIGBhaXJfd3JpdGVfYnVmYCBwb3BzIHVwIGR1cmluZyB0aGUgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGFuZCB3YXJyYW50cyBhIGRlZXBlciBkaXZlLiBUaGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIG1hcCB0aGUgY2FsbCBncmFwaC4gTGV0J3Mgc2VlIHdobydzIGFjdHVhbGx5ICpjYWxsaW5nKiB0aGlzIGZ1bmN0aW9uLiBLbm93aW5nIHRoZSBjb250ZXh0IG9mIHRob3NlIGNhbGxzIHdpbGwgYmUgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBhbmQgaWRlbnRpZnkgdGhlIHBvaW50cyB3aGVyZSBkYXRhIGlzIGJlaW5nIHdyaXR0ZW4sIGFuZCB3aHkuIFRoaXMgY291bGQgYmUgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCBpbiB0ZXJtcyBvZiBmbGFzaGluZyBvciBpbml0aWFsaXphdGlvbiwgb3IgbWF5YmUgaXQncyBqdXN0IGEgZGlhZ25vc3RpYyBvciBsb2dnaW5nIGZ1bmN0aW9uLiBUaW1lIHRvIGJ1c3Qgb3V0IHRoZSBkZWJ1Z2dlciBhbmQgc3RhcnQgZGlnZ2luZyFcblxuXG4iLCJJbnB1dFRva2VucyI6MjY4NjQsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjQ2OjQ1LjQ1NzI2Nzk5NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDczOTQ0MDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWlyX3dyaXRlX2J1ZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0yNDg9c3RhdGljIGludCBfX2Fpcl9wYnVzX3JlZ193cml0ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yNzItXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjczOnN0YXRpYyBpbnQgX19haXJfd3JpdGVfYnVmKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUzMiBhZGRyZXNzLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTI3NC1cXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzA4LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjMwOTpzdGF0aWMgaW50IGFpcl93cml0ZV9idWYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIGFkZHJlc3MsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzEwLVxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzIzLVxcdGlmIChzYXZlZF9wYWdlIFxcdTAwM2U9IDApIHtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzozMjQ6XFx0XFx0cmV0ID0gX19haXJfd3JpdGVfYnVmKHBoeWRldiwgYWRkcmVzcywgZncpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTMyNS1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTQwMz1zdGF0aWMgaW50IGFuODgxMWhiX2xvYWRfZmlsZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBjb25zdCBjaGFyICpuYW1lLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDEzLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjQxNDpcXHRyZXQgPSBhaXJfd3JpdGVfYnVmKHBoeWRldiwgYWRkcmVzcywgIGZ3KTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy00MTUtXFx0cmVsZWFzZV9maXJtd2FyZShmdyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz01MDg9c3RhdGljIGludCBlbjg4MTFoX2xvYWRfZmlybXdhcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTUzMi1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1MzM6XFx0cmV0ID0gYWlyX3dyaXRlX2J1ZihwaHlkZXYsIEFJUl9GV19BRERSX0RNLCAgZncxKTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01MzQtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01MzYtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTM3OlxcdHJldCA9IGFpcl93cml0ZV9idWYocGh5ZGV2LCBBSVJfRldfQUREUl9EU1AsIGZ3Mik7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTM4LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODo0Njo0NS41MDQ2NjgxOFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDMyOTcwNjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlRyYWNpbmcgRnVuY3Rpb24gQ2FsbHM6IGBhbjg4MTFoYl9sb2FkX2ZpbGVgIGFuZCBgZW44ODExaF9sb2FkX2Zpcm13YXJlYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGVjdXRpb24gZmxvdyBzdXJyb3VuZGluZyBgYW44ODExaGJfbG9hZF9maWxlYCBhbmQgYGVuODgxMWhfbG9hZF9maXJtd2FyZWAuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBpZGVudGlmeSBldmVyeSBpbnN0YW5jZSB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlICpjYWxsZWQqIHdpdGhpbiB0aGUgY29kZWJhc2UuIFRoZSBnb2FsIGhlcmUgaXMgdG8gbWFwIG91dCB0aGVpciBkZXBlbmRlbmNpZXMgYW5kIGhvdyB0aGV5IGZpdCBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS4gQXJlIHRoZXNlIGNvcmUgbG9hZGluZyBmdW5jdGlvbnM/IEFyZSB0aGV5IHBhcnQgb2YgYSBsYXJnZXIgZmlybXdhcmUgdXBkYXRlIHByb2Nlc3MsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBBIHNpbXBsZSBjYWxsIGdyYXBoIHRyYWNlIHNob3VsZCBwcm92aWRlIHRob3NlIGFuc3dlcnMuIEZyb20gdGhlcmUsIEknbGwgYmUgYWJsZSB0byBiZXR0ZXIgdW5kZXJzdGFuZCB0aGUgY29udGV4dHMgdGhlc2UgZnVuY3Rpb25zIG9wZXJhdGUgaW4gYW5kIHRoZWlyIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMuIEl0J3MgdGltZSB0byBkaWcgaW4gYW5kIGZvbGxvdyB0aGUgYnJlYWRjcnVtYnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3ODMzLCJPdXRwdXRUb2tlbnMiOjYxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6NDY6NDcuNTM3NzA2NzFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTcyMDczOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIoYW44ODExaGJfbG9hZF9maXJtd2FyZXxlbjg4MTFoX2xvYWRfZmlybXdhcmUpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTQ0Mz1zdGF0aWMgaW50IGFuODgxMWhiX21jdV9kZWFzc2VydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDY3LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjQ2ODpzdGF0aWMgaW50IGFuODgxMWhiX2xvYWRfZmlybXdhcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy00Njkte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTA3LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjUwODpzdGF0aWMgaW50IGVuODgxMWhfbG9hZF9maXJtd2FyZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTUwOS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01MTktXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTIwOlxcdFxcdGdvdG8gZW44ODExaF9sb2FkX2Zpcm13YXJlX3JlbDE7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTIxLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTI0LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjUyNTpcXHRcXHRnb3RvIGVuODgxMWhfbG9hZF9maXJtd2FyZV9vdXQ7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTI2LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTMwLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjUzMTpcXHRcXHRnb3RvIGVuODgxMWhfbG9hZF9maXJtd2FyZV9vdXQ7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTMyLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTM0LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjUzNTpcXHRcXHRnb3RvIGVuODgxMWhfbG9hZF9maXJtd2FyZV9vdXQ7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTM2LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTM4LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjUzOTpcXHRcXHRnb3RvIGVuODgxMWhfbG9hZF9maXJtd2FyZV9vdXQ7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTQwLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTQzLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjU0NDpcXHRcXHRnb3RvIGVuODgxMWhfbG9hZF9maXJtd2FyZV9vdXQ7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTQ3LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjU0ODpcXHRcXHRnb3RvIGVuODgxMWhfbG9hZF9maXJtd2FyZV9vdXQ7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTUxLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjU1Mjplbjg4MTFoX2xvYWRfZmlybXdhcmVfb3V0OlxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTU1My1cXHRyZWxlYXNlX2Zpcm13YXJlKGZ3Mik7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTU0LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjU1NTplbjg4MTFoX2xvYWRfZmlybXdhcmVfcmVsMTpcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01NTYtXFx0cmVsZWFzZV9maXJtd2FyZShmdzEpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MTA4MD1zdGF0aWMgaW50IGFuODgxMWhiX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMTA5LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjExMTA6XFx0cmV0ID0gYW44ODExaGJfbG9hZF9maXJtd2FyZShwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTExMTEtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTExNTE9c3RhdGljIGludCBlbjg4MTFoX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMTYxLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjExNjI6XFx0cmV0ID0gZW44ODExaF9sb2FkX2Zpcm13YXJlKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTE2My1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6NDY6NDcuNjkzNDM0OTk4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc1NDQ2MDc3ODYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIE1ESU8gUEhZIERyaXZlciBSZWFjaGFiaWxpdHkgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSBgYWlyX2VuODgxMWguY2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBBSVJfRU44ODExSF9QSFlgIGNvbXBvbmVudCwgaXMgZXZlbiAqcmVhY2hhYmxlKiB3aXRoaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGlzOiBkb2VzIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLCB0aGUgZ28tdG8gcGxhdGZvcm1zIGZvciBmdXp6aW5nLCBhY3R1YWxseSAqZW11bGF0ZSogdGhlIEFpcm9oYSBFTjg4MTFIIC8gQU44ODExSEIgMi41IEdpZ2FiaXQgRXRoZXJuZXQgUEhZIGNoaXA/XG5cbkknbSB0aGlua2luZyBhYm91dCB0aGUgaGFyZHdhcmUgcmVxdWlyZW1lbnRzLiBUaGlzIHNwZWNpZmljIFBIWSBjaGlwIHJlbGllcyBvbiBhbiBNRElPIGJ1cyBmb3IgY29tbXVuaWNhdGlvbi4gSSBuZWVkIHRvIGtub3cgaWYgYW55IHZpcnR1YWwgZW52aXJvbm1lbnQsIGxpa2UgdGhvc2UgdXNlZCB3aXRoIHN5emthbGxlciwgaGFzIGEgdmlydHVhbCBNRElPIGJ1cyBvciBlbXVsYXRlcyBhIGRldmljZSB0aGF0IHdvdWxkIHByb2JlIGZvciB0aGlzIEFpcm9oYSBQSFkgd2l0aCBpdHMgc3BlY2lmaWMgSUQgKGAweDAzYTJhNDExYCBvciBgMHhjMGZmMDRhMGApLlxuXG5Gcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhlIGFuc3dlciBpcyBuby4gU3RhbmRhcmQgUUVNVSBzZXR1cHMgdXNlIHZpcnR1YWwgbmV0d29yayBkZXZpY2VzIOKAkyBlMTAwMCwgdmlydGlvLW5ldCwgZXRjLiDigJMgYnV0IG5vbmUgb2YgdGhlc2UgZXZlbiByZW1vdGVseSByZXNlbWJsZSB0aGUgQWlyb2hhIEVOODgxMUguIFRoaXMgaXMgYSBwaHlzaWNhbCB0cmFuc2NlaXZlciwgYSBwaWVjZSBvZiBhY3R1YWwgaGFyZHdhcmUgdXN1YWxseSBmb3VuZCBvbiBwaHlzaWNhbCBib2FyZHMgYW5kIHJvdXRlcnMsIGxpa2UgdGhvc2UgdXNpbmcgTWVkaWFUZWsgRmlsb2dpYyBTb0NzLiBBaXJvaGEsIGFmdGVyIGFsbCwgaXMgYSBNZWRpYVRlayBzdWJzaWRpYXJ5IGFuZCB0aGVpciBjaGlwcyBhcmUgdXNlZCBpbiBwaHlzaWNhbCBoYXJkd2FyZS5cblxuTm93LCBsZXQncyBjb25zdWx0IHRoZSB0cmlhZ2UgZ3VpZGVsaW5lcyBvbiBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuIEl0J3MgY2xlYXI6IGlmIHRoZSBjb2RlICpjYW4ndCogZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGl0J3MgYSBuby1nbyBmb3IgZnV6emluZy4gVGhlIGd1aWRlbGluZXMgZXhwbGljaXRseSBtZW50aW9uIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBsaWtlIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMuIFRoaXMgYGFpcl9lbjg4MTFoLmNgIGRyaXZlciBmb3IgYSBwaHlzaWNhbCBFdGhlcm5ldCBQSFkgZml0cyB0aGF0IGRlc2NyaXB0aW9uIHBlcmZlY3RseS5cblxuVGhlIGZhY3QgaXMsIHRoaXMgZHJpdmVyIG5lZWRzIGEgcGh5c2ljYWwgQWlyb2hhIFBIWSBvbiBhbiBNRElPIGJ1cyB3aXRoIGEgc3BlY2lmaWMgdmVuZG9yIElELiBUaGlzIGlzIG5vdCBzb21ldGhpbmcgdGhhdCBpcyBlbXVsYXRlZCBpbiBRRU1VLiBUaGF0IG1ha2VzIGl0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igb3VyIHB1cnBvc2VzLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGlzOiBJIHNlZSB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyBvbmx5IHRoZSBgYWlyX2VuODgxMWguY2AgZmlsZSBhbmQgb25seSB0aGUgYGFpcl93cml0ZV9idWYoKWAgZnVuY3Rpb24sIHdoZXJlIGEgY2hlY2sgZm9yIGBmdy1cdTAwM2VzaXplICUgNGAgaGFzIGJlZW4gYWRkZWQuIE5vIG90aGVyIGZpbGVzIGFyZSB0b3VjaGVkLiBUaGUgZHJpdmVyIGlzIGVuYWJsZWQgdmlhIGBDT05GSUdfQUlSX0VOODgxMUhfUEhZYC4gVGhlIGhhcmR3YXJlIGRlcGVuZGVuY3kgaXMgdGhlIEFpcm9oYSBFTjg4MTFIL0FOODgxMUhCIDIuNUcgRXRoZXJuZXQgUEhZLiBUaGUga2V5IHBvaW50IGlzIHRoYXQgaXRzIHJlYWNoYWJpbGl0eSBpcyBwcmVkaWNhdGVkIG9uIHBoeXNpY2FsIGhhcmR3YXJlIG9uIGFuIE1ESU8gYnVzLCBhbmQgdGhlcmVmb3JlIGl0IGlzIG5vdCByZWFjaGFibGUgaW4gUUVNVS5cblxuR2l2ZW4gYWxsIG9mIHRoaXMsIHRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIHNob3VsZCBhYnNvbHV0ZWx5IGJlIHNldCB0byBgZmFsc2VgLiBMZXQncyBwcmVwYXJlIHRoZSByZWFzb25pbmcsIHRoZSByZXF1aXJlZCBjb25maWdzLCBhbmQgcmVtZW1iZXIgdG8gbGVhdmUgdGhlIGZvY3VzIHN5bWJvbHMgZW1wdHksIHNpZ25hbGluZyB0aGF0IHRoaXMgaXNuJ3QgYSBmdXp6aW5nIHRhcmdldC5cblxuVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NDQ4LCJPdXRwdXRUb2tlbnMiOjE0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODo0ODowMy4xMzk1MTcyMjFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjAzODYyMDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFJUl9FTjg4MTFIX1BIWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgYWlyX3dyaXRlX2J1ZmAgaW4gYGRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jYCwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIHRoZSBBaXJvaGEgRU44ODExSCBhbmQgQU44ODExSEIgMi41RyBFdGhlcm5ldCBQSFlzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBBaXJvaGEgUEhZIGhhcmR3YXJlIGNvbm5lY3RlZCB2aWEgTURJTywgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBSVJfRU44ODExSF9QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGFpcl93cml0ZV9idWZgIGluIGBkcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguY2AsIHdoaWNoIGlzIGEgZHJpdmVyIGZvciB0aGUgQWlyb2hhIEVOODgxMUggYW5kIEFOODgxMUhCIDIuNUcgRXRoZXJuZXQgUEhZcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgQWlyb2hhIFBIWSBoYXJkd2FyZSBjb25uZWN0ZWQgdmlhIE1ESU8sIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjQ4OjAzLjI1OTkyMDMyMloiLCJTZXEiOjIwLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowb7n7k[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-04 18:26:29 +0000 UTC FinishedAt: 2026-09-04 18:48:04 +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+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FJUl9FTjg4MTFIX1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7JiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBhaXJfd3JpdGVfYnVmYCBpbiBgZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmNgLCB3aGljaCBpcyBhIGRyaXZlciBmb3IgdGhlIEFpcm9oYSBFTjg4MTFIIGFuZCBBTjg4MTFIQiAyLjVHIEV0aGVybmV0IFBIWXMuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHBoeXNpY2FsIEFpcm9oYSBQSFkgaGFyZHdhcmUgY29ubmVjdGVkIHZpYSBNRElPLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKS4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjQ2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYzQxMWFjODRkN2NiOWQ0NjA5MjA3ZGZjYzA1OTI0ZDI3MmFmZGNjZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMTg6NDY6MjIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMgYi9kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguY1xuaW5kZXggMGVlYjdiOWE0ZTI2MC4uMzRkMjcyN2U4MjIyYiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguY1xuQEAgLTMxMiw2ICYjNDM7MzEyLDEyIEBAIHN0YXRpYyBpbnQgYWlyX3dyaXRlX2J1ZihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MzIgYWRkcmVzcyxcbiBcdGludCBzYXZlZF9wYWdlO1xuIFx0aW50IHJldCA9IDA7XG4gXG4mIzQzO1x0aWYgKGZ3LVx1MDAzZXNpemUgJSA0KSB7XG4mIzQzO1x0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7ZmlybXdhcmUgc2l6ZSAlenUgaXMgbm90IGEgbXVsdGlwbGUgb2YgNFxcblwmIzM0OyxcbiYjNDM7XHRcdFx0ICAgZnctXHUwMDNlc2l6ZSk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0c2F2ZWRfcGFnZSA9IHBoeV9zZWxlY3RfcGFnZShwaHlkZXYsIEFJUl9QSFlfUEFHRV9FWFRFTkRFRF80KTtcbiBcbiBcdGlmIChzYXZlZF9wYWdlIFx1MDAzZT0gMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjQ2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FJUl9FTjg4MTFIX1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgYWlyX3dyaXRlX2J1ZmAgaW4gYGRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jYCwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIHRoZSBBaXJvaGEgRU44ODExSCBhbmQgQU44ODExSEIgMi41RyBFdGhlcm5ldCBQSFlzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBBaXJvaGEgUEhZIGhhcmR3YXJlIGNvbm5lY3RlZCB2aWEgTURJTywgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM0MTFhYzg0ZDdjYjlkNDYwOTIwN2RmY2MwNTkyNGQyNzJhZmRjY2UKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIFNlcCA0IDE4OjQ2OjIyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMgYi9kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYwppbmRleCAwZWViN2I5YTRlMjYwLi4zNGQyNzI3ZTgyMjJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYwpAQCAtMzEyLDYgJiM0MzszMTIsMTIgQEAgc3RhdGljIGludCBhaXJfd3JpdGVfYnVmKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUzMiBhZGRyZXNzLAogCWludCBzYXZlZF9wYWdlOwogCWludCByZXQgPSAwOwogCiYjNDM7CWlmIChmdy0mZ3Q7c2l6ZSAlIDQpIHsKJiM0MzsJCXBoeWRldl9lcnIocGh5ZGV2LCAmIzM0O2Zpcm13YXJlIHNpemUgJXp1IGlzIG5vdCBhIG11bHRpcGxlIG9mIDRcbiYjMzQ7LAomIzQzOwkJCSAgIGZ3LSZndDtzaXplKTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiAJc2F2ZWRfcGFnZSA9IHBoeV9zZWxlY3RfcGFnZShwaHlkZXYsIEFJUl9QSFlfUEFHRV9FWFRFTkRFRF80KTsKIAogCWlmIChzYXZlZF9wYWdlICZndDs9IDApIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkzMwoJCQkJCQkJb3V0cHV0OiA2OQoJCQkJCQkJdGhvdWdodHM6IDEyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBOZXR3b3JrIFBIWSBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguY2AuIE15IGZpcnN0IHRob3VnaHQgaXMsICYjMzQ7V2hhdCYjMzk7cyB0aGlzIGRyaXZlciBhYm91dD8mIzM0OyBJIG5lZWQgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHdoYXQgdGhlIGBhaXJfZW44ODExaC5jYCBkcml2ZXIgaXMgcmVzcG9uc2libGUgZm9yLiBJcyBpdCBhIGNvbW1vbiBvciBuaWNoZSBQSFk/IElzIGl0IGZvciBhIHNwZWNpZmljIHR5cGUgb2YgbmV0d29yayBpbnRlcmZhY2U/CgpJIG5lZWQgdG8gcXVpY2tseSBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgc29tZXRoaW5nIEkgY2FuIGFjdHVhbGx5ICp0ZXN0KiBlZmZlY3RpdmVseSB3aXRoaW4gbXkgZXhpc3RpbmcgZnV6emluZyBzZXR1cC4gSXMgdGhpcyBhY2Nlc3NpYmxlIHdpdGhpbiBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZT8gRG9lcyBpdCByZXF1aXJlIHNvbWUgc3BlY2lhbGl6ZWQgaGFyZHdhcmUgbGlrZSBhbiBNRElPIGJ1cyBvciBhIHNwZWNpZmljIEV0aGVybmV0IFBIWSB0aGF0IEkmIzM5O2QgbmVlZCB0byBzaW11bGF0ZSBvciBhY3F1aXJlIHBoeXNpY2FsbHk/IFRoYXQmIzM5O3MgYSBjcml0aWNhbCBmaXJzdCBzdGVwLgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gd29yay4gSSYjMzk7bGwgdXNlIGVpdGhlciBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgYW5kIGltcG9ydGFudGx5LCBpdHMgS2NvbmZpZyBlbnRyeS4gVGhlIEtjb25maWcgd2lsbCB0ZWxsIG1lIGhvdyB0aGlzIGRyaXZlciBpcyBjb25maWd1cmVkLCBpdHMgZGVwZW5kZW5jaWVzLCBhbmQgYW55IHJlbGV2YW50IG9wdGlvbnMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNsdWVzIEkgbmVlZCB0byBkZXRlcm1pbmUgaXRzIHJlYWNoYWJpbGl0eSBhbmQgcG90ZW50aWFsIGltcGFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtBSVJfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxMTM0IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz04MT1jb25maWcgQVMyMVhYWF9QSFlcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy05Mi1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjkzOmNvbmZpZyBBSVJfQU44ODAxX1BIWVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctOTQtXHR0cmlzdGF0ZSBcJiMzNDtBaXJvaGEgQU44ODAxIEdpZ2FiaXQgUEhZXCYjMzQ7XG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo5NTpcdHNlbGVjdCBBSVJfTkVUX1BIWUxJQlxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctOTYtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctOTgtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo5OTpjb25maWcgQUlSX0VOODgxMUhfUEhZXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xMDAtXHR0cmlzdGF0ZSBcJiMzNDtBaXJvaGEgRU44ODExSCAyLjUgR2lnYWJpdCBQSFlcJiMzNDtcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjEwMTpcdHNlbGVjdCBBSVJfTkVUX1BIWUxJQlxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTAyLVx0c2VsZWN0IFBIWV9DT01NT05fUFJPUFNcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xMDUtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxMDY6Y29uZmlnIEFJUl9ORVRfUEhZTElCXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xMDctXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT0zMj1vYmotJChDT05GSUdfQURJTjExNDBfUEhZKVx0JiM0Mzs9IGFkaW4xMTQwLXBoeS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MzM6b2JqLSQoQ09ORklHX0FJUl9BTjg4MDFfUEhZKVx0JiM0Mzs9IGFpcl9hbjg4MDEub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19BSVJfRU44ODExSF9QSFkpICAgJiM0Mzs9IGFpcl9lbjg4MTFoLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTozNTpvYmotJChDT05GSUdfQUlSX05FVF9QSFlMSUIpXHQmIzQzOz0gYWlyX3BoeV9saWIub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTM2LW9iai0kKENPTkZJR19BTURfUEhZKVx0XHQmIzQzOz0gYW1kLm9cbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTYxLSNkZWZpbmUgQURJTjEzMDBfUEhZX1NUQVRVUzFcdFx0XHQweDAwMWFcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6NjI6I2RlZmluZSAgIEFESU4xMzAwX1BBSVJfMDFfU1dBUFx0XHRcdEJJVCgxMSlcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNjMtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYz03NDM9c3RhdGljIGludCBhZGluX21kaXhfdXBkYXRlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy03NzMtXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjc3NDpcdHN3YXBwZWQgPSAhIShyZWcgXHUwMDI2IEFESU4xMzAwX1BBSVJfMDFfU1dBUCk7XG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTc3NS1cbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jPTk3Nz1zdGF0aWMgaW50IGFkaW5fY2FibGVfdGVzdF9yZXBvcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTk4MS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6OTgyOlx0Zm9yIChwYWlyID0gRVRIVE9PTF9BX0NBQkxFX1BBSVJfQTsgcGFpciBcdTAwM2M9IEVUSFRPT0xfQV9DQUJMRV9QQUlSX0Q7IHBhaXImIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTk4My1cdFx0cmV0ID0gYWRpbl9jYWJsZV90ZXN0X3JlcG9ydF9wYWlyKHBoeWRldiwgcGFpcik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0xMjQtLyogTURJT19NTURfVkVORDEgUmVnaXN0ZXJzICovXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjEyNTojZGVmaW5lIEFOODgwMV9QSFlfVFhfUEFJUl9ETFlfU0VMX0dCRVx0MHgxM1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoxMjY6I2RlZmluZSAgIEFOODgwMV9QSFlfUEFJUl9ETFlfU0VMX0FfR0JFXHRHRU5NQVNLKDE0LCAxMilcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6MTI3OiNkZWZpbmUgICBBTjg4MDFfUEhZX1BBSVJfRExZX1NFTF9CX0dCRVx0R0VOTUFTSygxMCwgOClcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6MTI4OiNkZWZpbmUgICBBTjg4MDFfUEhZX1BBSVJfRExZX1NFTF9DX0dCRVx0R0VOTUFTSyg2LCA0KVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoxMjk6I2RlZmluZSAgIEFOODgwMV9QSFlfUEFJUl9ETFlfU0VMX0RfR0JFXHRHRU5NQVNLKDIsIDApXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTEzMC0jZGVmaW5lIEFOODgwMV9QSFlfUlhBRENfQ1RSTFx0XHQweGQ4XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYz05MDI9c3RhdGljIGludCBhbjg4MDFyX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05MjQtXHQgKi9cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTI1Olx0cmV0ID0gcGh5X3dyaXRlX3BhZ2VkKHBoeWRldiwgQUlSX1BIWV9QQUdFX0VYVEVOREVEXzEsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTkyNi1cdFx0XHQgICAgICBBTjg4MDFfRVhUX1JFR19QSFksXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05NTgtXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjk1OTpcdFx0XHQgICAgQU44ODAxX1BIWV9UWF9QQUlSX0RMWV9TRUxfR0JFLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5NjA6XHRcdFx0ICAgIEZJRUxEX1BSRVAoQU44ODAxX1BIWV9QQUlSX0RMWV9TRUxfQV9HQkUsIDQpIHxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTYxOlx0XHRcdCAgICBGSUVMRF9QUkVQKEFOODgwMV9QSFlfUEFJUl9ETFlfU0VMX0NfR0JFLCA0KSk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk2Mi1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzQtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzozNTojZGVmaW5lIEFJUl9GV19BRERSX0RNXHQweDAwMDAwMDAwXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzozNjojZGVmaW5lIEFJUl9GV19BRERSX0RTUFx0MHgwMDEwMDAwMFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzctXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0zOC0vKiBNSUkgUmVnaXN0ZXJzICovXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzozOTojZGVmaW5lIEFJUl9BVVhfQ1RSTF9TVEFUVVNcdFx0MHgxZFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDA6I2RlZmluZSAgIEFJUl9BVVhfQ1RSTF9TVEFUVVNfU1BFRURfTUFTS1x0R0VOTUFTSyg0LCAyKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDE6I2RlZmluZSAgIEFJUl9BVVhfQ1RSTF9TVEFUVVNfU1BFRURfMTBcdFx0MHgwXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo0MjojZGVmaW5lICAgQUlSX0FVWF9DVFJMX1NUQVRVU19TUEVFRF8xMDBcdFx0MHg0XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo0MzojZGVmaW5lICAgQUlSX0FVWF9DVFJMX1NUQVRVU19TUEVFRF8xMDAwXHQweDhcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjQ0OiNkZWZpbmUgICBBSVJfQVVYX0NUUkxfU1RBVFVTX1NQRUVEXzI1MDBcdDB4Y1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDUtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDktXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1MDojZGVmaW5lIEFJUl9QSFlfTUNVX0NNRF8wXHRcdDB4ODAwYlxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTE6I2RlZmluZSBBSVJfUEhZX01DVV9DTURfMVx0XHQweDgwMGNcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjUyOiNkZWZpbmUgQUlSX1BIWV9NQ1VfQ01EXzFfTU9ERTFcdFx0XHQweDBcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjUzOiNkZWZpbmUgQUlSX1BIWV9NQ1VfQ01EXzJcdFx0MHg4MDBkXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1NDojZGVmaW5lIEFJUl9QSFlfTUNVX0NNRF8yX01PREUxXHRcdFx0MHgwXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1NTojZGVmaW5lIEFJUl9QSFlfTUNVX0NNRF8zXHRcdDB4ODAwZVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTY6I2RlZmluZSBBSVJfUEhZX01DVV9DTURfM19NT0RFMVx0XHRcdDB4MTEwMVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTc6I2RlZmluZSBBSVJfUEhZX01DVV9DTURfM19ET0NNRFx0XHRcdDB4MTEwMFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTg6I2RlZmluZSBBSVJfUEhZX01DVV9DTURfNFx0XHQweDgwMGZcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjU5OiNkZWZpbmUgQUlSX1BIWV9NQ1VfQ01EXzRfTU9ERTFcdFx0XHQweDAwMDJcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjYwOiNkZWZpbmUgQUlSX1BIWV9NQ1VfQ01EXzRfQ0FCTEVfUEFJUl9BXHRcdDB4MDBkN1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjE6I2RlZmluZSBBSVJfUEhZX01DVV9DTURfNF9DQUJMRV9QQUlSX0JcdFx0MHgwMGQ4XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo2MjojZGVmaW5lIEFJUl9QSFlfTUNVX0NNRF80X0NBQkxFX1BBSVJfQ1x0XHQweDAwZDlcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjYzOiNkZWZpbmUgQUlSX1BIWV9NQ1VfQ01EXzRfQ0FCTEVfUEFJUl9EXHRcdDB4MDBkYVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjQ6I2RlZmluZSBBSVJfUEhZX01DVV9DTURfNF9JTlRDTFJcdFx0MHgwMGU0XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02NS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTY2LS8qIFJlZ2lzdGVycyBvbiBNRElPX01NRF9WRU5EMiAqL1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Njc6I2RlZmluZSBBSVJfUEhZX0xFRF9CQ1JcdFx0XHQweDAyMVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Njg6I2RlZmluZSAgIEFJUl9QSFlfTEVEX0JDUl9NT0RFX01BU0tcdFx0R0VOTUFTSygxLCAwKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Njk6I2RlZmluZSAgIEFJUl9QSFlfTEVEX0JDUl9USU1FX1RFU1RcdFx0QklUKDIpXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3MDojZGVmaW5lICAgQUlSX1BIWV9MRURfQkNSX0NMS19FTlx0XHRCSVQoMylcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjcxOiNkZWZpbmUgICBBSVJfUEhZX0xFRF9CQ1JfRVhUX0NUUkxcdFx0QklUKDE1KVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzItXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3MzojZGVmaW5lIEFJUl9QSFlfTEVEX0RVUl9PTlx0XHQweDAyMlxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzQtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NTojZGVmaW5lIEFJUl9QSFlfTEVEX0RVUl9CTElOS1x0XHQweDAyM1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzYtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NzojZGVmaW5lIEFJUl9QSFlfTEVEX09OKGkpXHQgICAgICAgKDB4MDI0ICYjNDM7ICgoaSkgKiAyKSlcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc4OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9PTl9NQVNLXHRcdFx0KEdFTk1BU0soNiwgMCkgfCBCSVQoOCkpXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3OTojZGVmaW5lICAgQUlSX1BIWV9MRURfT05fTElOSzEwMDBcdFx0QklUKDApXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MDojZGVmaW5lICAgQUlSX1BIWV9MRURfT05fTElOSzEwMFx0XHRCSVQoMSlcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgxOiNkZWZpbmUgICBBSVJfUEhZX0xFRF9PTl9MSU5LMTBcdFx0XHRCSVQoMilcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgyOiNkZWZpbmUgICBBSVJfUEhZX0xFRF9PTl9MSU5LRE9XTlx0XHRCSVQoMylcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgzOiNkZWZpbmUgICBBSVJfUEhZX0xFRF9PTl9GRFhcdFx0XHRCSVQoNCkgLyogRnVsbCBkdXBsZXggKi9cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjg0OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9PTl9IRFhcdFx0XHRCSVQoNSkgLyogSGFsZiBkdXBsZXggKi9cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjg1OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9PTl9GT1JDRV9PTlx0XHRCSVQoNilcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjg2OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9PTl9MSU5LMjUwMFx0XHRCSVQoOClcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjg3OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9PTl9QT0xBUklUWVx0XHRCSVQoMTQpXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4ODojZGVmaW5lICAgQUlSX1BIWV9MRURfT05fRU5BQkxFXHRcdFx0QklUKDE1KVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODktXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo5MDojZGVmaW5lIEFJUl9QSFlfTEVEX0JMSU5LKGkpXHQgICAgICAgKDB4MDI1ICYjNDM7ICgoaSkgKiAyKSlcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjkxOiNkZWZpbmUgICBBSVJfUEhZX0xFRF9CTElOS18xMDAwVFhcdFx0QklUKDApXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo5MjojZGVmaW5lICAgQUlSX1BIWV9MRURfQkxJTktfMTAwMFJYXHRcdEJJVCgxKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6OTM6I2RlZmluZSAgIEFJUl9QSFlfTEVEX0JMSU5LXzEwMFRYXHRcdEJJVCgyKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6OTQ6I2RlZmluZSAgIEFJUl9QSFlfTEVEX0JMSU5LXzEwMFJYXHRcdEJJVCgzKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6OTU6I2RlZmluZSAgIEFJUl9QSFlfTEVEX0JMSU5LXzEwVFhcdFx0QklUKDQpXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo5NjojZGVmaW5lICAgQUlSX1BIWV9MRURfQkxJTktfMTBSWFx0XHRCSVQoNSlcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjk3OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9CTElOS19DT0xMSVNJT05cdFx0QklUKDYpXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo5ODojZGVmaW5lICAgQUlSX1BIWV9MRURfQkxJTktfUlhfQ1JDX0VSUlx0XHRCSVQoNylcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjk5OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9CTElOS19SWF9JRExFX0VSUlx0XHRCSVQoOClcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEwMDojZGVmaW5lICAgQUlSX1BIWV9MRURfQkxJTktfRk9SQ0VfQkxJTktcdFx0QklUKDkpXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMDE6I2RlZmluZSAgIEFJUl9QSFlfTEVEX0JMSU5LXzI1MDBUWFx0XHRCSVQoMTApXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMDI6I2RlZmluZSAgIEFJUl9QSFlfTEVEX0JMSU5LXzI1MDBSWFx0XHRCSVQoMTEpXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMDMtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMDQtLyogUmVnaXN0ZXJzIG9uIEJVQ0tQQlVTICovXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMDU6I2RlZmluZSBBSVJfUEhZX0NPTlRST0xcdFx0XHQweDNhOWNcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEwNjojZGVmaW5lICAgQUlSX1BIWV9DT05UUk9MX0lOVEVSTkFMXHRcdEJJVCgxMSlcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEwNy1cbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xNjUtLyogTUlJIHJlZ2lzdGVyIGNvbnN0YW50cyBmb3IgUEJVUyBhY2Nlc3MgKFBIWSBhZGRyICYjNDM7IDgpICovXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNjY6I2RlZmluZSBBSVJfUEJVU19BRERSX0hJR0hcdFx0MHgxY1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTY3OiNkZWZpbmUgQUlSX1BCVVNfREFUQV9ISUdIXHRcdDB4MTBcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE2ODojZGVmaW5lIEFJUl9QQlVTX1JFR19BRERSX0hJR0hfTUFTS1x0R0VOTUFTSygxNSwgNilcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE2OTojZGVmaW5lIEFJUl9QQlVTX1JFR19BRERSX0xPV19NQVNLXHRHRU5NQVNLKDUsIDIpXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xNzAtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTgwLSAqL1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTgxOiNkZWZpbmUgQUlSX0RFRkFVTFRfVFJJR0dFUl9MRUQwIChCSVQoVFJJR0dFUl9ORVRERVZfTElOSykgICAgICB8IFxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xODItXHRcdFx0XHQgIEJJVChUUklHR0VSX05FVERFVl9SWCkgICAgICAgIHwgXFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE4My1cdFx0XHRcdCAgQklUKFRSSUdHRVJfTkVUREVWX1RYKSlcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE4NDojZGVmaW5lIEFJUl9ERUZBVUxUX1RSSUdHRVJfTEVEMSAoQklUKFRSSUdHRVJfTkVUREVWX0xJTktfMjUwMCkgfCBcXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTg1LVx0XHRcdFx0ICBCSVQoVFJJR0dFUl9ORVRERVZfTElOS18xMDAwKSlcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE4NjojZGVmaW5lIEFJUl9ERUZBVUxUX1RSSUdHRVJfTEVEMiAoQklUKFRSSUdHRVJfTkVUREVWX0xJTktfMjUwMCkgfCBcXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTg3LVx0XHRcdFx0ICBCSVQoVFJJR0dFUl9ORVRERVZfTElOS18xMDApKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTIwNz1lbnVtIHtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjIwODpcdEFJUl9QSFlfTEVEX1NUQVRFX0ZPUkNFX09OLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjA5Olx0QUlSX1BIWV9MRURfU1RBVEVfRk9SQ0VfQkxJTkssXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yMTAtfTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0yMTI9ZW51bSB7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyMTM6XHRBSVJfUEhZX0xFRF9EVVJfQkxJTktfMzJNUyxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjIxNDpcdEFJUl9QSFlfTEVEX0RVUl9CTElOS182NE1TLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjE1Olx0QUlSX1BIWV9MRURfRFVSX0JMSU5LXzEyOE1TLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjE2Olx0QUlSX1BIWV9MRURfRFVSX0JMSU5LXzI1Nk1TLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjE3Olx0QUlSX1BIWV9MRURfRFVSX0JMSU5LXzUxMk1TLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjE4Olx0QUlSX1BIWV9MRURfRFVSX0JMSU5LXzEwMjRNUyxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTIxOS19O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTIyMT1lbnVtIHtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjIyMjpcdEFJUl9MRURfRElTQUJMRSxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjIyMzpcdEFJUl9MRURfRU5BQkxFLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjI0LX07XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MjI2PWVudW0ge1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjI3Olx0QUlSX0FDVElWRV9MT1csXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyMjg6XHRBSVJfQUNUSVZFX0hJR0gsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yMjktfTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0yMzE9ZW51bSB7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyMzI6XHRBSVJfTEVEX01PREVfRElTQUJMRSxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjIzMzpcdEFJUl9MRURfTU9ERV9VU0VSX0RFRklORSxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTIzNC19O1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjM1LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjM2OiNkZWZpbmUgQUlSX1BIWV9MRURfRFVSX1VOSVRcdDEwMjRcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjIzNzojZGVmaW5lIEFJUl9QSFlfTEVEX0RVUiAoQUlSX1BIWV9MRURfRFVSX1VOSVQgXHUwMDNjXHUwMDNjIEFJUl9QSFlfTEVEX0RVUl9CTElOS182NE1TKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjM4LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTI0OD1zdGF0aWMgaW50IF9fYWlyX3BidXNfcmVnX3dyaXRlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldixcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yNTItXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyNTM6XHRyZXQgPSBfX21kaW9idXNfd3JpdGUobWRpb2Rldi1cdTAwM2VidXMsIG1kaW9kZXYtXHUwMDNlYWRkciwgQUlSX0VYVF9QQUdFX0FDQ0VTUyxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTI1NC1cdFx0XHQgICAgICB1cHBlcl8xNl9iaXRzKHBidXNfcmVnKSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjU3LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjU4Olx0cmV0ID0gX19tZGlvYnVzX3dyaXRlKG1kaW9kZXYtXHUwMDNlYnVzLCBtZGlvZGV2LVx1MDAzZWFkZHIsIEFJUl9QQlVTX0FERFJfSElHSCxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjI1OTpcdFx0XHQgICAgICBGSUVMRF9HRVQoQUlSX1BCVVNfUkVHX0FERFJfSElHSF9NQVNLLCBwYnVzX3JlZykpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjYwLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yNjMtXHRyZXQgPSBfX21kaW9idXNfd3JpdGUobWRpb2Rldi1cdTAwM2VidXMsIG1kaW9kZXYtXHUwMDNlYWRkcixcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjI2NDpcdFx0XHQgICAgICBGSUVMRF9HRVQoQUlSX1BCVVNfUkVHX0FERFJfTE9XX01BU0ssIHBidXNfcmVnKSxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTI2NS1cdFx0XHQgICAgICBsb3dlcl8xNl9iaXRzKHBidXNfZGF0YSkpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTI2OC1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjI2OTpcdHJldHVybiBfX21kaW9idXNfd3JpdGUobWRpb2Rldi1cdTAwM2VidXMsIG1kaW9kZXYtXHUwMDNlYWRkciwgQUlSX1BCVVNfREFUQV9ISUdILFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjcwLVx0XHRcdCAgICAgICB1cHBlcl8xNl9iaXRzKHBidXNfZGF0YSkpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTI3Mz1zdGF0aWMgaW50IF9fYWlyX3dyaXRlX2J1ZihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MzIgYWRkcmVzcyxcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yNzktXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyODA6XHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIEFJUl9CUEJVU19NT0RFLCBBSVJfQlBCVVNfTU9ERV9BRERSX0lOQ1IpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjgxLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yODMtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyODQ6XHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIEFJUl9CUEJVU19XUl9BRERSX0hJR0gsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yODUtXHRcdFx0ICB1cHBlcl8xNl9iaXRzKGFkZHJlc3MpKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yODgtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyODk6XHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIEFJUl9CUEJVU19XUl9BRERSX0xPVyxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTI5MC1cdFx0XHQgIGxvd2VyXzE2X2JpdHMoYWRkcmVzcykpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTI5NS1cdFx0dmFsID0gZ2V0X3VuYWxpZ25lZF9sZTE2KFx1MDAyNmZ3LVx1MDAzZWRhdGFbb2Zmc2V0ICYjNDM7IDJdKTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjI5NjpcdFx0cmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBBSVJfQlBCVVNfV1JfREFUQV9ISUdILCB2YWwpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjk3LVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTMwMC1cdFx0dmFsID0gZ2V0X3VuYWxpZ25lZF9sZTE2KFx1MDAyNmZ3LVx1MDAzZWRhdGFbb2Zmc2V0XSk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzozMDE6XHRcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX1dSX0RBVEFfTE9XLCB2YWwpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzAyLVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTMwOT1zdGF0aWMgaW50IGFpcl93cml0ZV9idWYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIGFkZHJlc3MsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzIwLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MzIxOlx0c2F2ZWRfcGFnZSA9IHBoeV9zZWxlY3RfcGFnZShwaHlkZXYsIEFJUl9QSFlfUEFHRV9FWFRFTkRFRF80KTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTMyMi1cbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz00Njg9c3RhdGljIGludCBhbjg4MTFoYl9sb2FkX2Zpcm13YXJlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDg0LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDg1Olx0cmV0ID0gYW44ODExaGJfbG9hZF9maWxlKHBoeWRldiwgQU44ODExSEJfTUQzMl9ETSwgQUlSX0ZXX0FERFJfRE0pO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDg2LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy00OTQtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo0OTU6XHRyZXQgPSBhbjg4MTFoYl9sb2FkX2ZpbGUocGh5ZGV2LCBBTjg4MTFIQl9NRDMyX0RTUCwgQUlSX0ZXX0FERFJfRFNQKTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTQ5Ni1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9NTA4PXN0YXRpYyBpbnQgZW44ODExaF9sb2FkX2Zpcm13YXJlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTMyLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTMzOlx0cmV0ID0gYWlyX3dyaXRlX2J1ZihwaHlkZXYsIEFJUl9GV19BRERSX0RNLCAgZncxKTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTUzNC1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTM2LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTM3Olx0cmV0ID0gYWlyX3dyaXRlX2J1ZihwaHlkZXYsIEFJUl9GV19BRERSX0RTUCwgZncyKTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTUzOC1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9NTg2PXN0YXRpYyBpbnQgYWlyX2h3X2xlZF9vbl9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsIGJvb2wgb24pXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTk0LVx0aWYgKG9uKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTk1Olx0XHRjaGFuZ2VkID0gIXRlc3RfYW5kX3NldF9iaXQoQUlSX1BIWV9MRURfU1RBVEVfRk9SQ0VfT04sXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01OTYtXHRcdFx0XHRcdCAgICBcdTAwMjZwcml2LVx1MDAzZWxlZFtpbmRleF0uc3RhdGUpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTk3LVx0ZWxzZVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTk4Olx0XHRjaGFuZ2VkID0gISF0ZXN0X2FuZF9jbGVhcl9iaXQoQUlSX1BIWV9MRURfU1RBVEVfRk9SQ0VfT04sXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01OTktXHRcdFx0XHRcdCAgICAgICBcdTAwMjZwcml2LVx1MDAzZWxlZFtpbmRleF0uc3RhdGUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTYwOC1cdFx0cmV0dXJuIHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo2MDk6XHRcdFx0XHQgICAgICBBSVJfUEhZX0xFRF9PTihpbmRleCksXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo2MTA6XHRcdFx0XHQgICAgICBBSVJfUEhZX0xFRF9PTl9NQVNLLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjExOlx0XHRcdFx0ICAgICAgb24gPyBBSVJfUEhZX0xFRF9PTl9GT1JDRV9PTiA6IDApO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjEyLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTYxNj1zdGF0aWMgaW50IGFpcl9od19sZWRfYmxpbmtfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTYyNS1cdGlmIChibGlua2luZylcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjYyNjpcdFx0Y2hhbmdlZCA9ICF0ZXN0X2FuZF9zZXRfYml0KEFJUl9QSFlfTEVEX1NUQVRFX0ZPUkNFX0JMSU5LLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjI3LVx0XHRcdFx0XHQgICAgXHUwMDI2cHJpdi1cdTAwM2VsZWRbaW5kZXhdLnN0YXRlKTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTYyOC1cdGVsc2VcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjYyOTpcdFx0Y2hhbmdlZCA9ICEhdGVzdF9hbmRfY2xlYXJfYml0KEFJUl9QSFlfTEVEX1NUQVRFX0ZPUkNFX0JMSU5LLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjMwLVx0XHRcdFx0XHQgICAgICAgXHUwMDI2cHJpdi1cdTAwM2VsZWRbaW5kZXhdLnN0YXRlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02MzUtXHRcdHJldHVybiBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo2MzY6XHRcdFx0XHQgICAgIEFJUl9QSFlfTEVEX0JMSU5LKGluZGV4KSxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTYzNy1cdFx0XHRcdCAgICAgYmxpbmtpbmcgP1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjM4Olx0XHRcdFx0ICAgICBBSVJfUEhZX0xFRF9CTElOS19GT1JDRV9CTElOSyA6IDApO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjM5LVx0ZWxzZVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTY0Mz1zdGF0aWMgaW50IGFpcl9sZWRfYmxpbmtfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTY2OS1cdC8qIGh3LWNvbnRyb2wgaXMgb2ZmKi9cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjY3MDpcdGlmICghIXRlc3RfYml0KEFJUl9QSFlfTEVEX1NUQVRFX0ZPUkNFX0JMSU5LLCBcdTAwMjZwcml2LVx1MDAzZWxlZFtpbmRleF0uc3RhdGUpKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjcxLVx0XHRwcml2LVx1MDAzZWxlZFtpbmRleF0ucnVsZXMgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTY3Nj1zdGF0aWMgaW50IGFpcl9sZWRfYnJpZ2h0bmVzc19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjk0LVx0LyogaHctY29udHJvbCBpcyBvZmYgKi9cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjY5NTpcdGlmICghIXRlc3RfYml0KEFJUl9QSFlfTEVEX1NUQVRFX0ZPUkNFX09OLCBcdTAwMjZwcml2LVx1MDAzZWxlZFtpbmRleF0uc3RhdGUpKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjk2LVx0XHRwcml2LVx1MDAzZWxlZFtpbmRleF0ucnVsZXMgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTcxND1zdGF0aWMgaW50IGFpcl9sZWRfaHdfY29udHJvbF9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzI2LVx0aWYgKHJ1bGVzIFx1MDAyNiBCSVQoVFJJR0dFUl9ORVRERVZfRlVMTF9EVVBMRVgpKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NzI3Olx0XHRvbiB8PSBBSVJfUEhZX0xFRF9PTl9GRFg7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03MjgtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03MjktXHRpZiAocnVsZXMgXHUwMDI2IChCSVQoVFJJR0dFUl9ORVRERVZfTElOS18xMCkgfCBCSVQoVFJJR0dFUl9ORVRERVZfTElOSykpKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NzMwOlx0XHRvbiB8PSBBSVJfUEhZX0xFRF9PTl9MSU5LMTA7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03MzEtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03MzItXHRpZiAocnVsZXMgXHUwMDI2IChCSVQoVFJJR0dFUl9ORVRERVZfTElOS18xMDApIHwgQklUKFRSSUdHRVJfTkVUREVWX0xJTkspKSlcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjczMzpcdFx0b24gfD0gQUlSX1BIWV9MRURfT05fTElOSzEwMDtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTczNC1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTczNS1cdGlmIChydWxlcyBcdTAwMjYgKEJJVChUUklHR0VSX05FVERFVl9MSU5LXzEwMDApIHwgQklUKFRSSUdHRVJfTkVUREVWX0xJTkspKSlcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjczNjpcdFx0b24gfD0gQUlSX1BIWV9MRURfT05fTElOSzEwMDA7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03MzctXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03MzgtXHRpZiAocnVsZXMgXHUwMDI2IChCSVQoVFJJR0dFUl9ORVRERVZfTElOS18yNTAwKSB8IEJJVChUUklHR0VSX05FVERFVl9MSU5LKSkpXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3Mzk6XHRcdG9uIHw9IEFJUl9QSFlfTEVEX09OX0xJTksyNTAwO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzQwLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzQxLVx0aWYgKHJ1bGVzIFx1MDAyNiBCSVQoVFJJR0dFUl9ORVRERVZfUlgpKSB7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NDI6XHRcdGJsaW5rIHw9IEFJUl9QSFlfTEVEX0JMSU5LXzEwUlggICB8XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NDM6XHRcdFx0IEFJUl9QSFlfTEVEX0JMSU5LXzEwMFJYICB8XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NDQ6XHRcdFx0IEFJUl9QSFlfTEVEX0JMSU5LXzEwMDBSWCB8XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NDU6XHRcdFx0IEFJUl9QSFlfTEVEX0JMSU5LXzI1MDBSWDtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc0Ni1cdH1cbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03NDgtXHRpZiAocnVsZXMgXHUwMDI2IEJJVChUUklHR0VSX05FVERFVl9UWCkpIHtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc0OTpcdFx0YmxpbmsgfD0gQUlSX1BIWV9MRURfQkxJTktfMTBUWCAgIHxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc1MDpcdFx0XHQgQUlSX1BIWV9MRURfQkxJTktfMTAwVFggIHxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc1MTpcdFx0XHQgQUlSX1BIWV9MRURfQkxJTktfMTAwMFRYIHxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc1MjpcdFx0XHQgQUlSX1BIWV9MRURfQkxJTktfMjUwMFRYO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzUzLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc1Ni1cdFx0Lyogc3dpdGNoIGh3LWNvbnRyb2wgb24sIHNvIGxlZC1vbiBhbmQgbGVkLWJsaW5rIGFyZSBvZmYgKi9cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc1NzpcdFx0Y2xlYXJfYml0KEFJUl9QSFlfTEVEX1NUQVRFX0ZPUkNFX09OLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzU4LVx0XHRcdCAgXHUwMDI2cHJpdi1cdTAwM2VsZWRbaW5kZXhdLnN0YXRlKTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc1OTpcdFx0Y2xlYXJfYml0KEFJUl9QSFlfTEVEX1NUQVRFX0ZPUkNFX0JMSU5LLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzYwLVx0XHRcdCAgXHUwMDI2cHJpdi1cdTAwM2VsZWRbaW5kZXhdLnN0YXRlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03NjQtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NjU6XHRyZXQgPSBwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBBSVJfUEhZX0xFRF9PTihpbmRleCksXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NjY6XHRcdFx0ICAgICBBSVJfUEhZX0xFRF9PTl9NQVNLLCBvbik7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03NjctXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzcwLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NzcxOlx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgQUlSX1BIWV9MRURfQkxJTksoaW5kZXgpLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzcyLVx0XHRcdCAgICAgYmxpbmspO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTc3NT1zdGF0aWMgaW50IGFpcl9sZWRfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCwgdTggc3RhdGUsIHU4IHBvbClcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03ODItXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3ODM6XHRpZiAoc3RhdGUgPT0gQUlSX0xFRF9FTkFCTEUpXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3ODQ6XHRcdHZhbCB8PSBBSVJfUEhZX0xFRF9PTl9FTkFCTEU7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03ODUtXHRlbHNlXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3ODY6XHRcdHZhbCBcdTAwMjY9IH5BSVJfUEhZX0xFRF9PTl9FTkFCTEU7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03ODctXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3ODg6XHRpZiAocG9sID09IEFJUl9BQ1RJVkVfSElHSClcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc4OTpcdFx0dmFsIHw9IEFJUl9QSFlfTEVEX09OX1BPTEFSSVRZO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzkwLVx0ZWxzZVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NzkxOlx0XHR2YWwgXHUwMDI2PSB+QUlSX1BIWV9MRURfT05fUE9MQVJJVFk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03OTItXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3OTM6XHRlcnIgPSBwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBBSVJfUEhZX0xFRF9PTihpbmRleCksXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3OTQ6XHRcdFx0ICAgICBBSVJfUEhZX0xFRF9PTl9FTkFCTEUgfFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Nzk1Olx0XHRcdCAgICAgQUlSX1BIWV9MRURfT05fUE9MQVJJVFksIHZhbCk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03OTYtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9ODAzPXN0YXRpYyBpbnQgYWlyX2xlZHNfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgbnVtLCBpbnQgZHVyLCBpbnQgbW9kZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04MDctXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MDg6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIEFJUl9QSFlfTEVEX0RVUl9CTElOSyxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTgwOS1cdFx0XHQgICAgZHVyKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04MTItXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MTM6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIEFJUl9QSFlfTEVEX0RVUl9PTixcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTgxNC1cdFx0XHQgICAgZHVyIFx1MDAzZVx1MDAzZSAxKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04MTgtXHRzd2l0Y2ggKG1vZGUpIHtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgxOTpcdGNhc2UgQUlSX0xFRF9NT0RFX0RJU0FCTEU6XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MjA6XHRcdHJldCA9IHBoeV9tb2RpZnlfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIEFJUl9QSFlfTEVEX0JDUixcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgyMTpcdFx0XHRcdCAgICAgQUlSX1BIWV9MRURfQkNSX0VYVF9DVFJMIHxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgyMjpcdFx0XHRcdCAgICAgQUlSX1BIWV9MRURfQkNSX01PREVfTUFTSywgMCk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04MjMtXHRcdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODI1LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgyNjpcdGNhc2UgQUlSX0xFRF9NT0RFX1VTRVJfREVGSU5FOlxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6ODI3Olx0XHRyZXQgPSBwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBBSVJfUEhZX0xFRF9CQ1IsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4Mjg6XHRcdFx0XHQgICAgIEFJUl9QSFlfTEVEX0JDUl9FWFRfQ1RSTCB8XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4Mjk6XHRcdFx0XHQgICAgIEFJUl9QSFlfTEVEX0JDUl9DTEtfRU4sXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MzA6XHRcdFx0XHQgICAgIEFJUl9QSFlfTEVEX0JDUl9FWFRfQ1RSTCB8XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MzE6XHRcdFx0XHQgICAgIEFJUl9QSFlfTEVEX0JDUl9DTEtfRU4pO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODMyLVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTg0MC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIG51bTsgJiM0MzsmIzQzO2kpIHtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjg0MTpcdFx0cmV0ID0gYWlyX2xlZF9pbml0KHBoeWRldiwgaSwgQUlSX0xFRF9FTkFCTEUsIEFJUl9BQ1RJVkVfSElHSCk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04NDItXHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0xMDYzPXN0YXRpYyBpbnQgZW44ODExaF9sZWRzX3NldHVwKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTA2Ny1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEwNjg6XHRwcml2LVx1MDAzZWxlZFswXS5ydWxlcyA9IEFJUl9ERUZBVUxUX1RSSUdHRVJfTEVEMDtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEwNjk6XHRwcml2LVx1MDAzZWxlZFsxXS5ydWxlcyA9IEFJUl9ERUZBVUxUX1RSSUdHRVJfTEVEMTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEwNzA6XHRwcml2LVx1MDAzZWxlZFsyXS5ydWxlcyA9IEFJUl9ERUZBVUxUX1RSSUdHRVJfTEVEMjtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEwNzEtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMDcyOlx0cmV0ID0gYWlyX2xlZHNfaW5pdChwaHlkZXYsIEVOODgxMUhfTEVEX0NPVU5ULCBBSVJfUEhZX0xFRF9EVVIsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMDczOlx0XHRcdCAgICBBSVJfTEVEX01PREVfRElTQUJMRSk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMDc0LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0xMjUzPXN0YXRpYyBpbnQgYW44ODExaGJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMjcxLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTI3MjpcdHJldCA9IGFpcl9sZWRzX2luaXQocGh5ZGV2LCBFTjg4MTFIX0xFRF9DT1VOVCwgQUlSX1BIWV9MRURfRFVSLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTI3MzpcdFx0XHQgICAgQUlSX0xFRF9NT0RFX1VTRVJfREVGSU5FKTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEyNzQtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTEyODA9c3RhdGljIGludCBlbjg4MTFoX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTI5Ny1cdCAqL1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTI5ODpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQUlSX1BIWV9NQ1VfQ01EXzEsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMjk5Olx0XHRcdCAgICBBSVJfUEhZX01DVV9DTURfMV9NT0RFMSk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzAwLVx0aWYgKHJldCBcdTAwM2MgMClcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMDEtXHRcdHJldHVybiByZXQ7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMzAyOlx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfMixcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEzMDM6XHRcdFx0ICAgIEFJUl9QSFlfTUNVX0NNRF8yX01PREUxKTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMDQtXHRpZiAocmV0IFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMwNS1cdFx0cmV0dXJuIHJldDtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEzMDY6XHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFJUl9QSFlfTUNVX0NNRF8zLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTMwNzpcdFx0XHQgICAgQUlSX1BIWV9NQ1VfQ01EXzNfTU9ERTEpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMwOC1cdGlmIChyZXQgXHUwMDNjIDApXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzA5LVx0XHRyZXR1cm4gcmV0O1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTMxMDpcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQUlSX1BIWV9NQ1VfQ01EXzQsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMzExOlx0XHRcdCAgICBBSVJfUEhZX01DVV9DTURfNF9NT0RFMSk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzEyLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzE4LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTMxOTpcdHJldCA9IGFpcl9sZWRzX2luaXQocGh5ZGV2LCBFTjg4MTFIX0xFRF9DT1VOVCwgQUlSX1BIWV9MRURfRFVSLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTMyMDpcdFx0XHQgICAgQUlSX0xFRF9NT0RFX1VTRVJfREVGSU5FKTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMjEtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MTM3OD1zdGF0aWMgaW50IGVuODgxMWhfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xNDI4LVx0LyogR2V0IHJlYWwgc3BlZWQgZnJvbSB2ZW5kb3IgcmVnaXN0ZXIgKi9cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE0Mjk6XHR2YWwgPSBwaHlfcmVhZChwaHlkZXYsIEFJUl9BVVhfQ1RSTF9TVEFUVVMpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQzMC1cdGlmICh2YWwgXHUwMDNjIDApXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xNDMxLVx0XHRyZXR1cm4gdmFsO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTQzMjpcdHN3aXRjaCAodmFsIFx1MDAyNiBBSVJfQVVYX0NUUkxfU1RBVFVTX1NQRUVEX01BU0spIHtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE0MzM6XHRjYXNlIEFJUl9BVVhfQ1RSTF9TVEFUVVNfU1BFRURfMjUwMDpcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0MzQtXHRcdHBoeWRldi1cdTAwM2VzcGVlZCA9IFNQRUVEXzI1MDA7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xNDM1LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE0MzY6XHRjYXNlIEFJUl9BVVhfQ1RSTF9TVEFUVVNfU1BFRURfMTAwMDpcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0MzctXHRcdHBoeWRldi1cdTAwM2VzcGVlZCA9IFNQRUVEXzEwMDA7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xNDM4LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE0Mzk6XHRjYXNlIEFJUl9BVVhfQ1RSTF9TVEFUVVNfU1BFRURfMTAwOlxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQ0MC1cdFx0cGh5ZGV2LVx1MDAzZXNwZWVkID0gU1BFRURfMTAwO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQ0MS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNDQyOlx0Y2FzZSBBSVJfQVVYX0NUUkxfU1RBVFVTX1NQRUVEXzEwOlxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQ0My1cdFx0cGh5ZGV2LVx1MDAzZXNwZWVkID0gU1BFRURfMTA7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MTQ2Mj1zdGF0aWMgaW50IGVuODgxMWhfY2xlYXJfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0NjUtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNDY2Olx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfMyxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE0Njc6XHRcdFx0ICAgIEFJUl9QSFlfTUNVX0NNRF8zX0RPQ01EKTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0NjgtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0NzAtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNDcxOlx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfNCxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE0NzI6XHRcdFx0ICAgIEFJUl9QSFlfTUNVX0NNRF80X0lOVENMUik7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xNDczLVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYz0xNz1zdGF0aWMgaW50IF9fYWlyX2J1Y2twYnVzX3JlZ19yZWFkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmMtMjItXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYzoyMzpcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX01PREUsIEFJUl9CUEJVU19NT0RFX0FERFJfRklYRUQpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmMtMjQtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTI2LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmM6Mjc6XHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIEFJUl9CUEJVU19SRF9BRERSX0hJR0gsXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYy0yOC1cdFx0XHQgIHVwcGVyXzE2X2JpdHMocGJ1c19hZGRyZXNzKSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmMtMzEtXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYzozMjpcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX1JEX0FERFJfTE9XLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmMtMzMtXHRcdFx0ICBsb3dlcl8xNl9iaXRzKHBidXNfYWRkcmVzcykpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTM2LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmM6Mzc6XHRwYnVzX2RhdGFfaGlnaCA9IF9fcGh5X3JlYWQocGh5ZGV2LCBBSVJfQlBCVVNfUkRfREFUQV9ISUdIKTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTM4LVx0aWYgKHBidXNfZGF0YV9oaWdoIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTQwLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmM6NDE6XHRwYnVzX2RhdGFfbG93ID0gX19waHlfcmVhZChwaHlkZXYsIEFJUl9CUEJVU19SRF9EQVRBX0xPVyk7XG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYy00Mi1cdGlmIChwYnVzX2RhdGFfbG93IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jPTQ5PXN0YXRpYyBpbnQgX19haXJfYnVja3BidXNfcmVnX3dyaXRlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmMtNTMtXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYzo1NDpcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX01PREUsIEFJUl9CUEJVU19NT0RFX0FERFJfRklYRUQpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmMtNTUtXHRpZiAocmV0IFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTU3LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmM6NTg6XHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIEFJUl9CUEJVU19XUl9BRERSX0hJR0gsXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYy01OS1cdFx0XHQgIHVwcGVyXzE2X2JpdHMocGJ1c19hZGRyZXNzKSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmMtNjItXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYzo2MzpcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX1dSX0FERFJfTE9XLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmMtNjQtXHRcdFx0ICBsb3dlcl8xNl9iaXRzKHBidXNfYWRkcmVzcykpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTY3LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmM6Njg6XHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIEFJUl9CUEJVU19XUl9EQVRBX0hJR0gsXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYy02OS1cdFx0XHQgIHVwcGVyXzE2X2JpdHMocGJ1c19kYXRhKSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmMtNzItXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYzo3MzpcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX1dSX0RBVEFfTE9XLFxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wJiM0MztcbiAgIDI6XHQvKlxuICAgMzpcdCAqIERyaXZlciBmb3IgdGhlIEFpcm9oYSBFTjg4MTFIIGFuZCBBTjg4MTFIQiAyLjUgR2lnYWJpdCBQSFlzLlxuICAgNDpcdCAqXG4gICA1Olx0ICogTGltaXRhdGlvbnM6XG4gICA2Olx0ICogLSBPbmx5IGZ1bGwgZHVwbGV4IHN1cHBvcnRlZFxuICAgNzpcdCAqIC0gRm9yY2VkIHNwZWVkIChBTiBvZmYpIGlzIG5vdCBzdXBwb3J0ZWQgYnkgaGFyZHdhcmUgKDEwME1icHMpXG4gICA4Olx0ICpcbiAgIDk6XHQgKiBTb3VyY2Ugb3JpZ2luYXRlZCBmcm9tIGFpcm9oYSYjMzk7cyBlbjg4MTFoLmMgYW5kIGVuODgxMWguaCB2MS4yLjFcbiAgMTA6XHQgKiB3aXRoIEFOODgxMUhCIGJpdHMgZnJvbSBhaXJfYW44ODExaGIuYyB2MC4wLjRcbiAgMTE6XHQgKlxuICAxMjpcdCAqIENvcHlyaWdodCAoQykgMjAyMywgMjAyNiBBaXJvaGEgVGVjaG5vbG9neSBDb3JwLlxuICAxMzpcdCAqL1xuICAxNDpcdFxuICAxNTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2Nsay5oXHUwMDNlXG4gIDE2Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvY2xrLXByb3ZpZGVyLmhcdTAwM2VcbiAgMTc6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9waHkuaFx1MDAzZVxuICAxODpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3BoeS9waHktY29tbW9uLXByb3BzLmhcdTAwM2VcbiAgMTk6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9maXJtd2FyZS5oXHUwMDNlXG4gIDIwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvYml0ZmllbGQuaFx1MDAzZVxuICAyMTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3Byb3BlcnR5LmhcdTAwM2VcbiAgMjI6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC93b3JkcGFydC5oXHUwMDNlXG4gIDIzOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbiAgMjQ6XHRcbiAgMjU6XHQjaW5jbHVkZSBcJiMzNDthaXJfcGh5X2xpYi5oXCYjMzQ7XG4gIDI2Olx0XG4gIDI3Olx0I2RlZmluZSBFTjg4MTFIX1BIWV9JRFx0XHQweDAzYTJhNDExXG4gIDI4Olx0I2RlZmluZSBBTjg4MTFIQl9QSFlfSURcdFx0MHhjMGZmMDRhMFxuICAyOTpcdFxuICAzMDpcdCNkZWZpbmUgRU44ODExSF9NRDMyX0RNXHRcdFwmIzM0O2Fpcm9oYS9FdGhNRDMyLmRtLmJpblwmIzM0O1xuICAzMTpcdCNkZWZpbmUgRU44ODExSF9NRDMyX0RTUFx0XCYjMzQ7YWlyb2hhL0V0aE1EMzIuRFNQLmJpblwmIzM0O1xuICAzMjpcdCNkZWZpbmUgQU44ODExSEJfTUQzMl9ETVx0XCYjMzQ7YWlyb2hhL2FuODgxMWhiL0V0aE1EMzJfQ1JDLkRNLmJpblwmIzM0O1xuICAzMzpcdCNkZWZpbmUgQU44ODExSEJfTUQzMl9EU1BcdFwmIzM0O2Fpcm9oYS9hbjg4MTFoYi9FdGhNRDMyX0NSQy5EU1AuYmluXCYjMzQ7XG4gIDM0Olx0XG4gIDM1Olx0I2RlZmluZSBBSVJfRldfQUREUl9ETVx0MHgwMDAwMDAwMFxuICAzNjpcdCNkZWZpbmUgQUlSX0ZXX0FERFJfRFNQXHQweDAwMTAwMDAwXG4gIDM3Olx0XG4gIDM4Olx0LyogTUlJIFJlZ2lzdGVycyAqL1xuICAzOTpcdCNkZWZpbmUgQUlSX0FVWF9DVFJMX1NUQVRVU1x0XHQweDFkXG4gIDQwOlx0I2RlZmluZSAgIEFJUl9BVVhfQ1RSTF9TVEFUVVNfU1BFRURfTUFTS1x0R0VOTUFTSyg0LCAyKVxuICA0MTpcdCNkZWZpbmUgICBBSVJfQVVYX0NUUkxfU1RBVFVTX1NQRUVEXzEwXHRcdDB4MFxuICA0MjpcdCNkZWZpbmUgICBBSVJfQVVYX0NUUkxfU1RBVFVTX1NQRUVEXzEwMFx0XHQweDRcbiAgNDM6XHQjZGVmaW5lICAgQUlSX0FVWF9DVFJMX1NUQVRVU19TUEVFRF8xMDAwXHQweDhcbiAgNDQ6XHQjZGVmaW5lICAgQUlSX0FVWF9DVFJMX1NUQVRVU19TUEVFRF8yNTAwXHQweGNcbiAgNDU6XHRcbiAgNDY6XHQvKiBSZWdpc3RlcnMgb24gTURJT19NTURfVkVORDEgKi9cbiAgNDc6XHQjZGVmaW5lIEVOODgxMUhfUEhZX0ZXX1NUQVRVU1x0XHQweDgwMDlcbiAgNDg6XHQjZGVmaW5lICAgRU44ODExSF9QSFlfUkVBRFlcdFx0XHQweDAyXG4gIDQ5Olx0XG4gIDUwOlx0I2RlZmluZSBBSVJfUEhZX01DVV9DTURfMFx0XHQweDgwMGJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTAyNwoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgRGVlcGVyIGludG8gdGhlIEFpciBJbnRlcmZhY2UgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gcG9raW5nIGFyb3VuZCBpbiBgYWlyX2VuODgxMWguY2AgYW5kIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBgYWlyX3dyaXRlX2J1ZmAuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGhvdyB0aGlzIGRyaXZlciBhY3R1YWxseSB3b3Jrcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBhbmQgc2VlIHRoZSByZXN0IG9mIHRoZSBmaWxlIHN1cnJvdW5kaW5nIHRoaXMgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgSSYjMzk7bSBpbnRlcmVzdGVkIGluIGhvdyB0aGlzIGRyaXZlciBpcyByZWdpc3RlcmVkIHdpdGhpbiB0aGUga2VybmVsLCBhbmQgdGhlbiBldmVuIG1vcmUgcGFydGljdWxhcmx5IGhvdyBpdCYjMzk7cyAqYm91bmQqIHRvIHNwZWNpZmljIGhhcmR3YXJlIGRldmljZXMuIFVuZGVyc3RhbmRpbmcgdGhlIHJlZ2lzdHJhdGlvbiBhbmQgYmluZGluZyBwcm9jZXNzZXMgaXMga2V5IHRvIGZpZ3VyaW5nIG91dCB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIGhvdyB0aGUgbG93LWxldmVsIGZ1bmN0aW9ucyBsaWtlIGBhaXJfd3JpdGVfYnVmYCBmaXQgaW50byB0aGUgZ3JhbmQgc2NoZW1lIG9mIHRoaW5ncy4gSXQmIzM5O2xsIGdpdmUgbWUgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGRldmljZSYjMzk7cyBsaWZlY3ljbGUgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDMwMDpcdFx0XHR2YWwgPSBnZXRfdW5hbGlnbmVkX2xlMTYoXHUwMDI2ZnctXHUwMDNlZGF0YVtvZmZzZXRdKTtcbiAzMDE6XHRcdFx0cmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBBSVJfQlBCVVNfV1JfREFUQV9MT1csIHZhbCk7XG4gMzAyOlx0XHRcdGlmIChyZXQgXHUwMDNjIDApXG4gMzAzOlx0XHRcdFx0cmV0dXJuIHJldDtcbiAzMDQ6XHRcdH1cbiAzMDU6XHRcbiAzMDY6XHRcdHJldHVybiAwO1xuIDMwNzpcdH1cbiAzMDg6XHRcbiAzMDk6XHRzdGF0aWMgaW50IGFpcl93cml0ZV9idWYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIGFkZHJlc3MsXG4gMzEwOlx0XHRcdFx0IGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncpXG4gMzExOlx0e1xuIDMxMjpcdFx0aW50IHNhdmVkX3BhZ2U7XG4gMzEzOlx0XHRpbnQgcmV0ID0gMDtcbiAzMTQ6XHRcbiAzMTU6XHRcdGlmIChmdy1cdTAwM2VzaXplICUgNCkge1xuIDMxNjpcdFx0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7ZmlybXdhcmUgc2l6ZSAlenUgaXMgbm90IGEgbXVsdGlwbGUgb2YgNFxcblwmIzM0OyxcbiAzMTc6XHRcdFx0XHQgICBmdy1cdTAwM2VzaXplKTtcbiAzMTg6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gMzE5Olx0XHR9XG4gMzIwOlx0XG4gMzIxOlx0XHRzYXZlZF9wYWdlID0gcGh5X3NlbGVjdF9wYWdlKHBoeWRldiwgQUlSX1BIWV9QQUdFX0VYVEVOREVEXzQpO1xuIDMyMjpcdFxuIDMyMzpcdFx0aWYgKHNhdmVkX3BhZ2UgXHUwMDNlPSAwKSB7XG4gMzI0Olx0XHRcdHJldCA9IF9fYWlyX3dyaXRlX2J1ZihwaHlkZXYsIGFkZHJlc3MsIGZ3KTtcbiAzMjU6XHRcdFx0aWYgKHJldCBcdTAwM2MgMClcbiAzMjY6XHRcdFx0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7JXMgMHglMDh4IGZhaWxlZDogJWRcXG5cJiMzNDssIF9fZnVuY19fLFxuIDMyNzpcdFx0XHRcdFx0ICAgYWRkcmVzcywgcmV0KTtcbiAzMjg6XHRcdH1cbiAzMjk6XHRcbiAzMzA6XHRcdHJldHVybiBwaHlfcmVzdG9yZV9wYWdlKHBoeWRldiwgc2F2ZWRfcGFnZSwgcmV0KTtcbiAzMzE6XHR9XG4gMzMyOlx0XG4gMzMzOlx0c3RhdGljIGludCBlbjg4MTFoX3dhaXRfbWN1X3JlYWR5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gMzM0Olx0e1xuIDMzNTpcdFx0aW50IHJldCwgcmVnX3ZhbHVlO1xuIDMzNjpcdFxuIDMzNzpcdFx0cmV0ID0gYWlyX3BoeV9idWNrcGJ1c19yZWdfd3JpdGUocGh5ZGV2LCBFTjg4MTFIX0ZXX0NUUkxfMSxcbiAzMzg6XHRcdFx0XHRcdFx0IEVOODgxMUhfRldfQ1RSTF8xX0ZJTklTSCk7XG4gMzM5Olx0XHRpZiAocmV0KVxuIDM0MDpcdFx0XHRyZXR1cm4gcmV0O1xuIDM0MTpcdFxuIDM0MjpcdFx0LyogQmVjYXVzZSBvZiBtZGlvLWxvY2ssIG1heSBoYXZlIHRvIHdhaXQgZm9yIG11bHRpcGxlIGxvYWRzICovXG4gMzQzOlx0XHRyZXQgPSBwaHlfcmVhZF9tbWRfcG9sbF90aW1lb3V0KHBoeWRldiwgTURJT19NTURfVkVORDEsXG4gMzQ0Olx0XHRcdFx0XHRcdEVOODgxMUhfUEhZX0ZXX1NUQVRVUywgcmVnX3ZhbHVlLFxuIDM0NTpcdFx0XHRcdFx0XHRyZWdfdmFsdWUgPT0gRU44ODExSF9QSFlfUkVBRFksXG4gMzQ2Olx0XHRcdFx0XHRcdDIwMDAwLCA3NTAwMDAwLCB0cnVlKTtcbiAzNDc6XHRcdGlmIChyZXQpIHtcbiAzNDg6XHRcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwmIzM0O01DVSBub3QgcmVhZHk6IDB4JXhcXG5cJiMzNDssIHJlZ192YWx1ZSk7XG4gMzQ5Olx0XHRcdHJldHVybiAtRU5PREVWO1xuIDM1MDpcdFx0fVxuIDM1MTpcdFxuIDM1MjpcdFx0cmV0dXJuIDA7XG4gMzUzOlx0fVxuIDM1NDpcdFxuIDM1NTpcdHN0YXRpYyBpbnQgYW44ODExaGJfY2hlY2tfY3JjKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUzMiBzZXQxLFxuIDM1NjpcdFx0XHRcdCAgICAgIHUzMiBtb24yLCB1MzIgbW9uMylcbiAzNTc6XHR7XG4gMzU4Olx0XHR1MzIgcGJ1c192YWx1ZTtcbiAzNTk6XHRcdGludCByZXRyeSA9IDI1O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjUxCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqTG9va2luZyBmb3IgUGh5IERyaXZlciBSZWdpc3RyYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgUEhZIGRyaXZlciBpcyBiZWluZyBpbnRlZ3JhdGVkIGludG8gdGhlIHN5c3RlbSwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgY29udGV4dCBvZiBgYWlyX2VuODgxMWguY2AuIFRoZSBtb3N0IGRpcmVjdCByb3V0ZSB0byB0aGF0IGlzIHRvIGp1bXAgc3RyYWlnaHQgdG8gdGhlIGVuZCBvZiB0aGUgZmlsZS4gVGhhdCYjMzk7cyB3aGVyZSBJIHNob3VsZCBmaW5kIHRoZSByZWdpc3RyYXRpb24gcHJvY2VzcyBmb3IgdGhlIFBIWSBkcml2ZXIuIEkmIzM5O20gYXNzdW1pbmcsIG9mIGNvdXJzZSwgdGhhdCB0aGUgY29kZSBmb2xsb3dzIHN0YW5kYXJkIGNvbnZlbnRpb25zIGFuZCB0aGF0JiMzOTtzIHRoZSB0eXBpY2FsIGxvY2F0aW9uIGZvciB0aGlzIGtpbmQgb2YgdGhpbmcuIExldCYjMzk7cyBzZWUgaWYgdGhhdCBhc3N1bXB0aW9uIGhvbGRzIHRydWUuIEkmIzM5O20gZXhwZWN0aW5nIHRvIGZpbmQgYSBjYWxsLCBsaWtlbHkgaW52b2x2aW5nIGBtb2R1bGVfaW5pdGAgb3IgYSBzaW1pbGFyIG1hY3JvLCB0aGF0IHNldHMgZXZlcnl0aGluZyB1cC4gUmlnaHQsIGxldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQ1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNDUwOlx0XHRpZiAocHJpdi1cdTAwM2VmaXJtd2FyZV92ZXJzaW9uIFx1MDAzYyAweDI0MDExMjAyKSB7XG4xNDUxOlx0XHRcdGxpbmttb2RlX21vZF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMjUwMGJhc2VUX0Z1bGxfQklULFxuMTQ1MjpcdFx0XHRcdFx0IHBoeWRldi1cdTAwM2VscF9hZHZlcnRpc2luZyxcbjE0NTM6XHRcdFx0XHRcdCBwaHlkZXYtXHUwMDNlc3BlZWQgPT0gU1BFRURfMjUwMCk7XG4xNDU0Olx0XHR9XG4xNDU1Olx0XG4xNDU2Olx0XHQvKiBPbmx5IHN1cHBvcnRzIGZ1bGwgZHVwbGV4ICovXG4xNDU3Olx0XHRwaHlkZXYtXHUwMDNlZHVwbGV4ID0gRFVQTEVYX0ZVTEw7XG4xNDU4Olx0XG4xNDU5Olx0XHRyZXR1cm4gMDtcbjE0NjA6XHR9XG4xNDYxOlx0XG4xNDYyOlx0c3RhdGljIGludCBlbjg4MTFoX2NsZWFyX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbjE0NjM6XHR7XG4xNDY0Olx0XHRpbnQgcmV0O1xuMTQ2NTpcdFxuMTQ2NjpcdFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfMyxcbjE0Njc6XHRcdFx0XHQgICAgQUlSX1BIWV9NQ1VfQ01EXzNfRE9DTUQpO1xuMTQ2ODpcdFx0aWYgKHJldCBcdTAwM2MgMClcbjE0Njk6XHRcdFx0cmV0dXJuIHJldDtcbjE0NzA6XHRcbjE0NzE6XHRcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQUlSX1BIWV9NQ1VfQ01EXzQsXG4xNDcyOlx0XHRcdFx0ICAgIEFJUl9QSFlfTUNVX0NNRF80X0lOVENMUik7XG4xNDczOlx0XHRpZiAocmV0IFx1MDAzYyAwKVxuMTQ3NDpcdFx0XHRyZXR1cm4gcmV0O1xuMTQ3NTpcdFxuMTQ3NjpcdFx0cmV0dXJuIDA7XG4xNDc3Olx0fVxuMTQ3ODpcdFxuMTQ3OTpcdHN0YXRpYyBpcnFyZXR1cm5fdCBlbjg4MTFoX2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbjE0ODA6XHR7XG4xNDgxOlx0XHRpbnQgcmV0O1xuMTQ4MjpcdFxuMTQ4MzpcdFx0cmV0ID0gZW44ODExaF9jbGVhcl9pbnRyKHBoeWRldik7XG4xNDg0Olx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4xNDg1Olx0XHRcdHBoeV9lcnJvcihwaHlkZXYpO1xuMTQ4NjpcdFx0XHRyZXR1cm4gSVJRX05PTkU7XG4xNDg3Olx0XHR9XG4xNDg4Olx0XG4xNDg5Olx0XHRwaHlfdHJpZ2dlcl9tYWNoaW5lKHBoeWRldik7XG4xNDkwOlx0XG4xNDkxOlx0XHRyZXR1cm4gSVJRX0hBTkRMRUQ7XG4xNDkyOlx0fVxuMTQ5MzpcdFxuMTQ5NDpcdHN0YXRpYyBpbnQgZW44ODExaF9yZXN1bWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbjE0OTU6XHR7XG4xNDk2Olx0XHRjbGtfcmVzdG9yZV9jb250ZXh0KCk7XG4xNDk3Olx0XG4xNDk4Olx0XHRyZXR1cm4gZ2VucGh5X3Jlc3VtZShwaHlkZXYpO1xuMTQ5OTpcdH1cbjE1MDA6XHRcbjE1MDE6XHRzdGF0aWMgaW50IGVuODgxMWhfc3VzcGVuZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuMTUwMjpcdHtcbjE1MDM6XHRcdGNsa19zYXZlX2NvbnRleHQoKTtcbjE1MDQ6XHRcbjE1MDU6XHRcdHJldHVybiBnZW5waHlfc3VzcGVuZChwaHlkZXYpO1xuMTUwNjpcdH1cbjE1MDc6XHRcbjE1MDg6XHRzdGF0aWMgdm9pZCBhbjg4MTFoYl9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbjE1MDk6XHR7XG4xNTEwOlx0XHRzdHJ1Y3QgZW44ODExaF9wcml2ICpwcml2ID0gcGh5ZGV2LVx1MDAzZXByaXY7XG4xNTExOlx0XG4xNTEyOlx0XHRpZiAocHJpdi1cdTAwM2VwYnVzZGV2KSB7XG4xNTEzOlx0XHRcdG1kaW9fZGV2aWNlX3JlbW92ZShwcml2LVx1MDAzZXBidXNkZXYpO1xuMTUxNDpcdFx0XHRtZGlvX2RldmljZV9mcmVlKHByaXYtXHUwMDNlcGJ1c2Rldik7XG4xNTE1Olx0XHR9XG4xNTE2Olx0fVxuMTUxNzpcdFxuMTUxODpcdHN0YXRpYyBzdHJ1Y3QgcGh5X2RyaXZlciBlbjg4MTFoX2RyaXZlcltdID0ge1xuMTUxOTpcdHtcbjE1MjA6XHRcdFBIWV9JRF9NQVRDSF9NT0RFTChFTjg4MTFIX1BIWV9JRCksXG4xNTIxOlx0XHQubmFtZVx0XHRcdD0gXCYjMzQ7QWlyb2hhIEVOODgxMUhcJiMzNDssXG4xNTIyOlx0XHQucHJvYmVcdFx0XHQ9IGVuODgxMWhfcHJvYmUsXG4xNTIzOlx0XHQuZ2V0X2ZlYXR1cmVzXHRcdD0gZW44ODExaF9nZXRfZmVhdHVyZXMsXG4xNTI0Olx0XHQuY29uZmlnX2luaXRcdFx0PSBlbjg4MTFoX2NvbmZpZ19pbml0LFxuMTUyNTpcdFx0LmdldF9yYXRlX21hdGNoaW5nXHQ9IGVuODgxMWhfZ2V0X3JhdGVfbWF0Y2hpbmcsXG4xNTI2Olx0XHQuY29uZmlnX2FuZWdcdFx0PSBlbjg4MTFoX2NvbmZpZ19hbmVnLFxuMTUyNzpcdFx0LnJlYWRfc3RhdHVzXHRcdD0gZW44ODExaF9yZWFkX3N0YXR1cyxcbjE1Mjg6XHRcdC5yZXN1bWVcdFx0XHQ9IGVuODgxMWhfcmVzdW1lLFxuMTUyOTpcdFx0LnN1c3BlbmRcdFx0PSBlbjg4MTFoX3N1c3BlbmQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNzE0CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMzE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgYGFpcl9lbjg4MTFoLmNgIFBIWSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBhaXJfZW44ODExaC5jYCwgYSBQSFkgZHJpdmVyIHNwZWNpZmljYWxseSBmb3IgQWlyb2hhIEVOODgxMUggYW5kIEFOODgxMUhCIEV0aGVybmV0IFBIWXMuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiwgYW5kIHRoZSBjcml0aWNhbCBvbmUgZm9yIGZ1enppbmcgYXBwbGljYWJpbGl0eSwgaXMgd2hldGhlciB0aGlzIHR5cGUgb2YgRXRoZXJuZXQgUEhZIGlzIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIGJlZm9yZSBJIHdhc3RlIGFueSB0aW1lLgoKSSByZW1lbWJlciB0aGUgZnV6emluZyBndWlkZWxpbmVzIHZlcnkgY2xlYXJseTogJiMzNDtSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURS4mIzM0OyBJIGNhbiBvbmx5IGZ1enogY29kZSB0aGF0ICphY3R1YWxseSogZXhlY3V0ZXMgaW4gdGhlc2UgZW11bGF0ZWQgc2V0dXBzLiBJZiBpdCYjMzk7cyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUsIHRoZSBmdXp6aW5nIGlzIGEgbm8tZ28sIG5vIG1hdHRlciBob3cgY2xldmVyIHRoZSBjb2RlIG9yIGNvbXBsZXggdGhlIGxvZ2ljIG1pZ2h0IGJlLgoKVGhlIGd1aWRlbGluZXMgYXJlIGV4cGxpY2l0IGFib3V0ICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCYjMzQ7IG1lbnRpb25pbmcgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgR1BVIGRyaXZlcnMgKGxpa2UgbWx4c3csIHFlZCwgYW5kIGFtZGdwdSkgdGhhdCAqcmVxdWlyZSogcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzLCBub3QgZW11bGF0ZWQgb25lcy4gU28sIEkgbmVlZCB0byBjaGVjayBpZiB0aGVzZSBQSFkgZGV2aWNlcyAoc3BlY2lmaWNhbGx5IE1ESU8gcGh5IGRyaXZlcnMgbGlrZSBgYWlyX2VuODgxMWhgKSBuZWVkIHBoeXNpY2FsIGhhcmR3YXJlIG9yIHRoZSBNRElPIGJ1cyB0byB3b3JrLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgY2FuIGJlIGluc3RhbnRpYXRlZCB3aXRob3V0IGl0LCBvciBpZiB0aGV5IHJlcXVpcmUgdGhlIHBoeXNpY2FsIE1ESU8gYnVzIGFuZCBQSFkgaGFyZHdhcmUuCgpXYWl0IGEgc2Vjb25k4oCmY2FuIEkgZW11bGF0ZSBvciBpbnN0YW50aWF0ZSBNRElPIFBIWSBkZXZpY2VzIHdpdGhpbiBRRU1VPyBJIG5lZWQgdG8ga25vdyBpZiB0aGVyZSYjMzk7cyBhbnkgc3VwcG9ydCBmb3IgYSB2aXJ0dWFsIG9yIG1vY2sgTURJTyBidXMgaW4gdGhlIExpbnV4IGtlcm5lbCBvciBpZiBzeXprYWxsZXIgaGFzIGFueSB3b3JrYXJvdW5kcyBmb3IgaXQuIFRpbWUgdG8gc2VhcmNoIHRoZSB0cmVlIGZvciAmIzM0O21kaW8gbW9jayYjMzQ7IG9yICYjMzQ7dmlydHVhbCBtZGlvJiMzNDsgYnVzZXMuIFRoYXQmIzM5O3MgdGhlIGtleSB0byBtYWtpbmcgdGhpcyBmdXp6YWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWRpb19ncGlvfG1kaW8tZ3Bpb3xtZGlvLW5ldGxpbmt8ZHVtbXkuKm1kaW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jPTM4MT1pbnQgc3RtbWFjX21kaW9fcmVzZXQoc3RydWN0IG1paV9idXMgKmJ1cylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWRpby5jLTQxNi1cdCAqIEl0IGRvZXNuJiMzOTt0IGNvbXBsZXRlIGl0cyByZXNldCB1bnRpbCBhdCBsZWFzdCBvbmUgY2xvY2sgY3ljbGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM6NDE3Olx0ICogb24gTURDLCBzbyBwZXJmb3JtIGEgZHVtbXkgbWRpbyByZWFkLiBUbyBiZSB1cGRhdGVkIGZvciBHTUFDNFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy00MTgtXHQgKiBpZiBuZWVkZWQuXG4tLVxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnPTkwPWNvbmZpZyBNRElPX0dQSU9cbi0tXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctOTctXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZzo5ODpcdCAgd2lsbCBiZSBjYWxsZWQgbWRpby1ncGlvLlxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTk5LVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGU9MTM9b2JqLSQoQ09ORklHX01ESU9fQ0FWSVVNKVx0XHQmIzQzOz0gbWRpby1jYXZpdW0ub1xuZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfTURJT19HUElPKVx0XHRcdCYjNDM7PSBtZGlvLWdwaW8ub1xuZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZS0xNS1vYmotJChDT05GSUdfTURJT19ISVNJX0ZFTUFDKVx0XHQmIzQzOz0gbWRpby1oaXNpLWZlbWFjLm9cbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTMxLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzozMjpzdHJ1Y3QgbWRpb19ncGlvX2luZm8ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0zMy1cdHN0cnVjdCBtZGlvYmJfY3RybCBjdHJsO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMzYtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjM3OnN0YXRpYyBpbnQgbWRpb19ncGlvX2dldF9kYXRhKHN0cnVjdCBkZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6Mzg6XHRcdFx0ICAgICAgc3RydWN0IG1kaW9fZ3Bpb19pbmZvICpiaXRiYW5nKVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0zOS17XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYz01NT1zdGF0aWMgdm9pZCBtZGlvX2RpcihzdHJ1Y3QgbWRpb2JiX2N0cmwgKmN0cmwsIGludCBkaXIpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTU2LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6NTc6XHRzdHJ1Y3QgbWRpb19ncGlvX2luZm8gKmJpdGJhbmcgPVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzo1ODpcdFx0Y29udGFpbmVyX29mKGN0cmwsIHN0cnVjdCBtZGlvX2dwaW9faW5mbywgY3RybCk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTU5LVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM9NzY9c3RhdGljIGludCBtZGlvX2dldChzdHJ1Y3QgbWRpb2JiX2N0cmwgKmN0cmwpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTc3LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6Nzg6XHRzdHJ1Y3QgbWRpb19ncGlvX2luZm8gKmJpdGJhbmcgPVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzo3OTpcdFx0Y29udGFpbmVyX29mKGN0cmwsIHN0cnVjdCBtZGlvX2dwaW9faW5mbywgY3RybCk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTgwLVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM9ODQ9c3RhdGljIHZvaWQgbWRpb19zZXQoc3RydWN0IG1kaW9iYl9jdHJsICpjdHJsLCBpbnQgd2hhdClcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtODUte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzo4NjpcdHN0cnVjdCBtZGlvX2dwaW9faW5mbyAqYml0YmFuZyA9XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjg3Olx0XHRjb250YWluZXJfb2YoY3RybCwgc3RydWN0IG1kaW9fZ3Bpb19pbmZvLCBjdHJsKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtODgtXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYz05NT1zdGF0aWMgdm9pZCBtZGNfc2V0KHN0cnVjdCBtZGlvYmJfY3RybCAqY3RybCwgaW50IHdoYXQpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTk2LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6OTc6XHRzdHJ1Y3QgbWRpb19ncGlvX2luZm8gKmJpdGJhbmcgPVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzo5ODpcdFx0Y29udGFpbmVyX29mKGN0cmwsIHN0cnVjdCBtZGlvX2dwaW9faW5mbywgY3RybCk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTk5LVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTAyLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxMDM6c3RhdGljIGNvbnN0IHN0cnVjdCBtZGlvYmJfb3BzIG1kaW9fZ3Bpb19vcHMgPSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTEwNC1cdC5vd25lciA9IFRISVNfTU9EVUxFLFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTEwLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxMTE6c3RhdGljIHN0cnVjdCBtaWlfYnVzICptZGlvX2dwaW9fYnVzX2luaXQoc3RydWN0IGRldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxMTI6XHRcdFx0XHRcdCAgc3RydWN0IG1kaW9fZ3Bpb19pbmZvICpiaXRiYW5nLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xMTMtXHRcdFx0XHRcdCAgaW50IGJ1c19pZClcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTExNi1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTE3Olx0Yml0YmFuZy1cdTAwM2VjdHJsLm9wcyA9IFx1MDAyNm1kaW9fZ3Bpb19vcHM7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTExOC1cbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE0MS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTQyOnN0YXRpYyB2b2lkIG1kaW9fZ3Bpb19idXNfZGVpbml0KHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTQzLXtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE0OC1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTQ5OnN0YXRpYyB2b2lkIG1kaW9fZ3Bpb19idXNfZGVzdHJveShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE1MC17XG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xNTMtXHRtZGlvYnVzX3VucmVnaXN0ZXIoYnVzKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTU0Olx0bWRpb19ncGlvX2J1c19kZWluaXQoZGV2KTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTU1LX1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTU2LVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxNTc6c3RhdGljIGludCBtZGlvX2dwaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTU4LXtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTU5Olx0c3RydWN0IG1kaW9fZ3Bpb19pbmZvICpiaXRiYW5nO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xNjAtXHRzdHJ1Y3QgbWlpX2J1cyAqbmV3X2J1cztcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE2Ni1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTY3Olx0cmV0ID0gbWRpb19ncGlvX2dldF9kYXRhKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBiaXRiYW5nKTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTY4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE3MS1cdGlmIChwZGV2LVx1MDAzZWRldi5vZl9ub2RlKSB7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE3MjpcdFx0YnVzX2lkID0gb2ZfYWxpYXNfZ2V0X2lkKHBkZXYtXHUwMDNlZGV2Lm9mX25vZGUsIFwmIzM0O21kaW8tZ3Bpb1wmIzM0Oyk7XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE3My1cdFx0aWYgKGJ1c19pZCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTgwLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxODE6XHRuZXdfYnVzID0gbWRpb19ncGlvX2J1c19pbml0KFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBiaXRiYW5nLCBidXNfaWQpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xODItXHRpZiAoIW5ld19idXMpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xODYtXHRpZiAocmV0KVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxODc6XHRcdG1kaW9fZ3Bpb19idXNfZGVpbml0KFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTg4LVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTkxLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxOTI6c3RhdGljIHZvaWQgbWRpb19ncGlvX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xOTMte1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxOTQ6XHRtZGlvX2dwaW9fYnVzX2Rlc3Ryb3koXHUwMDI2cGRldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xOTUtfVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xOTYtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE5NzpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtZGlvX2dwaW9fb2ZfbWF0Y2hbXSA9IHtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTk4Olx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3ZpcnR1YWwsbWRpby1ncGlvXCYjMzQ7LCB9LFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xOTktXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7bWljcm9jaGlwLG1kaW8tc21pMFwmIzM0OyB9LFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMjAxLX07XG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjIwMjpNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtZGlvX2dwaW9fb2ZfbWF0Y2gpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0yMDMtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjIwNDpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtZGlvX2dwaW9fZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoyMDU6XHQucHJvYmUgPSBtZGlvX2dwaW9fcHJvYmUsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjIwNjpcdC5yZW1vdmUgPSBtZGlvX2dwaW9fcmVtb3ZlLFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0yMDctXHQuZHJpdmVyXHRcdD0ge1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoyMDg6XHRcdC5uYW1lXHQ9IFwmIzM0O21kaW8tZ3Bpb1wmIzM0OyxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MjA5Olx0XHQub2ZfbWF0Y2hfdGFibGUgPSBtZGlvX2dwaW9fb2ZfbWF0Y2gsXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTIxMC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0yMTItXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjIxMzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKG1kaW9fZ3Bpb19kcml2ZXIpO1xuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0yMTQtXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjIxNTpNT0RVTEVfQUxJQVMoXCYjMzQ7cGxhdGZvcm06bWRpby1ncGlvXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMjE2LU1PRFVMRV9BVVRIT1IoXCYjMzQ7TGF1cmVudCBQaW5jaGFydCwgUGF1bGl1cyBaYWxlY2thc1wmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1MjUxCgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgYWlyX2VuODgxMWhgIFBIWSBEcml2ZXIgUHJvYmUgU2VxdWVuY2UqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBhaXJfZW44ODExaGAgUEhZIGRyaXZlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgaXQmIzM5O3MgbWF0Y2hlZCBhbmQgdWx0aW1hdGVseSBwcm9iZWQgd2l0aGluIHRoZSBzeXN0ZW0uIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgY29yZSBvZiB0aGUgbWF0dGVyOiBgYWlyX2VuODgxMWguY2AgYW5kIGl0cyByZWdpc3RyYXRpb24gbWVjaGFuaXNtLiBJJiMzOTtsbCBiZSB0YXJnZXRpbmcgdGhlIGBtb2R1bGVfcGh5X2RyaXZlcmAgbWFjcm8gb3IgYSBkaXJlY3QgY2FsbCB0byBgcGh5X2RyaXZlcl9yZWdpc3RlcmAgd2l0aGluIHRoYXQgc291cmNlIGZpbGUuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIHdoZXJlIHRoZSBkcml2ZXIgYW5ub3VuY2VzIGl0cyBwcmVzZW5jZSBhbmQgY2FwYWJpbGl0aWVzIHRvIHRoZSBicm9hZGVyIFBIWSBmcmFtZXdvcmsuIFVuZGVyc3RhbmRpbmcgdGhlIHJlZ2lzdHJhdGlvbiBwb2ludCB3aWxsIHByb3ZpZGUgdGhlIGNyaXRpY2FsIGxpbmthZ2UgYmV0d2VlbiB0aGUgZHJpdmVyJiMzOTtzIGRlZmluaXRpb24gYW5kIHRoZSBzeXN0ZW0mIzM5O3MgYWJpbGl0eSB0byBsb2NhdGUgYW5kIHV0aWxpemUgaXQuIEZyb20gdGhlcmUsIEkgY2FuIHRyYWNlIHRoZSBtYXRjaGluZyBwcm9jZXNzIGFuZCB0aGUgZXZlbnR1YWwgcHJvYmUgZnVuY3Rpb24gZXhlY3V0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTUyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNTIwOlx0XHRQSFlfSURfTUFUQ0hfTU9ERUwoRU44ODExSF9QSFlfSUQpLFxuMTUyMTpcdFx0Lm5hbWVcdFx0XHQ9IFwmIzM0O0Fpcm9oYSBFTjg4MTFIXCYjMzQ7LFxuMTUyMjpcdFx0LnByb2JlXHRcdFx0PSBlbjg4MTFoX3Byb2JlLFxuMTUyMzpcdFx0LmdldF9mZWF0dXJlc1x0XHQ9IGVuODgxMWhfZ2V0X2ZlYXR1cmVzLFxuMTUyNDpcdFx0LmNvbmZpZ19pbml0XHRcdD0gZW44ODExaF9jb25maWdfaW5pdCxcbjE1MjU6XHRcdC5nZXRfcmF0ZV9tYXRjaGluZ1x0PSBlbjg4MTFoX2dldF9yYXRlX21hdGNoaW5nLFxuMTUyNjpcdFx0LmNvbmZpZ19hbmVnXHRcdD0gZW44ODExaF9jb25maWdfYW5lZyxcbjE1Mjc6XHRcdC5yZWFkX3N0YXR1c1x0XHQ9IGVuODgxMWhfcmVhZF9zdGF0dXMsXG4xNTI4Olx0XHQucmVzdW1lXHRcdFx0PSBlbjg4MTFoX3Jlc3VtZSxcbjE1Mjk6XHRcdC5zdXNwZW5kXHRcdD0gZW44ODExaF9zdXNwZW5kLFxuMTUzMDpcdFx0LmNvbmZpZ19pbnRyXHRcdD0gZW44ODExaF9jbGVhcl9pbnRyLFxuMTUzMTpcdFx0LmhhbmRsZV9pbnRlcnJ1cHRcdD0gZW44ODExaF9oYW5kbGVfaW50ZXJydXB0LFxuMTUzMjpcdFx0LmxlZF9od19pc19zdXBwb3J0ZWRcdD0gZW44ODExaF9sZWRfaHdfaXNfc3VwcG9ydGVkLFxuMTUzMzpcdFx0LnJlYWRfcGFnZVx0XHQ9IGFpcl9waHlfcmVhZF9wYWdlLFxuMTUzNDpcdFx0LndyaXRlX3BhZ2VcdFx0PSBhaXJfcGh5X3dyaXRlX3BhZ2UsXG4xNTM1Olx0XHQubGVkX2JsaW5rX3NldFx0XHQ9IGFpcl9sZWRfYmxpbmtfc2V0LFxuMTUzNjpcdFx0LmxlZF9icmlnaHRuZXNzX3NldFx0PSBhaXJfbGVkX2JyaWdodG5lc3Nfc2V0LFxuMTUzNzpcdFx0LmxlZF9od19jb250cm9sX3NldFx0PSBhaXJfbGVkX2h3X2NvbnRyb2xfc2V0LFxuMTUzODpcdFx0LmxlZF9od19jb250cm9sX2dldFx0PSBhaXJfbGVkX2h3X2NvbnRyb2xfZ2V0LFxuMTUzOTpcdH0sXG4xNTQwOlx0e1xuMTU0MTpcdFx0UEhZX0lEX01BVENIX01PREVMKEFOODgxMUhCX1BIWV9JRCksXG4xNTQyOlx0XHQubmFtZVx0XHRcdD0gXCYjMzQ7QWlyb2hhIEFOODgxMUhCXCYjMzQ7LFxuMTU0MzpcdFx0LnByb2JlXHRcdFx0PSBhbjg4MTFoYl9wcm9iZSxcbjE1NDQ6XHRcdC5yZW1vdmVcdFx0XHQ9IGFuODgxMWhiX3JlbW92ZSxcbjE1NDU6XHRcdC5nZXRfZmVhdHVyZXNcdFx0PSBlbjg4MTFoX2dldF9mZWF0dXJlcyxcbjE1NDY6XHRcdC5jb25maWdfaW5pdFx0XHQ9IGFuODgxMWhiX2NvbmZpZ19pbml0LFxuMTU0NzpcdFx0LmdldF9yYXRlX21hdGNoaW5nXHQ9IGVuODgxMWhfZ2V0X3JhdGVfbWF0Y2hpbmcsXG4xNTQ4Olx0XHQuY29uZmlnX2FuZWdcdFx0PSBlbjg4MTFoX2NvbmZpZ19hbmVnLFxuMTU0OTpcdFx0LnJlYWRfc3RhdHVzXHRcdD0gZW44ODExaF9yZWFkX3N0YXR1cyxcbjE1NTA6XHRcdC5yZXN1bWVcdFx0XHQ9IGVuODgxMWhfcmVzdW1lLFxuMTU1MTpcdFx0LnN1c3BlbmRcdFx0PSBlbjg4MTFoX3N1c3BlbmQsXG4xNTUyOlx0XHQuY29uZmlnX2ludHJcdFx0PSBlbjg4MTFoX2NsZWFyX2ludHIsXG4xNTUzOlx0XHQuaGFuZGxlX2ludGVycnVwdFx0PSBlbjg4MTFoX2hhbmRsZV9pbnRlcnJ1cHQsXG4xNTU0Olx0XHQubGVkX2h3X2lzX3N1cHBvcnRlZFx0PSBlbjg4MTFoX2xlZF9od19pc19zdXBwb3J0ZWQsXG4xNTU1Olx0XHQucmVhZF9wYWdlXHRcdD0gYWlyX3BoeV9yZWFkX3BhZ2UsXG4xNTU2Olx0XHQud3JpdGVfcGFnZVx0XHQ9IGFpcl9waHlfd3JpdGVfcGFnZSxcbjE1NTc6XHRcdC5sZWRfYmxpbmtfc2V0XHRcdD0gYWlyX2xlZF9ibGlua19zZXQsXG4xNTU4Olx0XHQubGVkX2JyaWdodG5lc3Nfc2V0XHQ9IGFpcl9sZWRfYnJpZ2h0bmVzc19zZXQsXG4xNTU5Olx0XHQubGVkX2h3X2NvbnRyb2xfc2V0XHQ9IGFpcl9sZWRfaHdfY29udHJvbF9zZXQsXG4xNTYwOlx0XHQubGVkX2h3X2NvbnRyb2xfZ2V0XHQ9IGFpcl9sZWRfaHdfY29udHJvbF9nZXQsXG4xNTYxOlx0fSB9O1xuMTU2MjpcdFxuMTU2MzpcdG1vZHVsZV9waHlfZHJpdmVyKGVuODgxMWhfZHJpdmVyKTtcbjE1NjQ6XHRcbjE1NjU6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGVuODgxMWhfdGJsW10gPSB7XG4xNTY2Olx0XHR7IFBIWV9JRF9NQVRDSF9NT0RFTChFTjg4MTFIX1BIWV9JRCkgfSxcbjE1Njc6XHRcdHsgUEhZX0lEX01BVENIX01PREVMKEFOODgxMUhCX1BIWV9JRCkgfSxcbjE1Njg6XHRcdHsgfVxuMTU2OTpcdH07XG4xNTcwOlx0XG4xNTcxOlx0TU9EVUxFX0RFVklDRV9UQUJMRShtZGlvLCBlbjg4MTFoX3RibCk7XG4xNTcyOlx0TU9EVUxFX0ZJUk1XQVJFKEVOODgxMUhfTUQzMl9ETSk7XG4xNTczOlx0TU9EVUxFX0ZJUk1XQVJFKEVOODgxMUhfTUQzMl9EU1ApO1xuMTU3NDpcdE1PRFVMRV9GSVJNV0FSRShBTjg4MTFIQl9NRDMyX0RNKTtcbjE1NzU6XHRNT0RVTEVfRklSTVdBUkUoQU44ODExSEJfTUQzMl9EU1ApO1xuMTU3NjpcdFxuMTU3NzpcdE1PRFVMRV9ERVNDUklQVElPTihcJiMzNDtBaXJvaGEgRU44ODExSCBhbmQgQU44ODExSEIgUEhZIGRyaXZlcnNcJiMzNDspO1xuMTU3ODpcdE1PRFVMRV9BVVRIT1IoXCYjMzQ7QWlyb2hhXCYjMzQ7KTtcbjE1Nzk6XHRNT0RVTEVfQVVUSE9SKFwmIzM0O0VyaWMgV291ZHN0cmEgXHUwMDNjZXJpY3dvdWRzQGdtYWlsLmNvbVx1MDAzZVwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2ODY0CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZToKCioqSW52ZXN0aWdhdGluZyBgYWlyX3dyaXRlX2J1ZmAgRHVyaW5nIEZpcm13YXJlIExvYWRpbmcqKgoKT2theSwgc28gYGFpcl93cml0ZV9idWZgIHBvcHMgdXAgZHVyaW5nIHRoZSBmaXJtd2FyZSBsb2FkaW5nIHByb2Nlc3MuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIGFuZCB3YXJyYW50cyBhIGRlZXBlciBkaXZlLiBUaGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIG1hcCB0aGUgY2FsbCBncmFwaC4gTGV0JiMzOTtzIHNlZSB3aG8mIzM5O3MgYWN0dWFsbHkgKmNhbGxpbmcqIHRoaXMgZnVuY3Rpb24uIEtub3dpbmcgdGhlIGNvbnRleHQgb2YgdGhvc2UgY2FsbHMgd2lsbCBiZSBjcml0aWNhbCB0byB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgaW1wbGljYXRpb25zLiBJIG5lZWQgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBwYXRoIGFuZCBpZGVudGlmeSB0aGUgcG9pbnRzIHdoZXJlIGRhdGEgaXMgYmVpbmcgd3JpdHRlbiwgYW5kIHdoeS4gVGhpcyBjb3VsZCBiZSB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkIGluIHRlcm1zIG9mIGZsYXNoaW5nIG9yIGluaXRpYWxpemF0aW9uLCBvciBtYXliZSBpdCYjMzk7cyBqdXN0IGEgZGlhZ25vc3RpYyBvciBsb2dnaW5nIGZ1bmN0aW9uLiBUaW1lIHRvIGJ1c3Qgb3V0IHRoZSBkZWJ1Z2dlciBhbmQgc3RhcnQgZGlnZ2luZyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWlyX3dyaXRlX2J1ZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTI0OD1zdGF0aWMgaW50IF9fYWlyX3BidXNfcmVnX3dyaXRlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldixcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yNzItXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyNzM6c3RhdGljIGludCBfX2Fpcl93cml0ZV9idWYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIGFkZHJlc3MsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yNzQtXHRcdFx0ICAgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0zMDgtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzozMDk6c3RhdGljIGludCBhaXJfd3JpdGVfYnVmKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUzMiBhZGRyZXNzLFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzEwLVx0XHRcdCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTMyMy1cdGlmIChzYXZlZF9wYWdlIFx1MDAzZT0gMCkge1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MzI0Olx0XHRyZXQgPSBfX2Fpcl93cml0ZV9idWYocGh5ZGV2LCBhZGRyZXNzLCBmdyk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0zMjUtXHRcdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9NDAzPXN0YXRpYyBpbnQgYW44ODExaGJfbG9hZF9maWxlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGNvbnN0IGNoYXIgKm5hbWUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDEzLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDE0Olx0cmV0ID0gYWlyX3dyaXRlX2J1ZihwaHlkZXYsIGFkZHJlc3MsICBmdyk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy00MTUtXHRyZWxlYXNlX2Zpcm13YXJlKGZ3KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz01MDg9c3RhdGljIGludCBlbjg4MTFoX2xvYWRfZmlybXdhcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01MzItXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1MzM6XHRyZXQgPSBhaXJfd3JpdGVfYnVmKHBoeWRldiwgQUlSX0ZXX0FERFJfRE0sICBmdzEpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTM0LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01MzYtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1Mzc6XHRyZXQgPSBhaXJfd3JpdGVfYnVmKHBoeWRldiwgQUlSX0ZXX0FERFJfRFNQLCBmdzIpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTM4LVx0aWYgKHJldCBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc4MzMKCQkJCQkJCW91dHB1dDogNjEKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipUcmFjaW5nIEZ1bmN0aW9uIENhbGxzOiBgYW44ODExaGJfbG9hZF9maWxlYCBhbmQgYGVuODgxMWhfbG9hZF9maXJtd2FyZWAqKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGV4ZWN1dGlvbiBmbG93IHN1cnJvdW5kaW5nIGBhbjg4MTFoYl9sb2FkX2ZpbGVgIGFuZCBgZW44ODExaF9sb2FkX2Zpcm13YXJlYC4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGlkZW50aWZ5IGV2ZXJ5IGluc3RhbmNlIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgKmNhbGxlZCogd2l0aGluIHRoZSBjb2RlYmFzZS4gVGhlIGdvYWwgaGVyZSBpcyB0byBtYXAgb3V0IHRoZWlyIGRlcGVuZGVuY2llcyBhbmQgaG93IHRoZXkgZml0IGludG8gdGhlIGJpZ2dlciBwaWN0dXJlLiBBcmUgdGhlc2UgY29yZSBsb2FkaW5nIGZ1bmN0aW9ucz8gQXJlIHRoZXkgcGFydCBvZiBhIGxhcmdlciBmaXJtd2FyZSB1cGRhdGUgcHJvY2Vzcywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEEgc2ltcGxlIGNhbGwgZ3JhcGggdHJhY2Ugc2hvdWxkIHByb3ZpZGUgdGhvc2UgYW5zd2Vycy4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgYmUgYWJsZSB0byBiZXR0ZXIgdW5kZXJzdGFuZCB0aGUgY29udGV4dHMgdGhlc2UgZnVuY3Rpb25zIG9wZXJhdGUgaW4gYW5kIHRoZWlyIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMuIEl0JiMzOTtzIHRpbWUgdG8gZGlnIGluIGFuZCBmb2xsb3cgdGhlIGJyZWFkY3J1bWJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAxODo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsoYW44ODExaGJfbG9hZF9maXJtd2FyZXxlbjg4MTFoX2xvYWRfZmlybXdhcmUpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9NDQzPXN0YXRpYyBpbnQgYW44ODExaGJfbWN1X2RlYXNzZXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDY3LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDY4OnN0YXRpYyBpbnQgYW44ODExaGJfbG9hZF9maXJtd2FyZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDY5LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01MDctXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1MDg6c3RhdGljIGludCBlbjg4MTFoX2xvYWRfZmlybXdhcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTUwOS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTE5LVx0aWYgKHJldCBcdTAwM2MgMClcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjUyMDpcdFx0Z290byBlbjg4MTFoX2xvYWRfZmlybXdhcmVfcmVsMTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTUyMS1cbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01MjQtXHRpZiAocmV0IFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTI1Olx0XHRnb3RvIGVuODgxMWhfbG9hZF9maXJtd2FyZV9vdXQ7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01MjYtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTMwLVx0aWYgKHJldCBcdTAwM2MgMClcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjUzMTpcdFx0Z290byBlbjg4MTFoX2xvYWRfZmlybXdhcmVfb3V0O1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTMyLVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTUzNC1cdGlmIChyZXQgXHUwMDNjIDApXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1MzU6XHRcdGdvdG8gZW44ODExaF9sb2FkX2Zpcm13YXJlX291dDtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTUzNi1cbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01MzgtXHRpZiAocmV0IFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTM5Olx0XHRnb3RvIGVuODgxMWhfbG9hZF9maXJtd2FyZV9vdXQ7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01NDAtXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTQzLVx0aWYgKHJldCBcdTAwM2MgMClcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjU0NDpcdFx0Z290byBlbjg4MTFoX2xvYWRfZmlybXdhcmVfb3V0O1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTQ1LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTU0Ny1cdGlmIChyZXQgXHUwMDNjIDApXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1NDg6XHRcdGdvdG8gZW44ODExaF9sb2FkX2Zpcm13YXJlX291dDtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTU0OS1cbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01NTEtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1NTI6ZW44ODExaF9sb2FkX2Zpcm13YXJlX291dDpcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTU1My1cdHJlbGVhc2VfZmlybXdhcmUoZncyKTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTU1NC1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjU1NTplbjg4MTFoX2xvYWRfZmlybXdhcmVfcmVsMTpcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTU1Ni1cdHJlbGVhc2VfZmlybXdhcmUoZncxKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0xMDgwPXN0YXRpYyBpbnQgYW44ODExaGJfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMTA5LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTExMDpcdHJldCA9IGFuODgxMWhiX2xvYWRfZmlybXdhcmUocGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTExMTEtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MTE1MT1zdGF0aWMgaW50IGVuODgxMWhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMTYxLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTE2MjpcdHJldCA9IGVuODgxMWhfbG9hZF9maXJtd2FyZShwaHlkZXYpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTE2My1cdGlmIChyZXQgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NDQ4CgkJCQkJCQlvdXRwdXQ6IDE0NgoJCQkJCQkJdGhvdWdodHM6IDc4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiBNRElPIFBIWSBEcml2ZXIgUmVhY2hhYmlsaXR5IGZvciBGdXp6aW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSBgYWlyX2VuODgxMWguY2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBBSVJfRU44ODExSF9QSFlgIGNvbXBvbmVudCwgaXMgZXZlbiAqcmVhY2hhYmxlKiB3aXRoaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGlzOiBkb2VzIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLCB0aGUgZ28tdG8gcGxhdGZvcm1zIGZvciBmdXp6aW5nLCBhY3R1YWxseSAqZW11bGF0ZSogdGhlIEFpcm9oYSBFTjg4MTFIIC8gQU44ODExSEIgMi41IEdpZ2FiaXQgRXRoZXJuZXQgUEhZIGNoaXA/CgpJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBoYXJkd2FyZSByZXF1aXJlbWVudHMuIFRoaXMgc3BlY2lmaWMgUEhZIGNoaXAgcmVsaWVzIG9uIGFuIE1ESU8gYnVzIGZvciBjb21tdW5pY2F0aW9uLiBJIG5lZWQgdG8ga25vdyBpZiBhbnkgdmlydHVhbCBlbnZpcm9ubWVudCwgbGlrZSB0aG9zZSB1c2VkIHdpdGggc3l6a2FsbGVyLCBoYXMgYSB2aXJ0dWFsIE1ESU8gYnVzIG9yIGVtdWxhdGVzIGEgZGV2aWNlIHRoYXQgd291bGQgcHJvYmUgZm9yIHRoaXMgQWlyb2hhIFBIWSB3aXRoIGl0cyBzcGVjaWZpYyBJRCAoYDB4MDNhMmE0MTFgIG9yIGAweGMwZmYwNGEwYCkuCgpGcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhlIGFuc3dlciBpcyBuby4gU3RhbmRhcmQgUUVNVSBzZXR1cHMgdXNlIHZpcnR1YWwgbmV0d29yayBkZXZpY2VzIOKAkyBlMTAwMCwgdmlydGlvLW5ldCwgZXRjLiDigJMgYnV0IG5vbmUgb2YgdGhlc2UgZXZlbiByZW1vdGVseSByZXNlbWJsZSB0aGUgQWlyb2hhIEVOODgxMUguIFRoaXMgaXMgYSBwaHlzaWNhbCB0cmFuc2NlaXZlciwgYSBwaWVjZSBvZiBhY3R1YWwgaGFyZHdhcmUgdXN1YWxseSBmb3VuZCBvbiBwaHlzaWNhbCBib2FyZHMgYW5kIHJvdXRlcnMsIGxpa2UgdGhvc2UgdXNpbmcgTWVkaWFUZWsgRmlsb2dpYyBTb0NzLiBBaXJvaGEsIGFmdGVyIGFsbCwgaXMgYSBNZWRpYVRlayBzdWJzaWRpYXJ5IGFuZCB0aGVpciBjaGlwcyBhcmUgdXNlZCBpbiBwaHlzaWNhbCBoYXJkd2FyZS4KCk5vdywgbGV0JiMzOTtzIGNvbnN1bHQgdGhlIHRyaWFnZSBndWlkZWxpbmVzIG9uIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZS4gSXQmIzM5O3MgY2xlYXI6IGlmIHRoZSBjb2RlICpjYW4mIzM5O3QqIGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBpdCYjMzk7cyBhIG5vLWdvIGZvciBmdXp6aW5nLiBUaGUgZ3VpZGVsaW5lcyBleHBsaWNpdGx5IG1lbnRpb24gdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGxpa2UgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycy4gVGhpcyBgYWlyX2VuODgxMWguY2AgZHJpdmVyIGZvciBhIHBoeXNpY2FsIEV0aGVybmV0IFBIWSBmaXRzIHRoYXQgZGVzY3JpcHRpb24gcGVyZmVjdGx5LgoKVGhlIGZhY3QgaXMsIHRoaXMgZHJpdmVyIG5lZWRzIGEgcGh5c2ljYWwgQWlyb2hhIFBIWSBvbiBhbiBNRElPIGJ1cyB3aXRoIGEgc3BlY2lmaWMgdmVuZG9yIElELiBUaGlzIGlzIG5vdCBzb21ldGhpbmcgdGhhdCBpcyBlbXVsYXRlZCBpbiBRRU1VLiBUaGF0IG1ha2VzIGl0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igb3VyIHB1cnBvc2VzLgoKSSBuZWVkIHRvIGNvbmZpcm0gdGhpczogSSBzZWUgdGhhdCB0aGUgcGF0Y2ggbW9kaWZpZXMgb25seSB0aGUgYGFpcl9lbjg4MTFoLmNgIGZpbGUgYW5kIG9ubHkgdGhlIGBhaXJfd3JpdGVfYnVmKClgIGZ1bmN0aW9uLCB3aGVyZSBhIGNoZWNrIGZvciBgZnctJmd0O3NpemUgJSA0YCBoYXMgYmVlbiBhZGRlZC4gTm8gb3RoZXIgZmlsZXMgYXJlIHRvdWNoZWQuIFRoZSBkcml2ZXIgaXMgZW5hYmxlZCB2aWEgYENPTkZJR19BSVJfRU44ODExSF9QSFlgLiBUaGUgaGFyZHdhcmUgZGVwZW5kZW5jeSBpcyB0aGUgQWlyb2hhIEVOODgxMUgvQU44ODExSEIgMi41RyBFdGhlcm5ldCBQSFkuIFRoZSBrZXkgcG9pbnQgaXMgdGhhdCBpdHMgcmVhY2hhYmlsaXR5IGlzIHByZWRpY2F0ZWQgb24gcGh5c2ljYWwgaGFyZHdhcmUgb24gYW4gTURJTyBidXMsIGFuZCB0aGVyZWZvcmUgaXQgaXMgbm90IHJlYWNoYWJsZSBpbiBRRU1VLgoKR2l2ZW4gYWxsIG9mIHRoaXMsIHRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIHNob3VsZCBhYnNvbHV0ZWx5IGJlIHNldCB0byBgZmFsc2VgLiBMZXQmIzM5O3MgcHJlcGFyZSB0aGUgcmVhc29uaW5nLCB0aGUgcmVxdWlyZWQgY29uZmlncywgYW5kIHJlbWVtYmVyIHRvIGxlYXZlIHRoZSBmb2N1cyBzeW1ib2xzIGVtcHR5LCBzaWduYWxpbmcgdGhhdCB0aGlzIGlzbiYjMzk7dCBhIGZ1enppbmcgdGFyZ2V0LgoKVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDE4OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBSVJfRU44ODExSF9QSFkmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYGFpcl93cml0ZV9idWZgIGluIGBkcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguY2AsIHdoaWNoIGlzIGEgZHJpdmVyIGZvciB0aGUgQWlyb2hhIEVOODgxMUggYW5kIEFOODgxMUhCIDIuNUcgRXRoZXJuZXQgUEhZcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgQWlyb2hhIFBIWSBoYXJkd2FyZSBjb25uZWN0ZWQgdmlhIE1ESU8sIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FJUl9FTjg4MTFIX1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgYWlyX3dyaXRlX2J1ZmAgaW4gYGRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jYCwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIHRoZSBBaXJvaGEgRU44ODExSCBhbmQgQU44ODExSEIgMi41RyBFdGhlcm5ldCBQSFlzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBBaXJvaGEgUEhZIGhhcmR3YXJlIGNvbm5lY3RlZCB2aWEgTURJTywgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMTg6NDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjQ2OjIzLjcyNTUwODAwM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk5NTM0NDQzMDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFJUl9FTjg4MTFIX1BIWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGFpcl93cml0ZV9idWZgIGluIGBkcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguY2AsIHdoaWNoIGlzIGEgZHJpdmVyIGZvciB0aGUgQWlyb2hhIEVOODgxMUggYW5kIEFOODgxMUhCIDIuNUcgRXRoZXJuZXQgUEhZcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgQWlyb2hhIFBIWSBoYXJkd2FyZSBjb25uZWN0ZWQgdmlhIE1ESU8sIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjQ2OjIzLjcyNTUxNDI3M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIxMjEzNDEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzQxMWFjODRkN2NiOWQ0NjA5MjA3ZGZjYzA1OTI0ZDI3MmFmZGNjZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIFNlcCA0IDE4OjQ2OjIyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jIGIvZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmNcXG5pbmRleCAwZWViN2I5YTRlMjYwLi4zNGQyNzI3ZTgyMjJiIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmNcXG5AQCAtMzEyLDYgKzMxMiwxMiBAQCBzdGF0aWMgaW50IGFpcl93cml0ZV9idWYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIGFkZHJlc3MsXFxuIFxcdGludCBzYXZlZF9wYWdlO1xcbiBcXHRpbnQgcmV0ID0gMDtcXG4gXFxuK1xcdGlmIChmdy1cXHUwMDNlc2l6ZSAlIDQpIHtcXG4rXFx0XFx0cGh5ZGV2X2VycihwaHlkZXYsIFxcXCJmaXJtd2FyZSBzaXplICV6dSBpcyBub3QgYSBtdWx0aXBsZSBvZiA0XFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgICBmdy1cXHUwMDNlc2l6ZSk7XFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHR9XFxuK1xcbiBcXHRzYXZlZF9wYWdlID0gcGh5X3NlbGVjdF9wYWdlKHBoeWRldiwgQUlSX1BIWV9QQUdFX0VYVEVOREVEXzQpO1xcbiBcXG4gXFx0aWYgKHNhdmVkX3BhZ2UgXFx1MDAzZT0gMCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODo0NjoyNC4yNDc1MjU2NDVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjk5MDEyMzg2NzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFJUl9FTjg4MTFIX1BIWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgYWlyX3dyaXRlX2J1ZmAgaW4gYGRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jYCwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIHRoZSBBaXJvaGEgRU44ODExSCBhbmQgQU44ODExSEIgMi41RyBFdGhlcm5ldCBQSFlzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBBaXJvaGEgUEhZIGhhcmR3YXJlIGNvbm5lY3RlZCB2aWEgTURJTywgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzc1xudG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5UaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLFxuYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy5cblxuLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURTpcbiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZFxuICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLlxuICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsXG4gIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy5cblxuLSBETyBOT1QgQkxJTkRMWSBUUlVTVCBcIk5PIEZVTkNUSU9OQUwgQ0hBTkdFXCIgKE5GQ0kpIE9SIFwiUkVGQUNUT1JJTkdcIiBDTEFJTVM6XG4gIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgXCJjbGVhbnVwc1wiLCBcInJlZmFjdG9yaW5nc1wiLCBvciBzdGF0ZVxuICBcIk5vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkXCIuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLlxuICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnRcbiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuXG4gIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuXG5cbi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6XG4gIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKixcbiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuXG4gIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXJcbiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOlxuXG4tIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6XG4gICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLlxuICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKVxuICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy5cbiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50c1xuICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuXG4gICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLlxuLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6XG4gICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczpcbiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmdcbiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy5cbiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4zLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzpcbi0gQ29yZSBTdWJzeXN0ZW1zOlxuICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSxcbiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuXG4tIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczpcbiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuXG4tIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczpcbiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuXG4tIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6XG4gICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6XG5cbi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOlxuICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1c1xuICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdFxuICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS5cbiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzIFwiZm9jdXNlZFwiLFxuICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuXG5cbi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOlxuICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHNcbiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuXG5cbi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOlxuICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrXG4gIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLlxuICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXJcbiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlnc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6XG4tIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4tIENoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuXG4tIFN0cmlwIGFueSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJUYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NFxuXG5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjNDExYWM4NGQ3Y2I5ZDQ2MDkyMDdkZmNjMDU5MjRkMjcyYWZkY2NlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBTZXAgNCAxODo0NjoyMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jIGIvZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmNcbmluZGV4IDBlZWI3YjlhNGUyNjAuLjM0ZDI3MjdlODIyMmIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmNcbkBAIC0zMTIsNiArMzEyLDEyIEBAIHN0YXRpYyBpbnQgYWlyX3dyaXRlX2J1ZihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MzIgYWRkcmVzcyxcbiBcdGludCBzYXZlZF9wYWdlO1xuIFx0aW50IHJldCA9IDA7XG4gXG4rXHRpZiAoZnctXHUwMDNlc2l6ZSAlIDQpIHtcbitcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwiZmlybXdhcmUgc2l6ZSAlenUgaXMgbm90IGEgbXVsdGlwbGUgb2YgNFxcblwiLFxuK1x0XHRcdCAgIGZ3LVx1MDAzZXNpemUpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbiBcdHNhdmVkX3BhZ2UgPSBwaHlfc2VsZWN0X3BhZ2UocGh5ZGV2LCBBSVJfUEhZX1BBR0VfRVhURU5ERURfNCk7XG4gXG4gXHRpZiAoc2F2ZWRfcGFnZSBcdTAwM2U9IDApIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjQ2OjI0LjI0NzUyNzU0NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjU4NTkwMjI3NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0d29yayBQSFkgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gdGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguY2AuIE15IGZpcnN0IHRob3VnaHQgaXMsIFwiV2hhdCdzIHRoaXMgZHJpdmVyIGFib3V0P1wiIEkgbmVlZCB0byBxdWlja2x5IHVuZGVyc3RhbmQgd2hhdCB0aGUgYGFpcl9lbjg4MTFoLmNgIGRyaXZlciBpcyByZXNwb25zaWJsZSBmb3IuIElzIGl0IGEgY29tbW9uIG9yIG5pY2hlIFBIWT8gSXMgaXQgZm9yIGEgc3BlY2lmaWMgdHlwZSBvZiBuZXR3b3JrIGludGVyZmFjZT9cblxuSSBuZWVkIHRvIHF1aWNrbHkgZmlndXJlIG91dCBpZiB0aGlzIGlzIHNvbWV0aGluZyBJIGNhbiBhY3R1YWxseSAqdGVzdCogZWZmZWN0aXZlbHkgd2l0aGluIG15IGV4aXN0aW5nIGZ1enppbmcgc2V0dXAuIElzIHRoaXMgYWNjZXNzaWJsZSB3aXRoaW4gUUVNVSBvciBHb29nbGUgQ29tcHV0ZSBFbmdpbmU/IERvZXMgaXQgcmVxdWlyZSBzb21lIHNwZWNpYWxpemVkIGhhcmR3YXJlIGxpa2UgYW4gTURJTyBidXMgb3IgYSBzcGVjaWZpYyBFdGhlcm5ldCBQSFkgdGhhdCBJJ2QgbmVlZCB0byBzaW11bGF0ZSBvciBhY3F1aXJlIHBoeXNpY2FsbHk/IFRoYXQncyBhIGNyaXRpY2FsIGZpcnN0IHN0ZXAuXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHdvcmsuIEknbGwgdXNlIGVpdGhlciBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgYW5kIGltcG9ydGFudGx5LCBpdHMgS2NvbmZpZyBlbnRyeS4gVGhlIEtjb25maWcgd2lsbCB0ZWxsIG1lIGhvdyB0aGlzIGRyaXZlciBpcyBjb25maWd1cmVkLCBpdHMgZGVwZW5kZW5jaWVzLCBhbmQgYW55IHJlbGV2YW50IG9wdGlvbnMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNsdWVzIEkgbmVlZCB0byBkZXRlcm1pbmUgaXRzIHJlYWNoYWJpbGl0eSBhbmQgcG90ZW50aWFsIGltcGFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkzMywiT3V0cHV0VG9rZW5zIjo2OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjQ2OjMwLjEwNjU1MzEzMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTk1NTY2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJBSVJfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDExMzQgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTgxPWNvbmZpZyBBUzIxWFhYX1BIWVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctOTItXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6OTM6Y29uZmlnIEFJUl9BTjg4MDFfUEhZXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctOTQtXFx0dHJpc3RhdGUgXFxcIkFpcm9oYSBBTjg4MDEgR2lnYWJpdCBQSFlcXFwiXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6OTU6XFx0c2VsZWN0IEFJUl9ORVRfUEhZTElCXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctOTYtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctOTgtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6OTk6Y29uZmlnIEFJUl9FTjg4MTFIX1BIWVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTEwMC1cXHR0cmlzdGF0ZSBcXFwiQWlyb2hhIEVOODgxMUggMi41IEdpZ2FiaXQgUEhZXFxcIlxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjEwMTpcXHRzZWxlY3QgQUlSX05FVF9QSFlMSUJcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xMDItXFx0c2VsZWN0IFBIWV9DT01NT05fUFJPUFNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTEwNS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxMDY6Y29uZmlnIEFJUl9ORVRfUEhZTElCXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTA3LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9MzI9b2JqLSQoQ09ORklHX0FESU4xMTQwX1BIWSlcXHQrPSBhZGluMTE0MC1waHkub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTozMzpvYmotJChDT05GSUdfQUlSX0FOODgwMV9QSFkpXFx0Kz0gYWlyX2FuODgwMS5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjM0Om9iai0kKENPTkZJR19BSVJfRU44ODExSF9QSFkpICAgKz0gYWlyX2VuODgxMWgub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZTozNTpvYmotJChDT05GSUdfQUlSX05FVF9QSFlMSUIpXFx0Kz0gYWlyX3BoeV9saWIub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0zNi1vYmotJChDT05GSUdfQU1EX1BIWSlcXHRcXHQrPSBhbWQub1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy02MS0jZGVmaW5lIEFESU4xMzAwX1BIWV9TVEFUVVMxXFx0XFx0XFx0MHgwMDFhXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo2MjojZGVmaW5lICAgQURJTjEzMDBfUEFJUl8wMV9TV0FQXFx0XFx0XFx0QklUKDExKVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNjMtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jPTc0Mz1zdGF0aWMgaW50IGFkaW5fbWRpeF91cGRhdGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNzczLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6Nzc0OlxcdHN3YXBwZWQgPSAhIShyZWcgXFx1MDAyNiBBRElOMTMwMF9QQUlSXzAxX1NXQVApO1xcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNzc1LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYz05Nzc9c3RhdGljIGludCBhZGluX2NhYmxlX3Rlc3RfcmVwb3J0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTk4MS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjk4MjpcXHRmb3IgKHBhaXIgPSBFVEhUT09MX0FfQ0FCTEVfUEFJUl9BOyBwYWlyIFxcdTAwM2M9IEVUSFRPT0xfQV9DQUJMRV9QQUlSX0Q7IHBhaXIrKykge1xcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtOTgzLVxcdFxcdHJldCA9IGFkaW5fY2FibGVfdGVzdF9yZXBvcnRfcGFpcihwaHlkZXYsIHBhaXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0xMjQtLyogTURJT19NTURfVkVORDEgUmVnaXN0ZXJzICovXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoxMjU6I2RlZmluZSBBTjg4MDFfUEhZX1RYX1BBSVJfRExZX1NFTF9HQkVcXHQweDEzXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoxMjY6I2RlZmluZSAgIEFOODgwMV9QSFlfUEFJUl9ETFlfU0VMX0FfR0JFXFx0R0VOTUFTSygxNCwgMTIpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoxMjc6I2RlZmluZSAgIEFOODgwMV9QSFlfUEFJUl9ETFlfU0VMX0JfR0JFXFx0R0VOTUFTSygxMCwgOClcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjEyODojZGVmaW5lICAgQU44ODAxX1BIWV9QQUlSX0RMWV9TRUxfQ19HQkVcXHRHRU5NQVNLKDYsIDQpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoxMjk6I2RlZmluZSAgIEFOODgwMV9QSFlfUEFJUl9ETFlfU0VMX0RfR0JFXFx0R0VOTUFTSygyLCAwKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMTMwLSNkZWZpbmUgQU44ODAxX1BIWV9SWEFEQ19DVFJMXFx0XFx0MHhkOFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYz05MDI9c3RhdGljIGludCBhbjg4MDFyX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTkyNC1cXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjkyNTpcXHRyZXQgPSBwaHlfd3JpdGVfcGFnZWQocGh5ZGV2LCBBSVJfUEhZX1BBR0VfRVhURU5ERURfMSxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTkyNi1cXHRcXHRcXHQgICAgICBBTjg4MDFfRVhUX1JFR19QSFksXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTk1OC1cXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5NTk6XFx0XFx0XFx0ICAgIEFOODgwMV9QSFlfVFhfUEFJUl9ETFlfU0VMX0dCRSxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjk2MDpcXHRcXHRcXHQgICAgRklFTERfUFJFUChBTjg4MDFfUEhZX1BBSVJfRExZX1NFTF9BX0dCRSwgNCkgfFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTYxOlxcdFxcdFxcdCAgICBGSUVMRF9QUkVQKEFOODgwMV9QSFlfUEFJUl9ETFlfU0VMX0NfR0JFLCA0KSk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05NjItXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTM0LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjM1OiNkZWZpbmUgQUlSX0ZXX0FERFJfRE1cXHQweDAwMDAwMDAwXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MzY6I2RlZmluZSBBSVJfRldfQUREUl9EU1BcXHQweDAwMTAwMDAwXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzctXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzgtLyogTUlJIFJlZ2lzdGVycyAqL1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjM5OiNkZWZpbmUgQUlSX0FVWF9DVFJMX1NUQVRVU1xcdFxcdDB4MWRcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo0MDojZGVmaW5lICAgQUlSX0FVWF9DVFJMX1NUQVRVU19TUEVFRF9NQVNLXFx0R0VOTUFTSyg0LCAyKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjQxOiNkZWZpbmUgICBBSVJfQVVYX0NUUkxfU1RBVFVTX1NQRUVEXzEwXFx0XFx0MHgwXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDI6I2RlZmluZSAgIEFJUl9BVVhfQ1RSTF9TVEFUVVNfU1BFRURfMTAwXFx0XFx0MHg0XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDM6I2RlZmluZSAgIEFJUl9BVVhfQ1RSTF9TVEFUVVNfU1BFRURfMTAwMFxcdDB4OFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjQ0OiNkZWZpbmUgICBBSVJfQVVYX0NUUkxfU1RBVFVTX1NQRUVEXzI1MDBcXHQweGNcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy00NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTQ5LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjUwOiNkZWZpbmUgQUlSX1BIWV9NQ1VfQ01EXzBcXHRcXHQweDgwMGJcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1MTojZGVmaW5lIEFJUl9QSFlfTUNVX0NNRF8xXFx0XFx0MHg4MDBjXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTI6I2RlZmluZSBBSVJfUEhZX01DVV9DTURfMV9NT0RFMVxcdFxcdFxcdDB4MFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjUzOiNkZWZpbmUgQUlSX1BIWV9NQ1VfQ01EXzJcXHRcXHQweDgwMGRcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1NDojZGVmaW5lIEFJUl9QSFlfTUNVX0NNRF8yX01PREUxXFx0XFx0XFx0MHgwXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTU6I2RlZmluZSBBSVJfUEhZX01DVV9DTURfM1xcdFxcdDB4ODAwZVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjU2OiNkZWZpbmUgQUlSX1BIWV9NQ1VfQ01EXzNfTU9ERTFcXHRcXHRcXHQweDExMDFcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1NzojZGVmaW5lIEFJUl9QSFlfTUNVX0NNRF8zX0RPQ01EXFx0XFx0XFx0MHgxMTAwXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTg6I2RlZmluZSBBSVJfUEhZX01DVV9DTURfNFxcdFxcdDB4ODAwZlxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjU5OiNkZWZpbmUgQUlSX1BIWV9NQ1VfQ01EXzRfTU9ERTFcXHRcXHRcXHQweDAwMDJcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo2MDojZGVmaW5lIEFJUl9QSFlfTUNVX0NNRF80X0NBQkxFX1BBSVJfQVxcdFxcdDB4MDBkN1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjYxOiNkZWZpbmUgQUlSX1BIWV9NQ1VfQ01EXzRfQ0FCTEVfUEFJUl9CXFx0XFx0MHgwMGQ4XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjI6I2RlZmluZSBBSVJfUEhZX01DVV9DTURfNF9DQUJMRV9QQUlSX0NcXHRcXHQweDAwZDlcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo2MzojZGVmaW5lIEFJUl9QSFlfTUNVX0NNRF80X0NBQkxFX1BBSVJfRFxcdFxcdDB4MDBkYVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjY0OiNkZWZpbmUgQUlSX1BIWV9NQ1VfQ01EXzRfSU5UQ0xSXFx0XFx0MHgwMGU0XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjUtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjYtLyogUmVnaXN0ZXJzIG9uIE1ESU9fTU1EX1ZFTkQyICovXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Njc6I2RlZmluZSBBSVJfUEhZX0xFRF9CQ1JcXHRcXHRcXHQweDAyMVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjY4OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9CQ1JfTU9ERV9NQVNLXFx0XFx0R0VOTUFTSygxLCAwKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjY5OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9CQ1JfVElNRV9URVNUXFx0XFx0QklUKDIpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NzA6I2RlZmluZSAgIEFJUl9QSFlfTEVEX0JDUl9DTEtfRU5cXHRcXHRCSVQoMylcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3MTojZGVmaW5lICAgQUlSX1BIWV9MRURfQkNSX0VYVF9DVFJMXFx0XFx0QklUKDE1KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTcyLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjczOiNkZWZpbmUgQUlSX1BIWV9MRURfRFVSX09OXFx0XFx0MHgwMjJcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03NC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NTojZGVmaW5lIEFJUl9QSFlfTEVEX0RVUl9CTElOS1xcdFxcdDB4MDIzXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzYtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Nzc6I2RlZmluZSBBSVJfUEhZX0xFRF9PTihpKVxcdCAgICAgICAoMHgwMjQgKyAoKGkpICogMikpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Nzg6I2RlZmluZSAgIEFJUl9QSFlfTEVEX09OX01BU0tcXHRcXHRcXHQoR0VOTUFTSyg2LCAwKSB8IEJJVCg4KSlcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3OTojZGVmaW5lICAgQUlSX1BIWV9MRURfT05fTElOSzEwMDBcXHRcXHRCSVQoMClcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MDojZGVmaW5lICAgQUlSX1BIWV9MRURfT05fTElOSzEwMFxcdFxcdEJJVCgxKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgxOiNkZWZpbmUgICBBSVJfUEhZX0xFRF9PTl9MSU5LMTBcXHRcXHRcXHRCSVQoMilcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MjojZGVmaW5lICAgQUlSX1BIWV9MRURfT05fTElOS0RPV05cXHRcXHRCSVQoMylcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MzojZGVmaW5lICAgQUlSX1BIWV9MRURfT05fRkRYXFx0XFx0XFx0QklUKDQpIC8qIEZ1bGwgZHVwbGV4ICovXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6ODQ6I2RlZmluZSAgIEFJUl9QSFlfTEVEX09OX0hEWFxcdFxcdFxcdEJJVCg1KSAvKiBIYWxmIGR1cGxleCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjg1OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9PTl9GT1JDRV9PTlxcdFxcdEJJVCg2KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjg2OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9PTl9MSU5LMjUwMFxcdFxcdEJJVCg4KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjg3OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9PTl9QT0xBUklUWVxcdFxcdEJJVCgxNClcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4ODojZGVmaW5lICAgQUlSX1BIWV9MRURfT05fRU5BQkxFXFx0XFx0XFx0QklUKDE1KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTg5LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjkwOiNkZWZpbmUgQUlSX1BIWV9MRURfQkxJTksoaSlcXHQgICAgICAgKDB4MDI1ICsgKChpKSAqIDIpKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjkxOiNkZWZpbmUgICBBSVJfUEhZX0xFRF9CTElOS18xMDAwVFhcXHRcXHRCSVQoMClcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo5MjojZGVmaW5lICAgQUlSX1BIWV9MRURfQkxJTktfMTAwMFJYXFx0XFx0QklUKDEpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6OTM6I2RlZmluZSAgIEFJUl9QSFlfTEVEX0JMSU5LXzEwMFRYXFx0XFx0QklUKDIpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6OTQ6I2RlZmluZSAgIEFJUl9QSFlfTEVEX0JMSU5LXzEwMFJYXFx0XFx0QklUKDMpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6OTU6I2RlZmluZSAgIEFJUl9QSFlfTEVEX0JMSU5LXzEwVFhcXHRcXHRCSVQoNClcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo5NjojZGVmaW5lICAgQUlSX1BIWV9MRURfQkxJTktfMTBSWFxcdFxcdEJJVCg1KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjk3OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9CTElOS19DT0xMSVNJT05cXHRcXHRCSVQoNilcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo5ODojZGVmaW5lICAgQUlSX1BIWV9MRURfQkxJTktfUlhfQ1JDX0VSUlxcdFxcdEJJVCg3KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjk5OiNkZWZpbmUgICBBSVJfUEhZX0xFRF9CTElOS19SWF9JRExFX0VSUlxcdFxcdEJJVCg4KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEwMDojZGVmaW5lICAgQUlSX1BIWV9MRURfQkxJTktfRk9SQ0VfQkxJTktcXHRcXHRCSVQoOSlcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMDE6I2RlZmluZSAgIEFJUl9QSFlfTEVEX0JMSU5LXzI1MDBUWFxcdFxcdEJJVCgxMClcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMDI6I2RlZmluZSAgIEFJUl9QSFlfTEVEX0JMSU5LXzI1MDBSWFxcdFxcdEJJVCgxMSlcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMDMtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTA0LS8qIFJlZ2lzdGVycyBvbiBCVUNLUEJVUyAqL1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEwNTojZGVmaW5lIEFJUl9QSFlfQ09OVFJPTFxcdFxcdFxcdDB4M2E5Y1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEwNjojZGVmaW5lICAgQUlSX1BIWV9DT05UUk9MX0lOVEVSTkFMXFx0XFx0QklUKDExKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEwNy1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE2NS0vKiBNSUkgcmVnaXN0ZXIgY29uc3RhbnRzIGZvciBQQlVTIGFjY2VzcyAoUEhZIGFkZHIgKyA4KSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE2NjojZGVmaW5lIEFJUl9QQlVTX0FERFJfSElHSFxcdFxcdDB4MWNcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNjc6I2RlZmluZSBBSVJfUEJVU19EQVRBX0hJR0hcXHRcXHQweDEwXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTY4OiNkZWZpbmUgQUlSX1BCVVNfUkVHX0FERFJfSElHSF9NQVNLXFx0R0VOTUFTSygxNSwgNilcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNjk6I2RlZmluZSBBSVJfUEJVU19SRUdfQUREUl9MT1dfTUFTS1xcdEdFTk1BU0soNSwgMilcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xNzAtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xODAtICovXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTgxOiNkZWZpbmUgQUlSX0RFRkFVTFRfVFJJR0dFUl9MRUQwIChCSVQoVFJJR0dFUl9ORVRERVZfTElOSykgICAgICB8IFxcXFxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xODItXFx0XFx0XFx0XFx0ICBCSVQoVFJJR0dFUl9ORVRERVZfUlgpICAgICAgICB8IFxcXFxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xODMtXFx0XFx0XFx0XFx0ICBCSVQoVFJJR0dFUl9ORVRERVZfVFgpKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE4NDojZGVmaW5lIEFJUl9ERUZBVUxUX1RSSUdHRVJfTEVEMSAoQklUKFRSSUdHRVJfTkVUREVWX0xJTktfMjUwMCkgfCBcXFxcXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTg1LVxcdFxcdFxcdFxcdCAgQklUKFRSSUdHRVJfTkVUREVWX0xJTktfMTAwMCkpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTg2OiNkZWZpbmUgQUlSX0RFRkFVTFRfVFJJR0dFUl9MRUQyIChCSVQoVFJJR0dFUl9ORVRERVZfTElOS18yNTAwKSB8IFxcXFxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xODctXFx0XFx0XFx0XFx0ICBCSVQoVFJJR0dFUl9ORVRERVZfTElOS18xMDApKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MjA3PWVudW0ge1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjIwODpcXHRBSVJfUEhZX0xFRF9TVEFURV9GT1JDRV9PTixcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyMDk6XFx0QUlSX1BIWV9MRURfU1RBVEVfRk9SQ0VfQkxJTkssXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjEwLX07XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0yMTI9ZW51bSB7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjEzOlxcdEFJUl9QSFlfTEVEX0RVUl9CTElOS18zMk1TLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjIxNDpcXHRBSVJfUEhZX0xFRF9EVVJfQkxJTktfNjRNUyxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyMTU6XFx0QUlSX1BIWV9MRURfRFVSX0JMSU5LXzEyOE1TLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjIxNjpcXHRBSVJfUEhZX0xFRF9EVVJfQkxJTktfMjU2TVMsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjE3OlxcdEFJUl9QSFlfTEVEX0RVUl9CTElOS181MTJNUyxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyMTg6XFx0QUlSX1BIWV9MRURfRFVSX0JMSU5LXzEwMjRNUyxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yMTktfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTIyMT1lbnVtIHtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyMjI6XFx0QUlSX0xFRF9ESVNBQkxFLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjIyMzpcXHRBSVJfTEVEX0VOQUJMRSxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yMjQtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTIyNj1lbnVtIHtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyMjc6XFx0QUlSX0FDVElWRV9MT1csXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjI4OlxcdEFJUl9BQ1RJVkVfSElHSCxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yMjktfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTIzMT1lbnVtIHtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyMzI6XFx0QUlSX0xFRF9NT0RFX0RJU0FCTEUsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjMzOlxcdEFJUl9MRURfTU9ERV9VU0VSX0RFRklORSxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yMzQtfTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yMzUtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjM2OiNkZWZpbmUgQUlSX1BIWV9MRURfRFVSX1VOSVRcXHQxMDI0XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjM3OiNkZWZpbmUgQUlSX1BIWV9MRURfRFVSIChBSVJfUEhZX0xFRF9EVVJfVU5JVCBcXHUwMDNjXFx1MDAzYyBBSVJfUEhZX0xFRF9EVVJfQkxJTktfNjRNUylcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yMzgtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0yNDg9c3RhdGljIGludCBfX2Fpcl9wYnVzX3JlZ193cml0ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yNTItXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjUzOlxcdHJldCA9IF9fbWRpb2J1c193cml0ZShtZGlvZGV2LVxcdTAwM2VidXMsIG1kaW9kZXYtXFx1MDAzZWFkZHIsIEFJUl9FWFRfUEFHRV9BQ0NFU1MsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjU0LVxcdFxcdFxcdCAgICAgIHVwcGVyXzE2X2JpdHMocGJ1c19yZWcpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTI1Ny1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyNTg6XFx0cmV0ID0gX19tZGlvYnVzX3dyaXRlKG1kaW9kZXYtXFx1MDAzZWJ1cywgbWRpb2Rldi1cXHUwMDNlYWRkciwgQUlSX1BCVVNfQUREUl9ISUdILFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjI1OTpcXHRcXHRcXHQgICAgICBGSUVMRF9HRVQoQUlSX1BCVVNfUkVHX0FERFJfSElHSF9NQVNLLCBwYnVzX3JlZykpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTI2MC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTI2My1cXHRyZXQgPSBfX21kaW9idXNfd3JpdGUobWRpb2Rldi1cXHUwMDNlYnVzLCBtZGlvZGV2LVxcdTAwM2VhZGRyLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjI2NDpcXHRcXHRcXHQgICAgICBGSUVMRF9HRVQoQUlSX1BCVVNfUkVHX0FERFJfTE9XX01BU0ssIHBidXNfcmVnKSxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yNjUtXFx0XFx0XFx0ICAgICAgbG93ZXJfMTZfYml0cyhwYnVzX2RhdGEpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTI2OC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoyNjk6XFx0cmV0dXJuIF9fbWRpb2J1c193cml0ZShtZGlvZGV2LVxcdTAwM2VidXMsIG1kaW9kZXYtXFx1MDAzZWFkZHIsIEFJUl9QQlVTX0RBVEFfSElHSCxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yNzAtXFx0XFx0XFx0ICAgICAgIHVwcGVyXzE2X2JpdHMocGJ1c19kYXRhKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0yNzM9c3RhdGljIGludCBfX2Fpcl93cml0ZV9idWYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIGFkZHJlc3MsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yNzktXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjgwOlxcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX01PREUsIEFJUl9CUEJVU19NT0RFX0FERFJfSU5DUik7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjgxLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjgzLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjI4NDpcXHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIEFJUl9CUEJVU19XUl9BRERSX0hJR0gsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjg1LVxcdFxcdFxcdCAgdXBwZXJfMTZfYml0cyhhZGRyZXNzKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yODgtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Mjg5OlxcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX1dSX0FERFJfTE9XLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTI5MC1cXHRcXHRcXHQgIGxvd2VyXzE2X2JpdHMoYWRkcmVzcykpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjk1LVxcdFxcdHZhbCA9IGdldF91bmFsaWduZWRfbGUxNihcXHUwMDI2ZnctXFx1MDAzZWRhdGFbb2Zmc2V0ICsgMl0pO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjI5NjpcXHRcXHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIEFJUl9CUEJVU19XUl9EQVRBX0hJR0gsIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjk3LVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzAwLVxcdFxcdHZhbCA9IGdldF91bmFsaWduZWRfbGUxNihcXHUwMDI2ZnctXFx1MDAzZWRhdGFbb2Zmc2V0XSk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MzAxOlxcdFxcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX1dSX0RBVEFfTE9XLCB2YWwpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTMwMi1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTMwOT1zdGF0aWMgaW50IGFpcl93cml0ZV9idWYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIGFkZHJlc3MsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0zMjAtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MzIxOlxcdHNhdmVkX3BhZ2UgPSBwaHlfc2VsZWN0X3BhZ2UocGh5ZGV2LCBBSVJfUEhZX1BBR0VfRVhURU5ERURfNCk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzIyLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9NDY4PXN0YXRpYyBpbnQgYW44ODExaGJfbG9hZF9maXJtd2FyZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDg0LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjQ4NTpcXHRyZXQgPSBhbjg4MTFoYl9sb2FkX2ZpbGUocGh5ZGV2LCBBTjg4MTFIQl9NRDMyX0RNLCBBSVJfRldfQUREUl9ETSk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDg2LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDk0LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjQ5NTpcXHRyZXQgPSBhbjg4MTFoYl9sb2FkX2ZpbGUocGh5ZGV2LCBBTjg4MTFIQl9NRDMyX0RTUCwgQUlSX0ZXX0FERFJfRFNQKTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy00OTYtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz01MDg9c3RhdGljIGludCBlbjg4MTFoX2xvYWRfZmlybXdhcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTUzMi1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1MzM6XFx0cmV0ID0gYWlyX3dyaXRlX2J1ZihwaHlkZXYsIEFJUl9GV19BRERSX0RNLCAgZncxKTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01MzQtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01MzYtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTM3OlxcdHJldCA9IGFpcl93cml0ZV9idWYocGh5ZGV2LCBBSVJfRldfQUREUl9EU1AsIGZ3Mik7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTM4LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9NTg2PXN0YXRpYyBpbnQgYWlyX2h3X2xlZF9vbl9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsIGJvb2wgb24pXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01OTQtXFx0aWYgKG9uKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjU5NTpcXHRcXHRjaGFuZ2VkID0gIXRlc3RfYW5kX3NldF9iaXQoQUlSX1BIWV9MRURfU1RBVEVfRk9SQ0VfT04sXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTk2LVxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2cHJpdi1cXHUwMDNlbGVkW2luZGV4XS5zdGF0ZSk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTk3LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1OTg6XFx0XFx0Y2hhbmdlZCA9ICEhdGVzdF9hbmRfY2xlYXJfYml0KEFJUl9QSFlfTEVEX1NUQVRFX0ZPUkNFX09OLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTU5OS1cXHRcXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNnByaXYtXFx1MDAzZWxlZFtpbmRleF0uc3RhdGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjA4LVxcdFxcdHJldHVybiBwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjYwOTpcXHRcXHRcXHRcXHQgICAgICBBSVJfUEhZX0xFRF9PTihpbmRleCksXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjEwOlxcdFxcdFxcdFxcdCAgICAgIEFJUl9QSFlfTEVEX09OX01BU0ssXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjExOlxcdFxcdFxcdFxcdCAgICAgIG9uID8gQUlSX1BIWV9MRURfT05fRk9SQ0VfT04gOiAwKTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02MTItXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz02MTY9c3RhdGljIGludCBhaXJfaHdfbGVkX2JsaW5rX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTYyNS1cXHRpZiAoYmxpbmtpbmcpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjI2OlxcdFxcdGNoYW5nZWQgPSAhdGVzdF9hbmRfc2V0X2JpdChBSVJfUEhZX0xFRF9TVEFURV9GT1JDRV9CTElOSyxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02MjctXFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZwcml2LVxcdTAwM2VsZWRbaW5kZXhdLnN0YXRlKTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02MjgtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjYyOTpcXHRcXHRjaGFuZ2VkID0gISF0ZXN0X2FuZF9jbGVhcl9iaXQoQUlSX1BIWV9MRURfU1RBVEVfRk9SQ0VfQkxJTkssXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjMwLVxcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2cHJpdi1cXHUwMDNlbGVkW2luZGV4XS5zdGF0ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02MzUtXFx0XFx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMixcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo2MzY6XFx0XFx0XFx0XFx0ICAgICBBSVJfUEhZX0xFRF9CTElOSyhpbmRleCksXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjM3LVxcdFxcdFxcdFxcdCAgICAgYmxpbmtpbmcgP1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjYzODpcXHRcXHRcXHRcXHQgICAgIEFJUl9QSFlfTEVEX0JMSU5LX0ZPUkNFX0JMSU5LIDogMCk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjM5LVxcdGVsc2VcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTY0Mz1zdGF0aWMgaW50IGFpcl9sZWRfYmxpbmtfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjY5LVxcdC8qIGh3LWNvbnRyb2wgaXMgb2ZmKi9cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo2NzA6XFx0aWYgKCEhdGVzdF9iaXQoQUlSX1BIWV9MRURfU1RBVEVfRk9SQ0VfQkxJTkssIFxcdTAwMjZwcml2LVxcdTAwM2VsZWRbaW5kZXhdLnN0YXRlKSlcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02NzEtXFx0XFx0cHJpdi1cXHUwMDNlbGVkW2luZGV4XS5ydWxlcyA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz02NzY9c3RhdGljIGludCBhaXJfbGVkX2JyaWdodG5lc3Nfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjk0LVxcdC8qIGh3LWNvbnRyb2wgaXMgb2ZmICovXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Njk1OlxcdGlmICghIXRlc3RfYml0KEFJUl9QSFlfTEVEX1NUQVRFX0ZPUkNFX09OLCBcXHUwMDI2cHJpdi1cXHUwMDNlbGVkW2luZGV4XS5zdGF0ZSkpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjk2LVxcdFxcdHByaXYtXFx1MDAzZWxlZFtpbmRleF0ucnVsZXMgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9NzE0PXN0YXRpYyBpbnQgYWlyX2xlZF9od19jb250cm9sX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTcyNi1cXHRpZiAocnVsZXMgXFx1MDAyNiBCSVQoVFJJR0dFUl9ORVRERVZfRlVMTF9EVVBMRVgpKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjcyNzpcXHRcXHRvbiB8PSBBSVJfUEhZX0xFRF9PTl9GRFg7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzI4LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTcyOS1cXHRpZiAocnVsZXMgXFx1MDAyNiAoQklUKFRSSUdHRVJfTkVUREVWX0xJTktfMTApIHwgQklUKFRSSUdHRVJfTkVUREVWX0xJTkspKSlcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3MzA6XFx0XFx0b24gfD0gQUlSX1BIWV9MRURfT05fTElOSzEwO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTczMS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03MzItXFx0aWYgKHJ1bGVzIFxcdTAwMjYgKEJJVChUUklHR0VSX05FVERFVl9MSU5LXzEwMCkgfCBCSVQoVFJJR0dFUl9ORVRERVZfTElOSykpKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjczMzpcXHRcXHRvbiB8PSBBSVJfUEhZX0xFRF9PTl9MSU5LMTAwO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTczNC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03MzUtXFx0aWYgKHJ1bGVzIFxcdTAwMjYgKEJJVChUUklHR0VSX05FVERFVl9MSU5LXzEwMDApIHwgQklUKFRSSUdHRVJfTkVUREVWX0xJTkspKSlcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3MzY6XFx0XFx0b24gfD0gQUlSX1BIWV9MRURfT05fTElOSzEwMDA7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzM3LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTczOC1cXHRpZiAocnVsZXMgXFx1MDAyNiAoQklUKFRSSUdHRVJfTkVUREVWX0xJTktfMjUwMCkgfCBCSVQoVFJJR0dFUl9ORVRERVZfTElOSykpKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjczOTpcXHRcXHRvbiB8PSBBSVJfUEhZX0xFRF9PTl9MSU5LMjUwMDtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03NDAtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzQxLVxcdGlmIChydWxlcyBcXHUwMDI2IEJJVChUUklHR0VSX05FVERFVl9SWCkpIHtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NDI6XFx0XFx0YmxpbmsgfD0gQUlSX1BIWV9MRURfQkxJTktfMTBSWCAgIHxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NDM6XFx0XFx0XFx0IEFJUl9QSFlfTEVEX0JMSU5LXzEwMFJYICB8XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NzQ0OlxcdFxcdFxcdCBBSVJfUEhZX0xFRF9CTElOS18xMDAwUlggfFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc0NTpcXHRcXHRcXHQgQUlSX1BIWV9MRURfQkxJTktfMjUwMFJYO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc0Ni1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03NDgtXFx0aWYgKHJ1bGVzIFxcdTAwMjYgQklUKFRSSUdHRVJfTkVUREVWX1RYKSkge1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc0OTpcXHRcXHRibGluayB8PSBBSVJfUEhZX0xFRF9CTElOS18xMFRYICAgfFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc1MDpcXHRcXHRcXHQgQUlSX1BIWV9MRURfQkxJTktfMTAwVFggIHxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NTE6XFx0XFx0XFx0IEFJUl9QSFlfTEVEX0JMSU5LXzEwMDBUWCB8XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NzUyOlxcdFxcdFxcdCBBSVJfUEhZX0xFRF9CTElOS18yNTAwVFg7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzUzLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc1Ni1cXHRcXHQvKiBzd2l0Y2ggaHctY29udHJvbCBvbiwgc28gbGVkLW9uIGFuZCBsZWQtYmxpbmsgYXJlIG9mZiAqL1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc1NzpcXHRcXHRjbGVhcl9iaXQoQUlSX1BIWV9MRURfU1RBVEVfRk9SQ0VfT04sXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzU4LVxcdFxcdFxcdCAgXFx1MDAyNnByaXYtXFx1MDAzZWxlZFtpbmRleF0uc3RhdGUpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc1OTpcXHRcXHRjbGVhcl9iaXQoQUlSX1BIWV9MRURfU1RBVEVfRk9SQ0VfQkxJTkssXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzYwLVxcdFxcdFxcdCAgXFx1MDAyNnByaXYtXFx1MDAzZWxlZFtpbmRleF0uc3RhdGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzY0LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc2NTpcXHRyZXQgPSBwaHlfbW9kaWZ5X21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBBSVJfUEhZX0xFRF9PTihpbmRleCksXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NzY2OlxcdFxcdFxcdCAgICAgQUlSX1BIWV9MRURfT05fTUFTSywgb24pO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc2Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc3MC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3NzE6XFx0cmV0dXJuIHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgQUlSX1BIWV9MRURfQkxJTksoaW5kZXgpLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc3Mi1cXHRcXHRcXHQgICAgIGJsaW5rKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTc3NT1zdGF0aWMgaW50IGFpcl9sZWRfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCwgdTggc3RhdGUsIHU4IHBvbClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc4Mi1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3ODM6XFx0aWYgKHN0YXRlID09IEFJUl9MRURfRU5BQkxFKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc4NDpcXHRcXHR2YWwgfD0gQUlSX1BIWV9MRURfT05fRU5BQkxFO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc4NS1cXHRlbHNlXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Nzg2OlxcdFxcdHZhbCBcXHUwMDI2PSB+QUlSX1BIWV9MRURfT05fRU5BQkxFO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc4Ny1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3ODg6XFx0aWYgKHBvbCA9PSBBSVJfQUNUSVZFX0hJR0gpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Nzg5OlxcdFxcdHZhbCB8PSBBSVJfUEhZX0xFRF9PTl9QT0xBUklUWTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03OTAtXFx0ZWxzZVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc5MTpcXHRcXHR2YWwgXFx1MDAyNj0gfkFJUl9QSFlfTEVEX09OX1BPTEFSSVRZO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc5Mi1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3OTM6XFx0ZXJyID0gcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgQUlSX1BIWV9MRURfT04oaW5kZXgpLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc5NDpcXHRcXHRcXHQgICAgIEFJUl9QSFlfTEVEX09OX0VOQUJMRSB8XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Nzk1OlxcdFxcdFxcdCAgICAgQUlSX1BIWV9MRURfT05fUE9MQVJJVFksIHZhbCk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzk2LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9ODAzPXN0YXRpYyBpbnQgYWlyX2xlZHNfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgbnVtLCBpbnQgZHVyLCBpbnQgbW9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTgwNy1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MDg6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQyLCBBSVJfUEhZX0xFRF9EVVJfQkxJTkssXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODA5LVxcdFxcdFxcdCAgICBkdXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODEyLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgxMzpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDIsIEFJUl9QSFlfTEVEX0RVUl9PTixcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04MTQtXFx0XFx0XFx0ICAgIGR1ciBcXHUwMDNlXFx1MDAzZSAxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTgxOC1cXHRzd2l0Y2ggKG1vZGUpIHtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MTk6XFx0Y2FzZSBBSVJfTEVEX01PREVfRElTQUJMRTpcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MjA6XFx0XFx0cmV0ID0gcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgQUlSX1BIWV9MRURfQkNSLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgyMTpcXHRcXHRcXHRcXHQgICAgIEFJUl9QSFlfTEVEX0JDUl9FWFRfQ1RSTCB8XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6ODIyOlxcdFxcdFxcdFxcdCAgICAgQUlSX1BIWV9MRURfQkNSX01PREVfTUFTSywgMCk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODIzLVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODI1LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgyNjpcXHRjYXNlIEFJUl9MRURfTU9ERV9VU0VSX0RFRklORTpcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4Mjc6XFx0XFx0cmV0ID0gcGh5X21vZGlmeV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMiwgQUlSX1BIWV9MRURfQkNSLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgyODpcXHRcXHRcXHRcXHQgICAgIEFJUl9QSFlfTEVEX0JDUl9FWFRfQ1RSTCB8XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6ODI5OlxcdFxcdFxcdFxcdCAgICAgQUlSX1BIWV9MRURfQkNSX0NMS19FTixcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4MzA6XFx0XFx0XFx0XFx0ICAgICBBSVJfUEhZX0xFRF9CQ1JfRVhUX0NUUkwgfFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjgzMTpcXHRcXHRcXHRcXHQgICAgIEFJUl9QSFlfTEVEX0JDUl9DTEtfRU4pO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTgzMi1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTg0MC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgbnVtOyArK2kpIHtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4NDE6XFx0XFx0cmV0ID0gYWlyX2xlZF9pbml0KHBoeWRldiwgaSwgQUlSX0xFRF9FTkFCTEUsIEFJUl9BQ1RJVkVfSElHSCk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODQyLVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0xMDYzPXN0YXRpYyBpbnQgZW44ODExaF9sZWRzX3NldHVwKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMDY3LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEwNjg6XFx0cHJpdi1cXHUwMDNlbGVkWzBdLnJ1bGVzID0gQUlSX0RFRkFVTFRfVFJJR0dFUl9MRUQwO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEwNjk6XFx0cHJpdi1cXHUwMDNlbGVkWzFdLnJ1bGVzID0gQUlSX0RFRkFVTFRfVFJJR0dFUl9MRUQxO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEwNzA6XFx0cHJpdi1cXHUwMDNlbGVkWzJdLnJ1bGVzID0gQUlSX0RFRkFVTFRfVFJJR0dFUl9MRUQyO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEwNzEtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTA3MjpcXHRyZXQgPSBhaXJfbGVkc19pbml0KHBoeWRldiwgRU44ODExSF9MRURfQ09VTlQsIEFJUl9QSFlfTEVEX0RVUixcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMDczOlxcdFxcdFxcdCAgICBBSVJfTEVEX01PREVfRElTQUJMRSk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTA3NC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTEyNTM9c3RhdGljIGludCBhbjg4MTFoYl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTI3MS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMjcyOlxcdHJldCA9IGFpcl9sZWRzX2luaXQocGh5ZGV2LCBFTjg4MTFIX0xFRF9DT1VOVCwgQUlSX1BIWV9MRURfRFVSLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEyNzM6XFx0XFx0XFx0ICAgIEFJUl9MRURfTU9ERV9VU0VSX0RFRklORSk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTI3NC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTEyODA9c3RhdGljIGludCBlbjg4MTFoX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMjk3LVxcdCAqL1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEyOTg6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfMSxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMjk5OlxcdFxcdFxcdCAgICBBSVJfUEhZX01DVV9DTURfMV9NT0RFMSk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMwMC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzAxLVxcdFxcdHJldHVybiByZXQ7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTMwMjpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFJUl9QSFlfTUNVX0NNRF8yLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEzMDM6XFx0XFx0XFx0ICAgIEFJUl9QSFlfTUNVX0NNRF8yX01PREUxKTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMzA0LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMDUtXFx0XFx0cmV0dXJuIHJldDtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMzA2OlxcdHJldCA9IHBoeV93cml0ZV9tbWQocGh5ZGV2LCBNRElPX01NRF9WRU5EMSwgQUlSX1BIWV9NQ1VfQ01EXzMsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTMwNzpcXHRcXHRcXHQgICAgQUlSX1BIWV9NQ1VfQ01EXzNfTU9ERTEpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMDgtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMwOS1cXHRcXHRyZXR1cm4gcmV0O1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEzMTA6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfNCxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMzExOlxcdFxcdFxcdCAgICBBSVJfUEhZX01DVV9DTURfNF9NT0RFMSk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTMxMi1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMTgtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTMxOTpcXHRyZXQgPSBhaXJfbGVkc19pbml0KHBoeWRldiwgRU44ODExSF9MRURfQ09VTlQsIEFJUl9QSFlfTEVEX0RVUixcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMzIwOlxcdFxcdFxcdCAgICBBSVJfTEVEX01PREVfVVNFUl9ERUZJTkUpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEzMjEtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTEzNzg9c3RhdGljIGludCBlbjg4MTFoX3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xNDI4LVxcdC8qIEdldCByZWFsIHNwZWVkIGZyb20gdmVuZG9yIHJlZ2lzdGVyICovXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTQyOTpcXHR2YWwgPSBwaHlfcmVhZChwaHlkZXYsIEFJUl9BVVhfQ1RSTF9TVEFUVVMpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0MzAtXFx0aWYgKHZhbCBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQzMS1cXHRcXHRyZXR1cm4gdmFsO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE0MzI6XFx0c3dpdGNoICh2YWwgXFx1MDAyNiBBSVJfQVVYX0NUUkxfU1RBVFVTX1NQRUVEX01BU0spIHtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNDMzOlxcdGNhc2UgQUlSX0FVWF9DVFJMX1NUQVRVU19TUEVFRF8yNTAwOlxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0MzQtXFx0XFx0cGh5ZGV2LVxcdTAwM2VzcGVlZCA9IFNQRUVEXzI1MDA7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQzNS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNDM2OlxcdGNhc2UgQUlSX0FVWF9DVFJMX1NUQVRVU19TUEVFRF8xMDAwOlxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0MzctXFx0XFx0cGh5ZGV2LVxcdTAwM2VzcGVlZCA9IFNQRUVEXzEwMDA7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQzOC1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNDM5OlxcdGNhc2UgQUlSX0FVWF9DVFJMX1NUQVRVU19TUEVFRF8xMDA6XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQ0MC1cXHRcXHRwaHlkZXYtXFx1MDAzZXNwZWVkID0gU1BFRURfMTAwO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0NDEtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTQ0MjpcXHRjYXNlIEFJUl9BVVhfQ1RSTF9TVEFUVVNfU1BFRURfMTA6XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQ0My1cXHRcXHRwaHlkZXYtXFx1MDAzZXNwZWVkID0gU1BFRURfMTA7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0xNDYyPXN0YXRpYyBpbnQgZW44ODExaF9jbGVhcl9pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xNDY1LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE0NjY6XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfMyxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxNDY3OlxcdFxcdFxcdCAgICBBSVJfUEhZX01DVV9DTURfM19ET0NNRCk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQ2OC1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTE0NzAtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTQ3MTpcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFJUl9QSFlfTUNVX0NNRF80LFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjE0NzI6XFx0XFx0XFx0ICAgIEFJUl9QSFlfTUNVX0NNRF80X0lOVENMUik7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTQ3My1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jPTE3PXN0YXRpYyBpbnQgX19haXJfYnVja3BidXNfcmVnX3JlYWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTIyLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jOjIzOlxcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX01PREUsIEFJUl9CUEJVU19NT0RFX0FERFJfRklYRUQpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTI0LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmMtMjYtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmM6Mjc6XFx0cmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBBSVJfQlBCVVNfUkRfQUREUl9ISUdILFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTI4LVxcdFxcdFxcdCAgdXBwZXJfMTZfYml0cyhwYnVzX2FkZHJlc3MpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTMxLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jOjMyOlxcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX1JEX0FERFJfTE9XLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTMzLVxcdFxcdFxcdCAgbG93ZXJfMTZfYml0cyhwYnVzX2FkZHJlc3MpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTM2LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jOjM3OlxcdHBidXNfZGF0YV9oaWdoID0gX19waHlfcmVhZChwaHlkZXYsIEFJUl9CUEJVU19SRF9EQVRBX0hJR0gpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTM4LVxcdGlmIChwYnVzX2RhdGFfaGlnaCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYy00MC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYzo0MTpcXHRwYnVzX2RhdGFfbG93ID0gX19waHlfcmVhZChwaHlkZXYsIEFJUl9CUEJVU19SRF9EQVRBX0xPVyk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmMtNDItXFx0aWYgKHBidXNfZGF0YV9sb3cgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmM9NDk9c3RhdGljIGludCBfX2Fpcl9idWNrcGJ1c19yZWdfd3JpdGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTUzLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jOjU0OlxcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX01PREUsIEFJUl9CUEJVU19NT0RFX0FERFJfRklYRUQpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTU1LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmMtNTctXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9waHlfbGliLmM6NTg6XFx0cmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBBSVJfQlBCVVNfV1JfQUREUl9ISUdILFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTU5LVxcdFxcdFxcdCAgdXBwZXJfMTZfYml0cyhwYnVzX2FkZHJlc3MpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTYyLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jOjYzOlxcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX1dSX0FERFJfTE9XLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTY0LVxcdFxcdFxcdCAgbG93ZXJfMTZfYml0cyhwYnVzX2FkZHJlc3MpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jLTY3LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfcGh5X2xpYi5jOjY4OlxcdHJldCA9IF9fcGh5X3dyaXRlKHBoeWRldiwgQUlSX0JQQlVTX1dSX0RBVEFfSElHSCxcXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYy02OS1cXHRcXHRcXHQgIHVwcGVyXzE2X2JpdHMocGJ1c19kYXRhKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYy03Mi1cXG5kcml2ZXJzL25ldC9waHkvYWlyX3BoeV9saWIuYzo3MzpcXHRyZXQgPSBfX3BoeV93cml0ZShwaHlkZXYsIEFJUl9CUEJVU19XUl9EQVRBX0xPVyxcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6NDY6MzAuMTU2NTEzMjE3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM3NjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArXFxuICAgMjpcXHQvKlxcbiAgIDM6XFx0ICogRHJpdmVyIGZvciB0aGUgQWlyb2hhIEVOODgxMUggYW5kIEFOODgxMUhCIDIuNSBHaWdhYml0IFBIWXMuXFxuICAgNDpcXHQgKlxcbiAgIDU6XFx0ICogTGltaXRhdGlvbnM6XFxuICAgNjpcXHQgKiAtIE9ubHkgZnVsbCBkdXBsZXggc3VwcG9ydGVkXFxuICAgNzpcXHQgKiAtIEZvcmNlZCBzcGVlZCAoQU4gb2ZmKSBpcyBub3Qgc3VwcG9ydGVkIGJ5IGhhcmR3YXJlICgxMDBNYnBzKVxcbiAgIDg6XFx0ICpcXG4gICA5OlxcdCAqIFNvdXJjZSBvcmlnaW5hdGVkIGZyb20gYWlyb2hhJ3MgZW44ODExaC5jIGFuZCBlbjg4MTFoLmggdjEuMi4xXFxuICAxMDpcXHQgKiB3aXRoIEFOODgxMUhCIGJpdHMgZnJvbSBhaXJfYW44ODExaGIuYyB2MC4wLjRcXG4gIDExOlxcdCAqXFxuICAxMjpcXHQgKiBDb3B5cmlnaHQgKEMpIDIwMjMsIDIwMjYgQWlyb2hhIFRlY2hub2xvZ3kgQ29ycC5cXG4gIDEzOlxcdCAqL1xcbiAgMTQ6XFx0XFxuICAxNTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvY2xrLmhcXHUwMDNlXFxuICAxNjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvY2xrLXByb3ZpZGVyLmhcXHUwMDNlXFxuICAxNzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5LmhcXHUwMDNlXFxuICAxODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcGh5L3BoeS1jb21tb24tcHJvcHMuaFxcdTAwM2VcXG4gIDE5OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9maXJtd2FyZS5oXFx1MDAzZVxcbiAgMjA6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2JpdGZpZWxkLmhcXHUwMDNlXFxuICAyMTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvcHJvcGVydHkuaFxcdTAwM2VcXG4gIDIyOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC93b3JkcGFydC5oXFx1MDAzZVxcbiAgMjM6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3VuYWxpZ25lZC5oXFx1MDAzZVxcbiAgMjQ6XFx0XFxuICAyNTpcXHQjaW5jbHVkZSBcXFwiYWlyX3BoeV9saWIuaFxcXCJcXG4gIDI2OlxcdFxcbiAgMjc6XFx0I2RlZmluZSBFTjg4MTFIX1BIWV9JRFxcdFxcdDB4MDNhMmE0MTFcXG4gIDI4OlxcdCNkZWZpbmUgQU44ODExSEJfUEhZX0lEXFx0XFx0MHhjMGZmMDRhMFxcbiAgMjk6XFx0XFxuICAzMDpcXHQjZGVmaW5lIEVOODgxMUhfTUQzMl9ETVxcdFxcdFxcXCJhaXJvaGEvRXRoTUQzMi5kbS5iaW5cXFwiXFxuICAzMTpcXHQjZGVmaW5lIEVOODgxMUhfTUQzMl9EU1BcXHRcXFwiYWlyb2hhL0V0aE1EMzIuRFNQLmJpblxcXCJcXG4gIDMyOlxcdCNkZWZpbmUgQU44ODExSEJfTUQzMl9ETVxcdFxcXCJhaXJvaGEvYW44ODExaGIvRXRoTUQzMl9DUkMuRE0uYmluXFxcIlxcbiAgMzM6XFx0I2RlZmluZSBBTjg4MTFIQl9NRDMyX0RTUFxcdFxcXCJhaXJvaGEvYW44ODExaGIvRXRoTUQzMl9DUkMuRFNQLmJpblxcXCJcXG4gIDM0OlxcdFxcbiAgMzU6XFx0I2RlZmluZSBBSVJfRldfQUREUl9ETVxcdDB4MDAwMDAwMDBcXG4gIDM2OlxcdCNkZWZpbmUgQUlSX0ZXX0FERFJfRFNQXFx0MHgwMDEwMDAwMFxcbiAgMzc6XFx0XFxuICAzODpcXHQvKiBNSUkgUmVnaXN0ZXJzICovXFxuICAzOTpcXHQjZGVmaW5lIEFJUl9BVVhfQ1RSTF9TVEFUVVNcXHRcXHQweDFkXFxuICA0MDpcXHQjZGVmaW5lICAgQUlSX0FVWF9DVFJMX1NUQVRVU19TUEVFRF9NQVNLXFx0R0VOTUFTSyg0LCAyKVxcbiAgNDE6XFx0I2RlZmluZSAgIEFJUl9BVVhfQ1RSTF9TVEFUVVNfU1BFRURfMTBcXHRcXHQweDBcXG4gIDQyOlxcdCNkZWZpbmUgICBBSVJfQVVYX0NUUkxfU1RBVFVTX1NQRUVEXzEwMFxcdFxcdDB4NFxcbiAgNDM6XFx0I2RlZmluZSAgIEFJUl9BVVhfQ1RSTF9TVEFUVVNfU1BFRURfMTAwMFxcdDB4OFxcbiAgNDQ6XFx0I2RlZmluZSAgIEFJUl9BVVhfQ1RSTF9TVEFUVVNfU1BFRURfMjUwMFxcdDB4Y1xcbiAgNDU6XFx0XFxuICA0NjpcXHQvKiBSZWdpc3RlcnMgb24gTURJT19NTURfVkVORDEgKi9cXG4gIDQ3OlxcdCNkZWZpbmUgRU44ODExSF9QSFlfRldfU1RBVFVTXFx0XFx0MHg4MDA5XFxuICA0ODpcXHQjZGVmaW5lICAgRU44ODExSF9QSFlfUkVBRFlcXHRcXHRcXHQweDAyXFxuICA0OTpcXHRcXG4gIDUwOlxcdCNkZWZpbmUgQUlSX1BIWV9NQ1VfQ01EXzBcXHRcXHQweDgwMGJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6NDY6MzAuMTU2NjU0MDk3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjYyNTM1OTQ0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRpdmluZyBEZWVwZXIgaW50byB0aGUgQWlyIEludGVyZmFjZSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gcG9raW5nIGFyb3VuZCBpbiBgYWlyX2VuODgxMWguY2AgYW5kIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBgYWlyX3dyaXRlX2J1ZmAuIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGhvdyB0aGlzIGRyaXZlciBhY3R1YWxseSB3b3Jrcy4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIGV4ZWN1dGlvbiBhbmQgc2VlIHRoZSByZXN0IG9mIHRoZSBmaWxlIHN1cnJvdW5kaW5nIHRoaXMgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgSSdtIGludGVyZXN0ZWQgaW4gaG93IHRoaXMgZHJpdmVyIGlzIHJlZ2lzdGVyZWQgd2l0aGluIHRoZSBrZXJuZWwsIGFuZCB0aGVuIGV2ZW4gbW9yZSBwYXJ0aWN1bGFybHkgaG93IGl0J3MgKmJvdW5kKiB0byBzcGVjaWZpYyBoYXJkd2FyZSBkZXZpY2VzLiBVbmRlcnN0YW5kaW5nIHRoZSByZWdpc3RyYXRpb24gYW5kIGJpbmRpbmcgcHJvY2Vzc2VzIGlzIGtleSB0byBmaWd1cmluZyBvdXQgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIGFuZCBob3cgdGhlIGxvdy1sZXZlbCBmdW5jdGlvbnMgbGlrZSBgYWlyX3dyaXRlX2J1ZmAgZml0IGludG8gdGhlIGdyYW5kIHNjaGVtZSBvZiB0aGluZ3MuIEl0J2xsIGdpdmUgbWUgYSBjbGVhcmVyIHBpY3R1cmUgb2YgdGhlIGRldmljZSdzIGxpZmVjeWNsZSBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MDI3LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6NDY6MzIuNzgyMDE2MzczWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyMjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMwMCxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDMwMDpcXHRcXHRcXHR2YWwgPSBnZXRfdW5hbGlnbmVkX2xlMTYoXFx1MDAyNmZ3LVxcdTAwM2VkYXRhW29mZnNldF0pO1xcbiAzMDE6XFx0XFx0XFx0cmV0ID0gX19waHlfd3JpdGUocGh5ZGV2LCBBSVJfQlBCVVNfV1JfREFUQV9MT1csIHZhbCk7XFxuIDMwMjpcXHRcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gMzAzOlxcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDMwNDpcXHRcXHR9XFxuIDMwNTpcXHRcXG4gMzA2OlxcdFxcdHJldHVybiAwO1xcbiAzMDc6XFx0fVxcbiAzMDg6XFx0XFxuIDMwOTpcXHRzdGF0aWMgaW50IGFpcl93cml0ZV9idWYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIGFkZHJlc3MsXFxuIDMxMDpcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcXG4gMzExOlxcdHtcXG4gMzEyOlxcdFxcdGludCBzYXZlZF9wYWdlO1xcbiAzMTM6XFx0XFx0aW50IHJldCA9IDA7XFxuIDMxNDpcXHRcXG4gMzE1OlxcdFxcdGlmIChmdy1cXHUwMDNlc2l6ZSAlIDQpIHtcXG4gMzE2OlxcdFxcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiZmlybXdhcmUgc2l6ZSAlenUgaXMgbm90IGEgbXVsdGlwbGUgb2YgNFxcXFxuXFxcIixcXG4gMzE3OlxcdFxcdFxcdFxcdCAgIGZ3LVxcdTAwM2VzaXplKTtcXG4gMzE4OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiAzMTk6XFx0XFx0fVxcbiAzMjA6XFx0XFxuIDMyMTpcXHRcXHRzYXZlZF9wYWdlID0gcGh5X3NlbGVjdF9wYWdlKHBoeWRldiwgQUlSX1BIWV9QQUdFX0VYVEVOREVEXzQpO1xcbiAzMjI6XFx0XFxuIDMyMzpcXHRcXHRpZiAoc2F2ZWRfcGFnZSBcXHUwMDNlPSAwKSB7XFxuIDMyNDpcXHRcXHRcXHRyZXQgPSBfX2Fpcl93cml0ZV9idWYocGh5ZGV2LCBhZGRyZXNzLCBmdyk7XFxuIDMyNTpcXHRcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4gMzI2OlxcdFxcdFxcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiJXMgMHglMDh4IGZhaWxlZDogJWRcXFxcblxcXCIsIF9fZnVuY19fLFxcbiAzMjc6XFx0XFx0XFx0XFx0XFx0ICAgYWRkcmVzcywgcmV0KTtcXG4gMzI4OlxcdFxcdH1cXG4gMzI5OlxcdFxcbiAzMzA6XFx0XFx0cmV0dXJuIHBoeV9yZXN0b3JlX3BhZ2UocGh5ZGV2LCBzYXZlZF9wYWdlLCByZXQpO1xcbiAzMzE6XFx0fVxcbiAzMzI6XFx0XFxuIDMzMzpcXHRzdGF0aWMgaW50IGVuODgxMWhfd2FpdF9tY3VfcmVhZHkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gMzM0OlxcdHtcXG4gMzM1OlxcdFxcdGludCByZXQsIHJlZ192YWx1ZTtcXG4gMzM2OlxcdFxcbiAzMzc6XFx0XFx0cmV0ID0gYWlyX3BoeV9idWNrcGJ1c19yZWdfd3JpdGUocGh5ZGV2LCBFTjg4MTFIX0ZXX0NUUkxfMSxcXG4gMzM4OlxcdFxcdFxcdFxcdFxcdFxcdCBFTjg4MTFIX0ZXX0NUUkxfMV9GSU5JU0gpO1xcbiAzMzk6XFx0XFx0aWYgKHJldClcXG4gMzQwOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDM0MTpcXHRcXG4gMzQyOlxcdFxcdC8qIEJlY2F1c2Ugb2YgbWRpby1sb2NrLCBtYXkgaGF2ZSB0byB3YWl0IGZvciBtdWx0aXBsZSBsb2FkcyAqL1xcbiAzNDM6XFx0XFx0cmV0ID0gcGh5X3JlYWRfbW1kX3BvbGxfdGltZW91dChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLFxcbiAzNDQ6XFx0XFx0XFx0XFx0XFx0XFx0RU44ODExSF9QSFlfRldfU1RBVFVTLCByZWdfdmFsdWUsXFxuIDM0NTpcXHRcXHRcXHRcXHRcXHRcXHRyZWdfdmFsdWUgPT0gRU44ODExSF9QSFlfUkVBRFksXFxuIDM0NjpcXHRcXHRcXHRcXHRcXHRcXHQyMDAwMCwgNzUwMDAwMCwgdHJ1ZSk7XFxuIDM0NzpcXHRcXHRpZiAocmV0KSB7XFxuIDM0ODpcXHRcXHRcXHRwaHlkZXZfZXJyKHBoeWRldiwgXFxcIk1DVSBub3QgcmVhZHk6IDB4JXhcXFxcblxcXCIsIHJlZ192YWx1ZSk7XFxuIDM0OTpcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gMzUwOlxcdFxcdH1cXG4gMzUxOlxcdFxcbiAzNTI6XFx0XFx0cmV0dXJuIDA7XFxuIDM1MzpcXHR9XFxuIDM1NDpcXHRcXG4gMzU1OlxcdHN0YXRpYyBpbnQgYW44ODExaGJfY2hlY2tfY3JjKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUzMiBzZXQxLFxcbiAzNTY6XFx0XFx0XFx0XFx0ICAgICAgdTMyIG1vbjIsIHUzMiBtb24zKVxcbiAzNTc6XFx0e1xcbiAzNTg6XFx0XFx0dTMyIHBidXNfdmFsdWU7XFxuIDM1OTpcXHRcXHRpbnQgcmV0cnkgPSAyNTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6NDY6MzIuNzgyMTMwODAyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzY5NTEzNTg4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqTG9va2luZyBmb3IgUGh5IERyaXZlciBSZWdpc3RyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBQSFkgZHJpdmVyIGlzIGJlaW5nIGludGVncmF0ZWQgaW50byB0aGUgc3lzdGVtLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIGBhaXJfZW44ODExaC5jYC4gVGhlIG1vc3QgZGlyZWN0IHJvdXRlIHRvIHRoYXQgaXMgdG8ganVtcCBzdHJhaWdodCB0byB0aGUgZW5kIG9mIHRoZSBmaWxlLiBUaGF0J3Mgd2hlcmUgSSBzaG91bGQgZmluZCB0aGUgcmVnaXN0cmF0aW9uIHByb2Nlc3MgZm9yIHRoZSBQSFkgZHJpdmVyLiBJJ20gYXNzdW1pbmcsIG9mIGNvdXJzZSwgdGhhdCB0aGUgY29kZSBmb2xsb3dzIHN0YW5kYXJkIGNvbnZlbnRpb25zIGFuZCB0aGF0J3MgdGhlIHR5cGljYWwgbG9jYXRpb24gZm9yIHRoaXMga2luZCBvZiB0aGluZy4gTGV0J3Mgc2VlIGlmIHRoYXQgYXNzdW1wdGlvbiBob2xkcyB0cnVlLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgYSBjYWxsLCBsaWtlbHkgaW52b2x2aW5nIGBtb2R1bGVfaW5pdGAgb3IgYSBzaW1pbGFyIG1hY3JvLCB0aGF0IHNldHMgZXZlcnl0aGluZyB1cC4gUmlnaHQsIGxldCdzIHNlZSB3aGF0J3MgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMjUxLCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODo0NjozNi40NzcyNzA0NTlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTEyMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQ1MCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTQ1MDpcXHRcXHRpZiAocHJpdi1cXHUwMDNlZmlybXdhcmVfdmVyc2lvbiBcXHUwMDNjIDB4MjQwMTEyMDIpIHtcXG4xNDUxOlxcdFxcdFxcdGxpbmttb2RlX21vZF9iaXQoRVRIVE9PTF9MSU5LX01PREVfMjUwMGJhc2VUX0Z1bGxfQklULFxcbjE0NTI6XFx0XFx0XFx0XFx0XFx0IHBoeWRldi1cXHUwMDNlbHBfYWR2ZXJ0aXNpbmcsXFxuMTQ1MzpcXHRcXHRcXHRcXHRcXHQgcGh5ZGV2LVxcdTAwM2VzcGVlZCA9PSBTUEVFRF8yNTAwKTtcXG4xNDU0OlxcdFxcdH1cXG4xNDU1OlxcdFxcbjE0NTY6XFx0XFx0LyogT25seSBzdXBwb3J0cyBmdWxsIGR1cGxleCAqL1xcbjE0NTc6XFx0XFx0cGh5ZGV2LVxcdTAwM2VkdXBsZXggPSBEVVBMRVhfRlVMTDtcXG4xNDU4OlxcdFxcbjE0NTk6XFx0XFx0cmV0dXJuIDA7XFxuMTQ2MDpcXHR9XFxuMTQ2MTpcXHRcXG4xNDYyOlxcdHN0YXRpYyBpbnQgZW44ODExaF9jbGVhcl9pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuMTQ2MzpcXHR7XFxuMTQ2NDpcXHRcXHRpbnQgcmV0O1xcbjE0NjU6XFx0XFxuMTQ2NjpcXHRcXHRyZXQgPSBwaHlfd3JpdGVfbW1kKHBoeWRldiwgTURJT19NTURfVkVORDEsIEFJUl9QSFlfTUNVX0NNRF8zLFxcbjE0Njc6XFx0XFx0XFx0XFx0ICAgIEFJUl9QSFlfTUNVX0NNRF8zX0RPQ01EKTtcXG4xNDY4OlxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbjE0Njk6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4xNDcwOlxcdFxcbjE0NzE6XFx0XFx0cmV0ID0gcGh5X3dyaXRlX21tZChwaHlkZXYsIE1ESU9fTU1EX1ZFTkQxLCBBSVJfUEhZX01DVV9DTURfNCxcXG4xNDcyOlxcdFxcdFxcdFxcdCAgICBBSVJfUEhZX01DVV9DTURfNF9JTlRDTFIpO1xcbjE0NzM6XFx0XFx0aWYgKHJldCBcXHUwMDNjIDApXFxuMTQ3NDpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbjE0NzU6XFx0XFxuMTQ3NjpcXHRcXHRyZXR1cm4gMDtcXG4xNDc3OlxcdH1cXG4xNDc4OlxcdFxcbjE0Nzk6XFx0c3RhdGljIGlycXJldHVybl90IGVuODgxMWhfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbjE0ODA6XFx0e1xcbjE0ODE6XFx0XFx0aW50IHJldDtcXG4xNDgyOlxcdFxcbjE0ODM6XFx0XFx0cmV0ID0gZW44ODExaF9jbGVhcl9pbnRyKHBoeWRldik7XFxuMTQ4NDpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbjE0ODU6XFx0XFx0XFx0cGh5X2Vycm9yKHBoeWRldik7XFxuMTQ4NjpcXHRcXHRcXHRyZXR1cm4gSVJRX05PTkU7XFxuMTQ4NzpcXHRcXHR9XFxuMTQ4ODpcXHRcXG4xNDg5OlxcdFxcdHBoeV90cmlnZ2VyX21hY2hpbmUocGh5ZGV2KTtcXG4xNDkwOlxcdFxcbjE0OTE6XFx0XFx0cmV0dXJuIElSUV9IQU5ETEVEO1xcbjE0OTI6XFx0fVxcbjE0OTM6XFx0XFxuMTQ5NDpcXHRzdGF0aWMgaW50IGVuODgxMWhfcmVzdW1lKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuMTQ5NTpcXHR7XFxuMTQ5NjpcXHRcXHRjbGtfcmVzdG9yZV9jb250ZXh0KCk7XFxuMTQ5NzpcXHRcXG4xNDk4OlxcdFxcdHJldHVybiBnZW5waHlfcmVzdW1lKHBoeWRldik7XFxuMTQ5OTpcXHR9XFxuMTUwMDpcXHRcXG4xNTAxOlxcdHN0YXRpYyBpbnQgZW44ODExaF9zdXNwZW5kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuMTUwMjpcXHR7XFxuMTUwMzpcXHRcXHRjbGtfc2F2ZV9jb250ZXh0KCk7XFxuMTUwNDpcXHRcXG4xNTA1OlxcdFxcdHJldHVybiBnZW5waHlfc3VzcGVuZChwaHlkZXYpO1xcbjE1MDY6XFx0fVxcbjE1MDc6XFx0XFxuMTUwODpcXHRzdGF0aWMgdm9pZCBhbjg4MTFoYl9yZW1vdmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4xNTA5OlxcdHtcXG4xNTEwOlxcdFxcdHN0cnVjdCBlbjg4MTFoX3ByaXYgKnByaXYgPSBwaHlkZXYtXFx1MDAzZXByaXY7XFxuMTUxMTpcXHRcXG4xNTEyOlxcdFxcdGlmIChwcml2LVxcdTAwM2VwYnVzZGV2KSB7XFxuMTUxMzpcXHRcXHRcXHRtZGlvX2RldmljZV9yZW1vdmUocHJpdi1cXHUwMDNlcGJ1c2Rldik7XFxuMTUxNDpcXHRcXHRcXHRtZGlvX2RldmljZV9mcmVlKHByaXYtXFx1MDAzZXBidXNkZXYpO1xcbjE1MTU6XFx0XFx0fVxcbjE1MTY6XFx0fVxcbjE1MTc6XFx0XFxuMTUxODpcXHRzdGF0aWMgc3RydWN0IHBoeV9kcml2ZXIgZW44ODExaF9kcml2ZXJbXSA9IHtcXG4xNTE5OlxcdHtcXG4xNTIwOlxcdFxcdFBIWV9JRF9NQVRDSF9NT0RFTChFTjg4MTFIX1BIWV9JRCksXFxuMTUyMTpcXHRcXHQubmFtZVxcdFxcdFxcdD0gXFxcIkFpcm9oYSBFTjg4MTFIXFxcIixcXG4xNTIyOlxcdFxcdC5wcm9iZVxcdFxcdFxcdD0gZW44ODExaF9wcm9iZSxcXG4xNTIzOlxcdFxcdC5nZXRfZmVhdHVyZXNcXHRcXHQ9IGVuODgxMWhfZ2V0X2ZlYXR1cmVzLFxcbjE1MjQ6XFx0XFx0LmNvbmZpZ19pbml0XFx0XFx0PSBlbjg4MTFoX2NvbmZpZ19pbml0LFxcbjE1MjU6XFx0XFx0LmdldF9yYXRlX21hdGNoaW5nXFx0PSBlbjg4MTFoX2dldF9yYXRlX21hdGNoaW5nLFxcbjE1MjY6XFx0XFx0LmNvbmZpZ19hbmVnXFx0XFx0PSBlbjg4MTFoX2NvbmZpZ19hbmVnLFxcbjE1Mjc6XFx0XFx0LnJlYWRfc3RhdHVzXFx0XFx0PSBlbjg4MTFoX3JlYWRfc3RhdHVzLFxcbjE1Mjg6XFx0XFx0LnJlc3VtZVxcdFxcdFxcdD0gZW44ODExaF9yZXN1bWUsXFxuMTUyOTpcXHRcXHQuc3VzcGVuZFxcdFxcdD0gZW44ODExaF9zdXNwZW5kLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODo0NjozNi40NzczODQ0NTlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzY4Mzk4MTc3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIGBhaXJfZW44ODExaC5jYCBQSFkgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGFpcl9lbjg4MTFoLmNgLCBhIFBIWSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciBBaXJvaGEgRU44ODExSCBhbmQgQU44ODExSEIgRXRoZXJuZXQgUEhZcy4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uLCBhbmQgdGhlIGNyaXRpY2FsIG9uZSBmb3IgZnV6emluZyBhcHBsaWNhYmlsaXR5LCBpcyB3aGV0aGVyIHRoaXMgdHlwZSBvZiBFdGhlcm5ldCBQSFkgaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gYmVmb3JlIEkgd2FzdGUgYW55IHRpbWUuXG5cbkkgcmVtZW1iZXIgdGhlIGZ1enppbmcgZ3VpZGVsaW5lcyB2ZXJ5IGNsZWFybHk6IFwiUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEUuXCIgSSBjYW4gb25seSBmdXp6IGNvZGUgdGhhdCAqYWN0dWFsbHkqIGV4ZWN1dGVzIGluIHRoZXNlIGVtdWxhdGVkIHNldHVwcy4gSWYgaXQncyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUsIHRoZSBmdXp6aW5nIGlzIGEgbm8tZ28sIG5vIG1hdHRlciBob3cgY2xldmVyIHRoZSBjb2RlIG9yIGNvbXBsZXggdGhlIGxvZ2ljIG1pZ2h0IGJlLlxuXG5UaGUgZ3VpZGVsaW5lcyBhcmUgZXhwbGljaXQgYWJvdXQgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUsXCIgbWVudGlvbmluZyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBHUFUgZHJpdmVycyAobGlrZSBtbHhzdywgcWVkLCBhbmQgYW1kZ3B1KSB0aGF0ICpyZXF1aXJlKiBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMsIG5vdCBlbXVsYXRlZCBvbmVzLiBTbywgSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXNlIFBIWSBkZXZpY2VzIChzcGVjaWZpY2FsbHkgTURJTyBwaHkgZHJpdmVycyBsaWtlIGBhaXJfZW44ODExaGApIG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUgb3IgdGhlIE1ESU8gYnVzIHRvIHdvcmsuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhleSBjYW4gYmUgaW5zdGFudGlhdGVkIHdpdGhvdXQgaXQsIG9yIGlmIHRoZXkgcmVxdWlyZSB0aGUgcGh5c2ljYWwgTURJTyBidXMgYW5kIFBIWSBoYXJkd2FyZS5cblxuV2FpdCBhIHNlY29uZOKApmNhbiBJIGVtdWxhdGUgb3IgaW5zdGFudGlhdGUgTURJTyBQSFkgZGV2aWNlcyB3aXRoaW4gUUVNVT8gSSBuZWVkIHRvIGtub3cgaWYgdGhlcmUncyBhbnkgc3VwcG9ydCBmb3IgYSB2aXJ0dWFsIG9yIG1vY2sgTURJTyBidXMgaW4gdGhlIExpbnV4IGtlcm5lbCBvciBpZiBzeXprYWxsZXIgaGFzIGFueSB3b3JrYXJvdW5kcyBmb3IgaXQuIFRpbWUgdG8gc2VhcmNoIHRoZSB0cmVlIGZvciBcIm1kaW8gbW9ja1wiIG9yIFwidmlydHVhbCBtZGlvXCIgYnVzZXMuIFRoYXQncyB0aGUga2V5IHRvIG1ha2luZyB0aGlzIGZ1enphYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTcxNCwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjQ2OjQwLjE2MTM2ODU2NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMxODA0NjkzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1kaW9fZ3Bpb3xtZGlvLWdwaW98bWRpby1uZXRsaW5rfGR1bW15LiptZGlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmM9MzgxPWludCBzdG1tYWNfbWRpb19yZXNldChzdHJ1Y3QgbWlpX2J1cyAqYnVzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYy00MTYtXFx0ICogSXQgZG9lc24ndCBjb21wbGV0ZSBpdHMgcmVzZXQgdW50aWwgYXQgbGVhc3Qgb25lIGNsb2NrIGN5Y2xlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21kaW8uYzo0MTc6XFx0ICogb24gTURDLCBzbyBwZXJmb3JtIGEgZHVtbXkgbWRpbyByZWFkLiBUbyBiZSB1cGRhdGVkIGZvciBHTUFDNFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tZGlvLmMtNDE4LVxcdCAqIGlmIG5lZWRlZC5cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZz05MD1jb25maWcgTURJT19HUElPXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctOTctXFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnOjk4OlxcdCAgd2lsbCBiZSBjYWxsZWQgbWRpby1ncGlvLlxcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZy05OS1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGU9MTM9b2JqLSQoQ09ORklHX01ESU9fQ0FWSVVNKVxcdFxcdCs9IG1kaW8tY2F2aXVtLm9cXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlOjE0Om9iai0kKENPTkZJR19NRElPX0dQSU8pXFx0XFx0XFx0Kz0gbWRpby1ncGlvLm9cXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlLTE1LW9iai0kKENPTkZJR19NRElPX0hJU0lfRkVNQUMpXFx0XFx0Kz0gbWRpby1oaXNpLWZlbWFjLm9cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMzEtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzozMjpzdHJ1Y3QgbWRpb19ncGlvX2luZm8ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMzMtXFx0c3RydWN0IG1kaW9iYl9jdHJsIGN0cmw7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTM2LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6Mzc6c3RhdGljIGludCBtZGlvX2dwaW9fZ2V0X2RhdGEoc3RydWN0IGRldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6Mzg6XFx0XFx0XFx0ICAgICAgc3RydWN0IG1kaW9fZ3Bpb19pbmZvICpiaXRiYW5nKVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMzkte1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYz01NT1zdGF0aWMgdm9pZCBtZGlvX2RpcihzdHJ1Y3QgbWRpb2JiX2N0cmwgKmN0cmwsIGludCBkaXIpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy01Ni17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzo1NzpcXHRzdHJ1Y3QgbWRpb19ncGlvX2luZm8gKmJpdGJhbmcgPVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6NTg6XFx0XFx0Y29udGFpbmVyX29mKGN0cmwsIHN0cnVjdCBtZGlvX2dwaW9faW5mbywgY3RybCk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy01OS1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM9NzY9c3RhdGljIGludCBtZGlvX2dldChzdHJ1Y3QgbWRpb2JiX2N0cmwgKmN0cmwpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy03Ny17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzo3ODpcXHRzdHJ1Y3QgbWRpb19ncGlvX2luZm8gKmJpdGJhbmcgPVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6Nzk6XFx0XFx0Y29udGFpbmVyX29mKGN0cmwsIHN0cnVjdCBtZGlvX2dwaW9faW5mbywgY3RybCk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy04MC1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM9ODQ9c3RhdGljIHZvaWQgbWRpb19zZXQoc3RydWN0IG1kaW9iYl9jdHJsICpjdHJsLCBpbnQgd2hhdClcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTg1LXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjg2OlxcdHN0cnVjdCBtZGlvX2dwaW9faW5mbyAqYml0YmFuZyA9XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzo4NzpcXHRcXHRjb250YWluZXJfb2YoY3RybCwgc3RydWN0IG1kaW9fZ3Bpb19pbmZvLCBjdHJsKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTg4LVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYz05NT1zdGF0aWMgdm9pZCBtZGNfc2V0KHN0cnVjdCBtZGlvYmJfY3RybCAqY3RybCwgaW50IHdoYXQpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy05Ni17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzo5NzpcXHRzdHJ1Y3QgbWRpb19ncGlvX2luZm8gKmJpdGJhbmcgPVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6OTg6XFx0XFx0Y29udGFpbmVyX29mKGN0cmwsIHN0cnVjdCBtZGlvX2dwaW9faW5mbywgY3RybCk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy05OS1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTAyLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTAzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbWRpb2JiX29wcyBtZGlvX2dwaW9fb3BzID0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTA0LVxcdC5vd25lciA9IFRISVNfTU9EVUxFLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xMTAtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxMTE6c3RhdGljIHN0cnVjdCBtaWlfYnVzICptZGlvX2dwaW9fYnVzX2luaXQoc3RydWN0IGRldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTEyOlxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IG1kaW9fZ3Bpb19pbmZvICpiaXRiYW5nLFxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTEzLVxcdFxcdFxcdFxcdFxcdCAgaW50IGJ1c19pZClcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTE2LVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTE3OlxcdGJpdGJhbmctXFx1MDAzZWN0cmwub3BzID0gXFx1MDAyNm1kaW9fZ3Bpb19vcHM7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xMTgtXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE0MS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE0MjpzdGF0aWMgdm9pZCBtZGlvX2dwaW9fYnVzX2RlaW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xNDMte1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xNDgtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxNDk6c3RhdGljIHZvaWQgbWRpb19ncGlvX2J1c19kZXN0cm95KHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE1MC17XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE1My1cXHRtZGlvYnVzX3VucmVnaXN0ZXIoYnVzKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE1NDpcXHRtZGlvX2dwaW9fYnVzX2RlaW5pdChkZXYpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTU1LX1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE1Ni1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE1NzpzdGF0aWMgaW50IG1kaW9fZ3Bpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTU4LXtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE1OTpcXHRzdHJ1Y3QgbWRpb19ncGlvX2luZm8gKmJpdGJhbmc7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xNjAtXFx0c3RydWN0IG1paV9idXMgKm5ld19idXM7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE2Ni1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE2NzpcXHRyZXQgPSBtZGlvX2dwaW9fZ2V0X2RhdGEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgYml0YmFuZyk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xNjgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTcxLVxcdGlmIChwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSkge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTcyOlxcdFxcdGJ1c19pZCA9IG9mX2FsaWFzX2dldF9pZChwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSwgXFxcIm1kaW8tZ3Bpb1xcXCIpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTczLVxcdFxcdGlmIChidXNfaWQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE4MC1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE4MTpcXHRuZXdfYnVzID0gbWRpb19ncGlvX2J1c19pbml0KFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIGJpdGJhbmcsIGJ1c19pZCk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xODItXFx0aWYgKCFuZXdfYnVzKVxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0xODYtXFx0aWYgKHJldClcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE4NzpcXHRcXHRtZGlvX2dwaW9fYnVzX2RlaW5pdChcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE4OC1cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTkxLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MTkyOnN0YXRpYyB2b2lkIG1kaW9fZ3Bpb19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE5My17XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoxOTQ6XFx0bWRpb19ncGlvX2J1c19kZXN0cm95KFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMTk1LX1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE5Ni1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE5NzpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtZGlvX2dwaW9fb2ZfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjE5ODpcXHR7IC5jb21wYXRpYmxlID0gXFxcInZpcnR1YWwsbWRpby1ncGlvXFxcIiwgfSxcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTE5OS1cXHR7IC5jb21wYXRpYmxlID0gXFxcIm1pY3JvY2hpcCxtZGlvLXNtaTBcXFwiIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTIwMS19O1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MjAyOk1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG1kaW9fZ3Bpb19vZl9tYXRjaCk7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0yMDMtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoyMDQ6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbWRpb19ncGlvX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjIwNTpcXHQucHJvYmUgPSBtZGlvX2dwaW9fcHJvYmUsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoyMDY6XFx0LnJlbW92ZSA9IG1kaW9fZ3Bpb19yZW1vdmUsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0yMDctXFx0LmRyaXZlclxcdFxcdD0ge1xcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MjA4OlxcdFxcdC5uYW1lXFx0PSBcXFwibWRpby1ncGlvXFxcIixcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jOjIwOTpcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBtZGlvX2dwaW9fb2ZfbWF0Y2gsXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0yMTAtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmMtMjEyLVxcbmRyaXZlcnMvbmV0L21kaW8vbWRpby1ncGlvLmM6MjEzOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobWRpb19ncGlvX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYy0yMTQtXFxuZHJpdmVycy9uZXQvbWRpby9tZGlvLWdwaW8uYzoyMTU6TU9EVUxFX0FMSUFTKFxcXCJwbGF0Zm9ybTptZGlvLWdwaW9cXFwiKTtcXG5kcml2ZXJzL25ldC9tZGlvL21kaW8tZ3Bpby5jLTIxNi1NT0RVTEVfQVVUSE9SKFxcXCJMYXVyZW50IFBpbmNoYXJ0LCBQYXVsaXVzIFphbGVja2FzXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjQ2OjQwLjM5MzIxODc5OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMjYyODMzNDA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGFpcl9lbjg4MTFoYCBQSFkgRHJpdmVyIFByb2JlIFNlcXVlbmNlKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYGFpcl9lbjg4MTFoYCBQSFkgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyBpdCdzIG1hdGNoZWQgYW5kIHVsdGltYXRlbHkgcHJvYmVkIHdpdGhpbiB0aGUgc3lzdGVtLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlIGNvcmUgb2YgdGhlIG1hdHRlcjogYGFpcl9lbjg4MTFoLmNgIGFuZCBpdHMgcmVnaXN0cmF0aW9uIG1lY2hhbmlzbS4gSSdsbCBiZSB0YXJnZXRpbmcgdGhlIGBtb2R1bGVfcGh5X2RyaXZlcmAgbWFjcm8gb3IgYSBkaXJlY3QgY2FsbCB0byBgcGh5X2RyaXZlcl9yZWdpc3RlcmAgd2l0aGluIHRoYXQgc291cmNlIGZpbGUuIFRoYXQncyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgd2hlcmUgdGhlIGRyaXZlciBhbm5vdW5jZXMgaXRzIHByZXNlbmNlIGFuZCBjYXBhYmlsaXRpZXMgdG8gdGhlIGJyb2FkZXIgUEhZIGZyYW1ld29yay4gVW5kZXJzdGFuZGluZyB0aGUgcmVnaXN0cmF0aW9uIHBvaW50IHdpbGwgcHJvdmlkZSB0aGUgY3JpdGljYWwgbGlua2FnZSBiZXR3ZWVuIHRoZSBkcml2ZXIncyBkZWZpbml0aW9uIGFuZCB0aGUgc3lzdGVtJ3MgYWJpbGl0eSB0byBsb2NhdGUgYW5kIHV0aWxpemUgaXQuIEZyb20gdGhlcmUsIEkgY2FuIHRyYWNlIHRoZSBtYXRjaGluZyBwcm9jZXNzIGFuZCB0aGUgZXZlbnR1YWwgcHJvYmUgZnVuY3Rpb24gZXhlY3V0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTI1MSwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjQ2OjQzLjY1NjA1NTQzN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDY3NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTUyMCxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTUyMDpcXHRcXHRQSFlfSURfTUFUQ0hfTU9ERUwoRU44ODExSF9QSFlfSUQpLFxcbjE1MjE6XFx0XFx0Lm5hbWVcXHRcXHRcXHQ9IFxcXCJBaXJvaGEgRU44ODExSFxcXCIsXFxuMTUyMjpcXHRcXHQucHJvYmVcXHRcXHRcXHQ9IGVuODgxMWhfcHJvYmUsXFxuMTUyMzpcXHRcXHQuZ2V0X2ZlYXR1cmVzXFx0XFx0PSBlbjg4MTFoX2dldF9mZWF0dXJlcyxcXG4xNTI0OlxcdFxcdC5jb25maWdfaW5pdFxcdFxcdD0gZW44ODExaF9jb25maWdfaW5pdCxcXG4xNTI1OlxcdFxcdC5nZXRfcmF0ZV9tYXRjaGluZ1xcdD0gZW44ODExaF9nZXRfcmF0ZV9tYXRjaGluZyxcXG4xNTI2OlxcdFxcdC5jb25maWdfYW5lZ1xcdFxcdD0gZW44ODExaF9jb25maWdfYW5lZyxcXG4xNTI3OlxcdFxcdC5yZWFkX3N0YXR1c1xcdFxcdD0gZW44ODExaF9yZWFkX3N0YXR1cyxcXG4xNTI4OlxcdFxcdC5yZXN1bWVcXHRcXHRcXHQ9IGVuODgxMWhfcmVzdW1lLFxcbjE1Mjk6XFx0XFx0LnN1c3BlbmRcXHRcXHQ9IGVuODgxMWhfc3VzcGVuZCxcXG4xNTMwOlxcdFxcdC5jb25maWdfaW50clxcdFxcdD0gZW44ODExaF9jbGVhcl9pbnRyLFxcbjE1MzE6XFx0XFx0LmhhbmRsZV9pbnRlcnJ1cHRcXHQ9IGVuODgxMWhfaGFuZGxlX2ludGVycnVwdCxcXG4xNTMyOlxcdFxcdC5sZWRfaHdfaXNfc3VwcG9ydGVkXFx0PSBlbjg4MTFoX2xlZF9od19pc19zdXBwb3J0ZWQsXFxuMTUzMzpcXHRcXHQucmVhZF9wYWdlXFx0XFx0PSBhaXJfcGh5X3JlYWRfcGFnZSxcXG4xNTM0OlxcdFxcdC53cml0ZV9wYWdlXFx0XFx0PSBhaXJfcGh5X3dyaXRlX3BhZ2UsXFxuMTUzNTpcXHRcXHQubGVkX2JsaW5rX3NldFxcdFxcdD0gYWlyX2xlZF9ibGlua19zZXQsXFxuMTUzNjpcXHRcXHQubGVkX2JyaWdodG5lc3Nfc2V0XFx0PSBhaXJfbGVkX2JyaWdodG5lc3Nfc2V0LFxcbjE1Mzc6XFx0XFx0LmxlZF9od19jb250cm9sX3NldFxcdD0gYWlyX2xlZF9od19jb250cm9sX3NldCxcXG4xNTM4OlxcdFxcdC5sZWRfaHdfY29udHJvbF9nZXRcXHQ9IGFpcl9sZWRfaHdfY29udHJvbF9nZXQsXFxuMTUzOTpcXHR9LFxcbjE1NDA6XFx0e1xcbjE1NDE6XFx0XFx0UEhZX0lEX01BVENIX01PREVMKEFOODgxMUhCX1BIWV9JRCksXFxuMTU0MjpcXHRcXHQubmFtZVxcdFxcdFxcdD0gXFxcIkFpcm9oYSBBTjg4MTFIQlxcXCIsXFxuMTU0MzpcXHRcXHQucHJvYmVcXHRcXHRcXHQ9IGFuODgxMWhiX3Byb2JlLFxcbjE1NDQ6XFx0XFx0LnJlbW92ZVxcdFxcdFxcdD0gYW44ODExaGJfcmVtb3ZlLFxcbjE1NDU6XFx0XFx0LmdldF9mZWF0dXJlc1xcdFxcdD0gZW44ODExaF9nZXRfZmVhdHVyZXMsXFxuMTU0NjpcXHRcXHQuY29uZmlnX2luaXRcXHRcXHQ9IGFuODgxMWhiX2NvbmZpZ19pbml0LFxcbjE1NDc6XFx0XFx0LmdldF9yYXRlX21hdGNoaW5nXFx0PSBlbjg4MTFoX2dldF9yYXRlX21hdGNoaW5nLFxcbjE1NDg6XFx0XFx0LmNvbmZpZ19hbmVnXFx0XFx0PSBlbjg4MTFoX2NvbmZpZ19hbmVnLFxcbjE1NDk6XFx0XFx0LnJlYWRfc3RhdHVzXFx0XFx0PSBlbjg4MTFoX3JlYWRfc3RhdHVzLFxcbjE1NTA6XFx0XFx0LnJlc3VtZVxcdFxcdFxcdD0gZW44ODExaF9yZXN1bWUsXFxuMTU1MTpcXHRcXHQuc3VzcGVuZFxcdFxcdD0gZW44ODExaF9zdXNwZW5kLFxcbjE1NTI6XFx0XFx0LmNvbmZpZ19pbnRyXFx0XFx0PSBlbjg4MTFoX2NsZWFyX2ludHIsXFxuMTU1MzpcXHRcXHQuaGFuZGxlX2ludGVycnVwdFxcdD0gZW44ODExaF9oYW5kbGVfaW50ZXJydXB0LFxcbjE1NTQ6XFx0XFx0LmxlZF9od19pc19zdXBwb3J0ZWRcXHQ9IGVuODgxMWhfbGVkX2h3X2lzX3N1cHBvcnRlZCxcXG4xNTU1OlxcdFxcdC5yZWFkX3BhZ2VcXHRcXHQ9IGFpcl9waHlfcmVhZF9wYWdlLFxcbjE1NTY6XFx0XFx0LndyaXRlX3BhZ2VcXHRcXHQ9IGFpcl9waHlfd3JpdGVfcGFnZSxcXG4xNTU3OlxcdFxcdC5sZWRfYmxpbmtfc2V0XFx0XFx0PSBhaXJfbGVkX2JsaW5rX3NldCxcXG4xNTU4OlxcdFxcdC5sZWRfYnJpZ2h0bmVzc19zZXRcXHQ9IGFpcl9sZWRfYnJpZ2h0bmVzc19zZXQsXFxuMTU1OTpcXHRcXHQubGVkX2h3X2NvbnRyb2xfc2V0XFx0PSBhaXJfbGVkX2h3X2NvbnRyb2xfc2V0LFxcbjE1NjA6XFx0XFx0LmxlZF9od19jb250cm9sX2dldFxcdD0gYWlyX2xlZF9od19jb250cm9sX2dldCxcXG4xNTYxOlxcdH0gfTtcXG4xNTYyOlxcdFxcbjE1NjM6XFx0bW9kdWxlX3BoeV9kcml2ZXIoZW44ODExaF9kcml2ZXIpO1xcbjE1NjQ6XFx0XFxuMTU2NTpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG1kaW9fZGV2aWNlX2lkIF9fbWF5YmVfdW51c2VkIGVuODgxMWhfdGJsW10gPSB7XFxuMTU2NjpcXHRcXHR7IFBIWV9JRF9NQVRDSF9NT0RFTChFTjg4MTFIX1BIWV9JRCkgfSxcXG4xNTY3OlxcdFxcdHsgUEhZX0lEX01BVENIX01PREVMKEFOODgxMUhCX1BIWV9JRCkgfSxcXG4xNTY4OlxcdFxcdHsgfVxcbjE1Njk6XFx0fTtcXG4xNTcwOlxcdFxcbjE1NzE6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShtZGlvLCBlbjg4MTFoX3RibCk7XFxuMTU3MjpcXHRNT0RVTEVfRklSTVdBUkUoRU44ODExSF9NRDMyX0RNKTtcXG4xNTczOlxcdE1PRFVMRV9GSVJNV0FSRShFTjg4MTFIX01EMzJfRFNQKTtcXG4xNTc0OlxcdE1PRFVMRV9GSVJNV0FSRShBTjg4MTFIQl9NRDMyX0RNKTtcXG4xNTc1OlxcdE1PRFVMRV9GSVJNV0FSRShBTjg4MTFIQl9NRDMyX0RTUCk7XFxuMTU3NjpcXHRcXG4xNTc3OlxcdE1PRFVMRV9ERVNDUklQVElPTihcXFwiQWlyb2hhIEVOODgxMUggYW5kIEFOODgxMUhCIFBIWSBkcml2ZXJzXFxcIik7XFxuMTU3ODpcXHRNT0RVTEVfQVVUSE9SKFxcXCJBaXJvaGFcXFwiKTtcXG4xNTc5OlxcdE1PRFVMRV9BVVRIT1IoXFxcIkVyaWMgV291ZHN0cmEgXFx1MDAzY2VyaWN3b3Vkc0BnbWFpbC5jb21cXHUwMDNlXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjQ2OjQzLjY1NjE2Mzc3N1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODAxMTAxNjg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBhaXJfd3JpdGVfYnVmYCBEdXJpbmcgRmlybXdhcmUgTG9hZGluZyoqXG5cbk9rYXksIHNvIGBhaXJfd3JpdGVfYnVmYCBwb3BzIHVwIGR1cmluZyB0aGUgZmlybXdhcmUgbG9hZGluZyBwcm9jZXNzLiBUaGF0J3MgaW50ZXJlc3RpbmcsIGFuZCB3YXJyYW50cyBhIGRlZXBlciBkaXZlLiBUaGUgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIG1hcCB0aGUgY2FsbCBncmFwaC4gTGV0J3Mgc2VlIHdobydzIGFjdHVhbGx5ICpjYWxsaW5nKiB0aGlzIGZ1bmN0aW9uLiBLbm93aW5nIHRoZSBjb250ZXh0IG9mIHRob3NlIGNhbGxzIHdpbGwgYmUgY3JpdGljYWwgdG8gdW5kZXJzdGFuZGluZyBpdHMgcHVycG9zZSBhbmQgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gSSBuZWVkIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBhbmQgaWRlbnRpZnkgdGhlIHBvaW50cyB3aGVyZSBkYXRhIGlzIGJlaW5nIHdyaXR0ZW4sIGFuZCB3aHkuIFRoaXMgY291bGQgYmUgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCBpbiB0ZXJtcyBvZiBmbGFzaGluZyBvciBpbml0aWFsaXphdGlvbiwgb3IgbWF5YmUgaXQncyBqdXN0IGEgZGlhZ25vc3RpYyBvciBsb2dnaW5nIGZ1bmN0aW9uLiBUaW1lIHRvIGJ1c3Qgb3V0IHRoZSBkZWJ1Z2dlciBhbmQgc3RhcnQgZGlnZ2luZyFcblxuXG4iLCJJbnB1dFRva2VucyI6MjY4NjQsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjQ2OjQ1LjQ1NzI2Nzk5NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDczOTQ0MDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYWlyX3dyaXRlX2J1ZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0yNDg9c3RhdGljIGludCBfX2Fpcl9wYnVzX3JlZ193cml0ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yNzItXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjczOnN0YXRpYyBpbnQgX19haXJfd3JpdGVfYnVmKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUzMiBhZGRyZXNzLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTI3NC1cXHRcXHRcXHQgICBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzA4LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjMwOTpzdGF0aWMgaW50IGFpcl93cml0ZV9idWYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIGFkZHJlc3MsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzEwLVxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzIzLVxcdGlmIChzYXZlZF9wYWdlIFxcdTAwM2U9IDApIHtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzozMjQ6XFx0XFx0cmV0ID0gX19haXJfd3JpdGVfYnVmKHBoeWRldiwgYWRkcmVzcywgZncpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTMyNS1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTQwMz1zdGF0aWMgaW50IGFuODgxMWhiX2xvYWRfZmlsZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBjb25zdCBjaGFyICpuYW1lLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDEzLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjQxNDpcXHRyZXQgPSBhaXJfd3JpdGVfYnVmKHBoeWRldiwgYWRkcmVzcywgIGZ3KTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy00MTUtXFx0cmVsZWFzZV9maXJtd2FyZShmdyk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz01MDg9c3RhdGljIGludCBlbjg4MTFoX2xvYWRfZmlybXdhcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTUzMi1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1MzM6XFx0cmV0ID0gYWlyX3dyaXRlX2J1ZihwaHlkZXYsIEFJUl9GV19BRERSX0RNLCAgZncxKTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01MzQtXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01MzYtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTM3OlxcdHJldCA9IGFpcl93cml0ZV9idWYocGh5ZGV2LCBBSVJfRldfQUREUl9EU1AsIGZ3Mik7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTM4LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODo0Njo0NS41MDQ2NjgxOFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMDMyOTcwNjQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlRyYWNpbmcgRnVuY3Rpb24gQ2FsbHM6IGBhbjg4MTFoYl9sb2FkX2ZpbGVgIGFuZCBgZW44ODExaF9sb2FkX2Zpcm13YXJlYCoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBleGVjdXRpb24gZmxvdyBzdXJyb3VuZGluZyBgYW44ODExaGJfbG9hZF9maWxlYCBhbmQgYGVuODgxMWhfbG9hZF9maXJtd2FyZWAuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBpZGVudGlmeSBldmVyeSBpbnN0YW5jZSB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlICpjYWxsZWQqIHdpdGhpbiB0aGUgY29kZWJhc2UuIFRoZSBnb2FsIGhlcmUgaXMgdG8gbWFwIG91dCB0aGVpciBkZXBlbmRlbmNpZXMgYW5kIGhvdyB0aGV5IGZpdCBpbnRvIHRoZSBiaWdnZXIgcGljdHVyZS4gQXJlIHRoZXNlIGNvcmUgbG9hZGluZyBmdW5jdGlvbnM/IEFyZSB0aGV5IHBhcnQgb2YgYSBsYXJnZXIgZmlybXdhcmUgdXBkYXRlIHByb2Nlc3MsIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBBIHNpbXBsZSBjYWxsIGdyYXBoIHRyYWNlIHNob3VsZCBwcm92aWRlIHRob3NlIGFuc3dlcnMuIEZyb20gdGhlcmUsIEknbGwgYmUgYWJsZSB0byBiZXR0ZXIgdW5kZXJzdGFuZCB0aGUgY29udGV4dHMgdGhlc2UgZnVuY3Rpb25zIG9wZXJhdGUgaW4gYW5kIHRoZWlyIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMuIEl0J3MgdGltZSB0byBkaWcgaW4gYW5kIGZvbGxvdyB0aGUgYnJlYWRjcnVtYnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3ODMzLCJPdXRwdXRUb2tlbnMiOjYxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6NDY6NDcuNTM3NzA2NzFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTcyMDczOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIoYW44ODExaGJfbG9hZF9maXJtd2FyZXxlbjg4MTFoX2xvYWRfZmlybXdhcmUpXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTQ0Mz1zdGF0aWMgaW50IGFuODgxMWhiX21jdV9kZWFzc2VydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDY3LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjQ2ODpzdGF0aWMgaW50IGFuODgxMWhiX2xvYWRfZmlybXdhcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy00Njkte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTA3LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjUwODpzdGF0aWMgaW50IGVuODgxMWhfbG9hZF9maXJtd2FyZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTUwOS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01MTktXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTIwOlxcdFxcdGdvdG8gZW44ODExaF9sb2FkX2Zpcm13YXJlX3JlbDE7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTIxLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTI0LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjUyNTpcXHRcXHRnb3RvIGVuODgxMWhfbG9hZF9maXJtd2FyZV9vdXQ7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTI2LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTMwLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjUzMTpcXHRcXHRnb3RvIGVuODgxMWhfbG9hZF9maXJtd2FyZV9vdXQ7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTMyLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTM0LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjUzNTpcXHRcXHRnb3RvIGVuODgxMWhfbG9hZF9maXJtd2FyZV9vdXQ7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTM2LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTM4LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjUzOTpcXHRcXHRnb3RvIGVuODgxMWhfbG9hZF9maXJtd2FyZV9vdXQ7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTQwLVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTQzLVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjU0NDpcXHRcXHRnb3RvIGVuODgxMWhfbG9hZF9maXJtd2FyZV9vdXQ7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTQ3LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjU0ODpcXHRcXHRnb3RvIGVuODgxMWhfbG9hZF9maXJtd2FyZV9vdXQ7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTQ5LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTUxLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjU1Mjplbjg4MTFoX2xvYWRfZmlybXdhcmVfb3V0OlxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTU1My1cXHRyZWxlYXNlX2Zpcm13YXJlKGZ3Mik7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTU0LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjU1NTplbjg4MTFoX2xvYWRfZmlybXdhcmVfcmVsMTpcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01NTYtXFx0cmVsZWFzZV9maXJtd2FyZShmdzEpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MTA4MD1zdGF0aWMgaW50IGFuODgxMWhiX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMTA5LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjExMTA6XFx0cmV0ID0gYW44ODExaGJfbG9hZF9maXJtd2FyZShwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTExMTEtXFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTExNTE9c3RhdGljIGludCBlbjg4MTFoX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMTYxLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjExNjI6XFx0cmV0ID0gZW44ODExaF9sb2FkX2Zpcm13YXJlKHBoeWRldik7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTE2My1cXHRpZiAocmV0IFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMTg6NDY6NDcuNjkzNDM0OTk4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc1NDQ2MDc3ODYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIE1ESU8gUEhZIERyaXZlciBSZWFjaGFiaWxpdHkgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSBgYWlyX2VuODgxMWguY2AgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdGhlIGBBSVJfRU44ODExSF9QSFlgIGNvbXBvbmVudCwgaXMgZXZlbiAqcmVhY2hhYmxlKiB3aXRoaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGlzOiBkb2VzIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lLCB0aGUgZ28tdG8gcGxhdGZvcm1zIGZvciBmdXp6aW5nLCBhY3R1YWxseSAqZW11bGF0ZSogdGhlIEFpcm9oYSBFTjg4MTFIIC8gQU44ODExSEIgMi41IEdpZ2FiaXQgRXRoZXJuZXQgUEhZIGNoaXA/XG5cbkknbSB0aGlua2luZyBhYm91dCB0aGUgaGFyZHdhcmUgcmVxdWlyZW1lbnRzLiBUaGlzIHNwZWNpZmljIFBIWSBjaGlwIHJlbGllcyBvbiBhbiBNRElPIGJ1cyBmb3IgY29tbXVuaWNhdGlvbi4gSSBuZWVkIHRvIGtub3cgaWYgYW55IHZpcnR1YWwgZW52aXJvbm1lbnQsIGxpa2UgdGhvc2UgdXNlZCB3aXRoIHN5emthbGxlciwgaGFzIGEgdmlydHVhbCBNRElPIGJ1cyBvciBlbXVsYXRlcyBhIGRldmljZSB0aGF0IHdvdWxkIHByb2JlIGZvciB0aGlzIEFpcm9oYSBQSFkgd2l0aCBpdHMgc3BlY2lmaWMgSUQgKGAweDAzYTJhNDExYCBvciBgMHhjMGZmMDRhMGApLlxuXG5Gcm9tIHdoYXQgSSBjYW4gdGVsbCwgdGhlIGFuc3dlciBpcyBuby4gU3RhbmRhcmQgUUVNVSBzZXR1cHMgdXNlIHZpcnR1YWwgbmV0d29yayBkZXZpY2VzIOKAkyBlMTAwMCwgdmlydGlvLW5ldCwgZXRjLiDigJMgYnV0IG5vbmUgb2YgdGhlc2UgZXZlbiByZW1vdGVseSByZXNlbWJsZSB0aGUgQWlyb2hhIEVOODgxMUguIFRoaXMgaXMgYSBwaHlzaWNhbCB0cmFuc2NlaXZlciwgYSBwaWVjZSBvZiBhY3R1YWwgaGFyZHdhcmUgdXN1YWxseSBmb3VuZCBvbiBwaHlzaWNhbCBib2FyZHMgYW5kIHJvdXRlcnMsIGxpa2UgdGhvc2UgdXNpbmcgTWVkaWFUZWsgRmlsb2dpYyBTb0NzLiBBaXJvaGEsIGFmdGVyIGFsbCwgaXMgYSBNZWRpYVRlayBzdWJzaWRpYXJ5IGFuZCB0aGVpciBjaGlwcyBhcmUgdXNlZCBpbiBwaHlzaWNhbCBoYXJkd2FyZS5cblxuTm93LCBsZXQncyBjb25zdWx0IHRoZSB0cmlhZ2UgZ3VpZGVsaW5lcyBvbiBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuIEl0J3MgY2xlYXI6IGlmIHRoZSBjb2RlICpjYW4ndCogZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGl0J3MgYSBuby1nbyBmb3IgZnV6emluZy4gVGhlIGd1aWRlbGluZXMgZXhwbGljaXRseSBtZW50aW9uIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBsaWtlIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMuIFRoaXMgYGFpcl9lbjg4MTFoLmNgIGRyaXZlciBmb3IgYSBwaHlzaWNhbCBFdGhlcm5ldCBQSFkgZml0cyB0aGF0IGRlc2NyaXB0aW9uIHBlcmZlY3RseS5cblxuVGhlIGZhY3QgaXMsIHRoaXMgZHJpdmVyIG5lZWRzIGEgcGh5c2ljYWwgQWlyb2hhIFBIWSBvbiBhbiBNRElPIGJ1cyB3aXRoIGEgc3BlY2lmaWMgdmVuZG9yIElELiBUaGlzIGlzIG5vdCBzb21ldGhpbmcgdGhhdCBpcyBlbXVsYXRlZCBpbiBRRU1VLiBUaGF0IG1ha2VzIGl0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3Igb3VyIHB1cnBvc2VzLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGlzOiBJIHNlZSB0aGF0IHRoZSBwYXRjaCBtb2RpZmllcyBvbmx5IHRoZSBgYWlyX2VuODgxMWguY2AgZmlsZSBhbmQgb25seSB0aGUgYGFpcl93cml0ZV9idWYoKWAgZnVuY3Rpb24sIHdoZXJlIGEgY2hlY2sgZm9yIGBmdy1cdTAwM2VzaXplICUgNGAgaGFzIGJlZW4gYWRkZWQuIE5vIG90aGVyIGZpbGVzIGFyZSB0b3VjaGVkLiBUaGUgZHJpdmVyIGlzIGVuYWJsZWQgdmlhIGBDT05GSUdfQUlSX0VOODgxMUhfUEhZYC4gVGhlIGhhcmR3YXJlIGRlcGVuZGVuY3kgaXMgdGhlIEFpcm9oYSBFTjg4MTFIL0FOODgxMUhCIDIuNUcgRXRoZXJuZXQgUEhZLiBUaGUga2V5IHBvaW50IGlzIHRoYXQgaXRzIHJlYWNoYWJpbGl0eSBpcyBwcmVkaWNhdGVkIG9uIHBoeXNpY2FsIGhhcmR3YXJlIG9uIGFuIE1ESU8gYnVzLCBhbmQgdGhlcmVmb3JlIGl0IGlzIG5vdCByZWFjaGFibGUgaW4gUUVNVS5cblxuR2l2ZW4gYWxsIG9mIHRoaXMsIHRoZSBgV29ydGhGdXp6aW5nYCBmbGFnIHNob3VsZCBhYnNvbHV0ZWx5IGJlIHNldCB0byBgZmFsc2VgLiBMZXQncyBwcmVwYXJlIHRoZSByZWFzb25pbmcsIHRoZSByZXF1aXJlZCBjb25maWdzLCBhbmQgcmVtZW1iZXIgdG8gbGVhdmUgdGhlIGZvY3VzIHN5bWJvbHMgZW1wdHksIHNpZ25hbGluZyB0aGF0IHRoaXMgaXNuJ3QgYSBmdXp6aW5nIHRhcmdldC5cblxuVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NDQ4LCJPdXRwdXRUb2tlbnMiOjE0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc4NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQxODo0ODowMy4xMzk1MTcyMjFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjAzODYyMDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFJUl9FTjg4MTFIX1BIWVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgYWlyX3dyaXRlX2J1ZmAgaW4gYGRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jYCwgd2hpY2ggaXMgYSBkcml2ZXIgZm9yIHRoZSBBaXJvaGEgRU44ODExSCBhbmQgQU44ODExSEIgMi41RyBFdGhlcm5ldCBQSFlzLiBUaGlzIGRyaXZlciByZXF1aXJlcyBwaHlzaWNhbCBBaXJvaGEgUEhZIGhhcmR3YXJlIGNvbm5lY3RlZCB2aWEgTURJTywgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBSVJfRU44ODExSF9QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYGFpcl93cml0ZV9idWZgIGluIGBkcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguY2AsIHdoaWNoIGlzIGEgZHJpdmVyIGZvciB0aGUgQWlyb2hhIEVOODgxMUggYW5kIEFOODgxMUhCIDIuNUcgRXRoZXJuZXQgUEhZcy4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgQWlyb2hhIFBIWSBoYXJkd2FyZSBjb25uZWN0ZWQgdmlhIE1ESU8sIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDE4OjQ4OjAzLjI1OTkyMDMyMloiLCJTZXEiOjIwLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowb7n7k[1] Phase: Running StartedAt: 2026-09-04 18:48:14 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowb7n7k[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-04 18:48:14 +0000 UTC FinishedAt: 2026-09-04 18:48:19 +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,}