Name: series-workflow8jgrm Phase: Failed StartedAt: 2026-09-11 03:44:28 +0000 UTC FinishedAt: 2026-09-11 04:20:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8jgrm[0] Phase: Succeeded StartedAt: 2026-09-11 03:44:28 +0000 UTC FinishedAt: 2026-09-11 04:19:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8jgrm[0].run-triage Phase: Succeeded StartedAt: 2026-09-11 03:44:28 +0000 UTC FinishedAt: 2026-09-11 04:19:52 +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+CgkJCTx0ZD4yMDI2LzA5LzExIDA0OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBlcnJvciBjbGVhbnVwIGxvZ2ljIGluIHFsM3h4eF9wcm9iZSgpIGZvciB0aGUgUUxvZ2ljIFFMQTNYWFggbmV0d29yayBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFFMb2dpYyBQQ0kgbmV0d29yayBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNDoxOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQzZjRhZTcxZmQ0YmQyYWMwYzlmNjMwOWI0MjU3ZDliN2MwYzYxZTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCAxMSAwNDoxOToxOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguY1xuaW5kZXggODYxYTEzYWQ3ZTFhYy4uYzFmZTk0M2M5MTMxOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmNcbkBAIC0zNzU1LDcgJiM0MzszNzU1LDcgQEAgc3RhdGljIGludCBxbDN4eHhfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4gXHRzdGF0aWMgaW50IGNhcmRzX2ZvdW5kO1xuIFx0aW50IGVycjtcbiBcbi1cdGVyciA9IHBjaV9lbmFibGVfZGV2aWNlKHBkZXYpO1xuJiM0MztcdGVyciA9IHBjaW1fZW5hYmxlX2RldmljZShwZGV2KTtcbiBcdGlmIChlcnIpIHtcbiBcdFx0cHJfZXJyKFwmIzM0OyVzIGNhbm5vdCBlbmFibGUgUENJIGRldmljZVxcblwmIzM0OywgcGNpX25hbWUocGRldikpO1xuIFx0XHRnb3RvIGVycl9vdXQ7XG5AQCAtMzc2NCw3ICYjNDM7Mzc2NCw3IEBAIHN0YXRpYyBpbnQgcWwzeHh4X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFx0ZXJyID0gcGNpX3JlcXVlc3RfcmVnaW9ucyhwZGV2LCBEUlZfTkFNRSk7XG4gXHRpZiAoZXJyKSB7XG4gXHRcdHByX2VycihcJiMzNDslcyBjYW5ub3Qgb2J0YWluIFBDSSByZXNvdXJjZXNcXG5cJiMzNDssIHBjaV9uYW1lKHBkZXYpKTtcbi1cdFx0Z290byBlcnJfb3V0X2Rpc2FibGVfcGRldjtcbiYjNDM7XHRcdGdvdG8gZXJyX291dDtcbiBcdH1cbiBcbiBcdHBjaV9zZXRfbWFzdGVyKHBkZXYpO1xuQEAgLTM4OTEsOCAmIzQzOzM4OTEsNiBAQCBzdGF0aWMgaW50IHFsM3h4eF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiBcdGZyZWVfbmV0ZGV2KG5kZXYpO1xuIGVycl9vdXRfZnJlZV9yZWdpb25zOlxuIFx0cGNpX3JlbGVhc2VfcmVnaW9ucyhwZGV2KTtcbi1lcnJfb3V0X2Rpc2FibGVfcGRldjpcbi1cdHBjaV9kaXNhYmxlX2RldmljZShwZGV2KTtcbiBlcnJfb3V0OlxuIFx0cmV0dXJuIGVycjtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDQ6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBlcnJvciBjbGVhbnVwIGxvZ2ljIGluIHFsM3h4eF9wcm9iZSgpIGZvciB0aGUgUUxvZ2ljIFFMQTNYWFggbmV0d29yayBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFFMb2dpYyBQQ0kgbmV0d29yayBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGQzZjRhZTcxZmQ0YmQyYWMwYzlmNjMwOWI0MjU3ZDliN2MwYzYxZTUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIFNlcCAxMSAwNDoxOToxOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5jCmluZGV4IDg2MWExM2FkN2UxYWMuLmMxZmU5NDNjOTEzMTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguYwpAQCAtMzc1NSw3ICYjNDM7Mzc1NSw3IEBAIHN0YXRpYyBpbnQgcWwzeHh4X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LAogCXN0YXRpYyBpbnQgY2FyZHNfZm91bmQ7CiAJaW50IGVycjsKIAotCWVyciA9IHBjaV9lbmFibGVfZGV2aWNlKHBkZXYpOwomIzQzOwllcnIgPSBwY2ltX2VuYWJsZV9kZXZpY2UocGRldik7CiAJaWYgKGVycikgewogCQlwcl9lcnIoJiMzNDslcyBjYW5ub3QgZW5hYmxlIFBDSSBkZXZpY2VcbiYjMzQ7LCBwY2lfbmFtZShwZGV2KSk7CiAJCWdvdG8gZXJyX291dDsKQEAgLTM3NjQsNyAmIzQzOzM3NjQsNyBAQCBzdGF0aWMgaW50IHFsM3h4eF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAllcnIgPSBwY2lfcmVxdWVzdF9yZWdpb25zKHBkZXYsIERSVl9OQU1FKTsKIAlpZiAoZXJyKSB7CiAJCXByX2VycigmIzM0OyVzIGNhbm5vdCBvYnRhaW4gUENJIHJlc291cmNlc1xuJiMzNDssIHBjaV9uYW1lKHBkZXYpKTsKLQkJZ290byBlcnJfb3V0X2Rpc2FibGVfcGRldjsKJiM0MzsJCWdvdG8gZXJyX291dDsKIAl9CiAKIAlwY2lfc2V0X21hc3RlcihwZGV2KTsKQEAgLTM4OTEsOCAmIzQzOzM4OTEsNiBAQCBzdGF0aWMgaW50IHFsM3h4eF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAlmcmVlX25ldGRldihuZGV2KTsKIGVycl9vdXRfZnJlZV9yZWdpb25zOgogCXBjaV9yZWxlYXNlX3JlZ2lvbnMocGRldik7Ci1lcnJfb3V0X2Rpc2FibGVfcGRldjoKLQlwY2lfZGlzYWJsZV9kZXZpY2UocGRldik7CiBlcnJfb3V0OgogCXJldHVybiBlcnI7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMjcKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhpcyBwYXRjaC4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIHdpdGhpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguY2AsIGFuZCBzcGVjaWZpY2FsbHkgaW4gdGhlIGBxbDN4eHhfcHJvYmVgIGZ1bmN0aW9uLiBJIHNlZSB0aGF0IGBwY2lfZW5hYmxlX2RldmljZShwZGV2KWAgaXMgbm93IGBwY2ltX2VuYWJsZV9kZXZpY2UocGRldilgLCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgYHBjaV9kaXNhYmxlX2RldmljZShwZGV2KWAgY2FsbHMgb24gZXJyb3IgcGF0aHMgYXJlIHJlbW92ZWQuIEltbWVkaWF0ZWx5LCBteSBtaW5kIHN0YXJ0cyBzcGlubmluZyAtIHdoeSB0aGlzIGNoYW5nZT8gV2hhdCYjMzk7cyB0aGUgbW90aXZhdGlvbj8gSXMgdGhpcyBhIHN0YW5kYXJkIGNvbnZlcnNpb24gdG8gdGhlIG1hbmFnZWQgUENJIGRldmljZSBmdW5jdGlvbnMsIG9yIGlzIHRoZXJlIGEgbW9yZSBudWFuY2VkIHJlYXNvbj8KCk15IG5leHQgc3RlcCBpcyB0byBjb25maXJtIG15IGluaXRpYWwgYXNzdW1wdGlvbi4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBxbGEzeHh4YCBpcyBpbmRlZWQgdGhlIFFMb2dpYyBRTEEzeHh4IE5ldHdvcmsgRHJpdmVyLCBhIHBoeXNpY2FsIFBDSSBOSUMgZHJpdmVyLiBJdCYjMzk7cyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgdGhlIHRhcmdldCBoYXJkd2FyZSBmb3IgdGhpcyBjaGFuZ2UgdG8gbWFrZSBjb21wbGV0ZSBzZW5zZS4gT25jZSBJIGNvbmZpcm0sIEkgbmVlZCB0byBjaGVjayB0aGUgZHJpdmVyIGRldGFpbHMgYW5kIGl0cyByZWFjaGFiaWxpdHkgd2l0aGluIHRoZSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LCBvciBpbiBzeXprYWxsZXIuIERvZXMgdGhpcyBjaGFuZ2UgYWZmZWN0IGEgY29tbW9ubHkgdXNlZCBvciB0ZXN0ZWQgY29uZmlndXJhdGlvbj8gSWYgc28sIGl0IG1pZ2h0IGJlIG1vcmUgbGlrZWx5IHRvIGJlIGEgc2ltcGxlLCByb3V0aW5lIGNoYW5nZS4KCkZpbmFsbHksIEkgbmVlZCB0byBkbyBhIGNvZGUgaW5zcGVjdGlvbi4gSSYjMzk7bGwgcmVhY2ggZm9yIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBnZXQgYSBjbG9zZXIgbG9vayBhdCB0aGUgY29udGV4dC4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdXBzdHJlYW0gZG9jdW1lbnRhdGlvbiBvZiB0aGUgY2hhbmdlLCByZWxhdGVkIGJ1ZyByZXBvcnRzLCBvciBhbnl0aGluZyB0aGF0IHdvdWxkIHNoZWQgbGlnaHQgb24gdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhlIG1hbmFnZWQgUENJIGRldmljZSBmdW5jdGlvbiB1c2FnZSBhbmQgd2h5IHRoZSBkaXNhYmxpbmcgaXMgZHJvcHBlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtRTDNYWFgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguaD0yNTg9ZW51bSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguaC0yNzMtIC8qXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5oOjI3NDogICogUUwzWFhYIG1lbW9yeS1tYXBwZWQgcmVnaXN0ZXJzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5oOjI3NTogICogUUwzWFhYIGhhcyA0IFwmIzM0O3BhZ2VzXCYjMzQ7IG9mIHJlZ2lzdGVycywgZWFjaCBwYWdlIG9jY3VweWluZ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguaC0yNzYtICAqIDI1NiBieXRlcy4gIEVhY2ggcGFnZSBoYXMgYSBcJiMzNDtjb21tb25cJiMzNDsgYXJlYSBhdCB0aGUgc3RhcnQgYW5kIHRoZW5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5oPTg2Nz1zdHJ1Y3QgZWVwcm9tX2RhdGEge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmgtOTI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguaDo5Mjg6I2RlZmluZSBRTDNYWFhfVkVORE9SX0lEICAgIDB4MTA3N1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguaC05MjktI2RlZmluZSBRTDMwMjJfREVWSUNFX0lEICAgIDB4MzAyMlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NzUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUUxBM1hYWCBEcml2ZXIgZm9yIEZ1enppbmcqKgoKT2theSwgbGV0IG1lIHJ1biB0aHJvdWdoIHRoaXMuIFRoZSBpbnN0cnVjdGlvbnMgaW4gU2VjdGlvbiAyIGFyZSBjbGVhcjogSSBuZWVkIHRvIGRldGVybWluZSB3aGVuIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCwgYW5kIHRoYXQgaGluZ2VzIG9uIHdoZXRoZXIgdGhlIG1vZGlmaWVkIGNvZGUgZmFsbHMgaW50byBzcGVjaWZpYyAmIzM0O25lZ2F0aXZlIGNyaXRlcmlhJiMzNDsgY2F0ZWdvcmllcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGxvb2tpbmcgZm9yICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsgYW5kICYjMzQ7VW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzLiYjMzQ7CgpSaWdodCwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhlIGBxbGEzeHh4YCBkcml2ZXIsIHdoaWNoIGZyb20gbXkga25vd2xlZGdlLCBkZWFscyB3aXRoIFFMb2dpYyBRTEEzWFhYIFBDSWUgbmV0d29yayBhZGFwdGVyc+KAlHNwZWNpZmljYWxseSB0aGUgUUxBMzAyMiwgUUxBMzAzMiBtb2RlbHMsIHdpdGggdGhvc2UgcGFydGljdWxhciBQQ0kgSURzLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpczogSXMgdGhpcyBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VPyBBbmQsIGZyb20gdGhlIGxpc3Qgb2Ygc3RhbmRhcmQgUUVNVSBuZXR3b3JrIGRldmljZXMgKGUxMDAwLCBlMTAwMGUsIGFuZCBzbyBvbiksIEkgY2FuIGltbWVkaWF0ZWx5IHRlbGwgdGhhdCB0aGUgYW5zd2VyIGlzIG5vLiBUaGUgUUxBM3h4eCBpcyBhIHBoeXNpY2FsIFBDSSBuZXR3b3JrIGNvbnRyb2xsZXIsIG5vdCBvbmUgb2YgdGhlIHR5cGljYWwgZW11bGF0ZWQgZGV2aWNlcy4KClRoZSBjb2RlIGluIHF1ZXN0aW9uIGlzIHdpdGhpbiBgcWwzeHh4X3Byb2JlKClgLiBUaGlzIGNvbmZpcm1zIG15IHN1c3BpY2lvbiB0aGF0IGl0IHJ1bnMgZHVyaW5nIFBDSSBkZXZpY2UgcHJvYmluZ+KAlHNwZWNpZmljYWxseSBmb3IgYSAqcGh5c2ljYWwqIFFMb2dpYyBRTEEzeHh4IFBDSSBkZXZpY2UuCgpUaGVyZWZvcmUsIGJlY2F1c2UgdGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgYW5kIHRoZSBtb2RpZmljYXRpb25zIEkmIzM5O20gbG9va2luZyBhdCBhcmUgdHJpZ2dlcmVkIGJ5IHRoZSBwcm9iZSBvZiB0aGF0IGhhcmR3YXJlLCBpdCBzZWVtcyB0byBmYWxsIHNxdWFyZWx5IGludG8gdGhlIGNhdGVnb3J5IG9mICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLiYjMzQ7IFRoaXMgaXMgYmVjYXVzZSBzdGFuZGFyZCBRRU1VIGNhbiYjMzk7dCBlbXVsYXRlIHRoaXMgaGFyZHdhcmUuIEkgbm93IG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBLY29uZmlnIGZvciBRTEEzWFhYIHRvIGNvbmZpcm0gbXkgYXNzZXNzbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBRTDNYWFgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3MTMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipFeGFtaW5pbmcgdGhlIFFMb2dpYyBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoaXMgUUxvZ2ljIEV0aGVybmV0IGRyaXZlci4gSSYjMzk7bSBhc3N1bWluZyBpdCYjMzk7cyBwcm9iYWJseSBnb3QgYWxsIHRoZSB1c3VhbCBzdXNwZWN0czogbWF5YmUgb3B0aW9ucyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHNwZWNpZmljIGZlYXR1cmVzLCBzZWxlY3RpbmcgZGlmZmVyZW50IFBIWXMgb3IgbGluayBzcGVlZHMsIHBlcmhhcHMgc29tZSBkZWJ1Z2dpbmcgZmxhZ3MsIGFuZCBkZWZpbml0ZWx5IHN1cHBvcnQgZm9yIGRpZmZlcmVudCBRTG9naWMgTklDIG1vZGVscy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgZGVwZW5kZW5jaWVzIHRvbyDigJMgYXJlIHRoZXJlIHNwZWNpZmljIGhhcmR3YXJlIG9yIGtlcm5lbCBjb25maWd1cmF0aW9ucyByZXF1aXJlZCBmb3IgY2VydGFpbiBmZWF0dXJlcz8gSSYjMzk7bGwgcHJvYmFibHkgYWxzbyBjaGVjayBpZiB0aGVyZSBhcmUgYW55IGRlZmF1bHQgdmFsdWVzIGFzc2lnbmVkLCBhbmQgaWYgYW55IG9mIHRoZW0gYXJlIHVudXN1YWwgb3IgbWlnaHQgYWZmZWN0IGhvdyBJIHdvdWxkIHVzZSB0aGlzIGRyaXZlciBpbiBwcmFjdGljZS4gVGltZSB0byBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290IGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1FMQTNYWFh8cWxhM3h4eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZz0xOD1pZiBORVRfVkVORE9SX1FMT0dJQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWctMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZzoyMDpjb25maWcgUUxBM1hYWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWc6MjE6XHR0cmlzdGF0ZSBcJiMzNDtRTG9naWMgUUxBM1hYWCBOZXR3b3JrIERyaXZlciBTdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZy0yMi1cdGRlcGVuZHMgb24gUENJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWctMjYtXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9LY29uZmlnOjI3Olx0ICB3aWxsIGJlIGNhbGxlZCBxbGEzeHh4LlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWctMjgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfUUxBM1hYWCkgJiM0Mzs9IHFsYTN4eHgub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL01ha2VmaWxlLTctb2JqLSQoQ09ORklHX1FMQ05JQykgJiM0Mzs9IHFsY25pYy9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5jLTM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguYzozODojaW5jbHVkZSBcJiMzNDtxbGEzeHh4LmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmMtMzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5jOjQwOiNkZWZpbmUgRFJWX05BTUVcdFwmIzM0O3FsYTN4eHhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmMtNDEtI2RlZmluZSBEUlZfU1RSSU5HXHRcJiMzNDtRTG9naWMgSVNQM1hYWCBOZXR3b3JrIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmgtNS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4Lmg6NjojaWZuZGVmIF9RTEEzWFhYX0hfXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5oOjc6I2RlZmluZSBfUUxBM1hYWF9IX1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguaC04LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4Lmg9MTA3MD1zdHJ1Y3QgcWwzX2FkYXB0ZXIge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmgtMTE4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4Lmg6MTE4ODojZW5kaWZcdFx0XHRcdC8qIF9RTEEzWFhYX0hfICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU2NAoJCQkJCQkJb3V0cHV0OiA5MwoJCQkJCQkJdGhvdWdodHM6IDI3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBJIG5lZWQgdG8gbWFrZSBhIHNvbGlkIGNhbGwgaGVyZS4gRmlyc3QsIEkgc2VlIHRoZSBkcml2ZXIgaW4gcXVlc3Rpb24gaXMgYENPTkZJR19RTEEzWFhYYCwgd2hpY2ggbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgUUxvZ2ljIFFMQTNYWFggbmV0d29yayBkcml2ZXIuIFRoaXMgaXMgYSBQQ0kgRXRoZXJuZXQgZHJpdmVyLCBhbmQgdGhhdCYjMzk7cyBhbHJlYWR5IGEga2V5IHBvaW50LiBNeSBndXQgc2F5cyBpdCByZWxpZXMgb24gc3BlY2lmaWMsIHBoeXNpY2FsIFFMb2dpYyBoYXJkd2FyZSDigJMgdGhlIElTUDN4eHgvUUxBM3h4eCBuZXR3b3JrIGNhcmRzIOKAkyBhbmQgdGhhdCBpcyBhIG1ham9yIHJlZCBmbGFnIGZvciB1cy4KCkkgc2VlIHRoZSBwYXRjaCBpdHNlbGYgaXMgbW9kaWZ5aW5nIGBxbDN4eHhfcHJvYmUoKWAsIHNwZWNpZmljYWxseSBjaGFuZ2luZyB0aGUgZGV2aWNlIGVuYWJsZW1lbnQgY2FsbCB0byBgcGNpbV9lbmFibGVfZGV2aWNlKClgIGluc3RlYWQgb2YgdGhlIHN0YW5kYXJkIGBwY2lfZW5hYmxlX2RldmljZSgpYC4gQnV0IHRoYXQgZG9lc24mIzM5O3QgY2hhbmdlIHRoZSB1bmRlcmx5aW5nIGRlcGVuZGVuY3kgb24gKmFjdHVhbCogaGFyZHdhcmUuCgpJIHJlY2FsbCB0aGUgZnV6emluZyBndWlkZWxpbmVzLiBUaGV5IGV4cGxpY2l0bHkgc3RhdGUgJiMzNDtzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OyDigJMgdGhhdCYjMzk7cyB0aGUgcGhyYXNlIHRoYXQganVtcHMgb3V0IGhlcmUuIEFuZCBsb29raW5nIGF0IHRoZSBleGFtcGxlcyB0aGV5IGdhdmUsIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIHRoYXQgbmVlZCBhbiBBU0lDIG9yIHBoeXNpY2FsIFBDSWUgY2FyZCBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBhcmUgb24gdGhhdCBsaXN0LiBUaGlzIGRlZmluaXRlbHkgZmFsbHMgaW50byB0aGF0IGNhdGVnb3J5LiBXZSYjMzk7cmUgbG9va2luZyBhdCBhIGRyaXZlciBkZXNpZ25lZCBmb3IgKnBoeXNpY2FsKiBoYXJkd2FyZSwgYW5kIG5vdCBvbmUgd2UmIzM5O2QgZmluZCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHN5emthbGxlciBlbnZpcm9ubWVudHMuCgpUaGVyZWZvcmUsIGdpdmVuIHRob3NlIGNvbnN0cmFpbnRzLCB0aGlzIGlzIGxpa2VseSAqbm90KiBzb21ldGhpbmcgdGhhdCYjMzk7cyBmdXp6YWJsZSBpbiBvdXIgdXN1YWwgdGVzdGJlZHMuIFNvIEkmIzM5O20gY2FsbGluZyB0aGlzIGEgJiMzNDtXb3J0aEZ1enppbmc6IGZhbHNlJiMzNDsgc2l0dWF0aW9uLiBUaGUgYEZvY3VzU3ltYm9sc2AgYXJyYXkgc2hvdWxkIHJlbWFpbiBlbXB0eS4gYEVuYWJsZUNvbmZpZ3NgIGFsc28gcmVtYWluIGVtcHR5LiBUaGUgcmVhc29uaW5nLCBpbiBzdW1tYXJ5LCBpczogVGhlIHBhdGNoIHRvdWNoZXMgZXJyb3IgaGFuZGxpbmcgaW4gdGhlIGBxbGEzeHh4LmNgIGRyaXZlciwgYSBkcml2ZXIgZm9yIFFMb2dpYyBQQ0kgaGFyZHdhcmUgdGhhdCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaW4gUUVNVS9zeXprYWxsZXIuCgpUaW1lIHRvIGxvZyBteSBjb25jbHVzaW9ucyB3aXRoIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBlcnJvciBjbGVhbnVwIGxvZ2ljIGluIHFsM3h4eF9wcm9iZSgpIGZvciB0aGUgUUxvZ2ljIFFMQTNYWFggbmV0d29yayBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFFMb2dpYyBQQ0kgbmV0d29yayBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBlcnJvciBjbGVhbnVwIGxvZ2ljIGluIHFsM3h4eF9wcm9iZSgpIGZvciB0aGUgUUxvZ2ljIFFMQTNYWFggbmV0d29yayBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFFMb2dpYyBQQ0kgbmV0d29yayBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDQ6MTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA0OjE5OjIwLjUxMjA0NTQ1OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNTQxMTU5OTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBlcnJvciBjbGVhbnVwIGxvZ2ljIGluIHFsM3h4eF9wcm9iZSgpIGZvciB0aGUgUUxvZ2ljIFFMQTNYWFggbmV0d29yayBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFFMb2dpYyBQQ0kgbmV0d29yayBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDQ6MTk6MjAuNTEyMDYwMzg5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDk1NDUzODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkM2Y0YWU3MWZkNGJkMmFjMGM5ZjYzMDliNDI1N2Q5YjdjMGM2MWU1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgU2VwIDExIDA0OjE5OjE5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5jXFxuaW5kZXggODYxYTEzYWQ3ZTFhYy4uYzFmZTk0M2M5MTMxOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguY1xcbkBAIC0zNzU1LDcgKzM3NTUsNyBAQCBzdGF0aWMgaW50IHFsM3h4eF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gXFx0c3RhdGljIGludCBjYXJkc19mb3VuZDtcXG4gXFx0aW50IGVycjtcXG4gXFxuLVxcdGVyciA9IHBjaV9lbmFibGVfZGV2aWNlKHBkZXYpO1xcbitcXHRlcnIgPSBwY2ltX2VuYWJsZV9kZXZpY2UocGRldik7XFxuIFxcdGlmIChlcnIpIHtcXG4gXFx0XFx0cHJfZXJyKFxcXCIlcyBjYW5ub3QgZW5hYmxlIFBDSSBkZXZpY2VcXFxcblxcXCIsIHBjaV9uYW1lKHBkZXYpKTtcXG4gXFx0XFx0Z290byBlcnJfb3V0O1xcbkBAIC0zNzY0LDcgKzM3NjQsNyBAQCBzdGF0aWMgaW50IHFsM3h4eF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gXFx0ZXJyID0gcGNpX3JlcXVlc3RfcmVnaW9ucyhwZGV2LCBEUlZfTkFNRSk7XFxuIFxcdGlmIChlcnIpIHtcXG4gXFx0XFx0cHJfZXJyKFxcXCIlcyBjYW5ub3Qgb2J0YWluIFBDSSByZXNvdXJjZXNcXFxcblxcXCIsIHBjaV9uYW1lKHBkZXYpKTtcXG4tXFx0XFx0Z290byBlcnJfb3V0X2Rpc2FibGVfcGRldjtcXG4rXFx0XFx0Z290byBlcnJfb3V0O1xcbiBcXHR9XFxuIFxcbiBcXHRwY2lfc2V0X21hc3RlcihwZGV2KTtcXG5AQCAtMzg5MSw4ICszODkxLDYgQEAgc3RhdGljIGludCBxbDN4eHhfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuIFxcdGZyZWVfbmV0ZGV2KG5kZXYpO1xcbiBlcnJfb3V0X2ZyZWVfcmVnaW9uczpcXG4gXFx0cGNpX3JlbGVhc2VfcmVnaW9ucyhwZGV2KTtcXG4tZXJyX291dF9kaXNhYmxlX3BkZXY6XFxuLVxcdHBjaV9kaXNhYmxlX2RldmljZShwZGV2KTtcXG4gZXJyX291dDpcXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNDoxOToyMC45NjIzNDM0MDJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjIwMDkwODQ2MDMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGVycm9yIGNsZWFudXAgbG9naWMgaW4gcWwzeHh4X3Byb2JlKCkgZm9yIHRoZSBRTG9naWMgUUxBM1hYWCBuZXR3b3JrIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUUxvZ2ljIFBDSSBuZXR3b3JrIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQzZjRhZTcxZmQ0YmQyYWMwYzlmNjMwOWI0MjU3ZDliN2MwYzYxZTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCAxMSAwNDoxOToxOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5jXG5pbmRleCA4NjFhMTNhZDdlMWFjLi5jMWZlOTQzYzkxMzE5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguY1xuQEAgLTM3NTUsNyArMzc1NSw3IEBAIHN0YXRpYyBpbnQgcWwzeHh4X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFx0c3RhdGljIGludCBjYXJkc19mb3VuZDtcbiBcdGludCBlcnI7XG4gXG4tXHRlcnIgPSBwY2lfZW5hYmxlX2RldmljZShwZGV2KTtcbitcdGVyciA9IHBjaW1fZW5hYmxlX2RldmljZShwZGV2KTtcbiBcdGlmIChlcnIpIHtcbiBcdFx0cHJfZXJyKFwiJXMgY2Fubm90IGVuYWJsZSBQQ0kgZGV2aWNlXFxuXCIsIHBjaV9uYW1lKHBkZXYpKTtcbiBcdFx0Z290byBlcnJfb3V0O1xuQEAgLTM3NjQsNyArMzc2NCw3IEBAIHN0YXRpYyBpbnQgcWwzeHh4X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFx0ZXJyID0gcGNpX3JlcXVlc3RfcmVnaW9ucyhwZGV2LCBEUlZfTkFNRSk7XG4gXHRpZiAoZXJyKSB7XG4gXHRcdHByX2VycihcIiVzIGNhbm5vdCBvYnRhaW4gUENJIHJlc291cmNlc1xcblwiLCBwY2lfbmFtZShwZGV2KSk7XG4tXHRcdGdvdG8gZXJyX291dF9kaXNhYmxlX3BkZXY7XG4rXHRcdGdvdG8gZXJyX291dDtcbiBcdH1cbiBcbiBcdHBjaV9zZXRfbWFzdGVyKHBkZXYpO1xuQEAgLTM4OTEsOCArMzg5MSw2IEBAIHN0YXRpYyBpbnQgcWwzeHh4X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFx0ZnJlZV9uZXRkZXYobmRldik7XG4gZXJyX291dF9mcmVlX3JlZ2lvbnM6XG4gXHRwY2lfcmVsZWFzZV9yZWdpb25zKHBkZXYpO1xuLWVycl9vdXRfZGlzYWJsZV9wZGV2OlxuLVx0cGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpO1xuIGVycl9vdXQ6XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA0OjE5OjIwLjk2MjM0NTA1MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM5NzYyMzM2ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoaXMgcGF0Y2guIEl0IGxvb2tzIGxpa2UgdGhlIGNoYW5nZSBpcyB3aXRoaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmNgLCBhbmQgc3BlY2lmaWNhbGx5IGluIHRoZSBgcWwzeHh4X3Byb2JlYCBmdW5jdGlvbi4gSSBzZWUgdGhhdCBgcGNpX2VuYWJsZV9kZXZpY2UocGRldilgIGlzIG5vdyBgcGNpbV9lbmFibGVfZGV2aWNlKHBkZXYpYCwgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGBwY2lfZGlzYWJsZV9kZXZpY2UocGRldilgIGNhbGxzIG9uIGVycm9yIHBhdGhzIGFyZSByZW1vdmVkLiBJbW1lZGlhdGVseSwgbXkgbWluZCBzdGFydHMgc3Bpbm5pbmcgLSB3aHkgdGhpcyBjaGFuZ2U/IFdoYXQncyB0aGUgbW90aXZhdGlvbj8gSXMgdGhpcyBhIHN0YW5kYXJkIGNvbnZlcnNpb24gdG8gdGhlIG1hbmFnZWQgUENJIGRldmljZSBmdW5jdGlvbnMsIG9yIGlzIHRoZXJlIGEgbW9yZSBudWFuY2VkIHJlYXNvbj9cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGNvbmZpcm0gbXkgaW5pdGlhbCBhc3N1bXB0aW9uLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYHFsYTN4eHhgIGlzIGluZGVlZCB0aGUgUUxvZ2ljIFFMQTN4eHggTmV0d29yayBEcml2ZXIsIGEgcGh5c2ljYWwgUENJIE5JQyBkcml2ZXIuIEl0J3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoZSB0YXJnZXQgaGFyZHdhcmUgZm9yIHRoaXMgY2hhbmdlIHRvIG1ha2UgY29tcGxldGUgc2Vuc2UuIE9uY2UgSSBjb25maXJtLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRyaXZlciBkZXRhaWxzIGFuZCBpdHMgcmVhY2hhYmlsaXR5IHdpdGhpbiB0aGUgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgb3IgaW4gc3l6a2FsbGVyLiBEb2VzIHRoaXMgY2hhbmdlIGFmZmVjdCBhIGNvbW1vbmx5IHVzZWQgb3IgdGVzdGVkIGNvbmZpZ3VyYXRpb24/IElmIHNvLCBpdCBtaWdodCBiZSBtb3JlIGxpa2VseSB0byBiZSBhIHNpbXBsZSwgcm91dGluZSBjaGFuZ2UuXG5cbkZpbmFsbHksIEkgbmVlZCB0byBkbyBhIGNvZGUgaW5zcGVjdGlvbi4gSSdsbCByZWFjaCBmb3IgYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgIHRvIGdldCBhIGNsb3NlciBsb29rIGF0IHRoZSBjb250ZXh0LiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHVwc3RyZWFtIGRvY3VtZW50YXRpb24gb2YgdGhlIGNoYW5nZSwgcmVsYXRlZCBidWcgcmVwb3J0cywgb3IgYW55dGhpbmcgdGhhdCB3b3VsZCBzaGVkIGxpZ2h0IG9uIHRoZSByZWFzb25pbmcgYmVoaW5kIHRoZSBtYW5hZ2VkIFBDSSBkZXZpY2UgZnVuY3Rpb24gdXNhZ2UgYW5kIHdoeSB0aGUgZGlzYWJsaW5nIGlzIGRyb3BwZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMjcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNDoxOToyNC45Mzg1ODE1NzhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY2NDE5MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUUwzWFhYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5oPTI1OD1lbnVtIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmgtMjczLSAvKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4Lmg6Mjc0OiAgKiBRTDNYWFggbWVtb3J5LW1hcHBlZCByZWdpc3RlcnNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5oOjI3NTogICogUUwzWFhYIGhhcyA0IFxcXCJwYWdlc1xcXCIgb2YgcmVnaXN0ZXJzLCBlYWNoIHBhZ2Ugb2NjdXB5aW5nXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguaC0yNzYtICAqIDI1NiBieXRlcy4gIEVhY2ggcGFnZSBoYXMgYSBcXFwiY29tbW9uXFxcIiBhcmVhIGF0IHRoZSBzdGFydCBhbmQgdGhlblxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguaD04Njc9c3RydWN0IGVlcHJvbV9kYXRhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmgtOTI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4Lmg6OTI4OiNkZWZpbmUgUUwzWFhYX1ZFTkRPUl9JRCAgICAweDEwNzdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5oLTkyOS0jZGVmaW5lIFFMMzAyMl9ERVZJQ0VfSUQgICAgMHgzMDIyXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA0OjE5OjI0Ljk4NTIyOTkxM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM0NzM2NjM3NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUUxBM1hYWCBEcml2ZXIgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQgbWUgcnVuIHRocm91Z2ggdGhpcy4gVGhlIGluc3RydWN0aW9ucyBpbiBTZWN0aW9uIDIgYXJlIGNsZWFyOiBJIG5lZWQgdG8gZGV0ZXJtaW5lIHdoZW4gdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLCBhbmQgdGhhdCBoaW5nZXMgb24gd2hldGhlciB0aGUgbW9kaWZpZWQgY29kZSBmYWxscyBpbnRvIHNwZWNpZmljIFwibmVnYXRpdmUgY3JpdGVyaWFcIiBjYXRlZ29yaWVzLiBTcGVjaWZpY2FsbHksIEknbSBsb29raW5nIGZvciBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIGFuZCBcIlVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRocy5cIlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCB0aGUgYHFsYTN4eHhgIGRyaXZlciwgd2hpY2ggZnJvbSBteSBrbm93bGVkZ2UsIGRlYWxzIHdpdGggUUxvZ2ljIFFMQTNYWFggUENJZSBuZXR3b3JrIGFkYXB0ZXJz4oCUc3BlY2lmaWNhbGx5IHRoZSBRTEEzMDIyLCBRTEEzMDMyIG1vZGVscywgd2l0aCB0aG9zZSBwYXJ0aWN1bGFyIFBDSSBJRHMuIFRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzOiBJcyB0aGlzIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVU/IEFuZCwgZnJvbSB0aGUgbGlzdCBvZiBzdGFuZGFyZCBRRU1VIG5ldHdvcmsgZGV2aWNlcyAoZTEwMDAsIGUxMDAwZSwgYW5kIHNvIG9uKSwgSSBjYW4gaW1tZWRpYXRlbHkgdGVsbCB0aGF0IHRoZSBhbnN3ZXIgaXMgbm8uIFRoZSBRTEEzeHh4IGlzIGEgcGh5c2ljYWwgUENJIG5ldHdvcmsgY29udHJvbGxlciwgbm90IG9uZSBvZiB0aGUgdHlwaWNhbCBlbXVsYXRlZCBkZXZpY2VzLlxuXG5UaGUgY29kZSBpbiBxdWVzdGlvbiBpcyB3aXRoaW4gYHFsM3h4eF9wcm9iZSgpYC4gVGhpcyBjb25maXJtcyBteSBzdXNwaWNpb24gdGhhdCBpdCBydW5zIGR1cmluZyBQQ0kgZGV2aWNlIHByb2JpbmfigJRzcGVjaWZpY2FsbHkgZm9yIGEgKnBoeXNpY2FsKiBRTG9naWMgUUxBM3h4eCBQQ0kgZGV2aWNlLlxuXG5UaGVyZWZvcmUsIGJlY2F1c2UgdGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgYW5kIHRoZSBtb2RpZmljYXRpb25zIEknbSBsb29raW5nIGF0IGFyZSB0cmlnZ2VyZWQgYnkgdGhlIHByb2JlIG9mIHRoYXQgaGFyZHdhcmUsIGl0IHNlZW1zIHRvIGZhbGwgc3F1YXJlbHkgaW50byB0aGUgY2F0ZWdvcnkgb2YgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuXCIgVGhpcyBpcyBiZWNhdXNlIHN0YW5kYXJkIFFFTVUgY2FuJ3QgZW11bGF0ZSB0aGlzIGhhcmR3YXJlLiBJIG5vdyBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgS2NvbmZpZyBmb3IgUUxBM1hYWCB0byBjb25maXJtIG15IGFzc2Vzc21lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NzUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDQ6MTk6MjguNDU4ODk1NTY1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MjkwODI4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUUwzWFhYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDQ6MTk6MjguNTA4MjA3NzUyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQ2ODM4NTkyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIHRoZSBRTG9naWMgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhpcyBRTG9naWMgRXRoZXJuZXQgZHJpdmVyLiBJJ20gYXNzdW1pbmcgaXQncyBwcm9iYWJseSBnb3QgYWxsIHRoZSB1c3VhbCBzdXNwZWN0czogbWF5YmUgb3B0aW9ucyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHNwZWNpZmljIGZlYXR1cmVzLCBzZWxlY3RpbmcgZGlmZmVyZW50IFBIWXMgb3IgbGluayBzcGVlZHMsIHBlcmhhcHMgc29tZSBkZWJ1Z2dpbmcgZmxhZ3MsIGFuZCBkZWZpbml0ZWx5IHN1cHBvcnQgZm9yIGRpZmZlcmVudCBRTG9naWMgTklDIG1vZGVscy4gSSdsbCBiZSBsb29raW5nIGZvciBkZXBlbmRlbmNpZXMgdG9vIOKAkyBhcmUgdGhlcmUgc3BlY2lmaWMgaGFyZHdhcmUgb3Iga2VybmVsIGNvbmZpZ3VyYXRpb25zIHJlcXVpcmVkIGZvciBjZXJ0YWluIGZlYXR1cmVzPyBJJ2xsIHByb2JhYmx5IGFsc28gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBkZWZhdWx0IHZhbHVlcyBhc3NpZ25lZCwgYW5kIGlmIGFueSBvZiB0aGVtIGFyZSB1bnVzdWFsIG9yIG1pZ2h0IGFmZmVjdCBob3cgSSB3b3VsZCB1c2UgdGhpcyBkcml2ZXIgaW4gcHJhY3RpY2UuIFRpbWUgdG8gc2VlIHdoYXQgd2UndmUgZ290IGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzEzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDQ6MTk6MzAuOTc2NTk2MzY4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwMTMyMjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlFMQTNYWFh8cWxhM3h4eFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWc9MTg9aWYgTkVUX1ZFTkRPUl9RTE9HSUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZzoyMDpjb25maWcgUUxBM1hYWFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9LY29uZmlnOjIxOlxcdHRyaXN0YXRlIFxcXCJRTG9naWMgUUxBM1hYWCBOZXR3b3JrIERyaXZlciBTdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9LY29uZmlnLTIyLVxcdGRlcGVuZHMgb24gUENJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZy0yNi1cXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZzoyNzpcXHQgIHdpbGwgYmUgY2FsbGVkIHFsYTN4eHguXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWctMjgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfUUxBM1hYWCkgKz0gcWxhM3h4eC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL01ha2VmaWxlLTctb2JqLSQoQ09ORklHX1FMQ05JQykgKz0gcWxjbmljL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguYy0zNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5jOjM4OiNpbmNsdWRlIFxcXCJxbGEzeHh4LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguYy0zOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5jOjQwOiNkZWZpbmUgRFJWX05BTUVcXHRcXFwicWxhM3h4eFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5jLTQxLSNkZWZpbmUgRFJWX1NUUklOR1xcdFxcXCJRTG9naWMgSVNQM1hYWCBOZXR3b3JrIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmgtNS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5oOjY6I2lmbmRlZiBfUUxBM1hYWF9IX1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4Lmg6NzojZGVmaW5lIF9RTEEzWFhYX0hfXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguaC04LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguaD0xMDcwPXN0cnVjdCBxbDNfYWRhcHRlciB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5oLTExODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguaDoxMTg4OiNlbmRpZlxcdFxcdFxcdFxcdC8qIF9RTEEzWFhYX0hfICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA0OjE5OjMxLjAyNjczNTMzNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwMDI2NDA5OTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEkgbmVlZCB0byBtYWtlIGEgc29saWQgY2FsbCBoZXJlLiBGaXJzdCwgSSBzZWUgdGhlIGRyaXZlciBpbiBxdWVzdGlvbiBpcyBgQ09ORklHX1FMQTNYWFhgLCB3aGljaCBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIFFMb2dpYyBRTEEzWFhYIG5ldHdvcmsgZHJpdmVyLiBUaGlzIGlzIGEgUENJIEV0aGVybmV0IGRyaXZlciwgYW5kIHRoYXQncyBhbHJlYWR5IGEga2V5IHBvaW50LiBNeSBndXQgc2F5cyBpdCByZWxpZXMgb24gc3BlY2lmaWMsIHBoeXNpY2FsIFFMb2dpYyBoYXJkd2FyZSDigJMgdGhlIElTUDN4eHgvUUxBM3h4eCBuZXR3b3JrIGNhcmRzIOKAkyBhbmQgdGhhdCBpcyBhIG1ham9yIHJlZCBmbGFnIGZvciB1cy5cblxuSSBzZWUgdGhlIHBhdGNoIGl0c2VsZiBpcyBtb2RpZnlpbmcgYHFsM3h4eF9wcm9iZSgpYCwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIHRoZSBkZXZpY2UgZW5hYmxlbWVudCBjYWxsIHRvIGBwY2ltX2VuYWJsZV9kZXZpY2UoKWAgaW5zdGVhZCBvZiB0aGUgc3RhbmRhcmQgYHBjaV9lbmFibGVfZGV2aWNlKClgLiBCdXQgdGhhdCBkb2Vzbid0IGNoYW5nZSB0aGUgdW5kZXJseWluZyBkZXBlbmRlbmN5IG9uICphY3R1YWwqIGhhcmR3YXJlLlxuXG5JIHJlY2FsbCB0aGUgZnV6emluZyBndWlkZWxpbmVzLiBUaGV5IGV4cGxpY2l0bHkgc3RhdGUgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiDigJMgdGhhdCdzIHRoZSBwaHJhc2UgdGhhdCBqdW1wcyBvdXQgaGVyZS4gQW5kIGxvb2tpbmcgYXQgdGhlIGV4YW1wbGVzIHRoZXkgZ2F2ZSwgdGhpbmdzIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgdGhhdCBuZWVkIGFuIEFTSUMgb3IgcGh5c2ljYWwgUENJZSBjYXJkIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGFyZSBvbiB0aGF0IGxpc3QuIFRoaXMgZGVmaW5pdGVseSBmYWxscyBpbnRvIHRoYXQgY2F0ZWdvcnkuIFdlJ3JlIGxvb2tpbmcgYXQgYSBkcml2ZXIgZGVzaWduZWQgZm9yICpwaHlzaWNhbCogaGFyZHdhcmUsIGFuZCBub3Qgb25lIHdlJ2QgZmluZCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHN5emthbGxlciBlbnZpcm9ubWVudHMuXG5cblRoZXJlZm9yZSwgZ2l2ZW4gdGhvc2UgY29uc3RyYWludHMsIHRoaXMgaXMgbGlrZWx5ICpub3QqIHNvbWV0aGluZyB0aGF0J3MgZnV6emFibGUgaW4gb3VyIHVzdWFsIHRlc3RiZWRzLiBTbyBJJ20gY2FsbGluZyB0aGlzIGEgXCJXb3J0aEZ1enppbmc6IGZhbHNlXCIgc2l0dWF0aW9uLiBUaGUgYEZvY3VzU3ltYm9sc2AgYXJyYXkgc2hvdWxkIHJlbWFpbiBlbXB0eS4gYEVuYWJsZUNvbmZpZ3NgIGFsc28gcmVtYWluIGVtcHR5LiBUaGUgcmVhc29uaW5nLCBpbiBzdW1tYXJ5LCBpczogVGhlIHBhdGNoIHRvdWNoZXMgZXJyb3IgaGFuZGxpbmcgaW4gdGhlIGBxbGEzeHh4LmNgIGRyaXZlciwgYSBkcml2ZXIgZm9yIFFMb2dpYyBQQ0kgaGFyZHdhcmUgdGhhdCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaW4gUUVNVS9zeXprYWxsZXIuXG5cblRpbWUgdG8gbG9nIG15IGNvbmNsdXNpb25zIHdpdGggYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU2NCwiT3V0cHV0VG9rZW5zIjo5MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNDoxOTo0MS4wNTMxNTc0NjNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODUwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGVycm9yIGNsZWFudXAgbG9naWMgaW4gcWwzeHh4X3Byb2JlKCkgZm9yIHRoZSBRTG9naWMgUUxBM1hYWCBuZXR3b3JrIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUUxvZ2ljIFBDSSBuZXR3b3JrIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGVycm9yIGNsZWFudXAgbG9naWMgaW4gcWwzeHh4X3Byb2JlKCkgZm9yIHRoZSBRTG9naWMgUUxBM1hYWCBuZXR3b3JrIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUUxvZ2ljIFBDSSBuZXR3b3JrIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNDoxOTo0MS4wNTMxOTE1ODNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8jgrm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-11 03:44:28 +0000 UTC FinishedAt: 2026-09-11 04:19:42 +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+CgkJCTx0ZD4yMDI2LzA5LzExIDA0OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBlcnJvciBjbGVhbnVwIGxvZ2ljIGluIHFsM3h4eF9wcm9iZSgpIGZvciB0aGUgUUxvZ2ljIFFMQTNYWFggbmV0d29yayBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFFMb2dpYyBQQ0kgbmV0d29yayBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNDoxOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGQzZjRhZTcxZmQ0YmQyYWMwYzlmNjMwOWI0MjU3ZDliN2MwYzYxZTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCAxMSAwNDoxOToxOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguY1xuaW5kZXggODYxYTEzYWQ3ZTFhYy4uYzFmZTk0M2M5MTMxOSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmNcbkBAIC0zNzU1LDcgJiM0MzszNzU1LDcgQEAgc3RhdGljIGludCBxbDN4eHhfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4gXHRzdGF0aWMgaW50IGNhcmRzX2ZvdW5kO1xuIFx0aW50IGVycjtcbiBcbi1cdGVyciA9IHBjaV9lbmFibGVfZGV2aWNlKHBkZXYpO1xuJiM0MztcdGVyciA9IHBjaW1fZW5hYmxlX2RldmljZShwZGV2KTtcbiBcdGlmIChlcnIpIHtcbiBcdFx0cHJfZXJyKFwmIzM0OyVzIGNhbm5vdCBlbmFibGUgUENJIGRldmljZVxcblwmIzM0OywgcGNpX25hbWUocGRldikpO1xuIFx0XHRnb3RvIGVycl9vdXQ7XG5AQCAtMzc2NCw3ICYjNDM7Mzc2NCw3IEBAIHN0YXRpYyBpbnQgcWwzeHh4X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFx0ZXJyID0gcGNpX3JlcXVlc3RfcmVnaW9ucyhwZGV2LCBEUlZfTkFNRSk7XG4gXHRpZiAoZXJyKSB7XG4gXHRcdHByX2VycihcJiMzNDslcyBjYW5ub3Qgb2J0YWluIFBDSSByZXNvdXJjZXNcXG5cJiMzNDssIHBjaV9uYW1lKHBkZXYpKTtcbi1cdFx0Z290byBlcnJfb3V0X2Rpc2FibGVfcGRldjtcbiYjNDM7XHRcdGdvdG8gZXJyX291dDtcbiBcdH1cbiBcbiBcdHBjaV9zZXRfbWFzdGVyKHBkZXYpO1xuQEAgLTM4OTEsOCAmIzQzOzM4OTEsNiBAQCBzdGF0aWMgaW50IHFsM3h4eF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiBcdGZyZWVfbmV0ZGV2KG5kZXYpO1xuIGVycl9vdXRfZnJlZV9yZWdpb25zOlxuIFx0cGNpX3JlbGVhc2VfcmVnaW9ucyhwZGV2KTtcbi1lcnJfb3V0X2Rpc2FibGVfcGRldjpcbi1cdHBjaV9kaXNhYmxlX2RldmljZShwZGV2KTtcbiBlcnJfb3V0OlxuIFx0cmV0dXJuIGVycjtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDQ6MTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBlcnJvciBjbGVhbnVwIGxvZ2ljIGluIHFsM3h4eF9wcm9iZSgpIGZvciB0aGUgUUxvZ2ljIFFMQTNYWFggbmV0d29yayBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFFMb2dpYyBQQ0kgbmV0d29yayBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGQzZjRhZTcxZmQ0YmQyYWMwYzlmNjMwOWI0MjU3ZDliN2MwYzYxZTUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIFNlcCAxMSAwNDoxOToxOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5jCmluZGV4IDg2MWExM2FkN2UxYWMuLmMxZmU5NDNjOTEzMTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguYwpAQCAtMzc1NSw3ICYjNDM7Mzc1NSw3IEBAIHN0YXRpYyBpbnQgcWwzeHh4X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LAogCXN0YXRpYyBpbnQgY2FyZHNfZm91bmQ7CiAJaW50IGVycjsKIAotCWVyciA9IHBjaV9lbmFibGVfZGV2aWNlKHBkZXYpOwomIzQzOwllcnIgPSBwY2ltX2VuYWJsZV9kZXZpY2UocGRldik7CiAJaWYgKGVycikgewogCQlwcl9lcnIoJiMzNDslcyBjYW5ub3QgZW5hYmxlIFBDSSBkZXZpY2VcbiYjMzQ7LCBwY2lfbmFtZShwZGV2KSk7CiAJCWdvdG8gZXJyX291dDsKQEAgLTM3NjQsNyAmIzQzOzM3NjQsNyBAQCBzdGF0aWMgaW50IHFsM3h4eF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAllcnIgPSBwY2lfcmVxdWVzdF9yZWdpb25zKHBkZXYsIERSVl9OQU1FKTsKIAlpZiAoZXJyKSB7CiAJCXByX2VycigmIzM0OyVzIGNhbm5vdCBvYnRhaW4gUENJIHJlc291cmNlc1xuJiMzNDssIHBjaV9uYW1lKHBkZXYpKTsKLQkJZ290byBlcnJfb3V0X2Rpc2FibGVfcGRldjsKJiM0MzsJCWdvdG8gZXJyX291dDsKIAl9CiAKIAlwY2lfc2V0X21hc3RlcihwZGV2KTsKQEAgLTM4OTEsOCAmIzQzOzM4OTEsNiBAQCBzdGF0aWMgaW50IHFsM3h4eF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAlmcmVlX25ldGRldihuZGV2KTsKIGVycl9vdXRfZnJlZV9yZWdpb25zOgogCXBjaV9yZWxlYXNlX3JlZ2lvbnMocGRldik7Ci1lcnJfb3V0X2Rpc2FibGVfcGRldjoKLQlwY2lfZGlzYWJsZV9kZXZpY2UocGRldik7CiBlcnJfb3V0OgogCXJldHVybiBlcnI7CiB9CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMjcKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIERyaXZlciBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhpcyBwYXRjaC4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIHdpdGhpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguY2AsIGFuZCBzcGVjaWZpY2FsbHkgaW4gdGhlIGBxbDN4eHhfcHJvYmVgIGZ1bmN0aW9uLiBJIHNlZSB0aGF0IGBwY2lfZW5hYmxlX2RldmljZShwZGV2KWAgaXMgbm93IGBwY2ltX2VuYWJsZV9kZXZpY2UocGRldilgLCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgYHBjaV9kaXNhYmxlX2RldmljZShwZGV2KWAgY2FsbHMgb24gZXJyb3IgcGF0aHMgYXJlIHJlbW92ZWQuIEltbWVkaWF0ZWx5LCBteSBtaW5kIHN0YXJ0cyBzcGlubmluZyAtIHdoeSB0aGlzIGNoYW5nZT8gV2hhdCYjMzk7cyB0aGUgbW90aXZhdGlvbj8gSXMgdGhpcyBhIHN0YW5kYXJkIGNvbnZlcnNpb24gdG8gdGhlIG1hbmFnZWQgUENJIGRldmljZSBmdW5jdGlvbnMsIG9yIGlzIHRoZXJlIGEgbW9yZSBudWFuY2VkIHJlYXNvbj8KCk15IG5leHQgc3RlcCBpcyB0byBjb25maXJtIG15IGluaXRpYWwgYXNzdW1wdGlvbi4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBxbGEzeHh4YCBpcyBpbmRlZWQgdGhlIFFMb2dpYyBRTEEzeHh4IE5ldHdvcmsgRHJpdmVyLCBhIHBoeXNpY2FsIFBDSSBOSUMgZHJpdmVyLiBJdCYjMzk7cyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgdGhlIHRhcmdldCBoYXJkd2FyZSBmb3IgdGhpcyBjaGFuZ2UgdG8gbWFrZSBjb21wbGV0ZSBzZW5zZS4gT25jZSBJIGNvbmZpcm0sIEkgbmVlZCB0byBjaGVjayB0aGUgZHJpdmVyIGRldGFpbHMgYW5kIGl0cyByZWFjaGFiaWxpdHkgd2l0aGluIHRoZSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50LCBvciBpbiBzeXprYWxsZXIuIERvZXMgdGhpcyBjaGFuZ2UgYWZmZWN0IGEgY29tbW9ubHkgdXNlZCBvciB0ZXN0ZWQgY29uZmlndXJhdGlvbj8gSWYgc28sIGl0IG1pZ2h0IGJlIG1vcmUgbGlrZWx5IHRvIGJlIGEgc2ltcGxlLCByb3V0aW5lIGNoYW5nZS4KCkZpbmFsbHksIEkgbmVlZCB0byBkbyBhIGNvZGUgaW5zcGVjdGlvbi4gSSYjMzk7bGwgcmVhY2ggZm9yIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBnZXQgYSBjbG9zZXIgbG9vayBhdCB0aGUgY29udGV4dC4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdXBzdHJlYW0gZG9jdW1lbnRhdGlvbiBvZiB0aGUgY2hhbmdlLCByZWxhdGVkIGJ1ZyByZXBvcnRzLCBvciBhbnl0aGluZyB0aGF0IHdvdWxkIHNoZWQgbGlnaHQgb24gdGhlIHJlYXNvbmluZyBiZWhpbmQgdGhlIG1hbmFnZWQgUENJIGRldmljZSBmdW5jdGlvbiB1c2FnZSBhbmQgd2h5IHRoZSBkaXNhYmxpbmcgaXMgZHJvcHBlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtRTDNYWFgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguaD0yNTg9ZW51bSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguaC0yNzMtIC8qXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5oOjI3NDogICogUUwzWFhYIG1lbW9yeS1tYXBwZWQgcmVnaXN0ZXJzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5oOjI3NTogICogUUwzWFhYIGhhcyA0IFwmIzM0O3BhZ2VzXCYjMzQ7IG9mIHJlZ2lzdGVycywgZWFjaCBwYWdlIG9jY3VweWluZ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguaC0yNzYtICAqIDI1NiBieXRlcy4gIEVhY2ggcGFnZSBoYXMgYSBcJiMzNDtjb21tb25cJiMzNDsgYXJlYSBhdCB0aGUgc3RhcnQgYW5kIHRoZW5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5oPTg2Nz1zdHJ1Y3QgZWVwcm9tX2RhdGEge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmgtOTI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguaDo5Mjg6I2RlZmluZSBRTDNYWFhfVkVORE9SX0lEICAgIDB4MTA3N1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguaC05MjktI2RlZmluZSBRTDMwMjJfREVWSUNFX0lEICAgIDB4MzAyMlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NzUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzNTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUUxBM1hYWCBEcml2ZXIgZm9yIEZ1enppbmcqKgoKT2theSwgbGV0IG1lIHJ1biB0aHJvdWdoIHRoaXMuIFRoZSBpbnN0cnVjdGlvbnMgaW4gU2VjdGlvbiAyIGFyZSBjbGVhcjogSSBuZWVkIHRvIGRldGVybWluZSB3aGVuIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCwgYW5kIHRoYXQgaGluZ2VzIG9uIHdoZXRoZXIgdGhlIG1vZGlmaWVkIGNvZGUgZmFsbHMgaW50byBzcGVjaWZpYyAmIzM0O25lZ2F0aXZlIGNyaXRlcmlhJiMzNDsgY2F0ZWdvcmllcy4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGxvb2tpbmcgZm9yICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlJiMzNDsgYW5kICYjMzQ7VW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzLiYjMzQ7CgpSaWdodCwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhlIGBxbGEzeHh4YCBkcml2ZXIsIHdoaWNoIGZyb20gbXkga25vd2xlZGdlLCBkZWFscyB3aXRoIFFMb2dpYyBRTEEzWFhYIFBDSWUgbmV0d29yayBhZGFwdGVyc+KAlHNwZWNpZmljYWxseSB0aGUgUUxBMzAyMiwgUUxBMzAzMiBtb2RlbHMsIHdpdGggdGhvc2UgcGFydGljdWxhciBQQ0kgSURzLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBpczogSXMgdGhpcyBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VPyBBbmQsIGZyb20gdGhlIGxpc3Qgb2Ygc3RhbmRhcmQgUUVNVSBuZXR3b3JrIGRldmljZXMgKGUxMDAwLCBlMTAwMGUsIGFuZCBzbyBvbiksIEkgY2FuIGltbWVkaWF0ZWx5IHRlbGwgdGhhdCB0aGUgYW5zd2VyIGlzIG5vLiBUaGUgUUxBM3h4eCBpcyBhIHBoeXNpY2FsIFBDSSBuZXR3b3JrIGNvbnRyb2xsZXIsIG5vdCBvbmUgb2YgdGhlIHR5cGljYWwgZW11bGF0ZWQgZGV2aWNlcy4KClRoZSBjb2RlIGluIHF1ZXN0aW9uIGlzIHdpdGhpbiBgcWwzeHh4X3Byb2JlKClgLiBUaGlzIGNvbmZpcm1zIG15IHN1c3BpY2lvbiB0aGF0IGl0IHJ1bnMgZHVyaW5nIFBDSSBkZXZpY2UgcHJvYmluZ+KAlHNwZWNpZmljYWxseSBmb3IgYSAqcGh5c2ljYWwqIFFMb2dpYyBRTEEzeHh4IFBDSSBkZXZpY2UuCgpUaGVyZWZvcmUsIGJlY2F1c2UgdGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgYW5kIHRoZSBtb2RpZmljYXRpb25zIEkmIzM5O20gbG9va2luZyBhdCBhcmUgdHJpZ2dlcmVkIGJ5IHRoZSBwcm9iZSBvZiB0aGF0IGhhcmR3YXJlLCBpdCBzZWVtcyB0byBmYWxsIHNxdWFyZWx5IGludG8gdGhlIGNhdGVnb3J5IG9mICYjMzQ7U3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlLiYjMzQ7IFRoaXMgaXMgYmVjYXVzZSBzdGFuZGFyZCBRRU1VIGNhbiYjMzk7dCBlbXVsYXRlIHRoaXMgaGFyZHdhcmUuIEkgbm93IG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBLY29uZmlnIGZvciBRTEEzWFhYIHRvIGNvbmZpcm0gbXkgYXNzZXNzbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMSAwNDoxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBRTDNYWFgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA0OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3MTMKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzOgoKKipFeGFtaW5pbmcgdGhlIFFMb2dpYyBFdGhlcm5ldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoaXMgUUxvZ2ljIEV0aGVybmV0IGRyaXZlci4gSSYjMzk7bSBhc3N1bWluZyBpdCYjMzk7cyBwcm9iYWJseSBnb3QgYWxsIHRoZSB1c3VhbCBzdXNwZWN0czogbWF5YmUgb3B0aW9ucyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHNwZWNpZmljIGZlYXR1cmVzLCBzZWxlY3RpbmcgZGlmZmVyZW50IFBIWXMgb3IgbGluayBzcGVlZHMsIHBlcmhhcHMgc29tZSBkZWJ1Z2dpbmcgZmxhZ3MsIGFuZCBkZWZpbml0ZWx5IHN1cHBvcnQgZm9yIGRpZmZlcmVudCBRTG9naWMgTklDIG1vZGVscy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgZGVwZW5kZW5jaWVzIHRvbyDigJMgYXJlIHRoZXJlIHNwZWNpZmljIGhhcmR3YXJlIG9yIGtlcm5lbCBjb25maWd1cmF0aW9ucyByZXF1aXJlZCBmb3IgY2VydGFpbiBmZWF0dXJlcz8gSSYjMzk7bGwgcHJvYmFibHkgYWxzbyBjaGVjayBpZiB0aGVyZSBhcmUgYW55IGRlZmF1bHQgdmFsdWVzIGFzc2lnbmVkLCBhbmQgaWYgYW55IG9mIHRoZW0gYXJlIHVudXN1YWwgb3IgbWlnaHQgYWZmZWN0IGhvdyBJIHdvdWxkIHVzZSB0aGlzIGRyaXZlciBpbiBwcmFjdGljZS4gVGltZSB0byBzZWUgd2hhdCB3ZSYjMzk7dmUgZ290IGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1FMQTNYWFh8cWxhM3h4eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZz0xOD1pZiBORVRfVkVORE9SX1FMT0dJQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWctMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZzoyMDpjb25maWcgUUxBM1hYWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWc6MjE6XHR0cmlzdGF0ZSBcJiMzNDtRTG9naWMgUUxBM1hYWCBOZXR3b3JrIERyaXZlciBTdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZy0yMi1cdGRlcGVuZHMgb24gUENJXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWctMjYtXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9LY29uZmlnOjI3Olx0ICB3aWxsIGJlIGNhbGxlZCBxbGEzeHh4LlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWctMjgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfUUxBM1hYWCkgJiM0Mzs9IHFsYTN4eHgub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL01ha2VmaWxlLTctb2JqLSQoQ09ORklHX1FMQ05JQykgJiM0Mzs9IHFsY25pYy9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5jLTM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguYzozODojaW5jbHVkZSBcJiMzNDtxbGEzeHh4LmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmMtMzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5jOjQwOiNkZWZpbmUgRFJWX05BTUVcdFwmIzM0O3FsYTN4eHhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmMtNDEtI2RlZmluZSBEUlZfU1RSSU5HXHRcJiMzNDtRTG9naWMgSVNQM1hYWCBOZXR3b3JrIERyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmgtNS0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4Lmg6NjojaWZuZGVmIF9RTEEzWFhYX0hfXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5oOjc6I2RlZmluZSBfUUxBM1hYWF9IX1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguaC04LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4Lmg9MTA3MD1zdHJ1Y3QgcWwzX2FkYXB0ZXIge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmgtMTE4Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4Lmg6MTE4ODojZW5kaWZcdFx0XHRcdC8qIF9RTEEzWFhYX0hfICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDQ6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU2NAoJCQkJCQkJb3V0cHV0OiA5MwoJCQkJCQkJdGhvdWdodHM6IDI3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBJIG5lZWQgdG8gbWFrZSBhIHNvbGlkIGNhbGwgaGVyZS4gRmlyc3QsIEkgc2VlIHRoZSBkcml2ZXIgaW4gcXVlc3Rpb24gaXMgYENPTkZJR19RTEEzWFhYYCwgd2hpY2ggbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgUUxvZ2ljIFFMQTNYWFggbmV0d29yayBkcml2ZXIuIFRoaXMgaXMgYSBQQ0kgRXRoZXJuZXQgZHJpdmVyLCBhbmQgdGhhdCYjMzk7cyBhbHJlYWR5IGEga2V5IHBvaW50LiBNeSBndXQgc2F5cyBpdCByZWxpZXMgb24gc3BlY2lmaWMsIHBoeXNpY2FsIFFMb2dpYyBoYXJkd2FyZSDigJMgdGhlIElTUDN4eHgvUUxBM3h4eCBuZXR3b3JrIGNhcmRzIOKAkyBhbmQgdGhhdCBpcyBhIG1ham9yIHJlZCBmbGFnIGZvciB1cy4KCkkgc2VlIHRoZSBwYXRjaCBpdHNlbGYgaXMgbW9kaWZ5aW5nIGBxbDN4eHhfcHJvYmUoKWAsIHNwZWNpZmljYWxseSBjaGFuZ2luZyB0aGUgZGV2aWNlIGVuYWJsZW1lbnQgY2FsbCB0byBgcGNpbV9lbmFibGVfZGV2aWNlKClgIGluc3RlYWQgb2YgdGhlIHN0YW5kYXJkIGBwY2lfZW5hYmxlX2RldmljZSgpYC4gQnV0IHRoYXQgZG9lc24mIzM5O3QgY2hhbmdlIHRoZSB1bmRlcmx5aW5nIGRlcGVuZGVuY3kgb24gKmFjdHVhbCogaGFyZHdhcmUuCgpJIHJlY2FsbCB0aGUgZnV6emluZyBndWlkZWxpbmVzLiBUaGV5IGV4cGxpY2l0bHkgc3RhdGUgJiMzNDtzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUmIzM0OyDigJMgdGhhdCYjMzk7cyB0aGUgcGhyYXNlIHRoYXQganVtcHMgb3V0IGhlcmUuIEFuZCBsb29raW5nIGF0IHRoZSBleGFtcGxlcyB0aGV5IGdhdmUsIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIHRoYXQgbmVlZCBhbiBBU0lDIG9yIHBoeXNpY2FsIFBDSWUgY2FyZCBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBhcmUgb24gdGhhdCBsaXN0LiBUaGlzIGRlZmluaXRlbHkgZmFsbHMgaW50byB0aGF0IGNhdGVnb3J5LiBXZSYjMzk7cmUgbG9va2luZyBhdCBhIGRyaXZlciBkZXNpZ25lZCBmb3IgKnBoeXNpY2FsKiBoYXJkd2FyZSwgYW5kIG5vdCBvbmUgd2UmIzM5O2QgZmluZCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHN5emthbGxlciBlbnZpcm9ubWVudHMuCgpUaGVyZWZvcmUsIGdpdmVuIHRob3NlIGNvbnN0cmFpbnRzLCB0aGlzIGlzIGxpa2VseSAqbm90KiBzb21ldGhpbmcgdGhhdCYjMzk7cyBmdXp6YWJsZSBpbiBvdXIgdXN1YWwgdGVzdGJlZHMuIFNvIEkmIzM5O20gY2FsbGluZyB0aGlzIGEgJiMzNDtXb3J0aEZ1enppbmc6IGZhbHNlJiMzNDsgc2l0dWF0aW9uLiBUaGUgYEZvY3VzU3ltYm9sc2AgYXJyYXkgc2hvdWxkIHJlbWFpbiBlbXB0eS4gYEVuYWJsZUNvbmZpZ3NgIGFsc28gcmVtYWluIGVtcHR5LiBUaGUgcmVhc29uaW5nLCBpbiBzdW1tYXJ5LCBpczogVGhlIHBhdGNoIHRvdWNoZXMgZXJyb3IgaGFuZGxpbmcgaW4gdGhlIGBxbGEzeHh4LmNgIGRyaXZlciwgYSBkcml2ZXIgZm9yIFFMb2dpYyBQQ0kgaGFyZHdhcmUgdGhhdCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaW4gUUVNVS9zeXprYWxsZXIuCgpUaW1lIHRvIGxvZyBteSBjb25jbHVzaW9ucyB3aXRoIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzExIDA0OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBlcnJvciBjbGVhbnVwIGxvZ2ljIGluIHFsM3h4eF9wcm9iZSgpIGZvciB0aGUgUUxvZ2ljIFFMQTNYWFggbmV0d29yayBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFFMb2dpYyBQQ0kgbmV0d29yayBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBlcnJvciBjbGVhbnVwIGxvZ2ljIGluIHFsM3h4eF9wcm9iZSgpIGZvciB0aGUgUUxvZ2ljIFFMQTNYWFggbmV0d29yayBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFFMb2dpYyBQQ0kgbmV0d29yayBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTEgMDQ6MTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA0OjE5OjIwLjUxMjA0NTQ1OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNTQxMTU5OTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBlcnJvciBjbGVhbnVwIGxvZ2ljIGluIHFsM3h4eF9wcm9iZSgpIGZvciB0aGUgUUxvZ2ljIFFMQTNYWFggbmV0d29yayBkcml2ZXIuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHNwZWNpZmljIHBoeXNpY2FsIFFMb2dpYyBQQ0kgbmV0d29yayBoYXJkd2FyZSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VL3ZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDQ6MTk6MjAuNTEyMDYwMzg5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDk1NDUzODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkM2Y0YWU3MWZkNGJkMmFjMGM5ZjYzMDliNDI1N2Q5YjdjMGM2MWU1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgU2VwIDExIDA0OjE5OjE5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5jXFxuaW5kZXggODYxYTEzYWQ3ZTFhYy4uYzFmZTk0M2M5MTMxOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguY1xcbkBAIC0zNzU1LDcgKzM3NTUsNyBAQCBzdGF0aWMgaW50IHFsM3h4eF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gXFx0c3RhdGljIGludCBjYXJkc19mb3VuZDtcXG4gXFx0aW50IGVycjtcXG4gXFxuLVxcdGVyciA9IHBjaV9lbmFibGVfZGV2aWNlKHBkZXYpO1xcbitcXHRlcnIgPSBwY2ltX2VuYWJsZV9kZXZpY2UocGRldik7XFxuIFxcdGlmIChlcnIpIHtcXG4gXFx0XFx0cHJfZXJyKFxcXCIlcyBjYW5ub3QgZW5hYmxlIFBDSSBkZXZpY2VcXFxcblxcXCIsIHBjaV9uYW1lKHBkZXYpKTtcXG4gXFx0XFx0Z290byBlcnJfb3V0O1xcbkBAIC0zNzY0LDcgKzM3NjQsNyBAQCBzdGF0aWMgaW50IHFsM3h4eF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gXFx0ZXJyID0gcGNpX3JlcXVlc3RfcmVnaW9ucyhwZGV2LCBEUlZfTkFNRSk7XFxuIFxcdGlmIChlcnIpIHtcXG4gXFx0XFx0cHJfZXJyKFxcXCIlcyBjYW5ub3Qgb2J0YWluIFBDSSByZXNvdXJjZXNcXFxcblxcXCIsIHBjaV9uYW1lKHBkZXYpKTtcXG4tXFx0XFx0Z290byBlcnJfb3V0X2Rpc2FibGVfcGRldjtcXG4rXFx0XFx0Z290byBlcnJfb3V0O1xcbiBcXHR9XFxuIFxcbiBcXHRwY2lfc2V0X21hc3RlcihwZGV2KTtcXG5AQCAtMzg5MSw4ICszODkxLDYgQEAgc3RhdGljIGludCBxbDN4eHhfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuIFxcdGZyZWVfbmV0ZGV2KG5kZXYpO1xcbiBlcnJfb3V0X2ZyZWVfcmVnaW9uczpcXG4gXFx0cGNpX3JlbGVhc2VfcmVnaW9ucyhwZGV2KTtcXG4tZXJyX291dF9kaXNhYmxlX3BkZXY6XFxuLVxcdHBjaV9kaXNhYmxlX2RldmljZShwZGV2KTtcXG4gZXJyX291dDpcXG4gXFx0cmV0dXJuIGVycjtcXG4gfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNDoxOToyMC45NjIzNDM0MDJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjIwMDkwODQ2MDMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGVycm9yIGNsZWFudXAgbG9naWMgaW4gcWwzeHh4X3Byb2JlKCkgZm9yIHRoZSBRTG9naWMgUUxBM1hYWCBuZXR3b3JrIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUUxvZ2ljIFBDSSBuZXR3b3JrIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQzZjRhZTcxZmQ0YmQyYWMwYzlmNjMwOWI0MjU3ZDliN2MwYzYxZTVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIFNlcCAxMSAwNDoxOToxOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5jXG5pbmRleCA4NjFhMTNhZDdlMWFjLi5jMWZlOTQzYzkxMzE5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguY1xuQEAgLTM3NTUsNyArMzc1NSw3IEBAIHN0YXRpYyBpbnQgcWwzeHh4X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFx0c3RhdGljIGludCBjYXJkc19mb3VuZDtcbiBcdGludCBlcnI7XG4gXG4tXHRlcnIgPSBwY2lfZW5hYmxlX2RldmljZShwZGV2KTtcbitcdGVyciA9IHBjaW1fZW5hYmxlX2RldmljZShwZGV2KTtcbiBcdGlmIChlcnIpIHtcbiBcdFx0cHJfZXJyKFwiJXMgY2Fubm90IGVuYWJsZSBQQ0kgZGV2aWNlXFxuXCIsIHBjaV9uYW1lKHBkZXYpKTtcbiBcdFx0Z290byBlcnJfb3V0O1xuQEAgLTM3NjQsNyArMzc2NCw3IEBAIHN0YXRpYyBpbnQgcWwzeHh4X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFx0ZXJyID0gcGNpX3JlcXVlc3RfcmVnaW9ucyhwZGV2LCBEUlZfTkFNRSk7XG4gXHRpZiAoZXJyKSB7XG4gXHRcdHByX2VycihcIiVzIGNhbm5vdCBvYnRhaW4gUENJIHJlc291cmNlc1xcblwiLCBwY2lfbmFtZShwZGV2KSk7XG4tXHRcdGdvdG8gZXJyX291dF9kaXNhYmxlX3BkZXY7XG4rXHRcdGdvdG8gZXJyX291dDtcbiBcdH1cbiBcbiBcdHBjaV9zZXRfbWFzdGVyKHBkZXYpO1xuQEAgLTM4OTEsOCArMzg5MSw2IEBAIHN0YXRpYyBpbnQgcWwzeHh4X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFx0ZnJlZV9uZXRkZXYobmRldik7XG4gZXJyX291dF9mcmVlX3JlZ2lvbnM6XG4gXHRwY2lfcmVsZWFzZV9yZWdpb25zKHBkZXYpO1xuLWVycl9vdXRfZGlzYWJsZV9wZGV2OlxuLVx0cGNpX2Rpc2FibGVfZGV2aWNlKHBkZXYpO1xuIGVycl9vdXQ6XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA0OjE5OjIwLjk2MjM0NTA1MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM5NzYyMzM2ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoaXMgcGF0Y2guIEl0IGxvb2tzIGxpa2UgdGhlIGNoYW5nZSBpcyB3aXRoaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmNgLCBhbmQgc3BlY2lmaWNhbGx5IGluIHRoZSBgcWwzeHh4X3Byb2JlYCBmdW5jdGlvbi4gSSBzZWUgdGhhdCBgcGNpX2VuYWJsZV9kZXZpY2UocGRldilgIGlzIG5vdyBgcGNpbV9lbmFibGVfZGV2aWNlKHBkZXYpYCwgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGBwY2lfZGlzYWJsZV9kZXZpY2UocGRldilgIGNhbGxzIG9uIGVycm9yIHBhdGhzIGFyZSByZW1vdmVkLiBJbW1lZGlhdGVseSwgbXkgbWluZCBzdGFydHMgc3Bpbm5pbmcgLSB3aHkgdGhpcyBjaGFuZ2U/IFdoYXQncyB0aGUgbW90aXZhdGlvbj8gSXMgdGhpcyBhIHN0YW5kYXJkIGNvbnZlcnNpb24gdG8gdGhlIG1hbmFnZWQgUENJIGRldmljZSBmdW5jdGlvbnMsIG9yIGlzIHRoZXJlIGEgbW9yZSBudWFuY2VkIHJlYXNvbj9cblxuTXkgbmV4dCBzdGVwIGlzIHRvIGNvbmZpcm0gbXkgaW5pdGlhbCBhc3N1bXB0aW9uLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYHFsYTN4eHhgIGlzIGluZGVlZCB0aGUgUUxvZ2ljIFFMQTN4eHggTmV0d29yayBEcml2ZXIsIGEgcGh5c2ljYWwgUENJIE5JQyBkcml2ZXIuIEl0J3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoZSB0YXJnZXQgaGFyZHdhcmUgZm9yIHRoaXMgY2hhbmdlIHRvIG1ha2UgY29tcGxldGUgc2Vuc2UuIE9uY2UgSSBjb25maXJtLCBJIG5lZWQgdG8gY2hlY2sgdGhlIGRyaXZlciBkZXRhaWxzIGFuZCBpdHMgcmVhY2hhYmlsaXR5IHdpdGhpbiB0aGUgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudCwgb3IgaW4gc3l6a2FsbGVyLiBEb2VzIHRoaXMgY2hhbmdlIGFmZmVjdCBhIGNvbW1vbmx5IHVzZWQgb3IgdGVzdGVkIGNvbmZpZ3VyYXRpb24/IElmIHNvLCBpdCBtaWdodCBiZSBtb3JlIGxpa2VseSB0byBiZSBhIHNpbXBsZSwgcm91dGluZSBjaGFuZ2UuXG5cbkZpbmFsbHksIEkgbmVlZCB0byBkbyBhIGNvZGUgaW5zcGVjdGlvbi4gSSdsbCByZWFjaCBmb3IgYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgIHRvIGdldCBhIGNsb3NlciBsb29rIGF0IHRoZSBjb250ZXh0LiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHVwc3RyZWFtIGRvY3VtZW50YXRpb24gb2YgdGhlIGNoYW5nZSwgcmVsYXRlZCBidWcgcmVwb3J0cywgb3IgYW55dGhpbmcgdGhhdCB3b3VsZCBzaGVkIGxpZ2h0IG9uIHRoZSByZWFzb25pbmcgYmVoaW5kIHRoZSBtYW5hZ2VkIFBDSSBkZXZpY2UgZnVuY3Rpb24gdXNhZ2UgYW5kIHdoeSB0aGUgZGlzYWJsaW5nIGlzIGRyb3BwZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMjcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNDoxOToyNC45Mzg1ODE1NzhaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY2NDE5MTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUUwzWFhYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5oPTI1OD1lbnVtIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmgtMjczLSAvKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4Lmg6Mjc0OiAgKiBRTDNYWFggbWVtb3J5LW1hcHBlZCByZWdpc3RlcnNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5oOjI3NTogICogUUwzWFhYIGhhcyA0IFxcXCJwYWdlc1xcXCIgb2YgcmVnaXN0ZXJzLCBlYWNoIHBhZ2Ugb2NjdXB5aW5nXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguaC0yNzYtICAqIDI1NiBieXRlcy4gIEVhY2ggcGFnZSBoYXMgYSBcXFwiY29tbW9uXFxcIiBhcmVhIGF0IHRoZSBzdGFydCBhbmQgdGhlblxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguaD04Njc9c3RydWN0IGVlcHJvbV9kYXRhIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmgtOTI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4Lmg6OTI4OiNkZWZpbmUgUUwzWFhYX1ZFTkRPUl9JRCAgICAweDEwNzdcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5oLTkyOS0jZGVmaW5lIFFMMzAyMl9ERVZJQ0VfSUQgICAgMHgzMDIyXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA0OjE5OjI0Ljk4NTIyOTkxM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM0NzM2NjM3NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUUxBM1hYWCBEcml2ZXIgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQgbWUgcnVuIHRocm91Z2ggdGhpcy4gVGhlIGluc3RydWN0aW9ucyBpbiBTZWN0aW9uIDIgYXJlIGNsZWFyOiBJIG5lZWQgdG8gZGV0ZXJtaW5lIHdoZW4gdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLCBhbmQgdGhhdCBoaW5nZXMgb24gd2hldGhlciB0aGUgbW9kaWZpZWQgY29kZSBmYWxscyBpbnRvIHNwZWNpZmljIFwibmVnYXRpdmUgY3JpdGVyaWFcIiBjYXRlZ29yaWVzLiBTcGVjaWZpY2FsbHksIEknbSBsb29raW5nIGZvciBcIlN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZVwiIGFuZCBcIlVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRocy5cIlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCB0aGUgYHFsYTN4eHhgIGRyaXZlciwgd2hpY2ggZnJvbSBteSBrbm93bGVkZ2UsIGRlYWxzIHdpdGggUUxvZ2ljIFFMQTNYWFggUENJZSBuZXR3b3JrIGFkYXB0ZXJz4oCUc3BlY2lmaWNhbGx5IHRoZSBRTEEzMDIyLCBRTEEzMDMyIG1vZGVscywgd2l0aCB0aG9zZSBwYXJ0aWN1bGFyIFBDSSBJRHMuIFRoZSBjcnVjaWFsIHF1ZXN0aW9uIGlzOiBJcyB0aGlzIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVU/IEFuZCwgZnJvbSB0aGUgbGlzdCBvZiBzdGFuZGFyZCBRRU1VIG5ldHdvcmsgZGV2aWNlcyAoZTEwMDAsIGUxMDAwZSwgYW5kIHNvIG9uKSwgSSBjYW4gaW1tZWRpYXRlbHkgdGVsbCB0aGF0IHRoZSBhbnN3ZXIgaXMgbm8uIFRoZSBRTEEzeHh4IGlzIGEgcGh5c2ljYWwgUENJIG5ldHdvcmsgY29udHJvbGxlciwgbm90IG9uZSBvZiB0aGUgdHlwaWNhbCBlbXVsYXRlZCBkZXZpY2VzLlxuXG5UaGUgY29kZSBpbiBxdWVzdGlvbiBpcyB3aXRoaW4gYHFsM3h4eF9wcm9iZSgpYC4gVGhpcyBjb25maXJtcyBteSBzdXNwaWNpb24gdGhhdCBpdCBydW5zIGR1cmluZyBQQ0kgZGV2aWNlIHByb2JpbmfigJRzcGVjaWZpY2FsbHkgZm9yIGEgKnBoeXNpY2FsKiBRTG9naWMgUUxBM3h4eCBQQ0kgZGV2aWNlLlxuXG5UaGVyZWZvcmUsIGJlY2F1c2UgdGhpcyBkcml2ZXIgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmUgYW5kIHRoZSBtb2RpZmljYXRpb25zIEknbSBsb29raW5nIGF0IGFyZSB0cmlnZ2VyZWQgYnkgdGhlIHByb2JlIG9mIHRoYXQgaGFyZHdhcmUsIGl0IHNlZW1zIHRvIGZhbGwgc3F1YXJlbHkgaW50byB0aGUgY2F0ZWdvcnkgb2YgXCJTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUuXCIgVGhpcyBpcyBiZWNhdXNlIHN0YW5kYXJkIFFFTVUgY2FuJ3QgZW11bGF0ZSB0aGlzIGhhcmR3YXJlLiBJIG5vdyBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgS2NvbmZpZyBmb3IgUUxBM1hYWCB0byBjb25maXJtIG15IGFzc2Vzc21lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5NzUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDQ6MTk6MjguNDU4ODk1NTY1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MjkwODI4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUUwzWFhYXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDQ6MTk6MjguNTA4MjA3NzUyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQ2ODM4NTkyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIHRoZSBRTG9naWMgRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZ2AgZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhpcyBRTG9naWMgRXRoZXJuZXQgZHJpdmVyLiBJJ20gYXNzdW1pbmcgaXQncyBwcm9iYWJseSBnb3QgYWxsIHRoZSB1c3VhbCBzdXNwZWN0czogbWF5YmUgb3B0aW9ucyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIHNwZWNpZmljIGZlYXR1cmVzLCBzZWxlY3RpbmcgZGlmZmVyZW50IFBIWXMgb3IgbGluayBzcGVlZHMsIHBlcmhhcHMgc29tZSBkZWJ1Z2dpbmcgZmxhZ3MsIGFuZCBkZWZpbml0ZWx5IHN1cHBvcnQgZm9yIGRpZmZlcmVudCBRTG9naWMgTklDIG1vZGVscy4gSSdsbCBiZSBsb29raW5nIGZvciBkZXBlbmRlbmNpZXMgdG9vIOKAkyBhcmUgdGhlcmUgc3BlY2lmaWMgaGFyZHdhcmUgb3Iga2VybmVsIGNvbmZpZ3VyYXRpb25zIHJlcXVpcmVkIGZvciBjZXJ0YWluIGZlYXR1cmVzPyBJJ2xsIHByb2JhYmx5IGFsc28gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBkZWZhdWx0IHZhbHVlcyBhc3NpZ25lZCwgYW5kIGlmIGFueSBvZiB0aGVtIGFyZSB1bnVzdWFsIG9yIG1pZ2h0IGFmZmVjdCBob3cgSSB3b3VsZCB1c2UgdGhpcyBkcml2ZXIgaW4gcHJhY3RpY2UuIFRpbWUgdG8gc2VlIHdoYXQgd2UndmUgZ290IGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzEzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTFUMDQ6MTk6MzAuOTc2NTk2MzY4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUwMTMyMjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlFMQTNYWFh8cWxhM3h4eFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWc9MTg9aWYgTkVUX1ZFTkRPUl9RTE9HSUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZzoyMDpjb25maWcgUUxBM1hYWFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9LY29uZmlnOjIxOlxcdHRyaXN0YXRlIFxcXCJRTG9naWMgUUxBM1hYWCBOZXR3b3JrIERyaXZlciBTdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9LY29uZmlnLTIyLVxcdGRlcGVuZHMgb24gUENJXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZy0yNi1cXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvS2NvbmZpZzoyNzpcXHQgIHdpbGwgYmUgY2FsbGVkIHFsYTN4eHguXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL0tjb25maWctMjgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfUUxBM1hYWCkgKz0gcWxhM3h4eC5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL01ha2VmaWxlLTctb2JqLSQoQ09ORklHX1FMQ05JQykgKz0gcWxjbmljL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguYy0zNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5jOjM4OiNpbmNsdWRlIFxcXCJxbGEzeHh4LmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguYy0zOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5jOjQwOiNkZWZpbmUgRFJWX05BTUVcXHRcXFwicWxhM3h4eFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5jLTQxLSNkZWZpbmUgRFJWX1NUUklOR1xcdFxcXCJRTG9naWMgSVNQM1hYWCBOZXR3b3JrIERyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4LmgtNS0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5oOjY6I2lmbmRlZiBfUUxBM1hYWF9IX1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3Fsb2dpYy9xbGEzeHh4Lmg6NzojZGVmaW5lIF9RTEEzWFhYX0hfXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguaC04LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguaD0xMDcwPXN0cnVjdCBxbDNfYWRhcHRlciB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9xbG9naWMvcWxhM3h4eC5oLTExODctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcWxvZ2ljL3FsYTN4eHguaDoxMTg4OiNlbmRpZlxcdFxcdFxcdFxcdC8qIF9RTEEzWFhYX0hfICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTExVDA0OjE5OjMxLjAyNjczNTMzNloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwMDI2NDA5OTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEkgbmVlZCB0byBtYWtlIGEgc29saWQgY2FsbCBoZXJlLiBGaXJzdCwgSSBzZWUgdGhlIGRyaXZlciBpbiBxdWVzdGlvbiBpcyBgQ09ORklHX1FMQTNYWFhgLCB3aGljaCBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIFFMb2dpYyBRTEEzWFhYIG5ldHdvcmsgZHJpdmVyLiBUaGlzIGlzIGEgUENJIEV0aGVybmV0IGRyaXZlciwgYW5kIHRoYXQncyBhbHJlYWR5IGEga2V5IHBvaW50LiBNeSBndXQgc2F5cyBpdCByZWxpZXMgb24gc3BlY2lmaWMsIHBoeXNpY2FsIFFMb2dpYyBoYXJkd2FyZSDigJMgdGhlIElTUDN4eHgvUUxBM3h4eCBuZXR3b3JrIGNhcmRzIOKAkyBhbmQgdGhhdCBpcyBhIG1ham9yIHJlZCBmbGFnIGZvciB1cy5cblxuSSBzZWUgdGhlIHBhdGNoIGl0c2VsZiBpcyBtb2RpZnlpbmcgYHFsM3h4eF9wcm9iZSgpYCwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIHRoZSBkZXZpY2UgZW5hYmxlbWVudCBjYWxsIHRvIGBwY2ltX2VuYWJsZV9kZXZpY2UoKWAgaW5zdGVhZCBvZiB0aGUgc3RhbmRhcmQgYHBjaV9lbmFibGVfZGV2aWNlKClgLiBCdXQgdGhhdCBkb2Vzbid0IGNoYW5nZSB0aGUgdW5kZXJseWluZyBkZXBlbmRlbmN5IG9uICphY3R1YWwqIGhhcmR3YXJlLlxuXG5JIHJlY2FsbCB0aGUgZnV6emluZyBndWlkZWxpbmVzLiBUaGV5IGV4cGxpY2l0bHkgc3RhdGUgXCJzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmVcIiDigJMgdGhhdCdzIHRoZSBwaHJhc2UgdGhhdCBqdW1wcyBvdXQgaGVyZS4gQW5kIGxvb2tpbmcgYXQgdGhlIGV4YW1wbGVzIHRoZXkgZ2F2ZSwgdGhpbmdzIGxpa2UgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgdGhhdCBuZWVkIGFuIEFTSUMgb3IgcGh5c2ljYWwgUENJZSBjYXJkIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIGFyZSBvbiB0aGF0IGxpc3QuIFRoaXMgZGVmaW5pdGVseSBmYWxscyBpbnRvIHRoYXQgY2F0ZWdvcnkuIFdlJ3JlIGxvb2tpbmcgYXQgYSBkcml2ZXIgZGVzaWduZWQgZm9yICpwaHlzaWNhbCogaGFyZHdhcmUsIGFuZCBub3Qgb25lIHdlJ2QgZmluZCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHN5emthbGxlciBlbnZpcm9ubWVudHMuXG5cblRoZXJlZm9yZSwgZ2l2ZW4gdGhvc2UgY29uc3RyYWludHMsIHRoaXMgaXMgbGlrZWx5ICpub3QqIHNvbWV0aGluZyB0aGF0J3MgZnV6emFibGUgaW4gb3VyIHVzdWFsIHRlc3RiZWRzLiBTbyBJJ20gY2FsbGluZyB0aGlzIGEgXCJXb3J0aEZ1enppbmc6IGZhbHNlXCIgc2l0dWF0aW9uLiBUaGUgYEZvY3VzU3ltYm9sc2AgYXJyYXkgc2hvdWxkIHJlbWFpbiBlbXB0eS4gYEVuYWJsZUNvbmZpZ3NgIGFsc28gcmVtYWluIGVtcHR5LiBUaGUgcmVhc29uaW5nLCBpbiBzdW1tYXJ5LCBpczogVGhlIHBhdGNoIHRvdWNoZXMgZXJyb3IgaGFuZGxpbmcgaW4gdGhlIGBxbGEzeHh4LmNgIGRyaXZlciwgYSBkcml2ZXIgZm9yIFFMb2dpYyBQQ0kgaGFyZHdhcmUgdGhhdCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaW4gUUVNVS9zeXprYWxsZXIuXG5cblRpbWUgdG8gbG9nIG15IGNvbmNsdXNpb25zIHdpdGggYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTU2NCwiT3V0cHV0VG9rZW5zIjo5MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNDoxOTo0MS4wNTMxNTc0NjNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODUwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGVycm9yIGNsZWFudXAgbG9naWMgaW4gcWwzeHh4X3Byb2JlKCkgZm9yIHRoZSBRTG9naWMgUUxBM1hYWCBuZXR3b3JrIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUUxvZ2ljIFBDSSBuZXR3b3JrIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGVycm9yIGNsZWFudXAgbG9naWMgaW4gcWwzeHh4X3Byb2JlKCkgZm9yIHRoZSBRTG9naWMgUUxBM1hYWCBuZXR3b3JrIGRyaXZlci4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgc3BlY2lmaWMgcGh5c2ljYWwgUUxvZ2ljIFBDSSBuZXR3b3JrIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUvdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMVQwNDoxOTo0MS4wNTMxOTE1ODNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow8jgrm[1] Phase: Running StartedAt: 2026-09-11 04:19:52 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow8jgrm[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-11 04:19:52 +0000 UTC FinishedAt: 2026-09-11 04:20:11 +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,}