Name: series-workflow56jcx Phase: Failed StartedAt: 2026-07-14 20:08:32 +0000 UTC FinishedAt: 2026-07-14 20:39:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow56jcx[0] Phase: Succeeded StartedAt: 2026-07-14 20:08:32 +0000 UTC FinishedAt: 2026-07-14 20:39:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow56jcx[0].run-triage Phase: Succeeded StartedAt: 2026-07-14 20:08:32 +0000 UTC FinishedAt: 2026-07-14 20:39:18 +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+CgkJCTx0ZD4yMDI2LzA3LzE0IDIwOjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBxdWlyayBmb3IgYSBzcGVjaWZpYyBTRlAgbW9kdWxlIChGSU5JU0FSIENPUlAuIEZDTEY4NTIxUDJCVEwpLiBUaGUgU0ZQIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlbGllcyBvbiBkZXZpY2UgdHJlZSBpbnN0YW50aWF0aW9uIGFuZCBJMkMgY29tbXVuaWNhdGlvbiB0byByZWFkIHRoZSBtb2R1bGUmIzM5O3MgRUVQUk9NLiBJbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UsIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uIG9yIGRldmljZSB0cmVlIGluamVjdGlvbiBmb3IgdGhpcyBTRlAgbW9kdWxlIGFuZCBpdHMgSTJDIEVFUFJPTSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIwOjM4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTBhM2Q4MzdmNzBmMzdjYzU4MmU4N2Y0MGVjYmMyOGM4MzRlYTYzOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDIwOjM4OjIwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9zZnAuYyBiL2RyaXZlcnMvbmV0L3BoeS9zZnAuY1xuaW5kZXggZjUyMDIwNjczNGRhYWEuLjY1ZjNiYjJiY2FmMzUxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3NmcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvc2ZwLmNcbkBAIC00NzcsNiAmIzQzOzQ3NywxNiBAQCBzdGF0aWMgdm9pZCBzZnBfcXVpcmtfMjUwMGJhc2V4KGNvbnN0IHN0cnVjdCBzZnBfZWVwcm9tX2lkICppZCxcbiBcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYLCBjYXBzLVx1MDAzZWludGVyZmFjZXMpO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgc2ZwX3F1aXJrX25vX3NnbWlpKGNvbnN0IHN0cnVjdCBzZnBfZWVwcm9tX2lkICppZCxcbiYjNDM7XHRcdFx0ICAgICAgIHN0cnVjdCBzZnBfbW9kdWxlX2NhcHMgKmNhcHMpXG4mIzQzO3tcbiYjNDM7XHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfMTAwMGJhc2VUX0hhbGZfQklULFxuJiM0MztcdFx0XHQgICBjYXBzLVx1MDAzZWxpbmtfbW9kZXMpO1xuJiM0MztcdGxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwYmFzZVRfRnVsbF9CSVQsXG4mIzQzO1x0XHRcdCAgIGNhcHMtXHUwMDNlbGlua19tb2Rlcyk7XG4mIzQzO1x0X19jbGVhcl9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJLCBjYXBzLVx1MDAzZWludGVyZmFjZXMpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIHNmcF9xdWlya19kaXNhYmxlX2F1dG9uZWcoY29uc3Qgc3RydWN0IHNmcF9lZXByb21faWQgKmlkLFxuIFx0XHRcdFx0ICAgICAgc3RydWN0IHNmcF9tb2R1bGVfY2FwcyAqY2FwcylcbiB7XG5AQCAtNTM4LDYgJiM0Mzs1NDgsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzZnBfcXVpcmsgc2ZwX3F1aXJrc1tdID0ge1xuIFx0Ly8gUEhZLlxuIFx0U0ZQX1FVSVJLX0YoXCYjMzQ7RlNcJiMzNDssIFwmIzM0O1NGUC0xMEctVFwmIzM0Oywgc2ZwX2ZpeHVwX2ZzXzEwZ3QpLFxuIFxuJiM0MztcdC8vIFRoZXNlIGFyZSBzb2xkIGFzIDEwMDBiYXNlLVggY29tcGF0aWJsZS4gVGh1cywgbWFrZSBzdXJlIHdlIGRvbiYjMzk7dFxuJiM0MztcdC8vIHVzZSBTR01JSS5cbiYjNDM7XHRTRlBfUVVJUktfUyhcJiMzNDtGSU5JU0FSIENPUlAuXCYjMzQ7LCBcJiMzNDtGQ0xGODUyMVAyQlRMXCYjMzQ7LCBzZnBfcXVpcmtfbm9fc2dtaWkpLFxuJiM0MztcbiBcdC8vIEZpYmVyc3RvcmUgU0ZQLTIuNUctVCBhbmQgU0ZQLTEwR00tVCB1c2VzIFJvbGxiYWxsIHByb3RvY29sIHRvIHRhbGtcbiBcdC8vIHRvIHRoZSBQSFkgYW5kIG5lZWRzIDQgc2VjIHdhaXQgYmVmb3JlIHByb2JpbmcgdGhlIFBIWS5cbiBcdFNGUF9RVUlSS19GKFwmIzM0O0ZTXCYjMzQ7LCBcJiMzNDtTRlAtMi41Ry1UXCYjMzQ7LCBzZnBfZml4dXBfcm9sbGJhbGxfd2FpdDRzKSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDozODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcXVpcmsgZm9yIGEgc3BlY2lmaWMgU0ZQIG1vZHVsZSAoRklOSVNBUiBDT1JQLiBGQ0xGODUyMVAyQlRMKS4gVGhlIFNGUCBkcml2ZXIgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZWxpZXMgb24gZGV2aWNlIHRyZWUgaW5zdGFudGlhdGlvbiBhbmQgSTJDIGNvbW11bmljYXRpb24gdG8gcmVhZCB0aGUgbW9kdWxlJiMzOTtzIEVFUFJPTS4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFLCB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiBvciBkZXZpY2UgdHJlZSBpbmplY3Rpb24gZm9yIHRoaXMgU0ZQIG1vZHVsZSBhbmQgaXRzIEkyQyBFRVBST00sIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGFuZCBjYW5ub3QgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTBhM2Q4MzdmNzBmMzdjYzU4MmU4N2Y0MGVjYmMyOGM4MzRlYTYzOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDE0IDIwOjM4OjIwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3NmcC5jIGIvZHJpdmVycy9uZXQvcGh5L3NmcC5jCmluZGV4IGY1MjAyMDY3MzRkYWFhLi42NWYzYmIyYmNhZjM1MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3NmcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9zZnAuYwpAQCAtNDc3LDYgJiM0Mzs0NzcsMTYgQEAgc3RhdGljIHZvaWQgc2ZwX3F1aXJrXzI1MDBiYXNleChjb25zdCBzdHJ1Y3Qgc2ZwX2VlcHJvbV9pZCAqaWQsCiAJX19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgsIGNhcHMtJmd0O2ludGVyZmFjZXMpOwogfQogCiYjNDM7c3RhdGljIHZvaWQgc2ZwX3F1aXJrX25vX3NnbWlpKGNvbnN0IHN0cnVjdCBzZnBfZWVwcm9tX2lkICppZCwKJiM0MzsJCQkgICAgICAgc3RydWN0IHNmcF9tb2R1bGVfY2FwcyAqY2FwcykKJiM0Mzt7CiYjNDM7CWxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwYmFzZVRfSGFsZl9CSVQsCiYjNDM7CQkJICAgY2Fwcy0mZ3Q7bGlua19tb2Rlcyk7CiYjNDM7CWxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwYmFzZVRfRnVsbF9CSVQsCiYjNDM7CQkJICAgY2Fwcy0mZ3Q7bGlua19tb2Rlcyk7CiYjNDM7CV9fY2xlYXJfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSwgY2Fwcy0mZ3Q7aW50ZXJmYWNlcyk7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgc2ZwX3F1aXJrX2Rpc2FibGVfYXV0b25lZyhjb25zdCBzdHJ1Y3Qgc2ZwX2VlcHJvbV9pZCAqaWQsCiAJCQkJICAgICAgc3RydWN0IHNmcF9tb2R1bGVfY2FwcyAqY2FwcykKIHsKQEAgLTUzOCw2ICYjNDM7NTQ4LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2ZwX3F1aXJrIHNmcF9xdWlya3NbXSA9IHsKIAkvLyBQSFkuCiAJU0ZQX1FVSVJLX0YoJiMzNDtGUyYjMzQ7LCAmIzM0O1NGUC0xMEctVCYjMzQ7LCBzZnBfZml4dXBfZnNfMTBndCksCiAKJiM0MzsJLy8gVGhlc2UgYXJlIHNvbGQgYXMgMTAwMGJhc2UtWCBjb21wYXRpYmxlLiBUaHVzLCBtYWtlIHN1cmUgd2UgZG9uJiMzOTt0CiYjNDM7CS8vIHVzZSBTR01JSS4KJiM0MzsJU0ZQX1FVSVJLX1MoJiMzNDtGSU5JU0FSIENPUlAuJiMzNDssICYjMzQ7RkNMRjg1MjFQMkJUTCYjMzQ7LCBzZnBfcXVpcmtfbm9fc2dtaWkpLAomIzQzOwogCS8vIEZpYmVyc3RvcmUgU0ZQLTIuNUctVCBhbmQgU0ZQLTEwR00tVCB1c2VzIFJvbGxiYWxsIHByb3RvY29sIHRvIHRhbGsKIAkvLyB0byB0aGUgUEhZIGFuZCBuZWVkcyA0IHNlYyB3YWl0IGJlZm9yZSBwcm9iaW5nIHRoZSBQSFkuCiAJU0ZQX1FVSVJLX0YoJiMzNDtGUyYjMzQ7LCAmIzM0O1NGUC0yLjVHLVQmIzM0Oywgc2ZwX2ZpeHVwX3JvbGxiYWxsX3dhaXQ0cyksCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIwOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMTQKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgU0ZQIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZHJpdmVycy9uZXQvcGh5L3NmcC5jYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaDsgdGhleSYjMzk7cmUgYWRkaW5nIGEgbmV3IHF1aXJrLCBgc2ZwX3F1aXJrX25vX3NnbWlpYCwgYW5kIGl0JiMzOTtzIHNwZWNpZmljYWxseSBmb3IgYSAmIzM0O0ZJTklTQVIgQ09SUC4mIzM0OyAmIzM0O0ZDTEY4NTIxUDJCVEwmIzM0OyBtb2R1bGUuIE5vdGhpbmcgdG9vIGNvbXBsZXggZnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiwgdGhvdWdoLCBpcyBob3cgdGVzdGFibGUgaXMgdGhpcyBjaGFuZ2U/IENhbiB0aGlzIHF1aXJrIGV2ZW4gYmUgdHJpZ2dlcmVkIHdpdGhpbiBhIHZpcnR1YWxpemVkIHNldHVwPyBTRlAgbW9kdWxlcywgYnkgdGhlaXIgbmF0dXJlLCBhcmUgdHlwaWNhbGx5IHBoeXNpY2FsIGhhcmR3YXJlIGNvbXBvbmVudHMsIHJpZ2h0PwoKSSBuZWVkIHRvIGFzc2VzcyB0aGUgZnV6emFiaWxpdHkgb2YgdGhlIFNGUCBkcml2ZXIuIENhbiB3ZSBnZXQgZW5vdWdoIGNvdmVyYWdlIGJ5IGZ1enppbmcsIGdpdmVuIHRoYXQgdGhlc2UgbW9kdWxlcyBhcmUgcGh5c2ljYWw/IFBlcmhhcHMgd2UgY291bGQgZW11bGF0ZSB0aGVzZSBTRlAgbW9kdWxlczsgdGhhdCBjb3VsZCBiZSBhIHBvc3NpYmxlIHRlc3Qgc3RyYXRlZ3kuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYGRyaXZlcnMvbmV0L3BoeS9zZnAuY2AgYW5kIHNlZSB3aGF0IG9wdGlvbnMgYXJlIHRoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGRyaXZlcuKAmXMgaW50ZXJmYWNlIGJldHRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZnBfcXVpcmtfbm9fc2dtaWkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3NmcC5jPTQ3Mj1zdGF0aWMgdm9pZCBzZnBfcXVpcmtfMjUwMGJhc2V4KGNvbnN0IHN0cnVjdCBzZnBfZWVwcm9tX2lkICppZCxcbi0tXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtNDc5LVxuZHJpdmVycy9uZXQvcGh5L3NmcC5jOjQ4MDpzdGF0aWMgdm9pZCBzZnBfcXVpcmtfbm9fc2dtaWkoY29uc3Qgc3RydWN0IHNmcF9lZXByb21faWQgKmlkLFxuZHJpdmVycy9uZXQvcGh5L3NmcC5jLTQ4MS1cdFx0XHQgICAgICAgc3RydWN0IHNmcF9tb2R1bGVfY2FwcyAqY2Fwcylcbi0tXG5kcml2ZXJzL25ldC9waHkvc2ZwLmM9NTMwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2ZwX3F1aXJrIHNmcF9xdWlya3NbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtNTUyLVx0Ly8gdXNlIFNHTUlJLlxuZHJpdmVycy9uZXQvcGh5L3NmcC5jOjU1MzpcdFNGUF9RVUlSS19TKFwmIzM0O0ZJTklTQVIgQ09SUC5cJiMzNDssIFwmIzM0O0ZDTEY4NTIxUDJCVExcJiMzNDssIHNmcF9xdWlya19ub19zZ21paSksXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtNTU0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIwOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NjMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBTRlAgRHJpdmVyIFJlYWNoYWJpbGl0eSBhbmQgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHdlIGNhbiBldmVuICp0b3VjaCogdGhlIFNGUCBkcml2ZXIgdmlhIEkyQywgb3IgaWYgdGhlcmUmIzM5O3MgYW55IHN1cmZhY2UgZm9yIGZ1enppbmcuIFNGUHMgYXJlIG5vdG9yaW91cyBmb3IgdXNpbmcgSTJDIGZvciBFRVBST00gYWNjZXNzLCB3aGljaCBpcyBhIGNvbW1vbiB2ZWN0b3IuIE5vdywgSTJDIGl0c2VsZiBpcyBmdXp6YWJsZSDigJMgYGkyYy1zdHViYCBvciBzaW1pbGFyIHRvb2xzIGFyZSBteSB1c3VhbCBnby10byDigJMgYnV0IHRhcmdldGluZyAqc3BlY2lmaWMqIEkyQyBkZXZpY2VzIGlzIHRoZSB0cmlja3kgYml0LCB1c3VhbGx5IHVubGVzcyB0aGV5IGFyZSBwcm9wZXJseSBpbnN0YW50aWF0ZWQsIGFuZCB0aGVyZWZvcmUgYWRkcmVzc2FibGUsIG9uIHRoZSBidXMuCgpXYWl0IGEgc2Vjb25k4oCmU0ZQIGluc3RhbnRpYXRpb24gaXMgZ2VuZXJhbGx5IGhhbmRsZWQgdGhyb3VnaCB0aGUgZGV2aWNlIHRyZWUsIGlzbiYjMzk7dCBpdD8gSWYgdGhlIERUIGRvZXMgdGhlIGhlYXZ5IGxpZnRpbmcsIHRoZW4gY2FuIHdlIHBvdGVudGlhbGx5IGludGVyYWN0IHdpdGggdGhlIFNGUCB0aHJvdWdoIHN5c2ZzPyBUaGF0JiMzOTtzIHRoZSBrZXkgcXVlc3Rpb24uIFdlIG5lZWQgdG8gc2VlIGlmIHdlIGNhbiBleHBvc2UgYSBjb250cm9sIHBsYW5lLgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgdGhlIHJlbGV2YW50IGRyaXZlcjogYGRyaXZlcnMvbmV0L3BoeS9zZnAuY2AuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgc2lnbiBvZiBhIGBtb2R1bGVfaTJjX2RyaXZlcmAgb3IgYSBzaW1pbGFyIGNvbnN0cnVjdCB0aGF0IHRpZXMgaXQgaW50byB0aGUgSTJDIHN1YnN5c3RlbS4gVGhhdCB3b3VsZCBiZSB0aGUgZmlyc3QgY2x1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfLipkcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvc2ZwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3NmcC5jPTM0Njc9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc2ZwX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMzQ3Ni1cbmRyaXZlcnMvbmV0L3BoeS9zZnAuYzozNDc3Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoc2ZwX2RyaXZlcik7XG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMzQ3OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzg1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkRpdmluZyBpbnRvIHRoZSBEcml2ZXIqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGllY2Ugb2YgY29kZSDigJMgaXQmIzM5O3MgY2xlYXJseSBhIHBsYXRmb3JtIGRyaXZlci4gRmlyc3QgdGhpbmcgSSYjMzk7bSBnb2luZyB0byBkaWcgaW50byBpcyB0aGUgcHJvYmluZyBtZWNoYW5pc20uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBpZGVudGlmaWVzIGFuZCBhdHRhY2hlcyBpdHNlbGYgdG8gYSBzcGVjaWZpYyBoYXJkd2FyZSBpbnN0YW5jZS4gV2hhdCBhcmUgdGhlIGtleSBlbGVtZW50cyBpdCB1c2VzIGZvciBtYXRjaGluZz8gSXMgaXQgdXNpbmcgYSBkZXZpY2UgdHJlZSwgQUNQSSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY3JpdGVyaWEgdGhpcyBkcml2ZXImIzM5O3MgcmVseWluZyBvbiBmb3IgYSBzdWNjZXNzZnVsIHByb2JlIGFuZCBpbml0aWFsaXphdGlvbi4gVGhpcyBpbml0aWFsIHByb2JpbmcgcGhhc2UgaXMgY3J1Y2lhbCB0byBkZXRlcm1pbmUgaWYgaXQgY2FuIHN1cHBvcnQgdGhlIHByZXNlbnQgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjA6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2ZwX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3NmcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9zZnAuYz0zMjU5PXN0YXRpYyBpbnQgc2ZwX2kyY19nZXQoc3RydWN0IHNmcCAqc2ZwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy0zMjg0LVxuZHJpdmVycy9uZXQvcGh5L3NmcC5jOjMyODU6c3RhdGljIGludCBzZnBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy0zMjg2LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvc2ZwLmM9MzQ2Nz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBzZnBfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvcGh5L3NmcC5jOjM0Njg6XHQucHJvYmUgPSBzZnBfcHJvYmUsXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMzQ2OS1cdC5yZW1vdmUgPSBzZnBfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIwOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NzIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgU0ZQIE1vZHVsZSBRdWlya3MqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGxhdGZvcm0gZHJpdmVyLCBwcm9iYWJseSBob29rZWQgdXAgdGhyb3VnaCB0aGUgZGV2aWNlIHRyZWUuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIHdlIGZ1enogdGhpcz8gU3l6a2FsbGVyIGNhbiBpbmplY3QgcGxhdGZvcm0gZGV2aWNlcyB1c2luZyBmdW5jdGlvbnMgbGlrZSBgc3l6X2Rldl9wbGF0Zm9ybWAsIGJ1dCBpdCYjMzk7cyBub3QgYSBnby10byBmdXp6aW5nIHRhcmdldCB1bmxlc3MgdGhlcmUmIzM5O3MgZGVkaWNhdGVkIHN1cHBvcnQuIFdhaXQsIHRoaXMgcGF0Y2ggaXMganVzdCBhYm91dCBhIHF1aXJrIGZvciBhIHNwZWNpZmljIFNGUCBtb2R1bGUsIG5vdCB0aGUgd2hvbGUgZHJpdmVyLgoKUmlnaHQsIHRoZSBxdWlyayB0cmlnZ2VycyB3aGVuIHRoZSBkcml2ZXIgcmVhZHMgYW4gRUVQUk9NIHdpdGggYSBwYXJ0aWN1bGFyIHZlbmRvciBJRCBhbmQgcGFydCBudW1iZXIuIFRoZSBFRVBST00gaXMgcmVhZCBvdmVyIEkyQy4gSWYgaXQmIzM5O3MgZ29pbmcgdG8gcmVxdWlyZSBhY3R1YWxseSBlbXVsYXRpbmcgdGhlIFNGUCBtb2R1bGUgYW5kIGl0cyBJMkMgRUVQUk9NIHRvIG1ha2UgdGhpcyB3b3JrLCBpdCYjMzk7cyBwcm9iYWJseSBub3Qgd29ydGggdGhlIGVmZm9ydC4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSYjMzk7cyBhIHdvcmthcm91bmQuCgpUaGUgU0ZQIGRyaXZlciByZWFkcyB0aGUgRUVQUk9NIHZpYSBJMkMuIENhbiB3ZSBzb21laG93IG1vY2sgdGhlIEkyQyBkZXZpY2U/IFN5emthbGxlciBoYXMgc29tZSBJMkMgZnV6emluZyBzdXBwb3J0IHdpdGggYHN5el9pMmNfc2V0dXBgLiBUaGUgcHJvYmxlbSBpcyB0aGF0IHRoZSBTRlAgZHJpdmVyIGlzIGEgcGxhdGZvcm0gZHJpdmVyLiBJdCBnZXRzIGl0cyBJMkMgYWRhcHRlciBmcm9tIHRoZSBkZXZpY2UgdHJlZSDigJMgdXNpbmcgc29tZXRoaW5nIGxpa2UgYGkyY19nZXRfYWRhcHRlcihucClgLiBTbyBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBgc2ZwX3Byb2JlYCBmdW5jdGlvbiB0byBjb25maXJtIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIwOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3NmcC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzI4NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzI4NTpcdHN0YXRpYyBpbnQgc2ZwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4zMjg2Olx0e1xuMzI4NzpcdFx0Y29uc3Qgc3RydWN0IHNmZl9kYXRhICpzZmY7XG4zMjg4Olx0XHRjaGFyICpzZnBfaXJxX25hbWU7XG4zMjg5Olx0XHRzdHJ1Y3Qgc2ZwICpzZnA7XG4zMjkwOlx0XHRpbnQgZXJyLCBpO1xuMzI5MTpcdFxuMzI5MjpcdFx0c2ZwID0gc2ZwX2FsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbjMyOTM6XHRcdGlmIChJU19FUlIoc2ZwKSlcbjMyOTQ6XHRcdFx0cmV0dXJuIFBUUl9FUlIoc2ZwKTtcbjMyOTU6XHRcbjMyOTY6XHRcdHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIHNmcCk7XG4zMjk3Olx0XG4zMjk4Olx0XHRlcnIgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoc2ZwLVx1MDAzZWRldiwgc2ZwX2NsZWFudXAsIHNmcCk7XG4zMjk5Olx0XHRpZiAoZXJyIFx1MDAzYyAwKVxuMzMwMDpcdFx0XHRyZXR1cm4gZXJyO1xuMzMwMTpcdFxuMzMwMjpcdFx0c2ZmID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKHNmcC1cdTAwM2VkZXYpO1xuMzMwMzpcdFx0aWYgKCFzZmYpXG4zMzA0Olx0XHRcdHNmZiA9IFx1MDAyNnNmcF9kYXRhO1xuMzMwNTpcdFxuMzMwNjpcdFx0c2ZwLVx1MDAzZXR5cGUgPSBzZmY7XG4zMzA3Olx0XG4zMzA4Olx0XHRlcnIgPSBzZnBfaTJjX2dldChzZnApO1xuMzMwOTpcdFx0aWYgKGVycilcbjMzMTA6XHRcdFx0cmV0dXJuIGVycjtcbjMzMTE6XHRcbjMzMTI6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEdQSU9fTUFYOyBpJiM0MzsmIzQzOylcbjMzMTM6XHRcdFx0aWYgKHNmZi1cdTAwM2VncGlvcyBcdTAwMjYgQklUKGkpKSB7XG4zMzE0Olx0XHRcdFx0c2ZwLVx1MDAzZWdwaW9baV0gPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChzZnAtXHUwMDNlZGV2LFxuMzMxNTpcdFx0XHRcdFx0XHQgICBncGlvX25hbWVzW2ldLCBncGlvX2ZsYWdzW2ldKTtcbjMzMTY6XHRcdFx0XHRpZiAoSVNfRVJSKHNmcC1cdTAwM2VncGlvW2ldKSlcbjMzMTc6XHRcdFx0XHRcdHJldHVybiBQVFJfRVJSKHNmcC1cdTAwM2VncGlvW2ldKTtcbjMzMTg6XHRcdFx0fVxuMzMxOTpcdFxuMzMyMDpcdFx0c2ZwLVx1MDAzZXN0YXRlX2h3X21hc2sgPSBTRlBfRl9QUkVTRU5UO1xuMzMyMTpcdFx0c2ZwLVx1MDAzZXN0YXRlX2h3X2RyaXZlID0gU0ZQX0ZfVFhfRElTQUJMRTtcbjMzMjI6XHRcbjMzMjM6XHRcdHNmcC1cdTAwM2VnZXRfc3RhdGUgPSBzZnBfZ3Bpb19nZXRfc3RhdGU7XG4zMzI0Olx0XHRzZnAtXHUwMDNlc2V0X3N0YXRlID0gc2ZwX2dwaW9fc2V0X3N0YXRlO1xuMzMyNTpcdFxuMzMyNjpcdFx0LyogQW4gU0ZQIGNhZ2Ugd2l0aCBubyBNT0RfREVGMCBHUElPIGhhcyBubyBoYXJkd2FyZSBwcmVzZW5jZSBzaWduYWwuXG4zMzI3Olx0XHQgKiBBc3N1bWluZyB0aGUgbW9kdWxlIGlzIGFsd2F5cyBwcmVzZW50IHRyYXBzIGFuIGVtcHR5IGNhZ2UgaW5cbjMzMjg6XHRcdCAqIE1PRF9FUlJPUiBhbmQgbmV2ZXIgZGV0ZWN0cyBob3QtaW5zZXJ0aW9uLCBzbyBkZXJpdmUgcHJlc2VuY2UgZnJvbSBhXG4zMzI5Olx0XHQgKiB0aHJvdHRsZWQgSTJDIHByb2JlIGFuZCBwb2xsIGZvciBjaGFuZ2VzIGluc3RlYWQuIHNmcF9pMmNfY29uZmlndXJlKClcbjMzMzA6XHRcdCAqIGhhcyBhbHJlYWR5IHNldCBpMmNfbWF4X2Jsb2NrX3NpemU7IHNlZWQgaTJjX2Jsb2NrX3NpemUgc28gdGhlXG4zMzMxOlx0XHQgKiBwcmVzZW5jZSByZWFkIGRvZXMgbm90IGlzc3VlIGEgemVyby1sZW5ndGggdHJhbnNmZXIgYmVmb3JlIHRoZSBmaXJzdFxuMzMzMjpcdFx0ICogRUVQUk9NIHJlYWQuIFNlZWQgaTJjX3ByZXNlbnRfbmV4dCB0byBqaWZmaWVzIHNvIHRoZSBmaXJzdCBwcm9iZVxuMzMzMzpcdFx0ICogaGFwcGVucyBpbW1lZGlhdGVseSAoYSB6ZXJvIHZhbHVlIHdvdWxkIGJlIGluIHRoZSBwYXN0IHJlbGF0aXZlIHRvXG4zMzM0Olx0XHQgKiB0aGUgbmVnYXRpdmUgSU5JVElBTF9KSUZGSUVTIGF0IGJvb3QgYW5kIGRlbGF5IGRldGVjdGlvbikuXG4zMzM1Olx0XHQgKlxuMzMzNjpcdFx0ICogQSBzb2xkZXJlZC1kb3duIG1vZHVsZSAoc2ZmLHNmZikgaGFzIG5vIHByZXNlbmNlIHNpZ25hbCBhbmQgaXNcbjMzMzc6XHRcdCAqIGdlbnVpbmVseSBhbHdheXMgcHJlc2VudCwgc28gaXQga2VlcHMgdGhlIGFsd2F5cy1wcmVzZW50IGJlaGF2aW91cjtcbjMzMzg6XHRcdCAqIHRoZSBJMkMgcHJvYmUgaXMgZ2F0ZWQgb24gdGhlIGNhZ2UgdHlwZSBhZHZlcnRpc2luZyBTRlBfRl9QUkVTRU5ULlxuMzMzOTpcdFx0ICovXG4zMzQwOlx0XHRpZiAoIXNmcC1cdTAwM2VncGlvW0dQSU9fTU9EREVGMF0pIHtcbjMzNDE6XHRcdFx0aWYgKHNmZi1cdTAwM2VncGlvcyBcdTAwMjYgU0ZQX0ZfUFJFU0VOVCkge1xuMzM0MjpcdFx0XHRcdHNmcC1cdTAwM2VnZXRfc3RhdGUgPSBzZnBfaTJjX2dldF9zdGF0ZTtcbjMzNDM6XHRcdFx0XHRzZnAtXHUwMDNlaTJjX2Jsb2NrX3NpemUgPSBzZnAtXHUwMDNlaTJjX21heF9ibG9ja19zaXplO1xuMzM0NDpcdFx0XHRcdHNmcC1cdTAwM2VpMmNfcHJlc2VudF9uZXh0ID0gamlmZmllcztcbjMzNDU6XHRcdFx0XHRzZnAtXHUwMDNlbmVlZF9wb2xsID0gdHJ1ZTtcbjMzNDY6XHRcdFx0fSBlbHNlIHtcbjMzNDc6XHRcdFx0XHRzZnAtXHUwMDNlZ2V0X3N0YXRlID0gc2ZmX2dwaW9fZ2V0X3N0YXRlO1xuMzM0ODpcdFx0XHR9XG4zMzQ5Olx0XHR9XG4zMzUwOlx0XG4zMzUxOlx0XHRkZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O21heGltdW0tcG93ZXItbWlsbGl3YXR0XCYjMzQ7LFxuMzM1MjpcdFx0XHRcdFx0IFx1MDAyNnNmcC1cdTAwM2VtYXhfcG93ZXJfbVcpO1xuMzM1MzpcdFx0aWYgKHNmcC1cdTAwM2VtYXhfcG93ZXJfbVcgXHUwMDNjIDEwMDApIHtcbjMzNTQ6XHRcdFx0aWYgKHNmcC1cdTAwM2VtYXhfcG93ZXJfbVcpXG4zMzU1Olx0XHRcdFx0ZGV2X3dhcm4oc2ZwLVx1MDAzZWRldixcbjMzNTY6XHRcdFx0XHRcdCBcJiMzNDtGaXJtd2FyZSBidWc6IGhvc3QgbWF4aW11bSBwb3dlciBzaG91bGQgYmUgYXQgbGVhc3QgMVdcXG5cJiMzNDspO1xuMzM1NzpcdFx0XHRzZnAtXHUwMDNlbWF4X3Bvd2VyX21XID0gMTAwMDtcbjMzNTg6XHRcdH1cbjMzNTk6XHRcbjMzNjA6XHRcdGRldl9pbmZvKHNmcC1cdTAwM2VkZXYsIFwmIzM0O0hvc3QgbWF4aW11bSBwb3dlciAldS4ldVdcXG5cJiMzNDssXG4zMzYxOlx0XHRcdCBzZnAtXHUwMDNlbWF4X3Bvd2VyX21XIC8gMTAwMCwgKHNmcC1cdTAwM2VtYXhfcG93ZXJfbVcgLyAxMDApICUgMTApO1xuMzM2MjpcdFxuMzM2MzpcdFx0LyogR2V0IHRoZSBpbml0aWFsIHN0YXRlLCBhbmQgYWx3YXlzIHNpZ25hbCBUWCBkaXNhYmxlLFxuMzM2NDpcdFx0ICogc2luY2UgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIHdpbGwgbm90IGJlIHVwLlxuMzM2NTpcdFx0ICovXG4zMzY2Olx0XHRzZnAtXHUwMDNlc3RhdGUgPSBzZnBfZ2V0X3N0YXRlKHNmcCkgfCBTRlBfRl9UWF9ESVNBQkxFO1xuMzM2NzpcdFxuMzM2ODpcdFx0aWYgKHNmcC1cdTAwM2VncGlvW0dQSU9fUlMwXSBcdTAwMjZcdTAwMjZcbjMzNjk6XHRcdCAgICBncGlvZF9nZXRfdmFsdWVfY2Fuc2xlZXAoc2ZwLVx1MDAzZWdwaW9bR1BJT19SUzBdKSlcbjMzNzA6XHRcdFx0c2ZwLVx1MDAzZXN0YXRlIHw9IFNGUF9GX1JTMDtcbjMzNzE6XHRcdHNmcF9zZXRfc3RhdGUoc2ZwLCBzZnAtXHUwMDNlc3RhdGUpO1xuMzM3MjpcdFx0c2ZwX21vZHVsZV90eF9kaXNhYmxlKHNmcCk7XG4zMzczOlx0XHRpZiAoc2ZwLVx1MDAzZXN0YXRlIFx1MDAyNiBTRlBfRl9QUkVTRU5UKSB7XG4zMzc0Olx0XHRcdHJ0bmxfbG9jaygpO1xuMzM3NTpcdFx0XHRzZnBfc21fZXZlbnQoc2ZwLCBTRlBfRV9JTlNFUlQpO1xuMzM3NjpcdFx0XHRydG5sX3VubG9jaygpO1xuMzM3NzpcdFx0fVxuMzM3ODpcdFxuMzM3OTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgR1BJT19NQVg7IGkmIzQzOyYjNDM7KSB7XG4zMzgwOlx0XHRcdGlmIChncGlvX2ZsYWdzW2ldICE9IEdQSU9EX0lOIHx8ICFzZnAtXHUwMDNlZ3Bpb1tpXSlcbjMzODE6XHRcdFx0XHRjb250aW51ZTtcbjMzODI6XHRcbjMzODM6XHRcdFx0c2ZwLVx1MDAzZWdwaW9faXJxW2ldID0gZ3Bpb2RfdG9faXJxKHNmcC1cdTAwM2VncGlvW2ldKTtcbjMzODQ6XHRcdFx0aWYgKHNmcC1cdTAwM2VncGlvX2lycVtpXSBcdTAwM2MgMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTQxCgkJCQkJCQlvdXRwdXQ6IDEzNwoJCQkJCQkJdGhvdWdodHM6IDIxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbnJlYWNoYWJsZSBDb2RlIGluIHRoZSBTRlAgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gZGlnZ2luZyBpbnRvIHRoaXMgU0ZQIGRyaXZlciBjb2RlLCBhbmQgSSYjMzk7dmUgaGl0IGEgd2FsbC4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBvZiB0aGUgU0ZQIGRyaXZlciByZWxpZXMgaGVhdmlseSBvbiBhIHBsYXRmb3JtIGRldmljZSwgdHlwaWNhbGx5IGluc3RhbnRpYXRlZCB0aHJvdWdoIHRoZSBkZXZpY2UgdHJlZS4gSXQgYWxzbyBkZXBlbmRzIG9uIGFuIEkyQyBhZGFwdGVyIGJlaW5nIHByb3Blcmx5IGNvbm5lY3RlZCwgYWdhaW4sIHVzdWFsbHkgZGVmaW5lZCBpbiB0aGUgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbi4KClRoZSBwcm9ibGVtIGlzLCBpbiBvdXIgZnV6emluZyBlbnZpcm9ubWVudCwgbGlrZSBRRU1VIG9yIGV2ZW4gR29vZ2xlIENvbXB1dGUgRW5naW5lLCB3ZSBkb24mIzM5O3QgaGF2ZSB0aGUgc3RhbmRhcmQgaW5mcmFzdHJ1Y3R1cmUgc2V0IHVwIHRvIGF1dG9tYXRpY2FsbHkgY3JlYXRlIHRoaXMgcGxhdGZvcm0gZGV2aWNlLiBBbmQsIGFzIGZhciBhcyBJIGNhbiBzZWUsIHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGEgbWVjaGFuaXNtIHRvIGR5bmFtaWNhbGx5IGJ1aWxkIHRoaXMgcmVxdWlyZWQgcGxhdGZvcm0gZGV2aWNlIGFsb25nIHdpdGggdGhlIG5lY2Vzc2FyeSBJMkMgYnVzIGFuZCBhIG1vY2sgRUVQUk9NIHRvIHByb3Blcmx5IHRyaWdnZXIgdGhlIHF1aXJrIHdlJiMzOTtyZSBpbnRlcmVzdGVkIGluLgoKSSB3YXMgaG9waW5nIHRoZXJlIHdhcyBhbm90aGVyIHBhdGggdG8gcmVhY2ggYHNmcF9xdWlya19ub19zZ21paWAuIEkgdHJhY2VkIGl0IGJhY2sgdGhyb3VnaCBgc2ZwX3NtX21vZF9wcm9iZWAgdG8gYHNmcF9zbV9tb2RfaGFja3NgLCBhbmQgaXQgYWxsIGV2ZW50dWFsbHkgbGVhZHMgYmFjayB0byB0aGlzIFNGUCBwbGF0Zm9ybSBkZXZpY2UuIFdpdGhvdXQgdGhhdCBkZXZpY2UgaW5zdGFudGlhdGVkLCB0aGVyZSYjMzk7cyBqdXN0IG5vIHdheSBmb3IgdGhpcyBzcGVjaWZpYyBzZWN0aW9uIG9mIGNvZGUgdG8gZ2V0IGV4ZWN1dGVkLgoKR2l2ZW4gdGhlc2UgY29uc3RyYWludHMgYW5kIHRoZSBkZXBlbmRlbmNpZXMgb24gdGhlIHBsYXRmb3JtIGRldmljZSwgSSYjMzk7dmUgY29uY2x1ZGVkIHRoYXQgdGhpcyBjb2RlIGlzIGVmZmVjdGl2ZWx5IHVucmVhY2hhYmxlIGluIG91ciBmdXp6aW5nIHNldHVwLiBUaGVyZSYjMzk7cyBqdXN0IG5vIHByYWN0aWNhbCB3YXkgdG8gdHJpZ2dlciBpdCB3aXRoIG91ciBjdXJyZW50IHRvb2xzIGFuZCBlbnZpcm9ubWVudC4KClRoZXJlZm9yZSwgYWZ0ZXIgY2FyZWZ1bCBjb25zaWRlcmF0aW9uLCBJIGhhdmUgdG8gZGVjbGFyZSB0aGlzIHNlY3Rpb24gb2YgY29kZSBhcyBub3Qgd29ydGggZnV6emluZy4gSSYjMzk7bGwgYmUgcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBxdWlyayBmb3IgYSBzcGVjaWZpYyBTRlAgbW9kdWxlIChGSU5JU0FSIENPUlAuIEZDTEY4NTIxUDJCVEwpLiBUaGUgU0ZQIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlbGllcyBvbiBkZXZpY2UgdHJlZSBpbnN0YW50aWF0aW9uIGFuZCBJMkMgY29tbXVuaWNhdGlvbiB0byByZWFkIHRoZSBtb2R1bGUmIzM5O3MgRUVQUk9NLiBJbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UsIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uIG9yIGRldmljZSB0cmVlIGluamVjdGlvbiBmb3IgdGhpcyBTRlAgbW9kdWxlIGFuZCBpdHMgSTJDIEVFUFJPTSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcXVpcmsgZm9yIGEgc3BlY2lmaWMgU0ZQIG1vZHVsZSAoRklOSVNBUiBDT1JQLiBGQ0xGODUyMVAyQlRMKS4gVGhlIFNGUCBkcml2ZXIgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZWxpZXMgb24gZGV2aWNlIHRyZWUgaW5zdGFudGlhdGlvbiBhbmQgSTJDIGNvbW11bmljYXRpb24gdG8gcmVhZCB0aGUgbW9kdWxlJiMzOTtzIEVFUFJPTS4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFLCB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiBvciBkZXZpY2UgdHJlZSBpbmplY3Rpb24gZm9yIHRoaXMgU0ZQIG1vZHVsZSBhbmQgaXRzIEkyQyBFRVBST00sIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGFuZCBjYW5ub3QgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjM4OjIzLjEzMjAwMDI2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM1NzkyOTMxMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBxdWlyayBmb3IgYSBzcGVjaWZpYyBTRlAgbW9kdWxlIChGSU5JU0FSIENPUlAuIEZDTEY4NTIxUDJCVEwpLiBUaGUgU0ZQIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlbGllcyBvbiBkZXZpY2UgdHJlZSBpbnN0YW50aWF0aW9uIGFuZCBJMkMgY29tbXVuaWNhdGlvbiB0byByZWFkIHRoZSBtb2R1bGUncyBFRVBST00uIEluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRSwgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24gb3IgZGV2aWNlIHRyZWUgaW5qZWN0aW9uIGZvciB0aGlzIFNGUCBtb2R1bGUgYW5kIGl0cyBJMkMgRUVQUk9NLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBhbmQgY2Fubm90IGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjM4OjIzLjEzMjAwNjUwOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU3MjUyMzM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTBhM2Q4MzdmNzBmMzdjYzU4MmU4N2Y0MGVjYmMyOGM4MzRlYTYzOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAxNCAyMDozODoyMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvc2ZwLmMgYi9kcml2ZXJzL25ldC9waHkvc2ZwLmNcXG5pbmRleCBmNTIwMjA2NzM0ZGFhYS4uNjVmM2JiMmJjYWYzNTEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3NmcC5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3NmcC5jXFxuQEAgLTQ3Nyw2ICs0NzcsMTYgQEAgc3RhdGljIHZvaWQgc2ZwX3F1aXJrXzI1MDBiYXNleChjb25zdCBzdHJ1Y3Qgc2ZwX2VlcHJvbV9pZCAqaWQsXFxuIFxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYLCBjYXBzLVxcdTAwM2VpbnRlcmZhY2VzKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgc2ZwX3F1aXJrX25vX3NnbWlpKGNvbnN0IHN0cnVjdCBzZnBfZWVwcm9tX2lkICppZCxcXG4rXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBzZnBfbW9kdWxlX2NhcHMgKmNhcHMpXFxuK3tcXG4rXFx0bGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFXzEwMDBiYXNlVF9IYWxmX0JJVCxcXG4rXFx0XFx0XFx0ICAgY2Fwcy1cXHUwMDNlbGlua19tb2Rlcyk7XFxuK1xcdGxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwYmFzZVRfRnVsbF9CSVQsXFxuK1xcdFxcdFxcdCAgIGNhcHMtXFx1MDAzZWxpbmtfbW9kZXMpO1xcbitcXHRfX2NsZWFyX2JpdChQSFlfSU5URVJGQUNFX01PREVfU0dNSUksIGNhcHMtXFx1MDAzZWludGVyZmFjZXMpO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBzZnBfcXVpcmtfZGlzYWJsZV9hdXRvbmVnKGNvbnN0IHN0cnVjdCBzZnBfZWVwcm9tX2lkICppZCxcXG4gXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHNmcF9tb2R1bGVfY2FwcyAqY2FwcylcXG4ge1xcbkBAIC01MzgsNiArNTQ4LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2ZwX3F1aXJrIHNmcF9xdWlya3NbXSA9IHtcXG4gXFx0Ly8gUEhZLlxcbiBcXHRTRlBfUVVJUktfRihcXFwiRlNcXFwiLCBcXFwiU0ZQLTEwRy1UXFxcIiwgc2ZwX2ZpeHVwX2ZzXzEwZ3QpLFxcbiBcXG4rXFx0Ly8gVGhlc2UgYXJlIHNvbGQgYXMgMTAwMGJhc2UtWCBjb21wYXRpYmxlLiBUaHVzLCBtYWtlIHN1cmUgd2UgZG9uJ3RcXG4rXFx0Ly8gdXNlIFNHTUlJLlxcbitcXHRTRlBfUVVJUktfUyhcXFwiRklOSVNBUiBDT1JQLlxcXCIsIFxcXCJGQ0xGODUyMVAyQlRMXFxcIiwgc2ZwX3F1aXJrX25vX3NnbWlpKSxcXG4rXFxuIFxcdC8vIEZpYmVyc3RvcmUgU0ZQLTIuNUctVCBhbmQgU0ZQLTEwR00tVCB1c2VzIFJvbGxiYWxsIHByb3RvY29sIHRvIHRhbGtcXG4gXFx0Ly8gdG8gdGhlIFBIWSBhbmQgbmVlZHMgNCBzZWMgd2FpdCBiZWZvcmUgcHJvYmluZyB0aGUgUEhZLlxcbiBcXHRTRlBfUVVJUktfRihcXFwiRlNcXFwiLCBcXFwiU0ZQLTIuNUctVFxcXCIsIHNmcF9maXh1cF9yb2xsYmFsbF93YWl0NHMpLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMDozODoyMy44OTExODgxODRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyODIwMDk4MjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcXVpcmsgZm9yIGEgc3BlY2lmaWMgU0ZQIG1vZHVsZSAoRklOSVNBUiBDT1JQLiBGQ0xGODUyMVAyQlRMKS4gVGhlIFNGUCBkcml2ZXIgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZWxpZXMgb24gZGV2aWNlIHRyZWUgaW5zdGFudGlhdGlvbiBhbmQgSTJDIGNvbW11bmljYXRpb24gdG8gcmVhZCB0aGUgbW9kdWxlJ3MgRUVQUk9NLiBJbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UsIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uIG9yIGRldmljZSB0cmVlIGluamVjdGlvbiBmb3IgdGhpcyBTRlAgbW9kdWxlIGFuZCBpdHMgSTJDIEVFUFJPTSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDEwYTNkODM3ZjcwZjM3Y2M1ODJlODdmNDBlY2JjMjhjODM0ZWE2MzlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAyMDozODoyMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9zZnAuYyBiL2RyaXZlcnMvbmV0L3BoeS9zZnAuY1xuaW5kZXggZjUyMDIwNjczNGRhYWEuLjY1ZjNiYjJiY2FmMzUxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3NmcC5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvc2ZwLmNcbkBAIC00NzcsNiArNDc3LDE2IEBAIHN0YXRpYyB2b2lkIHNmcF9xdWlya18yNTAwYmFzZXgoY29uc3Qgc3RydWN0IHNmcF9lZXByb21faWQgKmlkLFxuIFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgsIGNhcHMtXHUwMDNlaW50ZXJmYWNlcyk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHNmcF9xdWlya19ub19zZ21paShjb25zdCBzdHJ1Y3Qgc2ZwX2VlcHJvbV9pZCAqaWQsXG4rXHRcdFx0ICAgICAgIHN0cnVjdCBzZnBfbW9kdWxlX2NhcHMgKmNhcHMpXG4re1xuK1x0bGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFXzEwMDBiYXNlVF9IYWxmX0JJVCxcbitcdFx0XHQgICBjYXBzLVx1MDAzZWxpbmtfbW9kZXMpO1xuK1x0bGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFXzEwMDBiYXNlVF9GdWxsX0JJVCxcbitcdFx0XHQgICBjYXBzLVx1MDAzZWxpbmtfbW9kZXMpO1xuK1x0X19jbGVhcl9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJLCBjYXBzLVx1MDAzZWludGVyZmFjZXMpO1xuK31cbitcbiBzdGF0aWMgdm9pZCBzZnBfcXVpcmtfZGlzYWJsZV9hdXRvbmVnKGNvbnN0IHN0cnVjdCBzZnBfZWVwcm9tX2lkICppZCxcbiBcdFx0XHRcdCAgICAgIHN0cnVjdCBzZnBfbW9kdWxlX2NhcHMgKmNhcHMpXG4ge1xuQEAgLTUzOCw2ICs1NDgsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzZnBfcXVpcmsgc2ZwX3F1aXJrc1tdID0ge1xuIFx0Ly8gUEhZLlxuIFx0U0ZQX1FVSVJLX0YoXCJGU1wiLCBcIlNGUC0xMEctVFwiLCBzZnBfZml4dXBfZnNfMTBndCksXG4gXG4rXHQvLyBUaGVzZSBhcmUgc29sZCBhcyAxMDAwYmFzZS1YIGNvbXBhdGlibGUuIFRodXMsIG1ha2Ugc3VyZSB3ZSBkb24ndFxuK1x0Ly8gdXNlIFNHTUlJLlxuK1x0U0ZQX1FVSVJLX1MoXCJGSU5JU0FSIENPUlAuXCIsIFwiRkNMRjg1MjFQMkJUTFwiLCBzZnBfcXVpcmtfbm9fc2dtaWkpLFxuK1xuIFx0Ly8gRmliZXJzdG9yZSBTRlAtMi41Ry1UIGFuZCBTRlAtMTBHTS1UIHVzZXMgUm9sbGJhbGwgcHJvdG9jb2wgdG8gdGFsa1xuIFx0Ly8gdG8gdGhlIFBIWSBhbmQgbmVlZHMgNCBzZWMgd2FpdCBiZWZvcmUgcHJvYmluZyB0aGUgUEhZLlxuIFx0U0ZQX1FVSVJLX0YoXCJGU1wiLCBcIlNGUC0yLjVHLVRcIiwgc2ZwX2ZpeHVwX3JvbGxiYWxsX3dhaXQ0cyksXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMDozODoyMy44OTExOTA2MjRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDQ0NDc3MDk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFNGUCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBkcml2ZXJzL25ldC9waHkvc2ZwLmNgLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoOyB0aGV5J3JlIGFkZGluZyBhIG5ldyBxdWlyaywgYHNmcF9xdWlya19ub19zZ21paWAsIGFuZCBpdCdzIHNwZWNpZmljYWxseSBmb3IgYSBcIkZJTklTQVIgQ09SUC5cIiBcIkZDTEY4NTIxUDJCVExcIiBtb2R1bGUuIE5vdGhpbmcgdG9vIGNvbXBsZXggZnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiwgdGhvdWdoLCBpcyBob3cgdGVzdGFibGUgaXMgdGhpcyBjaGFuZ2U/IENhbiB0aGlzIHF1aXJrIGV2ZW4gYmUgdHJpZ2dlcmVkIHdpdGhpbiBhIHZpcnR1YWxpemVkIHNldHVwPyBTRlAgbW9kdWxlcywgYnkgdGhlaXIgbmF0dXJlLCBhcmUgdHlwaWNhbGx5IHBoeXNpY2FsIGhhcmR3YXJlIGNvbXBvbmVudHMsIHJpZ2h0P1xuXG5JIG5lZWQgdG8gYXNzZXNzIHRoZSBmdXp6YWJpbGl0eSBvZiB0aGUgU0ZQIGRyaXZlci4gQ2FuIHdlIGdldCBlbm91Z2ggY292ZXJhZ2UgYnkgZnV6emluZywgZ2l2ZW4gdGhhdCB0aGVzZSBtb2R1bGVzIGFyZSBwaHlzaWNhbD8gUGVyaGFwcyB3ZSBjb3VsZCBlbXVsYXRlIHRoZXNlIFNGUCBtb2R1bGVzOyB0aGF0IGNvdWxkIGJlIGEgcG9zc2libGUgdGVzdCBzdHJhdGVneS4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIGBkcml2ZXJzL25ldC9waHkvc2ZwLmNgIGFuZCBzZWUgd2hhdCBvcHRpb25zIGFyZSB0aGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBkcml2ZXLigJlzIGludGVyZmFjZSBiZXR0ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMTQsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMDozODoyNy45MzU2NzAwMjJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk0MjczMzg4MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2ZwX3F1aXJrX25vX3NnbWlpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9zZnAuYz00NzI9c3RhdGljIHZvaWQgc2ZwX3F1aXJrXzI1MDBiYXNleChjb25zdCBzdHJ1Y3Qgc2ZwX2VlcHJvbV9pZCAqaWQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtNDc5LVxcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYzo0ODA6c3RhdGljIHZvaWQgc2ZwX3F1aXJrX25vX3NnbWlpKGNvbnN0IHN0cnVjdCBzZnBfZWVwcm9tX2lkICppZCxcXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtNDgxLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc2ZwX21vZHVsZV9jYXBzICpjYXBzKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3NmcC5jPTUzMD1zdGF0aWMgY29uc3Qgc3RydWN0IHNmcF9xdWlyayBzZnBfcXVpcmtzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtNTUyLVxcdC8vIHVzZSBTR01JSS5cXG5kcml2ZXJzL25ldC9waHkvc2ZwLmM6NTUzOlxcdFNGUF9RVUlSS19TKFxcXCJGSU5JU0FSIENPUlAuXFxcIiwgXFxcIkZDTEY4NTIxUDJCVExcXFwiLCBzZnBfcXVpcmtfbm9fc2dtaWkpLFxcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy01NTQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjM4OjQ3LjM2MzAxNDYzOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNjYzMjUwNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBTRlAgRHJpdmVyIFJlYWNoYWJpbGl0eSBhbmQgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCBpZiB3ZSBjYW4gZXZlbiAqdG91Y2gqIHRoZSBTRlAgZHJpdmVyIHZpYSBJMkMsIG9yIGlmIHRoZXJlJ3MgYW55IHN1cmZhY2UgZm9yIGZ1enppbmcuIFNGUHMgYXJlIG5vdG9yaW91cyBmb3IgdXNpbmcgSTJDIGZvciBFRVBST00gYWNjZXNzLCB3aGljaCBpcyBhIGNvbW1vbiB2ZWN0b3IuIE5vdywgSTJDIGl0c2VsZiBpcyBmdXp6YWJsZSDigJMgYGkyYy1zdHViYCBvciBzaW1pbGFyIHRvb2xzIGFyZSBteSB1c3VhbCBnby10byDigJMgYnV0IHRhcmdldGluZyAqc3BlY2lmaWMqIEkyQyBkZXZpY2VzIGlzIHRoZSB0cmlja3kgYml0LCB1c3VhbGx5IHVubGVzcyB0aGV5IGFyZSBwcm9wZXJseSBpbnN0YW50aWF0ZWQsIGFuZCB0aGVyZWZvcmUgYWRkcmVzc2FibGUsIG9uIHRoZSBidXMuXG5cbldhaXQgYSBzZWNvbmTigKZTRlAgaW5zdGFudGlhdGlvbiBpcyBnZW5lcmFsbHkgaGFuZGxlZCB0aHJvdWdoIHRoZSBkZXZpY2UgdHJlZSwgaXNuJ3QgaXQ/IElmIHRoZSBEVCBkb2VzIHRoZSBoZWF2eSBsaWZ0aW5nLCB0aGVuIGNhbiB3ZSBwb3RlbnRpYWxseSBpbnRlcmFjdCB3aXRoIHRoZSBTRlAgdGhyb3VnaCBzeXNmcz8gVGhhdCdzIHRoZSBrZXkgcXVlc3Rpb24uIFdlIG5lZWQgdG8gc2VlIGlmIHdlIGNhbiBleHBvc2UgYSBjb250cm9sIHBsYW5lLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIHRoZSByZWxldmFudCBkcml2ZXI6IGBkcml2ZXJzL25ldC9waHkvc2ZwLmNgLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBzZWUgaWYgdGhlcmUncyBhbnkgc2lnbiBvZiBhIGBtb2R1bGVfaTJjX2RyaXZlcmAgb3IgYSBzaW1pbGFyIGNvbnN0cnVjdCB0aGF0IHRpZXMgaXQgaW50byB0aGUgSTJDIHN1YnN5c3RlbS4gVGhhdCB3b3VsZCBiZSB0aGUgZmlyc3QgY2x1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg2MywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMDozODo1MS41MjkzNDE5NjVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjcxOTUyOTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV8uKmRyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvc2ZwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3NmcC5jPTM0Njc9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc2ZwX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy0zNDc2LVxcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYzozNDc3Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoc2ZwX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvcGh5L3NmcC5jLTM0NzgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjM4OjUyLjIwMTMwMjY5MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1NDUzOTQ2MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipEaXZpbmcgaW50byB0aGUgRHJpdmVyKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwaWVjZSBvZiBjb2RlIOKAkyBpdCdzIGNsZWFybHkgYSBwbGF0Zm9ybSBkcml2ZXIuIEZpcnN0IHRoaW5nIEknbSBnb2luZyB0byBkaWcgaW50byBpcyB0aGUgcHJvYmluZyBtZWNoYW5pc20uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBpZGVudGlmaWVzIGFuZCBhdHRhY2hlcyBpdHNlbGYgdG8gYSBzcGVjaWZpYyBoYXJkd2FyZSBpbnN0YW5jZS4gV2hhdCBhcmUgdGhlIGtleSBlbGVtZW50cyBpdCB1c2VzIGZvciBtYXRjaGluZz8gSXMgaXQgdXNpbmcgYSBkZXZpY2UgdHJlZSwgQUNQSSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY3JpdGVyaWEgdGhpcyBkcml2ZXIncyByZWx5aW5nIG9uIGZvciBhIHN1Y2Nlc3NmdWwgcHJvYmUgYW5kIGluaXRpYWxpemF0aW9uLiBUaGlzIGluaXRpYWwgcHJvYmluZyBwaGFzZSBpcyBjcnVjaWFsIHRvIGRldGVybWluZSBpZiBpdCBjYW4gc3VwcG9ydCB0aGUgcHJlc2VudCBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM4NSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjM4OjU0Ljc0NjY5OTg4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NTM2MTIzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZnBfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L3NmcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9zZnAuYz0zMjU5PXN0YXRpYyBpbnQgc2ZwX2kyY19nZXQoc3RydWN0IHNmcCAqc2ZwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3NmcC5jLTMyODQtXFxuZHJpdmVycy9uZXQvcGh5L3NmcC5jOjMyODU6c3RhdGljIGludCBzZnBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMzI4Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvc2ZwLmM9MzQ2Nz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBzZnBfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYzozNDY4OlxcdC5wcm9iZSA9IHNmcF9wcm9iZSxcXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMzQ2OS1cXHQucmVtb3ZlID0gc2ZwX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjA6Mzg6NTQuOTIyMDY4OTU2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMzNDU0MTY3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBTRlAgTW9kdWxlIFF1aXJrcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGxhdGZvcm0gZHJpdmVyLCBwcm9iYWJseSBob29rZWQgdXAgdGhyb3VnaCB0aGUgZGV2aWNlIHRyZWUuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIHdlIGZ1enogdGhpcz8gU3l6a2FsbGVyIGNhbiBpbmplY3QgcGxhdGZvcm0gZGV2aWNlcyB1c2luZyBmdW5jdGlvbnMgbGlrZSBgc3l6X2Rldl9wbGF0Zm9ybWAsIGJ1dCBpdCdzIG5vdCBhIGdvLXRvIGZ1enppbmcgdGFyZ2V0IHVubGVzcyB0aGVyZSdzIGRlZGljYXRlZCBzdXBwb3J0LiBXYWl0LCB0aGlzIHBhdGNoIGlzIGp1c3QgYWJvdXQgYSBxdWlyayBmb3IgYSBzcGVjaWZpYyBTRlAgbW9kdWxlLCBub3QgdGhlIHdob2xlIGRyaXZlci5cblxuUmlnaHQsIHRoZSBxdWlyayB0cmlnZ2VycyB3aGVuIHRoZSBkcml2ZXIgcmVhZHMgYW4gRUVQUk9NIHdpdGggYSBwYXJ0aWN1bGFyIHZlbmRvciBJRCBhbmQgcGFydCBudW1iZXIuIFRoZSBFRVBST00gaXMgcmVhZCBvdmVyIEkyQy4gSWYgaXQncyBnb2luZyB0byByZXF1aXJlIGFjdHVhbGx5IGVtdWxhdGluZyB0aGUgU0ZQIG1vZHVsZSBhbmQgaXRzIEkyQyBFRVBST00gdG8gbWFrZSB0aGlzIHdvcmssIGl0J3MgcHJvYmFibHkgbm90IHdvcnRoIHRoZSBlZmZvcnQuIExldCdzIHNlZSBpZiB0aGVyZSdzIGEgd29ya2Fyb3VuZC5cblxuVGhlIFNGUCBkcml2ZXIgcmVhZHMgdGhlIEVFUFJPTSB2aWEgSTJDLiBDYW4gd2Ugc29tZWhvdyBtb2NrIHRoZSBJMkMgZGV2aWNlPyBTeXprYWxsZXIgaGFzIHNvbWUgSTJDIGZ1enppbmcgc3VwcG9ydCB3aXRoIGBzeXpfaTJjX3NldHVwYC4gVGhlIHByb2JsZW0gaXMgdGhhdCB0aGUgU0ZQIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlci4gSXQgZ2V0cyBpdHMgSTJDIGFkYXB0ZXIgZnJvbSB0aGUgZGV2aWNlIHRyZWUg4oCTIHVzaW5nIHNvbWV0aGluZyBsaWtlIGBpMmNfZ2V0X2FkYXB0ZXIobnApYC4gU28gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBgc2ZwX3Byb2JlYCBmdW5jdGlvbiB0byBjb25maXJtIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NzIsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjA6Mzk6MDAuMjU2NjEzOTk4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyOTIyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvc2ZwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzI4NSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMyODU6XFx0c3RhdGljIGludCBzZnBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4zMjg2OlxcdHtcXG4zMjg3OlxcdFxcdGNvbnN0IHN0cnVjdCBzZmZfZGF0YSAqc2ZmO1xcbjMyODg6XFx0XFx0Y2hhciAqc2ZwX2lycV9uYW1lO1xcbjMyODk6XFx0XFx0c3RydWN0IHNmcCAqc2ZwO1xcbjMyOTA6XFx0XFx0aW50IGVyciwgaTtcXG4zMjkxOlxcdFxcbjMyOTI6XFx0XFx0c2ZwID0gc2ZwX2FsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbjMyOTM6XFx0XFx0aWYgKElTX0VSUihzZnApKVxcbjMyOTQ6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIoc2ZwKTtcXG4zMjk1OlxcdFxcbjMyOTY6XFx0XFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgc2ZwKTtcXG4zMjk3OlxcdFxcbjMyOTg6XFx0XFx0ZXJyID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KHNmcC1cXHUwMDNlZGV2LCBzZnBfY2xlYW51cCwgc2ZwKTtcXG4zMjk5OlxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbjMzMDA6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4zMzAxOlxcdFxcbjMzMDI6XFx0XFx0c2ZmID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKHNmcC1cXHUwMDNlZGV2KTtcXG4zMzAzOlxcdFxcdGlmICghc2ZmKVxcbjMzMDQ6XFx0XFx0XFx0c2ZmID0gXFx1MDAyNnNmcF9kYXRhO1xcbjMzMDU6XFx0XFxuMzMwNjpcXHRcXHRzZnAtXFx1MDAzZXR5cGUgPSBzZmY7XFxuMzMwNzpcXHRcXG4zMzA4OlxcdFxcdGVyciA9IHNmcF9pMmNfZ2V0KHNmcCk7XFxuMzMwOTpcXHRcXHRpZiAoZXJyKVxcbjMzMTA6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4zMzExOlxcdFxcbjMzMTI6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEdQSU9fTUFYOyBpKyspXFxuMzMxMzpcXHRcXHRcXHRpZiAoc2ZmLVxcdTAwM2VncGlvcyBcXHUwMDI2IEJJVChpKSkge1xcbjMzMTQ6XFx0XFx0XFx0XFx0c2ZwLVxcdTAwM2VncGlvW2ldID0gZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwoc2ZwLVxcdTAwM2VkZXYsXFxuMzMxNTpcXHRcXHRcXHRcXHRcXHRcXHQgICBncGlvX25hbWVzW2ldLCBncGlvX2ZsYWdzW2ldKTtcXG4zMzE2OlxcdFxcdFxcdFxcdGlmIChJU19FUlIoc2ZwLVxcdTAwM2VncGlvW2ldKSlcXG4zMzE3OlxcdFxcdFxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHNmcC1cXHUwMDNlZ3Bpb1tpXSk7XFxuMzMxODpcXHRcXHRcXHR9XFxuMzMxOTpcXHRcXG4zMzIwOlxcdFxcdHNmcC1cXHUwMDNlc3RhdGVfaHdfbWFzayA9IFNGUF9GX1BSRVNFTlQ7XFxuMzMyMTpcXHRcXHRzZnAtXFx1MDAzZXN0YXRlX2h3X2RyaXZlID0gU0ZQX0ZfVFhfRElTQUJMRTtcXG4zMzIyOlxcdFxcbjMzMjM6XFx0XFx0c2ZwLVxcdTAwM2VnZXRfc3RhdGUgPSBzZnBfZ3Bpb19nZXRfc3RhdGU7XFxuMzMyNDpcXHRcXHRzZnAtXFx1MDAzZXNldF9zdGF0ZSA9IHNmcF9ncGlvX3NldF9zdGF0ZTtcXG4zMzI1OlxcdFxcbjMzMjY6XFx0XFx0LyogQW4gU0ZQIGNhZ2Ugd2l0aCBubyBNT0RfREVGMCBHUElPIGhhcyBubyBoYXJkd2FyZSBwcmVzZW5jZSBzaWduYWwuXFxuMzMyNzpcXHRcXHQgKiBBc3N1bWluZyB0aGUgbW9kdWxlIGlzIGFsd2F5cyBwcmVzZW50IHRyYXBzIGFuIGVtcHR5IGNhZ2UgaW5cXG4zMzI4OlxcdFxcdCAqIE1PRF9FUlJPUiBhbmQgbmV2ZXIgZGV0ZWN0cyBob3QtaW5zZXJ0aW9uLCBzbyBkZXJpdmUgcHJlc2VuY2UgZnJvbSBhXFxuMzMyOTpcXHRcXHQgKiB0aHJvdHRsZWQgSTJDIHByb2JlIGFuZCBwb2xsIGZvciBjaGFuZ2VzIGluc3RlYWQuIHNmcF9pMmNfY29uZmlndXJlKClcXG4zMzMwOlxcdFxcdCAqIGhhcyBhbHJlYWR5IHNldCBpMmNfbWF4X2Jsb2NrX3NpemU7IHNlZWQgaTJjX2Jsb2NrX3NpemUgc28gdGhlXFxuMzMzMTpcXHRcXHQgKiBwcmVzZW5jZSByZWFkIGRvZXMgbm90IGlzc3VlIGEgemVyby1sZW5ndGggdHJhbnNmZXIgYmVmb3JlIHRoZSBmaXJzdFxcbjMzMzI6XFx0XFx0ICogRUVQUk9NIHJlYWQuIFNlZWQgaTJjX3ByZXNlbnRfbmV4dCB0byBqaWZmaWVzIHNvIHRoZSBmaXJzdCBwcm9iZVxcbjMzMzM6XFx0XFx0ICogaGFwcGVucyBpbW1lZGlhdGVseSAoYSB6ZXJvIHZhbHVlIHdvdWxkIGJlIGluIHRoZSBwYXN0IHJlbGF0aXZlIHRvXFxuMzMzNDpcXHRcXHQgKiB0aGUgbmVnYXRpdmUgSU5JVElBTF9KSUZGSUVTIGF0IGJvb3QgYW5kIGRlbGF5IGRldGVjdGlvbikuXFxuMzMzNTpcXHRcXHQgKlxcbjMzMzY6XFx0XFx0ICogQSBzb2xkZXJlZC1kb3duIG1vZHVsZSAoc2ZmLHNmZikgaGFzIG5vIHByZXNlbmNlIHNpZ25hbCBhbmQgaXNcXG4zMzM3OlxcdFxcdCAqIGdlbnVpbmVseSBhbHdheXMgcHJlc2VudCwgc28gaXQga2VlcHMgdGhlIGFsd2F5cy1wcmVzZW50IGJlaGF2aW91cjtcXG4zMzM4OlxcdFxcdCAqIHRoZSBJMkMgcHJvYmUgaXMgZ2F0ZWQgb24gdGhlIGNhZ2UgdHlwZSBhZHZlcnRpc2luZyBTRlBfRl9QUkVTRU5ULlxcbjMzMzk6XFx0XFx0ICovXFxuMzM0MDpcXHRcXHRpZiAoIXNmcC1cXHUwMDNlZ3Bpb1tHUElPX01PRERFRjBdKSB7XFxuMzM0MTpcXHRcXHRcXHRpZiAoc2ZmLVxcdTAwM2VncGlvcyBcXHUwMDI2IFNGUF9GX1BSRVNFTlQpIHtcXG4zMzQyOlxcdFxcdFxcdFxcdHNmcC1cXHUwMDNlZ2V0X3N0YXRlID0gc2ZwX2kyY19nZXRfc3RhdGU7XFxuMzM0MzpcXHRcXHRcXHRcXHRzZnAtXFx1MDAzZWkyY19ibG9ja19zaXplID0gc2ZwLVxcdTAwM2VpMmNfbWF4X2Jsb2NrX3NpemU7XFxuMzM0NDpcXHRcXHRcXHRcXHRzZnAtXFx1MDAzZWkyY19wcmVzZW50X25leHQgPSBqaWZmaWVzO1xcbjMzNDU6XFx0XFx0XFx0XFx0c2ZwLVxcdTAwM2VuZWVkX3BvbGwgPSB0cnVlO1xcbjMzNDY6XFx0XFx0XFx0fSBlbHNlIHtcXG4zMzQ3OlxcdFxcdFxcdFxcdHNmcC1cXHUwMDNlZ2V0X3N0YXRlID0gc2ZmX2dwaW9fZ2V0X3N0YXRlO1xcbjMzNDg6XFx0XFx0XFx0fVxcbjMzNDk6XFx0XFx0fVxcbjMzNTA6XFx0XFxuMzM1MTpcXHRcXHRkZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIm1heGltdW0tcG93ZXItbWlsbGl3YXR0XFxcIixcXG4zMzUyOlxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2c2ZwLVxcdTAwM2VtYXhfcG93ZXJfbVcpO1xcbjMzNTM6XFx0XFx0aWYgKHNmcC1cXHUwMDNlbWF4X3Bvd2VyX21XIFxcdTAwM2MgMTAwMCkge1xcbjMzNTQ6XFx0XFx0XFx0aWYgKHNmcC1cXHUwMDNlbWF4X3Bvd2VyX21XKVxcbjMzNTU6XFx0XFx0XFx0XFx0ZGV2X3dhcm4oc2ZwLVxcdTAwM2VkZXYsXFxuMzM1NjpcXHRcXHRcXHRcXHRcXHQgXFxcIkZpcm13YXJlIGJ1ZzogaG9zdCBtYXhpbXVtIHBvd2VyIHNob3VsZCBiZSBhdCBsZWFzdCAxV1xcXFxuXFxcIik7XFxuMzM1NzpcXHRcXHRcXHRzZnAtXFx1MDAzZW1heF9wb3dlcl9tVyA9IDEwMDA7XFxuMzM1ODpcXHRcXHR9XFxuMzM1OTpcXHRcXG4zMzYwOlxcdFxcdGRldl9pbmZvKHNmcC1cXHUwMDNlZGV2LCBcXFwiSG9zdCBtYXhpbXVtIHBvd2VyICV1LiV1V1xcXFxuXFxcIixcXG4zMzYxOlxcdFxcdFxcdCBzZnAtXFx1MDAzZW1heF9wb3dlcl9tVyAvIDEwMDAsIChzZnAtXFx1MDAzZW1heF9wb3dlcl9tVyAvIDEwMCkgJSAxMCk7XFxuMzM2MjpcXHRcXG4zMzYzOlxcdFxcdC8qIEdldCB0aGUgaW5pdGlhbCBzdGF0ZSwgYW5kIGFsd2F5cyBzaWduYWwgVFggZGlzYWJsZSxcXG4zMzY0OlxcdFxcdCAqIHNpbmNlIHRoZSBuZXR3b3JrIGludGVyZmFjZSB3aWxsIG5vdCBiZSB1cC5cXG4zMzY1OlxcdFxcdCAqL1xcbjMzNjY6XFx0XFx0c2ZwLVxcdTAwM2VzdGF0ZSA9IHNmcF9nZXRfc3RhdGUoc2ZwKSB8IFNGUF9GX1RYX0RJU0FCTEU7XFxuMzM2NzpcXHRcXG4zMzY4OlxcdFxcdGlmIChzZnAtXFx1MDAzZWdwaW9bR1BJT19SUzBdIFxcdTAwMjZcXHUwMDI2XFxuMzM2OTpcXHRcXHQgICAgZ3Bpb2RfZ2V0X3ZhbHVlX2NhbnNsZWVwKHNmcC1cXHUwMDNlZ3Bpb1tHUElPX1JTMF0pKVxcbjMzNzA6XFx0XFx0XFx0c2ZwLVxcdTAwM2VzdGF0ZSB8PSBTRlBfRl9SUzA7XFxuMzM3MTpcXHRcXHRzZnBfc2V0X3N0YXRlKHNmcCwgc2ZwLVxcdTAwM2VzdGF0ZSk7XFxuMzM3MjpcXHRcXHRzZnBfbW9kdWxlX3R4X2Rpc2FibGUoc2ZwKTtcXG4zMzczOlxcdFxcdGlmIChzZnAtXFx1MDAzZXN0YXRlIFxcdTAwMjYgU0ZQX0ZfUFJFU0VOVCkge1xcbjMzNzQ6XFx0XFx0XFx0cnRubF9sb2NrKCk7XFxuMzM3NTpcXHRcXHRcXHRzZnBfc21fZXZlbnQoc2ZwLCBTRlBfRV9JTlNFUlQpO1xcbjMzNzY6XFx0XFx0XFx0cnRubF91bmxvY2soKTtcXG4zMzc3OlxcdFxcdH1cXG4zMzc4OlxcdFxcbjMzNzk6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEdQSU9fTUFYOyBpKyspIHtcXG4zMzgwOlxcdFxcdFxcdGlmIChncGlvX2ZsYWdzW2ldICE9IEdQSU9EX0lOIHx8ICFzZnAtXFx1MDAzZWdwaW9baV0pXFxuMzM4MTpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4zMzgyOlxcdFxcbjMzODM6XFx0XFx0XFx0c2ZwLVxcdTAwM2VncGlvX2lycVtpXSA9IGdwaW9kX3RvX2lycShzZnAtXFx1MDAzZWdwaW9baV0pO1xcbjMzODQ6XFx0XFx0XFx0aWYgKHNmcC1cXHUwMDNlZ3Bpb19pcnFbaV0gXFx1MDAzYyAwKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjM5OjAwLjI1NzA0NzEyOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDU0MjA0MzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIENvZGUgaW4gdGhlIFNGUCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gZGlnZ2luZyBpbnRvIHRoaXMgU0ZQIGRyaXZlciBjb2RlLCBhbmQgSSd2ZSBoaXQgYSB3YWxsLiBJdCBsb29rcyBsaWtlIHRoZSBjb3JlIG9mIHRoZSBTRlAgZHJpdmVyIHJlbGllcyBoZWF2aWx5IG9uIGEgcGxhdGZvcm0gZGV2aWNlLCB0eXBpY2FsbHkgaW5zdGFudGlhdGVkIHRocm91Z2ggdGhlIGRldmljZSB0cmVlLiBJdCBhbHNvIGRlcGVuZHMgb24gYW4gSTJDIGFkYXB0ZXIgYmVpbmcgcHJvcGVybHkgY29ubmVjdGVkLCBhZ2FpbiwgdXN1YWxseSBkZWZpbmVkIGluIHRoZSBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9uLlxuXG5UaGUgcHJvYmxlbSBpcywgaW4gb3VyIGZ1enppbmcgZW52aXJvbm1lbnQsIGxpa2UgUUVNVSBvciBldmVuIEdvb2dsZSBDb21wdXRlIEVuZ2luZSwgd2UgZG9uJ3QgaGF2ZSB0aGUgc3RhbmRhcmQgaW5mcmFzdHJ1Y3R1cmUgc2V0IHVwIHRvIGF1dG9tYXRpY2FsbHkgY3JlYXRlIHRoaXMgcGxhdGZvcm0gZGV2aWNlLiBBbmQsIGFzIGZhciBhcyBJIGNhbiBzZWUsIHN5emthbGxlciBkb2Vzbid0IGhhdmUgYSBtZWNoYW5pc20gdG8gZHluYW1pY2FsbHkgYnVpbGQgdGhpcyByZXF1aXJlZCBwbGF0Zm9ybSBkZXZpY2UgYWxvbmcgd2l0aCB0aGUgbmVjZXNzYXJ5IEkyQyBidXMgYW5kIGEgbW9jayBFRVBST00gdG8gcHJvcGVybHkgdHJpZ2dlciB0aGUgcXVpcmsgd2UncmUgaW50ZXJlc3RlZCBpbi5cblxuSSB3YXMgaG9waW5nIHRoZXJlIHdhcyBhbm90aGVyIHBhdGggdG8gcmVhY2ggYHNmcF9xdWlya19ub19zZ21paWAuIEkgdHJhY2VkIGl0IGJhY2sgdGhyb3VnaCBgc2ZwX3NtX21vZF9wcm9iZWAgdG8gYHNmcF9zbV9tb2RfaGFja3NgLCBhbmQgaXQgYWxsIGV2ZW50dWFsbHkgbGVhZHMgYmFjayB0byB0aGlzIFNGUCBwbGF0Zm9ybSBkZXZpY2UuIFdpdGhvdXQgdGhhdCBkZXZpY2UgaW5zdGFudGlhdGVkLCB0aGVyZSdzIGp1c3Qgbm8gd2F5IGZvciB0aGlzIHNwZWNpZmljIHNlY3Rpb24gb2YgY29kZSB0byBnZXQgZXhlY3V0ZWQuXG5cbkdpdmVuIHRoZXNlIGNvbnN0cmFpbnRzIGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9uIHRoZSBwbGF0Zm9ybSBkZXZpY2UsIEkndmUgY29uY2x1ZGVkIHRoYXQgdGhpcyBjb2RlIGlzIGVmZmVjdGl2ZWx5IHVucmVhY2hhYmxlIGluIG91ciBmdXp6aW5nIHNldHVwLiBUaGVyZSdzIGp1c3Qgbm8gcHJhY3RpY2FsIHdheSB0byB0cmlnZ2VyIGl0IHdpdGggb3VyIGN1cnJlbnQgdG9vbHMgYW5kIGVudmlyb25tZW50LlxuXG5UaGVyZWZvcmUsIGFmdGVyIGNhcmVmdWwgY29uc2lkZXJhdGlvbiwgSSBoYXZlIHRvIGRlY2xhcmUgdGhpcyBzZWN0aW9uIG9mIGNvZGUgYXMgbm90IHdvcnRoIGZ1enppbmcuIEknbGwgYmUgcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTQxLCJPdXRwdXRUb2tlbnMiOjEzNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjM5OjA2LjcxMTI1NDE3OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBxdWlyayBmb3IgYSBzcGVjaWZpYyBTRlAgbW9kdWxlIChGSU5JU0FSIENPUlAuIEZDTEY4NTIxUDJCVEwpLiBUaGUgU0ZQIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlbGllcyBvbiBkZXZpY2UgdHJlZSBpbnN0YW50aWF0aW9uIGFuZCBJMkMgY29tbXVuaWNhdGlvbiB0byByZWFkIHRoZSBtb2R1bGUncyBFRVBST00uIEluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRSwgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24gb3IgZGV2aWNlIHRyZWUgaW5qZWN0aW9uIGZvciB0aGlzIFNGUCBtb2R1bGUgYW5kIGl0cyBJMkMgRUVQUk9NLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBhbmQgY2Fubm90IGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBxdWlyayBmb3IgYSBzcGVjaWZpYyBTRlAgbW9kdWxlIChGSU5JU0FSIENPUlAuIEZDTEY4NTIxUDJCVEwpLiBUaGUgU0ZQIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlbGllcyBvbiBkZXZpY2UgdHJlZSBpbnN0YW50aWF0aW9uIGFuZCBJMkMgY29tbXVuaWNhdGlvbiB0byByZWFkIHRoZSBtb2R1bGUncyBFRVBST00uIEluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRSwgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24gb3IgZGV2aWNlIHRyZWUgaW5qZWN0aW9uIGZvciB0aGlzIFNGUCBtb2R1bGUgYW5kIGl0cyBJMkMgRUVQUk9NLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBhbmQgY2Fubm90IGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflow56jcx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-14 20:08:32 +0000 UTC FinishedAt: 2026-07-14 20:39:07 +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+CgkJCTx0ZD4yMDI2LzA3LzE0IDIwOjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBxdWlyayBmb3IgYSBzcGVjaWZpYyBTRlAgbW9kdWxlIChGSU5JU0FSIENPUlAuIEZDTEY4NTIxUDJCVEwpLiBUaGUgU0ZQIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlbGllcyBvbiBkZXZpY2UgdHJlZSBpbnN0YW50aWF0aW9uIGFuZCBJMkMgY29tbXVuaWNhdGlvbiB0byByZWFkIHRoZSBtb2R1bGUmIzM5O3MgRUVQUk9NLiBJbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UsIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uIG9yIGRldmljZSB0cmVlIGluamVjdGlvbiBmb3IgdGhpcyBTRlAgbW9kdWxlIGFuZCBpdHMgSTJDIEVFUFJPTSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIwOjM4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTBhM2Q4MzdmNzBmMzdjYzU4MmU4N2Y0MGVjYmMyOGM4MzRlYTYzOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDIwOjM4OjIwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9zZnAuYyBiL2RyaXZlcnMvbmV0L3BoeS9zZnAuY1xuaW5kZXggZjUyMDIwNjczNGRhYWEuLjY1ZjNiYjJiY2FmMzUxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3NmcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvc2ZwLmNcbkBAIC00NzcsNiAmIzQzOzQ3NywxNiBAQCBzdGF0aWMgdm9pZCBzZnBfcXVpcmtfMjUwMGJhc2V4KGNvbnN0IHN0cnVjdCBzZnBfZWVwcm9tX2lkICppZCxcbiBcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYLCBjYXBzLVx1MDAzZWludGVyZmFjZXMpO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgc2ZwX3F1aXJrX25vX3NnbWlpKGNvbnN0IHN0cnVjdCBzZnBfZWVwcm9tX2lkICppZCxcbiYjNDM7XHRcdFx0ICAgICAgIHN0cnVjdCBzZnBfbW9kdWxlX2NhcHMgKmNhcHMpXG4mIzQzO3tcbiYjNDM7XHRsaW5rbW9kZV9jbGVhcl9iaXQoRVRIVE9PTF9MSU5LX01PREVfMTAwMGJhc2VUX0hhbGZfQklULFxuJiM0MztcdFx0XHQgICBjYXBzLVx1MDAzZWxpbmtfbW9kZXMpO1xuJiM0MztcdGxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwYmFzZVRfRnVsbF9CSVQsXG4mIzQzO1x0XHRcdCAgIGNhcHMtXHUwMDNlbGlua19tb2Rlcyk7XG4mIzQzO1x0X19jbGVhcl9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJLCBjYXBzLVx1MDAzZWludGVyZmFjZXMpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyB2b2lkIHNmcF9xdWlya19kaXNhYmxlX2F1dG9uZWcoY29uc3Qgc3RydWN0IHNmcF9lZXByb21faWQgKmlkLFxuIFx0XHRcdFx0ICAgICAgc3RydWN0IHNmcF9tb2R1bGVfY2FwcyAqY2FwcylcbiB7XG5AQCAtNTM4LDYgJiM0Mzs1NDgsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzZnBfcXVpcmsgc2ZwX3F1aXJrc1tdID0ge1xuIFx0Ly8gUEhZLlxuIFx0U0ZQX1FVSVJLX0YoXCYjMzQ7RlNcJiMzNDssIFwmIzM0O1NGUC0xMEctVFwmIzM0Oywgc2ZwX2ZpeHVwX2ZzXzEwZ3QpLFxuIFxuJiM0MztcdC8vIFRoZXNlIGFyZSBzb2xkIGFzIDEwMDBiYXNlLVggY29tcGF0aWJsZS4gVGh1cywgbWFrZSBzdXJlIHdlIGRvbiYjMzk7dFxuJiM0MztcdC8vIHVzZSBTR01JSS5cbiYjNDM7XHRTRlBfUVVJUktfUyhcJiMzNDtGSU5JU0FSIENPUlAuXCYjMzQ7LCBcJiMzNDtGQ0xGODUyMVAyQlRMXCYjMzQ7LCBzZnBfcXVpcmtfbm9fc2dtaWkpLFxuJiM0MztcbiBcdC8vIEZpYmVyc3RvcmUgU0ZQLTIuNUctVCBhbmQgU0ZQLTEwR00tVCB1c2VzIFJvbGxiYWxsIHByb3RvY29sIHRvIHRhbGtcbiBcdC8vIHRvIHRoZSBQSFkgYW5kIG5lZWRzIDQgc2VjIHdhaXQgYmVmb3JlIHByb2JpbmcgdGhlIFBIWS5cbiBcdFNGUF9RVUlSS19GKFwmIzM0O0ZTXCYjMzQ7LCBcJiMzNDtTRlAtMi41Ry1UXCYjMzQ7LCBzZnBfZml4dXBfcm9sbGJhbGxfd2FpdDRzKSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDozODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcXVpcmsgZm9yIGEgc3BlY2lmaWMgU0ZQIG1vZHVsZSAoRklOSVNBUiBDT1JQLiBGQ0xGODUyMVAyQlRMKS4gVGhlIFNGUCBkcml2ZXIgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZWxpZXMgb24gZGV2aWNlIHRyZWUgaW5zdGFudGlhdGlvbiBhbmQgSTJDIGNvbW11bmljYXRpb24gdG8gcmVhZCB0aGUgbW9kdWxlJiMzOTtzIEVFUFJPTS4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFLCB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiBvciBkZXZpY2UgdHJlZSBpbmplY3Rpb24gZm9yIHRoaXMgU0ZQIG1vZHVsZSBhbmQgaXRzIEkyQyBFRVBST00sIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGFuZCBjYW5ub3QgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTBhM2Q4MzdmNzBmMzdjYzU4MmU4N2Y0MGVjYmMyOGM4MzRlYTYzOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDE0IDIwOjM4OjIwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3NmcC5jIGIvZHJpdmVycy9uZXQvcGh5L3NmcC5jCmluZGV4IGY1MjAyMDY3MzRkYWFhLi42NWYzYmIyYmNhZjM1MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3NmcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9zZnAuYwpAQCAtNDc3LDYgJiM0Mzs0NzcsMTYgQEAgc3RhdGljIHZvaWQgc2ZwX3F1aXJrXzI1MDBiYXNleChjb25zdCBzdHJ1Y3Qgc2ZwX2VlcHJvbV9pZCAqaWQsCiAJX19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgsIGNhcHMtJmd0O2ludGVyZmFjZXMpOwogfQogCiYjNDM7c3RhdGljIHZvaWQgc2ZwX3F1aXJrX25vX3NnbWlpKGNvbnN0IHN0cnVjdCBzZnBfZWVwcm9tX2lkICppZCwKJiM0MzsJCQkgICAgICAgc3RydWN0IHNmcF9tb2R1bGVfY2FwcyAqY2FwcykKJiM0Mzt7CiYjNDM7CWxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwYmFzZVRfSGFsZl9CSVQsCiYjNDM7CQkJICAgY2Fwcy0mZ3Q7bGlua19tb2Rlcyk7CiYjNDM7CWxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwYmFzZVRfRnVsbF9CSVQsCiYjNDM7CQkJICAgY2Fwcy0mZ3Q7bGlua19tb2Rlcyk7CiYjNDM7CV9fY2xlYXJfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSwgY2Fwcy0mZ3Q7aW50ZXJmYWNlcyk7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgc2ZwX3F1aXJrX2Rpc2FibGVfYXV0b25lZyhjb25zdCBzdHJ1Y3Qgc2ZwX2VlcHJvbV9pZCAqaWQsCiAJCQkJICAgICAgc3RydWN0IHNmcF9tb2R1bGVfY2FwcyAqY2FwcykKIHsKQEAgLTUzOCw2ICYjNDM7NTQ4LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2ZwX3F1aXJrIHNmcF9xdWlya3NbXSA9IHsKIAkvLyBQSFkuCiAJU0ZQX1FVSVJLX0YoJiMzNDtGUyYjMzQ7LCAmIzM0O1NGUC0xMEctVCYjMzQ7LCBzZnBfZml4dXBfZnNfMTBndCksCiAKJiM0MzsJLy8gVGhlc2UgYXJlIHNvbGQgYXMgMTAwMGJhc2UtWCBjb21wYXRpYmxlLiBUaHVzLCBtYWtlIHN1cmUgd2UgZG9uJiMzOTt0CiYjNDM7CS8vIHVzZSBTR01JSS4KJiM0MzsJU0ZQX1FVSVJLX1MoJiMzNDtGSU5JU0FSIENPUlAuJiMzNDssICYjMzQ7RkNMRjg1MjFQMkJUTCYjMzQ7LCBzZnBfcXVpcmtfbm9fc2dtaWkpLAomIzQzOwogCS8vIEZpYmVyc3RvcmUgU0ZQLTIuNUctVCBhbmQgU0ZQLTEwR00tVCB1c2VzIFJvbGxiYWxsIHByb3RvY29sIHRvIHRhbGsKIAkvLyB0byB0aGUgUEhZIGFuZCBuZWVkcyA0IHNlYyB3YWl0IGJlZm9yZSBwcm9iaW5nIHRoZSBQSFkuCiAJU0ZQX1FVSVJLX0YoJiMzNDtGUyYjMzQ7LCAmIzM0O1NGUC0yLjVHLVQmIzM0Oywgc2ZwX2ZpeHVwX3JvbGxiYWxsX3dhaXQ0cyksCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIwOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMTQKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAxMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgU0ZQIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgZHJpdmVycy9uZXQvcGh5L3NmcC5jYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaDsgdGhleSYjMzk7cmUgYWRkaW5nIGEgbmV3IHF1aXJrLCBgc2ZwX3F1aXJrX25vX3NnbWlpYCwgYW5kIGl0JiMzOTtzIHNwZWNpZmljYWxseSBmb3IgYSAmIzM0O0ZJTklTQVIgQ09SUC4mIzM0OyAmIzM0O0ZDTEY4NTIxUDJCVEwmIzM0OyBtb2R1bGUuIE5vdGhpbmcgdG9vIGNvbXBsZXggZnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiwgdGhvdWdoLCBpcyBob3cgdGVzdGFibGUgaXMgdGhpcyBjaGFuZ2U/IENhbiB0aGlzIHF1aXJrIGV2ZW4gYmUgdHJpZ2dlcmVkIHdpdGhpbiBhIHZpcnR1YWxpemVkIHNldHVwPyBTRlAgbW9kdWxlcywgYnkgdGhlaXIgbmF0dXJlLCBhcmUgdHlwaWNhbGx5IHBoeXNpY2FsIGhhcmR3YXJlIGNvbXBvbmVudHMsIHJpZ2h0PwoKSSBuZWVkIHRvIGFzc2VzcyB0aGUgZnV6emFiaWxpdHkgb2YgdGhlIFNGUCBkcml2ZXIuIENhbiB3ZSBnZXQgZW5vdWdoIGNvdmVyYWdlIGJ5IGZ1enppbmcsIGdpdmVuIHRoYXQgdGhlc2UgbW9kdWxlcyBhcmUgcGh5c2ljYWw/IFBlcmhhcHMgd2UgY291bGQgZW11bGF0ZSB0aGVzZSBTRlAgbW9kdWxlczsgdGhhdCBjb3VsZCBiZSBhIHBvc3NpYmxlIHRlc3Qgc3RyYXRlZ3kuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYGRyaXZlcnMvbmV0L3BoeS9zZnAuY2AgYW5kIHNlZSB3aGF0IG9wdGlvbnMgYXJlIHRoZXJlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGRyaXZlcuKAmXMgaW50ZXJmYWNlIGJldHRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZnBfcXVpcmtfbm9fc2dtaWkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3NmcC5jPTQ3Mj1zdGF0aWMgdm9pZCBzZnBfcXVpcmtfMjUwMGJhc2V4KGNvbnN0IHN0cnVjdCBzZnBfZWVwcm9tX2lkICppZCxcbi0tXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtNDc5LVxuZHJpdmVycy9uZXQvcGh5L3NmcC5jOjQ4MDpzdGF0aWMgdm9pZCBzZnBfcXVpcmtfbm9fc2dtaWkoY29uc3Qgc3RydWN0IHNmcF9lZXByb21faWQgKmlkLFxuZHJpdmVycy9uZXQvcGh5L3NmcC5jLTQ4MS1cdFx0XHQgICAgICAgc3RydWN0IHNmcF9tb2R1bGVfY2FwcyAqY2Fwcylcbi0tXG5kcml2ZXJzL25ldC9waHkvc2ZwLmM9NTMwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2ZwX3F1aXJrIHNmcF9xdWlya3NbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtNTUyLVx0Ly8gdXNlIFNHTUlJLlxuZHJpdmVycy9uZXQvcGh5L3NmcC5jOjU1MzpcdFNGUF9RVUlSS19TKFwmIzM0O0ZJTklTQVIgQ09SUC5cJiMzNDssIFwmIzM0O0ZDTEY4NTIxUDJCVExcJiMzNDssIHNmcF9xdWlya19ub19zZ21paSksXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtNTU0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIwOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4NjMKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBTRlAgRHJpdmVyIFJlYWNoYWJpbGl0eSBhbmQgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHdlIGNhbiBldmVuICp0b3VjaCogdGhlIFNGUCBkcml2ZXIgdmlhIEkyQywgb3IgaWYgdGhlcmUmIzM5O3MgYW55IHN1cmZhY2UgZm9yIGZ1enppbmcuIFNGUHMgYXJlIG5vdG9yaW91cyBmb3IgdXNpbmcgSTJDIGZvciBFRVBST00gYWNjZXNzLCB3aGljaCBpcyBhIGNvbW1vbiB2ZWN0b3IuIE5vdywgSTJDIGl0c2VsZiBpcyBmdXp6YWJsZSDigJMgYGkyYy1zdHViYCBvciBzaW1pbGFyIHRvb2xzIGFyZSBteSB1c3VhbCBnby10byDigJMgYnV0IHRhcmdldGluZyAqc3BlY2lmaWMqIEkyQyBkZXZpY2VzIGlzIHRoZSB0cmlja3kgYml0LCB1c3VhbGx5IHVubGVzcyB0aGV5IGFyZSBwcm9wZXJseSBpbnN0YW50aWF0ZWQsIGFuZCB0aGVyZWZvcmUgYWRkcmVzc2FibGUsIG9uIHRoZSBidXMuCgpXYWl0IGEgc2Vjb25k4oCmU0ZQIGluc3RhbnRpYXRpb24gaXMgZ2VuZXJhbGx5IGhhbmRsZWQgdGhyb3VnaCB0aGUgZGV2aWNlIHRyZWUsIGlzbiYjMzk7dCBpdD8gSWYgdGhlIERUIGRvZXMgdGhlIGhlYXZ5IGxpZnRpbmcsIHRoZW4gY2FuIHdlIHBvdGVudGlhbGx5IGludGVyYWN0IHdpdGggdGhlIFNGUCB0aHJvdWdoIHN5c2ZzPyBUaGF0JiMzOTtzIHRoZSBrZXkgcXVlc3Rpb24uIFdlIG5lZWQgdG8gc2VlIGlmIHdlIGNhbiBleHBvc2UgYSBjb250cm9sIHBsYW5lLgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgdGhlIHJlbGV2YW50IGRyaXZlcjogYGRyaXZlcnMvbmV0L3BoeS9zZnAuY2AuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgc2lnbiBvZiBhIGBtb2R1bGVfaTJjX2RyaXZlcmAgb3IgYSBzaW1pbGFyIGNvbnN0cnVjdCB0aGF0IHRpZXMgaXQgaW50byB0aGUgSTJDIHN1YnN5c3RlbS4gVGhhdCB3b3VsZCBiZSB0aGUgZmlyc3QgY2x1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfLipkcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvc2ZwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3NmcC5jPTM0Njc9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc2ZwX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMzQ3Ni1cbmRyaXZlcnMvbmV0L3BoeS9zZnAuYzozNDc3Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoc2ZwX2RyaXZlcik7XG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMzQ3OC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzg1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkRpdmluZyBpbnRvIHRoZSBEcml2ZXIqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGllY2Ugb2YgY29kZSDigJMgaXQmIzM5O3MgY2xlYXJseSBhIHBsYXRmb3JtIGRyaXZlci4gRmlyc3QgdGhpbmcgSSYjMzk7bSBnb2luZyB0byBkaWcgaW50byBpcyB0aGUgcHJvYmluZyBtZWNoYW5pc20uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBpZGVudGlmaWVzIGFuZCBhdHRhY2hlcyBpdHNlbGYgdG8gYSBzcGVjaWZpYyBoYXJkd2FyZSBpbnN0YW5jZS4gV2hhdCBhcmUgdGhlIGtleSBlbGVtZW50cyBpdCB1c2VzIGZvciBtYXRjaGluZz8gSXMgaXQgdXNpbmcgYSBkZXZpY2UgdHJlZSwgQUNQSSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY3JpdGVyaWEgdGhpcyBkcml2ZXImIzM5O3MgcmVseWluZyBvbiBmb3IgYSBzdWNjZXNzZnVsIHByb2JlIGFuZCBpbml0aWFsaXphdGlvbi4gVGhpcyBpbml0aWFsIHByb2JpbmcgcGhhc2UgaXMgY3J1Y2lhbCB0byBkZXRlcm1pbmUgaWYgaXQgY2FuIHN1cHBvcnQgdGhlIHByZXNlbnQgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMjA6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2ZwX3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3NmcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9zZnAuYz0zMjU5PXN0YXRpYyBpbnQgc2ZwX2kyY19nZXQoc3RydWN0IHNmcCAqc2ZwKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy0zMjg0LVxuZHJpdmVycy9uZXQvcGh5L3NmcC5jOjMyODU6c3RhdGljIGludCBzZnBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy0zMjg2LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvc2ZwLmM9MzQ2Nz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBzZnBfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvcGh5L3NmcC5jOjM0Njg6XHQucHJvYmUgPSBzZnBfcHJvYmUsXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMzQ2OS1cdC5yZW1vdmUgPSBzZnBfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIwOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NzIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAyNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgU0ZQIE1vZHVsZSBRdWlya3MqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGxhdGZvcm0gZHJpdmVyLCBwcm9iYWJseSBob29rZWQgdXAgdGhyb3VnaCB0aGUgZGV2aWNlIHRyZWUuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIHdlIGZ1enogdGhpcz8gU3l6a2FsbGVyIGNhbiBpbmplY3QgcGxhdGZvcm0gZGV2aWNlcyB1c2luZyBmdW5jdGlvbnMgbGlrZSBgc3l6X2Rldl9wbGF0Zm9ybWAsIGJ1dCBpdCYjMzk7cyBub3QgYSBnby10byBmdXp6aW5nIHRhcmdldCB1bmxlc3MgdGhlcmUmIzM5O3MgZGVkaWNhdGVkIHN1cHBvcnQuIFdhaXQsIHRoaXMgcGF0Y2ggaXMganVzdCBhYm91dCBhIHF1aXJrIGZvciBhIHNwZWNpZmljIFNGUCBtb2R1bGUsIG5vdCB0aGUgd2hvbGUgZHJpdmVyLgoKUmlnaHQsIHRoZSBxdWlyayB0cmlnZ2VycyB3aGVuIHRoZSBkcml2ZXIgcmVhZHMgYW4gRUVQUk9NIHdpdGggYSBwYXJ0aWN1bGFyIHZlbmRvciBJRCBhbmQgcGFydCBudW1iZXIuIFRoZSBFRVBST00gaXMgcmVhZCBvdmVyIEkyQy4gSWYgaXQmIzM5O3MgZ29pbmcgdG8gcmVxdWlyZSBhY3R1YWxseSBlbXVsYXRpbmcgdGhlIFNGUCBtb2R1bGUgYW5kIGl0cyBJMkMgRUVQUk9NIHRvIG1ha2UgdGhpcyB3b3JrLCBpdCYjMzk7cyBwcm9iYWJseSBub3Qgd29ydGggdGhlIGVmZm9ydC4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSYjMzk7cyBhIHdvcmthcm91bmQuCgpUaGUgU0ZQIGRyaXZlciByZWFkcyB0aGUgRUVQUk9NIHZpYSBJMkMuIENhbiB3ZSBzb21laG93IG1vY2sgdGhlIEkyQyBkZXZpY2U/IFN5emthbGxlciBoYXMgc29tZSBJMkMgZnV6emluZyBzdXBwb3J0IHdpdGggYHN5el9pMmNfc2V0dXBgLiBUaGUgcHJvYmxlbSBpcyB0aGF0IHRoZSBTRlAgZHJpdmVyIGlzIGEgcGxhdGZvcm0gZHJpdmVyLiBJdCBnZXRzIGl0cyBJMkMgYWRhcHRlciBmcm9tIHRoZSBkZXZpY2UgdHJlZSDigJMgdXNpbmcgc29tZXRoaW5nIGxpa2UgYGkyY19nZXRfYWRhcHRlcihucClgLiBTbyBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBgc2ZwX3Byb2JlYCBmdW5jdGlvbiB0byBjb25maXJtIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDIwOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3NmcC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzI4NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzI4NTpcdHN0YXRpYyBpbnQgc2ZwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4zMjg2Olx0e1xuMzI4NzpcdFx0Y29uc3Qgc3RydWN0IHNmZl9kYXRhICpzZmY7XG4zMjg4Olx0XHRjaGFyICpzZnBfaXJxX25hbWU7XG4zMjg5Olx0XHRzdHJ1Y3Qgc2ZwICpzZnA7XG4zMjkwOlx0XHRpbnQgZXJyLCBpO1xuMzI5MTpcdFxuMzI5MjpcdFx0c2ZwID0gc2ZwX2FsbG9jKFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbjMyOTM6XHRcdGlmIChJU19FUlIoc2ZwKSlcbjMyOTQ6XHRcdFx0cmV0dXJuIFBUUl9FUlIoc2ZwKTtcbjMyOTU6XHRcbjMyOTY6XHRcdHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIHNmcCk7XG4zMjk3Olx0XG4zMjk4Olx0XHRlcnIgPSBkZXZtX2FkZF9hY3Rpb25fb3JfcmVzZXQoc2ZwLVx1MDAzZWRldiwgc2ZwX2NsZWFudXAsIHNmcCk7XG4zMjk5Olx0XHRpZiAoZXJyIFx1MDAzYyAwKVxuMzMwMDpcdFx0XHRyZXR1cm4gZXJyO1xuMzMwMTpcdFxuMzMwMjpcdFx0c2ZmID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKHNmcC1cdTAwM2VkZXYpO1xuMzMwMzpcdFx0aWYgKCFzZmYpXG4zMzA0Olx0XHRcdHNmZiA9IFx1MDAyNnNmcF9kYXRhO1xuMzMwNTpcdFxuMzMwNjpcdFx0c2ZwLVx1MDAzZXR5cGUgPSBzZmY7XG4zMzA3Olx0XG4zMzA4Olx0XHRlcnIgPSBzZnBfaTJjX2dldChzZnApO1xuMzMwOTpcdFx0aWYgKGVycilcbjMzMTA6XHRcdFx0cmV0dXJuIGVycjtcbjMzMTE6XHRcbjMzMTI6XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEdQSU9fTUFYOyBpJiM0MzsmIzQzOylcbjMzMTM6XHRcdFx0aWYgKHNmZi1cdTAwM2VncGlvcyBcdTAwMjYgQklUKGkpKSB7XG4zMzE0Olx0XHRcdFx0c2ZwLVx1MDAzZWdwaW9baV0gPSBkZXZtX2dwaW9kX2dldF9vcHRpb25hbChzZnAtXHUwMDNlZGV2LFxuMzMxNTpcdFx0XHRcdFx0XHQgICBncGlvX25hbWVzW2ldLCBncGlvX2ZsYWdzW2ldKTtcbjMzMTY6XHRcdFx0XHRpZiAoSVNfRVJSKHNmcC1cdTAwM2VncGlvW2ldKSlcbjMzMTc6XHRcdFx0XHRcdHJldHVybiBQVFJfRVJSKHNmcC1cdTAwM2VncGlvW2ldKTtcbjMzMTg6XHRcdFx0fVxuMzMxOTpcdFxuMzMyMDpcdFx0c2ZwLVx1MDAzZXN0YXRlX2h3X21hc2sgPSBTRlBfRl9QUkVTRU5UO1xuMzMyMTpcdFx0c2ZwLVx1MDAzZXN0YXRlX2h3X2RyaXZlID0gU0ZQX0ZfVFhfRElTQUJMRTtcbjMzMjI6XHRcbjMzMjM6XHRcdHNmcC1cdTAwM2VnZXRfc3RhdGUgPSBzZnBfZ3Bpb19nZXRfc3RhdGU7XG4zMzI0Olx0XHRzZnAtXHUwMDNlc2V0X3N0YXRlID0gc2ZwX2dwaW9fc2V0X3N0YXRlO1xuMzMyNTpcdFxuMzMyNjpcdFx0LyogQW4gU0ZQIGNhZ2Ugd2l0aCBubyBNT0RfREVGMCBHUElPIGhhcyBubyBoYXJkd2FyZSBwcmVzZW5jZSBzaWduYWwuXG4zMzI3Olx0XHQgKiBBc3N1bWluZyB0aGUgbW9kdWxlIGlzIGFsd2F5cyBwcmVzZW50IHRyYXBzIGFuIGVtcHR5IGNhZ2UgaW5cbjMzMjg6XHRcdCAqIE1PRF9FUlJPUiBhbmQgbmV2ZXIgZGV0ZWN0cyBob3QtaW5zZXJ0aW9uLCBzbyBkZXJpdmUgcHJlc2VuY2UgZnJvbSBhXG4zMzI5Olx0XHQgKiB0aHJvdHRsZWQgSTJDIHByb2JlIGFuZCBwb2xsIGZvciBjaGFuZ2VzIGluc3RlYWQuIHNmcF9pMmNfY29uZmlndXJlKClcbjMzMzA6XHRcdCAqIGhhcyBhbHJlYWR5IHNldCBpMmNfbWF4X2Jsb2NrX3NpemU7IHNlZWQgaTJjX2Jsb2NrX3NpemUgc28gdGhlXG4zMzMxOlx0XHQgKiBwcmVzZW5jZSByZWFkIGRvZXMgbm90IGlzc3VlIGEgemVyby1sZW5ndGggdHJhbnNmZXIgYmVmb3JlIHRoZSBmaXJzdFxuMzMzMjpcdFx0ICogRUVQUk9NIHJlYWQuIFNlZWQgaTJjX3ByZXNlbnRfbmV4dCB0byBqaWZmaWVzIHNvIHRoZSBmaXJzdCBwcm9iZVxuMzMzMzpcdFx0ICogaGFwcGVucyBpbW1lZGlhdGVseSAoYSB6ZXJvIHZhbHVlIHdvdWxkIGJlIGluIHRoZSBwYXN0IHJlbGF0aXZlIHRvXG4zMzM0Olx0XHQgKiB0aGUgbmVnYXRpdmUgSU5JVElBTF9KSUZGSUVTIGF0IGJvb3QgYW5kIGRlbGF5IGRldGVjdGlvbikuXG4zMzM1Olx0XHQgKlxuMzMzNjpcdFx0ICogQSBzb2xkZXJlZC1kb3duIG1vZHVsZSAoc2ZmLHNmZikgaGFzIG5vIHByZXNlbmNlIHNpZ25hbCBhbmQgaXNcbjMzMzc6XHRcdCAqIGdlbnVpbmVseSBhbHdheXMgcHJlc2VudCwgc28gaXQga2VlcHMgdGhlIGFsd2F5cy1wcmVzZW50IGJlaGF2aW91cjtcbjMzMzg6XHRcdCAqIHRoZSBJMkMgcHJvYmUgaXMgZ2F0ZWQgb24gdGhlIGNhZ2UgdHlwZSBhZHZlcnRpc2luZyBTRlBfRl9QUkVTRU5ULlxuMzMzOTpcdFx0ICovXG4zMzQwOlx0XHRpZiAoIXNmcC1cdTAwM2VncGlvW0dQSU9fTU9EREVGMF0pIHtcbjMzNDE6XHRcdFx0aWYgKHNmZi1cdTAwM2VncGlvcyBcdTAwMjYgU0ZQX0ZfUFJFU0VOVCkge1xuMzM0MjpcdFx0XHRcdHNmcC1cdTAwM2VnZXRfc3RhdGUgPSBzZnBfaTJjX2dldF9zdGF0ZTtcbjMzNDM6XHRcdFx0XHRzZnAtXHUwMDNlaTJjX2Jsb2NrX3NpemUgPSBzZnAtXHUwMDNlaTJjX21heF9ibG9ja19zaXplO1xuMzM0NDpcdFx0XHRcdHNmcC1cdTAwM2VpMmNfcHJlc2VudF9uZXh0ID0gamlmZmllcztcbjMzNDU6XHRcdFx0XHRzZnAtXHUwMDNlbmVlZF9wb2xsID0gdHJ1ZTtcbjMzNDY6XHRcdFx0fSBlbHNlIHtcbjMzNDc6XHRcdFx0XHRzZnAtXHUwMDNlZ2V0X3N0YXRlID0gc2ZmX2dwaW9fZ2V0X3N0YXRlO1xuMzM0ODpcdFx0XHR9XG4zMzQ5Olx0XHR9XG4zMzUwOlx0XG4zMzUxOlx0XHRkZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O21heGltdW0tcG93ZXItbWlsbGl3YXR0XCYjMzQ7LFxuMzM1MjpcdFx0XHRcdFx0IFx1MDAyNnNmcC1cdTAwM2VtYXhfcG93ZXJfbVcpO1xuMzM1MzpcdFx0aWYgKHNmcC1cdTAwM2VtYXhfcG93ZXJfbVcgXHUwMDNjIDEwMDApIHtcbjMzNTQ6XHRcdFx0aWYgKHNmcC1cdTAwM2VtYXhfcG93ZXJfbVcpXG4zMzU1Olx0XHRcdFx0ZGV2X3dhcm4oc2ZwLVx1MDAzZWRldixcbjMzNTY6XHRcdFx0XHRcdCBcJiMzNDtGaXJtd2FyZSBidWc6IGhvc3QgbWF4aW11bSBwb3dlciBzaG91bGQgYmUgYXQgbGVhc3QgMVdcXG5cJiMzNDspO1xuMzM1NzpcdFx0XHRzZnAtXHUwMDNlbWF4X3Bvd2VyX21XID0gMTAwMDtcbjMzNTg6XHRcdH1cbjMzNTk6XHRcbjMzNjA6XHRcdGRldl9pbmZvKHNmcC1cdTAwM2VkZXYsIFwmIzM0O0hvc3QgbWF4aW11bSBwb3dlciAldS4ldVdcXG5cJiMzNDssXG4zMzYxOlx0XHRcdCBzZnAtXHUwMDNlbWF4X3Bvd2VyX21XIC8gMTAwMCwgKHNmcC1cdTAwM2VtYXhfcG93ZXJfbVcgLyAxMDApICUgMTApO1xuMzM2MjpcdFxuMzM2MzpcdFx0LyogR2V0IHRoZSBpbml0aWFsIHN0YXRlLCBhbmQgYWx3YXlzIHNpZ25hbCBUWCBkaXNhYmxlLFxuMzM2NDpcdFx0ICogc2luY2UgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIHdpbGwgbm90IGJlIHVwLlxuMzM2NTpcdFx0ICovXG4zMzY2Olx0XHRzZnAtXHUwMDNlc3RhdGUgPSBzZnBfZ2V0X3N0YXRlKHNmcCkgfCBTRlBfRl9UWF9ESVNBQkxFO1xuMzM2NzpcdFxuMzM2ODpcdFx0aWYgKHNmcC1cdTAwM2VncGlvW0dQSU9fUlMwXSBcdTAwMjZcdTAwMjZcbjMzNjk6XHRcdCAgICBncGlvZF9nZXRfdmFsdWVfY2Fuc2xlZXAoc2ZwLVx1MDAzZWdwaW9bR1BJT19SUzBdKSlcbjMzNzA6XHRcdFx0c2ZwLVx1MDAzZXN0YXRlIHw9IFNGUF9GX1JTMDtcbjMzNzE6XHRcdHNmcF9zZXRfc3RhdGUoc2ZwLCBzZnAtXHUwMDNlc3RhdGUpO1xuMzM3MjpcdFx0c2ZwX21vZHVsZV90eF9kaXNhYmxlKHNmcCk7XG4zMzczOlx0XHRpZiAoc2ZwLVx1MDAzZXN0YXRlIFx1MDAyNiBTRlBfRl9QUkVTRU5UKSB7XG4zMzc0Olx0XHRcdHJ0bmxfbG9jaygpO1xuMzM3NTpcdFx0XHRzZnBfc21fZXZlbnQoc2ZwLCBTRlBfRV9JTlNFUlQpO1xuMzM3NjpcdFx0XHRydG5sX3VubG9jaygpO1xuMzM3NzpcdFx0fVxuMzM3ODpcdFxuMzM3OTpcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgR1BJT19NQVg7IGkmIzQzOyYjNDM7KSB7XG4zMzgwOlx0XHRcdGlmIChncGlvX2ZsYWdzW2ldICE9IEdQSU9EX0lOIHx8ICFzZnAtXHUwMDNlZ3Bpb1tpXSlcbjMzODE6XHRcdFx0XHRjb250aW51ZTtcbjMzODI6XHRcbjMzODM6XHRcdFx0c2ZwLVx1MDAzZWdwaW9faXJxW2ldID0gZ3Bpb2RfdG9faXJxKHNmcC1cdTAwM2VncGlvW2ldKTtcbjMzODQ6XHRcdFx0aWYgKHNmcC1cdTAwM2VncGlvX2lycVtpXSBcdTAwM2MgMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTQxCgkJCQkJCQlvdXRwdXQ6IDEzNwoJCQkJCQkJdGhvdWdodHM6IDIxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipVbnJlYWNoYWJsZSBDb2RlIGluIHRoZSBTRlAgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gZGlnZ2luZyBpbnRvIHRoaXMgU0ZQIGRyaXZlciBjb2RlLCBhbmQgSSYjMzk7dmUgaGl0IGEgd2FsbC4gSXQgbG9va3MgbGlrZSB0aGUgY29yZSBvZiB0aGUgU0ZQIGRyaXZlciByZWxpZXMgaGVhdmlseSBvbiBhIHBsYXRmb3JtIGRldmljZSwgdHlwaWNhbGx5IGluc3RhbnRpYXRlZCB0aHJvdWdoIHRoZSBkZXZpY2UgdHJlZS4gSXQgYWxzbyBkZXBlbmRzIG9uIGFuIEkyQyBhZGFwdGVyIGJlaW5nIHByb3Blcmx5IGNvbm5lY3RlZCwgYWdhaW4sIHVzdWFsbHkgZGVmaW5lZCBpbiB0aGUgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbi4KClRoZSBwcm9ibGVtIGlzLCBpbiBvdXIgZnV6emluZyBlbnZpcm9ubWVudCwgbGlrZSBRRU1VIG9yIGV2ZW4gR29vZ2xlIENvbXB1dGUgRW5naW5lLCB3ZSBkb24mIzM5O3QgaGF2ZSB0aGUgc3RhbmRhcmQgaW5mcmFzdHJ1Y3R1cmUgc2V0IHVwIHRvIGF1dG9tYXRpY2FsbHkgY3JlYXRlIHRoaXMgcGxhdGZvcm0gZGV2aWNlLiBBbmQsIGFzIGZhciBhcyBJIGNhbiBzZWUsIHN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGEgbWVjaGFuaXNtIHRvIGR5bmFtaWNhbGx5IGJ1aWxkIHRoaXMgcmVxdWlyZWQgcGxhdGZvcm0gZGV2aWNlIGFsb25nIHdpdGggdGhlIG5lY2Vzc2FyeSBJMkMgYnVzIGFuZCBhIG1vY2sgRUVQUk9NIHRvIHByb3Blcmx5IHRyaWdnZXIgdGhlIHF1aXJrIHdlJiMzOTtyZSBpbnRlcmVzdGVkIGluLgoKSSB3YXMgaG9waW5nIHRoZXJlIHdhcyBhbm90aGVyIHBhdGggdG8gcmVhY2ggYHNmcF9xdWlya19ub19zZ21paWAuIEkgdHJhY2VkIGl0IGJhY2sgdGhyb3VnaCBgc2ZwX3NtX21vZF9wcm9iZWAgdG8gYHNmcF9zbV9tb2RfaGFja3NgLCBhbmQgaXQgYWxsIGV2ZW50dWFsbHkgbGVhZHMgYmFjayB0byB0aGlzIFNGUCBwbGF0Zm9ybSBkZXZpY2UuIFdpdGhvdXQgdGhhdCBkZXZpY2UgaW5zdGFudGlhdGVkLCB0aGVyZSYjMzk7cyBqdXN0IG5vIHdheSBmb3IgdGhpcyBzcGVjaWZpYyBzZWN0aW9uIG9mIGNvZGUgdG8gZ2V0IGV4ZWN1dGVkLgoKR2l2ZW4gdGhlc2UgY29uc3RyYWludHMgYW5kIHRoZSBkZXBlbmRlbmNpZXMgb24gdGhlIHBsYXRmb3JtIGRldmljZSwgSSYjMzk7dmUgY29uY2x1ZGVkIHRoYXQgdGhpcyBjb2RlIGlzIGVmZmVjdGl2ZWx5IHVucmVhY2hhYmxlIGluIG91ciBmdXp6aW5nIHNldHVwLiBUaGVyZSYjMzk7cyBqdXN0IG5vIHByYWN0aWNhbCB3YXkgdG8gdHJpZ2dlciBpdCB3aXRoIG91ciBjdXJyZW50IHRvb2xzIGFuZCBlbnZpcm9ubWVudC4KClRoZXJlZm9yZSwgYWZ0ZXIgY2FyZWZ1bCBjb25zaWRlcmF0aW9uLCBJIGhhdmUgdG8gZGVjbGFyZSB0aGlzIHNlY3Rpb24gb2YgY29kZSBhcyBub3Qgd29ydGggZnV6emluZy4gSSYjMzk7bGwgYmUgcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAyMDozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBxdWlyayBmb3IgYSBzcGVjaWZpYyBTRlAgbW9kdWxlIChGSU5JU0FSIENPUlAuIEZDTEY4NTIxUDJCVEwpLiBUaGUgU0ZQIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlbGllcyBvbiBkZXZpY2UgdHJlZSBpbnN0YW50aWF0aW9uIGFuZCBJMkMgY29tbXVuaWNhdGlvbiB0byByZWFkIHRoZSBtb2R1bGUmIzM5O3MgRUVQUk9NLiBJbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UsIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uIG9yIGRldmljZSB0cmVlIGluamVjdGlvbiBmb3IgdGhpcyBTRlAgbW9kdWxlIGFuZCBpdHMgSTJDIEVFUFJPTSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcXVpcmsgZm9yIGEgc3BlY2lmaWMgU0ZQIG1vZHVsZSAoRklOSVNBUiBDT1JQLiBGQ0xGODUyMVAyQlRMKS4gVGhlIFNGUCBkcml2ZXIgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZWxpZXMgb24gZGV2aWNlIHRyZWUgaW5zdGFudGlhdGlvbiBhbmQgSTJDIGNvbW11bmljYXRpb24gdG8gcmVhZCB0aGUgbW9kdWxlJiMzOTtzIEVFUFJPTS4gSW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFLCB3aXRob3V0IHNwZWNpZmljIGhhcmR3YXJlIGVtdWxhdGlvbiBvciBkZXZpY2UgdHJlZSBpbmplY3Rpb24gZm9yIHRoaXMgU0ZQIG1vZHVsZSBhbmQgaXRzIEkyQyBFRVBST00sIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGFuZCBjYW5ub3QgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjM4OjIzLjEzMjAwMDI2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM1NzkyOTMxMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBxdWlyayBmb3IgYSBzcGVjaWZpYyBTRlAgbW9kdWxlIChGSU5JU0FSIENPUlAuIEZDTEY4NTIxUDJCVEwpLiBUaGUgU0ZQIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlbGllcyBvbiBkZXZpY2UgdHJlZSBpbnN0YW50aWF0aW9uIGFuZCBJMkMgY29tbXVuaWNhdGlvbiB0byByZWFkIHRoZSBtb2R1bGUncyBFRVBST00uIEluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRSwgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24gb3IgZGV2aWNlIHRyZWUgaW5qZWN0aW9uIGZvciB0aGlzIFNGUCBtb2R1bGUgYW5kIGl0cyBJMkMgRUVQUk9NLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBhbmQgY2Fubm90IGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjM4OjIzLjEzMjAwNjUwOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU3MjUyMzM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMTBhM2Q4MzdmNzBmMzdjYzU4MmU4N2Y0MGVjYmMyOGM4MzRlYTYzOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1bCAxNCAyMDozODoyMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvc2ZwLmMgYi9kcml2ZXJzL25ldC9waHkvc2ZwLmNcXG5pbmRleCBmNTIwMjA2NzM0ZGFhYS4uNjVmM2JiMmJjYWYzNTEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3NmcC5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3NmcC5jXFxuQEAgLTQ3Nyw2ICs0NzcsMTYgQEAgc3RhdGljIHZvaWQgc2ZwX3F1aXJrXzI1MDBiYXNleChjb25zdCBzdHJ1Y3Qgc2ZwX2VlcHJvbV9pZCAqaWQsXFxuIFxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYLCBjYXBzLVxcdTAwM2VpbnRlcmZhY2VzKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgc2ZwX3F1aXJrX25vX3NnbWlpKGNvbnN0IHN0cnVjdCBzZnBfZWVwcm9tX2lkICppZCxcXG4rXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBzZnBfbW9kdWxlX2NhcHMgKmNhcHMpXFxuK3tcXG4rXFx0bGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFXzEwMDBiYXNlVF9IYWxmX0JJVCxcXG4rXFx0XFx0XFx0ICAgY2Fwcy1cXHUwMDNlbGlua19tb2Rlcyk7XFxuK1xcdGxpbmttb2RlX2NsZWFyX2JpdChFVEhUT09MX0xJTktfTU9ERV8xMDAwYmFzZVRfRnVsbF9CSVQsXFxuK1xcdFxcdFxcdCAgIGNhcHMtXFx1MDAzZWxpbmtfbW9kZXMpO1xcbitcXHRfX2NsZWFyX2JpdChQSFlfSU5URVJGQUNFX01PREVfU0dNSUksIGNhcHMtXFx1MDAzZWludGVyZmFjZXMpO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBzZnBfcXVpcmtfZGlzYWJsZV9hdXRvbmVnKGNvbnN0IHN0cnVjdCBzZnBfZWVwcm9tX2lkICppZCxcXG4gXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHNmcF9tb2R1bGVfY2FwcyAqY2FwcylcXG4ge1xcbkBAIC01MzgsNiArNTQ4LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc2ZwX3F1aXJrIHNmcF9xdWlya3NbXSA9IHtcXG4gXFx0Ly8gUEhZLlxcbiBcXHRTRlBfUVVJUktfRihcXFwiRlNcXFwiLCBcXFwiU0ZQLTEwRy1UXFxcIiwgc2ZwX2ZpeHVwX2ZzXzEwZ3QpLFxcbiBcXG4rXFx0Ly8gVGhlc2UgYXJlIHNvbGQgYXMgMTAwMGJhc2UtWCBjb21wYXRpYmxlLiBUaHVzLCBtYWtlIHN1cmUgd2UgZG9uJ3RcXG4rXFx0Ly8gdXNlIFNHTUlJLlxcbitcXHRTRlBfUVVJUktfUyhcXFwiRklOSVNBUiBDT1JQLlxcXCIsIFxcXCJGQ0xGODUyMVAyQlRMXFxcIiwgc2ZwX3F1aXJrX25vX3NnbWlpKSxcXG4rXFxuIFxcdC8vIEZpYmVyc3RvcmUgU0ZQLTIuNUctVCBhbmQgU0ZQLTEwR00tVCB1c2VzIFJvbGxiYWxsIHByb3RvY29sIHRvIHRhbGtcXG4gXFx0Ly8gdG8gdGhlIFBIWSBhbmQgbmVlZHMgNCBzZWMgd2FpdCBiZWZvcmUgcHJvYmluZyB0aGUgUEhZLlxcbiBcXHRTRlBfUVVJUktfRihcXFwiRlNcXFwiLCBcXFwiU0ZQLTIuNUctVFxcXCIsIHNmcF9maXh1cF9yb2xsYmFsbF93YWl0NHMpLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMDozODoyMy44OTExODgxODRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyODIwMDk4MjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcXVpcmsgZm9yIGEgc3BlY2lmaWMgU0ZQIG1vZHVsZSAoRklOSVNBUiBDT1JQLiBGQ0xGODUyMVAyQlRMKS4gVGhlIFNGUCBkcml2ZXIgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZWxpZXMgb24gZGV2aWNlIHRyZWUgaW5zdGFudGlhdGlvbiBhbmQgSTJDIGNvbW11bmljYXRpb24gdG8gcmVhZCB0aGUgbW9kdWxlJ3MgRUVQUk9NLiBJbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVSBvciBHQ0UsIHdpdGhvdXQgc3BlY2lmaWMgaGFyZHdhcmUgZW11bGF0aW9uIG9yIGRldmljZSB0cmVlIGluamVjdGlvbiBmb3IgdGhpcyBTRlAgbW9kdWxlIGFuZCBpdHMgSTJDIEVFUFJPTSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgYW5kIGNhbm5vdCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDEwYTNkODM3ZjcwZjM3Y2M1ODJlODdmNDBlY2JjMjhjODM0ZWE2MzlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAxNCAyMDozODoyMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9zZnAuYyBiL2RyaXZlcnMvbmV0L3BoeS9zZnAuY1xuaW5kZXggZjUyMDIwNjczNGRhYWEuLjY1ZjNiYjJiY2FmMzUxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3NmcC5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvc2ZwLmNcbkBAIC00NzcsNiArNDc3LDE2IEBAIHN0YXRpYyB2b2lkIHNmcF9xdWlya18yNTAwYmFzZXgoY29uc3Qgc3RydWN0IHNmcF9lZXByb21faWQgKmlkLFxuIFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgsIGNhcHMtXHUwMDNlaW50ZXJmYWNlcyk7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIHNmcF9xdWlya19ub19zZ21paShjb25zdCBzdHJ1Y3Qgc2ZwX2VlcHJvbV9pZCAqaWQsXG4rXHRcdFx0ICAgICAgIHN0cnVjdCBzZnBfbW9kdWxlX2NhcHMgKmNhcHMpXG4re1xuK1x0bGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFXzEwMDBiYXNlVF9IYWxmX0JJVCxcbitcdFx0XHQgICBjYXBzLVx1MDAzZWxpbmtfbW9kZXMpO1xuK1x0bGlua21vZGVfY2xlYXJfYml0KEVUSFRPT0xfTElOS19NT0RFXzEwMDBiYXNlVF9GdWxsX0JJVCxcbitcdFx0XHQgICBjYXBzLVx1MDAzZWxpbmtfbW9kZXMpO1xuK1x0X19jbGVhcl9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJLCBjYXBzLVx1MDAzZWludGVyZmFjZXMpO1xuK31cbitcbiBzdGF0aWMgdm9pZCBzZnBfcXVpcmtfZGlzYWJsZV9hdXRvbmVnKGNvbnN0IHN0cnVjdCBzZnBfZWVwcm9tX2lkICppZCxcbiBcdFx0XHRcdCAgICAgIHN0cnVjdCBzZnBfbW9kdWxlX2NhcHMgKmNhcHMpXG4ge1xuQEAgLTUzOCw2ICs1NDgsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzZnBfcXVpcmsgc2ZwX3F1aXJrc1tdID0ge1xuIFx0Ly8gUEhZLlxuIFx0U0ZQX1FVSVJLX0YoXCJGU1wiLCBcIlNGUC0xMEctVFwiLCBzZnBfZml4dXBfZnNfMTBndCksXG4gXG4rXHQvLyBUaGVzZSBhcmUgc29sZCBhcyAxMDAwYmFzZS1YIGNvbXBhdGlibGUuIFRodXMsIG1ha2Ugc3VyZSB3ZSBkb24ndFxuK1x0Ly8gdXNlIFNHTUlJLlxuK1x0U0ZQX1FVSVJLX1MoXCJGSU5JU0FSIENPUlAuXCIsIFwiRkNMRjg1MjFQMkJUTFwiLCBzZnBfcXVpcmtfbm9fc2dtaWkpLFxuK1xuIFx0Ly8gRmliZXJzdG9yZSBTRlAtMi41Ry1UIGFuZCBTRlAtMTBHTS1UIHVzZXMgUm9sbGJhbGwgcHJvdG9jb2wgdG8gdGFsa1xuIFx0Ly8gdG8gdGhlIFBIWSBhbmQgbmVlZHMgNCBzZWMgd2FpdCBiZWZvcmUgcHJvYmluZyB0aGUgUEhZLlxuIFx0U0ZQX1FVSVJLX0YoXCJGU1wiLCBcIlNGUC0yLjVHLVRcIiwgc2ZwX2ZpeHVwX3JvbGxiYWxsX3dhaXQ0cyksXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMDozODoyMy44OTExOTA2MjRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDQ0NDc3MDk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFNGUCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBkcml2ZXJzL25ldC9waHkvc2ZwLmNgLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoOyB0aGV5J3JlIGFkZGluZyBhIG5ldyBxdWlyaywgYHNmcF9xdWlya19ub19zZ21paWAsIGFuZCBpdCdzIHNwZWNpZmljYWxseSBmb3IgYSBcIkZJTklTQVIgQ09SUC5cIiBcIkZDTEY4NTIxUDJCVExcIiBtb2R1bGUuIE5vdGhpbmcgdG9vIGNvbXBsZXggZnJvbSBhIGZ1bmN0aW9uYWwgcGVyc3BlY3RpdmUuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiwgdGhvdWdoLCBpcyBob3cgdGVzdGFibGUgaXMgdGhpcyBjaGFuZ2U/IENhbiB0aGlzIHF1aXJrIGV2ZW4gYmUgdHJpZ2dlcmVkIHdpdGhpbiBhIHZpcnR1YWxpemVkIHNldHVwPyBTRlAgbW9kdWxlcywgYnkgdGhlaXIgbmF0dXJlLCBhcmUgdHlwaWNhbGx5IHBoeXNpY2FsIGhhcmR3YXJlIGNvbXBvbmVudHMsIHJpZ2h0P1xuXG5JIG5lZWQgdG8gYXNzZXNzIHRoZSBmdXp6YWJpbGl0eSBvZiB0aGUgU0ZQIGRyaXZlci4gQ2FuIHdlIGdldCBlbm91Z2ggY292ZXJhZ2UgYnkgZnV6emluZywgZ2l2ZW4gdGhhdCB0aGVzZSBtb2R1bGVzIGFyZSBwaHlzaWNhbD8gUGVyaGFwcyB3ZSBjb3VsZCBlbXVsYXRlIHRoZXNlIFNGUCBtb2R1bGVzOyB0aGF0IGNvdWxkIGJlIGEgcG9zc2libGUgdGVzdCBzdHJhdGVneS4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIGBkcml2ZXJzL25ldC9waHkvc2ZwLmNgIGFuZCBzZWUgd2hhdCBvcHRpb25zIGFyZSB0aGVyZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBkcml2ZXLigJlzIGludGVyZmFjZSBiZXR0ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMTQsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMDozODoyNy45MzU2NzAwMjJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk0MjczMzg4MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2ZwX3F1aXJrX25vX3NnbWlpXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9zZnAuYz00NzI9c3RhdGljIHZvaWQgc2ZwX3F1aXJrXzI1MDBiYXNleChjb25zdCBzdHJ1Y3Qgc2ZwX2VlcHJvbV9pZCAqaWQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtNDc5LVxcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYzo0ODA6c3RhdGljIHZvaWQgc2ZwX3F1aXJrX25vX3NnbWlpKGNvbnN0IHN0cnVjdCBzZnBfZWVwcm9tX2lkICppZCxcXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtNDgxLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc2ZwX21vZHVsZV9jYXBzICpjYXBzKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3NmcC5jPTUzMD1zdGF0aWMgY29uc3Qgc3RydWN0IHNmcF9xdWlyayBzZnBfcXVpcmtzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtNTUyLVxcdC8vIHVzZSBTR01JSS5cXG5kcml2ZXJzL25ldC9waHkvc2ZwLmM6NTUzOlxcdFNGUF9RVUlSS19TKFxcXCJGSU5JU0FSIENPUlAuXFxcIiwgXFxcIkZDTEY4NTIxUDJCVExcXFwiLCBzZnBfcXVpcmtfbm9fc2dtaWkpLFxcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy01NTQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjM4OjQ3LjM2MzAxNDYzOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNjYzMjUwNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBTRlAgRHJpdmVyIFJlYWNoYWJpbGl0eSBhbmQgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCBpZiB3ZSBjYW4gZXZlbiAqdG91Y2gqIHRoZSBTRlAgZHJpdmVyIHZpYSBJMkMsIG9yIGlmIHRoZXJlJ3MgYW55IHN1cmZhY2UgZm9yIGZ1enppbmcuIFNGUHMgYXJlIG5vdG9yaW91cyBmb3IgdXNpbmcgSTJDIGZvciBFRVBST00gYWNjZXNzLCB3aGljaCBpcyBhIGNvbW1vbiB2ZWN0b3IuIE5vdywgSTJDIGl0c2VsZiBpcyBmdXp6YWJsZSDigJMgYGkyYy1zdHViYCBvciBzaW1pbGFyIHRvb2xzIGFyZSBteSB1c3VhbCBnby10byDigJMgYnV0IHRhcmdldGluZyAqc3BlY2lmaWMqIEkyQyBkZXZpY2VzIGlzIHRoZSB0cmlja3kgYml0LCB1c3VhbGx5IHVubGVzcyB0aGV5IGFyZSBwcm9wZXJseSBpbnN0YW50aWF0ZWQsIGFuZCB0aGVyZWZvcmUgYWRkcmVzc2FibGUsIG9uIHRoZSBidXMuXG5cbldhaXQgYSBzZWNvbmTigKZTRlAgaW5zdGFudGlhdGlvbiBpcyBnZW5lcmFsbHkgaGFuZGxlZCB0aHJvdWdoIHRoZSBkZXZpY2UgdHJlZSwgaXNuJ3QgaXQ/IElmIHRoZSBEVCBkb2VzIHRoZSBoZWF2eSBsaWZ0aW5nLCB0aGVuIGNhbiB3ZSBwb3RlbnRpYWxseSBpbnRlcmFjdCB3aXRoIHRoZSBTRlAgdGhyb3VnaCBzeXNmcz8gVGhhdCdzIHRoZSBrZXkgcXVlc3Rpb24uIFdlIG5lZWQgdG8gc2VlIGlmIHdlIGNhbiBleHBvc2UgYSBjb250cm9sIHBsYW5lLlxuXG5MZXQncyBxdWlja2x5IGNoZWNrIHRoZSByZWxldmFudCBkcml2ZXI6IGBkcml2ZXJzL25ldC9waHkvc2ZwLmNgLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBzZWUgaWYgdGhlcmUncyBhbnkgc2lnbiBvZiBhIGBtb2R1bGVfaTJjX2RyaXZlcmAgb3IgYSBzaW1pbGFyIGNvbnN0cnVjdCB0aGF0IHRpZXMgaXQgaW50byB0aGUgSTJDIHN1YnN5c3RlbS4gVGhhdCB3b3VsZCBiZSB0aGUgZmlyc3QgY2x1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg2MywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQyMDozODo1MS41MjkzNDE5NjVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjcxOTUyOTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV8uKmRyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvc2ZwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3NmcC5jPTM0Njc9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgc2ZwX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYy0zNDc2LVxcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYzozNDc3Om1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoc2ZwX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvcGh5L3NmcC5jLTM0NzgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjM4OjUyLjIwMTMwMjY5MVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI1NDUzOTQ2MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipEaXZpbmcgaW50byB0aGUgRHJpdmVyKipcblxuQWxyaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwaWVjZSBvZiBjb2RlIOKAkyBpdCdzIGNsZWFybHkgYSBwbGF0Zm9ybSBkcml2ZXIuIEZpcnN0IHRoaW5nIEknbSBnb2luZyB0byBkaWcgaW50byBpcyB0aGUgcHJvYmluZyBtZWNoYW5pc20uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBpZGVudGlmaWVzIGFuZCBhdHRhY2hlcyBpdHNlbGYgdG8gYSBzcGVjaWZpYyBoYXJkd2FyZSBpbnN0YW5jZS4gV2hhdCBhcmUgdGhlIGtleSBlbGVtZW50cyBpdCB1c2VzIGZvciBtYXRjaGluZz8gSXMgaXQgdXNpbmcgYSBkZXZpY2UgdHJlZSwgQUNQSSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY3JpdGVyaWEgdGhpcyBkcml2ZXIncyByZWx5aW5nIG9uIGZvciBhIHN1Y2Nlc3NmdWwgcHJvYmUgYW5kIGluaXRpYWxpemF0aW9uLiBUaGlzIGluaXRpYWwgcHJvYmluZyBwaGFzZSBpcyBjcnVjaWFsIHRvIGRldGVybWluZSBpZiBpdCBjYW4gc3VwcG9ydCB0aGUgcHJlc2VudCBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzM4NSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjM4OjU0Ljc0NjY5OTg4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NTM2MTIzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZnBfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L3NmcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9zZnAuYz0zMjU5PXN0YXRpYyBpbnQgc2ZwX2kyY19nZXQoc3RydWN0IHNmcCAqc2ZwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3NmcC5jLTMyODQtXFxuZHJpdmVycy9uZXQvcGh5L3NmcC5jOjMyODU6c3RhdGljIGludCBzZnBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMzI4Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvc2ZwLmM9MzQ2Nz1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBzZnBfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L3BoeS9zZnAuYzozNDY4OlxcdC5wcm9iZSA9IHNmcF9wcm9iZSxcXG5kcml2ZXJzL25ldC9waHkvc2ZwLmMtMzQ2OS1cXHQucmVtb3ZlID0gc2ZwX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjA6Mzg6NTQuOTIyMDY4OTU2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTMzNDU0MTY3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBTRlAgTW9kdWxlIFF1aXJrcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGxhdGZvcm0gZHJpdmVyLCBwcm9iYWJseSBob29rZWQgdXAgdGhyb3VnaCB0aGUgZGV2aWNlIHRyZWUuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIHdlIGZ1enogdGhpcz8gU3l6a2FsbGVyIGNhbiBpbmplY3QgcGxhdGZvcm0gZGV2aWNlcyB1c2luZyBmdW5jdGlvbnMgbGlrZSBgc3l6X2Rldl9wbGF0Zm9ybWAsIGJ1dCBpdCdzIG5vdCBhIGdvLXRvIGZ1enppbmcgdGFyZ2V0IHVubGVzcyB0aGVyZSdzIGRlZGljYXRlZCBzdXBwb3J0LiBXYWl0LCB0aGlzIHBhdGNoIGlzIGp1c3QgYWJvdXQgYSBxdWlyayBmb3IgYSBzcGVjaWZpYyBTRlAgbW9kdWxlLCBub3QgdGhlIHdob2xlIGRyaXZlci5cblxuUmlnaHQsIHRoZSBxdWlyayB0cmlnZ2VycyB3aGVuIHRoZSBkcml2ZXIgcmVhZHMgYW4gRUVQUk9NIHdpdGggYSBwYXJ0aWN1bGFyIHZlbmRvciBJRCBhbmQgcGFydCBudW1iZXIuIFRoZSBFRVBST00gaXMgcmVhZCBvdmVyIEkyQy4gSWYgaXQncyBnb2luZyB0byByZXF1aXJlIGFjdHVhbGx5IGVtdWxhdGluZyB0aGUgU0ZQIG1vZHVsZSBhbmQgaXRzIEkyQyBFRVBST00gdG8gbWFrZSB0aGlzIHdvcmssIGl0J3MgcHJvYmFibHkgbm90IHdvcnRoIHRoZSBlZmZvcnQuIExldCdzIHNlZSBpZiB0aGVyZSdzIGEgd29ya2Fyb3VuZC5cblxuVGhlIFNGUCBkcml2ZXIgcmVhZHMgdGhlIEVFUFJPTSB2aWEgSTJDLiBDYW4gd2Ugc29tZWhvdyBtb2NrIHRoZSBJMkMgZGV2aWNlPyBTeXprYWxsZXIgaGFzIHNvbWUgSTJDIGZ1enppbmcgc3VwcG9ydCB3aXRoIGBzeXpfaTJjX3NldHVwYC4gVGhlIHByb2JsZW0gaXMgdGhhdCB0aGUgU0ZQIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlci4gSXQgZ2V0cyBpdHMgSTJDIGFkYXB0ZXIgZnJvbSB0aGUgZGV2aWNlIHRyZWUg4oCTIHVzaW5nIHNvbWV0aGluZyBsaWtlIGBpMmNfZ2V0X2FkYXB0ZXIobnApYC4gU28gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBgc2ZwX3Byb2JlYCBmdW5jdGlvbiB0byBjb25maXJtIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NzIsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMjA6Mzk6MDAuMjU2NjEzOTk4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyOTIyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvc2ZwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzI4NSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMyODU6XFx0c3RhdGljIGludCBzZnBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4zMjg2OlxcdHtcXG4zMjg3OlxcdFxcdGNvbnN0IHN0cnVjdCBzZmZfZGF0YSAqc2ZmO1xcbjMyODg6XFx0XFx0Y2hhciAqc2ZwX2lycV9uYW1lO1xcbjMyODk6XFx0XFx0c3RydWN0IHNmcCAqc2ZwO1xcbjMyOTA6XFx0XFx0aW50IGVyciwgaTtcXG4zMjkxOlxcdFxcbjMyOTI6XFx0XFx0c2ZwID0gc2ZwX2FsbG9jKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYpO1xcbjMyOTM6XFx0XFx0aWYgKElTX0VSUihzZnApKVxcbjMyOTQ6XFx0XFx0XFx0cmV0dXJuIFBUUl9FUlIoc2ZwKTtcXG4zMjk1OlxcdFxcbjMyOTY6XFx0XFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgc2ZwKTtcXG4zMjk3OlxcdFxcbjMyOTg6XFx0XFx0ZXJyID0gZGV2bV9hZGRfYWN0aW9uX29yX3Jlc2V0KHNmcC1cXHUwMDNlZGV2LCBzZnBfY2xlYW51cCwgc2ZwKTtcXG4zMjk5OlxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbjMzMDA6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4zMzAxOlxcdFxcbjMzMDI6XFx0XFx0c2ZmID0gZGV2aWNlX2dldF9tYXRjaF9kYXRhKHNmcC1cXHUwMDNlZGV2KTtcXG4zMzAzOlxcdFxcdGlmICghc2ZmKVxcbjMzMDQ6XFx0XFx0XFx0c2ZmID0gXFx1MDAyNnNmcF9kYXRhO1xcbjMzMDU6XFx0XFxuMzMwNjpcXHRcXHRzZnAtXFx1MDAzZXR5cGUgPSBzZmY7XFxuMzMwNzpcXHRcXG4zMzA4OlxcdFxcdGVyciA9IHNmcF9pMmNfZ2V0KHNmcCk7XFxuMzMwOTpcXHRcXHRpZiAoZXJyKVxcbjMzMTA6XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4zMzExOlxcdFxcbjMzMTI6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEdQSU9fTUFYOyBpKyspXFxuMzMxMzpcXHRcXHRcXHRpZiAoc2ZmLVxcdTAwM2VncGlvcyBcXHUwMDI2IEJJVChpKSkge1xcbjMzMTQ6XFx0XFx0XFx0XFx0c2ZwLVxcdTAwM2VncGlvW2ldID0gZGV2bV9ncGlvZF9nZXRfb3B0aW9uYWwoc2ZwLVxcdTAwM2VkZXYsXFxuMzMxNTpcXHRcXHRcXHRcXHRcXHRcXHQgICBncGlvX25hbWVzW2ldLCBncGlvX2ZsYWdzW2ldKTtcXG4zMzE2OlxcdFxcdFxcdFxcdGlmIChJU19FUlIoc2ZwLVxcdTAwM2VncGlvW2ldKSlcXG4zMzE3OlxcdFxcdFxcdFxcdFxcdHJldHVybiBQVFJfRVJSKHNmcC1cXHUwMDNlZ3Bpb1tpXSk7XFxuMzMxODpcXHRcXHRcXHR9XFxuMzMxOTpcXHRcXG4zMzIwOlxcdFxcdHNmcC1cXHUwMDNlc3RhdGVfaHdfbWFzayA9IFNGUF9GX1BSRVNFTlQ7XFxuMzMyMTpcXHRcXHRzZnAtXFx1MDAzZXN0YXRlX2h3X2RyaXZlID0gU0ZQX0ZfVFhfRElTQUJMRTtcXG4zMzIyOlxcdFxcbjMzMjM6XFx0XFx0c2ZwLVxcdTAwM2VnZXRfc3RhdGUgPSBzZnBfZ3Bpb19nZXRfc3RhdGU7XFxuMzMyNDpcXHRcXHRzZnAtXFx1MDAzZXNldF9zdGF0ZSA9IHNmcF9ncGlvX3NldF9zdGF0ZTtcXG4zMzI1OlxcdFxcbjMzMjY6XFx0XFx0LyogQW4gU0ZQIGNhZ2Ugd2l0aCBubyBNT0RfREVGMCBHUElPIGhhcyBubyBoYXJkd2FyZSBwcmVzZW5jZSBzaWduYWwuXFxuMzMyNzpcXHRcXHQgKiBBc3N1bWluZyB0aGUgbW9kdWxlIGlzIGFsd2F5cyBwcmVzZW50IHRyYXBzIGFuIGVtcHR5IGNhZ2UgaW5cXG4zMzI4OlxcdFxcdCAqIE1PRF9FUlJPUiBhbmQgbmV2ZXIgZGV0ZWN0cyBob3QtaW5zZXJ0aW9uLCBzbyBkZXJpdmUgcHJlc2VuY2UgZnJvbSBhXFxuMzMyOTpcXHRcXHQgKiB0aHJvdHRsZWQgSTJDIHByb2JlIGFuZCBwb2xsIGZvciBjaGFuZ2VzIGluc3RlYWQuIHNmcF9pMmNfY29uZmlndXJlKClcXG4zMzMwOlxcdFxcdCAqIGhhcyBhbHJlYWR5IHNldCBpMmNfbWF4X2Jsb2NrX3NpemU7IHNlZWQgaTJjX2Jsb2NrX3NpemUgc28gdGhlXFxuMzMzMTpcXHRcXHQgKiBwcmVzZW5jZSByZWFkIGRvZXMgbm90IGlzc3VlIGEgemVyby1sZW5ndGggdHJhbnNmZXIgYmVmb3JlIHRoZSBmaXJzdFxcbjMzMzI6XFx0XFx0ICogRUVQUk9NIHJlYWQuIFNlZWQgaTJjX3ByZXNlbnRfbmV4dCB0byBqaWZmaWVzIHNvIHRoZSBmaXJzdCBwcm9iZVxcbjMzMzM6XFx0XFx0ICogaGFwcGVucyBpbW1lZGlhdGVseSAoYSB6ZXJvIHZhbHVlIHdvdWxkIGJlIGluIHRoZSBwYXN0IHJlbGF0aXZlIHRvXFxuMzMzNDpcXHRcXHQgKiB0aGUgbmVnYXRpdmUgSU5JVElBTF9KSUZGSUVTIGF0IGJvb3QgYW5kIGRlbGF5IGRldGVjdGlvbikuXFxuMzMzNTpcXHRcXHQgKlxcbjMzMzY6XFx0XFx0ICogQSBzb2xkZXJlZC1kb3duIG1vZHVsZSAoc2ZmLHNmZikgaGFzIG5vIHByZXNlbmNlIHNpZ25hbCBhbmQgaXNcXG4zMzM3OlxcdFxcdCAqIGdlbnVpbmVseSBhbHdheXMgcHJlc2VudCwgc28gaXQga2VlcHMgdGhlIGFsd2F5cy1wcmVzZW50IGJlaGF2aW91cjtcXG4zMzM4OlxcdFxcdCAqIHRoZSBJMkMgcHJvYmUgaXMgZ2F0ZWQgb24gdGhlIGNhZ2UgdHlwZSBhZHZlcnRpc2luZyBTRlBfRl9QUkVTRU5ULlxcbjMzMzk6XFx0XFx0ICovXFxuMzM0MDpcXHRcXHRpZiAoIXNmcC1cXHUwMDNlZ3Bpb1tHUElPX01PRERFRjBdKSB7XFxuMzM0MTpcXHRcXHRcXHRpZiAoc2ZmLVxcdTAwM2VncGlvcyBcXHUwMDI2IFNGUF9GX1BSRVNFTlQpIHtcXG4zMzQyOlxcdFxcdFxcdFxcdHNmcC1cXHUwMDNlZ2V0X3N0YXRlID0gc2ZwX2kyY19nZXRfc3RhdGU7XFxuMzM0MzpcXHRcXHRcXHRcXHRzZnAtXFx1MDAzZWkyY19ibG9ja19zaXplID0gc2ZwLVxcdTAwM2VpMmNfbWF4X2Jsb2NrX3NpemU7XFxuMzM0NDpcXHRcXHRcXHRcXHRzZnAtXFx1MDAzZWkyY19wcmVzZW50X25leHQgPSBqaWZmaWVzO1xcbjMzNDU6XFx0XFx0XFx0XFx0c2ZwLVxcdTAwM2VuZWVkX3BvbGwgPSB0cnVlO1xcbjMzNDY6XFx0XFx0XFx0fSBlbHNlIHtcXG4zMzQ3OlxcdFxcdFxcdFxcdHNmcC1cXHUwMDNlZ2V0X3N0YXRlID0gc2ZmX2dwaW9fZ2V0X3N0YXRlO1xcbjMzNDg6XFx0XFx0XFx0fVxcbjMzNDk6XFx0XFx0fVxcbjMzNTA6XFx0XFxuMzM1MTpcXHRcXHRkZXZpY2VfcHJvcGVydHlfcmVhZF91MzIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIm1heGltdW0tcG93ZXItbWlsbGl3YXR0XFxcIixcXG4zMzUyOlxcdFxcdFxcdFxcdFxcdCBcXHUwMDI2c2ZwLVxcdTAwM2VtYXhfcG93ZXJfbVcpO1xcbjMzNTM6XFx0XFx0aWYgKHNmcC1cXHUwMDNlbWF4X3Bvd2VyX21XIFxcdTAwM2MgMTAwMCkge1xcbjMzNTQ6XFx0XFx0XFx0aWYgKHNmcC1cXHUwMDNlbWF4X3Bvd2VyX21XKVxcbjMzNTU6XFx0XFx0XFx0XFx0ZGV2X3dhcm4oc2ZwLVxcdTAwM2VkZXYsXFxuMzM1NjpcXHRcXHRcXHRcXHRcXHQgXFxcIkZpcm13YXJlIGJ1ZzogaG9zdCBtYXhpbXVtIHBvd2VyIHNob3VsZCBiZSBhdCBsZWFzdCAxV1xcXFxuXFxcIik7XFxuMzM1NzpcXHRcXHRcXHRzZnAtXFx1MDAzZW1heF9wb3dlcl9tVyA9IDEwMDA7XFxuMzM1ODpcXHRcXHR9XFxuMzM1OTpcXHRcXG4zMzYwOlxcdFxcdGRldl9pbmZvKHNmcC1cXHUwMDNlZGV2LCBcXFwiSG9zdCBtYXhpbXVtIHBvd2VyICV1LiV1V1xcXFxuXFxcIixcXG4zMzYxOlxcdFxcdFxcdCBzZnAtXFx1MDAzZW1heF9wb3dlcl9tVyAvIDEwMDAsIChzZnAtXFx1MDAzZW1heF9wb3dlcl9tVyAvIDEwMCkgJSAxMCk7XFxuMzM2MjpcXHRcXG4zMzYzOlxcdFxcdC8qIEdldCB0aGUgaW5pdGlhbCBzdGF0ZSwgYW5kIGFsd2F5cyBzaWduYWwgVFggZGlzYWJsZSxcXG4zMzY0OlxcdFxcdCAqIHNpbmNlIHRoZSBuZXR3b3JrIGludGVyZmFjZSB3aWxsIG5vdCBiZSB1cC5cXG4zMzY1OlxcdFxcdCAqL1xcbjMzNjY6XFx0XFx0c2ZwLVxcdTAwM2VzdGF0ZSA9IHNmcF9nZXRfc3RhdGUoc2ZwKSB8IFNGUF9GX1RYX0RJU0FCTEU7XFxuMzM2NzpcXHRcXG4zMzY4OlxcdFxcdGlmIChzZnAtXFx1MDAzZWdwaW9bR1BJT19SUzBdIFxcdTAwMjZcXHUwMDI2XFxuMzM2OTpcXHRcXHQgICAgZ3Bpb2RfZ2V0X3ZhbHVlX2NhbnNsZWVwKHNmcC1cXHUwMDNlZ3Bpb1tHUElPX1JTMF0pKVxcbjMzNzA6XFx0XFx0XFx0c2ZwLVxcdTAwM2VzdGF0ZSB8PSBTRlBfRl9SUzA7XFxuMzM3MTpcXHRcXHRzZnBfc2V0X3N0YXRlKHNmcCwgc2ZwLVxcdTAwM2VzdGF0ZSk7XFxuMzM3MjpcXHRcXHRzZnBfbW9kdWxlX3R4X2Rpc2FibGUoc2ZwKTtcXG4zMzczOlxcdFxcdGlmIChzZnAtXFx1MDAzZXN0YXRlIFxcdTAwMjYgU0ZQX0ZfUFJFU0VOVCkge1xcbjMzNzQ6XFx0XFx0XFx0cnRubF9sb2NrKCk7XFxuMzM3NTpcXHRcXHRcXHRzZnBfc21fZXZlbnQoc2ZwLCBTRlBfRV9JTlNFUlQpO1xcbjMzNzY6XFx0XFx0XFx0cnRubF91bmxvY2soKTtcXG4zMzc3OlxcdFxcdH1cXG4zMzc4OlxcdFxcbjMzNzk6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEdQSU9fTUFYOyBpKyspIHtcXG4zMzgwOlxcdFxcdFxcdGlmIChncGlvX2ZsYWdzW2ldICE9IEdQSU9EX0lOIHx8ICFzZnAtXFx1MDAzZWdwaW9baV0pXFxuMzM4MTpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4zMzgyOlxcdFxcbjMzODM6XFx0XFx0XFx0c2ZwLVxcdTAwM2VncGlvX2lycVtpXSA9IGdwaW9kX3RvX2lycShzZnAtXFx1MDAzZWdwaW9baV0pO1xcbjMzODQ6XFx0XFx0XFx0aWYgKHNmcC1cXHUwMDNlZ3Bpb19pcnFbaV0gXFx1MDAzYyAwKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjM5OjAwLjI1NzA0NzEyOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDU0MjA0MzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVucmVhY2hhYmxlIENvZGUgaW4gdGhlIFNGUCBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gZGlnZ2luZyBpbnRvIHRoaXMgU0ZQIGRyaXZlciBjb2RlLCBhbmQgSSd2ZSBoaXQgYSB3YWxsLiBJdCBsb29rcyBsaWtlIHRoZSBjb3JlIG9mIHRoZSBTRlAgZHJpdmVyIHJlbGllcyBoZWF2aWx5IG9uIGEgcGxhdGZvcm0gZGV2aWNlLCB0eXBpY2FsbHkgaW5zdGFudGlhdGVkIHRocm91Z2ggdGhlIGRldmljZSB0cmVlLiBJdCBhbHNvIGRlcGVuZHMgb24gYW4gSTJDIGFkYXB0ZXIgYmVpbmcgcHJvcGVybHkgY29ubmVjdGVkLCBhZ2FpbiwgdXN1YWxseSBkZWZpbmVkIGluIHRoZSBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9uLlxuXG5UaGUgcHJvYmxlbSBpcywgaW4gb3VyIGZ1enppbmcgZW52aXJvbm1lbnQsIGxpa2UgUUVNVSBvciBldmVuIEdvb2dsZSBDb21wdXRlIEVuZ2luZSwgd2UgZG9uJ3QgaGF2ZSB0aGUgc3RhbmRhcmQgaW5mcmFzdHJ1Y3R1cmUgc2V0IHVwIHRvIGF1dG9tYXRpY2FsbHkgY3JlYXRlIHRoaXMgcGxhdGZvcm0gZGV2aWNlLiBBbmQsIGFzIGZhciBhcyBJIGNhbiBzZWUsIHN5emthbGxlciBkb2Vzbid0IGhhdmUgYSBtZWNoYW5pc20gdG8gZHluYW1pY2FsbHkgYnVpbGQgdGhpcyByZXF1aXJlZCBwbGF0Zm9ybSBkZXZpY2UgYWxvbmcgd2l0aCB0aGUgbmVjZXNzYXJ5IEkyQyBidXMgYW5kIGEgbW9jayBFRVBST00gdG8gcHJvcGVybHkgdHJpZ2dlciB0aGUgcXVpcmsgd2UncmUgaW50ZXJlc3RlZCBpbi5cblxuSSB3YXMgaG9waW5nIHRoZXJlIHdhcyBhbm90aGVyIHBhdGggdG8gcmVhY2ggYHNmcF9xdWlya19ub19zZ21paWAuIEkgdHJhY2VkIGl0IGJhY2sgdGhyb3VnaCBgc2ZwX3NtX21vZF9wcm9iZWAgdG8gYHNmcF9zbV9tb2RfaGFja3NgLCBhbmQgaXQgYWxsIGV2ZW50dWFsbHkgbGVhZHMgYmFjayB0byB0aGlzIFNGUCBwbGF0Zm9ybSBkZXZpY2UuIFdpdGhvdXQgdGhhdCBkZXZpY2UgaW5zdGFudGlhdGVkLCB0aGVyZSdzIGp1c3Qgbm8gd2F5IGZvciB0aGlzIHNwZWNpZmljIHNlY3Rpb24gb2YgY29kZSB0byBnZXQgZXhlY3V0ZWQuXG5cbkdpdmVuIHRoZXNlIGNvbnN0cmFpbnRzIGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9uIHRoZSBwbGF0Zm9ybSBkZXZpY2UsIEkndmUgY29uY2x1ZGVkIHRoYXQgdGhpcyBjb2RlIGlzIGVmZmVjdGl2ZWx5IHVucmVhY2hhYmxlIGluIG91ciBmdXp6aW5nIHNldHVwLiBUaGVyZSdzIGp1c3Qgbm8gcHJhY3RpY2FsIHdheSB0byB0cmlnZ2VyIGl0IHdpdGggb3VyIGN1cnJlbnQgdG9vbHMgYW5kIGVudmlyb25tZW50LlxuXG5UaGVyZWZvcmUsIGFmdGVyIGNhcmVmdWwgY29uc2lkZXJhdGlvbiwgSSBoYXZlIHRvIGRlY2xhcmUgdGhpcyBzZWN0aW9uIG9mIGNvZGUgYXMgbm90IHdvcnRoIGZ1enppbmcuIEknbGwgYmUgcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTQxLCJPdXRwdXRUb2tlbnMiOjEzNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDIwOjM5OjA2LjcxMTI1NDE3OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBxdWlyayBmb3IgYSBzcGVjaWZpYyBTRlAgbW9kdWxlIChGSU5JU0FSIENPUlAuIEZDTEY4NTIxUDJCVEwpLiBUaGUgU0ZQIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlbGllcyBvbiBkZXZpY2UgdHJlZSBpbnN0YW50aWF0aW9uIGFuZCBJMkMgY29tbXVuaWNhdGlvbiB0byByZWFkIHRoZSBtb2R1bGUncyBFRVBST00uIEluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRSwgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24gb3IgZGV2aWNlIHRyZWUgaW5qZWN0aW9uIGZvciB0aGlzIFNGUCBtb2R1bGUgYW5kIGl0cyBJMkMgRUVQUk9NLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBhbmQgY2Fubm90IGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBoYXJkd2FyZS1zcGVjaWZpYyBxdWlyayBmb3IgYSBzcGVjaWZpYyBTRlAgbW9kdWxlIChGSU5JU0FSIENPUlAuIEZDTEY4NTIxUDJCVEwpLiBUaGUgU0ZQIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlbGllcyBvbiBkZXZpY2UgdHJlZSBpbnN0YW50aWF0aW9uIGFuZCBJMkMgY29tbXVuaWNhdGlvbiB0byByZWFkIHRoZSBtb2R1bGUncyBFRVBST00uIEluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRSwgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBlbXVsYXRpb24gb3IgZGV2aWNlIHRyZWUgaW5qZWN0aW9uIGZvciB0aGlzIFNGUCBtb2R1bGUgYW5kIGl0cyBJMkMgRUVQUk9NLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBhbmQgY2Fubm90IGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflow56jcx[1] Phase: Running StartedAt: 2026-07-14 20:39:18 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow56jcx[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-14 20:39:18 +0000 UTC FinishedAt: 2026-07-14 20:39:44 +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,}