Name: series-workflowlvmf8 Phase: Failed StartedAt: 2026-07-11 10:50:40 +0000 UTC FinishedAt: 2026-07-11 11:24:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvmf8[0] Phase: Succeeded StartedAt: 2026-07-11 10:50:40 +0000 UTC FinishedAt: 2026-07-11 11:24:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvmf8[0].run-triage Phase: Succeeded StartedAt: 2026-07-11 10:50:40 +0000 UTC FinishedAt: 2026-07-11 11:24:15 +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+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRnJhbWUgTWFuYWdlciAoRk1hbikgRXRoZXJuZXQgTUFDIGRyaXZlci4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciBmb3IgRnJlZXNjYWxlIFNvQ3MuIEl0IGNhbm5vdCBiZSByZWFjaGVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0Ugb3IgUUVNVSkgdXNlZCBieSBzeXprYWxsZXIsIGFzIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6MjM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjYWIwNzNlMDRmMzkzNWNiNzU2OWI3MTE1YTYzZDkzZjZmNDIxZTRlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTEgMTE6MjM6MjggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9kdHNlYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9kdHNlYy5jXG5pbmRleCBmZTM1NzAzYzUwOWU1NS4uNzA3NWY5M2JhYjQ5MTMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX2R0c2VjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fZHRzZWMuY1xuQEAgLTkwMCwyMiAmIzQzOzkwMCwyOCBAQCBzdGF0aWMgdm9pZCBkdHNlY19tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcbiB7XG4gXHRzdHJ1Y3QgbWFjX2RldmljZSAqbWFjX2RldiA9IGZtYW5fY29uZmlnX3RvX21hYyhjb25maWcpO1xuIFx0c3RydWN0IGR0c2VjX3JlZ3MgX19pb21lbSAqcmVncyA9IG1hY19kZXYtXHUwMDNlZm1hbl9tYWMtXHUwMDNlcmVncztcbi1cdHUzMiB0bXA7XG4mIzQzO1x0dTMyIGVjbnRybCwgbWFjY2ZnMjtcbiYjNDM7XG4mIzQzO1x0bWFjY2ZnMiA9IGlvcmVhZDMyYmUoXHUwMDI2cmVncy1cdTAwM2VtYWNjZmcyKTtcbiYjNDM7XHRtYWNjZmcyIFx1MDAyNj0gfihNQUNDRkcyX05JQkJMRV9NT0RFIHwgTUFDQ0ZHMl9CWVRFX01PREUpO1xuIFxuIFx0c3dpdGNoIChzdGF0ZS1cdTAwM2VpbnRlcmZhY2UpIHtcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUk6XG4tXHRcdHRtcCA9IERUU0VDX0VDTlRSTF9STU07XG4mIzQzO1x0XHRlY250cmwgPSBEVFNFQ19FQ05UUkxfUk1NO1xuJiM0MztcdFx0bWFjY2ZnMiB8PSBNQUNDRkcyX05JQkJMRV9NT0RFO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfSUQ6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9SWElEOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRDpcbi1cdFx0dG1wID0gRFRTRUNfRUNOVFJMX0dNSUlNIHwgRFRTRUNfRUNOVFJMX1JQTTtcbiYjNDM7XHRcdGVjbnRybCA9IERUU0VDX0VDTlRSTF9HTUlJTSB8IERUU0VDX0VDTlRSTF9SUE07XG4mIzQzO1x0XHRtYWNjZmcyIHw9IE1BQ0NGRzJfQllURV9NT0RFO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYOlxuLVx0XHR0bXAgPSBEVFNFQ19FQ05UUkxfVEJJTSB8IERUU0VDX0VDTlRSTF9TR01JSU07XG4mIzQzO1x0XHRlY250cmwgPSBEVFNFQ19FQ05UUkxfVEJJTSB8IERUU0VDX0VDTlRSTF9TR01JSU07XG4mIzQzO1x0XHRtYWNjZmcyIHw9IE1BQ0NGRzJfQllURV9NT0RFO1xuIFx0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdGRldl93YXJuKG1hY19kZXYtXHUwMDNlZGV2LCBcJiMzNDtjYW5ub3QgY29uZmlndXJlIGRUU0VDIGZvciAlc1xcblwmIzM0OyxcbkBAIC05MjMsNyAmIzQzOzkyOSw4IEBAIHN0YXRpYyB2b2lkIGR0c2VjX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4tXHRpb3dyaXRlMzJiZSh0bXAsIFx1MDAyNnJlZ3MtXHUwMDNlZWNudHJsKTtcbiYjNDM7XHRpb3dyaXRlMzJiZShlY250cmwsIFx1MDAyNnJlZ3MtXHUwMDNlZWNudHJsKTtcbiYjNDM7XHRpb3dyaXRlMzJiZShtYWNjZmcyLCBcdTAwMjZyZWdzLVx1MDAzZW1hY2NmZzIpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBkdHNlY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuQEAgLTk0OCwxNSAmIzQzOzk1NSwxMCBAQCBzdGF0aWMgdm9pZCBkdHNlY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuIFx0aW93cml0ZTMyYmUodG1wLCBcdTAwMjZyZWdzLVx1MDAzZWVjbnRybCk7XG4gXG4gXHR0bXAgPSBpb3JlYWQzMmJlKFx1MDAyNnJlZ3MtXHUwMDNlbWFjY2ZnMik7XG4tXHR0bXAgXHUwMDI2PSB+KE1BQ0NGRzJfTklCQkxFX01PREUgfCBNQUNDRkcyX0JZVEVfTU9ERSB8IE1BQ0NGRzJfRlVMTF9EVVBMRVgpO1xuLVx0aWYgKHNwZWVkIFx1MDAzZT0gU1BFRURfMTAwMClcbi1cdFx0dG1wIHw9IE1BQ0NGRzJfQllURV9NT0RFO1xuLVx0ZWxzZVxuLVx0XHR0bXAgfD0gTUFDQ0ZHMl9OSUJCTEVfTU9ERTtcbi1cbiBcdGlmIChkdXBsZXggPT0gRFVQTEVYX0ZVTEwpXG4gXHRcdHRtcCB8PSBNQUNDRkcyX0ZVTExfRFVQTEVYO1xuLVxuJiM0MztcdGVsc2VcbiYjNDM7XHRcdHRtcCBcdTAwMjY9IH5NQUNDRkcyX0ZVTExfRFVQTEVYO1xuIFx0aW93cml0ZTMyYmUodG1wLCBcdTAwMjZyZWdzLVx1MDAzZW1hY2NmZzIpO1xuIFxuIFx0bWFjX2Rldi1cdTAwM2V1cGRhdGVfc3BlZWQobWFjX2Rldiwgc3BlZWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjIzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRnJhbWUgTWFuYWdlciAoRk1hbikgRXRoZXJuZXQgTUFDIGRyaXZlci4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciBmb3IgRnJlZXNjYWxlIFNvQ3MuIEl0IGNhbm5vdCBiZSByZWFjaGVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0Ugb3IgUUVNVSkgdXNlZCBieSBzeXprYWxsZXIsIGFzIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGNhYjA3M2UwNGYzOTM1Y2I3NTY5YjcxMTVhNjNkOTNmNmY0MjFlNGUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAxMSAxMToyMzoyOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fZHRzZWMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fZHRzZWMuYwppbmRleCBmZTM1NzAzYzUwOWU1NS4uNzA3NWY5M2JhYjQ5MTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fZHRzZWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX2R0c2VjLmMKQEAgLTkwMCwyMiAmIzQzOzkwMCwyOCBAQCBzdGF0aWMgdm9pZCBkdHNlY19tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSwKIHsKIAlzdHJ1Y3QgbWFjX2RldmljZSAqbWFjX2RldiA9IGZtYW5fY29uZmlnX3RvX21hYyhjb25maWcpOwogCXN0cnVjdCBkdHNlY19yZWdzIF9faW9tZW0gKnJlZ3MgPSBtYWNfZGV2LSZndDtmbWFuX21hYy0mZ3Q7cmVnczsKLQl1MzIgdG1wOwomIzQzOwl1MzIgZWNudHJsLCBtYWNjZmcyOwomIzQzOwomIzQzOwltYWNjZmcyID0gaW9yZWFkMzJiZSgmYW1wO3JlZ3MtJmd0O21hY2NmZzIpOwomIzQzOwltYWNjZmcyICZhbXA7PSB+KE1BQ0NGRzJfTklCQkxFX01PREUgfCBNQUNDRkcyX0JZVEVfTU9ERSk7CiAKIAlzd2l0Y2ggKHN0YXRlLSZndDtpbnRlcmZhY2UpIHsKIAljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9STUlJOgotCQl0bXAgPSBEVFNFQ19FQ05UUkxfUk1NOwomIzQzOwkJZWNudHJsID0gRFRTRUNfRUNOVFJMX1JNTTsKJiM0MzsJCW1hY2NmZzIgfD0gTUFDQ0ZHMl9OSUJCTEVfTU9ERTsKIAkJYnJlYWs7CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfSUQ6CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfUlhJRDoKIAljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9UWElEOgotCQl0bXAgPSBEVFNFQ19FQ05UUkxfR01JSU0gfCBEVFNFQ19FQ05UUkxfUlBNOwomIzQzOwkJZWNudHJsID0gRFRTRUNfRUNOVFJMX0dNSUlNIHwgRFRTRUNfRUNOVFJMX1JQTTsKJiM0MzsJCW1hY2NmZzIgfD0gTUFDQ0ZHMl9CWVRFX01PREU7CiAJCWJyZWFrOwogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOgogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWDoKIAljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVg6Ci0JCXRtcCA9IERUU0VDX0VDTlRSTF9UQklNIHwgRFRTRUNfRUNOVFJMX1NHTUlJTTsKJiM0MzsJCWVjbnRybCA9IERUU0VDX0VDTlRSTF9UQklNIHwgRFRTRUNfRUNOVFJMX1NHTUlJTTsKJiM0MzsJCW1hY2NmZzIgfD0gTUFDQ0ZHMl9CWVRFX01PREU7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWRldl93YXJuKG1hY19kZXYtJmd0O2RldiwgJiMzNDtjYW5ub3QgY29uZmlndXJlIGRUU0VDIGZvciAlc1xuJiMzNDssCkBAIC05MjMsNyAmIzQzOzkyOSw4IEBAIHN0YXRpYyB2b2lkIGR0c2VjX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLAogCQlyZXR1cm47CiAJfQogCi0JaW93cml0ZTMyYmUodG1wLCAmYW1wO3JlZ3MtJmd0O2VjbnRybCk7CiYjNDM7CWlvd3JpdGUzMmJlKGVjbnRybCwgJmFtcDtyZWdzLSZndDtlY250cmwpOwomIzQzOwlpb3dyaXRlMzJiZShtYWNjZmcyLCAmYW1wO3JlZ3MtJmd0O21hY2NmZzIpOwogfQogCiBzdGF0aWMgdm9pZCBkdHNlY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LApAQCAtOTQ4LDE1ICYjNDM7OTU1LDEwIEBAIHN0YXRpYyB2b2lkIGR0c2VjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksCiAJaW93cml0ZTMyYmUodG1wLCAmYW1wO3JlZ3MtJmd0O2VjbnRybCk7CiAKIAl0bXAgPSBpb3JlYWQzMmJlKCZhbXA7cmVncy0mZ3Q7bWFjY2ZnMik7Ci0JdG1wICZhbXA7PSB+KE1BQ0NGRzJfTklCQkxFX01PREUgfCBNQUNDRkcyX0JZVEVfTU9ERSB8IE1BQ0NGRzJfRlVMTF9EVVBMRVgpOwotCWlmIChzcGVlZCAmZ3Q7PSBTUEVFRF8xMDAwKQotCQl0bXAgfD0gTUFDQ0ZHMl9CWVRFX01PREU7Ci0JZWxzZQotCQl0bXAgfD0gTUFDQ0ZHMl9OSUJCTEVfTU9ERTsKLQogCWlmIChkdXBsZXggPT0gRFVQTEVYX0ZVTEwpCiAJCXRtcCB8PSBNQUNDRkcyX0ZVTExfRFVQTEVYOwotCiYjNDM7CWVsc2UKJiM0MzsJCXRtcCAmYW1wOz0gfk1BQ0NGRzJfRlVMTF9EVVBMRVg7CiAJaW93cml0ZTMyYmUodG1wLCAmYW1wO3JlZ3MtJmd0O21hY2NmZzIpOwogCiAJbWFjX2Rldi0mZ3Q7dXBkYXRlX3NwZWVkKG1hY19kZXYsIHNwZWVkKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY5OAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBGcmVlc2NhbGUgRk1hbiBFdGhlcm5ldCBNQUMgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fZHRzZWMuY2AsIHNwZWNpZmljYWxseSB0aGUgYGR0c2VjX21hY19jb25maWdgIGFuZCBgZHRzZWNfbGlua191cGAgZnVuY3Rpb25zLiBSaWdodCBhd2F5LCBJIHNlZSB0aGlzIGlzIGEgZHJpdmVyIGZvciBGcmVlc2NhbGUmIzM5O3MgRnJhbWUgTWFuYWdlciAoRk1hbikgRXRoZXJuZXQgTUFDcy4gSGFyZHdhcmUtc3BlY2lmaWMsIGRlZmluaXRlbHkuIEl0JiMzOTtzIHRoYXQgUW9ySVEgRFBBQSBGTWFuIHN0dWZmLiBUaGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIEkgZnV6eiB0aGlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhlc2UgaGFyZHdhcmUtZGVwZW5kZW50IGRyaXZlcnMgYXJlIHVzdWFsbHkgYSBwYWluIHRvIGZ1enogZGlyZWN0bHkuIFdpdGhvdXQgYSB2aXJ0dWFsIGRldmljZSBvciBzb21lIGNsZXZlciBzb2Z0d2FyZSBwcm9iaW5nLCBpdCYjMzk7cyB0eXBpY2FsbHkgYSBuby1nby4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBpcyBhbnkgd2F5IHRvIHJlYWNoIHRoaXMgY29kZS4gSXQmIzM5O3MgYSBwbGF0Zm9ybSBkcml2ZXIsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCYjMzk7cyBpbml0aWFsaXplZCBhbmQgdHJpZ2dlcmVkLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX2R0c2VjLmNgIGFuZCBhbHNvIHByb2JhYmx5IHBlZWsgYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL21hYy5jYCB0byBzZWUgaG93IGV2ZXJ5dGhpbmcgY29ubmVjdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zm1hbl9kdHNlYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9NYWtlZmlsZT05PWZzbF9kcGFhX2ZtYW5fcG9ydC1vYmpzIDo9IGZtYW5fcG9ydC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9NYWtlZmlsZToxMDpmc2xfZHBhYV9tYWMtb2Jqczo9IG1hYy5vIGZtYW5fZHRzZWMubyBmbWFuX21lbWFjLm8gZm1hbl90Z2VjLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX2R0c2VjLmMtNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fZHRzZWMuYzo4OiNpbmNsdWRlIFwmIzM0O2ZtYW5fZHRzZWMuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9kdHNlYy5jLTktI2luY2x1ZGUgXCYjMzQ7Zm1hbi5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vbWFjLmMtMjItI2luY2x1ZGUgXCYjMzQ7Zm1hbl9tYWMuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vbWFjLmM6MjM6I2luY2x1ZGUgXCYjMzQ7Zm1hbl9kdHNlYy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9tYWMuYy0yNC0jaW5jbHVkZSBcJiMzNDtmbWFuX3RnZWMuaFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0ODQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEcml2ZXImIzM5O3MgUG90ZW50aWFsIGZvciBGdXp6aW5nKioKCk9rYXksIGxldCYjMzk7cyBhc3Nlc3MgdGhlIGZ1enppbmcgcG90ZW50aWFsIG9mIHRoaXMgZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gc2VlIGlmIHdlIGNhbiB0cmlnZ2VyIGEgcHJvYmUuIEl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyLCBzbyBkZXZpY2UgdHJlZSBpbnRlcmFjdGlvbiBpcyB0aGUgdXN1YWwgYXBwcm9hY2guIFRoZSBiaWcgcXVlc3Rpb24gaXMgd2hldGhlciBzeXprYWxsZXIgY2FuIGVmZmVjdGl2ZWx5IGZ1enogdGhpcy4gU3l6a2FsbGVyJiMzOTtzIGRldmljZSB0cmVlIGNhcGFiaWxpdGllcyBhcmUgc29saWQsIGJ1dCBwbGF0Zm9ybSBkcml2ZXJzIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBTeXN0ZW0tb24tYS1DaGlwIChsaWtlIHRob3NlIGZvciBGcmVlc2NhbGUgUW9ySVEpIGFyZW4mIzM5O3Qgb2Z0ZW4gcHJpbWUgY2FuZGlkYXRlcyB1bmxlc3MgYW4gZW11bGF0b3IgaXMgYXZhaWxhYmxlIG9yIGl0IGhvb2tzIGludG8gYSBicm9hZGVyLCBmdXp6YWJsZSBzdWJzeXN0ZW0uIFRoZXJlIGlzIHNvbWUgcGxhdGZvcm0gZGV2aWNlIGluamVjdGlvbiBjYXBhYmlsaXR5IGluIFN5emthbGxlciwgdGhvdWdoIGl0JiMzOTtzIHR5cGljYWxseSBsaW1pdGVkIGluIHNjb3BlLgoKVGhlIGNydWNpYWwgbmV4dCBzdGVwIGlzIGZpZ3VyaW5nIG91dCByZWFjaGFiaWxpdHkuIFRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgcmVnaXN0ZXJzIGl0c2VsZiwgSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgc291cmNlIGNvZGUuIExldCYjMzk7cyBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9tYWMuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGxhdGZvcm1fZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYz0yODg0PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGZtYW5fbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jLTI4ODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmM6Mjg4NjpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBmbWFuX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYy0yODg3LVx0LmRyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmM9Mjg5ND1zdGF0aWMgaW50IF9faW5pdCBmbWFuX2xvYWQodm9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmMtMjg5OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYzoyOTAwOlx0ZXJyID0gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNmZtYW5fZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYy0yOTAxLVx0aWYgKGVyciBcdTAwM2MgMClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYzoyOTAyOlx0XHRwcl9lcnIoXCYjMzQ7RXJyb3IsIHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcigpID0gJWRcXG5cJiMzNDssIGVycik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmMtMjkwMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmM9MjkwOD1zdGF0aWMgdm9pZCBfX2V4aXQgZm1hbl91bmxvYWQodm9pZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYy0yOTA5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYzoyOTEwOlx0cGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2Zm1hbl9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jLTI5MTEtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fcG9ydC5jPTE4OTA9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZm1hbl9wb3J0X21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fcG9ydC5jLTE4OTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX3BvcnQuYzoxODkyOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGZtYW5fcG9ydF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX3BvcnQuYy0xODkzLVx0LmRyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX3BvcnQuYz0xOTAwPXN0YXRpYyBpbnQgX19pbml0IGZtYW5fcG9ydF9sb2FkKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9wb3J0LmMtMTkwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fcG9ydC5jOjE5MDY6XHRlcnIgPSBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoXHUwMDI2Zm1hbl9wb3J0X2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX3BvcnQuYy0xOTA3LVx0aWYgKGVyciBcdTAwM2MgMClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fcG9ydC5jOjE5MDg6XHRcdHByX2VycihcJiMzNDtFcnJvciwgcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCkgPSAlZFxcblwmIzM0OywgZXJyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fcG9ydC5jLTE5MDktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9wb3J0LmM9MTkxND1zdGF0aWMgdm9pZCBfX2V4aXQgZm1hbl9wb3J0X3VubG9hZCh2b2lkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9wb3J0LmMtMTkxNS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX3BvcnQuYzoxOTE2Olx0cGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2Zm1hbl9wb3J0X2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX3BvcnQuYy0xOTE3LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9tYWMuYz0zMjU9c3RhdGljIHZvaWQgbWFjX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL21hYy5jLTMzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL21hYy5jOjMzNzpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vbWFjLmMtMzM4LVx0LmRyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9tYWMuYy0zNDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9tYWMuYzozNDY6YnVpbHRpbl9wbGF0Zm9ybV9kcml2ZXIobWFjX2RyaXZlcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk5MgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZlYXNpYmlsaXR5IG9mIEZ1enppbmcgVGhpcyBEcml2ZXIqKgoKT2theSwgc28gdGhpcyBkcml2ZXIgaXMgYSBwbGF0Zm9ybSBkcml2ZXIsIG1lYW5pbmcgaXQgcmVsaWVzIG9uIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzIHRvIGdldCBwcm9iZWQuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgaXNzdWUsIGFzIFN5emthbGxlciBkb2VzbiYjMzk7dCB1c3VhbGx5IHRhcmdldCBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXJzIHVubGVzcyB0aGVyZSYjMzk7cyBhIHdheSB0byBlbXVsYXRlIHRoZSBoYXJkd2FyZSBvciBpZiB0aGV5JiMzOTtyZSBwYXJ0IG9mIGEgZnV6emFibGUgc3Vic3lzdGVtLiBJIGtub3cgaXQgKmNhbiogaW5qZWN0IHBsYXRmb3JtIGRldmljZXMgdG8gYSBsaW1pdGVkIGRlZ3JlZSB2aWEgYHN5el9kZXZfcGxhdGZvcm1gIGFuZCB0aGUgbGlrZSwgYnV0IHRoYXQmIzM5O3MgdmVyeSBzcGVjaWZpYyBhbmQgZ2VuZXJhbGx5IHRhcmdldGVkIGF0IHZlcnkgc2VsZWN0IGRyaXZlcnMuCgpUaGlzIG9uZSwgdGhvdWdoLCBpcyBhIEZyZWVzY2FsZSBGTWFuIGRyaXZlci4gUHJhY3RpY2FsbHkgc3BlYWtpbmcsIHRoZXJlJiMzOTtzICpubyB3YXkqIGl0JiMzOTtzIGdvaW5nIHRvIGJlIHJlYWNoYWJsZSBpbiBhIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIGV2ZW4gc3RhbmRhcmQgUUVNVSwgd2l0aG91dCBzb21lIHNlcmlvdXNseSBzcGVjaWZpYyBlbXVsYXRpb24gb2YgdGhlIEZyZWVzY2FsZSBTb0MuCgpIbW0sIEkgd29uZGVyLi4uIGlzIHRoZXJlICphbnkqIFFFTVUgc3VwcG9ydCBmb3IgRnJlZXNjYWxlIEZNYW4/IFFFTVUgKmRvZXMqIHN1cHBvcnQgc29tZSBQb3dlclBDIGJvYXJkcyBsaWtlIGU1MDAsIGFuZCB0aG9zZSBtaWdodCBoYXZlIEZNYW4sIGJ1dCBTeXprYWxsZXIgZ2VuZXJhbGx5IHJ1bnMgb24geDg2XzY0IG9yIGFybTY0LCBzbyB0aGF0JiMzOTtzIGEgaHVyZGxlLgoKV2FpdCwgY291bGQgSSBldmVuIGNvbXBpbGUgdGhpcyBkcml2ZXIgb24geDg2PyBUaGF04oCZcyBzb21ldGhpbmcgSSBuZWVkIHRvIGNoZWNrLiBMZXQmIzM5O3Mgc2VlIGlmIHRoZSBLY29uZmlnIGZpbGUgZ2l2ZXMgbWUgYW55IGNsdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZTTF9GTUFOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1NjMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHdlbnQ6CgoqKkV4YW1pbmluZyBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0byBsb29rIGZvciB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhpcyBFdGhlcm5ldCBkcml2ZXIuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gaGVhZCBzdHJhaWdodCB0byB0aGUgc291cmNlLCB0aGUgYEtjb25maWdgIGZpbGVzLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGFyZSBkZWZpbmVkLiBHaXZlbiB0aGUgbWVudGlvbiBvZiBGcmVlc2NhbGUmIzM5O3MgRk1BTiwgbXkgZmlyc3QgZ3Vlc3MgaXMgdGhhdCB0aGUgcmVsZXZhbnQgZmlsZSB3aWxsIGJlIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2AgZGlyZWN0b3J5LCBvciBzb21ldGhpbmcgc2ltaWxhciwgbGlrZSBhIG1vcmUgZ2VuZXJhbCAmIzM0O2ZyZWVzY2FsZSYjMzQ7IGRpcmVjdG9yeSBpZiB0aGV5JiMzOTt2ZSBhYnN0cmFjdGVkIHRoZSBkcml2ZXIgc3RydWN0dXJlLiBJJiMzOTtsbCBzdGFydCB0aGVyZSBhbmQgc2VlIHdoYXQgSSBjYW4gZmluZC4gSXQmIzM5O3MgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBiZWdpbiBkaWdnaW5nIHRocm91Z2ggdGhlIG9wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBGU0xfRk1BTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZzoyOmNvbmZpZyBGU0xfRk1BTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7Rk1hbiBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4ODEKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgRlNMX0ZNQU4qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGdvZXMgdG8gdGhlIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgb2YgRlNMX0ZNQU4uIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyBlY29zeXN0ZW0uIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsICYjMzQ7V2hhdCBvdGhlciBtb2R1bGVzLCBsaWJyYXJpZXMsIG9yIHN5c3RlbSByZXNvdXJjZXMgaXMgdGhpcyB0aGluZyByZWx5aW5nIG9uPyYjMzQ7IElzIGl0IHByaW1hcmlseSBhIHN0YW5kYWxvbmUgY29tcG9uZW50LCBvciBpcyBpdCB0aWdodGx5IGludGVyd292ZW4gd2l0aCBvdGhlciBjcml0aWNhbCBpbmZyYXN0cnVjdHVyZT8gVGhpbmtpbmcgYWJvdXQgaXQsIHVuZGVyc3RhbmRpbmcgdGhlIGxvd2VyLWxldmVsIGRlcGVuZGVuY2llcyBpcyBjcnVjaWFsOyB0aGlzIG1lYW5zIGRpZ2dpbmcgZG93biB0byB0aGUgaGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXJzLCB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtIHNlcnZpY2VzLCBhbnkgY3VzdG9tIGRyaXZlcnMsIGFuZCBvZiBjb3Vyc2UsIGFueSBzaGFyZWQgbGlicmFyaWVzIHRoYXQgbWlnaHQgYmUgaW52b2x2ZWQuIAoKSSYjMzk7bSBhbHNvIGNvbnNpZGVyaW5nIHRoZSBwb3RlbnRpYWwgY2FzY2FkaW5nIGVmZmVjdHMgb2YgYW55IGNoYW5nZXMgdG8gRlNMX0ZNQU4uIElmIGl0IHJlbGllcyBvbiBhIHBhcnRpY3VsYXIgdmVyc2lvbiBvZiBhIGZpcm13YXJlIGNvbXBvbmVudCwgb3IgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIGEgc3RhbmRhcmQgbGlicmFyeSwgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiBhbiB1cGdyYWRlIG9yLCBHb2QgZm9yYmlkLCBhIGJhY2t3YXJkcy1pbmNvbXBhdGlibGUgY2hhbmdlIGluIHRoZSBkZXBlbmRlbmN5PyBXaGF0IGtpbmQgb2YgdGVzdGluZyBhbmQgdmFsaWRhdGlvbiB3aWxsIGJlIHJlcXVpcmVkIGluIHRoaXMgc2NlbmFyaW8/IAoKRnVuY3Rpb25hbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBuYXR1cmUgb2YgdGhlIGRhdGEgZmxvdyBhbmQgYW55IG90aGVyIG1vZHVsZXMgaW52b2x2ZWQgaW4gaXQuIElzIEZTTF9GTUFOIHNvbGVseSBhIGNvbnN1bWVyIG9mIGluZm9ybWF0aW9uLCBvciBhIHByb2R1Y2VyIG9yIHRyYW5zZm9ybWVyIG9mIGluZm9ybWF0aW9uLiBJIGFsc28gY29uc2lkZXIgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzLCBzdWNoIGFzIHJlYWwtdGltZSBjb25zdHJhaW50cywgbGF0ZW5jeSBjb25zaWRlcmF0aW9ucywgYW5kIHJlcXVpcmVkIHRocm91Z2hwdXQuIFRoaXMgZGlyZWN0cyBtZSB0byBjb25zaWRlciByZXNvdXJjZSBjb25zdHJhaW50cyBsaWtlIG1lbW9yeSB1c2FnZSwgcHJvY2Vzc2luZyBjYXBhY2l0eSwgYW5kIG5ldHdvcmsgYmFuZHdpZHRoLiBJIGFsc28gY29uc2lkZXIgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIGFuZCByaXNrIG1pdGlnYXRpb24gYXMgaXQgcmVsYXRlcyB0byBGU0xfRk1BTiYjMzk7cyBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBjb21wb25lbnRzLgoKRXNzZW50aWFsbHksIEkgbmVlZCBhIGRldGFpbGVkIGRlcGVuZGVuY3kgZ3JhcGguIFRoaXMgaXNuJiMzOTt0IGp1c3QgYWJvdXQgY29tcGlsaW5nIGEgbGlzdDsgaXQmIzM5O3MgYWJvdXQgKnVuZGVyc3RhbmRpbmcqIHRoZSByZWxhdGlvbnNoaXBzLCB0aGUgcG90ZW50aWFsIGJvdHRsZW5lY2tzLCBhbmQgdGhlIHBvaW50cyBvZiBmYWlsdXJlLiBUaGlzIGlzIGFic29sdXRlbHkga2V5IHRvIG1haW50YWluYWJpbGl0eSwgZGVidWdnaW5nLCBhbmQgYW55IGZ1dHVyZSBtb2RpZmljYXRpb25zIG9yIGludGVncmF0aW9ucyBvZiBGU0xfRk1BTi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIEZTTF9GTUFOXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtGTWFuIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gRlNMX1NPQyB8fCBBUkNIX0xBWUVSU0NBUEUgfHwgQ09NUElMRV9URVNUXG4gICA1Olx0XHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1JcbiAgIDY6XHRcdHNlbGVjdCBQSFlMSU5LXG4gICA3Olx0XHRzZWxlY3QgUENTX0xZTlhcbiAgIDg6XHRcdHNlbGVjdCBDUkMzMlxuICAgOTpcdFx0ZGVmYXVsdCBuXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHRcdEZyZWVzY2FsZSBEYXRhLVBhdGggQWNjZWxlcmF0aW9uIEFyY2hpdGVjdHVyZSBGcmFtZSBNYW5hZ2VyXG4gIDEyOlx0XHRcdChGTWFuKSBzdXBwb3J0XG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIERQQUFfRVJSQVRVTV9BMDUwMzg1XG4gIDE1Olx0XHRib29sXG4gIDE2Olx0XHRkZXBlbmRzIG9uIEFSTTY0IFx1MDAyNlx1MDAyNiBGU0xfRFBBQVxuICAxNzpcdFx0ZGVmYXVsdCB5XG4gIDE4Olx0XHRoZWxwXG4gIDE5Olx0XHRcdERQQUEgRk1hbiBlcnJhdHVtIEEwNTAzODUgc29mdHdhcmUgd29ya2Fyb3VuZCBpbXBsZW1lbnRhdGlvbjpcbiAgMjA6XHRcdFx0YWxpZ24gYnVmZmVycywgZGF0YSBzdGFydCwgU0cgZnJhZ21lbnQgbGVuZ3RoIHRvIGF2b2lkIEZNYW4gRE1BXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MDUKCQkJCQkJCW91dHB1dDogOTgKCQkJCQkJCXRob3VnaHRzOiAzMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEFzc2Vzc21lbnQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGhpbmdlcyBvbiB0aHJlZSBmYWN0b3JzOiBgRlNMX1NPQ2AsIGBBUkNIX0xBWUVSU0NBUEVgLCBhbmQgYENPTVBJTEVfVEVTVGAuIFllcywgaXQgY2FuIGJlIGNvbXBpbGVkIHdpdGggYENPTVBJTEVfVEVTVGAsIHRoYXQmIzM5O3MgYSBnaXZlbi4gQnV0IGNhbiBpdCBhY3R1YWxseSAqcnVuKj8gVGhhdCYjMzk7cyB0aGUgY3JpdGljYWwgcXVlc3Rpb24uCgpUaGlzIGNvZGUgaXMgYSBwbGF0Zm9ybSBkcml2ZXIsIHNwZWNpZmljYWxseSBvbmUgdGhhdCBkZWFscyB3aXRoIG1lbW9yeS1tYXBwZWQgcmVnaXN0ZXJzLiBgaW9yZWFkMzJiZWAgYW5kIGBpb3dyaXRlMzJiZWAgYXJlIHRoZSB0ZWxsdGFsZSBzaWducyBoZXJlLiBXaXRob3V0IHRoZSByZWFsIGhhcmR3YXJlIHByZXNlbnQsIG9yIGF0IGxlYXN0IGEgY29udmluY2luZyBlbXVsYXRpb24sIHByb2JpbmcgdGhpcyBkcml2ZXIgaXMgZ29pbmcgdG8gcmVzdWx0IGluIGVpdGhlciBhIGNyYXNoIG9yIGFuIGltbWVkaWF0ZSBmYWlsdXJlLiBTeXprYWxsZXIsIGluIGl0cyBjdXJyZW50IGNvbmZpZ3VyYXRpb24sIGRvZXNuJiMzOTt0IG9mZmVyIGEgd2F5IHRvIHNpbXVsYXRlICp0aGlzKiBzcGVjaWZpYyBoYXJkd2FyZS4gVGhlcmVmb3JlLCBnaXZlbiB0aGUgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChHQ0UsIFFFTVUsIGV0Yy4pIHVzZWQgYnkgU3l6a2FsbGVyLCByZWFjaGluZyB0aGlzIGNvZGUgcGF0aCBpcyBzaW1wbHkgaW1wb3NzaWJsZS4gSSYjMzk7bSBsZWFuaW5nIHRvd2FyZHMgZGVjbGFyaW5nIHRoaXMgYFdvcnRoRnV6emluZz1mYWxzZWAuCgpIb2xkIG9uLCBsZXQgbWUgZG91YmxlLWNoZWNrLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGR0c2VjX21hY19jb25maWdgIGFuZCBgZHRzZWNfbGlua191cGAuIFRoZXNlIGFyZSBpbnRlcm5hbCBmdW5jdGlvbnMgY2FsbGVkIGJ5IHRoZSBwaHlsaW5rIGZyYW1ld29yaywgd2hpY2ggaXRzZWxmIGlzIGNhbGxlZCBieSB0aGUgTUFDIGRyaXZlci4gVGhlIE1BQyBkcml2ZXIgaXMgcHJvYmVkIHRocm91Z2ggYG1hY19wcm9iZWAsIGluIGBtYWMuY2AuIGBtYWNfcHJvYmVgLCBhcyBJIHJlY2FsbCwgcmVxdWlyZXMgYSBwbGF0Zm9ybSBkZXZpY2UuIE5vdywgdGhlIGtleSBpcyB0aGUgRnJlZXNjYWxlIEZNYW4sIHRoYXQmIzM5O3Mgd2hhdCYjMzk7cyBkcml2aW5nIHRoaXMgd2hvbGUgdGhpbmcuIFNpbmNlIFN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGFueSBzdGFuZGFyZCBlbXVsYXRpb24gZm9yIHRoYXQgaGFyZHdhcmUg4oCTIGFuZCBpdCYjMzk7cyBhICpzcGVjaWZpYyogRnJlZXNjYWxlIEZNYW4gLSB0aGlzIGNvZGUgd2lsbCBuZXZlciBiZSBleGVjdXRlZC4KCkFscmlnaHQsIEkmIzM5O20gY29uZmlkZW50LiBUaGUgcGF0Y2ggdG91Y2hlcyB0aGUgRnJlZXNjYWxlIEZyYW1lIE1hbmFnZXIgKEZNYW4pIEV0aGVybmV0IE1BQyBkcml2ZXIuIEl0JiMzOTtzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIGZvciBGcmVlc2NhbGUgU29Dcy4gSXQgY2Fubm90IGJlIHJlYWNoZWQgb3IgZXhlY3V0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgbGFjayBvZiBoYXJkd2FyZSBlbXVsYXRpb24gc2VhbHMgdGhlIGRlYWwuIFdlIGNhbiYjMzk7dCBmdXp6IHRoaXMgcmVsaWFibHkgaW4gdGhlIGN1cnJlbnQgc2V0dXAuIEkmIzM5O20gY29uZmlybWluZywgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBGcmFtZSBNYW5hZ2VyIChGTWFuKSBFdGhlcm5ldCBNQUMgZHJpdmVyLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIGZvciBGcmVlc2NhbGUgU29Dcy4gSXQgY2Fubm90IGJlIHJlYWNoZWQgb3IgZXhlY3V0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VKSB1c2VkIGJ5IHN5emthbGxlciwgYXMgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGhhcmR3YXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBGcmFtZSBNYW5hZ2VyIChGTWFuKSBFdGhlcm5ldCBNQUMgZHJpdmVyLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIGZvciBGcmVlc2NhbGUgU29Dcy4gSXQgY2Fubm90IGJlIHJlYWNoZWQgb3IgZXhlY3V0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VKSB1c2VkIGJ5IHN5emthbGxlciwgYXMgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGhhcmR3YXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjIzOjMwLjYzMjAyMzMxNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxNzM0Njc1MDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRnJlZXNjYWxlIEZyYW1lIE1hbmFnZXIgKEZNYW4pIEV0aGVybmV0IE1BQyBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgZm9yIEZyZWVzY2FsZSBTb0NzLiBJdCBjYW5ub3QgYmUgcmVhY2hlZCBvciBleGVjdXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUpIHVzZWQgYnkgc3l6a2FsbGVyLCBhcyB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMToyMzozMC42MzIwMjgyODRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNTkzNTY1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGNhYjA3M2UwNGYzOTM1Y2I3NTY5YjcxMTVhNjNkOTNmNmY0MjFlNGVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdWwgMTEgMTE6MjM6MjggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9kdHNlYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9kdHNlYy5jXFxuaW5kZXggZmUzNTcwM2M1MDllNTUuLjcwNzVmOTNiYWI0OTEzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fZHRzZWMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fZHRzZWMuY1xcbkBAIC05MDAsMjIgKzkwMCwyOCBAQCBzdGF0aWMgdm9pZCBkdHNlY19tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcXG4ge1xcbiBcXHRzdHJ1Y3QgbWFjX2RldmljZSAqbWFjX2RldiA9IGZtYW5fY29uZmlnX3RvX21hYyhjb25maWcpO1xcbiBcXHRzdHJ1Y3QgZHRzZWNfcmVncyBfX2lvbWVtICpyZWdzID0gbWFjX2Rldi1cXHUwMDNlZm1hbl9tYWMtXFx1MDAzZXJlZ3M7XFxuLVxcdHUzMiB0bXA7XFxuK1xcdHUzMiBlY250cmwsIG1hY2NmZzI7XFxuK1xcbitcXHRtYWNjZmcyID0gaW9yZWFkMzJiZShcXHUwMDI2cmVncy1cXHUwMDNlbWFjY2ZnMik7XFxuK1xcdG1hY2NmZzIgXFx1MDAyNj0gfihNQUNDRkcyX05JQkJMRV9NT0RFIHwgTUFDQ0ZHMl9CWVRFX01PREUpO1xcbiBcXG4gXFx0c3dpdGNoIChzdGF0ZS1cXHUwMDNlaW50ZXJmYWNlKSB7XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUk6XFxuLVxcdFxcdHRtcCA9IERUU0VDX0VDTlRSTF9STU07XFxuK1xcdFxcdGVjbnRybCA9IERUU0VDX0VDTlRSTF9STU07XFxuK1xcdFxcdG1hY2NmZzIgfD0gTUFDQ0ZHMl9OSUJCTEVfTU9ERTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRDpcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfUlhJRDpcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRDpcXG4tXFx0XFx0dG1wID0gRFRTRUNfRUNOVFJMX0dNSUlNIHwgRFRTRUNfRUNOVFJMX1JQTTtcXG4rXFx0XFx0ZWNudHJsID0gRFRTRUNfRUNOVFJMX0dNSUlNIHwgRFRTRUNfRUNOVFJMX1JQTTtcXG4rXFx0XFx0bWFjY2ZnMiB8PSBNQUNDRkcyX0JZVEVfTU9ERTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVg6XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWDpcXG4tXFx0XFx0dG1wID0gRFRTRUNfRUNOVFJMX1RCSU0gfCBEVFNFQ19FQ05UUkxfU0dNSUlNO1xcbitcXHRcXHRlY250cmwgPSBEVFNFQ19FQ05UUkxfVEJJTSB8IERUU0VDX0VDTlRSTF9TR01JSU07XFxuK1xcdFxcdG1hY2NmZzIgfD0gTUFDQ0ZHMl9CWVRFX01PREU7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRkZWZhdWx0OlxcbiBcXHRcXHRkZXZfd2FybihtYWNfZGV2LVxcdTAwM2VkZXYsIFxcXCJjYW5ub3QgY29uZmlndXJlIGRUU0VDIGZvciAlc1xcXFxuXFxcIixcXG5AQCAtOTIzLDcgKzkyOSw4IEBAIHN0YXRpYyB2b2lkIGR0c2VjX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4gXFxuLVxcdGlvd3JpdGUzMmJlKHRtcCwgXFx1MDAyNnJlZ3MtXFx1MDAzZWVjbnRybCk7XFxuK1xcdGlvd3JpdGUzMmJlKGVjbnRybCwgXFx1MDAyNnJlZ3MtXFx1MDAzZWVjbnRybCk7XFxuK1xcdGlvd3JpdGUzMmJlKG1hY2NmZzIsIFxcdTAwMjZyZWdzLVxcdTAwM2VtYWNjZmcyKTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgZHRzZWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG5AQCAtOTQ4LDE1ICs5NTUsMTAgQEAgc3RhdGljIHZvaWQgZHRzZWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG4gXFx0aW93cml0ZTMyYmUodG1wLCBcXHUwMDI2cmVncy1cXHUwMDNlZWNudHJsKTtcXG4gXFxuIFxcdHRtcCA9IGlvcmVhZDMyYmUoXFx1MDAyNnJlZ3MtXFx1MDAzZW1hY2NmZzIpO1xcbi1cXHR0bXAgXFx1MDAyNj0gfihNQUNDRkcyX05JQkJMRV9NT0RFIHwgTUFDQ0ZHMl9CWVRFX01PREUgfCBNQUNDRkcyX0ZVTExfRFVQTEVYKTtcXG4tXFx0aWYgKHNwZWVkIFxcdTAwM2U9IFNQRUVEXzEwMDApXFxuLVxcdFxcdHRtcCB8PSBNQUNDRkcyX0JZVEVfTU9ERTtcXG4tXFx0ZWxzZVxcbi1cXHRcXHR0bXAgfD0gTUFDQ0ZHMl9OSUJCTEVfTU9ERTtcXG4tXFxuIFxcdGlmIChkdXBsZXggPT0gRFVQTEVYX0ZVTEwpXFxuIFxcdFxcdHRtcCB8PSBNQUNDRkcyX0ZVTExfRFVQTEVYO1xcbi1cXG4rXFx0ZWxzZVxcbitcXHRcXHR0bXAgXFx1MDAyNj0gfk1BQ0NGRzJfRlVMTF9EVVBMRVg7XFxuIFxcdGlvd3JpdGUzMmJlKHRtcCwgXFx1MDAyNnJlZ3MtXFx1MDAzZW1hY2NmZzIpO1xcbiBcXG4gXFx0bWFjX2Rldi1cXHUwMDNldXBkYXRlX3NwZWVkKG1hY19kZXYsIHNwZWVkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6MjM6MzEuMzQ0MDQwMTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMDIyNjQ4NTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRnJlZXNjYWxlIEZyYW1lIE1hbmFnZXIgKEZNYW4pIEV0aGVybmV0IE1BQyBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgZm9yIEZyZWVzY2FsZSBTb0NzLiBJdCBjYW5ub3QgYmUgcmVhY2hlZCBvciBleGVjdXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUpIHVzZWQgYnkgc3l6a2FsbGVyLCBhcyB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGNhYjA3M2UwNGYzOTM1Y2I3NTY5YjcxMTVhNjNkOTNmNmY0MjFlNGVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxMSAxMToyMzoyOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fZHRzZWMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fZHRzZWMuY1xuaW5kZXggZmUzNTcwM2M1MDllNTUuLjcwNzVmOTNiYWI0OTEzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9kdHNlYy5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX2R0c2VjLmNcbkBAIC05MDAsMjIgKzkwMCwyOCBAQCBzdGF0aWMgdm9pZCBkdHNlY19tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcbiB7XG4gXHRzdHJ1Y3QgbWFjX2RldmljZSAqbWFjX2RldiA9IGZtYW5fY29uZmlnX3RvX21hYyhjb25maWcpO1xuIFx0c3RydWN0IGR0c2VjX3JlZ3MgX19pb21lbSAqcmVncyA9IG1hY19kZXYtXHUwMDNlZm1hbl9tYWMtXHUwMDNlcmVncztcbi1cdHUzMiB0bXA7XG4rXHR1MzIgZWNudHJsLCBtYWNjZmcyO1xuK1xuK1x0bWFjY2ZnMiA9IGlvcmVhZDMyYmUoXHUwMDI2cmVncy1cdTAwM2VtYWNjZmcyKTtcbitcdG1hY2NmZzIgXHUwMDI2PSB+KE1BQ0NGRzJfTklCQkxFX01PREUgfCBNQUNDRkcyX0JZVEVfTU9ERSk7XG4gXG4gXHRzd2l0Y2ggKHN0YXRlLVx1MDAzZWludGVyZmFjZSkge1xuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUk1JSTpcbi1cdFx0dG1wID0gRFRTRUNfRUNOVFJMX1JNTTtcbitcdFx0ZWNudHJsID0gRFRTRUNfRUNOVFJMX1JNTTtcbitcdFx0bWFjY2ZnMiB8PSBNQUNDRkcyX05JQkJMRV9NT0RFO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfSUQ6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9SWElEOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRDpcbi1cdFx0dG1wID0gRFRTRUNfRUNOVFJMX0dNSUlNIHwgRFRTRUNfRUNOVFJMX1JQTTtcbitcdFx0ZWNudHJsID0gRFRTRUNfRUNOVFJMX0dNSUlNIHwgRFRTRUNfRUNOVFJMX1JQTTtcbitcdFx0bWFjY2ZnMiB8PSBNQUNDRkcyX0JZVEVfTU9ERTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWDpcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWDpcbi1cdFx0dG1wID0gRFRTRUNfRUNOVFJMX1RCSU0gfCBEVFNFQ19FQ05UUkxfU0dNSUlNO1xuK1x0XHRlY250cmwgPSBEVFNFQ19FQ05UUkxfVEJJTSB8IERUU0VDX0VDTlRSTF9TR01JSU07XG4rXHRcdG1hY2NmZzIgfD0gTUFDQ0ZHMl9CWVRFX01PREU7XG4gXHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbiBcdFx0ZGV2X3dhcm4obWFjX2Rldi1cdTAwM2VkZXYsIFwiY2Fubm90IGNvbmZpZ3VyZSBkVFNFQyBmb3IgJXNcXG5cIixcbkBAIC05MjMsNyArOTI5LDggQEAgc3RhdGljIHZvaWQgZHRzZWNfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsXG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbi1cdGlvd3JpdGUzMmJlKHRtcCwgXHUwMDI2cmVncy1cdTAwM2VlY250cmwpO1xuK1x0aW93cml0ZTMyYmUoZWNudHJsLCBcdTAwMjZyZWdzLVx1MDAzZWVjbnRybCk7XG4rXHRpb3dyaXRlMzJiZShtYWNjZmcyLCBcdTAwMjZyZWdzLVx1MDAzZW1hY2NmZzIpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBkdHNlY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuQEAgLTk0OCwxNSArOTU1LDEwIEBAIHN0YXRpYyB2b2lkIGR0c2VjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4gXHRpb3dyaXRlMzJiZSh0bXAsIFx1MDAyNnJlZ3MtXHUwMDNlZWNudHJsKTtcbiBcbiBcdHRtcCA9IGlvcmVhZDMyYmUoXHUwMDI2cmVncy1cdTAwM2VtYWNjZmcyKTtcbi1cdHRtcCBcdTAwMjY9IH4oTUFDQ0ZHMl9OSUJCTEVfTU9ERSB8IE1BQ0NGRzJfQllURV9NT0RFIHwgTUFDQ0ZHMl9GVUxMX0RVUExFWCk7XG4tXHRpZiAoc3BlZWQgXHUwMDNlPSBTUEVFRF8xMDAwKVxuLVx0XHR0bXAgfD0gTUFDQ0ZHMl9CWVRFX01PREU7XG4tXHRlbHNlXG4tXHRcdHRtcCB8PSBNQUNDRkcyX05JQkJMRV9NT0RFO1xuLVxuIFx0aWYgKGR1cGxleCA9PSBEVVBMRVhfRlVMTClcbiBcdFx0dG1wIHw9IE1BQ0NGRzJfRlVMTF9EVVBMRVg7XG4tXG4rXHRlbHNlXG4rXHRcdHRtcCBcdTAwMjY9IH5NQUNDRkcyX0ZVTExfRFVQTEVYO1xuIFx0aW93cml0ZTMyYmUodG1wLCBcdTAwMjZyZWdzLVx1MDAzZW1hY2NmZzIpO1xuIFxuIFx0bWFjX2Rldi1cdTAwM2V1cGRhdGVfc3BlZWQobWFjX2Rldiwgc3BlZWQpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6MjM6MzEuMzQ0MDQyM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzMzQzMjU5MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgRnJlZXNjYWxlIEZNYW4gRXRoZXJuZXQgTUFDIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fZHRzZWMuY2AsIHNwZWNpZmljYWxseSB0aGUgYGR0c2VjX21hY19jb25maWdgIGFuZCBgZHRzZWNfbGlua191cGAgZnVuY3Rpb25zLiBSaWdodCBhd2F5LCBJIHNlZSB0aGlzIGlzIGEgZHJpdmVyIGZvciBGcmVlc2NhbGUncyBGcmFtZSBNYW5hZ2VyIChGTWFuKSBFdGhlcm5ldCBNQUNzLiBIYXJkd2FyZS1zcGVjaWZpYywgZGVmaW5pdGVseS4gSXQncyB0aGF0IFFvcklRIERQQUEgRk1hbiBzdHVmZi4gVGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiBJIGZ1enogdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoZXNlIGhhcmR3YXJlLWRlcGVuZGVudCBkcml2ZXJzIGFyZSB1c3VhbGx5IGEgcGFpbiB0byBmdXp6IGRpcmVjdGx5LiBXaXRob3V0IGEgdmlydHVhbCBkZXZpY2Ugb3Igc29tZSBjbGV2ZXIgc29mdHdhcmUgcHJvYmluZywgaXQncyB0eXBpY2FsbHkgYSBuby1nby4gTGV0J3Mgc2VlIGlmIHRoZXJlIGlzIGFueSB3YXkgdG8gcmVhY2ggdGhpcyBjb2RlLiBJdCdzIGEgcGxhdGZvcm0gZHJpdmVyLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQncyBpbml0aWFsaXplZCBhbmQgdHJpZ2dlcmVkLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fZHRzZWMuY2AgYW5kIGFsc28gcHJvYmFibHkgcGVlayBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vbWFjLmNgIHRvIHNlZSBob3cgZXZlcnl0aGluZyBjb25uZWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY5OCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjIzOjM2LjY3ODM3MDc4NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjA5OTkzMTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZm1hbl9kdHNlY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vTWFrZWZpbGU9OT1mc2xfZHBhYV9mbWFuX3BvcnQtb2JqcyA6PSBmbWFuX3BvcnQub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL01ha2VmaWxlOjEwOmZzbF9kcGFhX21hYy1vYmpzOj0gbWFjLm8gZm1hbl9kdHNlYy5vIGZtYW5fbWVtYWMubyBmbWFuX3RnZWMub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9kdHNlYy5jLTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9kdHNlYy5jOjg6I2luY2x1ZGUgXFxcImZtYW5fZHRzZWMuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX2R0c2VjLmMtOS0jaW5jbHVkZSBcXFwiZm1hbi5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vbWFjLmMtMjItI2luY2x1ZGUgXFxcImZtYW5fbWFjLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vbWFjLmM6MjM6I2luY2x1ZGUgXFxcImZtYW5fZHRzZWMuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9tYWMuYy0yNC0jaW5jbHVkZSBcXFwiZm1hbl90Z2VjLmhcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjIzOjM2Ljg5OTM3NTI0MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MDU5MzMwNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEcml2ZXIncyBQb3RlbnRpYWwgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBhc3Nlc3MgdGhlIGZ1enppbmcgcG90ZW50aWFsIG9mIHRoaXMgZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gc2VlIGlmIHdlIGNhbiB0cmlnZ2VyIGEgcHJvYmUuIEl0J3MgYSBwbGF0Zm9ybSBkcml2ZXIsIHNvIGRldmljZSB0cmVlIGludGVyYWN0aW9uIGlzIHRoZSB1c3VhbCBhcHByb2FjaC4gVGhlIGJpZyBxdWVzdGlvbiBpcyB3aGV0aGVyIHN5emthbGxlciBjYW4gZWZmZWN0aXZlbHkgZnV6eiB0aGlzLiBTeXprYWxsZXIncyBkZXZpY2UgdHJlZSBjYXBhYmlsaXRpZXMgYXJlIHNvbGlkLCBidXQgcGxhdGZvcm0gZHJpdmVycyBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgU3lzdGVtLW9uLWEtQ2hpcCAobGlrZSB0aG9zZSBmb3IgRnJlZXNjYWxlIFFvcklRKSBhcmVuJ3Qgb2Z0ZW4gcHJpbWUgY2FuZGlkYXRlcyB1bmxlc3MgYW4gZW11bGF0b3IgaXMgYXZhaWxhYmxlIG9yIGl0IGhvb2tzIGludG8gYSBicm9hZGVyLCBmdXp6YWJsZSBzdWJzeXN0ZW0uIFRoZXJlIGlzIHNvbWUgcGxhdGZvcm0gZGV2aWNlIGluamVjdGlvbiBjYXBhYmlsaXR5IGluIFN5emthbGxlciwgdGhvdWdoIGl0J3MgdHlwaWNhbGx5IGxpbWl0ZWQgaW4gc2NvcGUuXG5cblRoZSBjcnVjaWFsIG5leHQgc3RlcCBpcyBmaWd1cmluZyBvdXQgcmVhY2hhYmlsaXR5LiBUbyB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIHJlZ2lzdGVycyBpdHNlbGYsIEknbGwgbmVlZCB0byBjaGVjayB0aGUgc291cmNlIGNvZGUuIExldCdzIHN0YXJ0IHdpdGggYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL21hYy5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ4NCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMToyMzo0MC42MDUzMTA1NzRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI3MTcwNTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBsYXRmb3JtX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jPTI4ODQ9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZm1hbl9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jLTI4ODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jOjI4ODY6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZm1hbl9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jLTI4ODctXFx0LmRyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYz0yODk0PXN0YXRpYyBpbnQgX19pbml0IGZtYW5fbG9hZCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jLTI4OTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jOjI5MDA6XFx0ZXJyID0gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZmbWFuX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jLTI5MDEtXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jOjI5MDI6XFx0XFx0cHJfZXJyKFxcXCJFcnJvciwgcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCkgPSAlZFxcXFxuXFxcIiwgZXJyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmMtMjkwMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYz0yOTA4PXN0YXRpYyB2b2lkIF9fZXhpdCBmbWFuX3VubG9hZCh2b2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYy0yOTA5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmM6MjkxMDpcXHRwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcihcXHUwMDI2Zm1hbl9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYy0yOTExLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fcG9ydC5jPTE4OTA9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZm1hbl9wb3J0X21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX3BvcnQuYy0xODkxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fcG9ydC5jOjE4OTI6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZm1hbl9wb3J0X2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX3BvcnQuYy0xODkzLVxcdC5kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX3BvcnQuYz0xOTAwPXN0YXRpYyBpbnQgX19pbml0IGZtYW5fcG9ydF9sb2FkKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX3BvcnQuYy0xOTA1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fcG9ydC5jOjE5MDY6XFx0ZXJyID0gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZmbWFuX3BvcnRfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX3BvcnQuYy0xOTA3LVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fcG9ydC5jOjE5MDg6XFx0XFx0cHJfZXJyKFxcXCJFcnJvciwgcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCkgPSAlZFxcXFxuXFxcIiwgZXJyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX3BvcnQuYy0xOTA5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9wb3J0LmM9MTkxND1zdGF0aWMgdm9pZCBfX2V4aXQgZm1hbl9wb3J0X3VubG9hZCh2b2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fcG9ydC5jLTE5MTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fcG9ydC5jOjE5MTY6XFx0cGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNmZtYW5fcG9ydF9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fcG9ydC5jLTE5MTctfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vbWFjLmM9MzI1PXN0YXRpYyB2b2lkIG1hY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL21hYy5jLTMzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9tYWMuYzozMzc6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbWFjX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9tYWMuYy0zMzgtXFx0LmRyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL21hYy5jLTM0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9tYWMuYzozNDY6YnVpbHRpbl9wbGF0Zm9ybV9kcml2ZXIobWFjX2RyaXZlcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjIzOjQwLjkzMjQ4NzA5NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNDE3NDYzMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGZWFzaWJpbGl0eSBvZiBGdXp6aW5nIFRoaXMgRHJpdmVyKipcblxuT2theSwgc28gdGhpcyBkcml2ZXIgaXMgYSBwbGF0Zm9ybSBkcml2ZXIsIG1lYW5pbmcgaXQgcmVsaWVzIG9uIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzIHRvIGdldCBwcm9iZWQuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgaXNzdWUsIGFzIFN5emthbGxlciBkb2Vzbid0IHVzdWFsbHkgdGFyZ2V0IGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlcnMgdW5sZXNzIHRoZXJlJ3MgYSB3YXkgdG8gZW11bGF0ZSB0aGUgaGFyZHdhcmUgb3IgaWYgdGhleSdyZSBwYXJ0IG9mIGEgZnV6emFibGUgc3Vic3lzdGVtLiBJIGtub3cgaXQgKmNhbiogaW5qZWN0IHBsYXRmb3JtIGRldmljZXMgdG8gYSBsaW1pdGVkIGRlZ3JlZSB2aWEgYHN5el9kZXZfcGxhdGZvcm1gIGFuZCB0aGUgbGlrZSwgYnV0IHRoYXQncyB2ZXJ5IHNwZWNpZmljIGFuZCBnZW5lcmFsbHkgdGFyZ2V0ZWQgYXQgdmVyeSBzZWxlY3QgZHJpdmVycy5cblxuVGhpcyBvbmUsIHRob3VnaCwgaXMgYSBGcmVlc2NhbGUgRk1hbiBkcml2ZXIuIFByYWN0aWNhbGx5IHNwZWFraW5nLCB0aGVyZSdzICpubyB3YXkqIGl0J3MgZ29pbmcgdG8gYmUgcmVhY2hhYmxlIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb3IgZXZlbiBzdGFuZGFyZCBRRU1VLCB3aXRob3V0IHNvbWUgc2VyaW91c2x5IHNwZWNpZmljIGVtdWxhdGlvbiBvZiB0aGUgRnJlZXNjYWxlIFNvQy5cblxuSG1tLCBJIHdvbmRlci4uLiBpcyB0aGVyZSAqYW55KiBRRU1VIHN1cHBvcnQgZm9yIEZyZWVzY2FsZSBGTWFuPyBRRU1VICpkb2VzKiBzdXBwb3J0IHNvbWUgUG93ZXJQQyBib2FyZHMgbGlrZSBlNTAwLCBhbmQgdGhvc2UgbWlnaHQgaGF2ZSBGTWFuLCBidXQgU3l6a2FsbGVyIGdlbmVyYWxseSBydW5zIG9uIHg4Nl82NCBvciBhcm02NCwgc28gdGhhdCdzIGEgaHVyZGxlLlxuXG5XYWl0LCBjb3VsZCBJIGV2ZW4gY29tcGlsZSB0aGlzIGRyaXZlciBvbiB4ODY/IFRoYXTigJlzIHNvbWV0aGluZyBJIG5lZWQgdG8gY2hlY2suIExldCdzIHNlZSBpZiB0aGUgS2NvbmZpZyBmaWxlIGdpdmVzIG1lIGFueSBjbHVlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk5MiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMToyMzo0Ni4xNzQyMzU1MzRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg3OTc2MzAwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRlNMX0ZNQU5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjIzOjQ2LjY2MjIyMTYzNFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMTA2MjczOTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHdlbnQ6XG5cbioqRXhhbWluaW5nIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdG8gbG9vayBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoaXMgRXRoZXJuZXQgZHJpdmVyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGhlYWQgc3RyYWlnaHQgdG8gdGhlIHNvdXJjZSwgdGhlIGBLY29uZmlnYCBmaWxlcy4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGFyZSBkZWZpbmVkLiBHaXZlbiB0aGUgbWVudGlvbiBvZiBGcmVlc2NhbGUncyBGTUFOLCBteSBmaXJzdCBndWVzcyBpcyB0aGF0IHRoZSByZWxldmFudCBmaWxlIHdpbGwgYmUgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vYCBkaXJlY3RvcnksIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBsaWtlIGEgbW9yZSBnZW5lcmFsIFwiZnJlZXNjYWxlXCIgZGlyZWN0b3J5IGlmIHRoZXkndmUgYWJzdHJhY3RlZCB0aGUgZHJpdmVyIHN0cnVjdHVyZS4gSSdsbCBzdGFydCB0aGVyZSBhbmQgc2VlIHdoYXQgSSBjYW4gZmluZC4gSXQncyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIGJlZ2luIGRpZ2dpbmcgdGhyb3VnaCB0aGUgb3B0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU2MywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjIzOjQ5LjY3Mjg1MTE4MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwNjUwMDg1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRlNMX0ZNQU5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZzoyOmNvbmZpZyBGU0xfRk1BTlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiRk1hbiBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMToyMzo1MS41NzkzNjA1MjNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk3MzcxNDE0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jaWVzIG9mIEZTTF9GTUFOKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIE15IG1pbmQgaW1tZWRpYXRlbHkgZ29lcyB0byB0aGUgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBvZiBGU0xfRk1BTi4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIGVjb3N5c3RlbS4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgXCJXaGF0IG90aGVyIG1vZHVsZXMsIGxpYnJhcmllcywgb3Igc3lzdGVtIHJlc291cmNlcyBpcyB0aGlzIHRoaW5nIHJlbHlpbmcgb24/XCIgSXMgaXQgcHJpbWFyaWx5IGEgc3RhbmRhbG9uZSBjb21wb25lbnQsIG9yIGlzIGl0IHRpZ2h0bHkgaW50ZXJ3b3ZlbiB3aXRoIG90aGVyIGNyaXRpY2FsIGluZnJhc3RydWN0dXJlPyBUaGlua2luZyBhYm91dCBpdCwgdW5kZXJzdGFuZGluZyB0aGUgbG93ZXItbGV2ZWwgZGVwZW5kZW5jaWVzIGlzIGNydWNpYWw7IHRoaXMgbWVhbnMgZGlnZ2luZyBkb3duIHRvIHRoZSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllcnMsIHRoZSB1bmRlcmx5aW5nIG9wZXJhdGluZyBzeXN0ZW0gc2VydmljZXMsIGFueSBjdXN0b20gZHJpdmVycywgYW5kIG9mIGNvdXJzZSwgYW55IHNoYXJlZCBsaWJyYXJpZXMgdGhhdCBtaWdodCBiZSBpbnZvbHZlZC4gXG5cbkknbSBhbHNvIGNvbnNpZGVyaW5nIHRoZSBwb3RlbnRpYWwgY2FzY2FkaW5nIGVmZmVjdHMgb2YgYW55IGNoYW5nZXMgdG8gRlNMX0ZNQU4uIElmIGl0IHJlbGllcyBvbiBhIHBhcnRpY3VsYXIgdmVyc2lvbiBvZiBhIGZpcm13YXJlIGNvbXBvbmVudCwgb3IgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIGEgc3RhbmRhcmQgbGlicmFyeSwgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiBhbiB1cGdyYWRlIG9yLCBHb2QgZm9yYmlkLCBhIGJhY2t3YXJkcy1pbmNvbXBhdGlibGUgY2hhbmdlIGluIHRoZSBkZXBlbmRlbmN5PyBXaGF0IGtpbmQgb2YgdGVzdGluZyBhbmQgdmFsaWRhdGlvbiB3aWxsIGJlIHJlcXVpcmVkIGluIHRoaXMgc2NlbmFyaW8/IFxuXG5GdW5jdGlvbmFsbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgbmF0dXJlIG9mIHRoZSBkYXRhIGZsb3cgYW5kIGFueSBvdGhlciBtb2R1bGVzIGludm9sdmVkIGluIGl0LiBJcyBGU0xfRk1BTiBzb2xlbHkgYSBjb25zdW1lciBvZiBpbmZvcm1hdGlvbiwgb3IgYSBwcm9kdWNlciBvciB0cmFuc2Zvcm1lciBvZiBpbmZvcm1hdGlvbi4gSSBhbHNvIGNvbnNpZGVyIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcywgc3VjaCBhcyByZWFsLXRpbWUgY29uc3RyYWludHMsIGxhdGVuY3kgY29uc2lkZXJhdGlvbnMsIGFuZCByZXF1aXJlZCB0aHJvdWdocHV0LiBUaGlzIGRpcmVjdHMgbWUgdG8gY29uc2lkZXIgcmVzb3VyY2UgY29uc3RyYWludHMgbGlrZSBtZW1vcnkgdXNhZ2UsIHByb2Nlc3NpbmcgY2FwYWNpdHksIGFuZCBuZXR3b3JrIGJhbmR3aWR0aC4gSSBhbHNvIGNvbnNpZGVyIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcyBhbmQgcmlzayBtaXRpZ2F0aW9uIGFzIGl0IHJlbGF0ZXMgdG8gRlNMX0ZNQU4ncyBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBjb21wb25lbnRzLlxuXG5Fc3NlbnRpYWxseSwgSSBuZWVkIGEgZGV0YWlsZWQgZGVwZW5kZW5jeSBncmFwaC4gVGhpcyBpc24ndCBqdXN0IGFib3V0IGNvbXBpbGluZyBhIGxpc3Q7IGl0J3MgYWJvdXQgKnVuZGVyc3RhbmRpbmcqIHRoZSByZWxhdGlvbnNoaXBzLCB0aGUgcG90ZW50aWFsIGJvdHRsZW5lY2tzLCBhbmQgdGhlIHBvaW50cyBvZiBmYWlsdXJlLiBUaGlzIGlzIGFic29sdXRlbHkga2V5IHRvIG1haW50YWluYWJpbGl0eSwgZGVidWdnaW5nLCBhbmQgYW55IGZ1dHVyZSBtb2RpZmljYXRpb25zIG9yIGludGVncmF0aW9ucyBvZiBGU0xfRk1BTi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTg4MSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjIzOjU1LjU1MzA3Njk4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1ODIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBGU0xfRk1BTlxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkZNYW4gc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gRlNMX1NPQyB8fCBBUkNIX0xBWUVSU0NBUEUgfHwgQ09NUElMRV9URVNUXFxuICAgNTpcXHRcXHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1JcXG4gICA2OlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAgNzpcXHRcXHRzZWxlY3QgUENTX0xZTlhcXG4gICA4OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgIDk6XFx0XFx0ZGVmYXVsdCBuXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHRcXHRGcmVlc2NhbGUgRGF0YS1QYXRoIEFjY2VsZXJhdGlvbiBBcmNoaXRlY3R1cmUgRnJhbWUgTWFuYWdlclxcbiAgMTI6XFx0XFx0XFx0KEZNYW4pIHN1cHBvcnRcXG4gIDEzOlxcdFxcbiAgMTQ6XFx0Y29uZmlnIERQQUFfRVJSQVRVTV9BMDUwMzg1XFxuICAxNTpcXHRcXHRib29sXFxuICAxNjpcXHRcXHRkZXBlbmRzIG9uIEFSTTY0IFxcdTAwMjZcXHUwMDI2IEZTTF9EUEFBXFxuICAxNzpcXHRcXHRkZWZhdWx0IHlcXG4gIDE4OlxcdFxcdGhlbHBcXG4gIDE5OlxcdFxcdFxcdERQQUEgRk1hbiBlcnJhdHVtIEEwNTAzODUgc29mdHdhcmUgd29ya2Fyb3VuZCBpbXBsZW1lbnRhdGlvbjpcXG4gIDIwOlxcdFxcdFxcdGFsaWduIGJ1ZmZlcnMsIGRhdGEgc3RhcnQsIFNHIGZyYWdtZW50IGxlbmd0aCB0byBhdm9pZCBGTWFuIERNQVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMToyMzo1NS41NTMxNTQ0M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODEzNDkwOTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaGluZ2VzIG9uIHRocmVlIGZhY3RvcnM6IGBGU0xfU09DYCwgYEFSQ0hfTEFZRVJTQ0FQRWAsIGFuZCBgQ09NUElMRV9URVNUYC4gWWVzLCBpdCBjYW4gYmUgY29tcGlsZWQgd2l0aCBgQ09NUElMRV9URVNUYCwgdGhhdCdzIGEgZ2l2ZW4uIEJ1dCBjYW4gaXQgYWN0dWFsbHkgKnJ1bio/IFRoYXQncyB0aGUgY3JpdGljYWwgcXVlc3Rpb24uXG5cblRoaXMgY29kZSBpcyBhIHBsYXRmb3JtIGRyaXZlciwgc3BlY2lmaWNhbGx5IG9uZSB0aGF0IGRlYWxzIHdpdGggbWVtb3J5LW1hcHBlZCByZWdpc3RlcnMuIGBpb3JlYWQzMmJlYCBhbmQgYGlvd3JpdGUzMmJlYCBhcmUgdGhlIHRlbGx0YWxlIHNpZ25zIGhlcmUuIFdpdGhvdXQgdGhlIHJlYWwgaGFyZHdhcmUgcHJlc2VudCwgb3IgYXQgbGVhc3QgYSBjb252aW5jaW5nIGVtdWxhdGlvbiwgcHJvYmluZyB0aGlzIGRyaXZlciBpcyBnb2luZyB0byByZXN1bHQgaW4gZWl0aGVyIGEgY3Jhc2ggb3IgYW4gaW1tZWRpYXRlIGZhaWx1cmUuIFN5emthbGxlciwgaW4gaXRzIGN1cnJlbnQgY29uZmlndXJhdGlvbiwgZG9lc24ndCBvZmZlciBhIHdheSB0byBzaW11bGF0ZSAqdGhpcyogc3BlY2lmaWMgaGFyZHdhcmUuIFRoZXJlZm9yZSwgZ2l2ZW4gdGhlIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoR0NFLCBRRU1VLCBldGMuKSB1c2VkIGJ5IFN5emthbGxlciwgcmVhY2hpbmcgdGhpcyBjb2RlIHBhdGggaXMgc2ltcGx5IGltcG9zc2libGUuIEknbSBsZWFuaW5nIHRvd2FyZHMgZGVjbGFyaW5nIHRoaXMgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cbkhvbGQgb24sIGxldCBtZSBkb3VibGUtY2hlY2suIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uIFRoZSBwYXRjaCBtb2RpZmllcyBgZHRzZWNfbWFjX2NvbmZpZ2AgYW5kIGBkdHNlY19saW5rX3VwYC4gVGhlc2UgYXJlIGludGVybmFsIGZ1bmN0aW9ucyBjYWxsZWQgYnkgdGhlIHBoeWxpbmsgZnJhbWV3b3JrLCB3aGljaCBpdHNlbGYgaXMgY2FsbGVkIGJ5IHRoZSBNQUMgZHJpdmVyLiBUaGUgTUFDIGRyaXZlciBpcyBwcm9iZWQgdGhyb3VnaCBgbWFjX3Byb2JlYCwgaW4gYG1hYy5jYC4gYG1hY19wcm9iZWAsIGFzIEkgcmVjYWxsLCByZXF1aXJlcyBhIHBsYXRmb3JtIGRldmljZS4gTm93LCB0aGUga2V5IGlzIHRoZSBGcmVlc2NhbGUgRk1hbiwgdGhhdCdzIHdoYXQncyBkcml2aW5nIHRoaXMgd2hvbGUgdGhpbmcuIFNpbmNlIFN5emthbGxlciBkb2Vzbid0IGhhdmUgYW55IHN0YW5kYXJkIGVtdWxhdGlvbiBmb3IgdGhhdCBoYXJkd2FyZSDigJMgYW5kIGl0J3MgYSAqc3BlY2lmaWMqIEZyZWVzY2FsZSBGTWFuIC0gdGhpcyBjb2RlIHdpbGwgbmV2ZXIgYmUgZXhlY3V0ZWQuXG5cbkFscmlnaHQsIEknbSBjb25maWRlbnQuIFRoZSBwYXRjaCB0b3VjaGVzIHRoZSBGcmVlc2NhbGUgRnJhbWUgTWFuYWdlciAoRk1hbikgRXRoZXJuZXQgTUFDIGRyaXZlci4gSXQncyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciBmb3IgRnJlZXNjYWxlIFNvQ3MuIEl0IGNhbm5vdCBiZSByZWFjaGVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIGxhY2sgb2YgaGFyZHdhcmUgZW11bGF0aW9uIHNlYWxzIHRoZSBkZWFsLiBXZSBjYW4ndCBmdXp6IHRoaXMgcmVsaWFibHkgaW4gdGhlIGN1cnJlbnQgc2V0dXAuIEknbSBjb25maXJtaW5nLCBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjYwNSwiT3V0cHV0VG9rZW5zIjo5OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjI0OjAyLjM2NjY0Nzk5M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4OTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRnJhbWUgTWFuYWdlciAoRk1hbikgRXRoZXJuZXQgTUFDIGRyaXZlci4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciBmb3IgRnJlZXNjYWxlIFNvQ3MuIEl0IGNhbm5vdCBiZSByZWFjaGVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0Ugb3IgUUVNVSkgdXNlZCBieSBzeXprYWxsZXIsIGFzIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRnJhbWUgTWFuYWdlciAoRk1hbikgRXRoZXJuZXQgTUFDIGRyaXZlci4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciBmb3IgRnJlZXNjYWxlIFNvQ3MuIEl0IGNhbm5vdCBiZSByZWFjaGVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0Ugb3IgUUVNVSkgdXNlZCBieSBzeXprYWxsZXIsIGFzIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowlvmf8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-11 10:50:40 +0000 UTC FinishedAt: 2026-07-11 11:24:04 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRnJhbWUgTWFuYWdlciAoRk1hbikgRXRoZXJuZXQgTUFDIGRyaXZlci4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciBmb3IgRnJlZXNjYWxlIFNvQ3MuIEl0IGNhbm5vdCBiZSByZWFjaGVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0Ugb3IgUUVNVSkgdXNlZCBieSBzeXprYWxsZXIsIGFzIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6MjM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBjYWIwNzNlMDRmMzkzNWNiNzU2OWI3MTE1YTYzZDkzZjZmNDIxZTRlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTEgMTE6MjM6MjggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9kdHNlYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9kdHNlYy5jXG5pbmRleCBmZTM1NzAzYzUwOWU1NS4uNzA3NWY5M2JhYjQ5MTMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX2R0c2VjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fZHRzZWMuY1xuQEAgLTkwMCwyMiAmIzQzOzkwMCwyOCBAQCBzdGF0aWMgdm9pZCBkdHNlY19tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcbiB7XG4gXHRzdHJ1Y3QgbWFjX2RldmljZSAqbWFjX2RldiA9IGZtYW5fY29uZmlnX3RvX21hYyhjb25maWcpO1xuIFx0c3RydWN0IGR0c2VjX3JlZ3MgX19pb21lbSAqcmVncyA9IG1hY19kZXYtXHUwMDNlZm1hbl9tYWMtXHUwMDNlcmVncztcbi1cdHUzMiB0bXA7XG4mIzQzO1x0dTMyIGVjbnRybCwgbWFjY2ZnMjtcbiYjNDM7XG4mIzQzO1x0bWFjY2ZnMiA9IGlvcmVhZDMyYmUoXHUwMDI2cmVncy1cdTAwM2VtYWNjZmcyKTtcbiYjNDM7XHRtYWNjZmcyIFx1MDAyNj0gfihNQUNDRkcyX05JQkJMRV9NT0RFIHwgTUFDQ0ZHMl9CWVRFX01PREUpO1xuIFxuIFx0c3dpdGNoIChzdGF0ZS1cdTAwM2VpbnRlcmZhY2UpIHtcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUk6XG4tXHRcdHRtcCA9IERUU0VDX0VDTlRSTF9STU07XG4mIzQzO1x0XHRlY250cmwgPSBEVFNFQ19FQ05UUkxfUk1NO1xuJiM0MztcdFx0bWFjY2ZnMiB8PSBNQUNDRkcyX05JQkJMRV9NT0RFO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfSUQ6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9SWElEOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRDpcbi1cdFx0dG1wID0gRFRTRUNfRUNOVFJMX0dNSUlNIHwgRFRTRUNfRUNOVFJMX1JQTTtcbiYjNDM7XHRcdGVjbnRybCA9IERUU0VDX0VDTlRSTF9HTUlJTSB8IERUU0VDX0VDTlRSTF9SUE07XG4mIzQzO1x0XHRtYWNjZmcyIHw9IE1BQ0NGRzJfQllURV9NT0RFO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYOlxuLVx0XHR0bXAgPSBEVFNFQ19FQ05UUkxfVEJJTSB8IERUU0VDX0VDTlRSTF9TR01JSU07XG4mIzQzO1x0XHRlY250cmwgPSBEVFNFQ19FQ05UUkxfVEJJTSB8IERUU0VDX0VDTlRSTF9TR01JSU07XG4mIzQzO1x0XHRtYWNjZmcyIHw9IE1BQ0NGRzJfQllURV9NT0RFO1xuIFx0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdGRldl93YXJuKG1hY19kZXYtXHUwMDNlZGV2LCBcJiMzNDtjYW5ub3QgY29uZmlndXJlIGRUU0VDIGZvciAlc1xcblwmIzM0OyxcbkBAIC05MjMsNyAmIzQzOzkyOSw4IEBAIHN0YXRpYyB2b2lkIGR0c2VjX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxuIFx0XHRyZXR1cm47XG4gXHR9XG4gXG4tXHRpb3dyaXRlMzJiZSh0bXAsIFx1MDAyNnJlZ3MtXHUwMDNlZWNudHJsKTtcbiYjNDM7XHRpb3dyaXRlMzJiZShlY250cmwsIFx1MDAyNnJlZ3MtXHUwMDNlZWNudHJsKTtcbiYjNDM7XHRpb3dyaXRlMzJiZShtYWNjZmcyLCBcdTAwMjZyZWdzLVx1MDAzZW1hY2NmZzIpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBkdHNlY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuQEAgLTk0OCwxNSAmIzQzOzk1NSwxMCBAQCBzdGF0aWMgdm9pZCBkdHNlY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuIFx0aW93cml0ZTMyYmUodG1wLCBcdTAwMjZyZWdzLVx1MDAzZWVjbnRybCk7XG4gXG4gXHR0bXAgPSBpb3JlYWQzMmJlKFx1MDAyNnJlZ3MtXHUwMDNlbWFjY2ZnMik7XG4tXHR0bXAgXHUwMDI2PSB+KE1BQ0NGRzJfTklCQkxFX01PREUgfCBNQUNDRkcyX0JZVEVfTU9ERSB8IE1BQ0NGRzJfRlVMTF9EVVBMRVgpO1xuLVx0aWYgKHNwZWVkIFx1MDAzZT0gU1BFRURfMTAwMClcbi1cdFx0dG1wIHw9IE1BQ0NGRzJfQllURV9NT0RFO1xuLVx0ZWxzZVxuLVx0XHR0bXAgfD0gTUFDQ0ZHMl9OSUJCTEVfTU9ERTtcbi1cbiBcdGlmIChkdXBsZXggPT0gRFVQTEVYX0ZVTEwpXG4gXHRcdHRtcCB8PSBNQUNDRkcyX0ZVTExfRFVQTEVYO1xuLVxuJiM0MztcdGVsc2VcbiYjNDM7XHRcdHRtcCBcdTAwMjY9IH5NQUNDRkcyX0ZVTExfRFVQTEVYO1xuIFx0aW93cml0ZTMyYmUodG1wLCBcdTAwMjZyZWdzLVx1MDAzZW1hY2NmZzIpO1xuIFxuIFx0bWFjX2Rldi1cdTAwM2V1cGRhdGVfc3BlZWQobWFjX2Rldiwgc3BlZWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjIzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRnJhbWUgTWFuYWdlciAoRk1hbikgRXRoZXJuZXQgTUFDIGRyaXZlci4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciBmb3IgRnJlZXNjYWxlIFNvQ3MuIEl0IGNhbm5vdCBiZSByZWFjaGVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0Ugb3IgUUVNVSkgdXNlZCBieSBzeXprYWxsZXIsIGFzIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGNhYjA3M2UwNGYzOTM1Y2I3NTY5YjcxMTVhNjNkOTNmNmY0MjFlNGUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAxMSAxMToyMzoyOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fZHRzZWMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fZHRzZWMuYwppbmRleCBmZTM1NzAzYzUwOWU1NS4uNzA3NWY5M2JhYjQ5MTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fZHRzZWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX2R0c2VjLmMKQEAgLTkwMCwyMiAmIzQzOzkwMCwyOCBAQCBzdGF0aWMgdm9pZCBkdHNlY19tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSwKIHsKIAlzdHJ1Y3QgbWFjX2RldmljZSAqbWFjX2RldiA9IGZtYW5fY29uZmlnX3RvX21hYyhjb25maWcpOwogCXN0cnVjdCBkdHNlY19yZWdzIF9faW9tZW0gKnJlZ3MgPSBtYWNfZGV2LSZndDtmbWFuX21hYy0mZ3Q7cmVnczsKLQl1MzIgdG1wOwomIzQzOwl1MzIgZWNudHJsLCBtYWNjZmcyOwomIzQzOwomIzQzOwltYWNjZmcyID0gaW9yZWFkMzJiZSgmYW1wO3JlZ3MtJmd0O21hY2NmZzIpOwomIzQzOwltYWNjZmcyICZhbXA7PSB+KE1BQ0NGRzJfTklCQkxFX01PREUgfCBNQUNDRkcyX0JZVEVfTU9ERSk7CiAKIAlzd2l0Y2ggKHN0YXRlLSZndDtpbnRlcmZhY2UpIHsKIAljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9STUlJOgotCQl0bXAgPSBEVFNFQ19FQ05UUkxfUk1NOwomIzQzOwkJZWNudHJsID0gRFRTRUNfRUNOVFJMX1JNTTsKJiM0MzsJCW1hY2NmZzIgfD0gTUFDQ0ZHMl9OSUJCTEVfTU9ERTsKIAkJYnJlYWs7CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfSUQ6CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfUlhJRDoKIAljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9UWElEOgotCQl0bXAgPSBEVFNFQ19FQ05UUkxfR01JSU0gfCBEVFNFQ19FQ05UUkxfUlBNOwomIzQzOwkJZWNudHJsID0gRFRTRUNfRUNOVFJMX0dNSUlNIHwgRFRTRUNfRUNOVFJMX1JQTTsKJiM0MzsJCW1hY2NmZzIgfD0gTUFDQ0ZHMl9CWVRFX01PREU7CiAJCWJyZWFrOwogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOgogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWDoKIAljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVg6Ci0JCXRtcCA9IERUU0VDX0VDTlRSTF9UQklNIHwgRFRTRUNfRUNOVFJMX1NHTUlJTTsKJiM0MzsJCWVjbnRybCA9IERUU0VDX0VDTlRSTF9UQklNIHwgRFRTRUNfRUNOVFJMX1NHTUlJTTsKJiM0MzsJCW1hY2NmZzIgfD0gTUFDQ0ZHMl9CWVRFX01PREU7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCWRldl93YXJuKG1hY19kZXYtJmd0O2RldiwgJiMzNDtjYW5ub3QgY29uZmlndXJlIGRUU0VDIGZvciAlc1xuJiMzNDssCkBAIC05MjMsNyAmIzQzOzkyOSw4IEBAIHN0YXRpYyB2b2lkIGR0c2VjX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLAogCQlyZXR1cm47CiAJfQogCi0JaW93cml0ZTMyYmUodG1wLCAmYW1wO3JlZ3MtJmd0O2VjbnRybCk7CiYjNDM7CWlvd3JpdGUzMmJlKGVjbnRybCwgJmFtcDtyZWdzLSZndDtlY250cmwpOwomIzQzOwlpb3dyaXRlMzJiZShtYWNjZmcyLCAmYW1wO3JlZ3MtJmd0O21hY2NmZzIpOwogfQogCiBzdGF0aWMgdm9pZCBkdHNlY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LApAQCAtOTQ4LDE1ICYjNDM7OTU1LDEwIEBAIHN0YXRpYyB2b2lkIGR0c2VjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksCiAJaW93cml0ZTMyYmUodG1wLCAmYW1wO3JlZ3MtJmd0O2VjbnRybCk7CiAKIAl0bXAgPSBpb3JlYWQzMmJlKCZhbXA7cmVncy0mZ3Q7bWFjY2ZnMik7Ci0JdG1wICZhbXA7PSB+KE1BQ0NGRzJfTklCQkxFX01PREUgfCBNQUNDRkcyX0JZVEVfTU9ERSB8IE1BQ0NGRzJfRlVMTF9EVVBMRVgpOwotCWlmIChzcGVlZCAmZ3Q7PSBTUEVFRF8xMDAwKQotCQl0bXAgfD0gTUFDQ0ZHMl9CWVRFX01PREU7Ci0JZWxzZQotCQl0bXAgfD0gTUFDQ0ZHMl9OSUJCTEVfTU9ERTsKLQogCWlmIChkdXBsZXggPT0gRFVQTEVYX0ZVTEwpCiAJCXRtcCB8PSBNQUNDRkcyX0ZVTExfRFVQTEVYOwotCiYjNDM7CWVsc2UKJiM0MzsJCXRtcCAmYW1wOz0gfk1BQ0NGRzJfRlVMTF9EVVBMRVg7CiAJaW93cml0ZTMyYmUodG1wLCAmYW1wO3JlZ3MtJmd0O21hY2NmZzIpOwogCiAJbWFjX2Rldi0mZ3Q7dXBkYXRlX3NwZWVkKG1hY19kZXYsIHNwZWVkKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY5OAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBGcmVlc2NhbGUgRk1hbiBFdGhlcm5ldCBNQUMgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fZHRzZWMuY2AsIHNwZWNpZmljYWxseSB0aGUgYGR0c2VjX21hY19jb25maWdgIGFuZCBgZHRzZWNfbGlua191cGAgZnVuY3Rpb25zLiBSaWdodCBhd2F5LCBJIHNlZSB0aGlzIGlzIGEgZHJpdmVyIGZvciBGcmVlc2NhbGUmIzM5O3MgRnJhbWUgTWFuYWdlciAoRk1hbikgRXRoZXJuZXQgTUFDcy4gSGFyZHdhcmUtc3BlY2lmaWMsIGRlZmluaXRlbHkuIEl0JiMzOTtzIHRoYXQgUW9ySVEgRFBBQSBGTWFuIHN0dWZmLiBUaGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIEkgZnV6eiB0aGlzIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IE15IGV4cGVyaWVuY2UgdGVsbHMgbWUgdGhlc2UgaGFyZHdhcmUtZGVwZW5kZW50IGRyaXZlcnMgYXJlIHVzdWFsbHkgYSBwYWluIHRvIGZ1enogZGlyZWN0bHkuIFdpdGhvdXQgYSB2aXJ0dWFsIGRldmljZSBvciBzb21lIGNsZXZlciBzb2Z0d2FyZSBwcm9iaW5nLCBpdCYjMzk7cyB0eXBpY2FsbHkgYSBuby1nby4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBpcyBhbnkgd2F5IHRvIHJlYWNoIHRoaXMgY29kZS4gSXQmIzM5O3MgYSBwbGF0Zm9ybSBkcml2ZXIsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBpdCYjMzk7cyBpbml0aWFsaXplZCBhbmQgdHJpZ2dlcmVkLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX2R0c2VjLmNgIGFuZCBhbHNvIHByb2JhYmx5IHBlZWsgYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL21hYy5jYCB0byBzZWUgaG93IGV2ZXJ5dGhpbmcgY29ubmVjdHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zm1hbl9kdHNlYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9NYWtlZmlsZT05PWZzbF9kcGFhX2ZtYW5fcG9ydC1vYmpzIDo9IGZtYW5fcG9ydC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9NYWtlZmlsZToxMDpmc2xfZHBhYV9tYWMtb2Jqczo9IG1hYy5vIGZtYW5fZHRzZWMubyBmbWFuX21lbWFjLm8gZm1hbl90Z2VjLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX2R0c2VjLmMtNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fZHRzZWMuYzo4OiNpbmNsdWRlIFwmIzM0O2ZtYW5fZHRzZWMuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9kdHNlYy5jLTktI2luY2x1ZGUgXCYjMzQ7Zm1hbi5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vbWFjLmMtMjItI2luY2x1ZGUgXCYjMzQ7Zm1hbl9tYWMuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vbWFjLmM6MjM6I2luY2x1ZGUgXCYjMzQ7Zm1hbl9kdHNlYy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9tYWMuYy0yNC0jaW5jbHVkZSBcJiMzNDtmbWFuX3RnZWMuaFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0ODQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBEcml2ZXImIzM5O3MgUG90ZW50aWFsIGZvciBGdXp6aW5nKioKCk9rYXksIGxldCYjMzk7cyBhc3Nlc3MgdGhlIGZ1enppbmcgcG90ZW50aWFsIG9mIHRoaXMgZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gc2VlIGlmIHdlIGNhbiB0cmlnZ2VyIGEgcHJvYmUuIEl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyLCBzbyBkZXZpY2UgdHJlZSBpbnRlcmFjdGlvbiBpcyB0aGUgdXN1YWwgYXBwcm9hY2guIFRoZSBiaWcgcXVlc3Rpb24gaXMgd2hldGhlciBzeXprYWxsZXIgY2FuIGVmZmVjdGl2ZWx5IGZ1enogdGhpcy4gU3l6a2FsbGVyJiMzOTtzIGRldmljZSB0cmVlIGNhcGFiaWxpdGllcyBhcmUgc29saWQsIGJ1dCBwbGF0Zm9ybSBkcml2ZXJzIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBTeXN0ZW0tb24tYS1DaGlwIChsaWtlIHRob3NlIGZvciBGcmVlc2NhbGUgUW9ySVEpIGFyZW4mIzM5O3Qgb2Z0ZW4gcHJpbWUgY2FuZGlkYXRlcyB1bmxlc3MgYW4gZW11bGF0b3IgaXMgYXZhaWxhYmxlIG9yIGl0IGhvb2tzIGludG8gYSBicm9hZGVyLCBmdXp6YWJsZSBzdWJzeXN0ZW0uIFRoZXJlIGlzIHNvbWUgcGxhdGZvcm0gZGV2aWNlIGluamVjdGlvbiBjYXBhYmlsaXR5IGluIFN5emthbGxlciwgdGhvdWdoIGl0JiMzOTtzIHR5cGljYWxseSBsaW1pdGVkIGluIHNjb3BlLgoKVGhlIGNydWNpYWwgbmV4dCBzdGVwIGlzIGZpZ3VyaW5nIG91dCByZWFjaGFiaWxpdHkuIFRvIHVuZGVyc3RhbmQgaG93IHRoZSBkcml2ZXIgcmVnaXN0ZXJzIGl0c2VsZiwgSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgc291cmNlIGNvZGUuIExldCYjMzk7cyBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9tYWMuY2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGxhdGZvcm1fZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYz0yODg0PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGZtYW5fbWF0Y2gpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jLTI4ODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmM6Mjg4NjpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBmbWFuX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYy0yODg3LVx0LmRyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmM9Mjg5ND1zdGF0aWMgaW50IF9faW5pdCBmbWFuX2xvYWQodm9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmMtMjg5OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYzoyOTAwOlx0ZXJyID0gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKFx1MDAyNmZtYW5fZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYy0yOTAxLVx0aWYgKGVyciBcdTAwM2MgMClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYzoyOTAyOlx0XHRwcl9lcnIoXCYjMzQ7RXJyb3IsIHBsYXRmb3JtX2RyaXZlcl9yZWdpc3RlcigpID0gJWRcXG5cJiMzNDssIGVycik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmMtMjkwMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmM9MjkwOD1zdGF0aWMgdm9pZCBfX2V4aXQgZm1hbl91bmxvYWQodm9pZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYy0yOTA5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYzoyOTEwOlx0cGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2Zm1hbl9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jLTI5MTEtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fcG9ydC5jPTE4OTA9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZm1hbl9wb3J0X21hdGNoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fcG9ydC5jLTE4OTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX3BvcnQuYzoxODkyOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGZtYW5fcG9ydF9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX3BvcnQuYy0xODkzLVx0LmRyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX3BvcnQuYz0xOTAwPXN0YXRpYyBpbnQgX19pbml0IGZtYW5fcG9ydF9sb2FkKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9wb3J0LmMtMTkwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fcG9ydC5jOjE5MDY6XHRlcnIgPSBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoXHUwMDI2Zm1hbl9wb3J0X2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX3BvcnQuYy0xOTA3LVx0aWYgKGVyciBcdTAwM2MgMClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fcG9ydC5jOjE5MDg6XHRcdHByX2VycihcJiMzNDtFcnJvciwgcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCkgPSAlZFxcblwmIzM0OywgZXJyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fcG9ydC5jLTE5MDktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9wb3J0LmM9MTkxND1zdGF0aWMgdm9pZCBfX2V4aXQgZm1hbl9wb3J0X3VubG9hZCh2b2lkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9wb3J0LmMtMTkxNS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX3BvcnQuYzoxOTE2Olx0cGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2Zm1hbl9wb3J0X2RyaXZlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX3BvcnQuYy0xOTE3LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9tYWMuYz0zMjU9c3RhdGljIHZvaWQgbWFjX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL21hYy5jLTMzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL21hYy5jOjMzNzpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBtYWNfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vbWFjLmMtMzM4LVx0LmRyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9tYWMuYy0zNDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9tYWMuYzozNDY6YnVpbHRpbl9wbGF0Zm9ybV9kcml2ZXIobWFjX2RyaXZlcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk5MgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEZlYXNpYmlsaXR5IG9mIEZ1enppbmcgVGhpcyBEcml2ZXIqKgoKT2theSwgc28gdGhpcyBkcml2ZXIgaXMgYSBwbGF0Zm9ybSBkcml2ZXIsIG1lYW5pbmcgaXQgcmVsaWVzIG9uIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzIHRvIGdldCBwcm9iZWQuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgaXNzdWUsIGFzIFN5emthbGxlciBkb2VzbiYjMzk7dCB1c3VhbGx5IHRhcmdldCBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXJzIHVubGVzcyB0aGVyZSYjMzk7cyBhIHdheSB0byBlbXVsYXRlIHRoZSBoYXJkd2FyZSBvciBpZiB0aGV5JiMzOTtyZSBwYXJ0IG9mIGEgZnV6emFibGUgc3Vic3lzdGVtLiBJIGtub3cgaXQgKmNhbiogaW5qZWN0IHBsYXRmb3JtIGRldmljZXMgdG8gYSBsaW1pdGVkIGRlZ3JlZSB2aWEgYHN5el9kZXZfcGxhdGZvcm1gIGFuZCB0aGUgbGlrZSwgYnV0IHRoYXQmIzM5O3MgdmVyeSBzcGVjaWZpYyBhbmQgZ2VuZXJhbGx5IHRhcmdldGVkIGF0IHZlcnkgc2VsZWN0IGRyaXZlcnMuCgpUaGlzIG9uZSwgdGhvdWdoLCBpcyBhIEZyZWVzY2FsZSBGTWFuIGRyaXZlci4gUHJhY3RpY2FsbHkgc3BlYWtpbmcsIHRoZXJlJiMzOTtzICpubyB3YXkqIGl0JiMzOTtzIGdvaW5nIHRvIGJlIHJlYWNoYWJsZSBpbiBhIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIGV2ZW4gc3RhbmRhcmQgUUVNVSwgd2l0aG91dCBzb21lIHNlcmlvdXNseSBzcGVjaWZpYyBlbXVsYXRpb24gb2YgdGhlIEZyZWVzY2FsZSBTb0MuCgpIbW0sIEkgd29uZGVyLi4uIGlzIHRoZXJlICphbnkqIFFFTVUgc3VwcG9ydCBmb3IgRnJlZXNjYWxlIEZNYW4/IFFFTVUgKmRvZXMqIHN1cHBvcnQgc29tZSBQb3dlclBDIGJvYXJkcyBsaWtlIGU1MDAsIGFuZCB0aG9zZSBtaWdodCBoYXZlIEZNYW4sIGJ1dCBTeXprYWxsZXIgZ2VuZXJhbGx5IHJ1bnMgb24geDg2XzY0IG9yIGFybTY0LCBzbyB0aGF0JiMzOTtzIGEgaHVyZGxlLgoKV2FpdCwgY291bGQgSSBldmVuIGNvbXBpbGUgdGhpcyBkcml2ZXIgb24geDg2PyBUaGF04oCZcyBzb21ldGhpbmcgSSBuZWVkIHRvIGNoZWNrLiBMZXQmIzM5O3Mgc2VlIGlmIHRoZSBLY29uZmlnIGZpbGUgZ2l2ZXMgbWUgYW55IGNsdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEZTTF9GTUFOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1NjMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHdlbnQ6CgoqKkV4YW1pbmluZyBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0byBsb29rIGZvciB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhpcyBFdGhlcm5ldCBkcml2ZXIuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gaGVhZCBzdHJhaWdodCB0byB0aGUgc291cmNlLCB0aGUgYEtjb25maWdgIGZpbGVzLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGFyZSBkZWZpbmVkLiBHaXZlbiB0aGUgbWVudGlvbiBvZiBGcmVlc2NhbGUmIzM5O3MgRk1BTiwgbXkgZmlyc3QgZ3Vlc3MgaXMgdGhhdCB0aGUgcmVsZXZhbnQgZmlsZSB3aWxsIGJlIHdpdGhpbiB0aGUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2AgZGlyZWN0b3J5LCBvciBzb21ldGhpbmcgc2ltaWxhciwgbGlrZSBhIG1vcmUgZ2VuZXJhbCAmIzM0O2ZyZWVzY2FsZSYjMzQ7IGRpcmVjdG9yeSBpZiB0aGV5JiMzOTt2ZSBhYnN0cmFjdGVkIHRoZSBkcml2ZXIgc3RydWN0dXJlLiBJJiMzOTtsbCBzdGFydCB0aGVyZSBhbmQgc2VlIHdoYXQgSSBjYW4gZmluZC4gSXQmIzM5O3MgdGhlIG1vc3QgbG9naWNhbCBwbGFjZSB0byBiZWdpbiBkaWdnaW5nIHRocm91Z2ggdGhlIG9wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBGU0xfRk1BTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZzoyOmNvbmZpZyBGU0xfRk1BTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7Rk1hbiBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4ODEKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmNpZXMgb2YgRlNMX0ZNQU4qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGdvZXMgdG8gdGhlIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgb2YgRlNMX0ZNQU4uIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyBlY29zeXN0ZW0uIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsICYjMzQ7V2hhdCBvdGhlciBtb2R1bGVzLCBsaWJyYXJpZXMsIG9yIHN5c3RlbSByZXNvdXJjZXMgaXMgdGhpcyB0aGluZyByZWx5aW5nIG9uPyYjMzQ7IElzIGl0IHByaW1hcmlseSBhIHN0YW5kYWxvbmUgY29tcG9uZW50LCBvciBpcyBpdCB0aWdodGx5IGludGVyd292ZW4gd2l0aCBvdGhlciBjcml0aWNhbCBpbmZyYXN0cnVjdHVyZT8gVGhpbmtpbmcgYWJvdXQgaXQsIHVuZGVyc3RhbmRpbmcgdGhlIGxvd2VyLWxldmVsIGRlcGVuZGVuY2llcyBpcyBjcnVjaWFsOyB0aGlzIG1lYW5zIGRpZ2dpbmcgZG93biB0byB0aGUgaGFyZHdhcmUgYWJzdHJhY3Rpb24gbGF5ZXJzLCB0aGUgdW5kZXJseWluZyBvcGVyYXRpbmcgc3lzdGVtIHNlcnZpY2VzLCBhbnkgY3VzdG9tIGRyaXZlcnMsIGFuZCBvZiBjb3Vyc2UsIGFueSBzaGFyZWQgbGlicmFyaWVzIHRoYXQgbWlnaHQgYmUgaW52b2x2ZWQuIAoKSSYjMzk7bSBhbHNvIGNvbnNpZGVyaW5nIHRoZSBwb3RlbnRpYWwgY2FzY2FkaW5nIGVmZmVjdHMgb2YgYW55IGNoYW5nZXMgdG8gRlNMX0ZNQU4uIElmIGl0IHJlbGllcyBvbiBhIHBhcnRpY3VsYXIgdmVyc2lvbiBvZiBhIGZpcm13YXJlIGNvbXBvbmVudCwgb3IgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIGEgc3RhbmRhcmQgbGlicmFyeSwgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiBhbiB1cGdyYWRlIG9yLCBHb2QgZm9yYmlkLCBhIGJhY2t3YXJkcy1pbmNvbXBhdGlibGUgY2hhbmdlIGluIHRoZSBkZXBlbmRlbmN5PyBXaGF0IGtpbmQgb2YgdGVzdGluZyBhbmQgdmFsaWRhdGlvbiB3aWxsIGJlIHJlcXVpcmVkIGluIHRoaXMgc2NlbmFyaW8/IAoKRnVuY3Rpb25hbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBuYXR1cmUgb2YgdGhlIGRhdGEgZmxvdyBhbmQgYW55IG90aGVyIG1vZHVsZXMgaW52b2x2ZWQgaW4gaXQuIElzIEZTTF9GTUFOIHNvbGVseSBhIGNvbnN1bWVyIG9mIGluZm9ybWF0aW9uLCBvciBhIHByb2R1Y2VyIG9yIHRyYW5zZm9ybWVyIG9mIGluZm9ybWF0aW9uLiBJIGFsc28gY29uc2lkZXIgcGVyZm9ybWFuY2UgY2hhcmFjdGVyaXN0aWNzLCBzdWNoIGFzIHJlYWwtdGltZSBjb25zdHJhaW50cywgbGF0ZW5jeSBjb25zaWRlcmF0aW9ucywgYW5kIHJlcXVpcmVkIHRocm91Z2hwdXQuIFRoaXMgZGlyZWN0cyBtZSB0byBjb25zaWRlciByZXNvdXJjZSBjb25zdHJhaW50cyBsaWtlIG1lbW9yeSB1c2FnZSwgcHJvY2Vzc2luZyBjYXBhY2l0eSwgYW5kIG5ldHdvcmsgYmFuZHdpZHRoLiBJIGFsc28gY29uc2lkZXIgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIGFuZCByaXNrIG1pdGlnYXRpb24gYXMgaXQgcmVsYXRlcyB0byBGU0xfRk1BTiYjMzk7cyBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBjb21wb25lbnRzLgoKRXNzZW50aWFsbHksIEkgbmVlZCBhIGRldGFpbGVkIGRlcGVuZGVuY3kgZ3JhcGguIFRoaXMgaXNuJiMzOTt0IGp1c3QgYWJvdXQgY29tcGlsaW5nIGEgbGlzdDsgaXQmIzM5O3MgYWJvdXQgKnVuZGVyc3RhbmRpbmcqIHRoZSByZWxhdGlvbnNoaXBzLCB0aGUgcG90ZW50aWFsIGJvdHRsZW5lY2tzLCBhbmQgdGhlIHBvaW50cyBvZiBmYWlsdXJlLiBUaGlzIGlzIGFic29sdXRlbHkga2V5IHRvIG1haW50YWluYWJpbGl0eSwgZGVidWdnaW5nLCBhbmQgYW55IGZ1dHVyZSBtb2RpZmljYXRpb25zIG9yIGludGVncmF0aW9ucyBvZiBGU0xfRk1BTi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIEZTTF9GTUFOXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtGTWFuIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gRlNMX1NPQyB8fCBBUkNIX0xBWUVSU0NBUEUgfHwgQ09NUElMRV9URVNUXG4gICA1Olx0XHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1JcbiAgIDY6XHRcdHNlbGVjdCBQSFlMSU5LXG4gICA3Olx0XHRzZWxlY3QgUENTX0xZTlhcbiAgIDg6XHRcdHNlbGVjdCBDUkMzMlxuICAgOTpcdFx0ZGVmYXVsdCBuXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHRcdEZyZWVzY2FsZSBEYXRhLVBhdGggQWNjZWxlcmF0aW9uIEFyY2hpdGVjdHVyZSBGcmFtZSBNYW5hZ2VyXG4gIDEyOlx0XHRcdChGTWFuKSBzdXBwb3J0XG4gIDEzOlx0XG4gIDE0Olx0Y29uZmlnIERQQUFfRVJSQVRVTV9BMDUwMzg1XG4gIDE1Olx0XHRib29sXG4gIDE2Olx0XHRkZXBlbmRzIG9uIEFSTTY0IFx1MDAyNlx1MDAyNiBGU0xfRFBBQVxuICAxNzpcdFx0ZGVmYXVsdCB5XG4gIDE4Olx0XHRoZWxwXG4gIDE5Olx0XHRcdERQQUEgRk1hbiBlcnJhdHVtIEEwNTAzODUgc29mdHdhcmUgd29ya2Fyb3VuZCBpbXBsZW1lbnRhdGlvbjpcbiAgMjA6XHRcdFx0YWxpZ24gYnVmZmVycywgZGF0YSBzdGFydCwgU0cgZnJhZ21lbnQgbGVuZ3RoIHRvIGF2b2lkIEZNYW4gRE1BXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MDUKCQkJCQkJCW91dHB1dDogOTgKCQkJCQkJCXRob3VnaHRzOiAzMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIEFzc2Vzc21lbnQqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGhpbmdlcyBvbiB0aHJlZSBmYWN0b3JzOiBgRlNMX1NPQ2AsIGBBUkNIX0xBWUVSU0NBUEVgLCBhbmQgYENPTVBJTEVfVEVTVGAuIFllcywgaXQgY2FuIGJlIGNvbXBpbGVkIHdpdGggYENPTVBJTEVfVEVTVGAsIHRoYXQmIzM5O3MgYSBnaXZlbi4gQnV0IGNhbiBpdCBhY3R1YWxseSAqcnVuKj8gVGhhdCYjMzk7cyB0aGUgY3JpdGljYWwgcXVlc3Rpb24uCgpUaGlzIGNvZGUgaXMgYSBwbGF0Zm9ybSBkcml2ZXIsIHNwZWNpZmljYWxseSBvbmUgdGhhdCBkZWFscyB3aXRoIG1lbW9yeS1tYXBwZWQgcmVnaXN0ZXJzLiBgaW9yZWFkMzJiZWAgYW5kIGBpb3dyaXRlMzJiZWAgYXJlIHRoZSB0ZWxsdGFsZSBzaWducyBoZXJlLiBXaXRob3V0IHRoZSByZWFsIGhhcmR3YXJlIHByZXNlbnQsIG9yIGF0IGxlYXN0IGEgY29udmluY2luZyBlbXVsYXRpb24sIHByb2JpbmcgdGhpcyBkcml2ZXIgaXMgZ29pbmcgdG8gcmVzdWx0IGluIGVpdGhlciBhIGNyYXNoIG9yIGFuIGltbWVkaWF0ZSBmYWlsdXJlLiBTeXprYWxsZXIsIGluIGl0cyBjdXJyZW50IGNvbmZpZ3VyYXRpb24sIGRvZXNuJiMzOTt0IG9mZmVyIGEgd2F5IHRvIHNpbXVsYXRlICp0aGlzKiBzcGVjaWZpYyBoYXJkd2FyZS4gVGhlcmVmb3JlLCBnaXZlbiB0aGUgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChHQ0UsIFFFTVUsIGV0Yy4pIHVzZWQgYnkgU3l6a2FsbGVyLCByZWFjaGluZyB0aGlzIGNvZGUgcGF0aCBpcyBzaW1wbHkgaW1wb3NzaWJsZS4gSSYjMzk7bSBsZWFuaW5nIHRvd2FyZHMgZGVjbGFyaW5nIHRoaXMgYFdvcnRoRnV6emluZz1mYWxzZWAuCgpIb2xkIG9uLCBsZXQgbWUgZG91YmxlLWNoZWNrLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGR0c2VjX21hY19jb25maWdgIGFuZCBgZHRzZWNfbGlua191cGAuIFRoZXNlIGFyZSBpbnRlcm5hbCBmdW5jdGlvbnMgY2FsbGVkIGJ5IHRoZSBwaHlsaW5rIGZyYW1ld29yaywgd2hpY2ggaXRzZWxmIGlzIGNhbGxlZCBieSB0aGUgTUFDIGRyaXZlci4gVGhlIE1BQyBkcml2ZXIgaXMgcHJvYmVkIHRocm91Z2ggYG1hY19wcm9iZWAsIGluIGBtYWMuY2AuIGBtYWNfcHJvYmVgLCBhcyBJIHJlY2FsbCwgcmVxdWlyZXMgYSBwbGF0Zm9ybSBkZXZpY2UuIE5vdywgdGhlIGtleSBpcyB0aGUgRnJlZXNjYWxlIEZNYW4sIHRoYXQmIzM5O3Mgd2hhdCYjMzk7cyBkcml2aW5nIHRoaXMgd2hvbGUgdGhpbmcuIFNpbmNlIFN5emthbGxlciBkb2VzbiYjMzk7dCBoYXZlIGFueSBzdGFuZGFyZCBlbXVsYXRpb24gZm9yIHRoYXQgaGFyZHdhcmUg4oCTIGFuZCBpdCYjMzk7cyBhICpzcGVjaWZpYyogRnJlZXNjYWxlIEZNYW4gLSB0aGlzIGNvZGUgd2lsbCBuZXZlciBiZSBleGVjdXRlZC4KCkFscmlnaHQsIEkmIzM5O20gY29uZmlkZW50LiBUaGUgcGF0Y2ggdG91Y2hlcyB0aGUgRnJlZXNjYWxlIEZyYW1lIE1hbmFnZXIgKEZNYW4pIEV0aGVybmV0IE1BQyBkcml2ZXIuIEl0JiMzOTtzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIGZvciBGcmVlc2NhbGUgU29Dcy4gSXQgY2Fubm90IGJlIHJlYWNoZWQgb3IgZXhlY3V0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgbGFjayBvZiBoYXJkd2FyZSBlbXVsYXRpb24gc2VhbHMgdGhlIGRlYWwuIFdlIGNhbiYjMzk7dCBmdXp6IHRoaXMgcmVsaWFibHkgaW4gdGhlIGN1cnJlbnQgc2V0dXAuIEkmIzM5O20gY29uZmlybWluZywgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDExOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBGcmFtZSBNYW5hZ2VyIChGTWFuKSBFdGhlcm5ldCBNQUMgZHJpdmVyLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIGZvciBGcmVlc2NhbGUgU29Dcy4gSXQgY2Fubm90IGJlIHJlYWNoZWQgb3IgZXhlY3V0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VKSB1c2VkIGJ5IHN5emthbGxlciwgYXMgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGhhcmR3YXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBGcmFtZSBNYW5hZ2VyIChGTWFuKSBFdGhlcm5ldCBNQUMgZHJpdmVyLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgcGxhdGZvcm0gZHJpdmVyIGZvciBGcmVlc2NhbGUgU29Dcy4gSXQgY2Fubm90IGJlIHJlYWNoZWQgb3IgZXhlY3V0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSBvciBRRU1VKSB1c2VkIGJ5IHN5emthbGxlciwgYXMgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIHNwZWNpZmljIGhhcmR3YXJlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjIzOjMwLjYzMjAyMzMxNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxNzM0Njc1MDU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRnJlZXNjYWxlIEZyYW1lIE1hbmFnZXIgKEZNYW4pIEV0aGVybmV0IE1BQyBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgZm9yIEZyZWVzY2FsZSBTb0NzLiBJdCBjYW5ub3QgYmUgcmVhY2hlZCBvciBleGVjdXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUpIHVzZWQgYnkgc3l6a2FsbGVyLCBhcyB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMToyMzozMC42MzIwMjgyODRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNTkzNTY1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGNhYjA3M2UwNGYzOTM1Y2I3NTY5YjcxMTVhNjNkOTNmNmY0MjFlNGVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdWwgMTEgMTE6MjM6MjggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9kdHNlYy5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9kdHNlYy5jXFxuaW5kZXggZmUzNTcwM2M1MDllNTUuLjcwNzVmOTNiYWI0OTEzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fZHRzZWMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fZHRzZWMuY1xcbkBAIC05MDAsMjIgKzkwMCwyOCBAQCBzdGF0aWMgdm9pZCBkdHNlY19tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcXG4ge1xcbiBcXHRzdHJ1Y3QgbWFjX2RldmljZSAqbWFjX2RldiA9IGZtYW5fY29uZmlnX3RvX21hYyhjb25maWcpO1xcbiBcXHRzdHJ1Y3QgZHRzZWNfcmVncyBfX2lvbWVtICpyZWdzID0gbWFjX2Rldi1cXHUwMDNlZm1hbl9tYWMtXFx1MDAzZXJlZ3M7XFxuLVxcdHUzMiB0bXA7XFxuK1xcdHUzMiBlY250cmwsIG1hY2NmZzI7XFxuK1xcbitcXHRtYWNjZmcyID0gaW9yZWFkMzJiZShcXHUwMDI2cmVncy1cXHUwMDNlbWFjY2ZnMik7XFxuK1xcdG1hY2NmZzIgXFx1MDAyNj0gfihNQUNDRkcyX05JQkJMRV9NT0RFIHwgTUFDQ0ZHMl9CWVRFX01PREUpO1xcbiBcXG4gXFx0c3dpdGNoIChzdGF0ZS1cXHUwMDNlaW50ZXJmYWNlKSB7XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUk6XFxuLVxcdFxcdHRtcCA9IERUU0VDX0VDTlRSTF9STU07XFxuK1xcdFxcdGVjbnRybCA9IERUU0VDX0VDTlRSTF9STU07XFxuK1xcdFxcdG1hY2NmZzIgfD0gTUFDQ0ZHMl9OSUJCTEVfTU9ERTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9JRDpcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfUlhJRDpcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRDpcXG4tXFx0XFx0dG1wID0gRFRTRUNfRUNOVFJMX0dNSUlNIHwgRFRTRUNfRUNOVFJMX1JQTTtcXG4rXFx0XFx0ZWNudHJsID0gRFRTRUNfRUNOVFJMX0dNSUlNIHwgRFRTRUNfRUNOVFJMX1JQTTtcXG4rXFx0XFx0bWFjY2ZnMiB8PSBNQUNDRkcyX0JZVEVfTU9ERTtcXG4gXFx0XFx0YnJlYWs7XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMDAwQkFTRVg6XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWDpcXG4tXFx0XFx0dG1wID0gRFRTRUNfRUNOVFJMX1RCSU0gfCBEVFNFQ19FQ05UUkxfU0dNSUlNO1xcbitcXHRcXHRlY250cmwgPSBEVFNFQ19FQ05UUkxfVEJJTSB8IERUU0VDX0VDTlRSTF9TR01JSU07XFxuK1xcdFxcdG1hY2NmZzIgfD0gTUFDQ0ZHMl9CWVRFX01PREU7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRkZWZhdWx0OlxcbiBcXHRcXHRkZXZfd2FybihtYWNfZGV2LVxcdTAwM2VkZXYsIFxcXCJjYW5ub3QgY29uZmlndXJlIGRUU0VDIGZvciAlc1xcXFxuXFxcIixcXG5AQCAtOTIzLDcgKzkyOSw4IEBAIHN0YXRpYyB2b2lkIGR0c2VjX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4gXFxuLVxcdGlvd3JpdGUzMmJlKHRtcCwgXFx1MDAyNnJlZ3MtXFx1MDAzZWVjbnRybCk7XFxuK1xcdGlvd3JpdGUzMmJlKGVjbnRybCwgXFx1MDAyNnJlZ3MtXFx1MDAzZWVjbnRybCk7XFxuK1xcdGlvd3JpdGUzMmJlKG1hY2NmZzIsIFxcdTAwMjZyZWdzLVxcdTAwM2VtYWNjZmcyKTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgZHRzZWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG5AQCAtOTQ4LDE1ICs5NTUsMTAgQEAgc3RhdGljIHZvaWQgZHRzZWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG4gXFx0aW93cml0ZTMyYmUodG1wLCBcXHUwMDI2cmVncy1cXHUwMDNlZWNudHJsKTtcXG4gXFxuIFxcdHRtcCA9IGlvcmVhZDMyYmUoXFx1MDAyNnJlZ3MtXFx1MDAzZW1hY2NmZzIpO1xcbi1cXHR0bXAgXFx1MDAyNj0gfihNQUNDRkcyX05JQkJMRV9NT0RFIHwgTUFDQ0ZHMl9CWVRFX01PREUgfCBNQUNDRkcyX0ZVTExfRFVQTEVYKTtcXG4tXFx0aWYgKHNwZWVkIFxcdTAwM2U9IFNQRUVEXzEwMDApXFxuLVxcdFxcdHRtcCB8PSBNQUNDRkcyX0JZVEVfTU9ERTtcXG4tXFx0ZWxzZVxcbi1cXHRcXHR0bXAgfD0gTUFDQ0ZHMl9OSUJCTEVfTU9ERTtcXG4tXFxuIFxcdGlmIChkdXBsZXggPT0gRFVQTEVYX0ZVTEwpXFxuIFxcdFxcdHRtcCB8PSBNQUNDRkcyX0ZVTExfRFVQTEVYO1xcbi1cXG4rXFx0ZWxzZVxcbitcXHRcXHR0bXAgXFx1MDAyNj0gfk1BQ0NGRzJfRlVMTF9EVVBMRVg7XFxuIFxcdGlvd3JpdGUzMmJlKHRtcCwgXFx1MDAyNnJlZ3MtXFx1MDAzZW1hY2NmZzIpO1xcbiBcXG4gXFx0bWFjX2Rldi1cXHUwMDNldXBkYXRlX3NwZWVkKG1hY19kZXYsIHNwZWVkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6MjM6MzEuMzQ0MDQwMTFaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMDIyNjQ4NTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRnJlZXNjYWxlIEZyYW1lIE1hbmFnZXIgKEZNYW4pIEV0aGVybmV0IE1BQyBkcml2ZXIuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBwbGF0Zm9ybSBkcml2ZXIgZm9yIEZyZWVzY2FsZSBTb0NzLiBJdCBjYW5ub3QgYmUgcmVhY2hlZCBvciBleGVjdXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFIG9yIFFFTVUpIHVzZWQgYnkgc3l6a2FsbGVyLCBhcyB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGNhYjA3M2UwNGYzOTM1Y2I3NTY5YjcxMTVhNjNkOTNmNmY0MjFlNGVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1bCAxMSAxMToyMzoyOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fZHRzZWMuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fZHRzZWMuY1xuaW5kZXggZmUzNTcwM2M1MDllNTUuLjcwNzVmOTNiYWI0OTEzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9kdHNlYy5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX2R0c2VjLmNcbkBAIC05MDAsMjIgKzkwMCwyOCBAQCBzdGF0aWMgdm9pZCBkdHNlY19tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCB1bnNpZ25lZCBpbnQgbW9kZSxcbiB7XG4gXHRzdHJ1Y3QgbWFjX2RldmljZSAqbWFjX2RldiA9IGZtYW5fY29uZmlnX3RvX21hYyhjb25maWcpO1xuIFx0c3RydWN0IGR0c2VjX3JlZ3MgX19pb21lbSAqcmVncyA9IG1hY19kZXYtXHUwMDNlZm1hbl9tYWMtXHUwMDNlcmVncztcbi1cdHUzMiB0bXA7XG4rXHR1MzIgZWNudHJsLCBtYWNjZmcyO1xuK1xuK1x0bWFjY2ZnMiA9IGlvcmVhZDMyYmUoXHUwMDI2cmVncy1cdTAwM2VtYWNjZmcyKTtcbitcdG1hY2NmZzIgXHUwMDI2PSB+KE1BQ0NGRzJfTklCQkxFX01PREUgfCBNQUNDRkcyX0JZVEVfTU9ERSk7XG4gXG4gXHRzd2l0Y2ggKHN0YXRlLVx1MDAzZWludGVyZmFjZSkge1xuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUk1JSTpcbi1cdFx0dG1wID0gRFRTRUNfRUNOVFJMX1JNTTtcbitcdFx0ZWNudHJsID0gRFRTRUNfRUNOVFJMX1JNTTtcbitcdFx0bWFjY2ZnMiB8PSBNQUNDRkcyX05JQkJMRV9NT0RFO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfSUQ6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSV9SWElEOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUlfVFhJRDpcbi1cdFx0dG1wID0gRFRTRUNfRUNOVFJMX0dNSUlNIHwgRFRTRUNfRUNOVFJMX1JQTTtcbitcdFx0ZWNudHJsID0gRFRTRUNfRUNOVFJMX0dNSUlNIHwgRFRTRUNfRUNOVFJMX1JQTTtcbitcdFx0bWFjY2ZnMiB8PSBNQUNDRkcyX0JZVEVfTU9ERTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWDpcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWDpcbi1cdFx0dG1wID0gRFRTRUNfRUNOVFJMX1RCSU0gfCBEVFNFQ19FQ05UUkxfU0dNSUlNO1xuK1x0XHRlY250cmwgPSBEVFNFQ19FQ05UUkxfVEJJTSB8IERUU0VDX0VDTlRSTF9TR01JSU07XG4rXHRcdG1hY2NmZzIgfD0gTUFDQ0ZHMl9CWVRFX01PREU7XG4gXHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbiBcdFx0ZGV2X3dhcm4obWFjX2Rldi1cdTAwM2VkZXYsIFwiY2Fubm90IGNvbmZpZ3VyZSBkVFNFQyBmb3IgJXNcXG5cIixcbkBAIC05MjMsNyArOTI5LDggQEAgc3RhdGljIHZvaWQgZHRzZWNfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsXG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbi1cdGlvd3JpdGUzMmJlKHRtcCwgXHUwMDI2cmVncy1cdTAwM2VlY250cmwpO1xuK1x0aW93cml0ZTMyYmUoZWNudHJsLCBcdTAwMjZyZWdzLVx1MDAzZWVjbnRybCk7XG4rXHRpb3dyaXRlMzJiZShtYWNjZmcyLCBcdTAwMjZyZWdzLVx1MDAzZW1hY2NmZzIpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBkdHNlY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuQEAgLTk0OCwxNSArOTU1LDEwIEBAIHN0YXRpYyB2b2lkIGR0c2VjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4gXHRpb3dyaXRlMzJiZSh0bXAsIFx1MDAyNnJlZ3MtXHUwMDNlZWNudHJsKTtcbiBcbiBcdHRtcCA9IGlvcmVhZDMyYmUoXHUwMDI2cmVncy1cdTAwM2VtYWNjZmcyKTtcbi1cdHRtcCBcdTAwMjY9IH4oTUFDQ0ZHMl9OSUJCTEVfTU9ERSB8IE1BQ0NGRzJfQllURV9NT0RFIHwgTUFDQ0ZHMl9GVUxMX0RVUExFWCk7XG4tXHRpZiAoc3BlZWQgXHUwMDNlPSBTUEVFRF8xMDAwKVxuLVx0XHR0bXAgfD0gTUFDQ0ZHMl9CWVRFX01PREU7XG4tXHRlbHNlXG4tXHRcdHRtcCB8PSBNQUNDRkcyX05JQkJMRV9NT0RFO1xuLVxuIFx0aWYgKGR1cGxleCA9PSBEVVBMRVhfRlVMTClcbiBcdFx0dG1wIHw9IE1BQ0NGRzJfRlVMTF9EVVBMRVg7XG4tXG4rXHRlbHNlXG4rXHRcdHRtcCBcdTAwMjY9IH5NQUNDRkcyX0ZVTExfRFVQTEVYO1xuIFx0aW93cml0ZTMyYmUodG1wLCBcdTAwMjZyZWdzLVx1MDAzZW1hY2NmZzIpO1xuIFxuIFx0bWFjX2Rldi1cdTAwM2V1cGRhdGVfc3BlZWQobWFjX2Rldiwgc3BlZWQpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTE6MjM6MzEuMzQ0MDQyM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzMzQzMjU5MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgRnJlZXNjYWxlIEZNYW4gRXRoZXJuZXQgTUFDIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fZHRzZWMuY2AsIHNwZWNpZmljYWxseSB0aGUgYGR0c2VjX21hY19jb25maWdgIGFuZCBgZHRzZWNfbGlua191cGAgZnVuY3Rpb25zLiBSaWdodCBhd2F5LCBJIHNlZSB0aGlzIGlzIGEgZHJpdmVyIGZvciBGcmVlc2NhbGUncyBGcmFtZSBNYW5hZ2VyIChGTWFuKSBFdGhlcm5ldCBNQUNzLiBIYXJkd2FyZS1zcGVjaWZpYywgZGVmaW5pdGVseS4gSXQncyB0aGF0IFFvcklRIERQQUEgRk1hbiBzdHVmZi4gVGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiBJIGZ1enogdGhpcyBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoZXNlIGhhcmR3YXJlLWRlcGVuZGVudCBkcml2ZXJzIGFyZSB1c3VhbGx5IGEgcGFpbiB0byBmdXp6IGRpcmVjdGx5LiBXaXRob3V0IGEgdmlydHVhbCBkZXZpY2Ugb3Igc29tZSBjbGV2ZXIgc29mdHdhcmUgcHJvYmluZywgaXQncyB0eXBpY2FsbHkgYSBuby1nby4gTGV0J3Mgc2VlIGlmIHRoZXJlIGlzIGFueSB3YXkgdG8gcmVhY2ggdGhpcyBjb2RlLiBJdCdzIGEgcGxhdGZvcm0gZHJpdmVyLCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgaXQncyBpbml0aWFsaXplZCBhbmQgdHJpZ2dlcmVkLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fZHRzZWMuY2AgYW5kIGFsc28gcHJvYmFibHkgcGVlayBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vbWFjLmNgIHRvIHNlZSBob3cgZXZlcnl0aGluZyBjb25uZWN0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY5OCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjIzOjM2LjY3ODM3MDc4NFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjA5OTkzMTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZm1hbl9kdHNlY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vTWFrZWZpbGU9OT1mc2xfZHBhYV9mbWFuX3BvcnQtb2JqcyA6PSBmbWFuX3BvcnQub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL01ha2VmaWxlOjEwOmZzbF9kcGFhX21hYy1vYmpzOj0gbWFjLm8gZm1hbl9kdHNlYy5vIGZtYW5fbWVtYWMubyBmbWFuX3RnZWMub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9kdHNlYy5jLTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9kdHNlYy5jOjg6I2luY2x1ZGUgXFxcImZtYW5fZHRzZWMuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX2R0c2VjLmMtOS0jaW5jbHVkZSBcXFwiZm1hbi5oXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vbWFjLmMtMjItI2luY2x1ZGUgXFxcImZtYW5fbWFjLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vbWFjLmM6MjM6I2luY2x1ZGUgXFxcImZtYW5fZHRzZWMuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9tYWMuYy0yNC0jaW5jbHVkZSBcXFwiZm1hbl90Z2VjLmhcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjIzOjM2Ljg5OTM3NTI0MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MDU5MzMwNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEcml2ZXIncyBQb3RlbnRpYWwgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBhc3Nlc3MgdGhlIGZ1enppbmcgcG90ZW50aWFsIG9mIHRoaXMgZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gc2VlIGlmIHdlIGNhbiB0cmlnZ2VyIGEgcHJvYmUuIEl0J3MgYSBwbGF0Zm9ybSBkcml2ZXIsIHNvIGRldmljZSB0cmVlIGludGVyYWN0aW9uIGlzIHRoZSB1c3VhbCBhcHByb2FjaC4gVGhlIGJpZyBxdWVzdGlvbiBpcyB3aGV0aGVyIHN5emthbGxlciBjYW4gZWZmZWN0aXZlbHkgZnV6eiB0aGlzLiBTeXprYWxsZXIncyBkZXZpY2UgdHJlZSBjYXBhYmlsaXRpZXMgYXJlIHNvbGlkLCBidXQgcGxhdGZvcm0gZHJpdmVycyBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgU3lzdGVtLW9uLWEtQ2hpcCAobGlrZSB0aG9zZSBmb3IgRnJlZXNjYWxlIFFvcklRKSBhcmVuJ3Qgb2Z0ZW4gcHJpbWUgY2FuZGlkYXRlcyB1bmxlc3MgYW4gZW11bGF0b3IgaXMgYXZhaWxhYmxlIG9yIGl0IGhvb2tzIGludG8gYSBicm9hZGVyLCBmdXp6YWJsZSBzdWJzeXN0ZW0uIFRoZXJlIGlzIHNvbWUgcGxhdGZvcm0gZGV2aWNlIGluamVjdGlvbiBjYXBhYmlsaXR5IGluIFN5emthbGxlciwgdGhvdWdoIGl0J3MgdHlwaWNhbGx5IGxpbWl0ZWQgaW4gc2NvcGUuXG5cblRoZSBjcnVjaWFsIG5leHQgc3RlcCBpcyBmaWd1cmluZyBvdXQgcmVhY2hhYmlsaXR5LiBUbyB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIHJlZ2lzdGVycyBpdHNlbGYsIEknbGwgbmVlZCB0byBjaGVjayB0aGUgc291cmNlIGNvZGUuIExldCdzIHN0YXJ0IHdpdGggYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL21hYy5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQ4NCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMToyMzo0MC42MDUzMTA1NzRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzI3MTcwNTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBsYXRmb3JtX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jPTI4ODQ9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZm1hbl9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jLTI4ODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jOjI4ODY6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZm1hbl9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jLTI4ODctXFx0LmRyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYz0yODk0PXN0YXRpYyBpbnQgX19pbml0IGZtYW5fbG9hZCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jLTI4OTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jOjI5MDA6XFx0ZXJyID0gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZmbWFuX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jLTI5MDEtXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbi5jOjI5MDI6XFx0XFx0cHJfZXJyKFxcXCJFcnJvciwgcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCkgPSAlZFxcXFxuXFxcIiwgZXJyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmMtMjkwMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYz0yOTA4PXN0YXRpYyB2b2lkIF9fZXhpdCBmbWFuX3VubG9hZCh2b2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYy0yOTA5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuLmM6MjkxMDpcXHRwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcihcXHUwMDI2Zm1hbl9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW4uYy0yOTExLX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fcG9ydC5jPTE4OTA9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZm1hbl9wb3J0X21hdGNoKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX3BvcnQuYy0xODkxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fcG9ydC5jOjE4OTI6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZm1hbl9wb3J0X2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX3BvcnQuYy0xODkzLVxcdC5kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX3BvcnQuYz0xOTAwPXN0YXRpYyBpbnQgX19pbml0IGZtYW5fcG9ydF9sb2FkKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX3BvcnQuYy0xOTA1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fcG9ydC5jOjE5MDY6XFx0ZXJyID0gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZmbWFuX3BvcnRfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX3BvcnQuYy0xOTA3LVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fcG9ydC5jOjE5MDg6XFx0XFx0cHJfZXJyKFxcXCJFcnJvciwgcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCkgPSAlZFxcXFxuXFxcIiwgZXJyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9mbWFuX3BvcnQuYy0xOTA5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vZm1hbl9wb3J0LmM9MTkxND1zdGF0aWMgdm9pZCBfX2V4aXQgZm1hbl9wb3J0X3VubG9hZCh2b2lkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fcG9ydC5jLTE5MTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fcG9ydC5jOjE5MTY6XFx0cGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNmZtYW5fcG9ydF9kcml2ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL2ZtYW5fcG9ydC5jLTE5MTctfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vbWFjLmM9MzI1PXN0YXRpYyB2b2lkIG1hY19yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL21hYy5jLTMzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9tYWMuYzozMzc6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbWFjX2RyaXZlciA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9tYWMuYy0zMzgtXFx0LmRyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL21hYy5jLTM0NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9tYWMuYzozNDY6YnVpbHRpbl9wbGF0Zm9ybV9kcml2ZXIobWFjX2RyaXZlcik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjIzOjQwLjkzMjQ4NzA5NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyNDE3NDYzMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGZWFzaWJpbGl0eSBvZiBGdXp6aW5nIFRoaXMgRHJpdmVyKipcblxuT2theSwgc28gdGhpcyBkcml2ZXIgaXMgYSBwbGF0Zm9ybSBkcml2ZXIsIG1lYW5pbmcgaXQgcmVsaWVzIG9uIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzIHRvIGdldCBwcm9iZWQuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgYSBwb3RlbnRpYWwgaXNzdWUsIGFzIFN5emthbGxlciBkb2Vzbid0IHVzdWFsbHkgdGFyZ2V0IGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlcnMgdW5sZXNzIHRoZXJlJ3MgYSB3YXkgdG8gZW11bGF0ZSB0aGUgaGFyZHdhcmUgb3IgaWYgdGhleSdyZSBwYXJ0IG9mIGEgZnV6emFibGUgc3Vic3lzdGVtLiBJIGtub3cgaXQgKmNhbiogaW5qZWN0IHBsYXRmb3JtIGRldmljZXMgdG8gYSBsaW1pdGVkIGRlZ3JlZSB2aWEgYHN5el9kZXZfcGxhdGZvcm1gIGFuZCB0aGUgbGlrZSwgYnV0IHRoYXQncyB2ZXJ5IHNwZWNpZmljIGFuZCBnZW5lcmFsbHkgdGFyZ2V0ZWQgYXQgdmVyeSBzZWxlY3QgZHJpdmVycy5cblxuVGhpcyBvbmUsIHRob3VnaCwgaXMgYSBGcmVlc2NhbGUgRk1hbiBkcml2ZXIuIFByYWN0aWNhbGx5IHNwZWFraW5nLCB0aGVyZSdzICpubyB3YXkqIGl0J3MgZ29pbmcgdG8gYmUgcmVhY2hhYmxlIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb3IgZXZlbiBzdGFuZGFyZCBRRU1VLCB3aXRob3V0IHNvbWUgc2VyaW91c2x5IHNwZWNpZmljIGVtdWxhdGlvbiBvZiB0aGUgRnJlZXNjYWxlIFNvQy5cblxuSG1tLCBJIHdvbmRlci4uLiBpcyB0aGVyZSAqYW55KiBRRU1VIHN1cHBvcnQgZm9yIEZyZWVzY2FsZSBGTWFuPyBRRU1VICpkb2VzKiBzdXBwb3J0IHNvbWUgUG93ZXJQQyBib2FyZHMgbGlrZSBlNTAwLCBhbmQgdGhvc2UgbWlnaHQgaGF2ZSBGTWFuLCBidXQgU3l6a2FsbGVyIGdlbmVyYWxseSBydW5zIG9uIHg4Nl82NCBvciBhcm02NCwgc28gdGhhdCdzIGEgaHVyZGxlLlxuXG5XYWl0LCBjb3VsZCBJIGV2ZW4gY29tcGlsZSB0aGlzIGRyaXZlciBvbiB4ODY/IFRoYXTigJlzIHNvbWV0aGluZyBJIG5lZWQgdG8gY2hlY2suIExldCdzIHNlZSBpZiB0aGUgS2NvbmZpZyBmaWxlIGdpdmVzIG1lIGFueSBjbHVlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk5MiwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMToyMzo0Ni4xNzQyMzU1MzRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg3OTc2MzAwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRlNMX0ZNQU5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjIzOjQ2LjY2MjIyMTYzNFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMTA2MjczOTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IHdlbnQ6XG5cbioqRXhhbWluaW5nIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuT2theSwgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdG8gbG9vayBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoaXMgRXRoZXJuZXQgZHJpdmVyLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIGhlYWQgc3RyYWlnaHQgdG8gdGhlIHNvdXJjZSwgdGhlIGBLY29uZmlnYCBmaWxlcy4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgYnVpbGQtdGltZSBjb25maWd1cmF0aW9uIHNldHRpbmdzIGFyZSBkZWZpbmVkLiBHaXZlbiB0aGUgbWVudGlvbiBvZiBGcmVlc2NhbGUncyBGTUFOLCBteSBmaXJzdCBndWVzcyBpcyB0aGF0IHRoZSByZWxldmFudCBmaWxlIHdpbGwgYmUgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vYCBkaXJlY3RvcnksIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBsaWtlIGEgbW9yZSBnZW5lcmFsIFwiZnJlZXNjYWxlXCIgZGlyZWN0b3J5IGlmIHRoZXkndmUgYWJzdHJhY3RlZCB0aGUgZHJpdmVyIHN0cnVjdHVyZS4gSSdsbCBzdGFydCB0aGVyZSBhbmQgc2VlIHdoYXQgSSBjYW4gZmluZC4gSXQncyB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIGJlZ2luIGRpZ2dpbmcgdGhyb3VnaCB0aGUgb3B0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU2MywiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjIzOjQ5LjY3Mjg1MTE4MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTkwNjUwMDg1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRlNMX0ZNQU5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZtYW4vS2NvbmZpZzoyOmNvbmZpZyBGU0xfRk1BTlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiRk1hbiBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMToyMzo1MS41NzkzNjA1MjNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk3MzcxNDE0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jaWVzIG9mIEZTTF9GTUFOKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIE15IG1pbmQgaW1tZWRpYXRlbHkgZ29lcyB0byB0aGUgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBvZiBGU0xfRk1BTi4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIGVjb3N5c3RlbS4gVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiBpcywgXCJXaGF0IG90aGVyIG1vZHVsZXMsIGxpYnJhcmllcywgb3Igc3lzdGVtIHJlc291cmNlcyBpcyB0aGlzIHRoaW5nIHJlbHlpbmcgb24/XCIgSXMgaXQgcHJpbWFyaWx5IGEgc3RhbmRhbG9uZSBjb21wb25lbnQsIG9yIGlzIGl0IHRpZ2h0bHkgaW50ZXJ3b3ZlbiB3aXRoIG90aGVyIGNyaXRpY2FsIGluZnJhc3RydWN0dXJlPyBUaGlua2luZyBhYm91dCBpdCwgdW5kZXJzdGFuZGluZyB0aGUgbG93ZXItbGV2ZWwgZGVwZW5kZW5jaWVzIGlzIGNydWNpYWw7IHRoaXMgbWVhbnMgZGlnZ2luZyBkb3duIHRvIHRoZSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllcnMsIHRoZSB1bmRlcmx5aW5nIG9wZXJhdGluZyBzeXN0ZW0gc2VydmljZXMsIGFueSBjdXN0b20gZHJpdmVycywgYW5kIG9mIGNvdXJzZSwgYW55IHNoYXJlZCBsaWJyYXJpZXMgdGhhdCBtaWdodCBiZSBpbnZvbHZlZC4gXG5cbkknbSBhbHNvIGNvbnNpZGVyaW5nIHRoZSBwb3RlbnRpYWwgY2FzY2FkaW5nIGVmZmVjdHMgb2YgYW55IGNoYW5nZXMgdG8gRlNMX0ZNQU4uIElmIGl0IHJlbGllcyBvbiBhIHBhcnRpY3VsYXIgdmVyc2lvbiBvZiBhIGZpcm13YXJlIGNvbXBvbmVudCwgb3IgYSBzcGVjaWZpYyB2ZXJzaW9uIG9mIGEgc3RhbmRhcmQgbGlicmFyeSwgd2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiBhbiB1cGdyYWRlIG9yLCBHb2QgZm9yYmlkLCBhIGJhY2t3YXJkcy1pbmNvbXBhdGlibGUgY2hhbmdlIGluIHRoZSBkZXBlbmRlbmN5PyBXaGF0IGtpbmQgb2YgdGVzdGluZyBhbmQgdmFsaWRhdGlvbiB3aWxsIGJlIHJlcXVpcmVkIGluIHRoaXMgc2NlbmFyaW8/IFxuXG5GdW5jdGlvbmFsbHksIEknbSB0aGlua2luZyBhYm91dCB0aGUgbmF0dXJlIG9mIHRoZSBkYXRhIGZsb3cgYW5kIGFueSBvdGhlciBtb2R1bGVzIGludm9sdmVkIGluIGl0LiBJcyBGU0xfRk1BTiBzb2xlbHkgYSBjb25zdW1lciBvZiBpbmZvcm1hdGlvbiwgb3IgYSBwcm9kdWNlciBvciB0cmFuc2Zvcm1lciBvZiBpbmZvcm1hdGlvbi4gSSBhbHNvIGNvbnNpZGVyIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcywgc3VjaCBhcyByZWFsLXRpbWUgY29uc3RyYWludHMsIGxhdGVuY3kgY29uc2lkZXJhdGlvbnMsIGFuZCByZXF1aXJlZCB0aHJvdWdocHV0LiBUaGlzIGRpcmVjdHMgbWUgdG8gY29uc2lkZXIgcmVzb3VyY2UgY29uc3RyYWludHMgbGlrZSBtZW1vcnkgdXNhZ2UsIHByb2Nlc3NpbmcgY2FwYWNpdHksIGFuZCBuZXR3b3JrIGJhbmR3aWR0aC4gSSBhbHNvIGNvbnNpZGVyIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcyBhbmQgcmlzayBtaXRpZ2F0aW9uIGFzIGl0IHJlbGF0ZXMgdG8gRlNMX0ZNQU4ncyBpbnRlcmFjdGlvbnMgd2l0aCBvdGhlciBjb21wb25lbnRzLlxuXG5Fc3NlbnRpYWxseSwgSSBuZWVkIGEgZGV0YWlsZWQgZGVwZW5kZW5jeSBncmFwaC4gVGhpcyBpc24ndCBqdXN0IGFib3V0IGNvbXBpbGluZyBhIGxpc3Q7IGl0J3MgYWJvdXQgKnVuZGVyc3RhbmRpbmcqIHRoZSByZWxhdGlvbnNoaXBzLCB0aGUgcG90ZW50aWFsIGJvdHRsZW5lY2tzLCBhbmQgdGhlIHBvaW50cyBvZiBmYWlsdXJlLiBUaGlzIGlzIGFic29sdXRlbHkga2V5IHRvIG1haW50YWluYWJpbGl0eSwgZGVidWdnaW5nLCBhbmQgYW55IGZ1dHVyZSBtb2RpZmljYXRpb25zIG9yIGludGVncmF0aW9ucyBvZiBGU0xfRk1BTi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTg4MSwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjIzOjU1LjU1MzA3Njk4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1ODIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBGU0xfRk1BTlxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkZNYW4gc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gRlNMX1NPQyB8fCBBUkNIX0xBWUVSU0NBUEUgfHwgQ09NUElMRV9URVNUXFxuICAgNTpcXHRcXHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1JcXG4gICA2OlxcdFxcdHNlbGVjdCBQSFlMSU5LXFxuICAgNzpcXHRcXHRzZWxlY3QgUENTX0xZTlhcXG4gICA4OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAgIDk6XFx0XFx0ZGVmYXVsdCBuXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHRcXHRGcmVlc2NhbGUgRGF0YS1QYXRoIEFjY2VsZXJhdGlvbiBBcmNoaXRlY3R1cmUgRnJhbWUgTWFuYWdlclxcbiAgMTI6XFx0XFx0XFx0KEZNYW4pIHN1cHBvcnRcXG4gIDEzOlxcdFxcbiAgMTQ6XFx0Y29uZmlnIERQQUFfRVJSQVRVTV9BMDUwMzg1XFxuICAxNTpcXHRcXHRib29sXFxuICAxNjpcXHRcXHRkZXBlbmRzIG9uIEFSTTY0IFxcdTAwMjZcXHUwMDI2IEZTTF9EUEFBXFxuICAxNzpcXHRcXHRkZWZhdWx0IHlcXG4gIDE4OlxcdFxcdGhlbHBcXG4gIDE5OlxcdFxcdFxcdERQQUEgRk1hbiBlcnJhdHVtIEEwNTAzODUgc29mdHdhcmUgd29ya2Fyb3VuZCBpbXBsZW1lbnRhdGlvbjpcXG4gIDIwOlxcdFxcdFxcdGFsaWduIGJ1ZmZlcnMsIGRhdGEgc3RhcnQsIFNHIGZyYWdtZW50IGxlbmd0aCB0byBhdm9pZCBGTWFuIERNQVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxMToyMzo1NS41NTMxNTQ0M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODEzNDkwOTEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoRnV6emluZyBBc3Nlc3NtZW50KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaGluZ2VzIG9uIHRocmVlIGZhY3RvcnM6IGBGU0xfU09DYCwgYEFSQ0hfTEFZRVJTQ0FQRWAsIGFuZCBgQ09NUElMRV9URVNUYC4gWWVzLCBpdCBjYW4gYmUgY29tcGlsZWQgd2l0aCBgQ09NUElMRV9URVNUYCwgdGhhdCdzIGEgZ2l2ZW4uIEJ1dCBjYW4gaXQgYWN0dWFsbHkgKnJ1bio/IFRoYXQncyB0aGUgY3JpdGljYWwgcXVlc3Rpb24uXG5cblRoaXMgY29kZSBpcyBhIHBsYXRmb3JtIGRyaXZlciwgc3BlY2lmaWNhbGx5IG9uZSB0aGF0IGRlYWxzIHdpdGggbWVtb3J5LW1hcHBlZCByZWdpc3RlcnMuIGBpb3JlYWQzMmJlYCBhbmQgYGlvd3JpdGUzMmJlYCBhcmUgdGhlIHRlbGx0YWxlIHNpZ25zIGhlcmUuIFdpdGhvdXQgdGhlIHJlYWwgaGFyZHdhcmUgcHJlc2VudCwgb3IgYXQgbGVhc3QgYSBjb252aW5jaW5nIGVtdWxhdGlvbiwgcHJvYmluZyB0aGlzIGRyaXZlciBpcyBnb2luZyB0byByZXN1bHQgaW4gZWl0aGVyIGEgY3Jhc2ggb3IgYW4gaW1tZWRpYXRlIGZhaWx1cmUuIFN5emthbGxlciwgaW4gaXRzIGN1cnJlbnQgY29uZmlndXJhdGlvbiwgZG9lc24ndCBvZmZlciBhIHdheSB0byBzaW11bGF0ZSAqdGhpcyogc3BlY2lmaWMgaGFyZHdhcmUuIFRoZXJlZm9yZSwgZ2l2ZW4gdGhlIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoR0NFLCBRRU1VLCBldGMuKSB1c2VkIGJ5IFN5emthbGxlciwgcmVhY2hpbmcgdGhpcyBjb2RlIHBhdGggaXMgc2ltcGx5IGltcG9zc2libGUuIEknbSBsZWFuaW5nIHRvd2FyZHMgZGVjbGFyaW5nIHRoaXMgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cbkhvbGQgb24sIGxldCBtZSBkb3VibGUtY2hlY2suIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uIFRoZSBwYXRjaCBtb2RpZmllcyBgZHRzZWNfbWFjX2NvbmZpZ2AgYW5kIGBkdHNlY19saW5rX3VwYC4gVGhlc2UgYXJlIGludGVybmFsIGZ1bmN0aW9ucyBjYWxsZWQgYnkgdGhlIHBoeWxpbmsgZnJhbWV3b3JrLCB3aGljaCBpdHNlbGYgaXMgY2FsbGVkIGJ5IHRoZSBNQUMgZHJpdmVyLiBUaGUgTUFDIGRyaXZlciBpcyBwcm9iZWQgdGhyb3VnaCBgbWFjX3Byb2JlYCwgaW4gYG1hYy5jYC4gYG1hY19wcm9iZWAsIGFzIEkgcmVjYWxsLCByZXF1aXJlcyBhIHBsYXRmb3JtIGRldmljZS4gTm93LCB0aGUga2V5IGlzIHRoZSBGcmVlc2NhbGUgRk1hbiwgdGhhdCdzIHdoYXQncyBkcml2aW5nIHRoaXMgd2hvbGUgdGhpbmcuIFNpbmNlIFN5emthbGxlciBkb2Vzbid0IGhhdmUgYW55IHN0YW5kYXJkIGVtdWxhdGlvbiBmb3IgdGhhdCBoYXJkd2FyZSDigJMgYW5kIGl0J3MgYSAqc3BlY2lmaWMqIEZyZWVzY2FsZSBGTWFuIC0gdGhpcyBjb2RlIHdpbGwgbmV2ZXIgYmUgZXhlY3V0ZWQuXG5cbkFscmlnaHQsIEknbSBjb25maWRlbnQuIFRoZSBwYXRjaCB0b3VjaGVzIHRoZSBGcmVlc2NhbGUgRnJhbWUgTWFuYWdlciAoRk1hbikgRXRoZXJuZXQgTUFDIGRyaXZlci4gSXQncyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciBmb3IgRnJlZXNjYWxlIFNvQ3MuIEl0IGNhbm5vdCBiZSByZWFjaGVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhlIGxhY2sgb2YgaGFyZHdhcmUgZW11bGF0aW9uIHNlYWxzIHRoZSBkZWFsLiBXZSBjYW4ndCBmdXp6IHRoaXMgcmVsaWFibHkgaW4gdGhlIGN1cnJlbnQgc2V0dXAuIEknbSBjb25maXJtaW5nLCBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjYwNSwiT3V0cHV0VG9rZW5zIjo5OCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDExOjI0OjAyLjM2NjY0Nzk5M1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4OTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRnJhbWUgTWFuYWdlciAoRk1hbikgRXRoZXJuZXQgTUFDIGRyaXZlci4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciBmb3IgRnJlZXNjYWxlIFNvQ3MuIEl0IGNhbm5vdCBiZSByZWFjaGVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0Ugb3IgUUVNVSkgdXNlZCBieSBzeXprYWxsZXIsIGFzIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRnJhbWUgTWFuYWdlciAoRk1hbikgRXRoZXJuZXQgTUFDIGRyaXZlci4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIHBsYXRmb3JtIGRyaXZlciBmb3IgRnJlZXNjYWxlIFNvQ3MuIEl0IGNhbm5vdCBiZSByZWFjaGVkIG9yIGV4ZWN1dGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBHQ0Ugb3IgUUVNVSkgdXNlZCBieSBzeXprYWxsZXIsIGFzIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowlvmf8[1] Phase: Running StartedAt: 2026-07-11 11:24:15 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlvmf8[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-11 11:24:15 +0000 UTC FinishedAt: 2026-07-11 11:24:47 +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,}