Name: series-workflowdg5l9 Phase: Failed StartedAt: 2026-09-04 08:17:39 +0000 UTC FinishedAt: 2026-09-04 08:21:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdg5l9[0] Phase: Succeeded StartedAt: 2026-09-04 08:17:39 +0000 UTC FinishedAt: 2026-09-04 08:21:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdg5l9[0].run-triage Phase: Succeeded StartedAt: 2026-09-04 08:17:39 +0000 UTC FinishedAt: 2026-09-04 08:21:03 +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+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHZmaW9fZnNsX21jX21tYXBgIGluIGBkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNgLCB3aGljaCBwcm92aWRlcyBWRklPIHN1cHBvcnQgZm9yIE5YUC9GcmVlc2NhbGUgUW9ySVEgRFBBQTIgTWFuYWdlbWVudCBDb21wbGV4IChmc2wtbWMpIGJ1cyBkZXZpY2VzLiBUaGlzIHJlcXVpcmVzIHBoeXNpY2FsIE5YUCBMYXllcnNjYXBlIFNvQyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gdGhlIHRhcmdldCBhbWQ2NCBhcmNoaXRlY3R1cmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjAwMzRjOTc0YTk0MWMxOWNmN2IyMDNkNjdiYmI0NmRjMTg2ODI1ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMDg6MTk6NTcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jIGIvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXG5pbmRleCBiNGMzOTU4MjAxYjI1Li44NWY0NzlkYjkzNmM2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNcbkBAIC00MDcsNiAmIzQzOzQwNywxMCBAQCBzdGF0aWMgaW50IHZmaW9fZnNsX21jX21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4gXHRcdFx0XHUwMDI2XHUwMDI2ICh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX1dSSVRFKSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4mIzQzO1x0LyogUHJldmVudCByZWFkLW9ubHkgcmVnaW9uIG1hcHBpbmdzIGZyb20gYmVpbmcgdXBncmFkZWQgd2l0aCBtcHJvdGVjdCgpICovXG4mIzQzO1x0aWYgKCEodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFKSlcbiYjNDM7XHRcdHZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpO1xuJiM0MztcbiBcdHZtYS1cdTAwM2V2bV9wcml2YXRlX2RhdGEgPSBtY19kZXY7XG4gXG4gXHRyZXR1cm4gdmZpb19mc2xfbWNfbW1hcF9tbWlvKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0sIHZtYSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHZmaW9fZnNsX21jX21tYXBgIGluIGBkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNgLCB3aGljaCBwcm92aWRlcyBWRklPIHN1cHBvcnQgZm9yIE5YUC9GcmVlc2NhbGUgUW9ySVEgRFBBQTIgTWFuYWdlbWVudCBDb21wbGV4IChmc2wtbWMpIGJ1cyBkZXZpY2VzLiBUaGlzIHJlcXVpcmVzIHBoeXNpY2FsIE5YUCBMYXllcnNjYXBlIFNvQyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gdGhlIHRhcmdldCBhbWQ2NCBhcmNoaXRlY3R1cmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjAwMzRjOTc0YTk0MWMxOWNmN2IyMDNkNjdiYmI0NmRjMTg2ODI1ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDQgMDg6MTk6NTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMgYi9kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMKaW5kZXggYjRjMzk1ODIwMWIyNS4uODVmNDc5ZGI5MzZjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYwpAQCAtNDA3LDYgJiM0Mzs0MDcsMTAgQEAgc3RhdGljIGludCB2ZmlvX2ZzbF9tY19tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LAogCQkJJmFtcDsmYW1wOyAodm1hLSZndDt2bV9mbGFncyAmYW1wOyBWTV9XUklURSkpCiAJCXJldHVybiAtRUlOVkFMOwogCiYjNDM7CS8qIFByZXZlbnQgcmVhZC1vbmx5IHJlZ2lvbiBtYXBwaW5ncyBmcm9tIGJlaW5nIHVwZ3JhZGVkIHdpdGggbXByb3RlY3QoKSAqLwomIzQzOwlpZiAoISh2ZGV2LSZndDtyZWdpb25zW2luZGV4XS5mbGFncyAmYW1wOyBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpKQomIzQzOwkJdm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7CiYjNDM7CiAJdm1hLSZndDt2bV9wcml2YXRlX2RhdGEgPSBtY19kZXY7CiAKIAlyZXR1cm4gdmZpb19mc2xfbWNfbW1hcF9tbWlvKHZkZXYtJmd0O3JlZ2lvbnNbaW5kZXhdLCB2bWEpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTYxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYHZmaW9fZnNsX21jYCBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBvciBoYXJkd2FyZSB0aGlzIGlzIHRpZWQgdG8uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgc29tZXRoaW5nIHNwZWNpZmljIHRvIEZyZWVzY2FsZSBNYW5hZ2VtZW50IENvbXBsZXggKEZNQykgaGFyZHdhcmUsIG9yIGlmIGl0IGhhcyBzb21lIGJyb2FkZXIgaW1wbGljYXRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxhdGVkIGJ1aWxkIGNvbmZpZ3VyYXRpb24uCgpJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyBlaXRoZXIgdGhlIGBLY29uZmlnYCBvciB0aGUgYE1ha2VmaWxlYCBpbiB0aGUgc2FtZSBkaXJlY3RvcnksIHNwZWNpZmljYWxseSBgZHJpdmVycy92ZmlvL2ZzbC1tYy9gLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBjb25kaXRpb25hbCBidWlsZCBsb2dpYywgd2hpY2ggaXMgY3J1Y2lhbC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjb2RlIGlzIGV2ZW4gKnJlYWNoYWJsZSogb24gYW1kNjQsIG9yIGlmIGl0JiMzOTtzIHN0cmljdGx5IGEgZGVkaWNhdGVkIGhhcmR3YXJlIHJlcXVpcmVtZW50LiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhpcyBiZWZvcmUgSSBnbyBhbnkgZnVydGhlci4KClRvIHF1aWNrbHkgZ2V0IGEgZmVlbCBmb3IgaG93IGB2ZmlvX2ZzbF9tY2AgaXMgY29uZmlndXJlZCwgSSBzaG91bGQgYmUgYWJsZSB0byBncmVwIGZvciBhbnkgS2NvbmZpZyBvcHRpb25zIHRoYXQgbWlnaHQgYmUgcmVsYXRlZC4gVGhpcyBzaG91bGQgcXVpY2tseSBoaWdobGlnaHQgd2hpY2ggY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIGRlcGVuZGVuY2llcyBhY3RpdmF0ZSB0aGlzIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VkZJT19GU0xfTUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL01ha2VmaWxlPTE2PW9iai0kKENPTkZJR19WRklPX01ERVYpICYjNDM7PSBtZGV2L1xuZHJpdmVycy92ZmlvL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19WRklPX0ZTTF9NQykgJiM0Mzs9IGZzbC1tYy9cbmRyaXZlcnMvdmZpby9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfVkZJT19DRFgpICYjNDM7PSBjZHgvXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnPTE9bWVudSBcJiMzNDtWRklPIHN1cHBvcnQgZm9yIEZTTF9NQyBidXMgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZy0zLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnOjQ6Y29uZmlnIFZGSU9fRlNMX01DXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWctNS1cdHRyaXN0YXRlIFwmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgUW9ySVEgRFBBQTIgZnNsLW1jIGJ1cyBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy9NYWtlZmlsZT0zPXZmaW8tZnNsLW1jLXkgOj0gdmZpb19mc2xfbWMubyB2ZmlvX2ZzbF9tY19pbnRyLm9cbmRyaXZlcnMvdmZpby9mc2wtbWMvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfVkZJT19GU0xfTUMpICYjNDM7PSB2ZmlvLWZzbC1tYy5vXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTk3PXN0YXRpYyB2b2lkIHZmaW9fZnNsX21jX2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtMTEyLVx0XHRkZXZfd2FybihcdTAwMjZtY19jb250LVx1MDAzZWRldixcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzoxMTM6XHRcdFx0IFwmIzM0O1ZGSU9fRlNMX01DOiByZXNldCBkZXZpY2UgaGFzIGZhaWxlZCAoJWQpXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTExNC1cbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9MTIwPXN0YXRpYyBpbnQgdmZpb19mc2xfbWNfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0xMzEtXHQvKiBtYXAgb2Zmc2V0IHRvIHRoZSBwaHlzaWNhbCBhZGRyZXNzICAqL1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjEzMjpcdGluZm8tXHUwMDNlb2Zmc2V0ID0gVkZJT19GU0xfTUNfSU5ERVhfVE9fT0ZGU0VUKGluZm8tXHUwMDNlaW5kZXgpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTEzMy1cdGluZm8tXHUwMDNlc2l6ZSA9IHZkZXYtXHUwMDNlcmVnaW9uc1tpbmZvLVx1MDAzZWluZGV4XS5zaXplO1xuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz0yMzQ9c3RhdGljIHNzaXplX3QgdmZpb19mc2xfbWNfcmVhZChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldiwgY2hhciBfX3VzZXIgKmJ1Zixcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtMjM4LVx0XHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19mc2xfbWNfZGV2aWNlLCB2ZGV2KTtcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzoyMzk6XHR1bnNpZ25lZCBpbnQgaW5kZXggPSBWRklPX0ZTTF9NQ19PRkZTRVRfVE9fSU5ERVgoKnBwb3MpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjI0MDpcdGxvZmZfdCBvZmYgPSAqcHBvcyBcdTAwMjYgVkZJT19GU0xfTUNfT0ZGU0VUX01BU0s7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtMjQxLVx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldiA9IHZkZXYtXHUwMDNlbWNfZGV2O1xuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz0zMTI9c3RhdGljIHNzaXplX3QgdmZpb19mc2xfbWNfd3JpdGUoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTMxNy1cdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSwgdmRldik7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6MzE4Olx0dW5zaWduZWQgaW50IGluZGV4ID0gVkZJT19GU0xfTUNfT0ZGU0VUX1RPX0lOREVYKCpwcG9zKTtcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzozMTk6XHRsb2ZmX3Qgb2ZmID0gKnBwb3MgXHUwMDI2IFZGSU9fRlNMX01DX09GRlNFVF9NQVNLO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTMyMC1cdHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYgPSB2ZGV2LVx1MDAzZW1jX2Rldjtcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9MzUzPXN0YXRpYyBpbnQgdmZpb19mc2xfbWNfbW1hcF9tbWlvKHN0cnVjdCB2ZmlvX2ZzbF9tY19yZWdpb24gcmVnaW9uLFxuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0zNjAtXHRwZ29mZiA9IHZtYS1cdTAwM2V2bV9wZ29mZiBcdTAwMjZcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzozNjE6XHRcdCgoMVUgXHUwMDNjXHUwMDNjIChWRklPX0ZTTF9NQ19PRkZTRVRfU0hJRlQgLSBQQUdFX1NISUZUKSkgLSAxKTtcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0zNjItXHRiYXNlID0gcGdvZmYgXHUwMDNjXHUwMDNjIFBBR0VfU0hJRlQ7XG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTM3OD1zdGF0aWMgaW50IHZmaW9fZnNsX21jX21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTM4NS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzozODY6XHRpbmRleCA9IHZtYS1cdTAwM2V2bV9wZ29mZiBcdTAwM2VcdTAwM2UgKFZGSU9fRlNMX01DX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTM4Ny1cbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9NDIwPXN0YXRpYyBpbnQgdmZpb19mc2xfbWNfYnVzX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQzMS1cdFx0aWYgKGRldmljZV9zZXRfZHJpdmVyX292ZXJyaWRlKGRldiwgdmZpb19mc2xfbWNfb3BzLm5hbWUpKVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjQzMjpcdFx0XHRkZXZfd2FybihkZXYsIFwmIzM0O1ZGSU9fRlNMX01DOiBTZXR0aW5nIGRyaXZlciBvdmVycmlkZSBmb3IgZGV2aWNlIGluIGRwcmMgJXMgZmFpbGVkXFxuXCYjMzQ7LFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQzMy1cdFx0XHRcdCBkZXZfbmFtZShcdTAwMjZtY19jb250LVx1MDAzZWRldikpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQzNC1cdFx0ZWxzZVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjQzNTpcdFx0XHRkZXZfaW5mbyhkZXYsIFwmIzM0O1ZGSU9fRlNMX01DOiBTZXR0aW5nIGRyaXZlciBvdmVycmlkZSBmb3IgZGV2aWNlIGluIGRwcmMgJXNcXG5cJiMzNDssXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDM2LVx0XHRcdFx0IGRldl9uYW1lKFx1MDAyNm1jX2NvbnQtXHUwMDNlZGV2KSk7XG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ0MS1cdFx0aWYgKG1jX2RydiBcdTAwMjZcdTAwMjYgbWNfZHJ2ICE9IFx1MDAyNnZmaW9fZnNsX21jX2RyaXZlcilcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzo0NDI6XHRcdFx0ZGV2X3dhcm4oZGV2LCBcJiMzNDtWRklPX0ZTTF9NQzogT2JqZWN0ICVzIGJvdW5kIHRvIGRyaXZlciAlcyB3aGlsZSBEUFJDIGJvdW5kIHRvIHZmaW8tZnNsLW1jXFxuXCYjMzQ7LFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ0My1cdFx0XHRcdCBkZXZfbmFtZShkZXYpLCBtY19kcnYtXHUwMDNlZHJpdmVyLm5hbWUpO1xuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz00NDk9c3RhdGljIGludCB2ZmlvX2ZzbF9tY19pbml0X2RldmljZShzdHJ1Y3QgdmZpb19mc2xfbWNfZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy00NjktXHRpZiAocmV0KSB7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6NDcwOlx0XHRkZXZfZXJyKFx1MDAyNm1jX2Rldi1cdTAwM2VkZXYsIFwmIzM0O1ZGSU9fRlNMX01DOiBGYWlsZWQgdG8gc2V0dXAgRFBSQyAoJWQpXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ3MS1cdFx0Z290byBvdXRfbmNfdW5yZWc7XG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTQ4MD1zdGF0aWMgaW50IHZmaW9fZnNsX21jX3NjYW5fY29udGFpbmVyKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ4OS1cdFx0ZGV2X2VycihcdTAwMjZtY19kZXYtXHUwMDNlZGV2LFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjQ5MDpcdFx0XHRcJiMzNDtWRklPX0ZTTF9NQzogQ29udGFpbmVyIHNjYW5uaW5nIGZhaWxlZCAoJWQpXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ5MS1cdFx0ZHByY19yZW1vdmVfZGV2aWNlcyhtY19kZXYsIE5VTEwsIDApO1xuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz01MzA9c3RhdGljIGludCB2ZmlvX2ZzbF9tY19wcm9iZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy01NDItXHRpZiAocmV0KSB7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6NTQzOlx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7VkZJT19GU0xfTUM6IEZhaWxlZCB0byBhZGQgdG8gdmZpbyBncm91cFxcblwmIzM0Oyk7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNTQ0LVx0XHRnb3RvIG91dF9wdXRfdmRldjtcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaC02LVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmg6NzojaWZuZGVmIFZGSU9fRlNMX01DX1BSSVZBVEVfSFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmg6ODojZGVmaW5lIFZGSU9fRlNMX01DX1BSSVZBVEVfSFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmgtOS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oOjEwOiNkZWZpbmUgVkZJT19GU0xfTUNfT0ZGU0VUX1NISUZUICAgIDQwXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaDoxMTojZGVmaW5lIFZGSU9fRlNMX01DX09GRlNFVF9NQVNLICgoKHU2NCkoMSkgXHUwMDNjXHUwMDNjIFZGSU9fRlNMX01DX09GRlNFVF9TSElGVCkgLSAxKVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmgtMTItXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaDoxMzojZGVmaW5lIFZGSU9fRlNMX01DX09GRlNFVF9UT19JTkRFWChvZmYpICgob2ZmKSBcdTAwM2VcdTAwM2UgVkZJT19GU0xfTUNfT0ZGU0VUX1NISUZUKVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmgtMTQtXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaDoxNTojZGVmaW5lIFZGSU9fRlNMX01DX0lOREVYX1RPX09GRlNFVChpbmRleClcdFxcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaDoxNjpcdCgodTY0KShpbmRleCkgXHUwMDNjXHUwMDNjIFZGSU9fRlNMX01DX09GRlNFVF9TSElGVClcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oLTE3LVxuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oPTQ3PXZvaWQgdmZpb19mc2xfbWNfaXJxc19jbGVhbnVwKHN0cnVjdCB2ZmlvX2ZzbF9tY19kZXZpY2UgKnZkZXYpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmgtNDgtXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaDo0OTojZW5kaWYgLyogVkZJT19GU0xfTUNfUFJJVkFURV9IICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM5NQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkNoZWNraW5nIHRoZSBWRklPIEZTTC1NQyBLY29uZmlnIEZpbGUqKgoKT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGlzLiBUaGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBnb2luZyB0byBkbyBpcyB0YWtlIGEgbG9vayBhdCB0aGUgYGRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBhc3N1bWluZyB0aGVyZSYjMzk7cyBzb21lIGNvbmZpZ3VyYXRpb24gbG9naWMsIG1heWJlIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcywgb3IgZXZlbiBqdXN0IHNvbWUgYmFzaWMgZG9jdW1lbnRhdGlvbiBJIG5lZWQgdG8gcmV2aWV3LiBHaXZlbiB0aGUgY29udGV4dCwgSSBleHBlY3QgdGhpcyBgS2NvbmZpZ2AgZmlsZSBpcyBnb2luZyB0byBkaWN0YXRlIHRoZSBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byB0aGUgVkZJTyAoVmlydHVhbCBGdW5jdGlvbiBJL08pIGRyaXZlciBmb3IgdGhlIEZyZWVzY2FsZSAobm93IE5YUCkgTXVsdGktQ29yZSAoTUMpIGFyY2hpdGVjdHVyZS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2Ugd2hldGhlciBzcGVjaWZpYyBNQyBoYXJkd2FyZSBpcyBzdXBwb3J0ZWQsIGFueSBuZWNlc3NhcnkgZGV2aWNlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLCBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGZlYXR1cmVzIG9yIGRyaXZlcnMsIGFuZCBob3cgdGhlIFZGSU8gZHJpdmVyIGludGVncmF0ZXMgd2l0aGluIHRoZSBicm9hZGVyIGZyYW1ld29yay4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgb3B0aW9ucyBvciBjb21waWxlLXRpbWUgY29uZmlndXJhdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2Ygb3IgYWRqdXN0LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHRtZW51IFwmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgRlNMX01DIGJ1cyBkZXZpY2VzXCYjMzQ7XG4gICAyOlx0XHRkZXBlbmRzIG9uIEZTTF9NQ19CVVNcbiAgIDM6XHRcbiAgIDQ6XHRjb25maWcgVkZJT19GU0xfTUNcbiAgIDU6XHRcdHRyaXN0YXRlIFwmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgUW9ySVEgRFBBQTIgZnNsLW1jIGJ1cyBkZXZpY2VzXCYjMzQ7XG4gICA2Olx0XHRzZWxlY3QgRVZFTlRGRFxuICAgNzpcdFx0aGVscFxuICAgODpcdFx0ICBEcml2ZXIgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHRoZSBWRklPIFFvcklRIERQQUEyIGZzbC1tY1xuICAgOTpcdFx0ICAoTWFuYWdlbWVudCBDb21wbGV4KSBkZXZpY2VzLiBUaGlzIGlzIHJlcXVpcmVkIHRvIHBhc3N0aHJvdWdoXG4gIDEwOlx0XHQgIGZzbC1tYyBidXMgZGV2aWNlcyB1c2luZyB0aGUgVkZJTyBmcmFtZXdvcmsuXG4gIDExOlx0XG4gIDEyOlx0XHQgIElmIHlvdSBkb24mIzM5O3Qga25vdyB3aGF0IHRvIGRvIGhlcmUsIHNheSBOLlxuICAxMzpcdFxuICAxNDpcdGVuZG1lbnVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODc3CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKktjb25maWcgRGl2ZSBmb3IgRlNMX01DX0JVUyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBgRlNMX01DX0JVU2AgaXMgZGVmaW5lZCBhbmQgdXNlZCB3aXRoaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHN5c3RlbS4gVGhpcyBtZWFucyBJJiMzOTttIGdvaW5nIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRvIGEgZ2xvYmFsIHNlYXJjaCBhY3Jvc3MgdGhlIGtlcm5lbCBzb3VyY2UgdHJlZS4gSSYjMzk7bGwgbmVlZCB0byB1c2UgdG9vbHMgdG8gcXVpY2tseSBsb2NhdGUgYWxsIGluc3RhbmNlcyBvZiB0aGlzIHN5bWJvbC4gSSBleHBlY3QgSSYjMzk7bGwgd2FudCB0byBmaWx0ZXIgYmFzZWQgb24gZmlsZSBleHRlbnNpb24gYEtjb25maWdgIGZpbGVzIGFuZCBtYXkgbmVlZCBzb21lIGFkZGl0aW9uYWwgb3B0aW9ucyB0byBtYW5hZ2UgdGhlIHNlYXJjaCBwcm9jZXNzIGJhc2VkIG9uIHRoZSBzeXN0ZW0gaW4gd2hpY2ggdGhpcyBpcyBpbXBsZW1lbnRlZC4gVGhpcyB3aWxsIGxldCBtZSBzZWUgaXRzIGRlcGVuZGVuY2llcywgd2hvJiMzOTtzIGVuYWJsaW5nIGl0LCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zLiBVbmRlcnN0YW5kaW5nIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGxvZ2ljIGFyb3VuZCBgRlNMX01DX0JVU2AgaXMgY3J1Y2lhbCB0byBpdHMgYmVoYXZpb3IgYW5kIGltcGxpY2F0aW9ucyB3aXRoaW4gdGhlIGtlcm5lbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRlNMX01DX0JVUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZy03LVxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWc6ODpjb25maWcgRlNMX01DX0JVU1xuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctOS1cdGJvb2wgXCYjMzQ7UW9ySVEgRFBBQTIgZnNsLW1jIGJ1cyBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTc5CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgcmVhZGluZyBgZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWdgOgoKKipBbmFseXppbmcgdGhlIEZTTCBNQyBLY29uZmlnIEZpbGUqKgoKT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIGBkcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZ2AgZmlsZS4gSSBpbW1lZGlhdGVseSByZWNvZ25pemUgdGhpcyBhcyBhIGNydWNpYWwgcGllY2UgZm9yIGNvbmZpZ3VyaW5nIHRoZSBGcmVlc2NhbGUgKG5vdyBOWFApIE11bHRpLUNvcmUgKE1DKSBkcml2ZXJzIHdpdGhpbiB0aGUga2VybmVsLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBncmFzcCB0aGUgc2NvcGUgb2Ygd2hhdCYjMzk7cyBiZWluZyBjb250cm9sbGVkIGhlcmUg4oCTIHdoYXQgb3B0aW9ucyBhcmUgcHJlc2VudGVkIHRvIHRoZSB1c2VyIGR1cmluZyB0aGUga2VybmVsIGJ1aWxkIHByb2Nlc3MsIGFuZCBob3cgYXJlIHRoZXkgc3RydWN0dXJlZD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGRpZmZlcmVudCBNQyBjb21wb25lbnRzLiBUaGlzIGZpbGUgbGlrZWx5IGRlZmluZXMgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBkZWZhdWx0cywgYW5kIHBvdGVudGlhbGx5IGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcyBvciBmZWF0dXJlcy4KCkkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOgoKKiAgICoqVG9wLWxldmVsIG9wdGlvbnM6KiogVGhlc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMgZm9yIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGUgb3ZlcmFsbCBGU0wgTUMgZHJpdmVyIHN1cHBvcnQuIFByb2JhYmx5IHNvbWV0aGluZyBsaWtlIGBDT05GSUdfRlNMX01DYC4KKiAgICoqU3ViLW9wdGlvbnM6KiogVGhlbiBJJiMzOTtsbCBiZSBzZWFyY2hpbmcgZm9yIG1vcmUgZ3JhbnVsYXIgb3B0aW9ucyB0aGF0IGFsbG93IHRoZSB1c2VyIHRvIHNlbGVjdCBzcGVjaWZpYyBGU0wgTUMgZGV2aWNlcywgZmVhdHVyZXMgKGUuZy4sIHNwZWNpZmljIGhhcmR3YXJlIHJldmlzaW9ucywgZnVuY3Rpb25hbGl0aWVzKSwgb3IgcHJvdG9jb2xzLiBUaGlzIGlzIHdoZXJlIEkmIzM5O2xsIGdldCBpbnRvIHRoZSBkZXRhaWxzIG9mIHdoYXQgRlNMIE1DIGFjdHVhbGx5IGJyaW5ncyB0byB0aGUgdGFibGUgYW5kIHdoYXQgcGFydHMgb2YgdGhlIHN5c3RlbSBhcmUgYWZmZWN0ZWQuCiogICAqKkRlcGVuZGVuY2llczoqKiBJIGFudGljaXBhdGUgc2VlaW5nIGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzLiBUaGVzZSBhcmUgY3JpdGljYWw7IHRoZXkgdGVsbCBtZSB3aGF0IG90aGVyIEtjb25maWcgb3B0aW9ucyBtdXN0IGJlIHNldCAob3Igbm90IHNldCkgZm9yIGEgcGFydGljdWxhciBNQyBmZWF0dXJlIHRvIGV2ZW4gYmUgY29uc2lkZXJlZC4gVGhpcyBoZWxwcyB1bmRlcnN0YW5kIHRoZSBwcmUtcmVxdWlzaXRlcyBmb3IgZW5hYmxpbmcgYW5kIHVzaW5nIHRoZSBGU0wgTUMgZHJpdmVycy4KKiAgICoqRGVmYXVsdHM6KiogYGRlZmF1bHRgIHN0YXRlbWVudHMgYXJlIGltcG9ydGFudCBmb3IgdW5kZXJzdGFuZGluZyB3aGF0IHRoZSAmIzM0O291dC1vZi10aGUtYm94JiMzNDsgY29uZmlndXJhdGlvbiB3aWxsIGJlLiBXaGF0IG9wdGlvbnMgYXJlIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCBvciBkaXNhYmxlZCB3aGVuIHRoZSB1c2VyIGlzbiYjMzk7dCBtYWtpbmcgZXhwbGljaXQgY2hvaWNlcy4KKiAgICoqSGVscCB0ZXh0OioqIFRoZSBgaGVscGAgc2VjdGlvbnMgYXJlIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlICpwdXJwb3NlKiBvZiBlYWNoIG9wdGlvbiBhbmQgaXRzIGltcGxpY2F0aW9ucy4gSSYjMzk7bGwgcmVhZCB0aGVzZSBjYXJlZnVsbHkgdG8gZ2V0IGEgcHJvcGVyIG1lbnRhbCBtb2RlbCBvZiBob3cgZWFjaCBNQyBkZXZpY2UgaXMgaW5jb3Jwb3JhdGVkIGludG8gdGhlIGRldmljZSB0cmVlLgoKSSBleHBlY3QgdG8gc2VlIGEgbG90IG9mIGNvbmRpdGlvbmFsIGxvZ2ljLCBwcm9iYWJseSB1c2luZyBgaWZgIHN0YXRlbWVudHMsIHRvIGhhbmRsZSBkaWZmZXJlbnQgaGFyZHdhcmUgcmV2aXNpb25zIG9yIGNvbmZpZ3VyYXRpb25zLiBUaGlzIGZpbGUgd2lsbCBiZSBhIHJvYWRtYXAgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlIGtlcm5lbCBidWlsZHMgYW5kIGluY29ycG9yYXRlcyBzdXBwb3J0IGZvciBGcmVlc2NhbGUmIzM5O3MgTXVsdGktQ29yZSB0ZWNobm9sb2d5LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0I1xuICAgMzpcdCMgRFBBQTIgZnNsLW1jIGJ1c1xuICAgNDpcdCNcbiAgIDU6XHQjIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuXG4gICA2Olx0I1xuICAgNzpcdFxuICAgODpcdGNvbmZpZyBGU0xfTUNfQlVTXG4gICA5Olx0XHRib29sIFwmIzM0O1FvcklRIERQQUEyIGZzbC1tYyBidXMgZHJpdmVyXCYjMzQ7XG4gIDEwOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9MQVlFUlNDQVBFIHx8IChDT01QSUxFX1RFU1QgXHUwMDI2XHUwMDI2IChBUk0gfHwgQVJNNjQgfHwgWDg2X0xPQ0FMX0FQSUMgfHwgUFBDKSkpXG4gIDExOlx0XHRzZWxlY3QgR0VORVJJQ19NU0lfSVJRXG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIERyaXZlciB0byBlbmFibGUgdGhlIGJ1cyBpbmZyYXN0cnVjdHVyZSBmb3IgdGhlIFFvcklRIERQQUEyXG4gIDE0Olx0XHQgIGFyY2hpdGVjdHVyZS4gIFRoZSBmc2wtbWMgYnVzIGRyaXZlciBoYW5kbGVzIGRpc2NvdmVyeSBvZlxuICAxNTpcdFx0ICBEUEFBMiBvYmplY3RzICh3aGljaCBhcmUgcmVwcmVzZW50ZWQgYXMgTGludXggZGV2aWNlcykgYW5kXG4gIDE2Olx0XHQgIGJpbmRpbmcgb2JqZWN0cyB0byBkcml2ZXJzLlxuICAxNzpcdFxuICAxODpcdGNvbmZpZyBGU0xfTUNfVUFQSV9TVVBQT1JUXG4gIDE5Olx0XHRib29sIFwmIzM0O01hbmFnZW1lbnQgQ29tcGxleCAoTUMpIHVzZXJzcGFjZSBzdXBwb3J0XCYjMzQ7XG4gIDIwOlx0XHRkZXBlbmRzIG9uIEZTTF9NQ19CVVNcbiAgMjE6XHRcdGhlbHBcbiAgMjI6XHRcdCAgUHJvdmlkZXMgdXNlcnNwYWNlIHN1cHBvcnQgZm9yIGludGVycm9nYXRpbmcsIGNyZWF0aW5nLCBkZXN0cm95aW5nIG9yXG4gIDIzOlx0XHQgIGNvbmZpZ3VyaW5nIERQQUEyIG9iamVjdHMgZXhwb3J0ZWQgYnkgdGhlIE1hbmFnZW1lbnQgQ29tcGxleC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODEwMgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZTTCBNQyBCdXMgRGVwZW5kZW5jeSBhbmQgRGV2aWNlIERpc2NvdmVyeSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBvZiBgRlNMX01DX0JVU2AuIEl0JiMzOTtzIGNsZWFybHkgdGllZCB0byB0aGUgYE9GYCAoZGV2aWNlIHRyZWUpIGNvbmZpZ3VyYXRpb24sIHdoaWNoIG1ha2VzIHNlbnNlLiBJIHNlZSBpdCBhbHNvIGhhcyBwbGF0Zm9ybS1zcGVjaWZpYyByZXF1aXJlbWVudHM6IGVpdGhlciBhIExheWVyc2NhcGUgYXJjaGl0ZWN0dXJlIChgQVJDSF9MQVlFUlNDQVBFYCksIG9yIGEgYENPTVBJTEVfVEVTVGAgYWxvbmcgd2l0aCBvbmUgb2Ygc2V2ZXJhbCBhcmNoaXRlY3R1cmVzIC0gYEFSTWAsIGBBUk02NGAsIGBYODZfTE9DQUxfQVBJQ2AsIG9yIGBQUENgLiBUaGlzIHRlbGxzIG1lIGltbWVkaWF0ZWx5IHdoZXJlIHRoaXMgYnVzIGlzIGxpa2VseSBiZWluZyB1c2VkLgoKTm93LCB3aGF0ICppcyogYGZzbC1tY2A/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBkZXZpY2VzIGFyZSBtYW5hZ2VkIG9uIHRoYXQgYnVzLiBNeSBhcHByb2FjaCB3b3VsZCBiZSB0byBsb29rIGF0IHRoZSByZWxldmFudCBkcml2ZXJzLiBJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUgYGRyaXZlcnMvYnVzL2ZzbC1tYy9gIGFuZCBgZHJpdmVycy92ZmlvL2ZzbC1tYy9gLiBUaGUgVkZJTyBhc3BlY3QgaXMga2V5LCBzdWdnZXN0aW5nIGEgdmlydHVhbGl6ZWQgY29tcG9uZW50IHRvIHRoaXMuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gZ3JlcCB0aGUgY29kZS4gSSYjMzk7bGwgc2VhcmNoIGZvciB0aGUgcmVnaXN0cmF0aW9uIG9mIGB2ZmlvX2ZzbF9tY19kcml2ZXJgLiBUaGF0IHNob3VsZCBsZWFkIG1lIHRvIGhvdyBkZXZpY2VzIGFyZSBhdHRhY2hlZCBvciBwcm9iZWQgb24gdGhhdCBidXMsIGFuZCB0aGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmZpb19mc2xfbWNfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL2ZzbC1tYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtMTktXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6MjA6c3RhdGljIHN0cnVjdCBmc2xfbWNfZHJpdmVyIHZmaW9fZnNsX21jX2RyaXZlcjtcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0yMS1cbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9NDIwPXN0YXRpYyBpbnQgdmZpb19mc2xfbWNfYnVzX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ0MC1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzo0NDE6XHRcdGlmIChtY19kcnYgXHUwMDI2XHUwMDI2IG1jX2RydiAhPSBcdTAwMjZ2ZmlvX2ZzbF9tY19kcml2ZXIpXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDQyLVx0XHRcdGRldl93YXJuKGRldiwgXCYjMzQ7VkZJT19GU0xfTUM6IE9iamVjdCAlcyBib3VuZCB0byBkcml2ZXIgJXMgd2hpbGUgRFBSQyBib3VuZCB0byB2ZmlvLWZzbC1tY1xcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9NTc5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fZnNsX21jX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNTk1LVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjU5NjpzdGF0aWMgc3RydWN0IGZzbF9tY19kcml2ZXIgdmZpb19mc2xfbWNfZHJpdmVyID0ge1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTU5Ny1cdC5wcm9iZVx0XHQ9IHZmaW9fZnNsX21jX3Byb2JlLFxuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy02MDQtXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6NjA1Om1vZHVsZV9mc2xfbWNfZHJpdmVyKHZmaW9fZnNsX21jX2RyaXZlcik7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNjA2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDgyCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVsdmluZyBpbnRvIHRoZSBGU0wgTUMgRHJpdmVyIEFyY2hpdGVjdHVyZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbW9kdWxlX2ZzbF9tY19kcml2ZXIodmZpb19mc2xfbWNfZHJpdmVyKWAgY2FsbCwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpbnZvbHZlcyB0aGUgVkZJTyBpbnRlcmZhY2UgYW5kIHRoZSBGcmVlc2NhbGUgKG5vdyBOWFApIE11bHRpLUNvcmUgZHJpdmVyLiBSaWdodCwgdGltZSB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhlIGBmc2xfbWNfYnVzYCBpcyBzZXQgdXAuIEkga25vdyBpdCYjMzk7cyBhIGNyaXRpY2FsIHBhcnQgb2YgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLiBMZXQmIzM5O3MgaGVhZCBvdmVyIHRvIHRoZSBgZHJpdmVycy9idXMvZnNsLW1jL2AgZGlyZWN0b3J5IGluIHRoZSBrZXJuZWwgc291cmNlLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2xsIGZpbmQgdGhlIGNvcmUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiB0aGF0IGJ1cyBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBkZXZpY2VzIGFyZSBlbnVtZXJhdGVkIGFuZCBob3cgdGhpcyBhbGwgaW50ZWdyYXRlcyB3aXRoIHRoZSB2ZmlvIGZyYW1ld29yaywgYW5kIHRoYXQgZGlyZWN0b3J5IHdpbGwgYmUgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvYnVzL2ZzbC1tYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2RwYnAuYyYjMzQ7LAogICAgJiMzNDtkcGNvbi5jJiMzNDssCiAgICAmIzM0O2RwbWNwLmMmIzM0OywKICAgICYjMzQ7ZHByYy1kcml2ZXIuYyYjMzQ7LAogICAgJiMzNDtkcHJjLmMmIzM0OywKICAgICYjMzQ7ZnNsLW1jLWFsbG9jYXRvci5jJiMzNDssCiAgICAmIzM0O2ZzbC1tYy1idXMuYyYjMzQ7LAogICAgJiMzNDtmc2wtbWMtbXNpLmMmIzM0OywKICAgICYjMzQ7ZnNsLW1jLXByaXZhdGUuaCYjMzQ7LAogICAgJiMzNDtmc2wtbWMtdWFwaS5jJiMzNDssCiAgICAmIzM0O21jLWlvLmMmIzM0OywKICAgICYjMzQ7bWMtc3lzLmMmIzM0OywKICAgICYjMzQ7b2JqLWFwaS5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQ3MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2U6CgoqKkludmVzdGlnYXRpbmcgRGV2aWNlIENyZWF0aW9uIGluIGBmc2wtbWMtYnVzLmNgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRldmljZSBjcmVhdGlvbiBvciBkaXNjb3ZlcnkgcHJvY2VzcyB3aXRoaW4gdGhpcyBmcmFtZXdvcmsuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBmb2N1cyBvbiBgZnNsLW1jLWJ1cy5jYC4gSSBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBtZWNoYW5pc21zIHRoZXJl4oCUdGhlIG5pdHR5LWdyaXR0eSBkZXRhaWxzIG9mIGhvdyBuZXcgZGV2aWNlcyBhcmUgYnJvdWdodCBpbnRvIHRoZSBzeXN0ZW0uIFRoaXMgZmlsZSBzaG91bGQgY29udGFpbiB0aGUga2V5IGZ1bmN0aW9ucyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgaGFuZGxlIHRoZSBlbnVtZXJhdGlvbiwgcHJvYmluZywgYW5kIGF0dGFjaG1lbnQgb2YgZGV2aWNlcyBvbiB0aGlzIHBhcnRpY3VsYXIgYnVzLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgYWJzdHJhY3Rpb24gYW5kIHdoYXQgZHJpdmVyIG1vZGVsIGNvbXBvbmVudHMgaXQgbGV2ZXJhZ2VzLiBFc3NlbnRpYWxseSwgSSYjMzk7bSBsb29raW5nIGZvciB0aGUgZm91bmRhdGlvbmFsIGNvZGUgdGhhdCBnb3Zlcm5zIGhvdyBuZXcgYGZzbC1tY2AgZGV2aWNlcyBiZWNvbWUga25vd24gdG8gdGhlIGtlcm5lbC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmc2xfbWNfYnVzX3R5cGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2J1cy9mc2wtbWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0zMjQ9QVRUUklCVVRFX0dST1VQUyhmc2xfbWNfYnVzKTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzI1LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzozMjY6Y29uc3Qgc3RydWN0IGJ1c190eXBlIGZzbF9tY19idXNfdHlwZSA9IHtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzI3LVx0Lm5hbWUgPSBcJiMzNDtmc2wtbWNcJiMzNDssXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0zMzgtfTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MzM5OkVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19idXNfdHlwZSk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTM0MC1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTQ2MT1pbnQgX19mc2xfbWNfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBmc2xfbWNfZHJpdmVyICptY19kcml2ZXIsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy00NjYtXHRtY19kcml2ZXItXHUwMDNlZHJpdmVyLm93bmVyID0gb3duZXI7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjQ2NzpcdG1jX2RyaXZlci1cdTAwM2Vkcml2ZXIuYnVzID0gXHUwMDI2ZnNsX21jX2J1c190eXBlO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy00NjgtXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz03NTI9aW50IGZzbF9tY19kZXZpY2VfYWRkKHN0cnVjdCBmc2xfbWNfb2JqX2Rlc2MgKm9ial9kZXNjLFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzg5LVx0bWNfZGV2LVx1MDAzZWRldi5wYXJlbnQgPSBwYXJlbnRfZGV2O1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo3OTA6XHRtY19kZXYtXHUwMDNlZGV2LmJ1cyA9IFx1MDAyNmZzbF9tY19idXNfdHlwZTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzkxLVx0bWNfZGV2LVx1MDAzZWRldi5yZWxlYXNlID0gZnNsX21jX2RldmljZV9yZWxlYXNlO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MTE3NT1zdGF0aWMgdm9pZCBmc2xfbWNfYnVzX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTE4My1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTE4NDpcdGJ1c191bnJlZ2lzdGVyX25vdGlmaWVyKFx1MDAyNmZzbF9tY19idXNfdHlwZSwgXHUwMDI2ZnNsX21jX25iKTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTE4NS1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTEyNjA9c3RhdGljIGludCBfX2luaXQgZnNsX21jX2J1c19kcml2ZXJfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTI2My1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTI2NDpcdGVycm9yID0gYnVzX3JlZ2lzdGVyKFx1MDAyNmZzbF9tY19idXNfdHlwZSk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEyNjUtXHRpZiAoZXJyb3IgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEyOTItZXJyb3JfY2xlYW51cF9idXM6XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEyOTM6XHRidXNfdW5yZWdpc3RlcihcdTAwMjZmc2xfbWNfYnVzX3R5cGUpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMjk0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDYzNgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBJbml0aWFsaXphdGlvbiBvZiB0aGUgRlNMIE1DIEJ1cyBEcml2ZXIqKgoKQWxyaWdodCwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBGcmVlc2NhbGUgTXVsdGljb3JlIEJ1cyAoTUMgQnVzKSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gb3IgcHJvYmUgZnVuY3Rpb24uIE15IG1lbnRhbCBwcm9jZXNzIGlzLCAmIzM0O1doZXJlIGRvZXMgdGhpcyB0aGluZyBraWNrIG9mZj8mIzM0OyBPYnZpb3VzbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgZnNsX21jX2J1c19kcml2ZXJfaW5pdGAgb3IgdGhlIHByb2JlIHJvdXRpbmUgZ2V0IGludm9rZWQuIExldCYjMzk7cyBkaWcgaW50byB0aGUgY29yZS4gVGhhdCBtZWFucyBuYXZpZ2F0aW5nIG92ZXIgdG8gdGhlIGBmc2wtbWMtYnVzLmNgIGZpbGUuIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIHNob3VsZCBoYXBwZW4uIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGRyaXZlciByZWdpc3RyYXRpb24sIHByb2JpbmcgbG9naWMsIGFuZCBhbnkgYXNzb2NpYXRlZCBzZXR1cCB3aXRoaW4gdGhhdCBmaWxlLiBJJiMzOTttIGdvaW5nIHRvIHRyYWNrIGRvd24gdGhlIGZ1bmN0aW9uIGNhbGxzIGFuZCB0aGUgZW50cnkgcG9pbnQgdGhhdCBpbml0aWFsaXplcyB0aGF0IGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGxhdGZvcm1fZHJpdmVyLipmc2xfbWMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2J1cy9mc2wtbWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xMjA4PU1PRFVMRV9ERVZJQ0VfVEFCTEUoYWNwaSwgZnNsX21jX2J1c19hY3BpX21hdGNoX3RhYmxlKTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTIwOS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTIxMDpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBmc2xfbWNfYnVzX2RyaXZlciA9IHtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTIxMS1cdC5kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xMjYwPXN0YXRpYyBpbnQgX19pbml0IGZzbF9tY19idXNfZHJpdmVyX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEyNjktXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEyNzA6XHRlcnJvciA9IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZmc2xfbWNfYnVzX2RyaXZlcik7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEyNzEtXHRpZiAoZXJyb3IgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEyODktZXJyb3JfY2xlYW51cF9kcml2ZXI6XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEyOTA6XHRwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZmc2xfbWNfYnVzX2RyaXZlcik7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEyOTEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMjc0CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBQbGF0Zm9ybSBEcml2ZXIgYW5kIE1hdGNoIFRhYmxlKioKCk9rYXksIHNvIGBmc2xfbWNfYnVzX2RyaXZlcmAuLi4gcmlnaHQsIHRoYXQmIzM5O3MgYSBwbGF0Zm9ybSBkcml2ZXIuIE15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gc2VlIGhvdyB0aGlzIGRyaXZlciBpcyByZWNvZ25pemVkIGFuZCBhdHRhY2hlZCB0byBkZXZpY2VzLiBUaGF0IG1lYW5zIGRpdmluZyBpbnRvIHRoZSBtYXRjaCB0YWJsZS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgYGZzbC1tYy1idXMuY2AgYW5kIGh1bnQgZG93biB0aGF0IGNyaXRpY2FsIHBpZWNlIG9mIGluZm9ybWF0aW9uLiBUaGUgbWF0Y2ggdGFibGUgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIHRlbGxpbmcgdGhlIHN5c3RlbSB3aGljaCBkZXZpY2VzIHRoaXMgZHJpdmVyIGlzIGRlc2lnbmVkIHRvIGhhbmRsZS4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGRldmljZSBiaW5kaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTk1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDM1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzExOTU6XHR9XG4xMTk2Olx0XG4xMTk3Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZnNsX21jX2J1c19tYXRjaF90YWJsZVtdID0ge1xuMTE5ODpcdFx0ey5jb21wYXRpYmxlID0gXCYjMzQ7ZnNsLHFvcmlxLW1jXCYjMzQ7LH0sXG4xMTk5Olx0XHR7fSxcbjEyMDA6XHR9O1xuMTIwMTpcdFxuMTIwMjpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGZzbF9tY19idXNfbWF0Y2hfdGFibGUpO1xuMTIwMzpcdFxuMTIwNDpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2VfaWQgZnNsX21jX2J1c19hY3BpX21hdGNoX3RhYmxlW10gPSB7XG4xMjA1Olx0XHR7XCYjMzQ7TlhQMDAwOFwmIzM0OywgMCB9LFxuMTIwNjpcdFx0eyB9XG4xMjA3Olx0fTtcbjEyMDg6XHRNT0RVTEVfREVWSUNFX1RBQkxFKGFjcGksIGZzbF9tY19idXNfYWNwaV9tYXRjaF90YWJsZSk7XG4xMjA5Olx0XG4xMjEwOlx0c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZnNsX21jX2J1c19kcml2ZXIgPSB7XG4xMjExOlx0XHQuZHJpdmVyID0ge1xuMTIxMjpcdFx0XHQgICAubmFtZSA9IFwmIzM0O2ZzbF9tY19idXNcJiMzNDssXG4xMjEzOlx0XHRcdCAgIC5wbSA9IE5VTEwsXG4xMjE0Olx0XHRcdCAgIC5vZl9tYXRjaF90YWJsZSA9IGZzbF9tY19idXNfbWF0Y2hfdGFibGUsXG4xMjE1Olx0XHRcdCAgIC5hY3BpX21hdGNoX3RhYmxlID0gZnNsX21jX2J1c19hY3BpX21hdGNoX3RhYmxlLFxuMTIxNjpcdFx0XHQgICB9LFxuMTIxNzpcdFx0LnByb2JlID0gZnNsX21jX2J1c19wcm9iZSxcbjEyMTg6XHRcdC5yZW1vdmUgPSBmc2xfbWNfYnVzX3JlbW92ZSxcbjEyMTk6XHRcdC5zaHV0ZG93biA9IGZzbF9tY19idXNfcmVtb3ZlLFxuMTIyMDpcdH07XG4xMjIxOlx0XG4xMjIyOlx0c3RhdGljIGludCBmc2xfbWNfYnVzX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG4xMjIzOlx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgYWN0aW9uLCB2b2lkICpkYXRhKVxuMTIyNDpcdHtcbjEyMjU6XHRcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGRhdGE7XG4xMjI2Olx0XHRzdHJ1Y3QgcmVzb3VyY2UgKnJlcztcbjEyMjc6XHRcdHZvaWQgX19pb21lbSAqZnNsX21jX3JlZ3M7XG4xMjI4Olx0XG4xMjI5Olx0XHRpZiAoYWN0aW9uICE9IEJVU19OT1RJRllfQUREX0RFVklDRSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIwNDYKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAyODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIGB2ZmlvX2ZzbF9tY2AqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIGB2ZmlvX2ZzbF9tY2AuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRldGVybWluZSBpdHMgZGVwZW5kZW5jaWVzLiBEb2VzIGl0ICpyZXF1aXJlKiBzcGVjaWZpYywgcGh5c2ljYWwgaGFyZHdhcmUgbGlrZSB0aGUgUW9ySVEgb3IgTGF5ZXJzY2FwZSBTb0MgTWFuYWdlbWVudCBDb21wbGV4LCBvciBpcyBpdCBzb21ldGhpbmcgdGhhdCYjMzk7cyBlbXVsYXRlZCB3aXRoaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LCBtYWtpbmcgaXQgYWNjZXNzaWJsZT8gTGV0JiMzOTtzIGNvbnN1bHQgdGhlIGluc3RydWN0aW9ucy4KCkFscmlnaHQsIFNlY3Rpb24gMiBpcyB3aGF0IEkgbmVlZC4gSXQmIzM5O3MgcmVtaW5kaW5nIG1lIGFib3V0IHRoZSAmIzM0O3N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGNhdmVhdC4gVGhpbmdzIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgYXJlIG9mZi1saW1pdHMgZm9yIGZ1enppbmcgaWYgdGhleSBuZWVkIHJlYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gdGhlIHN0YW5kYXJkIHNldHVwLiBSZWFjaGFiaWxpdHkgaXMgdGhlIGNvcmUgaXNzdWUgaGVyZS4gRnV6emluZyBjYW4gb25seSByZXZlYWwgaXNzdWVzIGluIGNvZGUgcGF0aHMgdGhhdCBhcmUgYWN0dWFsbHkgKmV4ZWN1dGFibGUqIHdpdGhpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgbGV2ZXJhZ2luZyB0aGluZ3MgbGlrZSBlbXVsYXRlZCBVU0IgZGV2aWNlcywgbmV0d29yayBkZXZpY2VzLCBhbmQgdHVuL3RhcCBpbnRlcmZhY2VzLiBJZiB0aGUgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUsIGV2ZW4gd2l0aCBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMsIGl0JiMzOTtzIGEgbm9uLXN0YXJ0ZXIgZm9yIGZ1enppbmcuCgpOb3csIGNpcmNsaW5nIGJhY2sgdG8gYHZmaW9fZnNsX21jYCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlIEZyZWVzY2FsZSBNYW5hZ2VtZW50IENvbXBsZXggKEZTTC1NQyksIG9yIFFvcklRIERQQUEyLCBjYW4gcnVuIG9uIGFtZDY0IG9yIGluIHN0YW5kYXJkIFFFTVUuIFRoYXQmIzM5O3MgdGhlIHJlYWwgcXVlc3Rpb24uIElzIHRoZXJlIGEgdmlydHVhbCBGU0wtTUMgZGV2aWNlIGltcGxlbWVudGF0aW9uIG9yIGEgbW9jayBkcml2ZXIgYXZhaWxhYmxlPyBJIG5lZWQgdG8gc2VhcmNoIHRoZSBRRU1VIHNvdXJjZSBhbmQgdGhlIGtlcm5lbCBzb3VyY2UgZm9yIGFueSBjbHVlcyByZWxhdGVkIHRvICYjMzQ7ZnNsLW1jJiMzNDsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZzbC1tYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTQ1IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tYzoxOldoYXQ6XHRcdC9zeXMvYnVzL2ZzbC1tYy9yZXNjYW5cbkRvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1idXMtZnNsLW1jLTItRGF0ZTpcdFx0SmFudWFyeSAyMDIxXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWJ1cy1mc2wtbWM9NT1EZXNjcmlwdGlvbjpcdFdyaXRpbmcgYSBub24temVybyB2YWx1ZSB0byB0aGlzIGF0dHJpYnV0ZSB3aWxsXG5Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tYzo2Olx0XHRmb3JjZSBhIHJlc2NhbiBvZiBmc2wtbWMgYnVzIGluIHRoZSBzeXN0ZW0gYW5kXG5Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tYzo3Olx0XHRzeW5jaHJvbml6ZSB0aGUgb2JqZWN0cyB1bmRlciBmc2wtbWMgYnVzIGFuZCB0aGVcbkRvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1idXMtZnNsLW1jLTgtXHRcdE1hbmFnZW1lbnQgQ29tcGxleCBmaXJtd2FyZS5cbkRvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1idXMtZnNsLW1jPTk9VXNlcnM6XHRcdFVzZXJzcGFjZSBkcml2ZXJzIGFuZCBtYW5hZ2VtZW50IHRvb2xzXG5Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tYy0xMC1cbkRvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1idXMtZnNsLW1jOjExOldoYXQ6XHRcdC9zeXMvYnVzL2ZzbC1tYy9hdXRvcmVzY2FuXG5Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tYy0xMi1EYXRlOlx0XHRKYW51YXJ5IDIwMjFcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tYz0xNT1EZXNjcmlwdGlvbjpcdFdyaXRpbmcgYSB6ZXJvIHZhbHVlIHRvIHRoaXMgYXR0cmlidXRlIHdpbGxcbkRvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1idXMtZnNsLW1jLTE2LVx0XHRkaXNhYmxlIHRoZSBEUFJDIElSUXMgb24gd2hpY2ggYXV0b21hdGljIHJlc2NhblxuRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWJ1cy1mc2wtbWM6MTc6XHRcdG9mIHRoZSBmc2wtbWMgYnVzIGlzIHBlcmZvcm1lZC4gQSBub24temVybyB2YWx1ZVxuRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWJ1cy1mc2wtbWMtMTgtXHRcdHdpbGwgZW5hYmxlIHRoZSBEUFJDIElSUXMuXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtZnNsLW1jOjE6V2hhdDpcdFx0L3N5cy9idXMvZnNsLW1jL2RyaXZlcnMvLi4uL2JpbmRcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWZzbC1tYy0yLURhdGU6XHRcdERlY2VtYmVyIDIwMTZcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWM9ND1EZXNjcmlwdGlvbjpcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWMtNy1cdFx0dGhpcyBsb2NhdGlvbi4gVGhlIGZvcm1hdCBmb3IgdGhlIGxvY2F0aW9uIGlzIE9iamVjdC5JZFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtZnNsLW1jOjg6XHRcdGFuZCBpcyB0aGUgc2FtZSBhcyBmb3VuZCBpbiAvc3lzL2J1cy9mc2wtbWMvZGV2aWNlcy8uXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWMtOS1cbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWMtMTEtXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWM6MTI6XHRcdCAgIyBlY2hvIGRwbmkuMiBcdTAwM2UgL3N5cy9idXMvZnNsLW1jL2RyaXZlcnMvZnNsX2RwYWEyX2V0aC9iaW5kXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWMtMTMtXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWM6MTQ6V2hhdDpcdFx0L3N5cy9idXMvZnNsLW1jL2RyaXZlcnMvLi4uL3VuYmluZFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtZnNsLW1jLTE1LURhdGU6XHRcdERlY2VtYmVyIDIwMTZcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWM9MTc9RGVzY3JpcHRpb246XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtZnNsLW1jLTIwLVx0XHR0aGlzIGxvY2F0aW9uLiBUaGUgZm9ybWF0IGZvciB0aGUgbG9jYXRpb24gaXMgT2JqZWN0LklkXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWM6MjE6XHRcdGFuZCBpcyB0aGUgc2FtZSBhcyBmb3VuZCBpbiAvc3lzL2J1cy9mc2wtbWMvZGV2aWNlcy8uXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWMtMjItXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtZnNsLW1jLTI0LVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtZnNsLW1jOjI1Olx0XHQgICMgZWNobyBkcG5pLjIgXHUwMDNlIC9zeXMvYnVzL2ZzbC1tYy9kcml2ZXJzL2ZzbF9kcGFhMl9ldGgvdW5iaW5kXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWw9MTI9ZGVzY3JpcHRpb246IHxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXNjL2ZzbCxxb3JpcS1tYy55YW1sOjEzOiAgVGhlIEZyZWVzY2FsZSBNYW5hZ2VtZW50IENvbXBsZXggKGZzbC1tYykgaXMgYSBoYXJkd2FyZSByZXNvdXJjZVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWwtMTQtICBtYW5hZ2VyIHRoYXQgbWFuYWdlcyBzcGVjaWFsaXplZCBoYXJkd2FyZSBvYmplY3RzIHVzZWQgaW5cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXNjL2ZzbCxxb3JpcS1tYy55YW1sOjE1OiAgbmV0d29yay1vcmllbnRlZCBwYWNrZXQgcHJvY2Vzc2luZyBhcHBsaWNhdGlvbnMuIEFmdGVyIHRoZSBmc2wtbWNcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXNjL2ZzbCxxb3JpcS1tYy55YW1sLTE2LSAgYmxvY2sgaXMgZW5hYmxlZCwgcG9vbHMgb2YgaGFyZHdhcmUgcmVzb3VyY2VzIGFyZSBhdmFpbGFibGUsIHN1Y2ggYXNcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlzYy9mc2wscW9yaXEtbWMueWFtbC0yMS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXNjL2ZzbCxxb3JpcS1tYy55YW1sOjIyOiAgRm9yIGFuIG92ZXJ2aWV3IG9mIHRoZSBEUEFBMiBhcmNoaXRlY3R1cmUgYW5kIGZzbC1tYyBidXMgc2VlOlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWwtMjMtICBEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL292ZXJ2aWV3LnJzdFxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXNjL2ZzbCxxb3JpcS1tYy55YW1sPTUxPXByb3BlcnRpZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWwtMTMwLSAgICBkZXNjcmlwdGlvbjpcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXNjL2ZzbCxxb3JpcS1tYy55YW1sOjEzMTogICAgICBUaGUgZnNsLW1jIG5vZGUgbWF5IG9wdGlvbmFsbHkgaGF2ZSBkcG1hYyBzdWItbm9kZXMgdGhhdCBkZXNjcmliZVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWwtMTMyLSAgICAgIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgRXRoZXJuZXQgTUFDcyB3aGljaCBiZWxvbmcgdG8gdGhlIE1DXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWw9MTU3PWV4YW1wbGVzOlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWwtMTU4LSAgLSB8XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlzYy9mc2wscW9yaXEtbWMueWFtbDoxNTk6ICAgIGZzbC1tY0A4MGMwMDAwMDAge1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWwtMTYwLSAgICAgICAgY29tcGF0aWJsZSA9IFwmIzM0O2ZzbCxxb3JpcS1tY1wmIzM0Oztcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxxb3JpcS1tYy1kcG1hYy55YW1sPTEyPWRlc2NyaXB0aW9uOlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wscW9yaXEtbWMtZHBtYWMueWFtbDoxMzogIFRoaXMgYmluZGluZyByZXByZXNlbnRzIHRoZSBEUEFBMiBNQUMgb2JqZWN0cyBmb3VuZCBvbiB0aGUgZnNsLW1jIGJ1cyBhbmRcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLHFvcmlxLW1jLWRwbWFjLnlhbWw6MTQ6ICBsb2NhdGVkIHVuZGVyIHRoZSAmIzM5O2RwbWFjcyYjMzk7IG5vZGUgZm9yIHRoZSBmc2wtbWMgYnVzIERUUyBub2RlLlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wscW9yaXEtbWMtZHBtYWMueWFtbC0xNS1cbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdD0yOD1Ecml2ZXIgT3ZlcnZpZXdcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdC0zMC1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBpby1kcml2ZXIucnN0OjMxOlRoZSBEUElPIGRyaXZlciBpcyBib3VuZCB0byBEUElPIG9iamVjdHMgZGlzY292ZXJlZCBvbiB0aGUgZnNsLW1jIGJ1cyBhbmRcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBpby1kcml2ZXIucnN0LTMyLXByb3ZpZGVzIHNlcnZpY2VzIHRoYXQ6XG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGlvLWRyaXZlci5yc3Q9NDA9VGhlIExpbnV4IERQSU8gZHJpdmVyIGNvbnNpc3RzIG9mIDMgcHJpbWFyeSBjb21wb25lbnRzLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBpby1kcml2ZXIucnN0OjQxOiAgIERQSU8gb2JqZWN0IGRyaXZlci0tIGZzbC1tYyBkcml2ZXIgdGhhdCBtYW5hZ2VzIHRoZSBEUElPIG9iamVjdFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGlvLWRyaXZlci5yc3QtNDItXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGlvLWRyaXZlci5yc3QtNDYtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdDo0NzogICAgICAgICAgZnNsLW1jICAgICAgICAgIG90aGVyXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdC00OC0gICAgICAgICAgIGJ1cyAgICAgICAgICAgZHJpdmVyc1xuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBpby1kcml2ZXIucnN0PTY0PURQQUEyIExpbnV4IGRyaXZlciBjb21wb25lbnRzOjpcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdC04NS0gICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGlvLWRyaXZlci5yc3Q6ODY6ICAgICAgICAgIHwgL3NvYy9mc2wtbWMgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBpby1kcml2ZXIucnN0LTg3LSAgICAgICAgICAmIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOyAgICAgICAgICAgICAgICAgICAgIHxcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdD05OD1EUElPIE9iamVjdCBEcml2ZXIgKGRwaW8tZHJpdmVyLmMpXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGlvLWRyaXZlci5yc3QtMTAwLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGlvLWRyaXZlci5yc3Q6MTAxOiAgIFRoZSBkcGlvLWRyaXZlciBjb21wb25lbnQgcmVnaXN0ZXJzIHdpdGggdGhlIGZzbC1tYyBidXMgdG8gaGFuZGxlIG9iamVjdHMgb2ZcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBpby1kcml2ZXIucnN0LTEwMi0gICB0eXBlIFwmIzM0O2RwaW9cJiMzNDsuICBUaGUgaW1wbGVtZW50YXRpb24gb2YgcHJvYmUoKSBoYW5kbGVzIGJhc2ljIGluaXRpYWxpemF0aW9uXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9tYWMtcGh5LXN1cHBvcnQucnN0PTE2PURQQUEyIFNvZnR3YXJlIEFyY2hpdGVjdHVyZVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvbWFjLXBoeS1zdXBwb3J0LnJzdC0xOC1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvbWFjLXBoeS1zdXBwb3J0LnJzdDoxOTpBbW9uZyBvdGhlciBEUEFBMiBvYmplY3RzLCB0aGUgZnNsLW1jIGJ1cyBleHBvcnRzIERQTkkgb2JqZWN0cyAoYWJzdHJhY3RpbmcgYVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9tYWMtcGh5LXN1cHBvcnQucnN0LTIwLW5ldHdvcmsgaW50ZXJmYWNlKSBhbmQgRFBNQUMgb2JqZWN0cyAoYWJzdHJhY3RpbmcgYSBNQUMpLiBUaGUgZHBhYTItZXRoIGRyaXZlclxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvb3ZlcnZpZXcucnN0PTI4Nj1vZiBlYWNoIGRyaXZlciBmb2xsb3dzLlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvb3ZlcnZpZXcucnN0LTMwOS1cdCAgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfGRyaXZlcnxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvb3ZlcnZpZXcucnN0OjMxMDpcdCAgfCAgIC9idXMvZnNsLW1jICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgJiM0MzstLSYjNDM7LS0tJiM0MztcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvb3ZlcnZpZXcucnN0LTMxMS1cdCAgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzsgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8XG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9vdmVydmlldy5yc3Q9MzMxPUtleSBmdW5jdGlvbnMgaW5jbHVkZTpcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvb3ZlcnZpZXcucnN0LTMzMi1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvb3ZlcnZpZXcucnN0OjMzMzotIHJlZ2lzdGVyaW5nIGEgbmV3IGJ1cyB0eXBlIG5hbWVkIFwmIzM0O2ZzbC1tY1wmIzM0OyB3aXRoIHRoZSBrZXJuZWwsXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL292ZXJ2aWV3LnJzdC0zMzQtICBhbmQgaW1wbGVtZW50aW5nIGJ1cyBjYWxsLWJhY2tzIChlLmcuIG1hdGNoL3VldmVudC9kZXZfZ3JvdXBzKVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvb3ZlcnZpZXcucnN0PTM0Mz1UaGUgc3lzZnMgYmluZC91bmJpbmQgaW50ZXJmYWNlcyBmb3IgdGhlIE1DLWJ1cyBjYW4gYmUgY29uc3VsdGVkIGF0XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL292ZXJ2aWV3LnJzdDozNDQ6KkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWZzbC1tYyouXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL292ZXJ2aWV3LnJzdC0zNDUtXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9zd2l0Y2gtZHJpdmVyLnJzdD0zNT1DcmVhdGluZyBhbiBFdGhlcm5ldCBTd2l0Y2hcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL3N3aXRjaC1kcml2ZXIucnN0LTM3LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9zd2l0Y2gtZHJpdmVyLnJzdDozODpUaGUgZHBhYTItc3dpdGNoIGRyaXZlciBwcm9iZXMgb24gRFBTVyBkZXZpY2VzIGZvdW5kIG9uIHRoZSBmc2wtbWMgYnVzLiBUaGVzZVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9zd2l0Y2gtZHJpdmVyLnJzdC0zOS1kZXZpY2VzIGNhbiBiZSBlaXRoZXIgY3JlYXRlZCBzdGF0aWNhbGx5IHRocm91Z2ggdGhlIGJvb3QgdGltZSBjb25maWd1cmF0aW9uXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9zd2l0Y2gtZHJpdmVyLnJzdD0xMjA9QnJvYWRjYXN0IGZsb29kaW5nIG9uIGEgc3dpdGNoIHBvcnQgY2FuIGJlIGRpc2FibGVkL2VuYWJsZWQgdGhyb3VnaCB0aGUgYnJwb3J0IHN5c2ZzOjpcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvc3dpdGNoLWRyaXZlci5yc3QtMTIxLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9zd2l0Y2gtZHJpdmVyLnJzdDoxMjI6ICAgICAgICAkIGVjaG8gMCBcdTAwM2UgL3N5cy9idXMvZnNsLW1jL2RldmljZXMvZHBzdy5ZL25ldC9ldGhYL2JycG9ydC9icm9hZGNhc3RfZmxvb2RcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvc3dpdGNoLWRyaXZlci5yc3QtMTIzLVxuLS1cbk1BSU5UQUlORVJTPTIyMDUwPVM6XHRNYWludGFpbmVkXG5NQUlOVEFJTkVSUzoyMjA1MTpGOlx0RG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWJ1cy1mc2wtbWNcbk1BSU5UQUlORVJTLTIyMDUyLUY6XHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlzYy9mc2wscW9yaXEtbWMueWFtbFxuTUFJTlRBSU5FUlM9MjIwNTM9RjpcdERvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvb3ZlcnZpZXcucnN0XG5NQUlOVEFJTkVSUzoyMjA1NDpGOlx0ZHJpdmVycy9idXMvZnNsLW1jL1xuTUFJTlRBSU5FUlMtMjIwNTUtRjpcdGluY2x1ZGUvdWFwaS9saW51eC9mc2xfbWMuaFxuLS1cbk1BSU5UQUlORVJTPTI4MzUyPVM6XHRNYWludGFpbmVkXG5NQUlOVEFJTkVSUzoyODM1MzpGOlx0ZHJpdmVycy92ZmlvL2ZzbC1tYy9cbk1BSU5UQUlORVJTLTI4MzU0LVxuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwODhhLmR0c2k9OTYyPVx0XHRcdFx0XHQgICAgUU9SSVFfQ0xLX1BMTF9ESVYoMTYpXHUwMDNlLFxuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwODhhLmR0c2ktOTY3LVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTA4OGEuZHRzaTo5Njg6XHRcdGZzbF9tYzogZnNsLW1jQDgwYzAwMDAwMCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDg4YS5kdHNpLTk2OS1cdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7ZnNsLHFvcmlxLW1jXCYjMzQ7O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczIwOHhhLmR0c2k9NzUyPVx0XHRcdHBjczE2OiBldGhlcm5ldC1waHlAMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMjA4eGEuZHRzaS03NTYtXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMyMDh4YS5kdHNpOjc1NzpcdFx0ZnNsX21jOiBmc2wtbWNAODBjMDAwMDAwIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczIwOHhhLmR0c2ktNzU4LVx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtmc2wscW9yaXEtbWNcJiMzNDs7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWx4MjE2MGEuZHRzaT0xODc1PVx0XHRcdGdwaW8wXzNfMl9waW5zOiBpaWMxLWdwaW8tcGlucyB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWx4MjE2MGEuZHRzaS0xODc5LVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWx4MjE2MGEuZHRzaToxODgwOlx0XHRmc2xfbWM6IGZzbC1tY0A4MGMwMDAwMDAge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWx4MjE2MGEuZHRzaS0xODgxLVx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtmc2wscW9yaXEtbWNcJiMzNDs7XG4tLVxuZHJpdmVycy9idXMvS2NvbmZpZz0yNDI9Y29uZmlnIERBOFhYX01TVFBSSVxuLS1cbmRyaXZlcnMvYnVzL0tjb25maWctMjQ5LVxuZHJpdmVycy9idXMvS2NvbmZpZzoyNTA6c291cmNlIFwmIzM0O2RyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL2J1cy9LY29uZmlnLTI1MS1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9idXMvbWhpL0tjb25maWdcJiMzNDtcbi0tXG5kcml2ZXJzL2J1cy9NYWtlZmlsZT0xMT1vYmotJChDT05GSUdfTU9YVEVUKVx0XHQmIzQzOz0gbW94dGV0Lm9cbmRyaXZlcnMvYnVzL01ha2VmaWxlLTEyLVxuZHJpdmVycy9idXMvTWFrZWZpbGU6MTM6IyBEUEFBMiBmc2wtbWMgYnVzXG5kcml2ZXJzL2J1cy9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfRlNMX01DX0JVUylcdCYjNDM7PSBmc2wtbWMvXG5kcml2ZXJzL2J1cy9NYWtlZmlsZS0xNS1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZy0yLSNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnOjM6IyBEUEFBMiBmc2wtbWMgYnVzXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZy00LSNcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZz04PWNvbmZpZyBGU0xfTUNfQlVTXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZzo5Olx0Ym9vbCBcJiMzNDtRb3JJUSBEUEFBMiBmc2wtbWMgYnVzIGRyaXZlclwmIzM0O1xuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctMTAtXHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9MQVlFUlNDQVBFIHx8IChDT01QSUxFX1RFU1QgXHUwMDI2XHUwMDI2IChBUk0gfHwgQVJNNjQgfHwgWDg2X0xPQ0FMX0FQSUMgfHwgUFBDKSkpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctMTMtXHQgIERyaXZlciB0byBlbmFibGUgdGhlIGJ1cyBpbmZyYXN0cnVjdHVyZSBmb3IgdGhlIFFvcklRIERQQUEyXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZzoxNDpcdCAgYXJjaGl0ZWN0dXJlLiAgVGhlIGZzbC1tYyBidXMgZHJpdmVyIGhhbmRsZXMgZGlzY292ZXJ5IG9mXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZy0xNS1cdCAgRFBBQTIgb2JqZWN0cyAod2hpY2ggYXJlIHJlcHJlc2VudGVkIGFzIExpbnV4IGRldmljZXMpIGFuZFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZT03PW9iai0kKENPTkZJR19GU0xfTUNfQlVTKSAmIzQzOz0gbWMtYnVzLWRyaXZlci5vXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGUtOC1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZTo5Om1jLWJ1cy1kcml2ZXItb2JqcyA6PSBmc2wtbWMtYnVzLm8gXFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZS0xMC1cdFx0ICAgICAgbWMtc3lzLm8gXFxcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGUtMTUtXHRcdCAgICAgIGRwcmMtZHJpdmVyLm8gXFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZToxNjpcdFx0ICAgICAgZnNsLW1jLWFsbG9jYXRvci5vIFxcXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGU6MTc6XHRcdCAgICAgIGZzbC1tYy1tc2kubyBcXFxuZHJpdmVycy9idXMvZnNsLW1jL01ha2VmaWxlLTE4LVx0XHQgICAgICBkcG1jcC5vIFxcXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL01ha2VmaWxlLTIxLSMgTUMgdXNlcnNwYWNlIHN1cHBvcnRcbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZToyMjpvYmotJChDT05GSUdfRlNMX01DX1VBUElfU1VQUE9SVCkgJiM0Mzs9IGZzbC1tYy11YXBpLm9cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBicC5jLTgtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBicC5jOjk6I2luY2x1ZGUgXCYjMzQ7ZnNsLW1jLXByaXZhdGUuaFwmIzM0O1xuZHJpdmVycy9idXMvZnNsLW1jL2RwYnAuYy0xMC1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBjb24uYy04LVxuZHJpdmVycy9idXMvZnNsLW1jL2RwY29uLmM6OTojaW5jbHVkZSBcJiMzNDtmc2wtbWMtcHJpdmF0ZS5oXCYjMzQ7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBjb24uYy0xMC1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBtY3AuYy04LVxuZHJpdmVycy9idXMvZnNsLW1jL2RwbWNwLmM6OTojaW5jbHVkZSBcJiMzNDtmc2wtbWMtcHJpdmF0ZS5oXCYjMzQ7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBtY3AuYy0xMC1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjE2OiNpbmNsdWRlIFwmIzM0O2ZzbC1tYy1wcml2YXRlLmhcJiMzNDtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE3LVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTY4PXN0YXRpYyBpbnQgX19mc2xfbWNfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzktICpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjgwOiAqIEBtY19idXNfZGV2OiBwb2ludGVyIHRvIHRoZSBmc2wtbWMgZGV2aWNlIHRoYXQgcmVwcmVzZW50cyBhIERQUkMgb2JqZWN0XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy04MS0gKiBAb2JqX2Rlc2NfYXJyYXk6IGFycmF5IG9mIG9iamVjdCBkZXNjcmlwdG9ycyBmb3IgY2hpbGQgb2JqZWN0cyBjdXJyZW50bHlcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz0xMjM9c3RydWN0IGZzbF9tY19kZXZpY2UgKmZzbF9tY19kZXZpY2VfbG9va3VwKHN0cnVjdCBmc2xfbWNfb2JqX2Rlc2MgKm9ial9kZXNjLFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTEzNi0gKlxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTM3OiAqIEBtY19kZXY6IHBvaW50ZXIgdG8gdGhlIGZzbC1tYyBkZXZpY2UgZm9yIGEgZ2l2ZW4gTUMgb2JqZWN0XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xMzgtICogQG9ial9kZXNjOiBwb2ludGVyIHRvIHRoZSBNQyBvYmplY3QmIzM5O3MgZGVzY3JpcHRvciBpbiB0aGUgTUNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTEzOS0gKlxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTQwOiAqIElmIHRoZSBwbHVnZ2VkIHN0YXRlIGhhcyBjaGFuZ2VkIGZyb20gdW5wbHVnZ2VkIHRvIHBsdWdnZWQsIHRoZSBmc2wtbWNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE0MS0gKiBkZXZpY2UgaXMgYm91bmQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgZGV2aWNlIGRyaXZlci5cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjE0MjogKiBJZiB0aGUgcGx1Z2dlZCBzdGF0ZSBoYXMgY2hhbmdlZCBmcm9tIHBsdWdnZWQgdG8gdW5wbHVnZ2VkLCB0aGUgZnNsLW1jXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNDMtICogZGV2aWNlIGlzIHVuYm91bmQgZnJvbSB0aGUgY29ycmVzcG9uZGluZyBkZXZpY2UgZHJpdmVyLlxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTE2OT1zdGF0aWMgdm9pZCBmc2xfbWNfb2JqX2RldmljZV9hZGQoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTkyLSAqXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoxOTM6ICogQG1jX2J1c19kZXY6IHBvaW50ZXIgdG8gdGhlIGZzbC1tYyBkZXZpY2UgdGhhdCByZXByZXNlbnRzIGEgRFBSQyBvYmplY3RcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE5NC0gKiBAb2JqX2Rlc2NfYXJyYXk6IGFycmF5IG9mIGRldmljZSBkZXNjcmlwdG9ycyBmb3IgY2hpbGQgZGV2aWNlcyBjdXJyZW50bHlcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz0yMDI9c3RhdGljIHZvaWQgZHByY19hZGRfbmV3X2RldmljZXMoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMjI4LSAqXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoyMjk6ICogQG1jX2J1c19kZXY6IHBvaW50ZXIgdG8gdGhlIGZzbC1tYyBkZXZpY2UgdGhhdCByZXByZXNlbnRzIGEgRFBSQyBvYmplY3RcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTIzMC0gKiBAYWxsb2NfaW50ZXJydXB0czogaWYgdHJ1ZSB0aGUgZnVuY3Rpb24gYWxsb2NhdGVzIHRoZSBpbnRlcnJ1cHQgcG9vbCxcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz0yNDU9aW50IGRwcmNfc2Nhbl9vYmplY3RzKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2LFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTM1Ni0gKlxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MzU3OiAqIEBtY19idXNfZGV2OiBwb2ludGVyIHRvIHRoZSBmc2wtbWMgZGV2aWNlIHRoYXQgcmVwcmVzZW50cyBhIERQUkMgb2JqZWN0XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0zNTgtICogQGFsbG9jX2ludGVycnVwdHM6IGlmIHRydWUgdGhlIGZ1bmN0aW9uIGFsbG9jYXRlcyB0aGUgaW50ZXJydXB0IHBvb2wsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9NTcyPXN0YXRpYyBpbnQgZHByY19zZXR1cF9pcnEoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2Rldilcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy02MDEtICpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjYwMjogKiBAbWNfZGV2OiBQb2ludGVyIHRvIGZzbC1tYyBkZXZpY2UgcmVwcmVzZW50aW5nIGEgRFBSQ1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNjAzLSAqXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9NzExPUVYUE9SVF9TWU1CT0xfR1BMKGRwcmNfc2V0dXApO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTcxNS0gKlxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NzE2OiAqIEBtY19kZXY6IFBvaW50ZXIgdG8gZnNsLW1jIGRldmljZSByZXByZXNlbnRpbmcgYSBEUFJDXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03MTctICpcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz03NTg9c3RhdGljIHZvaWQgZHByY190ZWFyZG93bl9pcnEoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2Rldilcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03NzEtICpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjc3MjogKiBAbWNfZGV2OiBQb2ludGVyIHRvIGZzbC1tYyBkZXZpY2UgcmVwcmVzZW50aW5nIHRoZSBEUFJDXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03NzMtICpcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz04MTU9RVhQT1JUX1NZTUJPTF9HUEwoZHByY19jbGVhbnVwKTtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy04MTktICpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjgyMDogKiBAbWNfZGV2OiBQb2ludGVyIHRvIGZzbC1tYyBkZXZpY2UgcmVwcmVzZW50aW5nIHRoZSBEUFJDXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy04MjEtICpcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy5jLTktXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy5jOjEwOiNpbmNsdWRlIFwmIzM0O2ZzbC1tYy1wcml2YXRlLmhcJiMzNDtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLmMtMTEtXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yLS8qXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjM6ICogZnNsLW1jIG9iamVjdCBhbGxvY2F0b3IgZHJpdmVyXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTQtICpcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTEyLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzoxMzojaW5jbHVkZSBcJiMzNDtmc2wtbWMtcHJpdmF0ZS5oXCYjMzQ7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTE0LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz0xNT1zdGF0aWMgYm9vbCBfX211c3RfY2hlY2sgZnNsX21jX2lzX2FsbG9jYXRhYmxlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yMy0gKiBmc2xfbWNfcmVzb3VyY2VfcG9vbF9hZGRfZGV2aWNlIC0gYWRkIGFsbG9jYXRhYmxlIG9iamVjdCB0byBhIHJlc291cmNlXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI0OiAqIHBvb2wgb2YgYSBnaXZlbiBmc2wtbWMgYnVzXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTI1LSAqXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI2OiAqIEBtY19idXM6IHBvaW50ZXIgdG8gdGhlIGZzbC1tYyBidXNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjctICogQHBvb2xfdHlwZTogcG9vbCB0eXBlXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI4OiAqIEBtY19kZXY6IHBvaW50ZXIgdG8gYWxsb2NhdGFibGUgZnNsLW1jIGRldmljZVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yOS0gKi9cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9MzA9c3RhdGljIGludCBfX211c3RfY2hlY2sgZnNsX21jX3Jlc291cmNlX3Bvb2xfYWRkX2RldmljZShzdHJ1Y3QgZnNsX21jX2J1c1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtOTEtICpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6OTI6ICogQG1jX2RldjogcG9pbnRlciB0byBhbGxvY2F0YWJsZSBmc2wtbWMgZGV2aWNlXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTkzLSAqXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjk0OiAqIEl0IHBlcm1hbmVudGx5IHJlbW92ZXMgYW4gYWxsb2NhdGFibGUgZnNsLW1jIGRldmljZSBmcm9tIHRoZSByZXNvdXJjZVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy05NS0gKiBwb29sLiBJdCYjMzk7cyBhbiBlcnJvciBpZiB0aGUgZGV2aWNlIGlzIGluIHVzZS5cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTI1ND1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfcmVzb3VyY2VfZnJlZSk7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yNTYtLyoqXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI1NzogKiBmc2xfbWNfb2JqZWN0X2FsbG9jYXRlIC0gQWxsb2NhdGVzIGFuIGZzbC1tYyBvYmplY3Qgb2YgdGhlIGdpdmVuXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI1ODogKiBwb29sIHR5cGUgZnJvbSBhIGdpdmVuIGZzbC1tYyBidXMgaW5zdGFuY2VcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjU5LSAqXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI2MDogKiBAbWNfZGV2OiBmc2wtbWMgZGV2aWNlIHdoaWNoIGlzIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGVcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjYxLSAqIGFsbG9jYXRlZCBvYmplY3Rcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTMyMj1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfb2JqZWN0X2FsbG9jYXRlKTtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTMyNC0vKipcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MzI1OiAqIGZzbF9tY19vYmplY3RfZnJlZSAtIFJldHVybnMgYW4gZnNsLW1jIG9iamVjdCB0byB0aGUgcmVzb3VyY2VcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzI2LSAqIHBvb2wgd2hlcmUgaXQgY2FtZSBmcm9tLlxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzozMjc6ICogQG1jX2FkZXY6IFBvaW50ZXIgdG8gdGhlIGZzbC1tYyBkZXZpY2VcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzI4LSAqL1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9MzQzPUVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19vYmplY3RfZnJlZSk7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0zNTEtLypcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MzUyOiAqIEluaXRpYWxpemUgdGhlIGludGVycnVwdCBwb29sIGFzc29jaWF0ZWQgd2l0aCBhbiBmc2wtbWMgYnVzLlxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0zNTMtICogSXQgYWxsb2NhdGVzIGEgYmxvY2sgb2YgSVJRcyBmcm9tIHRoZSBHSUMtSVRTLlxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9NDExPUVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19wb3B1bGF0ZV9pcnFfcG9vbCk7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy00MTMtLypcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NDE0OiAqIFRlYXJkb3duIHRoZSBpbnRlcnJ1cHQgcG9vbCBhc3NvY2lhdGVkIHdpdGggYW4gZnNsLW1jIGJ1cy5cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDE1LSAqIEl0IGZyZWVzIHRoZSBJUlFzIHRoYXQgd2VyZSBhbGxvY2F0ZWQgdG8gdGhlIHBvb2wsIGJhY2sgdG8gdGhlIEdJQy1JVFMuXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz00Mzg9RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX2NsZWFudXBfaXJxX3Bvb2wpO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDQwLS8qXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjQ0MTogKiBBbGxvY2F0ZSB0aGUgSVJRcyByZXF1aXJlZCBieSBhIGdpdmVuIGZzbC1tYyBkZXZpY2UuXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTQ0Mi0gKi9cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTUwNj1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfYWxsb2NhdGVfaXJxcyk7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01MDgtLypcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NTA5OiAqIEZyZWVzIHRoZSBJUlFzIHRoYXQgd2VyZSBhbGxvY2F0ZWQgZm9yIGFuIGZzbC1tYyBkZXZpY2UuXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTUxMC0gKi9cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTU2Mj1zdGF0aWMgaW50IGZzbF9tY19hbGxvY2F0b3JfcHJvYmUoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2Rldilcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTU4NS1cdGRldl9kYmcoXHUwMDI2bWNfZGV2LVx1MDAzZWRldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NTg2Olx0XHRcJiMzNDtBbGxvY2F0YWJsZSBmc2wtbWMgZGV2aWNlIGJvdW5kIHRvIGZzbF9tY19hbGxvY2F0b3IgZHJpdmVyXCYjMzQ7KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNTg3LVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz01OTQ9c3RhdGljIHZvaWQgZnNsX21jX2FsbG9jYXRvcl9yZW1vdmUoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2Rldilcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTYwNC1cdGRldl9kYmcoXHUwMDI2bWNfZGV2LVx1MDAzZWRldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NjA1Olx0XHRcJiMzNDtBbGxvY2F0YWJsZSBmc2wtbWMgZGV2aWNlIHVuYm91bmQgZnJvbSBmc2xfbWNfYWxsb2NhdG9yIGRyaXZlclwmIzM0Oyk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTYwNi19XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMC1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTE6I2RlZmluZSBwcl9mbXQoZm10KSBcJiMzNDtmc2wtbWM6IFwmIzM0OyBmbXRcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTItXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yNS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MjY6I2luY2x1ZGUgXCYjMzQ7ZnNsLW1jLXByaXZhdGUuaFwmIzM0O1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yNy1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjgtLypcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6Mjk6ICogRGVmYXVsdCBETUEgbWFzayBmb3IgZGV2aWNlcyBvbiBhIGZzbC1tYyBidXNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzAtICovXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0zMz1zdGF0aWMgc3RydWN0IGZzbF9tY192ZXJzaW9uIG1jX3ZlcnNpb247XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0zNi0gKiBzdHJ1Y3QgZnNsX21jIC0gUHJpdmF0ZSBkYXRhIG9mIGEgXCYjMzQ7ZnNsLHFvcmlxLW1jXCYjMzQ7IHBsYXRmb3JtIGRldmljZVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzozNzogKiBAcm9vdF9tY19idXNfZGV2OiBmc2wtbWMgZGV2aWNlIHJlcHJlc2VudGluZyB0aGUgcm9vdCBEUFJDXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTM4LSAqIEBudW1fdHJhbnNsYXRpb25fcmFuZ2VzOiBudW1iZXIgb2YgZW50cmllcyBpbiBhZGRyX3RyYW5zbGF0aW9uX3Jhbmdlc1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9ODA9c3RhdGljIHBoeXNfYWRkcl90IG1jX3BvcnRhbF9iYXNlX3BoeXNfYWRkcjtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTgzLSAqIGZzbF9tY19idXNfbWF0Y2ggLSBkZXZpY2UgdG8gZHJpdmVyIG1hdGNoaW5nIGNhbGxiYWNrXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjg0OiAqIEBkZXY6IHRoZSBmc2wtbWMgZGV2aWNlIHRvIG1hdGNoIGFnYWluc3RcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODU6ICogQGRydjogdGhlIGRldmljZSBkcml2ZXIgdG8gc2VhcmNoIGZvciBtYXRjaGluZyBmc2wtbWMgb2JqZWN0IHR5cGVcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODYtICogc3RydWN0dXJlc1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MTM5PXN0YXRpYyBpbnQgZnNsX21jX2J1c191ZXZlbnQoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qga29ial91ZXZlbnRfZW52ICplbnYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xNDItXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjE0MzpcdGlmIChhZGRfdWV2ZW50X3ZhcihlbnYsIFwmIzM0O01PREFMSUFTPWZzbC1tYzp2JTA4WGQlc1wmIzM0OyxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTQ0LVx0XHRcdCAgIG1jX2Rldi1cdTAwM2VvYmpfZGVzYy52ZW5kb3IsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0yMTQ9c3RhdGljIHNzaXplX3QgbW9kYWxpYXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjE4LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoyMTk6XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0O2ZzbC1tYzp2JTA4WGQlc1xcblwmIzM0OywgbWNfZGV2LVx1MDAzZW9ial9kZXNjLnZlbmRvcixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjIwLVx0XHRcdG1jX2Rldi1cdTAwM2VvYmpfZGVzYy50eXBlKTtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTMyNj1jb25zdCBzdHJ1Y3QgYnVzX3R5cGUgZnNsX21jX2J1c190eXBlID0ge1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzozMjc6XHQubmFtZSA9IFwmIzM0O2ZzbC1tY1wmIzM0OyxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzI4LVx0LmRyaXZlcl9vdmVycmlkZSA9IHRydWUsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz00OTk9c3RhdGljIGludCBtY19nZXRfdmVyc2lvbihzdHJ1Y3QgZnNsX21jX2lvICptY19pbyxcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTUyOC0gKlxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo1Mjk6ICogUmV0dXJuOlx0bWMgdmVyc2lvbiB3aGVuIGNhbGxlZCBhZnRlciBmc2wtbWMtYnVzIHByb2JlOyBOVUxMIG90aGVyd2lzZS5cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNTMwLSAqL1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9NjMyPXN0YXRpYyBpbnQgZnNsX21jX2RldmljZV9nZXRfbW1pb19yZWdpb25zKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03MTAtXHRcdHJlZ2lvbnNbaV0uZW5kID0gcmVnaW9uc1tpXS5zdGFydCAmIzQzOyByZWdpb25fZGVzYy5zaXplIC0gMTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NzExOlx0XHRyZWdpb25zW2ldLm5hbWUgPSBcJiMzNDtmc2wtbWMgb2JqZWN0IE1NSU8gcmVnaW9uXCYjMzQ7O1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03MTItXHRcdHJlZ2lvbnNbaV0uZmxhZ3MgPSByZWdpb25fZGVzYy5mbGFncyBcdTAwMjYgSU9SRVNPVVJDRV9CSVRTO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9NzM3PXN0YXRpYyB2b2lkIGZzbF9tY19kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03NDktLypcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NzUwOiAqIEFkZCBhIG5ld2x5IGRpc2NvdmVyZWQgZnNsLW1jIGRldmljZSB0byBiZSB2aXNpYmxlIGluIExpbnV4XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc1MS0gKi9cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTg4Mj1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGZzbF9tY19uYjtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg4NC0vKipcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODg1OiAqIGZzbF9tY19kZXZpY2VfcmVtb3ZlIC0gUmVtb3ZlIGFuIGZzbC1tYyBkZXZpY2UgZnJvbSBiZWluZyB2aXNpYmxlIHRvXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg4Ni0gKiBMaW51eFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04ODctICpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODg4OiAqIEBtY19kZXY6IFBvaW50ZXIgdG8gYW4gZnNsLW1jIGRldmljZVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04ODktICovXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz05MDA9c3RydWN0IGZzbF9tY19kZXZpY2UgKmZzbF9tY19nZXRfZW5kcG9pbnQoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2Rldixcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTkzNi1cdCAqIGludGVycm9nYXRpbmcgdGhlIGZpcm13YXJlLiBUaGlzIGlzIHRoZSBjYXNlIHdoZW4gdGhlIGRldmljZSB3YXMgbm90XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjkzNzpcdCAqIHlldCBkaXNjb3ZlcmVkIGJ5IHRoZSBmc2wtbWMgYnVzLCB0aHVzIHRoZSBsb29rdXAgcmV0dXJuZWQgTlVMTC5cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtOTM4LVx0ICogRm9yY2UgYSByZXNjYW4gb2YgdGhlIGRldmljZXMgaW4gdGhpcyBjb250YWluZXIgYW5kIHJldHJ5IHRoZSBsb29rdXAuXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xMDA1PXN0YXRpYyBpbnQgZnNsX21jX2Zpcm13YXJlX2NoZWNrKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMDEzLVx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoxMDE0Olx0XHRcdFwmIzM0O2ZzbC1tYzogRFBMIHByb2Nlc3Npbmcgd2FzIG5vdCBzdGFydGVkLCBEUEFBMiB3aWxsIG5vdCB3b3JrIVxcblwmIzM0Oyk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMTUtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMjAtXHRcdGRldl9kYmcoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEwMjE6XHRcdFx0XCYjMzQ7ZnNsLW1jOiBEUEwgcHJvY2Vzc2luZyBpbiBwcm9ncmVzcywgZGVmZXIgcHJvYmVcXG5cJiMzNDspO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMDIyLVx0XHRyZXR1cm4gLUVQUk9CRV9ERUZFUjtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMjctXHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEwMjg6XHRcdFx0XCYjMzQ7ZnNsLW1jOiBNQyBib290IGNvbXBsZXRlZCB3aXRoIGVycm9yIDB4JXhcXG5cJiMzNDssIG1jcyk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMjktXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmMtMTUtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLW1zaS5jOjE2OiNpbmNsdWRlIFwmIzM0O2ZzbC1tYy1wcml2YXRlLmhcJiMzNDtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmMtMTctXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg9NTgyPXN0cnVjdCBmc2xfbWNfdWFwaSB7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmgtNTkxLSAqIHN0cnVjdCBmc2xfbWNfYnVzIC0gbG9naWNhbCBidXMgdGhhdCBjb3JyZXNwb25kcyB0byBhIHBoeXNpY2FsIERQUkNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oOjU5MjogKiBAbWNfZGV2OiBmc2wtbWMgZGV2aWNlIGZvciB0aGUgYnVzIGRldmljZSBpdHNlbGYuXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC01OTMtICogQHJlc291cmNlX3Bvb2xzOiBhcnJheSBvZiByZXNvdXJjZSBwb29scyAob25lIHBvb2wgcGVyIHJlc291cmNlIHR5cGUpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy11YXBpLmMtMTMtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXVhcGkuYzoxNDojaW5jbHVkZSBcJiMzNDtmc2wtbWMtcHJpdmF0ZS5oXCYjMzQ7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXVhcGkuYy0xNS1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvbWMtaW8uYy05LVxuZHJpdmVycy9idXMvZnNsLW1jL21jLWlvLmM6MTA6I2luY2x1ZGUgXCYjMzQ7ZnNsLW1jLXByaXZhdGUuaFwmIzM0O1xuZHJpdmVycy9idXMvZnNsLW1jL21jLWlvLmMtMTEtXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL21jLXN5cy5jLTE2LVxuZHJpdmVycy9idXMvZnNsLW1jL21jLXN5cy5jOjE3OiNpbmNsdWRlIFwmIzM0O2ZzbC1tYy1wcml2YXRlLmhcJiMzNDtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9tYy1zeXMuYy0xOC1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvb2JqLWFwaS5jLTgtXG5kcml2ZXJzL2J1cy9mc2wtbWMvb2JqLWFwaS5jOjk6I2luY2x1ZGUgXCYjMzQ7ZnNsLW1jLXByaXZhdGUuaFwmIzM0O1xuZHJpdmVycy9idXMvZnNsLW1jL29iai1hcGkuYy0xMC1cbi0tXG5kcml2ZXJzL2NyeXB0by9jYWFtL0tjb25maWc9MTc4PWNvbmZpZyBDUllQVE9fREVWX0ZTTF9EUEFBMl9DQUFNXG4tLVxuZHJpdmVycy9jcnlwdG8vY2FhbS9LY29uZmlnLTE5My1cdCAgSXQgaGFuZGxlcyBEUFNFQ0kgRFBBQTIgb2JqZWN0cyB0aGF0IHNpdCBvbiB0aGUgTWFuYWdlbWVudCBDb21wbGV4XG5kcml2ZXJzL2NyeXB0by9jYWFtL0tjb25maWc6MTk0Olx0ICAoTUMpIGZzbC1tYyBidXMuXG5kcml2ZXJzL2NyeXB0by9jYWFtL0tjb25maWctMTk1LVxuLS1cbmRyaXZlcnMvZG1hL2ZzbC1kcGFhMi1xZG1hL2RwYWEyLXFkbWEuYz0xNTI9ZHBhYTJfcWRtYV9wb3B1bGF0ZV9mZCh1MzIgZm9ybWF0LCBzdHJ1Y3QgZHBhYTJfcWRtYV9jb21wICpkcGFhMl9jb21wKVxuLS1cbmRyaXZlcnMvZG1hL2ZzbC1kcGFhMi1xZG1hL2RwYWEyLXFkbWEuYy0xNjMtXHQgKiBCeXBhc3MgbWVtb3J5IHRyYW5zbGF0aW9uLCBGcmFtZSBsaXN0IGZvcm1hdCwgc2hvcnQgbGVuZ3RoIGRpc2FibGVcbmRyaXZlcnMvZG1hL2ZzbC1kcGFhMi1xZG1hL2RwYWEyLXFkbWEuYzoxNjQ6XHQgKiB3ZSBuZWVkIHRvIGRpc2FibGUgQk1UIGlmIGZzbC1tYyB1c2UgaW92YSBhZGRyXG5kcml2ZXJzL2RtYS9mc2wtZHBhYTItcWRtYS9kcGFhMi1xZG1hLmMtMTY1LVx0ICovXG4tLVxuZHJpdmVycy9pb21tdS9pb21tdS5jPTE2ODU9RVhQT1JUX1NZTUJPTF9HUEwocGNpX2RldmljZV9ncm91cCk7XG5kcml2ZXJzL2lvbW11L2lvbW11LmMtMTY4Ni1cbmRyaXZlcnMvaW9tbXUvaW9tbXUuYzoxNjg3Oi8qIEdldCB0aGUgSU9NTVUgZ3JvdXAgZm9yIGRldmljZSBvbiBmc2wtbWMgYnVzICovXG5kcml2ZXJzL2lvbW11L2lvbW11LmMtMTY4OC1zdHJ1Y3QgaW9tbXVfZ3JvdXAgKmZzbF9tY19kZXZpY2VfZ3JvdXAoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvc29jL2ZzbC9kcGlvL01ha2VmaWxlLTUtXG5kcml2ZXJzL3NvYy9mc2wvZHBpby9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19GU0xfTUNfRFBJTykgJiM0Mzs9IGZzbC1tYy1kcGlvLm9cbmRyaXZlcnMvc29jL2ZzbC9kcGlvL01ha2VmaWxlLTctXG5kcml2ZXJzL3NvYy9mc2wvZHBpby9NYWtlZmlsZTo4OmZzbC1tYy1kcGlvLW9ianMgOj0gZHBpby5vIHFibWFuLXBvcnRhbC5vIGRwaW8tc2VydmljZS5vIGRwaW8tZHJpdmVyLm9cbi0tXG5kcml2ZXJzL3NvYy9mc2wvZHBpby9kcGlvLXNlcnZpY2UuYz0yMjY9aXJxcmV0dXJuX3QgZHBhYTJfaW9faXJxKHN0cnVjdCBkcGFhMl9pbyAqb2JqKVxuLS1cbmRyaXZlcnMvc29jL2ZzbC9kcGlvL2RwaW8tc2VydmljZS5jLTI0OS1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvc29jL2ZzbC9kcGlvL2RwaW8tc2VydmljZS5jOjI1MDpcdFx0XHRwcl9jcml0KFwmIzM0O2ZzbC1tYy1kcGlvOiBVbnJlY29nbmlzZWQvaWdub3JlZCBEUVJSIGVudHJ5XFxuXCYjMzQ7KTtcbmRyaXZlcnMvc29jL2ZzbC9kcGlvL2RwaW8tc2VydmljZS5jLTI1MS1cdFx0fVxuLS1cbmRyaXZlcnMvdmZpby9LY29uZmlnPTk1PXNvdXJjZSBcJiMzNDtkcml2ZXJzL3ZmaW8vbWRldi9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL3ZmaW8vS2NvbmZpZzo5Njpzb3VyY2UgXCYjMzQ7ZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy05Ny1zb3VyY2UgXCYjMzQ7ZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnXCYjMzQ7XG4tLVxuZHJpdmVycy92ZmlvL01ha2VmaWxlPTE2PW9iai0kKENPTkZJR19WRklPX01ERVYpICYjNDM7PSBtZGV2L1xuZHJpdmVycy92ZmlvL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19WRklPX0ZTTF9NQykgJiM0Mzs9IGZzbC1tYy9cbmRyaXZlcnMvdmZpby9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfVkZJT19DRFgpICYjNDM7PSBjZHgvXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnPTQ9Y29uZmlnIFZGSU9fRlNMX01DXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWc6NTpcdHRyaXN0YXRlIFwmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgUW9ySVEgRFBBQTIgZnNsLW1jIGJ1cyBkZXZpY2VzXCYjMzQ7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWctNi1cdHNlbGVjdCBFVkVOVEZEXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWctNy1cdGhlbHBcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTEzNQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDEyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIHZmaW9fZnNsX21jIERyaXZlciBmb3IgUW9ySVEgRFBBQTIgU29DcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYEZTTF9NQ19CVVNgIOKAkyB0aGF0JiMzOTtzIHRoZSBidXMgZHJpdmVyIGZvciB0aGUgTlhQL0ZyZWVzY2FsZSBRb3JJUSBEUEFBMiBTb0MgTWFuYWdlbWVudCBDb21wbGV4IGhhcmR3YXJlLiBSaWdodCwgZ290IGl0LiBOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBjYW4gYHZmaW9fZnNsX21jYCBiZSBwcm9iZWQgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgcHJlc2VudD8gVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nIGFuZCB3aGVyZSBJIGNhbiBwb3RlbnRpYWxseSBsZWFybiBzb21ldGhpbmcgdXNlZnVsIGZvciBteSBjdXJyZW50IHByb2plY3QuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwcm9iaW5nIHByb2Nlc3MgdG8gYW5zd2VyIHRoaXMuCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgY29kZS4gTGV0JiMzOTtzIHNlZSBob3cgYHZmaW9fZnNsX21jYCBwcm9iZXM7IHNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIGB2ZmlvX2ZzbF9tY19wcm9iZWAuIEFoYSwgaXQmIzM5O3MgbG9jYXRlZCBpbiBgZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jYC4gRXhjZWxsZW50LCB0aGF0JiMzOTtzIHRoZSBmaWxlIHRvIGZvY3VzIG9uLiBOb3cgSSBuZWVkIHRvIGNhcmVmdWxseSByZWFkIHRocm91Z2ggdGhlIGltcGxlbWVudGF0aW9uIG9mIGB2ZmlvX2ZzbF9tY19wcm9iZWAgaXRzZWxmLiBUaW1lIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA3MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTI1Olx0XG4gNTI2Olx0XHQvKiBkZXZpY2Vfc2V0IGlzIHJlbGVhc2VkIGJ5IHZmaW8gY29yZSBpZiBAaW5pdCBmYWlscyAqL1xuIDUyNzpcdFx0cmV0dXJuIHZmaW9fZnNsX21jX2luaXRfZGV2aWNlKHZkZXYpO1xuIDUyODpcdH1cbiA1Mjk6XHRcbiA1MzA6XHRzdGF0aWMgaW50IHZmaW9fZnNsX21jX3Byb2JlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXG4gNTMxOlx0e1xuIDUzMjpcdFx0c3RydWN0IHZmaW9fZnNsX21jX2RldmljZSAqdmRldjtcbiA1MzM6XHRcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNm1jX2Rldi1cdTAwM2VkZXY7XG4gNTM0Olx0XHRpbnQgcmV0O1xuIDUzNTpcdFxuIDUzNjpcdFx0dmRldiA9IHZmaW9fYWxsb2NfZGV2aWNlKHZmaW9fZnNsX21jX2RldmljZSwgdmRldiwgZGV2LFxuIDUzNzpcdFx0XHRcdFx0IFx1MDAyNnZmaW9fZnNsX21jX29wcyk7XG4gNTM4Olx0XHRpZiAoSVNfRVJSKHZkZXYpKVxuIDUzOTpcdFx0XHRyZXR1cm4gUFRSX0VSUih2ZGV2KTtcbiA1NDA6XHRcbiA1NDE6XHRcdHJldCA9IHZmaW9fcmVnaXN0ZXJfZ3JvdXBfZGV2KFx1MDAyNnZkZXYtXHUwMDNldmRldik7XG4gNTQyOlx0XHRpZiAocmV0KSB7XG4gNTQzOlx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtWRklPX0ZTTF9NQzogRmFpbGVkIHRvIGFkZCB0byB2ZmlvIGdyb3VwXFxuXCYjMzQ7KTtcbiA1NDQ6XHRcdFx0Z290byBvdXRfcHV0X3ZkZXY7XG4gNTQ1Olx0XHR9XG4gNTQ2Olx0XG4gNTQ3Olx0XHRyZXQgPSB2ZmlvX2ZzbF9tY19zY2FuX2NvbnRhaW5lcihtY19kZXYpO1xuIDU0ODpcdFx0aWYgKHJldClcbiA1NDk6XHRcdFx0Z290byBvdXRfZ3JvdXBfZGV2O1xuIDU1MDpcdFx0ZGV2X3NldF9kcnZkYXRhKGRldiwgdmRldik7XG4gNTUxOlx0XHRyZXR1cm4gMDtcbiA1NTI6XHRcbiA1NTM6XHRvdXRfZ3JvdXBfZGV2OlxuIDU1NDpcdFx0dmZpb191bnJlZ2lzdGVyX2dyb3VwX2RldihcdTAwMjZ2ZGV2LVx1MDAzZXZkZXYpO1xuIDU1NTpcdG91dF9wdXRfdmRldjpcbiA1NTY6XHRcdHZmaW9fcHV0X2RldmljZShcdTAwMjZ2ZGV2LVx1MDAzZXZkZXYpO1xuIDU1NzpcdFx0cmV0dXJuIHJldDtcbiA1NTg6XHR9XG4gNTU5Olx0XG4gNTYwOlx0c3RhdGljIHZvaWQgdmZpb19mc2xfbWNfcmVsZWFzZV9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4gNTYxOlx0e1xuIDU2MjpcdFx0c3RydWN0IHZmaW9fZnNsX21jX2RldmljZSAqdmRldiA9XG4gNTYzOlx0XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2ZzbF9tY19kZXZpY2UsIHZkZXYpO1xuIDU2NDpcdFxuIDU2NTpcdFx0dmZpb19mc2xfdW5pbml0X2RldmljZSh2ZGV2KTtcbiA1NjY6XHRcdG11dGV4X2Rlc3Ryb3koXHUwMDI2dmRldi1cdTAwM2VpZ2F0ZSk7XG4gNTY3Olx0fVxuIDU2ODpcdFxuIDU2OTpcdHN0YXRpYyB2b2lkIHZmaW9fZnNsX21jX3JlbW92ZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxuIDU3MDpcdHtcbiA1NzE6XHRcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNm1jX2Rldi1cdTAwM2VkZXY7XG4gNTcyOlx0XHRzdHJ1Y3QgdmZpb19mc2xfbWNfZGV2aWNlICp2ZGV2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG4gNTczOlx0XG4gNTc0Olx0XHR2ZmlvX3VucmVnaXN0ZXJfZ3JvdXBfZGV2KFx1MDAyNnZkZXYtXHUwMDNldmRldik7XG4gNTc1Olx0XHRkcHJjX3JlbW92ZV9kZXZpY2VzKG1jX2RldiwgTlVMTCwgMCk7XG4gNTc2Olx0XHR2ZmlvX3B1dF9kZXZpY2UoXHUwMDI2dmRldi1cdTAwM2V2ZGV2KTtcbiA1Nzc6XHR9XG4gNTc4Olx0XG4gNTc5Olx0c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19mc2xfbWNfb3BzID0ge1xuIDU4MDpcdFx0Lm5hbWVcdFx0PSBcJiMzNDt2ZmlvLWZzbC1tY1wmIzM0OyxcbiA1ODE6XHRcdC5pbml0XHRcdD0gdmZpb19mc2xfbWNfaW5pdF9kZXYsXG4gNTgyOlx0XHQucmVsZWFzZVx0PSB2ZmlvX2ZzbF9tY19yZWxlYXNlX2RldixcbiA1ODM6XHRcdC5vcGVuX2RldmljZVx0PSB2ZmlvX2ZzbF9tY19vcGVuX2RldmljZSxcbiA1ODQ6XHRcdC5jbG9zZV9kZXZpY2VcdD0gdmZpb19mc2xfbWNfY2xvc2VfZGV2aWNlLFxuIDU4NTpcdFx0LmlvY3RsXHRcdD0gdmZpb19mc2xfbWNfaW9jdGwsXG4gNTg2Olx0XHQuZ2V0X3JlZ2lvbl9pbmZvX2NhcHMgPSB2ZmlvX2ZzbF9tY19pb2N0bF9nZXRfcmVnaW9uX2luZm8sXG4gNTg3Olx0XHQucmVhZFx0XHQ9IHZmaW9fZnNsX21jX3JlYWQsXG4gNTg4Olx0XHQud3JpdGVcdFx0PSB2ZmlvX2ZzbF9tY193cml0ZSxcbiA1ODk6XHRcdC5tbWFwXHRcdD0gdmZpb19mc2xfbWNfbW1hcCxcbiA1OTA6XHRcdC5iaW5kX2lvbW11ZmRcdD0gdmZpb19pb21tdWZkX3BoeXNpY2FsX2JpbmQsXG4gNTkxOlx0XHQudW5iaW5kX2lvbW11ZmRcdD0gdmZpb19pb21tdWZkX3BoeXNpY2FsX3VuYmluZCxcbiA1OTI6XHRcdC5hdHRhY2hfaW9hc1x0PSB2ZmlvX2lvbW11ZmRfcGh5c2ljYWxfYXR0YWNoX2lvYXMsXG4gNTkzOlx0XHQuZGV0YWNoX2lvYXNcdD0gdmZpb19pb21tdWZkX3BoeXNpY2FsX2RldGFjaF9pb2FzLFxuIDU5NDpcdH07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2Nzk5CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKlZGSU8tRlNMIE1DIERldmljZSBQcm9iaW5nOiBBIERlZXBlciBEaXZlKioKCk9rYXksIHNvIGB2ZmlvX2ZzbF9tY19wcm9iZWAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgZ2V0cyBpbnZva2VkIHdoZW4gdGhlIHN5c3RlbSByZWNvZ25pemVzIHRoYXQgYSBgc3RydWN0IGZzbF9tY19kZXZpY2VgIGhhcyBwYWlyZWQgd2l0aCB0aGUgYHZmaW9fZnNsX21jX2RyaXZlcmAuIFRoYXQgbXVjaCBpcyBzdHJhaWdodGZvcndhcmQuIEJ1dCB0aGUgcmVhbCBxdWVzdGlvbiBpczogKndoZXJlKiBhcmUgdGhlc2UgYHN0cnVjdCBmc2xfbWNfZGV2aWNlYCBpbnN0YW5jZXMgYWN0dWFsbHkgYmVpbmcgaW5zdGFudGlhdGVkIGFuZCByZWdpc3RlcmVkIHdpdGhpbiB0aGUga2VybmVsPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGV2aWNlIGNyZWF0aW9uIGxpZmVjeWNsZS4KClRoZSBzdGFuZGFyZCBhcHByb2FjaCB0byB0cmFjayBkb3duIHRoZSBhbnN3ZXIgaXMgdG8gc2VlIHdoZXJlIGBmc2xfbWNfZGV2aWNlX2FkZGAgZ2V0cyBjYWxsZWQuIFRoaXMgc2hvdWxkIGxlYWQgbWUgdG8gdGhlIHJlbGV2YW50IGluaXRpYWxpemF0aW9uIGNvZGUsIGFuZCB0aGUgY3JlYXRpb24gb2YgdGhvc2UgY3JpdGljYWwgYHN0cnVjdCBmc2xfbWNfZGV2aWNlYCBzdHJ1Y3R1cmVzLiBMZXQmIzM5O3MgdHJhY2UgdGhvc2UgZnVuY3Rpb24gY2FsbHMgYW5kIHdvcmsgZnJvbSB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZnNsX21jX2RldmljZV9hZGQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9MTY5PXN0YXRpYyB2b2lkIGZzbF9tY19vYmpfZGV2aWNlX2FkZChzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2Rldixcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xODItXHR9IGVsc2Uge1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTgzOlx0XHRlcnJvciA9IGZzbF9tY19kZXZpY2VfYWRkKG9ial9kZXNjLCBOVUxMLCBcdTAwMjZtY19idXNfZGV2LVx1MDAzZWRldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE4NC1cdFx0XHRcdFx0ICBcdTAwMjZjaGlsZF9kZXYpO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9NzM3PXN0YXRpYyB2b2lkIGZzbF9tY19kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03NTEtICovXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjc1MjppbnQgZnNsX21jX2RldmljZV9hZGQoc3RydWN0IGZzbF9tY19vYmpfZGVzYyAqb2JqX2Rlc2MsXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc1My1cdFx0ICAgICAgc3RydWN0IGZzbF9tY19pbyAqbWNfaW8sXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04NzktfVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo4ODA6RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX2RldmljZV9hZGQpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04ODEtXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xMDM5PXN0YXRpYyBpbnQgZnNsX21jX2J1c19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTE1Ny1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTE1ODpcdGVycm9yID0gZnNsX21jX2RldmljZV9hZGQoXHUwMDI2b2JqX2Rlc2MsIG1jX2lvLCBcdTAwMjZwZGV2LVx1MDAzZWRldiwgXHUwMDI2bWNfYnVzX2Rldik7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTExNTktXHRpZiAoZXJyb3IgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg9NjAxPXN0cnVjdCBmc2xfbWNfYnVzIHtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC02MTMtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaDo2MTQ6aW50IF9fbXVzdF9jaGVjayBmc2xfbWNfZGV2aWNlX2FkZChzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmpfZGVzYyxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTYxNS1cdFx0XHRcdCAgIHN0cnVjdCBmc2xfbWNfaW8gKm1jX2lvLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzgwNAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBpbmZvcm1hdGlvbiwgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czoKCioqRGlzc2VjdGluZyB0aGUgZnNsX21jX2J1c19wcm9iZSBGdW5jdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYGZzbF9tY19idXNfcHJvYmVgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uICp3aGVyZSogaXQmIzM5O3MgY2FsbGVkIGFuZCAqd2h5Ki4gSXQgbG9va3MgbGlrZSB0aGUgcGxhdGZvcm0gZHJpdmVyIGBmc2xfbWNfYnVzX2RyaXZlcmAgaXMgdGhlIGtleS4gUmlnaHQsIGl0JiMzOTtzIG1hdGNoaW5nIGVpdGhlciB0aGUgYG9mX2RldmljZV9pZGAgc3RyaW5nICYjMzQ7ZnNsLHFvcmlxLW1jJiMzNDsgKGEgdHlwaWNhbCBEZXZpY2UgVHJlZSBtYXRjaCkgb3IgdGhlIGBhY3BpX2RldmljZV9pZGAgc3RyaW5nICYjMzQ7TlhQMDAwOCYjMzQ7IChmb3IgQUNQSS1iYXNlZCBzeXN0ZW1zKS4gRXhjZWxsZW50LCB0aGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoZSBzY29wZSBvZiBkZXZpY2VzIGl0JiMzOTtzIG1lYW50IHRvIGhhbmRsZS4KCk5vdywgbGV0JiMzOTtzIHN0ZXAgdGhyb3VnaCB0aGUgcHJvYmUgZnVuY3Rpb24gaXRzZWxmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCB0aGUgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUuIFdoYXQmIzM5O3MgaXQgZG9pbmcgd2l0aCB0aG9zZSBtYXRjaGVkIGRldmljZXM/IFdoZXJlIGRvZXMgaXQgZ28gZnJvbSBoZXJlPyBUaGUgcmVhbCB3b3JrIGhhcHBlbnMgaW5zaWRlIG9mIGBmc2xfbWNfYnVzX3Byb2JlYCBpdHNlbGYuIFRpbWUgdG8gZGlnIGluIGFuZCBvYnNlcnZlIHdoYXQgb2NjdXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDM5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEwMzk6XHRzdGF0aWMgaW50IGZzbF9tY19idXNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbjEwNDA6XHR7XG4xMDQxOlx0XHRzdHJ1Y3QgZnNsX21jX29ial9kZXNjIG9ial9kZXNjO1xuMTA0MjpcdFx0aW50IGVycm9yO1xuMTA0MzpcdFx0c3RydWN0IGZzbF9tYyAqbWM7XG4xMDQ0Olx0XHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldiA9IE5VTEw7XG4xMDQ1Olx0XHRzdHJ1Y3QgZnNsX21jX2lvICptY19pbyA9IE5VTEw7XG4xMDQ2Olx0XHRpbnQgY29udGFpbmVyX2lkO1xuMTA0NzpcdFx0cGh5c19hZGRyX3QgbWNfcG9ydGFsX3BoeXNfYWRkcjtcbjEwNDg6XHRcdHUzMiBtY19wb3J0YWxfc2l6ZSwgbWNfc3RyZWFtX2lkO1xuMTA0OTpcdFx0c3RydWN0IHJlc291cmNlICpwbGF0X3JlcztcbjEwNTA6XHRcbjEwNTE6XHRcdG1jID0gZGV2bV9remFsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBzaXplb2YoKm1jKSwgR0ZQX0tFUk5FTCk7XG4xMDUyOlx0XHRpZiAoIW1jKVxuMTA1MzpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbjEwNTQ6XHRcbjEwNTU6XHRcdHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIG1jKTtcbjEwNTY6XHRcbjEwNTc6XHRcdHBsYXRfcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAxKTtcbjEwNTg6XHRcdGlmIChwbGF0X3Jlcykge1xuMTA1OTpcdFx0XHRtYy1cdTAwM2Vmc2xfbWNfcmVncyA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9yZXMpO1xuMTA2MDpcdFx0XHRpZiAoSVNfRVJSKG1jLVx1MDAzZWZzbF9tY19yZWdzKSlcbjEwNjE6XHRcdFx0XHRyZXR1cm4gUFRSX0VSUihtYy1cdTAwM2Vmc2xfbWNfcmVncyk7XG4xMDYyOlx0XHR9XG4xMDYzOlx0XG4xMDY0Olx0XHRpZiAobWMtXHUwMDNlZnNsX21jX3JlZ3MpIHtcbjEwNjU6XHRcdFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0FDUEkpIFx1MDAyNlx1MDAyNiAhZGV2X29mX25vZGUoXHUwMDI2cGRldi1cdTAwM2VkZXYpKSB7XG4xMDY2Olx0XHRcdFx0bWNfc3RyZWFtX2lkID0gcmVhZGwobWMtXHUwMDNlZnNsX21jX3JlZ3MgJiM0MzsgRlNMX01DX0ZBUFIpO1xuMTA2NzpcdFx0XHRcdC8qXG4xMDY4Olx0XHRcdFx0ICogSFcgT1JzIHRoZSBQTCBhbmQgQk1UIGJpdCwgcGxhY2VzIHRoZSByZXN1bHQgaW4gYml0XG4xMDY5Olx0XHRcdFx0ICogMTQgb2YgdGhlIFN0cmVhbUlEIGFuZCBPUnMgaW4gdGhlIElDSUQuIENhbGN1bGF0ZSBpdFxuMTA3MDpcdFx0XHRcdCAqIGFjY29yZGluZ2x5LlxuMTA3MTpcdFx0XHRcdCAqL1xuMTA3MjpcdFx0XHRcdG1jX3N0cmVhbV9pZCA9IChtY19zdHJlYW1faWQgXHUwMDI2IDB4ZmZmZikgfFxuMTA3MzpcdFx0XHRcdFx0KChtY19zdHJlYW1faWQgXHUwMDI2IChNQ19GQVBSX1BMIHwgTUNfRkFQUl9CTVQpKSA/XG4xMDc0Olx0XHRcdFx0XHRcdEJJVCgxNCkgOiAwKTtcbjEwNzU6XHRcdFx0XHRlcnJvciA9IGFjcGlfZG1hX2NvbmZpZ3VyZV9pZChcdTAwMjZwZGV2LVx1MDAzZWRldixcbjEwNzY6XHRcdFx0XHRcdFx0XHQgICAgICBERVZfRE1BX0NPSEVSRU5ULFxuMTA3NzpcdFx0XHRcdFx0XHRcdCAgICAgIFx1MDAyNm1jX3N0cmVhbV9pZCk7XG4xMDc4Olx0XHRcdFx0aWYgKGVycm9yID09IC1FUFJPQkVfREVGRVIpXG4xMDc5Olx0XHRcdFx0XHRyZXR1cm4gZXJyb3I7XG4xMDgwOlx0XHRcdFx0aWYgKGVycm9yKVxuMTA4MTpcdFx0XHRcdFx0ZGV2X3dhcm4oXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4xMDgyOlx0XHRcdFx0XHRcdCBcJiMzNDtmYWlsZWQgdG8gY29uZmlndXJlIGRtYTogJWQuXFxuXCYjMzQ7LFxuMTA4MzpcdFx0XHRcdFx0XHQgZXJyb3IpO1xuMTA4NDpcdFx0XHR9XG4xMDg1Olx0XG4xMDg2Olx0XHRcdC8qXG4xMDg3Olx0XHRcdCAqIFNvbWUgYm9vdGxvYWRlcnMgcGF1c2UgdGhlIE1DIGZpcm13YXJlIGJlZm9yZSBib290aW5nIHRoZVxuMTA4ODpcdFx0XHQgKiBrZXJuZWwgc28gdGhhdCBNQyB3aWxsIG5vdCBjYXVzZSBmYXVsdHMgYXMgc29vbiBhcyB0aGVcbjEwODk6XHRcdFx0ICogU01NVSBwcm9iZXMgZHVlIHRvIHRoZSBmYWN0IHRoYXQgdGhlcmUmIzM5O3Mgbm8gY29uZmlndXJhdGlvblxuMTA5MDpcdFx0XHQgKiBpbiBwbGFjZSBmb3IgTUMuXG4xMDkxOlx0XHRcdCAqIEF0IHRoaXMgcG9pbnQgTUMgc2hvdWxkIGhhdmUgYWxsIGl0cyBTTU1VIHNldHVwIGRvbmUgc28gbWFrZVxuMTA5MjpcdFx0XHQgKiBzdXJlIGl0IGlzIHJlc3VtZWQuXG4xMDkzOlx0XHRcdCAqL1xuMTA5NDpcdFx0XHR3cml0ZWwocmVhZGwobWMtXHUwMDNlZnNsX21jX3JlZ3MgJiM0MzsgRlNMX01DX0dDUjEpIFx1MDAyNlxuMTA5NTpcdFx0XHRcdCAgICAgKH4oR0NSMV9QMV9TVE9QIHwgR0NSMV9QMl9TVE9QKSksXG4xMDk2Olx0XHRcdCAgICAgICBtYy1cdTAwM2Vmc2xfbWNfcmVncyAmIzQzOyBGU0xfTUNfR0NSMSk7XG4xMDk3Olx0XHR9XG4xMDk4Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MjI3CgkJCQkJCQlvdXRwdXQ6IDEzNwoJCQkJCQkJdGhvdWdodHM6IDkxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbmZ1enphYmxlIENvZGUgUGF0aCBEZXRlY3RlZDogdmZpb19mc2xfbWMgRHJpdmVyIG9uIGFtZDY0KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGFuYWx5c2lzIHRlbGxzIG1lIHRoYXQgdGhlIGNvZGUgYmVpbmcgbW9kaWZpZWQsIHNwZWNpZmljYWxseSB3aXRoaW4gYGRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuY2AsIGlzIGZ1bmRhbWVudGFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuIFRoZSBwYXRjaCB0b3VjaGVzIGB2ZmlvX2ZzbF9tY19tbWFwKClgIHdoaWNoIGlzIHBhcnQgb2YgdGhlIFZGSU8gZHJpdmVyIGZvciB0aGUgRnJlZXNjYWxlIE1hbmFnZW1lbnQgQ29tcGxleCAoZnNsLW1jKSBidXMuIFRoaXMgYGZzbC1tY2AgZHJpdmVyIGRpcmVjdGx5IGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSwgcmVhZGluZyBhbmQgd3JpdGluZyB0byByZWdpc3RlcnMgYW5kIGNvbW11bmljYXRpbmcgd2l0aCB0aGUgTWFuYWdlbWVudCBDb21wbGV4LiBUaGUgaXNzdWUgaXMgdGhpczogdGhpcyBoYXJkd2FyZSBpcyB2ZW5kb3Itc3BlY2lmaWMsIG9ubHkgcHJlc2VudCBvbiBOWFAgTGF5ZXJzY2FwZSBTb0NzLgoKTm93LCBjb25zaWRlciB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZTogYGFtZDY0YC4gT24gYGFtZDY0YCwgdGhlcmUgaXMgbm8gd2F5IGZvciBRRU1VIG9yIGFueSBzdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudCAobGlrZSBHQ0UpIHRvIGVtdWxhdGUgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZS4gRXZlbiBvbiBBUk02NCwgdGhlIGVtdWxhdGlvbiBpc24mIzM5O3QgcHJlc2VudCwgYW5kIG9uIGBhbWQ2NGAsIHRoZSByZWxldmFudCBhcmNoaXRlY3R1cmUgY29uZmlndXJhdGlvbiAoYEFSQ0hfTEFZRVJTQ0FQRWApIGlzIG5vdCBldmVuIGF2YWlsYWJsZSB1bmxlc3Mgc3BlY2lmaWNhbGx5IGNvbXBpbGVkIGZvciBhIHRlc3Qgc2NlbmFyaW8gKGBDT01QSUxFX1RFU1RgKSwgZXZlbiB0aGVuLCB0aGlzIGhhcmR3YXJlIGRvZXMgbm90IGV4aXN0IGluIHRoZXNlIGVudmlyb25tZW50cy4gCgpMb29raW5nIGF0IHRoZSBOZWdhdGl2ZSBDcml0ZXJpYSBpbiBzZWN0aW9uIDIsIHRoaXMgY2xlYXJseSBmYWxscyB1bmRlciAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGFzIGl0IGRlYWxzIHdpdGggYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgY29tcG9uZW50IG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBGdXJ0aGVybW9yZSwgJiMzNDtSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURSYjMzQ7LCBhbmQgc2luY2UgdGhpcyBjb2RlIGNhbm5vdCBiZSBleGVjdXRlZCBpbiBzdGFuZGFyZCBlbnZpcm9ubWVudHMsIGZ1enppbmcgaXMgcG9pbnRsZXNzLgoKVGhlIGRpZmYgY29uZmlybXMgdGhhdCB0aGUgcGF0Y2ggb25seSB0b3VjaGVzIGB2ZmlvX2ZzbF9tYy5jYC4gVGhlIGNoYW5nZSB3aXRoaW4gYHZmaW9fZnNsX21jX21tYXAoKWAgaXMgZm9jdXNlZCBvbiBtZW1vcnkgcHJvdGVjdGlvbiBmbGFncy4gSG93ZXZlciwgaXRzIGV4ZWN1dGlvbiBpcyBjb250aW5nZW50IG9uIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLCB3aGljaCBpcyBpbmFjY2Vzc2libGUgaW4gb3VyIGZ1enppbmcgZW52aXJvbm1lbnQuCgpUaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMgb24gYW1kNjQuIAoKVGhlIGBzZXQtcmVzdWx0c2Agd2lsbCBuZWVkIHRoZXNlIHZhbHVlczoKLSAgIGBXb3J0aEZ1enppbmdgOiBmYWxzZQotICAgYEZvY3VzU3ltYm9sc2A6IFtdIChvciBudWxsL2VtcHR5KQotICAgYEVuYWJsZUNvbmZpZ3NgOiBbXSAob3IgbnVsbC9lbXB0eSkKLSAgIGBSZWFzb25pbmdgOiBDb25jaXNlIGV4cGxhbmF0aW9uIG9mIHdoeSBpdCBpcyBub3Qgd29ydGggZnV6emluZy4KICAgIDEuICBUaGUgcGF0Y2ggbW9kaWZpZXMgYHZmaW9fZnNsX21jX21tYXAoKWAgaW4gYGRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuY2AuCiAgICAyLiAgVGhpcyBkcml2ZXIgcHJvdmlkZXMgVkZJTyBzdXBwb3J0IGZvciBOWFAvRnJlZXNjYWxlIFFvcklRIERQQUEyIE1hbmFnZW1lbnQgQ29tcGxleCAoYGZzbC1tY2ApIGJ1cyBkZXZpY2VzIGZvdW5kIG9uIExheWVyc2NhcGUgU29Dcy4KICAgIDMuICBJdCByZXF1aXJlcyBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgKEZyZWVzY2FsZSBNQyBhcmNoaXRlY3R1cmUpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cywgYW5kIGlzIHBhcnRpY3VsYXJseSB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYGFtZDY0YCkuCiAgICA0LiAgU2luY2UgdGhlIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLCBmdXp6aW5nIGNhbm5vdCBleGVjdXRlIHRoaXMgY29kZSBwYXRoLgoKQWxyaWdodCwgdGhhdCYjMzk7cyBteSBjYWxsLiBMZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB2ZmlvX2ZzbF9tY19tbWFwYCBpbiBgZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jYCwgd2hpY2ggcHJvdmlkZXMgVkZJTyBzdXBwb3J0IGZvciBOWFAvRnJlZXNjYWxlIFFvcklRIERQQUEyIE1hbmFnZW1lbnQgQ29tcGxleCAoZnNsLW1jKSBidXMgZGV2aWNlcy4gVGhpcyByZXF1aXJlcyBwaHlzaWNhbCBOWFAgTGF5ZXJzY2FwZSBTb0MgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIHRoZSB0YXJnZXQgYW1kNjQgYXJjaGl0ZWN0dXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHZmaW9fZnNsX21jX21tYXBgIGluIGBkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNgLCB3aGljaCBwcm92aWRlcyBWRklPIHN1cHBvcnQgZm9yIE5YUC9GcmVlc2NhbGUgUW9ySVEgRFBBQTIgTWFuYWdlbWVudCBDb21wbGV4IChmc2wtbWMpIGJ1cyBkZXZpY2VzLiBUaGlzIHJlcXVpcmVzIHBoeXNpY2FsIE5YUCBMYXllcnNjYXBlIFNvQyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gdGhlIHRhcmdldCBhbWQ2NCBhcmNoaXRlY3R1cmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MTk6NTcuNzM0NDYzNDQ4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM2OTg1MzgzODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgdmZpb19mc2xfbWNfbW1hcGAgaW4gYGRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuY2AsIHdoaWNoIHByb3ZpZGVzIFZGSU8gc3VwcG9ydCBmb3IgTlhQL0ZyZWVzY2FsZSBRb3JJUSBEUEFBMiBNYW5hZ2VtZW50IENvbXBsZXggKGZzbC1tYykgYnVzIGRldmljZXMuIFRoaXMgcmVxdWlyZXMgcGh5c2ljYWwgTlhQIExheWVyc2NhcGUgU29DIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFtZDY0IGFyY2hpdGVjdHVyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjE5OjU3LjczNDQ3MDgzOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAwMjc5NzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjAwMzRjOTc0YTk0MWMxOWNmN2IyMDNkNjdiYmI0NmRjMTg2ODI1ZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIFNlcCA0IDA4OjE5OjU3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYyBiL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuY1xcbmluZGV4IGI0YzM5NTgyMDFiMjUuLjg1ZjQ3OWRiOTM2YzYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXFxuKysrIGIvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXFxuQEAgLTQwNyw2ICs0MDcsMTAgQEAgc3RhdGljIGludCB2ZmlvX2ZzbF9tY19tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxcbiBcXHRcXHRcXHRcXHUwMDI2XFx1MDAyNiAodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX1dSSVRFKSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbitcXHQvKiBQcmV2ZW50IHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgZnJvbSBiZWluZyB1cGdyYWRlZCB3aXRoIG1wcm90ZWN0KCkgKi9cXG4rXFx0aWYgKCEodmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpKVxcbitcXHRcXHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcXG4rXFxuIFxcdHZtYS1cXHUwMDNldm1fcHJpdmF0ZV9kYXRhID0gbWNfZGV2O1xcbiBcXG4gXFx0cmV0dXJuIHZmaW9fZnNsX21jX21tYXBfbW1pbyh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XSwgdm1hKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MTk6NTguMjM1NTc1ODIxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo1MzE5NzQxMjg2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHZmaW9fZnNsX21jX21tYXBgIGluIGBkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNgLCB3aGljaCBwcm92aWRlcyBWRklPIHN1cHBvcnQgZm9yIE5YUC9GcmVlc2NhbGUgUW9ySVEgRFBBQTIgTWFuYWdlbWVudCBDb21wbGV4IChmc2wtbWMpIGJ1cyBkZXZpY2VzLiBUaGlzIHJlcXVpcmVzIHBoeXNpY2FsIE5YUCBMYXllcnNjYXBlIFNvQyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gdGhlIHRhcmdldCBhbWQ2NCBhcmNoaXRlY3R1cmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGIwMDM0Yzk3NGE5NDFjMTljZjdiMjAzZDY3YmJiNDZkYzE4NjgyNWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCA0IDA4OjE5OjU3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jIGIvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXG5pbmRleCBiNGMzOTU4MjAxYjI1Li44NWY0NzlkYjkzNmM2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXG4rKysgYi9kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNcbkBAIC00MDcsNiArNDA3LDEwIEBAIHN0YXRpYyBpbnQgdmZpb19mc2xfbWNfbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcbiBcdFx0XHRcdTAwMjZcdTAwMjYgKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgVk1fV1JJVEUpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbitcdC8qIFByZXZlbnQgcmVhZC1vbmx5IHJlZ2lvbiBtYXBwaW5ncyBmcm9tIGJlaW5nIHVwZ3JhZGVkIHdpdGggbXByb3RlY3QoKSAqL1xuK1x0aWYgKCEodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFKSlcbitcdFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XG4rXG4gXHR2bWEtXHUwMDNldm1fcHJpdmF0ZV9kYXRhID0gbWNfZGV2O1xuIFxuIFx0cmV0dXJuIHZmaW9fZnNsX21jX21tYXBfbW1pbyh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLCB2bWEpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MTk6NTguMjM1NTc3NTAxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTk4Njg0ODQ3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGB2ZmlvX2ZzbF9tY2AgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gVGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB1bmRlcnN0YW5kIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIG9yIGhhcmR3YXJlIHRoaXMgaXMgdGllZCB0by4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBzb21ldGhpbmcgc3BlY2lmaWMgdG8gRnJlZXNjYWxlIE1hbmFnZW1lbnQgQ29tcGxleCAoRk1DKSBoYXJkd2FyZSwgb3IgaWYgaXQgaGFzIHNvbWUgYnJvYWRlciBpbXBsaWNhdGlvbnMuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgcmVsYXRlZCBidWlsZCBjb25maWd1cmF0aW9uLlxuXG5JJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGVpdGhlciB0aGUgYEtjb25maWdgIG9yIHRoZSBgTWFrZWZpbGVgIGluIHRoZSBzYW1lIGRpcmVjdG9yeSwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL3ZmaW8vZnNsLW1jL2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbmRpdGlvbmFsIGJ1aWxkIGxvZ2ljLCB3aGljaCBpcyBjcnVjaWFsLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGNvZGUgaXMgZXZlbiAqcmVhY2hhYmxlKiBvbiBhbWQ2NCwgb3IgaWYgaXQncyBzdHJpY3RseSBhIGRlZGljYXRlZCBoYXJkd2FyZSByZXF1aXJlbWVudC4gSXQncyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhpcyBiZWZvcmUgSSBnbyBhbnkgZnVydGhlci5cblxuVG8gcXVpY2tseSBnZXQgYSBmZWVsIGZvciBob3cgYHZmaW9fZnNsX21jYCBpcyBjb25maWd1cmVkLCBJIHNob3VsZCBiZSBhYmxlIHRvIGdyZXAgZm9yIGFueSBLY29uZmlnIG9wdGlvbnMgdGhhdCBtaWdodCBiZSByZWxhdGVkLiBUaGlzIHNob3VsZCBxdWlja2x5IGhpZ2hsaWdodCB3aGljaCBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3IgZGVwZW5kZW5jaWVzIGFjdGl2YXRlIHRoaXMgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk2MSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjIwOjA0LjIyMjQyOTA3OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mzg2MzM2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJWRklPX0ZTTF9NQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL01ha2VmaWxlPTE2PW9iai0kKENPTkZJR19WRklPX01ERVYpICs9IG1kZXYvXFxuZHJpdmVycy92ZmlvL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19WRklPX0ZTTF9NQykgKz0gZnNsLW1jL1xcbmRyaXZlcnMvdmZpby9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfVkZJT19DRFgpICs9IGNkeC9cXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZz0xPW1lbnUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgRlNMX01DIGJ1cyBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnLTMtXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnOjQ6Y29uZmlnIFZGSU9fRlNMX01DXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnLTUtXFx0dHJpc3RhdGUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgUW9ySVEgRFBBQTIgZnNsLW1jIGJ1cyBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy9NYWtlZmlsZT0zPXZmaW8tZnNsLW1jLXkgOj0gdmZpb19mc2xfbWMubyB2ZmlvX2ZzbF9tY19pbnRyLm9cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX1ZGSU9fRlNMX01DKSArPSB2ZmlvLWZzbC1tYy5vXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9OTc9c3RhdGljIHZvaWQgdmZpb19mc2xfbWNfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTExMi1cXHRcXHRkZXZfd2FybihcXHUwMDI2bWNfY29udC1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzoxMTM6XFx0XFx0XFx0IFxcXCJWRklPX0ZTTF9NQzogcmVzZXQgZGV2aWNlIGhhcyBmYWlsZWQgKCVkKVxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtMTE0LVxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTEyMD1zdGF0aWMgaW50IHZmaW9fZnNsX21jX2lvY3RsX2dldF9yZWdpb25faW5mbyhzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0xMzEtXFx0LyogbWFwIG9mZnNldCB0byB0aGUgcGh5c2ljYWwgYWRkcmVzcyAgKi9cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6MTMyOlxcdGluZm8tXFx1MDAzZW9mZnNldCA9IFZGSU9fRlNMX01DX0lOREVYX1RPX09GRlNFVChpbmZvLVxcdTAwM2VpbmRleCk7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTEzMy1cXHRpbmZvLVxcdTAwM2VzaXplID0gdmRldi1cXHUwMDNlcmVnaW9uc1tpbmZvLVxcdTAwM2VpbmRleF0uc2l6ZTtcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz0yMzQ9c3RhdGljIHNzaXplX3QgdmZpb19mc2xfbWNfcmVhZChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldiwgY2hhciBfX3VzZXIgKmJ1ZixcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0yMzgtXFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSwgdmRldik7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjIzOTpcXHR1bnNpZ25lZCBpbnQgaW5kZXggPSBWRklPX0ZTTF9NQ19PRkZTRVRfVE9fSU5ERVgoKnBwb3MpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzoyNDA6XFx0bG9mZl90IG9mZiA9ICpwcG9zIFxcdTAwMjYgVkZJT19GU0xfTUNfT0ZGU0VUX01BU0s7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTI0MS1cXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdmRldi1cXHUwMDNlbWNfZGV2O1xcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTMxMj1zdGF0aWMgc3NpemVfdCB2ZmlvX2ZzbF9tY193cml0ZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0zMTctXFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSwgdmRldik7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjMxODpcXHR1bnNpZ25lZCBpbnQgaW5kZXggPSBWRklPX0ZTTF9NQ19PRkZTRVRfVE9fSU5ERVgoKnBwb3MpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzozMTk6XFx0bG9mZl90IG9mZiA9ICpwcG9zIFxcdTAwMjYgVkZJT19GU0xfTUNfT0ZGU0VUX01BU0s7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTMyMC1cXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdmRldi1cXHUwMDNlbWNfZGV2O1xcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTM1Mz1zdGF0aWMgaW50IHZmaW9fZnNsX21jX21tYXBfbW1pbyhzdHJ1Y3QgdmZpb19mc2xfbWNfcmVnaW9uIHJlZ2lvbixcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0zNjAtXFx0cGdvZmYgPSB2bWEtXFx1MDAzZXZtX3Bnb2ZmIFxcdTAwMjZcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6MzYxOlxcdFxcdCgoMVUgXFx1MDAzY1xcdTAwM2MgKFZGSU9fRlNMX01DX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpKSAtIDEpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0zNjItXFx0YmFzZSA9IHBnb2ZmIFxcdTAwM2NcXHUwMDNjIFBBR0VfU0hJRlQ7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9Mzc4PXN0YXRpYyBpbnQgdmZpb19mc2xfbWNfbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0zODUtXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjM4NjpcXHRpbmRleCA9IHZtYS1cXHUwMDNldm1fcGdvZmYgXFx1MDAzZVxcdTAwM2UgKFZGSU9fRlNMX01DX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0zODctXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9NDIwPXN0YXRpYyBpbnQgdmZpb19mc2xfbWNfYnVzX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDMxLVxcdFxcdGlmIChkZXZpY2Vfc2V0X2RyaXZlcl9vdmVycmlkZShkZXYsIHZmaW9fZnNsX21jX29wcy5uYW1lKSlcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6NDMyOlxcdFxcdFxcdGRldl93YXJuKGRldiwgXFxcIlZGSU9fRlNMX01DOiBTZXR0aW5nIGRyaXZlciBvdmVycmlkZSBmb3IgZGV2aWNlIGluIGRwcmMgJXMgZmFpbGVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy00MzMtXFx0XFx0XFx0XFx0IGRldl9uYW1lKFxcdTAwMjZtY19jb250LVxcdTAwM2VkZXYpKTtcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDM0LVxcdFxcdGVsc2VcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6NDM1OlxcdFxcdFxcdGRldl9pbmZvKGRldiwgXFxcIlZGSU9fRlNMX01DOiBTZXR0aW5nIGRyaXZlciBvdmVycmlkZSBmb3IgZGV2aWNlIGluIGRwcmMgJXNcXFxcblxcXCIsXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQzNi1cXHRcXHRcXHRcXHQgZGV2X25hbWUoXFx1MDAyNm1jX2NvbnQtXFx1MDAzZWRldikpO1xcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ0MS1cXHRcXHRpZiAobWNfZHJ2IFxcdTAwMjZcXHUwMDI2IG1jX2RydiAhPSBcXHUwMDI2dmZpb19mc2xfbWNfZHJpdmVyKVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzo0NDI6XFx0XFx0XFx0ZGV2X3dhcm4oZGV2LCBcXFwiVkZJT19GU0xfTUM6IE9iamVjdCAlcyBib3VuZCB0byBkcml2ZXIgJXMgd2hpbGUgRFBSQyBib3VuZCB0byB2ZmlvLWZzbC1tY1xcXFxuXFxcIixcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDQzLVxcdFxcdFxcdFxcdCBkZXZfbmFtZShkZXYpLCBtY19kcnYtXFx1MDAzZWRyaXZlci5uYW1lKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz00NDk9c3RhdGljIGludCB2ZmlvX2ZzbF9tY19pbml0X2RldmljZShzdHJ1Y3QgdmZpb19mc2xfbWNfZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ2OS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjQ3MDpcXHRcXHRkZXZfZXJyKFxcdTAwMjZtY19kZXYtXFx1MDAzZWRldiwgXFxcIlZGSU9fRlNMX01DOiBGYWlsZWQgdG8gc2V0dXAgRFBSQyAoJWQpXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy00NzEtXFx0XFx0Z290byBvdXRfbmNfdW5yZWc7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9NDgwPXN0YXRpYyBpbnQgdmZpb19mc2xfbWNfc2Nhbl9jb250YWluZXIoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldilcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy00ODktXFx0XFx0ZGV2X2VycihcXHUwMDI2bWNfZGV2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjQ5MDpcXHRcXHRcXHRcXFwiVkZJT19GU0xfTUM6IENvbnRhaW5lciBzY2FubmluZyBmYWlsZWQgKCVkKVxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDkxLVxcdFxcdGRwcmNfcmVtb3ZlX2RldmljZXMobWNfZGV2LCBOVUxMLCAwKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz01MzA9c3RhdGljIGludCB2ZmlvX2ZzbF9tY19wcm9iZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTU0Mi1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjU0MzpcXHRcXHRkZXZfZXJyKGRldiwgXFxcIlZGSU9fRlNMX01DOiBGYWlsZWQgdG8gYWRkIHRvIHZmaW8gZ3JvdXBcXFxcblxcXCIpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy01NDQtXFx0XFx0Z290byBvdXRfcHV0X3ZkZXY7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaC02LVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oOjc6I2lmbmRlZiBWRklPX0ZTTF9NQ19QUklWQVRFX0hcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaDo4OiNkZWZpbmUgVkZJT19GU0xfTUNfUFJJVkFURV9IXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmgtOS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaDoxMDojZGVmaW5lIFZGSU9fRlNMX01DX09GRlNFVF9TSElGVCAgICA0MFxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oOjExOiNkZWZpbmUgVkZJT19GU0xfTUNfT0ZGU0VUX01BU0sgKCgodTY0KSgxKSBcXHUwMDNjXFx1MDAzYyBWRklPX0ZTTF9NQ19PRkZTRVRfU0hJRlQpIC0gMSlcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaC0xMi1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaDoxMzojZGVmaW5lIFZGSU9fRlNMX01DX09GRlNFVF9UT19JTkRFWChvZmYpICgob2ZmKSBcXHUwMDNlXFx1MDAzZSBWRklPX0ZTTF9NQ19PRkZTRVRfU0hJRlQpXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmgtMTQtXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmg6MTU6I2RlZmluZSBWRklPX0ZTTF9NQ19JTkRFWF9UT19PRkZTRVQoaW5kZXgpXFx0XFxcXFxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oOjE2OlxcdCgodTY0KShpbmRleCkgXFx1MDAzY1xcdTAwM2MgVkZJT19GU0xfTUNfT0ZGU0VUX1NISUZUKVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oLTE3LVxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmg9NDc9dm9pZCB2ZmlvX2ZzbF9tY19pcnFzX2NsZWFudXAoc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSAqdmRldik7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmgtNDgtXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmg6NDk6I2VuZGlmIC8qIFZGSU9fRlNMX01DX1BSSVZBVEVfSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyMDowNC4yNzYyOTg0NTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTU1NDg5MTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipDaGVja2luZyB0aGUgVkZJTyBGU0wtTUMgS2NvbmZpZyBGaWxlKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGlzLiBUaGUgZmlyc3QgdGhpbmcgSSdtIGdvaW5nIHRvIGRvIGlzIHRha2UgYSBsb29rIGF0IHRoZSBgZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnYCBmaWxlLiBJJ20gYXNzdW1pbmcgdGhlcmUncyBzb21lIGNvbmZpZ3VyYXRpb24gbG9naWMsIG1heWJlIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcywgb3IgZXZlbiBqdXN0IHNvbWUgYmFzaWMgZG9jdW1lbnRhdGlvbiBJIG5lZWQgdG8gcmV2aWV3LiBHaXZlbiB0aGUgY29udGV4dCwgSSBleHBlY3QgdGhpcyBgS2NvbmZpZ2AgZmlsZSBpcyBnb2luZyB0byBkaWN0YXRlIHRoZSBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byB0aGUgVkZJTyAoVmlydHVhbCBGdW5jdGlvbiBJL08pIGRyaXZlciBmb3IgdGhlIEZyZWVzY2FsZSAobm93IE5YUCkgTXVsdGktQ29yZSAoTUMpIGFyY2hpdGVjdHVyZS4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSB3aGV0aGVyIHNwZWNpZmljIE1DIGhhcmR3YXJlIGlzIHN1cHBvcnRlZCwgYW55IG5lY2Vzc2FyeSBkZXZpY2Utc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgZmVhdHVyZXMgb3IgZHJpdmVycywgYW5kIGhvdyB0aGUgVkZJTyBkcml2ZXIgaW50ZWdyYXRlcyB3aXRoaW4gdGhlIGJyb2FkZXIgZnJhbWV3b3JrLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIG9wdGlvbnMgb3IgY29tcGlsZS10aW1lIGNvbmZpZ3VyYXRpb25zIEkgc2hvdWxkIGJlIGF3YXJlIG9mIG9yIGFkanVzdC4gTGV0J3Mgc2VlIHdoYXQncyBpbiB0aGVyZSFcblxuXG4iLCJJbnB1dFRva2VucyI6NjM5NSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjIwOjA2LjQzMTc5MTE1NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdG1lbnUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgRlNMX01DIGJ1cyBkZXZpY2VzXFxcIlxcbiAgIDI6XFx0XFx0ZGVwZW5kcyBvbiBGU0xfTUNfQlVTXFxuICAgMzpcXHRcXG4gICA0OlxcdGNvbmZpZyBWRklPX0ZTTF9NQ1xcbiAgIDU6XFx0XFx0dHJpc3RhdGUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgUW9ySVEgRFBBQTIgZnNsLW1jIGJ1cyBkZXZpY2VzXFxcIlxcbiAgIDY6XFx0XFx0c2VsZWN0IEVWRU5URkRcXG4gICA3OlxcdFxcdGhlbHBcXG4gICA4OlxcdFxcdCAgRHJpdmVyIHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0aGUgVkZJTyBRb3JJUSBEUEFBMiBmc2wtbWNcXG4gICA5OlxcdFxcdCAgKE1hbmFnZW1lbnQgQ29tcGxleCkgZGV2aWNlcy4gVGhpcyBpcyByZXF1aXJlZCB0byBwYXNzdGhyb3VnaFxcbiAgMTA6XFx0XFx0ICBmc2wtbWMgYnVzIGRldmljZXMgdXNpbmcgdGhlIFZGSU8gZnJhbWV3b3JrLlxcbiAgMTE6XFx0XFxuICAxMjpcXHRcXHQgIElmIHlvdSBkb24ndCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IE4uXFxuICAxMzpcXHRcXG4gIDE0OlxcdGVuZG1lbnVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MjA6MDYuNDMxODUxNjg2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQwNzE4OTA1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgRGl2ZSBmb3IgRlNMX01DX0JVUyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGBGU0xfTUNfQlVTYCBpcyBkZWZpbmVkIGFuZCB1c2VkIHdpdGhpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gc3lzdGVtLiBUaGlzIG1lYW5zIEknbSBnb2luZyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkbyBhIGdsb2JhbCBzZWFyY2ggYWNyb3NzIHRoZSBrZXJuZWwgc291cmNlIHRyZWUuIEknbGwgbmVlZCB0byB1c2UgdG9vbHMgdG8gcXVpY2tseSBsb2NhdGUgYWxsIGluc3RhbmNlcyBvZiB0aGlzIHN5bWJvbC4gSSBleHBlY3QgSSdsbCB3YW50IHRvIGZpbHRlciBiYXNlZCBvbiBmaWxlIGV4dGVuc2lvbiBgS2NvbmZpZ2AgZmlsZXMgYW5kIG1heSBuZWVkIHNvbWUgYWRkaXRpb25hbCBvcHRpb25zIHRvIG1hbmFnZSB0aGUgc2VhcmNoIHByb2Nlc3MgYmFzZWQgb24gdGhlIHN5c3RlbSBpbiB3aGljaCB0aGlzIGlzIGltcGxlbWVudGVkLiBUaGlzIHdpbGwgbGV0IG1lIHNlZSBpdHMgZGVwZW5kZW5jaWVzLCB3aG8ncyBlbmFibGluZyBpdCwgYW5kIHVuZGVyIHdoYXQgY29uZGl0aW9ucy4gVW5kZXJzdGFuZGluZyB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBsb2dpYyBhcm91bmQgYEZTTF9NQ19CVVNgIGlzIGNydWNpYWwgdG8gaXRzIGJlaGF2aW9yIGFuZCBpbXBsaWNhdGlvbnMgd2l0aGluIHRoZSBrZXJuZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NzcsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjIwOjA4LjgzOTA0MzY1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NDI4MDY2NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZTTF9NQ19CVVNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctNy1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZzo4OmNvbmZpZyBGU0xfTUNfQlVTXFxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctOS1cXHRib29sIFxcXCJRb3JJUSBEUEFBMiBmc2wtbWMgYnVzIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MjA6MTAuNjgxODU2MjM1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mzk2NzI2Njc4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHJlYWRpbmcgYGRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnYDpcblxuKipBbmFseXppbmcgdGhlIEZTTCBNQyBLY29uZmlnIEZpbGUqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnYCBmaWxlLiBJIGltbWVkaWF0ZWx5IHJlY29nbml6ZSB0aGlzIGFzIGEgY3J1Y2lhbCBwaWVjZSBmb3IgY29uZmlndXJpbmcgdGhlIEZyZWVzY2FsZSAobm93IE5YUCkgTXVsdGktQ29yZSAoTUMpIGRyaXZlcnMgd2l0aGluIHRoZSBrZXJuZWwuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSBzY29wZSBvZiB3aGF0J3MgYmVpbmcgY29udHJvbGxlZCBoZXJlIOKAkyB3aGF0IG9wdGlvbnMgYXJlIHByZXNlbnRlZCB0byB0aGUgdXNlciBkdXJpbmcgdGhlIGtlcm5lbCBidWlsZCBwcm9jZXNzLCBhbmQgaG93IGFyZSB0aGV5IHN0cnVjdHVyZWQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBkaWZmZXJlbnQgTUMgY29tcG9uZW50cy4gVGhpcyBmaWxlIGxpa2VseSBkZWZpbmVzIHRoZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgZGVmYXVsdHMsIGFuZCBwb3RlbnRpYWxseSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIHN1YnN5c3RlbXMgb3IgZmVhdHVyZXMuXG5cbkknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6XG5cbiogICAqKlRvcC1sZXZlbCBvcHRpb25zOioqIFRoZXNlIGFyZSB0aGUgZW50cnkgcG9pbnRzIGZvciBlbmFibGluZyBvciBkaXNhYmxpbmcgdGhlIG92ZXJhbGwgRlNMIE1DIGRyaXZlciBzdXBwb3J0LiBQcm9iYWJseSBzb21ldGhpbmcgbGlrZSBgQ09ORklHX0ZTTF9NQ2AuXG4qICAgKipTdWItb3B0aW9uczoqKiBUaGVuIEknbGwgYmUgc2VhcmNoaW5nIGZvciBtb3JlIGdyYW51bGFyIG9wdGlvbnMgdGhhdCBhbGxvdyB0aGUgdXNlciB0byBzZWxlY3Qgc3BlY2lmaWMgRlNMIE1DIGRldmljZXMsIGZlYXR1cmVzIChlLmcuLCBzcGVjaWZpYyBoYXJkd2FyZSByZXZpc2lvbnMsIGZ1bmN0aW9uYWxpdGllcyksIG9yIHByb3RvY29scy4gVGhpcyBpcyB3aGVyZSBJJ2xsIGdldCBpbnRvIHRoZSBkZXRhaWxzIG9mIHdoYXQgRlNMIE1DIGFjdHVhbGx5IGJyaW5ncyB0byB0aGUgdGFibGUgYW5kIHdoYXQgcGFydHMgb2YgdGhlIHN5c3RlbSBhcmUgYWZmZWN0ZWQuXG4qICAgKipEZXBlbmRlbmNpZXM6KiogSSBhbnRpY2lwYXRlIHNlZWluZyBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cy4gVGhlc2UgYXJlIGNyaXRpY2FsOyB0aGV5IHRlbGwgbWUgd2hhdCBvdGhlciBLY29uZmlnIG9wdGlvbnMgbXVzdCBiZSBzZXQgKG9yIG5vdCBzZXQpIGZvciBhIHBhcnRpY3VsYXIgTUMgZmVhdHVyZSB0byBldmVuIGJlIGNvbnNpZGVyZWQuIFRoaXMgaGVscHMgdW5kZXJzdGFuZCB0aGUgcHJlLXJlcXVpc2l0ZXMgZm9yIGVuYWJsaW5nIGFuZCB1c2luZyB0aGUgRlNMIE1DIGRyaXZlcnMuXG4qICAgKipEZWZhdWx0czoqKiBgZGVmYXVsdGAgc3RhdGVtZW50cyBhcmUgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIHdoYXQgdGhlIFwib3V0LW9mLXRoZS1ib3hcIiBjb25maWd1cmF0aW9uIHdpbGwgYmUuIFdoYXQgb3B0aW9ucyBhcmUgYXV0b21hdGljYWxseSBlbmFibGVkIG9yIGRpc2FibGVkIHdoZW4gdGhlIHVzZXIgaXNuJ3QgbWFraW5nIGV4cGxpY2l0IGNob2ljZXMuXG4qICAgKipIZWxwIHRleHQ6KiogVGhlIGBoZWxwYCBzZWN0aW9ucyBhcmUgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgKnB1cnBvc2UqIG9mIGVhY2ggb3B0aW9uIGFuZCBpdHMgaW1wbGljYXRpb25zLiBJJ2xsIHJlYWQgdGhlc2UgY2FyZWZ1bGx5IHRvIGdldCBhIHByb3BlciBtZW50YWwgbW9kZWwgb2YgaG93IGVhY2ggTUMgZGV2aWNlIGlzIGluY29ycG9yYXRlZCBpbnRvIHRoZSBkZXZpY2UgdHJlZS5cblxuSSBleHBlY3QgdG8gc2VlIGEgbG90IG9mIGNvbmRpdGlvbmFsIGxvZ2ljLCBwcm9iYWJseSB1c2luZyBgaWZgIHN0YXRlbWVudHMsIHRvIGhhbmRsZSBkaWZmZXJlbnQgaGFyZHdhcmUgcmV2aXNpb25zIG9yIGNvbmZpZ3VyYXRpb25zLiBUaGlzIGZpbGUgd2lsbCBiZSBhIHJvYWRtYXAgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlIGtlcm5lbCBidWlsZHMgYW5kIGluY29ycG9yYXRlcyBzdXBwb3J0IGZvciBGcmVlc2NhbGUncyBNdWx0aS1Db3JlIHRlY2hub2xvZ3kuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxNzksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyMDoxNC42NDkxMjUzOTVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI3NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIERQQUEyIGZzbC1tYyBidXNcXG4gICA0OlxcdCNcXG4gICA1OlxcdCMgQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy5cXG4gICA2OlxcdCNcXG4gICA3OlxcdFxcbiAgIDg6XFx0Y29uZmlnIEZTTF9NQ19CVVNcXG4gICA5OlxcdFxcdGJvb2wgXFxcIlFvcklRIERQQUEyIGZzbC1tYyBidXMgZHJpdmVyXFxcIlxcbiAgMTA6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9MQVlFUlNDQVBFIHx8IChDT01QSUxFX1RFU1QgXFx1MDAyNlxcdTAwMjYgKEFSTSB8fCBBUk02NCB8fCBYODZfTE9DQUxfQVBJQyB8fCBQUEMpKSlcXG4gIDExOlxcdFxcdHNlbGVjdCBHRU5FUklDX01TSV9JUlFcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgRHJpdmVyIHRvIGVuYWJsZSB0aGUgYnVzIGluZnJhc3RydWN0dXJlIGZvciB0aGUgUW9ySVEgRFBBQTJcXG4gIDE0OlxcdFxcdCAgYXJjaGl0ZWN0dXJlLiAgVGhlIGZzbC1tYyBidXMgZHJpdmVyIGhhbmRsZXMgZGlzY292ZXJ5IG9mXFxuICAxNTpcXHRcXHQgIERQQUEyIG9iamVjdHMgKHdoaWNoIGFyZSByZXByZXNlbnRlZCBhcyBMaW51eCBkZXZpY2VzKSBhbmRcXG4gIDE2OlxcdFxcdCAgYmluZGluZyBvYmplY3RzIHRvIGRyaXZlcnMuXFxuICAxNzpcXHRcXG4gIDE4OlxcdGNvbmZpZyBGU0xfTUNfVUFQSV9TVVBQT1JUXFxuICAxOTpcXHRcXHRib29sIFxcXCJNYW5hZ2VtZW50IENvbXBsZXggKE1DKSB1c2Vyc3BhY2Ugc3VwcG9ydFxcXCJcXG4gIDIwOlxcdFxcdGRlcGVuZHMgb24gRlNMX01DX0JVU1xcbiAgMjE6XFx0XFx0aGVscFxcbiAgMjI6XFx0XFx0ICBQcm92aWRlcyB1c2Vyc3BhY2Ugc3VwcG9ydCBmb3IgaW50ZXJyb2dhdGluZywgY3JlYXRpbmcsIGRlc3Ryb3lpbmcgb3JcXG4gIDIzOlxcdFxcdCAgY29uZmlndXJpbmcgRFBBQTIgb2JqZWN0cyBleHBvcnRlZCBieSB0aGUgTWFuYWdlbWVudCBDb21wbGV4LlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyMDoxNC42NDkyMTI4MjVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjU3NDUyMjIzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZTTCBNQyBCdXMgRGVwZW5kZW5jeSBhbmQgRGV2aWNlIERpc2NvdmVyeSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YgYEZTTF9NQ19CVVNgLiBJdCdzIGNsZWFybHkgdGllZCB0byB0aGUgYE9GYCAoZGV2aWNlIHRyZWUpIGNvbmZpZ3VyYXRpb24sIHdoaWNoIG1ha2VzIHNlbnNlLiBJIHNlZSBpdCBhbHNvIGhhcyBwbGF0Zm9ybS1zcGVjaWZpYyByZXF1aXJlbWVudHM6IGVpdGhlciBhIExheWVyc2NhcGUgYXJjaGl0ZWN0dXJlIChgQVJDSF9MQVlFUlNDQVBFYCksIG9yIGEgYENPTVBJTEVfVEVTVGAgYWxvbmcgd2l0aCBvbmUgb2Ygc2V2ZXJhbCBhcmNoaXRlY3R1cmVzIC0gYEFSTWAsIGBBUk02NGAsIGBYODZfTE9DQUxfQVBJQ2AsIG9yIGBQUENgLiBUaGlzIHRlbGxzIG1lIGltbWVkaWF0ZWx5IHdoZXJlIHRoaXMgYnVzIGlzIGxpa2VseSBiZWluZyB1c2VkLlxuXG5Ob3csIHdoYXQgKmlzKiBgZnNsLW1jYD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGRldmljZXMgYXJlIG1hbmFnZWQgb24gdGhhdCBidXMuIE15IGFwcHJvYWNoIHdvdWxkIGJlIHRvIGxvb2sgYXQgdGhlIHJlbGV2YW50IGRyaXZlcnMuIEknbGwgbmVlZCB0byBleGFtaW5lIGBkcml2ZXJzL2J1cy9mc2wtbWMvYCBhbmQgYGRyaXZlcnMvdmZpby9mc2wtbWMvYC4gVGhlIFZGSU8gYXNwZWN0IGlzIGtleSwgc3VnZ2VzdGluZyBhIHZpcnR1YWxpemVkIGNvbXBvbmVudCB0byB0aGlzLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZ3JlcCB0aGUgY29kZS4gSSdsbCBzZWFyY2ggZm9yIHRoZSByZWdpc3RyYXRpb24gb2YgYHZmaW9fZnNsX21jX2RyaXZlcmAuIFRoYXQgc2hvdWxkIGxlYWQgbWUgdG8gaG93IGRldmljZXMgYXJlIGF0dGFjaGVkIG9yIHByb2JlZCBvbiB0aGF0IGJ1cywgYW5kIHRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTAyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MjA6MTcuMjIzNzM3NTQ3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzkxOTc3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2ZmlvX2ZzbF9tY19kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92ZmlvL2ZzbC1tY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtMTktXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjIwOnN0YXRpYyBzdHJ1Y3QgZnNsX21jX2RyaXZlciB2ZmlvX2ZzbF9tY19kcml2ZXI7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTIxLVxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTQyMD1zdGF0aWMgaW50IHZmaW9fZnNsX21jX2J1c19ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLFxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ0MC1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6NDQxOlxcdFxcdGlmIChtY19kcnYgXFx1MDAyNlxcdTAwMjYgbWNfZHJ2ICE9IFxcdTAwMjZ2ZmlvX2ZzbF9tY19kcml2ZXIpXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ0Mi1cXHRcXHRcXHRkZXZfd2FybihkZXYsIFxcXCJWRklPX0ZTTF9NQzogT2JqZWN0ICVzIGJvdW5kIHRvIGRyaXZlciAlcyB3aGlsZSBEUFJDIGJvdW5kIHRvIHZmaW8tZnNsLW1jXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTU3OT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2ZzbF9tY19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNTk1LVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzo1OTY6c3RhdGljIHN0cnVjdCBmc2xfbWNfZHJpdmVyIHZmaW9fZnNsX21jX2RyaXZlciA9IHtcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNTk3LVxcdC5wcm9iZVxcdFxcdD0gdmZpb19mc2xfbWNfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNjA0LVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzo2MDU6bW9kdWxlX2ZzbF9tY19kcml2ZXIodmZpb19mc2xfbWNfZHJpdmVyKTtcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNjA2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyMDoxNy4zMjE2NjQyNloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMDU5MzM4NjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlbHZpbmcgaW50byB0aGUgRlNMIE1DIERyaXZlciBBcmNoaXRlY3R1cmUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBtb2R1bGVfZnNsX21jX2RyaXZlcih2ZmlvX2ZzbF9tY19kcml2ZXIpYCBjYWxsLCB3aGljaCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGludm9sdmVzIHRoZSBWRklPIGludGVyZmFjZSBhbmQgdGhlIEZyZWVzY2FsZSAobm93IE5YUCkgTXVsdGktQ29yZSBkcml2ZXIuIFJpZ2h0LCB0aW1lIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyB0aGUgYGZzbF9tY19idXNgIGlzIHNldCB1cC4gSSBrbm93IGl0J3MgYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZS4gTGV0J3MgaGVhZCBvdmVyIHRvIHRoZSBgZHJpdmVycy9idXMvZnNsLW1jL2AgZGlyZWN0b3J5IGluIHRoZSBrZXJuZWwgc291cmNlLiBUaGF0J3Mgd2hlcmUgSSdsbCBmaW5kIHRoZSBjb3JlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdGhhdCBidXMgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgZGV2aWNlcyBhcmUgZW51bWVyYXRlZCBhbmQgaG93IHRoaXMgYWxsIGludGVncmF0ZXMgd2l0aCB0aGUgdmZpbyBmcmFtZXdvcmssIGFuZCB0aGF0IGRpcmVjdG9yeSB3aWxsIGJlIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDgyLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MjA6MjAuMzgxMDA2MDE2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL2J1cy9mc2wtbWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiZHBicC5jXCIsXG4gICAgXCJkcGNvbi5jXCIsXG4gICAgXCJkcG1jcC5jXCIsXG4gICAgXCJkcHJjLWRyaXZlci5jXCIsXG4gICAgXCJkcHJjLmNcIixcbiAgICBcImZzbC1tYy1hbGxvY2F0b3IuY1wiLFxuICAgIFwiZnNsLW1jLWJ1cy5jXCIsXG4gICAgXCJmc2wtbWMtbXNpLmNcIixcbiAgICBcImZzbC1tYy1wcml2YXRlLmhcIixcbiAgICBcImZzbC1tYy11YXBpLmNcIixcbiAgICBcIm1jLWlvLmNcIixcbiAgICBcIm1jLXN5cy5jXCIsXG4gICAgXCJvYmotYXBpLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MjA6MjAuMzgxMDcyOTc2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzODUwNjM1OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlOlxuXG4qKkludmVzdGlnYXRpbmcgRGV2aWNlIENyZWF0aW9uIGluIGBmc2wtbWMtYnVzLmNgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXZpY2UgY3JlYXRpb24gb3IgZGlzY292ZXJ5IHByb2Nlc3Mgd2l0aGluIHRoaXMgZnJhbWV3b3JrLiBTcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBmb2N1cyBvbiBgZnNsLW1jLWJ1cy5jYC4gSSBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBtZWNoYW5pc21zIHRoZXJl4oCUdGhlIG5pdHR5LWdyaXR0eSBkZXRhaWxzIG9mIGhvdyBuZXcgZGV2aWNlcyBhcmUgYnJvdWdodCBpbnRvIHRoZSBzeXN0ZW0uIFRoaXMgZmlsZSBzaG91bGQgY29udGFpbiB0aGUga2V5IGZ1bmN0aW9ucyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgaGFuZGxlIHRoZSBlbnVtZXJhdGlvbiwgcHJvYmluZywgYW5kIGF0dGFjaG1lbnQgb2YgZGV2aWNlcyBvbiB0aGlzIHBhcnRpY3VsYXIgYnVzLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBhYnN0cmFjdGlvbiBhbmQgd2hhdCBkcml2ZXIgbW9kZWwgY29tcG9uZW50cyBpdCBsZXZlcmFnZXMuIEVzc2VudGlhbGx5LCBJJ20gbG9va2luZyBmb3IgdGhlIGZvdW5kYXRpb25hbCBjb2RlIHRoYXQgZ292ZXJucyBob3cgbmV3IGBmc2wtbWNgIGRldmljZXMgYmVjb21lIGtub3duIHRvIHRoZSBrZXJuZWwuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0NzEsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MjA6MjIuNzY2MTM5MTAxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTMwNDkxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmc2xfbWNfYnVzX3R5cGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9idXMvZnNsLW1jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MzI0PUFUVFJJQlVURV9HUk9VUFMoZnNsX21jX2J1cyk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0zMjUtXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzozMjY6Y29uc3Qgc3RydWN0IGJ1c190eXBlIGZzbF9tY19idXNfdHlwZSA9IHtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTMyNy1cXHQubmFtZSA9IFxcXCJmc2wtbWNcXFwiLFxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0zMzgtfTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjMzOTpFWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfYnVzX3R5cGUpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzQwLVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz00NjE9aW50IF9fZnNsX21jX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgZnNsX21jX2RyaXZlciAqbWNfZHJpdmVyLFxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy00NjYtXFx0bWNfZHJpdmVyLVxcdTAwM2Vkcml2ZXIub3duZXIgPSBvd25lcjtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjQ2NzpcXHRtY19kcml2ZXItXFx1MDAzZWRyaXZlci5idXMgPSBcXHUwMDI2ZnNsX21jX2J1c190eXBlO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNDY4LVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz03NTI9aW50IGZzbF9tY19kZXZpY2VfYWRkKHN0cnVjdCBmc2xfbWNfb2JqX2Rlc2MgKm9ial9kZXNjLFxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03ODktXFx0bWNfZGV2LVxcdTAwM2VkZXYucGFyZW50ID0gcGFyZW50X2RldjtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjc5MDpcXHRtY19kZXYtXFx1MDAzZWRldi5idXMgPSBcXHUwMDI2ZnNsX21jX2J1c190eXBlO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzkxLVxcdG1jX2Rldi1cXHUwMDNlZGV2LnJlbGVhc2UgPSBmc2xfbWNfZGV2aWNlX3JlbGVhc2U7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTExNzU9c3RhdGljIHZvaWQgZnNsX21jX2J1c19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTE4My1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjExODQ6XFx0YnVzX3VucmVnaXN0ZXJfbm90aWZpZXIoXFx1MDAyNmZzbF9tY19idXNfdHlwZSwgXFx1MDAyNmZzbF9tY19uYik7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMTg1LVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xMjYwPXN0YXRpYyBpbnQgX19pbml0IGZzbF9tY19idXNfZHJpdmVyX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTI2My1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEyNjQ6XFx0ZXJyb3IgPSBidXNfcmVnaXN0ZXIoXFx1MDAyNmZzbF9tY19idXNfdHlwZSk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMjY1LVxcdGlmIChlcnJvciBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTI5Mi1lcnJvcl9jbGVhbnVwX2J1czpcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEyOTM6XFx0YnVzX3VucmVnaXN0ZXIoXFx1MDAyNmZzbF9tY19idXNfdHlwZSk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMjk0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyMDoyMi44MTc0NDgyODhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE0MjgzOTg3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEluaXRpYWxpemF0aW9uIG9mIHRoZSBGU0wgTUMgQnVzIERyaXZlcioqXG5cbkFscmlnaHQsIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBGcmVlc2NhbGUgTXVsdGljb3JlIEJ1cyAoTUMgQnVzKSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBvciBwcm9iZSBmdW5jdGlvbi4gTXkgbWVudGFsIHByb2Nlc3MgaXMsIFwiV2hlcmUgZG9lcyB0aGlzIHRoaW5nIGtpY2sgb2ZmP1wiIE9idmlvdXNseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBmc2xfbWNfYnVzX2RyaXZlcl9pbml0YCBvciB0aGUgcHJvYmUgcm91dGluZSBnZXQgaW52b2tlZC4gTGV0J3MgZGlnIGludG8gdGhlIGNvcmUuIFRoYXQgbWVhbnMgbmF2aWdhdGluZyBvdmVyIHRvIHRoZSBgZnNsLW1jLWJ1cy5jYCBmaWxlLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBzaG91bGQgaGFwcGVuLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBkcml2ZXIgcmVnaXN0cmF0aW9uLCBwcm9iaW5nIGxvZ2ljLCBhbmQgYW55IGFzc29jaWF0ZWQgc2V0dXAgd2l0aGluIHRoYXQgZmlsZS4gSSdtIGdvaW5nIHRvIHRyYWNrIGRvd24gdGhlIGZ1bmN0aW9uIGNhbGxzIGFuZCB0aGUgZW50cnkgcG9pbnQgdGhhdCBpbml0aWFsaXplcyB0aGF0IGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2MzYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyMDoyNC45NjAyOTEwOTFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNTMyNDg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBsYXRmb3JtX2RyaXZlci4qZnNsX21jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYnVzL2ZzbC1tY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTEyMDg9TU9EVUxFX0RFVklDRV9UQUJMRShhY3BpLCBmc2xfbWNfYnVzX2FjcGlfbWF0Y2hfdGFibGUpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTIwOS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEyMTA6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZnNsX21jX2J1c19kcml2ZXIgPSB7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMjExLVxcdC5kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTEyNjA9c3RhdGljIGludCBfX2luaXQgZnNsX21jX2J1c19kcml2ZXJfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMjY5LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTI3MDpcXHRlcnJvciA9IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2ZnNsX21jX2J1c19kcml2ZXIpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTI3MS1cXHRpZiAoZXJyb3IgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEyODktZXJyb3JfY2xlYW51cF9kcml2ZXI6XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoxMjkwOlxcdHBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZmc2xfbWNfYnVzX2RyaXZlcik7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMjkxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyMDoyNS4wMTE4MzAzODhaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE4MjA5NDcwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBQbGF0Zm9ybSBEcml2ZXIgYW5kIE1hdGNoIFRhYmxlKipcblxuT2theSwgc28gYGZzbF9tY19idXNfZHJpdmVyYC4uLiByaWdodCwgdGhhdCdzIGEgcGxhdGZvcm0gZHJpdmVyLiBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIHNlZSBob3cgdGhpcyBkcml2ZXIgaXMgcmVjb2duaXplZCBhbmQgYXR0YWNoZWQgdG8gZGV2aWNlcy4gVGhhdCBtZWFucyBkaXZpbmcgaW50byB0aGUgbWF0Y2ggdGFibGUuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIGBmc2wtbWMtYnVzLmNgIGFuZCBodW50IGRvd24gdGhhdCBjcml0aWNhbCBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gVGhlIG1hdGNoIHRhYmxlIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCB0ZWxsaW5nIHRoZSBzeXN0ZW0gd2hpY2ggZGV2aWNlcyB0aGlzIGRyaXZlciBpcyBkZXNpZ25lZCB0byBoYW5kbGUuIFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBkZXZpY2UgYmluZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyNzQsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyMDoyNy4xOTM5Mjg1OThaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI0NzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTE5NSxcbiAgXCJMaW5lQ291bnRcIjogMzVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTE5NTpcXHR9XFxuMTE5NjpcXHRcXG4xMTk3OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGZzbF9tY19idXNfbWF0Y2hfdGFibGVbXSA9IHtcXG4xMTk4OlxcdFxcdHsuY29tcGF0aWJsZSA9IFxcXCJmc2wscW9yaXEtbWNcXFwiLH0sXFxuMTE5OTpcXHRcXHR7fSxcXG4xMjAwOlxcdH07XFxuMTIwMTpcXHRcXG4xMjAyOlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGZzbF9tY19idXNfbWF0Y2hfdGFibGUpO1xcbjEyMDM6XFx0XFxuMTIwNDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlX2lkIGZzbF9tY19idXNfYWNwaV9tYXRjaF90YWJsZVtdID0ge1xcbjEyMDU6XFx0XFx0e1xcXCJOWFAwMDA4XFxcIiwgMCB9LFxcbjEyMDY6XFx0XFx0eyB9XFxuMTIwNzpcXHR9O1xcbjEyMDg6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShhY3BpLCBmc2xfbWNfYnVzX2FjcGlfbWF0Y2hfdGFibGUpO1xcbjEyMDk6XFx0XFxuMTIxMDpcXHRzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBmc2xfbWNfYnVzX2RyaXZlciA9IHtcXG4xMjExOlxcdFxcdC5kcml2ZXIgPSB7XFxuMTIxMjpcXHRcXHRcXHQgICAubmFtZSA9IFxcXCJmc2xfbWNfYnVzXFxcIixcXG4xMjEzOlxcdFxcdFxcdCAgIC5wbSA9IE5VTEwsXFxuMTIxNDpcXHRcXHRcXHQgICAub2ZfbWF0Y2hfdGFibGUgPSBmc2xfbWNfYnVzX21hdGNoX3RhYmxlLFxcbjEyMTU6XFx0XFx0XFx0ICAgLmFjcGlfbWF0Y2hfdGFibGUgPSBmc2xfbWNfYnVzX2FjcGlfbWF0Y2hfdGFibGUsXFxuMTIxNjpcXHRcXHRcXHQgICB9LFxcbjEyMTc6XFx0XFx0LnByb2JlID0gZnNsX21jX2J1c19wcm9iZSxcXG4xMjE4OlxcdFxcdC5yZW1vdmUgPSBmc2xfbWNfYnVzX3JlbW92ZSxcXG4xMjE5OlxcdFxcdC5zaHV0ZG93biA9IGZzbF9tY19idXNfcmVtb3ZlLFxcbjEyMjA6XFx0fTtcXG4xMjIxOlxcdFxcbjEyMjI6XFx0c3RhdGljIGludCBmc2xfbWNfYnVzX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXFxuMTIyMzpcXHRcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgbG9uZyBhY3Rpb24sIHZvaWQgKmRhdGEpXFxuMTIyNDpcXHR7XFxuMTIyNTpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBkYXRhO1xcbjEyMjY6XFx0XFx0c3RydWN0IHJlc291cmNlICpyZXM7XFxuMTIyNzpcXHRcXHR2b2lkIF9faW9tZW0gKmZzbF9tY19yZWdzO1xcbjEyMjg6XFx0XFxuMTIyOTpcXHRcXHRpZiAoYWN0aW9uICE9IEJVU19OT1RJRllfQUREX0RFVklDRSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MjA6MjcuMTk0MDU1MTI4WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM1OTY3NzAzNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIGB2ZmlvX2ZzbF9tY2AqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24gd2l0aCBgdmZpb19mc2xfbWNgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkZXRlcm1pbmUgaXRzIGRlcGVuZGVuY2llcy4gRG9lcyBpdCAqcmVxdWlyZSogc3BlY2lmaWMsIHBoeXNpY2FsIGhhcmR3YXJlIGxpa2UgdGhlIFFvcklRIG9yIExheWVyc2NhcGUgU29DIE1hbmFnZW1lbnQgQ29tcGxleCwgb3IgaXMgaXQgc29tZXRoaW5nIHRoYXQncyBlbXVsYXRlZCB3aXRoaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LCBtYWtpbmcgaXQgYWNjZXNzaWJsZT8gTGV0J3MgY29uc3VsdCB0aGUgaW5zdHJ1Y3Rpb25zLlxuXG5BbHJpZ2h0LCBTZWN0aW9uIDIgaXMgd2hhdCBJIG5lZWQuIEl0J3MgcmVtaW5kaW5nIG1lIGFib3V0IHRoZSBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIGNhdmVhdC4gVGhpbmdzIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgYXJlIG9mZi1saW1pdHMgZm9yIGZ1enppbmcgaWYgdGhleSBuZWVkIHJlYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gdGhlIHN0YW5kYXJkIHNldHVwLiBSZWFjaGFiaWxpdHkgaXMgdGhlIGNvcmUgaXNzdWUgaGVyZS4gRnV6emluZyBjYW4gb25seSByZXZlYWwgaXNzdWVzIGluIGNvZGUgcGF0aHMgdGhhdCBhcmUgYWN0dWFsbHkgKmV4ZWN1dGFibGUqIHdpdGhpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgbGV2ZXJhZ2luZyB0aGluZ3MgbGlrZSBlbXVsYXRlZCBVU0IgZGV2aWNlcywgbmV0d29yayBkZXZpY2VzLCBhbmQgdHVuL3RhcCBpbnRlcmZhY2VzLiBJZiB0aGUgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUsIGV2ZW4gd2l0aCBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMsIGl0J3MgYSBub24tc3RhcnRlciBmb3IgZnV6emluZy5cblxuTm93LCBjaXJjbGluZyBiYWNrIHRvIGB2ZmlvX2ZzbF9tY2AsIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZSBGcmVlc2NhbGUgTWFuYWdlbWVudCBDb21wbGV4IChGU0wtTUMpLCBvciBRb3JJUSBEUEFBMiwgY2FuIHJ1biBvbiBhbWQ2NCBvciBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0J3MgdGhlIHJlYWwgcXVlc3Rpb24uIElzIHRoZXJlIGEgdmlydHVhbCBGU0wtTUMgZGV2aWNlIGltcGxlbWVudGF0aW9uIG9yIGEgbW9jayBkcml2ZXIgYXZhaWxhYmxlPyBJIG5lZWQgdG8gc2VhcmNoIHRoZSBRRU1VIHNvdXJjZSBhbmQgdGhlIGtlcm5lbCBzb3VyY2UgZm9yIGFueSBjbHVlcyByZWxhdGVkIHRvIFwiZnNsLW1jXCIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMDQ2LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MjA6MzAuNzkwODI4Mzc2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODU2NDg0MjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZzbC1tY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDU0NSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWJ1cy1mc2wtbWM6MTpXaGF0OlxcdFxcdC9zeXMvYnVzL2ZzbC1tYy9yZXNjYW5cXG5Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tYy0yLURhdGU6XFx0XFx0SmFudWFyeSAyMDIxXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tYz01PURlc2NyaXB0aW9uOlxcdFdyaXRpbmcgYSBub24temVybyB2YWx1ZSB0byB0aGlzIGF0dHJpYnV0ZSB3aWxsXFxuRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWJ1cy1mc2wtbWM6NjpcXHRcXHRmb3JjZSBhIHJlc2NhbiBvZiBmc2wtbWMgYnVzIGluIHRoZSBzeXN0ZW0gYW5kXFxuRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWJ1cy1mc2wtbWM6NzpcXHRcXHRzeW5jaHJvbml6ZSB0aGUgb2JqZWN0cyB1bmRlciBmc2wtbWMgYnVzIGFuZCB0aGVcXG5Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tYy04LVxcdFxcdE1hbmFnZW1lbnQgQ29tcGxleCBmaXJtd2FyZS5cXG5Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tYz05PVVzZXJzOlxcdFxcdFVzZXJzcGFjZSBkcml2ZXJzIGFuZCBtYW5hZ2VtZW50IHRvb2xzXFxuRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWJ1cy1mc2wtbWMtMTAtXFxuRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWJ1cy1mc2wtbWM6MTE6V2hhdDpcXHRcXHQvc3lzL2J1cy9mc2wtbWMvYXV0b3Jlc2NhblxcbkRvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1idXMtZnNsLW1jLTEyLURhdGU6XFx0XFx0SmFudWFyeSAyMDIxXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tYz0xNT1EZXNjcmlwdGlvbjpcXHRXcml0aW5nIGEgemVybyB2YWx1ZSB0byB0aGlzIGF0dHJpYnV0ZSB3aWxsXFxuRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWJ1cy1mc2wtbWMtMTYtXFx0XFx0ZGlzYWJsZSB0aGUgRFBSQyBJUlFzIG9uIHdoaWNoIGF1dG9tYXRpYyByZXNjYW5cXG5Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tYzoxNzpcXHRcXHRvZiB0aGUgZnNsLW1jIGJ1cyBpcyBwZXJmb3JtZWQuIEEgbm9uLXplcm8gdmFsdWVcXG5Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tYy0xOC1cXHRcXHR3aWxsIGVuYWJsZSB0aGUgRFBSQyBJUlFzLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtZnNsLW1jOjE6V2hhdDpcXHRcXHQvc3lzL2J1cy9mc2wtbWMvZHJpdmVycy8uLi4vYmluZFxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWZzbC1tYy0yLURhdGU6XFx0XFx0RGVjZW1iZXIgMjAxNlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtZnNsLW1jPTQ9RGVzY3JpcHRpb246XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWMtNy1cXHRcXHR0aGlzIGxvY2F0aW9uLiBUaGUgZm9ybWF0IGZvciB0aGUgbG9jYXRpb24gaXMgT2JqZWN0LklkXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtZnNsLW1jOjg6XFx0XFx0YW5kIGlzIHRoZSBzYW1lIGFzIGZvdW5kIGluIC9zeXMvYnVzL2ZzbC1tYy9kZXZpY2VzLy5cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWMtOS1cXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWZzbC1tYy0xMS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWM6MTI6XFx0XFx0ICAjIGVjaG8gZHBuaS4yIFxcdTAwM2UgL3N5cy9idXMvZnNsLW1jL2RyaXZlcnMvZnNsX2RwYWEyX2V0aC9iaW5kXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtZnNsLW1jLTEzLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWZzbC1tYzoxNDpXaGF0OlxcdFxcdC9zeXMvYnVzL2ZzbC1tYy9kcml2ZXJzLy4uLi91bmJpbmRcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWMtMTUtRGF0ZTpcXHRcXHREZWNlbWJlciAyMDE2XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWM9MTc9RGVzY3JpcHRpb246XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWMtMjAtXFx0XFx0dGhpcyBsb2NhdGlvbi4gVGhlIGZvcm1hdCBmb3IgdGhlIGxvY2F0aW9uIGlzIE9iamVjdC5JZFxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWZzbC1tYzoyMTpcXHRcXHRhbmQgaXMgdGhlIHNhbWUgYXMgZm91bmQgaW4gL3N5cy9idXMvZnNsLW1jL2RldmljZXMvLlxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWZzbC1tYy0yMi1cXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWZzbC1tYy0yNC1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWM6MjU6XFx0XFx0ICAjIGVjaG8gZHBuaS4yIFxcdTAwM2UgL3N5cy9idXMvZnNsLW1jL2RyaXZlcnMvZnNsX2RwYWEyX2V0aC91bmJpbmRcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXNjL2ZzbCxxb3JpcS1tYy55YW1sPTEyPWRlc2NyaXB0aW9uOiB8XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWw6MTM6ICBUaGUgRnJlZXNjYWxlIE1hbmFnZW1lbnQgQ29tcGxleCAoZnNsLW1jKSBpcyBhIGhhcmR3YXJlIHJlc291cmNlXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWwtMTQtICBtYW5hZ2VyIHRoYXQgbWFuYWdlcyBzcGVjaWFsaXplZCBoYXJkd2FyZSBvYmplY3RzIHVzZWQgaW5cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlzYy9mc2wscW9yaXEtbWMueWFtbDoxNTogIG5ldHdvcmstb3JpZW50ZWQgcGFja2V0IHByb2Nlc3NpbmcgYXBwbGljYXRpb25zLiBBZnRlciB0aGUgZnNsLW1jXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWwtMTYtICBibG9jayBpcyBlbmFibGVkLCBwb29scyBvZiBoYXJkd2FyZSByZXNvdXJjZXMgYXJlIGF2YWlsYWJsZSwgc3VjaCBhc1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWwtMjEtXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWw6MjI6ICBGb3IgYW4gb3ZlcnZpZXcgb2YgdGhlIERQQUEyIGFyY2hpdGVjdHVyZSBhbmQgZnNsLW1jIGJ1cyBzZWU6XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWwtMjMtICBEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL292ZXJ2aWV3LnJzdFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWw9NTE9cHJvcGVydGllczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXNjL2ZzbCxxb3JpcS1tYy55YW1sLTEzMC0gICAgZGVzY3JpcHRpb246XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWw6MTMxOiAgICAgIFRoZSBmc2wtbWMgbm9kZSBtYXkgb3B0aW9uYWxseSBoYXZlIGRwbWFjIHN1Yi1ub2RlcyB0aGF0IGRlc2NyaWJlXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWwtMTMyLSAgICAgIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgRXRoZXJuZXQgTUFDcyB3aGljaCBiZWxvbmcgdG8gdGhlIE1DXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlzYy9mc2wscW9yaXEtbWMueWFtbD0xNTc9ZXhhbXBsZXM6XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWwtMTU4LSAgLSB8XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWw6MTU5OiAgICBmc2wtbWNAODBjMDAwMDAwIHtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlzYy9mc2wscW9yaXEtbWMueWFtbC0xNjAtICAgICAgICBjb21wYXRpYmxlID0gXFxcImZzbCxxb3JpcS1tY1xcXCI7XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxxb3JpcS1tYy1kcG1hYy55YW1sPTEyPWRlc2NyaXB0aW9uOlxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLHFvcmlxLW1jLWRwbWFjLnlhbWw6MTM6ICBUaGlzIGJpbmRpbmcgcmVwcmVzZW50cyB0aGUgRFBBQTIgTUFDIG9iamVjdHMgZm91bmQgb24gdGhlIGZzbC1tYyBidXMgYW5kXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wscW9yaXEtbWMtZHBtYWMueWFtbDoxNDogIGxvY2F0ZWQgdW5kZXIgdGhlICdkcG1hY3MnIG5vZGUgZm9yIHRoZSBmc2wtbWMgYnVzIERUUyBub2RlLlxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLHFvcmlxLW1jLWRwbWFjLnlhbWwtMTUtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdD0yOD1Ecml2ZXIgT3ZlcnZpZXdcXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBpby1kcml2ZXIucnN0LTMwLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBpby1kcml2ZXIucnN0OjMxOlRoZSBEUElPIGRyaXZlciBpcyBib3VuZCB0byBEUElPIG9iamVjdHMgZGlzY292ZXJlZCBvbiB0aGUgZnNsLW1jIGJ1cyBhbmRcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdC0zMi1wcm92aWRlcyBzZXJ2aWNlcyB0aGF0Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGlvLWRyaXZlci5yc3Q9NDA9VGhlIExpbnV4IERQSU8gZHJpdmVyIGNvbnNpc3RzIG9mIDMgcHJpbWFyeSBjb21wb25lbnRzLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdDo0MTogICBEUElPIG9iamVjdCBkcml2ZXItLSBmc2wtbWMgZHJpdmVyIHRoYXQgbWFuYWdlcyB0aGUgRFBJTyBvYmplY3RcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdC00Mi1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBpby1kcml2ZXIucnN0LTQ2LVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBpby1kcml2ZXIucnN0OjQ3OiAgICAgICAgICBmc2wtbWMgICAgICAgICAgb3RoZXJcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdC00OC0gICAgICAgICAgIGJ1cyAgICAgICAgICAgZHJpdmVyc1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGlvLWRyaXZlci5yc3Q9NjQ9RFBBQTIgTGludXggZHJpdmVyIGNvbXBvbmVudHM6Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGlvLWRyaXZlci5yc3QtODUtICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHxcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdDo4NjogICAgICAgICAgfCAvc29jL2ZzbC1tYyAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBpby1kcml2ZXIucnN0LTg3LSAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICB8XFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdD05OD1EUElPIE9iamVjdCBEcml2ZXIgKGRwaW8tZHJpdmVyLmMpXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdC0xMDAtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGlvLWRyaXZlci5yc3Q6MTAxOiAgIFRoZSBkcGlvLWRyaXZlciBjb21wb25lbnQgcmVnaXN0ZXJzIHdpdGggdGhlIGZzbC1tYyBidXMgdG8gaGFuZGxlIG9iamVjdHMgb2ZcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdC0xMDItICAgdHlwZSBcXFwiZHBpb1xcXCIuICBUaGUgaW1wbGVtZW50YXRpb24gb2YgcHJvYmUoKSBoYW5kbGVzIGJhc2ljIGluaXRpYWxpemF0aW9uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL21hYy1waHktc3VwcG9ydC5yc3Q9MTY9RFBBQTIgU29mdHdhcmUgQXJjaGl0ZWN0dXJlXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL21hYy1waHktc3VwcG9ydC5yc3QtMTgtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9tYWMtcGh5LXN1cHBvcnQucnN0OjE5OkFtb25nIG90aGVyIERQQUEyIG9iamVjdHMsIHRoZSBmc2wtbWMgYnVzIGV4cG9ydHMgRFBOSSBvYmplY3RzIChhYnN0cmFjdGluZyBhXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9tYWMtcGh5LXN1cHBvcnQucnN0LTIwLW5ldHdvcmsgaW50ZXJmYWNlKSBhbmQgRFBNQUMgb2JqZWN0cyAoYWJzdHJhY3RpbmcgYSBNQUMpLiBUaGUgZHBhYTItZXRoIGRyaXZlclxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9vdmVydmlldy5yc3Q9Mjg2PW9mIGVhY2ggZHJpdmVyIGZvbGxvd3MuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL292ZXJ2aWV3LnJzdC0zMDktXFx0ICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ZHJpdmVyfFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvb3ZlcnZpZXcucnN0OjMxMDpcXHQgIHwgICAvYnVzL2ZzbC1tYyAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICstLSstLS0rXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9vdmVydmlldy5yc3QtMzExLVxcdCAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9vdmVydmlldy5yc3Q9MzMxPUtleSBmdW5jdGlvbnMgaW5jbHVkZTpcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL292ZXJ2aWV3LnJzdC0zMzItXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9vdmVydmlldy5yc3Q6MzMzOi0gcmVnaXN0ZXJpbmcgYSBuZXcgYnVzIHR5cGUgbmFtZWQgXFxcImZzbC1tY1xcXCIgd2l0aCB0aGUga2VybmVsLFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvb3ZlcnZpZXcucnN0LTMzNC0gIGFuZCBpbXBsZW1lbnRpbmcgYnVzIGNhbGwtYmFja3MgKGUuZy4gbWF0Y2gvdWV2ZW50L2Rldl9ncm91cHMpXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL292ZXJ2aWV3LnJzdD0zNDM9VGhlIHN5c2ZzIGJpbmQvdW5iaW5kIGludGVyZmFjZXMgZm9yIHRoZSBNQy1idXMgY2FuIGJlIGNvbnN1bHRlZCBhdFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvb3ZlcnZpZXcucnN0OjM0NDoqRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtZnNsLW1jKi5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL292ZXJ2aWV3LnJzdC0zNDUtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL3N3aXRjaC1kcml2ZXIucnN0PTM1PUNyZWF0aW5nIGFuIEV0aGVybmV0IFN3aXRjaFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9zd2l0Y2gtZHJpdmVyLnJzdC0zNy1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL3N3aXRjaC1kcml2ZXIucnN0OjM4OlRoZSBkcGFhMi1zd2l0Y2ggZHJpdmVyIHByb2JlcyBvbiBEUFNXIGRldmljZXMgZm91bmQgb24gdGhlIGZzbC1tYyBidXMuIFRoZXNlXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9zd2l0Y2gtZHJpdmVyLnJzdC0zOS1kZXZpY2VzIGNhbiBiZSBlaXRoZXIgY3JlYXRlZCBzdGF0aWNhbGx5IHRocm91Z2ggdGhlIGJvb3QgdGltZSBjb25maWd1cmF0aW9uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL3N3aXRjaC1kcml2ZXIucnN0PTEyMD1Ccm9hZGNhc3QgZmxvb2Rpbmcgb24gYSBzd2l0Y2ggcG9ydCBjYW4gYmUgZGlzYWJsZWQvZW5hYmxlZCB0aHJvdWdoIHRoZSBicnBvcnQgc3lzZnM6OlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvc3dpdGNoLWRyaXZlci5yc3QtMTIxLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvc3dpdGNoLWRyaXZlci5yc3Q6MTIyOiAgICAgICAgJCBlY2hvIDAgXFx1MDAzZSAvc3lzL2J1cy9mc2wtbWMvZGV2aWNlcy9kcHN3LlkvbmV0L2V0aFgvYnJwb3J0L2Jyb2FkY2FzdF9mbG9vZFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvc3dpdGNoLWRyaXZlci5yc3QtMTIzLVxcbi0tXFxuTUFJTlRBSU5FUlM9MjIwNTA9UzpcXHRNYWludGFpbmVkXFxuTUFJTlRBSU5FUlM6MjIwNTE6RjpcXHREb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tY1xcbk1BSU5UQUlORVJTLTIyMDUyLUY6XFx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWxcXG5NQUlOVEFJTkVSUz0yMjA1Mz1GOlxcdERvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvb3ZlcnZpZXcucnN0XFxuTUFJTlRBSU5FUlM6MjIwNTQ6RjpcXHRkcml2ZXJzL2J1cy9mc2wtbWMvXFxuTUFJTlRBSU5FUlMtMjIwNTUtRjpcXHRpbmNsdWRlL3VhcGkvbGludXgvZnNsX21jLmhcXG4tLVxcbk1BSU5UQUlORVJTPTI4MzUyPVM6XFx0TWFpbnRhaW5lZFxcbk1BSU5UQUlORVJTOjI4MzUzOkY6XFx0ZHJpdmVycy92ZmlvL2ZzbC1tYy9cXG5NQUlOVEFJTkVSUy0yODM1NC1cXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwODhhLmR0c2k9OTYyPVxcdFxcdFxcdFxcdFxcdCAgICBRT1JJUV9DTEtfUExMX0RJVigxNilcXHUwMDNlLFxcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTA4OGEuZHRzaS05NjctXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTA4OGEuZHRzaTo5Njg6XFx0XFx0ZnNsX21jOiBmc2wtbWNAODBjMDAwMDAwIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDg4YS5kdHNpLTk2OS1cXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcImZzbCxxb3JpcS1tY1xcXCI7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMyMDh4YS5kdHNpPTc1Mj1cXHRcXHRcXHRwY3MxNjogZXRoZXJuZXQtcGh5QDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMjA4eGEuZHRzaS03NTYtXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMjA4eGEuZHRzaTo3NTc6XFx0XFx0ZnNsX21jOiBmc2wtbWNAODBjMDAwMDAwIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMyMDh4YS5kdHNpLTc1OC1cXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcImZzbCxxb3JpcS1tY1xcXCI7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHgyMTYwYS5kdHNpPTE4NzU9XFx0XFx0XFx0Z3BpbzBfM18yX3BpbnM6IGlpYzEtZ3Bpby1waW5zIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1seDIxNjBhLmR0c2ktMTg3OS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHgyMTYwYS5kdHNpOjE4ODA6XFx0XFx0ZnNsX21jOiBmc2wtbWNAODBjMDAwMDAwIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHgyMTYwYS5kdHNpLTE4ODEtXFx0XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJmc2wscW9yaXEtbWNcXFwiO1xcbi0tXFxuZHJpdmVycy9idXMvS2NvbmZpZz0yNDI9Y29uZmlnIERBOFhYX01TVFBSSVxcbi0tXFxuZHJpdmVycy9idXMvS2NvbmZpZy0yNDktXFxuZHJpdmVycy9idXMvS2NvbmZpZzoyNTA6c291cmNlIFxcXCJkcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL2J1cy9LY29uZmlnLTI1MS1zb3VyY2UgXFxcImRyaXZlcnMvYnVzL21oaS9LY29uZmlnXFxcIlxcbi0tXFxuZHJpdmVycy9idXMvTWFrZWZpbGU9MTE9b2JqLSQoQ09ORklHX01PWFRFVClcXHRcXHQrPSBtb3h0ZXQub1xcbmRyaXZlcnMvYnVzL01ha2VmaWxlLTEyLVxcbmRyaXZlcnMvYnVzL01ha2VmaWxlOjEzOiMgRFBBQTIgZnNsLW1jIGJ1c1xcbmRyaXZlcnMvYnVzL01ha2VmaWxlOjE0Om9iai0kKENPTkZJR19GU0xfTUNfQlVTKVxcdCs9IGZzbC1tYy9cXG5kcml2ZXJzL2J1cy9NYWtlZmlsZS0xNS1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnLTItI1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnOjM6IyBEUEFBMiBmc2wtbWMgYnVzXFxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctNC0jXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZz04PWNvbmZpZyBGU0xfTUNfQlVTXFxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWc6OTpcXHRib29sIFxcXCJRb3JJUSBEUEFBMiBmc2wtbWMgYnVzIGRyaXZlclxcXCJcXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZy0xMC1cXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX0xBWUVSU0NBUEUgfHwgKENPTVBJTEVfVEVTVCBcXHUwMDI2XFx1MDAyNiAoQVJNIHx8IEFSTTY0IHx8IFg4Nl9MT0NBTF9BUElDIHx8IFBQQykpKVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctMTMtXFx0ICBEcml2ZXIgdG8gZW5hYmxlIHRoZSBidXMgaW5mcmFzdHJ1Y3R1cmUgZm9yIHRoZSBRb3JJUSBEUEFBMlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnOjE0OlxcdCAgYXJjaGl0ZWN0dXJlLiAgVGhlIGZzbC1tYyBidXMgZHJpdmVyIGhhbmRsZXMgZGlzY292ZXJ5IG9mXFxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctMTUtXFx0ICBEUEFBMiBvYmplY3RzICh3aGljaCBhcmUgcmVwcmVzZW50ZWQgYXMgTGludXggZGV2aWNlcykgYW5kXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGU9Nz1vYmotJChDT05GSUdfRlNMX01DX0JVUykgKz0gbWMtYnVzLWRyaXZlci5vXFxuZHJpdmVycy9idXMvZnNsLW1jL01ha2VmaWxlLTgtXFxuZHJpdmVycy9idXMvZnNsLW1jL01ha2VmaWxlOjk6bWMtYnVzLWRyaXZlci1vYmpzIDo9IGZzbC1tYy1idXMubyBcXFxcXFxuZHJpdmVycy9idXMvZnNsLW1jL01ha2VmaWxlLTEwLVxcdFxcdCAgICAgIG1jLXN5cy5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZS0xNS1cXHRcXHQgICAgICBkcHJjLWRyaXZlci5vIFxcXFxcXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGU6MTY6XFx0XFx0ICAgICAgZnNsLW1jLWFsbG9jYXRvci5vIFxcXFxcXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGU6MTc6XFx0XFx0ICAgICAgZnNsLW1jLW1zaS5vIFxcXFxcXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGUtMTgtXFx0XFx0ICAgICAgZHBtY3AubyBcXFxcXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGUtMjEtIyBNQyB1c2Vyc3BhY2Ugc3VwcG9ydFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZToyMjpvYmotJChDT05GSUdfRlNMX01DX1VBUElfU1VQUE9SVCkgKz0gZnNsLW1jLXVhcGkub1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwYnAuYy04LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcGJwLmM6OTojaW5jbHVkZSBcXFwiZnNsLW1jLXByaXZhdGUuaFxcXCJcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBicC5jLTEwLVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwY29uLmMtOC1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBjb24uYzo5OiNpbmNsdWRlIFxcXCJmc2wtbWMtcHJpdmF0ZS5oXFxcIlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcGNvbi5jLTEwLVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwbWNwLmMtOC1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBtY3AuYzo5OiNpbmNsdWRlIFxcXCJmc2wtbWMtcHJpdmF0ZS5oXFxcIlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcG1jcC5jLTEwLVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTUtXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTY6I2luY2x1ZGUgXFxcImZzbC1tYy1wcml2YXRlLmhcXFwiXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTctXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz02OD1zdGF0aWMgaW50IF9fZnNsX21jX2RldmljZV9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzktICpcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo4MDogKiBAbWNfYnVzX2RldjogcG9pbnRlciB0byB0aGUgZnNsLW1jIGRldmljZSB0aGF0IHJlcHJlc2VudHMgYSBEUFJDIG9iamVjdFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTgxLSAqIEBvYmpfZGVzY19hcnJheTogYXJyYXkgb2Ygb2JqZWN0IGRlc2NyaXB0b3JzIGZvciBjaGlsZCBvYmplY3RzIGN1cnJlbnRseVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9MTIzPXN0cnVjdCBmc2xfbWNfZGV2aWNlICpmc2xfbWNfZGV2aWNlX2xvb2t1cChzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmpfZGVzYyxcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTEzNi0gKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjEzNzogKiBAbWNfZGV2OiBwb2ludGVyIHRvIHRoZSBmc2wtbWMgZGV2aWNlIGZvciBhIGdpdmVuIE1DIG9iamVjdFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTEzOC0gKiBAb2JqX2Rlc2M6IHBvaW50ZXIgdG8gdGhlIE1DIG9iamVjdCdzIGRlc2NyaXB0b3IgaW4gdGhlIE1DXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTM5LSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTQwOiAqIElmIHRoZSBwbHVnZ2VkIHN0YXRlIGhhcyBjaGFuZ2VkIGZyb20gdW5wbHVnZ2VkIHRvIHBsdWdnZWQsIHRoZSBmc2wtbWNcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNDEtICogZGV2aWNlIGlzIGJvdW5kIHRvIHRoZSBjb3JyZXNwb25kaW5nIGRldmljZSBkcml2ZXIuXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTQyOiAqIElmIHRoZSBwbHVnZ2VkIHN0YXRlIGhhcyBjaGFuZ2VkIGZyb20gcGx1Z2dlZCB0byB1bnBsdWdnZWQsIHRoZSBmc2wtbWNcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNDMtICogZGV2aWNlIGlzIHVuYm91bmQgZnJvbSB0aGUgY29ycmVzcG9uZGluZyBkZXZpY2UgZHJpdmVyLlxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9MTY5PXN0YXRpYyB2b2lkIGZzbF9tY19vYmpfZGV2aWNlX2FkZChzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldixcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE5Mi0gKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjE5MzogKiBAbWNfYnVzX2RldjogcG9pbnRlciB0byB0aGUgZnNsLW1jIGRldmljZSB0aGF0IHJlcHJlc2VudHMgYSBEUFJDIG9iamVjdFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE5NC0gKiBAb2JqX2Rlc2NfYXJyYXk6IGFycmF5IG9mIGRldmljZSBkZXNjcmlwdG9ycyBmb3IgY2hpbGQgZGV2aWNlcyBjdXJyZW50bHlcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTIwMj1zdGF0aWMgdm9pZCBkcHJjX2FkZF9uZXdfZGV2aWNlcyhzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldixcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTIyOC0gKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjIyOTogKiBAbWNfYnVzX2RldjogcG9pbnRlciB0byB0aGUgZnNsLW1jIGRldmljZSB0aGF0IHJlcHJlc2VudHMgYSBEUFJDIG9iamVjdFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTIzMC0gKiBAYWxsb2NfaW50ZXJydXB0czogaWYgdHJ1ZSB0aGUgZnVuY3Rpb24gYWxsb2NhdGVzIHRoZSBpbnRlcnJ1cHQgcG9vbCxcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTI0NT1pbnQgZHByY19zY2FuX29iamVjdHMoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYsXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0zNTYtICpcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzozNTc6ICogQG1jX2J1c19kZXY6IHBvaW50ZXIgdG8gdGhlIGZzbC1tYyBkZXZpY2UgdGhhdCByZXByZXNlbnRzIGEgRFBSQyBvYmplY3RcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0zNTgtICogQGFsbG9jX2ludGVycnVwdHM6IGlmIHRydWUgdGhlIGZ1bmN0aW9uIGFsbG9jYXRlcyB0aGUgaW50ZXJydXB0IHBvb2wsXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz01NzI9c3RhdGljIGludCBkcHJjX3NldHVwX2lycShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNjAxLSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NjAyOiAqIEBtY19kZXY6IFBvaW50ZXIgdG8gZnNsLW1jIGRldmljZSByZXByZXNlbnRpbmcgYSBEUFJDXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNjAzLSAqXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz03MTE9RVhQT1JUX1NZTUJPTF9HUEwoZHByY19zZXR1cCk7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03MTUtICpcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo3MTY6ICogQG1jX2RldjogUG9pbnRlciB0byBmc2wtbWMgZGV2aWNlIHJlcHJlc2VudGluZyBhIERQUkNcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03MTctICpcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTc1OD1zdGF0aWMgdm9pZCBkcHJjX3RlYXJkb3duX2lycShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzcxLSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NzcyOiAqIEBtY19kZXY6IFBvaW50ZXIgdG8gZnNsLW1jIGRldmljZSByZXByZXNlbnRpbmcgdGhlIERQUkNcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03NzMtICpcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTgxNT1FWFBPUlRfU1lNQk9MX0dQTChkcHJjX2NsZWFudXApO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtODE5LSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6ODIwOiAqIEBtY19kZXY6IFBvaW50ZXIgdG8gZnNsLW1jIGRldmljZSByZXByZXNlbnRpbmcgdGhlIERQUkNcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy04MjEtICpcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLmMtOS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy5jOjEwOiNpbmNsdWRlIFxcXCJmc2wtbWMtcHJpdmF0ZS5oXFxcIlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLmMtMTEtXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTItLypcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjM6ICogZnNsLW1jIG9iamVjdCBhbGxvY2F0b3IgZHJpdmVyXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy00LSAqXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTEyLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MTM6I2luY2x1ZGUgXFxcImZzbC1tYy1wcml2YXRlLmhcXFwiXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0xNC1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTE1PXN0YXRpYyBib29sIF9fbXVzdF9jaGVjayBmc2xfbWNfaXNfYWxsb2NhdGFibGUoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldilcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjMtICogZnNsX21jX3Jlc291cmNlX3Bvb2xfYWRkX2RldmljZSAtIGFkZCBhbGxvY2F0YWJsZSBvYmplY3QgdG8gYSByZXNvdXJjZVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MjQ6ICogcG9vbCBvZiBhIGdpdmVuIGZzbC1tYyBidXNcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTI1LSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzoyNjogKiBAbWNfYnVzOiBwb2ludGVyIHRvIHRoZSBmc2wtbWMgYnVzXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yNy0gKiBAcG9vbF90eXBlOiBwb29sIHR5cGVcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI4OiAqIEBtY19kZXY6IHBvaW50ZXIgdG8gYWxsb2NhdGFibGUgZnNsLW1jIGRldmljZVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjktICovXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz0zMD1zdGF0aWMgaW50IF9fbXVzdF9jaGVjayBmc2xfbWNfcmVzb3VyY2VfcG9vbF9hZGRfZGV2aWNlKHN0cnVjdCBmc2xfbWNfYnVzXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTkxLSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo5MjogKiBAbWNfZGV2OiBwb2ludGVyIHRvIGFsbG9jYXRhYmxlIGZzbC1tYyBkZXZpY2VcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTkzLSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo5NDogKiBJdCBwZXJtYW5lbnRseSByZW1vdmVzIGFuIGFsbG9jYXRhYmxlIGZzbC1tYyBkZXZpY2UgZnJvbSB0aGUgcmVzb3VyY2VcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTk1LSAqIHBvb2wuIEl0J3MgYW4gZXJyb3IgaWYgdGhlIGRldmljZSBpcyBpbiB1c2UuXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTI1ND1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfcmVzb3VyY2VfZnJlZSk7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTI1Ni0vKipcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI1NzogKiBmc2xfbWNfb2JqZWN0X2FsbG9jYXRlIC0gQWxsb2NhdGVzIGFuIGZzbC1tYyBvYmplY3Qgb2YgdGhlIGdpdmVuXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzoyNTg6ICogcG9vbCB0eXBlIGZyb20gYSBnaXZlbiBmc2wtbWMgYnVzIGluc3RhbmNlXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yNTktICpcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI2MDogKiBAbWNfZGV2OiBmc2wtbWMgZGV2aWNlIHdoaWNoIGlzIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGVcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTI2MS0gKiBhbGxvY2F0ZWQgb2JqZWN0XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTMyMj1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfb2JqZWN0X2FsbG9jYXRlKTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzI0LS8qKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MzI1OiAqIGZzbF9tY19vYmplY3RfZnJlZSAtIFJldHVybnMgYW4gZnNsLW1jIG9iamVjdCB0byB0aGUgcmVzb3VyY2VcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTMyNi0gKiBwb29sIHdoZXJlIGl0IGNhbWUgZnJvbS5cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjMyNzogKiBAbWNfYWRldjogUG9pbnRlciB0byB0aGUgZnNsLW1jIGRldmljZVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzI4LSAqL1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz0zNDM9RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX29iamVjdF9mcmVlKTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzUxLS8qXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzozNTI6ICogSW5pdGlhbGl6ZSB0aGUgaW50ZXJydXB0IHBvb2wgYXNzb2NpYXRlZCB3aXRoIGFuIGZzbC1tYyBidXMuXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0zNTMtICogSXQgYWxsb2NhdGVzIGEgYmxvY2sgb2YgSVJRcyBmcm9tIHRoZSBHSUMtSVRTLlxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz00MTE9RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX3BvcHVsYXRlX2lycV9wb29sKTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDEzLS8qXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo0MTQ6ICogVGVhcmRvd24gdGhlIGludGVycnVwdCBwb29sIGFzc29jaWF0ZWQgd2l0aCBhbiBmc2wtbWMgYnVzLlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDE1LSAqIEl0IGZyZWVzIHRoZSBJUlFzIHRoYXQgd2VyZSBhbGxvY2F0ZWQgdG8gdGhlIHBvb2wsIGJhY2sgdG8gdGhlIEdJQy1JVFMuXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTQzOD1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfY2xlYW51cF9pcnFfcG9vbCk7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTQ0MC0vKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NDQxOiAqIEFsbG9jYXRlIHRoZSBJUlFzIHJlcXVpcmVkIGJ5IGEgZ2l2ZW4gZnNsLW1jIGRldmljZS5cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTQ0Mi0gKi9cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9NTA2PUVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19hbGxvY2F0ZV9pcnFzKTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNTA4LS8qXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo1MDk6ICogRnJlZXMgdGhlIElSUXMgdGhhdCB3ZXJlIGFsbG9jYXRlZCBmb3IgYW4gZnNsLW1jIGRldmljZS5cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTUxMC0gKi9cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9NTYyPXN0YXRpYyBpbnQgZnNsX21jX2FsbG9jYXRvcl9wcm9iZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01ODUtXFx0ZGV2X2RiZyhcXHUwMDI2bWNfZGV2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo1ODY6XFx0XFx0XFxcIkFsbG9jYXRhYmxlIGZzbC1tYyBkZXZpY2UgYm91bmQgdG8gZnNsX21jX2FsbG9jYXRvciBkcml2ZXJcXFwiKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTU4Ny1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9NTk0PXN0YXRpYyB2b2lkIGZzbF9tY19hbGxvY2F0b3JfcmVtb3ZlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTYwNC1cXHRkZXZfZGJnKFxcdTAwMjZtY19kZXYtXFx1MDAzZWRldixcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjYwNTpcXHRcXHRcXFwiQWxsb2NhdGFibGUgZnNsLW1jIGRldmljZSB1bmJvdW5kIGZyb20gZnNsX21jX2FsbG9jYXRvciBkcml2ZXJcXFwiKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTYwNi19XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTE6I2RlZmluZSBwcl9mbXQoZm10KSBcXFwiZnNsLW1jOiBcXFwiIGZtdFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTItXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTI1LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MjY6I2luY2x1ZGUgXFxcImZzbC1tYy1wcml2YXRlLmhcXFwiXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yNy1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTI4LS8qXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoyOTogKiBEZWZhdWx0IERNQSBtYXNrIGZvciBkZXZpY2VzIG9uIGEgZnNsLW1jIGJ1c1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzAtICovXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTMzPXN0YXRpYyBzdHJ1Y3QgZnNsX21jX3ZlcnNpb24gbWNfdmVyc2lvbjtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzYtICogc3RydWN0IGZzbF9tYyAtIFByaXZhdGUgZGF0YSBvZiBhIFxcXCJmc2wscW9yaXEtbWNcXFwiIHBsYXRmb3JtIGRldmljZVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6Mzc6ICogQHJvb3RfbWNfYnVzX2RldjogZnNsLW1jIGRldmljZSByZXByZXNlbnRpbmcgdGhlIHJvb3QgRFBSQ1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzgtICogQG51bV90cmFuc2xhdGlvbl9yYW5nZXM6IG51bWJlciBvZiBlbnRyaWVzIGluIGFkZHJfdHJhbnNsYXRpb25fcmFuZ2VzXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTgwPXN0YXRpYyBwaHlzX2FkZHJfdCBtY19wb3J0YWxfYmFzZV9waHlzX2FkZHI7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTgzLSAqIGZzbF9tY19idXNfbWF0Y2ggLSBkZXZpY2UgdG8gZHJpdmVyIG1hdGNoaW5nIGNhbGxiYWNrXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo4NDogKiBAZGV2OiB0aGUgZnNsLW1jIGRldmljZSB0byBtYXRjaCBhZ2FpbnN0XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo4NTogKiBAZHJ2OiB0aGUgZGV2aWNlIGRyaXZlciB0byBzZWFyY2ggZm9yIG1hdGNoaW5nIGZzbC1tYyBvYmplY3QgdHlwZVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODYtICogc3RydWN0dXJlc1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xMzk9c3RhdGljIGludCBmc2xfbWNfYnVzX3VldmVudChjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBrb2JqX3VldmVudF9lbnYgKmVudilcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTQyLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTQzOlxcdGlmIChhZGRfdWV2ZW50X3ZhcihlbnYsIFxcXCJNT0RBTElBUz1mc2wtbWM6diUwOFhkJXNcXFwiLFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTQ0LVxcdFxcdFxcdCAgIG1jX2Rldi1cXHUwMDNlb2JqX2Rlc2MudmVuZG9yLFxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0yMTQ9c3RhdGljIHNzaXplX3QgbW9kYWxpYXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yMTgtXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoyMTk6XFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwiZnNsLW1jOnYlMDhYZCVzXFxcXG5cXFwiLCBtY19kZXYtXFx1MDAzZW9ial9kZXNjLnZlbmRvcixcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTIyMC1cXHRcXHRcXHRtY19kZXYtXFx1MDAzZW9ial9kZXNjLnR5cGUpO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0zMjY9Y29uc3Qgc3RydWN0IGJ1c190eXBlIGZzbF9tY19idXNfdHlwZSA9IHtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjMyNzpcXHQubmFtZSA9IFxcXCJmc2wtbWNcXFwiLFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzI4LVxcdC5kcml2ZXJfb3ZlcnJpZGUgPSB0cnVlLFxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz00OTk9c3RhdGljIGludCBtY19nZXRfdmVyc2lvbihzdHJ1Y3QgZnNsX21jX2lvICptY19pbyxcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNTI4LSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo1Mjk6ICogUmV0dXJuOlxcdG1jIHZlcnNpb24gd2hlbiBjYWxsZWQgYWZ0ZXIgZnNsLW1jLWJ1cyBwcm9iZTsgTlVMTCBvdGhlcndpc2UuXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy01MzAtICovXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTYzMj1zdGF0aWMgaW50IGZzbF9tY19kZXZpY2VfZ2V0X21taW9fcmVnaW9ucyhzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2LFxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03MTAtXFx0XFx0cmVnaW9uc1tpXS5lbmQgPSByZWdpb25zW2ldLnN0YXJ0ICsgcmVnaW9uX2Rlc2Muc2l6ZSAtIDE7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo3MTE6XFx0XFx0cmVnaW9uc1tpXS5uYW1lID0gXFxcImZzbC1tYyBvYmplY3QgTU1JTyByZWdpb25cXFwiO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzEyLVxcdFxcdHJlZ2lvbnNbaV0uZmxhZ3MgPSByZWdpb25fZGVzYy5mbGFncyBcXHUwMDI2IElPUkVTT1VSQ0VfQklUUztcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9NzM3PXN0YXRpYyB2b2lkIGZzbF9tY19kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc0OS0vKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NzUwOiAqIEFkZCBhIG5ld2x5IGRpc2NvdmVyZWQgZnNsLW1jIGRldmljZSB0byBiZSB2aXNpYmxlIGluIExpbnV4XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03NTEtICovXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTg4Mj1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGZzbF9tY19uYjtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODg0LS8qKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODg1OiAqIGZzbF9tY19kZXZpY2VfcmVtb3ZlIC0gUmVtb3ZlIGFuIGZzbC1tYyBkZXZpY2UgZnJvbSBiZWluZyB2aXNpYmxlIHRvXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04ODYtICogTGludXhcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg4Ny0gKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODg4OiAqIEBtY19kZXY6IFBvaW50ZXIgdG8gYW4gZnNsLW1jIGRldmljZVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODg5LSAqL1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz05MDA9c3RydWN0IGZzbF9tY19kZXZpY2UgKmZzbF9tY19nZXRfZW5kcG9pbnQoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldixcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtOTM2LVxcdCAqIGludGVycm9nYXRpbmcgdGhlIGZpcm13YXJlLiBUaGlzIGlzIHRoZSBjYXNlIHdoZW4gdGhlIGRldmljZSB3YXMgbm90XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo5Mzc6XFx0ICogeWV0IGRpc2NvdmVyZWQgYnkgdGhlIGZzbC1tYyBidXMsIHRodXMgdGhlIGxvb2t1cCByZXR1cm5lZCBOVUxMLlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtOTM4LVxcdCAqIEZvcmNlIGEgcmVzY2FuIG9mIHRoZSBkZXZpY2VzIGluIHRoaXMgY29udGFpbmVyIGFuZCByZXRyeSB0aGUgbG9va3VwLlxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xMDA1PXN0YXRpYyBpbnQgZnNsX21jX2Zpcm13YXJlX2NoZWNrKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMTMtXFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTAxNDpcXHRcXHRcXHRcXFwiZnNsLW1jOiBEUEwgcHJvY2Vzc2luZyB3YXMgbm90IHN0YXJ0ZWQsIERQQUEyIHdpbGwgbm90IHdvcmshXFxcXG5cXFwiKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMTUtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMDIwLVxcdFxcdGRldl9kYmcoXFx1MDAyNnBkZXYtXFx1MDAzZWRldixcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEwMjE6XFx0XFx0XFx0XFxcImZzbC1tYzogRFBMIHByb2Nlc3NpbmcgaW4gcHJvZ3Jlc3MsIGRlZmVyIHByb2JlXFxcXG5cXFwiKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMjItXFx0XFx0cmV0dXJuIC1FUFJPQkVfREVGRVI7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMjctXFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTAyODpcXHRcXHRcXHRcXFwiZnNsLW1jOiBNQyBib290IGNvbXBsZXRlZCB3aXRoIGVycm9yIDB4JXhcXFxcblxcXCIsIG1jcyk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMDI5LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1tc2kuYy0xNS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLW1zaS5jOjE2OiNpbmNsdWRlIFxcXCJmc2wtbWMtcHJpdmF0ZS5oXFxcIlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmMtMTctXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaD01ODI9c3RydWN0IGZzbF9tY191YXBpIHtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTU5MS0gKiBzdHJ1Y3QgZnNsX21jX2J1cyAtIGxvZ2ljYWwgYnVzIHRoYXQgY29ycmVzcG9uZHMgdG8gYSBwaHlzaWNhbCBEUFJDXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg6NTkyOiAqIEBtY19kZXY6IGZzbC1tYyBkZXZpY2UgZm9yIHRoZSBidXMgZGV2aWNlIGl0c2VsZi5cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC01OTMtICogQHJlc291cmNlX3Bvb2xzOiBhcnJheSBvZiByZXNvdXJjZSBwb29scyAob25lIHBvb2wgcGVyIHJlc291cmNlIHR5cGUpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXVhcGkuYy0xMy1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXVhcGkuYzoxNDojaW5jbHVkZSBcXFwiZnNsLW1jLXByaXZhdGUuaFxcXCJcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXVhcGkuYy0xNS1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9tYy1pby5jLTktXFxuZHJpdmVycy9idXMvZnNsLW1jL21jLWlvLmM6MTA6I2luY2x1ZGUgXFxcImZzbC1tYy1wcml2YXRlLmhcXFwiXFxuZHJpdmVycy9idXMvZnNsLW1jL21jLWlvLmMtMTEtXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvbWMtc3lzLmMtMTYtXFxuZHJpdmVycy9idXMvZnNsLW1jL21jLXN5cy5jOjE3OiNpbmNsdWRlIFxcXCJmc2wtbWMtcHJpdmF0ZS5oXFxcIlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9tYy1zeXMuYy0xOC1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9vYmotYXBpLmMtOC1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvb2JqLWFwaS5jOjk6I2luY2x1ZGUgXFxcImZzbC1tYy1wcml2YXRlLmhcXFwiXFxuZHJpdmVycy9idXMvZnNsLW1jL29iai1hcGkuYy0xMC1cXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2NhYW0vS2NvbmZpZz0xNzg9Y29uZmlnIENSWVBUT19ERVZfRlNMX0RQQUEyX0NBQU1cXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2NhYW0vS2NvbmZpZy0xOTMtXFx0ICBJdCBoYW5kbGVzIERQU0VDSSBEUEFBMiBvYmplY3RzIHRoYXQgc2l0IG9uIHRoZSBNYW5hZ2VtZW50IENvbXBsZXhcXG5kcml2ZXJzL2NyeXB0by9jYWFtL0tjb25maWc6MTk0OlxcdCAgKE1DKSBmc2wtbWMgYnVzLlxcbmRyaXZlcnMvY3J5cHRvL2NhYW0vS2NvbmZpZy0xOTUtXFxuLS1cXG5kcml2ZXJzL2RtYS9mc2wtZHBhYTItcWRtYS9kcGFhMi1xZG1hLmM9MTUyPWRwYWEyX3FkbWFfcG9wdWxhdGVfZmQodTMyIGZvcm1hdCwgc3RydWN0IGRwYWEyX3FkbWFfY29tcCAqZHBhYTJfY29tcClcXG4tLVxcbmRyaXZlcnMvZG1hL2ZzbC1kcGFhMi1xZG1hL2RwYWEyLXFkbWEuYy0xNjMtXFx0ICogQnlwYXNzIG1lbW9yeSB0cmFuc2xhdGlvbiwgRnJhbWUgbGlzdCBmb3JtYXQsIHNob3J0IGxlbmd0aCBkaXNhYmxlXFxuZHJpdmVycy9kbWEvZnNsLWRwYWEyLXFkbWEvZHBhYTItcWRtYS5jOjE2NDpcXHQgKiB3ZSBuZWVkIHRvIGRpc2FibGUgQk1UIGlmIGZzbC1tYyB1c2UgaW92YSBhZGRyXFxuZHJpdmVycy9kbWEvZnNsLWRwYWEyLXFkbWEvZHBhYTItcWRtYS5jLTE2NS1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvaW9tbXUvaW9tbXUuYz0xNjg1PUVYUE9SVF9TWU1CT0xfR1BMKHBjaV9kZXZpY2VfZ3JvdXApO1xcbmRyaXZlcnMvaW9tbXUvaW9tbXUuYy0xNjg2LVxcbmRyaXZlcnMvaW9tbXUvaW9tbXUuYzoxNjg3Oi8qIEdldCB0aGUgSU9NTVUgZ3JvdXAgZm9yIGRldmljZSBvbiBmc2wtbWMgYnVzICovXFxuZHJpdmVycy9pb21tdS9pb21tdS5jLTE2ODgtc3RydWN0IGlvbW11X2dyb3VwICpmc2xfbWNfZGV2aWNlX2dyb3VwKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvc29jL2ZzbC9kcGlvL01ha2VmaWxlLTUtXFxuZHJpdmVycy9zb2MvZnNsL2RwaW8vTWFrZWZpbGU6NjpvYmotJChDT05GSUdfRlNMX01DX0RQSU8pICs9IGZzbC1tYy1kcGlvLm9cXG5kcml2ZXJzL3NvYy9mc2wvZHBpby9NYWtlZmlsZS03LVxcbmRyaXZlcnMvc29jL2ZzbC9kcGlvL01ha2VmaWxlOjg6ZnNsLW1jLWRwaW8tb2JqcyA6PSBkcGlvLm8gcWJtYW4tcG9ydGFsLm8gZHBpby1zZXJ2aWNlLm8gZHBpby1kcml2ZXIub1xcbi0tXFxuZHJpdmVycy9zb2MvZnNsL2RwaW8vZHBpby1zZXJ2aWNlLmM9MjI2PWlycXJldHVybl90IGRwYWEyX2lvX2lycShzdHJ1Y3QgZHBhYTJfaW8gKm9iailcXG4tLVxcbmRyaXZlcnMvc29jL2ZzbC9kcGlvL2RwaW8tc2VydmljZS5jLTI0OS1cXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvc29jL2ZzbC9kcGlvL2RwaW8tc2VydmljZS5jOjI1MDpcXHRcXHRcXHRwcl9jcml0KFxcXCJmc2wtbWMtZHBpbzogVW5yZWNvZ25pc2VkL2lnbm9yZWQgRFFSUiBlbnRyeVxcXFxuXFxcIik7XFxuZHJpdmVycy9zb2MvZnNsL2RwaW8vZHBpby1zZXJ2aWNlLmMtMjUxLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvdmZpby9LY29uZmlnPTk1PXNvdXJjZSBcXFwiZHJpdmVycy92ZmlvL21kZXYvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZzo5Njpzb3VyY2UgXFxcImRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy05Ny1zb3VyY2UgXFxcImRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZ1xcXCJcXG4tLVxcbmRyaXZlcnMvdmZpby9NYWtlZmlsZT0xNj1vYmotJChDT05GSUdfVkZJT19NREVWKSArPSBtZGV2L1xcbmRyaXZlcnMvdmZpby9NYWtlZmlsZToxNzpvYmotJChDT05GSUdfVkZJT19GU0xfTUMpICs9IGZzbC1tYy9cXG5kcml2ZXJzL3ZmaW8vTWFrZWZpbGUtMTgtb2JqLSQoQ09ORklHX1ZGSU9fQ0RYKSArPSBjZHgvXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWc9ND1jb25maWcgVkZJT19GU0xfTUNcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWc6NTpcXHR0cmlzdGF0ZSBcXFwiVkZJTyBzdXBwb3J0IGZvciBRb3JJUSBEUEFBMiBmc2wtbWMgYnVzIGRldmljZXNcXFwiXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnLTYtXFx0c2VsZWN0IEVWRU5URkRcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWctNy1cXHRoZWxwXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjIwOjMyLjY0NzMxOTRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQ4NTIwMDk5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHZmaW9fZnNsX21jIERyaXZlciBmb3IgUW9ySVEgRFBBQTIgU29DcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBGU0xfTUNfQlVTYCDigJMgdGhhdCdzIHRoZSBidXMgZHJpdmVyIGZvciB0aGUgTlhQL0ZyZWVzY2FsZSBRb3JJUSBEUEFBMiBTb0MgTWFuYWdlbWVudCBDb21wbGV4IGhhcmR3YXJlLiBSaWdodCwgZ290IGl0LiBOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBjYW4gYHZmaW9fZnNsX21jYCBiZSBwcm9iZWQgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgcHJlc2VudD8gVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nIGFuZCB3aGVyZSBJIGNhbiBwb3RlbnRpYWxseSBsZWFybiBzb21ldGhpbmcgdXNlZnVsIGZvciBteSBjdXJyZW50IHByb2plY3QuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwcm9iaW5nIHByb2Nlc3MgdG8gYW5zd2VyIHRoaXMuXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLiBMZXQncyBzZWUgaG93IGB2ZmlvX2ZzbF9tY2AgcHJvYmVzOyBzcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayBgdmZpb19mc2xfbWNfcHJvYmVgLiBBaGEsIGl0J3MgbG9jYXRlZCBpbiBgZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jYC4gRXhjZWxsZW50LCB0aGF0J3MgdGhlIGZpbGUgdG8gZm9jdXMgb24uIE5vdyBJIG5lZWQgdG8gY2FyZWZ1bGx5IHJlYWQgdGhyb3VnaCB0aGUgaW1wbGVtZW50YXRpb24gb2YgYHZmaW9fZnNsX21jX3Byb2JlYCBpdHNlbGYuIFRpbWUgdG8gZ2V0IGludG8gdGhlIGRldGFpbHMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MTM1LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjIwOjM1LjEzMjUyMzUxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDA5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTI1LFxuICBcIkxpbmVDb3VudFwiOiA3MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTI1OlxcdFxcbiA1MjY6XFx0XFx0LyogZGV2aWNlX3NldCBpcyByZWxlYXNlZCBieSB2ZmlvIGNvcmUgaWYgQGluaXQgZmFpbHMgKi9cXG4gNTI3OlxcdFxcdHJldHVybiB2ZmlvX2ZzbF9tY19pbml0X2RldmljZSh2ZGV2KTtcXG4gNTI4OlxcdH1cXG4gNTI5OlxcdFxcbiA1MzA6XFx0c3RhdGljIGludCB2ZmlvX2ZzbF9tY19wcm9iZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbiA1MzE6XFx0e1xcbiA1MzI6XFx0XFx0c3RydWN0IHZmaW9fZnNsX21jX2RldmljZSAqdmRldjtcXG4gNTMzOlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZtY19kZXYtXFx1MDAzZWRldjtcXG4gNTM0OlxcdFxcdGludCByZXQ7XFxuIDUzNTpcXHRcXG4gNTM2OlxcdFxcdHZkZXYgPSB2ZmlvX2FsbG9jX2RldmljZSh2ZmlvX2ZzbF9tY19kZXZpY2UsIHZkZXYsIGRldixcXG4gNTM3OlxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2dmZpb19mc2xfbWNfb3BzKTtcXG4gNTM4OlxcdFxcdGlmIChJU19FUlIodmRldikpXFxuIDUzOTpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUih2ZGV2KTtcXG4gNTQwOlxcdFxcbiA1NDE6XFx0XFx0cmV0ID0gdmZpb19yZWdpc3Rlcl9ncm91cF9kZXYoXFx1MDAyNnZkZXYtXFx1MDAzZXZkZXYpO1xcbiA1NDI6XFx0XFx0aWYgKHJldCkge1xcbiA1NDM6XFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJWRklPX0ZTTF9NQzogRmFpbGVkIHRvIGFkZCB0byB2ZmlvIGdyb3VwXFxcXG5cXFwiKTtcXG4gNTQ0OlxcdFxcdFxcdGdvdG8gb3V0X3B1dF92ZGV2O1xcbiA1NDU6XFx0XFx0fVxcbiA1NDY6XFx0XFxuIDU0NzpcXHRcXHRyZXQgPSB2ZmlvX2ZzbF9tY19zY2FuX2NvbnRhaW5lcihtY19kZXYpO1xcbiA1NDg6XFx0XFx0aWYgKHJldClcXG4gNTQ5OlxcdFxcdFxcdGdvdG8gb3V0X2dyb3VwX2RldjtcXG4gNTUwOlxcdFxcdGRldl9zZXRfZHJ2ZGF0YShkZXYsIHZkZXYpO1xcbiA1NTE6XFx0XFx0cmV0dXJuIDA7XFxuIDU1MjpcXHRcXG4gNTUzOlxcdG91dF9ncm91cF9kZXY6XFxuIDU1NDpcXHRcXHR2ZmlvX3VucmVnaXN0ZXJfZ3JvdXBfZGV2KFxcdTAwMjZ2ZGV2LVxcdTAwM2V2ZGV2KTtcXG4gNTU1OlxcdG91dF9wdXRfdmRldjpcXG4gNTU2OlxcdFxcdHZmaW9fcHV0X2RldmljZShcXHUwMDI2dmRldi1cXHUwMDNldmRldik7XFxuIDU1NzpcXHRcXHRyZXR1cm4gcmV0O1xcbiA1NTg6XFx0fVxcbiA1NTk6XFx0XFxuIDU2MDpcXHRzdGF0aWMgdm9pZCB2ZmlvX2ZzbF9tY19yZWxlYXNlX2RldihzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4gNTYxOlxcdHtcXG4gNTYyOlxcdFxcdHN0cnVjdCB2ZmlvX2ZzbF9tY19kZXZpY2UgKnZkZXYgPVxcbiA1NjM6XFx0XFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSwgdmRldik7XFxuIDU2NDpcXHRcXG4gNTY1OlxcdFxcdHZmaW9fZnNsX3VuaW5pdF9kZXZpY2UodmRldik7XFxuIDU2NjpcXHRcXHRtdXRleF9kZXN0cm95KFxcdTAwMjZ2ZGV2LVxcdTAwM2VpZ2F0ZSk7XFxuIDU2NzpcXHR9XFxuIDU2ODpcXHRcXG4gNTY5OlxcdHN0YXRpYyB2b2lkIHZmaW9fZnNsX21jX3JlbW92ZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbiA1NzA6XFx0e1xcbiA1NzE6XFx0XFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNm1jX2Rldi1cXHUwMDNlZGV2O1xcbiA1NzI6XFx0XFx0c3RydWN0IHZmaW9fZnNsX21jX2RldmljZSAqdmRldiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xcbiA1NzM6XFx0XFxuIDU3NDpcXHRcXHR2ZmlvX3VucmVnaXN0ZXJfZ3JvdXBfZGV2KFxcdTAwMjZ2ZGV2LVxcdTAwM2V2ZGV2KTtcXG4gNTc1OlxcdFxcdGRwcmNfcmVtb3ZlX2RldmljZXMobWNfZGV2LCBOVUxMLCAwKTtcXG4gNTc2OlxcdFxcdHZmaW9fcHV0X2RldmljZShcXHUwMDI2dmRldi1cXHUwMDNldmRldik7XFxuIDU3NzpcXHR9XFxuIDU3ODpcXHRcXG4gNTc5OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fZnNsX21jX29wcyA9IHtcXG4gNTgwOlxcdFxcdC5uYW1lXFx0XFx0PSBcXFwidmZpby1mc2wtbWNcXFwiLFxcbiA1ODE6XFx0XFx0LmluaXRcXHRcXHQ9IHZmaW9fZnNsX21jX2luaXRfZGV2LFxcbiA1ODI6XFx0XFx0LnJlbGVhc2VcXHQ9IHZmaW9fZnNsX21jX3JlbGVhc2VfZGV2LFxcbiA1ODM6XFx0XFx0Lm9wZW5fZGV2aWNlXFx0PSB2ZmlvX2ZzbF9tY19vcGVuX2RldmljZSxcXG4gNTg0OlxcdFxcdC5jbG9zZV9kZXZpY2VcXHQ9IHZmaW9fZnNsX21jX2Nsb3NlX2RldmljZSxcXG4gNTg1OlxcdFxcdC5pb2N0bFxcdFxcdD0gdmZpb19mc2xfbWNfaW9jdGwsXFxuIDU4NjpcXHRcXHQuZ2V0X3JlZ2lvbl9pbmZvX2NhcHMgPSB2ZmlvX2ZzbF9tY19pb2N0bF9nZXRfcmVnaW9uX2luZm8sXFxuIDU4NzpcXHRcXHQucmVhZFxcdFxcdD0gdmZpb19mc2xfbWNfcmVhZCxcXG4gNTg4OlxcdFxcdC53cml0ZVxcdFxcdD0gdmZpb19mc2xfbWNfd3JpdGUsXFxuIDU4OTpcXHRcXHQubW1hcFxcdFxcdD0gdmZpb19mc2xfbWNfbW1hcCxcXG4gNTkwOlxcdFxcdC5iaW5kX2lvbW11ZmRcXHQ9IHZmaW9faW9tbXVmZF9waHlzaWNhbF9iaW5kLFxcbiA1OTE6XFx0XFx0LnVuYmluZF9pb21tdWZkXFx0PSB2ZmlvX2lvbW11ZmRfcGh5c2ljYWxfdW5iaW5kLFxcbiA1OTI6XFx0XFx0LmF0dGFjaF9pb2FzXFx0PSB2ZmlvX2lvbW11ZmRfcGh5c2ljYWxfYXR0YWNoX2lvYXMsXFxuIDU5MzpcXHRcXHQuZGV0YWNoX2lvYXNcXHQ9IHZmaW9faW9tbXVmZF9waHlzaWNhbF9kZXRhY2hfaW9hcyxcXG4gNTk0OlxcdH07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjIwOjM1LjEzMjYyNTQyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0Nzc4MTQ3MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKlZGSU8tRlNMIE1DIERldmljZSBQcm9iaW5nOiBBIERlZXBlciBEaXZlKipcblxuT2theSwgc28gYHZmaW9fZnNsX21jX3Byb2JlYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBnZXRzIGludm9rZWQgd2hlbiB0aGUgc3lzdGVtIHJlY29nbml6ZXMgdGhhdCBhIGBzdHJ1Y3QgZnNsX21jX2RldmljZWAgaGFzIHBhaXJlZCB3aXRoIHRoZSBgdmZpb19mc2xfbWNfZHJpdmVyYC4gVGhhdCBtdWNoIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gQnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzOiAqd2hlcmUqIGFyZSB0aGVzZSBgc3RydWN0IGZzbF9tY19kZXZpY2VgIGluc3RhbmNlcyBhY3R1YWxseSBiZWluZyBpbnN0YW50aWF0ZWQgYW5kIHJlZ2lzdGVyZWQgd2l0aGluIHRoZSBrZXJuZWw/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXZpY2UgY3JlYXRpb24gbGlmZWN5Y2xlLlxuXG5UaGUgc3RhbmRhcmQgYXBwcm9hY2ggdG8gdHJhY2sgZG93biB0aGUgYW5zd2VyIGlzIHRvIHNlZSB3aGVyZSBgZnNsX21jX2RldmljZV9hZGRgIGdldHMgY2FsbGVkLiBUaGlzIHNob3VsZCBsZWFkIG1lIHRvIHRoZSByZWxldmFudCBpbml0aWFsaXphdGlvbiBjb2RlLCBhbmQgdGhlIGNyZWF0aW9uIG9mIHRob3NlIGNyaXRpY2FsIGBzdHJ1Y3QgZnNsX21jX2RldmljZWAgc3RydWN0dXJlcy4gTGV0J3MgdHJhY2UgdGhvc2UgZnVuY3Rpb24gY2FsbHMgYW5kIHdvcmsgZnJvbSB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY3OTksIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjIwOjM3LjYxMDQ0NDI5OVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3Mzg3OTcwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmc2xfbWNfZGV2aWNlX2FkZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz0xNjk9c3RhdGljIHZvaWQgZnNsX21jX29ial9kZXZpY2VfYWRkKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2LFxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTgyLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTgzOlxcdFxcdGVycm9yID0gZnNsX21jX2RldmljZV9hZGQob2JqX2Rlc2MsIE5VTEwsIFxcdTAwMjZtY19idXNfZGV2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTg0LVxcdFxcdFxcdFxcdFxcdCAgXFx1MDAyNmNoaWxkX2Rldik7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTczNz1zdGF0aWMgdm9pZCBmc2xfbWNfZGV2aWNlX3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03NTEtICovXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo3NTI6aW50IGZzbF9tY19kZXZpY2VfYWRkKHN0cnVjdCBmc2xfbWNfb2JqX2Rlc2MgKm9ial9kZXNjLFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzUzLVxcdFxcdCAgICAgIHN0cnVjdCBmc2xfbWNfaW8gKm1jX2lvLFxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04NzktfVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODgwOkVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19kZXZpY2VfYWRkKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg4MS1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MTAzOT1zdGF0aWMgaW50IGZzbF9tY19idXNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTE1Ny1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjExNTg6XFx0ZXJyb3IgPSBmc2xfbWNfZGV2aWNlX2FkZChcXHUwMDI2b2JqX2Rlc2MsIG1jX2lvLCBcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXHUwMDI2bWNfYnVzX2Rldik7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMTU5LVxcdGlmIChlcnJvciBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaD02MDE9c3RydWN0IGZzbF9tY19idXMge1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmgtNjEzLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oOjYxNDppbnQgX19tdXN0X2NoZWNrIGZzbF9tY19kZXZpY2VfYWRkKHN0cnVjdCBmc2xfbWNfb2JqX2Rlc2MgKm9ial9kZXNjLFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTYxNS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZnNsX21jX2lvICptY19pbyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MjA6MzkuMjg0MzQ4Mzk3WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyOTQ4MjIwMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb24sIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6XG5cbioqRGlzc2VjdGluZyB0aGUgZnNsX21jX2J1c19wcm9iZSBGdW5jdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGBmc2xfbWNfYnVzX3Byb2JlYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiAqd2hlcmUqIGl0J3MgY2FsbGVkIGFuZCAqd2h5Ki4gSXQgbG9va3MgbGlrZSB0aGUgcGxhdGZvcm0gZHJpdmVyIGBmc2xfbWNfYnVzX2RyaXZlcmAgaXMgdGhlIGtleS4gUmlnaHQsIGl0J3MgbWF0Y2hpbmcgZWl0aGVyIHRoZSBgb2ZfZGV2aWNlX2lkYCBzdHJpbmcgXCJmc2wscW9yaXEtbWNcIiAoYSB0eXBpY2FsIERldmljZSBUcmVlIG1hdGNoKSBvciB0aGUgYGFjcGlfZGV2aWNlX2lkYCBzdHJpbmcgXCJOWFAwMDA4XCIgKGZvciBBQ1BJLWJhc2VkIHN5c3RlbXMpLiBFeGNlbGxlbnQsIHRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhlIHNjb3BlIG9mIGRldmljZXMgaXQncyBtZWFudCB0byBoYW5kbGUuXG5cbk5vdywgbGV0J3Mgc3RlcCB0aHJvdWdoIHRoZSBwcm9iZSBmdW5jdGlvbiBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHRoZSByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZS4gV2hhdCdzIGl0IGRvaW5nIHdpdGggdGhvc2UgbWF0Y2hlZCBkZXZpY2VzPyBXaGVyZSBkb2VzIGl0IGdvIGZyb20gaGVyZT8gVGhlIHJlYWwgd29yayBoYXBwZW5zIGluc2lkZSBvZiBgZnNsX21jX2J1c19wcm9iZWAgaXRzZWxmLiBUaW1lIHRvIGRpZyBpbiBhbmQgb2JzZXJ2ZSB3aGF0IG9jY3Vycy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc4MDQsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyMDo0Mi41NzkxNzMzMTZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyOTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTAzOSxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTAzOTpcXHRzdGF0aWMgaW50IGZzbF9tY19idXNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4xMDQwOlxcdHtcXG4xMDQxOlxcdFxcdHN0cnVjdCBmc2xfbWNfb2JqX2Rlc2Mgb2JqX2Rlc2M7XFxuMTA0MjpcXHRcXHRpbnQgZXJyb3I7XFxuMTA0MzpcXHRcXHRzdHJ1Y3QgZnNsX21jICptYztcXG4xMDQ0OlxcdFxcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2ID0gTlVMTDtcXG4xMDQ1OlxcdFxcdHN0cnVjdCBmc2xfbWNfaW8gKm1jX2lvID0gTlVMTDtcXG4xMDQ2OlxcdFxcdGludCBjb250YWluZXJfaWQ7XFxuMTA0NzpcXHRcXHRwaHlzX2FkZHJfdCBtY19wb3J0YWxfcGh5c19hZGRyO1xcbjEwNDg6XFx0XFx0dTMyIG1jX3BvcnRhbF9zaXplLCBtY19zdHJlYW1faWQ7XFxuMTA0OTpcXHRcXHRzdHJ1Y3QgcmVzb3VyY2UgKnBsYXRfcmVzO1xcbjEwNTA6XFx0XFxuMTA1MTpcXHRcXHRtYyA9IGRldm1fa3phbGxvYyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBzaXplb2YoKm1jKSwgR0ZQX0tFUk5FTCk7XFxuMTA1MjpcXHRcXHRpZiAoIW1jKVxcbjEwNTM6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuMTA1NDpcXHRcXG4xMDU1OlxcdFxcdHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIG1jKTtcXG4xMDU2OlxcdFxcbjEwNTc6XFx0XFx0cGxhdF9yZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDEpO1xcbjEwNTg6XFx0XFx0aWYgKHBsYXRfcmVzKSB7XFxuMTA1OTpcXHRcXHRcXHRtYy1cXHUwMDNlZnNsX21jX3JlZ3MgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9yZXMpO1xcbjEwNjA6XFx0XFx0XFx0aWYgKElTX0VSUihtYy1cXHUwMDNlZnNsX21jX3JlZ3MpKVxcbjEwNjE6XFx0XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIobWMtXFx1MDAzZWZzbF9tY19yZWdzKTtcXG4xMDYyOlxcdFxcdH1cXG4xMDYzOlxcdFxcbjEwNjQ6XFx0XFx0aWYgKG1jLVxcdTAwM2Vmc2xfbWNfcmVncykge1xcbjEwNjU6XFx0XFx0XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0FDUEkpIFxcdTAwMjZcXHUwMDI2ICFkZXZfb2Zfbm9kZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KSkge1xcbjEwNjY6XFx0XFx0XFx0XFx0bWNfc3RyZWFtX2lkID0gcmVhZGwobWMtXFx1MDAzZWZzbF9tY19yZWdzICsgRlNMX01DX0ZBUFIpO1xcbjEwNjc6XFx0XFx0XFx0XFx0LypcXG4xMDY4OlxcdFxcdFxcdFxcdCAqIEhXIE9ScyB0aGUgUEwgYW5kIEJNVCBiaXQsIHBsYWNlcyB0aGUgcmVzdWx0IGluIGJpdFxcbjEwNjk6XFx0XFx0XFx0XFx0ICogMTQgb2YgdGhlIFN0cmVhbUlEIGFuZCBPUnMgaW4gdGhlIElDSUQuIENhbGN1bGF0ZSBpdFxcbjEwNzA6XFx0XFx0XFx0XFx0ICogYWNjb3JkaW5nbHkuXFxuMTA3MTpcXHRcXHRcXHRcXHQgKi9cXG4xMDcyOlxcdFxcdFxcdFxcdG1jX3N0cmVhbV9pZCA9IChtY19zdHJlYW1faWQgXFx1MDAyNiAweGZmZmYpIHxcXG4xMDczOlxcdFxcdFxcdFxcdFxcdCgobWNfc3RyZWFtX2lkIFxcdTAwMjYgKE1DX0ZBUFJfUEwgfCBNQ19GQVBSX0JNVCkpID9cXG4xMDc0OlxcdFxcdFxcdFxcdFxcdFxcdEJJVCgxNCkgOiAwKTtcXG4xMDc1OlxcdFxcdFxcdFxcdGVycm9yID0gYWNwaV9kbWFfY29uZmlndXJlX2lkKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuMTA3NjpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBERVZfRE1BX0NPSEVSRU5ULFxcbjEwNzc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNm1jX3N0cmVhbV9pZCk7XFxuMTA3ODpcXHRcXHRcXHRcXHRpZiAoZXJyb3IgPT0gLUVQUk9CRV9ERUZFUilcXG4xMDc5OlxcdFxcdFxcdFxcdFxcdHJldHVybiBlcnJvcjtcXG4xMDgwOlxcdFxcdFxcdFxcdGlmIChlcnJvcilcXG4xMDgxOlxcdFxcdFxcdFxcdFxcdGRldl93YXJuKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuMTA4MjpcXHRcXHRcXHRcXHRcXHRcXHQgXFxcImZhaWxlZCB0byBjb25maWd1cmUgZG1hOiAlZC5cXFxcblxcXCIsXFxuMTA4MzpcXHRcXHRcXHRcXHRcXHRcXHQgZXJyb3IpO1xcbjEwODQ6XFx0XFx0XFx0fVxcbjEwODU6XFx0XFxuMTA4NjpcXHRcXHRcXHQvKlxcbjEwODc6XFx0XFx0XFx0ICogU29tZSBib290bG9hZGVycyBwYXVzZSB0aGUgTUMgZmlybXdhcmUgYmVmb3JlIGJvb3RpbmcgdGhlXFxuMTA4ODpcXHRcXHRcXHQgKiBrZXJuZWwgc28gdGhhdCBNQyB3aWxsIG5vdCBjYXVzZSBmYXVsdHMgYXMgc29vbiBhcyB0aGVcXG4xMDg5OlxcdFxcdFxcdCAqIFNNTVUgcHJvYmVzIGR1ZSB0byB0aGUgZmFjdCB0aGF0IHRoZXJlJ3Mgbm8gY29uZmlndXJhdGlvblxcbjEwOTA6XFx0XFx0XFx0ICogaW4gcGxhY2UgZm9yIE1DLlxcbjEwOTE6XFx0XFx0XFx0ICogQXQgdGhpcyBwb2ludCBNQyBzaG91bGQgaGF2ZSBhbGwgaXRzIFNNTVUgc2V0dXAgZG9uZSBzbyBtYWtlXFxuMTA5MjpcXHRcXHRcXHQgKiBzdXJlIGl0IGlzIHJlc3VtZWQuXFxuMTA5MzpcXHRcXHRcXHQgKi9cXG4xMDk0OlxcdFxcdFxcdHdyaXRlbChyZWFkbChtYy1cXHUwMDNlZnNsX21jX3JlZ3MgKyBGU0xfTUNfR0NSMSkgXFx1MDAyNlxcbjEwOTU6XFx0XFx0XFx0XFx0ICAgICAofihHQ1IxX1AxX1NUT1AgfCBHQ1IxX1AyX1NUT1ApKSxcXG4xMDk2OlxcdFxcdFxcdCAgICAgICBtYy1cXHUwMDNlZnNsX21jX3JlZ3MgKyBGU0xfTUNfR0NSMSk7XFxuMTA5NzpcXHRcXHR9XFxuMTA5ODpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MjA6NDIuNTc5MzM3NTE2WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg4NTM2MjE2ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVW5mdXp6YWJsZSBDb2RlIFBhdGggRGV0ZWN0ZWQ6IHZmaW9fZnNsX21jIERyaXZlciBvbiBhbWQ2NCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgYW5hbHlzaXMgdGVsbHMgbWUgdGhhdCB0aGUgY29kZSBiZWluZyBtb2RpZmllZCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jYCwgaXMgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4gVGhlIHBhdGNoIHRvdWNoZXMgYHZmaW9fZnNsX21jX21tYXAoKWAgd2hpY2ggaXMgcGFydCBvZiB0aGUgVkZJTyBkcml2ZXIgZm9yIHRoZSBGcmVlc2NhbGUgTWFuYWdlbWVudCBDb21wbGV4IChmc2wtbWMpIGJ1cy4gVGhpcyBgZnNsLW1jYCBkcml2ZXIgZGlyZWN0bHkgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlLCByZWFkaW5nIGFuZCB3cml0aW5nIHRvIHJlZ2lzdGVycyBhbmQgY29tbXVuaWNhdGluZyB3aXRoIHRoZSBNYW5hZ2VtZW50IENvbXBsZXguIFRoZSBpc3N1ZSBpcyB0aGlzOiB0aGlzIGhhcmR3YXJlIGlzIHZlbmRvci1zcGVjaWZpYywgb25seSBwcmVzZW50IG9uIE5YUCBMYXllcnNjYXBlIFNvQ3MuXG5cbk5vdywgY29uc2lkZXIgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmU6IGBhbWQ2NGAuIE9uIGBhbWQ2NGAsIHRoZXJlIGlzIG5vIHdheSBmb3IgUUVNVSBvciBhbnkgc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnQgKGxpa2UgR0NFKSB0byBlbXVsYXRlIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUuIEV2ZW4gb24gQVJNNjQsIHRoZSBlbXVsYXRpb24gaXNuJ3QgcHJlc2VudCwgYW5kIG9uIGBhbWQ2NGAsIHRoZSByZWxldmFudCBhcmNoaXRlY3R1cmUgY29uZmlndXJhdGlvbiAoYEFSQ0hfTEFZRVJTQ0FQRWApIGlzIG5vdCBldmVuIGF2YWlsYWJsZSB1bmxlc3Mgc3BlY2lmaWNhbGx5IGNvbXBpbGVkIGZvciBhIHRlc3Qgc2NlbmFyaW8gKGBDT01QSUxFX1RFU1RgKSwgZXZlbiB0aGVuLCB0aGlzIGhhcmR3YXJlIGRvZXMgbm90IGV4aXN0IGluIHRoZXNlIGVudmlyb25tZW50cy4gXG5cbkxvb2tpbmcgYXQgdGhlIE5lZ2F0aXZlIENyaXRlcmlhIGluIHNlY3Rpb24gMiwgdGhpcyBjbGVhcmx5IGZhbGxzIHVuZGVyIFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgYXMgaXQgZGVhbHMgd2l0aCBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBjb21wb25lbnQgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEZ1cnRoZXJtb3JlLCBcIlJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFXCIsIGFuZCBzaW5jZSB0aGlzIGNvZGUgY2Fubm90IGJlIGV4ZWN1dGVkIGluIHN0YW5kYXJkIGVudmlyb25tZW50cywgZnV6emluZyBpcyBwb2ludGxlc3MuXG5cblRoZSBkaWZmIGNvbmZpcm1zIHRoYXQgdGhlIHBhdGNoIG9ubHkgdG91Y2hlcyBgdmZpb19mc2xfbWMuY2AuIFRoZSBjaGFuZ2Ugd2l0aGluIGB2ZmlvX2ZzbF9tY19tbWFwKClgIGlzIGZvY3VzZWQgb24gbWVtb3J5IHByb3RlY3Rpb24gZmxhZ3MuIEhvd2V2ZXIsIGl0cyBleGVjdXRpb24gaXMgY29udGluZ2VudCBvbiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSwgd2hpY2ggaXMgaW5hY2Nlc3NpYmxlIGluIG91ciBmdXp6aW5nIGVudmlyb25tZW50LlxuXG5UaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMgb24gYW1kNjQuIFxuXG5UaGUgYHNldC1yZXN1bHRzYCB3aWxsIG5lZWQgdGhlc2UgdmFsdWVzOlxuLSAgIGBXb3J0aEZ1enppbmdgOiBmYWxzZVxuLSAgIGBGb2N1c1N5bWJvbHNgOiBbXSAob3IgbnVsbC9lbXB0eSlcbi0gICBgRW5hYmxlQ29uZmlnc2A6IFtdIChvciBudWxsL2VtcHR5KVxuLSAgIGBSZWFzb25pbmdgOiBDb25jaXNlIGV4cGxhbmF0aW9uIG9mIHdoeSBpdCBpcyBub3Qgd29ydGggZnV6emluZy5cbiAgICAxLiAgVGhlIHBhdGNoIG1vZGlmaWVzIGB2ZmlvX2ZzbF9tY19tbWFwKClgIGluIGBkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNgLlxuICAgIDIuICBUaGlzIGRyaXZlciBwcm92aWRlcyBWRklPIHN1cHBvcnQgZm9yIE5YUC9GcmVlc2NhbGUgUW9ySVEgRFBBQTIgTWFuYWdlbWVudCBDb21wbGV4IChgZnNsLW1jYCkgYnVzIGRldmljZXMgZm91bmQgb24gTGF5ZXJzY2FwZSBTb0NzLlxuICAgIDMuICBJdCByZXF1aXJlcyBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgKEZyZWVzY2FsZSBNQyBhcmNoaXRlY3R1cmUpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cywgYW5kIGlzIHBhcnRpY3VsYXJseSB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYGFtZDY0YCkuXG4gICAgNC4gIFNpbmNlIHRoZSBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSwgZnV6emluZyBjYW5ub3QgZXhlY3V0ZSB0aGlzIGNvZGUgcGF0aC5cblxuQWxyaWdodCwgdGhhdCdzIG15IGNhbGwuIExldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkyMjcsIk91dHB1dFRva2VucyI6MTM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTEyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MjA6NTEuNDMyOTYxOTM5WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ5ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHZmaW9fZnNsX21jX21tYXBgIGluIGBkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNgLCB3aGljaCBwcm92aWRlcyBWRklPIHN1cHBvcnQgZm9yIE5YUC9GcmVlc2NhbGUgUW9ySVEgRFBBQTIgTWFuYWdlbWVudCBDb21wbGV4IChmc2wtbWMpIGJ1cyBkZXZpY2VzLiBUaGlzIHJlcXVpcmVzIHBoeXNpY2FsIE5YUCBMYXllcnNjYXBlIFNvQyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gdGhlIHRhcmdldCBhbWQ2NCBhcmNoaXRlY3R1cmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgdmZpb19mc2xfbWNfbW1hcGAgaW4gYGRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuY2AsIHdoaWNoIHByb3ZpZGVzIFZGSU8gc3VwcG9ydCBmb3IgTlhQL0ZyZWVzY2FsZSBRb3JJUSBEUEFBMiBNYW5hZ2VtZW50IENvbXBsZXggKGZzbC1tYykgYnVzIGRldmljZXMuIFRoaXMgcmVxdWlyZXMgcGh5c2ljYWwgTlhQIExheWVyc2NhcGUgU29DIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFtZDY0IGFyY2hpdGVjdHVyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjIwOjUxLjQzMjk5MDUyOVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowdg5l9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-04 08:17:39 +0000 UTC FinishedAt: 2026-09-04 08:20:53 +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+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHZmaW9fZnNsX21jX21tYXBgIGluIGBkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNgLCB3aGljaCBwcm92aWRlcyBWRklPIHN1cHBvcnQgZm9yIE5YUC9GcmVlc2NhbGUgUW9ySVEgRFBBQTIgTWFuYWdlbWVudCBDb21wbGV4IChmc2wtbWMpIGJ1cyBkZXZpY2VzLiBUaGlzIHJlcXVpcmVzIHBoeXNpY2FsIE5YUCBMYXllcnNjYXBlIFNvQyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gdGhlIHRhcmdldCBhbWQ2NCBhcmNoaXRlY3R1cmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjE5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjAwMzRjOTc0YTk0MWMxOWNmN2IyMDNkNjdiYmI0NmRjMTg2ODI1ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgU2VwIDQgMDg6MTk6NTcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jIGIvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXG5pbmRleCBiNGMzOTU4MjAxYjI1Li44NWY0NzlkYjkzNmM2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNcbkBAIC00MDcsNiAmIzQzOzQwNywxMCBAQCBzdGF0aWMgaW50IHZmaW9fZnNsX21jX21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4gXHRcdFx0XHUwMDI2XHUwMDI2ICh2bWEtXHUwMDNldm1fZmxhZ3MgXHUwMDI2IFZNX1dSSVRFKSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4mIzQzO1x0LyogUHJldmVudCByZWFkLW9ubHkgcmVnaW9uIG1hcHBpbmdzIGZyb20gYmVpbmcgdXBncmFkZWQgd2l0aCBtcHJvdGVjdCgpICovXG4mIzQzO1x0aWYgKCEodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFKSlcbiYjNDM7XHRcdHZtX2ZsYWdzX2NsZWFyKHZtYSwgVk1fTUFZV1JJVEUpO1xuJiM0MztcbiBcdHZtYS1cdTAwM2V2bV9wcml2YXRlX2RhdGEgPSBtY19kZXY7XG4gXG4gXHRyZXR1cm4gdmZpb19mc2xfbWNfbW1hcF9tbWlvKHZkZXYtXHUwMDNlcmVnaW9uc1tpbmRleF0sIHZtYSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHZmaW9fZnNsX21jX21tYXBgIGluIGBkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNgLCB3aGljaCBwcm92aWRlcyBWRklPIHN1cHBvcnQgZm9yIE5YUC9GcmVlc2NhbGUgUW9ySVEgRFBBQTIgTWFuYWdlbWVudCBDb21wbGV4IChmc2wtbWMpIGJ1cyBkZXZpY2VzLiBUaGlzIHJlcXVpcmVzIHBoeXNpY2FsIE5YUCBMYXllcnNjYXBlIFNvQyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gdGhlIHRhcmdldCBhbWQ2NCBhcmNoaXRlY3R1cmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjAwMzRjOTc0YTk0MWMxOWNmN2IyMDNkNjdiYmI0NmRjMTg2ODI1ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgU2VwIDQgMDg6MTk6NTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMgYi9kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMKaW5kZXggYjRjMzk1ODIwMWIyNS4uODVmNDc5ZGI5MzZjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYwpAQCAtNDA3LDYgJiM0Mzs0MDcsMTAgQEAgc3RhdGljIGludCB2ZmlvX2ZzbF9tY19tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LAogCQkJJmFtcDsmYW1wOyAodm1hLSZndDt2bV9mbGFncyAmYW1wOyBWTV9XUklURSkpCiAJCXJldHVybiAtRUlOVkFMOwogCiYjNDM7CS8qIFByZXZlbnQgcmVhZC1vbmx5IHJlZ2lvbiBtYXBwaW5ncyBmcm9tIGJlaW5nIHVwZ3JhZGVkIHdpdGggbXByb3RlY3QoKSAqLwomIzQzOwlpZiAoISh2ZGV2LSZndDtyZWdpb25zW2luZGV4XS5mbGFncyAmYW1wOyBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpKQomIzQzOwkJdm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7CiYjNDM7CiAJdm1hLSZndDt2bV9wcml2YXRlX2RhdGEgPSBtY19kZXY7CiAKIAlyZXR1cm4gdmZpb19mc2xfbWNfbW1hcF9tbWlvKHZkZXYtJmd0O3JlZ2lvbnNbaW5kZXhdLCB2bWEpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTYxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYHZmaW9fZnNsX21jYCBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jYC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBvciBoYXJkd2FyZSB0aGlzIGlzIHRpZWQgdG8uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgc29tZXRoaW5nIHNwZWNpZmljIHRvIEZyZWVzY2FsZSBNYW5hZ2VtZW50IENvbXBsZXggKEZNQykgaGFyZHdhcmUsIG9yIGlmIGl0IGhhcyBzb21lIGJyb2FkZXIgaW1wbGljYXRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSByZWxhdGVkIGJ1aWxkIGNvbmZpZ3VyYXRpb24uCgpJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyBlaXRoZXIgdGhlIGBLY29uZmlnYCBvciB0aGUgYE1ha2VmaWxlYCBpbiB0aGUgc2FtZSBkaXJlY3RvcnksIHNwZWNpZmljYWxseSBgZHJpdmVycy92ZmlvL2ZzbC1tYy9gLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBjb25kaXRpb25hbCBidWlsZCBsb2dpYywgd2hpY2ggaXMgY3J1Y2lhbC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBjb2RlIGlzIGV2ZW4gKnJlYWNoYWJsZSogb24gYW1kNjQsIG9yIGlmIGl0JiMzOTtzIHN0cmljdGx5IGEgZGVkaWNhdGVkIGhhcmR3YXJlIHJlcXVpcmVtZW50LiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhpcyBiZWZvcmUgSSBnbyBhbnkgZnVydGhlci4KClRvIHF1aWNrbHkgZ2V0IGEgZmVlbCBmb3IgaG93IGB2ZmlvX2ZzbF9tY2AgaXMgY29uZmlndXJlZCwgSSBzaG91bGQgYmUgYWJsZSB0byBncmVwIGZvciBhbnkgS2NvbmZpZyBvcHRpb25zIHRoYXQgbWlnaHQgYmUgcmVsYXRlZC4gVGhpcyBzaG91bGQgcXVpY2tseSBoaWdobGlnaHQgd2hpY2ggY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIGRlcGVuZGVuY2llcyBhY3RpdmF0ZSB0aGlzIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7VkZJT19GU0xfTUMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL01ha2VmaWxlPTE2PW9iai0kKENPTkZJR19WRklPX01ERVYpICYjNDM7PSBtZGV2L1xuZHJpdmVycy92ZmlvL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19WRklPX0ZTTF9NQykgJiM0Mzs9IGZzbC1tYy9cbmRyaXZlcnMvdmZpby9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfVkZJT19DRFgpICYjNDM7PSBjZHgvXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnPTE9bWVudSBcJiMzNDtWRklPIHN1cHBvcnQgZm9yIEZTTF9NQyBidXMgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZy0zLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnOjQ6Y29uZmlnIFZGSU9fRlNMX01DXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWctNS1cdHRyaXN0YXRlIFwmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgUW9ySVEgRFBBQTIgZnNsLW1jIGJ1cyBkZXZpY2VzXCYjMzQ7XG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy9NYWtlZmlsZT0zPXZmaW8tZnNsLW1jLXkgOj0gdmZpb19mc2xfbWMubyB2ZmlvX2ZzbF9tY19pbnRyLm9cbmRyaXZlcnMvdmZpby9mc2wtbWMvTWFrZWZpbGU6NDpvYmotJChDT05GSUdfVkZJT19GU0xfTUMpICYjNDM7PSB2ZmlvLWZzbC1tYy5vXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTk3PXN0YXRpYyB2b2lkIHZmaW9fZnNsX21jX2Nsb3NlX2RldmljZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtMTEyLVx0XHRkZXZfd2FybihcdTAwMjZtY19jb250LVx1MDAzZWRldixcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzoxMTM6XHRcdFx0IFwmIzM0O1ZGSU9fRlNMX01DOiByZXNldCBkZXZpY2UgaGFzIGZhaWxlZCAoJWQpXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTExNC1cbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9MTIwPXN0YXRpYyBpbnQgdmZpb19mc2xfbWNfaW9jdGxfZ2V0X3JlZ2lvbl9pbmZvKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0xMzEtXHQvKiBtYXAgb2Zmc2V0IHRvIHRoZSBwaHlzaWNhbCBhZGRyZXNzICAqL1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjEzMjpcdGluZm8tXHUwMDNlb2Zmc2V0ID0gVkZJT19GU0xfTUNfSU5ERVhfVE9fT0ZGU0VUKGluZm8tXHUwMDNlaW5kZXgpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTEzMy1cdGluZm8tXHUwMDNlc2l6ZSA9IHZkZXYtXHUwMDNlcmVnaW9uc1tpbmZvLVx1MDAzZWluZGV4XS5zaXplO1xuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz0yMzQ9c3RhdGljIHNzaXplX3QgdmZpb19mc2xfbWNfcmVhZChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldiwgY2hhciBfX3VzZXIgKmJ1Zixcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtMjM4LVx0XHRjb250YWluZXJfb2YoY29yZV92ZGV2LCBzdHJ1Y3QgdmZpb19mc2xfbWNfZGV2aWNlLCB2ZGV2KTtcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzoyMzk6XHR1bnNpZ25lZCBpbnQgaW5kZXggPSBWRklPX0ZTTF9NQ19PRkZTRVRfVE9fSU5ERVgoKnBwb3MpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjI0MDpcdGxvZmZfdCBvZmYgPSAqcHBvcyBcdTAwMjYgVkZJT19GU0xfTUNfT0ZGU0VUX01BU0s7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtMjQxLVx0c3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldiA9IHZkZXYtXHUwMDNlbWNfZGV2O1xuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz0zMTI9c3RhdGljIHNzaXplX3QgdmZpb19mc2xfbWNfd3JpdGUoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTMxNy1cdFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSwgdmRldik7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6MzE4Olx0dW5zaWduZWQgaW50IGluZGV4ID0gVkZJT19GU0xfTUNfT0ZGU0VUX1RPX0lOREVYKCpwcG9zKTtcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzozMTk6XHRsb2ZmX3Qgb2ZmID0gKnBwb3MgXHUwMDI2IFZGSU9fRlNMX01DX09GRlNFVF9NQVNLO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTMyMC1cdHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYgPSB2ZGV2LVx1MDAzZW1jX2Rldjtcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9MzUzPXN0YXRpYyBpbnQgdmZpb19mc2xfbWNfbW1hcF9tbWlvKHN0cnVjdCB2ZmlvX2ZzbF9tY19yZWdpb24gcmVnaW9uLFxuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0zNjAtXHRwZ29mZiA9IHZtYS1cdTAwM2V2bV9wZ29mZiBcdTAwMjZcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzozNjE6XHRcdCgoMVUgXHUwMDNjXHUwMDNjIChWRklPX0ZTTF9NQ19PRkZTRVRfU0hJRlQgLSBQQUdFX1NISUZUKSkgLSAxKTtcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0zNjItXHRiYXNlID0gcGdvZmYgXHUwMDNjXHUwMDNjIFBBR0VfU0hJRlQ7XG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTM3OD1zdGF0aWMgaW50IHZmaW9fZnNsX21jX21tYXAoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYsXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTM4NS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzozODY6XHRpbmRleCA9IHZtYS1cdTAwM2V2bV9wZ29mZiBcdTAwM2VcdTAwM2UgKFZGSU9fRlNMX01DX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTM4Ny1cbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9NDIwPXN0YXRpYyBpbnQgdmZpb19mc2xfbWNfYnVzX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQzMS1cdFx0aWYgKGRldmljZV9zZXRfZHJpdmVyX292ZXJyaWRlKGRldiwgdmZpb19mc2xfbWNfb3BzLm5hbWUpKVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjQzMjpcdFx0XHRkZXZfd2FybihkZXYsIFwmIzM0O1ZGSU9fRlNMX01DOiBTZXR0aW5nIGRyaXZlciBvdmVycmlkZSBmb3IgZGV2aWNlIGluIGRwcmMgJXMgZmFpbGVkXFxuXCYjMzQ7LFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQzMy1cdFx0XHRcdCBkZXZfbmFtZShcdTAwMjZtY19jb250LVx1MDAzZWRldikpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQzNC1cdFx0ZWxzZVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjQzNTpcdFx0XHRkZXZfaW5mbyhkZXYsIFwmIzM0O1ZGSU9fRlNMX01DOiBTZXR0aW5nIGRyaXZlciBvdmVycmlkZSBmb3IgZGV2aWNlIGluIGRwcmMgJXNcXG5cJiMzNDssXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDM2LVx0XHRcdFx0IGRldl9uYW1lKFx1MDAyNm1jX2NvbnQtXHUwMDNlZGV2KSk7XG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ0MS1cdFx0aWYgKG1jX2RydiBcdTAwMjZcdTAwMjYgbWNfZHJ2ICE9IFx1MDAyNnZmaW9fZnNsX21jX2RyaXZlcilcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzo0NDI6XHRcdFx0ZGV2X3dhcm4oZGV2LCBcJiMzNDtWRklPX0ZTTF9NQzogT2JqZWN0ICVzIGJvdW5kIHRvIGRyaXZlciAlcyB3aGlsZSBEUFJDIGJvdW5kIHRvIHZmaW8tZnNsLW1jXFxuXCYjMzQ7LFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ0My1cdFx0XHRcdCBkZXZfbmFtZShkZXYpLCBtY19kcnYtXHUwMDNlZHJpdmVyLm5hbWUpO1xuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz00NDk9c3RhdGljIGludCB2ZmlvX2ZzbF9tY19pbml0X2RldmljZShzdHJ1Y3QgdmZpb19mc2xfbWNfZGV2aWNlICp2ZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy00NjktXHRpZiAocmV0KSB7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6NDcwOlx0XHRkZXZfZXJyKFx1MDAyNm1jX2Rldi1cdTAwM2VkZXYsIFwmIzM0O1ZGSU9fRlNMX01DOiBGYWlsZWQgdG8gc2V0dXAgRFBSQyAoJWQpXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ3MS1cdFx0Z290byBvdXRfbmNfdW5yZWc7XG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTQ4MD1zdGF0aWMgaW50IHZmaW9fZnNsX21jX3NjYW5fY29udGFpbmVyKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ4OS1cdFx0ZGV2X2VycihcdTAwMjZtY19kZXYtXHUwMDNlZGV2LFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjQ5MDpcdFx0XHRcJiMzNDtWRklPX0ZTTF9NQzogQ29udGFpbmVyIHNjYW5uaW5nIGZhaWxlZCAoJWQpXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ5MS1cdFx0ZHByY19yZW1vdmVfZGV2aWNlcyhtY19kZXYsIE5VTEwsIDApO1xuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz01MzA9c3RhdGljIGludCB2ZmlvX2ZzbF9tY19wcm9iZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy01NDItXHRpZiAocmV0KSB7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6NTQzOlx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7VkZJT19GU0xfTUM6IEZhaWxlZCB0byBhZGQgdG8gdmZpbyBncm91cFxcblwmIzM0Oyk7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNTQ0LVx0XHRnb3RvIG91dF9wdXRfdmRldjtcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaC02LVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmg6NzojaWZuZGVmIFZGSU9fRlNMX01DX1BSSVZBVEVfSFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmg6ODojZGVmaW5lIFZGSU9fRlNMX01DX1BSSVZBVEVfSFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmgtOS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oOjEwOiNkZWZpbmUgVkZJT19GU0xfTUNfT0ZGU0VUX1NISUZUICAgIDQwXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaDoxMTojZGVmaW5lIFZGSU9fRlNMX01DX09GRlNFVF9NQVNLICgoKHU2NCkoMSkgXHUwMDNjXHUwMDNjIFZGSU9fRlNMX01DX09GRlNFVF9TSElGVCkgLSAxKVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmgtMTItXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaDoxMzojZGVmaW5lIFZGSU9fRlNMX01DX09GRlNFVF9UT19JTkRFWChvZmYpICgob2ZmKSBcdTAwM2VcdTAwM2UgVkZJT19GU0xfTUNfT0ZGU0VUX1NISUZUKVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmgtMTQtXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaDoxNTojZGVmaW5lIFZGSU9fRlNMX01DX0lOREVYX1RPX09GRlNFVChpbmRleClcdFxcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaDoxNjpcdCgodTY0KShpbmRleCkgXHUwMDNjXHUwMDNjIFZGSU9fRlNMX01DX09GRlNFVF9TSElGVClcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oLTE3LVxuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oPTQ3PXZvaWQgdmZpb19mc2xfbWNfaXJxc19jbGVhbnVwKHN0cnVjdCB2ZmlvX2ZzbF9tY19kZXZpY2UgKnZkZXYpO1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmgtNDgtXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaDo0OTojZW5kaWYgLyogVkZJT19GU0xfTUNfUFJJVkFURV9IICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM5NQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6CgoqKkNoZWNraW5nIHRoZSBWRklPIEZTTC1NQyBLY29uZmlnIEZpbGUqKgoKT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGlzLiBUaGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBnb2luZyB0byBkbyBpcyB0YWtlIGEgbG9vayBhdCB0aGUgYGRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBhc3N1bWluZyB0aGVyZSYjMzk7cyBzb21lIGNvbmZpZ3VyYXRpb24gbG9naWMsIG1heWJlIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcywgb3IgZXZlbiBqdXN0IHNvbWUgYmFzaWMgZG9jdW1lbnRhdGlvbiBJIG5lZWQgdG8gcmV2aWV3LiBHaXZlbiB0aGUgY29udGV4dCwgSSBleHBlY3QgdGhpcyBgS2NvbmZpZ2AgZmlsZSBpcyBnb2luZyB0byBkaWN0YXRlIHRoZSBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byB0aGUgVkZJTyAoVmlydHVhbCBGdW5jdGlvbiBJL08pIGRyaXZlciBmb3IgdGhlIEZyZWVzY2FsZSAobm93IE5YUCkgTXVsdGktQ29yZSAoTUMpIGFyY2hpdGVjdHVyZS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2Ugd2hldGhlciBzcGVjaWZpYyBNQyBoYXJkd2FyZSBpcyBzdXBwb3J0ZWQsIGFueSBuZWNlc3NhcnkgZGV2aWNlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLCBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIGZlYXR1cmVzIG9yIGRyaXZlcnMsIGFuZCBob3cgdGhlIFZGSU8gZHJpdmVyIGludGVncmF0ZXMgd2l0aGluIHRoZSBicm9hZGVyIGZyYW1ld29yay4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgb3B0aW9ucyBvciBjb21waWxlLXRpbWUgY29uZmlndXJhdGlvbnMgSSBzaG91bGQgYmUgYXdhcmUgb2Ygb3IgYWRqdXN0LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHRtZW51IFwmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgRlNMX01DIGJ1cyBkZXZpY2VzXCYjMzQ7XG4gICAyOlx0XHRkZXBlbmRzIG9uIEZTTF9NQ19CVVNcbiAgIDM6XHRcbiAgIDQ6XHRjb25maWcgVkZJT19GU0xfTUNcbiAgIDU6XHRcdHRyaXN0YXRlIFwmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgUW9ySVEgRFBBQTIgZnNsLW1jIGJ1cyBkZXZpY2VzXCYjMzQ7XG4gICA2Olx0XHRzZWxlY3QgRVZFTlRGRFxuICAgNzpcdFx0aGVscFxuICAgODpcdFx0ICBEcml2ZXIgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHRoZSBWRklPIFFvcklRIERQQUEyIGZzbC1tY1xuICAgOTpcdFx0ICAoTWFuYWdlbWVudCBDb21wbGV4KSBkZXZpY2VzLiBUaGlzIGlzIHJlcXVpcmVkIHRvIHBhc3N0aHJvdWdoXG4gIDEwOlx0XHQgIGZzbC1tYyBidXMgZGV2aWNlcyB1c2luZyB0aGUgVkZJTyBmcmFtZXdvcmsuXG4gIDExOlx0XG4gIDEyOlx0XHQgIElmIHlvdSBkb24mIzM5O3Qga25vdyB3aGF0IHRvIGRvIGhlcmUsIHNheSBOLlxuICAxMzpcdFxuICAxNDpcdGVuZG1lbnVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODc3CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKktjb25maWcgRGl2ZSBmb3IgRlNMX01DX0JVUyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSBgRlNMX01DX0JVU2AgaXMgZGVmaW5lZCBhbmQgdXNlZCB3aXRoaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHN5c3RlbS4gVGhpcyBtZWFucyBJJiMzOTttIGdvaW5nIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRvIGEgZ2xvYmFsIHNlYXJjaCBhY3Jvc3MgdGhlIGtlcm5lbCBzb3VyY2UgdHJlZS4gSSYjMzk7bGwgbmVlZCB0byB1c2UgdG9vbHMgdG8gcXVpY2tseSBsb2NhdGUgYWxsIGluc3RhbmNlcyBvZiB0aGlzIHN5bWJvbC4gSSBleHBlY3QgSSYjMzk7bGwgd2FudCB0byBmaWx0ZXIgYmFzZWQgb24gZmlsZSBleHRlbnNpb24gYEtjb25maWdgIGZpbGVzIGFuZCBtYXkgbmVlZCBzb21lIGFkZGl0aW9uYWwgb3B0aW9ucyB0byBtYW5hZ2UgdGhlIHNlYXJjaCBwcm9jZXNzIGJhc2VkIG9uIHRoZSBzeXN0ZW0gaW4gd2hpY2ggdGhpcyBpcyBpbXBsZW1lbnRlZC4gVGhpcyB3aWxsIGxldCBtZSBzZWUgaXRzIGRlcGVuZGVuY2llcywgd2hvJiMzOTtzIGVuYWJsaW5nIGl0LCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zLiBVbmRlcnN0YW5kaW5nIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGxvZ2ljIGFyb3VuZCBgRlNMX01DX0JVU2AgaXMgY3J1Y2lhbCB0byBpdHMgYmVoYXZpb3IgYW5kIGltcGxpY2F0aW9ucyB3aXRoaW4gdGhlIGtlcm5lbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRlNMX01DX0JVUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZy03LVxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWc6ODpjb25maWcgRlNMX01DX0JVU1xuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctOS1cdGJvb2wgXCYjMzQ7UW9ySVEgRFBBQTIgZnNsLW1jIGJ1cyBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MTc5CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgcmVhZGluZyBgZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWdgOgoKKipBbmFseXppbmcgdGhlIEZTTCBNQyBLY29uZmlnIEZpbGUqKgoKT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIGBkcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZ2AgZmlsZS4gSSBpbW1lZGlhdGVseSByZWNvZ25pemUgdGhpcyBhcyBhIGNydWNpYWwgcGllY2UgZm9yIGNvbmZpZ3VyaW5nIHRoZSBGcmVlc2NhbGUgKG5vdyBOWFApIE11bHRpLUNvcmUgKE1DKSBkcml2ZXJzIHdpdGhpbiB0aGUga2VybmVsLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBncmFzcCB0aGUgc2NvcGUgb2Ygd2hhdCYjMzk7cyBiZWluZyBjb250cm9sbGVkIGhlcmUg4oCTIHdoYXQgb3B0aW9ucyBhcmUgcHJlc2VudGVkIHRvIHRoZSB1c2VyIGR1cmluZyB0aGUga2VybmVsIGJ1aWxkIHByb2Nlc3MsIGFuZCBob3cgYXJlIHRoZXkgc3RydWN0dXJlZD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGRpZmZlcmVudCBNQyBjb21wb25lbnRzLiBUaGlzIGZpbGUgbGlrZWx5IGRlZmluZXMgdGhlIGJ1aWxkLXRpbWUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBkZWZhdWx0cywgYW5kIHBvdGVudGlhbGx5IGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgc3Vic3lzdGVtcyBvciBmZWF0dXJlcy4KCkkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlOgoKKiAgICoqVG9wLWxldmVsIG9wdGlvbnM6KiogVGhlc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMgZm9yIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGUgb3ZlcmFsbCBGU0wgTUMgZHJpdmVyIHN1cHBvcnQuIFByb2JhYmx5IHNvbWV0aGluZyBsaWtlIGBDT05GSUdfRlNMX01DYC4KKiAgICoqU3ViLW9wdGlvbnM6KiogVGhlbiBJJiMzOTtsbCBiZSBzZWFyY2hpbmcgZm9yIG1vcmUgZ3JhbnVsYXIgb3B0aW9ucyB0aGF0IGFsbG93IHRoZSB1c2VyIHRvIHNlbGVjdCBzcGVjaWZpYyBGU0wgTUMgZGV2aWNlcywgZmVhdHVyZXMgKGUuZy4sIHNwZWNpZmljIGhhcmR3YXJlIHJldmlzaW9ucywgZnVuY3Rpb25hbGl0aWVzKSwgb3IgcHJvdG9jb2xzLiBUaGlzIGlzIHdoZXJlIEkmIzM5O2xsIGdldCBpbnRvIHRoZSBkZXRhaWxzIG9mIHdoYXQgRlNMIE1DIGFjdHVhbGx5IGJyaW5ncyB0byB0aGUgdGFibGUgYW5kIHdoYXQgcGFydHMgb2YgdGhlIHN5c3RlbSBhcmUgYWZmZWN0ZWQuCiogICAqKkRlcGVuZGVuY2llczoqKiBJIGFudGljaXBhdGUgc2VlaW5nIGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzLiBUaGVzZSBhcmUgY3JpdGljYWw7IHRoZXkgdGVsbCBtZSB3aGF0IG90aGVyIEtjb25maWcgb3B0aW9ucyBtdXN0IGJlIHNldCAob3Igbm90IHNldCkgZm9yIGEgcGFydGljdWxhciBNQyBmZWF0dXJlIHRvIGV2ZW4gYmUgY29uc2lkZXJlZC4gVGhpcyBoZWxwcyB1bmRlcnN0YW5kIHRoZSBwcmUtcmVxdWlzaXRlcyBmb3IgZW5hYmxpbmcgYW5kIHVzaW5nIHRoZSBGU0wgTUMgZHJpdmVycy4KKiAgICoqRGVmYXVsdHM6KiogYGRlZmF1bHRgIHN0YXRlbWVudHMgYXJlIGltcG9ydGFudCBmb3IgdW5kZXJzdGFuZGluZyB3aGF0IHRoZSAmIzM0O291dC1vZi10aGUtYm94JiMzNDsgY29uZmlndXJhdGlvbiB3aWxsIGJlLiBXaGF0IG9wdGlvbnMgYXJlIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCBvciBkaXNhYmxlZCB3aGVuIHRoZSB1c2VyIGlzbiYjMzk7dCBtYWtpbmcgZXhwbGljaXQgY2hvaWNlcy4KKiAgICoqSGVscCB0ZXh0OioqIFRoZSBgaGVscGAgc2VjdGlvbnMgYXJlIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgdGhlICpwdXJwb3NlKiBvZiBlYWNoIG9wdGlvbiBhbmQgaXRzIGltcGxpY2F0aW9ucy4gSSYjMzk7bGwgcmVhZCB0aGVzZSBjYXJlZnVsbHkgdG8gZ2V0IGEgcHJvcGVyIG1lbnRhbCBtb2RlbCBvZiBob3cgZWFjaCBNQyBkZXZpY2UgaXMgaW5jb3Jwb3JhdGVkIGludG8gdGhlIGRldmljZSB0cmVlLgoKSSBleHBlY3QgdG8gc2VlIGEgbG90IG9mIGNvbmRpdGlvbmFsIGxvZ2ljLCBwcm9iYWJseSB1c2luZyBgaWZgIHN0YXRlbWVudHMsIHRvIGhhbmRsZSBkaWZmZXJlbnQgaGFyZHdhcmUgcmV2aXNpb25zIG9yIGNvbmZpZ3VyYXRpb25zLiBUaGlzIGZpbGUgd2lsbCBiZSBhIHJvYWRtYXAgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlIGtlcm5lbCBidWlsZHMgYW5kIGluY29ycG9yYXRlcyBzdXBwb3J0IGZvciBGcmVlc2NhbGUmIzM5O3MgTXVsdGktQ29yZSB0ZWNobm9sb2d5LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0I1xuICAgMzpcdCMgRFBBQTIgZnNsLW1jIGJ1c1xuICAgNDpcdCNcbiAgIDU6XHQjIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuXG4gICA2Olx0I1xuICAgNzpcdFxuICAgODpcdGNvbmZpZyBGU0xfTUNfQlVTXG4gICA5Olx0XHRib29sIFwmIzM0O1FvcklRIERQQUEyIGZzbC1tYyBidXMgZHJpdmVyXCYjMzQ7XG4gIDEwOlx0XHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9MQVlFUlNDQVBFIHx8IChDT01QSUxFX1RFU1QgXHUwMDI2XHUwMDI2IChBUk0gfHwgQVJNNjQgfHwgWDg2X0xPQ0FMX0FQSUMgfHwgUFBDKSkpXG4gIDExOlx0XHRzZWxlY3QgR0VORVJJQ19NU0lfSVJRXG4gIDEyOlx0XHRoZWxwXG4gIDEzOlx0XHQgIERyaXZlciB0byBlbmFibGUgdGhlIGJ1cyBpbmZyYXN0cnVjdHVyZSBmb3IgdGhlIFFvcklRIERQQUEyXG4gIDE0Olx0XHQgIGFyY2hpdGVjdHVyZS4gIFRoZSBmc2wtbWMgYnVzIGRyaXZlciBoYW5kbGVzIGRpc2NvdmVyeSBvZlxuICAxNTpcdFx0ICBEUEFBMiBvYmplY3RzICh3aGljaCBhcmUgcmVwcmVzZW50ZWQgYXMgTGludXggZGV2aWNlcykgYW5kXG4gIDE2Olx0XHQgIGJpbmRpbmcgb2JqZWN0cyB0byBkcml2ZXJzLlxuICAxNzpcdFxuICAxODpcdGNvbmZpZyBGU0xfTUNfVUFQSV9TVVBQT1JUXG4gIDE5Olx0XHRib29sIFwmIzM0O01hbmFnZW1lbnQgQ29tcGxleCAoTUMpIHVzZXJzcGFjZSBzdXBwb3J0XCYjMzQ7XG4gIDIwOlx0XHRkZXBlbmRzIG9uIEZTTF9NQ19CVVNcbiAgMjE6XHRcdGhlbHBcbiAgMjI6XHRcdCAgUHJvdmlkZXMgdXNlcnNwYWNlIHN1cHBvcnQgZm9yIGludGVycm9nYXRpbmcsIGNyZWF0aW5nLCBkZXN0cm95aW5nIG9yXG4gIDIzOlx0XHQgIGNvbmZpZ3VyaW5nIERQQUEyIG9iamVjdHMgZXhwb3J0ZWQgYnkgdGhlIE1hbmFnZW1lbnQgQ29tcGxleC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODEwMgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZTTCBNQyBCdXMgRGVwZW5kZW5jeSBhbmQgRGV2aWNlIERpc2NvdmVyeSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBvZiBgRlNMX01DX0JVU2AuIEl0JiMzOTtzIGNsZWFybHkgdGllZCB0byB0aGUgYE9GYCAoZGV2aWNlIHRyZWUpIGNvbmZpZ3VyYXRpb24sIHdoaWNoIG1ha2VzIHNlbnNlLiBJIHNlZSBpdCBhbHNvIGhhcyBwbGF0Zm9ybS1zcGVjaWZpYyByZXF1aXJlbWVudHM6IGVpdGhlciBhIExheWVyc2NhcGUgYXJjaGl0ZWN0dXJlIChgQVJDSF9MQVlFUlNDQVBFYCksIG9yIGEgYENPTVBJTEVfVEVTVGAgYWxvbmcgd2l0aCBvbmUgb2Ygc2V2ZXJhbCBhcmNoaXRlY3R1cmVzIC0gYEFSTWAsIGBBUk02NGAsIGBYODZfTE9DQUxfQVBJQ2AsIG9yIGBQUENgLiBUaGlzIHRlbGxzIG1lIGltbWVkaWF0ZWx5IHdoZXJlIHRoaXMgYnVzIGlzIGxpa2VseSBiZWluZyB1c2VkLgoKTm93LCB3aGF0ICppcyogYGZzbC1tY2A/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBkZXZpY2VzIGFyZSBtYW5hZ2VkIG9uIHRoYXQgYnVzLiBNeSBhcHByb2FjaCB3b3VsZCBiZSB0byBsb29rIGF0IHRoZSByZWxldmFudCBkcml2ZXJzLiBJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUgYGRyaXZlcnMvYnVzL2ZzbC1tYy9gIGFuZCBgZHJpdmVycy92ZmlvL2ZzbC1tYy9gLiBUaGUgVkZJTyBhc3BlY3QgaXMga2V5LCBzdWdnZXN0aW5nIGEgdmlydHVhbGl6ZWQgY29tcG9uZW50IHRvIHRoaXMuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gZ3JlcCB0aGUgY29kZS4gSSYjMzk7bGwgc2VhcmNoIGZvciB0aGUgcmVnaXN0cmF0aW9uIG9mIGB2ZmlvX2ZzbF9tY19kcml2ZXJgLiBUaGF0IHNob3VsZCBsZWFkIG1lIHRvIGhvdyBkZXZpY2VzIGFyZSBhdHRhY2hlZCBvciBwcm9iZWQgb24gdGhhdCBidXMsIGFuZCB0aGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dmZpb19mc2xfbWNfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL2ZzbC1tYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtMTktXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6MjA6c3RhdGljIHN0cnVjdCBmc2xfbWNfZHJpdmVyIHZmaW9fZnNsX21jX2RyaXZlcjtcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0yMS1cbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9NDIwPXN0YXRpYyBpbnQgdmZpb19mc2xfbWNfYnVzX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ0MC1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzo0NDE6XHRcdGlmIChtY19kcnYgXHUwMDI2XHUwMDI2IG1jX2RydiAhPSBcdTAwMjZ2ZmlvX2ZzbF9tY19kcml2ZXIpXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDQyLVx0XHRcdGRldl93YXJuKGRldiwgXCYjMzQ7VkZJT19GU0xfTUM6IE9iamVjdCAlcyBib3VuZCB0byBkcml2ZXIgJXMgd2hpbGUgRFBSQyBib3VuZCB0byB2ZmlvLWZzbC1tY1xcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9NTc5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fZnNsX21jX29wcyA9IHtcbi0tXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNTk1LVxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjU5NjpzdGF0aWMgc3RydWN0IGZzbF9tY19kcml2ZXIgdmZpb19mc2xfbWNfZHJpdmVyID0ge1xuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTU5Ny1cdC5wcm9iZVx0XHQ9IHZmaW9fZnNsX21jX3Byb2JlLFxuLS1cbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy02MDQtXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6NjA1Om1vZHVsZV9mc2xfbWNfZHJpdmVyKHZmaW9fZnNsX21jX2RyaXZlcik7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNjA2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MDgyCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVsdmluZyBpbnRvIHRoZSBGU0wgTUMgRHJpdmVyIEFyY2hpdGVjdHVyZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgbW9kdWxlX2ZzbF9tY19kcml2ZXIodmZpb19mc2xfbWNfZHJpdmVyKWAgY2FsbCwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpbnZvbHZlcyB0aGUgVkZJTyBpbnRlcmZhY2UgYW5kIHRoZSBGcmVlc2NhbGUgKG5vdyBOWFApIE11bHRpLUNvcmUgZHJpdmVyLiBSaWdodCwgdGltZSB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhlIGBmc2xfbWNfYnVzYCBpcyBzZXQgdXAuIEkga25vdyBpdCYjMzk7cyBhIGNyaXRpY2FsIHBhcnQgb2YgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLiBMZXQmIzM5O3MgaGVhZCBvdmVyIHRvIHRoZSBgZHJpdmVycy9idXMvZnNsLW1jL2AgZGlyZWN0b3J5IGluIHRoZSBrZXJuZWwgc291cmNlLiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2xsIGZpbmQgdGhlIGNvcmUgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiB0aGF0IGJ1cyBkcml2ZXIuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBkZXZpY2VzIGFyZSBlbnVtZXJhdGVkIGFuZCBob3cgdGhpcyBhbGwgaW50ZWdyYXRlcyB3aXRoIHRoZSB2ZmlvIGZyYW1ld29yaywgYW5kIHRoYXQgZGlyZWN0b3J5IHdpbGwgYmUgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvYnVzL2ZzbC1tYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2RwYnAuYyYjMzQ7LAogICAgJiMzNDtkcGNvbi5jJiMzNDssCiAgICAmIzM0O2RwbWNwLmMmIzM0OywKICAgICYjMzQ7ZHByYy1kcml2ZXIuYyYjMzQ7LAogICAgJiMzNDtkcHJjLmMmIzM0OywKICAgICYjMzQ7ZnNsLW1jLWFsbG9jYXRvci5jJiMzNDssCiAgICAmIzM0O2ZzbC1tYy1idXMuYyYjMzQ7LAogICAgJiMzNDtmc2wtbWMtbXNpLmMmIzM0OywKICAgICYjMzQ7ZnNsLW1jLXByaXZhdGUuaCYjMzQ7LAogICAgJiMzNDtmc2wtbWMtdWFwaS5jJiMzNDssCiAgICAmIzM0O21jLWlvLmMmIzM0OywKICAgICYjMzQ7bWMtc3lzLmMmIzM0OywKICAgICYjMzQ7b2JqLWFwaS5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTQ3MQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2U6CgoqKkludmVzdGlnYXRpbmcgRGV2aWNlIENyZWF0aW9uIGluIGBmc2wtbWMtYnVzLmNgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRldmljZSBjcmVhdGlvbiBvciBkaXNjb3ZlcnkgcHJvY2VzcyB3aXRoaW4gdGhpcyBmcmFtZXdvcmsuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBnb2luZyB0byBmb2N1cyBvbiBgZnNsLW1jLWJ1cy5jYC4gSSBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBtZWNoYW5pc21zIHRoZXJl4oCUdGhlIG5pdHR5LWdyaXR0eSBkZXRhaWxzIG9mIGhvdyBuZXcgZGV2aWNlcyBhcmUgYnJvdWdodCBpbnRvIHRoZSBzeXN0ZW0uIFRoaXMgZmlsZSBzaG91bGQgY29udGFpbiB0aGUga2V5IGZ1bmN0aW9ucyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgaGFuZGxlIHRoZSBlbnVtZXJhdGlvbiwgcHJvYmluZywgYW5kIGF0dGFjaG1lbnQgb2YgZGV2aWNlcyBvbiB0aGlzIHBhcnRpY3VsYXIgYnVzLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgYWJzdHJhY3Rpb24gYW5kIHdoYXQgZHJpdmVyIG1vZGVsIGNvbXBvbmVudHMgaXQgbGV2ZXJhZ2VzLiBFc3NlbnRpYWxseSwgSSYjMzk7bSBsb29raW5nIGZvciB0aGUgZm91bmRhdGlvbmFsIGNvZGUgdGhhdCBnb3Zlcm5zIGhvdyBuZXcgYGZzbC1tY2AgZGV2aWNlcyBiZWNvbWUga25vd24gdG8gdGhlIGtlcm5lbC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmc2xfbWNfYnVzX3R5cGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2J1cy9mc2wtbWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0zMjQ9QVRUUklCVVRFX0dST1VQUyhmc2xfbWNfYnVzKTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzI1LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzozMjY6Y29uc3Qgc3RydWN0IGJ1c190eXBlIGZzbF9tY19idXNfdHlwZSA9IHtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzI3LVx0Lm5hbWUgPSBcJiMzNDtmc2wtbWNcJiMzNDssXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0zMzgtfTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MzM5OkVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19idXNfdHlwZSk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTM0MC1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTQ2MT1pbnQgX19mc2xfbWNfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBmc2xfbWNfZHJpdmVyICptY19kcml2ZXIsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy00NjYtXHRtY19kcml2ZXItXHUwMDNlZHJpdmVyLm93bmVyID0gb3duZXI7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjQ2NzpcdG1jX2RyaXZlci1cdTAwM2Vkcml2ZXIuYnVzID0gXHUwMDI2ZnNsX21jX2J1c190eXBlO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy00NjgtXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz03NTI9aW50IGZzbF9tY19kZXZpY2VfYWRkKHN0cnVjdCBmc2xfbWNfb2JqX2Rlc2MgKm9ial9kZXNjLFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzg5LVx0bWNfZGV2LVx1MDAzZWRldi5wYXJlbnQgPSBwYXJlbnRfZGV2O1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo3OTA6XHRtY19kZXYtXHUwMDNlZGV2LmJ1cyA9IFx1MDAyNmZzbF9tY19idXNfdHlwZTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzkxLVx0bWNfZGV2LVx1MDAzZWRldi5yZWxlYXNlID0gZnNsX21jX2RldmljZV9yZWxlYXNlO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MTE3NT1zdGF0aWMgdm9pZCBmc2xfbWNfYnVzX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTE4My1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTE4NDpcdGJ1c191bnJlZ2lzdGVyX25vdGlmaWVyKFx1MDAyNmZzbF9tY19idXNfdHlwZSwgXHUwMDI2ZnNsX21jX25iKTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTE4NS1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTEyNjA9c3RhdGljIGludCBfX2luaXQgZnNsX21jX2J1c19kcml2ZXJfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTI2My1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTI2NDpcdGVycm9yID0gYnVzX3JlZ2lzdGVyKFx1MDAyNmZzbF9tY19idXNfdHlwZSk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEyNjUtXHRpZiAoZXJyb3IgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEyOTItZXJyb3JfY2xlYW51cF9idXM6XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEyOTM6XHRidXNfdW5yZWdpc3RlcihcdTAwMjZmc2xfbWNfYnVzX3R5cGUpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMjk0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDYzNgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBJbml0aWFsaXphdGlvbiBvZiB0aGUgRlNMIE1DIEJ1cyBEcml2ZXIqKgoKQWxyaWdodCwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBGcmVlc2NhbGUgTXVsdGljb3JlIEJ1cyAoTUMgQnVzKSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gb3IgcHJvYmUgZnVuY3Rpb24uIE15IG1lbnRhbCBwcm9jZXNzIGlzLCAmIzM0O1doZXJlIGRvZXMgdGhpcyB0aGluZyBraWNrIG9mZj8mIzM0OyBPYnZpb3VzbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBgZnNsX21jX2J1c19kcml2ZXJfaW5pdGAgb3IgdGhlIHByb2JlIHJvdXRpbmUgZ2V0IGludm9rZWQuIExldCYjMzk7cyBkaWcgaW50byB0aGUgY29yZS4gVGhhdCBtZWFucyBuYXZpZ2F0aW5nIG92ZXIgdG8gdGhlIGBmc2wtbWMtYnVzLmNgIGZpbGUuIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIHNob3VsZCBoYXBwZW4uIEkgZXhwZWN0IHRvIGZpbmQgdGhlIGRyaXZlciByZWdpc3RyYXRpb24sIHByb2JpbmcgbG9naWMsIGFuZCBhbnkgYXNzb2NpYXRlZCBzZXR1cCB3aXRoaW4gdGhhdCBmaWxlLiBJJiMzOTttIGdvaW5nIHRvIHRyYWNrIGRvd24gdGhlIGZ1bmN0aW9uIGNhbGxzIGFuZCB0aGUgZW50cnkgcG9pbnQgdGhhdCBpbml0aWFsaXplcyB0aGF0IGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGxhdGZvcm1fZHJpdmVyLipmc2xfbWMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2J1cy9mc2wtbWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xMjA4PU1PRFVMRV9ERVZJQ0VfVEFCTEUoYWNwaSwgZnNsX21jX2J1c19hY3BpX21hdGNoX3RhYmxlKTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTIwOS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTIxMDpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBmc2xfbWNfYnVzX2RyaXZlciA9IHtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTIxMS1cdC5kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xMjYwPXN0YXRpYyBpbnQgX19pbml0IGZzbF9tY19idXNfZHJpdmVyX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEyNjktXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEyNzA6XHRlcnJvciA9IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZmc2xfbWNfYnVzX2RyaXZlcik7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEyNzEtXHRpZiAoZXJyb3IgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEyODktZXJyb3JfY2xlYW51cF9kcml2ZXI6XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEyOTA6XHRwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZmc2xfbWNfYnVzX2RyaXZlcik7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEyOTEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMjc0CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBQbGF0Zm9ybSBEcml2ZXIgYW5kIE1hdGNoIFRhYmxlKioKCk9rYXksIHNvIGBmc2xfbWNfYnVzX2RyaXZlcmAuLi4gcmlnaHQsIHRoYXQmIzM5O3MgYSBwbGF0Zm9ybSBkcml2ZXIuIE15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gc2VlIGhvdyB0aGlzIGRyaXZlciBpcyByZWNvZ25pemVkIGFuZCBhdHRhY2hlZCB0byBkZXZpY2VzLiBUaGF0IG1lYW5zIGRpdmluZyBpbnRvIHRoZSBtYXRjaCB0YWJsZS4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgYGZzbC1tYy1idXMuY2AgYW5kIGh1bnQgZG93biB0aGF0IGNyaXRpY2FsIHBpZWNlIG9mIGluZm9ybWF0aW9uLiBUaGUgbWF0Y2ggdGFibGUgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIHRlbGxpbmcgdGhlIHN5c3RlbSB3aGljaCBkZXZpY2VzIHRoaXMgZHJpdmVyIGlzIGRlc2lnbmVkIHRvIGhhbmRsZS4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGRldmljZSBiaW5kaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMTk1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDM1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzExOTU6XHR9XG4xMTk2Olx0XG4xMTk3Olx0c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZnNsX21jX2J1c19tYXRjaF90YWJsZVtdID0ge1xuMTE5ODpcdFx0ey5jb21wYXRpYmxlID0gXCYjMzQ7ZnNsLHFvcmlxLW1jXCYjMzQ7LH0sXG4xMTk5Olx0XHR7fSxcbjEyMDA6XHR9O1xuMTIwMTpcdFxuMTIwMjpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGZzbF9tY19idXNfbWF0Y2hfdGFibGUpO1xuMTIwMzpcdFxuMTIwNDpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgYWNwaV9kZXZpY2VfaWQgZnNsX21jX2J1c19hY3BpX21hdGNoX3RhYmxlW10gPSB7XG4xMjA1Olx0XHR7XCYjMzQ7TlhQMDAwOFwmIzM0OywgMCB9LFxuMTIwNjpcdFx0eyB9XG4xMjA3Olx0fTtcbjEyMDg6XHRNT0RVTEVfREVWSUNFX1RBQkxFKGFjcGksIGZzbF9tY19idXNfYWNwaV9tYXRjaF90YWJsZSk7XG4xMjA5Olx0XG4xMjEwOlx0c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZnNsX21jX2J1c19kcml2ZXIgPSB7XG4xMjExOlx0XHQuZHJpdmVyID0ge1xuMTIxMjpcdFx0XHQgICAubmFtZSA9IFwmIzM0O2ZzbF9tY19idXNcJiMzNDssXG4xMjEzOlx0XHRcdCAgIC5wbSA9IE5VTEwsXG4xMjE0Olx0XHRcdCAgIC5vZl9tYXRjaF90YWJsZSA9IGZzbF9tY19idXNfbWF0Y2hfdGFibGUsXG4xMjE1Olx0XHRcdCAgIC5hY3BpX21hdGNoX3RhYmxlID0gZnNsX21jX2J1c19hY3BpX21hdGNoX3RhYmxlLFxuMTIxNjpcdFx0XHQgICB9LFxuMTIxNzpcdFx0LnByb2JlID0gZnNsX21jX2J1c19wcm9iZSxcbjEyMTg6XHRcdC5yZW1vdmUgPSBmc2xfbWNfYnVzX3JlbW92ZSxcbjEyMTk6XHRcdC5zaHV0ZG93biA9IGZzbF9tY19idXNfcmVtb3ZlLFxuMTIyMDpcdH07XG4xMjIxOlx0XG4xMjIyOlx0c3RhdGljIGludCBmc2xfbWNfYnVzX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXG4xMjIzOlx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgYWN0aW9uLCB2b2lkICpkYXRhKVxuMTIyNDpcdHtcbjEyMjU6XHRcdHN0cnVjdCBkZXZpY2UgKmRldiA9IGRhdGE7XG4xMjI2Olx0XHRzdHJ1Y3QgcmVzb3VyY2UgKnJlcztcbjEyMjc6XHRcdHZvaWQgX19pb21lbSAqZnNsX21jX3JlZ3M7XG4xMjI4Olx0XG4xMjI5Olx0XHRpZiAoYWN0aW9uICE9IEJVU19OT1RJRllfQUREX0RFVklDRSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIwNDYKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAyODgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIGB2ZmlvX2ZzbF9tY2AqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbiB3aXRoIGB2ZmlvX2ZzbF9tY2AuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIGRldGVybWluZSBpdHMgZGVwZW5kZW5jaWVzLiBEb2VzIGl0ICpyZXF1aXJlKiBzcGVjaWZpYywgcGh5c2ljYWwgaGFyZHdhcmUgbGlrZSB0aGUgUW9ySVEgb3IgTGF5ZXJzY2FwZSBTb0MgTWFuYWdlbWVudCBDb21wbGV4LCBvciBpcyBpdCBzb21ldGhpbmcgdGhhdCYjMzk7cyBlbXVsYXRlZCB3aXRoaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LCBtYWtpbmcgaXQgYWNjZXNzaWJsZT8gTGV0JiMzOTtzIGNvbnN1bHQgdGhlIGluc3RydWN0aW9ucy4KCkFscmlnaHQsIFNlY3Rpb24gMiBpcyB3aGF0IEkgbmVlZC4gSXQmIzM5O3MgcmVtaW5kaW5nIG1lIGFib3V0IHRoZSAmIzM0O3N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGNhdmVhdC4gVGhpbmdzIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgYXJlIG9mZi1saW1pdHMgZm9yIGZ1enppbmcgaWYgdGhleSBuZWVkIHJlYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gdGhlIHN0YW5kYXJkIHNldHVwLiBSZWFjaGFiaWxpdHkgaXMgdGhlIGNvcmUgaXNzdWUgaGVyZS4gRnV6emluZyBjYW4gb25seSByZXZlYWwgaXNzdWVzIGluIGNvZGUgcGF0aHMgdGhhdCBhcmUgYWN0dWFsbHkgKmV4ZWN1dGFibGUqIHdpdGhpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgbGV2ZXJhZ2luZyB0aGluZ3MgbGlrZSBlbXVsYXRlZCBVU0IgZGV2aWNlcywgbmV0d29yayBkZXZpY2VzLCBhbmQgdHVuL3RhcCBpbnRlcmZhY2VzLiBJZiB0aGUgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUsIGV2ZW4gd2l0aCBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMsIGl0JiMzOTtzIGEgbm9uLXN0YXJ0ZXIgZm9yIGZ1enppbmcuCgpOb3csIGNpcmNsaW5nIGJhY2sgdG8gYHZmaW9fZnNsX21jYCwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhlIEZyZWVzY2FsZSBNYW5hZ2VtZW50IENvbXBsZXggKEZTTC1NQyksIG9yIFFvcklRIERQQUEyLCBjYW4gcnVuIG9uIGFtZDY0IG9yIGluIHN0YW5kYXJkIFFFTVUuIFRoYXQmIzM5O3MgdGhlIHJlYWwgcXVlc3Rpb24uIElzIHRoZXJlIGEgdmlydHVhbCBGU0wtTUMgZGV2aWNlIGltcGxlbWVudGF0aW9uIG9yIGEgbW9jayBkcml2ZXIgYXZhaWxhYmxlPyBJIG5lZWQgdG8gc2VhcmNoIHRoZSBRRU1VIHNvdXJjZSBhbmQgdGhlIGtlcm5lbCBzb3VyY2UgZm9yIGFueSBjbHVlcyByZWxhdGVkIHRvICYjMzQ7ZnNsLW1jJiMzNDsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZzbC1tYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNTQ1IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tYzoxOldoYXQ6XHRcdC9zeXMvYnVzL2ZzbC1tYy9yZXNjYW5cbkRvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1idXMtZnNsLW1jLTItRGF0ZTpcdFx0SmFudWFyeSAyMDIxXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWJ1cy1mc2wtbWM9NT1EZXNjcmlwdGlvbjpcdFdyaXRpbmcgYSBub24temVybyB2YWx1ZSB0byB0aGlzIGF0dHJpYnV0ZSB3aWxsXG5Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tYzo2Olx0XHRmb3JjZSBhIHJlc2NhbiBvZiBmc2wtbWMgYnVzIGluIHRoZSBzeXN0ZW0gYW5kXG5Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tYzo3Olx0XHRzeW5jaHJvbml6ZSB0aGUgb2JqZWN0cyB1bmRlciBmc2wtbWMgYnVzIGFuZCB0aGVcbkRvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1idXMtZnNsLW1jLTgtXHRcdE1hbmFnZW1lbnQgQ29tcGxleCBmaXJtd2FyZS5cbkRvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1idXMtZnNsLW1jPTk9VXNlcnM6XHRcdFVzZXJzcGFjZSBkcml2ZXJzIGFuZCBtYW5hZ2VtZW50IHRvb2xzXG5Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tYy0xMC1cbkRvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1idXMtZnNsLW1jOjExOldoYXQ6XHRcdC9zeXMvYnVzL2ZzbC1tYy9hdXRvcmVzY2FuXG5Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tYy0xMi1EYXRlOlx0XHRKYW51YXJ5IDIwMjFcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tYz0xNT1EZXNjcmlwdGlvbjpcdFdyaXRpbmcgYSB6ZXJvIHZhbHVlIHRvIHRoaXMgYXR0cmlidXRlIHdpbGxcbkRvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1idXMtZnNsLW1jLTE2LVx0XHRkaXNhYmxlIHRoZSBEUFJDIElSUXMgb24gd2hpY2ggYXV0b21hdGljIHJlc2NhblxuRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWJ1cy1mc2wtbWM6MTc6XHRcdG9mIHRoZSBmc2wtbWMgYnVzIGlzIHBlcmZvcm1lZC4gQSBub24temVybyB2YWx1ZVxuRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWJ1cy1mc2wtbWMtMTgtXHRcdHdpbGwgZW5hYmxlIHRoZSBEUFJDIElSUXMuXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtZnNsLW1jOjE6V2hhdDpcdFx0L3N5cy9idXMvZnNsLW1jL2RyaXZlcnMvLi4uL2JpbmRcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWZzbC1tYy0yLURhdGU6XHRcdERlY2VtYmVyIDIwMTZcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWM9ND1EZXNjcmlwdGlvbjpcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWMtNy1cdFx0dGhpcyBsb2NhdGlvbi4gVGhlIGZvcm1hdCBmb3IgdGhlIGxvY2F0aW9uIGlzIE9iamVjdC5JZFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtZnNsLW1jOjg6XHRcdGFuZCBpcyB0aGUgc2FtZSBhcyBmb3VuZCBpbiAvc3lzL2J1cy9mc2wtbWMvZGV2aWNlcy8uXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWMtOS1cbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWMtMTEtXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWM6MTI6XHRcdCAgIyBlY2hvIGRwbmkuMiBcdTAwM2UgL3N5cy9idXMvZnNsLW1jL2RyaXZlcnMvZnNsX2RwYWEyX2V0aC9iaW5kXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWMtMTMtXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWM6MTQ6V2hhdDpcdFx0L3N5cy9idXMvZnNsLW1jL2RyaXZlcnMvLi4uL3VuYmluZFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtZnNsLW1jLTE1LURhdGU6XHRcdERlY2VtYmVyIDIwMTZcbi0tXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWM9MTc9RGVzY3JpcHRpb246XG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtZnNsLW1jLTIwLVx0XHR0aGlzIGxvY2F0aW9uLiBUaGUgZm9ybWF0IGZvciB0aGUgbG9jYXRpb24gaXMgT2JqZWN0LklkXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWM6MjE6XHRcdGFuZCBpcyB0aGUgc2FtZSBhcyBmb3VuZCBpbiAvc3lzL2J1cy9mc2wtbWMvZGV2aWNlcy8uXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWMtMjItXG4tLVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtZnNsLW1jLTI0LVxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtZnNsLW1jOjI1Olx0XHQgICMgZWNobyBkcG5pLjIgXHUwMDNlIC9zeXMvYnVzL2ZzbC1tYy9kcml2ZXJzL2ZzbF9kcGFhMl9ldGgvdW5iaW5kXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWw9MTI9ZGVzY3JpcHRpb246IHxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXNjL2ZzbCxxb3JpcS1tYy55YW1sOjEzOiAgVGhlIEZyZWVzY2FsZSBNYW5hZ2VtZW50IENvbXBsZXggKGZzbC1tYykgaXMgYSBoYXJkd2FyZSByZXNvdXJjZVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWwtMTQtICBtYW5hZ2VyIHRoYXQgbWFuYWdlcyBzcGVjaWFsaXplZCBoYXJkd2FyZSBvYmplY3RzIHVzZWQgaW5cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXNjL2ZzbCxxb3JpcS1tYy55YW1sOjE1OiAgbmV0d29yay1vcmllbnRlZCBwYWNrZXQgcHJvY2Vzc2luZyBhcHBsaWNhdGlvbnMuIEFmdGVyIHRoZSBmc2wtbWNcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXNjL2ZzbCxxb3JpcS1tYy55YW1sLTE2LSAgYmxvY2sgaXMgZW5hYmxlZCwgcG9vbHMgb2YgaGFyZHdhcmUgcmVzb3VyY2VzIGFyZSBhdmFpbGFibGUsIHN1Y2ggYXNcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlzYy9mc2wscW9yaXEtbWMueWFtbC0yMS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXNjL2ZzbCxxb3JpcS1tYy55YW1sOjIyOiAgRm9yIGFuIG92ZXJ2aWV3IG9mIHRoZSBEUEFBMiBhcmNoaXRlY3R1cmUgYW5kIGZzbC1tYyBidXMgc2VlOlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWwtMjMtICBEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL292ZXJ2aWV3LnJzdFxuLS1cbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXNjL2ZzbCxxb3JpcS1tYy55YW1sPTUxPXByb3BlcnRpZXM6XG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWwtMTMwLSAgICBkZXNjcmlwdGlvbjpcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXNjL2ZzbCxxb3JpcS1tYy55YW1sOjEzMTogICAgICBUaGUgZnNsLW1jIG5vZGUgbWF5IG9wdGlvbmFsbHkgaGF2ZSBkcG1hYyBzdWItbm9kZXMgdGhhdCBkZXNjcmliZVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWwtMTMyLSAgICAgIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgRXRoZXJuZXQgTUFDcyB3aGljaCBiZWxvbmcgdG8gdGhlIE1DXG4tLVxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWw9MTU3PWV4YW1wbGVzOlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWwtMTU4LSAgLSB8XG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlzYy9mc2wscW9yaXEtbWMueWFtbDoxNTk6ICAgIGZzbC1tY0A4MGMwMDAwMDAge1xuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWwtMTYwLSAgICAgICAgY29tcGF0aWJsZSA9IFwmIzM0O2ZzbCxxb3JpcS1tY1wmIzM0Oztcbi0tXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxxb3JpcS1tYy1kcG1hYy55YW1sPTEyPWRlc2NyaXB0aW9uOlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wscW9yaXEtbWMtZHBtYWMueWFtbDoxMzogIFRoaXMgYmluZGluZyByZXByZXNlbnRzIHRoZSBEUEFBMiBNQUMgb2JqZWN0cyBmb3VuZCBvbiB0aGUgZnNsLW1jIGJ1cyBhbmRcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLHFvcmlxLW1jLWRwbWFjLnlhbWw6MTQ6ICBsb2NhdGVkIHVuZGVyIHRoZSAmIzM5O2RwbWFjcyYjMzk7IG5vZGUgZm9yIHRoZSBmc2wtbWMgYnVzIERUUyBub2RlLlxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wscW9yaXEtbWMtZHBtYWMueWFtbC0xNS1cbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdD0yOD1Ecml2ZXIgT3ZlcnZpZXdcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdC0zMC1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBpby1kcml2ZXIucnN0OjMxOlRoZSBEUElPIGRyaXZlciBpcyBib3VuZCB0byBEUElPIG9iamVjdHMgZGlzY292ZXJlZCBvbiB0aGUgZnNsLW1jIGJ1cyBhbmRcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBpby1kcml2ZXIucnN0LTMyLXByb3ZpZGVzIHNlcnZpY2VzIHRoYXQ6XG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGlvLWRyaXZlci5yc3Q9NDA9VGhlIExpbnV4IERQSU8gZHJpdmVyIGNvbnNpc3RzIG9mIDMgcHJpbWFyeSBjb21wb25lbnRzLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBpby1kcml2ZXIucnN0OjQxOiAgIERQSU8gb2JqZWN0IGRyaXZlci0tIGZzbC1tYyBkcml2ZXIgdGhhdCBtYW5hZ2VzIHRoZSBEUElPIG9iamVjdFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGlvLWRyaXZlci5yc3QtNDItXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGlvLWRyaXZlci5yc3QtNDYtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdDo0NzogICAgICAgICAgZnNsLW1jICAgICAgICAgIG90aGVyXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdC00OC0gICAgICAgICAgIGJ1cyAgICAgICAgICAgZHJpdmVyc1xuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBpby1kcml2ZXIucnN0PTY0PURQQUEyIExpbnV4IGRyaXZlciBjb21wb25lbnRzOjpcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdC04NS0gICAgICAgICAgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGlvLWRyaXZlci5yc3Q6ODY6ICAgICAgICAgIHwgL3NvYy9mc2wtbWMgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBpby1kcml2ZXIucnN0LTg3LSAgICAgICAgICAmIzQzOy0tLS0tLS0tLS0tLS0tLS0tLS0mIzQzOyAgICAgICAgICAgICAgICAgICAgIHxcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdD05OD1EUElPIE9iamVjdCBEcml2ZXIgKGRwaW8tZHJpdmVyLmMpXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGlvLWRyaXZlci5yc3QtMTAwLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGlvLWRyaXZlci5yc3Q6MTAxOiAgIFRoZSBkcGlvLWRyaXZlciBjb21wb25lbnQgcmVnaXN0ZXJzIHdpdGggdGhlIGZzbC1tYyBidXMgdG8gaGFuZGxlIG9iamVjdHMgb2ZcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBpby1kcml2ZXIucnN0LTEwMi0gICB0eXBlIFwmIzM0O2RwaW9cJiMzNDsuICBUaGUgaW1wbGVtZW50YXRpb24gb2YgcHJvYmUoKSBoYW5kbGVzIGJhc2ljIGluaXRpYWxpemF0aW9uXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9tYWMtcGh5LXN1cHBvcnQucnN0PTE2PURQQUEyIFNvZnR3YXJlIEFyY2hpdGVjdHVyZVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvbWFjLXBoeS1zdXBwb3J0LnJzdC0xOC1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvbWFjLXBoeS1zdXBwb3J0LnJzdDoxOTpBbW9uZyBvdGhlciBEUEFBMiBvYmplY3RzLCB0aGUgZnNsLW1jIGJ1cyBleHBvcnRzIERQTkkgb2JqZWN0cyAoYWJzdHJhY3RpbmcgYVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9tYWMtcGh5LXN1cHBvcnQucnN0LTIwLW5ldHdvcmsgaW50ZXJmYWNlKSBhbmQgRFBNQUMgb2JqZWN0cyAoYWJzdHJhY3RpbmcgYSBNQUMpLiBUaGUgZHBhYTItZXRoIGRyaXZlclxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvb3ZlcnZpZXcucnN0PTI4Nj1vZiBlYWNoIGRyaXZlciBmb2xsb3dzLlxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvb3ZlcnZpZXcucnN0LTMwOS1cdCAgfCAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfGRyaXZlcnxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvb3ZlcnZpZXcucnN0OjMxMDpcdCAgfCAgIC9idXMvZnNsLW1jICAgICB8ICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgJiM0MzstLSYjNDM7LS0tJiM0MztcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvb3ZlcnZpZXcucnN0LTMxMS1cdCAgJiM0MzstLS0tLS0tLS0tLS0tLS0tLS0tJiM0MzsgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8XG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9vdmVydmlldy5yc3Q9MzMxPUtleSBmdW5jdGlvbnMgaW5jbHVkZTpcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvb3ZlcnZpZXcucnN0LTMzMi1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvb3ZlcnZpZXcucnN0OjMzMzotIHJlZ2lzdGVyaW5nIGEgbmV3IGJ1cyB0eXBlIG5hbWVkIFwmIzM0O2ZzbC1tY1wmIzM0OyB3aXRoIHRoZSBrZXJuZWwsXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL292ZXJ2aWV3LnJzdC0zMzQtICBhbmQgaW1wbGVtZW50aW5nIGJ1cyBjYWxsLWJhY2tzIChlLmcuIG1hdGNoL3VldmVudC9kZXZfZ3JvdXBzKVxuLS1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvb3ZlcnZpZXcucnN0PTM0Mz1UaGUgc3lzZnMgYmluZC91bmJpbmQgaW50ZXJmYWNlcyBmb3IgdGhlIE1DLWJ1cyBjYW4gYmUgY29uc3VsdGVkIGF0XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL292ZXJ2aWV3LnJzdDozNDQ6KkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWZzbC1tYyouXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL292ZXJ2aWV3LnJzdC0zNDUtXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9zd2l0Y2gtZHJpdmVyLnJzdD0zNT1DcmVhdGluZyBhbiBFdGhlcm5ldCBTd2l0Y2hcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL3N3aXRjaC1kcml2ZXIucnN0LTM3LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9zd2l0Y2gtZHJpdmVyLnJzdDozODpUaGUgZHBhYTItc3dpdGNoIGRyaXZlciBwcm9iZXMgb24gRFBTVyBkZXZpY2VzIGZvdW5kIG9uIHRoZSBmc2wtbWMgYnVzLiBUaGVzZVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9zd2l0Y2gtZHJpdmVyLnJzdC0zOS1kZXZpY2VzIGNhbiBiZSBlaXRoZXIgY3JlYXRlZCBzdGF0aWNhbGx5IHRocm91Z2ggdGhlIGJvb3QgdGltZSBjb25maWd1cmF0aW9uXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9zd2l0Y2gtZHJpdmVyLnJzdD0xMjA9QnJvYWRjYXN0IGZsb29kaW5nIG9uIGEgc3dpdGNoIHBvcnQgY2FuIGJlIGRpc2FibGVkL2VuYWJsZWQgdGhyb3VnaCB0aGUgYnJwb3J0IHN5c2ZzOjpcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvc3dpdGNoLWRyaXZlci5yc3QtMTIxLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9zd2l0Y2gtZHJpdmVyLnJzdDoxMjI6ICAgICAgICAkIGVjaG8gMCBcdTAwM2UgL3N5cy9idXMvZnNsLW1jL2RldmljZXMvZHBzdy5ZL25ldC9ldGhYL2JycG9ydC9icm9hZGNhc3RfZmxvb2RcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvc3dpdGNoLWRyaXZlci5yc3QtMTIzLVxuLS1cbk1BSU5UQUlORVJTPTIyMDUwPVM6XHRNYWludGFpbmVkXG5NQUlOVEFJTkVSUzoyMjA1MTpGOlx0RG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWJ1cy1mc2wtbWNcbk1BSU5UQUlORVJTLTIyMDUyLUY6XHREb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlzYy9mc2wscW9yaXEtbWMueWFtbFxuTUFJTlRBSU5FUlM9MjIwNTM9RjpcdERvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvb3ZlcnZpZXcucnN0XG5NQUlOVEFJTkVSUzoyMjA1NDpGOlx0ZHJpdmVycy9idXMvZnNsLW1jL1xuTUFJTlRBSU5FUlMtMjIwNTUtRjpcdGluY2x1ZGUvdWFwaS9saW51eC9mc2xfbWMuaFxuLS1cbk1BSU5UQUlORVJTPTI4MzUyPVM6XHRNYWludGFpbmVkXG5NQUlOVEFJTkVSUzoyODM1MzpGOlx0ZHJpdmVycy92ZmlvL2ZzbC1tYy9cbk1BSU5UQUlORVJTLTI4MzU0LVxuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwODhhLmR0c2k9OTYyPVx0XHRcdFx0XHQgICAgUU9SSVFfQ0xLX1BMTF9ESVYoMTYpXHUwMDNlLFxuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwODhhLmR0c2ktOTY3LVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTA4OGEuZHRzaTo5Njg6XHRcdGZzbF9tYzogZnNsLW1jQDgwYzAwMDAwMCB7XG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDg4YS5kdHNpLTk2OS1cdFx0XHRjb21wYXRpYmxlID0gXCYjMzQ7ZnNsLHFvcmlxLW1jXCYjMzQ7O1xuLS1cbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczIwOHhhLmR0c2k9NzUyPVx0XHRcdHBjczE2OiBldGhlcm5ldC1waHlAMCB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMjA4eGEuZHRzaS03NTYtXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMyMDh4YS5kdHNpOjc1NzpcdFx0ZnNsX21jOiBmc2wtbWNAODBjMDAwMDAwIHtcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczIwOHhhLmR0c2ktNzU4LVx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtmc2wscW9yaXEtbWNcJiMzNDs7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWx4MjE2MGEuZHRzaT0xODc1PVx0XHRcdGdwaW8wXzNfMl9waW5zOiBpaWMxLWdwaW8tcGlucyB7XG4tLVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWx4MjE2MGEuZHRzaS0xODc5LVxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWx4MjE2MGEuZHRzaToxODgwOlx0XHRmc2xfbWM6IGZzbC1tY0A4MGMwMDAwMDAge1xuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWx4MjE2MGEuZHRzaS0xODgxLVx0XHRcdGNvbXBhdGlibGUgPSBcJiMzNDtmc2wscW9yaXEtbWNcJiMzNDs7XG4tLVxuZHJpdmVycy9idXMvS2NvbmZpZz0yNDI9Y29uZmlnIERBOFhYX01TVFBSSVxuLS1cbmRyaXZlcnMvYnVzL0tjb25maWctMjQ5LVxuZHJpdmVycy9idXMvS2NvbmZpZzoyNTA6c291cmNlIFwmIzM0O2RyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL2J1cy9LY29uZmlnLTI1MS1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9idXMvbWhpL0tjb25maWdcJiMzNDtcbi0tXG5kcml2ZXJzL2J1cy9NYWtlZmlsZT0xMT1vYmotJChDT05GSUdfTU9YVEVUKVx0XHQmIzQzOz0gbW94dGV0Lm9cbmRyaXZlcnMvYnVzL01ha2VmaWxlLTEyLVxuZHJpdmVycy9idXMvTWFrZWZpbGU6MTM6IyBEUEFBMiBmc2wtbWMgYnVzXG5kcml2ZXJzL2J1cy9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfRlNMX01DX0JVUylcdCYjNDM7PSBmc2wtbWMvXG5kcml2ZXJzL2J1cy9NYWtlZmlsZS0xNS1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZy0yLSNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnOjM6IyBEUEFBMiBmc2wtbWMgYnVzXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZy00LSNcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZz04PWNvbmZpZyBGU0xfTUNfQlVTXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZzo5Olx0Ym9vbCBcJiMzNDtRb3JJUSBEUEFBMiBmc2wtbWMgYnVzIGRyaXZlclwmIzM0O1xuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctMTAtXHRkZXBlbmRzIG9uIE9GIFx1MDAyNlx1MDAyNiAoQVJDSF9MQVlFUlNDQVBFIHx8IChDT01QSUxFX1RFU1QgXHUwMDI2XHUwMDI2IChBUk0gfHwgQVJNNjQgfHwgWDg2X0xPQ0FMX0FQSUMgfHwgUFBDKSkpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctMTMtXHQgIERyaXZlciB0byBlbmFibGUgdGhlIGJ1cyBpbmZyYXN0cnVjdHVyZSBmb3IgdGhlIFFvcklRIERQQUEyXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZzoxNDpcdCAgYXJjaGl0ZWN0dXJlLiAgVGhlIGZzbC1tYyBidXMgZHJpdmVyIGhhbmRsZXMgZGlzY292ZXJ5IG9mXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZy0xNS1cdCAgRFBBQTIgb2JqZWN0cyAod2hpY2ggYXJlIHJlcHJlc2VudGVkIGFzIExpbnV4IGRldmljZXMpIGFuZFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZT03PW9iai0kKENPTkZJR19GU0xfTUNfQlVTKSAmIzQzOz0gbWMtYnVzLWRyaXZlci5vXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGUtOC1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZTo5Om1jLWJ1cy1kcml2ZXItb2JqcyA6PSBmc2wtbWMtYnVzLm8gXFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZS0xMC1cdFx0ICAgICAgbWMtc3lzLm8gXFxcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGUtMTUtXHRcdCAgICAgIGRwcmMtZHJpdmVyLm8gXFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZToxNjpcdFx0ICAgICAgZnNsLW1jLWFsbG9jYXRvci5vIFxcXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGU6MTc6XHRcdCAgICAgIGZzbC1tYy1tc2kubyBcXFxuZHJpdmVycy9idXMvZnNsLW1jL01ha2VmaWxlLTE4LVx0XHQgICAgICBkcG1jcC5vIFxcXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL01ha2VmaWxlLTIxLSMgTUMgdXNlcnNwYWNlIHN1cHBvcnRcbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZToyMjpvYmotJChDT05GSUdfRlNMX01DX1VBUElfU1VQUE9SVCkgJiM0Mzs9IGZzbC1tYy11YXBpLm9cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBicC5jLTgtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBicC5jOjk6I2luY2x1ZGUgXCYjMzQ7ZnNsLW1jLXByaXZhdGUuaFwmIzM0O1xuZHJpdmVycy9idXMvZnNsLW1jL2RwYnAuYy0xMC1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBjb24uYy04LVxuZHJpdmVycy9idXMvZnNsLW1jL2RwY29uLmM6OTojaW5jbHVkZSBcJiMzNDtmc2wtbWMtcHJpdmF0ZS5oXCYjMzQ7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBjb24uYy0xMC1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBtY3AuYy04LVxuZHJpdmVycy9idXMvZnNsLW1jL2RwbWNwLmM6OTojaW5jbHVkZSBcJiMzNDtmc2wtbWMtcHJpdmF0ZS5oXCYjMzQ7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBtY3AuYy0xMC1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjE2OiNpbmNsdWRlIFwmIzM0O2ZzbC1tYy1wcml2YXRlLmhcJiMzNDtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE3LVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTY4PXN0YXRpYyBpbnQgX19mc2xfbWNfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzktICpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjgwOiAqIEBtY19idXNfZGV2OiBwb2ludGVyIHRvIHRoZSBmc2wtbWMgZGV2aWNlIHRoYXQgcmVwcmVzZW50cyBhIERQUkMgb2JqZWN0XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy04MS0gKiBAb2JqX2Rlc2NfYXJyYXk6IGFycmF5IG9mIG9iamVjdCBkZXNjcmlwdG9ycyBmb3IgY2hpbGQgb2JqZWN0cyBjdXJyZW50bHlcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz0xMjM9c3RydWN0IGZzbF9tY19kZXZpY2UgKmZzbF9tY19kZXZpY2VfbG9va3VwKHN0cnVjdCBmc2xfbWNfb2JqX2Rlc2MgKm9ial9kZXNjLFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTEzNi0gKlxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTM3OiAqIEBtY19kZXY6IHBvaW50ZXIgdG8gdGhlIGZzbC1tYyBkZXZpY2UgZm9yIGEgZ2l2ZW4gTUMgb2JqZWN0XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xMzgtICogQG9ial9kZXNjOiBwb2ludGVyIHRvIHRoZSBNQyBvYmplY3QmIzM5O3MgZGVzY3JpcHRvciBpbiB0aGUgTUNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTEzOS0gKlxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTQwOiAqIElmIHRoZSBwbHVnZ2VkIHN0YXRlIGhhcyBjaGFuZ2VkIGZyb20gdW5wbHVnZ2VkIHRvIHBsdWdnZWQsIHRoZSBmc2wtbWNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE0MS0gKiBkZXZpY2UgaXMgYm91bmQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgZGV2aWNlIGRyaXZlci5cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjE0MjogKiBJZiB0aGUgcGx1Z2dlZCBzdGF0ZSBoYXMgY2hhbmdlZCBmcm9tIHBsdWdnZWQgdG8gdW5wbHVnZ2VkLCB0aGUgZnNsLW1jXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNDMtICogZGV2aWNlIGlzIHVuYm91bmQgZnJvbSB0aGUgY29ycmVzcG9uZGluZyBkZXZpY2UgZHJpdmVyLlxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTE2OT1zdGF0aWMgdm9pZCBmc2xfbWNfb2JqX2RldmljZV9hZGQoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTkyLSAqXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoxOTM6ICogQG1jX2J1c19kZXY6IHBvaW50ZXIgdG8gdGhlIGZzbC1tYyBkZXZpY2UgdGhhdCByZXByZXNlbnRzIGEgRFBSQyBvYmplY3RcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE5NC0gKiBAb2JqX2Rlc2NfYXJyYXk6IGFycmF5IG9mIGRldmljZSBkZXNjcmlwdG9ycyBmb3IgY2hpbGQgZGV2aWNlcyBjdXJyZW50bHlcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz0yMDI9c3RhdGljIHZvaWQgZHByY19hZGRfbmV3X2RldmljZXMoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMjI4LSAqXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzoyMjk6ICogQG1jX2J1c19kZXY6IHBvaW50ZXIgdG8gdGhlIGZzbC1tYyBkZXZpY2UgdGhhdCByZXByZXNlbnRzIGEgRFBSQyBvYmplY3RcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTIzMC0gKiBAYWxsb2NfaW50ZXJydXB0czogaWYgdHJ1ZSB0aGUgZnVuY3Rpb24gYWxsb2NhdGVzIHRoZSBpbnRlcnJ1cHQgcG9vbCxcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz0yNDU9aW50IGRwcmNfc2Nhbl9vYmplY3RzKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2LFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTM1Ni0gKlxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MzU3OiAqIEBtY19idXNfZGV2OiBwb2ludGVyIHRvIHRoZSBmc2wtbWMgZGV2aWNlIHRoYXQgcmVwcmVzZW50cyBhIERQUkMgb2JqZWN0XG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0zNTgtICogQGFsbG9jX2ludGVycnVwdHM6IGlmIHRydWUgdGhlIGZ1bmN0aW9uIGFsbG9jYXRlcyB0aGUgaW50ZXJydXB0IHBvb2wsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9NTcyPXN0YXRpYyBpbnQgZHByY19zZXR1cF9pcnEoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2Rldilcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy02MDEtICpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjYwMjogKiBAbWNfZGV2OiBQb2ludGVyIHRvIGZzbC1tYyBkZXZpY2UgcmVwcmVzZW50aW5nIGEgRFBSQ1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNjAzLSAqXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9NzExPUVYUE9SVF9TWU1CT0xfR1BMKGRwcmNfc2V0dXApO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTcxNS0gKlxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NzE2OiAqIEBtY19kZXY6IFBvaW50ZXIgdG8gZnNsLW1jIGRldmljZSByZXByZXNlbnRpbmcgYSBEUFJDXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03MTctICpcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz03NTg9c3RhdGljIHZvaWQgZHByY190ZWFyZG93bl9pcnEoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2Rldilcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03NzEtICpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjc3MjogKiBAbWNfZGV2OiBQb2ludGVyIHRvIGZzbC1tYyBkZXZpY2UgcmVwcmVzZW50aW5nIHRoZSBEUFJDXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03NzMtICpcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz04MTU9RVhQT1JUX1NZTUJPTF9HUEwoZHByY19jbGVhbnVwKTtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy04MTktICpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjgyMDogKiBAbWNfZGV2OiBQb2ludGVyIHRvIGZzbC1tYyBkZXZpY2UgcmVwcmVzZW50aW5nIHRoZSBEUFJDXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy04MjEtICpcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy5jLTktXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy5jOjEwOiNpbmNsdWRlIFwmIzM0O2ZzbC1tYy1wcml2YXRlLmhcJiMzNDtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLmMtMTEtXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yLS8qXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjM6ICogZnNsLW1jIG9iamVjdCBhbGxvY2F0b3IgZHJpdmVyXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTQtICpcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTEyLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzoxMzojaW5jbHVkZSBcJiMzNDtmc2wtbWMtcHJpdmF0ZS5oXCYjMzQ7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTE0LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz0xNT1zdGF0aWMgYm9vbCBfX211c3RfY2hlY2sgZnNsX21jX2lzX2FsbG9jYXRhYmxlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yMy0gKiBmc2xfbWNfcmVzb3VyY2VfcG9vbF9hZGRfZGV2aWNlIC0gYWRkIGFsbG9jYXRhYmxlIG9iamVjdCB0byBhIHJlc291cmNlXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI0OiAqIHBvb2wgb2YgYSBnaXZlbiBmc2wtbWMgYnVzXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTI1LSAqXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI2OiAqIEBtY19idXM6IHBvaW50ZXIgdG8gdGhlIGZzbC1tYyBidXNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjctICogQHBvb2xfdHlwZTogcG9vbCB0eXBlXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI4OiAqIEBtY19kZXY6IHBvaW50ZXIgdG8gYWxsb2NhdGFibGUgZnNsLW1jIGRldmljZVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yOS0gKi9cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9MzA9c3RhdGljIGludCBfX211c3RfY2hlY2sgZnNsX21jX3Jlc291cmNlX3Bvb2xfYWRkX2RldmljZShzdHJ1Y3QgZnNsX21jX2J1c1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtOTEtICpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6OTI6ICogQG1jX2RldjogcG9pbnRlciB0byBhbGxvY2F0YWJsZSBmc2wtbWMgZGV2aWNlXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTkzLSAqXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjk0OiAqIEl0IHBlcm1hbmVudGx5IHJlbW92ZXMgYW4gYWxsb2NhdGFibGUgZnNsLW1jIGRldmljZSBmcm9tIHRoZSByZXNvdXJjZVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy05NS0gKiBwb29sLiBJdCYjMzk7cyBhbiBlcnJvciBpZiB0aGUgZGV2aWNlIGlzIGluIHVzZS5cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTI1ND1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfcmVzb3VyY2VfZnJlZSk7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yNTYtLyoqXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI1NzogKiBmc2xfbWNfb2JqZWN0X2FsbG9jYXRlIC0gQWxsb2NhdGVzIGFuIGZzbC1tYyBvYmplY3Qgb2YgdGhlIGdpdmVuXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI1ODogKiBwb29sIHR5cGUgZnJvbSBhIGdpdmVuIGZzbC1tYyBidXMgaW5zdGFuY2VcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjU5LSAqXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI2MDogKiBAbWNfZGV2OiBmc2wtbWMgZGV2aWNlIHdoaWNoIGlzIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGVcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjYxLSAqIGFsbG9jYXRlZCBvYmplY3Rcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTMyMj1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfb2JqZWN0X2FsbG9jYXRlKTtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTMyNC0vKipcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MzI1OiAqIGZzbF9tY19vYmplY3RfZnJlZSAtIFJldHVybnMgYW4gZnNsLW1jIG9iamVjdCB0byB0aGUgcmVzb3VyY2VcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzI2LSAqIHBvb2wgd2hlcmUgaXQgY2FtZSBmcm9tLlxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzozMjc6ICogQG1jX2FkZXY6IFBvaW50ZXIgdG8gdGhlIGZzbC1tYyBkZXZpY2VcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzI4LSAqL1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9MzQzPUVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19vYmplY3RfZnJlZSk7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0zNTEtLypcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MzUyOiAqIEluaXRpYWxpemUgdGhlIGludGVycnVwdCBwb29sIGFzc29jaWF0ZWQgd2l0aCBhbiBmc2wtbWMgYnVzLlxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0zNTMtICogSXQgYWxsb2NhdGVzIGEgYmxvY2sgb2YgSVJRcyBmcm9tIHRoZSBHSUMtSVRTLlxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9NDExPUVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19wb3B1bGF0ZV9pcnFfcG9vbCk7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy00MTMtLypcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NDE0OiAqIFRlYXJkb3duIHRoZSBpbnRlcnJ1cHQgcG9vbCBhc3NvY2lhdGVkIHdpdGggYW4gZnNsLW1jIGJ1cy5cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDE1LSAqIEl0IGZyZWVzIHRoZSBJUlFzIHRoYXQgd2VyZSBhbGxvY2F0ZWQgdG8gdGhlIHBvb2wsIGJhY2sgdG8gdGhlIEdJQy1JVFMuXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz00Mzg9RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX2NsZWFudXBfaXJxX3Bvb2wpO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDQwLS8qXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjQ0MTogKiBBbGxvY2F0ZSB0aGUgSVJRcyByZXF1aXJlZCBieSBhIGdpdmVuIGZzbC1tYyBkZXZpY2UuXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTQ0Mi0gKi9cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTUwNj1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfYWxsb2NhdGVfaXJxcyk7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01MDgtLypcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NTA5OiAqIEZyZWVzIHRoZSBJUlFzIHRoYXQgd2VyZSBhbGxvY2F0ZWQgZm9yIGFuIGZzbC1tYyBkZXZpY2UuXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTUxMC0gKi9cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTU2Mj1zdGF0aWMgaW50IGZzbF9tY19hbGxvY2F0b3JfcHJvYmUoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2Rldilcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTU4NS1cdGRldl9kYmcoXHUwMDI2bWNfZGV2LVx1MDAzZWRldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NTg2Olx0XHRcJiMzNDtBbGxvY2F0YWJsZSBmc2wtbWMgZGV2aWNlIGJvdW5kIHRvIGZzbF9tY19hbGxvY2F0b3IgZHJpdmVyXCYjMzQ7KTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNTg3LVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz01OTQ9c3RhdGljIHZvaWQgZnNsX21jX2FsbG9jYXRvcl9yZW1vdmUoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2Rldilcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTYwNC1cdGRldl9kYmcoXHUwMDI2bWNfZGV2LVx1MDAzZWRldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NjA1Olx0XHRcJiMzNDtBbGxvY2F0YWJsZSBmc2wtbWMgZGV2aWNlIHVuYm91bmQgZnJvbSBmc2xfbWNfYWxsb2NhdG9yIGRyaXZlclwmIzM0Oyk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTYwNi19XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMC1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTE6I2RlZmluZSBwcl9mbXQoZm10KSBcJiMzNDtmc2wtbWM6IFwmIzM0OyBmbXRcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTItXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yNS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MjY6I2luY2x1ZGUgXCYjMzQ7ZnNsLW1jLXByaXZhdGUuaFwmIzM0O1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yNy1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjgtLypcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6Mjk6ICogRGVmYXVsdCBETUEgbWFzayBmb3IgZGV2aWNlcyBvbiBhIGZzbC1tYyBidXNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzAtICovXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0zMz1zdGF0aWMgc3RydWN0IGZzbF9tY192ZXJzaW9uIG1jX3ZlcnNpb247XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0zNi0gKiBzdHJ1Y3QgZnNsX21jIC0gUHJpdmF0ZSBkYXRhIG9mIGEgXCYjMzQ7ZnNsLHFvcmlxLW1jXCYjMzQ7IHBsYXRmb3JtIGRldmljZVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzozNzogKiBAcm9vdF9tY19idXNfZGV2OiBmc2wtbWMgZGV2aWNlIHJlcHJlc2VudGluZyB0aGUgcm9vdCBEUFJDXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTM4LSAqIEBudW1fdHJhbnNsYXRpb25fcmFuZ2VzOiBudW1iZXIgb2YgZW50cmllcyBpbiBhZGRyX3RyYW5zbGF0aW9uX3Jhbmdlc1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9ODA9c3RhdGljIHBoeXNfYWRkcl90IG1jX3BvcnRhbF9iYXNlX3BoeXNfYWRkcjtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTgzLSAqIGZzbF9tY19idXNfbWF0Y2ggLSBkZXZpY2UgdG8gZHJpdmVyIG1hdGNoaW5nIGNhbGxiYWNrXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjg0OiAqIEBkZXY6IHRoZSBmc2wtbWMgZGV2aWNlIHRvIG1hdGNoIGFnYWluc3RcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODU6ICogQGRydjogdGhlIGRldmljZSBkcml2ZXIgdG8gc2VhcmNoIGZvciBtYXRjaGluZyBmc2wtbWMgb2JqZWN0IHR5cGVcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODYtICogc3RydWN0dXJlc1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MTM5PXN0YXRpYyBpbnQgZnNsX21jX2J1c191ZXZlbnQoY29uc3Qgc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3Qga29ial91ZXZlbnRfZW52ICplbnYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xNDItXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjE0MzpcdGlmIChhZGRfdWV2ZW50X3ZhcihlbnYsIFwmIzM0O01PREFMSUFTPWZzbC1tYzp2JTA4WGQlc1wmIzM0OyxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTQ0LVx0XHRcdCAgIG1jX2Rldi1cdTAwM2VvYmpfZGVzYy52ZW5kb3IsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0yMTQ9c3RhdGljIHNzaXplX3QgbW9kYWxpYXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjE4LVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoyMTk6XHRyZXR1cm4gc3lzZnNfZW1pdChidWYsIFwmIzM0O2ZzbC1tYzp2JTA4WGQlc1xcblwmIzM0OywgbWNfZGV2LVx1MDAzZW9ial9kZXNjLnZlbmRvcixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMjIwLVx0XHRcdG1jX2Rldi1cdTAwM2VvYmpfZGVzYy50eXBlKTtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTMyNj1jb25zdCBzdHJ1Y3QgYnVzX3R5cGUgZnNsX21jX2J1c190eXBlID0ge1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzozMjc6XHQubmFtZSA9IFwmIzM0O2ZzbC1tY1wmIzM0OyxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzI4LVx0LmRyaXZlcl9vdmVycmlkZSA9IHRydWUsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz00OTk9c3RhdGljIGludCBtY19nZXRfdmVyc2lvbihzdHJ1Y3QgZnNsX21jX2lvICptY19pbyxcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTUyOC0gKlxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo1Mjk6ICogUmV0dXJuOlx0bWMgdmVyc2lvbiB3aGVuIGNhbGxlZCBhZnRlciBmc2wtbWMtYnVzIHByb2JlOyBOVUxMIG90aGVyd2lzZS5cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNTMwLSAqL1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9NjMyPXN0YXRpYyBpbnQgZnNsX21jX2RldmljZV9nZXRfbW1pb19yZWdpb25zKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYsXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03MTAtXHRcdHJlZ2lvbnNbaV0uZW5kID0gcmVnaW9uc1tpXS5zdGFydCAmIzQzOyByZWdpb25fZGVzYy5zaXplIC0gMTtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NzExOlx0XHRyZWdpb25zW2ldLm5hbWUgPSBcJiMzNDtmc2wtbWMgb2JqZWN0IE1NSU8gcmVnaW9uXCYjMzQ7O1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03MTItXHRcdHJlZ2lvbnNbaV0uZmxhZ3MgPSByZWdpb25fZGVzYy5mbGFncyBcdTAwMjYgSU9SRVNPVVJDRV9CSVRTO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9NzM3PXN0YXRpYyB2b2lkIGZzbF9tY19kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03NDktLypcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NzUwOiAqIEFkZCBhIG5ld2x5IGRpc2NvdmVyZWQgZnNsLW1jIGRldmljZSB0byBiZSB2aXNpYmxlIGluIExpbnV4XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc1MS0gKi9cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTg4Mj1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGZzbF9tY19uYjtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg4NC0vKipcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODg1OiAqIGZzbF9tY19kZXZpY2VfcmVtb3ZlIC0gUmVtb3ZlIGFuIGZzbC1tYyBkZXZpY2UgZnJvbSBiZWluZyB2aXNpYmxlIHRvXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg4Ni0gKiBMaW51eFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04ODctICpcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODg4OiAqIEBtY19kZXY6IFBvaW50ZXIgdG8gYW4gZnNsLW1jIGRldmljZVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04ODktICovXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz05MDA9c3RydWN0IGZzbF9tY19kZXZpY2UgKmZzbF9tY19nZXRfZW5kcG9pbnQoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2Rldixcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTkzNi1cdCAqIGludGVycm9nYXRpbmcgdGhlIGZpcm13YXJlLiBUaGlzIGlzIHRoZSBjYXNlIHdoZW4gdGhlIGRldmljZSB3YXMgbm90XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjkzNzpcdCAqIHlldCBkaXNjb3ZlcmVkIGJ5IHRoZSBmc2wtbWMgYnVzLCB0aHVzIHRoZSBsb29rdXAgcmV0dXJuZWQgTlVMTC5cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtOTM4LVx0ICogRm9yY2UgYSByZXNjYW4gb2YgdGhlIGRldmljZXMgaW4gdGhpcyBjb250YWluZXIgYW5kIHJldHJ5IHRoZSBsb29rdXAuXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xMDA1PXN0YXRpYyBpbnQgZnNsX21jX2Zpcm13YXJlX2NoZWNrKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMDEzLVx0XHRkZXZfZXJyKFx1MDAyNnBkZXYtXHUwMDNlZGV2LFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoxMDE0Olx0XHRcdFwmIzM0O2ZzbC1tYzogRFBMIHByb2Nlc3Npbmcgd2FzIG5vdCBzdGFydGVkLCBEUEFBMiB3aWxsIG5vdCB3b3JrIVxcblwmIzM0Oyk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMTUtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMjAtXHRcdGRldl9kYmcoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEwMjE6XHRcdFx0XCYjMzQ7ZnNsLW1jOiBEUEwgcHJvY2Vzc2luZyBpbiBwcm9ncmVzcywgZGVmZXIgcHJvYmVcXG5cJiMzNDspO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMDIyLVx0XHRyZXR1cm4gLUVQUk9CRV9ERUZFUjtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMjctXHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEwMjg6XHRcdFx0XCYjMzQ7ZnNsLW1jOiBNQyBib290IGNvbXBsZXRlZCB3aXRoIGVycm9yIDB4JXhcXG5cJiMzNDssIG1jcyk7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMjktXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmMtMTUtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLW1zaS5jOjE2OiNpbmNsdWRlIFwmIzM0O2ZzbC1tYy1wcml2YXRlLmhcJiMzNDtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmMtMTctXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg9NTgyPXN0cnVjdCBmc2xfbWNfdWFwaSB7XG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmgtNTkxLSAqIHN0cnVjdCBmc2xfbWNfYnVzIC0gbG9naWNhbCBidXMgdGhhdCBjb3JyZXNwb25kcyB0byBhIHBoeXNpY2FsIERQUkNcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oOjU5MjogKiBAbWNfZGV2OiBmc2wtbWMgZGV2aWNlIGZvciB0aGUgYnVzIGRldmljZSBpdHNlbGYuXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC01OTMtICogQHJlc291cmNlX3Bvb2xzOiBhcnJheSBvZiByZXNvdXJjZSBwb29scyAob25lIHBvb2wgcGVyIHJlc291cmNlIHR5cGUpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy11YXBpLmMtMTMtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXVhcGkuYzoxNDojaW5jbHVkZSBcJiMzNDtmc2wtbWMtcHJpdmF0ZS5oXCYjMzQ7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXVhcGkuYy0xNS1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvbWMtaW8uYy05LVxuZHJpdmVycy9idXMvZnNsLW1jL21jLWlvLmM6MTA6I2luY2x1ZGUgXCYjMzQ7ZnNsLW1jLXByaXZhdGUuaFwmIzM0O1xuZHJpdmVycy9idXMvZnNsLW1jL21jLWlvLmMtMTEtXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL21jLXN5cy5jLTE2LVxuZHJpdmVycy9idXMvZnNsLW1jL21jLXN5cy5jOjE3OiNpbmNsdWRlIFwmIzM0O2ZzbC1tYy1wcml2YXRlLmhcJiMzNDtcbmRyaXZlcnMvYnVzL2ZzbC1tYy9tYy1zeXMuYy0xOC1cbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvb2JqLWFwaS5jLTgtXG5kcml2ZXJzL2J1cy9mc2wtbWMvb2JqLWFwaS5jOjk6I2luY2x1ZGUgXCYjMzQ7ZnNsLW1jLXByaXZhdGUuaFwmIzM0O1xuZHJpdmVycy9idXMvZnNsLW1jL29iai1hcGkuYy0xMC1cbi0tXG5kcml2ZXJzL2NyeXB0by9jYWFtL0tjb25maWc9MTc4PWNvbmZpZyBDUllQVE9fREVWX0ZTTF9EUEFBMl9DQUFNXG4tLVxuZHJpdmVycy9jcnlwdG8vY2FhbS9LY29uZmlnLTE5My1cdCAgSXQgaGFuZGxlcyBEUFNFQ0kgRFBBQTIgb2JqZWN0cyB0aGF0IHNpdCBvbiB0aGUgTWFuYWdlbWVudCBDb21wbGV4XG5kcml2ZXJzL2NyeXB0by9jYWFtL0tjb25maWc6MTk0Olx0ICAoTUMpIGZzbC1tYyBidXMuXG5kcml2ZXJzL2NyeXB0by9jYWFtL0tjb25maWctMTk1LVxuLS1cbmRyaXZlcnMvZG1hL2ZzbC1kcGFhMi1xZG1hL2RwYWEyLXFkbWEuYz0xNTI9ZHBhYTJfcWRtYV9wb3B1bGF0ZV9mZCh1MzIgZm9ybWF0LCBzdHJ1Y3QgZHBhYTJfcWRtYV9jb21wICpkcGFhMl9jb21wKVxuLS1cbmRyaXZlcnMvZG1hL2ZzbC1kcGFhMi1xZG1hL2RwYWEyLXFkbWEuYy0xNjMtXHQgKiBCeXBhc3MgbWVtb3J5IHRyYW5zbGF0aW9uLCBGcmFtZSBsaXN0IGZvcm1hdCwgc2hvcnQgbGVuZ3RoIGRpc2FibGVcbmRyaXZlcnMvZG1hL2ZzbC1kcGFhMi1xZG1hL2RwYWEyLXFkbWEuYzoxNjQ6XHQgKiB3ZSBuZWVkIHRvIGRpc2FibGUgQk1UIGlmIGZzbC1tYyB1c2UgaW92YSBhZGRyXG5kcml2ZXJzL2RtYS9mc2wtZHBhYTItcWRtYS9kcGFhMi1xZG1hLmMtMTY1LVx0ICovXG4tLVxuZHJpdmVycy9pb21tdS9pb21tdS5jPTE2ODU9RVhQT1JUX1NZTUJPTF9HUEwocGNpX2RldmljZV9ncm91cCk7XG5kcml2ZXJzL2lvbW11L2lvbW11LmMtMTY4Ni1cbmRyaXZlcnMvaW9tbXUvaW9tbXUuYzoxNjg3Oi8qIEdldCB0aGUgSU9NTVUgZ3JvdXAgZm9yIGRldmljZSBvbiBmc2wtbWMgYnVzICovXG5kcml2ZXJzL2lvbW11L2lvbW11LmMtMTY4OC1zdHJ1Y3QgaW9tbXVfZ3JvdXAgKmZzbF9tY19kZXZpY2VfZ3JvdXAoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvc29jL2ZzbC9kcGlvL01ha2VmaWxlLTUtXG5kcml2ZXJzL3NvYy9mc2wvZHBpby9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19GU0xfTUNfRFBJTykgJiM0Mzs9IGZzbC1tYy1kcGlvLm9cbmRyaXZlcnMvc29jL2ZzbC9kcGlvL01ha2VmaWxlLTctXG5kcml2ZXJzL3NvYy9mc2wvZHBpby9NYWtlZmlsZTo4OmZzbC1tYy1kcGlvLW9ianMgOj0gZHBpby5vIHFibWFuLXBvcnRhbC5vIGRwaW8tc2VydmljZS5vIGRwaW8tZHJpdmVyLm9cbi0tXG5kcml2ZXJzL3NvYy9mc2wvZHBpby9kcGlvLXNlcnZpY2UuYz0yMjY9aXJxcmV0dXJuX3QgZHBhYTJfaW9faXJxKHN0cnVjdCBkcGFhMl9pbyAqb2JqKVxuLS1cbmRyaXZlcnMvc29jL2ZzbC9kcGlvL2RwaW8tc2VydmljZS5jLTI0OS1cdFx0fSBlbHNlIHtcbmRyaXZlcnMvc29jL2ZzbC9kcGlvL2RwaW8tc2VydmljZS5jOjI1MDpcdFx0XHRwcl9jcml0KFwmIzM0O2ZzbC1tYy1kcGlvOiBVbnJlY29nbmlzZWQvaWdub3JlZCBEUVJSIGVudHJ5XFxuXCYjMzQ7KTtcbmRyaXZlcnMvc29jL2ZzbC9kcGlvL2RwaW8tc2VydmljZS5jLTI1MS1cdFx0fVxuLS1cbmRyaXZlcnMvdmZpby9LY29uZmlnPTk1PXNvdXJjZSBcJiMzNDtkcml2ZXJzL3ZmaW8vbWRldi9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL3ZmaW8vS2NvbmZpZzo5Njpzb3VyY2UgXCYjMzQ7ZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy05Ny1zb3VyY2UgXCYjMzQ7ZHJpdmVycy92ZmlvL2NkeC9LY29uZmlnXCYjMzQ7XG4tLVxuZHJpdmVycy92ZmlvL01ha2VmaWxlPTE2PW9iai0kKENPTkZJR19WRklPX01ERVYpICYjNDM7PSBtZGV2L1xuZHJpdmVycy92ZmlvL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19WRklPX0ZTTF9NQykgJiM0Mzs9IGZzbC1tYy9cbmRyaXZlcnMvdmZpby9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfVkZJT19DRFgpICYjNDM7PSBjZHgvXG4tLVxuZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnPTQ9Y29uZmlnIFZGSU9fRlNMX01DXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWc6NTpcdHRyaXN0YXRlIFwmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgUW9ySVEgRFBBQTIgZnNsLW1jIGJ1cyBkZXZpY2VzXCYjMzQ7XG5kcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWctNi1cdHNlbGVjdCBFVkVOVEZEXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWctNy1cdGhlbHBcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTEzNQoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDEyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIHZmaW9fZnNsX21jIERyaXZlciBmb3IgUW9ySVEgRFBBQTIgU29DcyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYEZTTF9NQ19CVVNgIOKAkyB0aGF0JiMzOTtzIHRoZSBidXMgZHJpdmVyIGZvciB0aGUgTlhQL0ZyZWVzY2FsZSBRb3JJUSBEUEFBMiBTb0MgTWFuYWdlbWVudCBDb21wbGV4IGhhcmR3YXJlLiBSaWdodCwgZ290IGl0LiBOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBjYW4gYHZmaW9fZnNsX21jYCBiZSBwcm9iZWQgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgcHJlc2VudD8gVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nIGFuZCB3aGVyZSBJIGNhbiBwb3RlbnRpYWxseSBsZWFybiBzb21ldGhpbmcgdXNlZnVsIGZvciBteSBjdXJyZW50IHByb2plY3QuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwcm9iaW5nIHByb2Nlc3MgdG8gYW5zd2VyIHRoaXMuCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgY29kZS4gTGV0JiMzOTtzIHNlZSBob3cgYHZmaW9fZnNsX21jYCBwcm9iZXM7IHNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIGB2ZmlvX2ZzbF9tY19wcm9iZWAuIEFoYSwgaXQmIzM5O3MgbG9jYXRlZCBpbiBgZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jYC4gRXhjZWxsZW50LCB0aGF0JiMzOTtzIHRoZSBmaWxlIHRvIGZvY3VzIG9uLiBOb3cgSSBuZWVkIHRvIGNhcmVmdWxseSByZWFkIHRocm91Z2ggdGhlIGltcGxlbWVudGF0aW9uIG9mIGB2ZmlvX2ZzbF9tY19wcm9iZWAgaXRzZWxmLiBUaW1lIHRvIGdldCBpbnRvIHRoZSBkZXRhaWxzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA3MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTI1Olx0XG4gNTI2Olx0XHQvKiBkZXZpY2Vfc2V0IGlzIHJlbGVhc2VkIGJ5IHZmaW8gY29yZSBpZiBAaW5pdCBmYWlscyAqL1xuIDUyNzpcdFx0cmV0dXJuIHZmaW9fZnNsX21jX2luaXRfZGV2aWNlKHZkZXYpO1xuIDUyODpcdH1cbiA1Mjk6XHRcbiA1MzA6XHRzdGF0aWMgaW50IHZmaW9fZnNsX21jX3Byb2JlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXG4gNTMxOlx0e1xuIDUzMjpcdFx0c3RydWN0IHZmaW9fZnNsX21jX2RldmljZSAqdmRldjtcbiA1MzM6XHRcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNm1jX2Rldi1cdTAwM2VkZXY7XG4gNTM0Olx0XHRpbnQgcmV0O1xuIDUzNTpcdFxuIDUzNjpcdFx0dmRldiA9IHZmaW9fYWxsb2NfZGV2aWNlKHZmaW9fZnNsX21jX2RldmljZSwgdmRldiwgZGV2LFxuIDUzNzpcdFx0XHRcdFx0IFx1MDAyNnZmaW9fZnNsX21jX29wcyk7XG4gNTM4Olx0XHRpZiAoSVNfRVJSKHZkZXYpKVxuIDUzOTpcdFx0XHRyZXR1cm4gUFRSX0VSUih2ZGV2KTtcbiA1NDA6XHRcbiA1NDE6XHRcdHJldCA9IHZmaW9fcmVnaXN0ZXJfZ3JvdXBfZGV2KFx1MDAyNnZkZXYtXHUwMDNldmRldik7XG4gNTQyOlx0XHRpZiAocmV0KSB7XG4gNTQzOlx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtWRklPX0ZTTF9NQzogRmFpbGVkIHRvIGFkZCB0byB2ZmlvIGdyb3VwXFxuXCYjMzQ7KTtcbiA1NDQ6XHRcdFx0Z290byBvdXRfcHV0X3ZkZXY7XG4gNTQ1Olx0XHR9XG4gNTQ2Olx0XG4gNTQ3Olx0XHRyZXQgPSB2ZmlvX2ZzbF9tY19zY2FuX2NvbnRhaW5lcihtY19kZXYpO1xuIDU0ODpcdFx0aWYgKHJldClcbiA1NDk6XHRcdFx0Z290byBvdXRfZ3JvdXBfZGV2O1xuIDU1MDpcdFx0ZGV2X3NldF9kcnZkYXRhKGRldiwgdmRldik7XG4gNTUxOlx0XHRyZXR1cm4gMDtcbiA1NTI6XHRcbiA1NTM6XHRvdXRfZ3JvdXBfZGV2OlxuIDU1NDpcdFx0dmZpb191bnJlZ2lzdGVyX2dyb3VwX2RldihcdTAwMjZ2ZGV2LVx1MDAzZXZkZXYpO1xuIDU1NTpcdG91dF9wdXRfdmRldjpcbiA1NTY6XHRcdHZmaW9fcHV0X2RldmljZShcdTAwMjZ2ZGV2LVx1MDAzZXZkZXYpO1xuIDU1NzpcdFx0cmV0dXJuIHJldDtcbiA1NTg6XHR9XG4gNTU5Olx0XG4gNTYwOlx0c3RhdGljIHZvaWQgdmZpb19mc2xfbWNfcmVsZWFzZV9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4gNTYxOlx0e1xuIDU2MjpcdFx0c3RydWN0IHZmaW9fZnNsX21jX2RldmljZSAqdmRldiA9XG4gNTYzOlx0XHRcdGNvbnRhaW5lcl9vZihjb3JlX3ZkZXYsIHN0cnVjdCB2ZmlvX2ZzbF9tY19kZXZpY2UsIHZkZXYpO1xuIDU2NDpcdFxuIDU2NTpcdFx0dmZpb19mc2xfdW5pbml0X2RldmljZSh2ZGV2KTtcbiA1NjY6XHRcdG11dGV4X2Rlc3Ryb3koXHUwMDI2dmRldi1cdTAwM2VpZ2F0ZSk7XG4gNTY3Olx0fVxuIDU2ODpcdFxuIDU2OTpcdHN0YXRpYyB2b2lkIHZmaW9fZnNsX21jX3JlbW92ZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxuIDU3MDpcdHtcbiA1NzE6XHRcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNm1jX2Rldi1cdTAwM2VkZXY7XG4gNTcyOlx0XHRzdHJ1Y3QgdmZpb19mc2xfbWNfZGV2aWNlICp2ZGV2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7XG4gNTczOlx0XG4gNTc0Olx0XHR2ZmlvX3VucmVnaXN0ZXJfZ3JvdXBfZGV2KFx1MDAyNnZkZXYtXHUwMDNldmRldik7XG4gNTc1Olx0XHRkcHJjX3JlbW92ZV9kZXZpY2VzKG1jX2RldiwgTlVMTCwgMCk7XG4gNTc2Olx0XHR2ZmlvX3B1dF9kZXZpY2UoXHUwMDI2dmRldi1cdTAwM2V2ZGV2KTtcbiA1Nzc6XHR9XG4gNTc4Olx0XG4gNTc5Olx0c3RhdGljIGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgdmZpb19mc2xfbWNfb3BzID0ge1xuIDU4MDpcdFx0Lm5hbWVcdFx0PSBcJiMzNDt2ZmlvLWZzbC1tY1wmIzM0OyxcbiA1ODE6XHRcdC5pbml0XHRcdD0gdmZpb19mc2xfbWNfaW5pdF9kZXYsXG4gNTgyOlx0XHQucmVsZWFzZVx0PSB2ZmlvX2ZzbF9tY19yZWxlYXNlX2RldixcbiA1ODM6XHRcdC5vcGVuX2RldmljZVx0PSB2ZmlvX2ZzbF9tY19vcGVuX2RldmljZSxcbiA1ODQ6XHRcdC5jbG9zZV9kZXZpY2VcdD0gdmZpb19mc2xfbWNfY2xvc2VfZGV2aWNlLFxuIDU4NTpcdFx0LmlvY3RsXHRcdD0gdmZpb19mc2xfbWNfaW9jdGwsXG4gNTg2Olx0XHQuZ2V0X3JlZ2lvbl9pbmZvX2NhcHMgPSB2ZmlvX2ZzbF9tY19pb2N0bF9nZXRfcmVnaW9uX2luZm8sXG4gNTg3Olx0XHQucmVhZFx0XHQ9IHZmaW9fZnNsX21jX3JlYWQsXG4gNTg4Olx0XHQud3JpdGVcdFx0PSB2ZmlvX2ZzbF9tY193cml0ZSxcbiA1ODk6XHRcdC5tbWFwXHRcdD0gdmZpb19mc2xfbWNfbW1hcCxcbiA1OTA6XHRcdC5iaW5kX2lvbW11ZmRcdD0gdmZpb19pb21tdWZkX3BoeXNpY2FsX2JpbmQsXG4gNTkxOlx0XHQudW5iaW5kX2lvbW11ZmRcdD0gdmZpb19pb21tdWZkX3BoeXNpY2FsX3VuYmluZCxcbiA1OTI6XHRcdC5hdHRhY2hfaW9hc1x0PSB2ZmlvX2lvbW11ZmRfcGh5c2ljYWxfYXR0YWNoX2lvYXMsXG4gNTkzOlx0XHQuZGV0YWNoX2lvYXNcdD0gdmZpb19pb21tdWZkX3BoeXNpY2FsX2RldGFjaF9pb2FzLFxuIDU5NDpcdH07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2Nzk5CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKlZGSU8tRlNMIE1DIERldmljZSBQcm9iaW5nOiBBIERlZXBlciBEaXZlKioKCk9rYXksIHNvIGB2ZmlvX2ZzbF9tY19wcm9iZWAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQgZ2V0cyBpbnZva2VkIHdoZW4gdGhlIHN5c3RlbSByZWNvZ25pemVzIHRoYXQgYSBgc3RydWN0IGZzbF9tY19kZXZpY2VgIGhhcyBwYWlyZWQgd2l0aCB0aGUgYHZmaW9fZnNsX21jX2RyaXZlcmAuIFRoYXQgbXVjaCBpcyBzdHJhaWdodGZvcndhcmQuIEJ1dCB0aGUgcmVhbCBxdWVzdGlvbiBpczogKndoZXJlKiBhcmUgdGhlc2UgYHN0cnVjdCBmc2xfbWNfZGV2aWNlYCBpbnN0YW5jZXMgYWN0dWFsbHkgYmVpbmcgaW5zdGFudGlhdGVkIGFuZCByZWdpc3RlcmVkIHdpdGhpbiB0aGUga2VybmVsPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGV2aWNlIGNyZWF0aW9uIGxpZmVjeWNsZS4KClRoZSBzdGFuZGFyZCBhcHByb2FjaCB0byB0cmFjayBkb3duIHRoZSBhbnN3ZXIgaXMgdG8gc2VlIHdoZXJlIGBmc2xfbWNfZGV2aWNlX2FkZGAgZ2V0cyBjYWxsZWQuIFRoaXMgc2hvdWxkIGxlYWQgbWUgdG8gdGhlIHJlbGV2YW50IGluaXRpYWxpemF0aW9uIGNvZGUsIGFuZCB0aGUgY3JlYXRpb24gb2YgdGhvc2UgY3JpdGljYWwgYHN0cnVjdCBmc2xfbWNfZGV2aWNlYCBzdHJ1Y3R1cmVzLiBMZXQmIzM5O3MgdHJhY2UgdGhvc2UgZnVuY3Rpb24gY2FsbHMgYW5kIHdvcmsgZnJvbSB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDQgMDg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZnNsX21jX2RldmljZV9hZGQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9MTY5PXN0YXRpYyB2b2lkIGZzbF9tY19vYmpfZGV2aWNlX2FkZChzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2Rldixcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xODItXHR9IGVsc2Uge1xuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTgzOlx0XHRlcnJvciA9IGZzbF9tY19kZXZpY2VfYWRkKG9ial9kZXNjLCBOVUxMLCBcdTAwMjZtY19idXNfZGV2LVx1MDAzZWRldixcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE4NC1cdFx0XHRcdFx0ICBcdTAwMjZjaGlsZF9kZXYpO1xuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9NzM3PXN0YXRpYyB2b2lkIGZzbF9tY19kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03NTEtICovXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjc1MjppbnQgZnNsX21jX2RldmljZV9hZGQoc3RydWN0IGZzbF9tY19vYmpfZGVzYyAqb2JqX2Rlc2MsXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc1My1cdFx0ICAgICAgc3RydWN0IGZzbF9tY19pbyAqbWNfaW8sXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04NzktfVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo4ODA6RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX2RldmljZV9hZGQpO1xuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04ODEtXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xMDM5PXN0YXRpYyBpbnQgZnNsX21jX2J1c19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTE1Ny1cbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTE1ODpcdGVycm9yID0gZnNsX21jX2RldmljZV9hZGQoXHUwMDI2b2JqX2Rlc2MsIG1jX2lvLCBcdTAwMjZwZGV2LVx1MDAzZWRldiwgXHUwMDI2bWNfYnVzX2Rldik7XG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTExNTktXHRpZiAoZXJyb3IgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg9NjAxPXN0cnVjdCBmc2xfbWNfYnVzIHtcbi0tXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC02MTMtXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaDo2MTQ6aW50IF9fbXVzdF9jaGVjayBmc2xfbWNfZGV2aWNlX2FkZChzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmpfZGVzYyxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTYxNS1cdFx0XHRcdCAgIHN0cnVjdCBmc2xfbWNfaW8gKm1jX2lvLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzgwNAoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBpbmZvcm1hdGlvbiwgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czoKCioqRGlzc2VjdGluZyB0aGUgZnNsX21jX2J1c19wcm9iZSBGdW5jdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYGZzbF9tY19idXNfcHJvYmVgIGZ1bmN0aW9uLiBNeSBpbml0aWFsIGZvY3VzIGlzIG9uICp3aGVyZSogaXQmIzM5O3MgY2FsbGVkIGFuZCAqd2h5Ki4gSXQgbG9va3MgbGlrZSB0aGUgcGxhdGZvcm0gZHJpdmVyIGBmc2xfbWNfYnVzX2RyaXZlcmAgaXMgdGhlIGtleS4gUmlnaHQsIGl0JiMzOTtzIG1hdGNoaW5nIGVpdGhlciB0aGUgYG9mX2RldmljZV9pZGAgc3RyaW5nICYjMzQ7ZnNsLHFvcmlxLW1jJiMzNDsgKGEgdHlwaWNhbCBEZXZpY2UgVHJlZSBtYXRjaCkgb3IgdGhlIGBhY3BpX2RldmljZV9pZGAgc3RyaW5nICYjMzQ7TlhQMDAwOCYjMzQ7IChmb3IgQUNQSS1iYXNlZCBzeXN0ZW1zKS4gRXhjZWxsZW50LCB0aGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoZSBzY29wZSBvZiBkZXZpY2VzIGl0JiMzOTtzIG1lYW50IHRvIGhhbmRsZS4KCk5vdywgbGV0JiMzOTtzIHN0ZXAgdGhyb3VnaCB0aGUgcHJvYmUgZnVuY3Rpb24gaXRzZWxmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCB0aGUgcmVzb3VyY2UgYWxsb2NhdGlvbiwgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUuIFdoYXQmIzM5O3MgaXQgZG9pbmcgd2l0aCB0aG9zZSBtYXRjaGVkIGRldmljZXM/IFdoZXJlIGRvZXMgaXQgZ28gZnJvbSBoZXJlPyBUaGUgcmVhbCB3b3JrIGhhcHBlbnMgaW5zaWRlIG9mIGBmc2xfbWNfYnVzX3Byb2JlYCBpdHNlbGYuIFRpbWUgdG8gZGlnIGluIGFuZCBvYnNlcnZlIHdoYXQgb2NjdXJzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDM5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEwMzk6XHRzdGF0aWMgaW50IGZzbF9tY19idXNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbjEwNDA6XHR7XG4xMDQxOlx0XHRzdHJ1Y3QgZnNsX21jX29ial9kZXNjIG9ial9kZXNjO1xuMTA0MjpcdFx0aW50IGVycm9yO1xuMTA0MzpcdFx0c3RydWN0IGZzbF9tYyAqbWM7XG4xMDQ0Olx0XHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldiA9IE5VTEw7XG4xMDQ1Olx0XHRzdHJ1Y3QgZnNsX21jX2lvICptY19pbyA9IE5VTEw7XG4xMDQ2Olx0XHRpbnQgY29udGFpbmVyX2lkO1xuMTA0NzpcdFx0cGh5c19hZGRyX3QgbWNfcG9ydGFsX3BoeXNfYWRkcjtcbjEwNDg6XHRcdHUzMiBtY19wb3J0YWxfc2l6ZSwgbWNfc3RyZWFtX2lkO1xuMTA0OTpcdFx0c3RydWN0IHJlc291cmNlICpwbGF0X3JlcztcbjEwNTA6XHRcbjEwNTE6XHRcdG1jID0gZGV2bV9remFsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBzaXplb2YoKm1jKSwgR0ZQX0tFUk5FTCk7XG4xMDUyOlx0XHRpZiAoIW1jKVxuMTA1MzpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbjEwNTQ6XHRcbjEwNTU6XHRcdHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIG1jKTtcbjEwNTY6XHRcbjEwNTc6XHRcdHBsYXRfcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAxKTtcbjEwNTg6XHRcdGlmIChwbGF0X3Jlcykge1xuMTA1OTpcdFx0XHRtYy1cdTAwM2Vmc2xfbWNfcmVncyA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGxhdF9yZXMpO1xuMTA2MDpcdFx0XHRpZiAoSVNfRVJSKG1jLVx1MDAzZWZzbF9tY19yZWdzKSlcbjEwNjE6XHRcdFx0XHRyZXR1cm4gUFRSX0VSUihtYy1cdTAwM2Vmc2xfbWNfcmVncyk7XG4xMDYyOlx0XHR9XG4xMDYzOlx0XG4xMDY0Olx0XHRpZiAobWMtXHUwMDNlZnNsX21jX3JlZ3MpIHtcbjEwNjU6XHRcdFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0FDUEkpIFx1MDAyNlx1MDAyNiAhZGV2X29mX25vZGUoXHUwMDI2cGRldi1cdTAwM2VkZXYpKSB7XG4xMDY2Olx0XHRcdFx0bWNfc3RyZWFtX2lkID0gcmVhZGwobWMtXHUwMDNlZnNsX21jX3JlZ3MgJiM0MzsgRlNMX01DX0ZBUFIpO1xuMTA2NzpcdFx0XHRcdC8qXG4xMDY4Olx0XHRcdFx0ICogSFcgT1JzIHRoZSBQTCBhbmQgQk1UIGJpdCwgcGxhY2VzIHRoZSByZXN1bHQgaW4gYml0XG4xMDY5Olx0XHRcdFx0ICogMTQgb2YgdGhlIFN0cmVhbUlEIGFuZCBPUnMgaW4gdGhlIElDSUQuIENhbGN1bGF0ZSBpdFxuMTA3MDpcdFx0XHRcdCAqIGFjY29yZGluZ2x5LlxuMTA3MTpcdFx0XHRcdCAqL1xuMTA3MjpcdFx0XHRcdG1jX3N0cmVhbV9pZCA9IChtY19zdHJlYW1faWQgXHUwMDI2IDB4ZmZmZikgfFxuMTA3MzpcdFx0XHRcdFx0KChtY19zdHJlYW1faWQgXHUwMDI2IChNQ19GQVBSX1BMIHwgTUNfRkFQUl9CTVQpKSA/XG4xMDc0Olx0XHRcdFx0XHRcdEJJVCgxNCkgOiAwKTtcbjEwNzU6XHRcdFx0XHRlcnJvciA9IGFjcGlfZG1hX2NvbmZpZ3VyZV9pZChcdTAwMjZwZGV2LVx1MDAzZWRldixcbjEwNzY6XHRcdFx0XHRcdFx0XHQgICAgICBERVZfRE1BX0NPSEVSRU5ULFxuMTA3NzpcdFx0XHRcdFx0XHRcdCAgICAgIFx1MDAyNm1jX3N0cmVhbV9pZCk7XG4xMDc4Olx0XHRcdFx0aWYgKGVycm9yID09IC1FUFJPQkVfREVGRVIpXG4xMDc5Olx0XHRcdFx0XHRyZXR1cm4gZXJyb3I7XG4xMDgwOlx0XHRcdFx0aWYgKGVycm9yKVxuMTA4MTpcdFx0XHRcdFx0ZGV2X3dhcm4oXHUwMDI2cGRldi1cdTAwM2VkZXYsXG4xMDgyOlx0XHRcdFx0XHRcdCBcJiMzNDtmYWlsZWQgdG8gY29uZmlndXJlIGRtYTogJWQuXFxuXCYjMzQ7LFxuMTA4MzpcdFx0XHRcdFx0XHQgZXJyb3IpO1xuMTA4NDpcdFx0XHR9XG4xMDg1Olx0XG4xMDg2Olx0XHRcdC8qXG4xMDg3Olx0XHRcdCAqIFNvbWUgYm9vdGxvYWRlcnMgcGF1c2UgdGhlIE1DIGZpcm13YXJlIGJlZm9yZSBib290aW5nIHRoZVxuMTA4ODpcdFx0XHQgKiBrZXJuZWwgc28gdGhhdCBNQyB3aWxsIG5vdCBjYXVzZSBmYXVsdHMgYXMgc29vbiBhcyB0aGVcbjEwODk6XHRcdFx0ICogU01NVSBwcm9iZXMgZHVlIHRvIHRoZSBmYWN0IHRoYXQgdGhlcmUmIzM5O3Mgbm8gY29uZmlndXJhdGlvblxuMTA5MDpcdFx0XHQgKiBpbiBwbGFjZSBmb3IgTUMuXG4xMDkxOlx0XHRcdCAqIEF0IHRoaXMgcG9pbnQgTUMgc2hvdWxkIGhhdmUgYWxsIGl0cyBTTU1VIHNldHVwIGRvbmUgc28gbWFrZVxuMTA5MjpcdFx0XHQgKiBzdXJlIGl0IGlzIHJlc3VtZWQuXG4xMDkzOlx0XHRcdCAqL1xuMTA5NDpcdFx0XHR3cml0ZWwocmVhZGwobWMtXHUwMDNlZnNsX21jX3JlZ3MgJiM0MzsgRlNMX01DX0dDUjEpIFx1MDAyNlxuMTA5NTpcdFx0XHRcdCAgICAgKH4oR0NSMV9QMV9TVE9QIHwgR0NSMV9QMl9TVE9QKSksXG4xMDk2Olx0XHRcdCAgICAgICBtYy1cdTAwM2Vmc2xfbWNfcmVncyAmIzQzOyBGU0xfTUNfR0NSMSk7XG4xMDk3Olx0XHR9XG4xMDk4Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA0IDA4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MjI3CgkJCQkJCQlvdXRwdXQ6IDEzNwoJCQkJCQkJdGhvdWdodHM6IDkxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbmZ1enphYmxlIENvZGUgUGF0aCBEZXRlY3RlZDogdmZpb19mc2xfbWMgRHJpdmVyIG9uIGFtZDY0KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGFuYWx5c2lzIHRlbGxzIG1lIHRoYXQgdGhlIGNvZGUgYmVpbmcgbW9kaWZpZWQsIHNwZWNpZmljYWxseSB3aXRoaW4gYGRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuY2AsIGlzIGZ1bmRhbWVudGFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuIFRoZSBwYXRjaCB0b3VjaGVzIGB2ZmlvX2ZzbF9tY19tbWFwKClgIHdoaWNoIGlzIHBhcnQgb2YgdGhlIFZGSU8gZHJpdmVyIGZvciB0aGUgRnJlZXNjYWxlIE1hbmFnZW1lbnQgQ29tcGxleCAoZnNsLW1jKSBidXMuIFRoaXMgYGZzbC1tY2AgZHJpdmVyIGRpcmVjdGx5IGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSwgcmVhZGluZyBhbmQgd3JpdGluZyB0byByZWdpc3RlcnMgYW5kIGNvbW11bmljYXRpbmcgd2l0aCB0aGUgTWFuYWdlbWVudCBDb21wbGV4LiBUaGUgaXNzdWUgaXMgdGhpczogdGhpcyBoYXJkd2FyZSBpcyB2ZW5kb3Itc3BlY2lmaWMsIG9ubHkgcHJlc2VudCBvbiBOWFAgTGF5ZXJzY2FwZSBTb0NzLgoKTm93LCBjb25zaWRlciB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZTogYGFtZDY0YC4gT24gYGFtZDY0YCwgdGhlcmUgaXMgbm8gd2F5IGZvciBRRU1VIG9yIGFueSBzdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudCAobGlrZSBHQ0UpIHRvIGVtdWxhdGUgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZS4gRXZlbiBvbiBBUk02NCwgdGhlIGVtdWxhdGlvbiBpc24mIzM5O3QgcHJlc2VudCwgYW5kIG9uIGBhbWQ2NGAsIHRoZSByZWxldmFudCBhcmNoaXRlY3R1cmUgY29uZmlndXJhdGlvbiAoYEFSQ0hfTEFZRVJTQ0FQRWApIGlzIG5vdCBldmVuIGF2YWlsYWJsZSB1bmxlc3Mgc3BlY2lmaWNhbGx5IGNvbXBpbGVkIGZvciBhIHRlc3Qgc2NlbmFyaW8gKGBDT01QSUxFX1RFU1RgKSwgZXZlbiB0aGVuLCB0aGlzIGhhcmR3YXJlIGRvZXMgbm90IGV4aXN0IGluIHRoZXNlIGVudmlyb25tZW50cy4gCgpMb29raW5nIGF0IHRoZSBOZWdhdGl2ZSBDcml0ZXJpYSBpbiBzZWN0aW9uIDIsIHRoaXMgY2xlYXJseSBmYWxscyB1bmRlciAmIzM0O1N0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSYjMzQ7IGFzIGl0IGRlYWxzIHdpdGggYSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgY29tcG9uZW50IG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBGdXJ0aGVybW9yZSwgJiMzNDtSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURSYjMzQ7LCBhbmQgc2luY2UgdGhpcyBjb2RlIGNhbm5vdCBiZSBleGVjdXRlZCBpbiBzdGFuZGFyZCBlbnZpcm9ubWVudHMsIGZ1enppbmcgaXMgcG9pbnRsZXNzLgoKVGhlIGRpZmYgY29uZmlybXMgdGhhdCB0aGUgcGF0Y2ggb25seSB0b3VjaGVzIGB2ZmlvX2ZzbF9tYy5jYC4gVGhlIGNoYW5nZSB3aXRoaW4gYHZmaW9fZnNsX21jX21tYXAoKWAgaXMgZm9jdXNlZCBvbiBtZW1vcnkgcHJvdGVjdGlvbiBmbGFncy4gSG93ZXZlciwgaXRzIGV4ZWN1dGlvbiBpcyBjb250aW5nZW50IG9uIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlLCB3aGljaCBpcyBpbmFjY2Vzc2libGUgaW4gb3VyIGZ1enppbmcgZW52aXJvbm1lbnQuCgpUaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMgb24gYW1kNjQuIAoKVGhlIGBzZXQtcmVzdWx0c2Agd2lsbCBuZWVkIHRoZXNlIHZhbHVlczoKLSAgIGBXb3J0aEZ1enppbmdgOiBmYWxzZQotICAgYEZvY3VzU3ltYm9sc2A6IFtdIChvciBudWxsL2VtcHR5KQotICAgYEVuYWJsZUNvbmZpZ3NgOiBbXSAob3IgbnVsbC9lbXB0eSkKLSAgIGBSZWFzb25pbmdgOiBDb25jaXNlIGV4cGxhbmF0aW9uIG9mIHdoeSBpdCBpcyBub3Qgd29ydGggZnV6emluZy4KICAgIDEuICBUaGUgcGF0Y2ggbW9kaWZpZXMgYHZmaW9fZnNsX21jX21tYXAoKWAgaW4gYGRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuY2AuCiAgICAyLiAgVGhpcyBkcml2ZXIgcHJvdmlkZXMgVkZJTyBzdXBwb3J0IGZvciBOWFAvRnJlZXNjYWxlIFFvcklRIERQQUEyIE1hbmFnZW1lbnQgQ29tcGxleCAoYGZzbC1tY2ApIGJ1cyBkZXZpY2VzIGZvdW5kIG9uIExheWVyc2NhcGUgU29Dcy4KICAgIDMuICBJdCByZXF1aXJlcyBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgKEZyZWVzY2FsZSBNQyBhcmNoaXRlY3R1cmUpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cywgYW5kIGlzIHBhcnRpY3VsYXJseSB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYGFtZDY0YCkuCiAgICA0LiAgU2luY2UgdGhlIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLCBmdXp6aW5nIGNhbm5vdCBleGVjdXRlIHRoaXMgY29kZSBwYXRoLgoKQWxyaWdodCwgdGhhdCYjMzk7cyBteSBjYWxsLiBMZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB2ZmlvX2ZzbF9tY19tbWFwYCBpbiBgZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jYCwgd2hpY2ggcHJvdmlkZXMgVkZJTyBzdXBwb3J0IGZvciBOWFAvRnJlZXNjYWxlIFFvcklRIERQQUEyIE1hbmFnZW1lbnQgQ29tcGxleCAoZnNsLW1jKSBidXMgZGV2aWNlcy4gVGhpcyByZXF1aXJlcyBwaHlzaWNhbCBOWFAgTGF5ZXJzY2FwZSBTb0MgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIHRoZSB0YXJnZXQgYW1kNjQgYXJjaGl0ZWN0dXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHZmaW9fZnNsX21jX21tYXBgIGluIGBkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNgLCB3aGljaCBwcm92aWRlcyBWRklPIHN1cHBvcnQgZm9yIE5YUC9GcmVlc2NhbGUgUW9ySVEgRFBBQTIgTWFuYWdlbWVudCBDb21wbGV4IChmc2wtbWMpIGJ1cyBkZXZpY2VzLiBUaGlzIHJlcXVpcmVzIHBoeXNpY2FsIE5YUCBMYXllcnNjYXBlIFNvQyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gdGhlIHRhcmdldCBhbWQ2NCBhcmNoaXRlY3R1cmUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wNCAwODoyMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MTk6NTcuNzM0NDYzNDQ4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTM2OTg1MzgzODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgdmZpb19mc2xfbWNfbW1hcGAgaW4gYGRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuY2AsIHdoaWNoIHByb3ZpZGVzIFZGSU8gc3VwcG9ydCBmb3IgTlhQL0ZyZWVzY2FsZSBRb3JJUSBEUEFBMiBNYW5hZ2VtZW50IENvbXBsZXggKGZzbC1tYykgYnVzIGRldmljZXMuIFRoaXMgcmVxdWlyZXMgcGh5c2ljYWwgTlhQIExheWVyc2NhcGUgU29DIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFtZDY0IGFyY2hpdGVjdHVyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjE5OjU3LjczNDQ3MDgzOFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAwMjc5NzYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYjAwMzRjOTc0YTk0MWMxOWNmN2IyMDNkNjdiYmI0NmRjMTg2ODI1ZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIFNlcCA0IDA4OjE5OjU3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYyBiL2RyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuY1xcbmluZGV4IGI0YzM5NTgyMDFiMjUuLjg1ZjQ3OWRiOTM2YzYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXFxuKysrIGIvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXFxuQEAgLTQwNyw2ICs0MDcsMTAgQEAgc3RhdGljIGludCB2ZmlvX2ZzbF9tY19tbWFwKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2LFxcbiBcXHRcXHRcXHRcXHUwMDI2XFx1MDAyNiAodm1hLVxcdTAwM2V2bV9mbGFncyBcXHUwMDI2IFZNX1dSSVRFKSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbitcXHQvKiBQcmV2ZW50IHJlYWQtb25seSByZWdpb24gbWFwcGluZ3MgZnJvbSBiZWluZyB1cGdyYWRlZCB3aXRoIG1wcm90ZWN0KCkgKi9cXG4rXFx0aWYgKCEodmRldi1cXHUwMDNlcmVnaW9uc1tpbmRleF0uZmxhZ3MgXFx1MDAyNiBWRklPX1JFR0lPTl9JTkZPX0ZMQUdfV1JJVEUpKVxcbitcXHRcXHR2bV9mbGFnc19jbGVhcih2bWEsIFZNX01BWVdSSVRFKTtcXG4rXFxuIFxcdHZtYS1cXHUwMDNldm1fcHJpdmF0ZV9kYXRhID0gbWNfZGV2O1xcbiBcXG4gXFx0cmV0dXJuIHZmaW9fZnNsX21jX21tYXBfbW1pbyh2ZGV2LVxcdTAwM2VyZWdpb25zW2luZGV4XSwgdm1hKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MTk6NTguMjM1NTc1ODIxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo1MzE5NzQxMjg2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHZmaW9fZnNsX21jX21tYXBgIGluIGBkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNgLCB3aGljaCBwcm92aWRlcyBWRklPIHN1cHBvcnQgZm9yIE5YUC9GcmVlc2NhbGUgUW9ySVEgRFBBQTIgTWFuYWdlbWVudCBDb21wbGV4IChmc2wtbWMpIGJ1cyBkZXZpY2VzLiBUaGlzIHJlcXVpcmVzIHBoeXNpY2FsIE5YUCBMYXllcnNjYXBlIFNvQyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gdGhlIHRhcmdldCBhbWQ2NCBhcmNoaXRlY3R1cmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGIwMDM0Yzk3NGE5NDFjMTljZjdiMjAzZDY3YmJiNDZkYzE4NjgyNWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCA0IDA4OjE5OjU3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jIGIvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXG5pbmRleCBiNGMzOTU4MjAxYjI1Li44NWY0NzlkYjkzNmM2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jXG4rKysgYi9kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNcbkBAIC00MDcsNiArNDA3LDEwIEBAIHN0YXRpYyBpbnQgdmZpb19mc2xfbWNfbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcbiBcdFx0XHRcdTAwMjZcdTAwMjYgKHZtYS1cdTAwM2V2bV9mbGFncyBcdTAwMjYgVk1fV1JJVEUpKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcbitcdC8qIFByZXZlbnQgcmVhZC1vbmx5IHJlZ2lvbiBtYXBwaW5ncyBmcm9tIGJlaW5nIHVwZ3JhZGVkIHdpdGggbXByb3RlY3QoKSAqL1xuK1x0aWYgKCEodmRldi1cdTAwM2VyZWdpb25zW2luZGV4XS5mbGFncyBcdTAwMjYgVkZJT19SRUdJT05fSU5GT19GTEFHX1dSSVRFKSlcbitcdFx0dm1fZmxhZ3NfY2xlYXIodm1hLCBWTV9NQVlXUklURSk7XG4rXG4gXHR2bWEtXHUwMDNldm1fcHJpdmF0ZV9kYXRhID0gbWNfZGV2O1xuIFxuIFx0cmV0dXJuIHZmaW9fZnNsX21jX21tYXBfbW1pbyh2ZGV2LVx1MDAzZXJlZ2lvbnNbaW5kZXhdLCB2bWEpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MTk6NTguMjM1NTc3NTAxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTk4Njg0ODQ3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGB2ZmlvX2ZzbF9tY2AgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gVGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB1bmRlcnN0YW5kIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIG9yIGhhcmR3YXJlIHRoaXMgaXMgdGllZCB0by4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBzb21ldGhpbmcgc3BlY2lmaWMgdG8gRnJlZXNjYWxlIE1hbmFnZW1lbnQgQ29tcGxleCAoRk1DKSBoYXJkd2FyZSwgb3IgaWYgaXQgaGFzIHNvbWUgYnJvYWRlciBpbXBsaWNhdGlvbnMuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgcmVsYXRlZCBidWlsZCBjb25maWd1cmF0aW9uLlxuXG5JJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIGVpdGhlciB0aGUgYEtjb25maWdgIG9yIHRoZSBgTWFrZWZpbGVgIGluIHRoZSBzYW1lIGRpcmVjdG9yeSwgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL3ZmaW8vZnNsLW1jL2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbmRpdGlvbmFsIGJ1aWxkIGxvZ2ljLCB3aGljaCBpcyBjcnVjaWFsLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIGNvZGUgaXMgZXZlbiAqcmVhY2hhYmxlKiBvbiBhbWQ2NCwgb3IgaWYgaXQncyBzdHJpY3RseSBhIGRlZGljYXRlZCBoYXJkd2FyZSByZXF1aXJlbWVudC4gSXQncyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhpcyBiZWZvcmUgSSBnbyBhbnkgZnVydGhlci5cblxuVG8gcXVpY2tseSBnZXQgYSBmZWVsIGZvciBob3cgYHZmaW9fZnNsX21jYCBpcyBjb25maWd1cmVkLCBJIHNob3VsZCBiZSBhYmxlIHRvIGdyZXAgZm9yIGFueSBLY29uZmlnIG9wdGlvbnMgdGhhdCBtaWdodCBiZSByZWxhdGVkLiBUaGlzIHNob3VsZCBxdWlja2x5IGhpZ2hsaWdodCB3aGljaCBjb25maWd1cmF0aW9uIG9wdGlvbnMgb3IgZGVwZW5kZW5jaWVzIGFjdGl2YXRlIHRoaXMgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk2MSwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjIwOjA0LjIyMjQyOTA3OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mzg2MzM2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJWRklPX0ZTTF9NQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL01ha2VmaWxlPTE2PW9iai0kKENPTkZJR19WRklPX01ERVYpICs9IG1kZXYvXFxuZHJpdmVycy92ZmlvL01ha2VmaWxlOjE3Om9iai0kKENPTkZJR19WRklPX0ZTTF9NQykgKz0gZnNsLW1jL1xcbmRyaXZlcnMvdmZpby9NYWtlZmlsZS0xOC1vYmotJChDT05GSUdfVkZJT19DRFgpICs9IGNkeC9cXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZz0xPW1lbnUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgRlNMX01DIGJ1cyBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnLTMtXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnOjQ6Y29uZmlnIFZGSU9fRlNMX01DXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnLTUtXFx0dHJpc3RhdGUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgUW9ySVEgRFBBQTIgZnNsLW1jIGJ1cyBkZXZpY2VzXFxcIlxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy9NYWtlZmlsZT0zPXZmaW8tZnNsLW1jLXkgOj0gdmZpb19mc2xfbWMubyB2ZmlvX2ZzbF9tY19pbnRyLm9cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX1ZGSU9fRlNMX01DKSArPSB2ZmlvLWZzbC1tYy5vXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9OTc9c3RhdGljIHZvaWQgdmZpb19mc2xfbWNfY2xvc2VfZGV2aWNlKHN0cnVjdCB2ZmlvX2RldmljZSAqY29yZV92ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTExMi1cXHRcXHRkZXZfd2FybihcXHUwMDI2bWNfY29udC1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzoxMTM6XFx0XFx0XFx0IFxcXCJWRklPX0ZTTF9NQzogcmVzZXQgZGV2aWNlIGhhcyBmYWlsZWQgKCVkKVxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtMTE0LVxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTEyMD1zdGF0aWMgaW50IHZmaW9fZnNsX21jX2lvY3RsX2dldF9yZWdpb25faW5mbyhzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0xMzEtXFx0LyogbWFwIG9mZnNldCB0byB0aGUgcGh5c2ljYWwgYWRkcmVzcyAgKi9cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6MTMyOlxcdGluZm8tXFx1MDAzZW9mZnNldCA9IFZGSU9fRlNMX01DX0lOREVYX1RPX09GRlNFVChpbmZvLVxcdTAwM2VpbmRleCk7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTEzMy1cXHRpbmZvLVxcdTAwM2VzaXplID0gdmRldi1cXHUwMDNlcmVnaW9uc1tpbmZvLVxcdTAwM2VpbmRleF0uc2l6ZTtcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz0yMzQ9c3RhdGljIHNzaXplX3QgdmZpb19mc2xfbWNfcmVhZChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldiwgY2hhciBfX3VzZXIgKmJ1ZixcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0yMzgtXFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSwgdmRldik7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjIzOTpcXHR1bnNpZ25lZCBpbnQgaW5kZXggPSBWRklPX0ZTTF9NQ19PRkZTRVRfVE9fSU5ERVgoKnBwb3MpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzoyNDA6XFx0bG9mZl90IG9mZiA9ICpwcG9zIFxcdTAwMjYgVkZJT19GU0xfTUNfT0ZGU0VUX01BU0s7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTI0MS1cXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdmRldi1cXHUwMDNlbWNfZGV2O1xcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTMxMj1zdGF0aWMgc3NpemVfdCB2ZmlvX2ZzbF9tY193cml0ZShzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0zMTctXFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSwgdmRldik7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjMxODpcXHR1bnNpZ25lZCBpbnQgaW5kZXggPSBWRklPX0ZTTF9NQ19PRkZTRVRfVE9fSU5ERVgoKnBwb3MpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzozMTk6XFx0bG9mZl90IG9mZiA9ICpwcG9zIFxcdTAwMjYgVkZJT19GU0xfTUNfT0ZGU0VUX01BU0s7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTMyMC1cXHRzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2ID0gdmRldi1cXHUwMDNlbWNfZGV2O1xcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTM1Mz1zdGF0aWMgaW50IHZmaW9fZnNsX21jX21tYXBfbW1pbyhzdHJ1Y3QgdmZpb19mc2xfbWNfcmVnaW9uIHJlZ2lvbixcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0zNjAtXFx0cGdvZmYgPSB2bWEtXFx1MDAzZXZtX3Bnb2ZmIFxcdTAwMjZcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6MzYxOlxcdFxcdCgoMVUgXFx1MDAzY1xcdTAwM2MgKFZGSU9fRlNMX01DX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpKSAtIDEpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0zNjItXFx0YmFzZSA9IHBnb2ZmIFxcdTAwM2NcXHUwMDNjIFBBR0VfU0hJRlQ7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9Mzc4PXN0YXRpYyBpbnQgdmZpb19mc2xfbWNfbW1hcChzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldixcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0zODUtXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjM4NjpcXHRpbmRleCA9IHZtYS1cXHUwMDNldm1fcGdvZmYgXFx1MDAzZVxcdTAwM2UgKFZGSU9fRlNMX01DX09GRlNFVF9TSElGVCAtIFBBR0VfU0hJRlQpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy0zODctXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9NDIwPXN0YXRpYyBpbnQgdmZpb19mc2xfbWNfYnVzX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDMxLVxcdFxcdGlmIChkZXZpY2Vfc2V0X2RyaXZlcl9vdmVycmlkZShkZXYsIHZmaW9fZnNsX21jX29wcy5uYW1lKSlcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6NDMyOlxcdFxcdFxcdGRldl93YXJuKGRldiwgXFxcIlZGSU9fRlNMX01DOiBTZXR0aW5nIGRyaXZlciBvdmVycmlkZSBmb3IgZGV2aWNlIGluIGRwcmMgJXMgZmFpbGVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy00MzMtXFx0XFx0XFx0XFx0IGRldl9uYW1lKFxcdTAwMjZtY19jb250LVxcdTAwM2VkZXYpKTtcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDM0LVxcdFxcdGVsc2VcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6NDM1OlxcdFxcdFxcdGRldl9pbmZvKGRldiwgXFxcIlZGSU9fRlNMX01DOiBTZXR0aW5nIGRyaXZlciBvdmVycmlkZSBmb3IgZGV2aWNlIGluIGRwcmMgJXNcXFxcblxcXCIsXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQzNi1cXHRcXHRcXHRcXHQgZGV2X25hbWUoXFx1MDAyNm1jX2NvbnQtXFx1MDAzZWRldikpO1xcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ0MS1cXHRcXHRpZiAobWNfZHJ2IFxcdTAwMjZcXHUwMDI2IG1jX2RydiAhPSBcXHUwMDI2dmZpb19mc2xfbWNfZHJpdmVyKVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzo0NDI6XFx0XFx0XFx0ZGV2X3dhcm4oZGV2LCBcXFwiVkZJT19GU0xfTUM6IE9iamVjdCAlcyBib3VuZCB0byBkcml2ZXIgJXMgd2hpbGUgRFBSQyBib3VuZCB0byB2ZmlvLWZzbC1tY1xcXFxuXFxcIixcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDQzLVxcdFxcdFxcdFxcdCBkZXZfbmFtZShkZXYpLCBtY19kcnYtXFx1MDAzZWRyaXZlci5uYW1lKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz00NDk9c3RhdGljIGludCB2ZmlvX2ZzbF9tY19pbml0X2RldmljZShzdHJ1Y3QgdmZpb19mc2xfbWNfZGV2aWNlICp2ZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ2OS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjQ3MDpcXHRcXHRkZXZfZXJyKFxcdTAwMjZtY19kZXYtXFx1MDAzZWRldiwgXFxcIlZGSU9fRlNMX01DOiBGYWlsZWQgdG8gc2V0dXAgRFBSQyAoJWQpXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy00NzEtXFx0XFx0Z290byBvdXRfbmNfdW5yZWc7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM9NDgwPXN0YXRpYyBpbnQgdmZpb19mc2xfbWNfc2Nhbl9jb250YWluZXIoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldilcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy00ODktXFx0XFx0ZGV2X2VycihcXHUwMDI2bWNfZGV2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjQ5MDpcXHRcXHRcXHRcXFwiVkZJT19GU0xfTUM6IENvbnRhaW5lciBzY2FubmluZyBmYWlsZWQgKCVkKVxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNDkxLVxcdFxcdGRwcmNfcmVtb3ZlX2RldmljZXMobWNfZGV2LCBOVUxMLCAwKTtcXG4tLVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYz01MzA9c3RhdGljIGludCB2ZmlvX2ZzbF9tY19wcm9iZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTU0Mi1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjU0MzpcXHRcXHRkZXZfZXJyKGRldiwgXFxcIlZGSU9fRlNMX01DOiBGYWlsZWQgdG8gYWRkIHRvIHZmaW8gZ3JvdXBcXFxcblxcXCIpO1xcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYy01NDQtXFx0XFx0Z290byBvdXRfcHV0X3ZkZXY7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaC02LVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oOjc6I2lmbmRlZiBWRklPX0ZTTF9NQ19QUklWQVRFX0hcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaDo4OiNkZWZpbmUgVkZJT19GU0xfTUNfUFJJVkFURV9IXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmgtOS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaDoxMDojZGVmaW5lIFZGSU9fRlNMX01DX09GRlNFVF9TSElGVCAgICA0MFxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oOjExOiNkZWZpbmUgVkZJT19GU0xfTUNfT0ZGU0VUX01BU0sgKCgodTY0KSgxKSBcXHUwMDNjXFx1MDAzYyBWRklPX0ZTTF9NQ19PRkZTRVRfU0hJRlQpIC0gMSlcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaC0xMi1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jX3ByaXZhdGUuaDoxMzojZGVmaW5lIFZGSU9fRlNMX01DX09GRlNFVF9UT19JTkRFWChvZmYpICgob2ZmKSBcXHUwMDNlXFx1MDAzZSBWRklPX0ZTTF9NQ19PRkZTRVRfU0hJRlQpXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmgtMTQtXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmg6MTU6I2RlZmluZSBWRklPX0ZTTF9NQ19JTkRFWF9UT19PRkZTRVQoaW5kZXgpXFx0XFxcXFxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oOjE2OlxcdCgodTY0KShpbmRleCkgXFx1MDAzY1xcdTAwM2MgVkZJT19GU0xfTUNfT0ZGU0VUX1NISUZUKVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWNfcHJpdmF0ZS5oLTE3LVxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmg9NDc9dm9pZCB2ZmlvX2ZzbF9tY19pcnFzX2NsZWFudXAoc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSAqdmRldik7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmgtNDgtXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tY19wcml2YXRlLmg6NDk6I2VuZGlmIC8qIFZGSU9fRlNMX01DX1BSSVZBVEVfSCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyMDowNC4yNzYyOTg0NTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMTU1NDg5MTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipDaGVja2luZyB0aGUgVkZJTyBGU0wtTUMgS2NvbmZpZyBGaWxlKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGlzLiBUaGUgZmlyc3QgdGhpbmcgSSdtIGdvaW5nIHRvIGRvIGlzIHRha2UgYSBsb29rIGF0IHRoZSBgZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnYCBmaWxlLiBJJ20gYXNzdW1pbmcgdGhlcmUncyBzb21lIGNvbmZpZ3VyYXRpb24gbG9naWMsIG1heWJlIGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcywgb3IgZXZlbiBqdXN0IHNvbWUgYmFzaWMgZG9jdW1lbnRhdGlvbiBJIG5lZWQgdG8gcmV2aWV3LiBHaXZlbiB0aGUgY29udGV4dCwgSSBleHBlY3QgdGhpcyBgS2NvbmZpZ2AgZmlsZSBpcyBnb2luZyB0byBkaWN0YXRlIHRoZSBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgcmVsYXRlZCB0byB0aGUgVkZJTyAoVmlydHVhbCBGdW5jdGlvbiBJL08pIGRyaXZlciBmb3IgdGhlIEZyZWVzY2FsZSAobm93IE5YUCkgTXVsdGktQ29yZSAoTUMpIGFyY2hpdGVjdHVyZS4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSB3aGV0aGVyIHNwZWNpZmljIE1DIGhhcmR3YXJlIGlzIHN1cHBvcnRlZCwgYW55IG5lY2Vzc2FyeSBkZXZpY2Utc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIGRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgZmVhdHVyZXMgb3IgZHJpdmVycywgYW5kIGhvdyB0aGUgVkZJTyBkcml2ZXIgaW50ZWdyYXRlcyB3aXRoaW4gdGhlIGJyb2FkZXIgZnJhbWV3b3JrLiBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGVyZSBhcmUgYW55IHNwZWNpZmljIG9wdGlvbnMgb3IgY29tcGlsZS10aW1lIGNvbmZpZ3VyYXRpb25zIEkgc2hvdWxkIGJlIGF3YXJlIG9mIG9yIGFkanVzdC4gTGV0J3Mgc2VlIHdoYXQncyBpbiB0aGVyZSFcblxuXG4iLCJJbnB1dFRva2VucyI6NjM5NSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjIwOjA2LjQzMTc5MTE1NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdG1lbnUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgRlNMX01DIGJ1cyBkZXZpY2VzXFxcIlxcbiAgIDI6XFx0XFx0ZGVwZW5kcyBvbiBGU0xfTUNfQlVTXFxuICAgMzpcXHRcXG4gICA0OlxcdGNvbmZpZyBWRklPX0ZTTF9NQ1xcbiAgIDU6XFx0XFx0dHJpc3RhdGUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgUW9ySVEgRFBBQTIgZnNsLW1jIGJ1cyBkZXZpY2VzXFxcIlxcbiAgIDY6XFx0XFx0c2VsZWN0IEVWRU5URkRcXG4gICA3OlxcdFxcdGhlbHBcXG4gICA4OlxcdFxcdCAgRHJpdmVyIHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0aGUgVkZJTyBRb3JJUSBEUEFBMiBmc2wtbWNcXG4gICA5OlxcdFxcdCAgKE1hbmFnZW1lbnQgQ29tcGxleCkgZGV2aWNlcy4gVGhpcyBpcyByZXF1aXJlZCB0byBwYXNzdGhyb3VnaFxcbiAgMTA6XFx0XFx0ICBmc2wtbWMgYnVzIGRldmljZXMgdXNpbmcgdGhlIFZGSU8gZnJhbWV3b3JrLlxcbiAgMTE6XFx0XFxuICAxMjpcXHRcXHQgIElmIHlvdSBkb24ndCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IE4uXFxuICAxMzpcXHRcXG4gIDE0OlxcdGVuZG1lbnVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MjA6MDYuNDMxODUxNjg2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQwNzE4OTA1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgRGl2ZSBmb3IgRlNMX01DX0JVUyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoZXJlIGBGU0xfTUNfQlVTYCBpcyBkZWZpbmVkIGFuZCB1c2VkIHdpdGhpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gc3lzdGVtLiBUaGlzIG1lYW5zIEknbSBnb2luZyB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkbyBhIGdsb2JhbCBzZWFyY2ggYWNyb3NzIHRoZSBrZXJuZWwgc291cmNlIHRyZWUuIEknbGwgbmVlZCB0byB1c2UgdG9vbHMgdG8gcXVpY2tseSBsb2NhdGUgYWxsIGluc3RhbmNlcyBvZiB0aGlzIHN5bWJvbC4gSSBleHBlY3QgSSdsbCB3YW50IHRvIGZpbHRlciBiYXNlZCBvbiBmaWxlIGV4dGVuc2lvbiBgS2NvbmZpZ2AgZmlsZXMgYW5kIG1heSBuZWVkIHNvbWUgYWRkaXRpb25hbCBvcHRpb25zIHRvIG1hbmFnZSB0aGUgc2VhcmNoIHByb2Nlc3MgYmFzZWQgb24gdGhlIHN5c3RlbSBpbiB3aGljaCB0aGlzIGlzIGltcGxlbWVudGVkLiBUaGlzIHdpbGwgbGV0IG1lIHNlZSBpdHMgZGVwZW5kZW5jaWVzLCB3aG8ncyBlbmFibGluZyBpdCwgYW5kIHVuZGVyIHdoYXQgY29uZGl0aW9ucy4gVW5kZXJzdGFuZGluZyB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBsb2dpYyBhcm91bmQgYEZTTF9NQ19CVVNgIGlzIGNydWNpYWwgdG8gaXRzIGJlaGF2aW9yIGFuZCBpbXBsaWNhdGlvbnMgd2l0aGluIHRoZSBrZXJuZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4NzcsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjIwOjA4LjgzOTA0MzY1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4NDI4MDY2NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEZTTF9NQ19CVVNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctNy1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZzo4OmNvbmZpZyBGU0xfTUNfQlVTXFxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctOS1cXHRib29sIFxcXCJRb3JJUSBEUEFBMiBmc2wtbWMgYnVzIGRyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MjA6MTAuNjgxODU2MjM1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mzk2NzI2Njc4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHJlYWRpbmcgYGRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnYDpcblxuKipBbmFseXppbmcgdGhlIEZTTCBNQyBLY29uZmlnIEZpbGUqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgYGRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnYCBmaWxlLiBJIGltbWVkaWF0ZWx5IHJlY29nbml6ZSB0aGlzIGFzIGEgY3J1Y2lhbCBwaWVjZSBmb3IgY29uZmlndXJpbmcgdGhlIEZyZWVzY2FsZSAobm93IE5YUCkgTXVsdGktQ29yZSAoTUMpIGRyaXZlcnMgd2l0aGluIHRoZSBrZXJuZWwuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSBzY29wZSBvZiB3aGF0J3MgYmVpbmcgY29udHJvbGxlZCBoZXJlIOKAkyB3aGF0IG9wdGlvbnMgYXJlIHByZXNlbnRlZCB0byB0aGUgdXNlciBkdXJpbmcgdGhlIGtlcm5lbCBidWlsZCBwcm9jZXNzLCBhbmQgaG93IGFyZSB0aGV5IHN0cnVjdHVyZWQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBkaWZmZXJlbnQgTUMgY29tcG9uZW50cy4gVGhpcyBmaWxlIGxpa2VseSBkZWZpbmVzIHRoZSBidWlsZC10aW1lIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgZGVmYXVsdHMsIGFuZCBwb3RlbnRpYWxseSBkZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIHN1YnN5c3RlbXMgb3IgZmVhdHVyZXMuXG5cbkknbGwgYmUgbG9va2luZyBmb3IgdGhpbmdzIGxpa2U6XG5cbiogICAqKlRvcC1sZXZlbCBvcHRpb25zOioqIFRoZXNlIGFyZSB0aGUgZW50cnkgcG9pbnRzIGZvciBlbmFibGluZyBvciBkaXNhYmxpbmcgdGhlIG92ZXJhbGwgRlNMIE1DIGRyaXZlciBzdXBwb3J0LiBQcm9iYWJseSBzb21ldGhpbmcgbGlrZSBgQ09ORklHX0ZTTF9NQ2AuXG4qICAgKipTdWItb3B0aW9uczoqKiBUaGVuIEknbGwgYmUgc2VhcmNoaW5nIGZvciBtb3JlIGdyYW51bGFyIG9wdGlvbnMgdGhhdCBhbGxvdyB0aGUgdXNlciB0byBzZWxlY3Qgc3BlY2lmaWMgRlNMIE1DIGRldmljZXMsIGZlYXR1cmVzIChlLmcuLCBzcGVjaWZpYyBoYXJkd2FyZSByZXZpc2lvbnMsIGZ1bmN0aW9uYWxpdGllcyksIG9yIHByb3RvY29scy4gVGhpcyBpcyB3aGVyZSBJJ2xsIGdldCBpbnRvIHRoZSBkZXRhaWxzIG9mIHdoYXQgRlNMIE1DIGFjdHVhbGx5IGJyaW5ncyB0byB0aGUgdGFibGUgYW5kIHdoYXQgcGFydHMgb2YgdGhlIHN5c3RlbSBhcmUgYWZmZWN0ZWQuXG4qICAgKipEZXBlbmRlbmNpZXM6KiogSSBhbnRpY2lwYXRlIHNlZWluZyBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cy4gVGhlc2UgYXJlIGNyaXRpY2FsOyB0aGV5IHRlbGwgbWUgd2hhdCBvdGhlciBLY29uZmlnIG9wdGlvbnMgbXVzdCBiZSBzZXQgKG9yIG5vdCBzZXQpIGZvciBhIHBhcnRpY3VsYXIgTUMgZmVhdHVyZSB0byBldmVuIGJlIGNvbnNpZGVyZWQuIFRoaXMgaGVscHMgdW5kZXJzdGFuZCB0aGUgcHJlLXJlcXVpc2l0ZXMgZm9yIGVuYWJsaW5nIGFuZCB1c2luZyB0aGUgRlNMIE1DIGRyaXZlcnMuXG4qICAgKipEZWZhdWx0czoqKiBgZGVmYXVsdGAgc3RhdGVtZW50cyBhcmUgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIHdoYXQgdGhlIFwib3V0LW9mLXRoZS1ib3hcIiBjb25maWd1cmF0aW9uIHdpbGwgYmUuIFdoYXQgb3B0aW9ucyBhcmUgYXV0b21hdGljYWxseSBlbmFibGVkIG9yIGRpc2FibGVkIHdoZW4gdGhlIHVzZXIgaXNuJ3QgbWFraW5nIGV4cGxpY2l0IGNob2ljZXMuXG4qICAgKipIZWxwIHRleHQ6KiogVGhlIGBoZWxwYCBzZWN0aW9ucyBhcmUgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgKnB1cnBvc2UqIG9mIGVhY2ggb3B0aW9uIGFuZCBpdHMgaW1wbGljYXRpb25zLiBJJ2xsIHJlYWQgdGhlc2UgY2FyZWZ1bGx5IHRvIGdldCBhIHByb3BlciBtZW50YWwgbW9kZWwgb2YgaG93IGVhY2ggTUMgZGV2aWNlIGlzIGluY29ycG9yYXRlZCBpbnRvIHRoZSBkZXZpY2UgdHJlZS5cblxuSSBleHBlY3QgdG8gc2VlIGEgbG90IG9mIGNvbmRpdGlvbmFsIGxvZ2ljLCBwcm9iYWJseSB1c2luZyBgaWZgIHN0YXRlbWVudHMsIHRvIGhhbmRsZSBkaWZmZXJlbnQgaGFyZHdhcmUgcmV2aXNpb25zIG9yIGNvbmZpZ3VyYXRpb25zLiBUaGlzIGZpbGUgd2lsbCBiZSBhIHJvYWRtYXAgdG8gdW5kZXJzdGFuZGluZyBob3cgdGhlIGtlcm5lbCBidWlsZHMgYW5kIGluY29ycG9yYXRlcyBzdXBwb3J0IGZvciBGcmVlc2NhbGUncyBNdWx0aS1Db3JlIHRlY2hub2xvZ3kuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxNzksIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyMDoxNC42NDkxMjUzOTVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI3NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIERQQUEyIGZzbC1tYyBidXNcXG4gICA0OlxcdCNcXG4gICA1OlxcdCMgQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy5cXG4gICA2OlxcdCNcXG4gICA3OlxcdFxcbiAgIDg6XFx0Y29uZmlnIEZTTF9NQ19CVVNcXG4gICA5OlxcdFxcdGJvb2wgXFxcIlFvcklRIERQQUEyIGZzbC1tYyBidXMgZHJpdmVyXFxcIlxcbiAgMTA6XFx0XFx0ZGVwZW5kcyBvbiBPRiBcXHUwMDI2XFx1MDAyNiAoQVJDSF9MQVlFUlNDQVBFIHx8IChDT01QSUxFX1RFU1QgXFx1MDAyNlxcdTAwMjYgKEFSTSB8fCBBUk02NCB8fCBYODZfTE9DQUxfQVBJQyB8fCBQUEMpKSlcXG4gIDExOlxcdFxcdHNlbGVjdCBHRU5FUklDX01TSV9JUlFcXG4gIDEyOlxcdFxcdGhlbHBcXG4gIDEzOlxcdFxcdCAgRHJpdmVyIHRvIGVuYWJsZSB0aGUgYnVzIGluZnJhc3RydWN0dXJlIGZvciB0aGUgUW9ySVEgRFBBQTJcXG4gIDE0OlxcdFxcdCAgYXJjaGl0ZWN0dXJlLiAgVGhlIGZzbC1tYyBidXMgZHJpdmVyIGhhbmRsZXMgZGlzY292ZXJ5IG9mXFxuICAxNTpcXHRcXHQgIERQQUEyIG9iamVjdHMgKHdoaWNoIGFyZSByZXByZXNlbnRlZCBhcyBMaW51eCBkZXZpY2VzKSBhbmRcXG4gIDE2OlxcdFxcdCAgYmluZGluZyBvYmplY3RzIHRvIGRyaXZlcnMuXFxuICAxNzpcXHRcXG4gIDE4OlxcdGNvbmZpZyBGU0xfTUNfVUFQSV9TVVBQT1JUXFxuICAxOTpcXHRcXHRib29sIFxcXCJNYW5hZ2VtZW50IENvbXBsZXggKE1DKSB1c2Vyc3BhY2Ugc3VwcG9ydFxcXCJcXG4gIDIwOlxcdFxcdGRlcGVuZHMgb24gRlNMX01DX0JVU1xcbiAgMjE6XFx0XFx0aGVscFxcbiAgMjI6XFx0XFx0ICBQcm92aWRlcyB1c2Vyc3BhY2Ugc3VwcG9ydCBmb3IgaW50ZXJyb2dhdGluZywgY3JlYXRpbmcsIGRlc3Ryb3lpbmcgb3JcXG4gIDIzOlxcdFxcdCAgY29uZmlndXJpbmcgRFBBQTIgb2JqZWN0cyBleHBvcnRlZCBieSB0aGUgTWFuYWdlbWVudCBDb21wbGV4LlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyMDoxNC42NDkyMTI4MjVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjU3NDUyMjIzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEZTTCBNQyBCdXMgRGVwZW5kZW5jeSBhbmQgRGV2aWNlIERpc2NvdmVyeSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YgYEZTTF9NQ19CVVNgLiBJdCdzIGNsZWFybHkgdGllZCB0byB0aGUgYE9GYCAoZGV2aWNlIHRyZWUpIGNvbmZpZ3VyYXRpb24sIHdoaWNoIG1ha2VzIHNlbnNlLiBJIHNlZSBpdCBhbHNvIGhhcyBwbGF0Zm9ybS1zcGVjaWZpYyByZXF1aXJlbWVudHM6IGVpdGhlciBhIExheWVyc2NhcGUgYXJjaGl0ZWN0dXJlIChgQVJDSF9MQVlFUlNDQVBFYCksIG9yIGEgYENPTVBJTEVfVEVTVGAgYWxvbmcgd2l0aCBvbmUgb2Ygc2V2ZXJhbCBhcmNoaXRlY3R1cmVzIC0gYEFSTWAsIGBBUk02NGAsIGBYODZfTE9DQUxfQVBJQ2AsIG9yIGBQUENgLiBUaGlzIHRlbGxzIG1lIGltbWVkaWF0ZWx5IHdoZXJlIHRoaXMgYnVzIGlzIGxpa2VseSBiZWluZyB1c2VkLlxuXG5Ob3csIHdoYXQgKmlzKiBgZnNsLW1jYD8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGRldmljZXMgYXJlIG1hbmFnZWQgb24gdGhhdCBidXMuIE15IGFwcHJvYWNoIHdvdWxkIGJlIHRvIGxvb2sgYXQgdGhlIHJlbGV2YW50IGRyaXZlcnMuIEknbGwgbmVlZCB0byBleGFtaW5lIGBkcml2ZXJzL2J1cy9mc2wtbWMvYCBhbmQgYGRyaXZlcnMvdmZpby9mc2wtbWMvYC4gVGhlIFZGSU8gYXNwZWN0IGlzIGtleSwgc3VnZ2VzdGluZyBhIHZpcnR1YWxpemVkIGNvbXBvbmVudCB0byB0aGlzLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZ3JlcCB0aGUgY29kZS4gSSdsbCBzZWFyY2ggZm9yIHRoZSByZWdpc3RyYXRpb24gb2YgYHZmaW9fZnNsX21jX2RyaXZlcmAuIFRoYXQgc2hvdWxkIGxlYWQgbWUgdG8gaG93IGRldmljZXMgYXJlIGF0dGFjaGVkIG9yIHByb2JlZCBvbiB0aGF0IGJ1cywgYW5kIHRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MTAyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MjA6MTcuMjIzNzM3NTQ3WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzkxOTc3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2ZmlvX2ZzbF9tY19kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy92ZmlvL2ZzbC1tY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtMTktXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jOjIwOnN0YXRpYyBzdHJ1Y3QgZnNsX21jX2RyaXZlciB2ZmlvX2ZzbF9tY19kcml2ZXI7XFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTIxLVxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTQyMD1zdGF0aWMgaW50IHZmaW9fZnNsX21jX2J1c19ub3RpZmllcihzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLFxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ0MC1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmM6NDQxOlxcdFxcdGlmIChtY19kcnYgXFx1MDAyNlxcdTAwMjYgbWNfZHJ2ICE9IFxcdTAwMjZ2ZmlvX2ZzbF9tY19kcml2ZXIpXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jLTQ0Mi1cXHRcXHRcXHRkZXZfd2FybihkZXYsIFxcXCJWRklPX0ZTTF9NQzogT2JqZWN0ICVzIGJvdW5kIHRvIGRyaXZlciAlcyB3aGlsZSBEUFJDIGJvdW5kIHRvIHZmaW8tZnNsLW1jXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jPTU3OT1zdGF0aWMgY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyB2ZmlvX2ZzbF9tY19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNTk1LVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzo1OTY6c3RhdGljIHN0cnVjdCBmc2xfbWNfZHJpdmVyIHZmaW9fZnNsX21jX2RyaXZlciA9IHtcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNTk3LVxcdC5wcm9iZVxcdFxcdD0gdmZpb19mc2xfbWNfcHJvYmUsXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNjA0LVxcbmRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuYzo2MDU6bW9kdWxlX2ZzbF9tY19kcml2ZXIodmZpb19mc2xfbWNfZHJpdmVyKTtcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmMtNjA2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyMDoxNy4zMjE2NjQyNloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMDU5MzM4NjU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlbHZpbmcgaW50byB0aGUgRlNMIE1DIERyaXZlciBBcmNoaXRlY3R1cmUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBtb2R1bGVfZnNsX21jX2RyaXZlcih2ZmlvX2ZzbF9tY19kcml2ZXIpYCBjYWxsLCB3aGljaCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGludm9sdmVzIHRoZSBWRklPIGludGVyZmFjZSBhbmQgdGhlIEZyZWVzY2FsZSAobm93IE5YUCkgTXVsdGktQ29yZSBkcml2ZXIuIFJpZ2h0LCB0aW1lIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyB0aGUgYGZzbF9tY19idXNgIGlzIHNldCB1cC4gSSBrbm93IGl0J3MgYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZS4gTGV0J3MgaGVhZCBvdmVyIHRvIHRoZSBgZHJpdmVycy9idXMvZnNsLW1jL2AgZGlyZWN0b3J5IGluIHRoZSBrZXJuZWwgc291cmNlLiBUaGF0J3Mgd2hlcmUgSSdsbCBmaW5kIHRoZSBjb3JlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdGhhdCBidXMgZHJpdmVyLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgZGV2aWNlcyBhcmUgZW51bWVyYXRlZCBhbmQgaG93IHRoaXMgYWxsIGludGVncmF0ZXMgd2l0aCB0aGUgdmZpbyBmcmFtZXdvcmssIGFuZCB0aGF0IGRpcmVjdG9yeSB3aWxsIGJlIHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MDgyLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MjA6MjAuMzgxMDA2MDE2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU0OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL2J1cy9mc2wtbWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiZHBicC5jXCIsXG4gICAgXCJkcGNvbi5jXCIsXG4gICAgXCJkcG1jcC5jXCIsXG4gICAgXCJkcHJjLWRyaXZlci5jXCIsXG4gICAgXCJkcHJjLmNcIixcbiAgICBcImZzbC1tYy1hbGxvY2F0b3IuY1wiLFxuICAgIFwiZnNsLW1jLWJ1cy5jXCIsXG4gICAgXCJmc2wtbWMtbXNpLmNcIixcbiAgICBcImZzbC1tYy1wcml2YXRlLmhcIixcbiAgICBcImZzbC1tYy11YXBpLmNcIixcbiAgICBcIm1jLWlvLmNcIixcbiAgICBcIm1jLXN5cy5jXCIsXG4gICAgXCJvYmotYXBpLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MjA6MjAuMzgxMDcyOTc2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzODUwNjM1OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlOlxuXG4qKkludmVzdGlnYXRpbmcgRGV2aWNlIENyZWF0aW9uIGluIGBmc2wtbWMtYnVzLmNgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXZpY2UgY3JlYXRpb24gb3IgZGlzY292ZXJ5IHByb2Nlc3Mgd2l0aGluIHRoaXMgZnJhbWV3b3JrLiBTcGVjaWZpY2FsbHksIEknbSBnb2luZyB0byBmb2N1cyBvbiBgZnNsLW1jLWJ1cy5jYC4gSSBleHBlY3QgdG8gZmluZCB0aGUgY29yZSBtZWNoYW5pc21zIHRoZXJl4oCUdGhlIG5pdHR5LWdyaXR0eSBkZXRhaWxzIG9mIGhvdyBuZXcgZGV2aWNlcyBhcmUgYnJvdWdodCBpbnRvIHRoZSBzeXN0ZW0uIFRoaXMgZmlsZSBzaG91bGQgY29udGFpbiB0aGUga2V5IGZ1bmN0aW9ucyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgaGFuZGxlIHRoZSBlbnVtZXJhdGlvbiwgcHJvYmluZywgYW5kIGF0dGFjaG1lbnQgb2YgZGV2aWNlcyBvbiB0aGlzIHBhcnRpY3VsYXIgYnVzLiBJJ20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBhYnN0cmFjdGlvbiBhbmQgd2hhdCBkcml2ZXIgbW9kZWwgY29tcG9uZW50cyBpdCBsZXZlcmFnZXMuIEVzc2VudGlhbGx5LCBJJ20gbG9va2luZyBmb3IgdGhlIGZvdW5kYXRpb25hbCBjb2RlIHRoYXQgZ292ZXJucyBob3cgbmV3IGBmc2wtbWNgIGRldmljZXMgYmVjb21lIGtub3duIHRvIHRoZSBrZXJuZWwuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk0NzEsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MjA6MjIuNzY2MTM5MTAxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTMwNDkxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmc2xfbWNfYnVzX3R5cGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9idXMvZnNsLW1jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MzI0PUFUVFJJQlVURV9HUk9VUFMoZnNsX21jX2J1cyk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0zMjUtXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzozMjY6Y29uc3Qgc3RydWN0IGJ1c190eXBlIGZzbF9tY19idXNfdHlwZSA9IHtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTMyNy1cXHQubmFtZSA9IFxcXCJmc2wtbWNcXFwiLFxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0zMzgtfTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjMzOTpFWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfYnVzX3R5cGUpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzQwLVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz00NjE9aW50IF9fZnNsX21jX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgZnNsX21jX2RyaXZlciAqbWNfZHJpdmVyLFxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy00NjYtXFx0bWNfZHJpdmVyLVxcdTAwM2Vkcml2ZXIub3duZXIgPSBvd25lcjtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjQ2NzpcXHRtY19kcml2ZXItXFx1MDAzZWRyaXZlci5idXMgPSBcXHUwMDI2ZnNsX21jX2J1c190eXBlO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNDY4LVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz03NTI9aW50IGZzbF9tY19kZXZpY2VfYWRkKHN0cnVjdCBmc2xfbWNfb2JqX2Rlc2MgKm9ial9kZXNjLFxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03ODktXFx0bWNfZGV2LVxcdTAwM2VkZXYucGFyZW50ID0gcGFyZW50X2RldjtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjc5MDpcXHRtY19kZXYtXFx1MDAzZWRldi5idXMgPSBcXHUwMDI2ZnNsX21jX2J1c190eXBlO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzkxLVxcdG1jX2Rldi1cXHUwMDNlZGV2LnJlbGVhc2UgPSBmc2xfbWNfZGV2aWNlX3JlbGVhc2U7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTExNzU9c3RhdGljIHZvaWQgZnNsX21jX2J1c19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTE4My1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjExODQ6XFx0YnVzX3VucmVnaXN0ZXJfbm90aWZpZXIoXFx1MDAyNmZzbF9tY19idXNfdHlwZSwgXFx1MDAyNmZzbF9tY19uYik7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMTg1LVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xMjYwPXN0YXRpYyBpbnQgX19pbml0IGZzbF9tY19idXNfZHJpdmVyX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTI2My1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEyNjQ6XFx0ZXJyb3IgPSBidXNfcmVnaXN0ZXIoXFx1MDAyNmZzbF9tY19idXNfdHlwZSk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMjY1LVxcdGlmIChlcnJvciBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTI5Mi1lcnJvcl9jbGVhbnVwX2J1czpcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEyOTM6XFx0YnVzX3VucmVnaXN0ZXIoXFx1MDAyNmZzbF9tY19idXNfdHlwZSk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMjk0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyMDoyMi44MTc0NDgyODhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE0MjgzOTg3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gYSBmaXJzdC1wZXJzb24gZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEluaXRpYWxpemF0aW9uIG9mIHRoZSBGU0wgTUMgQnVzIERyaXZlcioqXG5cbkFscmlnaHQsIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBGcmVlc2NhbGUgTXVsdGljb3JlIEJ1cyAoTUMgQnVzKSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBvciBwcm9iZSBmdW5jdGlvbi4gTXkgbWVudGFsIHByb2Nlc3MgaXMsIFwiV2hlcmUgZG9lcyB0aGlzIHRoaW5nIGtpY2sgb2ZmP1wiIE9idmlvdXNseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGBmc2xfbWNfYnVzX2RyaXZlcl9pbml0YCBvciB0aGUgcHJvYmUgcm91dGluZSBnZXQgaW52b2tlZC4gTGV0J3MgZGlnIGludG8gdGhlIGNvcmUuIFRoYXQgbWVhbnMgbmF2aWdhdGluZyBvdmVyIHRvIHRoZSBgZnNsLW1jLWJ1cy5jYCBmaWxlLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBzaG91bGQgaGFwcGVuLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBkcml2ZXIgcmVnaXN0cmF0aW9uLCBwcm9iaW5nIGxvZ2ljLCBhbmQgYW55IGFzc29jaWF0ZWQgc2V0dXAgd2l0aGluIHRoYXQgZmlsZS4gSSdtIGdvaW5nIHRvIHRyYWNrIGRvd24gdGhlIGZ1bmN0aW9uIGNhbGxzIGFuZCB0aGUgZW50cnkgcG9pbnQgdGhhdCBpbml0aWFsaXplcyB0aGF0IGRyaXZlci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA2MzYsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyMDoyNC45NjAyOTEwOTFaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNTMyNDg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBsYXRmb3JtX2RyaXZlci4qZnNsX21jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYnVzL2ZzbC1tY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTEyMDg9TU9EVUxFX0RFVklDRV9UQUJMRShhY3BpLCBmc2xfbWNfYnVzX2FjcGlfbWF0Y2hfdGFibGUpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTIwOS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEyMTA6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZnNsX21jX2J1c19kcml2ZXIgPSB7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMjExLVxcdC5kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTEyNjA9c3RhdGljIGludCBfX2luaXQgZnNsX21jX2J1c19kcml2ZXJfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMjY5LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTI3MDpcXHRlcnJvciA9IHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2ZnNsX21jX2J1c19kcml2ZXIpO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTI3MS1cXHRpZiAoZXJyb3IgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEyODktZXJyb3JfY2xlYW51cF9kcml2ZXI6XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoxMjkwOlxcdHBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZmc2xfbWNfYnVzX2RyaXZlcik7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMjkxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyMDoyNS4wMTE4MzAzODhaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE4MjA5NDcwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBQbGF0Zm9ybSBEcml2ZXIgYW5kIE1hdGNoIFRhYmxlKipcblxuT2theSwgc28gYGZzbF9tY19idXNfZHJpdmVyYC4uLiByaWdodCwgdGhhdCdzIGEgcGxhdGZvcm0gZHJpdmVyLiBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIHNlZSBob3cgdGhpcyBkcml2ZXIgaXMgcmVjb2duaXplZCBhbmQgYXR0YWNoZWQgdG8gZGV2aWNlcy4gVGhhdCBtZWFucyBkaXZpbmcgaW50byB0aGUgbWF0Y2ggdGFibGUuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIGBmc2wtbWMtYnVzLmNgIGFuZCBodW50IGRvd24gdGhhdCBjcml0aWNhbCBwaWVjZSBvZiBpbmZvcm1hdGlvbi4gVGhlIG1hdGNoIHRhYmxlIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCB0ZWxsaW5nIHRoZSBzeXN0ZW0gd2hpY2ggZGV2aWNlcyB0aGlzIGRyaXZlciBpcyBkZXNpZ25lZCB0byBoYW5kbGUuIFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoZSBkZXZpY2UgYmluZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyNzQsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyMDoyNy4xOTM5Mjg1OThaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI0NzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTE5NSxcbiAgXCJMaW5lQ291bnRcIjogMzVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTE5NTpcXHR9XFxuMTE5NjpcXHRcXG4xMTk3OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGZzbF9tY19idXNfbWF0Y2hfdGFibGVbXSA9IHtcXG4xMTk4OlxcdFxcdHsuY29tcGF0aWJsZSA9IFxcXCJmc2wscW9yaXEtbWNcXFwiLH0sXFxuMTE5OTpcXHRcXHR7fSxcXG4xMjAwOlxcdH07XFxuMTIwMTpcXHRcXG4xMjAyOlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGZzbF9tY19idXNfbWF0Y2hfdGFibGUpO1xcbjEyMDM6XFx0XFxuMTIwNDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGFjcGlfZGV2aWNlX2lkIGZzbF9tY19idXNfYWNwaV9tYXRjaF90YWJsZVtdID0ge1xcbjEyMDU6XFx0XFx0e1xcXCJOWFAwMDA4XFxcIiwgMCB9LFxcbjEyMDY6XFx0XFx0eyB9XFxuMTIwNzpcXHR9O1xcbjEyMDg6XFx0TU9EVUxFX0RFVklDRV9UQUJMRShhY3BpLCBmc2xfbWNfYnVzX2FjcGlfbWF0Y2hfdGFibGUpO1xcbjEyMDk6XFx0XFxuMTIxMDpcXHRzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBmc2xfbWNfYnVzX2RyaXZlciA9IHtcXG4xMjExOlxcdFxcdC5kcml2ZXIgPSB7XFxuMTIxMjpcXHRcXHRcXHQgICAubmFtZSA9IFxcXCJmc2xfbWNfYnVzXFxcIixcXG4xMjEzOlxcdFxcdFxcdCAgIC5wbSA9IE5VTEwsXFxuMTIxNDpcXHRcXHRcXHQgICAub2ZfbWF0Y2hfdGFibGUgPSBmc2xfbWNfYnVzX21hdGNoX3RhYmxlLFxcbjEyMTU6XFx0XFx0XFx0ICAgLmFjcGlfbWF0Y2hfdGFibGUgPSBmc2xfbWNfYnVzX2FjcGlfbWF0Y2hfdGFibGUsXFxuMTIxNjpcXHRcXHRcXHQgICB9LFxcbjEyMTc6XFx0XFx0LnByb2JlID0gZnNsX21jX2J1c19wcm9iZSxcXG4xMjE4OlxcdFxcdC5yZW1vdmUgPSBmc2xfbWNfYnVzX3JlbW92ZSxcXG4xMjE5OlxcdFxcdC5zaHV0ZG93biA9IGZzbF9tY19idXNfcmVtb3ZlLFxcbjEyMjA6XFx0fTtcXG4xMjIxOlxcdFxcbjEyMjI6XFx0c3RhdGljIGludCBmc2xfbWNfYnVzX25vdGlmaWVyKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsXFxuMTIyMzpcXHRcXHRcXHRcXHQgICAgICAgdW5zaWduZWQgbG9uZyBhY3Rpb24sIHZvaWQgKmRhdGEpXFxuMTIyNDpcXHR7XFxuMTIyNTpcXHRcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBkYXRhO1xcbjEyMjY6XFx0XFx0c3RydWN0IHJlc291cmNlICpyZXM7XFxuMTIyNzpcXHRcXHR2b2lkIF9faW9tZW0gKmZzbF9tY19yZWdzO1xcbjEyMjg6XFx0XFxuMTIyOTpcXHRcXHRpZiAoYWN0aW9uICE9IEJVU19OT1RJRllfQUREX0RFVklDRSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MjA6MjcuMTk0MDU1MTI4WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM1OTY3NzAzNzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgSW5pdGlhbCBBc3Nlc3NtZW50IG9mIGB2ZmlvX2ZzbF9tY2AqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24gd2l0aCBgdmZpb19mc2xfbWNgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBkZXRlcm1pbmUgaXRzIGRlcGVuZGVuY2llcy4gRG9lcyBpdCAqcmVxdWlyZSogc3BlY2lmaWMsIHBoeXNpY2FsIGhhcmR3YXJlIGxpa2UgdGhlIFFvcklRIG9yIExheWVyc2NhcGUgU29DIE1hbmFnZW1lbnQgQ29tcGxleCwgb3IgaXMgaXQgc29tZXRoaW5nIHRoYXQncyBlbXVsYXRlZCB3aXRoaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LCBtYWtpbmcgaXQgYWNjZXNzaWJsZT8gTGV0J3MgY29uc3VsdCB0aGUgaW5zdHJ1Y3Rpb25zLlxuXG5BbHJpZ2h0LCBTZWN0aW9uIDIgaXMgd2hhdCBJIG5lZWQuIEl0J3MgcmVtaW5kaW5nIG1lIGFib3V0IHRoZSBcInN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIGNhdmVhdC4gVGhpbmdzIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgYXJlIG9mZi1saW1pdHMgZm9yIGZ1enppbmcgaWYgdGhleSBuZWVkIHJlYWwgQVNJQ3Mgb3IgUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gdGhlIHN0YW5kYXJkIHNldHVwLiBSZWFjaGFiaWxpdHkgaXMgdGhlIGNvcmUgaXNzdWUgaGVyZS4gRnV6emluZyBjYW4gb25seSByZXZlYWwgaXNzdWVzIGluIGNvZGUgcGF0aHMgdGhhdCBhcmUgYWN0dWFsbHkgKmV4ZWN1dGFibGUqIHdpdGhpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgbGV2ZXJhZ2luZyB0aGluZ3MgbGlrZSBlbXVsYXRlZCBVU0IgZGV2aWNlcywgbmV0d29yayBkZXZpY2VzLCBhbmQgdHVuL3RhcCBpbnRlcmZhY2VzLiBJZiB0aGUgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUsIGV2ZW4gd2l0aCBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMsIGl0J3MgYSBub24tc3RhcnRlciBmb3IgZnV6emluZy5cblxuTm93LCBjaXJjbGluZyBiYWNrIHRvIGB2ZmlvX2ZzbF9tY2AsIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZSBGcmVlc2NhbGUgTWFuYWdlbWVudCBDb21wbGV4IChGU0wtTUMpLCBvciBRb3JJUSBEUEFBMiwgY2FuIHJ1biBvbiBhbWQ2NCBvciBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0J3MgdGhlIHJlYWwgcXVlc3Rpb24uIElzIHRoZXJlIGEgdmlydHVhbCBGU0wtTUMgZGV2aWNlIGltcGxlbWVudGF0aW9uIG9yIGEgbW9jayBkcml2ZXIgYXZhaWxhYmxlPyBJIG5lZWQgdG8gc2VhcmNoIHRoZSBRRU1VIHNvdXJjZSBhbmQgdGhlIGtlcm5lbCBzb3VyY2UgZm9yIGFueSBjbHVlcyByZWxhdGVkIHRvIFwiZnNsLW1jXCIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMDQ2LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjg4LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MjA6MzAuNzkwODI4Mzc2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODU2NDg0MjQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZzbC1tY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDU0NSBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWJ1cy1mc2wtbWM6MTpXaGF0OlxcdFxcdC9zeXMvYnVzL2ZzbC1tYy9yZXNjYW5cXG5Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tYy0yLURhdGU6XFx0XFx0SmFudWFyeSAyMDIxXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tYz01PURlc2NyaXB0aW9uOlxcdFdyaXRpbmcgYSBub24temVybyB2YWx1ZSB0byB0aGlzIGF0dHJpYnV0ZSB3aWxsXFxuRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWJ1cy1mc2wtbWM6NjpcXHRcXHRmb3JjZSBhIHJlc2NhbiBvZiBmc2wtbWMgYnVzIGluIHRoZSBzeXN0ZW0gYW5kXFxuRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWJ1cy1mc2wtbWM6NzpcXHRcXHRzeW5jaHJvbml6ZSB0aGUgb2JqZWN0cyB1bmRlciBmc2wtbWMgYnVzIGFuZCB0aGVcXG5Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tYy04LVxcdFxcdE1hbmFnZW1lbnQgQ29tcGxleCBmaXJtd2FyZS5cXG5Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tYz05PVVzZXJzOlxcdFxcdFVzZXJzcGFjZSBkcml2ZXJzIGFuZCBtYW5hZ2VtZW50IHRvb2xzXFxuRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWJ1cy1mc2wtbWMtMTAtXFxuRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWJ1cy1mc2wtbWM6MTE6V2hhdDpcXHRcXHQvc3lzL2J1cy9mc2wtbWMvYXV0b3Jlc2NhblxcbkRvY3VtZW50YXRpb24vQUJJL3N0YWJsZS9zeXNmcy1idXMtZnNsLW1jLTEyLURhdGU6XFx0XFx0SmFudWFyeSAyMDIxXFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tYz0xNT1EZXNjcmlwdGlvbjpcXHRXcml0aW5nIGEgemVybyB2YWx1ZSB0byB0aGlzIGF0dHJpYnV0ZSB3aWxsXFxuRG9jdW1lbnRhdGlvbi9BQkkvc3RhYmxlL3N5c2ZzLWJ1cy1mc2wtbWMtMTYtXFx0XFx0ZGlzYWJsZSB0aGUgRFBSQyBJUlFzIG9uIHdoaWNoIGF1dG9tYXRpYyByZXNjYW5cXG5Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tYzoxNzpcXHRcXHRvZiB0aGUgZnNsLW1jIGJ1cyBpcyBwZXJmb3JtZWQuIEEgbm9uLXplcm8gdmFsdWVcXG5Eb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tYy0xOC1cXHRcXHR3aWxsIGVuYWJsZSB0aGUgRFBSQyBJUlFzLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtZnNsLW1jOjE6V2hhdDpcXHRcXHQvc3lzL2J1cy9mc2wtbWMvZHJpdmVycy8uLi4vYmluZFxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWZzbC1tYy0yLURhdGU6XFx0XFx0RGVjZW1iZXIgMjAxNlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtZnNsLW1jPTQ9RGVzY3JpcHRpb246XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWMtNy1cXHRcXHR0aGlzIGxvY2F0aW9uLiBUaGUgZm9ybWF0IGZvciB0aGUgbG9jYXRpb24gaXMgT2JqZWN0LklkXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtZnNsLW1jOjg6XFx0XFx0YW5kIGlzIHRoZSBzYW1lIGFzIGZvdW5kIGluIC9zeXMvYnVzL2ZzbC1tYy9kZXZpY2VzLy5cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWMtOS1cXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWZzbC1tYy0xMS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWM6MTI6XFx0XFx0ICAjIGVjaG8gZHBuaS4yIFxcdTAwM2UgL3N5cy9idXMvZnNsLW1jL2RyaXZlcnMvZnNsX2RwYWEyX2V0aC9iaW5kXFxuRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtZnNsLW1jLTEzLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWZzbC1tYzoxNDpXaGF0OlxcdFxcdC9zeXMvYnVzL2ZzbC1tYy9kcml2ZXJzLy4uLi91bmJpbmRcXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWMtMTUtRGF0ZTpcXHRcXHREZWNlbWJlciAyMDE2XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWM9MTc9RGVzY3JpcHRpb246XFxuLS1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWMtMjAtXFx0XFx0dGhpcyBsb2NhdGlvbi4gVGhlIGZvcm1hdCBmb3IgdGhlIGxvY2F0aW9uIGlzIE9iamVjdC5JZFxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWZzbC1tYzoyMTpcXHRcXHRhbmQgaXMgdGhlIHNhbWUgYXMgZm91bmQgaW4gL3N5cy9idXMvZnNsLW1jL2RldmljZXMvLlxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWZzbC1tYy0yMi1cXG4tLVxcbkRvY3VtZW50YXRpb24vQUJJL3Rlc3Rpbmcvc3lzZnMtYnVzLWZzbC1tYy0yNC1cXG5Eb2N1bWVudGF0aW9uL0FCSS90ZXN0aW5nL3N5c2ZzLWJ1cy1mc2wtbWM6MjU6XFx0XFx0ICAjIGVjaG8gZHBuaS4yIFxcdTAwM2UgL3N5cy9idXMvZnNsLW1jL2RyaXZlcnMvZnNsX2RwYWEyX2V0aC91bmJpbmRcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXNjL2ZzbCxxb3JpcS1tYy55YW1sPTEyPWRlc2NyaXB0aW9uOiB8XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWw6MTM6ICBUaGUgRnJlZXNjYWxlIE1hbmFnZW1lbnQgQ29tcGxleCAoZnNsLW1jKSBpcyBhIGhhcmR3YXJlIHJlc291cmNlXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWwtMTQtICBtYW5hZ2VyIHRoYXQgbWFuYWdlcyBzcGVjaWFsaXplZCBoYXJkd2FyZSBvYmplY3RzIHVzZWQgaW5cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlzYy9mc2wscW9yaXEtbWMueWFtbDoxNTogIG5ldHdvcmstb3JpZW50ZWQgcGFja2V0IHByb2Nlc3NpbmcgYXBwbGljYXRpb25zLiBBZnRlciB0aGUgZnNsLW1jXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWwtMTYtICBibG9jayBpcyBlbmFibGVkLCBwb29scyBvZiBoYXJkd2FyZSByZXNvdXJjZXMgYXJlIGF2YWlsYWJsZSwgc3VjaCBhc1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWwtMjEtXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWw6MjI6ICBGb3IgYW4gb3ZlcnZpZXcgb2YgdGhlIERQQUEyIGFyY2hpdGVjdHVyZSBhbmQgZnNsLW1jIGJ1cyBzZWU6XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWwtMjMtICBEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL292ZXJ2aWV3LnJzdFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWw9NTE9cHJvcGVydGllczpcXG4tLVxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9taXNjL2ZzbCxxb3JpcS1tYy55YW1sLTEzMC0gICAgZGVzY3JpcHRpb246XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWw6MTMxOiAgICAgIFRoZSBmc2wtbWMgbm9kZSBtYXkgb3B0aW9uYWxseSBoYXZlIGRwbWFjIHN1Yi1ub2RlcyB0aGF0IGRlc2NyaWJlXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWwtMTMyLSAgICAgIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgRXRoZXJuZXQgTUFDcyB3aGljaCBiZWxvbmcgdG8gdGhlIE1DXFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlzYy9mc2wscW9yaXEtbWMueWFtbD0xNTc9ZXhhbXBsZXM6XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWwtMTU4LSAgLSB8XFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWw6MTU5OiAgICBmc2wtbWNAODBjMDAwMDAwIHtcXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbWlzYy9mc2wscW9yaXEtbWMueWFtbC0xNjAtICAgICAgICBjb21wYXRpYmxlID0gXFxcImZzbCxxb3JpcS1tY1xcXCI7XFxuLS1cXG5Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2ZzbCxxb3JpcS1tYy1kcG1hYy55YW1sPTEyPWRlc2NyaXB0aW9uOlxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLHFvcmlxLW1jLWRwbWFjLnlhbWw6MTM6ICBUaGlzIGJpbmRpbmcgcmVwcmVzZW50cyB0aGUgRFBBQTIgTUFDIG9iamVjdHMgZm91bmQgb24gdGhlIGZzbC1tYyBidXMgYW5kXFxuRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9mc2wscW9yaXEtbWMtZHBtYWMueWFtbDoxNDogIGxvY2F0ZWQgdW5kZXIgdGhlICdkcG1hY3MnIG5vZGUgZm9yIHRoZSBmc2wtbWMgYnVzIERUUyBub2RlLlxcbkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9uZXQvZnNsLHFvcmlxLW1jLWRwbWFjLnlhbWwtMTUtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdD0yOD1Ecml2ZXIgT3ZlcnZpZXdcXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBpby1kcml2ZXIucnN0LTMwLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBpby1kcml2ZXIucnN0OjMxOlRoZSBEUElPIGRyaXZlciBpcyBib3VuZCB0byBEUElPIG9iamVjdHMgZGlzY292ZXJlZCBvbiB0aGUgZnNsLW1jIGJ1cyBhbmRcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdC0zMi1wcm92aWRlcyBzZXJ2aWNlcyB0aGF0Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGlvLWRyaXZlci5yc3Q9NDA9VGhlIExpbnV4IERQSU8gZHJpdmVyIGNvbnNpc3RzIG9mIDMgcHJpbWFyeSBjb21wb25lbnRzLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdDo0MTogICBEUElPIG9iamVjdCBkcml2ZXItLSBmc2wtbWMgZHJpdmVyIHRoYXQgbWFuYWdlcyB0aGUgRFBJTyBvYmplY3RcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdC00Mi1cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBpby1kcml2ZXIucnN0LTQ2LVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBpby1kcml2ZXIucnN0OjQ3OiAgICAgICAgICBmc2wtbWMgICAgICAgICAgb3RoZXJcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdC00OC0gICAgICAgICAgIGJ1cyAgICAgICAgICAgZHJpdmVyc1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGlvLWRyaXZlci5yc3Q9NjQ9RFBBQTIgTGludXggZHJpdmVyIGNvbXBvbmVudHM6Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGlvLWRyaXZlci5yc3QtODUtICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgIHxcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdDo4NjogICAgICAgICAgfCAvc29jL2ZzbC1tYyAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgfFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBpby1kcml2ZXIucnN0LTg3LSAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICB8XFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdD05OD1EUElPIE9iamVjdCBEcml2ZXIgKGRwaW8tZHJpdmVyLmMpXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdC0xMDAtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGlvLWRyaXZlci5yc3Q6MTAxOiAgIFRoZSBkcGlvLWRyaXZlciBjb21wb25lbnQgcmVnaXN0ZXJzIHdpdGggdGhlIGZzbC1tYyBidXMgdG8gaGFuZGxlIG9iamVjdHMgb2ZcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwaW8tZHJpdmVyLnJzdC0xMDItICAgdHlwZSBcXFwiZHBpb1xcXCIuICBUaGUgaW1wbGVtZW50YXRpb24gb2YgcHJvYmUoKSBoYW5kbGVzIGJhc2ljIGluaXRpYWxpemF0aW9uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL21hYy1waHktc3VwcG9ydC5yc3Q9MTY9RFBBQTIgU29mdHdhcmUgQXJjaGl0ZWN0dXJlXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL21hYy1waHktc3VwcG9ydC5yc3QtMTgtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9tYWMtcGh5LXN1cHBvcnQucnN0OjE5OkFtb25nIG90aGVyIERQQUEyIG9iamVjdHMsIHRoZSBmc2wtbWMgYnVzIGV4cG9ydHMgRFBOSSBvYmplY3RzIChhYnN0cmFjdGluZyBhXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9tYWMtcGh5LXN1cHBvcnQucnN0LTIwLW5ldHdvcmsgaW50ZXJmYWNlKSBhbmQgRFBNQUMgb2JqZWN0cyAoYWJzdHJhY3RpbmcgYSBNQUMpLiBUaGUgZHBhYTItZXRoIGRyaXZlclxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9vdmVydmlldy5yc3Q9Mjg2PW9mIGVhY2ggZHJpdmVyIGZvbGxvd3MuXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL292ZXJ2aWV3LnJzdC0zMDktXFx0ICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8ZHJpdmVyfFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvb3ZlcnZpZXcucnN0OjMxMDpcXHQgIHwgICAvYnVzL2ZzbC1tYyAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICstLSstLS0rXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9vdmVydmlldy5yc3QtMzExLVxcdCAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgfFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9vdmVydmlldy5yc3Q9MzMxPUtleSBmdW5jdGlvbnMgaW5jbHVkZTpcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL292ZXJ2aWV3LnJzdC0zMzItXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9vdmVydmlldy5yc3Q6MzMzOi0gcmVnaXN0ZXJpbmcgYSBuZXcgYnVzIHR5cGUgbmFtZWQgXFxcImZzbC1tY1xcXCIgd2l0aCB0aGUga2VybmVsLFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvb3ZlcnZpZXcucnN0LTMzNC0gIGFuZCBpbXBsZW1lbnRpbmcgYnVzIGNhbGwtYmFja3MgKGUuZy4gbWF0Y2gvdWV2ZW50L2Rldl9ncm91cHMpXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL292ZXJ2aWV3LnJzdD0zNDM9VGhlIHN5c2ZzIGJpbmQvdW5iaW5kIGludGVyZmFjZXMgZm9yIHRoZSBNQy1idXMgY2FuIGJlIGNvbnN1bHRlZCBhdFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvb3ZlcnZpZXcucnN0OjM0NDoqRG9jdW1lbnRhdGlvbi9BQkkvdGVzdGluZy9zeXNmcy1idXMtZnNsLW1jKi5cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL292ZXJ2aWV3LnJzdC0zNDUtXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL3N3aXRjaC1kcml2ZXIucnN0PTM1PUNyZWF0aW5nIGFuIEV0aGVybmV0IFN3aXRjaFxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9zd2l0Y2gtZHJpdmVyLnJzdC0zNy1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL3N3aXRjaC1kcml2ZXIucnN0OjM4OlRoZSBkcGFhMi1zd2l0Y2ggZHJpdmVyIHByb2JlcyBvbiBEUFNXIGRldmljZXMgZm91bmQgb24gdGhlIGZzbC1tYyBidXMuIFRoZXNlXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2RldmljZV9kcml2ZXJzL2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9zd2l0Y2gtZHJpdmVyLnJzdC0zOS1kZXZpY2VzIGNhbiBiZSBlaXRoZXIgY3JlYXRlZCBzdGF0aWNhbGx5IHRocm91Z2ggdGhlIGJvb3QgdGltZSBjb25maWd1cmF0aW9uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvZGV2aWNlX2RyaXZlcnMvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL3N3aXRjaC1kcml2ZXIucnN0PTEyMD1Ccm9hZGNhc3QgZmxvb2Rpbmcgb24gYSBzd2l0Y2ggcG9ydCBjYW4gYmUgZGlzYWJsZWQvZW5hYmxlZCB0aHJvdWdoIHRoZSBicnBvcnQgc3lzZnM6OlxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvc3dpdGNoLWRyaXZlci5yc3QtMTIxLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvc3dpdGNoLWRyaXZlci5yc3Q6MTIyOiAgICAgICAgJCBlY2hvIDAgXFx1MDAzZSAvc3lzL2J1cy9mc2wtbWMvZGV2aWNlcy9kcHN3LlkvbmV0L2V0aFgvYnJwb3J0L2Jyb2FkY2FzdF9mbG9vZFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvc3dpdGNoLWRyaXZlci5yc3QtMTIzLVxcbi0tXFxuTUFJTlRBSU5FUlM9MjIwNTA9UzpcXHRNYWludGFpbmVkXFxuTUFJTlRBSU5FUlM6MjIwNTE6RjpcXHREb2N1bWVudGF0aW9uL0FCSS9zdGFibGUvc3lzZnMtYnVzLWZzbC1tY1xcbk1BSU5UQUlORVJTLTIyMDUyLUY6XFx0RG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pc2MvZnNsLHFvcmlxLW1jLnlhbWxcXG5NQUlOVEFJTkVSUz0yMjA1Mz1GOlxcdERvY3VtZW50YXRpb24vbmV0d29ya2luZy9kZXZpY2VfZHJpdmVycy9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvb3ZlcnZpZXcucnN0XFxuTUFJTlRBSU5FUlM6MjIwNTQ6RjpcXHRkcml2ZXJzL2J1cy9mc2wtbWMvXFxuTUFJTlRBSU5FUlMtMjIwNTUtRjpcXHRpbmNsdWRlL3VhcGkvbGludXgvZnNsX21jLmhcXG4tLVxcbk1BSU5UQUlORVJTPTI4MzUyPVM6XFx0TWFpbnRhaW5lZFxcbk1BSU5UQUlORVJTOjI4MzUzOkY6XFx0ZHJpdmVycy92ZmlvL2ZzbC1tYy9cXG5NQUlOVEFJTkVSUy0yODM1NC1cXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1sczEwODhhLmR0c2k9OTYyPVxcdFxcdFxcdFxcdFxcdCAgICBRT1JJUV9DTEtfUExMX0RJVigxNilcXHUwMDNlLFxcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTA4OGEuZHRzaS05NjctXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMTA4OGEuZHRzaTo5Njg6XFx0XFx0ZnNsX21jOiBmc2wtbWNAODBjMDAwMDAwIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMxMDg4YS5kdHNpLTk2OS1cXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcImZzbCxxb3JpcS1tY1xcXCI7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMyMDh4YS5kdHNpPTc1Mj1cXHRcXHRcXHRwY3MxNjogZXRoZXJuZXQtcGh5QDAge1xcbi0tXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMjA4eGEuZHRzaS03NTYtXFxuYXJjaC9hcm02NC9ib290L2R0cy9mcmVlc2NhbGUvZnNsLWxzMjA4eGEuZHRzaTo3NTc6XFx0XFx0ZnNsX21jOiBmc2wtbWNAODBjMDAwMDAwIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHMyMDh4YS5kdHNpLTc1OC1cXHRcXHRcXHRjb21wYXRpYmxlID0gXFxcImZzbCxxb3JpcS1tY1xcXCI7XFxuLS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHgyMTYwYS5kdHNpPTE4NzU9XFx0XFx0XFx0Z3BpbzBfM18yX3BpbnM6IGlpYzEtZ3Bpby1waW5zIHtcXG4tLVxcbmFyY2gvYXJtNjQvYm9vdC9kdHMvZnJlZXNjYWxlL2ZzbC1seDIxNjBhLmR0c2ktMTg3OS1cXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHgyMTYwYS5kdHNpOjE4ODA6XFx0XFx0ZnNsX21jOiBmc2wtbWNAODBjMDAwMDAwIHtcXG5hcmNoL2FybTY0L2Jvb3QvZHRzL2ZyZWVzY2FsZS9mc2wtbHgyMTYwYS5kdHNpLTE4ODEtXFx0XFx0XFx0Y29tcGF0aWJsZSA9IFxcXCJmc2wscW9yaXEtbWNcXFwiO1xcbi0tXFxuZHJpdmVycy9idXMvS2NvbmZpZz0yNDI9Y29uZmlnIERBOFhYX01TVFBSSVxcbi0tXFxuZHJpdmVycy9idXMvS2NvbmZpZy0yNDktXFxuZHJpdmVycy9idXMvS2NvbmZpZzoyNTA6c291cmNlIFxcXCJkcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL2J1cy9LY29uZmlnLTI1MS1zb3VyY2UgXFxcImRyaXZlcnMvYnVzL21oaS9LY29uZmlnXFxcIlxcbi0tXFxuZHJpdmVycy9idXMvTWFrZWZpbGU9MTE9b2JqLSQoQ09ORklHX01PWFRFVClcXHRcXHQrPSBtb3h0ZXQub1xcbmRyaXZlcnMvYnVzL01ha2VmaWxlLTEyLVxcbmRyaXZlcnMvYnVzL01ha2VmaWxlOjEzOiMgRFBBQTIgZnNsLW1jIGJ1c1xcbmRyaXZlcnMvYnVzL01ha2VmaWxlOjE0Om9iai0kKENPTkZJR19GU0xfTUNfQlVTKVxcdCs9IGZzbC1tYy9cXG5kcml2ZXJzL2J1cy9NYWtlZmlsZS0xNS1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnLTItI1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnOjM6IyBEUEFBMiBmc2wtbWMgYnVzXFxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctNC0jXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZz04PWNvbmZpZyBGU0xfTUNfQlVTXFxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWc6OTpcXHRib29sIFxcXCJRb3JJUSBEUEFBMiBmc2wtbWMgYnVzIGRyaXZlclxcXCJcXG5kcml2ZXJzL2J1cy9mc2wtbWMvS2NvbmZpZy0xMC1cXHRkZXBlbmRzIG9uIE9GIFxcdTAwMjZcXHUwMDI2IChBUkNIX0xBWUVSU0NBUEUgfHwgKENPTVBJTEVfVEVTVCBcXHUwMDI2XFx1MDAyNiAoQVJNIHx8IEFSTTY0IHx8IFg4Nl9MT0NBTF9BUElDIHx8IFBQQykpKVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctMTMtXFx0ICBEcml2ZXIgdG8gZW5hYmxlIHRoZSBidXMgaW5mcmFzdHJ1Y3R1cmUgZm9yIHRoZSBRb3JJUSBEUEFBMlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9LY29uZmlnOjE0OlxcdCAgYXJjaGl0ZWN0dXJlLiAgVGhlIGZzbC1tYyBidXMgZHJpdmVyIGhhbmRsZXMgZGlzY292ZXJ5IG9mXFxuZHJpdmVycy9idXMvZnNsLW1jL0tjb25maWctMTUtXFx0ICBEUEFBMiBvYmplY3RzICh3aGljaCBhcmUgcmVwcmVzZW50ZWQgYXMgTGludXggZGV2aWNlcykgYW5kXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGU9Nz1vYmotJChDT05GSUdfRlNMX01DX0JVUykgKz0gbWMtYnVzLWRyaXZlci5vXFxuZHJpdmVycy9idXMvZnNsLW1jL01ha2VmaWxlLTgtXFxuZHJpdmVycy9idXMvZnNsLW1jL01ha2VmaWxlOjk6bWMtYnVzLWRyaXZlci1vYmpzIDo9IGZzbC1tYy1idXMubyBcXFxcXFxuZHJpdmVycy9idXMvZnNsLW1jL01ha2VmaWxlLTEwLVxcdFxcdCAgICAgIG1jLXN5cy5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZS0xNS1cXHRcXHQgICAgICBkcHJjLWRyaXZlci5vIFxcXFxcXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGU6MTY6XFx0XFx0ICAgICAgZnNsLW1jLWFsbG9jYXRvci5vIFxcXFxcXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGU6MTc6XFx0XFx0ICAgICAgZnNsLW1jLW1zaS5vIFxcXFxcXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGUtMTgtXFx0XFx0ICAgICAgZHBtY3AubyBcXFxcXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvTWFrZWZpbGUtMjEtIyBNQyB1c2Vyc3BhY2Ugc3VwcG9ydFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9NYWtlZmlsZToyMjpvYmotJChDT05GSUdfRlNMX01DX1VBUElfU1VQUE9SVCkgKz0gZnNsLW1jLXVhcGkub1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwYnAuYy04LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcGJwLmM6OTojaW5jbHVkZSBcXFwiZnNsLW1jLXByaXZhdGUuaFxcXCJcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBicC5jLTEwLVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwY29uLmMtOC1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBjb24uYzo5OiNpbmNsdWRlIFxcXCJmc2wtbWMtcHJpdmF0ZS5oXFxcIlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcGNvbi5jLTEwLVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwbWNwLmMtOC1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHBtY3AuYzo5OiNpbmNsdWRlIFxcXCJmc2wtbWMtcHJpdmF0ZS5oXFxcIlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcG1jcC5jLTEwLVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTUtXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTY6I2luY2x1ZGUgXFxcImZzbC1tYy1wcml2YXRlLmhcXFwiXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTctXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz02OD1zdGF0aWMgaW50IF9fZnNsX21jX2RldmljZV9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2LCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzktICpcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo4MDogKiBAbWNfYnVzX2RldjogcG9pbnRlciB0byB0aGUgZnNsLW1jIGRldmljZSB0aGF0IHJlcHJlc2VudHMgYSBEUFJDIG9iamVjdFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTgxLSAqIEBvYmpfZGVzY19hcnJheTogYXJyYXkgb2Ygb2JqZWN0IGRlc2NyaXB0b3JzIGZvciBjaGlsZCBvYmplY3RzIGN1cnJlbnRseVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9MTIzPXN0cnVjdCBmc2xfbWNfZGV2aWNlICpmc2xfbWNfZGV2aWNlX2xvb2t1cChzdHJ1Y3QgZnNsX21jX29ial9kZXNjICpvYmpfZGVzYyxcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTEzNi0gKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjEzNzogKiBAbWNfZGV2OiBwb2ludGVyIHRvIHRoZSBmc2wtbWMgZGV2aWNlIGZvciBhIGdpdmVuIE1DIG9iamVjdFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTEzOC0gKiBAb2JqX2Rlc2M6IHBvaW50ZXIgdG8gdGhlIE1DIG9iamVjdCdzIGRlc2NyaXB0b3IgaW4gdGhlIE1DXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTM5LSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTQwOiAqIElmIHRoZSBwbHVnZ2VkIHN0YXRlIGhhcyBjaGFuZ2VkIGZyb20gdW5wbHVnZ2VkIHRvIHBsdWdnZWQsIHRoZSBmc2wtbWNcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNDEtICogZGV2aWNlIGlzIGJvdW5kIHRvIHRoZSBjb3JyZXNwb25kaW5nIGRldmljZSBkcml2ZXIuXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTQyOiAqIElmIHRoZSBwbHVnZ2VkIHN0YXRlIGhhcyBjaGFuZ2VkIGZyb20gcGx1Z2dlZCB0byB1bnBsdWdnZWQsIHRoZSBmc2wtbWNcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0xNDMtICogZGV2aWNlIGlzIHVuYm91bmQgZnJvbSB0aGUgY29ycmVzcG9uZGluZyBkZXZpY2UgZHJpdmVyLlxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM9MTY5PXN0YXRpYyB2b2lkIGZzbF9tY19vYmpfZGV2aWNlX2FkZChzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldixcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE5Mi0gKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjE5MzogKiBAbWNfYnVzX2RldjogcG9pbnRlciB0byB0aGUgZnNsLW1jIGRldmljZSB0aGF0IHJlcHJlc2VudHMgYSBEUFJDIG9iamVjdFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTE5NC0gKiBAb2JqX2Rlc2NfYXJyYXk6IGFycmF5IG9mIGRldmljZSBkZXNjcmlwdG9ycyBmb3IgY2hpbGQgZGV2aWNlcyBjdXJyZW50bHlcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTIwMj1zdGF0aWMgdm9pZCBkcHJjX2FkZF9uZXdfZGV2aWNlcyhzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfYnVzX2RldixcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTIyOC0gKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jOjIyOTogKiBAbWNfYnVzX2RldjogcG9pbnRlciB0byB0aGUgZnNsLW1jIGRldmljZSB0aGF0IHJlcHJlc2VudHMgYSBEUFJDIG9iamVjdFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jLTIzMC0gKiBAYWxsb2NfaW50ZXJydXB0czogaWYgdHJ1ZSB0aGUgZnVuY3Rpb24gYWxsb2NhdGVzIHRoZSBpbnRlcnJ1cHQgcG9vbCxcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTI0NT1pbnQgZHByY19zY2FuX29iamVjdHMoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2J1c19kZXYsXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0zNTYtICpcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzozNTc6ICogQG1jX2J1c19kZXY6IHBvaW50ZXIgdG8gdGhlIGZzbC1tYyBkZXZpY2UgdGhhdCByZXByZXNlbnRzIGEgRFBSQyBvYmplY3RcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy0zNTgtICogQGFsbG9jX2ludGVycnVwdHM6IGlmIHRydWUgdGhlIGZ1bmN0aW9uIGFsbG9jYXRlcyB0aGUgaW50ZXJydXB0IHBvb2wsXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz01NzI9c3RhdGljIGludCBkcHJjX3NldHVwX2lycShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNjAxLSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NjAyOiAqIEBtY19kZXY6IFBvaW50ZXIgdG8gZnNsLW1jIGRldmljZSByZXByZXNlbnRpbmcgYSBEUFJDXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNjAzLSAqXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz03MTE9RVhQT1JUX1NZTUJPTF9HUEwoZHByY19zZXR1cCk7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03MTUtICpcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYzo3MTY6ICogQG1jX2RldjogUG9pbnRlciB0byBmc2wtbWMgZGV2aWNlIHJlcHJlc2VudGluZyBhIERQUkNcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03MTctICpcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTc1OD1zdGF0aWMgdm9pZCBkcHJjX3RlYXJkb3duX2lycShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtNzcxLSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6NzcyOiAqIEBtY19kZXY6IFBvaW50ZXIgdG8gZnNsLW1jIGRldmljZSByZXByZXNlbnRpbmcgdGhlIERQUkNcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy03NzMtICpcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLWRyaXZlci5jPTgxNT1FWFBPUlRfU1lNQk9MX0dQTChkcHJjX2NsZWFudXApO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtODE5LSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6ODIwOiAqIEBtY19kZXY6IFBvaW50ZXIgdG8gZnNsLW1jIGRldmljZSByZXByZXNlbnRpbmcgdGhlIERQUkNcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYy04MjEtICpcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLmMtOS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZHByYy5jOjEwOiNpbmNsdWRlIFxcXCJmc2wtbWMtcHJpdmF0ZS5oXFxcIlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9kcHJjLmMtMTEtXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTItLypcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjM6ICogZnNsLW1jIG9iamVjdCBhbGxvY2F0b3IgZHJpdmVyXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy00LSAqXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTEyLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MTM6I2luY2x1ZGUgXFxcImZzbC1tYy1wcml2YXRlLmhcXFwiXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0xNC1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTE1PXN0YXRpYyBib29sIF9fbXVzdF9jaGVjayBmc2xfbWNfaXNfYWxsb2NhdGFibGUoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldilcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjMtICogZnNsX21jX3Jlc291cmNlX3Bvb2xfYWRkX2RldmljZSAtIGFkZCBhbGxvY2F0YWJsZSBvYmplY3QgdG8gYSByZXNvdXJjZVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MjQ6ICogcG9vbCBvZiBhIGdpdmVuIGZzbC1tYyBidXNcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTI1LSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzoyNjogKiBAbWNfYnVzOiBwb2ludGVyIHRvIHRoZSBmc2wtbWMgYnVzXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yNy0gKiBAcG9vbF90eXBlOiBwb29sIHR5cGVcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI4OiAqIEBtY19kZXY6IHBvaW50ZXIgdG8gYWxsb2NhdGFibGUgZnNsLW1jIGRldmljZVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMjktICovXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz0zMD1zdGF0aWMgaW50IF9fbXVzdF9jaGVjayBmc2xfbWNfcmVzb3VyY2VfcG9vbF9hZGRfZGV2aWNlKHN0cnVjdCBmc2xfbWNfYnVzXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTkxLSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo5MjogKiBAbWNfZGV2OiBwb2ludGVyIHRvIGFsbG9jYXRhYmxlIGZzbC1tYyBkZXZpY2VcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTkzLSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo5NDogKiBJdCBwZXJtYW5lbnRseSByZW1vdmVzIGFuIGFsbG9jYXRhYmxlIGZzbC1tYyBkZXZpY2UgZnJvbSB0aGUgcmVzb3VyY2VcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTk1LSAqIHBvb2wuIEl0J3MgYW4gZXJyb3IgaWYgdGhlIGRldmljZSBpcyBpbiB1c2UuXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTI1ND1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfcmVzb3VyY2VfZnJlZSk7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTI1Ni0vKipcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI1NzogKiBmc2xfbWNfb2JqZWN0X2FsbG9jYXRlIC0gQWxsb2NhdGVzIGFuIGZzbC1tYyBvYmplY3Qgb2YgdGhlIGdpdmVuXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzoyNTg6ICogcG9vbCB0eXBlIGZyb20gYSBnaXZlbiBmc2wtbWMgYnVzIGluc3RhbmNlXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0yNTktICpcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjI2MDogKiBAbWNfZGV2OiBmc2wtbWMgZGV2aWNlIHdoaWNoIGlzIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGVcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTI2MS0gKiBhbGxvY2F0ZWQgb2JqZWN0XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTMyMj1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfb2JqZWN0X2FsbG9jYXRlKTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzI0LS8qKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6MzI1OiAqIGZzbF9tY19vYmplY3RfZnJlZSAtIFJldHVybnMgYW4gZnNsLW1jIG9iamVjdCB0byB0aGUgcmVzb3VyY2VcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTMyNi0gKiBwb29sIHdoZXJlIGl0IGNhbWUgZnJvbS5cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjMyNzogKiBAbWNfYWRldjogUG9pbnRlciB0byB0aGUgZnNsLW1jIGRldmljZVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzI4LSAqL1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz0zNDM9RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX29iamVjdF9mcmVlKTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtMzUxLS8qXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzozNTI6ICogSW5pdGlhbGl6ZSB0aGUgaW50ZXJydXB0IHBvb2wgYXNzb2NpYXRlZCB3aXRoIGFuIGZzbC1tYyBidXMuXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy0zNTMtICogSXQgYWxsb2NhdGVzIGEgYmxvY2sgb2YgSVJRcyBmcm9tIHRoZSBHSUMtSVRTLlxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYz00MTE9RVhQT1JUX1NZTUJPTF9HUEwoZnNsX21jX3BvcHVsYXRlX2lycV9wb29sKTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDEzLS8qXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo0MTQ6ICogVGVhcmRvd24gdGhlIGludGVycnVwdCBwb29sIGFzc29jaWF0ZWQgd2l0aCBhbiBmc2wtbWMgYnVzLlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNDE1LSAqIEl0IGZyZWVzIHRoZSBJUlFzIHRoYXQgd2VyZSBhbGxvY2F0ZWQgdG8gdGhlIHBvb2wsIGJhY2sgdG8gdGhlIEdJQy1JVFMuXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jPTQzOD1FWFBPUlRfU1lNQk9MX0dQTChmc2xfbWNfY2xlYW51cF9pcnFfcG9vbCk7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTQ0MC0vKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM6NDQxOiAqIEFsbG9jYXRlIHRoZSBJUlFzIHJlcXVpcmVkIGJ5IGEgZ2l2ZW4gZnNsLW1jIGRldmljZS5cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTQ0Mi0gKi9cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9NTA2PUVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19hbGxvY2F0ZV9pcnFzKTtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmMtNTA4LS8qXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo1MDk6ICogRnJlZXMgdGhlIElSUXMgdGhhdCB3ZXJlIGFsbG9jYXRlZCBmb3IgYW4gZnNsLW1jIGRldmljZS5cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTUxMC0gKi9cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9NTYyPXN0YXRpYyBpbnQgZnNsX21jX2FsbG9jYXRvcl9wcm9iZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYy01ODUtXFx0ZGV2X2RiZyhcXHUwMDI2bWNfZGV2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1hbGxvY2F0b3IuYzo1ODY6XFx0XFx0XFxcIkFsbG9jYXRhYmxlIGZzbC1tYyBkZXZpY2UgYm91bmQgdG8gZnNsX21jX2FsbG9jYXRvciBkcml2ZXJcXFwiKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTU4Ny1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYWxsb2NhdG9yLmM9NTk0PXN0YXRpYyB2b2lkIGZzbF9tY19hbGxvY2F0b3JfcmVtb3ZlKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19kZXYpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTYwNC1cXHRkZXZfZGJnKFxcdTAwMjZtY19kZXYtXFx1MDAzZWRldixcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jOjYwNTpcXHRcXHRcXFwiQWxsb2NhdGFibGUgZnNsLW1jIGRldmljZSB1bmJvdW5kIGZyb20gZnNsX21jX2FsbG9jYXRvciBkcml2ZXJcXFwiKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWFsbG9jYXRvci5jLTYwNi19XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTE6I2RlZmluZSBwcl9mbXQoZm10KSBcXFwiZnNsLW1jOiBcXFwiIGZtdFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTItXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTI1LVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MjY6I2luY2x1ZGUgXFxcImZzbC1tYy1wcml2YXRlLmhcXFwiXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yNy1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTI4LS8qXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoyOTogKiBEZWZhdWx0IERNQSBtYXNrIGZvciBkZXZpY2VzIG9uIGEgZnNsLW1jIGJ1c1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzAtICovXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTMzPXN0YXRpYyBzdHJ1Y3QgZnNsX21jX3ZlcnNpb24gbWNfdmVyc2lvbjtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzYtICogc3RydWN0IGZzbF9tYyAtIFByaXZhdGUgZGF0YSBvZiBhIFxcXCJmc2wscW9yaXEtbWNcXFwiIHBsYXRmb3JtIGRldmljZVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6Mzc6ICogQHJvb3RfbWNfYnVzX2RldjogZnNsLW1jIGRldmljZSByZXByZXNlbnRpbmcgdGhlIHJvb3QgRFBSQ1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzgtICogQG51bV90cmFuc2xhdGlvbl9yYW5nZXM6IG51bWJlciBvZiBlbnRyaWVzIGluIGFkZHJfdHJhbnNsYXRpb25fcmFuZ2VzXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTgwPXN0YXRpYyBwaHlzX2FkZHJfdCBtY19wb3J0YWxfYmFzZV9waHlzX2FkZHI7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTgzLSAqIGZzbF9tY19idXNfbWF0Y2ggLSBkZXZpY2UgdG8gZHJpdmVyIG1hdGNoaW5nIGNhbGxiYWNrXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo4NDogKiBAZGV2OiB0aGUgZnNsLW1jIGRldmljZSB0byBtYXRjaCBhZ2FpbnN0XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo4NTogKiBAZHJ2OiB0aGUgZGV2aWNlIGRyaXZlciB0byBzZWFyY2ggZm9yIG1hdGNoaW5nIGZzbC1tYyBvYmplY3QgdHlwZVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODYtICogc3RydWN0dXJlc1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xMzk9c3RhdGljIGludCBmc2xfbWNfYnVzX3VldmVudChjb25zdCBzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBrb2JqX3VldmVudF9lbnYgKmVudilcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTQyLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTQzOlxcdGlmIChhZGRfdWV2ZW50X3ZhcihlbnYsIFxcXCJNT0RBTElBUz1mc2wtbWM6diUwOFhkJXNcXFwiLFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTQ0LVxcdFxcdFxcdCAgIG1jX2Rldi1cXHUwMDNlb2JqX2Rlc2MudmVuZG9yLFxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0yMTQ9c3RhdGljIHNzaXplX3QgbW9kYWxpYXNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0yMTgtXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzoyMTk6XFx0cmV0dXJuIHN5c2ZzX2VtaXQoYnVmLCBcXFwiZnNsLW1jOnYlMDhYZCVzXFxcXG5cXFwiLCBtY19kZXYtXFx1MDAzZW9ial9kZXNjLnZlbmRvcixcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTIyMC1cXHRcXHRcXHRtY19kZXYtXFx1MDAzZW9ial9kZXNjLnR5cGUpO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0zMjY9Y29uc3Qgc3RydWN0IGJ1c190eXBlIGZzbF9tY19idXNfdHlwZSA9IHtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjMyNzpcXHQubmFtZSA9IFxcXCJmc2wtbWNcXFwiLFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMzI4LVxcdC5kcml2ZXJfb3ZlcnJpZGUgPSB0cnVlLFxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz00OTk9c3RhdGljIGludCBtY19nZXRfdmVyc2lvbihzdHJ1Y3QgZnNsX21jX2lvICptY19pbyxcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNTI4LSAqXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo1Mjk6ICogUmV0dXJuOlxcdG1jIHZlcnNpb24gd2hlbiBjYWxsZWQgYWZ0ZXIgZnNsLW1jLWJ1cyBwcm9iZTsgTlVMTCBvdGhlcndpc2UuXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy01MzAtICovXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTYzMj1zdGF0aWMgaW50IGZzbF9tY19kZXZpY2VfZ2V0X21taW9fcmVnaW9ucyhzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2LFxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03MTAtXFx0XFx0cmVnaW9uc1tpXS5lbmQgPSByZWdpb25zW2ldLnN0YXJ0ICsgcmVnaW9uX2Rlc2Muc2l6ZSAtIDE7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo3MTE6XFx0XFx0cmVnaW9uc1tpXS5uYW1lID0gXFxcImZzbC1tYyBvYmplY3QgTU1JTyByZWdpb25cXFwiO1xcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzEyLVxcdFxcdHJlZ2lvbnNbaV0uZmxhZ3MgPSByZWdpb25fZGVzYy5mbGFncyBcXHUwMDI2IElPUkVTT1VSQ0VfQklUUztcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9NzM3PXN0YXRpYyB2b2lkIGZzbF9tY19kZXZpY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTc0OS0vKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6NzUwOiAqIEFkZCBhIG5ld2x5IGRpc2NvdmVyZWQgZnNsLW1jIGRldmljZSB0byBiZSB2aXNpYmxlIGluIExpbnV4XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03NTEtICovXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTg4Mj1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGZzbF9tY19uYjtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODg0LS8qKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODg1OiAqIGZzbF9tY19kZXZpY2VfcmVtb3ZlIC0gUmVtb3ZlIGFuIGZzbC1tYyBkZXZpY2UgZnJvbSBiZWluZyB2aXNpYmxlIHRvXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04ODYtICogTGludXhcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg4Ny0gKlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODg4OiAqIEBtY19kZXY6IFBvaW50ZXIgdG8gYW4gZnNsLW1jIGRldmljZVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtODg5LSAqL1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz05MDA9c3RydWN0IGZzbF9tY19kZXZpY2UgKmZzbF9tY19nZXRfZW5kcG9pbnQoc3RydWN0IGZzbF9tY19kZXZpY2UgKm1jX2RldixcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtOTM2LVxcdCAqIGludGVycm9nYXRpbmcgdGhlIGZpcm13YXJlLiBUaGlzIGlzIHRoZSBjYXNlIHdoZW4gdGhlIGRldmljZSB3YXMgbm90XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo5Mzc6XFx0ICogeWV0IGRpc2NvdmVyZWQgYnkgdGhlIGZzbC1tYyBidXMsIHRodXMgdGhlIGxvb2t1cCByZXR1cm5lZCBOVUxMLlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtOTM4LVxcdCAqIEZvcmNlIGEgcmVzY2FuIG9mIHRoZSBkZXZpY2VzIGluIHRoaXMgY29udGFpbmVyIGFuZCByZXRyeSB0aGUgbG9va3VwLlxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYz0xMDA1PXN0YXRpYyBpbnQgZnNsX21jX2Zpcm13YXJlX2NoZWNrKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMTMtXFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTAxNDpcXHRcXHRcXHRcXFwiZnNsLW1jOiBEUEwgcHJvY2Vzc2luZyB3YXMgbm90IHN0YXJ0ZWQsIERQQUEyIHdpbGwgbm90IHdvcmshXFxcXG5cXFwiKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMTUtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMDIwLVxcdFxcdGRldl9kYmcoXFx1MDAyNnBkZXYtXFx1MDAzZWRldixcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjEwMjE6XFx0XFx0XFx0XFxcImZzbC1tYzogRFBMIHByb2Nlc3NpbmcgaW4gcHJvZ3Jlc3MsIGRlZmVyIHByb2JlXFxcXG5cXFwiKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMjItXFx0XFx0cmV0dXJuIC1FUFJPQkVfREVGRVI7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTEwMjctXFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6MTAyODpcXHRcXHRcXHRcXFwiZnNsLW1jOiBNQyBib290IGNvbXBsZXRlZCB3aXRoIGVycm9yIDB4JXhcXFxcblxcXCIsIG1jcyk7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMDI5LVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1tc2kuYy0xNS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLW1zaS5jOjE2OiNpbmNsdWRlIFxcXCJmc2wtbWMtcHJpdmF0ZS5oXFxcIlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtbXNpLmMtMTctXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaD01ODI9c3RydWN0IGZzbF9tY191YXBpIHtcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTU5MS0gKiBzdHJ1Y3QgZnNsX21jX2J1cyAtIGxvZ2ljYWwgYnVzIHRoYXQgY29ycmVzcG9uZHMgdG8gYSBwaHlzaWNhbCBEUFJDXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmg6NTkyOiAqIEBtY19kZXY6IGZzbC1tYyBkZXZpY2UgZm9yIHRoZSBidXMgZGV2aWNlIGl0c2VsZi5cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaC01OTMtICogQHJlc291cmNlX3Bvb2xzOiBhcnJheSBvZiByZXNvdXJjZSBwb29scyAob25lIHBvb2wgcGVyIHJlc291cmNlIHR5cGUpXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXVhcGkuYy0xMy1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXVhcGkuYzoxNDojaW5jbHVkZSBcXFwiZnNsLW1jLXByaXZhdGUuaFxcXCJcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXVhcGkuYy0xNS1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9tYy1pby5jLTktXFxuZHJpdmVycy9idXMvZnNsLW1jL21jLWlvLmM6MTA6I2luY2x1ZGUgXFxcImZzbC1tYy1wcml2YXRlLmhcXFwiXFxuZHJpdmVycy9idXMvZnNsLW1jL21jLWlvLmMtMTEtXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvbWMtc3lzLmMtMTYtXFxuZHJpdmVycy9idXMvZnNsLW1jL21jLXN5cy5jOjE3OiNpbmNsdWRlIFxcXCJmc2wtbWMtcHJpdmF0ZS5oXFxcIlxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9tYy1zeXMuYy0xOC1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9vYmotYXBpLmMtOC1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvb2JqLWFwaS5jOjk6I2luY2x1ZGUgXFxcImZzbC1tYy1wcml2YXRlLmhcXFwiXFxuZHJpdmVycy9idXMvZnNsLW1jL29iai1hcGkuYy0xMC1cXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2NhYW0vS2NvbmZpZz0xNzg9Y29uZmlnIENSWVBUT19ERVZfRlNMX0RQQUEyX0NBQU1cXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2NhYW0vS2NvbmZpZy0xOTMtXFx0ICBJdCBoYW5kbGVzIERQU0VDSSBEUEFBMiBvYmplY3RzIHRoYXQgc2l0IG9uIHRoZSBNYW5hZ2VtZW50IENvbXBsZXhcXG5kcml2ZXJzL2NyeXB0by9jYWFtL0tjb25maWc6MTk0OlxcdCAgKE1DKSBmc2wtbWMgYnVzLlxcbmRyaXZlcnMvY3J5cHRvL2NhYW0vS2NvbmZpZy0xOTUtXFxuLS1cXG5kcml2ZXJzL2RtYS9mc2wtZHBhYTItcWRtYS9kcGFhMi1xZG1hLmM9MTUyPWRwYWEyX3FkbWFfcG9wdWxhdGVfZmQodTMyIGZvcm1hdCwgc3RydWN0IGRwYWEyX3FkbWFfY29tcCAqZHBhYTJfY29tcClcXG4tLVxcbmRyaXZlcnMvZG1hL2ZzbC1kcGFhMi1xZG1hL2RwYWEyLXFkbWEuYy0xNjMtXFx0ICogQnlwYXNzIG1lbW9yeSB0cmFuc2xhdGlvbiwgRnJhbWUgbGlzdCBmb3JtYXQsIHNob3J0IGxlbmd0aCBkaXNhYmxlXFxuZHJpdmVycy9kbWEvZnNsLWRwYWEyLXFkbWEvZHBhYTItcWRtYS5jOjE2NDpcXHQgKiB3ZSBuZWVkIHRvIGRpc2FibGUgQk1UIGlmIGZzbC1tYyB1c2UgaW92YSBhZGRyXFxuZHJpdmVycy9kbWEvZnNsLWRwYWEyLXFkbWEvZHBhYTItcWRtYS5jLTE2NS1cXHQgKi9cXG4tLVxcbmRyaXZlcnMvaW9tbXUvaW9tbXUuYz0xNjg1PUVYUE9SVF9TWU1CT0xfR1BMKHBjaV9kZXZpY2VfZ3JvdXApO1xcbmRyaXZlcnMvaW9tbXUvaW9tbXUuYy0xNjg2LVxcbmRyaXZlcnMvaW9tbXUvaW9tbXUuYzoxNjg3Oi8qIEdldCB0aGUgSU9NTVUgZ3JvdXAgZm9yIGRldmljZSBvbiBmc2wtbWMgYnVzICovXFxuZHJpdmVycy9pb21tdS9pb21tdS5jLTE2ODgtc3RydWN0IGlvbW11X2dyb3VwICpmc2xfbWNfZGV2aWNlX2dyb3VwKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvc29jL2ZzbC9kcGlvL01ha2VmaWxlLTUtXFxuZHJpdmVycy9zb2MvZnNsL2RwaW8vTWFrZWZpbGU6NjpvYmotJChDT05GSUdfRlNMX01DX0RQSU8pICs9IGZzbC1tYy1kcGlvLm9cXG5kcml2ZXJzL3NvYy9mc2wvZHBpby9NYWtlZmlsZS03LVxcbmRyaXZlcnMvc29jL2ZzbC9kcGlvL01ha2VmaWxlOjg6ZnNsLW1jLWRwaW8tb2JqcyA6PSBkcGlvLm8gcWJtYW4tcG9ydGFsLm8gZHBpby1zZXJ2aWNlLm8gZHBpby1kcml2ZXIub1xcbi0tXFxuZHJpdmVycy9zb2MvZnNsL2RwaW8vZHBpby1zZXJ2aWNlLmM9MjI2PWlycXJldHVybl90IGRwYWEyX2lvX2lycShzdHJ1Y3QgZHBhYTJfaW8gKm9iailcXG4tLVxcbmRyaXZlcnMvc29jL2ZzbC9kcGlvL2RwaW8tc2VydmljZS5jLTI0OS1cXHRcXHR9IGVsc2Uge1xcbmRyaXZlcnMvc29jL2ZzbC9kcGlvL2RwaW8tc2VydmljZS5jOjI1MDpcXHRcXHRcXHRwcl9jcml0KFxcXCJmc2wtbWMtZHBpbzogVW5yZWNvZ25pc2VkL2lnbm9yZWQgRFFSUiBlbnRyeVxcXFxuXFxcIik7XFxuZHJpdmVycy9zb2MvZnNsL2RwaW8vZHBpby1zZXJ2aWNlLmMtMjUxLVxcdFxcdH1cXG4tLVxcbmRyaXZlcnMvdmZpby9LY29uZmlnPTk1PXNvdXJjZSBcXFwiZHJpdmVycy92ZmlvL21kZXYvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZzo5Njpzb3VyY2UgXFxcImRyaXZlcnMvdmZpby9mc2wtbWMvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL3ZmaW8vS2NvbmZpZy05Ny1zb3VyY2UgXFxcImRyaXZlcnMvdmZpby9jZHgvS2NvbmZpZ1xcXCJcXG4tLVxcbmRyaXZlcnMvdmZpby9NYWtlZmlsZT0xNj1vYmotJChDT05GSUdfVkZJT19NREVWKSArPSBtZGV2L1xcbmRyaXZlcnMvdmZpby9NYWtlZmlsZToxNzpvYmotJChDT05GSUdfVkZJT19GU0xfTUMpICs9IGZzbC1tYy9cXG5kcml2ZXJzL3ZmaW8vTWFrZWZpbGUtMTgtb2JqLSQoQ09ORklHX1ZGSU9fQ0RYKSArPSBjZHgvXFxuLS1cXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWc9ND1jb25maWcgVkZJT19GU0xfTUNcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWc6NTpcXHR0cmlzdGF0ZSBcXFwiVkZJTyBzdXBwb3J0IGZvciBRb3JJUSBEUEFBMiBmc2wtbWMgYnVzIGRldmljZXNcXFwiXFxuZHJpdmVycy92ZmlvL2ZzbC1tYy9LY29uZmlnLTYtXFx0c2VsZWN0IEVWRU5URkRcXG5kcml2ZXJzL3ZmaW8vZnNsLW1jL0tjb25maWctNy1cXHRoZWxwXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjIwOjMyLjY0NzMxOTRaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQ4NTIwMDk5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIHZmaW9fZnNsX21jIERyaXZlciBmb3IgUW9ySVEgRFBBQTIgU29DcyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIGBGU0xfTUNfQlVTYCDigJMgdGhhdCdzIHRoZSBidXMgZHJpdmVyIGZvciB0aGUgTlhQL0ZyZWVzY2FsZSBRb3JJUSBEUEFBMiBTb0MgTWFuYWdlbWVudCBDb21wbGV4IGhhcmR3YXJlLiBSaWdodCwgZ290IGl0LiBOb3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBjYW4gYHZmaW9fZnNsX21jYCBiZSBwcm9iZWQgd2l0aG91dCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgcHJlc2VudD8gVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nIGFuZCB3aGVyZSBJIGNhbiBwb3RlbnRpYWxseSBsZWFybiBzb21ldGhpbmcgdXNlZnVsIGZvciBteSBjdXJyZW50IHByb2plY3QuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwcm9iaW5nIHByb2Nlc3MgdG8gYW5zd2VyIHRoaXMuXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLiBMZXQncyBzZWUgaG93IGB2ZmlvX2ZzbF9tY2AgcHJvYmVzOyBzcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayBgdmZpb19mc2xfbWNfcHJvYmVgLiBBaGEsIGl0J3MgbG9jYXRlZCBpbiBgZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jYC4gRXhjZWxsZW50LCB0aGF0J3MgdGhlIGZpbGUgdG8gZm9jdXMgb24uIE5vdyBJIG5lZWQgdG8gY2FyZWZ1bGx5IHJlYWQgdGhyb3VnaCB0aGUgaW1wbGVtZW50YXRpb24gb2YgYHZmaW9fZnNsX21jX3Byb2JlYCBpdHNlbGYuIFRpbWUgdG8gZ2V0IGludG8gdGhlIGRldGFpbHMhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MTM1LCJPdXRwdXRUb2tlbnMiOjQ3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjIwOjM1LjEzMjUyMzUxWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDA5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNTI1LFxuICBcIkxpbmVDb3VudFwiOiA3MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTI1OlxcdFxcbiA1MjY6XFx0XFx0LyogZGV2aWNlX3NldCBpcyByZWxlYXNlZCBieSB2ZmlvIGNvcmUgaWYgQGluaXQgZmFpbHMgKi9cXG4gNTI3OlxcdFxcdHJldHVybiB2ZmlvX2ZzbF9tY19pbml0X2RldmljZSh2ZGV2KTtcXG4gNTI4OlxcdH1cXG4gNTI5OlxcdFxcbiA1MzA6XFx0c3RhdGljIGludCB2ZmlvX2ZzbF9tY19wcm9iZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbiA1MzE6XFx0e1xcbiA1MzI6XFx0XFx0c3RydWN0IHZmaW9fZnNsX21jX2RldmljZSAqdmRldjtcXG4gNTMzOlxcdFxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZtY19kZXYtXFx1MDAzZWRldjtcXG4gNTM0OlxcdFxcdGludCByZXQ7XFxuIDUzNTpcXHRcXG4gNTM2OlxcdFxcdHZkZXYgPSB2ZmlvX2FsbG9jX2RldmljZSh2ZmlvX2ZzbF9tY19kZXZpY2UsIHZkZXYsIGRldixcXG4gNTM3OlxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2dmZpb19mc2xfbWNfb3BzKTtcXG4gNTM4OlxcdFxcdGlmIChJU19FUlIodmRldikpXFxuIDUzOTpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUih2ZGV2KTtcXG4gNTQwOlxcdFxcbiA1NDE6XFx0XFx0cmV0ID0gdmZpb19yZWdpc3Rlcl9ncm91cF9kZXYoXFx1MDAyNnZkZXYtXFx1MDAzZXZkZXYpO1xcbiA1NDI6XFx0XFx0aWYgKHJldCkge1xcbiA1NDM6XFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJWRklPX0ZTTF9NQzogRmFpbGVkIHRvIGFkZCB0byB2ZmlvIGdyb3VwXFxcXG5cXFwiKTtcXG4gNTQ0OlxcdFxcdFxcdGdvdG8gb3V0X3B1dF92ZGV2O1xcbiA1NDU6XFx0XFx0fVxcbiA1NDY6XFx0XFxuIDU0NzpcXHRcXHRyZXQgPSB2ZmlvX2ZzbF9tY19zY2FuX2NvbnRhaW5lcihtY19kZXYpO1xcbiA1NDg6XFx0XFx0aWYgKHJldClcXG4gNTQ5OlxcdFxcdFxcdGdvdG8gb3V0X2dyb3VwX2RldjtcXG4gNTUwOlxcdFxcdGRldl9zZXRfZHJ2ZGF0YShkZXYsIHZkZXYpO1xcbiA1NTE6XFx0XFx0cmV0dXJuIDA7XFxuIDU1MjpcXHRcXG4gNTUzOlxcdG91dF9ncm91cF9kZXY6XFxuIDU1NDpcXHRcXHR2ZmlvX3VucmVnaXN0ZXJfZ3JvdXBfZGV2KFxcdTAwMjZ2ZGV2LVxcdTAwM2V2ZGV2KTtcXG4gNTU1OlxcdG91dF9wdXRfdmRldjpcXG4gNTU2OlxcdFxcdHZmaW9fcHV0X2RldmljZShcXHUwMDI2dmRldi1cXHUwMDNldmRldik7XFxuIDU1NzpcXHRcXHRyZXR1cm4gcmV0O1xcbiA1NTg6XFx0fVxcbiA1NTk6XFx0XFxuIDU2MDpcXHRzdGF0aWMgdm9pZCB2ZmlvX2ZzbF9tY19yZWxlYXNlX2RldihzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4gNTYxOlxcdHtcXG4gNTYyOlxcdFxcdHN0cnVjdCB2ZmlvX2ZzbF9tY19kZXZpY2UgKnZkZXYgPVxcbiA1NjM6XFx0XFx0XFx0Y29udGFpbmVyX29mKGNvcmVfdmRldiwgc3RydWN0IHZmaW9fZnNsX21jX2RldmljZSwgdmRldik7XFxuIDU2NDpcXHRcXG4gNTY1OlxcdFxcdHZmaW9fZnNsX3VuaW5pdF9kZXZpY2UodmRldik7XFxuIDU2NjpcXHRcXHRtdXRleF9kZXN0cm95KFxcdTAwMjZ2ZGV2LVxcdTAwM2VpZ2F0ZSk7XFxuIDU2NzpcXHR9XFxuIDU2ODpcXHRcXG4gNTY5OlxcdHN0YXRpYyB2b2lkIHZmaW9fZnNsX21jX3JlbW92ZShzdHJ1Y3QgZnNsX21jX2RldmljZSAqbWNfZGV2KVxcbiA1NzA6XFx0e1xcbiA1NzE6XFx0XFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNm1jX2Rldi1cXHUwMDNlZGV2O1xcbiA1NzI6XFx0XFx0c3RydWN0IHZmaW9fZnNsX21jX2RldmljZSAqdmRldiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xcbiA1NzM6XFx0XFxuIDU3NDpcXHRcXHR2ZmlvX3VucmVnaXN0ZXJfZ3JvdXBfZGV2KFxcdTAwMjZ2ZGV2LVxcdTAwM2V2ZGV2KTtcXG4gNTc1OlxcdFxcdGRwcmNfcmVtb3ZlX2RldmljZXMobWNfZGV2LCBOVUxMLCAwKTtcXG4gNTc2OlxcdFxcdHZmaW9fcHV0X2RldmljZShcXHUwMDI2dmRldi1cXHUwMDNldmRldik7XFxuIDU3NzpcXHR9XFxuIDU3ODpcXHRcXG4gNTc5OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzIHZmaW9fZnNsX21jX29wcyA9IHtcXG4gNTgwOlxcdFxcdC5uYW1lXFx0XFx0PSBcXFwidmZpby1mc2wtbWNcXFwiLFxcbiA1ODE6XFx0XFx0LmluaXRcXHRcXHQ9IHZmaW9fZnNsX21jX2luaXRfZGV2LFxcbiA1ODI6XFx0XFx0LnJlbGVhc2VcXHQ9IHZmaW9fZnNsX21jX3JlbGVhc2VfZGV2LFxcbiA1ODM6XFx0XFx0Lm9wZW5fZGV2aWNlXFx0PSB2ZmlvX2ZzbF9tY19vcGVuX2RldmljZSxcXG4gNTg0OlxcdFxcdC5jbG9zZV9kZXZpY2VcXHQ9IHZmaW9fZnNsX21jX2Nsb3NlX2RldmljZSxcXG4gNTg1OlxcdFxcdC5pb2N0bFxcdFxcdD0gdmZpb19mc2xfbWNfaW9jdGwsXFxuIDU4NjpcXHRcXHQuZ2V0X3JlZ2lvbl9pbmZvX2NhcHMgPSB2ZmlvX2ZzbF9tY19pb2N0bF9nZXRfcmVnaW9uX2luZm8sXFxuIDU4NzpcXHRcXHQucmVhZFxcdFxcdD0gdmZpb19mc2xfbWNfcmVhZCxcXG4gNTg4OlxcdFxcdC53cml0ZVxcdFxcdD0gdmZpb19mc2xfbWNfd3JpdGUsXFxuIDU4OTpcXHRcXHQubW1hcFxcdFxcdD0gdmZpb19mc2xfbWNfbW1hcCxcXG4gNTkwOlxcdFxcdC5iaW5kX2lvbW11ZmRcXHQ9IHZmaW9faW9tbXVmZF9waHlzaWNhbF9iaW5kLFxcbiA1OTE6XFx0XFx0LnVuYmluZF9pb21tdWZkXFx0PSB2ZmlvX2lvbW11ZmRfcGh5c2ljYWxfdW5iaW5kLFxcbiA1OTI6XFx0XFx0LmF0dGFjaF9pb2FzXFx0PSB2ZmlvX2lvbW11ZmRfcGh5c2ljYWxfYXR0YWNoX2lvYXMsXFxuIDU5MzpcXHRcXHQuZGV0YWNoX2lvYXNcXHQ9IHZmaW9faW9tbXVmZF9waHlzaWNhbF9kZXRhY2hfaW9hcyxcXG4gNTk0OlxcdH07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjIwOjM1LjEzMjYyNTQyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI0Nzc4MTQ3MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKlZGSU8tRlNMIE1DIERldmljZSBQcm9iaW5nOiBBIERlZXBlciBEaXZlKipcblxuT2theSwgc28gYHZmaW9fZnNsX21jX3Byb2JlYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBnZXRzIGludm9rZWQgd2hlbiB0aGUgc3lzdGVtIHJlY29nbml6ZXMgdGhhdCBhIGBzdHJ1Y3QgZnNsX21jX2RldmljZWAgaGFzIHBhaXJlZCB3aXRoIHRoZSBgdmZpb19mc2xfbWNfZHJpdmVyYC4gVGhhdCBtdWNoIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gQnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzOiAqd2hlcmUqIGFyZSB0aGVzZSBgc3RydWN0IGZzbF9tY19kZXZpY2VgIGluc3RhbmNlcyBhY3R1YWxseSBiZWluZyBpbnN0YW50aWF0ZWQgYW5kIHJlZ2lzdGVyZWQgd2l0aGluIHRoZSBrZXJuZWw/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXZpY2UgY3JlYXRpb24gbGlmZWN5Y2xlLlxuXG5UaGUgc3RhbmRhcmQgYXBwcm9hY2ggdG8gdHJhY2sgZG93biB0aGUgYW5zd2VyIGlzIHRvIHNlZSB3aGVyZSBgZnNsX21jX2RldmljZV9hZGRgIGdldHMgY2FsbGVkLiBUaGlzIHNob3VsZCBsZWFkIG1lIHRvIHRoZSByZWxldmFudCBpbml0aWFsaXphdGlvbiBjb2RlLCBhbmQgdGhlIGNyZWF0aW9uIG9mIHRob3NlIGNyaXRpY2FsIGBzdHJ1Y3QgZnNsX21jX2RldmljZWAgc3RydWN0dXJlcy4gTGV0J3MgdHJhY2UgdGhvc2UgZnVuY3Rpb24gY2FsbHMgYW5kIHdvcmsgZnJvbSB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY3OTksIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjIwOjM3LjYxMDQ0NDI5OVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3Mzg3OTcwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmc2xfbWNfZGV2aWNlX2FkZFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2J1cy9mc2wtbWMvZHByYy1kcml2ZXIuYz0xNjk9c3RhdGljIHZvaWQgZnNsX21jX29ial9kZXZpY2VfYWRkKHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2LFxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTgyLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmM6MTgzOlxcdFxcdGVycm9yID0gZnNsX21jX2RldmljZV9hZGQob2JqX2Rlc2MsIE5VTEwsIFxcdTAwMjZtY19idXNfZGV2LVxcdTAwM2VkZXYsXFxuZHJpdmVycy9idXMvZnNsLW1jL2RwcmMtZHJpdmVyLmMtMTg0LVxcdFxcdFxcdFxcdFxcdCAgXFx1MDAyNmNoaWxkX2Rldik7XFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jPTczNz1zdGF0aWMgdm9pZCBmc2xfbWNfZGV2aWNlX3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy03NTEtICovXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYzo3NTI6aW50IGZzbF9tY19kZXZpY2VfYWRkKHN0cnVjdCBmc2xfbWNfb2JqX2Rlc2MgKm9ial9kZXNjLFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtNzUzLVxcdFxcdCAgICAgIHN0cnVjdCBmc2xfbWNfaW8gKm1jX2lvLFxcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy04NzktfVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM6ODgwOkVYUE9SVF9TWU1CT0xfR1BMKGZzbF9tY19kZXZpY2VfYWRkKTtcXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jLTg4MS1cXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmM9MTAzOT1zdGF0aWMgaW50IGZzbF9tY19idXNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmMtMTE1Ny1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLWJ1cy5jOjExNTg6XFx0ZXJyb3IgPSBmc2xfbWNfZGV2aWNlX2FkZChcXHUwMDI2b2JqX2Rlc2MsIG1jX2lvLCBcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXHUwMDI2bWNfYnVzX2Rldik7XFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1idXMuYy0xMTU5LVxcdGlmIChlcnJvciBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL2J1cy9mc2wtbWMvZnNsLW1jLXByaXZhdGUuaD02MDE9c3RydWN0IGZzbF9tY19idXMge1xcbi0tXFxuZHJpdmVycy9idXMvZnNsLW1jL2ZzbC1tYy1wcml2YXRlLmgtNjEzLVxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oOjYxNDppbnQgX19tdXN0X2NoZWNrIGZzbF9tY19kZXZpY2VfYWRkKHN0cnVjdCBmc2xfbWNfb2JqX2Rlc2MgKm9ial9kZXNjLFxcbmRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtcHJpdmF0ZS5oLTYxNS1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgZnNsX21jX2lvICptY19pbyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MjA6MzkuMjg0MzQ4Mzk3WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMyOTQ4MjIwMDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgaW5mb3JtYXRpb24sIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6XG5cbioqRGlzc2VjdGluZyB0aGUgZnNsX21jX2J1c19wcm9iZSBGdW5jdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGBmc2xfbWNfYnVzX3Byb2JlYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiAqd2hlcmUqIGl0J3MgY2FsbGVkIGFuZCAqd2h5Ki4gSXQgbG9va3MgbGlrZSB0aGUgcGxhdGZvcm0gZHJpdmVyIGBmc2xfbWNfYnVzX2RyaXZlcmAgaXMgdGhlIGtleS4gUmlnaHQsIGl0J3MgbWF0Y2hpbmcgZWl0aGVyIHRoZSBgb2ZfZGV2aWNlX2lkYCBzdHJpbmcgXCJmc2wscW9yaXEtbWNcIiAoYSB0eXBpY2FsIERldmljZSBUcmVlIG1hdGNoKSBvciB0aGUgYGFjcGlfZGV2aWNlX2lkYCBzdHJpbmcgXCJOWFAwMDA4XCIgKGZvciBBQ1BJLWJhc2VkIHN5c3RlbXMpLiBFeGNlbGxlbnQsIHRoYXQgaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhlIHNjb3BlIG9mIGRldmljZXMgaXQncyBtZWFudCB0byBoYW5kbGUuXG5cbk5vdywgbGV0J3Mgc3RlcCB0aHJvdWdoIHRoZSBwcm9iZSBmdW5jdGlvbiBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3csIHRoZSByZXNvdXJjZSBhbGxvY2F0aW9uLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZS4gV2hhdCdzIGl0IGRvaW5nIHdpdGggdGhvc2UgbWF0Y2hlZCBkZXZpY2VzPyBXaGVyZSBkb2VzIGl0IGdvIGZyb20gaGVyZT8gVGhlIHJlYWwgd29yayBoYXBwZW5zIGluc2lkZSBvZiBgZnNsX21jX2J1c19wcm9iZWAgaXRzZWxmLiBUaW1lIHRvIGRpZyBpbiBhbmQgb2JzZXJ2ZSB3aGF0IG9jY3Vycy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc4MDQsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wNFQwODoyMDo0Mi41NzkxNzMzMTZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyOTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvYnVzL2ZzbC1tYy9mc2wtbWMtYnVzLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTAzOSxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTAzOTpcXHRzdGF0aWMgaW50IGZzbF9tY19idXNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4xMDQwOlxcdHtcXG4xMDQxOlxcdFxcdHN0cnVjdCBmc2xfbWNfb2JqX2Rlc2Mgb2JqX2Rlc2M7XFxuMTA0MjpcXHRcXHRpbnQgZXJyb3I7XFxuMTA0MzpcXHRcXHRzdHJ1Y3QgZnNsX21jICptYztcXG4xMDQ0OlxcdFxcdHN0cnVjdCBmc2xfbWNfZGV2aWNlICptY19idXNfZGV2ID0gTlVMTDtcXG4xMDQ1OlxcdFxcdHN0cnVjdCBmc2xfbWNfaW8gKm1jX2lvID0gTlVMTDtcXG4xMDQ2OlxcdFxcdGludCBjb250YWluZXJfaWQ7XFxuMTA0NzpcXHRcXHRwaHlzX2FkZHJfdCBtY19wb3J0YWxfcGh5c19hZGRyO1xcbjEwNDg6XFx0XFx0dTMyIG1jX3BvcnRhbF9zaXplLCBtY19zdHJlYW1faWQ7XFxuMTA0OTpcXHRcXHRzdHJ1Y3QgcmVzb3VyY2UgKnBsYXRfcmVzO1xcbjEwNTA6XFx0XFxuMTA1MTpcXHRcXHRtYyA9IGRldm1fa3phbGxvYyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBzaXplb2YoKm1jKSwgR0ZQX0tFUk5FTCk7XFxuMTA1MjpcXHRcXHRpZiAoIW1jKVxcbjEwNTM6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuMTA1NDpcXHRcXG4xMDU1OlxcdFxcdHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIG1jKTtcXG4xMDU2OlxcdFxcbjEwNTc6XFx0XFx0cGxhdF9yZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDEpO1xcbjEwNTg6XFx0XFx0aWYgKHBsYXRfcmVzKSB7XFxuMTA1OTpcXHRcXHRcXHRtYy1cXHUwMDNlZnNsX21jX3JlZ3MgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGxhdF9yZXMpO1xcbjEwNjA6XFx0XFx0XFx0aWYgKElTX0VSUihtYy1cXHUwMDNlZnNsX21jX3JlZ3MpKVxcbjEwNjE6XFx0XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIobWMtXFx1MDAzZWZzbF9tY19yZWdzKTtcXG4xMDYyOlxcdFxcdH1cXG4xMDYzOlxcdFxcbjEwNjQ6XFx0XFx0aWYgKG1jLVxcdTAwM2Vmc2xfbWNfcmVncykge1xcbjEwNjU6XFx0XFx0XFx0aWYgKElTX0VOQUJMRUQoQ09ORklHX0FDUEkpIFxcdTAwMjZcXHUwMDI2ICFkZXZfb2Zfbm9kZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KSkge1xcbjEwNjY6XFx0XFx0XFx0XFx0bWNfc3RyZWFtX2lkID0gcmVhZGwobWMtXFx1MDAzZWZzbF9tY19yZWdzICsgRlNMX01DX0ZBUFIpO1xcbjEwNjc6XFx0XFx0XFx0XFx0LypcXG4xMDY4OlxcdFxcdFxcdFxcdCAqIEhXIE9ScyB0aGUgUEwgYW5kIEJNVCBiaXQsIHBsYWNlcyB0aGUgcmVzdWx0IGluIGJpdFxcbjEwNjk6XFx0XFx0XFx0XFx0ICogMTQgb2YgdGhlIFN0cmVhbUlEIGFuZCBPUnMgaW4gdGhlIElDSUQuIENhbGN1bGF0ZSBpdFxcbjEwNzA6XFx0XFx0XFx0XFx0ICogYWNjb3JkaW5nbHkuXFxuMTA3MTpcXHRcXHRcXHRcXHQgKi9cXG4xMDcyOlxcdFxcdFxcdFxcdG1jX3N0cmVhbV9pZCA9IChtY19zdHJlYW1faWQgXFx1MDAyNiAweGZmZmYpIHxcXG4xMDczOlxcdFxcdFxcdFxcdFxcdCgobWNfc3RyZWFtX2lkIFxcdTAwMjYgKE1DX0ZBUFJfUEwgfCBNQ19GQVBSX0JNVCkpID9cXG4xMDc0OlxcdFxcdFxcdFxcdFxcdFxcdEJJVCgxNCkgOiAwKTtcXG4xMDc1OlxcdFxcdFxcdFxcdGVycm9yID0gYWNwaV9kbWFfY29uZmlndXJlX2lkKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuMTA3NjpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBERVZfRE1BX0NPSEVSRU5ULFxcbjEwNzc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNm1jX3N0cmVhbV9pZCk7XFxuMTA3ODpcXHRcXHRcXHRcXHRpZiAoZXJyb3IgPT0gLUVQUk9CRV9ERUZFUilcXG4xMDc5OlxcdFxcdFxcdFxcdFxcdHJldHVybiBlcnJvcjtcXG4xMDgwOlxcdFxcdFxcdFxcdGlmIChlcnJvcilcXG4xMDgxOlxcdFxcdFxcdFxcdFxcdGRldl93YXJuKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsXFxuMTA4MjpcXHRcXHRcXHRcXHRcXHRcXHQgXFxcImZhaWxlZCB0byBjb25maWd1cmUgZG1hOiAlZC5cXFxcblxcXCIsXFxuMTA4MzpcXHRcXHRcXHRcXHRcXHRcXHQgZXJyb3IpO1xcbjEwODQ6XFx0XFx0XFx0fVxcbjEwODU6XFx0XFxuMTA4NjpcXHRcXHRcXHQvKlxcbjEwODc6XFx0XFx0XFx0ICogU29tZSBib290bG9hZGVycyBwYXVzZSB0aGUgTUMgZmlybXdhcmUgYmVmb3JlIGJvb3RpbmcgdGhlXFxuMTA4ODpcXHRcXHRcXHQgKiBrZXJuZWwgc28gdGhhdCBNQyB3aWxsIG5vdCBjYXVzZSBmYXVsdHMgYXMgc29vbiBhcyB0aGVcXG4xMDg5OlxcdFxcdFxcdCAqIFNNTVUgcHJvYmVzIGR1ZSB0byB0aGUgZmFjdCB0aGF0IHRoZXJlJ3Mgbm8gY29uZmlndXJhdGlvblxcbjEwOTA6XFx0XFx0XFx0ICogaW4gcGxhY2UgZm9yIE1DLlxcbjEwOTE6XFx0XFx0XFx0ICogQXQgdGhpcyBwb2ludCBNQyBzaG91bGQgaGF2ZSBhbGwgaXRzIFNNTVUgc2V0dXAgZG9uZSBzbyBtYWtlXFxuMTA5MjpcXHRcXHRcXHQgKiBzdXJlIGl0IGlzIHJlc3VtZWQuXFxuMTA5MzpcXHRcXHRcXHQgKi9cXG4xMDk0OlxcdFxcdFxcdHdyaXRlbChyZWFkbChtYy1cXHUwMDNlZnNsX21jX3JlZ3MgKyBGU0xfTUNfR0NSMSkgXFx1MDAyNlxcbjEwOTU6XFx0XFx0XFx0XFx0ICAgICAofihHQ1IxX1AxX1NUT1AgfCBHQ1IxX1AyX1NUT1ApKSxcXG4xMDk2OlxcdFxcdFxcdCAgICAgICBtYy1cXHUwMDNlZnNsX21jX3JlZ3MgKyBGU0xfTUNfR0NSMSk7XFxuMTA5NzpcXHRcXHR9XFxuMTA5ODpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MjA6NDIuNTc5MzM3NTE2WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg4NTM2MjE2ODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVW5mdXp6YWJsZSBDb2RlIFBhdGggRGV0ZWN0ZWQ6IHZmaW9fZnNsX21jIERyaXZlciBvbiBhbWQ2NCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgYW5hbHlzaXMgdGVsbHMgbWUgdGhhdCB0aGUgY29kZSBiZWluZyBtb2RpZmllZCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZHJpdmVycy92ZmlvL2ZzbC1tYy92ZmlvX2ZzbF9tYy5jYCwgaXMgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4gVGhlIHBhdGNoIHRvdWNoZXMgYHZmaW9fZnNsX21jX21tYXAoKWAgd2hpY2ggaXMgcGFydCBvZiB0aGUgVkZJTyBkcml2ZXIgZm9yIHRoZSBGcmVlc2NhbGUgTWFuYWdlbWVudCBDb21wbGV4IChmc2wtbWMpIGJ1cy4gVGhpcyBgZnNsLW1jYCBkcml2ZXIgZGlyZWN0bHkgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlLCByZWFkaW5nIGFuZCB3cml0aW5nIHRvIHJlZ2lzdGVycyBhbmQgY29tbXVuaWNhdGluZyB3aXRoIHRoZSBNYW5hZ2VtZW50IENvbXBsZXguIFRoZSBpc3N1ZSBpcyB0aGlzOiB0aGlzIGhhcmR3YXJlIGlzIHZlbmRvci1zcGVjaWZpYywgb25seSBwcmVzZW50IG9uIE5YUCBMYXllcnNjYXBlIFNvQ3MuXG5cbk5vdywgY29uc2lkZXIgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmU6IGBhbWQ2NGAuIE9uIGBhbWQ2NGAsIHRoZXJlIGlzIG5vIHdheSBmb3IgUUVNVSBvciBhbnkgc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gZW52aXJvbm1lbnQgKGxpa2UgR0NFKSB0byBlbXVsYXRlIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUuIEV2ZW4gb24gQVJNNjQsIHRoZSBlbXVsYXRpb24gaXNuJ3QgcHJlc2VudCwgYW5kIG9uIGBhbWQ2NGAsIHRoZSByZWxldmFudCBhcmNoaXRlY3R1cmUgY29uZmlndXJhdGlvbiAoYEFSQ0hfTEFZRVJTQ0FQRWApIGlzIG5vdCBldmVuIGF2YWlsYWJsZSB1bmxlc3Mgc3BlY2lmaWNhbGx5IGNvbXBpbGVkIGZvciBhIHRlc3Qgc2NlbmFyaW8gKGBDT01QSUxFX1RFU1RgKSwgZXZlbiB0aGVuLCB0aGlzIGhhcmR3YXJlIGRvZXMgbm90IGV4aXN0IGluIHRoZXNlIGVudmlyb25tZW50cy4gXG5cbkxvb2tpbmcgYXQgdGhlIE5lZ2F0aXZlIENyaXRlcmlhIGluIHNlY3Rpb24gMiwgdGhpcyBjbGVhcmx5IGZhbGxzIHVuZGVyIFwiU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlXCIgYXMgaXQgZGVhbHMgd2l0aCBhIHZlbmRvci1zcGVjaWZpYyBoYXJkd2FyZSBjb21wb25lbnQgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIEZ1cnRoZXJtb3JlLCBcIlJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFXCIsIGFuZCBzaW5jZSB0aGlzIGNvZGUgY2Fubm90IGJlIGV4ZWN1dGVkIGluIHN0YW5kYXJkIGVudmlyb25tZW50cywgZnV6emluZyBpcyBwb2ludGxlc3MuXG5cblRoZSBkaWZmIGNvbmZpcm1zIHRoYXQgdGhlIHBhdGNoIG9ubHkgdG91Y2hlcyBgdmZpb19mc2xfbWMuY2AuIFRoZSBjaGFuZ2Ugd2l0aGluIGB2ZmlvX2ZzbF9tY19tbWFwKClgIGlzIGZvY3VzZWQgb24gbWVtb3J5IHByb3RlY3Rpb24gZmxhZ3MuIEhvd2V2ZXIsIGl0cyBleGVjdXRpb24gaXMgY29udGluZ2VudCBvbiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSwgd2hpY2ggaXMgaW5hY2Nlc3NpYmxlIGluIG91ciBmdXp6aW5nIGVudmlyb25tZW50LlxuXG5UaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMgb24gYW1kNjQuIFxuXG5UaGUgYHNldC1yZXN1bHRzYCB3aWxsIG5lZWQgdGhlc2UgdmFsdWVzOlxuLSAgIGBXb3J0aEZ1enppbmdgOiBmYWxzZVxuLSAgIGBGb2N1c1N5bWJvbHNgOiBbXSAob3IgbnVsbC9lbXB0eSlcbi0gICBgRW5hYmxlQ29uZmlnc2A6IFtdIChvciBudWxsL2VtcHR5KVxuLSAgIGBSZWFzb25pbmdgOiBDb25jaXNlIGV4cGxhbmF0aW9uIG9mIHdoeSBpdCBpcyBub3Qgd29ydGggZnV6emluZy5cbiAgICAxLiAgVGhlIHBhdGNoIG1vZGlmaWVzIGB2ZmlvX2ZzbF9tY19tbWFwKClgIGluIGBkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNgLlxuICAgIDIuICBUaGlzIGRyaXZlciBwcm92aWRlcyBWRklPIHN1cHBvcnQgZm9yIE5YUC9GcmVlc2NhbGUgUW9ySVEgRFBBQTIgTWFuYWdlbWVudCBDb21wbGV4IChgZnNsLW1jYCkgYnVzIGRldmljZXMgZm91bmQgb24gTGF5ZXJzY2FwZSBTb0NzLlxuICAgIDMuICBJdCByZXF1aXJlcyBwaHlzaWNhbCBTb0MgaGFyZHdhcmUgKEZyZWVzY2FsZSBNQyBhcmNoaXRlY3R1cmUpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cywgYW5kIGlzIHBhcnRpY3VsYXJseSB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSAoYGFtZDY0YCkuXG4gICAgNC4gIFNpbmNlIHRoZSBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSwgZnV6emluZyBjYW5ub3QgZXhlY3V0ZSB0aGlzIGNvZGUgcGF0aC5cblxuQWxyaWdodCwgdGhhdCdzIG15IGNhbGwuIExldCdzIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkyMjcsIk91dHB1dFRva2VucyI6MTM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTEyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDRUMDg6MjA6NTEuNDMyOTYxOTM5WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ5ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHZmaW9fZnNsX21jX21tYXBgIGluIGBkcml2ZXJzL3ZmaW8vZnNsLW1jL3ZmaW9fZnNsX21jLmNgLCB3aGljaCBwcm92aWRlcyBWRklPIHN1cHBvcnQgZm9yIE5YUC9GcmVlc2NhbGUgUW9ySVEgRFBBQTIgTWFuYWdlbWVudCBDb21wbGV4IChmc2wtbWMpIGJ1cyBkZXZpY2VzLiBUaGlzIHJlcXVpcmVzIHBoeXNpY2FsIE5YUCBMYXllcnNjYXBlIFNvQyBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL0dDRSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gdGhlIHRhcmdldCBhbWQ2NCBhcmNoaXRlY3R1cmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgdmZpb19mc2xfbWNfbW1hcGAgaW4gYGRyaXZlcnMvdmZpby9mc2wtbWMvdmZpb19mc2xfbWMuY2AsIHdoaWNoIHByb3ZpZGVzIFZGSU8gc3VwcG9ydCBmb3IgTlhQL0ZyZWVzY2FsZSBRb3JJUSBEUEFBMiBNYW5hZ2VtZW50IENvbXBsZXggKGZzbC1tYykgYnVzIGRldmljZXMuIFRoaXMgcmVxdWlyZXMgcGh5c2ljYWwgTlhQIExheWVyc2NhcGUgU29DIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvR0NFIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoZSBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiB0aGUgdGFyZ2V0IGFtZDY0IGFyY2hpdGVjdHVyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA0VDA4OjIwOjUxLjQzMjk5MDUyOVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowdg5l9[1] Phase: Running StartedAt: 2026-09-04 08:21:03 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdg5l9[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-04 08:21:03 +0000 UTC FinishedAt: 2026-09-04 08:21:07 +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,}