Name: series-workflow5g8f2 Phase: Failed StartedAt: 2026-08-20 11:25:52 +0000 UTC FinishedAt: 2026-08-20 12:48:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5g8f2[0] Phase: Succeeded StartedAt: 2026-08-20 11:25:52 +0000 UTC FinishedAt: 2026-08-20 12:48:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5g8f2[0].run-triage Phase: Succeeded StartedAt: 2026-08-20 11:25:52 +0000 UTC FinishedAt: 2026-08-20 12:48:18 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDEyOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGVycm9yIGhhbmRsaW5nIHBhdGggb2YgdGhlIERhdmljb20gRE05MDAwIGV0aGVybmV0IGRyaXZlciAoZG05MDAwX3Byb2JlKS4gVGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgbWVtb3J5LW1hcHBlZCBoYXJkd2FyZS4gSW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKSB1c2VkIGZvciBmdXp6aW5nLCB0aGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50LCBhbmQgdGhlcmUgaXMgbm8gZ2VuZXJpYyB1c2Vyc3BhY2UgbWVjaGFuaXNtIHRvIGluc3RhbnRpYXRlIGFyYml0cmFyeSBwbGF0Zm9ybSBkZXZpY2VzIHRvIHRyaWdnZXIgdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGFuZCBub3Qgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTI6NDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyYWIzZjQxNzdkZjc3ODFkZjdlZGU1ZmFmMDYyNDFhODEyMTE2YWMyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjAgMTI6NDc6MDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmNcbmluZGV4IGI4N2VhZjBjMjUwY2UuLjkwNGI4NTlmMGE2MzUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jXG5AQCAtMTUxMSwxMyAmIzQzOzE1MTEsMTggQEAgZG05MDAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHR9XG4gXG4gXHRkYi1cdTAwM2VpcnFfd2FrZSA9IHBsYXRmb3JtX2dldF9pcnFfb3B0aW9uYWwocGRldiwgMSk7XG4tXHRpZiAoZGItXHUwMDNlaXJxX3dha2UgXHUwMDNlPSAwKSB7XG4mIzQzO1x0aWYgKGRiLVx1MDAzZWlycV93YWtlIFx1MDAzYyAwIFx1MDAyNlx1MDAyNiBkYi1cdTAwM2VpcnFfd2FrZSAhPSAtRU5YSU8pIHtcbiYjNDM7XHRcdHJldCA9IGRiLVx1MDAzZWlycV93YWtlO1xuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1x0fVxuJiM0MztcdGlmIChkYi1cdTAwM2VpcnFfd2FrZSBcdTAwM2UgMCkge1xuIFx0XHRkZXZfZGJnKGRiLVx1MDAzZWRldiwgXCYjMzQ7d2FrZXVwIGlycSAlZFxcblwmIzM0OywgZGItXHUwMDNlaXJxX3dha2UpO1xuIFxuIFx0XHRyZXQgPSByZXF1ZXN0X2lycShkYi1cdTAwM2VpcnFfd2FrZSwgZG05MDAwX3dvbF9pbnRlcnJ1cHQsXG4gXHRcdFx0XHQgIElSUUZfU0hBUkVELCBkZXZfbmFtZShkYi1cdTAwM2VkZXYpLCBuZGV2KTtcbiBcdFx0aWYgKHJldCkge1xuIFx0XHRcdGRldl9lcnIoZGItXHUwMDNlZGV2LCBcJiMzNDtjYW5ub3QgZ2V0IHdha2V1cCBpcnEgKCVkKVxcblwmIzM0OywgcmV0KTtcbiYjNDM7XHRcdFx0Z290byBvdXQ7XG4gXHRcdH0gZWxzZSB7XG4gXG4gXHRcdFx0LyogdGVzdCB0byBzZWUgaWYgaXJxIGlzIHJlYWxseSB3YWtldXAgY2FwYWJsZSAqL1xuQEAgLTE1MjUsNiAmIzQzOzE1MzAsNyBAQCBkbTkwMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdFx0XHRpZiAocmV0KSB7XG4gXHRcdFx0XHRkZXZfZXJyKGRiLVx1MDAzZWRldiwgXCYjMzQ7aXJxICVkIGNhbm5vdCBzZXQgd2FrZXVwICglZClcXG5cJiMzNDssXG4gXHRcdFx0XHRcdGRiLVx1MDAzZWlycV93YWtlLCByZXQpO1xuJiM0MztcdFx0XHRcdGdvdG8gb3V0O1xuIFx0XHRcdH0gZWxzZSB7XG4gXHRcdFx0XHRpcnFfc2V0X2lycV93YWtlKGRiLVx1MDAzZWlycV93YWtlLCAwKTtcbiBcdFx0XHRcdGRiLVx1MDAzZXdha2Vfc3VwcG9ydGVkID0gMTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMjo0NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGVycm9yIGhhbmRsaW5nIHBhdGggb2YgdGhlIERhdmljb20gRE05MDAwIGV0aGVybmV0IGRyaXZlciAoZG05MDAwX3Byb2JlKS4gVGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgbWVtb3J5LW1hcHBlZCBoYXJkd2FyZS4gSW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKSB1c2VkIGZvciBmdXp6aW5nLCB0aGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50LCBhbmQgdGhlcmUgaXMgbm8gZ2VuZXJpYyB1c2Vyc3BhY2UgbWVjaGFuaXNtIHRvIGluc3RhbnRpYXRlIGFyYml0cmFyeSBwbGF0Zm9ybSBkZXZpY2VzIHRvIHRyaWdnZXIgdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGFuZCBub3Qgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyYWIzZjQxNzdkZjc3ODFkZjdlZGU1ZmFmMDYyNDFhODEyMTE2YWMyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgMjAgMTI6NDc6MDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYwppbmRleCBiODdlYWYwYzI1MGNlLi45MDRiODU5ZjBhNjM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMKQEAgLTE1MTEsMTMgJiM0MzsxNTExLDE4IEBAIGRtOTAwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCX0KIAogCWRiLSZndDtpcnFfd2FrZSA9IHBsYXRmb3JtX2dldF9pcnFfb3B0aW9uYWwocGRldiwgMSk7Ci0JaWYgKGRiLSZndDtpcnFfd2FrZSAmZ3Q7PSAwKSB7CiYjNDM7CWlmIChkYi0mZ3Q7aXJxX3dha2UgJmx0OyAwICZhbXA7JmFtcDsgZGItJmd0O2lycV93YWtlICE9IC1FTlhJTykgewomIzQzOwkJcmV0ID0gZGItJmd0O2lycV93YWtlOwomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsJaWYgKGRiLSZndDtpcnFfd2FrZSAmZ3Q7IDApIHsKIAkJZGV2X2RiZyhkYi0mZ3Q7ZGV2LCAmIzM0O3dha2V1cCBpcnEgJWRcbiYjMzQ7LCBkYi0mZ3Q7aXJxX3dha2UpOwogCiAJCXJldCA9IHJlcXVlc3RfaXJxKGRiLSZndDtpcnFfd2FrZSwgZG05MDAwX3dvbF9pbnRlcnJ1cHQsCiAJCQkJICBJUlFGX1NIQVJFRCwgZGV2X25hbWUoZGItJmd0O2RldiksIG5kZXYpOwogCQlpZiAocmV0KSB7CiAJCQlkZXZfZXJyKGRiLSZndDtkZXYsICYjMzQ7Y2Fubm90IGdldCB3YWtldXAgaXJxICglZClcbiYjMzQ7LCByZXQpOwomIzQzOwkJCWdvdG8gb3V0OwogCQl9IGVsc2UgewogCiAJCQkvKiB0ZXN0IHRvIHNlZSBpZiBpcnEgaXMgcmVhbGx5IHdha2V1cCBjYXBhYmxlICovCkBAIC0xNTI1LDYgJiM0MzsxNTMwLDcgQEAgZG05MDAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCQlpZiAocmV0KSB7CiAJCQkJZGV2X2VycihkYi0mZ3Q7ZGV2LCAmIzM0O2lycSAlZCBjYW5ub3Qgc2V0IHdha2V1cCAoJWQpXG4mIzM0OywKIAkJCQkJZGItJmd0O2lycV93YWtlLCByZXQpOwomIzQzOwkJCQlnb3RvIG91dDsKIAkJCX0gZWxzZSB7CiAJCQkJaXJxX3NldF9pcnFfd2FrZShkYi0mZ3Q7aXJxX3dha2UsIDApOwogCQkJCWRiLSZndDt3YWtlX3N1cHBvcnRlZCA9IDE7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDEyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMDMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA1NDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBETTkwMDAgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBkbTkwMDBfcHJvYmVgIGluIHRoZSBgZG05MDAwLmNgIGRyaXZlci4gSSBzZWUgaXQmIzM5O3MgY2hhbmdpbmcgdGhlIHdheSBgZGItJmd0O2lycV93YWtlYCwgb2J0YWluZWQgZnJvbSBgcGxhdGZvcm1fZ2V0X2lycV9vcHRpb25hbGAsIGlzIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgdGhlcmUmIzM5O3MgYSBjaGVjayBmb3IgbmVnYXRpdmUgZXJyb3IgY29kZXMgKmV4Y2VwdCogYC1FTlhJT2AsIGFuZCBoYW5kbGluZyBmb3IgcG9zaXRpdmUgdmFsdWVzIGFuZCBwb3RlbnRpYWwgZmFpbHVyZXMgb2YgYGlycV9zZXRfaXJxX3dha2VgLiAgVGhpcyBkcml2ZXIgaXMgZm9yIERhdmljb20gRE05MDAwLXNlcmllcyBldGhlcm5ldCBjb250cm9sbGVycywgd2hpY2ggYXJlIElTQSBvciBwbGF0Zm9ybSBkZXZpY2VzLgoKVGhlIGtleSBxdWVzdGlvbiBpbiBteSBtaW5kIGlzLCBjYW4gSSByZWFjaCB0aGlzIGRyaXZlciB3aXRoIGZ1enppbmc/IERvZXMgUUVNVSBldmVuIGVtdWxhdGUgdGhpcyBwYXJ0aWN1bGFyIGRldmljZT8gSSBuZWVkIHRvIGNoZWNrLiAgSG1tLCBRRU1VIGhhcyBkcml2ZXJzIGZvciBvdGhlciBldGhlcm5ldCBjb250cm9sbGVycywgbGlrZSBTTUM5MUMxMTEgYW5kIExBTjkxMTgsIGJ1dCBkb2VzIGl0IGhhdmUgYGRtOTAwMGA/ICAqWWVzKiwgaXQgc2VlbXMgUUVNVSAqZG9lcyogaGF2ZSBgaHcvbmV0L2RtOTAwMC5jYCEgU28gdGhhdCYjMzk7cyBnb29kLgoKQnV0IHdhaXQsIHRoaXMgKmlzKiBhIHBsYXRmb3JtIGRyaXZlci4gU28gdGhlIG5leHQgc3RlcCBpcyBjaGVja2luZyB3aGV0aGVyIHN5emthbGxlciBjYW4gcmVhY2ggaXQuIEl0JiMzOTtzIG9mdGVuIHBvc3NpYmxlIHRvIGZ1enogcGxhdGZvcm0gZHJpdmVycyB2aWEgc3l6a2FsbGVyIHdpdGggcHNldWRvLWRldmljZXMgb3IgZGV2aWNlIHRyZWUgb3ZlcmxheXMgaWYgaXQmIzM5O3MgYSBwbGF0Zm9ybSBkcml2ZXIsIHNwZWNpZmljYWxseSBpZiBpdCYjMzk7cyBwb3NzaWJsZSB0byBpbnN0YW50aWF0ZSB0aGVtLCBzYXksIGJ5IGBzeXpfZGV2X2luaXRgLiBJIGNvbmZpcm0gdGhhdCBgZG05MDAwYCBpbmRlZWQgdXNlcyBgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldmAuICBIb3dldmVyLCBzeXprYWxsZXIgZG9lc24mIzM5O3QgKmdlbmVyYWxseSogZnV6eiAqYXJiaXRyYXJ5KiBwbGF0Zm9ybSBkcml2ZXJzLCB1bmxlc3MgdGhleSYjMzk7cmUgaW5zdGFudGlhdGVkIHZpYSBkZXZpY2UgdHJlZSBvdmVybGF5LCBvciBpZiB0aGV5JiMzOTtyZSBQQ0kvVVNCIGRyaXZlcnMuCgpJdCYjMzk7cyBhIHBsYXRmb3JtIGRyaXZlciwgYnV0IG9ubHkgdGhlIHByb2JlIGZ1bmN0aW9uIGlzIG1vZGlmaWVkLiBUaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIGBkbTkwMDBgIGlzIGVuYWJsZWQgaW4gY29tbW9uIGNvbmZpZ3VyYXRpb25zIG9yIGlmIHRoZXJlIGlzIGEgd2F5IHRvIGluc3RhbnRpYXRlIGl0LiAgTXkgbmV4dCBzdGVwIGlzIHRvIHNlYXJjaCBmb3IgYGRtOTAwMGAgd2l0aGluIHRoZSBLY29uZmlnIGZpbGVzIHRvIGRldGVybWluZSBpdHMgYXZhaWxhYmlsaXR5IGFuZCBwb3RlbnRpYWwgaW5zdGFudGlhdGlvbiBtZXRob2RzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGVyZSYjMzk7cyBhIHBhdGggdG8gZXhlcmNpc2luZyB0aGlzIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERNOTAwMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWc9MTc9aWYgTkVUX1ZFTkRPUl9EQVZJQ09NXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWctMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWc6MTk6Y29uZmlnIERNOTAwMFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7RE05MDAwIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWctMjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWc6MzA6Y29uZmlnIERNOTAwMF9GT1JDRV9TSU1QTEVfUEhZX1BPTExcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7Rm9yY2Ugc2ltcGxlIE5TUiBiYXNlZCBQSFkgcG9sbGluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDEyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MzYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBEZXBlbmRlbmNpZXMgb2YgRE05MDAwKioKCk9rYXksIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBvZiBgRE05MDAwYC4gVGhpcyBpc24mIzM5O3QganVzdCBhIGNhc3VhbCBleGVyY2lzZTsgaXQmIzM5O3MgdGhlIGZvdW5kYXRpb24gZm9yIGFueSBtZWFuaW5nZnVsIGFuYWx5c2lzLCBtb2RpZmljYXRpb24sIG9yIGludGVncmF0aW9uLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGdldHRpbmcgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyBkaXJlY3QgZGVwZW5kZW5jaWVzIOKAkyB0aGUgbGlicmFyaWVzLCBtb2R1bGVzLCBvciBzZXJ2aWNlcyBpdCBleHBsaWNpdGx5IGNhbGxzIG9yIHJlZmVyZW5jZXMuIEtub3dpbmcgKnRob3NlKiB3aWxsIGltbWVkaWF0ZWx5IHNob3cgbWUgdGhlIGJyZWFkdGggb2YgYERNOTAwMGAmIzM5O3MgaW50ZXJhY3Rpb24gd2l0aCB0aGUgc3lzdGVtLgoKRnJvbSB0aGVyZSwgSSYjMzk7bGwgbmVlZCB0byB0aGluayBhYm91dCB0aGUgdHJhbnNpdGl2ZSBkZXBlbmRlbmNpZXM6IHdoYXQgKnRob3NlKiBkZXBlbmRlbmNpZXMgcmVseSBvbi4gVGhpcyBpcyB3aGVyZSB0aGluZ3MgY2FuIGdldCBtZXNzeSwgYW5kIHdoZXJlIHBvdGVudGlhbCB2ZXJzaW9uIGNvbmZsaWN0cyBvciB1bmZvcmVzZWVuIHNpZGUgZWZmZWN0cyBhcmUgbW9zdCBsaWtlbHkgdG8gbHVyay4gQSBxdWljayBkZXBlbmRlbmN5IGdyYXBoIHZpc3VhbGl6YXRpb24gd291bGQgYmUgaW1tZW5zZWx5IGhlbHBmdWwgcmlnaHQgYWJvdXQgbm93LiBJIG5lZWQgdG8gYmUgYWJsZSB0byBzZWUgdGhlIG5lc3RlZCBzdHJ1Y3R1cmUuCgpCZXlvbmQgc2ltcGxlIGRlcGVuZGVuY2llcywgSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgdGhpbmdzIGxpa2UgY29uZmlndXJhdGlvbiBmaWxlcywgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBvciBldmVuIGV4dGVybmFsIGRhdGEgc291cmNlcy4gJiMzNDtEZXBlbmRlbmNpZXMmIzM0OyBhcmUgbW9yZSB0aGFuIGp1c3QgY29kZSBjYWxscy4gSXMgYERNOTAwMGAgYXNzdW1pbmcgc3BlY2lmaWMgZGF0YWJhc2Ugc2NoZW1hIHZlcnNpb25zPyBEb2VzIGl0IHJlbHkgb24gY2VydGFpbiBuZXR3b3JrIGNvbmZpZ3VyYXRpb25zIG9yIHNoYXJlZCByZXNvdXJjZXM/IEkgbmVlZCB0byBidWlsZCBhIGhvbGlzdGljIHBpY3R1cmUuCgpPbmNlIEkgaGF2ZSBhIG1hcCBvZiBpdHMgZGVwZW5kZW5jaWVzLCBJIGNhbiBiZWdpbiB0byBhc3Nlc3Mgcmlzay4gV2hpY2ggZGVwZW5kZW5jaWVzIGFyZSBleHRlcm5hbCBhbmQgcG90ZW50aWFsbHkgdW5zdGFibGU/IFdoaWNoIGFyZSBjcml0aWNhbCB0byBmdW5jdGlvbmFsaXR5PyBXaGljaCBhcmUgdW5kZXIgYWN0aXZlIGRldmVsb3BtZW50IGFuZCBsaWFibGUgdG8gaW50cm9kdWNlIGJyZWFraW5nIGNoYW5nZXM/IFdoZXJlIGFyZSB0aGVyZSBvcHBvcnR1bml0aWVzIHRvIHJlZmFjdG9yLCBzbGltIGRvd24sIG9yIHJlcGxhY2UgZGVwZW5kZW5jaWVzIHdpdGggbW9yZSByb2J1c3Qgb3IgZWZmaWNpZW50IGFsdGVybmF0aXZlcz8gVGhpcyBkZXBlbmRlbmN5IGFuYWx5c2lzIGlzIGEgY3JpdGljYWwgZmlyc3Qgc3RlcC4gSXQgaXMgdGhlIHJvYWRtYXAsIGFuZCBJIG5lZWQgdG8gc3RhcnQgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZz0xOT1jb25maWcgRE05MDAwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWctMjAtXHR0cmlzdGF0ZSBcJiMzNDtETTkwMDAgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnOjIxOlx0ZGVwZW5kcyBvbiBBUk0gfHwgTUlQUyB8fCBDT0xERklSRSB8fCBOSU9TMiB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZy0yMi1cdHNlbGVjdCBDUkMzMlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZz0zMD1jb25maWcgRE05MDAwX0ZPUkNFX1NJTVBMRV9QSFlfUE9MTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnLTMxLVx0Ym9vbCBcJiMzNDtGb3JjZSBzaW1wbGUgTlNSIGJhc2VkIFBIWSBwb2xsaW5nXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWc6MzI6XHRkZXBlbmRzIG9uIERNOTAwMFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnLTMzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZz0zOT1jb25maWcgRE05MDUxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWctNDAtXHR0cmlzdGF0ZSBcJiMzNDtETTkwNTEgU1BJIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZzo0MTpcdGRlcGVuZHMgb24gU1BJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWctNDItXHRzZWxlY3QgQ1JDMzJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjY4CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgYSBETTkwMDAgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgbWluZCBzdGFydHMganVtcGluZyB0aHJvdWdoIHRoZSBwb3NzaWJpbGl0aWVzLiBGaXJzdCwgaXQgZGVwZW5kcyBvbiB0aGUgYXJjaGl0ZWN0dXJlLCBwb3RlbnRpYWxseSBgQVJNYCwgYE1JUFNgLCBgQ09MREZJUkVgLCBgTklPUzJgLCBvciBgQ09NUElMRV9URVNUYC4gSWYgaXQmIzM5O3MgYENPTVBJTEVfVEVTVGAsIGF0IGxlYXN0IGl0IGNvbXBpbGVzLiBCdXQgaXQmIzM5O3MgYSBwbGF0Zm9ybSBkcml2ZXIsIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWcuIENhbiBJIGV2ZW4gZnV6eiB0aGlzIGVmZmVjdGl2ZWx5IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VPwoKSSBrbm93IHRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgYW5kIHRoYXQgUUVNVSBtYXkgb25seSBlbXVsYXRlIHRoZSBETTkwMDAgb24gY2VydGFpbiBBUk0gYm9hcmRzLCBzdWNoIGFzIHRoZSBtaW5pMjQ0MC4gSSBuZWVkIHRvIGtub3cgaWYgUUVNVSAqZG9lcyogZW11bGF0ZSB0aGUgRE05MDAwLiBIYW5nIG9uLCB3YXNuJiMzOTt0IHRoZXJlIHNvbWV0aGluZyBhYm91dCBRRU1VIHN1cHBvcnRpbmcgU01DLCBhbmQgbWF5YmUgZXZlbiBMQU45MTE4PyBXYWl0LCBkb2VzIGl0IGVtdWxhdGUgRE05MDAwPyBJIGRvbiYjMzk7dCBoYXZlIHRoZSBzb3VyY2UgaGFuZHksIGJ1dCBJIGNhbiBjaGVjayBpZiBpdCByZWxpZXMgb24gc3BlY2lmaWMgaGFyZHdhcmUuCgpFdmVuIGlmIGl0JiMzOTtzIGVtdWxhdGVkIGluIHNvbWUgc3BlY2lmaWMgQVJNIG1hY2hpbmUgdHlwZSwgc3l6a2FsbGVyIHVzdWFsbHkgcnVucyBvbiB4ODZfNjQsIGFybTY0LCBldGMuIHdpdGggYHZpcnRgIG1hY2hpbmUgdHlwZS4gVGhlIGB2aXJ0YCBtYWNoaW5lIHR5cGUgYWxtb3N0IGNlcnRhaW5seSBkb2VzIG5vdCBpbmNsdWRlIGEgRE05MDAwIGRldmljZS4gVGhlbiB0aGVyZSYjMzk7cyB0aGUgY29yZSBvZiB0aGUgbWF0dGVyOiB0aGlzIHBhdGNoIGlzIGp1c3QgYSBmaXggZm9yIGVycm9yIGhhbmRsaW5nICppbiogYGRtOTAwMF9wcm9iZWAuIElzIGl0IGV2ZW4gd29ydGggdGhlIGVmZm9ydCBvZiBmdXp6aW5nLCBnaXZlbiB0aGF0IGZhY3Q/CgpOb3csIGlmIGl0JiMzOTtzIGEgcHJvYmUgZnVuY3Rpb24sIHN5emthbGxlciAqbWlnaHQqIGJlIGFibGUgdG8gZnV6eiBpdCwgcHJvdmlkZWQgaXQgY2FuIGluamVjdCBwbGF0Zm9ybSBkZXZpY2VzIHNvbWVob3cg4oCTIG1heWJlIHZpYSBgc3l6X2Rldl9pbml0YCBvciBzaW1pbGFyIHBzZXVkby1zeXNjYWxscywgb3IgZXZlbiB0aHJvdWdoIGNvbmZpZ2ZzL3N5c2ZzLiBCdXQgdGhlIHBhdGNoIGlzIGp1c3QgZm9yIHRoZSBwcm9iZSBlcnJvciBwYXRoIQoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgYGRtOTAwMF9wcm9iZWAgaXMgZXZlbiByZWFjaGFibGUuIEl0ICppcyogYSBwbGF0Zm9ybSBkcml2ZXIsIHRob3VnaC4gTGV0IG1lIGp1c3QgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGNvZGUgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDEyOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RtOTAwMF9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYz0xNDExPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmM6MTQxMjpkbTkwMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtMTQxMy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYy0xNDgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYzoxNDgyOlx0ZGV2X2RiZyhcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7ZG05MDAwX3Byb2JlKClcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYy0xNDgzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmM9MTgwMj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBkbTkwMDBfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtMTgwNy1cdH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jOjE4MDg6XHQucHJvYmUgICA9IGRtOTAwMF9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtMTgwOS1cdC5yZW1vdmUgPSBkbTkwMDBfZHJ2X3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTMxCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIERNOTAwMCBEcml2ZXImIzM5O3MgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gdGhlIGBkbTkwMDBgIGRyaXZlciBpcyByZWdpc3RlcmVkIGFzIGEgcGxhdGZvcm0gZHJpdmVyIHVzaW5nIGBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXJgLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgcGxhdGZvcm0gZHJpdmVycywgZXNwZWNpYWxseSB0aG9zZSB0aWVkIHRvIHNwZWNpZmljIGhhcmR3YXJlIGxpa2UgdGhpcyBEYXZpY29tIERNOTAwMCwgYXJlIHVzdWFsbHkgbGVmdCB1bnRvdWNoZWQgYnkgZnV6emVycyB1bmxlc3MgeW91IGNhbiBhY3R1YWxseSAqaW5zdGFudGlhdGUqIHRoZSBkZXZpY2UuIFlvdSBuZWVkIGEgZGV2aWNlIHByZXNlbnQgdG8gZ2V0IHRvIGEgcHJvYmUgZnVuY3Rpb24sIHJpZ2h0PwoKV2FpdCBhIG1pbnV0ZS4uLiBkb2VzIHN5emthbGxlciBoYXZlIHNvbWUgdHJpY2sgdXAgaXRzIHNsZWV2ZT8gRG9lcyBpdCBoYXZlIGEgd2F5IHRvIGdlbmVyYXRlIGRldmljZSB0cmVlIG92ZXJsYXlzIG9yIHVzZSBgc3l6X2Rldl9pbml0YCB0byBmYWtlIHRoZSBoYXJkd2FyZT8gTm8sIHRoYXQgY2FuJiMzOTt0IGJlIHJpZ2h0LiBTeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBhICpnZW5lcmFsKiBwbGF0Zm9ybSBkZXZpY2UgZnV6emVyIHRoYXQmIzM5O2xsIHdvcmsgYWNyb3NzIHRoZSBib2FyZCBmb3IgZHJpdmVycyB3aGVyZSB0aGUgaGFyZHdhcmUgZG9lc24mIzM5O3QgZXhpc3QuIFRoYXQgd291bGQgYmUgcHJldHR5IGFtYXppbmcsIGJ1dCBJJiMzOTttIHByZXR0eSBzdXJlIGl0JiMzOTtzIG5vdCBhIHN0YW5kYXJkIGZlYXR1cmUuCgpTbywgaWYgYWxsIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggaXMgdGhlIHByb2JlIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgZm9yIHRoaXMgc3BlY2lmaWMgRE05MDAwLCB0aGVuIGl0JiMzOTtzICpoaWdobHkqIHVubGlrZWx5IHRvIGdldCB0cmlnZ2VyZWQgaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBJdCYjMzk7cyBqdXN0IHRvbyBzcGVjaWZpYyB1bmxlc3MgeW91IHNwZWNpZmljYWxseSB0YXJnZXQgaXQuCgpBbHJpZ2h0LCBiZWZvcmUgSSBjb21wbGV0ZWx5IGRpc21pc3MgdGhpcywgbGV0IG1lIHF1aWNrbHkgY2hlY2suLi4gZG9lcyBzeXprYWxsZXIgaGFwcGVuIHRvIGhhdmUgYSAqZGVzY3JpcHRpb24qIG9yIGFueSBraW5kIG9mIGRlZGljYXRlZCBzdXBwb3J0IGZvciB0aGUgZG05MDAwPyBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3Npbmcgc29tZXRoaW5nIG9idmlvdXMuIExldCBtZSBzZWFyY2guLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkbTkwMDAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzeXMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTI6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA2NwoJCQkJCQkJb3V0cHV0OiAxMjgKCQkJCQkJCXRob3VnaHRzOiA0NDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBGdXp6aW5nIFdvcnRoaW5lc3MqKgoKT2theSwgc28gSSBuZWVkIHRvIGRlY2lkZSBpZiB0aGlzIGNvZGUgaXMgd29ydGggZnV6emluZy4gVGhlIHByb21wdCBzcGVjaWZpZWQgdW5yZWFjaGFibGUgY29kZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGFuZCBJIHRoaW5rIEkmIzM5O3ZlIGdvdCB0aGlzIGZpZ3VyZWQgb3V0LiBJIGNhbm5vdCB1c2UgZ3JlcHBlciBmb3IgYC9zeXMvYCwgc28gbGV0JiMzOTtzIHRoaW5rIHRoaXMgdGhyb3VnaC4gVGhlIHRhcmdldCBpcyB0aGUgYGRtOTAwMF9wcm9iZWAgZnVuY3Rpb24uIE5vdywgdGhhdCYjMzk7cyBmb3IgdGhlIERhdmljb20gRE05MDAwIGV0aGVybmV0IGNvbnRyb2xsZXIuIENyaXRpY2FsbHksIHRoaXMgaXMgYW4gSVNBL3BsYXRmb3JtIGRldmljZSwgbWVtb3J5LW1hcHBlZC4gSXQgaXNuJiMzOTt0IGEgVVNCIG9yIFBDSSBkZXZpY2UuCgpJbiBhIHN0YW5kYXJkIHg4Nl82NCBRRU1VIHNldHVwLCBsaWtlIGB2aXJ0YCBvciBgcGNgIG1hY2hpbmUsIHRoZXJlIGlzIHNpbXBseSBubyBETTkwMDAgZGV2aWNlIHByZXNlbnQuIEV2ZW4gaWYgdGhlIGRyaXZlciBpcyBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwsIHRoZSBwcm9iZSBmdW5jdGlvbiwgYGRtOTAwMF9wcm9iZWAsIHdpbGwgKm5ldmVyKiBnZXQgY2FsbGVkIGJlY2F1c2UgdGhlcmUgaXMgbm8gZGV2aWNlIHRyZWUgbm9kZSwgQUNQSSBub2RlLCBvciBldmVuIGEgYm9hcmQgZmlsZSB0aGF0IHdvdWxkIGluc3RhbnRpYXRlIGEgJiMzNDtkbTkwMDAmIzM0OyBwbGF0Zm9ybSBkZXZpY2UuIEl0IGlzIG5vdCBzb21ldGhpbmcgdGhhdCB3b3VsZCBiZSBwcmVzZW50LgoKTGV0IG1lIGRvdWJsZS1jaGVjayB0aG91Z2gsIGp1c3QgdG8gYmUgc3VyZS4gQ2FuIGEgcGxhdGZvcm0gZGV2aWNlIGJlIGluc3RhbnRpYXRlZCBmcm9tIHVzZXJzcGFjZT8gVGhlcmUgaXMgYSBwb3NzaWJsZSB3YXkgdmlhIGRldmljZSB0cmVlIG92ZXJsYXlzLCBidXQgdGhhdCByZXF1aXJlcyBgQ09ORklHX09GX09WRVJMQVlgIGJlaW5nIGVuYWJsZWQsIHdoaWNoIGlzIG5vdCB1c3VhbGx5IHRoZSBjYXNlIGluIHRoZSBkZWZhdWx0IGNvbmZpZywgYW5kIHJlcXVpcmVzIGEgdXNlcnNwYWNlIGludGVyZmFjZSB0aGF0IGlzbiYjMzk7dCB0eXBpY2FsbHkgYXZhaWxhYmxlLiBUaGVyZSYjMzk7cyBhbHNvIHRoZSBsZWdhY3kgYHBsYXRmb3JtX2RldmljZV9yZWdpc3RlcmAsIGJ1dCB0aGF0JiMzOTtzIGtlcm5lbC1vbmx5LiBTbywgbm8sIHRoZXJlIGlzbiYjMzk7dCBhIGdlbmVyYWwgd2F5IGZvciBhbiB1bnByaXZpbGVnZWQgdXNlciB0byBjcmVhdGUgYXJiaXRyYXJ5IHBsYXRmb3JtIGRldmljZXMuCgpUaGVyZWZvcmUsIGBkbTkwMDBfcHJvYmVgIGlzIHVucmVhY2hhYmxlLgoKU28sIGxldCBtZSB3cml0ZSBteSByZWFzb25pbmcgaW4gYSBtb3JlIGNvbXBsZXRlIHdheS4gVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIG9mIHRoaXMgYGRtOTAwMGAgZXRoZXJuZXQgZHJpdmVyLiBJdCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgbWVtb3J5LW1hcHBlZCBoYXJkd2FyZS4gSW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBsaWtlIFFFTVUgb3IgR0NFLCB3aGljaCBhcmUgdHlwaWNhbGx5IHVzZWQgZm9yIGZ1enppbmcsIHRoaXMgaGFyZHdhcmUgaXNuJiMzOTt0IHByZXNlbnQsIGFuZCB0aGVyZSYjMzk7cyBubyB3YXkgdG8gaW5zdGFudGlhdGUgYXJiaXRyYXJ5IHBsYXRmb3JtIGRldmljZXMgZnJvbSB1c2Vyc3BhY2UuIFRodXMsIHRoZSByZWxldmFudCBjb2RlIGlzIHVucmVhY2hhYmxlLiBUaGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSwgbWFraW5nIGl0IG5vdCB3b3J0aCBmdXp6aW5nLiBUaW1lIHRvIHNldCBteSByZXN1bHQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDEyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGVycm9yIGhhbmRsaW5nIHBhdGggb2YgdGhlIERhdmljb20gRE05MDAwIGV0aGVybmV0IGRyaXZlciAoZG05MDAwX3Byb2JlKS4gVGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgbWVtb3J5LW1hcHBlZCBoYXJkd2FyZS4gSW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKSB1c2VkIGZvciBmdXp6aW5nLCB0aGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50LCBhbmQgdGhlcmUgaXMgbm8gZ2VuZXJpYyB1c2Vyc3BhY2UgbWVjaGFuaXNtIHRvIGluc3RhbnRpYXRlIGFyYml0cmFyeSBwbGF0Zm9ybSBkZXZpY2VzIHRvIHRyaWdnZXIgdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGFuZCBub3Qgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBlcnJvciBoYW5kbGluZyBwYXRoIG9mIHRoZSBEYXZpY29tIERNOTAwMCBldGhlcm5ldCBkcml2ZXIgKGRtOTAwMF9wcm9iZSkuIFRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHNwZWNpZmljIG1lbW9yeS1tYXBwZWQgaGFyZHdhcmUuIEluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VIG9yIEdDRSkgdXNlZCBmb3IgZnV6emluZywgdGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCwgYW5kIHRoZXJlIGlzIG5vIGdlbmVyaWMgdXNlcnNwYWNlIG1lY2hhbmlzbSB0byBpbnN0YW50aWF0ZSBhcmJpdHJhcnkgcGxhdGZvcm0gZGV2aWNlcyB0byB0cmlnZ2VyIHRoZSBwcm9iZSBmdW5jdGlvbi4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBhbmQgbm90IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMjo0ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTI6NDc6MDEuNTYxMDk4MjM5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU5NDkwMTAwMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcHJvYmUgZXJyb3IgaGFuZGxpbmcgcGF0aCBvZiB0aGUgRGF2aWNvbSBETTkwMDAgZXRoZXJuZXQgZHJpdmVyIChkbTkwMDBfcHJvYmUpLiBUaGlzIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzcGVjaWZpYyBtZW1vcnktbWFwcGVkIGhhcmR3YXJlLiBJbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSBvciBHQ0UpIHVzZWQgZm9yIGZ1enppbmcsIHRoaXMgaGFyZHdhcmUgaXMgbm90IHByZXNlbnQsIGFuZCB0aGVyZSBpcyBubyBnZW5lcmljIHVzZXJzcGFjZSBtZWNoYW5pc20gdG8gaW5zdGFudGlhdGUgYXJiaXRyYXJ5IHBsYXRmb3JtIGRldmljZXMgdG8gdHJpZ2dlciB0aGUgcHJvYmUgZnVuY3Rpb24uIFRoZXJlZm9yZSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgYW5kIG5vdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTI6NDc6MDEuNTYxMTA5Mjg5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mzk5Njg5MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyYWIzZjQxNzdkZjc3ODFkZjdlZGU1ZmFmMDYyNDFhODEyMTE2YWMyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDIwIDEyOjQ3OjAwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jXFxuaW5kZXggYjg3ZWFmMGMyNTBjZS4uOTA0Yjg1OWYwYTYzNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuY1xcbkBAIC0xNTExLDEzICsxNTExLDE4IEBAIGRtOTAwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHR9XFxuIFxcbiBcXHRkYi1cXHUwMDNlaXJxX3dha2UgPSBwbGF0Zm9ybV9nZXRfaXJxX29wdGlvbmFsKHBkZXYsIDEpO1xcbi1cXHRpZiAoZGItXFx1MDAzZWlycV93YWtlIFxcdTAwM2U9IDApIHtcXG4rXFx0aWYgKGRiLVxcdTAwM2VpcnFfd2FrZSBcXHUwMDNjIDAgXFx1MDAyNlxcdTAwMjYgZGItXFx1MDAzZWlycV93YWtlICE9IC1FTlhJTykge1xcbitcXHRcXHRyZXQgPSBkYi1cXHUwMDNlaXJxX3dha2U7XFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXHR9XFxuK1xcdGlmIChkYi1cXHUwMDNlaXJxX3dha2UgXFx1MDAzZSAwKSB7XFxuIFxcdFxcdGRldl9kYmcoZGItXFx1MDAzZWRldiwgXFxcIndha2V1cCBpcnEgJWRcXFxcblxcXCIsIGRiLVxcdTAwM2VpcnFfd2FrZSk7XFxuIFxcbiBcXHRcXHRyZXQgPSByZXF1ZXN0X2lycShkYi1cXHUwMDNlaXJxX3dha2UsIGRtOTAwMF93b2xfaW50ZXJydXB0LFxcbiBcXHRcXHRcXHRcXHQgIElSUUZfU0hBUkVELCBkZXZfbmFtZShkYi1cXHUwMDNlZGV2KSwgbmRldik7XFxuIFxcdFxcdGlmIChyZXQpIHtcXG4gXFx0XFx0XFx0ZGV2X2VycihkYi1cXHUwMDNlZGV2LCBcXFwiY2Fubm90IGdldCB3YWtldXAgaXJxICglZClcXFxcblxcXCIsIHJldCk7XFxuK1xcdFxcdFxcdGdvdG8gb3V0O1xcbiBcXHRcXHR9IGVsc2Uge1xcbiBcXG4gXFx0XFx0XFx0LyogdGVzdCB0byBzZWUgaWYgaXJxIGlzIHJlYWxseSB3YWtldXAgY2FwYWJsZSAqL1xcbkBAIC0xNTI1LDYgKzE1MzAsNyBAQCBkbTkwMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0XFx0XFx0aWYgKHJldCkge1xcbiBcXHRcXHRcXHRcXHRkZXZfZXJyKGRiLVxcdTAwM2VkZXYsIFxcXCJpcnEgJWQgY2Fubm90IHNldCB3YWtldXAgKCVkKVxcXFxuXFxcIixcXG4gXFx0XFx0XFx0XFx0XFx0ZGItXFx1MDAzZWlycV93YWtlLCByZXQpO1xcbitcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4gXFx0XFx0XFx0fSBlbHNlIHtcXG4gXFx0XFx0XFx0XFx0aXJxX3NldF9pcnFfd2FrZShkYi1cXHUwMDNlaXJxX3dha2UsIDApO1xcbiBcXHRcXHRcXHRcXHRkYi1cXHUwMDNld2FrZV9zdXBwb3J0ZWQgPSAxO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMjo0NzowMi4xMDI1Mjg4NTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2NTQwNzU1NjkwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGVycm9yIGhhbmRsaW5nIHBhdGggb2YgdGhlIERhdmljb20gRE05MDAwIGV0aGVybmV0IGRyaXZlciAoZG05MDAwX3Byb2JlKS4gVGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgbWVtb3J5LW1hcHBlZCBoYXJkd2FyZS4gSW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKSB1c2VkIGZvciBmdXp6aW5nLCB0aGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50LCBhbmQgdGhlcmUgaXMgbm8gZ2VuZXJpYyB1c2Vyc3BhY2UgbWVjaGFuaXNtIHRvIGluc3RhbnRpYXRlIGFyYml0cmFyeSBwbGF0Zm9ybSBkZXZpY2VzIHRvIHRyaWdnZXIgdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGFuZCBub3Qgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDJhYjNmNDE3N2RmNzc4MWRmN2VkZTVmYWYwNjI0MWE4MTIxMTZhYzJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyMCAxMjo0NzowMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jXG5pbmRleCBiODdlYWYwYzI1MGNlLi45MDRiODU5ZjBhNjM1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuY1xuQEAgLTE1MTEsMTMgKzE1MTEsMTggQEAgZG05MDAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHR9XG4gXG4gXHRkYi1cdTAwM2VpcnFfd2FrZSA9IHBsYXRmb3JtX2dldF9pcnFfb3B0aW9uYWwocGRldiwgMSk7XG4tXHRpZiAoZGItXHUwMDNlaXJxX3dha2UgXHUwMDNlPSAwKSB7XG4rXHRpZiAoZGItXHUwMDNlaXJxX3dha2UgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IGRiLVx1MDAzZWlycV93YWtlICE9IC1FTlhJTykge1xuK1x0XHRyZXQgPSBkYi1cdTAwM2VpcnFfd2FrZTtcbitcdFx0Z290byBvdXQ7XG4rXHR9XG4rXHRpZiAoZGItXHUwMDNlaXJxX3dha2UgXHUwMDNlIDApIHtcbiBcdFx0ZGV2X2RiZyhkYi1cdTAwM2VkZXYsIFwid2FrZXVwIGlycSAlZFxcblwiLCBkYi1cdTAwM2VpcnFfd2FrZSk7XG4gXG4gXHRcdHJldCA9IHJlcXVlc3RfaXJxKGRiLVx1MDAzZWlycV93YWtlLCBkbTkwMDBfd29sX2ludGVycnVwdCxcbiBcdFx0XHRcdCAgSVJRRl9TSEFSRUQsIGRldl9uYW1lKGRiLVx1MDAzZWRldiksIG5kZXYpO1xuIFx0XHRpZiAocmV0KSB7XG4gXHRcdFx0ZGV2X2VycihkYi1cdTAwM2VkZXYsIFwiY2Fubm90IGdldCB3YWtldXAgaXJxICglZClcXG5cIiwgcmV0KTtcbitcdFx0XHRnb3RvIG91dDtcbiBcdFx0fSBlbHNlIHtcbiBcbiBcdFx0XHQvKiB0ZXN0IHRvIHNlZSBpZiBpcnEgaXMgcmVhbGx5IHdha2V1cCBjYXBhYmxlICovXG5AQCAtMTUyNSw2ICsxNTMwLDcgQEAgZG05MDAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRcdFx0aWYgKHJldCkge1xuIFx0XHRcdFx0ZGV2X2VycihkYi1cdTAwM2VkZXYsIFwiaXJxICVkIGNhbm5vdCBzZXQgd2FrZXVwICglZClcXG5cIixcbiBcdFx0XHRcdFx0ZGItXHUwMDNlaXJxX3dha2UsIHJldCk7XG4rXHRcdFx0XHRnb3RvIG91dDtcbiBcdFx0XHR9IGVsc2Uge1xuIFx0XHRcdFx0aXJxX3NldF9pcnFfd2FrZShkYi1cdTAwM2VpcnFfd2FrZSwgMCk7XG4gXHRcdFx0XHRkYi1cdTAwM2V3YWtlX3N1cHBvcnRlZCA9IDE7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMjo0NzowMi4xMDI1MzI4MTNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDY3NTY2MTMwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERNOTAwMCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIG1vZGlmeWluZyBgZG05MDAwX3Byb2JlYCBpbiB0aGUgYGRtOTAwMC5jYCBkcml2ZXIuIEkgc2VlIGl0J3MgY2hhbmdpbmcgdGhlIHdheSBgZGItXHUwMDNlaXJxX3dha2VgLCBvYnRhaW5lZCBmcm9tIGBwbGF0Zm9ybV9nZXRfaXJxX29wdGlvbmFsYCwgaXMgaGFuZGxlZC4gU3BlY2lmaWNhbGx5LCB0aGVyZSdzIGEgY2hlY2sgZm9yIG5lZ2F0aXZlIGVycm9yIGNvZGVzICpleGNlcHQqIGAtRU5YSU9gLCBhbmQgaGFuZGxpbmcgZm9yIHBvc2l0aXZlIHZhbHVlcyBhbmQgcG90ZW50aWFsIGZhaWx1cmVzIG9mIGBpcnFfc2V0X2lycV93YWtlYC4gIFRoaXMgZHJpdmVyIGlzIGZvciBEYXZpY29tIERNOTAwMC1zZXJpZXMgZXRoZXJuZXQgY29udHJvbGxlcnMsIHdoaWNoIGFyZSBJU0Egb3IgcGxhdGZvcm0gZGV2aWNlcy5cblxuVGhlIGtleSBxdWVzdGlvbiBpbiBteSBtaW5kIGlzLCBjYW4gSSByZWFjaCB0aGlzIGRyaXZlciB3aXRoIGZ1enppbmc/IERvZXMgUUVNVSBldmVuIGVtdWxhdGUgdGhpcyBwYXJ0aWN1bGFyIGRldmljZT8gSSBuZWVkIHRvIGNoZWNrLiAgSG1tLCBRRU1VIGhhcyBkcml2ZXJzIGZvciBvdGhlciBldGhlcm5ldCBjb250cm9sbGVycywgbGlrZSBTTUM5MUMxMTEgYW5kIExBTjkxMTgsIGJ1dCBkb2VzIGl0IGhhdmUgYGRtOTAwMGA/ICAqWWVzKiwgaXQgc2VlbXMgUUVNVSAqZG9lcyogaGF2ZSBgaHcvbmV0L2RtOTAwMC5jYCEgU28gdGhhdCdzIGdvb2QuXG5cbkJ1dCB3YWl0LCB0aGlzICppcyogYSBwbGF0Zm9ybSBkcml2ZXIuIFNvIHRoZSBuZXh0IHN0ZXAgaXMgY2hlY2tpbmcgd2hldGhlciBzeXprYWxsZXIgY2FuIHJlYWNoIGl0LiBJdCdzIG9mdGVuIHBvc3NpYmxlIHRvIGZ1enogcGxhdGZvcm0gZHJpdmVycyB2aWEgc3l6a2FsbGVyIHdpdGggcHNldWRvLWRldmljZXMgb3IgZGV2aWNlIHRyZWUgb3ZlcmxheXMgaWYgaXQncyBhIHBsYXRmb3JtIGRyaXZlciwgc3BlY2lmaWNhbGx5IGlmIGl0J3MgcG9zc2libGUgdG8gaW5zdGFudGlhdGUgdGhlbSwgc2F5LCBieSBgc3l6X2Rldl9pbml0YC4gSSBjb25maXJtIHRoYXQgYGRtOTAwMGAgaW5kZWVkIHVzZXMgYHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXZgLiAgSG93ZXZlciwgc3l6a2FsbGVyIGRvZXNuJ3QgKmdlbmVyYWxseSogZnV6eiAqYXJiaXRyYXJ5KiBwbGF0Zm9ybSBkcml2ZXJzLCB1bmxlc3MgdGhleSdyZSBpbnN0YW50aWF0ZWQgdmlhIGRldmljZSB0cmVlIG92ZXJsYXksIG9yIGlmIHRoZXkncmUgUENJL1VTQiBkcml2ZXJzLlxuXG5JdCdzIGEgcGxhdGZvcm0gZHJpdmVyLCBidXQgb25seSB0aGUgcHJvYmUgZnVuY3Rpb24gaXMgbW9kaWZpZWQuIFRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYGRtOTAwMGAgaXMgZW5hYmxlZCBpbiBjb21tb24gY29uZmlndXJhdGlvbnMgb3IgaWYgdGhlcmUgaXMgYSB3YXkgdG8gaW5zdGFudGlhdGUgaXQuICBNeSBuZXh0IHN0ZXAgaXMgdG8gc2VhcmNoIGZvciBgZG05MDAwYCB3aXRoaW4gdGhlIEtjb25maWcgZmlsZXMgdG8gZGV0ZXJtaW5lIGl0cyBhdmFpbGFiaWxpdHkgYW5kIHBvdGVudGlhbCBpbnN0YW50aWF0aW9uIG1ldGhvZHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXJlJ3MgYSBwYXRoIHRvIGV4ZXJjaXNpbmcgdGhpcyBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzAzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQ1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTI6NDc6MTIuNzc4MTk3Njg5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzEzNTI4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRE05MDAwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWc9MTc9aWYgTkVUX1ZFTkRPUl9EQVZJQ09NXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZzoxOTpjb25maWcgRE05MDAwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJETTkwMDAgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZy0yOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWc6MzA6Y29uZmlnIERNOTAwMF9GT1JDRV9TSU1QTEVfUEhZX1BPTExcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWctMzEtXFx0Ym9vbCBcXFwiRm9yY2Ugc2ltcGxlIE5TUiBiYXNlZCBQSFkgcG9sbGluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTI6NDc6MTIuODk1MzQwODU2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM1NDU3NjYwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgRGVwZW5kZW5jaWVzIG9mIERNOTAwMCoqXG5cbk9rYXksIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBETTkwMDBgLiBUaGlzIGlzbid0IGp1c3QgYSBjYXN1YWwgZXhlcmNpc2U7IGl0J3MgdGhlIGZvdW5kYXRpb24gZm9yIGFueSBtZWFuaW5nZnVsIGFuYWx5c2lzLCBtb2RpZmljYXRpb24sIG9yIGludGVncmF0aW9uLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgZ2V0dGluZyBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIGRpcmVjdCBkZXBlbmRlbmNpZXMg4oCTIHRoZSBsaWJyYXJpZXMsIG1vZHVsZXMsIG9yIHNlcnZpY2VzIGl0IGV4cGxpY2l0bHkgY2FsbHMgb3IgcmVmZXJlbmNlcy4gS25vd2luZyAqdGhvc2UqIHdpbGwgaW1tZWRpYXRlbHkgc2hvdyBtZSB0aGUgYnJlYWR0aCBvZiBgRE05MDAwYCdzIGludGVyYWN0aW9uIHdpdGggdGhlIHN5c3RlbS5cblxuRnJvbSB0aGVyZSwgSSdsbCBuZWVkIHRvIHRoaW5rIGFib3V0IHRoZSB0cmFuc2l0aXZlIGRlcGVuZGVuY2llczogd2hhdCAqdGhvc2UqIGRlcGVuZGVuY2llcyByZWx5IG9uLiBUaGlzIGlzIHdoZXJlIHRoaW5ncyBjYW4gZ2V0IG1lc3N5LCBhbmQgd2hlcmUgcG90ZW50aWFsIHZlcnNpb24gY29uZmxpY3RzIG9yIHVuZm9yZXNlZW4gc2lkZSBlZmZlY3RzIGFyZSBtb3N0IGxpa2VseSB0byBsdXJrLiBBIHF1aWNrIGRlcGVuZGVuY3kgZ3JhcGggdmlzdWFsaXphdGlvbiB3b3VsZCBiZSBpbW1lbnNlbHkgaGVscGZ1bCByaWdodCBhYm91dCBub3cuIEkgbmVlZCB0byBiZSBhYmxlIHRvIHNlZSB0aGUgbmVzdGVkIHN0cnVjdHVyZS5cblxuQmV5b25kIHNpbXBsZSBkZXBlbmRlbmNpZXMsIEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHRoaW5ncyBsaWtlIGNvbmZpZ3VyYXRpb24gZmlsZXMsIGVudmlyb25tZW50IHZhcmlhYmxlcywgb3IgZXZlbiBleHRlcm5hbCBkYXRhIHNvdXJjZXMuIFwiRGVwZW5kZW5jaWVzXCIgYXJlIG1vcmUgdGhhbiBqdXN0IGNvZGUgY2FsbHMuIElzIGBETTkwMDBgIGFzc3VtaW5nIHNwZWNpZmljIGRhdGFiYXNlIHNjaGVtYSB2ZXJzaW9ucz8gRG9lcyBpdCByZWx5IG9uIGNlcnRhaW4gbmV0d29yayBjb25maWd1cmF0aW9ucyBvciBzaGFyZWQgcmVzb3VyY2VzPyBJIG5lZWQgdG8gYnVpbGQgYSBob2xpc3RpYyBwaWN0dXJlLlxuXG5PbmNlIEkgaGF2ZSBhIG1hcCBvZiBpdHMgZGVwZW5kZW5jaWVzLCBJIGNhbiBiZWdpbiB0byBhc3Nlc3Mgcmlzay4gV2hpY2ggZGVwZW5kZW5jaWVzIGFyZSBleHRlcm5hbCBhbmQgcG90ZW50aWFsbHkgdW5zdGFibGU/IFdoaWNoIGFyZSBjcml0aWNhbCB0byBmdW5jdGlvbmFsaXR5PyBXaGljaCBhcmUgdW5kZXIgYWN0aXZlIGRldmVsb3BtZW50IGFuZCBsaWFibGUgdG8gaW50cm9kdWNlIGJyZWFraW5nIGNoYW5nZXM/IFdoZXJlIGFyZSB0aGVyZSBvcHBvcnR1bml0aWVzIHRvIHJlZmFjdG9yLCBzbGltIGRvd24sIG9yIHJlcGxhY2UgZGVwZW5kZW5jaWVzIHdpdGggbW9yZSByb2J1c3Qgb3IgZWZmaWNpZW50IGFsdGVybmF0aXZlcz8gVGhpcyBkZXBlbmRlbmN5IGFuYWx5c2lzIGlzIGEgY3JpdGljYWwgZmlyc3Qgc3RlcC4gSXQgaXMgdGhlIHJvYWRtYXAsIGFuZCBJIG5lZWQgdG8gc3RhcnQgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUzNiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDEyOjQ3OjE3LjI0OTkyMTMxM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDU0MzQ2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWc9MTk9Y29uZmlnIERNOTAwMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiRE05MDAwIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnOjIxOlxcdGRlcGVuZHMgb24gQVJNIHx8IE1JUFMgfHwgQ09MREZJUkUgfHwgTklPUzIgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnLTIyLVxcdHNlbGVjdCBDUkMzMlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnPTMwPWNvbmZpZyBETTkwMDBfRk9SQ0VfU0lNUExFX1BIWV9QT0xMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIkZvcmNlIHNpbXBsZSBOU1IgYmFzZWQgUEhZIHBvbGxpbmdcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnOjMyOlxcdGRlcGVuZHMgb24gRE05MDAwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnLTMzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZz0zOT1jb25maWcgRE05MDUxXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnLTQwLVxcdHRyaXN0YXRlIFxcXCJETTkwNTEgU1BJIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnOjQxOlxcdGRlcGVuZHMgb24gU1BJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnLTQyLVxcdHNlbGVjdCBDUkMzMlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMjo0NzoxNy4zMzA0OTM3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ3NTU5NzYwMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBhIERNOTAwMCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgbWluZCBzdGFydHMganVtcGluZyB0aHJvdWdoIHRoZSBwb3NzaWJpbGl0aWVzLiBGaXJzdCwgaXQgZGVwZW5kcyBvbiB0aGUgYXJjaGl0ZWN0dXJlLCBwb3RlbnRpYWxseSBgQVJNYCwgYE1JUFNgLCBgQ09MREZJUkVgLCBgTklPUzJgLCBvciBgQ09NUElMRV9URVNUYC4gSWYgaXQncyBgQ09NUElMRV9URVNUYCwgYXQgbGVhc3QgaXQgY29tcGlsZXMuIEJ1dCBpdCdzIGEgcGxhdGZvcm0gZHJpdmVyLCB3aGljaCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnLiBDYW4gSSBldmVuIGZ1enogdGhpcyBlZmZlY3RpdmVseSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVT9cblxuSSBrbm93IHRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgYW5kIHRoYXQgUUVNVSBtYXkgb25seSBlbXVsYXRlIHRoZSBETTkwMDAgb24gY2VydGFpbiBBUk0gYm9hcmRzLCBzdWNoIGFzIHRoZSBtaW5pMjQ0MC4gSSBuZWVkIHRvIGtub3cgaWYgUUVNVSAqZG9lcyogZW11bGF0ZSB0aGUgRE05MDAwLiBIYW5nIG9uLCB3YXNuJ3QgdGhlcmUgc29tZXRoaW5nIGFib3V0IFFFTVUgc3VwcG9ydGluZyBTTUMsIGFuZCBtYXliZSBldmVuIExBTjkxMTg/IFdhaXQsIGRvZXMgaXQgZW11bGF0ZSBETTkwMDA/IEkgZG9uJ3QgaGF2ZSB0aGUgc291cmNlIGhhbmR5LCBidXQgSSBjYW4gY2hlY2sgaWYgaXQgcmVsaWVzIG9uIHNwZWNpZmljIGhhcmR3YXJlLlxuXG5FdmVuIGlmIGl0J3MgZW11bGF0ZWQgaW4gc29tZSBzcGVjaWZpYyBBUk0gbWFjaGluZSB0eXBlLCBzeXprYWxsZXIgdXN1YWxseSBydW5zIG9uIHg4Nl82NCwgYXJtNjQsIGV0Yy4gd2l0aCBgdmlydGAgbWFjaGluZSB0eXBlLiBUaGUgYHZpcnRgIG1hY2hpbmUgdHlwZSBhbG1vc3QgY2VydGFpbmx5IGRvZXMgbm90IGluY2x1ZGUgYSBETTkwMDAgZGV2aWNlLiBUaGVuIHRoZXJlJ3MgdGhlIGNvcmUgb2YgdGhlIG1hdHRlcjogdGhpcyBwYXRjaCBpcyBqdXN0IGEgZml4IGZvciBlcnJvciBoYW5kbGluZyAqaW4qIGBkbTkwMDBfcHJvYmVgLiBJcyBpdCBldmVuIHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZywgZ2l2ZW4gdGhhdCBmYWN0P1xuXG5Ob3csIGlmIGl0J3MgYSBwcm9iZSBmdW5jdGlvbiwgc3l6a2FsbGVyICptaWdodCogYmUgYWJsZSB0byBmdXp6IGl0LCBwcm92aWRlZCBpdCBjYW4gaW5qZWN0IHBsYXRmb3JtIGRldmljZXMgc29tZWhvdyDigJMgbWF5YmUgdmlhIGBzeXpfZGV2X2luaXRgIG9yIHNpbWlsYXIgcHNldWRvLXN5c2NhbGxzLCBvciBldmVuIHRocm91Z2ggY29uZmlnZnMvc3lzZnMuIEJ1dCB0aGUgcGF0Y2ggaXMganVzdCBmb3IgdGhlIHByb2JlIGVycm9yIHBhdGghXG5cbkkgbmVlZCB0byBjb25maXJtIGlmIGBkbTkwMDBfcHJvYmVgIGlzIGV2ZW4gcmVhY2hhYmxlLiBJdCAqaXMqIGEgcGxhdGZvcm0gZHJpdmVyLCB0aG91Z2guIExldCBtZSBqdXN0IHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBjb2RlIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI2OCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMjo0NzozMi4wODY0NzI3MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODk0NzM5NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG05MDAwX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYz0xNDExPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jOjE0MTI6ZG05MDAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYy0xNDEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtMTQ4MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jOjE0ODI6XFx0ZGV2X2RiZyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiZG05MDAwX3Byb2JlKClcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtMTQ4My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmM9MTgwMj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBkbTkwMDBfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYy0xODA3LVxcdH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYzoxODA4OlxcdC5wcm9iZSAgID0gZG05MDAwX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtMTgwOS1cXHQucmVtb3ZlID0gZG05MDAwX2Rydl9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDEyOjQ3OjMyLjQ3NTk1MzgwOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4OTUzMTg3MTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIERNOTAwMCBEcml2ZXIncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIHRoZSBgZG05MDAwYCBkcml2ZXIgaXMgcmVnaXN0ZXJlZCBhcyBhIHBsYXRmb3JtIGRyaXZlciB1c2luZyBgcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyYC4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHBsYXRmb3JtIGRyaXZlcnMsIGVzcGVjaWFsbHkgdGhvc2UgdGllZCB0byBzcGVjaWZpYyBoYXJkd2FyZSBsaWtlIHRoaXMgRGF2aWNvbSBETTkwMDAsIGFyZSB1c3VhbGx5IGxlZnQgdW50b3VjaGVkIGJ5IGZ1enplcnMgdW5sZXNzIHlvdSBjYW4gYWN0dWFsbHkgKmluc3RhbnRpYXRlKiB0aGUgZGV2aWNlLiBZb3UgbmVlZCBhIGRldmljZSBwcmVzZW50IHRvIGdldCB0byBhIHByb2JlIGZ1bmN0aW9uLCByaWdodD9cblxuV2FpdCBhIG1pbnV0ZS4uLiBkb2VzIHN5emthbGxlciBoYXZlIHNvbWUgdHJpY2sgdXAgaXRzIHNsZWV2ZT8gRG9lcyBpdCBoYXZlIGEgd2F5IHRvIGdlbmVyYXRlIGRldmljZSB0cmVlIG92ZXJsYXlzIG9yIHVzZSBgc3l6X2Rldl9pbml0YCB0byBmYWtlIHRoZSBoYXJkd2FyZT8gTm8sIHRoYXQgY2FuJ3QgYmUgcmlnaHQuIFN5emthbGxlciBkb2Vzbid0IGhhdmUgYSAqZ2VuZXJhbCogcGxhdGZvcm0gZGV2aWNlIGZ1enplciB0aGF0J2xsIHdvcmsgYWNyb3NzIHRoZSBib2FyZCBmb3IgZHJpdmVycyB3aGVyZSB0aGUgaGFyZHdhcmUgZG9lc24ndCBleGlzdC4gVGhhdCB3b3VsZCBiZSBwcmV0dHkgYW1hemluZywgYnV0IEknbSBwcmV0dHkgc3VyZSBpdCdzIG5vdCBhIHN0YW5kYXJkIGZlYXR1cmUuXG5cblNvLCBpZiBhbGwgd2UncmUgZGVhbGluZyB3aXRoIGlzIHRoZSBwcm9iZSBmdW5jdGlvbiwgYW5kIGl0J3MgZm9yIHRoaXMgc3BlY2lmaWMgRE05MDAwLCB0aGVuIGl0J3MgKmhpZ2hseSogdW5saWtlbHkgdG8gZ2V0IHRyaWdnZXJlZCBpbiBhIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIEl0J3MganVzdCB0b28gc3BlY2lmaWMgdW5sZXNzIHlvdSBzcGVjaWZpY2FsbHkgdGFyZ2V0IGl0LlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBjb21wbGV0ZWx5IGRpc21pc3MgdGhpcywgbGV0IG1lIHF1aWNrbHkgY2hlY2suLi4gZG9lcyBzeXprYWxsZXIgaGFwcGVuIHRvIGhhdmUgYSAqZGVzY3JpcHRpb24qIG9yIGFueSBraW5kIG9mIGRlZGljYXRlZCBzdXBwb3J0IGZvciB0aGUgZG05MDAwPyBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBzb21ldGhpbmcgb2J2aW91cy4gTGV0IG1lIHNlYXJjaC4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTMxLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDEyOjQ3OjUxLjQyOTE0NDM4OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUzMzIyNzk2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkbTkwMDBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic3lzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTI6NDc6NTEuNTgyNDgxOTA0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1OTI3NTYxMzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgRnV6emluZyBXb3J0aGluZXNzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRlY2lkZSBpZiB0aGlzIGNvZGUgaXMgd29ydGggZnV6emluZy4gVGhlIHByb21wdCBzcGVjaWZpZWQgdW5yZWFjaGFibGUgY29kZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGFuZCBJIHRoaW5rIEkndmUgZ290IHRoaXMgZmlndXJlZCBvdXQuIEkgY2Fubm90IHVzZSBncmVwcGVyIGZvciBgL3N5cy9gLCBzbyBsZXQncyB0aGluayB0aGlzIHRocm91Z2guIFRoZSB0YXJnZXQgaXMgdGhlIGBkbTkwMDBfcHJvYmVgIGZ1bmN0aW9uLiBOb3csIHRoYXQncyBmb3IgdGhlIERhdmljb20gRE05MDAwIGV0aGVybmV0IGNvbnRyb2xsZXIuIENyaXRpY2FsbHksIHRoaXMgaXMgYW4gSVNBL3BsYXRmb3JtIGRldmljZSwgbWVtb3J5LW1hcHBlZC4gSXQgaXNuJ3QgYSBVU0Igb3IgUENJIGRldmljZS5cblxuSW4gYSBzdGFuZGFyZCB4ODZfNjQgUUVNVSBzZXR1cCwgbGlrZSBgdmlydGAgb3IgYHBjYCBtYWNoaW5lLCB0aGVyZSBpcyBzaW1wbHkgbm8gRE05MDAwIGRldmljZSBwcmVzZW50LiBFdmVuIGlmIHRoZSBkcml2ZXIgaXMgY29tcGlsZWQgaW50byB0aGUga2VybmVsLCB0aGUgcHJvYmUgZnVuY3Rpb24sIGBkbTkwMDBfcHJvYmVgLCB3aWxsICpuZXZlciogZ2V0IGNhbGxlZCBiZWNhdXNlIHRoZXJlIGlzIG5vIGRldmljZSB0cmVlIG5vZGUsIEFDUEkgbm9kZSwgb3IgZXZlbiBhIGJvYXJkIGZpbGUgdGhhdCB3b3VsZCBpbnN0YW50aWF0ZSBhIFwiZG05MDAwXCIgcGxhdGZvcm0gZGV2aWNlLiBJdCBpcyBub3Qgc29tZXRoaW5nIHRoYXQgd291bGQgYmUgcHJlc2VudC5cblxuTGV0IG1lIGRvdWJsZS1jaGVjayB0aG91Z2gsIGp1c3QgdG8gYmUgc3VyZS4gQ2FuIGEgcGxhdGZvcm0gZGV2aWNlIGJlIGluc3RhbnRpYXRlZCBmcm9tIHVzZXJzcGFjZT8gVGhlcmUgaXMgYSBwb3NzaWJsZSB3YXkgdmlhIGRldmljZSB0cmVlIG92ZXJsYXlzLCBidXQgdGhhdCByZXF1aXJlcyBgQ09ORklHX09GX09WRVJMQVlgIGJlaW5nIGVuYWJsZWQsIHdoaWNoIGlzIG5vdCB1c3VhbGx5IHRoZSBjYXNlIGluIHRoZSBkZWZhdWx0IGNvbmZpZywgYW5kIHJlcXVpcmVzIGEgdXNlcnNwYWNlIGludGVyZmFjZSB0aGF0IGlzbid0IHR5cGljYWxseSBhdmFpbGFibGUuIFRoZXJlJ3MgYWxzbyB0aGUgbGVnYWN5IGBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJgLCBidXQgdGhhdCdzIGtlcm5lbC1vbmx5LiBTbywgbm8sIHRoZXJlIGlzbid0IGEgZ2VuZXJhbCB3YXkgZm9yIGFuIHVucHJpdmlsZWdlZCB1c2VyIHRvIGNyZWF0ZSBhcmJpdHJhcnkgcGxhdGZvcm0gZGV2aWNlcy5cblxuVGhlcmVmb3JlLCBgZG05MDAwX3Byb2JlYCBpcyB1bnJlYWNoYWJsZS5cblxuU28sIGxldCBtZSB3cml0ZSBteSByZWFzb25pbmcgaW4gYSBtb3JlIGNvbXBsZXRlIHdheS4gVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIG9mIHRoaXMgYGRtOTAwMGAgZXRoZXJuZXQgZHJpdmVyLiBJdCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgbWVtb3J5LW1hcHBlZCBoYXJkd2FyZS4gSW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBsaWtlIFFFTVUgb3IgR0NFLCB3aGljaCBhcmUgdHlwaWNhbGx5IHVzZWQgZm9yIGZ1enppbmcsIHRoaXMgaGFyZHdhcmUgaXNuJ3QgcHJlc2VudCwgYW5kIHRoZXJlJ3Mgbm8gd2F5IHRvIGluc3RhbnRpYXRlIGFyYml0cmFyeSBwbGF0Zm9ybSBkZXZpY2VzIGZyb20gdXNlcnNwYWNlLiBUaHVzLCB0aGUgcmVsZXZhbnQgY29kZSBpcyB1bnJlYWNoYWJsZS4gVGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUsIG1ha2luZyBpdCBub3Qgd29ydGggZnV6emluZy4gVGltZSB0byBzZXQgbXkgcmVzdWx0IVxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDY3LCJPdXRwdXRUb2tlbnMiOjEyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMjo0ODowNy41MTAwNDY3MTFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjU5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcHJvYmUgZXJyb3IgaGFuZGxpbmcgcGF0aCBvZiB0aGUgRGF2aWNvbSBETTkwMDAgZXRoZXJuZXQgZHJpdmVyIChkbTkwMDBfcHJvYmUpLiBUaGlzIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzcGVjaWZpYyBtZW1vcnktbWFwcGVkIGhhcmR3YXJlLiBJbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSBvciBHQ0UpIHVzZWQgZm9yIGZ1enppbmcsIHRoaXMgaGFyZHdhcmUgaXMgbm90IHByZXNlbnQsIGFuZCB0aGVyZSBpcyBubyBnZW5lcmljIHVzZXJzcGFjZSBtZWNoYW5pc20gdG8gaW5zdGFudGlhdGUgYXJiaXRyYXJ5IHBsYXRmb3JtIGRldmljZXMgdG8gdHJpZ2dlciB0aGUgcHJvYmUgZnVuY3Rpb24uIFRoZXJlZm9yZSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgYW5kIG5vdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGVycm9yIGhhbmRsaW5nIHBhdGggb2YgdGhlIERhdmljb20gRE05MDAwIGV0aGVybmV0IGRyaXZlciAoZG05MDAwX3Byb2JlKS4gVGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgbWVtb3J5LW1hcHBlZCBoYXJkd2FyZS4gSW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKSB1c2VkIGZvciBmdXp6aW5nLCB0aGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50LCBhbmQgdGhlcmUgaXMgbm8gZ2VuZXJpYyB1c2Vyc3BhY2UgbWVjaGFuaXNtIHRvIGluc3RhbnRpYXRlIGFyYml0cmFyeSBwbGF0Zm9ybSBkZXZpY2VzIHRvIHRyaWdnZXIgdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGFuZCBub3Qgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDEyOjQ4OjA3LjUxMDA4ODY2MloiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5g8f2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-20 11:25:52 +0000 UTC FinishedAt: 2026-08-20 12:48:08 +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+CgkJCTx0ZD4yMDI2LzA4LzIwIDEyOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGVycm9yIGhhbmRsaW5nIHBhdGggb2YgdGhlIERhdmljb20gRE05MDAwIGV0aGVybmV0IGRyaXZlciAoZG05MDAwX3Byb2JlKS4gVGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgbWVtb3J5LW1hcHBlZCBoYXJkd2FyZS4gSW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKSB1c2VkIGZvciBmdXp6aW5nLCB0aGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50LCBhbmQgdGhlcmUgaXMgbm8gZ2VuZXJpYyB1c2Vyc3BhY2UgbWVjaGFuaXNtIHRvIGluc3RhbnRpYXRlIGFyYml0cmFyeSBwbGF0Zm9ybSBkZXZpY2VzIHRvIHRyaWdnZXIgdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGFuZCBub3Qgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTI6NDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyYWIzZjQxNzdkZjc3ODFkZjdlZGU1ZmFmMDYyNDFhODEyMTE2YWMyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgMjAgMTI6NDc6MDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmNcbmluZGV4IGI4N2VhZjBjMjUwY2UuLjkwNGI4NTlmMGE2MzUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jXG5AQCAtMTUxMSwxMyAmIzQzOzE1MTEsMTggQEAgZG05MDAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHR9XG4gXG4gXHRkYi1cdTAwM2VpcnFfd2FrZSA9IHBsYXRmb3JtX2dldF9pcnFfb3B0aW9uYWwocGRldiwgMSk7XG4tXHRpZiAoZGItXHUwMDNlaXJxX3dha2UgXHUwMDNlPSAwKSB7XG4mIzQzO1x0aWYgKGRiLVx1MDAzZWlycV93YWtlIFx1MDAzYyAwIFx1MDAyNlx1MDAyNiBkYi1cdTAwM2VpcnFfd2FrZSAhPSAtRU5YSU8pIHtcbiYjNDM7XHRcdHJldCA9IGRiLVx1MDAzZWlycV93YWtlO1xuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1x0fVxuJiM0MztcdGlmIChkYi1cdTAwM2VpcnFfd2FrZSBcdTAwM2UgMCkge1xuIFx0XHRkZXZfZGJnKGRiLVx1MDAzZWRldiwgXCYjMzQ7d2FrZXVwIGlycSAlZFxcblwmIzM0OywgZGItXHUwMDNlaXJxX3dha2UpO1xuIFxuIFx0XHRyZXQgPSByZXF1ZXN0X2lycShkYi1cdTAwM2VpcnFfd2FrZSwgZG05MDAwX3dvbF9pbnRlcnJ1cHQsXG4gXHRcdFx0XHQgIElSUUZfU0hBUkVELCBkZXZfbmFtZShkYi1cdTAwM2VkZXYpLCBuZGV2KTtcbiBcdFx0aWYgKHJldCkge1xuIFx0XHRcdGRldl9lcnIoZGItXHUwMDNlZGV2LCBcJiMzNDtjYW5ub3QgZ2V0IHdha2V1cCBpcnEgKCVkKVxcblwmIzM0OywgcmV0KTtcbiYjNDM7XHRcdFx0Z290byBvdXQ7XG4gXHRcdH0gZWxzZSB7XG4gXG4gXHRcdFx0LyogdGVzdCB0byBzZWUgaWYgaXJxIGlzIHJlYWxseSB3YWtldXAgY2FwYWJsZSAqL1xuQEAgLTE1MjUsNiAmIzQzOzE1MzAsNyBAQCBkbTkwMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbiBcdFx0XHRpZiAocmV0KSB7XG4gXHRcdFx0XHRkZXZfZXJyKGRiLVx1MDAzZWRldiwgXCYjMzQ7aXJxICVkIGNhbm5vdCBzZXQgd2FrZXVwICglZClcXG5cJiMzNDssXG4gXHRcdFx0XHRcdGRiLVx1MDAzZWlycV93YWtlLCByZXQpO1xuJiM0MztcdFx0XHRcdGdvdG8gb3V0O1xuIFx0XHRcdH0gZWxzZSB7XG4gXHRcdFx0XHRpcnFfc2V0X2lycV93YWtlKGRiLVx1MDAzZWlycV93YWtlLCAwKTtcbiBcdFx0XHRcdGRiLVx1MDAzZXdha2Vfc3VwcG9ydGVkID0gMTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMjo0NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGVycm9yIGhhbmRsaW5nIHBhdGggb2YgdGhlIERhdmljb20gRE05MDAwIGV0aGVybmV0IGRyaXZlciAoZG05MDAwX3Byb2JlKS4gVGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgbWVtb3J5LW1hcHBlZCBoYXJkd2FyZS4gSW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKSB1c2VkIGZvciBmdXp6aW5nLCB0aGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50LCBhbmQgdGhlcmUgaXMgbm8gZ2VuZXJpYyB1c2Vyc3BhY2UgbWVjaGFuaXNtIHRvIGluc3RhbnRpYXRlIGFyYml0cmFyeSBwbGF0Zm9ybSBkZXZpY2VzIHRvIHRyaWdnZXIgdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGFuZCBub3Qgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyYWIzZjQxNzdkZjc3ODFkZjdlZGU1ZmFmMDYyNDFhODEyMTE2YWMyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBBdWcgMjAgMTI6NDc6MDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYwppbmRleCBiODdlYWYwYzI1MGNlLi45MDRiODU5ZjBhNjM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMKQEAgLTE1MTEsMTMgJiM0MzsxNTExLDE4IEBAIGRtOTAwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCX0KIAogCWRiLSZndDtpcnFfd2FrZSA9IHBsYXRmb3JtX2dldF9pcnFfb3B0aW9uYWwocGRldiwgMSk7Ci0JaWYgKGRiLSZndDtpcnFfd2FrZSAmZ3Q7PSAwKSB7CiYjNDM7CWlmIChkYi0mZ3Q7aXJxX3dha2UgJmx0OyAwICZhbXA7JmFtcDsgZGItJmd0O2lycV93YWtlICE9IC1FTlhJTykgewomIzQzOwkJcmV0ID0gZGItJmd0O2lycV93YWtlOwomIzQzOwkJZ290byBvdXQ7CiYjNDM7CX0KJiM0MzsJaWYgKGRiLSZndDtpcnFfd2FrZSAmZ3Q7IDApIHsKIAkJZGV2X2RiZyhkYi0mZ3Q7ZGV2LCAmIzM0O3dha2V1cCBpcnEgJWRcbiYjMzQ7LCBkYi0mZ3Q7aXJxX3dha2UpOwogCiAJCXJldCA9IHJlcXVlc3RfaXJxKGRiLSZndDtpcnFfd2FrZSwgZG05MDAwX3dvbF9pbnRlcnJ1cHQsCiAJCQkJICBJUlFGX1NIQVJFRCwgZGV2X25hbWUoZGItJmd0O2RldiksIG5kZXYpOwogCQlpZiAocmV0KSB7CiAJCQlkZXZfZXJyKGRiLSZndDtkZXYsICYjMzQ7Y2Fubm90IGdldCB3YWtldXAgaXJxICglZClcbiYjMzQ7LCByZXQpOwomIzQzOwkJCWdvdG8gb3V0OwogCQl9IGVsc2UgewogCiAJCQkvKiB0ZXN0IHRvIHNlZSBpZiBpcnEgaXMgcmVhbGx5IHdha2V1cCBjYXBhYmxlICovCkBAIC0xNTI1LDYgJiM0MzsxNTMwLDcgQEAgZG05MDAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCQlpZiAocmV0KSB7CiAJCQkJZGV2X2VycihkYi0mZ3Q7ZGV2LCAmIzM0O2lycSAlZCBjYW5ub3Qgc2V0IHdha2V1cCAoJWQpXG4mIzM0OywKIAkJCQkJZGItJmd0O2lycV93YWtlLCByZXQpOwomIzQzOwkJCQlnb3RvIG91dDsKIAkJCX0gZWxzZSB7CiAJCQkJaXJxX3NldF9pcnFfd2FrZShkYi0mZ3Q7aXJxX3dha2UsIDApOwogCQkJCWRiLSZndDt3YWtlX3N1cHBvcnRlZCA9IDE7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDEyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMDMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA1NDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBETTkwMDAgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgbW9kaWZ5aW5nIGBkbTkwMDBfcHJvYmVgIGluIHRoZSBgZG05MDAwLmNgIGRyaXZlci4gSSBzZWUgaXQmIzM5O3MgY2hhbmdpbmcgdGhlIHdheSBgZGItJmd0O2lycV93YWtlYCwgb2J0YWluZWQgZnJvbSBgcGxhdGZvcm1fZ2V0X2lycV9vcHRpb25hbGAsIGlzIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgdGhlcmUmIzM5O3MgYSBjaGVjayBmb3IgbmVnYXRpdmUgZXJyb3IgY29kZXMgKmV4Y2VwdCogYC1FTlhJT2AsIGFuZCBoYW5kbGluZyBmb3IgcG9zaXRpdmUgdmFsdWVzIGFuZCBwb3RlbnRpYWwgZmFpbHVyZXMgb2YgYGlycV9zZXRfaXJxX3dha2VgLiAgVGhpcyBkcml2ZXIgaXMgZm9yIERhdmljb20gRE05MDAwLXNlcmllcyBldGhlcm5ldCBjb250cm9sbGVycywgd2hpY2ggYXJlIElTQSBvciBwbGF0Zm9ybSBkZXZpY2VzLgoKVGhlIGtleSBxdWVzdGlvbiBpbiBteSBtaW5kIGlzLCBjYW4gSSByZWFjaCB0aGlzIGRyaXZlciB3aXRoIGZ1enppbmc/IERvZXMgUUVNVSBldmVuIGVtdWxhdGUgdGhpcyBwYXJ0aWN1bGFyIGRldmljZT8gSSBuZWVkIHRvIGNoZWNrLiAgSG1tLCBRRU1VIGhhcyBkcml2ZXJzIGZvciBvdGhlciBldGhlcm5ldCBjb250cm9sbGVycywgbGlrZSBTTUM5MUMxMTEgYW5kIExBTjkxMTgsIGJ1dCBkb2VzIGl0IGhhdmUgYGRtOTAwMGA/ICAqWWVzKiwgaXQgc2VlbXMgUUVNVSAqZG9lcyogaGF2ZSBgaHcvbmV0L2RtOTAwMC5jYCEgU28gdGhhdCYjMzk7cyBnb29kLgoKQnV0IHdhaXQsIHRoaXMgKmlzKiBhIHBsYXRmb3JtIGRyaXZlci4gU28gdGhlIG5leHQgc3RlcCBpcyBjaGVja2luZyB3aGV0aGVyIHN5emthbGxlciBjYW4gcmVhY2ggaXQuIEl0JiMzOTtzIG9mdGVuIHBvc3NpYmxlIHRvIGZ1enogcGxhdGZvcm0gZHJpdmVycyB2aWEgc3l6a2FsbGVyIHdpdGggcHNldWRvLWRldmljZXMgb3IgZGV2aWNlIHRyZWUgb3ZlcmxheXMgaWYgaXQmIzM5O3MgYSBwbGF0Zm9ybSBkcml2ZXIsIHNwZWNpZmljYWxseSBpZiBpdCYjMzk7cyBwb3NzaWJsZSB0byBpbnN0YW50aWF0ZSB0aGVtLCBzYXksIGJ5IGBzeXpfZGV2X2luaXRgLiBJIGNvbmZpcm0gdGhhdCBgZG05MDAwYCBpbmRlZWQgdXNlcyBgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldmAuICBIb3dldmVyLCBzeXprYWxsZXIgZG9lc24mIzM5O3QgKmdlbmVyYWxseSogZnV6eiAqYXJiaXRyYXJ5KiBwbGF0Zm9ybSBkcml2ZXJzLCB1bmxlc3MgdGhleSYjMzk7cmUgaW5zdGFudGlhdGVkIHZpYSBkZXZpY2UgdHJlZSBvdmVybGF5LCBvciBpZiB0aGV5JiMzOTtyZSBQQ0kvVVNCIGRyaXZlcnMuCgpJdCYjMzk7cyBhIHBsYXRmb3JtIGRyaXZlciwgYnV0IG9ubHkgdGhlIHByb2JlIGZ1bmN0aW9uIGlzIG1vZGlmaWVkLiBUaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIGBkbTkwMDBgIGlzIGVuYWJsZWQgaW4gY29tbW9uIGNvbmZpZ3VyYXRpb25zIG9yIGlmIHRoZXJlIGlzIGEgd2F5IHRvIGluc3RhbnRpYXRlIGl0LiAgTXkgbmV4dCBzdGVwIGlzIHRvIHNlYXJjaCBmb3IgYGRtOTAwMGAgd2l0aGluIHRoZSBLY29uZmlnIGZpbGVzIHRvIGRldGVybWluZSBpdHMgYXZhaWxhYmlsaXR5IGFuZCBwb3RlbnRpYWwgaW5zdGFudGlhdGlvbiBtZXRob2RzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGVyZSYjMzk7cyBhIHBhdGggdG8gZXhlcmNpc2luZyB0aGlzIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERNOTAwMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWc9MTc9aWYgTkVUX1ZFTkRPUl9EQVZJQ09NXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWctMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWc6MTk6Y29uZmlnIERNOTAwMFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7RE05MDAwIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWctMjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWc6MzA6Y29uZmlnIERNOTAwMF9GT1JDRV9TSU1QTEVfUEhZX1BPTExcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7Rm9yY2Ugc2ltcGxlIE5TUiBiYXNlZCBQSFkgcG9sbGluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDEyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MzYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBEZXBlbmRlbmNpZXMgb2YgRE05MDAwKioKCk9rYXksIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBvZiBgRE05MDAwYC4gVGhpcyBpc24mIzM5O3QganVzdCBhIGNhc3VhbCBleGVyY2lzZTsgaXQmIzM5O3MgdGhlIGZvdW5kYXRpb24gZm9yIGFueSBtZWFuaW5nZnVsIGFuYWx5c2lzLCBtb2RpZmljYXRpb24sIG9yIGludGVncmF0aW9uLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGdldHRpbmcgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyBkaXJlY3QgZGVwZW5kZW5jaWVzIOKAkyB0aGUgbGlicmFyaWVzLCBtb2R1bGVzLCBvciBzZXJ2aWNlcyBpdCBleHBsaWNpdGx5IGNhbGxzIG9yIHJlZmVyZW5jZXMuIEtub3dpbmcgKnRob3NlKiB3aWxsIGltbWVkaWF0ZWx5IHNob3cgbWUgdGhlIGJyZWFkdGggb2YgYERNOTAwMGAmIzM5O3MgaW50ZXJhY3Rpb24gd2l0aCB0aGUgc3lzdGVtLgoKRnJvbSB0aGVyZSwgSSYjMzk7bGwgbmVlZCB0byB0aGluayBhYm91dCB0aGUgdHJhbnNpdGl2ZSBkZXBlbmRlbmNpZXM6IHdoYXQgKnRob3NlKiBkZXBlbmRlbmNpZXMgcmVseSBvbi4gVGhpcyBpcyB3aGVyZSB0aGluZ3MgY2FuIGdldCBtZXNzeSwgYW5kIHdoZXJlIHBvdGVudGlhbCB2ZXJzaW9uIGNvbmZsaWN0cyBvciB1bmZvcmVzZWVuIHNpZGUgZWZmZWN0cyBhcmUgbW9zdCBsaWtlbHkgdG8gbHVyay4gQSBxdWljayBkZXBlbmRlbmN5IGdyYXBoIHZpc3VhbGl6YXRpb24gd291bGQgYmUgaW1tZW5zZWx5IGhlbHBmdWwgcmlnaHQgYWJvdXQgbm93LiBJIG5lZWQgdG8gYmUgYWJsZSB0byBzZWUgdGhlIG5lc3RlZCBzdHJ1Y3R1cmUuCgpCZXlvbmQgc2ltcGxlIGRlcGVuZGVuY2llcywgSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgdGhpbmdzIGxpa2UgY29uZmlndXJhdGlvbiBmaWxlcywgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBvciBldmVuIGV4dGVybmFsIGRhdGEgc291cmNlcy4gJiMzNDtEZXBlbmRlbmNpZXMmIzM0OyBhcmUgbW9yZSB0aGFuIGp1c3QgY29kZSBjYWxscy4gSXMgYERNOTAwMGAgYXNzdW1pbmcgc3BlY2lmaWMgZGF0YWJhc2Ugc2NoZW1hIHZlcnNpb25zPyBEb2VzIGl0IHJlbHkgb24gY2VydGFpbiBuZXR3b3JrIGNvbmZpZ3VyYXRpb25zIG9yIHNoYXJlZCByZXNvdXJjZXM/IEkgbmVlZCB0byBidWlsZCBhIGhvbGlzdGljIHBpY3R1cmUuCgpPbmNlIEkgaGF2ZSBhIG1hcCBvZiBpdHMgZGVwZW5kZW5jaWVzLCBJIGNhbiBiZWdpbiB0byBhc3Nlc3Mgcmlzay4gV2hpY2ggZGVwZW5kZW5jaWVzIGFyZSBleHRlcm5hbCBhbmQgcG90ZW50aWFsbHkgdW5zdGFibGU/IFdoaWNoIGFyZSBjcml0aWNhbCB0byBmdW5jdGlvbmFsaXR5PyBXaGljaCBhcmUgdW5kZXIgYWN0aXZlIGRldmVsb3BtZW50IGFuZCBsaWFibGUgdG8gaW50cm9kdWNlIGJyZWFraW5nIGNoYW5nZXM/IFdoZXJlIGFyZSB0aGVyZSBvcHBvcnR1bml0aWVzIHRvIHJlZmFjdG9yLCBzbGltIGRvd24sIG9yIHJlcGxhY2UgZGVwZW5kZW5jaWVzIHdpdGggbW9yZSByb2J1c3Qgb3IgZWZmaWNpZW50IGFsdGVybmF0aXZlcz8gVGhpcyBkZXBlbmRlbmN5IGFuYWx5c2lzIGlzIGEgY3JpdGljYWwgZmlyc3Qgc3RlcC4gSXQgaXMgdGhlIHJvYWRtYXAsIGFuZCBJIG5lZWQgdG8gc3RhcnQgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZz0xOT1jb25maWcgRE05MDAwXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWctMjAtXHR0cmlzdGF0ZSBcJiMzNDtETTkwMDAgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnOjIxOlx0ZGVwZW5kcyBvbiBBUk0gfHwgTUlQUyB8fCBDT0xERklSRSB8fCBOSU9TMiB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZy0yMi1cdHNlbGVjdCBDUkMzMlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZz0zMD1jb25maWcgRE05MDAwX0ZPUkNFX1NJTVBMRV9QSFlfUE9MTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnLTMxLVx0Ym9vbCBcJiMzNDtGb3JjZSBzaW1wbGUgTlNSIGJhc2VkIFBIWSBwb2xsaW5nXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWc6MzI6XHRkZXBlbmRzIG9uIERNOTAwMFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnLTMzLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZz0zOT1jb25maWcgRE05MDUxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWctNDAtXHR0cmlzdGF0ZSBcJiMzNDtETTkwNTEgU1BJIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZzo0MTpcdGRlcGVuZHMgb24gU1BJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWctNDItXHRzZWxlY3QgQ1JDMzJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjY4CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgYSBETTkwMDAgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgbWluZCBzdGFydHMganVtcGluZyB0aHJvdWdoIHRoZSBwb3NzaWJpbGl0aWVzLiBGaXJzdCwgaXQgZGVwZW5kcyBvbiB0aGUgYXJjaGl0ZWN0dXJlLCBwb3RlbnRpYWxseSBgQVJNYCwgYE1JUFNgLCBgQ09MREZJUkVgLCBgTklPUzJgLCBvciBgQ09NUElMRV9URVNUYC4gSWYgaXQmIzM5O3MgYENPTVBJTEVfVEVTVGAsIGF0IGxlYXN0IGl0IGNvbXBpbGVzLiBCdXQgaXQmIzM5O3MgYSBwbGF0Zm9ybSBkcml2ZXIsIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyBhIGZsYWcuIENhbiBJIGV2ZW4gZnV6eiB0aGlzIGVmZmVjdGl2ZWx5IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VPwoKSSBrbm93IHRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgYW5kIHRoYXQgUUVNVSBtYXkgb25seSBlbXVsYXRlIHRoZSBETTkwMDAgb24gY2VydGFpbiBBUk0gYm9hcmRzLCBzdWNoIGFzIHRoZSBtaW5pMjQ0MC4gSSBuZWVkIHRvIGtub3cgaWYgUUVNVSAqZG9lcyogZW11bGF0ZSB0aGUgRE05MDAwLiBIYW5nIG9uLCB3YXNuJiMzOTt0IHRoZXJlIHNvbWV0aGluZyBhYm91dCBRRU1VIHN1cHBvcnRpbmcgU01DLCBhbmQgbWF5YmUgZXZlbiBMQU45MTE4PyBXYWl0LCBkb2VzIGl0IGVtdWxhdGUgRE05MDAwPyBJIGRvbiYjMzk7dCBoYXZlIHRoZSBzb3VyY2UgaGFuZHksIGJ1dCBJIGNhbiBjaGVjayBpZiBpdCByZWxpZXMgb24gc3BlY2lmaWMgaGFyZHdhcmUuCgpFdmVuIGlmIGl0JiMzOTtzIGVtdWxhdGVkIGluIHNvbWUgc3BlY2lmaWMgQVJNIG1hY2hpbmUgdHlwZSwgc3l6a2FsbGVyIHVzdWFsbHkgcnVucyBvbiB4ODZfNjQsIGFybTY0LCBldGMuIHdpdGggYHZpcnRgIG1hY2hpbmUgdHlwZS4gVGhlIGB2aXJ0YCBtYWNoaW5lIHR5cGUgYWxtb3N0IGNlcnRhaW5seSBkb2VzIG5vdCBpbmNsdWRlIGEgRE05MDAwIGRldmljZS4gVGhlbiB0aGVyZSYjMzk7cyB0aGUgY29yZSBvZiB0aGUgbWF0dGVyOiB0aGlzIHBhdGNoIGlzIGp1c3QgYSBmaXggZm9yIGVycm9yIGhhbmRsaW5nICppbiogYGRtOTAwMF9wcm9iZWAuIElzIGl0IGV2ZW4gd29ydGggdGhlIGVmZm9ydCBvZiBmdXp6aW5nLCBnaXZlbiB0aGF0IGZhY3Q/CgpOb3csIGlmIGl0JiMzOTtzIGEgcHJvYmUgZnVuY3Rpb24sIHN5emthbGxlciAqbWlnaHQqIGJlIGFibGUgdG8gZnV6eiBpdCwgcHJvdmlkZWQgaXQgY2FuIGluamVjdCBwbGF0Zm9ybSBkZXZpY2VzIHNvbWVob3cg4oCTIG1heWJlIHZpYSBgc3l6X2Rldl9pbml0YCBvciBzaW1pbGFyIHBzZXVkby1zeXNjYWxscywgb3IgZXZlbiB0aHJvdWdoIGNvbmZpZ2ZzL3N5c2ZzLiBCdXQgdGhlIHBhdGNoIGlzIGp1c3QgZm9yIHRoZSBwcm9iZSBlcnJvciBwYXRoIQoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgYGRtOTAwMF9wcm9iZWAgaXMgZXZlbiByZWFjaGFibGUuIEl0ICppcyogYSBwbGF0Zm9ybSBkcml2ZXIsIHRob3VnaC4gTGV0IG1lIGp1c3QgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGNvZGUgaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDEyOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RtOTAwMF9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYz0xNDExPXN0YXRpYyBpbnRcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmM6MTQxMjpkbTkwMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtMTQxMy17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYy0xNDgxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYzoxNDgyOlx0ZGV2X2RiZyhcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7ZG05MDAwX3Byb2JlKClcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYy0xNDgzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmM9MTgwMj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBkbTkwMDBfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtMTgwNy1cdH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jOjE4MDg6XHQucHJvYmUgICA9IGRtOTAwMF9wcm9iZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtMTgwOS1cdC5yZW1vdmUgPSBkbTkwMDBfZHJ2X3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTMxCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTc2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIERNOTAwMCBEcml2ZXImIzM5O3MgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gdGhlIGBkbTkwMDBgIGRyaXZlciBpcyByZWdpc3RlcmVkIGFzIGEgcGxhdGZvcm0gZHJpdmVyIHVzaW5nIGBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXJgLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgcGxhdGZvcm0gZHJpdmVycywgZXNwZWNpYWxseSB0aG9zZSB0aWVkIHRvIHNwZWNpZmljIGhhcmR3YXJlIGxpa2UgdGhpcyBEYXZpY29tIERNOTAwMCwgYXJlIHVzdWFsbHkgbGVmdCB1bnRvdWNoZWQgYnkgZnV6emVycyB1bmxlc3MgeW91IGNhbiBhY3R1YWxseSAqaW5zdGFudGlhdGUqIHRoZSBkZXZpY2UuIFlvdSBuZWVkIGEgZGV2aWNlIHByZXNlbnQgdG8gZ2V0IHRvIGEgcHJvYmUgZnVuY3Rpb24sIHJpZ2h0PwoKV2FpdCBhIG1pbnV0ZS4uLiBkb2VzIHN5emthbGxlciBoYXZlIHNvbWUgdHJpY2sgdXAgaXRzIHNsZWV2ZT8gRG9lcyBpdCBoYXZlIGEgd2F5IHRvIGdlbmVyYXRlIGRldmljZSB0cmVlIG92ZXJsYXlzIG9yIHVzZSBgc3l6X2Rldl9pbml0YCB0byBmYWtlIHRoZSBoYXJkd2FyZT8gTm8sIHRoYXQgY2FuJiMzOTt0IGJlIHJpZ2h0LiBTeXprYWxsZXIgZG9lc24mIzM5O3QgaGF2ZSBhICpnZW5lcmFsKiBwbGF0Zm9ybSBkZXZpY2UgZnV6emVyIHRoYXQmIzM5O2xsIHdvcmsgYWNyb3NzIHRoZSBib2FyZCBmb3IgZHJpdmVycyB3aGVyZSB0aGUgaGFyZHdhcmUgZG9lc24mIzM5O3QgZXhpc3QuIFRoYXQgd291bGQgYmUgcHJldHR5IGFtYXppbmcsIGJ1dCBJJiMzOTttIHByZXR0eSBzdXJlIGl0JiMzOTtzIG5vdCBhIHN0YW5kYXJkIGZlYXR1cmUuCgpTbywgaWYgYWxsIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggaXMgdGhlIHByb2JlIGZ1bmN0aW9uLCBhbmQgaXQmIzM5O3MgZm9yIHRoaXMgc3BlY2lmaWMgRE05MDAwLCB0aGVuIGl0JiMzOTtzICpoaWdobHkqIHVubGlrZWx5IHRvIGdldCB0cmlnZ2VyZWQgaW4gYSB0eXBpY2FsIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBJdCYjMzk7cyBqdXN0IHRvbyBzcGVjaWZpYyB1bmxlc3MgeW91IHNwZWNpZmljYWxseSB0YXJnZXQgaXQuCgpBbHJpZ2h0LCBiZWZvcmUgSSBjb21wbGV0ZWx5IGRpc21pc3MgdGhpcywgbGV0IG1lIHF1aWNrbHkgY2hlY2suLi4gZG9lcyBzeXprYWxsZXIgaGFwcGVuIHRvIGhhdmUgYSAqZGVzY3JpcHRpb24qIG9yIGFueSBraW5kIG9mIGRlZGljYXRlZCBzdXBwb3J0IGZvciB0aGUgZG05MDAwPyBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3Npbmcgc29tZXRoaW5nIG9idmlvdXMuIExldCBtZSBzZWFyY2guLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkbTkwMDAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtzeXMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjAgMTI6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA2NwoJCQkJCQkJb3V0cHV0OiAxMjgKCQkJCQkJCXRob3VnaHRzOiA0NDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiBGdXp6aW5nIFdvcnRoaW5lc3MqKgoKT2theSwgc28gSSBuZWVkIHRvIGRlY2lkZSBpZiB0aGlzIGNvZGUgaXMgd29ydGggZnV6emluZy4gVGhlIHByb21wdCBzcGVjaWZpZWQgdW5yZWFjaGFibGUgY29kZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGFuZCBJIHRoaW5rIEkmIzM5O3ZlIGdvdCB0aGlzIGZpZ3VyZWQgb3V0LiBJIGNhbm5vdCB1c2UgZ3JlcHBlciBmb3IgYC9zeXMvYCwgc28gbGV0JiMzOTtzIHRoaW5rIHRoaXMgdGhyb3VnaC4gVGhlIHRhcmdldCBpcyB0aGUgYGRtOTAwMF9wcm9iZWAgZnVuY3Rpb24uIE5vdywgdGhhdCYjMzk7cyBmb3IgdGhlIERhdmljb20gRE05MDAwIGV0aGVybmV0IGNvbnRyb2xsZXIuIENyaXRpY2FsbHksIHRoaXMgaXMgYW4gSVNBL3BsYXRmb3JtIGRldmljZSwgbWVtb3J5LW1hcHBlZC4gSXQgaXNuJiMzOTt0IGEgVVNCIG9yIFBDSSBkZXZpY2UuCgpJbiBhIHN0YW5kYXJkIHg4Nl82NCBRRU1VIHNldHVwLCBsaWtlIGB2aXJ0YCBvciBgcGNgIG1hY2hpbmUsIHRoZXJlIGlzIHNpbXBseSBubyBETTkwMDAgZGV2aWNlIHByZXNlbnQuIEV2ZW4gaWYgdGhlIGRyaXZlciBpcyBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwsIHRoZSBwcm9iZSBmdW5jdGlvbiwgYGRtOTAwMF9wcm9iZWAsIHdpbGwgKm5ldmVyKiBnZXQgY2FsbGVkIGJlY2F1c2UgdGhlcmUgaXMgbm8gZGV2aWNlIHRyZWUgbm9kZSwgQUNQSSBub2RlLCBvciBldmVuIGEgYm9hcmQgZmlsZSB0aGF0IHdvdWxkIGluc3RhbnRpYXRlIGEgJiMzNDtkbTkwMDAmIzM0OyBwbGF0Zm9ybSBkZXZpY2UuIEl0IGlzIG5vdCBzb21ldGhpbmcgdGhhdCB3b3VsZCBiZSBwcmVzZW50LgoKTGV0IG1lIGRvdWJsZS1jaGVjayB0aG91Z2gsIGp1c3QgdG8gYmUgc3VyZS4gQ2FuIGEgcGxhdGZvcm0gZGV2aWNlIGJlIGluc3RhbnRpYXRlZCBmcm9tIHVzZXJzcGFjZT8gVGhlcmUgaXMgYSBwb3NzaWJsZSB3YXkgdmlhIGRldmljZSB0cmVlIG92ZXJsYXlzLCBidXQgdGhhdCByZXF1aXJlcyBgQ09ORklHX09GX09WRVJMQVlgIGJlaW5nIGVuYWJsZWQsIHdoaWNoIGlzIG5vdCB1c3VhbGx5IHRoZSBjYXNlIGluIHRoZSBkZWZhdWx0IGNvbmZpZywgYW5kIHJlcXVpcmVzIGEgdXNlcnNwYWNlIGludGVyZmFjZSB0aGF0IGlzbiYjMzk7dCB0eXBpY2FsbHkgYXZhaWxhYmxlLiBUaGVyZSYjMzk7cyBhbHNvIHRoZSBsZWdhY3kgYHBsYXRmb3JtX2RldmljZV9yZWdpc3RlcmAsIGJ1dCB0aGF0JiMzOTtzIGtlcm5lbC1vbmx5LiBTbywgbm8sIHRoZXJlIGlzbiYjMzk7dCBhIGdlbmVyYWwgd2F5IGZvciBhbiB1bnByaXZpbGVnZWQgdXNlciB0byBjcmVhdGUgYXJiaXRyYXJ5IHBsYXRmb3JtIGRldmljZXMuCgpUaGVyZWZvcmUsIGBkbTkwMDBfcHJvYmVgIGlzIHVucmVhY2hhYmxlLgoKU28sIGxldCBtZSB3cml0ZSBteSByZWFzb25pbmcgaW4gYSBtb3JlIGNvbXBsZXRlIHdheS4gVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIG9mIHRoaXMgYGRtOTAwMGAgZXRoZXJuZXQgZHJpdmVyLiBJdCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgbWVtb3J5LW1hcHBlZCBoYXJkd2FyZS4gSW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBsaWtlIFFFTVUgb3IgR0NFLCB3aGljaCBhcmUgdHlwaWNhbGx5IHVzZWQgZm9yIGZ1enppbmcsIHRoaXMgaGFyZHdhcmUgaXNuJiMzOTt0IHByZXNlbnQsIGFuZCB0aGVyZSYjMzk7cyBubyB3YXkgdG8gaW5zdGFudGlhdGUgYXJiaXRyYXJ5IHBsYXRmb3JtIGRldmljZXMgZnJvbSB1c2Vyc3BhY2UuIFRodXMsIHRoZSByZWxldmFudCBjb2RlIGlzIHVucmVhY2hhYmxlLiBUaGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSwgbWFraW5nIGl0IG5vdCB3b3J0aCBmdXp6aW5nLiBUaW1lIHRvIHNldCBteSByZXN1bHQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIwIDEyOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGVycm9yIGhhbmRsaW5nIHBhdGggb2YgdGhlIERhdmljb20gRE05MDAwIGV0aGVybmV0IGRyaXZlciAoZG05MDAwX3Byb2JlKS4gVGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgbWVtb3J5LW1hcHBlZCBoYXJkd2FyZS4gSW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKSB1c2VkIGZvciBmdXp6aW5nLCB0aGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50LCBhbmQgdGhlcmUgaXMgbm8gZ2VuZXJpYyB1c2Vyc3BhY2UgbWVjaGFuaXNtIHRvIGluc3RhbnRpYXRlIGFyYml0cmFyeSBwbGF0Zm9ybSBkZXZpY2VzIHRvIHRyaWdnZXIgdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGFuZCBub3Qgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwcm9iZSBlcnJvciBoYW5kbGluZyBwYXRoIG9mIHRoZSBEYXZpY29tIERNOTAwMCBldGhlcm5ldCBkcml2ZXIgKGRtOTAwMF9wcm9iZSkuIFRoaXMgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIHNwZWNpZmljIG1lbW9yeS1tYXBwZWQgaGFyZHdhcmUuIEluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAobGlrZSBRRU1VIG9yIEdDRSkgdXNlZCBmb3IgZnV6emluZywgdGhpcyBoYXJkd2FyZSBpcyBub3QgcHJlc2VudCwgYW5kIHRoZXJlIGlzIG5vIGdlbmVyaWMgdXNlcnNwYWNlIG1lY2hhbmlzbSB0byBpbnN0YW50aWF0ZSBhcmJpdHJhcnkgcGxhdGZvcm0gZGV2aWNlcyB0byB0cmlnZ2VyIHRoZSBwcm9iZSBmdW5jdGlvbi4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBhbmQgbm90IHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMCAxMjo0ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTI6NDc6MDEuNTYxMDk4MjM5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU5NDkwMTAwMzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcHJvYmUgZXJyb3IgaGFuZGxpbmcgcGF0aCBvZiB0aGUgRGF2aWNvbSBETTkwMDAgZXRoZXJuZXQgZHJpdmVyIChkbTkwMDBfcHJvYmUpLiBUaGlzIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzcGVjaWZpYyBtZW1vcnktbWFwcGVkIGhhcmR3YXJlLiBJbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSBvciBHQ0UpIHVzZWQgZm9yIGZ1enppbmcsIHRoaXMgaGFyZHdhcmUgaXMgbm90IHByZXNlbnQsIGFuZCB0aGVyZSBpcyBubyBnZW5lcmljIHVzZXJzcGFjZSBtZWNoYW5pc20gdG8gaW5zdGFudGlhdGUgYXJiaXRyYXJ5IHBsYXRmb3JtIGRldmljZXMgdG8gdHJpZ2dlciB0aGUgcHJvYmUgZnVuY3Rpb24uIFRoZXJlZm9yZSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgYW5kIG5vdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTI6NDc6MDEuNTYxMTA5Mjg5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Mzk5Njg5MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyYWIzZjQxNzdkZjc3ODFkZjdlZGU1ZmFmMDYyNDFhODEyMTE2YWMyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDIwIDEyOjQ3OjAwIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jXFxuaW5kZXggYjg3ZWFmMGMyNTBjZS4uOTA0Yjg1OWYwYTYzNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuY1xcbkBAIC0xNTExLDEzICsxNTExLDE4IEBAIGRtOTAwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHR9XFxuIFxcbiBcXHRkYi1cXHUwMDNlaXJxX3dha2UgPSBwbGF0Zm9ybV9nZXRfaXJxX29wdGlvbmFsKHBkZXYsIDEpO1xcbi1cXHRpZiAoZGItXFx1MDAzZWlycV93YWtlIFxcdTAwM2U9IDApIHtcXG4rXFx0aWYgKGRiLVxcdTAwM2VpcnFfd2FrZSBcXHUwMDNjIDAgXFx1MDAyNlxcdTAwMjYgZGItXFx1MDAzZWlycV93YWtlICE9IC1FTlhJTykge1xcbitcXHRcXHRyZXQgPSBkYi1cXHUwMDNlaXJxX3dha2U7XFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXHR9XFxuK1xcdGlmIChkYi1cXHUwMDNlaXJxX3dha2UgXFx1MDAzZSAwKSB7XFxuIFxcdFxcdGRldl9kYmcoZGItXFx1MDAzZWRldiwgXFxcIndha2V1cCBpcnEgJWRcXFxcblxcXCIsIGRiLVxcdTAwM2VpcnFfd2FrZSk7XFxuIFxcbiBcXHRcXHRyZXQgPSByZXF1ZXN0X2lycShkYi1cXHUwMDNlaXJxX3dha2UsIGRtOTAwMF93b2xfaW50ZXJydXB0LFxcbiBcXHRcXHRcXHRcXHQgIElSUUZfU0hBUkVELCBkZXZfbmFtZShkYi1cXHUwMDNlZGV2KSwgbmRldik7XFxuIFxcdFxcdGlmIChyZXQpIHtcXG4gXFx0XFx0XFx0ZGV2X2VycihkYi1cXHUwMDNlZGV2LCBcXFwiY2Fubm90IGdldCB3YWtldXAgaXJxICglZClcXFxcblxcXCIsIHJldCk7XFxuK1xcdFxcdFxcdGdvdG8gb3V0O1xcbiBcXHRcXHR9IGVsc2Uge1xcbiBcXG4gXFx0XFx0XFx0LyogdGVzdCB0byBzZWUgaWYgaXJxIGlzIHJlYWxseSB3YWtldXAgY2FwYWJsZSAqL1xcbkBAIC0xNTI1LDYgKzE1MzAsNyBAQCBkbTkwMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4gXFx0XFx0XFx0aWYgKHJldCkge1xcbiBcXHRcXHRcXHRcXHRkZXZfZXJyKGRiLVxcdTAwM2VkZXYsIFxcXCJpcnEgJWQgY2Fubm90IHNldCB3YWtldXAgKCVkKVxcXFxuXFxcIixcXG4gXFx0XFx0XFx0XFx0XFx0ZGItXFx1MDAzZWlycV93YWtlLCByZXQpO1xcbitcXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4gXFx0XFx0XFx0fSBlbHNlIHtcXG4gXFx0XFx0XFx0XFx0aXJxX3NldF9pcnFfd2FrZShkYi1cXHUwMDNlaXJxX3dha2UsIDApO1xcbiBcXHRcXHRcXHRcXHRkYi1cXHUwMDNld2FrZV9zdXBwb3J0ZWQgPSAxO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMjo0NzowMi4xMDI1Mjg4NTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo2NTQwNzU1NjkwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGVycm9yIGhhbmRsaW5nIHBhdGggb2YgdGhlIERhdmljb20gRE05MDAwIGV0aGVybmV0IGRyaXZlciAoZG05MDAwX3Byb2JlKS4gVGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgbWVtb3J5LW1hcHBlZCBoYXJkd2FyZS4gSW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKSB1c2VkIGZvciBmdXp6aW5nLCB0aGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50LCBhbmQgdGhlcmUgaXMgbm8gZ2VuZXJpYyB1c2Vyc3BhY2UgbWVjaGFuaXNtIHRvIGluc3RhbnRpYXRlIGFyYml0cmFyeSBwbGF0Zm9ybSBkZXZpY2VzIHRvIHRyaWdnZXIgdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGFuZCBub3Qgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDJhYjNmNDE3N2RmNzc4MWRmN2VkZTVmYWYwNjI0MWE4MTIxMTZhYzJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyMCAxMjo0NzowMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jXG5pbmRleCBiODdlYWYwYzI1MGNlLi45MDRiODU5ZjBhNjM1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuY1xuQEAgLTE1MTEsMTMgKzE1MTEsMTggQEAgZG05MDAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHR9XG4gXG4gXHRkYi1cdTAwM2VpcnFfd2FrZSA9IHBsYXRmb3JtX2dldF9pcnFfb3B0aW9uYWwocGRldiwgMSk7XG4tXHRpZiAoZGItXHUwMDNlaXJxX3dha2UgXHUwMDNlPSAwKSB7XG4rXHRpZiAoZGItXHUwMDNlaXJxX3dha2UgXHUwMDNjIDAgXHUwMDI2XHUwMDI2IGRiLVx1MDAzZWlycV93YWtlICE9IC1FTlhJTykge1xuK1x0XHRyZXQgPSBkYi1cdTAwM2VpcnFfd2FrZTtcbitcdFx0Z290byBvdXQ7XG4rXHR9XG4rXHRpZiAoZGItXHUwMDNlaXJxX3dha2UgXHUwMDNlIDApIHtcbiBcdFx0ZGV2X2RiZyhkYi1cdTAwM2VkZXYsIFwid2FrZXVwIGlycSAlZFxcblwiLCBkYi1cdTAwM2VpcnFfd2FrZSk7XG4gXG4gXHRcdHJldCA9IHJlcXVlc3RfaXJxKGRiLVx1MDAzZWlycV93YWtlLCBkbTkwMDBfd29sX2ludGVycnVwdCxcbiBcdFx0XHRcdCAgSVJRRl9TSEFSRUQsIGRldl9uYW1lKGRiLVx1MDAzZWRldiksIG5kZXYpO1xuIFx0XHRpZiAocmV0KSB7XG4gXHRcdFx0ZGV2X2VycihkYi1cdTAwM2VkZXYsIFwiY2Fubm90IGdldCB3YWtldXAgaXJxICglZClcXG5cIiwgcmV0KTtcbitcdFx0XHRnb3RvIG91dDtcbiBcdFx0fSBlbHNlIHtcbiBcbiBcdFx0XHQvKiB0ZXN0IHRvIHNlZSBpZiBpcnEgaXMgcmVhbGx5IHdha2V1cCBjYXBhYmxlICovXG5AQCAtMTUyNSw2ICsxNTMwLDcgQEAgZG05MDAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRcdFx0aWYgKHJldCkge1xuIFx0XHRcdFx0ZGV2X2VycihkYi1cdTAwM2VkZXYsIFwiaXJxICVkIGNhbm5vdCBzZXQgd2FrZXVwICglZClcXG5cIixcbiBcdFx0XHRcdFx0ZGItXHUwMDNlaXJxX3dha2UsIHJldCk7XG4rXHRcdFx0XHRnb3RvIG91dDtcbiBcdFx0XHR9IGVsc2Uge1xuIFx0XHRcdFx0aXJxX3NldF9pcnFfd2FrZShkYi1cdTAwM2VpcnFfd2FrZSwgMCk7XG4gXHRcdFx0XHRkYi1cdTAwM2V3YWtlX3N1cHBvcnRlZCA9IDE7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMjo0NzowMi4xMDI1MzI4MTNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDY3NTY2MTMwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERNOTAwMCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIG1vZGlmeWluZyBgZG05MDAwX3Byb2JlYCBpbiB0aGUgYGRtOTAwMC5jYCBkcml2ZXIuIEkgc2VlIGl0J3MgY2hhbmdpbmcgdGhlIHdheSBgZGItXHUwMDNlaXJxX3dha2VgLCBvYnRhaW5lZCBmcm9tIGBwbGF0Zm9ybV9nZXRfaXJxX29wdGlvbmFsYCwgaXMgaGFuZGxlZC4gU3BlY2lmaWNhbGx5LCB0aGVyZSdzIGEgY2hlY2sgZm9yIG5lZ2F0aXZlIGVycm9yIGNvZGVzICpleGNlcHQqIGAtRU5YSU9gLCBhbmQgaGFuZGxpbmcgZm9yIHBvc2l0aXZlIHZhbHVlcyBhbmQgcG90ZW50aWFsIGZhaWx1cmVzIG9mIGBpcnFfc2V0X2lycV93YWtlYC4gIFRoaXMgZHJpdmVyIGlzIGZvciBEYXZpY29tIERNOTAwMC1zZXJpZXMgZXRoZXJuZXQgY29udHJvbGxlcnMsIHdoaWNoIGFyZSBJU0Egb3IgcGxhdGZvcm0gZGV2aWNlcy5cblxuVGhlIGtleSBxdWVzdGlvbiBpbiBteSBtaW5kIGlzLCBjYW4gSSByZWFjaCB0aGlzIGRyaXZlciB3aXRoIGZ1enppbmc/IERvZXMgUUVNVSBldmVuIGVtdWxhdGUgdGhpcyBwYXJ0aWN1bGFyIGRldmljZT8gSSBuZWVkIHRvIGNoZWNrLiAgSG1tLCBRRU1VIGhhcyBkcml2ZXJzIGZvciBvdGhlciBldGhlcm5ldCBjb250cm9sbGVycywgbGlrZSBTTUM5MUMxMTEgYW5kIExBTjkxMTgsIGJ1dCBkb2VzIGl0IGhhdmUgYGRtOTAwMGA/ICAqWWVzKiwgaXQgc2VlbXMgUUVNVSAqZG9lcyogaGF2ZSBgaHcvbmV0L2RtOTAwMC5jYCEgU28gdGhhdCdzIGdvb2QuXG5cbkJ1dCB3YWl0LCB0aGlzICppcyogYSBwbGF0Zm9ybSBkcml2ZXIuIFNvIHRoZSBuZXh0IHN0ZXAgaXMgY2hlY2tpbmcgd2hldGhlciBzeXprYWxsZXIgY2FuIHJlYWNoIGl0LiBJdCdzIG9mdGVuIHBvc3NpYmxlIHRvIGZ1enogcGxhdGZvcm0gZHJpdmVycyB2aWEgc3l6a2FsbGVyIHdpdGggcHNldWRvLWRldmljZXMgb3IgZGV2aWNlIHRyZWUgb3ZlcmxheXMgaWYgaXQncyBhIHBsYXRmb3JtIGRyaXZlciwgc3BlY2lmaWNhbGx5IGlmIGl0J3MgcG9zc2libGUgdG8gaW5zdGFudGlhdGUgdGhlbSwgc2F5LCBieSBgc3l6X2Rldl9pbml0YC4gSSBjb25maXJtIHRoYXQgYGRtOTAwMGAgaW5kZWVkIHVzZXMgYHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXZgLiAgSG93ZXZlciwgc3l6a2FsbGVyIGRvZXNuJ3QgKmdlbmVyYWxseSogZnV6eiAqYXJiaXRyYXJ5KiBwbGF0Zm9ybSBkcml2ZXJzLCB1bmxlc3MgdGhleSdyZSBpbnN0YW50aWF0ZWQgdmlhIGRldmljZSB0cmVlIG92ZXJsYXksIG9yIGlmIHRoZXkncmUgUENJL1VTQiBkcml2ZXJzLlxuXG5JdCdzIGEgcGxhdGZvcm0gZHJpdmVyLCBidXQgb25seSB0aGUgcHJvYmUgZnVuY3Rpb24gaXMgbW9kaWZpZWQuIFRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYGRtOTAwMGAgaXMgZW5hYmxlZCBpbiBjb21tb24gY29uZmlndXJhdGlvbnMgb3IgaWYgdGhlcmUgaXMgYSB3YXkgdG8gaW5zdGFudGlhdGUgaXQuICBNeSBuZXh0IHN0ZXAgaXMgdG8gc2VhcmNoIGZvciBgZG05MDAwYCB3aXRoaW4gdGhlIEtjb25maWcgZmlsZXMgdG8gZGV0ZXJtaW5lIGl0cyBhdmFpbGFiaWxpdHkgYW5kIHBvdGVudGlhbCBpbnN0YW50aWF0aW9uIG1ldGhvZHMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXJlJ3MgYSBwYXRoIHRvIGV4ZXJjaXNpbmcgdGhpcyBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzAzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTQ1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTI6NDc6MTIuNzc4MTk3Njg5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNzEzNTI4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRE05MDAwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWc9MTc9aWYgTkVUX1ZFTkRPUl9EQVZJQ09NXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZzoxOTpjb25maWcgRE05MDAwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnLTIwLVxcdHRyaXN0YXRlIFxcXCJETTkwMDAgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZy0yOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWc6MzA6Y29uZmlnIERNOTAwMF9GT1JDRV9TSU1QTEVfUEhZX1BPTExcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWctMzEtXFx0Ym9vbCBcXFwiRm9yY2Ugc2ltcGxlIE5TUiBiYXNlZCBQSFkgcG9sbGluZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTI6NDc6MTIuODk1MzQwODU2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM1NDU3NjYwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgRGVwZW5kZW5jaWVzIG9mIERNOTAwMCoqXG5cbk9rYXksIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBETTkwMDBgLiBUaGlzIGlzbid0IGp1c3QgYSBjYXN1YWwgZXhlcmNpc2U7IGl0J3MgdGhlIGZvdW5kYXRpb24gZm9yIGFueSBtZWFuaW5nZnVsIGFuYWx5c2lzLCBtb2RpZmljYXRpb24sIG9yIGludGVncmF0aW9uLiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgZ2V0dGluZyBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIGRpcmVjdCBkZXBlbmRlbmNpZXMg4oCTIHRoZSBsaWJyYXJpZXMsIG1vZHVsZXMsIG9yIHNlcnZpY2VzIGl0IGV4cGxpY2l0bHkgY2FsbHMgb3IgcmVmZXJlbmNlcy4gS25vd2luZyAqdGhvc2UqIHdpbGwgaW1tZWRpYXRlbHkgc2hvdyBtZSB0aGUgYnJlYWR0aCBvZiBgRE05MDAwYCdzIGludGVyYWN0aW9uIHdpdGggdGhlIHN5c3RlbS5cblxuRnJvbSB0aGVyZSwgSSdsbCBuZWVkIHRvIHRoaW5rIGFib3V0IHRoZSB0cmFuc2l0aXZlIGRlcGVuZGVuY2llczogd2hhdCAqdGhvc2UqIGRlcGVuZGVuY2llcyByZWx5IG9uLiBUaGlzIGlzIHdoZXJlIHRoaW5ncyBjYW4gZ2V0IG1lc3N5LCBhbmQgd2hlcmUgcG90ZW50aWFsIHZlcnNpb24gY29uZmxpY3RzIG9yIHVuZm9yZXNlZW4gc2lkZSBlZmZlY3RzIGFyZSBtb3N0IGxpa2VseSB0byBsdXJrLiBBIHF1aWNrIGRlcGVuZGVuY3kgZ3JhcGggdmlzdWFsaXphdGlvbiB3b3VsZCBiZSBpbW1lbnNlbHkgaGVscGZ1bCByaWdodCBhYm91dCBub3cuIEkgbmVlZCB0byBiZSBhYmxlIHRvIHNlZSB0aGUgbmVzdGVkIHN0cnVjdHVyZS5cblxuQmV5b25kIHNpbXBsZSBkZXBlbmRlbmNpZXMsIEkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIHRoaW5ncyBsaWtlIGNvbmZpZ3VyYXRpb24gZmlsZXMsIGVudmlyb25tZW50IHZhcmlhYmxlcywgb3IgZXZlbiBleHRlcm5hbCBkYXRhIHNvdXJjZXMuIFwiRGVwZW5kZW5jaWVzXCIgYXJlIG1vcmUgdGhhbiBqdXN0IGNvZGUgY2FsbHMuIElzIGBETTkwMDBgIGFzc3VtaW5nIHNwZWNpZmljIGRhdGFiYXNlIHNjaGVtYSB2ZXJzaW9ucz8gRG9lcyBpdCByZWx5IG9uIGNlcnRhaW4gbmV0d29yayBjb25maWd1cmF0aW9ucyBvciBzaGFyZWQgcmVzb3VyY2VzPyBJIG5lZWQgdG8gYnVpbGQgYSBob2xpc3RpYyBwaWN0dXJlLlxuXG5PbmNlIEkgaGF2ZSBhIG1hcCBvZiBpdHMgZGVwZW5kZW5jaWVzLCBJIGNhbiBiZWdpbiB0byBhc3Nlc3Mgcmlzay4gV2hpY2ggZGVwZW5kZW5jaWVzIGFyZSBleHRlcm5hbCBhbmQgcG90ZW50aWFsbHkgdW5zdGFibGU/IFdoaWNoIGFyZSBjcml0aWNhbCB0byBmdW5jdGlvbmFsaXR5PyBXaGljaCBhcmUgdW5kZXIgYWN0aXZlIGRldmVsb3BtZW50IGFuZCBsaWFibGUgdG8gaW50cm9kdWNlIGJyZWFraW5nIGNoYW5nZXM/IFdoZXJlIGFyZSB0aGVyZSBvcHBvcnR1bml0aWVzIHRvIHJlZmFjdG9yLCBzbGltIGRvd24sIG9yIHJlcGxhY2UgZGVwZW5kZW5jaWVzIHdpdGggbW9yZSByb2J1c3Qgb3IgZWZmaWNpZW50IGFsdGVybmF0aXZlcz8gVGhpcyBkZXBlbmRlbmN5IGFuYWx5c2lzIGlzIGEgY3JpdGljYWwgZmlyc3Qgc3RlcC4gSXQgaXMgdGhlIHJvYWRtYXAsIGFuZCBJIG5lZWQgdG8gc3RhcnQgaGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUzNiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDEyOjQ3OjE3LjI0OTkyMTMxM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDU0MzQ2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWc9MTk9Y29uZmlnIERNOTAwMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiRE05MDAwIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnOjIxOlxcdGRlcGVuZHMgb24gQVJNIHx8IE1JUFMgfHwgQ09MREZJUkUgfHwgTklPUzIgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnLTIyLVxcdHNlbGVjdCBDUkMzMlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnPTMwPWNvbmZpZyBETTkwMDBfRk9SQ0VfU0lNUExFX1BIWV9QT0xMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIkZvcmNlIHNpbXBsZSBOU1IgYmFzZWQgUEhZIHBvbGxpbmdcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnOjMyOlxcdGRlcGVuZHMgb24gRE05MDAwXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnLTMzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZz0zOT1jb25maWcgRE05MDUxXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnLTQwLVxcdHRyaXN0YXRlIFxcXCJETTkwNTEgU1BJIHN1cHBvcnRcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnOjQxOlxcdGRlcGVuZHMgb24gU1BJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnLTQyLVxcdHNlbGVjdCBDUkMzMlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMjo0NzoxNy4zMzA0OTM3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTQ3NTU5NzYwMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBhIERNOTAwMCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgbWluZCBzdGFydHMganVtcGluZyB0aHJvdWdoIHRoZSBwb3NzaWJpbGl0aWVzLiBGaXJzdCwgaXQgZGVwZW5kcyBvbiB0aGUgYXJjaGl0ZWN0dXJlLCBwb3RlbnRpYWxseSBgQVJNYCwgYE1JUFNgLCBgQ09MREZJUkVgLCBgTklPUzJgLCBvciBgQ09NUElMRV9URVNUYC4gSWYgaXQncyBgQ09NUElMRV9URVNUYCwgYXQgbGVhc3QgaXQgY29tcGlsZXMuIEJ1dCBpdCdzIGEgcGxhdGZvcm0gZHJpdmVyLCB3aGljaCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnLiBDYW4gSSBldmVuIGZ1enogdGhpcyBlZmZlY3RpdmVseSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVT9cblxuSSBrbm93IHRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgYW5kIHRoYXQgUUVNVSBtYXkgb25seSBlbXVsYXRlIHRoZSBETTkwMDAgb24gY2VydGFpbiBBUk0gYm9hcmRzLCBzdWNoIGFzIHRoZSBtaW5pMjQ0MC4gSSBuZWVkIHRvIGtub3cgaWYgUUVNVSAqZG9lcyogZW11bGF0ZSB0aGUgRE05MDAwLiBIYW5nIG9uLCB3YXNuJ3QgdGhlcmUgc29tZXRoaW5nIGFib3V0IFFFTVUgc3VwcG9ydGluZyBTTUMsIGFuZCBtYXliZSBldmVuIExBTjkxMTg/IFdhaXQsIGRvZXMgaXQgZW11bGF0ZSBETTkwMDA/IEkgZG9uJ3QgaGF2ZSB0aGUgc291cmNlIGhhbmR5LCBidXQgSSBjYW4gY2hlY2sgaWYgaXQgcmVsaWVzIG9uIHNwZWNpZmljIGhhcmR3YXJlLlxuXG5FdmVuIGlmIGl0J3MgZW11bGF0ZWQgaW4gc29tZSBzcGVjaWZpYyBBUk0gbWFjaGluZSB0eXBlLCBzeXprYWxsZXIgdXN1YWxseSBydW5zIG9uIHg4Nl82NCwgYXJtNjQsIGV0Yy4gd2l0aCBgdmlydGAgbWFjaGluZSB0eXBlLiBUaGUgYHZpcnRgIG1hY2hpbmUgdHlwZSBhbG1vc3QgY2VydGFpbmx5IGRvZXMgbm90IGluY2x1ZGUgYSBETTkwMDAgZGV2aWNlLiBUaGVuIHRoZXJlJ3MgdGhlIGNvcmUgb2YgdGhlIG1hdHRlcjogdGhpcyBwYXRjaCBpcyBqdXN0IGEgZml4IGZvciBlcnJvciBoYW5kbGluZyAqaW4qIGBkbTkwMDBfcHJvYmVgLiBJcyBpdCBldmVuIHdvcnRoIHRoZSBlZmZvcnQgb2YgZnV6emluZywgZ2l2ZW4gdGhhdCBmYWN0P1xuXG5Ob3csIGlmIGl0J3MgYSBwcm9iZSBmdW5jdGlvbiwgc3l6a2FsbGVyICptaWdodCogYmUgYWJsZSB0byBmdXp6IGl0LCBwcm92aWRlZCBpdCBjYW4gaW5qZWN0IHBsYXRmb3JtIGRldmljZXMgc29tZWhvdyDigJMgbWF5YmUgdmlhIGBzeXpfZGV2X2luaXRgIG9yIHNpbWlsYXIgcHNldWRvLXN5c2NhbGxzLCBvciBldmVuIHRocm91Z2ggY29uZmlnZnMvc3lzZnMuIEJ1dCB0aGUgcGF0Y2ggaXMganVzdCBmb3IgdGhlIHByb2JlIGVycm9yIHBhdGghXG5cbkkgbmVlZCB0byBjb25maXJtIGlmIGBkbTkwMDBfcHJvYmVgIGlzIGV2ZW4gcmVhY2hhYmxlLiBJdCAqaXMqIGEgcGxhdGZvcm0gZHJpdmVyLCB0aG91Z2guIExldCBtZSBqdXN0IHRha2UgYSBxdWljayBsb29rIGF0IHRoZSBjb2RlIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI2OCwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMjo0NzozMi4wODY0NzI3MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODk0NzM5NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG05MDAwX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYz0xNDExPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jOjE0MTI6ZG05MDAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYy0xNDEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtMTQ4MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jOjE0ODI6XFx0ZGV2X2RiZyhcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwiZG05MDAwX3Byb2JlKClcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtMTQ4My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmM9MTgwMj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBkbTkwMDBfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYy0xODA3LVxcdH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYzoxODA4OlxcdC5wcm9iZSAgID0gZG05MDAwX3Byb2JlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtMTgwOS1cXHQucmVtb3ZlID0gZG05MDAwX2Rydl9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDEyOjQ3OjMyLjQ3NTk1MzgwOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE4OTUzMTg3MTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIERNOTAwMCBEcml2ZXIncyBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIHRoZSBgZG05MDAwYCBkcml2ZXIgaXMgcmVnaXN0ZXJlZCBhcyBhIHBsYXRmb3JtIGRyaXZlciB1c2luZyBgcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyYC4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHBsYXRmb3JtIGRyaXZlcnMsIGVzcGVjaWFsbHkgdGhvc2UgdGllZCB0byBzcGVjaWZpYyBoYXJkd2FyZSBsaWtlIHRoaXMgRGF2aWNvbSBETTkwMDAsIGFyZSB1c3VhbGx5IGxlZnQgdW50b3VjaGVkIGJ5IGZ1enplcnMgdW5sZXNzIHlvdSBjYW4gYWN0dWFsbHkgKmluc3RhbnRpYXRlKiB0aGUgZGV2aWNlLiBZb3UgbmVlZCBhIGRldmljZSBwcmVzZW50IHRvIGdldCB0byBhIHByb2JlIGZ1bmN0aW9uLCByaWdodD9cblxuV2FpdCBhIG1pbnV0ZS4uLiBkb2VzIHN5emthbGxlciBoYXZlIHNvbWUgdHJpY2sgdXAgaXRzIHNsZWV2ZT8gRG9lcyBpdCBoYXZlIGEgd2F5IHRvIGdlbmVyYXRlIGRldmljZSB0cmVlIG92ZXJsYXlzIG9yIHVzZSBgc3l6X2Rldl9pbml0YCB0byBmYWtlIHRoZSBoYXJkd2FyZT8gTm8sIHRoYXQgY2FuJ3QgYmUgcmlnaHQuIFN5emthbGxlciBkb2Vzbid0IGhhdmUgYSAqZ2VuZXJhbCogcGxhdGZvcm0gZGV2aWNlIGZ1enplciB0aGF0J2xsIHdvcmsgYWNyb3NzIHRoZSBib2FyZCBmb3IgZHJpdmVycyB3aGVyZSB0aGUgaGFyZHdhcmUgZG9lc24ndCBleGlzdC4gVGhhdCB3b3VsZCBiZSBwcmV0dHkgYW1hemluZywgYnV0IEknbSBwcmV0dHkgc3VyZSBpdCdzIG5vdCBhIHN0YW5kYXJkIGZlYXR1cmUuXG5cblNvLCBpZiBhbGwgd2UncmUgZGVhbGluZyB3aXRoIGlzIHRoZSBwcm9iZSBmdW5jdGlvbiwgYW5kIGl0J3MgZm9yIHRoaXMgc3BlY2lmaWMgRE05MDAwLCB0aGVuIGl0J3MgKmhpZ2hseSogdW5saWtlbHkgdG8gZ2V0IHRyaWdnZXJlZCBpbiBhIHR5cGljYWwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIEl0J3MganVzdCB0b28gc3BlY2lmaWMgdW5sZXNzIHlvdSBzcGVjaWZpY2FsbHkgdGFyZ2V0IGl0LlxuXG5BbHJpZ2h0LCBiZWZvcmUgSSBjb21wbGV0ZWx5IGRpc21pc3MgdGhpcywgbGV0IG1lIHF1aWNrbHkgY2hlY2suLi4gZG9lcyBzeXprYWxsZXIgaGFwcGVuIHRvIGhhdmUgYSAqZGVzY3JpcHRpb24qIG9yIGFueSBraW5kIG9mIGRlZGljYXRlZCBzdXBwb3J0IGZvciB0aGUgZG05MDAwPyBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBzb21ldGhpbmcgb2J2aW91cy4gTGV0IG1lIHNlYXJjaC4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTMxLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDEyOjQ3OjUxLjQyOTE0NDM4OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUzMzIyNzk2LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkbTkwMDBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwic3lzL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjBUMTI6NDc6NTEuNTgyNDgxOTA0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1OTI3NTYxMzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgRnV6emluZyBXb3J0aGluZXNzKipcblxuT2theSwgc28gSSBuZWVkIHRvIGRlY2lkZSBpZiB0aGlzIGNvZGUgaXMgd29ydGggZnV6emluZy4gVGhlIHByb21wdCBzcGVjaWZpZWQgdW5yZWFjaGFibGUgY29kZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGFuZCBJIHRoaW5rIEkndmUgZ290IHRoaXMgZmlndXJlZCBvdXQuIEkgY2Fubm90IHVzZSBncmVwcGVyIGZvciBgL3N5cy9gLCBzbyBsZXQncyB0aGluayB0aGlzIHRocm91Z2guIFRoZSB0YXJnZXQgaXMgdGhlIGBkbTkwMDBfcHJvYmVgIGZ1bmN0aW9uLiBOb3csIHRoYXQncyBmb3IgdGhlIERhdmljb20gRE05MDAwIGV0aGVybmV0IGNvbnRyb2xsZXIuIENyaXRpY2FsbHksIHRoaXMgaXMgYW4gSVNBL3BsYXRmb3JtIGRldmljZSwgbWVtb3J5LW1hcHBlZC4gSXQgaXNuJ3QgYSBVU0Igb3IgUENJIGRldmljZS5cblxuSW4gYSBzdGFuZGFyZCB4ODZfNjQgUUVNVSBzZXR1cCwgbGlrZSBgdmlydGAgb3IgYHBjYCBtYWNoaW5lLCB0aGVyZSBpcyBzaW1wbHkgbm8gRE05MDAwIGRldmljZSBwcmVzZW50LiBFdmVuIGlmIHRoZSBkcml2ZXIgaXMgY29tcGlsZWQgaW50byB0aGUga2VybmVsLCB0aGUgcHJvYmUgZnVuY3Rpb24sIGBkbTkwMDBfcHJvYmVgLCB3aWxsICpuZXZlciogZ2V0IGNhbGxlZCBiZWNhdXNlIHRoZXJlIGlzIG5vIGRldmljZSB0cmVlIG5vZGUsIEFDUEkgbm9kZSwgb3IgZXZlbiBhIGJvYXJkIGZpbGUgdGhhdCB3b3VsZCBpbnN0YW50aWF0ZSBhIFwiZG05MDAwXCIgcGxhdGZvcm0gZGV2aWNlLiBJdCBpcyBub3Qgc29tZXRoaW5nIHRoYXQgd291bGQgYmUgcHJlc2VudC5cblxuTGV0IG1lIGRvdWJsZS1jaGVjayB0aG91Z2gsIGp1c3QgdG8gYmUgc3VyZS4gQ2FuIGEgcGxhdGZvcm0gZGV2aWNlIGJlIGluc3RhbnRpYXRlZCBmcm9tIHVzZXJzcGFjZT8gVGhlcmUgaXMgYSBwb3NzaWJsZSB3YXkgdmlhIGRldmljZSB0cmVlIG92ZXJsYXlzLCBidXQgdGhhdCByZXF1aXJlcyBgQ09ORklHX09GX09WRVJMQVlgIGJlaW5nIGVuYWJsZWQsIHdoaWNoIGlzIG5vdCB1c3VhbGx5IHRoZSBjYXNlIGluIHRoZSBkZWZhdWx0IGNvbmZpZywgYW5kIHJlcXVpcmVzIGEgdXNlcnNwYWNlIGludGVyZmFjZSB0aGF0IGlzbid0IHR5cGljYWxseSBhdmFpbGFibGUuIFRoZXJlJ3MgYWxzbyB0aGUgbGVnYWN5IGBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJgLCBidXQgdGhhdCdzIGtlcm5lbC1vbmx5LiBTbywgbm8sIHRoZXJlIGlzbid0IGEgZ2VuZXJhbCB3YXkgZm9yIGFuIHVucHJpdmlsZWdlZCB1c2VyIHRvIGNyZWF0ZSBhcmJpdHJhcnkgcGxhdGZvcm0gZGV2aWNlcy5cblxuVGhlcmVmb3JlLCBgZG05MDAwX3Byb2JlYCBpcyB1bnJlYWNoYWJsZS5cblxuU28sIGxldCBtZSB3cml0ZSBteSByZWFzb25pbmcgaW4gYSBtb3JlIGNvbXBsZXRlIHdheS4gVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBlcnJvciBoYW5kbGluZyBwYXRoIG9mIHRoaXMgYGRtOTAwMGAgZXRoZXJuZXQgZHJpdmVyLiBJdCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgbWVtb3J5LW1hcHBlZCBoYXJkd2FyZS4gSW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBsaWtlIFFFTVUgb3IgR0NFLCB3aGljaCBhcmUgdHlwaWNhbGx5IHVzZWQgZm9yIGZ1enppbmcsIHRoaXMgaGFyZHdhcmUgaXNuJ3QgcHJlc2VudCwgYW5kIHRoZXJlJ3Mgbm8gd2F5IHRvIGluc3RhbnRpYXRlIGFyYml0cmFyeSBwbGF0Zm9ybSBkZXZpY2VzIGZyb20gdXNlcnNwYWNlLiBUaHVzLCB0aGUgcmVsZXZhbnQgY29kZSBpcyB1bnJlYWNoYWJsZS4gVGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUsIG1ha2luZyBpdCBub3Qgd29ydGggZnV6emluZy4gVGltZSB0byBzZXQgbXkgcmVzdWx0IVxuXG5cbiIsIklucHV0VG9rZW5zIjo2MDY3LCJPdXRwdXRUb2tlbnMiOjEyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yMFQxMjo0ODowNy41MTAwNDY3MTFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjU5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcHJvYmUgZXJyb3IgaGFuZGxpbmcgcGF0aCBvZiB0aGUgRGF2aWNvbSBETTkwMDAgZXRoZXJuZXQgZHJpdmVyIChkbTkwMDBfcHJvYmUpLiBUaGlzIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBzcGVjaWZpYyBtZW1vcnktbWFwcGVkIGhhcmR3YXJlLiBJbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKGxpa2UgUUVNVSBvciBHQ0UpIHVzZWQgZm9yIGZ1enppbmcsIHRoaXMgaGFyZHdhcmUgaXMgbm90IHByZXNlbnQsIGFuZCB0aGVyZSBpcyBubyBnZW5lcmljIHVzZXJzcGFjZSBtZWNoYW5pc20gdG8gaW5zdGFudGlhdGUgYXJiaXRyYXJ5IHBsYXRmb3JtIGRldmljZXMgdG8gdHJpZ2dlciB0aGUgcHJvYmUgZnVuY3Rpb24uIFRoZXJlZm9yZSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgYW5kIG5vdCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHByb2JlIGVycm9yIGhhbmRsaW5nIHBhdGggb2YgdGhlIERhdmljb20gRE05MDAwIGV0aGVybmV0IGRyaXZlciAoZG05MDAwX3Byb2JlKS4gVGhpcyBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3Igc3BlY2lmaWMgbWVtb3J5LW1hcHBlZCBoYXJkd2FyZS4gSW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChsaWtlIFFFTVUgb3IgR0NFKSB1c2VkIGZvciBmdXp6aW5nLCB0aGlzIGhhcmR3YXJlIGlzIG5vdCBwcmVzZW50LCBhbmQgdGhlcmUgaXMgbm8gZ2VuZXJpYyB1c2Vyc3BhY2UgbWVjaGFuaXNtIHRvIGluc3RhbnRpYXRlIGFyYml0cmFyeSBwbGF0Zm9ybSBkZXZpY2VzIHRvIHRyaWdnZXIgdGhlIHByb2JlIGZ1bmN0aW9uLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoIGlzIHVucmVhY2hhYmxlIGFuZCBub3Qgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIwVDEyOjQ4OjA3LjUxMDA4ODY2MloiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow5g8f2[1] Phase: Running StartedAt: 2026-08-20 12:48:18 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5g8f2[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-20 12:48:18 +0000 UTC FinishedAt: 2026-08-20 12:48:23 +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,}