Name: series-workflowvdcnv Phase: Failed StartedAt: 2026-09-08 19:01:58 +0000 UTC FinishedAt: 2026-09-08 19:05:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvdcnv[0] Phase: Succeeded StartedAt: 2026-09-08 19:01:58 +0000 UTC FinishedAt: 2026-09-08 19:05:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvdcnv[0].run-triage Phase: Succeeded StartedAt: 2026-09-08 19:01:58 +0000 UTC FinishedAt: 2026-09-08 19:05: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+CgkJCTx0ZD4yMDI2LzA5LzA4IDE5OjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYnJjbWZfcGNpZV9wbV9lbnRlcl9EMygpIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMsIHdoaWNoIGlzIGEgcG93ZXIgbWFuYWdlbWVudCBzdXNwZW5kL2ZyZWV6ZSBjYWxsYmFjayBmb3IgQnJvYWRjb20gRnVsbE1BQyBQQ0llIHdpcmVsZXNzIE5JQ3MuIFRoaXMgY29kZSByZXF1aXJlcyBwaHlzaWNhbCBCcm9hZGNvbSBQQ0llIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgYW5kIGlzIHRoZXJlZm9yZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE5OjAzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMjc2N2NhNDdmMWExYmY0Njk1ZDA0Njk4OGM5N2FmYTdmN2ZlNDliYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDggMTk6MDM6NDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmNcbmluZGV4IDU1ZjRkN2I5NzBmMjguLmMxYTAyOWQ4NmMwZjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jXG5AQCAtMjY1Myw4ICYjNDM7MjY1MywxMyBAQCBzdGF0aWMgaW50IGJyY21mX3BjaWVfcG1fZW50ZXJfRDMoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHRcdCAgIEJSQ01GX1BDSUVfTUJEQVRBX1RJTUVPVVQpO1xuIFx0aWYgKCFkZXZpbmZvLVx1MDAzZW1iZGF0YV9jb21wbGV0ZWQpIHtcbiBcdFx0YnJjbWZfZXJyKGJ1cywgXCYjMzQ7VGltZW91dCBvbiByZXNwb25zZSBmb3IgZW50ZXJpbmcgRDMgc3Vic3RhdGVcXG5cJiMzNDspO1xuLVx0XHRicmNtZl9idXNfY2hhbmdlX3N0YXRlKGJ1cywgQlJDTUZfQlVTX1VQKTtcbi1cdFx0cmV0dXJuIC1FSU87XG4mIzQzO1xuJiM0MztcdFx0aWYgKGRldmluZm8tXHUwMDNld293bF9lbmFibGVkKSB7XG4mIzQzO1x0XHRcdGJyY21mX2J1c19jaGFuZ2Vfc3RhdGUoYnVzLCBCUkNNRl9CVVNfVVApO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVJTztcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRicmNtZl9kYmcoUENJRSwgXCYjMzQ7Tm8gRDMgQUNLLCBjb250aW51aW5nIHRvIHBvd2VyIHRoZSBkZXZpY2Ugb2ZmXFxuXCYjMzQ7KTtcbiBcdH1cbiBcbiBcdGRldmluZm8tXHUwMDNlc3RhdGUgPSBCUkNNRk1BQ19QQ0lFX1NUQVRFX0RPV047XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTk6MDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYnJjbWZfcGNpZV9wbV9lbnRlcl9EMygpIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMsIHdoaWNoIGlzIGEgcG93ZXIgbWFuYWdlbWVudCBzdXNwZW5kL2ZyZWV6ZSBjYWxsYmFjayBmb3IgQnJvYWRjb20gRnVsbE1BQyBQQ0llIHdpcmVsZXNzIE5JQ3MuIFRoaXMgY29kZSByZXF1aXJlcyBwaHlzaWNhbCBCcm9hZGNvbSBQQ0llIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgYW5kIGlzIHRoZXJlZm9yZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjc2N2NhNDdmMWExYmY0Njk1ZDA0Njk4OGM5N2FmYTdmN2ZlNDliYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgU2VwIDggMTk6MDM6NDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYwppbmRleCA1NWY0ZDdiOTcwZjI4Li5jMWEwMjlkODZjMGY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMKQEAgLTI2NTMsOCAmIzQzOzI2NTMsMTMgQEAgc3RhdGljIGludCBicmNtZl9wY2llX3BtX2VudGVyX0QzKHN0cnVjdCBkZXZpY2UgKmRldikKIAkJCSAgIEJSQ01GX1BDSUVfTUJEQVRBX1RJTUVPVVQpOwogCWlmICghZGV2aW5mby0mZ3Q7bWJkYXRhX2NvbXBsZXRlZCkgewogCQlicmNtZl9lcnIoYnVzLCAmIzM0O1RpbWVvdXQgb24gcmVzcG9uc2UgZm9yIGVudGVyaW5nIEQzIHN1YnN0YXRlXG4mIzM0Oyk7Ci0JCWJyY21mX2J1c19jaGFuZ2Vfc3RhdGUoYnVzLCBCUkNNRl9CVVNfVVApOwotCQlyZXR1cm4gLUVJTzsKJiM0MzsKJiM0MzsJCWlmIChkZXZpbmZvLSZndDt3b3dsX2VuYWJsZWQpIHsKJiM0MzsJCQlicmNtZl9idXNfY2hhbmdlX3N0YXRlKGJ1cywgQlJDTUZfQlVTX1VQKTsKJiM0MzsJCQlyZXR1cm4gLUVJTzsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWJyY21mX2RiZyhQQ0lFLCAmIzM0O05vIEQzIEFDSywgY29udGludWluZyB0byBwb3dlciB0aGUgZGV2aWNlIG9mZlxuJiMzNDspOwogCX0KIAogCWRldmluZm8tJmd0O3N0YXRlID0gQlJDTUZNQUNfUENJRV9TVEFURV9ET1dOOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxOTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDQ3CgkJCQkJCQlvdXRwdXQ6IDU1CgkJCQkJCQl0aG91Z2h0czogODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjoKCioqRnV6emluZyBGZWFzaWJpbGl0eSBBc3Nlc3NtZW50OiBicmNtZl9wY2llX3BtX2VudGVyX0QzKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaCBhbmQgZmlndXJlIG91dCBpZiBpdCYjMzk7cyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBUaGUgdGFyZ2V0IGlzIHRoZSBgYnJjbWZfcGNpZV9wbV9lbnRlcl9EM2AgZnVuY3Rpb24gd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jYC4gVGhhdCYjMzk7cyBhIFBDSSBFeHByZXNzIGRyaXZlciBmdW5jdGlvbiByZWxhdGVkIHRvIHBvd2VyIG1hbmFnZW1lbnQgZm9yIHRoZSBCcm9hZGNvbSB3aXJlbGVzcyBpbnRlcmZhY2UuIE15IGZpcnN0IHN0ZXAgaXMgdG8gcXVpY2tseSBnZXQgY29udGV4dC4gSSYjMzk7bGwgdXNlIG15IGVzdGFibGlzaGVkIHdvcmtmbG93IC0gYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgIHRvIGdldCB0aGUgbGF5IG9mIHRoZSBsYW5kLCB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlLCBhbmQgc2VlIGhvdyBgYnJjbWZfcGNpZV9wbV9lbnRlcl9EM2AgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgcG90ZW50aWFsIGlucHV0cywgY29udHJvbCBmbG93IHRoYXQgY291bGQgYmUgbWFuaXB1bGF0ZWQsIGFuZCBhbnl0aGluZyB0aGF0IG1pZ2h0IGJlIHByb25lIHRvIGVkZ2UtY2FzZSBoYW5kbGluZy4gQmFzaWNhbGx5LCBteSBpbml0aWFsIGdvYWwgaXMgdG8gYnVpbGQgYW4gdW5kZXJzdGFuZGluZyBmb3Igd2hldGhlciB0aGlzIGFyZWEgaXMgbGlrZWx5IHRvIGhhdmUgc3VidGxlIGludGVyYWN0aW9ucyBiZXR3ZWVuIFBDSSwgcG93ZXIgbWFuYWdlbWVudCwgYW5kIHdpcmVsZXNzIGRldmljZSBzdGF0ZXMgdGhhdCBjb3VsZCBsZWFkIHRvIGV4cGxvaXRhYmxlIGJ1Z3MuIEnigJlsbCBtYWtlIGEgY2FsbCBvbiBmdXp6aW5nIHRoaXMgYXJlYSBvciBtb3Zpbmcgb24gdG8gYW5vdGhlciBwb3RlbnRpYWwgdGFyZ2V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE5OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI2NDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjY0MDpcdFxuMjY0MTpcdFx0YnJjbWZfZGJnKFBDSUUsIFwmIzM0O0VudGVyXFxuXCYjMzQ7KTtcbjI2NDI6XHRcbjI2NDM6XHRcdGJ1cyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xuMjY0NDpcdFx0ZGV2aW5mbyA9IGJ1cy1cdTAwM2VidXNfcHJpdi5wY2llLVx1MDAzZWRldmluZm87XG4yNjQ1Olx0XG4yNjQ2Olx0XHRicmNtZl9wY2llX2Z3Y29uX3RpbWVyKGRldmluZm8sIGZhbHNlKTtcbjI2NDc6XHRcdGJyY21mX2J1c19jaGFuZ2Vfc3RhdGUoYnVzLCBCUkNNRl9CVVNfRE9XTik7XG4yNjQ4Olx0XG4yNjQ5Olx0XHRkZXZpbmZvLVx1MDAzZW1iZGF0YV9jb21wbGV0ZWQgPSBmYWxzZTtcbjI2NTA6XHRcdGJyY21mX3BjaWVfc2VuZF9tYl9kYXRhKGRldmluZm8sIEJSQ01GX0gyRF9IT1NUX0QzX0lORk9STSk7XG4yNjUxOlx0XG4yNjUyOlx0XHR3YWl0X2V2ZW50X3RpbWVvdXQoZGV2aW5mby1cdTAwM2VtYmRhdGFfcmVzcF93YWl0LCBkZXZpbmZvLVx1MDAzZW1iZGF0YV9jb21wbGV0ZWQsXG4yNjUzOlx0XHRcdFx0ICAgQlJDTUZfUENJRV9NQkRBVEFfVElNRU9VVCk7XG4yNjU0Olx0XHRpZiAoIWRldmluZm8tXHUwMDNlbWJkYXRhX2NvbXBsZXRlZCkge1xuMjY1NTpcdFx0XHRicmNtZl9lcnIoYnVzLCBcJiMzNDtUaW1lb3V0IG9uIHJlc3BvbnNlIGZvciBlbnRlcmluZyBEMyBzdWJzdGF0ZVxcblwmIzM0Oyk7XG4yNjU2Olx0XG4yNjU3Olx0XHRcdGlmIChkZXZpbmZvLVx1MDAzZXdvd2xfZW5hYmxlZCkge1xuMjY1ODpcdFx0XHRcdGJyY21mX2J1c19jaGFuZ2Vfc3RhdGUoYnVzLCBCUkNNRl9CVVNfVVApO1xuMjY1OTpcdFx0XHRcdHJldHVybiAtRUlPO1xuMjY2MDpcdFx0XHR9XG4yNjYxOlx0XG4yNjYyOlx0XHRcdGJyY21mX2RiZyhQQ0lFLCBcJiMzNDtObyBEMyBBQ0ssIGNvbnRpbnVpbmcgdG8gcG93ZXIgdGhlIGRldmljZSBvZmZcXG5cJiMzNDspO1xuMjY2MzpcdFx0fVxuMjY2NDpcdFxuMjY2NTpcdFx0ZGV2aW5mby1cdTAwM2VzdGF0ZSA9IEJSQ01GTUFDX1BDSUVfU1RBVEVfRE9XTjtcbjI2NjY6XHRcbjI2Njc6XHRcdHJldHVybiAwO1xuMjY2ODpcdH1cbjI2Njk6XHRcbjI2NzA6XHRcbjI2NzE6XHRzdGF0aWMgaW50IGJyY21mX3BjaWVfcG1fbGVhdmVfRDMoc3RydWN0IGRldmljZSAqZGV2KVxuMjY3MjpcdHtcbjI2NzM6XHRcdHN0cnVjdCBicmNtZl9wY2llZGV2X2luZm8gKmRldmluZm87XG4yNjc0Olx0XHRzdHJ1Y3QgYnJjbWZfYnVzICpidXM7XG4yNjc1Olx0XHRzdHJ1Y3QgcGNpX2RldiAqcGRldjtcbjI2NzY6XHRcdGludCBlcnI7XG4yNjc3Olx0XG4yNjc4Olx0XHRicmNtZl9kYmcoUENJRSwgXCYjMzQ7RW50ZXJcXG5cJiMzNDspO1xuMjY3OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE5OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMDUKCQkJCQkJCW91dHB1dDogNTUKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYnJjbWZfcGNpZV9wbV9lbnRlcl9EMyBDYWxscyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IGFyb3VuZCBgYnJjbWZfcGNpZV9wbV9lbnRlcl9EM2AuIEkmIzM5O20gc3RhcnRpbmcgd2l0aCB0aGUgb2J2aW91czogd2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBhY3R1YWxseSBpbnZva2VkIHdpdGhpbiB0aGUgYnJvYWRlciBkcml2ZXIgY29udGV4dD8gSSYjMzk7bSB0aGlua2luZyBJIG5lZWQgdG8gZmluZCBhbGwgdGhlIGNhbGwgc2l0ZXMgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBlbnRyeSBwb2ludHMgYW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoaXMgcG93ZXIgbWFuYWdlbWVudCByb3V0aW5lIGlzIHRyaWdnZXJlZC4gSSYjMzk7bSBhc3N1bWluZyB0aGF0IGl0IGlzIGxpbmtlZCB0byBwb3dlciBtYW5hZ2VtZW50LCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byBELXN0YXRlcyB0byBiZSBzdXJlLiBUaW1lIHRvIGZpcmUgdXAgdGhlIHRvb2xzIGFuZCB0cmFjZSB0aGUgcmVmZXJlbmNlcy4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb2RlIGhhcyB0byBzYXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTk6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfcGNpZV9wbV9lbnRlcl9EMyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNTgzPWJyY21mX3BjaWVfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjYzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6MjYzNjpzdGF0aWMgaW50IGJyY21mX3BjaWVfcG1fZW50ZXJfRDMoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNjM3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTI3MTM9c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGJyY21mX3BjaWVkcnZyX3BtID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNzE0Olx0LnN1c3BlbmQgPSBicmNtZl9wY2llX3BtX2VudGVyX0QzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNzE1LVx0LnJlc3VtZSA9IGJyY21mX3BjaWVfcG1fbGVhdmVfRDMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI3MTY6XHQuZnJlZXplID0gYnJjbWZfcGNpZV9wbV9lbnRlcl9EMyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjcxNy1cdC5yZXN0b3JlID0gYnJjbWZfcGNpZV9wbV9sZWF2ZV9EMyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxOTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Nzk1CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogNDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBgYnJjbWZfcGNpZV9wbV9lbnRlcl9EM2AgRnVuY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBicmNtZl9wY2llX3BtX2VudGVyX0QzYCwgc3BlY2lmaWNhbGx5IGluIGBicmNtZm1hYy9wY2llLmNgIGZvciB0aG9zZSBCcm9hZGNvbSBQQ0llIHdpcmVsZXNzIGNhcmRzLCB0aGUgYEJSQ01GTUFDX1BDSUVgIG9uZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgYSBQQ0llIGhhcmR3YXJlIGRyaXZlci4KClRoZSBuZXh0IHF1ZXN0aW9uIEkgaGF2ZSBpcywgYXJlIHRoZXNlIEJyb2FkY29tIFBDSWUgd2lyZWxlc3MgY2FyZHMgZXZlbiBlbXVsYXRlZCBpbiB0aGUgc3RhbmRhcmQgUUVNVSBvciBzeXprYWxsZXIgZW52aXJvbm1lbnRzPyBJIHJlbWVtYmVyIHNlZWluZyBzb21ldGhpbmcgYWJvdXQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCBzbyBsZXQgbWUgcXVpY2tseSByZWZlciBiYWNrIHRvIFNlY3Rpb24gMiBvZiB0aGUgaW5zdHJ1Y3Rpb25zLiBBaGEsIHRoZXJlIGl0IGlzOiAmIzM0O1ZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzLi4uIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDsKCkFscmlnaHQsIGxldCYjMzk7cyBjb25maXJtIHdoZXRoZXIgYGJyY21mbWFjYCBoYXMgc3VwcG9ydCBmb3IgVVNCLCBTRElPLCBvciBQQ0llLiBBIHF1aWNrIGdsYW5jZSB0ZWxscyBtZSB0aGF0IGBicmNtZm1hY2AgY292ZXJzIFVTQiwgU0RJTywgYW5kIFBDSWUuIFRoYXQmIzM5O3MgZ29vZC4gTm93LCBzcGVjaWZpY2FsbHksIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jYCBpcyB0aGUgUENJL1BDSWUgYnVzIGRyaXZlciBmb3IgQnJvYWRjb20mIzM5O3MgRk1BQyBjaGlwcywgbGlrZSB0aGUgQkNNNDM2MDIgb3IgQkNNNDM1MC4gTXkgcmVhZGluZyB0ZWxscyBtZSB0aGlzIFBDSWUgaGFyZHdhcmUgd2lsbCByZXF1aXJlIGFjdHVhbCBCcm9hZGNvbSBQQ0llIGhhcmR3YXJlIGFuZCB3b24mIzM5O3QgYmUgZW11bGF0ZWQgaW4gUUVNVS4gVGhhdCBpcyBwcm9ibGVtYXRpYyBmb3IgbXkgdXNlIGNhc2UuCgpBbmQsIG9mIGNvdXJzZSwgdGhlIGBicmNtZl9wY2llX3BtX2VudGVyX0QzYCBmdW5jdGlvbiBpcyBhIHN1c3BlbmQvZnJlZXplIFBNIGNhbGxiYWNrIHNwZWNpZmljYWxseSBmb3IgdGhlIFBDSWUgZHJpdmVyLCB0aGUgYGJyY21mX3BjaWVkcnZyX3BtYC4KCk5vdywganVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGdsYW5jZSBhdCB0aGUgYEtjb25maWdgIGZvciBgQlJDTUZNQUNfUENJRWAgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTk6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlJDTUZNQUNfUENJRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc9Mjk9Y29uZmlnIEJSQ01GTUFDX1VTQlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6NDA6Y29uZmlnIEJSQ01GTUFDX1BDSUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTQxLVx0Ym9vbCBcJiMzNDtQQ0lFIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvTWFrZWZpbGU9Mzk9YnJjbWZtYWMtJChDT05GSUdfQlJDTUZNQUNfVVNCKSAmIzQzOz0gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9NYWtlZmlsZS00MC1cdFx0dXNiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9NYWtlZmlsZTo0MTpicmNtZm1hYy0kKENPTkZJR19CUkNNRk1BQ19QQ0lFKSAmIzQzOz0gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9NYWtlZmlsZS00Mi1cdFx0cGNpZS5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oPTMzNz1zdGF0aWMgaW5saW5lIGludCBicmNtZl91c2JfcmVnaXN0ZXIodm9pZCkgeyByZXR1cm4gMDsgfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaC0zMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg6MzQwOiNpZmRlZiBDT05GSUdfQlJDTUZNQUNfUENJRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTM0MS12b2lkIGJyY21mX3BjaWVfZXhpdCh2b2lkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTQ3PWVudW0gYnJjbWZfcGNpZV9zdGF0ZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjQ4Olx0QlJDTUZNQUNfUENJRV9TVEFURV9ET1dOLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzo0OTpcdEJSQ01GTUFDX1BDSUVfU1RBVEVfVVBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtNTAtfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTk0MT1zdGF0aWMgaXJxcmV0dXJuX3QgYnJjbWZfcGNpZV9pc3JfdGhyZWFkKGludCBpcnEsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTk1NC1cdFx0aWYgKHN0YXR1cyBcdTAwMjYgZGV2aW5mby1cdTAwM2VyZWdpbmZvLVx1MDAzZWludF9kMmhfZGIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6OTU1Olx0XHRcdGlmIChkZXZpbmZvLVx1MDAzZXN0YXRlID09IEJSQ01GTUFDX1BDSUVfU1RBVEVfVVApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTk1Ni1cdFx0XHRcdGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtOTYwLVx0YnJjbWZfcGNpZV9idXNfY29uc29sZV9yZWFkKGRldmluZm8sIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6OTYxOlx0aWYgKGRldmluZm8tXHUwMDNlc3RhdGUgPT0gQlJDTUZNQUNfUENJRV9TVEFURV9VUClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtOTYyLVx0XHRicmNtZl9wY2llX2ludHJfZW5hYmxlKGRldmluZm8pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MTAyMD1zdGF0aWMgaW50IGJyY21mX3BjaWVfcmluZ19tYl93cml0ZV9ycHRyKHZvaWQgKmN0eClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTEwMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjEwMjY6XHRpZiAoZGV2aW5mby1cdTAwM2VzdGF0ZSAhPSBCUkNNRk1BQ19QQ0lFX1NUQVRFX1VQKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0xMDI3LVx0XHRyZXR1cm4gLUVJTztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTEwMzg9c3RhdGljIGludCBicmNtZl9wY2llX3JpbmdfbWJfd3JpdGVfd3B0cih2b2lkICpjdHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0xMDQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoxMDQ0Olx0aWYgKGRldmluZm8tXHUwMDNlc3RhdGUgIT0gQlJDTUZNQUNfUENJRV9TVEFURV9VUClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMTA0NS1cdFx0cmV0dXJuIC1FSU87XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0xMDU2PXN0YXRpYyBpbnQgYnJjbWZfcGNpZV9yaW5nX21iX3JpbmdfYmVsbCh2b2lkICpjdHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0xMDYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoxMDYxOlx0aWYgKGRldmluZm8tXHUwMDNlc3RhdGUgIT0gQlJDTUZNQUNfUENJRV9TVEFURV9VUClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMTA2Mi1cdFx0cmV0dXJuIC1FSU87XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0xMDcyPXN0YXRpYyBpbnQgYnJjbWZfcGNpZV9yaW5nX21iX3VwZGF0ZV9ycHRyKHZvaWQgKmN0eClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTEwNzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjEwNzg6XHRpZiAoZGV2aW5mby1cdTAwM2VzdGF0ZSAhPSBCUkNNRk1BQ19QQ0lFX1NUQVRFX1VQKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0xMDc5LVx0XHRyZXR1cm4gLUVJTztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTEwOTA9c3RhdGljIGludCBicmNtZl9wY2llX3JpbmdfbWJfdXBkYXRlX3dwdHIodm9pZCAqY3R4KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMTA5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6MTA5NjpcdGlmIChkZXZpbmZvLVx1MDAzZXN0YXRlICE9IEJSQ01GTUFDX1BDSUVfU1RBVEVfVVApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTEwOTctXHRcdHJldHVybiAtRUlPO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MjEzOT1zdGF0aWMgdm9pZCBicmNtZl9wY2llX3NldHVwKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IHJldCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTIxODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjIxODY6XHRkZXZpbmZvLVx1MDAzZXN0YXRlID0gQlJDTUZNQUNfUENJRV9TVEFURV9VUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjE4Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTIzMTA9YnJjbWZfcGNpZV9md2Nvbl90aW1lcihzdHJ1Y3QgYnJjbWZfcGNpZWRldl9pbmZvICpkZXZpbmZvLCBib29sIGFjdGl2ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTIzMjAtXHQvKiBkb24mIzM5O3Qgc3RhcnQgdGhlIHRpbWVyICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjIzMjE6XHRpZiAoZGV2aW5mby1cdTAwM2VzdGF0ZSAhPSBCUkNNRk1BQ19QQ0lFX1NUQVRFX1VQIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTIzMjItXHQgICAgIWRldmluZm8tXHUwMDNlY29uc29sZV9pbnRlcnZhbCB8fCAhQlJDTUZfRldDT05fT04oKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTI1ODM9YnJjbWZfcGNpZV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNTk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNTk4Olx0ZGV2aW5mby1cdTAwM2VzdGF0ZSA9IEJSQ01GTUFDX1BDSUVfU1RBVEVfRE9XTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjU5OS1cdGlmIChkZXZpbmZvLVx1MDAzZWNpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MjYzNj1zdGF0aWMgaW50IGJyY21mX3BjaWVfcG1fZW50ZXJfRDMoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjY2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6MjY2NTpcdGRldmluZm8tXHUwMDNlc3RhdGUgPSBCUkNNRk1BQ19QQ0lFX1NUQVRFX0RPV047XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI2NjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNjcxPXN0YXRpYyBpbnQgYnJjbWZfcGNpZV9wbV9sZWF2ZV9EMyhzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNjg5LVx0XHRicmNtZl9kYmcoUENJRSwgXCYjMzQ7SG90IHJlc3VtZSwgY29udGludWUuLi4uXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6MjY5MDpcdFx0ZGV2aW5mby1cdTAwM2VzdGF0ZSA9IEJSQ01GTUFDX1BDSUVfU1RBVEVfVVA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI2OTEtXHRcdGJyY21mX3BjaWVfc2VsZWN0X2NvcmUoZGV2aW5mbywgQkNNQV9DT1JFX1BDSUUyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5oLTQtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5oOjU6I2lmbmRlZiBCUkNNRk1BQ19QQ0lFX0hcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmg6NjojZGVmaW5lIEJSQ01GTUFDX1BDSUVfSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuaC03LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmg9OT1zdHJ1Y3QgYnJjbWZfcGNpZWRldiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuaC0xMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmg6MTQ6I2VuZGlmIC8qIEJSQ01GTUFDX1BDSUVfSCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE5OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4MzgKCQkJCQkJCW91dHB1dDogMTI5CgkJCQkJCQl0aG91Z2h0czogNDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIFN0cnVjdHVyYWwgVW5yZWFjaGFiaWxpdHkgaW4gRnV6emluZyBDb250ZXh0KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSB0aGUgdW5yZWFjaGFiaWxpdHkgb2YgdGhpcyBjb2RlIHBhdGggZHVyaW5nIGZ1enppbmcuIFRoZSBrZXkgaGVyZSBpcyB0byBkZXRlcm1pbmUgaWYgdGhlIHJlbGV2YW50IGhhcmR3YXJlIGlzIHN0cnVjdHVyYWxseSB1bmF2YWlsYWJsZSBpbiB0eXBpY2FsIGZ1enppbmcgZW52aXJvbm1lbnRzLCBuYW1lbHkgUUVNVS4KCkkmIzM5O20gbG9va2luZyBhdCB0aGUgY3JpdGVyaWE6IHRoaW5ncyB0aGF0IHJlcXVpcmUgZGVkaWNhdGVkIGhhcmR3YXJlIG5vdCBlbXVsYXRlZC4gSXQmIzM5O3MgY2xlYXIgdGhhdCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBHUFUgZHJpdmVycyAobGlrZSBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFuZCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDIG9yIFBDSWUgY2FyZHMgd291bGQgYmUgaW5hY2Nlc3NpYmxlLiBBbHNvLCBleGVjdXRpb24gcGF0aHMgdHJpZ2dlcmVkIG9ubHkgYnkgcGh5c2ljYWwgaG90LXVucGx1ZyBvciBtYW51YWwgZHJpdmVyIHVuYmluZGluZyBhcmUgb3V0LgoKTm93LCB0aGUgc3BlY2lmaWMgZnVuY3Rpb24gaW4gcXVlc3Rpb24gaXMgYGJyY21mX3BjaWVfcG1fZW50ZXJfRDNgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jYC4gVGhpcyBpcyBhIHBvd2VyIG1hbmFnZW1lbnQgY2FsbGJhY2sg4oCTIHNwZWNpZmljYWxseSBhIHN1c3BlbmQvZnJlZXplIGhhbmRsZXIgd2l0aGluIGBzdHJ1Y3QgZGV2X3BtX29wcyBicmNtZl9wY2llZHJ2cl9wbWAg4oCTIGRlc2lnbmVkIGZvciBCcm9hZGNvbSBGdWxsTUFDIFBDSWUgd2lyZWxlc3MgZGV2aWNlcy4gSSYjMzk7bSBmYW1pbGlhciB3aXRoIHRoZXNlOyB0aGVzZSBhcmUgcGh5c2ljYWwgQnJvYWRjb20gUENJZSBoYXJkd2FyZSBkZXZpY2VzLCBsaWtlIHRoZSBCQ000MzYwMiwgQkNNNDM1MCwgYW5kIEJDTTQzNjUgc2VyaWVzLiBUaGUgY3J1Y2lhbCBwb2ludCBpcyB0aGF0IHRoaXMga2luZCBvZiBoYXJkd2FyZSAqaXNuJiMzOTt0KiBlbXVsYXRlZCBpbiB0aGUgc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzIHVzZWQgZm9yIGZ1enppbmcgYnkgc3l6a2FsbGVyLgoKVGhlcmVmb3JlLCBzaW5jZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhhcmR3YXJlIGRlcGVuZGVuY2llcyB0aGF0IFFFTVUgZG9lc24mIzM5O3Qgc2F0aXNmeSwgdGhpcyBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIGRvdWJsZS1jaGVjayB0byBjb25maXJtLiBJJiMzOTtsbCBzdW1tYXJpemUgdGhlIGRldGFpbHMgYW5kIHJlcXVpcmVtZW50cyBmb3Igc2V0LXJlc3VsdHMuCgoxLiAgYFdvcnRoRnV6emluZzogZmFsc2VgIGlzIGNvcnJlY3QsIGJhc2VkIG9uIHRoZSBhYm92ZS4KMi4gIGBGb2N1c1N5bWJvbHM6IFtdYCBtYWtlcyBzZW5zZS4gTm8gc3BlY2lmaWMgc3ltYm9scyBhcmUgcmVsZXZhbnQsIGFzIHRoZSBpc3N1ZSBpcyB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgcmVxdWlyZW1lbnRzLCBub3QgYSBzcGVjaWZpYyBmdW5jdGlvbiB3aXRoaW4gdGhlIG1vZHVsZS4KMy4gIGBFbmFibGVDb25maWdzOiBbXWAg4oCTIGFnYWluLCB0aGlzIGFsaWducy4gTm8gc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgYXJlIG5lZWRlZCBmb3IgdGhpcyB0byBiZSB1bnJlYWNoYWJsZS4KNC4gIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6IHRoZSBwYXRjaCBtb2RpZmllcyBhIHBvd2VyIG1hbmFnZW1lbnQgZnVuY3Rpb24gZm9yIEJyb2FkY29tIFBDSWUgd2lyZWxlc3MgZGV2aWNlcyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuCgpFdmVyeXRoaW5nIGNoZWNrcyBvdXQuIEkmIzM5O20gY29uZmlkZW50IGluIG15IGFuYWx5c2lzLiBJJiMzOTtsbCBwcm9jZWVkIHdpdGggY2FsbGluZyBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxOTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGJyY21mX3BjaWVfcG1fZW50ZXJfRDMoKSBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLCB3aGljaCBpcyBhIHBvd2VyIG1hbmFnZW1lbnQgc3VzcGVuZC9mcmVlemUgY2FsbGJhY2sgZm9yIEJyb2FkY29tIEZ1bGxNQUMgUENJZSB3aXJlbGVzcyBOSUNzLiBUaGlzIGNvZGUgcmVxdWlyZXMgcGh5c2ljYWwgQnJvYWRjb20gUENJZSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIGFuZCBpcyB0aGVyZWZvcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYnJjbWZfcGNpZV9wbV9lbnRlcl9EMygpIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMsIHdoaWNoIGlzIGEgcG93ZXIgbWFuYWdlbWVudCBzdXNwZW5kL2ZyZWV6ZSBjYWxsYmFjayBmb3IgQnJvYWRjb20gRnVsbE1BQyBQQ0llIHdpcmVsZXNzIE5JQ3MuIFRoaXMgY29kZSByZXF1aXJlcyBwaHlzaWNhbCBCcm9hZGNvbSBQQ0llIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgYW5kIGlzIHRoZXJlZm9yZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxOTowNDwvdGQ+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+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDhUMTk6MDM6NDYuMjc0NjQ4NDY5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjYwMDgwMzA5NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBicmNtZl9wY2llX3BtX2VudGVyX0QzKCkgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYywgd2hpY2ggaXMgYSBwb3dlciBtYW5hZ2VtZW50IHN1c3BlbmQvZnJlZXplIGNhbGxiYWNrIGZvciBCcm9hZGNvbSBGdWxsTUFDIFBDSWUgd2lyZWxlc3MgTklDcy4gVGhpcyBjb2RlIHJlcXVpcmVzIHBoeXNpY2FsIEJyb2FkY29tIFBDSWUgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBhbmQgaXMgdGhlcmVmb3JlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE5OjAzOjQ2LjI3NDY1NDU0OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI5NTc2MTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjc2N2NhNDdmMWExYmY0Njk1ZDA0Njk4OGM5N2FmYTdmN2ZlNDliYVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIFNlcCA4IDE5OjAzOjQ1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jXFxuaW5kZXggNTVmNGQ3Yjk3MGYyOC4uYzFhMDI5ZDg2YzBmOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuY1xcbkBAIC0yNjUzLDggKzI2NTMsMTMgQEAgc3RhdGljIGludCBicmNtZl9wY2llX3BtX2VudGVyX0QzKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0XFx0XFx0ICAgQlJDTUZfUENJRV9NQkRBVEFfVElNRU9VVCk7XFxuIFxcdGlmICghZGV2aW5mby1cXHUwMDNlbWJkYXRhX2NvbXBsZXRlZCkge1xcbiBcXHRcXHRicmNtZl9lcnIoYnVzLCBcXFwiVGltZW91dCBvbiByZXNwb25zZSBmb3IgZW50ZXJpbmcgRDMgc3Vic3RhdGVcXFxcblxcXCIpO1xcbi1cXHRcXHRicmNtZl9idXNfY2hhbmdlX3N0YXRlKGJ1cywgQlJDTUZfQlVTX1VQKTtcXG4tXFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcbitcXHRcXHRpZiAoZGV2aW5mby1cXHUwMDNld293bF9lbmFibGVkKSB7XFxuK1xcdFxcdFxcdGJyY21mX2J1c19jaGFuZ2Vfc3RhdGUoYnVzLCBCUkNNRl9CVVNfVVApO1xcbitcXHRcXHRcXHRyZXR1cm4gLUVJTztcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0YnJjbWZfZGJnKFBDSUUsIFxcXCJObyBEMyBBQ0ssIGNvbnRpbnVpbmcgdG8gcG93ZXIgdGhlIGRldmljZSBvZmZcXFxcblxcXCIpO1xcbiBcXHR9XFxuIFxcbiBcXHRkZXZpbmZvLVxcdTAwM2VzdGF0ZSA9IEJSQ01GTUFDX1BDSUVfU1RBVEVfRE9XTjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTk6MDM6NDYuODA1MTgyNzIzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo2NTQ3NzQ3OTQ5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYnJjbWZfcGNpZV9wbV9lbnRlcl9EMygpIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMsIHdoaWNoIGlzIGEgcG93ZXIgbWFuYWdlbWVudCBzdXNwZW5kL2ZyZWV6ZSBjYWxsYmFjayBmb3IgQnJvYWRjb20gRnVsbE1BQyBQQ0llIHdpcmVsZXNzIE5JQ3MuIFRoaXMgY29kZSByZXF1aXJlcyBwaHlzaWNhbCBCcm9hZGNvbSBQQ0llIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgYW5kIGlzIHRoZXJlZm9yZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDI3NjdjYTQ3ZjFhMWJmNDY5NWQwNDY5ODhjOTdhZmE3ZjdmZTQ5YmFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDE5OjAzOjQ1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmNcbmluZGV4IDU1ZjRkN2I5NzBmMjguLmMxYTAyOWQ4NmMwZjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jXG5AQCAtMjY1Myw4ICsyNjUzLDEzIEBAIHN0YXRpYyBpbnQgYnJjbWZfcGNpZV9wbV9lbnRlcl9EMyhzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRcdFx0ICAgQlJDTUZfUENJRV9NQkRBVEFfVElNRU9VVCk7XG4gXHRpZiAoIWRldmluZm8tXHUwMDNlbWJkYXRhX2NvbXBsZXRlZCkge1xuIFx0XHRicmNtZl9lcnIoYnVzLCBcIlRpbWVvdXQgb24gcmVzcG9uc2UgZm9yIGVudGVyaW5nIEQzIHN1YnN0YXRlXFxuXCIpO1xuLVx0XHRicmNtZl9idXNfY2hhbmdlX3N0YXRlKGJ1cywgQlJDTUZfQlVTX1VQKTtcbi1cdFx0cmV0dXJuIC1FSU87XG4rXG4rXHRcdGlmIChkZXZpbmZvLVx1MDAzZXdvd2xfZW5hYmxlZCkge1xuK1x0XHRcdGJyY21mX2J1c19jaGFuZ2Vfc3RhdGUoYnVzLCBCUkNNRl9CVVNfVVApO1xuK1x0XHRcdHJldHVybiAtRUlPO1xuK1x0XHR9XG4rXG4rXHRcdGJyY21mX2RiZyhQQ0lFLCBcIk5vIEQzIEFDSywgY29udGludWluZyB0byBwb3dlciB0aGUgZGV2aWNlIG9mZlxcblwiKTtcbiBcdH1cbiBcbiBcdGRldmluZm8tXHUwMDNlc3RhdGUgPSBCUkNNRk1BQ19QQ0lFX1NUQVRFX0RPV047XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxOTowMzo0Ni44MDUxODQyNjNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MjEzMTUzMTQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246XG5cbioqRnV6emluZyBGZWFzaWJpbGl0eSBBc3Nlc3NtZW50OiBicmNtZl9wY2llX3BtX2VudGVyX0QzKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIGZpZ3VyZSBvdXQgaWYgaXQncyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBUaGUgdGFyZ2V0IGlzIHRoZSBgYnJjbWZfcGNpZV9wbV9lbnRlcl9EM2AgZnVuY3Rpb24gd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jYC4gVGhhdCdzIGEgUENJIEV4cHJlc3MgZHJpdmVyIGZ1bmN0aW9uIHJlbGF0ZWQgdG8gcG93ZXIgbWFuYWdlbWVudCBmb3IgdGhlIEJyb2FkY29tIHdpcmVsZXNzIGludGVyZmFjZS4gTXkgZmlyc3Qgc3RlcCBpcyB0byBxdWlja2x5IGdldCBjb250ZXh0LiBJJ2xsIHVzZSBteSBlc3RhYmxpc2hlZCB3b3JrZmxvdyAtIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBnZXQgdGhlIGxheSBvZiB0aGUgbGFuZCwgdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlLCBhbmQgc2VlIGhvdyBgYnJjbWZfcGNpZV9wbV9lbnRlcl9EM2AgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gSSdsbCBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgaW5wdXRzLCBjb250cm9sIGZsb3cgdGhhdCBjb3VsZCBiZSBtYW5pcHVsYXRlZCwgYW5kIGFueXRoaW5nIHRoYXQgbWlnaHQgYmUgcHJvbmUgdG8gZWRnZS1jYXNlIGhhbmRsaW5nLiBCYXNpY2FsbHksIG15IGluaXRpYWwgZ29hbCBpcyB0byBidWlsZCBhbiB1bmRlcnN0YW5kaW5nIGZvciB3aGV0aGVyIHRoaXMgYXJlYSBpcyBsaWtlbHkgdG8gaGF2ZSBzdWJ0bGUgaW50ZXJhY3Rpb25zIGJldHdlZW4gUENJLCBwb3dlciBtYW5hZ2VtZW50LCBhbmQgd2lyZWxlc3MgZGV2aWNlIHN0YXRlcyB0aGF0IGNvdWxkIGxlYWQgdG8gZXhwbG9pdGFibGUgYnVncy4gSeKAmWxsIG1ha2UgYSBjYWxsIG9uIGZ1enppbmcgdGhpcyBhcmVhIG9yIG1vdmluZyBvbiB0byBhbm90aGVyIHBvdGVudGlhbCB0YXJnZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNDcsIk91dHB1dFRva2VucyI6NTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE5OjA0OjI4LjkzNjcxODg1NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NDY2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI2NDAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI2NDA6XFx0XFxuMjY0MTpcXHRcXHRicmNtZl9kYmcoUENJRSwgXFxcIkVudGVyXFxcXG5cXFwiKTtcXG4yNjQyOlxcdFxcbjI2NDM6XFx0XFx0YnVzID0gZGV2X2dldF9kcnZkYXRhKGRldik7XFxuMjY0NDpcXHRcXHRkZXZpbmZvID0gYnVzLVxcdTAwM2VidXNfcHJpdi5wY2llLVxcdTAwM2VkZXZpbmZvO1xcbjI2NDU6XFx0XFxuMjY0NjpcXHRcXHRicmNtZl9wY2llX2Z3Y29uX3RpbWVyKGRldmluZm8sIGZhbHNlKTtcXG4yNjQ3OlxcdFxcdGJyY21mX2J1c19jaGFuZ2Vfc3RhdGUoYnVzLCBCUkNNRl9CVVNfRE9XTik7XFxuMjY0ODpcXHRcXG4yNjQ5OlxcdFxcdGRldmluZm8tXFx1MDAzZW1iZGF0YV9jb21wbGV0ZWQgPSBmYWxzZTtcXG4yNjUwOlxcdFxcdGJyY21mX3BjaWVfc2VuZF9tYl9kYXRhKGRldmluZm8sIEJSQ01GX0gyRF9IT1NUX0QzX0lORk9STSk7XFxuMjY1MTpcXHRcXG4yNjUyOlxcdFxcdHdhaXRfZXZlbnRfdGltZW91dChkZXZpbmZvLVxcdTAwM2VtYmRhdGFfcmVzcF93YWl0LCBkZXZpbmZvLVxcdTAwM2VtYmRhdGFfY29tcGxldGVkLFxcbjI2NTM6XFx0XFx0XFx0XFx0ICAgQlJDTUZfUENJRV9NQkRBVEFfVElNRU9VVCk7XFxuMjY1NDpcXHRcXHRpZiAoIWRldmluZm8tXFx1MDAzZW1iZGF0YV9jb21wbGV0ZWQpIHtcXG4yNjU1OlxcdFxcdFxcdGJyY21mX2VycihidXMsIFxcXCJUaW1lb3V0IG9uIHJlc3BvbnNlIGZvciBlbnRlcmluZyBEMyBzdWJzdGF0ZVxcXFxuXFxcIik7XFxuMjY1NjpcXHRcXG4yNjU3OlxcdFxcdFxcdGlmIChkZXZpbmZvLVxcdTAwM2V3b3dsX2VuYWJsZWQpIHtcXG4yNjU4OlxcdFxcdFxcdFxcdGJyY21mX2J1c19jaGFuZ2Vfc3RhdGUoYnVzLCBCUkNNRl9CVVNfVVApO1xcbjI2NTk6XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuMjY2MDpcXHRcXHRcXHR9XFxuMjY2MTpcXHRcXG4yNjYyOlxcdFxcdFxcdGJyY21mX2RiZyhQQ0lFLCBcXFwiTm8gRDMgQUNLLCBjb250aW51aW5nIHRvIHBvd2VyIHRoZSBkZXZpY2Ugb2ZmXFxcXG5cXFwiKTtcXG4yNjYzOlxcdFxcdH1cXG4yNjY0OlxcdFxcbjI2NjU6XFx0XFx0ZGV2aW5mby1cXHUwMDNlc3RhdGUgPSBCUkNNRk1BQ19QQ0lFX1NUQVRFX0RPV047XFxuMjY2NjpcXHRcXG4yNjY3OlxcdFxcdHJldHVybiAwO1xcbjI2Njg6XFx0fVxcbjI2Njk6XFx0XFxuMjY3MDpcXHRcXG4yNjcxOlxcdHN0YXRpYyBpbnQgYnJjbWZfcGNpZV9wbV9sZWF2ZV9EMyhzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuMjY3MjpcXHR7XFxuMjY3MzpcXHRcXHRzdHJ1Y3QgYnJjbWZfcGNpZWRldl9pbmZvICpkZXZpbmZvO1xcbjI2NzQ6XFx0XFx0c3RydWN0IGJyY21mX2J1cyAqYnVzO1xcbjI2NzU6XFx0XFx0c3RydWN0IHBjaV9kZXYgKnBkZXY7XFxuMjY3NjpcXHRcXHRpbnQgZXJyO1xcbjI2Nzc6XFx0XFxuMjY3ODpcXHRcXHRicmNtZl9kYmcoUENJRSwgXFxcIkVudGVyXFxcXG5cXFwiKTtcXG4yNjc5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxOTowNDoyOC45MzY4OTUzNDRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzgxMDg4MTE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYnJjbWZfcGNpZV9wbV9lbnRlcl9EMyBDYWxscyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgYXJvdW5kIGBicmNtZl9wY2llX3BtX2VudGVyX0QzYC4gSSdtIHN0YXJ0aW5nIHdpdGggdGhlIG9idmlvdXM6IHdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgaW52b2tlZCB3aXRoaW4gdGhlIGJyb2FkZXIgZHJpdmVyIGNvbnRleHQ/IEknbSB0aGlua2luZyBJIG5lZWQgdG8gZmluZCBhbGwgdGhlIGNhbGwgc2l0ZXMgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBlbnRyeSBwb2ludHMgYW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoaXMgcG93ZXIgbWFuYWdlbWVudCByb3V0aW5lIGlzIHRyaWdnZXJlZC4gSSdtIGFzc3VtaW5nIHRoYXQgaXQgaXMgbGlua2VkIHRvIHBvd2VyIG1hbmFnZW1lbnQsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIEQtc3RhdGVzIHRvIGJlIHN1cmUuIFRpbWUgdG8gZmlyZSB1cCB0aGUgdG9vbHMgYW5kIHRyYWNlIHRoZSByZWZlcmVuY2VzLiBMZXQncyBzZWUgd2hhdCB0aGUgY29kZSBoYXMgdG8gc2F5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTA1LCJPdXRwdXRUb2tlbnMiOjU1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxOTowNDozMC43MTc5ODYzNzhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ1NzE1ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJjbWZfcGNpZV9wbV9lbnRlcl9EM1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MjU4Mz1icmNtZl9wY2llX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjYzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI2MzY6c3RhdGljIGludCBicmNtZl9wY2llX3BtX2VudGVyX0QzKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI2Mzcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNzEzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBicmNtZl9wY2llZHJ2cl9wbSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI3MTQ6XFx0LnN1c3BlbmQgPSBicmNtZl9wY2llX3BtX2VudGVyX0QzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjcxNS1cXHQucmVzdW1lID0gYnJjbWZfcGNpZV9wbV9sZWF2ZV9EMyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI3MTY6XFx0LmZyZWV6ZSA9IGJyY21mX3BjaWVfcG1fZW50ZXJfRDMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNzE3LVxcdC5yZXN0b3JlID0gYnJjbWZfcGNpZV9wbV9sZWF2ZV9EMyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTk6MDQ6MzAuNzcyNTY0MzQ2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTcwNzIwMzk4MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBicmNtZl9wY2llX3BtX2VudGVyX0QzYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBicmNtZl9wY2llX3BtX2VudGVyX0QzYCwgc3BlY2lmaWNhbGx5IGluIGBicmNtZm1hYy9wY2llLmNgIGZvciB0aG9zZSBCcm9hZGNvbSBQQ0llIHdpcmVsZXNzIGNhcmRzLCB0aGUgYEJSQ01GTUFDX1BDSUVgIG9uZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgYSBQQ0llIGhhcmR3YXJlIGRyaXZlci5cblxuVGhlIG5leHQgcXVlc3Rpb24gSSBoYXZlIGlzLCBhcmUgdGhlc2UgQnJvYWRjb20gUENJZSB3aXJlbGVzcyBjYXJkcyBldmVuIGVtdWxhdGVkIGluIHRoZSBzdGFuZGFyZCBRRU1VIG9yIHN5emthbGxlciBlbnZpcm9ubWVudHM/IEkgcmVtZW1iZXIgc2VlaW5nIHNvbWV0aGluZyBhYm91dCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUsIHNvIGxldCBtZSBxdWlja2x5IHJlZmVyIGJhY2sgdG8gU2VjdGlvbiAyIG9mIHRoZSBpbnN0cnVjdGlvbnMuIEFoYSwgdGhlcmUgaXQgaXM6IFwiVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMuLi4gcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIlxuXG5BbHJpZ2h0LCBsZXQncyBjb25maXJtIHdoZXRoZXIgYGJyY21mbWFjYCBoYXMgc3VwcG9ydCBmb3IgVVNCLCBTRElPLCBvciBQQ0llLiBBIHF1aWNrIGdsYW5jZSB0ZWxscyBtZSB0aGF0IGBicmNtZm1hY2AgY292ZXJzIFVTQiwgU0RJTywgYW5kIFBDSWUuIFRoYXQncyBnb29kLiBOb3csIHNwZWNpZmljYWxseSwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmNgIGlzIHRoZSBQQ0kvUENJZSBidXMgZHJpdmVyIGZvciBCcm9hZGNvbSdzIEZNQUMgY2hpcHMsIGxpa2UgdGhlIEJDTTQzNjAyIG9yIEJDTTQzNTAuIE15IHJlYWRpbmcgdGVsbHMgbWUgdGhpcyBQQ0llIGhhcmR3YXJlIHdpbGwgcmVxdWlyZSBhY3R1YWwgQnJvYWRjb20gUENJZSBoYXJkd2FyZSBhbmQgd29uJ3QgYmUgZW11bGF0ZWQgaW4gUUVNVS4gVGhhdCBpcyBwcm9ibGVtYXRpYyBmb3IgbXkgdXNlIGNhc2UuXG5cbkFuZCwgb2YgY291cnNlLCB0aGUgYGJyY21mX3BjaWVfcG1fZW50ZXJfRDNgIGZ1bmN0aW9uIGlzIGEgc3VzcGVuZC9mcmVlemUgUE0gY2FsbGJhY2sgc3BlY2lmaWNhbGx5IGZvciB0aGUgUENJZSBkcml2ZXIsIHRoZSBgYnJjbWZfcGNpZWRydnJfcG1gLlxuXG5Ob3csIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbSBnb2luZyB0byBxdWlja2x5IGdsYW5jZSBhdCB0aGUgYEtjb25maWdgIGZvciBgQlJDTUZNQUNfUENJRWAgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc5NSwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxOTowNDo0Ny44NDQ2MDY0ODNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcyNzA3NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlJDTUZNQUNfUENJRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnPTI5PWNvbmZpZyBCUkNNRk1BQ19VU0JcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjQwOmNvbmZpZyBCUkNNRk1BQ19QQ0lFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctNDEtXFx0Ym9vbCBcXFwiUENJRSBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL01ha2VmaWxlPTM5PWJyY21mbWFjLSQoQ09ORklHX0JSQ01GTUFDX1VTQikgKz0gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9NYWtlZmlsZS00MC1cXHRcXHR1c2Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9NYWtlZmlsZTo0MTpicmNtZm1hYy0kKENPTkZJR19CUkNNRk1BQ19QQ0lFKSArPSBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL01ha2VmaWxlLTQyLVxcdFxcdHBjaWUub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oPTMzNz1zdGF0aWMgaW5saW5lIGludCBicmNtZl91c2JfcmVnaXN0ZXIodm9pZCkgeyByZXR1cm4gMDsgfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTMzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg6MzQwOiNpZmRlZiBDT05GSUdfQlJDTUZNQUNfUENJRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaC0zNDEtdm9pZCBicmNtZl9wY2llX2V4aXQodm9pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTQ3PWVudW0gYnJjbWZfcGNpZV9zdGF0ZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzo0ODpcXHRCUkNNRk1BQ19QQ0lFX1NUQVRFX0RPV04sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzo0OTpcXHRCUkNNRk1BQ19QQ0lFX1NUQVRFX1VQXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy01MC19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz05NDE9c3RhdGljIGlycXJldHVybl90IGJyY21mX3BjaWVfaXNyX3RocmVhZChpbnQgaXJxLCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTk1NC1cXHRcXHRpZiAoc3RhdHVzIFxcdTAwMjYgZGV2aW5mby1cXHUwMDNlcmVnaW5mby1cXHUwMDNlaW50X2QyaF9kYikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6OTU1OlxcdFxcdFxcdGlmIChkZXZpbmZvLVxcdTAwM2VzdGF0ZSA9PSBCUkNNRk1BQ19QQ0lFX1NUQVRFX1VQKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtOTU2LVxcdFxcdFxcdFxcdGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy05NjAtXFx0YnJjbWZfcGNpZV9idXNfY29uc29sZV9yZWFkKGRldmluZm8sIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjk2MTpcXHRpZiAoZGV2aW5mby1cXHUwMDNlc3RhdGUgPT0gQlJDTUZNQUNfUENJRV9TVEFURV9VUClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTk2Mi1cXHRcXHRicmNtZl9wY2llX2ludHJfZW5hYmxlKGRldmluZm8pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0xMDIwPXN0YXRpYyBpbnQgYnJjbWZfcGNpZV9yaW5nX21iX3dyaXRlX3JwdHIodm9pZCAqY3R4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0xMDI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6MTAyNjpcXHRpZiAoZGV2aW5mby1cXHUwMDNlc3RhdGUgIT0gQlJDTUZNQUNfUENJRV9TVEFURV9VUClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTEwMjctXFx0XFx0cmV0dXJuIC1FSU87XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTEwMzg9c3RhdGljIGludCBicmNtZl9wY2llX3JpbmdfbWJfd3JpdGVfd3B0cih2b2lkICpjdHgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTEwNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoxMDQ0OlxcdGlmIChkZXZpbmZvLVxcdTAwM2VzdGF0ZSAhPSBCUkNNRk1BQ19QQ0lFX1NUQVRFX1VQKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMTA0NS1cXHRcXHRyZXR1cm4gLUVJTztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MTA1Nj1zdGF0aWMgaW50IGJyY21mX3BjaWVfcmluZ19tYl9yaW5nX2JlbGwodm9pZCAqY3R4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0xMDYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6MTA2MTpcXHRpZiAoZGV2aW5mby1cXHUwMDNlc3RhdGUgIT0gQlJDTUZNQUNfUENJRV9TVEFURV9VUClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTEwNjItXFx0XFx0cmV0dXJuIC1FSU87XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTEwNzI9c3RhdGljIGludCBicmNtZl9wY2llX3JpbmdfbWJfdXBkYXRlX3JwdHIodm9pZCAqY3R4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0xMDc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6MTA3ODpcXHRpZiAoZGV2aW5mby1cXHUwMDNlc3RhdGUgIT0gQlJDTUZNQUNfUENJRV9TVEFURV9VUClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTEwNzktXFx0XFx0cmV0dXJuIC1FSU87XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTEwOTA9c3RhdGljIGludCBicmNtZl9wY2llX3JpbmdfbWJfdXBkYXRlX3dwdHIodm9pZCAqY3R4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0xMDk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6MTA5NjpcXHRpZiAoZGV2aW5mby1cXHUwMDNlc3RhdGUgIT0gQlJDTUZNQUNfUENJRV9TVEFURV9VUClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTEwOTctXFx0XFx0cmV0dXJuIC1FSU87XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTIxMzk9c3RhdGljIHZvaWQgYnJjbWZfcGNpZV9zZXR1cChzdHJ1Y3QgZGV2aWNlICpkZXYsIGludCByZXQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTIxODUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyMTg2OlxcdGRldmluZm8tXFx1MDAzZXN0YXRlID0gQlJDTUZNQUNfUENJRV9TVEFURV9VUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTIxODctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTIzMTA9YnJjbWZfcGNpZV9md2Nvbl90aW1lcihzdHJ1Y3QgYnJjbWZfcGNpZWRldl9pbmZvICpkZXZpbmZvLCBib29sIGFjdGl2ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjMyMC1cXHQvKiBkb24ndCBzdGFydCB0aGUgdGltZXIgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjIzMjE6XFx0aWYgKGRldmluZm8tXFx1MDAzZXN0YXRlICE9IEJSQ01GTUFDX1BDSUVfU1RBVEVfVVAgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTIzMjItXFx0ICAgICFkZXZpbmZvLVxcdTAwM2Vjb25zb2xlX2ludGVydmFsIHx8ICFCUkNNRl9GV0NPTl9PTigpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNTgzPWJyY21mX3BjaWVfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNTk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6MjU5ODpcXHRkZXZpbmZvLVxcdTAwM2VzdGF0ZSA9IEJSQ01GTUFDX1BDSUVfU1RBVEVfRE9XTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI1OTktXFx0aWYgKGRldmluZm8tXFx1MDAzZWNpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNjM2PXN0YXRpYyBpbnQgYnJjbWZfcGNpZV9wbV9lbnRlcl9EMyhzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI2NjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNjY1OlxcdGRldmluZm8tXFx1MDAzZXN0YXRlID0gQlJDTUZNQUNfUENJRV9TVEFURV9ET1dOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjY2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MjY3MT1zdGF0aWMgaW50IGJyY21mX3BjaWVfcG1fbGVhdmVfRDMoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNjg5LVxcdFxcdGJyY21mX2RiZyhQQ0lFLCBcXFwiSG90IHJlc3VtZSwgY29udGludWUuLi4uXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI2OTA6XFx0XFx0ZGV2aW5mby1cXHUwMDNlc3RhdGUgPSBCUkNNRk1BQ19QQ0lFX1NUQVRFX1VQO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjY5MS1cXHRcXHRicmNtZl9wY2llX3NlbGVjdF9jb3JlKGRldmluZm8sIEJDTUFfQ09SRV9QQ0lFMik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5oLTQtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuaDo1OiNpZm5kZWYgQlJDTUZNQUNfUENJRV9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuaDo2OiNkZWZpbmUgQlJDTUZNQUNfUENJRV9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuaC03LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuaD05PXN0cnVjdCBicmNtZl9wY2llZGV2IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmgtMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuaDoxNDojZW5kaWYgLyogQlJDTUZNQUNfUENJRV9IICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE5OjA0OjQ3Ljg5MTg4MjQ5NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQzOTA3MzkxODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgU3RydWN0dXJhbCBVbnJlYWNoYWJpbGl0eSBpbiBGdXp6aW5nIENvbnRleHQqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSB0aGUgdW5yZWFjaGFiaWxpdHkgb2YgdGhpcyBjb2RlIHBhdGggZHVyaW5nIGZ1enppbmcuIFRoZSBrZXkgaGVyZSBpcyB0byBkZXRlcm1pbmUgaWYgdGhlIHJlbGV2YW50IGhhcmR3YXJlIGlzIHN0cnVjdHVyYWxseSB1bmF2YWlsYWJsZSBpbiB0eXBpY2FsIGZ1enppbmcgZW52aXJvbm1lbnRzLCBuYW1lbHkgUUVNVS5cblxuSSdtIGxvb2tpbmcgYXQgdGhlIGNyaXRlcmlhOiB0aGluZ3MgdGhhdCByZXF1aXJlIGRlZGljYXRlZCBoYXJkd2FyZSBub3QgZW11bGF0ZWQuIEl0J3MgY2xlYXIgdGhhdCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBHUFUgZHJpdmVycyAobGlrZSBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFuZCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDIG9yIFBDSWUgY2FyZHMgd291bGQgYmUgaW5hY2Nlc3NpYmxlLiBBbHNvLCBleGVjdXRpb24gcGF0aHMgdHJpZ2dlcmVkIG9ubHkgYnkgcGh5c2ljYWwgaG90LXVucGx1ZyBvciBtYW51YWwgZHJpdmVyIHVuYmluZGluZyBhcmUgb3V0LlxuXG5Ob3csIHRoZSBzcGVjaWZpYyBmdW5jdGlvbiBpbiBxdWVzdGlvbiBpcyBgYnJjbWZfcGNpZV9wbV9lbnRlcl9EM2AgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmNgLiBUaGlzIGlzIGEgcG93ZXIgbWFuYWdlbWVudCBjYWxsYmFjayDigJMgc3BlY2lmaWNhbGx5IGEgc3VzcGVuZC9mcmVlemUgaGFuZGxlciB3aXRoaW4gYHN0cnVjdCBkZXZfcG1fb3BzIGJyY21mX3BjaWVkcnZyX3BtYCDigJMgZGVzaWduZWQgZm9yIEJyb2FkY29tIEZ1bGxNQUMgUENJZSB3aXJlbGVzcyBkZXZpY2VzLiBJJ20gZmFtaWxpYXIgd2l0aCB0aGVzZTsgdGhlc2UgYXJlIHBoeXNpY2FsIEJyb2FkY29tIFBDSWUgaGFyZHdhcmUgZGV2aWNlcywgbGlrZSB0aGUgQkNNNDM2MDIsIEJDTTQzNTAsIGFuZCBCQ000MzY1IHNlcmllcy4gVGhlIGNydWNpYWwgcG9pbnQgaXMgdGhhdCB0aGlzIGtpbmQgb2YgaGFyZHdhcmUgKmlzbid0KiBlbXVsYXRlZCBpbiB0aGUgc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzIHVzZWQgZm9yIGZ1enppbmcgYnkgc3l6a2FsbGVyLlxuXG5UaGVyZWZvcmUsIHNpbmNlIHdlJ3JlIGRlYWxpbmcgd2l0aCBoYXJkd2FyZSBkZXBlbmRlbmNpZXMgdGhhdCBRRU1VIGRvZXNuJ3Qgc2F0aXNmeSwgdGhpcyBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cblxuTGV0J3MgZG8gYSBxdWljayBkb3VibGUtY2hlY2sgdG8gY29uZmlybS4gSSdsbCBzdW1tYXJpemUgdGhlIGRldGFpbHMgYW5kIHJlcXVpcmVtZW50cyBmb3Igc2V0LXJlc3VsdHMuXG5cbjEuICBgV29ydGhGdXp6aW5nOiBmYWxzZWAgaXMgY29ycmVjdCwgYmFzZWQgb24gdGhlIGFib3ZlLlxuMi4gIGBGb2N1c1N5bWJvbHM6IFtdYCBtYWtlcyBzZW5zZS4gTm8gc3BlY2lmaWMgc3ltYm9scyBhcmUgcmVsZXZhbnQsIGFzIHRoZSBpc3N1ZSBpcyB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgcmVxdWlyZW1lbnRzLCBub3QgYSBzcGVjaWZpYyBmdW5jdGlvbiB3aXRoaW4gdGhlIG1vZHVsZS5cbjMuICBgRW5hYmxlQ29uZmlnczogW11gIOKAkyBhZ2FpbiwgdGhpcyBhbGlnbnMuIE5vIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFyZSBuZWVkZWQgZm9yIHRoaXMgdG8gYmUgdW5yZWFjaGFibGUuXG40LiAgVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogdGhlIHBhdGNoIG1vZGlmaWVzIGEgcG93ZXIgbWFuYWdlbWVudCBmdW5jdGlvbiBmb3IgQnJvYWRjb20gUENJZSB3aXJlbGVzcyBkZXZpY2VzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cblxuRXZlcnl0aGluZyBjaGVja3Mgb3V0LiBJJ20gY29uZmlkZW50IGluIG15IGFuYWx5c2lzLiBJJ2xsIHByb2NlZWQgd2l0aCBjYWxsaW5nIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4MzgsIk91dHB1dFRva2VucyI6MTI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE5OjA0OjUyLjI4MjYyNzAxNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxNTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGJyY21mX3BjaWVfcG1fZW50ZXJfRDMoKSBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLCB3aGljaCBpcyBhIHBvd2VyIG1hbmFnZW1lbnQgc3VzcGVuZC9mcmVlemUgY2FsbGJhY2sgZm9yIEJyb2FkY29tIEZ1bGxNQUMgUENJZSB3aXJlbGVzcyBOSUNzLiBUaGlzIGNvZGUgcmVxdWlyZXMgcGh5c2ljYWwgQnJvYWRjb20gUENJZSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIGFuZCBpcyB0aGVyZWZvcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYnJjbWZfcGNpZV9wbV9lbnRlcl9EMygpIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMsIHdoaWNoIGlzIGEgcG93ZXIgbWFuYWdlbWVudCBzdXNwZW5kL2ZyZWV6ZSBjYWxsYmFjayBmb3IgQnJvYWRjb20gRnVsbE1BQyBQQ0llIHdpcmVsZXNzIE5JQ3MuIFRoaXMgY29kZSByZXF1aXJlcyBwaHlzaWNhbCBCcm9hZGNvbSBQQ0llIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgYW5kIGlzIHRoZXJlZm9yZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxOTowNDo1Mi4yODI2NjUyNTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvdcnv[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-08 19:01:58 +0000 UTC FinishedAt: 2026-09-08 19:04: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+CgkJCTx0ZD4yMDI2LzA5LzA4IDE5OjAzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYnJjbWZfcGNpZV9wbV9lbnRlcl9EMygpIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMsIHdoaWNoIGlzIGEgcG93ZXIgbWFuYWdlbWVudCBzdXNwZW5kL2ZyZWV6ZSBjYWxsYmFjayBmb3IgQnJvYWRjb20gRnVsbE1BQyBQQ0llIHdpcmVsZXNzIE5JQ3MuIFRoaXMgY29kZSByZXF1aXJlcyBwaHlzaWNhbCBCcm9hZGNvbSBQQ0llIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgYW5kIGlzIHRoZXJlZm9yZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE5OjAzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMjc2N2NhNDdmMWExYmY0Njk1ZDA0Njk4OGM5N2FmYTdmN2ZlNDliYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDggMTk6MDM6NDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmNcbmluZGV4IDU1ZjRkN2I5NzBmMjguLmMxYTAyOWQ4NmMwZjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jXG5AQCAtMjY1Myw4ICYjNDM7MjY1MywxMyBAQCBzdGF0aWMgaW50IGJyY21mX3BjaWVfcG1fZW50ZXJfRDMoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHRcdCAgIEJSQ01GX1BDSUVfTUJEQVRBX1RJTUVPVVQpO1xuIFx0aWYgKCFkZXZpbmZvLVx1MDAzZW1iZGF0YV9jb21wbGV0ZWQpIHtcbiBcdFx0YnJjbWZfZXJyKGJ1cywgXCYjMzQ7VGltZW91dCBvbiByZXNwb25zZSBmb3IgZW50ZXJpbmcgRDMgc3Vic3RhdGVcXG5cJiMzNDspO1xuLVx0XHRicmNtZl9idXNfY2hhbmdlX3N0YXRlKGJ1cywgQlJDTUZfQlVTX1VQKTtcbi1cdFx0cmV0dXJuIC1FSU87XG4mIzQzO1xuJiM0MztcdFx0aWYgKGRldmluZm8tXHUwMDNld293bF9lbmFibGVkKSB7XG4mIzQzO1x0XHRcdGJyY21mX2J1c19jaGFuZ2Vfc3RhdGUoYnVzLCBCUkNNRl9CVVNfVVApO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVJTztcbiYjNDM7XHRcdH1cbiYjNDM7XG4mIzQzO1x0XHRicmNtZl9kYmcoUENJRSwgXCYjMzQ7Tm8gRDMgQUNLLCBjb250aW51aW5nIHRvIHBvd2VyIHRoZSBkZXZpY2Ugb2ZmXFxuXCYjMzQ7KTtcbiBcdH1cbiBcbiBcdGRldmluZm8tXHUwMDNlc3RhdGUgPSBCUkNNRk1BQ19QQ0lFX1NUQVRFX0RPV047XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTk6MDM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYnJjbWZfcGNpZV9wbV9lbnRlcl9EMygpIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMsIHdoaWNoIGlzIGEgcG93ZXIgbWFuYWdlbWVudCBzdXNwZW5kL2ZyZWV6ZSBjYWxsYmFjayBmb3IgQnJvYWRjb20gRnVsbE1BQyBQQ0llIHdpcmVsZXNzIE5JQ3MuIFRoaXMgY29kZSByZXF1aXJlcyBwaHlzaWNhbCBCcm9hZGNvbSBQQ0llIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgYW5kIGlzIHRoZXJlZm9yZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjc2N2NhNDdmMWExYmY0Njk1ZDA0Njk4OGM5N2FmYTdmN2ZlNDliYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgU2VwIDggMTk6MDM6NDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYwppbmRleCA1NWY0ZDdiOTcwZjI4Li5jMWEwMjlkODZjMGY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMKQEAgLTI2NTMsOCAmIzQzOzI2NTMsMTMgQEAgc3RhdGljIGludCBicmNtZl9wY2llX3BtX2VudGVyX0QzKHN0cnVjdCBkZXZpY2UgKmRldikKIAkJCSAgIEJSQ01GX1BDSUVfTUJEQVRBX1RJTUVPVVQpOwogCWlmICghZGV2aW5mby0mZ3Q7bWJkYXRhX2NvbXBsZXRlZCkgewogCQlicmNtZl9lcnIoYnVzLCAmIzM0O1RpbWVvdXQgb24gcmVzcG9uc2UgZm9yIGVudGVyaW5nIEQzIHN1YnN0YXRlXG4mIzM0Oyk7Ci0JCWJyY21mX2J1c19jaGFuZ2Vfc3RhdGUoYnVzLCBCUkNNRl9CVVNfVVApOwotCQlyZXR1cm4gLUVJTzsKJiM0MzsKJiM0MzsJCWlmIChkZXZpbmZvLSZndDt3b3dsX2VuYWJsZWQpIHsKJiM0MzsJCQlicmNtZl9idXNfY2hhbmdlX3N0YXRlKGJ1cywgQlJDTUZfQlVTX1VQKTsKJiM0MzsJCQlyZXR1cm4gLUVJTzsKJiM0MzsJCX0KJiM0MzsKJiM0MzsJCWJyY21mX2RiZyhQQ0lFLCAmIzM0O05vIEQzIEFDSywgY29udGludWluZyB0byBwb3dlciB0aGUgZGV2aWNlIG9mZlxuJiMzNDspOwogCX0KIAogCWRldmluZm8tJmd0O3N0YXRlID0gQlJDTUZNQUNfUENJRV9TVEFURV9ET1dOOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxOTowMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDQ3CgkJCQkJCQlvdXRwdXQ6IDU1CgkJCQkJCQl0aG91Z2h0czogODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjoKCioqRnV6emluZyBGZWFzaWJpbGl0eSBBc3Nlc3NtZW50OiBicmNtZl9wY2llX3BtX2VudGVyX0QzKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaCBhbmQgZmlndXJlIG91dCBpZiBpdCYjMzk7cyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBUaGUgdGFyZ2V0IGlzIHRoZSBgYnJjbWZfcGNpZV9wbV9lbnRlcl9EM2AgZnVuY3Rpb24gd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jYC4gVGhhdCYjMzk7cyBhIFBDSSBFeHByZXNzIGRyaXZlciBmdW5jdGlvbiByZWxhdGVkIHRvIHBvd2VyIG1hbmFnZW1lbnQgZm9yIHRoZSBCcm9hZGNvbSB3aXJlbGVzcyBpbnRlcmZhY2UuIE15IGZpcnN0IHN0ZXAgaXMgdG8gcXVpY2tseSBnZXQgY29udGV4dC4gSSYjMzk7bGwgdXNlIG15IGVzdGFibGlzaGVkIHdvcmtmbG93IC0gYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgIHRvIGdldCB0aGUgbGF5IG9mIHRoZSBsYW5kLCB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlLCBhbmQgc2VlIGhvdyBgYnJjbWZfcGNpZV9wbV9lbnRlcl9EM2AgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgcG90ZW50aWFsIGlucHV0cywgY29udHJvbCBmbG93IHRoYXQgY291bGQgYmUgbWFuaXB1bGF0ZWQsIGFuZCBhbnl0aGluZyB0aGF0IG1pZ2h0IGJlIHByb25lIHRvIGVkZ2UtY2FzZSBoYW5kbGluZy4gQmFzaWNhbGx5LCBteSBpbml0aWFsIGdvYWwgaXMgdG8gYnVpbGQgYW4gdW5kZXJzdGFuZGluZyBmb3Igd2hldGhlciB0aGlzIGFyZWEgaXMgbGlrZWx5IHRvIGhhdmUgc3VidGxlIGludGVyYWN0aW9ucyBiZXR3ZWVuIFBDSSwgcG93ZXIgbWFuYWdlbWVudCwgYW5kIHdpcmVsZXNzIGRldmljZSBzdGF0ZXMgdGhhdCBjb3VsZCBsZWFkIHRvIGV4cGxvaXRhYmxlIGJ1Z3MuIEnigJlsbCBtYWtlIGEgY2FsbCBvbiBmdXp6aW5nIHRoaXMgYXJlYSBvciBtb3Zpbmcgb24gdG8gYW5vdGhlciBwb3RlbnRpYWwgdGFyZ2V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE5OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI2NDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjY0MDpcdFxuMjY0MTpcdFx0YnJjbWZfZGJnKFBDSUUsIFwmIzM0O0VudGVyXFxuXCYjMzQ7KTtcbjI2NDI6XHRcbjI2NDM6XHRcdGJ1cyA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpO1xuMjY0NDpcdFx0ZGV2aW5mbyA9IGJ1cy1cdTAwM2VidXNfcHJpdi5wY2llLVx1MDAzZWRldmluZm87XG4yNjQ1Olx0XG4yNjQ2Olx0XHRicmNtZl9wY2llX2Z3Y29uX3RpbWVyKGRldmluZm8sIGZhbHNlKTtcbjI2NDc6XHRcdGJyY21mX2J1c19jaGFuZ2Vfc3RhdGUoYnVzLCBCUkNNRl9CVVNfRE9XTik7XG4yNjQ4Olx0XG4yNjQ5Olx0XHRkZXZpbmZvLVx1MDAzZW1iZGF0YV9jb21wbGV0ZWQgPSBmYWxzZTtcbjI2NTA6XHRcdGJyY21mX3BjaWVfc2VuZF9tYl9kYXRhKGRldmluZm8sIEJSQ01GX0gyRF9IT1NUX0QzX0lORk9STSk7XG4yNjUxOlx0XG4yNjUyOlx0XHR3YWl0X2V2ZW50X3RpbWVvdXQoZGV2aW5mby1cdTAwM2VtYmRhdGFfcmVzcF93YWl0LCBkZXZpbmZvLVx1MDAzZW1iZGF0YV9jb21wbGV0ZWQsXG4yNjUzOlx0XHRcdFx0ICAgQlJDTUZfUENJRV9NQkRBVEFfVElNRU9VVCk7XG4yNjU0Olx0XHRpZiAoIWRldmluZm8tXHUwMDNlbWJkYXRhX2NvbXBsZXRlZCkge1xuMjY1NTpcdFx0XHRicmNtZl9lcnIoYnVzLCBcJiMzNDtUaW1lb3V0IG9uIHJlc3BvbnNlIGZvciBlbnRlcmluZyBEMyBzdWJzdGF0ZVxcblwmIzM0Oyk7XG4yNjU2Olx0XG4yNjU3Olx0XHRcdGlmIChkZXZpbmZvLVx1MDAzZXdvd2xfZW5hYmxlZCkge1xuMjY1ODpcdFx0XHRcdGJyY21mX2J1c19jaGFuZ2Vfc3RhdGUoYnVzLCBCUkNNRl9CVVNfVVApO1xuMjY1OTpcdFx0XHRcdHJldHVybiAtRUlPO1xuMjY2MDpcdFx0XHR9XG4yNjYxOlx0XG4yNjYyOlx0XHRcdGJyY21mX2RiZyhQQ0lFLCBcJiMzNDtObyBEMyBBQ0ssIGNvbnRpbnVpbmcgdG8gcG93ZXIgdGhlIGRldmljZSBvZmZcXG5cJiMzNDspO1xuMjY2MzpcdFx0fVxuMjY2NDpcdFxuMjY2NTpcdFx0ZGV2aW5mby1cdTAwM2VzdGF0ZSA9IEJSQ01GTUFDX1BDSUVfU1RBVEVfRE9XTjtcbjI2NjY6XHRcbjI2Njc6XHRcdHJldHVybiAwO1xuMjY2ODpcdH1cbjI2Njk6XHRcbjI2NzA6XHRcbjI2NzE6XHRzdGF0aWMgaW50IGJyY21mX3BjaWVfcG1fbGVhdmVfRDMoc3RydWN0IGRldmljZSAqZGV2KVxuMjY3MjpcdHtcbjI2NzM6XHRcdHN0cnVjdCBicmNtZl9wY2llZGV2X2luZm8gKmRldmluZm87XG4yNjc0Olx0XHRzdHJ1Y3QgYnJjbWZfYnVzICpidXM7XG4yNjc1Olx0XHRzdHJ1Y3QgcGNpX2RldiAqcGRldjtcbjI2NzY6XHRcdGludCBlcnI7XG4yNjc3Olx0XG4yNjc4Olx0XHRicmNtZl9kYmcoUENJRSwgXCYjMzQ7RW50ZXJcXG5cJiMzNDspO1xuMjY3OTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE5OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMDUKCQkJCQkJCW91dHB1dDogNTUKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYnJjbWZfcGNpZV9wbV9lbnRlcl9EMyBDYWxscyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IGFyb3VuZCBgYnJjbWZfcGNpZV9wbV9lbnRlcl9EM2AuIEkmIzM5O20gc3RhcnRpbmcgd2l0aCB0aGUgb2J2aW91czogd2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBhY3R1YWxseSBpbnZva2VkIHdpdGhpbiB0aGUgYnJvYWRlciBkcml2ZXIgY29udGV4dD8gSSYjMzk7bSB0aGlua2luZyBJIG5lZWQgdG8gZmluZCBhbGwgdGhlIGNhbGwgc2l0ZXMgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBlbnRyeSBwb2ludHMgYW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoaXMgcG93ZXIgbWFuYWdlbWVudCByb3V0aW5lIGlzIHRyaWdnZXJlZC4gSSYjMzk7bSBhc3N1bWluZyB0aGF0IGl0IGlzIGxpbmtlZCB0byBwb3dlciBtYW5hZ2VtZW50LCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB0byBELXN0YXRlcyB0byBiZSBzdXJlLiBUaW1lIHRvIGZpcmUgdXAgdGhlIHRvb2xzIGFuZCB0cmFjZSB0aGUgcmVmZXJlbmNlcy4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb2RlIGhhcyB0byBzYXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTk6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfcGNpZV9wbV9lbnRlcl9EMyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNTgzPWJyY21mX3BjaWVfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjYzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6MjYzNjpzdGF0aWMgaW50IGJyY21mX3BjaWVfcG1fZW50ZXJfRDMoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNjM3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTI3MTM9c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGJyY21mX3BjaWVkcnZyX3BtID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNzE0Olx0LnN1c3BlbmQgPSBicmNtZl9wY2llX3BtX2VudGVyX0QzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNzE1LVx0LnJlc3VtZSA9IGJyY21mX3BjaWVfcG1fbGVhdmVfRDMsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI3MTY6XHQuZnJlZXplID0gYnJjbWZfcGNpZV9wbV9lbnRlcl9EMyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjcxNy1cdC5yZXN0b3JlID0gYnJjbWZfcGNpZV9wbV9sZWF2ZV9EMyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxOTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Nzk1CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogNDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBgYnJjbWZfcGNpZV9wbV9lbnRlcl9EM2AgRnVuY3Rpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBicmNtZl9wY2llX3BtX2VudGVyX0QzYCwgc3BlY2lmaWNhbGx5IGluIGBicmNtZm1hYy9wY2llLmNgIGZvciB0aG9zZSBCcm9hZGNvbSBQQ0llIHdpcmVsZXNzIGNhcmRzLCB0aGUgYEJSQ01GTUFDX1BDSUVgIG9uZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgYSBQQ0llIGhhcmR3YXJlIGRyaXZlci4KClRoZSBuZXh0IHF1ZXN0aW9uIEkgaGF2ZSBpcywgYXJlIHRoZXNlIEJyb2FkY29tIFBDSWUgd2lyZWxlc3MgY2FyZHMgZXZlbiBlbXVsYXRlZCBpbiB0aGUgc3RhbmRhcmQgUUVNVSBvciBzeXprYWxsZXIgZW52aXJvbm1lbnRzPyBJIHJlbWVtYmVyIHNlZWluZyBzb21ldGhpbmcgYWJvdXQgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLCBzbyBsZXQgbWUgcXVpY2tseSByZWZlciBiYWNrIHRvIFNlY3Rpb24gMiBvZiB0aGUgaW5zdHJ1Y3Rpb25zLiBBaGEsIHRoZXJlIGl0IGlzOiAmIzM0O1ZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzLi4uIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuJiMzNDsKCkFscmlnaHQsIGxldCYjMzk7cyBjb25maXJtIHdoZXRoZXIgYGJyY21mbWFjYCBoYXMgc3VwcG9ydCBmb3IgVVNCLCBTRElPLCBvciBQQ0llLiBBIHF1aWNrIGdsYW5jZSB0ZWxscyBtZSB0aGF0IGBicmNtZm1hY2AgY292ZXJzIFVTQiwgU0RJTywgYW5kIFBDSWUuIFRoYXQmIzM5O3MgZ29vZC4gTm93LCBzcGVjaWZpY2FsbHksIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jYCBpcyB0aGUgUENJL1BDSWUgYnVzIGRyaXZlciBmb3IgQnJvYWRjb20mIzM5O3MgRk1BQyBjaGlwcywgbGlrZSB0aGUgQkNNNDM2MDIgb3IgQkNNNDM1MC4gTXkgcmVhZGluZyB0ZWxscyBtZSB0aGlzIFBDSWUgaGFyZHdhcmUgd2lsbCByZXF1aXJlIGFjdHVhbCBCcm9hZGNvbSBQQ0llIGhhcmR3YXJlIGFuZCB3b24mIzM5O3QgYmUgZW11bGF0ZWQgaW4gUUVNVS4gVGhhdCBpcyBwcm9ibGVtYXRpYyBmb3IgbXkgdXNlIGNhc2UuCgpBbmQsIG9mIGNvdXJzZSwgdGhlIGBicmNtZl9wY2llX3BtX2VudGVyX0QzYCBmdW5jdGlvbiBpcyBhIHN1c3BlbmQvZnJlZXplIFBNIGNhbGxiYWNrIHNwZWNpZmljYWxseSBmb3IgdGhlIFBDSWUgZHJpdmVyLCB0aGUgYGJyY21mX3BjaWVkcnZyX3BtYC4KCk5vdywganVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGdsYW5jZSBhdCB0aGUgYEtjb25maWdgIGZvciBgQlJDTUZNQUNfUENJRWAgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueXRoaW5nIG9idmlvdXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMTk6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlJDTUZNQUNfUENJRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc9Mjk9Y29uZmlnIEJSQ01GTUFDX1VTQlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTM5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6NDA6Y29uZmlnIEJSQ01GTUFDX1BDSUVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTQxLVx0Ym9vbCBcJiMzNDtQQ0lFIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvTWFrZWZpbGU9Mzk9YnJjbWZtYWMtJChDT05GSUdfQlJDTUZNQUNfVVNCKSAmIzQzOz0gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9NYWtlZmlsZS00MC1cdFx0dXNiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9NYWtlZmlsZTo0MTpicmNtZm1hYy0kKENPTkZJR19CUkNNRk1BQ19QQ0lFKSAmIzQzOz0gXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9NYWtlZmlsZS00Mi1cdFx0cGNpZS5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oPTMzNz1zdGF0aWMgaW5saW5lIGludCBicmNtZl91c2JfcmVnaXN0ZXIodm9pZCkgeyByZXR1cm4gMDsgfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaC0zMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg6MzQwOiNpZmRlZiBDT05GSUdfQlJDTUZNQUNfUENJRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTM0MS12b2lkIGJyY21mX3BjaWVfZXhpdCh2b2lkKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTQ3PWVudW0gYnJjbWZfcGNpZV9zdGF0ZSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjQ4Olx0QlJDTUZNQUNfUENJRV9TVEFURV9ET1dOLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzo0OTpcdEJSQ01GTUFDX1BDSUVfU1RBVEVfVVBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtNTAtfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTk0MT1zdGF0aWMgaXJxcmV0dXJuX3QgYnJjbWZfcGNpZV9pc3JfdGhyZWFkKGludCBpcnEsIHZvaWQgKmFyZylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTk1NC1cdFx0aWYgKHN0YXR1cyBcdTAwMjYgZGV2aW5mby1cdTAwM2VyZWdpbmZvLVx1MDAzZWludF9kMmhfZGIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6OTU1Olx0XHRcdGlmIChkZXZpbmZvLVx1MDAzZXN0YXRlID09IEJSQ01GTUFDX1BDSUVfU1RBVEVfVVApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTk1Ni1cdFx0XHRcdGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtOTYwLVx0YnJjbWZfcGNpZV9idXNfY29uc29sZV9yZWFkKGRldmluZm8sIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6OTYxOlx0aWYgKGRldmluZm8tXHUwMDNlc3RhdGUgPT0gQlJDTUZNQUNfUENJRV9TVEFURV9VUClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtOTYyLVx0XHRicmNtZl9wY2llX2ludHJfZW5hYmxlKGRldmluZm8pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MTAyMD1zdGF0aWMgaW50IGJyY21mX3BjaWVfcmluZ19tYl93cml0ZV9ycHRyKHZvaWQgKmN0eClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTEwMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjEwMjY6XHRpZiAoZGV2aW5mby1cdTAwM2VzdGF0ZSAhPSBCUkNNRk1BQ19QQ0lFX1NUQVRFX1VQKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0xMDI3LVx0XHRyZXR1cm4gLUVJTztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTEwMzg9c3RhdGljIGludCBicmNtZl9wY2llX3JpbmdfbWJfd3JpdGVfd3B0cih2b2lkICpjdHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0xMDQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoxMDQ0Olx0aWYgKGRldmluZm8tXHUwMDNlc3RhdGUgIT0gQlJDTUZNQUNfUENJRV9TVEFURV9VUClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMTA0NS1cdFx0cmV0dXJuIC1FSU87XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0xMDU2PXN0YXRpYyBpbnQgYnJjbWZfcGNpZV9yaW5nX21iX3JpbmdfYmVsbCh2b2lkICpjdHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0xMDYwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoxMDYxOlx0aWYgKGRldmluZm8tXHUwMDNlc3RhdGUgIT0gQlJDTUZNQUNfUENJRV9TVEFURV9VUClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMTA2Mi1cdFx0cmV0dXJuIC1FSU87XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0xMDcyPXN0YXRpYyBpbnQgYnJjbWZfcGNpZV9yaW5nX21iX3VwZGF0ZV9ycHRyKHZvaWQgKmN0eClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTEwNzctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjEwNzg6XHRpZiAoZGV2aW5mby1cdTAwM2VzdGF0ZSAhPSBCUkNNRk1BQ19QQ0lFX1NUQVRFX1VQKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0xMDc5LVx0XHRyZXR1cm4gLUVJTztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTEwOTA9c3RhdGljIGludCBicmNtZl9wY2llX3JpbmdfbWJfdXBkYXRlX3dwdHIodm9pZCAqY3R4KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMTA5NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6MTA5NjpcdGlmIChkZXZpbmZvLVx1MDAzZXN0YXRlICE9IEJSQ01GTUFDX1BDSUVfU1RBVEVfVVApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTEwOTctXHRcdHJldHVybiAtRUlPO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MjEzOT1zdGF0aWMgdm9pZCBicmNtZl9wY2llX3NldHVwKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IHJldCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTIxODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjIxODY6XHRkZXZpbmZvLVx1MDAzZXN0YXRlID0gQlJDTUZNQUNfUENJRV9TVEFURV9VUDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjE4Ny1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTIzMTA9YnJjbWZfcGNpZV9md2Nvbl90aW1lcihzdHJ1Y3QgYnJjbWZfcGNpZWRldl9pbmZvICpkZXZpbmZvLCBib29sIGFjdGl2ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTIzMjAtXHQvKiBkb24mIzM5O3Qgc3RhcnQgdGhlIHRpbWVyICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjIzMjE6XHRpZiAoZGV2aW5mby1cdTAwM2VzdGF0ZSAhPSBCUkNNRk1BQ19QQ0lFX1NUQVRFX1VQIHx8XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTIzMjItXHQgICAgIWRldmluZm8tXHUwMDNlY29uc29sZV9pbnRlcnZhbCB8fCAhQlJDTUZfRldDT05fT04oKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTI1ODM9YnJjbWZfcGNpZV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNTk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNTk4Olx0ZGV2aW5mby1cdTAwM2VzdGF0ZSA9IEJSQ01GTUFDX1BDSUVfU1RBVEVfRE9XTjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjU5OS1cdGlmIChkZXZpbmZvLVx1MDAzZWNpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MjYzNj1zdGF0aWMgaW50IGJyY21mX3BjaWVfcG1fZW50ZXJfRDMoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjY2NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6MjY2NTpcdGRldmluZm8tXHUwMDNlc3RhdGUgPSBCUkNNRk1BQ19QQ0lFX1NUQVRFX0RPV047XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI2NjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNjcxPXN0YXRpYyBpbnQgYnJjbWZfcGNpZV9wbV9sZWF2ZV9EMyhzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNjg5LVx0XHRicmNtZl9kYmcoUENJRSwgXCYjMzQ7SG90IHJlc3VtZSwgY29udGludWUuLi4uXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6MjY5MDpcdFx0ZGV2aW5mby1cdTAwM2VzdGF0ZSA9IEJSQ01GTUFDX1BDSUVfU1RBVEVfVVA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI2OTEtXHRcdGJyY21mX3BjaWVfc2VsZWN0X2NvcmUoZGV2aW5mbywgQkNNQV9DT1JFX1BDSUUyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5oLTQtICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5oOjU6I2lmbmRlZiBCUkNNRk1BQ19QQ0lFX0hcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmg6NjojZGVmaW5lIEJSQ01GTUFDX1BDSUVfSFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuaC03LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmg9OT1zdHJ1Y3QgYnJjbWZfcGNpZWRldiB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuaC0xMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmg6MTQ6I2VuZGlmIC8qIEJSQ01GTUFDX1BDSUVfSCAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDE5OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg4MzgKCQkJCQkJCW91dHB1dDogMTI5CgkJCQkJCQl0aG91Z2h0czogNDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIFN0cnVjdHVyYWwgVW5yZWFjaGFiaWxpdHkgaW4gRnV6emluZyBDb250ZXh0KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSB0aGUgdW5yZWFjaGFiaWxpdHkgb2YgdGhpcyBjb2RlIHBhdGggZHVyaW5nIGZ1enppbmcuIFRoZSBrZXkgaGVyZSBpcyB0byBkZXRlcm1pbmUgaWYgdGhlIHJlbGV2YW50IGhhcmR3YXJlIGlzIHN0cnVjdHVyYWxseSB1bmF2YWlsYWJsZSBpbiB0eXBpY2FsIGZ1enppbmcgZW52aXJvbm1lbnRzLCBuYW1lbHkgUUVNVS4KCkkmIzM5O20gbG9va2luZyBhdCB0aGUgY3JpdGVyaWE6IHRoaW5ncyB0aGF0IHJlcXVpcmUgZGVkaWNhdGVkIGhhcmR3YXJlIG5vdCBlbXVsYXRlZC4gSXQmIzM5O3MgY2xlYXIgdGhhdCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBHUFUgZHJpdmVycyAobGlrZSBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFuZCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDIG9yIFBDSWUgY2FyZHMgd291bGQgYmUgaW5hY2Nlc3NpYmxlLiBBbHNvLCBleGVjdXRpb24gcGF0aHMgdHJpZ2dlcmVkIG9ubHkgYnkgcGh5c2ljYWwgaG90LXVucGx1ZyBvciBtYW51YWwgZHJpdmVyIHVuYmluZGluZyBhcmUgb3V0LgoKTm93LCB0aGUgc3BlY2lmaWMgZnVuY3Rpb24gaW4gcXVlc3Rpb24gaXMgYGJyY21mX3BjaWVfcG1fZW50ZXJfRDNgIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jYC4gVGhpcyBpcyBhIHBvd2VyIG1hbmFnZW1lbnQgY2FsbGJhY2sg4oCTIHNwZWNpZmljYWxseSBhIHN1c3BlbmQvZnJlZXplIGhhbmRsZXIgd2l0aGluIGBzdHJ1Y3QgZGV2X3BtX29wcyBicmNtZl9wY2llZHJ2cl9wbWAg4oCTIGRlc2lnbmVkIGZvciBCcm9hZGNvbSBGdWxsTUFDIFBDSWUgd2lyZWxlc3MgZGV2aWNlcy4gSSYjMzk7bSBmYW1pbGlhciB3aXRoIHRoZXNlOyB0aGVzZSBhcmUgcGh5c2ljYWwgQnJvYWRjb20gUENJZSBoYXJkd2FyZSBkZXZpY2VzLCBsaWtlIHRoZSBCQ000MzYwMiwgQkNNNDM1MCwgYW5kIEJDTTQzNjUgc2VyaWVzLiBUaGUgY3J1Y2lhbCBwb2ludCBpcyB0aGF0IHRoaXMga2luZCBvZiBoYXJkd2FyZSAqaXNuJiMzOTt0KiBlbXVsYXRlZCBpbiB0aGUgc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzIHVzZWQgZm9yIGZ1enppbmcgYnkgc3l6a2FsbGVyLgoKVGhlcmVmb3JlLCBzaW5jZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhhcmR3YXJlIGRlcGVuZGVuY2llcyB0aGF0IFFFTVUgZG9lc24mIzM5O3Qgc2F0aXNmeSwgdGhpcyBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4KCkxldCYjMzk7cyBkbyBhIHF1aWNrIGRvdWJsZS1jaGVjayB0byBjb25maXJtLiBJJiMzOTtsbCBzdW1tYXJpemUgdGhlIGRldGFpbHMgYW5kIHJlcXVpcmVtZW50cyBmb3Igc2V0LXJlc3VsdHMuCgoxLiAgYFdvcnRoRnV6emluZzogZmFsc2VgIGlzIGNvcnJlY3QsIGJhc2VkIG9uIHRoZSBhYm92ZS4KMi4gIGBGb2N1c1N5bWJvbHM6IFtdYCBtYWtlcyBzZW5zZS4gTm8gc3BlY2lmaWMgc3ltYm9scyBhcmUgcmVsZXZhbnQsIGFzIHRoZSBpc3N1ZSBpcyB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgcmVxdWlyZW1lbnRzLCBub3QgYSBzcGVjaWZpYyBmdW5jdGlvbiB3aXRoaW4gdGhlIG1vZHVsZS4KMy4gIGBFbmFibGVDb25maWdzOiBbXWAg4oCTIGFnYWluLCB0aGlzIGFsaWducy4gTm8gc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgYXJlIG5lZWRlZCBmb3IgdGhpcyB0byBiZSB1bnJlYWNoYWJsZS4KNC4gIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6IHRoZSBwYXRjaCBtb2RpZmllcyBhIHBvd2VyIG1hbmFnZW1lbnQgZnVuY3Rpb24gZm9yIEJyb2FkY29tIFBDSWUgd2lyZWxlc3MgZGV2aWNlcyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuCgpFdmVyeXRoaW5nIGNoZWNrcyBvdXQuIEkmIzM5O20gY29uZmlkZW50IGluIG15IGFuYWx5c2lzLiBJJiMzOTtsbCBwcm9jZWVkIHdpdGggY2FsbGluZyBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxOTowNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGJyY21mX3BjaWVfcG1fZW50ZXJfRDMoKSBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLCB3aGljaCBpcyBhIHBvd2VyIG1hbmFnZW1lbnQgc3VzcGVuZC9mcmVlemUgY2FsbGJhY2sgZm9yIEJyb2FkY29tIEZ1bGxNQUMgUENJZSB3aXJlbGVzcyBOSUNzLiBUaGlzIGNvZGUgcmVxdWlyZXMgcGh5c2ljYWwgQnJvYWRjb20gUENJZSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIGFuZCBpcyB0aGVyZWZvcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYnJjbWZfcGNpZV9wbV9lbnRlcl9EMygpIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMsIHdoaWNoIGlzIGEgcG93ZXIgbWFuYWdlbWVudCBzdXNwZW5kL2ZyZWV6ZSBjYWxsYmFjayBmb3IgQnJvYWRjb20gRnVsbE1BQyBQQ0llIHdpcmVsZXNzIE5JQ3MuIFRoaXMgY29kZSByZXF1aXJlcyBwaHlzaWNhbCBCcm9hZGNvbSBQQ0llIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgYW5kIGlzIHRoZXJlZm9yZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAxOTowNDwvdGQ+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+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDhUMTk6MDM6NDYuMjc0NjQ4NDY5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjYwMDgwMzA5NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBicmNtZl9wY2llX3BtX2VudGVyX0QzKCkgaW4gZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYywgd2hpY2ggaXMgYSBwb3dlciBtYW5hZ2VtZW50IHN1c3BlbmQvZnJlZXplIGNhbGxiYWNrIGZvciBCcm9hZGNvbSBGdWxsTUFDIFBDSWUgd2lyZWxlc3MgTklDcy4gVGhpcyBjb2RlIHJlcXVpcmVzIHBoeXNpY2FsIEJyb2FkY29tIFBDSWUgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMgKFFFTVUvR0NFKSBhbmQgaXMgdGhlcmVmb3JlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE5OjAzOjQ2LjI3NDY1NDU0OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI5NTc2MTA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjc2N2NhNDdmMWExYmY0Njk1ZDA0Njk4OGM5N2FmYTdmN2ZlNDliYVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIFNlcCA4IDE5OjAzOjQ1IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jXFxuaW5kZXggNTVmNGQ3Yjk3MGYyOC4uYzFhMDI5ZDg2YzBmOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuY1xcbkBAIC0yNjUzLDggKzI2NTMsMTMgQEAgc3RhdGljIGludCBicmNtZl9wY2llX3BtX2VudGVyX0QzKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0XFx0XFx0ICAgQlJDTUZfUENJRV9NQkRBVEFfVElNRU9VVCk7XFxuIFxcdGlmICghZGV2aW5mby1cXHUwMDNlbWJkYXRhX2NvbXBsZXRlZCkge1xcbiBcXHRcXHRicmNtZl9lcnIoYnVzLCBcXFwiVGltZW91dCBvbiByZXNwb25zZSBmb3IgZW50ZXJpbmcgRDMgc3Vic3RhdGVcXFxcblxcXCIpO1xcbi1cXHRcXHRicmNtZl9idXNfY2hhbmdlX3N0YXRlKGJ1cywgQlJDTUZfQlVTX1VQKTtcXG4tXFx0XFx0cmV0dXJuIC1FSU87XFxuK1xcbitcXHRcXHRpZiAoZGV2aW5mby1cXHUwMDNld293bF9lbmFibGVkKSB7XFxuK1xcdFxcdFxcdGJyY21mX2J1c19jaGFuZ2Vfc3RhdGUoYnVzLCBCUkNNRl9CVVNfVVApO1xcbitcXHRcXHRcXHRyZXR1cm4gLUVJTztcXG4rXFx0XFx0fVxcbitcXG4rXFx0XFx0YnJjbWZfZGJnKFBDSUUsIFxcXCJObyBEMyBBQ0ssIGNvbnRpbnVpbmcgdG8gcG93ZXIgdGhlIGRldmljZSBvZmZcXFxcblxcXCIpO1xcbiBcXHR9XFxuIFxcbiBcXHRkZXZpbmZvLVxcdTAwM2VzdGF0ZSA9IEJSQ01GTUFDX1BDSUVfU1RBVEVfRE9XTjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTk6MDM6NDYuODA1MTgyNzIzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo2NTQ3NzQ3OTQ5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYnJjbWZfcGNpZV9wbV9lbnRlcl9EMygpIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMsIHdoaWNoIGlzIGEgcG93ZXIgbWFuYWdlbWVudCBzdXNwZW5kL2ZyZWV6ZSBjYWxsYmFjayBmb3IgQnJvYWRjb20gRnVsbE1BQyBQQ0llIHdpcmVsZXNzIE5JQ3MuIFRoaXMgY29kZSByZXF1aXJlcyBwaHlzaWNhbCBCcm9hZGNvbSBQQ0llIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgYW5kIGlzIHRoZXJlZm9yZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDI3NjdjYTQ3ZjFhMWJmNDY5NWQwNDY5ODhjOTdhZmE3ZjdmZTQ5YmFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDE5OjAzOjQ1IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmNcbmluZGV4IDU1ZjRkN2I5NzBmMjguLmMxYTAyOWQ4NmMwZjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jXG5AQCAtMjY1Myw4ICsyNjUzLDEzIEBAIHN0YXRpYyBpbnQgYnJjbWZfcGNpZV9wbV9lbnRlcl9EMyhzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRcdFx0ICAgQlJDTUZfUENJRV9NQkRBVEFfVElNRU9VVCk7XG4gXHRpZiAoIWRldmluZm8tXHUwMDNlbWJkYXRhX2NvbXBsZXRlZCkge1xuIFx0XHRicmNtZl9lcnIoYnVzLCBcIlRpbWVvdXQgb24gcmVzcG9uc2UgZm9yIGVudGVyaW5nIEQzIHN1YnN0YXRlXFxuXCIpO1xuLVx0XHRicmNtZl9idXNfY2hhbmdlX3N0YXRlKGJ1cywgQlJDTUZfQlVTX1VQKTtcbi1cdFx0cmV0dXJuIC1FSU87XG4rXG4rXHRcdGlmIChkZXZpbmZvLVx1MDAzZXdvd2xfZW5hYmxlZCkge1xuK1x0XHRcdGJyY21mX2J1c19jaGFuZ2Vfc3RhdGUoYnVzLCBCUkNNRl9CVVNfVVApO1xuK1x0XHRcdHJldHVybiAtRUlPO1xuK1x0XHR9XG4rXG4rXHRcdGJyY21mX2RiZyhQQ0lFLCBcIk5vIEQzIEFDSywgY29udGludWluZyB0byBwb3dlciB0aGUgZGV2aWNlIG9mZlxcblwiKTtcbiBcdH1cbiBcbiBcdGRldmluZm8tXHUwMDNlc3RhdGUgPSBCUkNNRk1BQ19QQ0lFX1NUQVRFX0RPV047XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxOTowMzo0Ni44MDUxODQyNjNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MjEzMTUzMTQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246XG5cbioqRnV6emluZyBGZWFzaWJpbGl0eSBBc3Nlc3NtZW50OiBicmNtZl9wY2llX3BtX2VudGVyX0QzKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIGZpZ3VyZSBvdXQgaWYgaXQncyBhIGdvb2QgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBUaGUgdGFyZ2V0IGlzIHRoZSBgYnJjbWZfcGNpZV9wbV9lbnRlcl9EM2AgZnVuY3Rpb24gd2l0aGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jYC4gVGhhdCdzIGEgUENJIEV4cHJlc3MgZHJpdmVyIGZ1bmN0aW9uIHJlbGF0ZWQgdG8gcG93ZXIgbWFuYWdlbWVudCBmb3IgdGhlIEJyb2FkY29tIHdpcmVsZXNzIGludGVyZmFjZS4gTXkgZmlyc3Qgc3RlcCBpcyB0byBxdWlja2x5IGdldCBjb250ZXh0LiBJJ2xsIHVzZSBteSBlc3RhYmxpc2hlZCB3b3JrZmxvdyAtIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBnZXQgdGhlIGxheSBvZiB0aGUgbGFuZCwgdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlLCBhbmQgc2VlIGhvdyBgYnJjbWZfcGNpZV9wbV9lbnRlcl9EM2AgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbS4gSSdsbCBiZSBsb29raW5nIGZvciBwb3RlbnRpYWwgaW5wdXRzLCBjb250cm9sIGZsb3cgdGhhdCBjb3VsZCBiZSBtYW5pcHVsYXRlZCwgYW5kIGFueXRoaW5nIHRoYXQgbWlnaHQgYmUgcHJvbmUgdG8gZWRnZS1jYXNlIGhhbmRsaW5nLiBCYXNpY2FsbHksIG15IGluaXRpYWwgZ29hbCBpcyB0byBidWlsZCBhbiB1bmRlcnN0YW5kaW5nIGZvciB3aGV0aGVyIHRoaXMgYXJlYSBpcyBsaWtlbHkgdG8gaGF2ZSBzdWJ0bGUgaW50ZXJhY3Rpb25zIGJldHdlZW4gUENJLCBwb3dlciBtYW5hZ2VtZW50LCBhbmQgd2lyZWxlc3MgZGV2aWNlIHN0YXRlcyB0aGF0IGNvdWxkIGxlYWQgdG8gZXhwbG9pdGFibGUgYnVncy4gSeKAmWxsIG1ha2UgYSBjYWxsIG9uIGZ1enppbmcgdGhpcyBhcmVhIG9yIG1vdmluZyBvbiB0byBhbm90aGVyIHBvdGVudGlhbCB0YXJnZXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNDcsIk91dHB1dFRva2VucyI6NTUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE5OjA0OjI4LjkzNjcxODg1NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NDY2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI2NDAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI2NDA6XFx0XFxuMjY0MTpcXHRcXHRicmNtZl9kYmcoUENJRSwgXFxcIkVudGVyXFxcXG5cXFwiKTtcXG4yNjQyOlxcdFxcbjI2NDM6XFx0XFx0YnVzID0gZGV2X2dldF9kcnZkYXRhKGRldik7XFxuMjY0NDpcXHRcXHRkZXZpbmZvID0gYnVzLVxcdTAwM2VidXNfcHJpdi5wY2llLVxcdTAwM2VkZXZpbmZvO1xcbjI2NDU6XFx0XFxuMjY0NjpcXHRcXHRicmNtZl9wY2llX2Z3Y29uX3RpbWVyKGRldmluZm8sIGZhbHNlKTtcXG4yNjQ3OlxcdFxcdGJyY21mX2J1c19jaGFuZ2Vfc3RhdGUoYnVzLCBCUkNNRl9CVVNfRE9XTik7XFxuMjY0ODpcXHRcXG4yNjQ5OlxcdFxcdGRldmluZm8tXFx1MDAzZW1iZGF0YV9jb21wbGV0ZWQgPSBmYWxzZTtcXG4yNjUwOlxcdFxcdGJyY21mX3BjaWVfc2VuZF9tYl9kYXRhKGRldmluZm8sIEJSQ01GX0gyRF9IT1NUX0QzX0lORk9STSk7XFxuMjY1MTpcXHRcXG4yNjUyOlxcdFxcdHdhaXRfZXZlbnRfdGltZW91dChkZXZpbmZvLVxcdTAwM2VtYmRhdGFfcmVzcF93YWl0LCBkZXZpbmZvLVxcdTAwM2VtYmRhdGFfY29tcGxldGVkLFxcbjI2NTM6XFx0XFx0XFx0XFx0ICAgQlJDTUZfUENJRV9NQkRBVEFfVElNRU9VVCk7XFxuMjY1NDpcXHRcXHRpZiAoIWRldmluZm8tXFx1MDAzZW1iZGF0YV9jb21wbGV0ZWQpIHtcXG4yNjU1OlxcdFxcdFxcdGJyY21mX2VycihidXMsIFxcXCJUaW1lb3V0IG9uIHJlc3BvbnNlIGZvciBlbnRlcmluZyBEMyBzdWJzdGF0ZVxcXFxuXFxcIik7XFxuMjY1NjpcXHRcXG4yNjU3OlxcdFxcdFxcdGlmIChkZXZpbmZvLVxcdTAwM2V3b3dsX2VuYWJsZWQpIHtcXG4yNjU4OlxcdFxcdFxcdFxcdGJyY21mX2J1c19jaGFuZ2Vfc3RhdGUoYnVzLCBCUkNNRl9CVVNfVVApO1xcbjI2NTk6XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU87XFxuMjY2MDpcXHRcXHRcXHR9XFxuMjY2MTpcXHRcXG4yNjYyOlxcdFxcdFxcdGJyY21mX2RiZyhQQ0lFLCBcXFwiTm8gRDMgQUNLLCBjb250aW51aW5nIHRvIHBvd2VyIHRoZSBkZXZpY2Ugb2ZmXFxcXG5cXFwiKTtcXG4yNjYzOlxcdFxcdH1cXG4yNjY0OlxcdFxcbjI2NjU6XFx0XFx0ZGV2aW5mby1cXHUwMDNlc3RhdGUgPSBCUkNNRk1BQ19QQ0lFX1NUQVRFX0RPV047XFxuMjY2NjpcXHRcXG4yNjY3OlxcdFxcdHJldHVybiAwO1xcbjI2Njg6XFx0fVxcbjI2Njk6XFx0XFxuMjY3MDpcXHRcXG4yNjcxOlxcdHN0YXRpYyBpbnQgYnJjbWZfcGNpZV9wbV9sZWF2ZV9EMyhzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuMjY3MjpcXHR7XFxuMjY3MzpcXHRcXHRzdHJ1Y3QgYnJjbWZfcGNpZWRldl9pbmZvICpkZXZpbmZvO1xcbjI2NzQ6XFx0XFx0c3RydWN0IGJyY21mX2J1cyAqYnVzO1xcbjI2NzU6XFx0XFx0c3RydWN0IHBjaV9kZXYgKnBkZXY7XFxuMjY3NjpcXHRcXHRpbnQgZXJyO1xcbjI2Nzc6XFx0XFxuMjY3ODpcXHRcXHRicmNtZl9kYmcoUENJRSwgXFxcIkVudGVyXFxcXG5cXFwiKTtcXG4yNjc5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxOTowNDoyOC45MzY4OTUzNDRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNzgxMDg4MTE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgYnJjbWZfcGNpZV9wbV9lbnRlcl9EMyBDYWxscyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgYXJvdW5kIGBicmNtZl9wY2llX3BtX2VudGVyX0QzYC4gSSdtIHN0YXJ0aW5nIHdpdGggdGhlIG9idmlvdXM6IHdoZXJlIGlzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgaW52b2tlZCB3aXRoaW4gdGhlIGJyb2FkZXIgZHJpdmVyIGNvbnRleHQ/IEknbSB0aGlua2luZyBJIG5lZWQgdG8gZmluZCBhbGwgdGhlIGNhbGwgc2l0ZXMgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBlbnRyeSBwb2ludHMgYW5kIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoaXMgcG93ZXIgbWFuYWdlbWVudCByb3V0aW5lIGlzIHRyaWdnZXJlZC4gSSdtIGFzc3VtaW5nIHRoYXQgaXQgaXMgbGlua2VkIHRvIHBvd2VyIG1hbmFnZW1lbnQsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIEQtc3RhdGVzIHRvIGJlIHN1cmUuIFRpbWUgdG8gZmlyZSB1cCB0aGUgdG9vbHMgYW5kIHRyYWNlIHRoZSByZWZlcmVuY2VzLiBMZXQncyBzZWUgd2hhdCB0aGUgY29kZSBoYXMgdG8gc2F5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTA1LCJPdXRwdXRUb2tlbnMiOjU1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxOTowNDozMC43MTc5ODYzNzhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ1NzE1ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYnJjbWZfcGNpZV9wbV9lbnRlcl9EM1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MjU4Mz1icmNtZl9wY2llX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjYzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI2MzY6c3RhdGljIGludCBicmNtZl9wY2llX3BtX2VudGVyX0QzKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI2Mzcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNzEzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBicmNtZl9wY2llZHJ2cl9wbSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI3MTQ6XFx0LnN1c3BlbmQgPSBicmNtZl9wY2llX3BtX2VudGVyX0QzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjcxNS1cXHQucmVzdW1lID0gYnJjbWZfcGNpZV9wbV9sZWF2ZV9EMyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI3MTY6XFx0LmZyZWV6ZSA9IGJyY21mX3BjaWVfcG1fZW50ZXJfRDMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNzE3LVxcdC5yZXN0b3JlID0gYnJjbWZfcGNpZV9wbV9sZWF2ZV9EMyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMTk6MDQ6MzAuNzcyNTY0MzQ2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTcwNzIwMzk4MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGBicmNtZl9wY2llX3BtX2VudGVyX0QzYCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBicmNtZl9wY2llX3BtX2VudGVyX0QzYCwgc3BlY2lmaWNhbGx5IGluIGBicmNtZm1hYy9wY2llLmNgIGZvciB0aG9zZSBCcm9hZGNvbSBQQ0llIHdpcmVsZXNzIGNhcmRzLCB0aGUgYEJSQ01GTUFDX1BDSUVgIG9uZXMuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHRoaXMgaXMgYSBQQ0llIGhhcmR3YXJlIGRyaXZlci5cblxuVGhlIG5leHQgcXVlc3Rpb24gSSBoYXZlIGlzLCBhcmUgdGhlc2UgQnJvYWRjb20gUENJZSB3aXJlbGVzcyBjYXJkcyBldmVuIGVtdWxhdGVkIGluIHRoZSBzdGFuZGFyZCBRRU1VIG9yIHN5emthbGxlciBlbnZpcm9ubWVudHM/IEkgcmVtZW1iZXIgc2VlaW5nIHNvbWV0aGluZyBhYm91dCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUsIHNvIGxldCBtZSBxdWlja2x5IHJlZmVyIGJhY2sgdG8gU2VjdGlvbiAyIG9mIHRoZSBpbnN0cnVjdGlvbnMuIEFoYSwgdGhlcmUgaXQgaXM6IFwiVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMuLi4gcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIlxuXG5BbHJpZ2h0LCBsZXQncyBjb25maXJtIHdoZXRoZXIgYGJyY21mbWFjYCBoYXMgc3VwcG9ydCBmb3IgVVNCLCBTRElPLCBvciBQQ0llLiBBIHF1aWNrIGdsYW5jZSB0ZWxscyBtZSB0aGF0IGBicmNtZm1hY2AgY292ZXJzIFVTQiwgU0RJTywgYW5kIFBDSWUuIFRoYXQncyBnb29kLiBOb3csIHNwZWNpZmljYWxseSwgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmNgIGlzIHRoZSBQQ0kvUENJZSBidXMgZHJpdmVyIGZvciBCcm9hZGNvbSdzIEZNQUMgY2hpcHMsIGxpa2UgdGhlIEJDTTQzNjAyIG9yIEJDTTQzNTAuIE15IHJlYWRpbmcgdGVsbHMgbWUgdGhpcyBQQ0llIGhhcmR3YXJlIHdpbGwgcmVxdWlyZSBhY3R1YWwgQnJvYWRjb20gUENJZSBoYXJkd2FyZSBhbmQgd29uJ3QgYmUgZW11bGF0ZWQgaW4gUUVNVS4gVGhhdCBpcyBwcm9ibGVtYXRpYyBmb3IgbXkgdXNlIGNhc2UuXG5cbkFuZCwgb2YgY291cnNlLCB0aGUgYGJyY21mX3BjaWVfcG1fZW50ZXJfRDNgIGZ1bmN0aW9uIGlzIGEgc3VzcGVuZC9mcmVlemUgUE0gY2FsbGJhY2sgc3BlY2lmaWNhbGx5IGZvciB0aGUgUENJZSBkcml2ZXIsIHRoZSBgYnJjbWZfcGNpZWRydnJfcG1gLlxuXG5Ob3csIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbSBnb2luZyB0byBxdWlja2x5IGdsYW5jZSBhdCB0aGUgYEtjb25maWdgIGZvciBgQlJDTUZNQUNfUENJRWAgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDc5NSwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxOTowNDo0Ny44NDQ2MDY0ODNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcyNzA3NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlJDTUZNQUNfUENJRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnPTI5PWNvbmZpZyBCUkNNRk1BQ19VU0JcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjQwOmNvbmZpZyBCUkNNRk1BQ19QQ0lFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctNDEtXFx0Ym9vbCBcXFwiUENJRSBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL01ha2VmaWxlPTM5PWJyY21mbWFjLSQoQ09ORklHX0JSQ01GTUFDX1VTQikgKz0gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9NYWtlZmlsZS00MC1cXHRcXHR1c2Iub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9NYWtlZmlsZTo0MTpicmNtZm1hYy0kKENPTkZJR19CUkNNRk1BQ19QQ0lFKSArPSBcXFxcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL01ha2VmaWxlLTQyLVxcdFxcdHBjaWUub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oPTMzNz1zdGF0aWMgaW5saW5lIGludCBicmNtZl91c2JfcmVnaXN0ZXIodm9pZCkgeyByZXR1cm4gMDsgfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2J1cy5oLTMzOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvYnVzLmg6MzQwOiNpZmRlZiBDT05GSUdfQlJDTUZNQUNfUENJRVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9idXMuaC0zNDEtdm9pZCBicmNtZl9wY2llX2V4aXQodm9pZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTQ3PWVudW0gYnJjbWZfcGNpZV9zdGF0ZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzo0ODpcXHRCUkNNRk1BQ19QQ0lFX1NUQVRFX0RPV04sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzo0OTpcXHRCUkNNRk1BQ19QQ0lFX1NUQVRFX1VQXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy01MC19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz05NDE9c3RhdGljIGlycXJldHVybl90IGJyY21mX3BjaWVfaXNyX3RocmVhZChpbnQgaXJxLCB2b2lkICphcmcpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTk1NC1cXHRcXHRpZiAoc3RhdHVzIFxcdTAwMjYgZGV2aW5mby1cXHUwMDNlcmVnaW5mby1cXHUwMDNlaW50X2QyaF9kYikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6OTU1OlxcdFxcdFxcdGlmIChkZXZpbmZvLVxcdTAwM2VzdGF0ZSA9PSBCUkNNRk1BQ19QQ0lFX1NUQVRFX1VQKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtOTU2LVxcdFxcdFxcdFxcdGJyY21mX3Byb3RvX21zZ2J1Zl9yeF90cmlnZ2VyKFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy05NjAtXFx0YnJjbWZfcGNpZV9idXNfY29uc29sZV9yZWFkKGRldmluZm8sIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjk2MTpcXHRpZiAoZGV2aW5mby1cXHUwMDNlc3RhdGUgPT0gQlJDTUZNQUNfUENJRV9TVEFURV9VUClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTk2Mi1cXHRcXHRicmNtZl9wY2llX2ludHJfZW5hYmxlKGRldmluZm8pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0xMDIwPXN0YXRpYyBpbnQgYnJjbWZfcGNpZV9yaW5nX21iX3dyaXRlX3JwdHIodm9pZCAqY3R4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0xMDI1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6MTAyNjpcXHRpZiAoZGV2aW5mby1cXHUwMDNlc3RhdGUgIT0gQlJDTUZNQUNfUENJRV9TVEFURV9VUClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTEwMjctXFx0XFx0cmV0dXJuIC1FSU87XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTEwMzg9c3RhdGljIGludCBicmNtZl9wY2llX3JpbmdfbWJfd3JpdGVfd3B0cih2b2lkICpjdHgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTEwNDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoxMDQ0OlxcdGlmIChkZXZpbmZvLVxcdTAwM2VzdGF0ZSAhPSBCUkNNRk1BQ19QQ0lFX1NUQVRFX1VQKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMTA0NS1cXHRcXHRyZXR1cm4gLUVJTztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MTA1Nj1zdGF0aWMgaW50IGJyY21mX3BjaWVfcmluZ19tYl9yaW5nX2JlbGwodm9pZCAqY3R4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0xMDYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6MTA2MTpcXHRpZiAoZGV2aW5mby1cXHUwMDNlc3RhdGUgIT0gQlJDTUZNQUNfUENJRV9TVEFURV9VUClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTEwNjItXFx0XFx0cmV0dXJuIC1FSU87XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTEwNzI9c3RhdGljIGludCBicmNtZl9wY2llX3JpbmdfbWJfdXBkYXRlX3JwdHIodm9pZCAqY3R4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0xMDc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6MTA3ODpcXHRpZiAoZGV2aW5mby1cXHUwMDNlc3RhdGUgIT0gQlJDTUZNQUNfUENJRV9TVEFURV9VUClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTEwNzktXFx0XFx0cmV0dXJuIC1FSU87XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTEwOTA9c3RhdGljIGludCBicmNtZl9wY2llX3JpbmdfbWJfdXBkYXRlX3dwdHIodm9pZCAqY3R4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0xMDk1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6MTA5NjpcXHRpZiAoZGV2aW5mby1cXHUwMDNlc3RhdGUgIT0gQlJDTUZNQUNfUENJRV9TVEFURV9VUClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTEwOTctXFx0XFx0cmV0dXJuIC1FSU87XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTIxMzk9c3RhdGljIHZvaWQgYnJjbWZfcGNpZV9zZXR1cChzdHJ1Y3QgZGV2aWNlICpkZXYsIGludCByZXQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTIxODUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyMTg2OlxcdGRldmluZm8tXFx1MDAzZXN0YXRlID0gQlJDTUZNQUNfUENJRV9TVEFURV9VUDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTIxODctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jPTIzMTA9YnJjbWZfcGNpZV9md2Nvbl90aW1lcihzdHJ1Y3QgYnJjbWZfcGNpZWRldl9pbmZvICpkZXZpbmZvLCBib29sIGFjdGl2ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjMyMC1cXHQvKiBkb24ndCBzdGFydCB0aGUgdGltZXIgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjIzMjE6XFx0aWYgKGRldmluZm8tXFx1MDAzZXN0YXRlICE9IEJSQ01GTUFDX1BDSUVfU1RBVEVfVVAgfHxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTIzMjItXFx0ICAgICFkZXZpbmZvLVxcdTAwM2Vjb25zb2xlX2ludGVydmFsIHx8ICFCUkNNRl9GV0NPTl9PTigpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNTgzPWJyY21mX3BjaWVfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNTk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM6MjU5ODpcXHRkZXZpbmZvLVxcdTAwM2VzdGF0ZSA9IEJSQ01GTUFDX1BDSUVfU1RBVEVfRE9XTjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI1OTktXFx0aWYgKGRldmluZm8tXFx1MDAzZWNpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYz0yNjM2PXN0YXRpYyBpbnQgYnJjbWZfcGNpZV9wbV9lbnRlcl9EMyhzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLTI2NjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYzoyNjY1OlxcdGRldmluZm8tXFx1MDAzZXN0YXRlID0gQlJDTUZNQUNfUENJRV9TVEFURV9ET1dOO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjY2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmM9MjY3MT1zdGF0aWMgaW50IGJyY21mX3BjaWVfcG1fbGVhdmVfRDMoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuYy0yNjg5LVxcdFxcdGJyY21mX2RiZyhQQ0lFLCBcXFwiSG90IHJlc3VtZSwgY29udGludWUuLi4uXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jOjI2OTA6XFx0XFx0ZGV2aW5mby1cXHUwMDNlc3RhdGUgPSBCUkNNRk1BQ19QQ0lFX1NUQVRFX1VQO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMtMjY5MS1cXHRcXHRicmNtZl9wY2llX3NlbGVjdF9jb3JlKGRldmluZm8sIEJDTUFfQ09SRV9QQ0lFMik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5oLTQtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuaDo1OiNpZm5kZWYgQlJDTUZNQUNfUENJRV9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuaDo2OiNkZWZpbmUgQlJDTUZNQUNfUENJRV9IXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuaC03LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuaD05PXN0cnVjdCBicmNtZl9wY2llZGV2IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmgtMTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3BjaWUuaDoxNDojZW5kaWYgLyogQlJDTUZNQUNfUENJRV9IICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE5OjA0OjQ3Ljg5MTg4MjQ5NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQzOTA3MzkxODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgU3RydWN0dXJhbCBVbnJlYWNoYWJpbGl0eSBpbiBGdXp6aW5nIENvbnRleHQqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8gY29uZmlybSB0aGUgdW5yZWFjaGFiaWxpdHkgb2YgdGhpcyBjb2RlIHBhdGggZHVyaW5nIGZ1enppbmcuIFRoZSBrZXkgaGVyZSBpcyB0byBkZXRlcm1pbmUgaWYgdGhlIHJlbGV2YW50IGhhcmR3YXJlIGlzIHN0cnVjdHVyYWxseSB1bmF2YWlsYWJsZSBpbiB0eXBpY2FsIGZ1enppbmcgZW52aXJvbm1lbnRzLCBuYW1lbHkgUUVNVS5cblxuSSdtIGxvb2tpbmcgYXQgdGhlIGNyaXRlcmlhOiB0aGluZ3MgdGhhdCByZXF1aXJlIGRlZGljYXRlZCBoYXJkd2FyZSBub3QgZW11bGF0ZWQuIEl0J3MgY2xlYXIgdGhhdCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBHUFUgZHJpdmVycyAobGlrZSBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFuZCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDIG9yIFBDSWUgY2FyZHMgd291bGQgYmUgaW5hY2Nlc3NpYmxlLiBBbHNvLCBleGVjdXRpb24gcGF0aHMgdHJpZ2dlcmVkIG9ubHkgYnkgcGh5c2ljYWwgaG90LXVucGx1ZyBvciBtYW51YWwgZHJpdmVyIHVuYmluZGluZyBhcmUgb3V0LlxuXG5Ob3csIHRoZSBzcGVjaWZpYyBmdW5jdGlvbiBpbiBxdWVzdGlvbiBpcyBgYnJjbWZfcGNpZV9wbV9lbnRlcl9EM2AgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmNgLiBUaGlzIGlzIGEgcG93ZXIgbWFuYWdlbWVudCBjYWxsYmFjayDigJMgc3BlY2lmaWNhbGx5IGEgc3VzcGVuZC9mcmVlemUgaGFuZGxlciB3aXRoaW4gYHN0cnVjdCBkZXZfcG1fb3BzIGJyY21mX3BjaWVkcnZyX3BtYCDigJMgZGVzaWduZWQgZm9yIEJyb2FkY29tIEZ1bGxNQUMgUENJZSB3aXJlbGVzcyBkZXZpY2VzLiBJJ20gZmFtaWxpYXIgd2l0aCB0aGVzZTsgdGhlc2UgYXJlIHBoeXNpY2FsIEJyb2FkY29tIFBDSWUgaGFyZHdhcmUgZGV2aWNlcywgbGlrZSB0aGUgQkNNNDM2MDIsIEJDTTQzNTAsIGFuZCBCQ000MzY1IHNlcmllcy4gVGhlIGNydWNpYWwgcG9pbnQgaXMgdGhhdCB0aGlzIGtpbmQgb2YgaGFyZHdhcmUgKmlzbid0KiBlbXVsYXRlZCBpbiB0aGUgc3RhbmRhcmQgdmlydHVhbGl6ZWQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzIHVzZWQgZm9yIGZ1enppbmcgYnkgc3l6a2FsbGVyLlxuXG5UaGVyZWZvcmUsIHNpbmNlIHdlJ3JlIGRlYWxpbmcgd2l0aCBoYXJkd2FyZSBkZXBlbmRlbmNpZXMgdGhhdCBRRU1VIGRvZXNuJ3Qgc2F0aXNmeSwgdGhpcyBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cblxuTGV0J3MgZG8gYSBxdWljayBkb3VibGUtY2hlY2sgdG8gY29uZmlybS4gSSdsbCBzdW1tYXJpemUgdGhlIGRldGFpbHMgYW5kIHJlcXVpcmVtZW50cyBmb3Igc2V0LXJlc3VsdHMuXG5cbjEuICBgV29ydGhGdXp6aW5nOiBmYWxzZWAgaXMgY29ycmVjdCwgYmFzZWQgb24gdGhlIGFib3ZlLlxuMi4gIGBGb2N1c1N5bWJvbHM6IFtdYCBtYWtlcyBzZW5zZS4gTm8gc3BlY2lmaWMgc3ltYm9scyBhcmUgcmVsZXZhbnQsIGFzIHRoZSBpc3N1ZSBpcyB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgcmVxdWlyZW1lbnRzLCBub3QgYSBzcGVjaWZpYyBmdW5jdGlvbiB3aXRoaW4gdGhlIG1vZHVsZS5cbjMuICBgRW5hYmxlQ29uZmlnczogW11gIOKAkyBhZ2FpbiwgdGhpcyBhbGlnbnMuIE5vIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGFyZSBuZWVkZWQgZm9yIHRoaXMgdG8gYmUgdW5yZWFjaGFibGUuXG40LiAgVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogdGhlIHBhdGNoIG1vZGlmaWVzIGEgcG93ZXIgbWFuYWdlbWVudCBmdW5jdGlvbiBmb3IgQnJvYWRjb20gUENJZSB3aXJlbGVzcyBkZXZpY2VzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cblxuRXZlcnl0aGluZyBjaGVja3Mgb3V0LiBJJ20gY29uZmlkZW50IGluIG15IGFuYWx5c2lzLiBJJ2xsIHByb2NlZWQgd2l0aCBjYWxsaW5nIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4MzgsIk91dHB1dFRva2VucyI6MTI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDE5OjA0OjUyLjI4MjYyNzAxNFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxNTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGJyY21mX3BjaWVfcG1fZW50ZXJfRDMoKSBpbiBkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcGNpZS5jLCB3aGljaCBpcyBhIHBvd2VyIG1hbmFnZW1lbnQgc3VzcGVuZC9mcmVlemUgY2FsbGJhY2sgZm9yIEJyb2FkY29tIEZ1bGxNQUMgUENJZSB3aXJlbGVzcyBOSUNzLiBUaGlzIGNvZGUgcmVxdWlyZXMgcGh5c2ljYWwgQnJvYWRjb20gUENJZSBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cyAoUUVNVS9HQ0UpIGFuZCBpcyB0aGVyZWZvcmUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYnJjbWZfcGNpZV9wbV9lbnRlcl9EMygpIGluIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wY2llLmMsIHdoaWNoIGlzIGEgcG93ZXIgbWFuYWdlbWVudCBzdXNwZW5kL2ZyZWV6ZSBjYWxsYmFjayBmb3IgQnJvYWRjb20gRnVsbE1BQyBQQ0llIHdpcmVsZXNzIE5JQ3MuIFRoaXMgY29kZSByZXF1aXJlcyBwaHlzaWNhbCBCcm9hZGNvbSBQQ0llIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzIChRRU1VL0dDRSkgYW5kIGlzIHRoZXJlZm9yZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQxOTowNDo1Mi4yODI2NjUyNTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowvdcnv[1] Phase: Running StartedAt: 2026-09-08 19:05:03 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowvdcnv[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-08 19:05:03 +0000 UTC FinishedAt: 2026-09-08 19:05:08 +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,}