Name: series-workflowdn2zz Phase: Failed StartedAt: 2026-08-05 08:11:14 +0000 UTC FinishedAt: 2026-08-05 08:31:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdn2zz[0] Phase: Succeeded StartedAt: 2026-08-05 08:11:14 +0000 UTC FinishedAt: 2026-08-05 08:31:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdn2zz[0].run-triage Phase: Succeeded StartedAt: 2026-08-05 08:11:14 +0000 UTC FinishedAt: 2026-08-05 08:31:18 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSAucmVtb3ZlIHRlYXJkb3duIGNhbGxiYWNrIG9mIHRoZSBNZWRpYVRlayBNVDc5MjUgUENJZSB3aXJlbGVzcyBkcml2ZXIgKG10NzkyNV9wY2lfcmVtb3ZlIGFuZCBtdDc5MjVlX3VucmVnaXN0ZXJfZGV2aWNlKSB0byBmaXggYSByYWNlIGNvbmRpdGlvbiB3aXRoIHJlc2V0X3dvcmsgZHVyaW5nIGRldmljZSByZW1vdmFsLiBJdCBhbHNvIGFkZHMgYSBjaGVjayBpbiBtdDc5MnhfcmVzZXQgdG8gc3VwcG9ydCB0aGlzIHRlYXJkb3duIGxvZ2ljLiBUaGUgcHJvbXB0IGV4cGxpY2l0bHkgZXhjbHVkZXMgZHJpdmVyIC5yZW1vdmUgY2FsbGJhY2tzIGFuZCBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDBjNjI2NGM0YTUyOWY1N2YxODM2MGZhY2FmMjViYjU2ZGRlYTBmMmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDA4OjMwOjI3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmNcbmluZGV4IDAyZWYwOWRkNzk3ZGEuLjkzYzgyM2ViNzUwMTMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmNcbkBAIC00Nyw5ICYjNDM7NDcsMTAgQEAgc3RhdGljIHZvaWQgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuIFx0aWYgKGRldi1cdTAwM2VwaHkuY2hpcF9jYXAgXHUwMDI2IE1UNzkyeF9DSElQX0NBUF9XRl9SRl9QSU5fQ1RSTF9FVlRfRU4pXG4gXHRcdHdpcGh5X3Jma2lsbF9zdG9wX3BvbGxpbmcoaHctXHUwMDNld2lwaHkpO1xuIFxuLVx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZkZXYtXHUwMDNlcmVzZXRfd29yayk7XG4gXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2Vpbml0X3dvcmspO1xuIFx0bXQ3Nl91bnJlZ2lzdGVyX2RldmljZShcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4mIzQzO1x0c2V0X2JpdChNVDc2X1JFTU9WRUQsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbiYjNDM7XHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2VyZXNldF93b3JrKTtcbiBcdG10NzZfZm9yX2VhY2hfcV9yeChcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgaSlcbiBcdFx0bmFwaV9kaXNhYmxlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm5hcGlbaV0pO1xuIFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNnBtLVx1MDAzZXBzX3dvcmspO1xuQEAgLTcyNSw3ICYjNDM7NzI2LDYgQEAgc3RhdGljIHZvaWQgbXQ3OTI1X3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gXHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XG4gXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MnhfZGV2LCBtdDc2KTtcbiBcbi1cdHNldF9iaXQoTVQ3Nl9SRU1PVkVELCBcdTAwMjZtZGV2LVx1MDAzZXBoeS5zdGF0ZSk7XG4gXHRtdDc5MjVlX3VucmVnaXN0ZXJfZGV2aWNlKGRldik7XG4gXHRkZXZtX2ZyZWVfaXJxKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwZGV2LVx1MDAzZWlycSwgZGV2KTtcbiBcdG10NzZfZnJlZV9kZXZpY2UoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfbWFjLmNcbmluZGV4IDg4OGU1YTUwNTY3MzEuLjFlMjBiMzMzY2M2MTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfbWFjLmNcbkBAIC0yNzgsNiAmIzQzOzI3OCw5IEBAIHZvaWQgbXQ3OTJ4X3Jlc2V0KHN0cnVjdCBtdDc2X2RldiAqbWRldilcbiBcdGlmIChwbS1cdTAwM2VzdXNwZW5kZWQpXG4gXHRcdHJldHVybjtcbiBcbiYjNDM7XHRpZiAodGVzdF9iaXQoTVQ3Nl9SRU1PVkVELCBcdTAwMjZtZGV2LVx1MDAzZXBoeS5zdGF0ZSkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0cXVldWVfd29yayhkZXYtXHUwMDNlbXQ3Ni53cSwgXHUwMDI2ZGV2LVx1MDAzZXJlc2V0X3dvcmspO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChtdDc5MnhfcmVzZXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjMwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgLnJlbW92ZSB0ZWFyZG93biBjYWxsYmFjayBvZiB0aGUgTWVkaWFUZWsgTVQ3OTI1IFBDSWUgd2lyZWxlc3MgZHJpdmVyIChtdDc5MjVfcGNpX3JlbW92ZSBhbmQgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZSkgdG8gZml4IGEgcmFjZSBjb25kaXRpb24gd2l0aCByZXNldF93b3JrIGR1cmluZyBkZXZpY2UgcmVtb3ZhbC4gSXQgYWxzbyBhZGRzIGEgY2hlY2sgaW4gbXQ3OTJ4X3Jlc2V0IHRvIHN1cHBvcnQgdGhpcyB0ZWFyZG93biBsb2dpYy4gVGhlIHByb21wdCBleHBsaWNpdGx5IGV4Y2x1ZGVzIGRyaXZlciAucmVtb3ZlIGNhbGxiYWNrcyBhbmQgY29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwYzYyNjRjNGE1MjlmNTdmMTgzNjBmYWNhZjI1YmI1NmRkZWEwZjJmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgNSAwODozMDoyNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMKaW5kZXggMDJlZjA5ZGQ3OTdkYS4uOTNjODIzZWI3NTAxMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMKQEAgLTQ3LDkgJiM0Mzs0NywxMCBAQCBzdGF0aWMgdm9pZCBtdDc5MjVlX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpCiAJaWYgKGRldi0mZ3Q7cGh5LmNoaXBfY2FwICZhbXA7IE1UNzkyeF9DSElQX0NBUF9XRl9SRl9QSU5fQ1RSTF9FVlRfRU4pCiAJCXdpcGh5X3Jma2lsbF9zdG9wX3BvbGxpbmcoaHctJmd0O3dpcGh5KTsKIAotCWNhbmNlbF93b3JrX3N5bmMoJmFtcDtkZXYtJmd0O3Jlc2V0X3dvcmspOwogCWNhbmNlbF93b3JrX3N5bmMoJmFtcDtkZXYtJmd0O2luaXRfd29yayk7CiAJbXQ3Nl91bnJlZ2lzdGVyX2RldmljZSgmYW1wO2Rldi0mZ3Q7bXQ3Nik7CiYjNDM7CXNldF9iaXQoTVQ3Nl9SRU1PVkVELCAmYW1wO2Rldi0mZ3Q7bXBoeS5zdGF0ZSk7CiYjNDM7CWNhbmNlbF93b3JrX3N5bmMoJmFtcDtkZXYtJmd0O3Jlc2V0X3dvcmspOwogCW10NzZfZm9yX2VhY2hfcV9yeCgmYW1wO2Rldi0mZ3Q7bXQ3NiwgaSkKIAkJbmFwaV9kaXNhYmxlKCZhbXA7ZGV2LSZndDttdDc2Lm5hcGlbaV0pOwogCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYW1wO3BtLSZndDtwc193b3JrKTsKQEAgLTcyNSw3ICYjNDM7NzI2LDYgQEAgc3RhdGljIHZvaWQgbXQ3OTI1X3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiAJc3RydWN0IG10NzZfZGV2ICptZGV2ID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpOwogCXN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzkyeF9kZXYsIG10NzYpOwogCi0Jc2V0X2JpdChNVDc2X1JFTU9WRUQsICZhbXA7bWRldi0mZ3Q7cGh5LnN0YXRlKTsKIAltdDc5MjVlX3VucmVnaXN0ZXJfZGV2aWNlKGRldik7CiAJZGV2bV9mcmVlX2lycSgmYW1wO3BkZXYtJmd0O2RldiwgcGRldi0mZ3Q7aXJxLCBkZXYpOwogCW10NzZfZnJlZV9kZXZpY2UoJmFtcDtkZXYtJmd0O210NzYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuYwppbmRleCA4ODhlNWE1MDU2NzMxLi4xZTIwYjMzM2NjNjEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuYwpAQCAtMjc4LDYgJiM0MzsyNzgsOSBAQCB2b2lkIG10NzkyeF9yZXNldChzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYpCiAJaWYgKHBtLSZndDtzdXNwZW5kZWQpCiAJCXJldHVybjsKIAomIzQzOwlpZiAodGVzdF9iaXQoTVQ3Nl9SRU1PVkVELCAmYW1wO21kZXYtJmd0O3BoeS5zdGF0ZSkpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJcXVldWVfd29yayhkZXYtJmd0O210NzYud3EsICZhbXA7ZGV2LSZndDtyZXNldF93b3JrKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKG10NzkyeF9yZXNldCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NjMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA2MjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggQW5hbHlzaXM6IE1lZGlhVGVrIE1UNzkyNSBQQ0llIERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSBNZWRpYVRlayBNVDc5MjUgUENJZSB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBpbiBgbXQ3OTI1L3BjaS5jYCBhbmQgYG10NzkyeF9tYWMuY2AuIFRoZSBjb3JlIGNoYW5nZXMgc2VlbSB0byBiZSBpbiB0aGUgZGV2aWNlIHVucmVnaXN0cmF0aW9uIChgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZWApLCBQQ0kgcmVtb3ZhbCAoYG10NzkyNV9wY2lfcmVtb3ZlYCksIGFuZCBhIG5ldyBjaGVjayBmb3IgYE1UNzZfUkVNT1ZFRGAgaW4gYG10NzkyeF9yZXNldGAuIFRoZSBwcm9tcHQgc3BlY2lmaWVzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdCBtb2RpZmllcyBjb2RlIHJlbGF0ZWQgdG8gdmVuZG9yLXNwZWNpZmljIFBDSWUgaGFyZHdhcmUgdGhhdCBjYW4mIzM5O3QgYmUgZW11bGF0ZWQuCgpNeSBmaXJzdCB0aG91Z2h0IGlzLCB0aGlzIGlzIGEgUENJZSB3aXJlbGVzcyBjYXJkLCB3aGljaCB0eXBpY2FsbHkgKmlzbiYjMzk7dCogZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCYjMzk7cyBhIGh1Z2UgcmVkIGZsYWcuIFRoZSBwYXRjaCBtb2RpZmllcyBgbXQ3OTI1X3BjaV9yZW1vdmVgLCB3aGljaCBpcyB0aGUgYC5yZW1vdmVgIGNhbGxiYWNrLiBUaGlzIGNhbGxiYWNrIGlzIG9ubHkgZXhlY3V0ZWQgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4gVGhlIHByb21wdCBpcyBxdWl0ZSBzcGVjaWZpYyBhYm91dCAqdGhvc2UqIGJlaW5nIGV4Y2x1ZGVkLiBUaGVuIHRoZXJlJiMzOTtzIHRoZSBtb2RpZmljYXRpb24gb2YgYG10NzkyeF9yZXNldGAuIEkgbmVlZCB0byB0aGluayBhYm91dCBob3cgdGhhdCBnZXRzIGNhbGxlZC4KCkkgbmVlZCB0byBjb25maXJtIHRoYXQgTVQ3OTI1IHNwZWNpZmljYWxseSBpcyAqbm90KiBlbXVsYXRlZC4gVXN1YWxseSwgdGhlc2Ugc29ydHMgb2YgY2FyZHMgcmVxdWlyZSB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgdG8gZnVuY3Rpb24uIEnigJltIHByZXR0eSBzdXJlIHRoZSBgbXQ3NmAgZHJpdmVyIGlzIHNwZWNpZmljIHRvIE1lZGlhVGVrIHdpcmVsZXNzIGNhcmRzLiBDb3VsZCB0aGlzIGFsc28gYmUgYSBVU0IgZGV2aWNlPyBUaGUgcGF0Y2ggZm9jdXNlcyBvbiBgcGNpLmNgLCBzbyBJJiMzOTtkIHNheSB0aGUgYW5zd2VyIGlzIG5vLiBJ4oCZbSBhbHNvIHNlZWluZyB0aGF0IGBtdDc5MnhfcmVzZXRgIGlzIGV4cG9ydGVkLCBzbyBpdCYjMzk7cyBwcm9iYWJseSBjYWxsZWQgZHVyaW5nIHJlc2V0IHNpdHVhdGlvbnMsIGJ1dCB0aGUgcHJpbWFyeSBmb2N1cyBpcyBzdGlsbCBvbiBwaHlzaWNhbCBQQ0kgZGV2aWNlIGZ1bmN0aW9uYWxpdHkuCgpUaGlzIGlzIGFsbCBwb2ludGluZyB0byBhIHBhdGNoIHRoYXQgaXMgKm5vdCogZnV6emFibGUgYWNjb3JkaW5nIHRvIHRoZSBndWlkZWxpbmVzLiBUaGUgY2hhbmdlcyBhcmUgbGFyZ2VseSBjb25maW5lZCB0byB0aGUgUENJZS1zcGVjaWZpYyBkcml2ZXIsIGluY2x1ZGluZyB0aGUgYC5yZW1vdmVgIGNhbGxiYWNrLCBhbmQgdG91Y2ggaGFyZHdhcmUgdGhhdCYjMzk7cyBub3QgZWFzaWx5IGVtdWxhdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyeF9yZXNldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0yMjc9c3RhdGljIGludCBtdDc5MjFfY2hpcF9yZXNldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMzQtXHRcdC8qIFJlc2V0IHdpZmlzeXMgZGlyZWN0bHkuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjM1Olx0XHRtdDc5MnhfcmVzZXQoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIzNi1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9NzE1PXZvaWQgbXQ3OTIxX2NvcmVkdW1wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc1OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjc1OTpcdG10NzkyeF9yZXNldChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy03NjAtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jPTE1PWludCBtdDc5MjFfbWN1X3BhcnNlX3Jlc3BvbnNlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgaW50IGNtZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy0yNC1cdFx0XHRjbWQsIHNlcSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzoyNTpcdFx0bXQ3OTJ4X3Jlc2V0KG1kZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtMjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpLmM9NDY4PXN0YXRpYyBpbnQgbXQ3OTIxX3BjaV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldmljZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2kuYy01NDUtXHRpZiAoZXJyIFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpLmM6NTQ2Olx0XHRtdDc5MnhfcmVzZXQoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpLmMtNTQ3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaS5jPTU1MT1zdGF0aWMgaW50IG10NzkyMV9wY2lfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldmljZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2kuYy02MDQtXHRpZiAoZXJyIFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpLmM6NjA1Olx0XHRtdDc5MnhfcmVzZXQoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpLmMtNjA2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaS5jPTY4Nj1zdGF0aWMgcGNpX2Vyc19yZXN1bHRfdCBtdDc5MjFfc2xvdF9yZXNldChzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2kuYy03MDEtXHQvKiBBbHNvIHRyeSBkbyB0aGUgdmVuZG9yIHJlc2V0IHRvIGxldCBpdCBtb3JlIGNsZWFyLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpLmM6NzAyOlx0bXQ3OTJ4X3Jlc2V0KG1kZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpLmMtNzAzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYz0yMDk9c3RhdGljIGludCBtdDc5MjFzX3N1c3BlbmQoc3RydWN0IGRldmljZSAqX19kZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTI3OS1cdGlmIChlcnIgXHUwMDNjIDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM6MjgwOlx0XHRtdDc5MnhfcmVzZXQoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTI4MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM9Mjg1PXN0YXRpYyBpbnQgbXQ3OTIxc19yZXN1bWUoc3RydWN0IGRldmljZSAqX19kZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTMxMy1cdGlmIChlcnIgXHUwMDNjIDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM6MzE0Olx0XHRtdDc5MnhfcmVzZXQoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTMxNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz0yNjQ9c3RhdGljIGludCBtdDc5MjF1X3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0yODUtXHRpZiAoZXJyIFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6Mjg2Olx0XHRtdDc5MnhfcmVzZXQoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMjg3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTI5MT1zdGF0aWMgaW50IG10NzkyMXVfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTMyNy1cdGlmIChlcnIgXHUwMDNjIDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzozMjg6XHRcdG10NzkyeF9yZXNldChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zMjktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTI2Nj1zdGF0aWMgaW50IG10NzkyNV9jaGlwX3Jlc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI3My1cdFx0LyogUmVzZXQgd2lmaXN5cyBkaXJlY3RseS4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNzQ6XHRcdG10NzkyeF9yZXNldChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjc1LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNTcyPXZvaWQgbXQ3OTI1X2NvcmVkdW1wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2MTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNjE2Olx0bXQ3OTJ4X3Jlc2V0KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2MTctfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTIyPWludCBtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgaW50IGNtZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0zMC1cdFx0ZGV2X2VycihtZGV2LVx1MDAzZWRldiwgXCYjMzQ7TWVzc2FnZSAlMDh4IChzZXEgJWQpIHRpbWVvdXRcXG5cJiMzNDssIGNtZCwgc2VxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjMxOlx0XHRtdDc5MnhfcmVzZXQobWRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0zMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYz03MzU9c3RhdGljIGludCBtdDc5MjVfcGNpX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2aWNlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTgxOC1cdGlmIChlcnIgXHUwMDNjIDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYzo4MTk6XHRcdG10NzkyeF9yZXNldChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy04MjAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM9ODI0PXN0YXRpYyBpbnQgX210NzkyNV9wY2lfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldmljZSwgYm9vbCByZXN0b3JlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTg4NC1cdGlmIChlcnIgXHUwMDNjIDAgfHwgcmVzdG9yZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jOjg4NTpcdFx0bXQ3OTJ4X3Jlc2V0KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTg4Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0yNzA9c3RhdGljIGludCBtdDc5MjV1X3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0yOTctXHRpZiAoZXJyIFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6Mjk4Olx0XHRtdDc5MnhfcmVzZXQoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMjk5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTMwMz1zdGF0aWMgaW50IG10NzkyNXVfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM0NC1cdGlmIChlcnIgXHUwMDNjIDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzozNDU6XHRcdG10NzkyeF9yZXNldChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNDYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaD00NTI9dm9pZCBtdDc5MnhfcG1fcG93ZXJfc2F2ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oOjQ1Mzp2b2lkIG10NzkyeF9yZXNldChzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC00NTQtdm9pZCBtdDc5MnhfdXBkYXRlX2NoYW5uZWwoc3RydWN0IG10NzZfcGh5ICptcGh5KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmM9OTc0PWludCBtdDc5MnhfbWN1X2Rydl9wbWN0cmwoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmMtOTg5LVx0aWYgKGVycilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYzo5OTA6XHRcdG10NzkyeF9yZXNldChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmMtOTkxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYz05OTY9aW50IG10NzkyeF9tY3VfZndfcG1jdHJsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jLTEwMTEtXHRpZiAoZXJyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jOjEwMTI6XHRcdG10NzkyeF9yZXNldChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmMtMTAxMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuYz0yNjU9RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTJ4X3VwZGF0ZV9jaGFubmVsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X21hYy5jLTI2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X21hYy5jOjI2Nzp2b2lkIG10NzkyeF9yZXNldChzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuYy0yNjgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X21hYy5jLTI4NS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuYzoyODY6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTJ4X3Jlc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X21hYy5jLTI4Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjgyCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMTM5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgTVQ3OTI1IFBDSSBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgRWxpZ2liaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBtdDc5MjUvcGNpLmNgIGFuZCBgbXQ3OTJ4X21hYy5jYC4gIEltbWVkaWF0ZWx5LCBteSByYWRhciBnb2VzIHVwIGJlY2F1c2Ugb2YgdGhlIC5yZW1vdmUgY2FsbGJhY2sgbW9kaWZpY2F0aW9ucywgZXNwZWNpYWxseSB3aXRoIHRoZSBwcm9tcHQmIzM5O3MgZXhjbHVzaW9uIGNyaXRlcmlhIGluIG1pbmQuICBJdCYjMzk7cyBjaGFuZ2luZyBgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZWAgYW5kIGBtdDc5MjVfcGNpX3JlbW92ZWAsIHRoZSBsYXR0ZXIgYmVpbmcgdGhlIFBDSSBkcml2ZXImIzM5O3MgYC5yZW1vdmVgIGZ1bmN0aW9uLiBUaGlzIHJpbmdzIHRoZSBhbGFybSBiZWxscyDigJMgdGhpcyBpcyBkZWZpbml0ZWx5IFBDSSBob3QtdW5wbHVnIHRlcnJpdG9yeS4KClRoZSBwYXRjaCBtb3ZlcyB0aGUgYHNldF9iaXQoTVQ3Nl9SRU1PVkVELCAmYW1wO2Rldi0mZ3Q7bXBoeS5zdGF0ZSlgIGNhbGwgKmludG8qIGBtdDc5MjVlX3VucmVnaXN0ZXJfZGV2aWNlYCBhbmQgKm91dCBvZiogYG10NzkyNV9wY2lfcmVtb3ZlYC4gVGhhdCBsb29rcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGF0dGVtcHQgdG8gZml4IGEgcmFjZSBjb25kaXRpb24g4oCTIHRoZSBjb2RlIGlzIGJlaW5nIHVwZGF0ZWQgdG8gYXZvaWQgYSBzY2VuYXJpbyB3aGVyZSB0aGUgcmVzZXQgd29yayBpcyBxdWV1ZWQgKmFmdGVyKiB0aGUgZGV2aWNlIHJlbW92YWwgaGFzIGJlZ3VuLCB3aGljaCBjb3VsZCBsZWFkIHRvIHJlc291cmNlIGxlYWtzLCBkb3VibGUtZnJlZXMsIG9yIG90aGVyIGJhZG5lc3MuIEl0IGlzIGRlZmluaXRlbHkgZml4aW5nIGEgcmFjZSBjb25kaXRpb24sIGJ5IHB1dHRpbmcgdGhlIGBNVDc2X1JFTU9WRURgIGNoZWNrICpiZWZvcmUqIHRoZSB3b3JrIGlzIHF1ZXVlZC4KCk5vdywgdGhlIGBtdDc5MnhfcmVzZXRgIG1vZGlmaWNhdGlvbiBpbiBgbXQ3OTJ4X21hYy5jYCBjb21wbGljYXRlcyB0aGluZ3MgYSBiaXQuIEl0IGFkZHMgYSBjaGVjayBmb3IgYE1UNzZfUkVNT1ZFRGAgYmVmb3JlIHF1ZXVpbmcgdGhlIGByZXNldF93b3JrYC4gVGhpcyBpcyAqcmVsYXRlZCogdG8gdGhlIFBDSSByZW1vdmFsLiAgYG10NzkyeF9yZXNldGAgaXMgYSBzaGFyZWQgZnVuY3Rpb24gdXNlZCBieSBib3RoIFBDSSBhbmQgVVNCIGRyaXZlcnMuIEFsdGhvdWdoIGl0JiMzOTtzIG5vdCBhICp0ZWFyZG93biogY2FsbGJhY2sgaXRzZWxmLCBpdCYjMzk7cyBjbGVhcmx5IGJlaW5nIG1vZGlmaWVkIHRvICpzdXBwb3J0KiB0aGUgdGVhcmRvd24gcHJvY2VzcyBmb3IgUENJLgoKVGhlIGNvcmUgcXVlc3Rpb24gbm93IGlzLCBkb2VzIHRoaXMgY29uc3RpdHV0ZSBhICp0ZWFyZG93biBjYWxsYmFjayogbW9kaWZpY2F0aW9uIGFjY29yZGluZyB0byB0aGUgcHJvbXB0JiMzOTtzIGRlZmluaXRpb24/ICBUaGUgaW50ZW50IG9mIHRoZSBwcm9tcHQgaXMgdG8gZXhjbHVkZSBtb2RpZmljYXRpb25zIHRoYXQgYXJlICpzb2xlbHkqIGludm9sdmVkIGluIHRoZSBkcml2ZXIgcmVtb3ZhbC9zaHV0ZG93biBzZXF1ZW5jZS4gIFdoaWxlIGBtdDc5MnhfcmVzZXRgIGlzbiYjMzk7dCAqZGlyZWN0bHkqIGEgdGVhcmRvd24gZnVuY3Rpb24sIHRoZSBjaGFuZ2UgaXMgZW50aXJlbHkgY29uZGl0aW9uYWwgb24gdGhlIGRldmljZSBiZWluZyByZW1vdmVkLCBhbmQgZXhpc3RzICpiZWNhdXNlKiBvZiB0aGUgcmVtb3ZhbCBwcm9jZXNzLgoKVGhlIHByb21wdCBleHBsaWNpdGx5IHNheXMgdG8gZXhjbHVkZSB0aGlzIHR5cGUgb2YgY2hhbmdlLCBldmVuIGlmIGl0IGlzIG5vdCBhIGRpcmVjdCB0ZWFyZG93biBmdW5jdGlvbiwgYmVjYXVzZSBgTVQ3Nl9SRU1PVkVEYCBpcyBzZXQgaW4gdGhlIFBDSSBkcml2ZXIsIGFuZCB0aGVyZWZvcmUgb25seSBpbXBhY3RzIHRoZSBQQ0kgZHJpdmVyLiAgU2luY2UgYG10NzkyNWAgaXMgYSBQQ0llIGNhcmQsIGEgZnV6emluZyBjYW1wYWlnbiBtYXkgbm90IGJlIHBvc3NpYmxlLCBhcyBRRU1VIGRvZXMgbm90IGVtdWxhdGUgUENJZS4KCkhvd2V2ZXIsIHRoZSBxdWVzdGlvbiBpcyBub3c6IGRvZXMgdGhlIHNhbWUgaXNzdWUgZXhpc3QgaW4gdGhlIFVTQiBkcml2ZXIgYXMgd2VsbD8gVGhlIFVTQiBkcml2ZXIgdXNlcyB0aGUgc2FtZSBgbXQ3OTJ4X3Jlc2V0YCBmdW5jdGlvbi4gSWYgdGhlIFVTQiBkcml2ZXIgaXMgYWZmZWN0ZWQsIHRoZW4gdGhpcyBwYXRjaCAqY291bGQqIGJlIHdvcnRoIGZ1enppbmcsIGFzIGl0IGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGRpc2Nvbm5lY3Qgb3Igc3lzZnMgdW5iaW5kLCBidXQgdGhlIGBNVDc2X1JFTU9WRURgIHNldCBpcyAqbm90KiBpbiB0aGUgVVNCIGRyaXZlci4gVGhlcmUgYXJlIGRpZmZlcmVudCBgdW5yZWdpc3Rlcl9kZXZpY2VgIGZ1bmN0aW9ucyBpbiBlYWNoIGRyaXZlciwgc28gYSBjaGFuZ2Ugd291bGQgYmUgbmVlZGVkIGluIGJvdGggdG8gZnVsbHkgZXhjbHVkZSBpdC4KClNvLCBpbiBjb25jbHVzaW9uLCBnaXZlbiB0aGUgcHJvbXB0JiMzOTtzIGV4Y2x1c2lvbiBjcml0ZXJpYSBhbmQgdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlcywgSSYjMzk7ZCBsZWFuIHRvd2FyZHMgV29ydGhGdXp6aW5nPWZhbHNlLiAgVGhlICpwcmltYXJ5KiBmb2N1cyBvZiB0aGUgcGF0Y2ggaXMgZGV2aWNlIHJlbW92YWwsIGV2ZW4gaWYgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIG5vdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNXVfdW5yZWdpc3Rlcl9kZXZpY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0ODIKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEZWJ1Z2dpbmcgdGhlIFVTQiBEaXNjb25uZWN0IElzc3VlKioKCkFscmlnaHQsIHNvIHdlJiMzOTt2ZSBnb3QgYSBVU0IgZGlzY29ubmVjdCBpc3N1ZSwgYW5kIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gdGhlIGRyaXZlciBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgdGhvc2UgZXZlbnRzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBgbXQ3OTI1X3VzYl9kaXNjb25uZWN0YCBvciBzb21ldGhpbmcgY2xvc2VseSByZXNlbWJsaW5nIHRoYXQgbmFtZS4gVGhpcyBhc3N1bWVzLCBvZiBjb3Vyc2UsIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIE1lZGlhVGVrIGNoaXBzZXQg4oCTIHdoaWNoIEkmIzM5O20gaW5mZXJyaW5nIGZyb20gdGhlIGBtdDc5MjVgIHByZWZpeC4gSSYjMzk7ZCBleHBlY3QgdGhlIGRpc2Nvbm5lY3QgcHJvY2VzcyB0byBpbnZvbHZlIGNsZWFudXAgb2YgcmVzb3VyY2VzLCBzaWduYWxpbmcgdG8gdGhlIGhvc3QsIGFuZCBwb3NzaWJseSBzb21lIGhhcmR3YXJlLWxldmVsIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy4gVGhlIGdvYWwgaGVyZSBpcyB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgZGlzY29ubmVjdCBpcyBpbml0aWF0ZWQgY29ycmVjdGx5IGJ5IHRoZSBkcml2ZXIsIG9yIGlmIGl0JiMzOTtzIHBvdGVudGlhbGx5IHRyaWdnZXJlZCBwcmVtYXR1cmVseSBieSBhbiBleHRlcm5hbCBmYWN0b3IuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGUgc3BlY2lmaWMgZHJpdmVyIG5hbWluZyBjb252ZW50aW9ucyBpbiB0aGlzIGtlcm5lbCB2ZXJzaW9uLCBidXQgSSB0aGluayB0aGF0JiMzOTtzIHRoZSByaWdodCBzdGFydGluZyBwb2ludCBmb3IgZGlhZ25vc2luZyB3aGF0IGlzIGxpa2VseSBhIGRyaXZlciBvciBVU0Igc3RhY2sgaW50ZXJhY3Rpb24gaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGlzY29ubmVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTM1NT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3OTI1dV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzU4LVx0LnByb2JlXHRcdD0gbXQ3OTI1dV9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM1OTpcdC5kaXNjb25uZWN0XHQ9IG10NzkyeHVfZGlzY29ubmVjdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM2MC0jaWZkZWYgQ09ORklHX1BNXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTkyNQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgYG10NzkyeHVfZGlzY29ubmVjdGAgRnVuY3Rpb24gQ2FsbCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHNlZWluZyBgbXQ3OTJ4dV9kaXNjb25uZWN0YCBjYWxsZWQgaGVyZS4gTXkgZmlyc3QgaW5zdGluY3QsIGFzIGFsd2F5cywgaXMgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUgYW5kIHB1cnBvc2UuIFRpbWUgdG8gdHJhY2UgaXRzIGRlZmluaXRpb24uIEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCB3aGVyZSBpdCYjMzk7cyBkZWNsYXJlZCBhbmQsIGlkZWFsbHksIHNlZSBpdHMgaW1wbGVtZW50YXRpb24gdG8gZ2V0IGEgc2Vuc2Ugb2Ygd2hhdCYjMzk7cyBoYXBwZW5pbmcuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGVzc2VudGlhbCBmdW5jdGlvbmFsaXR5IOKAkyB3aGF0IHJlc291cmNlcyBpcyBpdCByZWxlYXNpbmcsIHdoYXQgc3RhdGUgaXMgaXQgY2hhbmdpbmcsIGFuZCB3aGF0JiMzOTtzIHRoZSBicm9hZGVyIGNvbnRleHQgd2l0aGluIHRoZSBkcml2ZXIgd2hlcmUgdGhpcyBkaXNjb25uZWN0aW9uIGlzIHRyaWdnZXJlZD8gSXMgdGhpcyBhIGNsZWFuIHNodXRkb3duLCBhbiBlcnJvciByZWNvdmVyeSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEEgcXVpY2sgY29kZSBkaXZlIGlzIGluIG9yZGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5Mnh1X2Rpc2Nvbm5lY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz0zMzg9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzkyMXVfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTM0MS1cdC5wcm9iZVx0XHQ9IG10NzkyMXVfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzozNDI6XHQuZGlzY29ubmVjdFx0PSBtdDc5Mnh1X2Rpc2Nvbm5lY3QsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNDMtI2lmZGVmIENPTkZJR19QTVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTM1NT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3OTI1dV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzU4LVx0LnByb2JlXHRcdD0gbXQ3OTI1dV9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM1OTpcdC5kaXNjb25uZWN0XHQ9IG10NzkyeHVfZGlzY29ubmVjdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM2MC0jaWZkZWYgQ09ORklHX1BNXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaD02MTE9dm9pZCBtdDc5Mnh1X2NvcHkoc3RydWN0IG10NzZfZGV2ICpkZXYsIHUzMiBvZmZzZXQsIGNvbnN0IHZvaWQgKmRhdGEsIGludCBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDo2MTI6dm9pZCBtdDc5Mnh1X2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtNjEzLXZvaWQgbXQ3OTJ4dV9zdG9wKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBib29sIHN1c3BlbmQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X3VzYi5jPTQ5NT1FWFBPUlRfU1lNQk9MX0dQTChtdDc5Mnh1X3N0b3ApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfdXNiLmMtNDk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfdXNiLmM6NDk3OnZvaWQgbXQ3OTJ4dV9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X3VzYi5jLTQ5OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfdXNiLmMtNTI2LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X3VzYi5jOjUyNzpFWFBPUlRfU1lNQk9MX0dQTChtdDc5Mnh1X2Rpc2Nvbm5lY3QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfdXNiLmMtNTI4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDg4OAoJCQkJCQkJb3V0cHV0OiAxMzcKCQkJCQkJCXRob3VnaHRzOiAyODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIERlY2lzaW9uOiBOb3QgQXBwbGljYWJsZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHNjYW4gc2hvd3MgdGhpcyBwYXRjaCBpcyBmb2N1c2VkIHNvbGVseSBvbiBgbXQ3OTI1L3BjaS5jYCBhbmQgYG10NzkyeF9tYWMuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbGllcyB3aXRoaW4gdGhlIGBtdDc5MjVfcGNpX3JlbW92ZWAgZnVuY3Rpb24gYW5kIHRoZSBgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZWAgY2FsbCB3aXRoaW4gYG10NzkyNS9wY2kuY2AuIFRoaXMgaW1tZWRpYXRlbHkgc2NyZWFtcyAmIzM0O1BDSSBkcml2ZXIgYC5yZW1vdmVgIGNhbGxiYWNrJiMzNDsgdG8gbWUsIHdoaWNoIGlzIGEga2V5IGluZGljYXRvci4KCk5vdywgbGV0JiMzOTtzIGFwcGx5IHRoZSBjcml0ZXJpYS4gVGhlIHByb21wdCBpcyBjcnlzdGFsIGNsZWFyOiBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKnJlcXVpcmluZyBhY3R1YWwgaGFyZHdhcmUqLCBvciBpZiBpdCB0b3VjaGVzIHRoZSBkcml2ZXImIzM5O3MgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgb3IgYHBjaV91bnJlZ2lzdGVyX2RyaXZlcmAgdGVhcmRvd24gY2FsbGJhY2tzIChsaWtlIGFuIGBpZ2JfcmVtb3ZlYCksIHRoZW4gYFdvcnRoRnV6emluZ2AgaXMgYGZhbHNlYC4KClRoaXMgcGF0Y2ggaGl0cyBib3RoIG5haWxzIG9uIHRoZSBoZWFkLiBGaXJzdCwgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgTVQ3OTI1LCBhIHZlbmRvci1zcGVjaWZpYyB3aXJlbGVzcyBQQ0llIGRyaXZlci4gQW5kIHNlY29uZCwgd2UgYXJlIHRhbGtpbmcgYWJvdXQgYSBkcml2ZXIgYC5yZW1vdmVgIHRlYXJkb3duIGNhbGxiYWNrLCBpbiBmYWN0LCB0aGlzIHBhdGNoIHNwZWNpZmljYWxseSBhaW1zIGF0IHByb3ZpZGluZyBsb2dpYyBmb3IgdGhpcyBmdW5jdGlvbi4KCkdpdmVuIHRob3NlIHR3byBwb2ludHMsIEkmIzM5O20gY29uZmlkZW50IGluIHNheWluZyB0aGF0IHRoaXMgcGF0Y2ggZmFsbHMgc3F1YXJlbHkgd2l0aGluIHRoZSAmIzM0O25vdCB3b3J0aCBmdXp6aW5nJiMzNDsgY2F0ZWdvcnkuIFRoZSBmb2N1cyBpcyBvbiBkcml2ZXIgcmVtb3ZhbCBhbmQgY2xlYW51cCwgZnVuY3Rpb25zIHRoYXQgYXJlIHVubGlrZWx5IHRvIGJlbmVmaXQgZnJvbSBnZW5lcmljIGZ1enppbmcgdGVjaG5pcXVlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgLnJlbW92ZSB0ZWFyZG93biBjYWxsYmFjayBvZiB0aGUgTWVkaWFUZWsgTVQ3OTI1IFBDSWUgd2lyZWxlc3MgZHJpdmVyIChtdDc5MjVfcGNpX3JlbW92ZSBhbmQgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZSkgdG8gZml4IGEgcmFjZSBjb25kaXRpb24gd2l0aCByZXNldF93b3JrIGR1cmluZyBkZXZpY2UgcmVtb3ZhbC4gSXQgYWxzbyBhZGRzIGEgY2hlY2sgaW4gbXQ3OTJ4X3Jlc2V0IHRvIHN1cHBvcnQgdGhpcyB0ZWFyZG93biBsb2dpYy4gVGhlIHByb21wdCBleHBsaWNpdGx5IGV4Y2x1ZGVzIGRyaXZlciAucmVtb3ZlIGNhbGxiYWNrcyBhbmQgY29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSAucmVtb3ZlIHRlYXJkb3duIGNhbGxiYWNrIG9mIHRoZSBNZWRpYVRlayBNVDc5MjUgUENJZSB3aXJlbGVzcyBkcml2ZXIgKG10NzkyNV9wY2lfcmVtb3ZlIGFuZCBtdDc5MjVlX3VucmVnaXN0ZXJfZGV2aWNlKSB0byBmaXggYSByYWNlIGNvbmRpdGlvbiB3aXRoIHJlc2V0X3dvcmsgZHVyaW5nIGRldmljZSByZW1vdmFsLiBJdCBhbHNvIGFkZHMgYSBjaGVjayBpbiBtdDc5MnhfcmVzZXQgdG8gc3VwcG9ydCB0aGlzIHRlYXJkb3duIGxvZ2ljLiBUaGUgcHJvbXB0IGV4cGxpY2l0bHkgZXhjbHVkZXMgZHJpdmVyIC5yZW1vdmUgY2FsbGJhY2tzIGFuZCBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjMwOjI4LjU2NTM2NzM3MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NDA1ODIyNTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgLnJlbW92ZSB0ZWFyZG93biBjYWxsYmFjayBvZiB0aGUgTWVkaWFUZWsgTVQ3OTI1IFBDSWUgd2lyZWxlc3MgZHJpdmVyIChtdDc5MjVfcGNpX3JlbW92ZSBhbmQgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZSkgdG8gZml4IGEgcmFjZSBjb25kaXRpb24gd2l0aCByZXNldF93b3JrIGR1cmluZyBkZXZpY2UgcmVtb3ZhbC4gSXQgYWxzbyBhZGRzIGEgY2hlY2sgaW4gbXQ3OTJ4X3Jlc2V0IHRvIHN1cHBvcnQgdGhpcyB0ZWFyZG93biBsb2dpYy4gVGhlIHByb21wdCBleHBsaWNpdGx5IGV4Y2x1ZGVzIGRyaXZlciAucmVtb3ZlIGNhbGxiYWNrcyBhbmQgY29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjMwOjI4LjU2NTM3NDYwMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkxOTM2NTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMGM2MjY0YzRhNTI5ZjU3ZjE4MzYwZmFjYWYyNWJiNTZkZGVhMGYyZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyA1IDA4OjMwOjI3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmNcXG5pbmRleCAwMmVmMDlkZDc5N2RhLi45M2M4MjNlYjc1MDEzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmNcXG5AQCAtNDcsOSArNDcsMTAgQEAgc3RhdGljIHZvaWQgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbiBcXHRpZiAoZGV2LVxcdTAwM2VwaHkuY2hpcF9jYXAgXFx1MDAyNiBNVDc5MnhfQ0hJUF9DQVBfV0ZfUkZfUElOX0NUUkxfRVZUX0VOKVxcbiBcXHRcXHR3aXBoeV9yZmtpbGxfc3RvcF9wb2xsaW5nKGh3LVxcdTAwM2V3aXBoeSk7XFxuIFxcbi1cXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZkZXYtXFx1MDAzZXJlc2V0X3dvcmspO1xcbiBcXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZkZXYtXFx1MDAzZWluaXRfd29yayk7XFxuIFxcdG10NzZfdW5yZWdpc3Rlcl9kZXZpY2UoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuK1xcdHNldF9iaXQoTVQ3Nl9SRU1PVkVELCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKTtcXG4rXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2ZGV2LVxcdTAwM2VyZXNldF93b3JrKTtcXG4gXFx0bXQ3Nl9mb3JfZWFjaF9xX3J4KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIGkpXFxuIFxcdFxcdG5hcGlfZGlzYWJsZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm5hcGlbaV0pO1xcbiBcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNnBtLVxcdTAwM2Vwc193b3JrKTtcXG5AQCAtNzI1LDcgKzcyNiw2IEBAIHN0YXRpYyB2b2lkIG10NzkyNV9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbiBcXHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XFxuIFxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzkyeF9kZXYsIG10NzYpO1xcbiBcXG4tXFx0c2V0X2JpdChNVDc2X1JFTU9WRUQsIFxcdTAwMjZtZGV2LVxcdTAwM2VwaHkuc3RhdGUpO1xcbiBcXHRtdDc5MjVlX3VucmVnaXN0ZXJfZGV2aWNlKGRldik7XFxuIFxcdGRldm1fZnJlZV9pcnEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGRldi1cXHUwMDNlaXJxLCBkZXYpO1xcbiBcXHRtdDc2X2ZyZWVfZGV2aWNlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X21hYy5jXFxuaW5kZXggODg4ZTVhNTA1NjczMS4uMWUyMGIzMzNjYzYxMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X21hYy5jXFxuQEAgLTI3OCw2ICsyNzgsOSBAQCB2b2lkIG10NzkyeF9yZXNldChzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYpXFxuIFxcdGlmIChwbS1cXHUwMDNlc3VzcGVuZGVkKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbitcXHRpZiAodGVzdF9iaXQoTVQ3Nl9SRU1PVkVELCBcXHUwMDI2bWRldi1cXHUwMDNlcGh5LnN0YXRlKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0cXVldWVfd29yayhkZXYtXFx1MDAzZW10NzYud3EsIFxcdTAwMjZkZXYtXFx1MDAzZXJlc2V0X3dvcmspO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKG10NzkyeF9yZXNldCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjMwOjI4Ljk1ODAxMDc0OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM4MDEzMTczOTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgLnJlbW92ZSB0ZWFyZG93biBjYWxsYmFjayBvZiB0aGUgTWVkaWFUZWsgTVQ3OTI1IFBDSWUgd2lyZWxlc3MgZHJpdmVyIChtdDc5MjVfcGNpX3JlbW92ZSBhbmQgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZSkgdG8gZml4IGEgcmFjZSBjb25kaXRpb24gd2l0aCByZXNldF93b3JrIGR1cmluZyBkZXZpY2UgcmVtb3ZhbC4gSXQgYWxzbyBhZGRzIGEgY2hlY2sgaW4gbXQ3OTJ4X3Jlc2V0IHRvIHN1cHBvcnQgdGhpcyB0ZWFyZG93biBsb2dpYy4gVGhlIHByb21wdCBleHBsaWNpdGx5IGV4Y2x1ZGVzIGRyaXZlciAucmVtb3ZlIGNhbGxiYWNrcyBhbmQgY29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDBjNjI2NGM0YTUyOWY1N2YxODM2MGZhY2FmMjViYjU2ZGRlYTBmMmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDA4OjMwOjI3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuY1xuaW5kZXggMDJlZjA5ZGQ3OTdkYS4uOTNjODIzZWI3NTAxMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuY1xuQEAgLTQ3LDkgKzQ3LDEwIEBAIHN0YXRpYyB2b2lkIG10NzkyNWVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiBcdGlmIChkZXYtXHUwMDNlcGh5LmNoaXBfY2FwIFx1MDAyNiBNVDc5MnhfQ0hJUF9DQVBfV0ZfUkZfUElOX0NUUkxfRVZUX0VOKVxuIFx0XHR3aXBoeV9yZmtpbGxfc3RvcF9wb2xsaW5nKGh3LVx1MDAzZXdpcGh5KTtcbiBcbi1cdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZXJlc2V0X3dvcmspO1xuIFx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZkZXYtXHUwMDNlaW5pdF93b3JrKTtcbiBcdG10NzZfdW5yZWdpc3Rlcl9kZXZpY2UoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuK1x0c2V0X2JpdChNVDc2X1JFTU9WRUQsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbitcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZXJlc2V0X3dvcmspO1xuIFx0bXQ3Nl9mb3JfZWFjaF9xX3J4KFx1MDAyNmRldi1cdTAwM2VtdDc2LCBpKVxuIFx0XHRuYXBpX2Rpc2FibGUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubmFwaVtpXSk7XG4gXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2cG0tXHUwMDNlcHNfd29yayk7XG5AQCAtNzI1LDcgKzcyNiw2IEBAIHN0YXRpYyB2b2lkIG10NzkyNV9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuIFx0c3RydWN0IG10NzZfZGV2ICptZGV2ID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpO1xuIFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihtZGV2LCBzdHJ1Y3QgbXQ3OTJ4X2RldiwgbXQ3Nik7XG4gXG4tXHRzZXRfYml0KE1UNzZfUkVNT1ZFRCwgXHUwMDI2bWRldi1cdTAwM2VwaHkuc3RhdGUpO1xuIFx0bXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZShkZXYpO1xuIFx0ZGV2bV9mcmVlX2lycShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGRldi1cdTAwM2VpcnEsIGRldik7XG4gXHRtdDc2X2ZyZWVfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X21hYy5jXG5pbmRleCA4ODhlNWE1MDU2NzMxLi4xZTIwYjMzM2NjNjEyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfbWFjLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X21hYy5jXG5AQCAtMjc4LDYgKzI3OCw5IEBAIHZvaWQgbXQ3OTJ4X3Jlc2V0KHN0cnVjdCBtdDc2X2RldiAqbWRldilcbiBcdGlmIChwbS1cdTAwM2VzdXNwZW5kZWQpXG4gXHRcdHJldHVybjtcbiBcbitcdGlmICh0ZXN0X2JpdChNVDc2X1JFTU9WRUQsIFx1MDAyNm1kZXYtXHUwMDNlcGh5LnN0YXRlKSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0cXVldWVfd29yayhkZXYtXHUwMDNlbXQ3Ni53cSwgXHUwMDI2ZGV2LVx1MDAzZXJlc2V0X3dvcmspO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChtdDc5MnhfcmVzZXQpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6MzA6MjguOTU4MDEyMDRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTk5ODAxOTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBhdGNoIEFuYWx5c2lzOiBNZWRpYVRlayBNVDc5MjUgUENJZSBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIE1lZGlhVGVrIE1UNzkyNSBQQ0llIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGluIGBtdDc5MjUvcGNpLmNgIGFuZCBgbXQ3OTJ4X21hYy5jYC4gVGhlIGNvcmUgY2hhbmdlcyBzZWVtIHRvIGJlIGluIHRoZSBkZXZpY2UgdW5yZWdpc3RyYXRpb24gKGBtdDc5MjVlX3VucmVnaXN0ZXJfZGV2aWNlYCksIFBDSSByZW1vdmFsIChgbXQ3OTI1X3BjaV9yZW1vdmVgKSwgYW5kIGEgbmV3IGNoZWNrIGZvciBgTVQ3Nl9SRU1PVkVEYCBpbiBgbXQ3OTJ4X3Jlc2V0YC4gVGhlIHByb21wdCBzcGVjaWZpZXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIGl0IG1vZGlmaWVzIGNvZGUgcmVsYXRlZCB0byB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZSB0aGF0IGNhbid0IGJlIGVtdWxhdGVkLlxuXG5NeSBmaXJzdCB0aG91Z2h0IGlzLCB0aGlzIGlzIGEgUENJZSB3aXJlbGVzcyBjYXJkLCB3aGljaCB0eXBpY2FsbHkgKmlzbid0KiBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0J3MgYSBodWdlIHJlZCBmbGFnLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYG10NzkyNV9wY2lfcmVtb3ZlYCwgd2hpY2ggaXMgdGhlIGAucmVtb3ZlYCBjYWxsYmFjay4gVGhpcyBjYWxsYmFjayBpcyBvbmx5IGV4ZWN1dGVkIGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuIFRoZSBwcm9tcHQgaXMgcXVpdGUgc3BlY2lmaWMgYWJvdXQgKnRob3NlKiBiZWluZyBleGNsdWRlZC4gVGhlbiB0aGVyZSdzIHRoZSBtb2RpZmljYXRpb24gb2YgYG10NzkyeF9yZXNldGAuIEkgbmVlZCB0byB0aGluayBhYm91dCBob3cgdGhhdCBnZXRzIGNhbGxlZC5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBNVDc5MjUgc3BlY2lmaWNhbGx5IGlzICpub3QqIGVtdWxhdGVkLiBVc3VhbGx5LCB0aGVzZSBzb3J0cyBvZiBjYXJkcyByZXF1aXJlIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSB0byBmdW5jdGlvbi4gSeKAmW0gcHJldHR5IHN1cmUgdGhlIGBtdDc2YCBkcml2ZXIgaXMgc3BlY2lmaWMgdG8gTWVkaWFUZWsgd2lyZWxlc3MgY2FyZHMuIENvdWxkIHRoaXMgYWxzbyBiZSBhIFVTQiBkZXZpY2U/IFRoZSBwYXRjaCBmb2N1c2VzIG9uIGBwY2kuY2AsIHNvIEknZCBzYXkgdGhlIGFuc3dlciBpcyBuby4gSeKAmW0gYWxzbyBzZWVpbmcgdGhhdCBgbXQ3OTJ4X3Jlc2V0YCBpcyBleHBvcnRlZCwgc28gaXQncyBwcm9iYWJseSBjYWxsZWQgZHVyaW5nIHJlc2V0IHNpdHVhdGlvbnMsIGJ1dCB0aGUgcHJpbWFyeSBmb2N1cyBpcyBzdGlsbCBvbiBwaHlzaWNhbCBQQ0kgZGV2aWNlIGZ1bmN0aW9uYWxpdHkuXG5cblRoaXMgaXMgYWxsIHBvaW50aW5nIHRvIGEgcGF0Y2ggdGhhdCBpcyAqbm90KiBmdXp6YWJsZSBhY2NvcmRpbmcgdG8gdGhlIGd1aWRlbGluZXMuIFRoZSBjaGFuZ2VzIGFyZSBsYXJnZWx5IGNvbmZpbmVkIHRvIHRoZSBQQ0llLXNwZWNpZmljIGRyaXZlciwgaW5jbHVkaW5nIHRoZSBgLnJlbW92ZWAgY2FsbGJhY2ssIGFuZCB0b3VjaCBoYXJkd2FyZSB0aGF0J3Mgbm90IGVhc2lseSBlbXVsYXRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY2MywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjMwOjM3Ljk1NzgxNzUzMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njc5MDg5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MnhfcmVzZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTIyNz1zdGF0aWMgaW50IG10NzkyMV9jaGlwX3Jlc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjM0LVxcdFxcdC8qIFJlc2V0IHdpZmlzeXMgZGlyZWN0bHkuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjIzNTpcXHRcXHRtdDc5MnhfcmVzZXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIzNi1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTcxNT12b2lkIG10NzkyMV9jb3JlZHVtcF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc1OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo3NTk6XFx0bXQ3OTJ4X3Jlc2V0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc2MC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYz0xNT1pbnQgbXQ3OTIxX21jdV9wYXJzZV9yZXNwb25zZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGludCBjbWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy0yNC1cXHRcXHRcXHRjbWQsIHNlcSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6MjU6XFx0XFx0bXQ3OTJ4X3Jlc2V0KG1kZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTI2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpLmM9NDY4PXN0YXRpYyBpbnQgbXQ3OTIxX3BjaV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldmljZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaS5jLTU0NS1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2kuYzo1NDY6XFx0XFx0bXQ3OTJ4X3Jlc2V0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaS5jLTU0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaS5jPTU1MT1zdGF0aWMgaW50IG10NzkyMV9wY2lfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldmljZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaS5jLTYwNC1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2kuYzo2MDU6XFx0XFx0bXQ3OTJ4X3Jlc2V0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaS5jLTYwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaS5jPTY4Nj1zdGF0aWMgcGNpX2Vyc19yZXN1bHRfdCBtdDc5MjFfc2xvdF9yZXNldChzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaS5jLTcwMS1cXHQvKiBBbHNvIHRyeSBkbyB0aGUgdmVuZG9yIHJlc2V0IHRvIGxldCBpdCBtb3JlIGNsZWFyLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaS5jOjcwMjpcXHRtdDc5MnhfcmVzZXQobWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpLmMtNzAzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jPTIwOT1zdGF0aWMgaW50IG10NzkyMXNfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpfX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYy0yNzktXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jOjI4MDpcXHRcXHRtdDc5MnhfcmVzZXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTI4MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYz0yODU9c3RhdGljIGludCBtdDc5MjFzX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpfX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYy0zMTMtXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jOjMxNDpcXHRcXHRtdDc5MnhfcmVzZXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTMxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTI2ND1zdGF0aWMgaW50IG10NzkyMXVfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IHN0YXRlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMjg1LVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjI4NjpcXHRcXHRtdDc5MnhfcmVzZXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMjg3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MjkxPXN0YXRpYyBpbnQgbXQ3OTIxdV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zMjctXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MzI4OlxcdFxcdG10NzkyeF9yZXNldChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zMjktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjY2PXN0YXRpYyBpbnQgbXQ3OTI1X2NoaXBfcmVzZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNzMtXFx0XFx0LyogUmVzZXQgd2lmaXN5cyBkaXJlY3RseS4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjc0OlxcdFxcdG10NzkyeF9yZXNldChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjc1LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MTU3Mj12b2lkIG10NzkyNV9jb3JlZHVtcF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2MTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTYxNjpcXHRtdDc5MnhfcmVzZXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYxNy19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz0yMj1pbnQgbXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGludCBjbWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0zMC1cXHRcXHRkZXZfZXJyKG1kZXYtXFx1MDAzZWRldiwgXFxcIk1lc3NhZ2UgJTA4eCAoc2VxICVkKSB0aW1lb3V0XFxcXG5cXFwiLCBjbWQsIHNlcSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MzE6XFx0XFx0bXQ3OTJ4X3Jlc2V0KG1kZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTMyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM9NzM1PXN0YXRpYyBpbnQgbXQ3OTI1X3BjaV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldmljZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTgxOC1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYzo4MTk6XFx0XFx0bXQ3OTJ4X3Jlc2V0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTgyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jPTgyND1zdGF0aWMgaW50IF9tdDc5MjVfcGNpX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsIGJvb2wgcmVzdG9yZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTg4NC1cXHRpZiAoZXJyIFxcdTAwM2MgMCB8fCByZXN0b3JlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jOjg4NTpcXHRcXHRtdDc5MnhfcmVzZXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtODg2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MjcwPXN0YXRpYyBpbnQgbXQ3OTI1dV9zdXNwZW5kKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBwbV9tZXNzYWdlX3Qgc3RhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0yOTctXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6Mjk4OlxcdFxcdG10NzkyeF9yZXNldChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0yOTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0zMDM9c3RhdGljIGludCBtdDc5MjV1X3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM0NC1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzozNDU6XFx0XFx0bXQ3OTJ4X3Jlc2V0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM0Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg9NDUyPXZvaWQgbXQ3OTJ4X3BtX3Bvd2VyX3NhdmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg6NDUzOnZvaWQgbXQ3OTJ4X3Jlc2V0KHN0cnVjdCBtdDc2X2RldiAqbWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC00NTQtdm9pZCBtdDc5MnhfdXBkYXRlX2NoYW5uZWwoc3RydWN0IG10NzZfcGh5ICptcGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYz05NzQ9aW50IG10NzkyeF9tY3VfZHJ2X3BtY3RybChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jLTk4OS1cXHRpZiAoZXJyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYzo5OTA6XFx0XFx0bXQ3OTJ4X3Jlc2V0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYy05OTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmM9OTk2PWludCBtdDc5MnhfbWN1X2Z3X3BtY3RybChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jLTEwMTEtXFx0aWYgKGVycilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmM6MTAxMjpcXHRcXHRtdDc5MnhfcmVzZXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jLTEwMTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuYz0yNjU9RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTJ4X3VwZGF0ZV9jaGFubmVsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuYy0yNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfbWFjLmM6MjY3OnZvaWQgbXQ3OTJ4X3Jlc2V0KHN0cnVjdCBtdDc2X2RldiAqbWRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuYy0yNjgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfbWFjLmMtMjg1LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuYzoyODY6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTJ4X3Jlc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuYy0yODctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjMwOjM4LjAwNDYxNTA3OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1MTkyMTMyOTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBNVDc5MjUgUENJIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBFbGlnaWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBtdDc5MjUvcGNpLmNgIGFuZCBgbXQ3OTJ4X21hYy5jYC4gIEltbWVkaWF0ZWx5LCBteSByYWRhciBnb2VzIHVwIGJlY2F1c2Ugb2YgdGhlIC5yZW1vdmUgY2FsbGJhY2sgbW9kaWZpY2F0aW9ucywgZXNwZWNpYWxseSB3aXRoIHRoZSBwcm9tcHQncyBleGNsdXNpb24gY3JpdGVyaWEgaW4gbWluZC4gIEl0J3MgY2hhbmdpbmcgYG10NzkyNWVfdW5yZWdpc3Rlcl9kZXZpY2VgIGFuZCBgbXQ3OTI1X3BjaV9yZW1vdmVgLCB0aGUgbGF0dGVyIGJlaW5nIHRoZSBQQ0kgZHJpdmVyJ3MgYC5yZW1vdmVgIGZ1bmN0aW9uLiBUaGlzIHJpbmdzIHRoZSBhbGFybSBiZWxscyDigJMgdGhpcyBpcyBkZWZpbml0ZWx5IFBDSSBob3QtdW5wbHVnIHRlcnJpdG9yeS5cblxuVGhlIHBhdGNoIG1vdmVzIHRoZSBgc2V0X2JpdChNVDc2X1JFTU9WRUQsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKWAgY2FsbCAqaW50byogYG10NzkyNWVfdW5yZWdpc3Rlcl9kZXZpY2VgIGFuZCAqb3V0IG9mKiBgbXQ3OTI1X3BjaV9yZW1vdmVgLiBUaGF0IGxvb2tzIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgYXR0ZW1wdCB0byBmaXggYSByYWNlIGNvbmRpdGlvbiDigJMgdGhlIGNvZGUgaXMgYmVpbmcgdXBkYXRlZCB0byBhdm9pZCBhIHNjZW5hcmlvIHdoZXJlIHRoZSByZXNldCB3b3JrIGlzIHF1ZXVlZCAqYWZ0ZXIqIHRoZSBkZXZpY2UgcmVtb3ZhbCBoYXMgYmVndW4sIHdoaWNoIGNvdWxkIGxlYWQgdG8gcmVzb3VyY2UgbGVha3MsIGRvdWJsZS1mcmVlcywgb3Igb3RoZXIgYmFkbmVzcy4gSXQgaXMgZGVmaW5pdGVseSBmaXhpbmcgYSByYWNlIGNvbmRpdGlvbiwgYnkgcHV0dGluZyB0aGUgYE1UNzZfUkVNT1ZFRGAgY2hlY2sgKmJlZm9yZSogdGhlIHdvcmsgaXMgcXVldWVkLlxuXG5Ob3csIHRoZSBgbXQ3OTJ4X3Jlc2V0YCBtb2RpZmljYXRpb24gaW4gYG10NzkyeF9tYWMuY2AgY29tcGxpY2F0ZXMgdGhpbmdzIGEgYml0LiBJdCBhZGRzIGEgY2hlY2sgZm9yIGBNVDc2X1JFTU9WRURgIGJlZm9yZSBxdWV1aW5nIHRoZSBgcmVzZXRfd29ya2AuIFRoaXMgaXMgKnJlbGF0ZWQqIHRvIHRoZSBQQ0kgcmVtb3ZhbC4gIGBtdDc5MnhfcmVzZXRgIGlzIGEgc2hhcmVkIGZ1bmN0aW9uIHVzZWQgYnkgYm90aCBQQ0kgYW5kIFVTQiBkcml2ZXJzLiBBbHRob3VnaCBpdCdzIG5vdCBhICp0ZWFyZG93biogY2FsbGJhY2sgaXRzZWxmLCBpdCdzIGNsZWFybHkgYmVpbmcgbW9kaWZpZWQgdG8gKnN1cHBvcnQqIHRoZSB0ZWFyZG93biBwcm9jZXNzIGZvciBQQ0kuXG5cblRoZSBjb3JlIHF1ZXN0aW9uIG5vdyBpcywgZG9lcyB0aGlzIGNvbnN0aXR1dGUgYSAqdGVhcmRvd24gY2FsbGJhY2sqIG1vZGlmaWNhdGlvbiBhY2NvcmRpbmcgdG8gdGhlIHByb21wdCdzIGRlZmluaXRpb24/ICBUaGUgaW50ZW50IG9mIHRoZSBwcm9tcHQgaXMgdG8gZXhjbHVkZSBtb2RpZmljYXRpb25zIHRoYXQgYXJlICpzb2xlbHkqIGludm9sdmVkIGluIHRoZSBkcml2ZXIgcmVtb3ZhbC9zaHV0ZG93biBzZXF1ZW5jZS4gIFdoaWxlIGBtdDc5MnhfcmVzZXRgIGlzbid0ICpkaXJlY3RseSogYSB0ZWFyZG93biBmdW5jdGlvbiwgdGhlIGNoYW5nZSBpcyBlbnRpcmVseSBjb25kaXRpb25hbCBvbiB0aGUgZGV2aWNlIGJlaW5nIHJlbW92ZWQsIGFuZCBleGlzdHMgKmJlY2F1c2UqIG9mIHRoZSByZW1vdmFsIHByb2Nlc3MuXG5cblRoZSBwcm9tcHQgZXhwbGljaXRseSBzYXlzIHRvIGV4Y2x1ZGUgdGhpcyB0eXBlIG9mIGNoYW5nZSwgZXZlbiBpZiBpdCBpcyBub3QgYSBkaXJlY3QgdGVhcmRvd24gZnVuY3Rpb24sIGJlY2F1c2UgYE1UNzZfUkVNT1ZFRGAgaXMgc2V0IGluIHRoZSBQQ0kgZHJpdmVyLCBhbmQgdGhlcmVmb3JlIG9ubHkgaW1wYWN0cyB0aGUgUENJIGRyaXZlci4gIFNpbmNlIGBtdDc5MjVgIGlzIGEgUENJZSBjYXJkLCBhIGZ1enppbmcgY2FtcGFpZ24gbWF5IG5vdCBiZSBwb3NzaWJsZSwgYXMgUUVNVSBkb2VzIG5vdCBlbXVsYXRlIFBDSWUuXG5cbkhvd2V2ZXIsIHRoZSBxdWVzdGlvbiBpcyBub3c6IGRvZXMgdGhlIHNhbWUgaXNzdWUgZXhpc3QgaW4gdGhlIFVTQiBkcml2ZXIgYXMgd2VsbD8gVGhlIFVTQiBkcml2ZXIgdXNlcyB0aGUgc2FtZSBgbXQ3OTJ4X3Jlc2V0YCBmdW5jdGlvbi4gSWYgdGhlIFVTQiBkcml2ZXIgaXMgYWZmZWN0ZWQsIHRoZW4gdGhpcyBwYXRjaCAqY291bGQqIGJlIHdvcnRoIGZ1enppbmcsIGFzIGl0IGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGRpc2Nvbm5lY3Qgb3Igc3lzZnMgdW5iaW5kLCBidXQgdGhlIGBNVDc2X1JFTU9WRURgIHNldCBpcyAqbm90KiBpbiB0aGUgVVNCIGRyaXZlci4gVGhlcmUgYXJlIGRpZmZlcmVudCBgdW5yZWdpc3Rlcl9kZXZpY2VgIGZ1bmN0aW9ucyBpbiBlYWNoIGRyaXZlciwgc28gYSBjaGFuZ2Ugd291bGQgYmUgbmVlZGVkIGluIGJvdGggdG8gZnVsbHkgZXhjbHVkZSBpdC5cblxuU28sIGluIGNvbmNsdXNpb24sIGdpdmVuIHRoZSBwcm9tcHQncyBleGNsdXNpb24gY3JpdGVyaWEgYW5kIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZXMsIEknZCBsZWFuIHRvd2FyZHMgV29ydGhGdXp6aW5nPWZhbHNlLiAgVGhlICpwcmltYXJ5KiBmb2N1cyBvZiB0aGUgcGF0Y2ggaXMgZGV2aWNlIHJlbW92YWwsIGV2ZW4gaWYgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIG5vdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI4MiwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6MzA6NTMuMTk2NzUxMzIzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MDk3MjY5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MjV1X3VucmVnaXN0ZXJfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6MzA6NTMuMjQxODU3MTExWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY0Njk1MDUwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGVidWdnaW5nIHRoZSBVU0IgRGlzY29ubmVjdCBJc3N1ZSoqXG5cbkFscmlnaHQsIHNvIHdlJ3ZlIGdvdCBhIFVTQiBkaXNjb25uZWN0IGlzc3VlLCBhbmQgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiB0aGUgZHJpdmVyIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyB0aG9zZSBldmVudHMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGBtdDc5MjVfdXNiX2Rpc2Nvbm5lY3RgIG9yIHNvbWV0aGluZyBjbG9zZWx5IHJlc2VtYmxpbmcgdGhhdCBuYW1lLiBUaGlzIGFzc3VtZXMsIG9mIGNvdXJzZSwgdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggYSBNZWRpYVRlayBjaGlwc2V0IOKAkyB3aGljaCBJJ20gaW5mZXJyaW5nIGZyb20gdGhlIGBtdDc5MjVgIHByZWZpeC4gSSdkIGV4cGVjdCB0aGUgZGlzY29ubmVjdCBwcm9jZXNzIHRvIGludm9sdmUgY2xlYW51cCBvZiByZXNvdXJjZXMsIHNpZ25hbGluZyB0byB0aGUgaG9zdCwgYW5kIHBvc3NpYmx5IHNvbWUgaGFyZHdhcmUtbGV2ZWwgY29uZmlndXJhdGlvbiBjaGFuZ2VzLiBUaGUgZ29hbCBoZXJlIGlzIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBkaXNjb25uZWN0IGlzIGluaXRpYXRlZCBjb3JyZWN0bHkgYnkgdGhlIGRyaXZlciwgb3IgaWYgaXQncyBwb3RlbnRpYWxseSB0cmlnZ2VyZWQgcHJlbWF0dXJlbHkgYnkgYW4gZXh0ZXJuYWwgZmFjdG9yLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGUgc3BlY2lmaWMgZHJpdmVyIG5hbWluZyBjb252ZW50aW9ucyBpbiB0aGlzIGtlcm5lbCB2ZXJzaW9uLCBidXQgSSB0aGluayB0aGF0J3MgdGhlIHJpZ2h0IHN0YXJ0aW5nIHBvaW50IGZvciBkaWFnbm9zaW5nIHdoYXQgaXMgbGlrZWx5IGEgZHJpdmVyIG9yIFVTQiBzdGFjayBpbnRlcmFjdGlvbiBpc3N1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTQ4MiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjMwOjU2Ljg4ODgwOTMzNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzAzNjM4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkaXNjb25uZWN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTM1NT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3OTI1dV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNTgtXFx0LnByb2JlXFx0XFx0PSBtdDc5MjV1X3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM1OTpcXHQuZGlzY29ubmVjdFxcdD0gbXQ3OTJ4dV9kaXNjb25uZWN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM2MC0jaWZkZWYgQ09ORklHX1BNXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjMwOjU2LjkzMTg1MDQ1M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NDU4NTEwODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgYG10NzkyeHVfZGlzY29ubmVjdGAgRnVuY3Rpb24gQ2FsbCoqXG5cbkFscmlnaHQsIHNvIEknbSBzZWVpbmcgYG10NzkyeHVfZGlzY29ubmVjdGAgY2FsbGVkIGhlcmUuIE15IGZpcnN0IGluc3RpbmN0LCBhcyBhbHdheXMsIGlzIHRvIHVuZGVyc3RhbmQgaXRzIHNjb3BlIGFuZCBwdXJwb3NlLiBUaW1lIHRvIHRyYWNlIGl0cyBkZWZpbml0aW9uLiBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggd2hlcmUgaXQncyBkZWNsYXJlZCBhbmQsIGlkZWFsbHksIHNlZSBpdHMgaW1wbGVtZW50YXRpb24gdG8gZ2V0IGEgc2Vuc2Ugb2Ygd2hhdCdzIGhhcHBlbmluZy4gSSdtIGxvb2tpbmcgZm9yIHRoZSBlc3NlbnRpYWwgZnVuY3Rpb25hbGl0eSDigJMgd2hhdCByZXNvdXJjZXMgaXMgaXQgcmVsZWFzaW5nLCB3aGF0IHN0YXRlIGlzIGl0IGNoYW5naW5nLCBhbmQgd2hhdCdzIHRoZSBicm9hZGVyIGNvbnRleHQgd2l0aGluIHRoZSBkcml2ZXIgd2hlcmUgdGhpcyBkaXNjb25uZWN0aW9uIGlzIHRyaWdnZXJlZD8gSXMgdGhpcyBhIGNsZWFuIHNodXRkb3duLCBhbiBlcnJvciByZWNvdmVyeSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEEgcXVpY2sgY29kZSBkaXZlIGlzIGluIG9yZGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5OTI1LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6MzE6MDAuNDc3NzAzNzVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNzMxOTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyeHVfZGlzY29ubmVjdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz0zMzg9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzkyMXVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMzQxLVxcdC5wcm9iZVxcdFxcdD0gbXQ3OTIxdV9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzozNDI6XFx0LmRpc2Nvbm5lY3RcXHQ9IG10NzkyeHVfZGlzY29ubmVjdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNDMtI2lmZGVmIENPTkZJR19QTVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MzU1PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc5MjV1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM1OC1cXHQucHJvYmVcXHRcXHQ9IG10NzkyNXVfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MzU5OlxcdC5kaXNjb25uZWN0XFx0PSBtdDc5Mnh1X2Rpc2Nvbm5lY3QsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzYwLSNpZmRlZiBDT05GSUdfUE1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg9NjExPXZvaWQgbXQ3OTJ4dV9jb3B5KHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgb2Zmc2V0LCBjb25zdCB2b2lkICpkYXRhLCBpbnQgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oOjYxMjp2b2lkIG10NzkyeHVfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtNjEzLXZvaWQgbXQ3OTJ4dV9zdG9wKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBib29sIHN1c3BlbmQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfdXNiLmM9NDk1PUVYUE9SVF9TWU1CT0xfR1BMKG10NzkyeHVfc3RvcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfdXNiLmMtNDk2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X3VzYi5jOjQ5Nzp2b2lkIG10NzkyeHVfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfdXNiLmMtNDk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X3VzYi5jLTUyNi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfdXNiLmM6NTI3OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyeHVfZGlzY29ubmVjdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfdXNiLmMtNTI4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozMTowMC41MjE0NDM0NzhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ0OTcxNTY5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgRGVjaXNpb246IE5vdCBBcHBsaWNhYmxlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHNjYW4gc2hvd3MgdGhpcyBwYXRjaCBpcyBmb2N1c2VkIHNvbGVseSBvbiBgbXQ3OTI1L3BjaS5jYCBhbmQgYG10NzkyeF9tYWMuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbGllcyB3aXRoaW4gdGhlIGBtdDc5MjVfcGNpX3JlbW92ZWAgZnVuY3Rpb24gYW5kIHRoZSBgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZWAgY2FsbCB3aXRoaW4gYG10NzkyNS9wY2kuY2AuIFRoaXMgaW1tZWRpYXRlbHkgc2NyZWFtcyBcIlBDSSBkcml2ZXIgYC5yZW1vdmVgIGNhbGxiYWNrXCIgdG8gbWUsIHdoaWNoIGlzIGEga2V5IGluZGljYXRvci5cblxuTm93LCBsZXQncyBhcHBseSB0aGUgY3JpdGVyaWEuIFRoZSBwcm9tcHQgaXMgY3J5c3RhbCBjbGVhcjogaWYgdGhlIHBhdGNoIGludm9sdmVzIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzICpyZXF1aXJpbmcgYWN0dWFsIGhhcmR3YXJlKiwgb3IgaWYgaXQgdG91Y2hlcyB0aGUgZHJpdmVyJ3MgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgb3IgYHBjaV91bnJlZ2lzdGVyX2RyaXZlcmAgdGVhcmRvd24gY2FsbGJhY2tzIChsaWtlIGFuIGBpZ2JfcmVtb3ZlYCksIHRoZW4gYFdvcnRoRnV6emluZ2AgaXMgYGZhbHNlYC5cblxuVGhpcyBwYXRjaCBoaXRzIGJvdGggbmFpbHMgb24gdGhlIGhlYWQuIEZpcnN0LCB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIE1UNzkyNSwgYSB2ZW5kb3Itc3BlY2lmaWMgd2lyZWxlc3MgUENJZSBkcml2ZXIuIEFuZCBzZWNvbmQsIHdlIGFyZSB0YWxraW5nIGFib3V0IGEgZHJpdmVyIGAucmVtb3ZlYCB0ZWFyZG93biBjYWxsYmFjaywgaW4gZmFjdCwgdGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgYWltcyBhdCBwcm92aWRpbmcgbG9naWMgZm9yIHRoaXMgZnVuY3Rpb24uXG5cbkdpdmVuIHRob3NlIHR3byBwb2ludHMsIEknbSBjb25maWRlbnQgaW4gc2F5aW5nIHRoYXQgdGhpcyBwYXRjaCBmYWxscyBzcXVhcmVseSB3aXRoaW4gdGhlIFwibm90IHdvcnRoIGZ1enppbmdcIiBjYXRlZ29yeS4gVGhlIGZvY3VzIGlzIG9uIGRyaXZlciByZW1vdmFsIGFuZCBjbGVhbnVwLCBmdW5jdGlvbnMgdGhhdCBhcmUgdW5saWtlbHkgdG8gYmVuZWZpdCBmcm9tIGdlbmVyaWMgZnV6emluZyB0ZWNobmlxdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDg4OCwiT3V0cHV0VG9rZW5zIjoxMzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6MzE6MDYuOTcxMTYxMzcyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIC5yZW1vdmUgdGVhcmRvd24gY2FsbGJhY2sgb2YgdGhlIE1lZGlhVGVrIE1UNzkyNSBQQ0llIHdpcmVsZXNzIGRyaXZlciAobXQ3OTI1X3BjaV9yZW1vdmUgYW5kIG10NzkyNWVfdW5yZWdpc3Rlcl9kZXZpY2UpIHRvIGZpeCBhIHJhY2UgY29uZGl0aW9uIHdpdGggcmVzZXRfd29yayBkdXJpbmcgZGV2aWNlIHJlbW92YWwuIEl0IGFsc28gYWRkcyBhIGNoZWNrIGluIG10NzkyeF9yZXNldCB0byBzdXBwb3J0IHRoaXMgdGVhcmRvd24gbG9naWMuIFRoZSBwcm9tcHQgZXhwbGljaXRseSBleGNsdWRlcyBkcml2ZXIgLnJlbW92ZSBjYWxsYmFja3MgYW5kIGNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgLnJlbW92ZSB0ZWFyZG93biBjYWxsYmFjayBvZiB0aGUgTWVkaWFUZWsgTVQ3OTI1IFBDSWUgd2lyZWxlc3MgZHJpdmVyIChtdDc5MjVfcGNpX3JlbW92ZSBhbmQgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZSkgdG8gZml4IGEgcmFjZSBjb25kaXRpb24gd2l0aCByZXNldF93b3JrIGR1cmluZyBkZXZpY2UgcmVtb3ZhbC4gSXQgYWxzbyBhZGRzIGEgY2hlY2sgaW4gbXQ3OTJ4X3Jlc2V0IHRvIHN1cHBvcnQgdGhpcyB0ZWFyZG93biBsb2dpYy4gVGhlIHByb21wdCBleHBsaWNpdGx5IGV4Y2x1ZGVzIGRyaXZlciAucmVtb3ZlIGNhbGxiYWNrcyBhbmQgY29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdn2zz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-05 08:11:14 +0000 UTC FinishedAt: 2026-08-05 08:31:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSAucmVtb3ZlIHRlYXJkb3duIGNhbGxiYWNrIG9mIHRoZSBNZWRpYVRlayBNVDc5MjUgUENJZSB3aXJlbGVzcyBkcml2ZXIgKG10NzkyNV9wY2lfcmVtb3ZlIGFuZCBtdDc5MjVlX3VucmVnaXN0ZXJfZGV2aWNlKSB0byBmaXggYSByYWNlIGNvbmRpdGlvbiB3aXRoIHJlc2V0X3dvcmsgZHVyaW5nIGRldmljZSByZW1vdmFsLiBJdCBhbHNvIGFkZHMgYSBjaGVjayBpbiBtdDc5MnhfcmVzZXQgdG8gc3VwcG9ydCB0aGlzIHRlYXJkb3duIGxvZ2ljLiBUaGUgcHJvbXB0IGV4cGxpY2l0bHkgZXhjbHVkZXMgZHJpdmVyIC5yZW1vdmUgY2FsbGJhY2tzIGFuZCBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDBjNjI2NGM0YTUyOWY1N2YxODM2MGZhY2FmMjViYjU2ZGRlYTBmMmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDA4OjMwOjI3IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmNcbmluZGV4IDAyZWYwOWRkNzk3ZGEuLjkzYzgyM2ViNzUwMTMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmNcbkBAIC00Nyw5ICYjNDM7NDcsMTAgQEAgc3RhdGljIHZvaWQgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxuIFx0aWYgKGRldi1cdTAwM2VwaHkuY2hpcF9jYXAgXHUwMDI2IE1UNzkyeF9DSElQX0NBUF9XRl9SRl9QSU5fQ1RSTF9FVlRfRU4pXG4gXHRcdHdpcGh5X3Jma2lsbF9zdG9wX3BvbGxpbmcoaHctXHUwMDNld2lwaHkpO1xuIFxuLVx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZkZXYtXHUwMDNlcmVzZXRfd29yayk7XG4gXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2Vpbml0X3dvcmspO1xuIFx0bXQ3Nl91bnJlZ2lzdGVyX2RldmljZShcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG4mIzQzO1x0c2V0X2JpdChNVDc2X1JFTU9WRUQsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbiYjNDM7XHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmRldi1cdTAwM2VyZXNldF93b3JrKTtcbiBcdG10NzZfZm9yX2VhY2hfcV9yeChcdTAwMjZkZXYtXHUwMDNlbXQ3NiwgaSlcbiBcdFx0bmFwaV9kaXNhYmxlKFx1MDAyNmRldi1cdTAwM2VtdDc2Lm5hcGlbaV0pO1xuIFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNnBtLVx1MDAzZXBzX3dvcmspO1xuQEAgLTcyNSw3ICYjNDM7NzI2LDYgQEAgc3RhdGljIHZvaWQgbXQ3OTI1X3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gXHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XG4gXHRzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2ID0gY29udGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MnhfZGV2LCBtdDc2KTtcbiBcbi1cdHNldF9iaXQoTVQ3Nl9SRU1PVkVELCBcdTAwMjZtZGV2LVx1MDAzZXBoeS5zdGF0ZSk7XG4gXHRtdDc5MjVlX3VucmVnaXN0ZXJfZGV2aWNlKGRldik7XG4gXHRkZXZtX2ZyZWVfaXJxKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBwZGV2LVx1MDAzZWlycSwgZGV2KTtcbiBcdG10NzZfZnJlZV9kZXZpY2UoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfbWFjLmNcbmluZGV4IDg4OGU1YTUwNTY3MzEuLjFlMjBiMzMzY2M2MTIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfbWFjLmNcbkBAIC0yNzgsNiAmIzQzOzI3OCw5IEBAIHZvaWQgbXQ3OTJ4X3Jlc2V0KHN0cnVjdCBtdDc2X2RldiAqbWRldilcbiBcdGlmIChwbS1cdTAwM2VzdXNwZW5kZWQpXG4gXHRcdHJldHVybjtcbiBcbiYjNDM7XHRpZiAodGVzdF9iaXQoTVQ3Nl9SRU1PVkVELCBcdTAwMjZtZGV2LVx1MDAzZXBoeS5zdGF0ZSkpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0cXVldWVfd29yayhkZXYtXHUwMDNlbXQ3Ni53cSwgXHUwMDI2ZGV2LVx1MDAzZXJlc2V0X3dvcmspO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChtdDc5MnhfcmVzZXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjMwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgLnJlbW92ZSB0ZWFyZG93biBjYWxsYmFjayBvZiB0aGUgTWVkaWFUZWsgTVQ3OTI1IFBDSWUgd2lyZWxlc3MgZHJpdmVyIChtdDc5MjVfcGNpX3JlbW92ZSBhbmQgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZSkgdG8gZml4IGEgcmFjZSBjb25kaXRpb24gd2l0aCByZXNldF93b3JrIGR1cmluZyBkZXZpY2UgcmVtb3ZhbC4gSXQgYWxzbyBhZGRzIGEgY2hlY2sgaW4gbXQ3OTJ4X3Jlc2V0IHRvIHN1cHBvcnQgdGhpcyB0ZWFyZG93biBsb2dpYy4gVGhlIHByb21wdCBleHBsaWNpdGx5IGV4Y2x1ZGVzIGRyaXZlciAucmVtb3ZlIGNhbGxiYWNrcyBhbmQgY29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwYzYyNjRjNGE1MjlmNTdmMTgzNjBmYWNhZjI1YmI1NmRkZWEwZjJmCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgNSAwODozMDoyNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMKaW5kZXggMDJlZjA5ZGQ3OTdkYS4uOTNjODIzZWI3NTAxMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMKQEAgLTQ3LDkgJiM0Mzs0NywxMCBAQCBzdGF0aWMgdm9pZCBtdDc5MjVlX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpCiAJaWYgKGRldi0mZ3Q7cGh5LmNoaXBfY2FwICZhbXA7IE1UNzkyeF9DSElQX0NBUF9XRl9SRl9QSU5fQ1RSTF9FVlRfRU4pCiAJCXdpcGh5X3Jma2lsbF9zdG9wX3BvbGxpbmcoaHctJmd0O3dpcGh5KTsKIAotCWNhbmNlbF93b3JrX3N5bmMoJmFtcDtkZXYtJmd0O3Jlc2V0X3dvcmspOwogCWNhbmNlbF93b3JrX3N5bmMoJmFtcDtkZXYtJmd0O2luaXRfd29yayk7CiAJbXQ3Nl91bnJlZ2lzdGVyX2RldmljZSgmYW1wO2Rldi0mZ3Q7bXQ3Nik7CiYjNDM7CXNldF9iaXQoTVQ3Nl9SRU1PVkVELCAmYW1wO2Rldi0mZ3Q7bXBoeS5zdGF0ZSk7CiYjNDM7CWNhbmNlbF93b3JrX3N5bmMoJmFtcDtkZXYtJmd0O3Jlc2V0X3dvcmspOwogCW10NzZfZm9yX2VhY2hfcV9yeCgmYW1wO2Rldi0mZ3Q7bXQ3NiwgaSkKIAkJbmFwaV9kaXNhYmxlKCZhbXA7ZGV2LSZndDttdDc2Lm5hcGlbaV0pOwogCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYW1wO3BtLSZndDtwc193b3JrKTsKQEAgLTcyNSw3ICYjNDM7NzI2LDYgQEAgc3RhdGljIHZvaWQgbXQ3OTI1X3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCiAJc3RydWN0IG10NzZfZGV2ICptZGV2ID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpOwogCXN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzkyeF9kZXYsIG10NzYpOwogCi0Jc2V0X2JpdChNVDc2X1JFTU9WRUQsICZhbXA7bWRldi0mZ3Q7cGh5LnN0YXRlKTsKIAltdDc5MjVlX3VucmVnaXN0ZXJfZGV2aWNlKGRldik7CiAJZGV2bV9mcmVlX2lycSgmYW1wO3BkZXYtJmd0O2RldiwgcGRldi0mZ3Q7aXJxLCBkZXYpOwogCW10NzZfZnJlZV9kZXZpY2UoJmFtcDtkZXYtJmd0O210NzYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuYwppbmRleCA4ODhlNWE1MDU2NzMxLi4xZTIwYjMzM2NjNjEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuYwpAQCAtMjc4LDYgJiM0MzsyNzgsOSBAQCB2b2lkIG10NzkyeF9yZXNldChzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYpCiAJaWYgKHBtLSZndDtzdXNwZW5kZWQpCiAJCXJldHVybjsKIAomIzQzOwlpZiAodGVzdF9iaXQoTVQ3Nl9SRU1PVkVELCAmYW1wO21kZXYtJmd0O3BoeS5zdGF0ZSkpCiYjNDM7CQlyZXR1cm47CiYjNDM7CiAJcXVldWVfd29yayhkZXYtJmd0O210NzYud3EsICZhbXA7ZGV2LSZndDtyZXNldF93b3JrKTsKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKG10NzkyeF9yZXNldCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NjMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA2MjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggQW5hbHlzaXM6IE1lZGlhVGVrIE1UNzkyNSBQQ0llIERyaXZlcioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSBNZWRpYVRlayBNVDc5MjUgUENJZSB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBpbiBgbXQ3OTI1L3BjaS5jYCBhbmQgYG10NzkyeF9tYWMuY2AuIFRoZSBjb3JlIGNoYW5nZXMgc2VlbSB0byBiZSBpbiB0aGUgZGV2aWNlIHVucmVnaXN0cmF0aW9uIChgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZWApLCBQQ0kgcmVtb3ZhbCAoYG10NzkyNV9wY2lfcmVtb3ZlYCksIGFuZCBhIG5ldyBjaGVjayBmb3IgYE1UNzZfUkVNT1ZFRGAgaW4gYG10NzkyeF9yZXNldGAuIFRoZSBwcm9tcHQgc3BlY2lmaWVzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdCBtb2RpZmllcyBjb2RlIHJlbGF0ZWQgdG8gdmVuZG9yLXNwZWNpZmljIFBDSWUgaGFyZHdhcmUgdGhhdCBjYW4mIzM5O3QgYmUgZW11bGF0ZWQuCgpNeSBmaXJzdCB0aG91Z2h0IGlzLCB0aGlzIGlzIGEgUENJZSB3aXJlbGVzcyBjYXJkLCB3aGljaCB0eXBpY2FsbHkgKmlzbiYjMzk7dCogZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhhdCYjMzk7cyBhIGh1Z2UgcmVkIGZsYWcuIFRoZSBwYXRjaCBtb2RpZmllcyBgbXQ3OTI1X3BjaV9yZW1vdmVgLCB3aGljaCBpcyB0aGUgYC5yZW1vdmVgIGNhbGxiYWNrLiBUaGlzIGNhbGxiYWNrIGlzIG9ubHkgZXhlY3V0ZWQgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4gVGhlIHByb21wdCBpcyBxdWl0ZSBzcGVjaWZpYyBhYm91dCAqdGhvc2UqIGJlaW5nIGV4Y2x1ZGVkLiBUaGVuIHRoZXJlJiMzOTtzIHRoZSBtb2RpZmljYXRpb24gb2YgYG10NzkyeF9yZXNldGAuIEkgbmVlZCB0byB0aGluayBhYm91dCBob3cgdGhhdCBnZXRzIGNhbGxlZC4KCkkgbmVlZCB0byBjb25maXJtIHRoYXQgTVQ3OTI1IHNwZWNpZmljYWxseSBpcyAqbm90KiBlbXVsYXRlZC4gVXN1YWxseSwgdGhlc2Ugc29ydHMgb2YgY2FyZHMgcmVxdWlyZSB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgdG8gZnVuY3Rpb24uIEnigJltIHByZXR0eSBzdXJlIHRoZSBgbXQ3NmAgZHJpdmVyIGlzIHNwZWNpZmljIHRvIE1lZGlhVGVrIHdpcmVsZXNzIGNhcmRzLiBDb3VsZCB0aGlzIGFsc28gYmUgYSBVU0IgZGV2aWNlPyBUaGUgcGF0Y2ggZm9jdXNlcyBvbiBgcGNpLmNgLCBzbyBJJiMzOTtkIHNheSB0aGUgYW5zd2VyIGlzIG5vLiBJ4oCZbSBhbHNvIHNlZWluZyB0aGF0IGBtdDc5MnhfcmVzZXRgIGlzIGV4cG9ydGVkLCBzbyBpdCYjMzk7cyBwcm9iYWJseSBjYWxsZWQgZHVyaW5nIHJlc2V0IHNpdHVhdGlvbnMsIGJ1dCB0aGUgcHJpbWFyeSBmb2N1cyBpcyBzdGlsbCBvbiBwaHlzaWNhbCBQQ0kgZGV2aWNlIGZ1bmN0aW9uYWxpdHkuCgpUaGlzIGlzIGFsbCBwb2ludGluZyB0byBhIHBhdGNoIHRoYXQgaXMgKm5vdCogZnV6emFibGUgYWNjb3JkaW5nIHRvIHRoZSBndWlkZWxpbmVzLiBUaGUgY2hhbmdlcyBhcmUgbGFyZ2VseSBjb25maW5lZCB0byB0aGUgUENJZS1zcGVjaWZpYyBkcml2ZXIsIGluY2x1ZGluZyB0aGUgYC5yZW1vdmVgIGNhbGxiYWNrLCBhbmQgdG91Y2ggaGFyZHdhcmUgdGhhdCYjMzk7cyBub3QgZWFzaWx5IGVtdWxhdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyeF9yZXNldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYz0yMjc9c3RhdGljIGludCBtdDc5MjFfY2hpcF9yZXNldCh2b2lkICpkYXRhLCB1NjQgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL2RlYnVnZnMuYy0yMzQtXHRcdC8qIFJlc2V0IHdpZmlzeXMgZGlyZWN0bHkuICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmM6MjM1Olx0XHRtdDc5MnhfcmVzZXQoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIzNi1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFjLmM9NzE1PXZvaWQgbXQ3OTIxX2NvcmVkdW1wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc1OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jOjc1OTpcdG10NzkyeF9yZXNldChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYy03NjAtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jPTE1PWludCBtdDc5MjFfbWN1X3BhcnNlX3Jlc3BvbnNlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgaW50IGNtZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy0yNC1cdFx0XHRjbWQsIHNlcSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYzoyNTpcdFx0bXQ3OTJ4X3Jlc2V0KG1kZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmMtMjYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpLmM9NDY4PXN0YXRpYyBpbnQgbXQ3OTIxX3BjaV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldmljZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2kuYy01NDUtXHRpZiAoZXJyIFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpLmM6NTQ2Olx0XHRtdDc5MnhfcmVzZXQoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpLmMtNTQ3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaS5jPTU1MT1zdGF0aWMgaW50IG10NzkyMV9wY2lfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldmljZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2kuYy02MDQtXHRpZiAoZXJyIFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpLmM6NjA1Olx0XHRtdDc5MnhfcmVzZXQoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpLmMtNjA2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaS5jPTY4Nj1zdGF0aWMgcGNpX2Vyc19yZXN1bHRfdCBtdDc5MjFfc2xvdF9yZXNldChzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2kuYy03MDEtXHQvKiBBbHNvIHRyeSBkbyB0aGUgdmVuZG9yIHJlc2V0IHRvIGxldCBpdCBtb3JlIGNsZWFyLiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpLmM6NzAyOlx0bXQ3OTJ4X3Jlc2V0KG1kZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpLmMtNzAzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYz0yMDk9c3RhdGljIGludCBtdDc5MjFzX3N1c3BlbmQoc3RydWN0IGRldmljZSAqX19kZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTI3OS1cdGlmIChlcnIgXHUwMDNjIDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM6MjgwOlx0XHRtdDc5MnhfcmVzZXQoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTI4MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM9Mjg1PXN0YXRpYyBpbnQgbXQ3OTIxc19yZXN1bWUoc3RydWN0IGRldmljZSAqX19kZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTMxMy1cdGlmIChlcnIgXHUwMDNjIDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9zZGlvLmM6MzE0Olx0XHRtdDc5MnhfcmVzZXQoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTMxNS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz0yNjQ9c3RhdGljIGludCBtdDc5MjF1X3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0yODUtXHRpZiAoZXJyIFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6Mjg2Olx0XHRtdDc5MnhfcmVzZXQoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMjg3LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTI5MT1zdGF0aWMgaW50IG10NzkyMXVfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTMyNy1cdGlmIChlcnIgXHUwMDNjIDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzozMjg6XHRcdG10NzkyeF9yZXNldChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zMjktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jPTI2Nj1zdGF0aWMgaW50IG10NzkyNV9jaGlwX3Jlc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvZGVidWdmcy5jLTI3My1cdFx0LyogUmVzZXQgd2lmaXN5cyBkaXJlY3RseS4gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYzoyNzQ6XHRcdG10NzkyeF9yZXNldChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjc1LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYz0xNTcyPXZvaWQgbXQ3OTI1X2NvcmVkdW1wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2MTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWMuYzoxNjE2Olx0bXQ3OTJ4X3Jlc2V0KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2MTctfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jPTIyPWludCBtdDc5MjVfbWN1X3BhcnNlX3Jlc3BvbnNlKHN0cnVjdCBtdDc2X2RldiAqbWRldiwgaW50IGNtZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0zMC1cdFx0ZGV2X2VycihtZGV2LVx1MDAzZWRldiwgXCYjMzQ7TWVzc2FnZSAlMDh4IChzZXEgJWQpIHRpbWVvdXRcXG5cJiMzNDssIGNtZCwgc2VxKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jOjMxOlx0XHRtdDc5MnhfcmVzZXQobWRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0zMi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYz03MzU9c3RhdGljIGludCBtdDc5MjVfcGNpX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2aWNlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTgxOC1cdGlmIChlcnIgXHUwMDNjIDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYzo4MTk6XHRcdG10NzkyeF9yZXNldChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYy04MjAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM9ODI0PXN0YXRpYyBpbnQgX210NzkyNV9wY2lfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldmljZSwgYm9vbCByZXN0b3JlKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTg4NC1cdGlmIChlcnIgXHUwMDNjIDAgfHwgcmVzdG9yZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jOjg4NTpcdFx0bXQ3OTJ4X3Jlc2V0KFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTg4Ni1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0yNzA9c3RhdGljIGludCBtdDc5MjV1X3N1c3BlbmQoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYsIHBtX21lc3NhZ2VfdCBzdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0yOTctXHRpZiAoZXJyIFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6Mjk4Olx0XHRtdDc5MnhfcmVzZXQoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMjk5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTMwMz1zdGF0aWMgaW50IG10NzkyNXVfcmVzdW1lKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM0NC1cdGlmIChlcnIgXHUwMDNjIDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzozNDU6XHRcdG10NzkyeF9yZXNldChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNDYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaD00NTI9dm9pZCBtdDc5MnhfcG1fcG93ZXJfc2F2ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oOjQ1Mzp2b2lkIG10NzkyeF9yZXNldChzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC00NTQtdm9pZCBtdDc5MnhfdXBkYXRlX2NoYW5uZWwoc3RydWN0IG10NzZfcGh5ICptcGh5KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmM9OTc0PWludCBtdDc5MnhfbWN1X2Rydl9wbWN0cmwoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmMtOTg5LVx0aWYgKGVycilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYzo5OTA6XHRcdG10NzkyeF9yZXNldChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmMtOTkxLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYz05OTY9aW50IG10NzkyeF9tY3VfZndfcG1jdHJsKHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jLTEwMTEtXHRpZiAoZXJyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jOjEwMTI6XHRcdG10NzkyeF9yZXNldChcdTAwMjZkZXYtXHUwMDNlbXQ3Nik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmMtMTAxMy1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuYz0yNjU9RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTJ4X3VwZGF0ZV9jaGFubmVsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X21hYy5jLTI2Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X21hYy5jOjI2Nzp2b2lkIG10NzkyeF9yZXNldChzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuYy0yNjgte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X21hYy5jLTI4NS19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuYzoyODY6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTJ4X3Jlc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X21hYy5jLTI4Ny1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjgyCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMTM5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgTVQ3OTI1IFBDSSBEcml2ZXIgUGF0Y2ggZm9yIEZ1enppbmcgRWxpZ2liaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBtdDc5MjUvcGNpLmNgIGFuZCBgbXQ3OTJ4X21hYy5jYC4gIEltbWVkaWF0ZWx5LCBteSByYWRhciBnb2VzIHVwIGJlY2F1c2Ugb2YgdGhlIC5yZW1vdmUgY2FsbGJhY2sgbW9kaWZpY2F0aW9ucywgZXNwZWNpYWxseSB3aXRoIHRoZSBwcm9tcHQmIzM5O3MgZXhjbHVzaW9uIGNyaXRlcmlhIGluIG1pbmQuICBJdCYjMzk7cyBjaGFuZ2luZyBgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZWAgYW5kIGBtdDc5MjVfcGNpX3JlbW92ZWAsIHRoZSBsYXR0ZXIgYmVpbmcgdGhlIFBDSSBkcml2ZXImIzM5O3MgYC5yZW1vdmVgIGZ1bmN0aW9uLiBUaGlzIHJpbmdzIHRoZSBhbGFybSBiZWxscyDigJMgdGhpcyBpcyBkZWZpbml0ZWx5IFBDSSBob3QtdW5wbHVnIHRlcnJpdG9yeS4KClRoZSBwYXRjaCBtb3ZlcyB0aGUgYHNldF9iaXQoTVQ3Nl9SRU1PVkVELCAmYW1wO2Rldi0mZ3Q7bXBoeS5zdGF0ZSlgIGNhbGwgKmludG8qIGBtdDc5MjVlX3VucmVnaXN0ZXJfZGV2aWNlYCBhbmQgKm91dCBvZiogYG10NzkyNV9wY2lfcmVtb3ZlYC4gVGhhdCBsb29rcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIGF0dGVtcHQgdG8gZml4IGEgcmFjZSBjb25kaXRpb24g4oCTIHRoZSBjb2RlIGlzIGJlaW5nIHVwZGF0ZWQgdG8gYXZvaWQgYSBzY2VuYXJpbyB3aGVyZSB0aGUgcmVzZXQgd29yayBpcyBxdWV1ZWQgKmFmdGVyKiB0aGUgZGV2aWNlIHJlbW92YWwgaGFzIGJlZ3VuLCB3aGljaCBjb3VsZCBsZWFkIHRvIHJlc291cmNlIGxlYWtzLCBkb3VibGUtZnJlZXMsIG9yIG90aGVyIGJhZG5lc3MuIEl0IGlzIGRlZmluaXRlbHkgZml4aW5nIGEgcmFjZSBjb25kaXRpb24sIGJ5IHB1dHRpbmcgdGhlIGBNVDc2X1JFTU9WRURgIGNoZWNrICpiZWZvcmUqIHRoZSB3b3JrIGlzIHF1ZXVlZC4KCk5vdywgdGhlIGBtdDc5MnhfcmVzZXRgIG1vZGlmaWNhdGlvbiBpbiBgbXQ3OTJ4X21hYy5jYCBjb21wbGljYXRlcyB0aGluZ3MgYSBiaXQuIEl0IGFkZHMgYSBjaGVjayBmb3IgYE1UNzZfUkVNT1ZFRGAgYmVmb3JlIHF1ZXVpbmcgdGhlIGByZXNldF93b3JrYC4gVGhpcyBpcyAqcmVsYXRlZCogdG8gdGhlIFBDSSByZW1vdmFsLiAgYG10NzkyeF9yZXNldGAgaXMgYSBzaGFyZWQgZnVuY3Rpb24gdXNlZCBieSBib3RoIFBDSSBhbmQgVVNCIGRyaXZlcnMuIEFsdGhvdWdoIGl0JiMzOTtzIG5vdCBhICp0ZWFyZG93biogY2FsbGJhY2sgaXRzZWxmLCBpdCYjMzk7cyBjbGVhcmx5IGJlaW5nIG1vZGlmaWVkIHRvICpzdXBwb3J0KiB0aGUgdGVhcmRvd24gcHJvY2VzcyBmb3IgUENJLgoKVGhlIGNvcmUgcXVlc3Rpb24gbm93IGlzLCBkb2VzIHRoaXMgY29uc3RpdHV0ZSBhICp0ZWFyZG93biBjYWxsYmFjayogbW9kaWZpY2F0aW9uIGFjY29yZGluZyB0byB0aGUgcHJvbXB0JiMzOTtzIGRlZmluaXRpb24/ICBUaGUgaW50ZW50IG9mIHRoZSBwcm9tcHQgaXMgdG8gZXhjbHVkZSBtb2RpZmljYXRpb25zIHRoYXQgYXJlICpzb2xlbHkqIGludm9sdmVkIGluIHRoZSBkcml2ZXIgcmVtb3ZhbC9zaHV0ZG93biBzZXF1ZW5jZS4gIFdoaWxlIGBtdDc5MnhfcmVzZXRgIGlzbiYjMzk7dCAqZGlyZWN0bHkqIGEgdGVhcmRvd24gZnVuY3Rpb24sIHRoZSBjaGFuZ2UgaXMgZW50aXJlbHkgY29uZGl0aW9uYWwgb24gdGhlIGRldmljZSBiZWluZyByZW1vdmVkLCBhbmQgZXhpc3RzICpiZWNhdXNlKiBvZiB0aGUgcmVtb3ZhbCBwcm9jZXNzLgoKVGhlIHByb21wdCBleHBsaWNpdGx5IHNheXMgdG8gZXhjbHVkZSB0aGlzIHR5cGUgb2YgY2hhbmdlLCBldmVuIGlmIGl0IGlzIG5vdCBhIGRpcmVjdCB0ZWFyZG93biBmdW5jdGlvbiwgYmVjYXVzZSBgTVQ3Nl9SRU1PVkVEYCBpcyBzZXQgaW4gdGhlIFBDSSBkcml2ZXIsIGFuZCB0aGVyZWZvcmUgb25seSBpbXBhY3RzIHRoZSBQQ0kgZHJpdmVyLiAgU2luY2UgYG10NzkyNWAgaXMgYSBQQ0llIGNhcmQsIGEgZnV6emluZyBjYW1wYWlnbiBtYXkgbm90IGJlIHBvc3NpYmxlLCBhcyBRRU1VIGRvZXMgbm90IGVtdWxhdGUgUENJZS4KCkhvd2V2ZXIsIHRoZSBxdWVzdGlvbiBpcyBub3c6IGRvZXMgdGhlIHNhbWUgaXNzdWUgZXhpc3QgaW4gdGhlIFVTQiBkcml2ZXIgYXMgd2VsbD8gVGhlIFVTQiBkcml2ZXIgdXNlcyB0aGUgc2FtZSBgbXQ3OTJ4X3Jlc2V0YCBmdW5jdGlvbi4gSWYgdGhlIFVTQiBkcml2ZXIgaXMgYWZmZWN0ZWQsIHRoZW4gdGhpcyBwYXRjaCAqY291bGQqIGJlIHdvcnRoIGZ1enppbmcsIGFzIGl0IGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGRpc2Nvbm5lY3Qgb3Igc3lzZnMgdW5iaW5kLCBidXQgdGhlIGBNVDc2X1JFTU9WRURgIHNldCBpcyAqbm90KiBpbiB0aGUgVVNCIGRyaXZlci4gVGhlcmUgYXJlIGRpZmZlcmVudCBgdW5yZWdpc3Rlcl9kZXZpY2VgIGZ1bmN0aW9ucyBpbiBlYWNoIGRyaXZlciwgc28gYSBjaGFuZ2Ugd291bGQgYmUgbmVlZGVkIGluIGJvdGggdG8gZnVsbHkgZXhjbHVkZSBpdC4KClNvLCBpbiBjb25jbHVzaW9uLCBnaXZlbiB0aGUgcHJvbXB0JiMzOTtzIGV4Y2x1c2lvbiBjcml0ZXJpYSBhbmQgdGhlIG5hdHVyZSBvZiB0aGUgY2hhbmdlcywgSSYjMzk7ZCBsZWFuIHRvd2FyZHMgV29ydGhGdXp6aW5nPWZhbHNlLiAgVGhlICpwcmltYXJ5KiBmb2N1cyBvZiB0aGUgcGF0Y2ggaXMgZGV2aWNlIHJlbW92YWwsIGV2ZW4gaWYgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIG5vdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O210NzkyNXVfdW5yZWdpc3Rlcl9kZXZpY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA4OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0ODIKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEZWJ1Z2dpbmcgdGhlIFVTQiBEaXNjb25uZWN0IElzc3VlKioKCkFscmlnaHQsIHNvIHdlJiMzOTt2ZSBnb3QgYSBVU0IgZGlzY29ubmVjdCBpc3N1ZSwgYW5kIG15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHplcm8gaW4gb24gdGhlIGRyaXZlciBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgdGhvc2UgZXZlbnRzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayBgbXQ3OTI1X3VzYl9kaXNjb25uZWN0YCBvciBzb21ldGhpbmcgY2xvc2VseSByZXNlbWJsaW5nIHRoYXQgbmFtZS4gVGhpcyBhc3N1bWVzLCBvZiBjb3Vyc2UsIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIE1lZGlhVGVrIGNoaXBzZXQg4oCTIHdoaWNoIEkmIzM5O20gaW5mZXJyaW5nIGZyb20gdGhlIGBtdDc5MjVgIHByZWZpeC4gSSYjMzk7ZCBleHBlY3QgdGhlIGRpc2Nvbm5lY3QgcHJvY2VzcyB0byBpbnZvbHZlIGNsZWFudXAgb2YgcmVzb3VyY2VzLCBzaWduYWxpbmcgdG8gdGhlIGhvc3QsIGFuZCBwb3NzaWJseSBzb21lIGhhcmR3YXJlLWxldmVsIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy4gVGhlIGdvYWwgaGVyZSBpcyB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgZGlzY29ubmVjdCBpcyBpbml0aWF0ZWQgY29ycmVjdGx5IGJ5IHRoZSBkcml2ZXIsIG9yIGlmIGl0JiMzOTtzIHBvdGVudGlhbGx5IHRyaWdnZXJlZCBwcmVtYXR1cmVseSBieSBhbiBleHRlcm5hbCBmYWN0b3IuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGUgc3BlY2lmaWMgZHJpdmVyIG5hbWluZyBjb252ZW50aW9ucyBpbiB0aGlzIGtlcm5lbCB2ZXJzaW9uLCBidXQgSSB0aGluayB0aGF0JiMzOTtzIHRoZSByaWdodCBzdGFydGluZyBwb2ludCBmb3IgZGlhZ25vc2luZyB3aGF0IGlzIGxpa2VseSBhIGRyaXZlciBvciBVU0Igc3RhY2sgaW50ZXJhY3Rpb24gaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGlzY29ubmVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTM1NT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3OTI1dV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzU4LVx0LnByb2JlXHRcdD0gbXQ3OTI1dV9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM1OTpcdC5kaXNjb25uZWN0XHQ9IG10NzkyeHVfZGlzY29ubmVjdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM2MC0jaWZkZWYgQ09ORklHX1BNXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTkyNQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgYG10NzkyeHVfZGlzY29ubmVjdGAgRnVuY3Rpb24gQ2FsbCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHNlZWluZyBgbXQ3OTJ4dV9kaXNjb25uZWN0YCBjYWxsZWQgaGVyZS4gTXkgZmlyc3QgaW5zdGluY3QsIGFzIGFsd2F5cywgaXMgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUgYW5kIHB1cnBvc2UuIFRpbWUgdG8gdHJhY2UgaXRzIGRlZmluaXRpb24uIEkgbmVlZCB0byBxdWlja2x5IGVzdGFibGlzaCB3aGVyZSBpdCYjMzk7cyBkZWNsYXJlZCBhbmQsIGlkZWFsbHksIHNlZSBpdHMgaW1wbGVtZW50YXRpb24gdG8gZ2V0IGEgc2Vuc2Ugb2Ygd2hhdCYjMzk7cyBoYXBwZW5pbmcuIEkmIzM5O20gbG9va2luZyBmb3IgdGhlIGVzc2VudGlhbCBmdW5jdGlvbmFsaXR5IOKAkyB3aGF0IHJlc291cmNlcyBpcyBpdCByZWxlYXNpbmcsIHdoYXQgc3RhdGUgaXMgaXQgY2hhbmdpbmcsIGFuZCB3aGF0JiMzOTtzIHRoZSBicm9hZGVyIGNvbnRleHQgd2l0aGluIHRoZSBkcml2ZXIgd2hlcmUgdGhpcyBkaXNjb25uZWN0aW9uIGlzIHRyaWdnZXJlZD8gSXMgdGhpcyBhIGNsZWFuIHNodXRkb3duLCBhbiBlcnJvciByZWNvdmVyeSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEEgcXVpY2sgY29kZSBkaXZlIGlzIGluIG9yZGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttdDc5Mnh1X2Rpc2Nvbm5lY3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz0zMzg9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzkyMXVfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jLTM0MS1cdC5wcm9iZVx0XHQ9IG10NzkyMXVfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzozNDI6XHQuZGlzY29ubmVjdFx0PSBtdDc5Mnh1X2Rpc2Nvbm5lY3QsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNDMtI2lmZGVmIENPTkZJR19QTVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTM1NT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3OTI1dV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzU4LVx0LnByb2JlXHRcdD0gbXQ3OTI1dV9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM1OTpcdC5kaXNjb25uZWN0XHQ9IG10NzkyeHVfZGlzY29ubmVjdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM2MC0jaWZkZWYgQ09ORklHX1BNXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaD02MTE9dm9pZCBtdDc5Mnh1X2NvcHkoc3RydWN0IG10NzZfZGV2ICpkZXYsIHUzMiBvZmZzZXQsIGNvbnN0IHZvaWQgKmRhdGEsIGludCBsZW4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaDo2MTI6dm9pZCBtdDc5Mnh1X2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKnVzYl9pbnRmKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtNjEzLXZvaWQgbXQ3OTJ4dV9zdG9wKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBib29sIHN1c3BlbmQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X3VzYi5jPTQ5NT1FWFBPUlRfU1lNQk9MX0dQTChtdDc5Mnh1X3N0b3ApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfdXNiLmMtNDk2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfdXNiLmM6NDk3OnZvaWQgbXQ3OTJ4dV9kaXNjb25uZWN0KHN0cnVjdCB1c2JfaW50ZXJmYWNlICp1c2JfaW50ZilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X3VzYi5jLTQ5OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfdXNiLmMtNTI2LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X3VzYi5jOjUyNzpFWFBPUlRfU1lNQk9MX0dQTChtdDc5Mnh1X2Rpc2Nvbm5lY3QpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfdXNiLmMtNTI4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwODozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDg4OAoJCQkJCQkJb3V0cHV0OiAxMzcKCQkJCQkJCXRob3VnaHRzOiAyODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqV29ydGhGdXp6aW5nIERlY2lzaW9uOiBOb3QgQXBwbGljYWJsZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHNjYW4gc2hvd3MgdGhpcyBwYXRjaCBpcyBmb2N1c2VkIHNvbGVseSBvbiBgbXQ3OTI1L3BjaS5jYCBhbmQgYG10NzkyeF9tYWMuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbGllcyB3aXRoaW4gdGhlIGBtdDc5MjVfcGNpX3JlbW92ZWAgZnVuY3Rpb24gYW5kIHRoZSBgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZWAgY2FsbCB3aXRoaW4gYG10NzkyNS9wY2kuY2AuIFRoaXMgaW1tZWRpYXRlbHkgc2NyZWFtcyAmIzM0O1BDSSBkcml2ZXIgYC5yZW1vdmVgIGNhbGxiYWNrJiMzNDsgdG8gbWUsIHdoaWNoIGlzIGEga2V5IGluZGljYXRvci4KCk5vdywgbGV0JiMzOTtzIGFwcGx5IHRoZSBjcml0ZXJpYS4gVGhlIHByb21wdCBpcyBjcnlzdGFsIGNsZWFyOiBpZiB0aGUgcGF0Y2ggaW52b2x2ZXMgdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKnJlcXVpcmluZyBhY3R1YWwgaGFyZHdhcmUqLCBvciBpZiBpdCB0b3VjaGVzIHRoZSBkcml2ZXImIzM5O3MgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgb3IgYHBjaV91bnJlZ2lzdGVyX2RyaXZlcmAgdGVhcmRvd24gY2FsbGJhY2tzIChsaWtlIGFuIGBpZ2JfcmVtb3ZlYCksIHRoZW4gYFdvcnRoRnV6emluZ2AgaXMgYGZhbHNlYC4KClRoaXMgcGF0Y2ggaGl0cyBib3RoIG5haWxzIG9uIHRoZSBoZWFkLiBGaXJzdCwgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgTVQ3OTI1LCBhIHZlbmRvci1zcGVjaWZpYyB3aXJlbGVzcyBQQ0llIGRyaXZlci4gQW5kIHNlY29uZCwgd2UgYXJlIHRhbGtpbmcgYWJvdXQgYSBkcml2ZXIgYC5yZW1vdmVgIHRlYXJkb3duIGNhbGxiYWNrLCBpbiBmYWN0LCB0aGlzIHBhdGNoIHNwZWNpZmljYWxseSBhaW1zIGF0IHByb3ZpZGluZyBsb2dpYyBmb3IgdGhpcyBmdW5jdGlvbi4KCkdpdmVuIHRob3NlIHR3byBwb2ludHMsIEkmIzM5O20gY29uZmlkZW50IGluIHNheWluZyB0aGF0IHRoaXMgcGF0Y2ggZmFsbHMgc3F1YXJlbHkgd2l0aGluIHRoZSAmIzM0O25vdCB3b3J0aCBmdXp6aW5nJiMzNDsgY2F0ZWdvcnkuIFRoZSBmb2N1cyBpcyBvbiBkcml2ZXIgcmVtb3ZhbCBhbmQgY2xlYW51cCwgZnVuY3Rpb25zIHRoYXQgYXJlIHVubGlrZWx5IHRvIGJlbmVmaXQgZnJvbSBnZW5lcmljIGZ1enppbmcgdGVjaG5pcXVlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDg6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgLnJlbW92ZSB0ZWFyZG93biBjYWxsYmFjayBvZiB0aGUgTWVkaWFUZWsgTVQ3OTI1IFBDSWUgd2lyZWxlc3MgZHJpdmVyIChtdDc5MjVfcGNpX3JlbW92ZSBhbmQgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZSkgdG8gZml4IGEgcmFjZSBjb25kaXRpb24gd2l0aCByZXNldF93b3JrIGR1cmluZyBkZXZpY2UgcmVtb3ZhbC4gSXQgYWxzbyBhZGRzIGEgY2hlY2sgaW4gbXQ3OTJ4X3Jlc2V0IHRvIHN1cHBvcnQgdGhpcyB0ZWFyZG93biBsb2dpYy4gVGhlIHByb21wdCBleHBsaWNpdGx5IGV4Y2x1ZGVzIGRyaXZlciAucmVtb3ZlIGNhbGxiYWNrcyBhbmQgY29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSAucmVtb3ZlIHRlYXJkb3duIGNhbGxiYWNrIG9mIHRoZSBNZWRpYVRlayBNVDc5MjUgUENJZSB3aXJlbGVzcyBkcml2ZXIgKG10NzkyNV9wY2lfcmVtb3ZlIGFuZCBtdDc5MjVlX3VucmVnaXN0ZXJfZGV2aWNlKSB0byBmaXggYSByYWNlIGNvbmRpdGlvbiB3aXRoIHJlc2V0X3dvcmsgZHVyaW5nIGRldmljZSByZW1vdmFsLiBJdCBhbHNvIGFkZHMgYSBjaGVjayBpbiBtdDc5MnhfcmVzZXQgdG8gc3VwcG9ydCB0aGlzIHRlYXJkb3duIGxvZ2ljLiBUaGUgcHJvbXB0IGV4cGxpY2l0bHkgZXhjbHVkZXMgZHJpdmVyIC5yZW1vdmUgY2FsbGJhY2tzIGFuZCBjb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjMwOjI4LjU2NTM2NzM3MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NDA1ODIyNTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgLnJlbW92ZSB0ZWFyZG93biBjYWxsYmFjayBvZiB0aGUgTWVkaWFUZWsgTVQ3OTI1IFBDSWUgd2lyZWxlc3MgZHJpdmVyIChtdDc5MjVfcGNpX3JlbW92ZSBhbmQgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZSkgdG8gZml4IGEgcmFjZSBjb25kaXRpb24gd2l0aCByZXNldF93b3JrIGR1cmluZyBkZXZpY2UgcmVtb3ZhbC4gSXQgYWxzbyBhZGRzIGEgY2hlY2sgaW4gbXQ3OTJ4X3Jlc2V0IHRvIHN1cHBvcnQgdGhpcyB0ZWFyZG93biBsb2dpYy4gVGhlIHByb21wdCBleHBsaWNpdGx5IGV4Y2x1ZGVzIGRyaXZlciAucmVtb3ZlIGNhbGxiYWNrcyBhbmQgY29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjMwOjI4LjU2NTM3NDYwMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkxOTM2NTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMGM2MjY0YzRhNTI5ZjU3ZjE4MzYwZmFjYWYyNWJiNTZkZGVhMGYyZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyA1IDA4OjMwOjI3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmNcXG5pbmRleCAwMmVmMDlkZDc5N2RhLi45M2M4MjNlYjc1MDEzIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmNcXG5AQCAtNDcsOSArNDcsMTAgQEAgc3RhdGljIHZvaWQgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbiBcXHRpZiAoZGV2LVxcdTAwM2VwaHkuY2hpcF9jYXAgXFx1MDAyNiBNVDc5MnhfQ0hJUF9DQVBfV0ZfUkZfUElOX0NUUkxfRVZUX0VOKVxcbiBcXHRcXHR3aXBoeV9yZmtpbGxfc3RvcF9wb2xsaW5nKGh3LVxcdTAwM2V3aXBoeSk7XFxuIFxcbi1cXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZkZXYtXFx1MDAzZXJlc2V0X3dvcmspO1xcbiBcXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZkZXYtXFx1MDAzZWluaXRfd29yayk7XFxuIFxcdG10NzZfdW5yZWdpc3Rlcl9kZXZpY2UoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuK1xcdHNldF9iaXQoTVQ3Nl9SRU1PVkVELCBcXHUwMDI2ZGV2LVxcdTAwM2VtcGh5LnN0YXRlKTtcXG4rXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2ZGV2LVxcdTAwM2VyZXNldF93b3JrKTtcXG4gXFx0bXQ3Nl9mb3JfZWFjaF9xX3J4KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYsIGkpXFxuIFxcdFxcdG5hcGlfZGlzYWJsZShcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2Lm5hcGlbaV0pO1xcbiBcXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNnBtLVxcdTAwM2Vwc193b3JrKTtcXG5AQCAtNzI1LDcgKzcyNiw2IEBAIHN0YXRpYyB2b2lkIG10NzkyNV9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbiBcXHRzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XFxuIFxcdHN0cnVjdCBtdDc5MnhfZGV2ICpkZXYgPSBjb250YWluZXJfb2YobWRldiwgc3RydWN0IG10NzkyeF9kZXYsIG10NzYpO1xcbiBcXG4tXFx0c2V0X2JpdChNVDc2X1JFTU9WRUQsIFxcdTAwMjZtZGV2LVxcdTAwM2VwaHkuc3RhdGUpO1xcbiBcXHRtdDc5MjVlX3VucmVnaXN0ZXJfZGV2aWNlKGRldik7XFxuIFxcdGRldm1fZnJlZV9pcnEoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgcGRldi1cXHUwMDNlaXJxLCBkZXYpO1xcbiBcXHRtdDc2X2ZyZWVfZGV2aWNlKFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X21hYy5jXFxuaW5kZXggODg4ZTVhNTA1NjczMS4uMWUyMGIzMzNjYzYxMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X21hYy5jXFxuQEAgLTI3OCw2ICsyNzgsOSBAQCB2b2lkIG10NzkyeF9yZXNldChzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYpXFxuIFxcdGlmIChwbS1cXHUwMDNlc3VzcGVuZGVkKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbitcXHRpZiAodGVzdF9iaXQoTVQ3Nl9SRU1PVkVELCBcXHUwMDI2bWRldi1cXHUwMDNlcGh5LnN0YXRlKSlcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4gXFx0cXVldWVfd29yayhkZXYtXFx1MDAzZW10NzYud3EsIFxcdTAwMjZkZXYtXFx1MDAzZXJlc2V0X3dvcmspO1xcbiB9XFxuIEVYUE9SVF9TWU1CT0xfR1BMKG10NzkyeF9yZXNldCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjMwOjI4Ljk1ODAxMDc0OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjM4MDEzMTczOTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgLnJlbW92ZSB0ZWFyZG93biBjYWxsYmFjayBvZiB0aGUgTWVkaWFUZWsgTVQ3OTI1IFBDSWUgd2lyZWxlc3MgZHJpdmVyIChtdDc5MjVfcGNpX3JlbW92ZSBhbmQgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZSkgdG8gZml4IGEgcmFjZSBjb25kaXRpb24gd2l0aCByZXNldF93b3JrIGR1cmluZyBkZXZpY2UgcmVtb3ZhbC4gSXQgYWxzbyBhZGRzIGEgY2hlY2sgaW4gbXQ3OTJ4X3Jlc2V0IHRvIHN1cHBvcnQgdGhpcyB0ZWFyZG93biBsb2dpYy4gVGhlIHByb21wdCBleHBsaWNpdGx5IGV4Y2x1ZGVzIGRyaXZlciAucmVtb3ZlIGNhbGxiYWNrcyBhbmQgY29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDBjNjI2NGM0YTUyOWY1N2YxODM2MGZhY2FmMjViYjU2ZGRlYTBmMmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDA4OjMwOjI3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuY1xuaW5kZXggMDJlZjA5ZGQ3OTdkYS4uOTNjODIzZWI3NTAxMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuY1xuQEAgLTQ3LDkgKzQ3LDEwIEBAIHN0YXRpYyB2b2lkIG10NzkyNWVfdW5yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG10NzkyeF9kZXYgKmRldilcbiBcdGlmIChkZXYtXHUwMDNlcGh5LmNoaXBfY2FwIFx1MDAyNiBNVDc5MnhfQ0hJUF9DQVBfV0ZfUkZfUElOX0NUUkxfRVZUX0VOKVxuIFx0XHR3aXBoeV9yZmtpbGxfc3RvcF9wb2xsaW5nKGh3LVx1MDAzZXdpcGh5KTtcbiBcbi1cdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZXJlc2V0X3dvcmspO1xuIFx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZkZXYtXHUwMDNlaW5pdF93b3JrKTtcbiBcdG10NzZfdW5yZWdpc3Rlcl9kZXZpY2UoXHUwMDI2ZGV2LVx1MDAzZW10NzYpO1xuK1x0c2V0X2JpdChNVDc2X1JFTU9WRUQsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKTtcbitcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2ZGV2LVx1MDAzZXJlc2V0X3dvcmspO1xuIFx0bXQ3Nl9mb3JfZWFjaF9xX3J4KFx1MDAyNmRldi1cdTAwM2VtdDc2LCBpKVxuIFx0XHRuYXBpX2Rpc2FibGUoXHUwMDI2ZGV2LVx1MDAzZW10NzYubmFwaVtpXSk7XG4gXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2cG0tXHUwMDNlcHNfd29yayk7XG5AQCAtNzI1LDcgKzcyNiw2IEBAIHN0YXRpYyB2b2lkIG10NzkyNV9wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuIFx0c3RydWN0IG10NzZfZGV2ICptZGV2ID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpO1xuIFx0c3RydWN0IG10NzkyeF9kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihtZGV2LCBzdHJ1Y3QgbXQ3OTJ4X2RldiwgbXQ3Nik7XG4gXG4tXHRzZXRfYml0KE1UNzZfUkVNT1ZFRCwgXHUwMDI2bWRldi1cdTAwM2VwaHkuc3RhdGUpO1xuIFx0bXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZShkZXYpO1xuIFx0ZGV2bV9mcmVlX2lycShcdTAwMjZwZGV2LVx1MDAzZWRldiwgcGRldi1cdTAwM2VpcnEsIGRldik7XG4gXHRtdDc2X2ZyZWVfZGV2aWNlKFx1MDAyNmRldi1cdTAwM2VtdDc2KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X21hYy5jXG5pbmRleCA4ODhlNWE1MDU2NzMxLi4xZTIwYjMzM2NjNjEyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfbWFjLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X21hYy5jXG5AQCAtMjc4LDYgKzI3OCw5IEBAIHZvaWQgbXQ3OTJ4X3Jlc2V0KHN0cnVjdCBtdDc2X2RldiAqbWRldilcbiBcdGlmIChwbS1cdTAwM2VzdXNwZW5kZWQpXG4gXHRcdHJldHVybjtcbiBcbitcdGlmICh0ZXN0X2JpdChNVDc2X1JFTU9WRUQsIFx1MDAyNm1kZXYtXHUwMDNlcGh5LnN0YXRlKSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0cXVldWVfd29yayhkZXYtXHUwMDNlbXQ3Ni53cSwgXHUwMDI2ZGV2LVx1MDAzZXJlc2V0X3dvcmspO1xuIH1cbiBFWFBPUlRfU1lNQk9MX0dQTChtdDc5MnhfcmVzZXQpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6MzA6MjguOTU4MDEyMDRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTk5ODAxOTAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlBhdGNoIEFuYWx5c2lzOiBNZWRpYVRlayBNVDc5MjUgUENJZSBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIE1lZGlhVGVrIE1UNzkyNSBQQ0llIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGluIGBtdDc5MjUvcGNpLmNgIGFuZCBgbXQ3OTJ4X21hYy5jYC4gVGhlIGNvcmUgY2hhbmdlcyBzZWVtIHRvIGJlIGluIHRoZSBkZXZpY2UgdW5yZWdpc3RyYXRpb24gKGBtdDc5MjVlX3VucmVnaXN0ZXJfZGV2aWNlYCksIFBDSSByZW1vdmFsIChgbXQ3OTI1X3BjaV9yZW1vdmVgKSwgYW5kIGEgbmV3IGNoZWNrIGZvciBgTVQ3Nl9SRU1PVkVEYCBpbiBgbXQ3OTJ4X3Jlc2V0YC4gVGhlIHByb21wdCBzcGVjaWZpZXMgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgIGlmIGl0IG1vZGlmaWVzIGNvZGUgcmVsYXRlZCB0byB2ZW5kb3Itc3BlY2lmaWMgUENJZSBoYXJkd2FyZSB0aGF0IGNhbid0IGJlIGVtdWxhdGVkLlxuXG5NeSBmaXJzdCB0aG91Z2h0IGlzLCB0aGlzIGlzIGEgUENJZSB3aXJlbGVzcyBjYXJkLCB3aGljaCB0eXBpY2FsbHkgKmlzbid0KiBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0J3MgYSBodWdlIHJlZCBmbGFnLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYG10NzkyNV9wY2lfcmVtb3ZlYCwgd2hpY2ggaXMgdGhlIGAucmVtb3ZlYCBjYWxsYmFjay4gVGhpcyBjYWxsYmFjayBpcyBvbmx5IGV4ZWN1dGVkIGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuIFRoZSBwcm9tcHQgaXMgcXVpdGUgc3BlY2lmaWMgYWJvdXQgKnRob3NlKiBiZWluZyBleGNsdWRlZC4gVGhlbiB0aGVyZSdzIHRoZSBtb2RpZmljYXRpb24gb2YgYG10NzkyeF9yZXNldGAuIEkgbmVlZCB0byB0aGluayBhYm91dCBob3cgdGhhdCBnZXRzIGNhbGxlZC5cblxuSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBNVDc5MjUgc3BlY2lmaWNhbGx5IGlzICpub3QqIGVtdWxhdGVkLiBVc3VhbGx5LCB0aGVzZSBzb3J0cyBvZiBjYXJkcyByZXF1aXJlIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSB0byBmdW5jdGlvbi4gSeKAmW0gcHJldHR5IHN1cmUgdGhlIGBtdDc2YCBkcml2ZXIgaXMgc3BlY2lmaWMgdG8gTWVkaWFUZWsgd2lyZWxlc3MgY2FyZHMuIENvdWxkIHRoaXMgYWxzbyBiZSBhIFVTQiBkZXZpY2U/IFRoZSBwYXRjaCBmb2N1c2VzIG9uIGBwY2kuY2AsIHNvIEknZCBzYXkgdGhlIGFuc3dlciBpcyBuby4gSeKAmW0gYWxzbyBzZWVpbmcgdGhhdCBgbXQ3OTJ4X3Jlc2V0YCBpcyBleHBvcnRlZCwgc28gaXQncyBwcm9iYWJseSBjYWxsZWQgZHVyaW5nIHJlc2V0IHNpdHVhdGlvbnMsIGJ1dCB0aGUgcHJpbWFyeSBmb2N1cyBpcyBzdGlsbCBvbiBwaHlzaWNhbCBQQ0kgZGV2aWNlIGZ1bmN0aW9uYWxpdHkuXG5cblRoaXMgaXMgYWxsIHBvaW50aW5nIHRvIGEgcGF0Y2ggdGhhdCBpcyAqbm90KiBmdXp6YWJsZSBhY2NvcmRpbmcgdG8gdGhlIGd1aWRlbGluZXMuIFRoZSBjaGFuZ2VzIGFyZSBsYXJnZWx5IGNvbmZpbmVkIHRvIHRoZSBQQ0llLXNwZWNpZmljIGRyaXZlciwgaW5jbHVkaW5nIHRoZSBgLnJlbW92ZWAgY2FsbGJhY2ssIGFuZCB0b3VjaCBoYXJkd2FyZSB0aGF0J3Mgbm90IGVhc2lseSBlbXVsYXRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY2MywiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjMwOjM3Ljk1NzgxNzUzMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njc5MDg5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MnhfcmVzZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jPTIyNz1zdGF0aWMgaW50IG10NzkyMV9jaGlwX3Jlc2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9kZWJ1Z2ZzLmMtMjM0LVxcdFxcdC8qIFJlc2V0IHdpZmlzeXMgZGlyZWN0bHkuICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jOjIzNTpcXHRcXHRtdDc5MnhfcmVzZXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvZGVidWdmcy5jLTIzNi1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jPTcxNT12b2lkIG10NzkyMV9jb3JlZHVtcF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc1OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWMuYzo3NTk6XFx0bXQ3OTJ4X3Jlc2V0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21hYy5jLTc2MC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYz0xNT1pbnQgbXQ3OTIxX21jdV9wYXJzZV9yZXNwb25zZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGludCBjbWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tY3UuYy0yNC1cXHRcXHRcXHRjbWQsIHNlcSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWN1LmM6MjU6XFx0XFx0bXQ3OTJ4X3Jlc2V0KG1kZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21jdS5jLTI2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpLmM9NDY4PXN0YXRpYyBpbnQgbXQ3OTIxX3BjaV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldmljZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaS5jLTU0NS1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2kuYzo1NDY6XFx0XFx0bXQ3OTJ4X3Jlc2V0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaS5jLTU0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaS5jPTU1MT1zdGF0aWMgaW50IG10NzkyMV9wY2lfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldmljZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaS5jLTYwNC1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9wY2kuYzo2MDU6XFx0XFx0bXQ3OTJ4X3Jlc2V0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaS5jLTYwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaS5jPTY4Nj1zdGF0aWMgcGNpX2Vyc19yZXN1bHRfdCBtdDc5MjFfc2xvdF9yZXNldChzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaS5jLTcwMS1cXHQvKiBBbHNvIHRyeSBkbyB0aGUgdmVuZG9yIHJlc2V0IHRvIGxldCBpdCBtb3JlIGNsZWFyLiAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3BjaS5jOjcwMjpcXHRtdDc5MnhfcmVzZXQobWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvcGNpLmMtNzAzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jPTIwOT1zdGF0aWMgaW50IG10NzkyMXNfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpfX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYy0yNzktXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jOjI4MDpcXHRcXHRtdDc5MnhfcmVzZXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTI4MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYz0yODU9c3RhdGljIGludCBtdDc5MjFzX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpfX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3NkaW8uYy0zMTMtXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jOjMxNDpcXHRcXHRtdDc5MnhfcmVzZXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvc2Rpby5jLTMxNS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jPTI2ND1zdGF0aWMgaW50IG10NzkyMXVfc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwgcG1fbWVzc2FnZV90IHN0YXRlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMjg1LVxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL3VzYi5jOjI4NjpcXHRcXHRtdDc5MnhfcmVzZXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMjg3LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM9MjkxPXN0YXRpYyBpbnQgbXQ3OTIxdV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zMjctXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmM6MzI4OlxcdFxcdG10NzkyeF9yZXNldChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zMjktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM9MjY2PXN0YXRpYyBpbnQgbXQ3OTI1X2NoaXBfcmVzZXQodm9pZCAqZGF0YSwgdTY0IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L2RlYnVnZnMuYy0yNzMtXFx0XFx0LyogUmVzZXQgd2lmaXN5cyBkaXJlY3RseS4gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmM6Mjc0OlxcdFxcdG10NzkyeF9yZXNldChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9kZWJ1Z2ZzLmMtMjc1LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM9MTU3Mj12b2lkIG10NzkyNV9jb3JlZHVtcF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21hYy5jLTE2MTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmM6MTYxNjpcXHRtdDc5MnhfcmVzZXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFjLmMtMTYxNy19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYz0yMj1pbnQgbXQ3OTI1X21jdV9wYXJzZV9yZXNwb25zZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGludCBjbWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tY3UuYy0zMC1cXHRcXHRkZXZfZXJyKG1kZXYtXFx1MDAzZWRldiwgXFxcIk1lc3NhZ2UgJTA4eCAoc2VxICVkKSB0aW1lb3V0XFxcXG5cXFwiLCBjbWQsIHNlcSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWN1LmM6MzE6XFx0XFx0bXQ3OTJ4X3Jlc2V0KG1kZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21jdS5jLTMyLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmM9NzM1PXN0YXRpYyBpbnQgbXQ3OTI1X3BjaV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldmljZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTgxOC1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9wY2kuYzo4MTk6XFx0XFx0bXQ3OTJ4X3Jlc2V0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTgyMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jPTgyND1zdGF0aWMgaW50IF9tdDc5MjVfcGNpX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UsIGJvb2wgcmVzdG9yZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jLTg4NC1cXHRpZiAoZXJyIFxcdTAwM2MgMCB8fCByZXN0b3JlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3BjaS5jOjg4NTpcXHRcXHRtdDc5MnhfcmVzZXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvcGNpLmMtODg2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MjcwPXN0YXRpYyBpbnQgbXQ3OTI1dV9zdXNwZW5kKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmLCBwbV9tZXNzYWdlX3Qgc3RhdGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0yOTctXFx0aWYgKGVyciBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6Mjk4OlxcdFxcdG10NzkyeF9yZXNldChcXHUwMDI2ZGV2LVxcdTAwM2VtdDc2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0yOTktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYz0zMDM9c3RhdGljIGludCBtdDc5MjV1X3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM0NC1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYzozNDU6XFx0XFx0bXQ3OTJ4X3Jlc2V0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM0Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg9NDUyPXZvaWQgbXQ3OTJ4X3BtX3Bvd2VyX3NhdmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg6NDUzOnZvaWQgbXQ3OTJ4X3Jlc2V0KHN0cnVjdCBtdDc2X2RldiAqbWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnguaC00NTQtdm9pZCBtdDc5MnhfdXBkYXRlX2NoYW5uZWwoc3RydWN0IG10NzZfcGh5ICptcGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYz05NzQ9aW50IG10NzkyeF9tY3VfZHJ2X3BtY3RybChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jLTk4OS1cXHRpZiAoZXJyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYzo5OTA6XFx0XFx0bXQ3OTJ4X3Jlc2V0KFxcdTAwMjZkZXYtXFx1MDAzZW10NzYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X2NvcmUuYy05OTEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmM9OTk2PWludCBtdDc5MnhfbWN1X2Z3X3BtY3RybChzdHJ1Y3QgbXQ3OTJ4X2RldiAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jLTEwMTEtXFx0aWYgKGVycilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9jb3JlLmM6MTAxMjpcXHRcXHRtdDc5MnhfcmVzZXQoXFx1MDAyNmRldi1cXHUwMDNlbXQ3Nik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfY29yZS5jLTEwMTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuYz0yNjU9RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTJ4X3VwZGF0ZV9jaGFubmVsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuYy0yNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfbWFjLmM6MjY3OnZvaWQgbXQ3OTJ4X3Jlc2V0KHN0cnVjdCBtdDc2X2RldiAqbWRldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuYy0yNjgte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfbWFjLmMtMjg1LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuYzoyODY6RVhQT1JUX1NZTUJPTF9HUEwobXQ3OTJ4X3Jlc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeF9tYWMuYy0yODctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjMwOjM4LjAwNDYxNTA3OVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1MTkyMTMyOTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIHRoZSBNVDc5MjUgUENJIERyaXZlciBQYXRjaCBmb3IgRnV6emluZyBFbGlnaWJpbGl0eSoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhlIHBhdGNoIGlzIHRvdWNoaW5nIGBtdDc5MjUvcGNpLmNgIGFuZCBgbXQ3OTJ4X21hYy5jYC4gIEltbWVkaWF0ZWx5LCBteSByYWRhciBnb2VzIHVwIGJlY2F1c2Ugb2YgdGhlIC5yZW1vdmUgY2FsbGJhY2sgbW9kaWZpY2F0aW9ucywgZXNwZWNpYWxseSB3aXRoIHRoZSBwcm9tcHQncyBleGNsdXNpb24gY3JpdGVyaWEgaW4gbWluZC4gIEl0J3MgY2hhbmdpbmcgYG10NzkyNWVfdW5yZWdpc3Rlcl9kZXZpY2VgIGFuZCBgbXQ3OTI1X3BjaV9yZW1vdmVgLCB0aGUgbGF0dGVyIGJlaW5nIHRoZSBQQ0kgZHJpdmVyJ3MgYC5yZW1vdmVgIGZ1bmN0aW9uLiBUaGlzIHJpbmdzIHRoZSBhbGFybSBiZWxscyDigJMgdGhpcyBpcyBkZWZpbml0ZWx5IFBDSSBob3QtdW5wbHVnIHRlcnJpdG9yeS5cblxuVGhlIHBhdGNoIG1vdmVzIHRoZSBgc2V0X2JpdChNVDc2X1JFTU9WRUQsIFx1MDAyNmRldi1cdTAwM2VtcGh5LnN0YXRlKWAgY2FsbCAqaW50byogYG10NzkyNWVfdW5yZWdpc3Rlcl9kZXZpY2VgIGFuZCAqb3V0IG9mKiBgbXQ3OTI1X3BjaV9yZW1vdmVgLiBUaGF0IGxvb2tzIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgYXR0ZW1wdCB0byBmaXggYSByYWNlIGNvbmRpdGlvbiDigJMgdGhlIGNvZGUgaXMgYmVpbmcgdXBkYXRlZCB0byBhdm9pZCBhIHNjZW5hcmlvIHdoZXJlIHRoZSByZXNldCB3b3JrIGlzIHF1ZXVlZCAqYWZ0ZXIqIHRoZSBkZXZpY2UgcmVtb3ZhbCBoYXMgYmVndW4sIHdoaWNoIGNvdWxkIGxlYWQgdG8gcmVzb3VyY2UgbGVha3MsIGRvdWJsZS1mcmVlcywgb3Igb3RoZXIgYmFkbmVzcy4gSXQgaXMgZGVmaW5pdGVseSBmaXhpbmcgYSByYWNlIGNvbmRpdGlvbiwgYnkgcHV0dGluZyB0aGUgYE1UNzZfUkVNT1ZFRGAgY2hlY2sgKmJlZm9yZSogdGhlIHdvcmsgaXMgcXVldWVkLlxuXG5Ob3csIHRoZSBgbXQ3OTJ4X3Jlc2V0YCBtb2RpZmljYXRpb24gaW4gYG10NzkyeF9tYWMuY2AgY29tcGxpY2F0ZXMgdGhpbmdzIGEgYml0LiBJdCBhZGRzIGEgY2hlY2sgZm9yIGBNVDc2X1JFTU9WRURgIGJlZm9yZSBxdWV1aW5nIHRoZSBgcmVzZXRfd29ya2AuIFRoaXMgaXMgKnJlbGF0ZWQqIHRvIHRoZSBQQ0kgcmVtb3ZhbC4gIGBtdDc5MnhfcmVzZXRgIGlzIGEgc2hhcmVkIGZ1bmN0aW9uIHVzZWQgYnkgYm90aCBQQ0kgYW5kIFVTQiBkcml2ZXJzLiBBbHRob3VnaCBpdCdzIG5vdCBhICp0ZWFyZG93biogY2FsbGJhY2sgaXRzZWxmLCBpdCdzIGNsZWFybHkgYmVpbmcgbW9kaWZpZWQgdG8gKnN1cHBvcnQqIHRoZSB0ZWFyZG93biBwcm9jZXNzIGZvciBQQ0kuXG5cblRoZSBjb3JlIHF1ZXN0aW9uIG5vdyBpcywgZG9lcyB0aGlzIGNvbnN0aXR1dGUgYSAqdGVhcmRvd24gY2FsbGJhY2sqIG1vZGlmaWNhdGlvbiBhY2NvcmRpbmcgdG8gdGhlIHByb21wdCdzIGRlZmluaXRpb24/ICBUaGUgaW50ZW50IG9mIHRoZSBwcm9tcHQgaXMgdG8gZXhjbHVkZSBtb2RpZmljYXRpb25zIHRoYXQgYXJlICpzb2xlbHkqIGludm9sdmVkIGluIHRoZSBkcml2ZXIgcmVtb3ZhbC9zaHV0ZG93biBzZXF1ZW5jZS4gIFdoaWxlIGBtdDc5MnhfcmVzZXRgIGlzbid0ICpkaXJlY3RseSogYSB0ZWFyZG93biBmdW5jdGlvbiwgdGhlIGNoYW5nZSBpcyBlbnRpcmVseSBjb25kaXRpb25hbCBvbiB0aGUgZGV2aWNlIGJlaW5nIHJlbW92ZWQsIGFuZCBleGlzdHMgKmJlY2F1c2UqIG9mIHRoZSByZW1vdmFsIHByb2Nlc3MuXG5cblRoZSBwcm9tcHQgZXhwbGljaXRseSBzYXlzIHRvIGV4Y2x1ZGUgdGhpcyB0eXBlIG9mIGNoYW5nZSwgZXZlbiBpZiBpdCBpcyBub3QgYSBkaXJlY3QgdGVhcmRvd24gZnVuY3Rpb24sIGJlY2F1c2UgYE1UNzZfUkVNT1ZFRGAgaXMgc2V0IGluIHRoZSBQQ0kgZHJpdmVyLCBhbmQgdGhlcmVmb3JlIG9ubHkgaW1wYWN0cyB0aGUgUENJIGRyaXZlci4gIFNpbmNlIGBtdDc5MjVgIGlzIGEgUENJZSBjYXJkLCBhIGZ1enppbmcgY2FtcGFpZ24gbWF5IG5vdCBiZSBwb3NzaWJsZSwgYXMgUUVNVSBkb2VzIG5vdCBlbXVsYXRlIFBDSWUuXG5cbkhvd2V2ZXIsIHRoZSBxdWVzdGlvbiBpcyBub3c6IGRvZXMgdGhlIHNhbWUgaXNzdWUgZXhpc3QgaW4gdGhlIFVTQiBkcml2ZXIgYXMgd2VsbD8gVGhlIFVTQiBkcml2ZXIgdXNlcyB0aGUgc2FtZSBgbXQ3OTJ4X3Jlc2V0YCBmdW5jdGlvbi4gSWYgdGhlIFVTQiBkcml2ZXIgaXMgYWZmZWN0ZWQsIHRoZW4gdGhpcyBwYXRjaCAqY291bGQqIGJlIHdvcnRoIGZ1enppbmcsIGFzIGl0IGNhbiBiZSBmdXp6ZWQgdXNpbmcgVVNCIGRpc2Nvbm5lY3Qgb3Igc3lzZnMgdW5iaW5kLCBidXQgdGhlIGBNVDc2X1JFTU9WRURgIHNldCBpcyAqbm90KiBpbiB0aGUgVVNCIGRyaXZlci4gVGhlcmUgYXJlIGRpZmZlcmVudCBgdW5yZWdpc3Rlcl9kZXZpY2VgIGZ1bmN0aW9ucyBpbiBlYWNoIGRyaXZlciwgc28gYSBjaGFuZ2Ugd291bGQgYmUgbmVlZGVkIGluIGJvdGggdG8gZnVsbHkgZXhjbHVkZSBpdC5cblxuU28sIGluIGNvbmNsdXNpb24sIGdpdmVuIHRoZSBwcm9tcHQncyBleGNsdXNpb24gY3JpdGVyaWEgYW5kIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZXMsIEknZCBsZWFuIHRvd2FyZHMgV29ydGhGdXp6aW5nPWZhbHNlLiAgVGhlICpwcmltYXJ5KiBmb2N1cyBvZiB0aGUgcGF0Y2ggaXMgZGV2aWNlIHJlbW92YWwsIGV2ZW4gaWYgdGhlIG1vZGlmaWVkIGZ1bmN0aW9uIGlzIG5vdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzI4MiwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6MzA6NTMuMTk2NzUxMzIzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MDk3MjY5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtdDc5MjV1X3VucmVnaXN0ZXJfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6MzA6NTMuMjQxODU3MTExWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY0Njk1MDUwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGVidWdnaW5nIHRoZSBVU0IgRGlzY29ubmVjdCBJc3N1ZSoqXG5cbkFscmlnaHQsIHNvIHdlJ3ZlIGdvdCBhIFVTQiBkaXNjb25uZWN0IGlzc3VlLCBhbmQgbXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiB0aGUgZHJpdmVyIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyB0aG9zZSBldmVudHMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGNoZWNrIGBtdDc5MjVfdXNiX2Rpc2Nvbm5lY3RgIG9yIHNvbWV0aGluZyBjbG9zZWx5IHJlc2VtYmxpbmcgdGhhdCBuYW1lLiBUaGlzIGFzc3VtZXMsIG9mIGNvdXJzZSwgdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggYSBNZWRpYVRlayBjaGlwc2V0IOKAkyB3aGljaCBJJ20gaW5mZXJyaW5nIGZyb20gdGhlIGBtdDc5MjVgIHByZWZpeC4gSSdkIGV4cGVjdCB0aGUgZGlzY29ubmVjdCBwcm9jZXNzIHRvIGludm9sdmUgY2xlYW51cCBvZiByZXNvdXJjZXMsIHNpZ25hbGluZyB0byB0aGUgaG9zdCwgYW5kIHBvc3NpYmx5IHNvbWUgaGFyZHdhcmUtbGV2ZWwgY29uZmlndXJhdGlvbiBjaGFuZ2VzLiBUaGUgZ29hbCBoZXJlIGlzIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBkaXNjb25uZWN0IGlzIGluaXRpYXRlZCBjb3JyZWN0bHkgYnkgdGhlIGRyaXZlciwgb3IgaWYgaXQncyBwb3RlbnRpYWxseSB0cmlnZ2VyZWQgcHJlbWF0dXJlbHkgYnkgYW4gZXh0ZXJuYWwgZmFjdG9yLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGUgc3BlY2lmaWMgZHJpdmVyIG5hbWluZyBjb252ZW50aW9ucyBpbiB0aGlzIGtlcm5lbCB2ZXJzaW9uLCBidXQgSSB0aGluayB0aGF0J3MgdGhlIHJpZ2h0IHN0YXJ0aW5nIHBvaW50IGZvciBkaWFnbm9zaW5nIHdoYXQgaXMgbGlrZWx5IGEgZHJpdmVyIG9yIFVTQiBzdGFjayBpbnRlcmFjdGlvbiBpc3N1ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6OTQ4MiwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjMwOjU2Ljg4ODgwOTMzNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzAzNjM4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkaXNjb25uZWN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jPTM1NT1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgbXQ3OTI1dV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS91c2IuYy0zNTgtXFx0LnByb2JlXFx0XFx0PSBtdDc5MjV1X3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jOjM1OTpcXHQuZGlzY29ubmVjdFxcdD0gbXQ3OTJ4dV9kaXNjb25uZWN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM2MC0jaWZkZWYgQ09ORklHX1BNXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA4OjMwOjU2LjkzMTg1MDQ1M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NDU4NTEwODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgYG10NzkyeHVfZGlzY29ubmVjdGAgRnVuY3Rpb24gQ2FsbCoqXG5cbkFscmlnaHQsIHNvIEknbSBzZWVpbmcgYG10NzkyeHVfZGlzY29ubmVjdGAgY2FsbGVkIGhlcmUuIE15IGZpcnN0IGluc3RpbmN0LCBhcyBhbHdheXMsIGlzIHRvIHVuZGVyc3RhbmQgaXRzIHNjb3BlIGFuZCBwdXJwb3NlLiBUaW1lIHRvIHRyYWNlIGl0cyBkZWZpbml0aW9uLiBJIG5lZWQgdG8gcXVpY2tseSBlc3RhYmxpc2ggd2hlcmUgaXQncyBkZWNsYXJlZCBhbmQsIGlkZWFsbHksIHNlZSBpdHMgaW1wbGVtZW50YXRpb24gdG8gZ2V0IGEgc2Vuc2Ugb2Ygd2hhdCdzIGhhcHBlbmluZy4gSSdtIGxvb2tpbmcgZm9yIHRoZSBlc3NlbnRpYWwgZnVuY3Rpb25hbGl0eSDigJMgd2hhdCByZXNvdXJjZXMgaXMgaXQgcmVsZWFzaW5nLCB3aGF0IHN0YXRlIGlzIGl0IGNoYW5naW5nLCBhbmQgd2hhdCdzIHRoZSBicm9hZGVyIGNvbnRleHQgd2l0aGluIHRoZSBkcml2ZXIgd2hlcmUgdGhpcyBkaXNjb25uZWN0aW9uIGlzIHRyaWdnZXJlZD8gSXMgdGhpcyBhIGNsZWFuIHNodXRkb3duLCBhbiBlcnJvciByZWNvdmVyeSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEEgcXVpY2sgY29kZSBkaXZlIGlzIGluIG9yZGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5OTI1LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6MzE6MDAuNDc3NzAzNzVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNzMxOTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm10NzkyeHVfZGlzY29ubmVjdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYz0zMzg9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIG10NzkyMXVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvdXNiLmMtMzQxLVxcdC5wcm9iZVxcdFxcdD0gbXQ3OTIxdV9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYzozNDI6XFx0LmRpc2Nvbm5lY3RcXHQ9IG10NzkyeHVfZGlzY29ubmVjdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS91c2IuYy0zNDMtI2lmZGVmIENPTkZJR19QTVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM9MzU1PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBtdDc5MjV1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L3VzYi5jLTM1OC1cXHQucHJvYmVcXHRcXHQ9IG10NzkyNXVfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmM6MzU5OlxcdC5kaXNjb25uZWN0XFx0PSBtdDc5Mnh1X2Rpc2Nvbm5lY3QsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvdXNiLmMtMzYwLSNpZmRlZiBDT05GSUdfUE1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4Lmg9NjExPXZvaWQgbXQ3OTJ4dV9jb3B5KHN0cnVjdCBtdDc2X2RldiAqZGV2LCB1MzIgb2Zmc2V0LCBjb25zdCB2b2lkICpkYXRhLCBpbnQgbGVuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyeC5oOjYxMjp2b2lkIG10NzkyeHVfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4LmgtNjEzLXZvaWQgbXQ3OTJ4dV9zdG9wKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBib29sIHN1c3BlbmQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfdXNiLmM9NDk1PUVYUE9SVF9TWU1CT0xfR1BMKG10NzkyeHVfc3RvcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfdXNiLmMtNDk2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X3VzYi5jOjQ5Nzp2b2lkIG10NzkyeHVfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqdXNiX2ludGYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfdXNiLmMtNDk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTJ4X3VzYi5jLTUyNi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfdXNiLmM6NTI3OkVYUE9SVF9TWU1CT0xfR1BMKG10NzkyeHVfZGlzY29ubmVjdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MnhfdXNiLmMtNTI4LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwODozMTowMC41MjE0NDM0NzhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ0OTcxNTY5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aEZ1enppbmcgRGVjaXNpb246IE5vdCBBcHBsaWNhYmxlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHNjYW4gc2hvd3MgdGhpcyBwYXRjaCBpcyBmb2N1c2VkIHNvbGVseSBvbiBgbXQ3OTI1L3BjaS5jYCBhbmQgYG10NzkyeF9tYWMuY2AuIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgbGllcyB3aXRoaW4gdGhlIGBtdDc5MjVfcGNpX3JlbW92ZWAgZnVuY3Rpb24gYW5kIHRoZSBgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZWAgY2FsbCB3aXRoaW4gYG10NzkyNS9wY2kuY2AuIFRoaXMgaW1tZWRpYXRlbHkgc2NyZWFtcyBcIlBDSSBkcml2ZXIgYC5yZW1vdmVgIGNhbGxiYWNrXCIgdG8gbWUsIHdoaWNoIGlzIGEga2V5IGluZGljYXRvci5cblxuTm93LCBsZXQncyBhcHBseSB0aGUgY3JpdGVyaWEuIFRoZSBwcm9tcHQgaXMgY3J5c3RhbCBjbGVhcjogaWYgdGhlIHBhdGNoIGludm9sdmVzIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzICpyZXF1aXJpbmcgYWN0dWFsIGhhcmR3YXJlKiwgb3IgaWYgaXQgdG91Y2hlcyB0aGUgZHJpdmVyJ3MgYC5yZW1vdmVgLCBgLnNodXRkb3duYCwgb3IgYHBjaV91bnJlZ2lzdGVyX2RyaXZlcmAgdGVhcmRvd24gY2FsbGJhY2tzIChsaWtlIGFuIGBpZ2JfcmVtb3ZlYCksIHRoZW4gYFdvcnRoRnV6emluZ2AgaXMgYGZhbHNlYC5cblxuVGhpcyBwYXRjaCBoaXRzIGJvdGggbmFpbHMgb24gdGhlIGhlYWQuIEZpcnN0LCB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIE1UNzkyNSwgYSB2ZW5kb3Itc3BlY2lmaWMgd2lyZWxlc3MgUENJZSBkcml2ZXIuIEFuZCBzZWNvbmQsIHdlIGFyZSB0YWxraW5nIGFib3V0IGEgZHJpdmVyIGAucmVtb3ZlYCB0ZWFyZG93biBjYWxsYmFjaywgaW4gZmFjdCwgdGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgYWltcyBhdCBwcm92aWRpbmcgbG9naWMgZm9yIHRoaXMgZnVuY3Rpb24uXG5cbkdpdmVuIHRob3NlIHR3byBwb2ludHMsIEknbSBjb25maWRlbnQgaW4gc2F5aW5nIHRoYXQgdGhpcyBwYXRjaCBmYWxscyBzcXVhcmVseSB3aXRoaW4gdGhlIFwibm90IHdvcnRoIGZ1enppbmdcIiBjYXRlZ29yeS4gVGhlIGZvY3VzIGlzIG9uIGRyaXZlciByZW1vdmFsIGFuZCBjbGVhbnVwLCBmdW5jdGlvbnMgdGhhdCBhcmUgdW5saWtlbHkgdG8gYmVuZWZpdCBmcm9tIGdlbmVyaWMgZnV6emluZyB0ZWNobmlxdWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDg4OCwiT3V0cHV0VG9rZW5zIjoxMzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDg6MzE6MDYuOTcxMTYxMzcyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE5NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIC5yZW1vdmUgdGVhcmRvd24gY2FsbGJhY2sgb2YgdGhlIE1lZGlhVGVrIE1UNzkyNSBQQ0llIHdpcmVsZXNzIGRyaXZlciAobXQ3OTI1X3BjaV9yZW1vdmUgYW5kIG10NzkyNWVfdW5yZWdpc3Rlcl9kZXZpY2UpIHRvIGZpeCBhIHJhY2UgY29uZGl0aW9uIHdpdGggcmVzZXRfd29yayBkdXJpbmcgZGV2aWNlIHJlbW92YWwuIEl0IGFsc28gYWRkcyBhIGNoZWNrIGluIG10NzkyeF9yZXNldCB0byBzdXBwb3J0IHRoaXMgdGVhcmRvd24gbG9naWMuIFRoZSBwcm9tcHQgZXhwbGljaXRseSBleGNsdWRlcyBkcml2ZXIgLnJlbW92ZSBjYWxsYmFja3MgYW5kIGNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgLnJlbW92ZSB0ZWFyZG93biBjYWxsYmFjayBvZiB0aGUgTWVkaWFUZWsgTVQ3OTI1IFBDSWUgd2lyZWxlc3MgZHJpdmVyIChtdDc5MjVfcGNpX3JlbW92ZSBhbmQgbXQ3OTI1ZV91bnJlZ2lzdGVyX2RldmljZSkgdG8gZml4IGEgcmFjZSBjb25kaXRpb24gd2l0aCByZXNldF93b3JrIGR1cmluZyBkZXZpY2UgcmVtb3ZhbC4gSXQgYWxzbyBhZGRzIGEgY2hlY2sgaW4gbXQ3OTJ4X3Jlc2V0IHRvIHN1cHBvcnQgdGhpcyB0ZWFyZG93biBsb2dpYy4gVGhlIHByb21wdCBleHBsaWNpdGx5IGV4Y2x1ZGVzIGRyaXZlciAucmVtb3ZlIGNhbGxiYWNrcyBhbmQgY29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowdn2zz[1] Phase: Running StartedAt: 2026-08-05 08:31:18 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdn2zz[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-05 08:31:18 +0000 UTC FinishedAt: 2026-08-05 08:31:24 +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,}