Name: series-workflow6k8g9 Phase: Failed StartedAt: 2026-07-27 00:25:08 +0000 UTC FinishedAt: 2026-07-27 00:46:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6k8g9[0] Phase: Succeeded StartedAt: 2026-07-27 00:25:08 +0000 UTC FinishedAt: 2026-07-27 00:46:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6k8g9[0].run-triage Phase: Succeeded StartedAt: 2026-07-27 00:25:08 +0000 UTC FinishedAt: 2026-07-27 00:46:28 +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+CgkJCTx0ZD4yMDI2LzA3LzI3IDAwOjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgaW4gdGhlIGB3Y24zNnh4YCBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlciBmb3IgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgbW9iaWxlIGNoaXBzZXRzLiBUaGlzIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIFF1YWxjb21tIFNvQyBoYXJkd2FyZSBjb21wb25lbnRzIChXQ05TUykgYW5kIGNvbW11bmljYXRlcyB2aWEgdGhlIFJQTVNHIGJ1cy4gSXQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBhcyBpdCByZWxpZXMgb24gc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMgYW5kIHBhcmVudCBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZC4gVGhlcmVmb3JlLCBpdCBpcyBub3Qgc3VpdGFibGUgZm9yIGZ1enppbmcgaW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwMDo0NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGRlNjg0NDk3MjE2MzI4MGQxOTEwZDU0ZjRlMzRlNDYxMWNhZTIxYmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAwMDo0NToxMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jXG5pbmRleCBjMGI0NzczNDU4MzJiOC4uMzJkZWM0NWRiYjUwZjUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmNcbkBAIC0zMjU0LDYgJiM0MzszMjU0LDExIEBAIGludCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcyhzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldixcbiBcdHN0cnVjdCB3Y24zNnh4X2hhbF9pbmRfbXNnICptc2dfaW5kO1xuIFx0d2NuMzZ4eF9kYmdfZHVtcChXQ04zNlhYX0RCR19TTURfRFVNUCwgXCYjMzQ7U01EIFx1MDAzY1x1MDAzY1x1MDAzYyBcJiMzNDssIGJ1ZiwgbGVuKTtcbiBcbiYjNDM7XHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKm1zZ19oZWFkZXIpKSB7XG4mIzQzO1x0XHR3Y24zNnh4X3dhcm4oXCYjMzQ7Q29ycnVwdGVkIEhBTCBtZXNzYWdlOiBsZW5ndGggJWRcXG5cJiMzNDssIGxlbik7XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0c3dpdGNoIChtc2dfaGVhZGVyLVx1MDAzZW1zZ190eXBlKSB7XG4gXHRjYXNlIFdDTjM2WFhfSEFMX1NUQVJUX1JTUDpcbiBcdGNhc2UgV0NOMzZYWF9IQUxfQ09ORklHX1NUQV9SU1A6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDA6NDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgaW4gdGhlIGB3Y24zNnh4YCBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlciBmb3IgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgbW9iaWxlIGNoaXBzZXRzLiBUaGlzIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIFF1YWxjb21tIFNvQyBoYXJkd2FyZSBjb21wb25lbnRzIChXQ05TUykgYW5kIGNvbW11bmljYXRlcyB2aWEgdGhlIFJQTVNHIGJ1cy4gSXQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBhcyBpdCByZWxpZXMgb24gc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMgYW5kIHBhcmVudCBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZC4gVGhlcmVmb3JlLCBpdCBpcyBub3Qgc3VpdGFibGUgZm9yIGZ1enppbmcgaW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGRlNjg0NDk3MjE2MzI4MGQxOTEwZDU0ZjRlMzRlNDYxMWNhZTIxYmUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAyNyAwMDo0NToxMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmMKaW5kZXggYzBiNDc3MzQ1ODMyYjguLjMyZGVjNDVkYmI1MGY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYwpAQCAtMzI1NCw2ICYjNDM7MzI1NCwxMSBAQCBpbnQgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3Moc3RydWN0IHJwbXNnX2RldmljZSAqcnBkZXYsCiAJc3RydWN0IHdjbjM2eHhfaGFsX2luZF9tc2cgKm1zZ19pbmQ7CiAJd2NuMzZ4eF9kYmdfZHVtcChXQ04zNlhYX0RCR19TTURfRFVNUCwgJiMzNDtTTUQgJmx0OyZsdDsmbHQ7ICYjMzQ7LCBidWYsIGxlbik7CiAKJiM0MzsJaWYgKGxlbiAmbHQ7IHNpemVvZigqbXNnX2hlYWRlcikpIHsKJiM0MzsJCXdjbjM2eHhfd2FybigmIzM0O0NvcnJ1cHRlZCBIQUwgbWVzc2FnZTogbGVuZ3RoICVkXG4mIzM0OywgbGVuKTsKJiM0MzsJCXJldHVybiAwOwomIzQzOwl9CiYjNDM7CiAJc3dpdGNoIChtc2dfaGVhZGVyLSZndDttc2dfdHlwZSkgewogCWNhc2UgV0NOMzZYWF9IQUxfU1RBUlRfUlNQOgogCWNhc2UgV0NOMzZYWF9IQUxfQ09ORklHX1NUQV9SU1A6CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDAwOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNjMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuY2AuIEl0JiMzOTtzIGEgc2ltcGxlIGxlbmd0aCBjaGVjayBhZGRlZCB0byBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgOgoKYGBgYwomIzQzOwlpZiAobGVuICZsdDsgc2l6ZW9mKCptc2dfaGVhZGVyKSkgewomIzQzOwkJd2NuMzZ4eF93YXJuKCYjMzQ7Q29ycnVwdGVkIEhBTCBtZXNzYWdlOiBsZW5ndGggJWRcbiYjMzQ7LCBsZW4pOwomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CX0KYGBgCgpGdW5jdGlvbmFsbHksIGl0JiMzOTtzIGp1c3QgYSBib3VuZHMgY2hlY2ssIHdoaWNoIGlzIGdvb2QgcHJhY3RpY2UuIFRoaXMgaXMgYSB3aXJlbGVzcyBkcml2ZXIgZm9yIHRoZSB3Y24zNnh4LCB3aGljaCBpcyBhIFF1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwIE1BQy9CQi9SYWRpbyBkcml2ZXIuIEl0JiMzOTtzIHVzaW5nIFNNRC9SUE1TRyB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBmaXJtd2FyZS4gTm93LCBteSBtaW5kIGltbWVkaWF0ZWx5IGdvZXMgdG8gd2hldGhlciB0aGlzIGlzIGEgcmVhY2hhYmxlIHRhcmdldCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVS4KClRoZSBxdWVzdGlvbiBiZWNvbWVzLCBpcyB0aGlzIGZ1enphYmxlPyBSUE1TRyBkZXZpY2VzICpjYW4qIHNvbWV0aW1lcyBiZSBmdXp6ZWQgaWYgdGhlcmUmIzM5O3MgYSBtZXNzYWdlIGluamVjdGlvbiBwb2ludCwgYnV0IHRoZXkmIzM5O3JlIHR5cGljYWxseSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIGZvciBRdWFsY29tbSBTb0NzIChTbmFwZHJhZ29uKS4gQnV0IHRoZSBwYXRjaCBpcyBpbiBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgLCB3aGljaCBpcyBhbiBSUE1TRyBjYWxsYmFjaywgd2hpY2ggZG9lcyBtYWtlIGl0IGludGVyZXN0aW5nLiBDYW4gd2UgZnV6eiBSUE1TRyBlbmRwb2ludHMgaW4gc3l6a2FsbGVyPyBTeXprYWxsZXIgKmRvZXMqIGhhdmUgc29tZSBSUE1TRyBzdXBwb3J0LCBvciB3ZSBjb3VsZCBqdXN0IHRyZWF0IHRoaXMgbGlrZSBhbnkgd2lyZWxlc3MgZHJpdmVyIGFuZCBhc3N1bWUgaXQgKm1pZ2h0KiBiZSByZWFjaGFibGUgaWYgdGhlIFJQTVNHIGJ1cyBpcyBtb2NrYWJsZSBvciBpZiBpdCYjMzk7cyBqdXN0IGdlbmVyYWwga2VybmVsIGNvZGUuCgpXYWl0LCB0aGUgcHJvbXB0IHNhaWQgc29tZXRoaW5nIGFib3V0IHRoZSBjb2RlIGJlaW5nIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLCB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gU2luY2UgdGhpcyBpcyBhIHBsYXRmb3JtL1JQTVNHIGRyaXZlciBmb3IgUXVhbGNvbW0gU29DcyBJIHNob3VsZCBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvS2NvbmZpZ2AgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBtZW50aW9uIG9mIGhhcmR3YXJlLCBqdXN0IGluIGNhc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDA6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gICAyOlx0Y29uZmlnIFdDTjM2WFhcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IEhBU19ETUFcbiAgIDU6XHRcdGRlcGVuZHMgb24gUUNPTV9XQ05TU19DVFJMIHx8IFFDT01fV0NOU1NfQ1RSTD1uXG4gICA2Olx0XHRkZXBlbmRzIG9uIFJQTVNHIHx8IFJQTVNHPW5cbiAgIDc6XHRcdGhlbHBcbiAgIDg6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvblxuICAgOTpcdFx0ICBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAgYW5kIFdDTjM2ODAgbW9iaWxlIGNoaXBzZXRzLlxuICAxMDpcdFxuICAxMTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkIHdjbjM2eHguXG4gIDEyOlx0XG4gIDEzOlx0Y29uZmlnIFdDTjM2WFhfREVCVUdGU1xuICAxNDpcdFx0Ym9vbCBcJiMzNDtXQ04zNlhYIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuICAxNTpcdFx0ZGVwZW5kcyBvbiBXQ04zNlhYXG4gIDE2Olx0XHRoZWxwXG4gIDE3Olx0XHQgIEVuYWJsZWQgZGVidWdmcyBzdXBwb3J0XG4gIDE4Olx0XG4gIDE5Olx0XHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDA6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMzMgoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyB0aGF0IFdpcmVsZXNzIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBkcml2ZXIsIGFuZCBpdCYjMzk7cyBlbnRhbmdsZWQgd2l0aCBgTUFDODAyMTFgLCBgSEFTX0RNQWAsIGBRQ09NX1dDTlNTX0NUUkxgLCBhbmQgYFJQTVNHYC4gVGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiBJIGV2ZW4gZ2V0IHRvIHRoaXMgdGhpbmcgd2l0aGluIFFFTVU/IFRoZXNlIHBsYXRmb3JtLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlcnMsIGVzcGVjaWFsbHkgUXVhbGNvbW0gc3R1ZmYsIGFyZSB1c3VhbGx5IGEgbmlnaHRtYXJlLiBUaGV5JiMzOTtyZSB0eXBpY2FsbHkgZGVzaWduZWQgdG8gYmUgdGlnaHRseSBpbnRlZ3JhdGVkIHdpdGggdGhlIGhhcmR3YXJlLiBVbmxlc3MgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyBlbXVsYXRvciBzZXR1cCwgb3IgaXQmIzM5O3MgYSBVU0Igb3IgU0RJTyBkcml2ZXIgSSBjYW4gaW50ZXJhY3Qgd2l0aCB1c2luZyBzb21lIGR1bW15IGRldmljZXMsIGl0JiMzOTtzIGEgbG9uZyBzaG90LgoKV2FpdCBhIHNlY29uZOKApiB3YXNuJiMzOTt0IHRoZXJlIHNvbWV0aGluZyBhYm91dCBSUE1TRyBkZXZpY2VzIGJlaW5nIGNyZWF0ZWQgdGhyb3VnaCBgcnBtc2dfY3RybGAgb3IgYSBzaW1pbGFyIGludGVyZmFjZT8gTWF5YmUgdGhlcmUmIzM5O3MgYSBjaGFuY2UuIEFuZCB3YXNuJiMzOTt0IHN5emthbGxlciBzdGFydGluZyB0byBzdXBwb3J0IGZ1enppbmcgUlBNU0c/IE9yIHdhcyB0aGF0IGp1c3QgdGhlIHN0YW5kYXJkIGRyaXZlciBpdHNlbGY/IE5lZWQgdG8gY2hlY2suCgpBbHJpZ2h0LCBsZXQmIzM5O3MgemVybyBpbiBvbiBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgLiBBaCwgdGhhdCYjMzk7cyB0aGUgY2FsbGJhY2sgKGBjYmApIGZvciB0aGUgcnBtc2cgZHJpdmVyLCBpc24mIzM5O3QgaXQ/IFNvLCBpZiBJIGNhbiB0cmlnZ2VyIGFuIFJQTVNHIGludGVyYWN0aW9uLCBtYXliZSBJIGNhbiBhY3R1YWxseSBnZXQgdG8gdGhpcyB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgY291bGQgYmUgcHJvbWlzaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDAwOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3djbjM2eHhfc21kX3JzcF9wcm9jZXNzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYz0xNTU4PXN0YXRpYyBpbnQgd2NuMzZ4eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xNjA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjE2MDc6XHR3Y24tXHUwMDNlc21kX2NoYW5uZWwgPSBxY29tX3djbnNzX29wZW5fY2hhbm5lbCh3Y25zcywgXCYjMzQ7V0xBTl9DVFJMXCYjMzQ7LCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcywgaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE2MDgtXHRpZiAoSVNfRVJSKHdjbi1cdTAwM2VzbWRfY2hhbm5lbCkpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYz0zMjAyPWludCB3Y24zNnh4X3NtZF9hZGRfYmVhY29uX2ZpbHRlcihzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jLTMyNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYzozMjQ4OmludCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcyhzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jLTMyNDktXHRcdFx0ICAgIHZvaWQgKmJ1ZiwgaW50IGxlbiwgdm9pZCAqcHJpdiwgdTMyIGFkZHIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmg9MTQwPWludCB3Y24zNnh4X3NtZF91cGRhdGVfY2ZnKHN0cnVjdCB3Y24zNnh4ICp3Y24sIHUzMiBjZmdfaWQsIHUzMiB2YWx1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuaC0xNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuaDoxNDI6aW50IHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzKHN0cnVjdCBycG1zZ19kZXZpY2UgKnJwZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmgtMTQzLVx0XHRcdCAgICB2b2lkICpidWYsIGludCBsZW4sIHZvaWQgKnByaXYsIHUzMiBhZGRyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwMDo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzU1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBRRU1VIEVudmlyb25tZW50IGZvciBXQ04zNlhYIERyaXZlciBJbnRlcmFjdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgd2NuMzZ4eF9wcm9iZWAgZnVuY3Rpb24sIHdoaWNoLCBhcyBJIHJlY2FsbCwgaXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgV0NOMzZYWCBkcml2ZXImIzM5O3MgcGxhdGZvcm0gZGV2aWNlIHNldHVwLiBQbGF0Zm9ybSBkZXZpY2VzLCByaWdodCwgdXN1YWxseSBjb21lIHRvIGxpZmUgdGhyb3VnaCBEZXZpY2UgVHJlZSBvciBBQ1BJLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtDYW4gd2UgdHJpZ2dlciB0aGlzIHNwZWNpZmljIGB3Y24zNnh4YCBwcm9iZSB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50PyYjMzQ7IEkgbWVhbiwgdGhhdCYjMzk7cyB0aGUgc2V0dXAgSSYjMzk7bSB3b3JraW5nIHdpdGguIFR5cGljYWxseSwgeW91JiMzOTtkIGJlIGhhcmQtcHJlc3NlZCB0byBqdXN0IGluc3RhbnRpYXRlIGEgcmFuZG9tIHBsYXRmb3JtIGRldmljZSBpbiBRRU1VIHVubGVzcywgcGVyaGFwcywgdGhlcmUmIzM5O3MgYSBjdXN0b20gcHNldWRvLWRldmljZSBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIGZ1enppbmcsIGxpa2Ugd2hhdCBTeXprYWxsZXIgb2Z0ZW4gcHJvdmlkZXMsIG9yIGlmIHRoZSBkZXZpY2UgaXMgYXR0YWNoZWQgdG8gYSBnZW5lcmljIGJ1cyB0aGF0IFFFTVUgbmF0aXZlbHkgZW11bGF0ZXMuIEhtbSwgYnV0IGhhbmcgb24gYSBtaW51dGUuLi4gd2FpdC4uLiBJJiMzOTttIG1pc3Npbmcgc29tZXRoaW5nLCBgd2NuMzZ4eF9wcm9iZWAgaXNuJiMzOTt0IGp1c3QgKmEqIGZ1bmN0aW9uLCBpdCYjMzk7cyBleHBsaWNpdGx5IHJlZ2lzdGVyZWQgYXMgYSBwbGF0Zm9ybSAqZHJpdmVyKi4gVGhhdCBpcyB0aGUgY2x1ZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwMDo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BsYXRmb3JtX2RyaXZlcl9yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDA6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDczNgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGlzIGNvZGU6CgoqKkRpdmluZyBpbnRvIHRoZSBgd2NuMzZ4eF9wcm9iZWAgRnVuY3Rpb24gQ2FsbCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIGB3Y24zNnh4X3Byb2JlYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHRyYWNlIGJhY2sgaXRzIGNhbGwgcGF0aC4gV2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBiZWluZyBpbnZva2VkPyBJcyBpdCB3aXRoaW4gdGhlIFBDSSBkcml2ZXIgaW5pdGlhbGl6YXRpb24sIGEgcGxhdGZvcm0gZGV2aWNlIHJlZ2lzdHJhdGlvbiwgb3Igc29tZXdoZXJlIGVsc2UgZW50aXJlbHk/IEtub3dpbmcgdGhlIGNhbGxlciBpcyBhYnNvbHV0ZWx5IGNydWNpYWwgdG8gZ3Jhc3BpbmcgaXRzIHB1cnBvc2UgYW5kIHRoZSBpbmZvcm1hdGlvbiBpdCYjMzk7cyByZWx5aW5nIG9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgaW5pdGlhdGluZyBjb25kaXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwMDo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3Y24zNnh4X3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYz0xNDcyPXN0YXRpYyBpbnQgd2NuMzZ4eF9wbGF0Zm9ybV9nZXRfcmVzb3VyY2VzKHN0cnVjdCB3Y24zNnh4ICp3Y24sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE1NTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MTU1ODpzdGF0aWMgaW50IHdjbjM2eHhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xNTU5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM9MTY3Nj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB3Y24zNnh4X2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoxNjc3Olx0LnByb2JlID0gd2NuMzZ4eF9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xNjc4LVx0LnJlbW92ZSA9IHdjbjM2eHhfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwMDo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTg0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIHRoaXMgUGxhdGZvcm0gRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGB3Y24zNnh4YCBkcml2ZXIsIGFuZCBpbW1lZGlhdGVseSBteSBleHBlcnQgYnJhaW4gZmxhZ3MgaXQgYXMgYSBwbGF0Zm9ybSBkcml2ZXIuIEkgc2VlIHRoZSBzdGFuZGFyZCBzdHJ1Y3R1cmUgd2l0aCBgcHJvYmVgLCBgcmVtb3ZlYCwgYW5kIHRoZSBkcml2ZXImIzM5O3MgbmFtZSwgJiMzNDt3Y24zNnh4JiMzNDssIGFsb25nIHdpdGggdGhlIE9GIG1hdGNoIHRhYmxlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBwbGF0Zm9ybSBkcml2ZXJzICpjYW4qIGJlIGJvdW5kIHZpYSBzeXNmcyBpZiB3ZSBjYW4gY3JlYXRlIHRoZSBwbGF0Zm9ybSBkZXZpY2UuIEkga25vdyBzeXprYWxsZXIgKmNhbiogY3JlYXRlIHBsYXRmb3JtIGRldmljZXMgYnkgd3JpdGluZyB0byBzb21ldGhpbmcgbGlrZSBgL3N5cy9kZXZpY2VzL3BsYXRmb3JtYCwgb3Igc28gSSB0aGluay4gQnV0IGl0JiMzOTtzIHVzdWFsbHkgbGltaXRlZCB0byBzcGVjaWZpYyBoYXJkd2FyZSBvciBkZXZpY2UgdHJlZSBub2Rlcywgb3IgbWF5YmUgdXNpbmcgYHN5el9kZXZsaW5rX25ldGAsIGFsdGhvdWdoIHRoYXQmIzM5O3Mgbm90IHR5cGljYWxseSByZWxldmFudCBmb3IgcGxhdGZvcm0gZGV2aWNlcyB1bmxlc3MgdGhlcmUmIzM5O3MgYW4gZW11bGF0b3Igc3BlY2lmaWNhbGx5IHNldCB1cC4KCldhaXQgYSBtaW51dGUsIGNhbiBzeXprYWxsZXIgKmFjdHVhbGx5KiBmdXp6IHBsYXRmb3JtIGRyaXZlcnM/IEl0JiMzOTtzIG5vdCBzdHJhaWdodGZvcndhcmQgdG8gaW5zdGFudGlhdGUgYXJiaXRyYXJ5IHBsYXRmb3JtIGRldmljZXMgdW5sZXNzIHRoZXkmIzM5O3JlIGluIHRoZSBkZXZpY2UgdHJlZSBvciB0aGVyZSYjMzk7cyBhIHBzZXVkby1zeXNjYWxsIHRoYXQmIzM5O3Mgc3BlY2lmaWMgdG8gc3l6a2FsbGVyLCBhbmQgdGhlcmUmIzM5O3Mgbm90IGEgbG90IG9mIHRoYXQuCgpIb2xkIG9uLCBJIG5lZWQgdG8gY2hlY2sgdGhlIHByb21wdCEgJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zLi4uIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4uLiYjMzQ7IE9rYXksIHRoaXMgYHdjbjM2eHhgIGlzIGEgUXVhbGNvbW0gQXRoZXJvcyB3aXJlbGVzcyBkcml2ZXIgZm9yIG1vYmlsZSBjaGlwc2V0cyAoV0NOMzY2MC8zNjgwKS4gSSBrbm93IGl0IHJlbGllcyBvbiBgUUNPTV9XQ05TU19DVFJMYCBhbmQgUlBNU0cuIEl0JiMzOTtzICpkZWZpbml0ZWx5KiBhIHBsYXRmb3JtIGRldmljZSBkcml2ZXIuCgpUaGUgbWlsbGlvbi1kb2xsYXIgcXVlc3Rpb246IElzIGl0IHJlYWNoYWJsZSBpbiBRRU1VPyBSUE1TRyBkZXZpY2VzICpjYW4qIHNvbWV0aW1lcyBiZSBjcmVhdGVkLCBidXQgdGhpcyBpcyBhICpwbGF0Zm9ybSogZGV2aWNlIGB3Y24zNnh4YCwgd2hpY2ggbWFrZXMgdGhpbmdzIHRyaWNraWVyLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgbm90IGxpa2UgdGhvc2UgUENJZSBzd2l0Y2hlcyBhbmQgU21hcnROSUNzLiBJJiMzOTttIHRoaW5raW5nIEkgaGF2ZSB0byBjaGVjayBpZiBzeXprYWxsZXIgaGFzIGFueSBwcmVkZWZpbmVkIGRlc2NyaXB0aW9ucyBmb3IgYHdjbjM2eHhgIG9yIGBycG1zZ2AuIE90aGVyd2lzZSwgaXQmIzM5O3MgdmVyeSBsaWtlbHkgSSYjMzk7bGwgaGF2ZSB0byBtYXJrIHRoaXMgYXMgbm90IGltbWVkaWF0ZWx5IGZ1enphYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwMDo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3djbjM2eHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDA6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE1MwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDU0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFN5emthbGxlciBCdWcgUmVwb3J0OiBBIFRob3VnaHQgUHJvY2VzcyoqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHN5emthbGxlciBoYXMgYW55IGhlbHBmdWwgc3l6bGFuZyBkZXNjcmlwdGlvbnMgZm9yIHRoaXMuIExldCYjMzk7cyBzZWUuLi4gdGhlIHByb21wdCBtZW50aW9ucyBhIGB0b29sUmVhZERlc2NyaXB0aW9uYCB0b29sLCBidXQgd2FpdCwgaXQmIzM5O3Mgbm90IGFjdHVhbGx5IGF2YWlsYWJsZS4gVGhhdCYjMzk7cyBhIGJpdCBhbm5veWluZy4gSG93ZXZlciwgSSBrbm93IGB3Y24zNnh4YCBpcyBhIHBsYXRmb3JtIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIGEgUXVhbGNvbW0gU29DIGNvbXBvbmVudC4gVGhlIGNoYWxsZW5nZSBoZXJlIGlzIHRoYXQgaXQmIzM5O3MgcHJvYmFibHkgbm90IGVhc2lseSByZWFjaGFibGUgaW4gc3RhbmRhcmQgUUVNVSBzZXR1cHMsIGVzcGVjaWFsbHkgY29uc2lkZXJpbmcgc3l6a2FsbGVyIHR5cGljYWxseSBydW5zIG9uIHg4Nl82NCBvciBnZW5lcmljIGFybTY0IHZpcnQgYm9hcmRzLiBVbmxlc3MgdGhlcmUmIzM5O3Mgc3BlY2lmaWMgUXVhbGNvbW0gU29DIGVtdWxhdGlvbiwgd2hpY2ggc29tZSBRRU1VIGJ1aWxkcyBtaWdodCBoYXZlLCBidXQgaXNuJiMzOTt0IHRoZSBub3JtLgoKSG9sZCBvbiwgdGhlIGNvbW1pdCBhdXRob3IgaXMgbGlzdGVkIGFzIGBzeXotY2x1c3RlcmAuIEhtbSwgaWYgc3l6a2FsbGVyIGZvdW5kIHRoaXMgYnVnLCBpdCBtZWFucyBzeXprYWxsZXIgKmRpZCogcmVhY2ggaXQhIEJ1dCwgcmVhZGluZyBvbiwgdGhlIGNvbW1pdCBtZXNzYWdlIHNheXMgJiMzNDtzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcmIzM0Oy4gQWgsIGl0IGltcGxpZXMgc3l6a2FsbGVyIGlzICp0ZXN0aW5nKiB0aGlzIHBhdGNoLCBub3QgbmVjZXNzYXJpbHkgdGhhdCBpdCAqZm91bmQqIGEgYnVnLiBTeXprYWxsZXIgbWlnaHQganVzdCBiZSB0ZXN0aW5nIGEgcGF0Y2ggdGhhdCYjMzk7cyB1bmRlciByZXZpZXcsIGJlY2F1c2UgaXQgd2FzIHN1Ym1pdHRlZCB0byBhIG1haWxpbmcgbGlzdCBvciBzaW1pbGFyLiBJdCBkb2VzbiYjMzk7dCBtZWFuIHN5emthbGxlciBjYW4gcmVhY2ggdGhlIGNvZGUuCgpTbywgaG93IGNhbiBJIHRyaWdnZXIgYHdjbjM2eHhgPyBJcyBpdCBldmVuIHBvc3NpYmxlIHRvIGluc3RhbnRpYXRlIGl0PyBJIHJlbWVtYmVyIHBsYXRmb3JtIGRldmljZXMgY2FuIGJlIGNyZWF0ZWQgdXNpbmcgYHBsYXRmb3JtX2RldmljZV9yZWdpc3RlcmAsIGJ1dCBJIGNhbiYjMzk7dCBkbyB0aGF0IGZyb20gdXNlcnNwYWNlLiBJIHZhZ3VlbHkgcmVjYWxsIHRoZXJlJiMzOTtzIGEgd2F5IHRvIGNyZWF0ZSB0aGVtIHZpYSB0aGUgYHBsYXRmb3JtYCBidXMgc3lzZnMsIGJ1dCB5b3UgY2FuJiMzOTt0IGp1c3QgaW5zdGFudGlhdGUgYW55IGFyYml0cmFyeSBkZXZpY2UgdW5sZXNzIGEgZHJpdmVyIGFsbG93cyBpdC4KCkxldCYjMzk7cyBzZWUuLi4gYG1hYzgwMjExX2h3c2ltYD8gTm8sIHRoYXQmIzM5O3MgZm9yIHNpbXVsYXRlZCByYWRpb3MsIGNvbXBsZXRlbHkgaXJyZWxldmFudC4gV2hhdCBhYm91dCBSUE1TRz8gTm93IHdlJiMzOTtyZSB0YWxraW5nLiBSUE1TRyBkZXZpY2VzIGNhbiBiZSBjcmVhdGVkIHRocm91Z2ggYC9kZXYvcnBtc2dfY3RybDBgIHVzaW5nIGBSUE1TR19DUkVBVEVfRVBUX0lPQ1RMYCBvciBgUlBNU0dfQ1JFQVRFX0RFVl9JT0NUTGAuIFRoZSBxdWVzdGlvbiBpcywgaXMgYHdjbjM2eHhgIGFuIFJQTVNHIGRyaXZlcj8gVGhhdCYjMzk7cyB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwMDo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE2NzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTY3MDpcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHdjbjM2eHhfb2ZfbWF0Y2hbXSA9IHtcbjE2NzE6XHRcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtxY29tLHdjbnNzLXdsYW5cJiMzNDsgfSxcbjE2NzI6XHRcdHt9XG4xNjczOlx0fTtcbjE2NzQ6XHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB3Y24zNnh4X29mX21hdGNoKTtcbjE2NzU6XHRcbjE2NzY6XHRzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB3Y24zNnh4X2RyaXZlciA9IHtcbjE2Nzc6XHRcdC5wcm9iZSA9IHdjbjM2eHhfcHJvYmUsXG4xNjc4Olx0XHQucmVtb3ZlID0gd2NuMzZ4eF9yZW1vdmUsXG4xNjc5Olx0XHQuZHJpdmVyID0ge1xuMTY4MDpcdFx0XHQubmFtZSA9IFwmIzM0O3djbjM2eHhcJiMzNDssXG4xNjgxOlx0XHRcdC5vZl9tYXRjaF90YWJsZSA9IHdjbjM2eHhfb2ZfbWF0Y2gsXG4xNjgyOlx0XHR9LFxuMTY4MzpcdH07XG4xNjg0Olx0XG4xNjg1Olx0bW9kdWxlX3BsYXRmb3JtX2RyaXZlcih3Y24zNnh4X2RyaXZlcik7XG4xNjg2Olx0XG4xNjg3Olx0TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwIHdpcmVsZXNzIGRyaXZlclwmIzM0Oyk7XG4xNjg4Olx0TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7RHVhbCBCU0QvR1BMXCYjMzQ7KTtcbjE2ODk6XHRNT0RVTEVfQVVUSE9SKFwmIzM0O0V1Z2VuZSBLcmFzbmlrb3Ygay5ldWdlbmUuZUBnbWFpbC5jb21cJiMzNDspO1xuMTY5MDpcdE1PRFVMRV9GSVJNV0FSRShXTEFOX05WX0ZJTEUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwMDo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTczCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoIEZ1enppbmcgRGVjaXNpb246IFF1YWxjb21tIFdDTlNTIFdMQU4gRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRhcmdldGluZyBhIHBsYXRmb3JtIGRyaXZlciBtYXRjaGluZyBgJiMzNDtxY29tLHdjbnNzLXdsYW4mIzM0O2AuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIHRoaXMgYmUgZXZlbiB0b3VjaGVkIGJ5IHN5emthbGxlcj8gU3l6a2FsbGVyICpjYW4qIHVzZSBkZXZpY2UgdHJlZSBvdmVybGF5cywgYnV0IHRoYXQmIzM5O3Mgbm90IGl0cyB0eXBpY2FsIG1vZGUsIGVzcGVjaWFsbHkgb24geDg2XzY0IHdoZXJlIGl0IHVzdWFsbHkgcnVucywgd2hpY2ggZG9lc24mIzM5O3QgbmF0aXZlbHkgdXNlIE9GIG9mdGVuLCB0aG91Z2ggaXQmIzM5O3MgKnBvc3NpYmxlKiB0byBlbmFibGUuIEkgdGhlbiB0aGluayBhYm91dCBgc3l6X2luaXRfbmV0X3NvY2tldGAgYW5kIHNpbWlsYXIgZnVuY3Rpb25zIGFuZCBpZiB0aGV5IHdvdWxkIGJlIHVzZWZ1bCwgYnV0IHRoZW4gY29uc2lkZXIgaWYgaXQgY2FuIGV2ZW4gcmVhY2ggdmVuZG9yLXNwZWNpZmljIFF1YWxjb21tIGRyaXZlcnMuCgpHZW5lcmFsbHksIEkga25vdyB2ZW5kb3IgZHJpdmVycyBmb3IgYWN0dWFsIGhhcmR3YXJlLCBsaWtlIFBDSWUgY2FyZHMgb3IgU29DLXNwZWNpZmljIGJsb2NrcyBsaWtlIHRoaXMgV0NOU1MsIGFyZSBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIFFFTVUgdW5sZXNzIHdlIGhhdmUgc3BlY2lmaWMgZW11bGF0aW9uLiBOb3csIGRvZXMgUUVNVSBlbXVsYXRlIHRoZSBRdWFsY29tbSBXQ05TUz8gTm8sIGl0IGRvZXNuJiMzOTt0LiBTbywgbXkgZ3V0IHJlYWN0aW9uIGlzLCBpcyB0aGlzIGEgZGVhZCBlbmQ/IFNob3VsZCBJIGp1c3QgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgPwoKVGhlIHByb21wdCBzcGVjaWZpZXMgdG8gcmV0dXJuIGZhbHNlIGlmIHRoZSBwYXRjaCBoaXRzIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbCBlbnZpcm9ubWVudHMsIGxpa2UgaW4gR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgaGFyZHdhcmUgYW5kIGFsc28gbWVudGlvbnMgdmVuZG9yLXNwZWNpZmljIFBDSWUsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4gVGhpcyBgd2NuMzZ4eGAgZHJpdmVyIGlzIFF1YWxjb21tIHNwZWNpZmljIGZvciB0aG9zZSBtb2JpbGUgY2hpcHNldHMsIGFuZCBpdCAqcmVxdWlyZXMqIHRoZSBXQ05TUyBoYXJkd2FyZSwgb3IgYXQgbGVhc3QgdGhlIFJQTVNHIGNoYW5uZWxzIHRvIHRhbGsgdG8gdGhlIFdDTlNTIGZpcm13YXJlLgoKSG9sZCBvbi4uLiBpZiBpdCB1c2VzIFJQTVNHLCBhbmQgUlBNU0cgaXMgZnV6emFibGUuLi4gY291bGQgdGhlcmUgYmUgYSB3YXkgaW4/IE5vdyBJIG5lZWQgdG8gY2hlY2sgaWYgUlBNU0cgZGV2aWNlcyBjYW4gYmUgY3JlYXRlZCBmcm9tIHVzZXJzcGFjZSB0byBiaW5kIHRvIHRoaXMgZHJpdmVyLiBCdXQgbm8sIHRoaXMgZHJpdmVyIGlzIGEgYHBsYXRmb3JtX2RyaXZlcmAsIG5vdCBhbiBgcnBtc2dfZHJpdmVyYC4gSSBrbm93IGl0JiMzOTtzIGNhbGxpbmcgYHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsYCBpbiBpdHMgcHJvYmUgZnVuY3Rpb24uIFRoYXQmIzM5O3MgZ29vZCwgYHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsYCBpcyBleHBvcnRlZCBieSB0aGF0IGBkcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuY2AgZmlsZS4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgUlBNU0cgcGF0aCB0byBkZXRlcm1pbmUgd29ydGhpbmVzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDA6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cWNvbV93Y25zc19vcGVuX2NoYW5uZWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3NvYy9xY29tLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYz0yMDA9c3RhdGljIGludCB3Y25zc19kb3dubG9hZF9udihzdHJ1Y3Qgd2Nuc3NfY3RybCAqd2Nuc3MsIGJvb2wgKmV4cGVjdF9jYmMpXG4tLVxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMtMjc1LS8qKlxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmM6Mjc2OiAqIHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsKCkgLSBvcGVuIGFkZGl0aW9uYWwgU01EIGNoYW5uZWwgdG8gV0NOU1NcbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jLTI3Ny0gKiBAd2Nuc3M6XHR3Y25zcyBoYW5kbGUsIHJldHJpZXZlZCBmcm9tIGRydmRhdGFcbi0tXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYy0yODEtICovXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYzoyODI6c3RydWN0IHJwbXNnX2VuZHBvaW50ICpxY29tX3djbnNzX29wZW5fY2hhbm5lbCh2b2lkICp3Y25zcywgY29uc3QgY2hhciAqbmFtZSwgcnBtc2dfcnhfY2JfdCBjYiwgdm9pZCAqcHJpdilcbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jLTI4My17XG4tLVxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMtMjkyLX1cbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jOjI5MzpFWFBPUlRfU1lNQk9MX0dQTChxY29tX3djbnNzX29wZW5fY2hhbm5lbCk7XG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYy0yOTQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDAwOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5MjAKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSB3Y24zNnh4IERyaXZlciBhbmQgUUVNVSBDb21wYXRpYmlsaXR5KioKCk9rYXksIHNvIHRoZSBgd2NuMzZ4eGAgZHJpdmVyIGlzIGEgcGxhdGZvcm0gZHJpdmVyLiBUaGF0IG1lYW5zIGl0JiMzOTtzIGRlc2lnbmVkIHRvIGJlIHByb2JlZCBieSBhIHBsYXRmb3JtIGJ1cywgdHlwaWNhbGx5IHRocm91Z2ggRGV2aWNlIFRyZWUsIHJpZ2h0PyBUaGUgcHJvYmUgcm91dGluZSBpcyBnb2luZyB0byBleHBlY3QgdG8gZ2V0IGl0cyBgd2Nuc3NgIGhhbmRsZSBmcm9tIHRoZSBwYXJlbnQgZGV2aWNlIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBhbmQgdGhlbiBpdCYjMzk7bGwgZ28gYWhlYWQgYW5kIG9wZW4gYW4gUlBNU0cgY2hhbm5lbC4gU2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYXJjaGl0ZWN0dXJhbGx5LgoKQnV0IGhlcmUmIzM5O3MgdGhlIGtpY2tlcjogaXQmIzM5O3MgbG9va2luZyBmb3IgYSAqc3BlY2lmaWMqIHBsYXRmb3JtIGRldmljZSDigJMgYSBgJiMzNDtxY29tLHdjbnNzLXdsYW4mIzM0O2AgZGV2aWNlLiBBbmQgdGhhdCBkZXZpY2UgaXMgYSAqY2hpbGQqIG9mIHRoZSBXQ05TUyBibG9jay4gVGhpcyBpbW1lZGlhdGVseSBzY3JlYW1zICYjMzQ7UXVhbGNvbW0gU29DIHNwZWNpZmljJiMzNDsgdG8gbWUuCgpUaGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIEkgZXZlbiB0b3VjaCB0aGlzIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudD8gR2l2ZW4gdGhhdCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIFF1YWxjb21tIFdDTlNTIGJsb2NrLCB0aGUgYW5zd2VyIGlzIGEgcmVzb3VuZGluZyBuby4gRXZlbiBpZiBJIGdvdCBjbGV2ZXIgYW5kIHRyaWVkIHRvIGNyZWF0ZSB0aGUgcGxhdGZvcm0gZGV2aWNlIG1hbnVhbGx5IHZpYSBzb21lIHN5c2ZzIGhhY2ssIHRoZSBwcm9iZSByb3V0aW5lIHdvdWxkIGZhaWwgYmVjYXVzZSBpdCYjMzk7cyBnb2luZyB0byBuZWVkIHRoYXQgYHdjbnNzYCBoYW5kbGUgYW5kIHRoZSBSUE1TRyBidXMgdG8gYmUgKnByZXNlbnQqIGFuZCAqZnVuY3Rpb25hbCouIEFuZCB3aXRob3V0IHRoZSBXQ05TUyBibG9jayBlbXVsYXRpb24sIHRoYXQmIzM5O3MganVzdCBub3QgZ29pbmcgdG8gaGFwcGVuLgoKQWxyaWdodCwgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciwgbW9yZSBmdW5kYW1lbnRhbCBpc3N1ZXMgaW4gdGhlIHByb2JlIHNlcXVlbmNlLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgYHdjbjM2eHhfcHJvYmVgIGZ1bmN0aW9uIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIGVhcmx5IGV4aXQgcG9pbnRzIHRoYXQgd291bGQgcXVpY2tseSBjb25maXJtIG15IHN1c3BpY2lvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDA6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTU4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE1NTg6XHRzdGF0aWMgaW50IHdjbjM2eHhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbjE1NTk6XHR7XG4xNTYwOlx0XHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodztcbjE1NjE6XHRcdHN0cnVjdCB3Y24zNnh4ICp3Y247XG4xNTYyOlx0XHR2b2lkICp3Y25zcztcbjE1NjM6XHRcdGludCByZXQ7XG4xNTY0Olx0XHRjb25zdCB1OCAqYWRkcjtcbjE1NjU6XHRcdGludCBuX2NoYW5uZWxzO1xuMTU2NjpcdFxuMTU2NzpcdFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcJiMzNDtwbGF0Zm9ybSBwcm9iZVxcblwmIzM0Oyk7XG4xNTY4Olx0XG4xNTY5Olx0XHR3Y25zcyA9IGRldl9nZXRfZHJ2ZGF0YShwZGV2LVx1MDAzZWRldi5wYXJlbnQpO1xuMTU3MDpcdFxuMTU3MTpcdFx0bl9jaGFubmVscyA9IHdjbl9iYW5kXzJnaHoubl9jaGFubmVscyAmIzQzOyB3Y25fYmFuZF81Z2h6Lm5fY2hhbm5lbHM7XG4xNTcyOlx0XHRodyA9IGllZWU4MDIxMV9hbGxvY19odyhzdHJ1Y3Rfc2l6ZSh3Y24sIGNoYW5fc3VydmV5LCBuX2NoYW5uZWxzKSwgXHUwMDI2d2NuMzZ4eF9vcHMpO1xuMTU3MzpcdFx0aWYgKCFodykge1xuMTU3NDpcdFx0XHR3Y24zNnh4X2VycihcJiMzNDtmYWlsZWQgdG8gYWxsb2MgaHdcXG5cJiMzNDspO1xuMTU3NTpcdFx0XHRyZXQgPSAtRU5PTUVNO1xuMTU3NjpcdFx0XHRnb3RvIG91dF9lcnI7XG4xNTc3Olx0XHR9XG4xNTc4Olx0XHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBodyk7XG4xNTc5Olx0XHR3Y24gPSBody1cdTAwM2Vwcml2O1xuMTU4MDpcdFx0d2NuLVx1MDAzZWh3ID0gaHc7XG4xNTgxOlx0XHR3Y24tXHUwMDNlZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4xNTgyOlx0XHR3Y24tXHUwMDNlZmlyc3RfYm9vdCA9IHRydWU7XG4xNTgzOlx0XHRtdXRleF9pbml0KFx1MDAyNndjbi1cdTAwM2Vjb25mX211dGV4KTtcbjE1ODQ6XHRcdG11dGV4X2luaXQoXHUwMDI2d2NuLVx1MDAzZWhhbF9tdXRleCk7XG4xNTg1Olx0XHRtdXRleF9pbml0KFx1MDAyNndjbi1cdTAwM2VzY2FuX2xvY2spO1xuMTU4NjpcdFx0X19za2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNndjbi1cdTAwM2VhbXNkdSk7XG4xNTg3Olx0XG4xNTg4Olx0XHR3Y24tXHUwMDNlaGFsX2J1ZiA9IGRldm1fa21hbGxvYyh3Y24tXHUwMDNlZGV2LCBXQ04zNlhYX0hBTF9CVUZfU0laRSwgR0ZQX0tFUk5FTCk7XG4xNTg5Olx0XHRpZiAoIXdjbi1cdTAwM2VoYWxfYnVmKSB7XG4xNTkwOlx0XHRcdHJldCA9IC1FTk9NRU07XG4xNTkxOlx0XHRcdGdvdG8gb3V0X3dxO1xuMTU5MjpcdFx0fVxuMTU5MzpcdFxuMTU5NDpcdFx0cmV0ID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudCh3Y24tXHUwMDNlZGV2LCBETUFfQklUX01BU0soMzIpKTtcbjE1OTU6XHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbjE1OTY6XHRcdFx0d2NuMzZ4eF9lcnIoXCYjMzQ7ZmFpbGVkIHRvIHNldCBETUEgbWFzazogJWRcXG5cJiMzNDssIHJldCk7XG4xNTk3Olx0XHRcdGdvdG8gb3V0X3dxO1xuMTU5ODpcdFx0fVxuMTU5OTpcdFxuMTYwMDpcdFx0d2NuLVx1MDAzZW52X2ZpbGUgPSBXTEFOX05WX0ZJTEU7XG4xNjAxOlx0XHRyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3N0cmluZyh3Y24tXHUwMDNlZGV2LVx1MDAzZXBhcmVudC1cdTAwM2VvZl9ub2RlLCBcJiMzNDtmaXJtd2FyZS1uYW1lXCYjMzQ7LCBcdTAwMjZ3Y24tXHUwMDNlbnZfZmlsZSk7XG4xNjAyOlx0XHRpZiAocmV0IFx1MDAzYyAwIFx1MDAyNlx1MDAyNiByZXQgIT0gLUVJTlZBTCkge1xuMTYwMzpcdFx0XHR3Y24zNnh4X2VycihcJiMzNDtmYWlsZWQgdG8gcmVhZCBcXFwmIzM0O2Zpcm13YXJlLW5hbWVcXFwmIzM0OyBwcm9wZXJ0eTogJWRcXG5cJiMzNDssIHJldCk7XG4xNjA0Olx0XHRcdGdvdG8gb3V0X3dxO1xuMTYwNTpcdFx0fVxuMTYwNjpcdFxuMTYwNzpcdFx0d2NuLVx1MDAzZXNtZF9jaGFubmVsID0gcWNvbV93Y25zc19vcGVuX2NoYW5uZWwod2Nuc3MsIFwmIzM0O1dMQU5fQ1RSTFwmIzM0Oywgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3MsIGh3KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA0MDQKCQkJCQkJCW91dHB1dDogMTY0CgkJCQkJCQl0aG91Z2h0czogNjk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZz1GYWxzZTogUmVhc29uaW5nIGZvciBFeGNsdWRpbmcgdGhlIHdjbjM2eHggRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgc2NhbiBwb2ludHMgbWUgdG93YXJkIHRoZSBgd2NuMzZ4eGAgZHJpdmVyLCBhbmQgdGhhdCBpbW1lZGlhdGVseSBzZXRzIG9mZiBzb21lIGFsYXJtcy4gSSYjMzk7bSBzZWVpbmcgYWNjZXNzZXMgdG8gYHBkZXYtJmd0O2Rldi5wYXJlbnRgIGFuZCBhIHN1YnNlcXVlbnQgYGRldl9nZXRfZHJ2ZGF0YWAuIElmIHRoZSBwYXJlbnQgaXNuJiMzOTt0IHByb3Blcmx5IHNldCB1cCwgdGhpcyBpcyBnb2luZyB0byBjcmFzaCwgb3IgYXQgYmVzdCwgcmV0dXJuIE5VTEwuIFRoZW4sIGl0IGRpdmVzIGludG8gYG9mX25vZGVgIHByb3BlcnRpZXMsIHdoaWNoICpkZWZpbml0ZWx5KiByZXF1aXJlcyB0aGUgZGV2aWNlIHRyZWUgdG8gYmUgY29ycmVjdGx5IGluaXRpYWxpemVkLgoKVGhpcyBzY3JlYW1zICYjMzQ7UXVhbGNvbW0tc3BlY2lmaWMmIzM0Oy4gVGhlIGRyaXZlciBhYnNvbHV0ZWx5IGV4cGVjdHMgdG8gYmUgYSBjaGlsZCBvZiB0aGUgV0NOU1MgZGV2aWNlLCBzb21ldGhpbmcgdGhhdCYjMzk7cyBicm91Z2h0IHVwIGJ5IHRoZSBkZXZpY2UgdHJlZSBvbiBRdWFsY29tbSBTb0NzLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBjYW4gdGVsbCB0aGlzIHdvbiYjMzk7dCBiZSByZWFjaGFibGUgaW4gYSBzdGFuZGFyZCBRRU1VIHNldHVwLgoKTm93LCBJIHBhdXNlZCBicmllZmx5LCBjb25zaWRlcmluZyB0aGUgcG9zc2liaWxpdHkgb2Ygc3l6a2FsbGVyIHJ1bm5pbmcgb24gYWN0dWFsIFF1YWxjb21tIGhhcmR3YXJlLiBCdXQgdGhlbiBJIHJlbWVtYmVyIHRoZSBwcm9tcHQmIzM5O3MgaW5zdHJ1Y3Rpb25zLiBJdCBleHBsaWNpdGx5IHdhbnRzIG1lIHRvIGV4Y2x1ZGUgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgdGhhdCByZWx5IG9uIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBRRU1VLiBUaGluZ3MgbGlrZSBQQ0llIHN3aXRjaCBkcml2ZXJzLCBTbWFydE5JQ3MsIEdQVXMuLi4gVGhpcyBkcml2ZXIgZml0cyB0aGUgYmlsbC4gSXQmIzM5O3MgYSBRdWFsY29tbSBTb0MgZHJpdmVyLCBhbmQgaXQgbmVlZHMgdGhlIHNwZWNpZmljIFF1YWxjb21tIGhhcmR3YXJlIChvciBhdCBsZWFzdCB0aGUgc3BlY2lmaWMgZGV2aWNlIHRyZWUgYW5kIFJQTVNHIGluZnJhc3RydWN0dXJlKSwgd2hpY2gsIGFzIEkga25vdywgaXNuJiMzOTt0IHNvbWV0aGluZyB0aGF0JiMzOTtzIGVhc2lseSBmdXp6YWJsZSBpbiBzdGFuZGFyZCBRRU1VLgoKSSBkb3VibGUtY2hlY2tlZCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGNoYW5jZSBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgIGNhbiBiZSBjYWxsZWQgZGlyZWN0bHksIG9yIGlmIHRoZXJlJiMzOTtzIGEgc3l6a2FsbGVyIHBzZXVkby1zeXNjYWxsIGZvciBpdCwgYnV0IHRoZSBwcm9tcHQmIzM5O3MgaW5zdHJ1Y3Rpb25zIGFyZSBjbGVhcjogaWYgaXQmIzM5O3MgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIEkgc2hvdWxkIHJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UuIEkgYW0gbm90IHRvIHNlYXJjaCBmb3Igc3l6bGFuZyBkZXNjcmlwdGlvbnMuIEl0IGFsbCBnb2VzIGJhY2sgdG8gdGhvc2UgJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUmIzM0OyB0aGF0IG5lZWQgdG8gYmUgZXhjbHVkZWQuCgpBIHF1aWNrIHZlcmlmaWNhdGlvbjogYHdjbjM2eHhgIGlzIGluZGVlZCBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIgZm9yIHRob3NlIFdDTjM2NjAvMzY4MCBtb2JpbGUgY2hpcHNldHMgaW50ZWdyYXRlZCBpbnRvIFF1YWxjb21tIFNuYXBkcmFnb25zLiBUaGF0IHNlYWxzIHRoZSBkZWFsLiBUaGlzIGlzIG5vdCBhIGdlbmVyaWMgd2lyZWxlc3MgZHJpdmVyLgoKTXkgZmluYWwgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogVGhlIHBhdGNoIG1vZGlmaWVzIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgaW4gdGhlIGB3Y24zNnh4YCBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlciBmb3IgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgbW9iaWxlIGNoaXBzZXRzLiBUaGlzIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIFF1YWxjb21tIFNvQyBoYXJkd2FyZSBjb21wb25lbnRzIChXQ05TUykgYW5kIGNvbW11bmljYXRlcyB2aWEgdGhlIFJQTVNHIGJ1cy4gSXQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBhcyBpdCByZWxpZXMgb24gc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMgYW5kIHBhcmVudCBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZC4gVGhlcmVmb3JlLCBpdCBpcyBub3Qgc3VpdGFibGUgZm9yIGZ1enppbmcgaW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBXb3J0aEZ1enppbmc9ZmFsc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDAwOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzYCBpbiB0aGUgYHdjbjM2eHhgIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgd2lyZWxlc3MgZHJpdmVyIGZvciBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MCBtb2JpbGUgY2hpcHNldHMuIFRoaXMgZHJpdmVyIGlzIGEgcGxhdGZvcm0gZHJpdmVyIHRoYXQgcmVxdWlyZXMgc3BlY2lmaWMgUXVhbGNvbW0gU29DIGhhcmR3YXJlIGNvbXBvbmVudHMgKFdDTlNTKSBhbmQgY29tbXVuaWNhdGVzIHZpYSB0aGUgUlBNU0cgYnVzLiBJdCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIG9yIHJlYWNoZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGFzIGl0IHJlbGllcyBvbiBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlcyBhbmQgcGFyZW50IGRldmljZXMgdGhhdCBhcmUgbm90IGVtdWxhdGVkLiBUaGVyZWZvcmUsIGl0IGlzIG5vdCBzdWl0YWJsZSBmb3IgZnV6emluZyBpbiBhIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgIGluIHRoZSBgd2NuMzZ4eGAgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyB3aXJlbGVzcyBkcml2ZXIgZm9yIFF1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwIG1vYmlsZSBjaGlwc2V0cy4gVGhpcyBkcml2ZXIgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZXF1aXJlcyBzcGVjaWZpYyBRdWFsY29tbSBTb0MgaGFyZHdhcmUgY29tcG9uZW50cyAoV0NOU1MpIGFuZCBjb21tdW5pY2F0ZXMgdmlhIHRoZSBSUE1TRyBidXMuIEl0IGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgb3IgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgYXMgaXQgcmVsaWVzIG9uIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzIGFuZCBwYXJlbnQgZGV2aWNlcyB0aGF0IGFyZSBub3QgZW11bGF0ZWQuIFRoZXJlZm9yZSwgaXQgaXMgbm90IHN1aXRhYmxlIGZvciBmdXp6aW5nIGluIGEgZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMDo0NToxNS4wMTkxMzMxNzNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTgzODE3OTcyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzYCBpbiB0aGUgYHdjbjM2eHhgIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgd2lyZWxlc3MgZHJpdmVyIGZvciBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MCBtb2JpbGUgY2hpcHNldHMuIFRoaXMgZHJpdmVyIGlzIGEgcGxhdGZvcm0gZHJpdmVyIHRoYXQgcmVxdWlyZXMgc3BlY2lmaWMgUXVhbGNvbW0gU29DIGhhcmR3YXJlIGNvbXBvbmVudHMgKFdDTlNTKSBhbmQgY29tbXVuaWNhdGVzIHZpYSB0aGUgUlBNU0cgYnVzLiBJdCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIG9yIHJlYWNoZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGFzIGl0IHJlbGllcyBvbiBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlcyBhbmQgcGFyZW50IGRldmljZXMgdGhhdCBhcmUgbm90IGVtdWxhdGVkLiBUaGVyZWZvcmUsIGl0IGlzIG5vdCBzdWl0YWJsZSBmb3IgZnV6emluZyBpbiBhIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMDo0NToxNS4wMTkxNDI5NzNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMjY3NTA1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGRlNjg0NDk3MjE2MzI4MGQxOTEwZDU0ZjRlMzRlNDYxMWNhZTIxYmVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgMjcgMDA6NDU6MTMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuY1xcbmluZGV4IGMwYjQ3NzM0NTgzMmI4Li4zMmRlYzQ1ZGJiNTBmNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jXFxuQEAgLTMyNTQsNiArMzI1NCwxMSBAQCBpbnQgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3Moc3RydWN0IHJwbXNnX2RldmljZSAqcnBkZXYsXFxuIFxcdHN0cnVjdCB3Y24zNnh4X2hhbF9pbmRfbXNnICptc2dfaW5kO1xcbiBcXHR3Y24zNnh4X2RiZ19kdW1wKFdDTjM2WFhfREJHX1NNRF9EVU1QLCBcXFwiU01EIFxcdTAwM2NcXHUwMDNjXFx1MDAzYyBcXFwiLCBidWYsIGxlbik7XFxuIFxcbitcXHRpZiAobGVuIFxcdTAwM2Mgc2l6ZW9mKCptc2dfaGVhZGVyKSkge1xcbitcXHRcXHR3Y24zNnh4X3dhcm4oXFxcIkNvcnJ1cHRlZCBIQUwgbWVzc2FnZTogbGVuZ3RoICVkXFxcXG5cXFwiLCBsZW4pO1xcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0fVxcbitcXG4gXFx0c3dpdGNoIChtc2dfaGVhZGVyLVxcdTAwM2Vtc2dfdHlwZSkge1xcbiBcXHRjYXNlIFdDTjM2WFhfSEFMX1NUQVJUX1JTUDpcXG4gXFx0Y2FzZSBXQ04zNlhYX0hBTF9DT05GSUdfU1RBX1JTUDpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDA6NDU6MTUuNjUyNzQ5ODgxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjEyMDQ1NTUxNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgaW4gdGhlIGB3Y24zNnh4YCBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlciBmb3IgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgbW9iaWxlIGNoaXBzZXRzLiBUaGlzIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIFF1YWxjb21tIFNvQyBoYXJkd2FyZSBjb21wb25lbnRzIChXQ05TUykgYW5kIGNvbW11bmljYXRlcyB2aWEgdGhlIFJQTVNHIGJ1cy4gSXQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBhcyBpdCByZWxpZXMgb24gc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMgYW5kIHBhcmVudCBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZC4gVGhlcmVmb3JlLCBpdCBpcyBub3Qgc3VpdGFibGUgZm9yIGZ1enppbmcgaW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZGU2ODQ0OTcyMTYzMjgwZDE5MTBkNTRmNGUzNGU0NjExY2FlMjFiZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDI3IDAwOjQ1OjEzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuY1xuaW5kZXggYzBiNDc3MzQ1ODMyYjguLjMyZGVjNDVkYmI1MGY1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jXG5AQCAtMzI1NCw2ICszMjU0LDExIEBAIGludCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcyhzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldixcbiBcdHN0cnVjdCB3Y24zNnh4X2hhbF9pbmRfbXNnICptc2dfaW5kO1xuIFx0d2NuMzZ4eF9kYmdfZHVtcChXQ04zNlhYX0RCR19TTURfRFVNUCwgXCJTTUQgXHUwMDNjXHUwMDNjXHUwMDNjIFwiLCBidWYsIGxlbik7XG4gXG4rXHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKm1zZ19oZWFkZXIpKSB7XG4rXHRcdHdjbjM2eHhfd2FybihcIkNvcnJ1cHRlZCBIQUwgbWVzc2FnZTogbGVuZ3RoICVkXFxuXCIsIGxlbik7XG4rXHRcdHJldHVybiAwO1xuK1x0fVxuK1xuIFx0c3dpdGNoIChtc2dfaGVhZGVyLVx1MDAzZW1zZ190eXBlKSB7XG4gXHRjYXNlIFdDTjM2WFhfSEFMX1NUQVJUX1JTUDpcbiBcdGNhc2UgV0NOMzZYWF9IQUxfQ09ORklHX1NUQV9SU1A6XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMDo0NToxNS42NTI3NTE4MjFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDIwMjMxODEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdpcmVsZXNzIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jYC4gSXQncyBhIHNpbXBsZSBsZW5ndGggY2hlY2sgYWRkZWQgdG8gYHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzYDpcblxuYGBgY1xuK1x0aWYgKGxlbiBcdTAwM2Mgc2l6ZW9mKCptc2dfaGVhZGVyKSkge1xuK1x0XHR3Y24zNnh4X3dhcm4oXCJDb3JydXB0ZWQgSEFMIG1lc3NhZ2U6IGxlbmd0aCAlZFxcblwiLCBsZW4pO1xuK1x0XHRyZXR1cm4gMDtcbitcdH1cbmBgYFxuXG5GdW5jdGlvbmFsbHksIGl0J3MganVzdCBhIGJvdW5kcyBjaGVjaywgd2hpY2ggaXMgZ29vZCBwcmFjdGljZS4gVGhpcyBpcyBhIHdpcmVsZXNzIGRyaXZlciBmb3IgdGhlIHdjbjM2eHgsIHdoaWNoIGlzIGEgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgTUFDL0JCL1JhZGlvIGRyaXZlci4gSXQncyB1c2luZyBTTUQvUlBNU0cgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgZmlybXdhcmUuIE5vdywgbXkgbWluZCBpbW1lZGlhdGVseSBnb2VzIHRvIHdoZXRoZXIgdGhpcyBpcyBhIHJlYWNoYWJsZSB0YXJnZXQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUuXG5cblRoZSBxdWVzdGlvbiBiZWNvbWVzLCBpcyB0aGlzIGZ1enphYmxlPyBSUE1TRyBkZXZpY2VzICpjYW4qIHNvbWV0aW1lcyBiZSBmdXp6ZWQgaWYgdGhlcmUncyBhIG1lc3NhZ2UgaW5qZWN0aW9uIHBvaW50LCBidXQgdGhleSdyZSB0eXBpY2FsbHkgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyBmb3IgUXVhbGNvbW0gU29DcyAoU25hcGRyYWdvbikuIEJ1dCB0aGUgcGF0Y2ggaXMgaW4gYHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzYCwgd2hpY2ggaXMgYW4gUlBNU0cgY2FsbGJhY2ssIHdoaWNoIGRvZXMgbWFrZSBpdCBpbnRlcmVzdGluZy4gQ2FuIHdlIGZ1enogUlBNU0cgZW5kcG9pbnRzIGluIHN5emthbGxlcj8gU3l6a2FsbGVyICpkb2VzKiBoYXZlIHNvbWUgUlBNU0cgc3VwcG9ydCwgb3Igd2UgY291bGQganVzdCB0cmVhdCB0aGlzIGxpa2UgYW55IHdpcmVsZXNzIGRyaXZlciBhbmQgYXNzdW1lIGl0ICptaWdodCogYmUgcmVhY2hhYmxlIGlmIHRoZSBSUE1TRyBidXMgaXMgbW9ja2FibGUgb3IgaWYgaXQncyBqdXN0IGdlbmVyYWwga2VybmVsIGNvZGUuXG5cbldhaXQsIHRoZSBwcm9tcHQgc2FpZCBzb21ldGhpbmcgYWJvdXQgdGhlIGNvZGUgYmVpbmcgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMsIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBTaW5jZSB0aGlzIGlzIGEgcGxhdGZvcm0vUlBNU0cgZHJpdmVyIGZvciBRdWFsY29tbSBTb0NzIEkgc2hvdWxkIGNoZWNrIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgaXMgYW55IG1lbnRpb24gb2YgaGFyZHdhcmUsIGp1c3QgaW4gY2FzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE2MywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAwOjQ1OjIyLjY3Mjk4NjAyNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwMzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcXG4gICAyOlxcdGNvbmZpZyBXQ04zNlhYXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTEgXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBRQ09NX1dDTlNTX0NUUkwgfHwgUUNPTV9XQ05TU19DVFJMPW5cXG4gICA2OlxcdFxcdGRlcGVuZHMgb24gUlBNU0cgfHwgUlBNU0c9blxcbiAgIDc6XFx0XFx0aGVscFxcbiAgIDg6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uXFxuICAgOTpcXHRcXHQgIFF1YWxjb21tIEF0aGVyb3MgV0NOMzY2MCBhbmQgV0NOMzY4MCBtb2JpbGUgY2hpcHNldHMuXFxuICAxMDpcXHRcXG4gIDExOlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQnbGwgYmUgY2FsbGVkIHdjbjM2eHguXFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBXQ04zNlhYX0RFQlVHRlNcXG4gIDE0OlxcdFxcdGJvb2wgXFxcIldDTjM2WFggZGVidWdmcyBzdXBwb3J0XFxcIlxcbiAgMTU6XFx0XFx0ZGVwZW5kcyBvbiBXQ04zNlhYXFxuICAxNjpcXHRcXHRoZWxwXFxuICAxNzpcXHRcXHQgIEVuYWJsZWQgZGVidWdmcyBzdXBwb3J0XFxuICAxODpcXHRcXG4gIDE5OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDA6NDU6MjIuNjczMDU4ODQ0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU1ODM4MjQ1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFjaGluZyB0aGF0IFdpcmVsZXNzIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLCBhbmQgaXQncyBlbnRhbmdsZWQgd2l0aCBgTUFDODAyMTFgLCBgSEFTX0RNQWAsIGBRQ09NX1dDTlNTX0NUUkxgLCBhbmQgYFJQTVNHYC4gVGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiBJIGV2ZW4gZ2V0IHRvIHRoaXMgdGhpbmcgd2l0aGluIFFFTVU/IFRoZXNlIHBsYXRmb3JtLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlcnMsIGVzcGVjaWFsbHkgUXVhbGNvbW0gc3R1ZmYsIGFyZSB1c3VhbGx5IGEgbmlnaHRtYXJlLiBUaGV5J3JlIHR5cGljYWxseSBkZXNpZ25lZCB0byBiZSB0aWdodGx5IGludGVncmF0ZWQgd2l0aCB0aGUgaGFyZHdhcmUuIFVubGVzcyB0aGVyZSdzIGEgc3BlY2lmaWMgZW11bGF0b3Igc2V0dXAsIG9yIGl0J3MgYSBVU0Igb3IgU0RJTyBkcml2ZXIgSSBjYW4gaW50ZXJhY3Qgd2l0aCB1c2luZyBzb21lIGR1bW15IGRldmljZXMsIGl0J3MgYSBsb25nIHNob3QuXG5cbldhaXQgYSBzZWNvbmTigKYgd2Fzbid0IHRoZXJlIHNvbWV0aGluZyBhYm91dCBSUE1TRyBkZXZpY2VzIGJlaW5nIGNyZWF0ZWQgdGhyb3VnaCBgcnBtc2dfY3RybGAgb3IgYSBzaW1pbGFyIGludGVyZmFjZT8gTWF5YmUgdGhlcmUncyBhIGNoYW5jZS4gQW5kIHdhc24ndCBzeXprYWxsZXIgc3RhcnRpbmcgdG8gc3VwcG9ydCBmdXp6aW5nIFJQTVNHPyBPciB3YXMgdGhhdCBqdXN0IHRoZSBzdGFuZGFyZCBkcml2ZXIgaXRzZWxmPyBOZWVkIHRvIGNoZWNrLlxuXG5BbHJpZ2h0LCBsZXQncyB6ZXJvIGluIG9uIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AuIEFoLCB0aGF0J3MgdGhlIGNhbGxiYWNrIChgY2JgKSBmb3IgdGhlIHJwbXNnIGRyaXZlciwgaXNuJ3QgaXQ/IFNvLCBpZiBJIGNhbiB0cmlnZ2VyIGFuIFJQTVNHIGludGVyYWN0aW9uLCBtYXliZSBJIGNhbiBhY3R1YWxseSBnZXQgdG8gdGhpcyB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgY291bGQgYmUgcHJvbWlzaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzMyLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDA6NDU6MjcuMjMxNDQ0MzU2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0Nzk4OTg5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jPTE1NTg9c3RhdGljIGludCB3Y24zNnh4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMTYwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MTYwNzpcXHR3Y24tXFx1MDAzZXNtZF9jaGFubmVsID0gcWNvbV93Y25zc19vcGVuX2NoYW5uZWwod2Nuc3MsIFxcXCJXTEFOX0NUUkxcXFwiLCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcywgaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xNjA4LVxcdGlmIChJU19FUlIod2NuLVxcdTAwM2VzbWRfY2hhbm5lbCkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jPTMyMDI9aW50IHdjbjM2eHhfc21kX2FkZF9iZWFjb25fZmlsdGVyKHN0cnVjdCB3Y24zNnh4ICp3Y24sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYy0zMjQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jOjMyNDg6aW50IHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzKHN0cnVjdCBycG1zZ19kZXZpY2UgKnJwZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jLTMyNDktXFx0XFx0XFx0ICAgIHZvaWQgKmJ1ZiwgaW50IGxlbiwgdm9pZCAqcHJpdiwgdTMyIGFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuaD0xNDA9aW50IHdjbjM2eHhfc21kX3VwZGF0ZV9jZmcoc3RydWN0IHdjbjM2eHggKndjbiwgdTMyIGNmZ19pZCwgdTMyIHZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuaC0xNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmg6MTQyOmludCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcyhzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuaC0xNDMtXFx0XFx0XFx0ICAgIHZvaWQgKmJ1ZiwgaW50IGxlbiwgdm9pZCAqcHJpdiwgdTMyIGFkZHIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMDo0NToyNy4zNzk0NDA4ODNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzY0MTQxNjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUUVNVSBFbnZpcm9ubWVudCBmb3IgV0NOMzZYWCBEcml2ZXIgSW50ZXJhY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGB3Y24zNnh4X3Byb2JlYCBmdW5jdGlvbiwgd2hpY2gsIGFzIEkgcmVjYWxsLCBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBXQ04zNlhYIGRyaXZlcidzIHBsYXRmb3JtIGRldmljZSBzZXR1cC4gUGxhdGZvcm0gZGV2aWNlcywgcmlnaHQsIHVzdWFsbHkgY29tZSB0byBsaWZlIHRocm91Z2ggRGV2aWNlIFRyZWUgb3IgQUNQSS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiQ2FuIHdlIHRyaWdnZXIgdGhpcyBzcGVjaWZpYyBgd2NuMzZ4eGAgcHJvYmUgd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudD9cIiBJIG1lYW4sIHRoYXQncyB0aGUgc2V0dXAgSSdtIHdvcmtpbmcgd2l0aC4gVHlwaWNhbGx5LCB5b3UnZCBiZSBoYXJkLXByZXNzZWQgdG8ganVzdCBpbnN0YW50aWF0ZSBhIHJhbmRvbSBwbGF0Zm9ybSBkZXZpY2UgaW4gUUVNVSB1bmxlc3MsIHBlcmhhcHMsIHRoZXJlJ3MgYSBjdXN0b20gcHNldWRvLWRldmljZSBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIGZ1enppbmcsIGxpa2Ugd2hhdCBTeXprYWxsZXIgb2Z0ZW4gcHJvdmlkZXMsIG9yIGlmIHRoZSBkZXZpY2UgaXMgYXR0YWNoZWQgdG8gYSBnZW5lcmljIGJ1cyB0aGF0IFFFTVUgbmF0aXZlbHkgZW11bGF0ZXMuIEhtbSwgYnV0IGhhbmcgb24gYSBtaW51dGUuLi4gd2FpdC4uLiBJJ20gbWlzc2luZyBzb21ldGhpbmcsIGB3Y24zNnh4X3Byb2JlYCBpc24ndCBqdXN0ICphKiBmdW5jdGlvbiwgaXQncyBleHBsaWNpdGx5IHJlZ2lzdGVyZWQgYXMgYSBwbGF0Zm9ybSAqZHJpdmVyKi4gVGhhdCBpcyB0aGUgY2x1ZSFcblxuXG4iLCJJbnB1dFRva2VucyI6NDM1NSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAwOjQ1OjMxLjE0MzU4NTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAyOTA3NjA5MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDA6NDU6MzMuMTcyNjY5NjhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODg3MTI1NDMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoaXMgY29kZTpcblxuKipEaXZpbmcgaW50byB0aGUgYHdjbjM2eHhfcHJvYmVgIEZ1bmN0aW9uIENhbGwqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIGB3Y24zNnh4X3Byb2JlYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHRyYWNlIGJhY2sgaXRzIGNhbGwgcGF0aC4gV2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBiZWluZyBpbnZva2VkPyBJcyBpdCB3aXRoaW4gdGhlIFBDSSBkcml2ZXIgaW5pdGlhbGl6YXRpb24sIGEgcGxhdGZvcm0gZGV2aWNlIHJlZ2lzdHJhdGlvbiwgb3Igc29tZXdoZXJlIGVsc2UgZW50aXJlbHk/IEtub3dpbmcgdGhlIGNhbGxlciBpcyBhYnNvbHV0ZWx5IGNydWNpYWwgdG8gZ3Jhc3BpbmcgaXRzIHB1cnBvc2UgYW5kIHRoZSBpbmZvcm1hdGlvbiBpdCdzIHJlbHlpbmcgb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBpbml0aWF0aW5nIGNvbmRpdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3MzYsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMDo0NTozNi4wNTk3OTkzMDRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0Njc1NjA1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3Y24zNnh4X3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM9MTQ3Mj1zdGF0aWMgaW50IHdjbjM2eHhfcGxhdGZvcm1fZ2V0X3Jlc291cmNlcyhzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE1NTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjE1NTg6c3RhdGljIGludCB3Y24zNnh4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE1NTkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jPTE2NzY9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgd2NuMzZ4eF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjE2Nzc6XFx0LnByb2JlID0gd2NuMzZ4eF9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMTY3OC1cXHQucmVtb3ZlID0gd2NuMzZ4eF9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAwOjQ1OjM2LjYwNjU2NTQyNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjQyNjM3OTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIHRoaXMgUGxhdGZvcm0gRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgd2NuMzZ4eGAgZHJpdmVyLCBhbmQgaW1tZWRpYXRlbHkgbXkgZXhwZXJ0IGJyYWluIGZsYWdzIGl0IGFzIGEgcGxhdGZvcm0gZHJpdmVyLiBJIHNlZSB0aGUgc3RhbmRhcmQgc3RydWN0dXJlIHdpdGggYHByb2JlYCwgYHJlbW92ZWAsIGFuZCB0aGUgZHJpdmVyJ3MgbmFtZSwgXCJ3Y24zNnh4XCIsIGFsb25nIHdpdGggdGhlIE9GIG1hdGNoIHRhYmxlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBwbGF0Zm9ybSBkcml2ZXJzICpjYW4qIGJlIGJvdW5kIHZpYSBzeXNmcyBpZiB3ZSBjYW4gY3JlYXRlIHRoZSBwbGF0Zm9ybSBkZXZpY2UuIEkga25vdyBzeXprYWxsZXIgKmNhbiogY3JlYXRlIHBsYXRmb3JtIGRldmljZXMgYnkgd3JpdGluZyB0byBzb21ldGhpbmcgbGlrZSBgL3N5cy9kZXZpY2VzL3BsYXRmb3JtYCwgb3Igc28gSSB0aGluay4gQnV0IGl0J3MgdXN1YWxseSBsaW1pdGVkIHRvIHNwZWNpZmljIGhhcmR3YXJlIG9yIGRldmljZSB0cmVlIG5vZGVzLCBvciBtYXliZSB1c2luZyBgc3l6X2RldmxpbmtfbmV0YCwgYWx0aG91Z2ggdGhhdCdzIG5vdCB0eXBpY2FsbHkgcmVsZXZhbnQgZm9yIHBsYXRmb3JtIGRldmljZXMgdW5sZXNzIHRoZXJlJ3MgYW4gZW11bGF0b3Igc3BlY2lmaWNhbGx5IHNldCB1cC5cblxuV2FpdCBhIG1pbnV0ZSwgY2FuIHN5emthbGxlciAqYWN0dWFsbHkqIGZ1enogcGxhdGZvcm0gZHJpdmVycz8gSXQncyBub3Qgc3RyYWlnaHRmb3J3YXJkIHRvIGluc3RhbnRpYXRlIGFyYml0cmFyeSBwbGF0Zm9ybSBkZXZpY2VzIHVubGVzcyB0aGV5J3JlIGluIHRoZSBkZXZpY2UgdHJlZSBvciB0aGVyZSdzIGEgcHNldWRvLXN5c2NhbGwgdGhhdCdzIHNwZWNpZmljIHRvIHN5emthbGxlciwgYW5kIHRoZXJlJ3Mgbm90IGEgbG90IG9mIHRoYXQuXG5cbkhvbGQgb24sIEkgbmVlZCB0byBjaGVjayB0aGUgcHJvbXB0ISBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMuLi4gY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLi4uXCIgT2theSwgdGhpcyBgd2NuMzZ4eGAgaXMgYSBRdWFsY29tbSBBdGhlcm9zIHdpcmVsZXNzIGRyaXZlciBmb3IgbW9iaWxlIGNoaXBzZXRzIChXQ04zNjYwLzM2ODApLiBJIGtub3cgaXQgcmVsaWVzIG9uIGBRQ09NX1dDTlNTX0NUUkxgIGFuZCBSUE1TRy4gSXQncyAqZGVmaW5pdGVseSogYSBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyLlxuXG5UaGUgbWlsbGlvbi1kb2xsYXIgcXVlc3Rpb246IElzIGl0IHJlYWNoYWJsZSBpbiBRRU1VPyBSUE1TRyBkZXZpY2VzICpjYW4qIHNvbWV0aW1lcyBiZSBjcmVhdGVkLCBidXQgdGhpcyBpcyBhICpwbGF0Zm9ybSogZGV2aWNlIGB3Y24zNnh4YCwgd2hpY2ggbWFrZXMgdGhpbmdzIHRyaWNraWVyLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgbm90IGxpa2UgdGhvc2UgUENJZSBzd2l0Y2hlcyBhbmQgU21hcnROSUNzLiBJJ20gdGhpbmtpbmcgSSBoYXZlIHRvIGNoZWNrIGlmIHN5emthbGxlciBoYXMgYW55IHByZWRlZmluZWQgZGVzY3JpcHRpb25zIGZvciBgd2NuMzZ4eGAgb3IgYHJwbXNnYC4gT3RoZXJ3aXNlLCBpdCdzIHZlcnkgbGlrZWx5IEknbGwgaGF2ZSB0byBtYXJrIHRoaXMgYXMgbm90IGltbWVkaWF0ZWx5IGZ1enphYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTg0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAwOjQ1OjQzLjg0OTIwNjEyM1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQzOTEwNDkwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3Y24zNnh4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAwOjQ1OjQ0LjM5MzEyMzIxM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTIzNjY2ODg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU3l6a2FsbGVyIEJ1ZyBSZXBvcnQ6IEEgVGhvdWdodCBQcm9jZXNzKipcblxuT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBzeXprYWxsZXIgaGFzIGFueSBoZWxwZnVsIHN5emxhbmcgZGVzY3JpcHRpb25zIGZvciB0aGlzLiBMZXQncyBzZWUuLi4gdGhlIHByb21wdCBtZW50aW9ucyBhIGB0b29sUmVhZERlc2NyaXB0aW9uYCB0b29sLCBidXQgd2FpdCwgaXQncyBub3QgYWN0dWFsbHkgYXZhaWxhYmxlLiBUaGF0J3MgYSBiaXQgYW5ub3lpbmcuIEhvd2V2ZXIsIEkga25vdyBgd2NuMzZ4eGAgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciBhIFF1YWxjb21tIFNvQyBjb21wb25lbnQuIFRoZSBjaGFsbGVuZ2UgaGVyZSBpcyB0aGF0IGl0J3MgcHJvYmFibHkgbm90IGVhc2lseSByZWFjaGFibGUgaW4gc3RhbmRhcmQgUUVNVSBzZXR1cHMsIGVzcGVjaWFsbHkgY29uc2lkZXJpbmcgc3l6a2FsbGVyIHR5cGljYWxseSBydW5zIG9uIHg4Nl82NCBvciBnZW5lcmljIGFybTY0IHZpcnQgYm9hcmRzLiBVbmxlc3MgdGhlcmUncyBzcGVjaWZpYyBRdWFsY29tbSBTb0MgZW11bGF0aW9uLCB3aGljaCBzb21lIFFFTVUgYnVpbGRzIG1pZ2h0IGhhdmUsIGJ1dCBpc24ndCB0aGUgbm9ybS5cblxuSG9sZCBvbiwgdGhlIGNvbW1pdCBhdXRob3IgaXMgbGlzdGVkIGFzIGBzeXotY2x1c3RlcmAuIEhtbSwgaWYgc3l6a2FsbGVyIGZvdW5kIHRoaXMgYnVnLCBpdCBtZWFucyBzeXprYWxsZXIgKmRpZCogcmVhY2ggaXQhIEJ1dCwgcmVhZGluZyBvbiwgdGhlIGNvbW1pdCBtZXNzYWdlIHNheXMgXCJzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcIi4gQWgsIGl0IGltcGxpZXMgc3l6a2FsbGVyIGlzICp0ZXN0aW5nKiB0aGlzIHBhdGNoLCBub3QgbmVjZXNzYXJpbHkgdGhhdCBpdCAqZm91bmQqIGEgYnVnLiBTeXprYWxsZXIgbWlnaHQganVzdCBiZSB0ZXN0aW5nIGEgcGF0Y2ggdGhhdCdzIHVuZGVyIHJldmlldywgYmVjYXVzZSBpdCB3YXMgc3VibWl0dGVkIHRvIGEgbWFpbGluZyBsaXN0IG9yIHNpbWlsYXIuIEl0IGRvZXNuJ3QgbWVhbiBzeXprYWxsZXIgY2FuIHJlYWNoIHRoZSBjb2RlLlxuXG5TbywgaG93IGNhbiBJIHRyaWdnZXIgYHdjbjM2eHhgPyBJcyBpdCBldmVuIHBvc3NpYmxlIHRvIGluc3RhbnRpYXRlIGl0PyBJIHJlbWVtYmVyIHBsYXRmb3JtIGRldmljZXMgY2FuIGJlIGNyZWF0ZWQgdXNpbmcgYHBsYXRmb3JtX2RldmljZV9yZWdpc3RlcmAsIGJ1dCBJIGNhbid0IGRvIHRoYXQgZnJvbSB1c2Vyc3BhY2UuIEkgdmFndWVseSByZWNhbGwgdGhlcmUncyBhIHdheSB0byBjcmVhdGUgdGhlbSB2aWEgdGhlIGBwbGF0Zm9ybWAgYnVzIHN5c2ZzLCBidXQgeW91IGNhbid0IGp1c3QgaW5zdGFudGlhdGUgYW55IGFyYml0cmFyeSBkZXZpY2UgdW5sZXNzIGEgZHJpdmVyIGFsbG93cyBpdC5cblxuTGV0J3Mgc2VlLi4uIGBtYWM4MDIxMV9od3NpbWA/IE5vLCB0aGF0J3MgZm9yIHNpbXVsYXRlZCByYWRpb3MsIGNvbXBsZXRlbHkgaXJyZWxldmFudC4gV2hhdCBhYm91dCBSUE1TRz8gTm93IHdlJ3JlIHRhbGtpbmcuIFJQTVNHIGRldmljZXMgY2FuIGJlIGNyZWF0ZWQgdGhyb3VnaCBgL2Rldi9ycG1zZ19jdHJsMGAgdXNpbmcgYFJQTVNHX0NSRUFURV9FUFRfSU9DVExgIG9yIGBSUE1TR19DUkVBVEVfREVWX0lPQ1RMYC4gVGhlIHF1ZXN0aW9uIGlzLCBpcyBgd2NuMzZ4eGAgYW4gUlBNU0cgZHJpdmVyPyBUaGF0J3MgdGhlIGtleS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE1MywiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMDo0NTo1Mi45MTY3OTM1NzdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjkzMTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjcwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNjcwOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHdjbjM2eHhfb2ZfbWF0Y2hbXSA9IHtcXG4xNjcxOlxcdFxcdHsgLmNvbXBhdGlibGUgPSBcXFwicWNvbSx3Y25zcy13bGFuXFxcIiB9LFxcbjE2NzI6XFx0XFx0e31cXG4xNjczOlxcdH07XFxuMTY3NDpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB3Y24zNnh4X29mX21hdGNoKTtcXG4xNjc1OlxcdFxcbjE2NzY6XFx0c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgd2NuMzZ4eF9kcml2ZXIgPSB7XFxuMTY3NzpcXHRcXHQucHJvYmUgPSB3Y24zNnh4X3Byb2JlLFxcbjE2Nzg6XFx0XFx0LnJlbW92ZSA9IHdjbjM2eHhfcmVtb3ZlLFxcbjE2Nzk6XFx0XFx0LmRyaXZlciA9IHtcXG4xNjgwOlxcdFxcdFxcdC5uYW1lID0gXFxcIndjbjM2eHhcXFwiLFxcbjE2ODE6XFx0XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gd2NuMzZ4eF9vZl9tYXRjaCxcXG4xNjgyOlxcdFxcdH0sXFxuMTY4MzpcXHR9O1xcbjE2ODQ6XFx0XFxuMTY4NTpcXHRtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHdjbjM2eHhfZHJpdmVyKTtcXG4xNjg2OlxcdFxcbjE2ODc6XFx0TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MCB3aXJlbGVzcyBkcml2ZXJcXFwiKTtcXG4xNjg4OlxcdE1PRFVMRV9MSUNFTlNFKFxcXCJEdWFsIEJTRC9HUExcXFwiKTtcXG4xNjg5OlxcdE1PRFVMRV9BVVRIT1IoXFxcIkV1Z2VuZSBLcmFzbmlrb3Ygay5ldWdlbmUuZUBnbWFpbC5jb21cXFwiKTtcXG4xNjkwOlxcdE1PRFVMRV9GSVJNV0FSRShXTEFOX05WX0ZJTEUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMDo0NTo1Mi45MTcwODk2MjdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzY1MTQ1OTcxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aCBGdXp6aW5nIERlY2lzaW9uOiBRdWFsY29tbSBXQ05TUyBXTEFOIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGFyZ2V0aW5nIGEgcGxhdGZvcm0gZHJpdmVyIG1hdGNoaW5nIGBcInFjb20sd2Nuc3Mtd2xhblwiYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gdGhpcyBiZSBldmVuIHRvdWNoZWQgYnkgc3l6a2FsbGVyPyBTeXprYWxsZXIgKmNhbiogdXNlIGRldmljZSB0cmVlIG92ZXJsYXlzLCBidXQgdGhhdCdzIG5vdCBpdHMgdHlwaWNhbCBtb2RlLCBlc3BlY2lhbGx5IG9uIHg4Nl82NCB3aGVyZSBpdCB1c3VhbGx5IHJ1bnMsIHdoaWNoIGRvZXNuJ3QgbmF0aXZlbHkgdXNlIE9GIG9mdGVuLCB0aG91Z2ggaXQncyAqcG9zc2libGUqIHRvIGVuYWJsZS4gSSB0aGVuIHRoaW5rIGFib3V0IGBzeXpfaW5pdF9uZXRfc29ja2V0YCBhbmQgc2ltaWxhciBmdW5jdGlvbnMgYW5kIGlmIHRoZXkgd291bGQgYmUgdXNlZnVsLCBidXQgdGhlbiBjb25zaWRlciBpZiBpdCBjYW4gZXZlbiByZWFjaCB2ZW5kb3Itc3BlY2lmaWMgUXVhbGNvbW0gZHJpdmVycy5cblxuR2VuZXJhbGx5LCBJIGtub3cgdmVuZG9yIGRyaXZlcnMgZm9yIGFjdHVhbCBoYXJkd2FyZSwgbGlrZSBQQ0llIGNhcmRzIG9yIFNvQy1zcGVjaWZpYyBibG9ja3MgbGlrZSB0aGlzIFdDTlNTLCBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCBRRU1VIHVubGVzcyB3ZSBoYXZlIHNwZWNpZmljIGVtdWxhdGlvbi4gTm93LCBkb2VzIFFFTVUgZW11bGF0ZSB0aGUgUXVhbGNvbW0gV0NOU1M/IE5vLCBpdCBkb2Vzbid0LiBTbywgbXkgZ3V0IHJlYWN0aW9uIGlzLCBpcyB0aGlzIGEgZGVhZCBlbmQ/IFNob3VsZCBJIGp1c3QgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgP1xuXG5UaGUgcHJvbXB0IHNwZWNpZmllcyB0byByZXR1cm4gZmFsc2UgaWYgdGhlIHBhdGNoIGhpdHMgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsIGVudmlyb25tZW50cywgbGlrZSBpbiBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlIGVtdWxhdGlvbiBvZiBoYXJkd2FyZSBhbmQgYWxzbyBtZW50aW9ucyB2ZW5kb3Itc3BlY2lmaWMgUENJZSwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLiBUaGlzIGB3Y24zNnh4YCBkcml2ZXIgaXMgUXVhbGNvbW0gc3BlY2lmaWMgZm9yIHRob3NlIG1vYmlsZSBjaGlwc2V0cywgYW5kIGl0ICpyZXF1aXJlcyogdGhlIFdDTlNTIGhhcmR3YXJlLCBvciBhdCBsZWFzdCB0aGUgUlBNU0cgY2hhbm5lbHMgdG8gdGFsayB0byB0aGUgV0NOU1MgZmlybXdhcmUuXG5cbkhvbGQgb24uLi4gaWYgaXQgdXNlcyBSUE1TRywgYW5kIFJQTVNHIGlzIGZ1enphYmxlLi4uIGNvdWxkIHRoZXJlIGJlIGEgd2F5IGluPyBOb3cgSSBuZWVkIHRvIGNoZWNrIGlmIFJQTVNHIGRldmljZXMgY2FuIGJlIGNyZWF0ZWQgZnJvbSB1c2Vyc3BhY2UgdG8gYmluZCB0byB0aGlzIGRyaXZlci4gQnV0IG5vLCB0aGlzIGRyaXZlciBpcyBhIGBwbGF0Zm9ybV9kcml2ZXJgLCBub3QgYW4gYHJwbXNnX2RyaXZlcmAuIEkga25vdyBpdCdzIGNhbGxpbmcgYHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsYCBpbiBpdHMgcHJvYmUgZnVuY3Rpb24uIFRoYXQncyBnb29kLCBgcWNvbV93Y25zc19vcGVuX2NoYW5uZWxgIGlzIGV4cG9ydGVkIGJ5IHRoYXQgYGRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jYCBmaWxlLiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBSUE1TRyBwYXRoIHRvIGRldGVybWluZSB3b3J0aGluZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTczLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDA6NDY6MDAuNTY4NTUyNzY4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTU0Njk1MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicWNvbV93Y25zc19vcGVuX2NoYW5uZWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zb2MvcWNvbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmM9MjAwPXN0YXRpYyBpbnQgd2Nuc3NfZG93bmxvYWRfbnYoc3RydWN0IHdjbnNzX2N0cmwgKndjbnNzLCBib29sICpleHBlY3RfY2JjKVxcbi0tXFxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMtMjc1LS8qKlxcbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jOjI3NjogKiBxY29tX3djbnNzX29wZW5fY2hhbm5lbCgpIC0gb3BlbiBhZGRpdGlvbmFsIFNNRCBjaGFubmVsIHRvIFdDTlNTXFxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMtMjc3LSAqIEB3Y25zczpcXHR3Y25zcyBoYW5kbGUsIHJldHJpZXZlZCBmcm9tIGRydmRhdGFcXG4tLVxcbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jLTI4MS0gKi9cXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYzoyODI6c3RydWN0IHJwbXNnX2VuZHBvaW50ICpxY29tX3djbnNzX29wZW5fY2hhbm5lbCh2b2lkICp3Y25zcywgY29uc3QgY2hhciAqbmFtZSwgcnBtc2dfcnhfY2JfdCBjYiwgdm9pZCAqcHJpdilcXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYy0yODMte1xcbi0tXFxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMtMjkyLX1cXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYzoyOTM6RVhQT1JUX1NZTUJPTF9HUEwocWNvbV93Y25zc19vcGVuX2NoYW5uZWwpO1xcbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jLTI5NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDA6NDY6MDEuMTI0MDI3NTM3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMTIxNzQ5MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSB3Y24zNnh4IERyaXZlciBhbmQgUUVNVSBDb21wYXRpYmlsaXR5KipcblxuT2theSwgc28gdGhlIGB3Y24zNnh4YCBkcml2ZXIgaXMgYSBwbGF0Zm9ybSBkcml2ZXIuIFRoYXQgbWVhbnMgaXQncyBkZXNpZ25lZCB0byBiZSBwcm9iZWQgYnkgYSBwbGF0Zm9ybSBidXMsIHR5cGljYWxseSB0aHJvdWdoIERldmljZSBUcmVlLCByaWdodD8gVGhlIHByb2JlIHJvdXRpbmUgaXMgZ29pbmcgdG8gZXhwZWN0IHRvIGdldCBpdHMgYHdjbnNzYCBoYW5kbGUgZnJvbSB0aGUgcGFyZW50IGRldmljZSBvciBzb21ldGhpbmcgc2ltaWxhciwgYW5kIHRoZW4gaXQnbGwgZ28gYWhlYWQgYW5kIG9wZW4gYW4gUlBNU0cgY2hhbm5lbC4gU2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYXJjaGl0ZWN0dXJhbGx5LlxuXG5CdXQgaGVyZSdzIHRoZSBraWNrZXI6IGl0J3MgbG9va2luZyBmb3IgYSAqc3BlY2lmaWMqIHBsYXRmb3JtIGRldmljZSDigJMgYSBgXCJxY29tLHdjbnNzLXdsYW5cImAgZGV2aWNlLiBBbmQgdGhhdCBkZXZpY2UgaXMgYSAqY2hpbGQqIG9mIHRoZSBXQ05TUyBibG9jay4gVGhpcyBpbW1lZGlhdGVseSBzY3JlYW1zIFwiUXVhbGNvbW0gU29DIHNwZWNpZmljXCIgdG8gbWUuXG5cblRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gSSBldmVuIHRvdWNoIHRoaXMgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50PyBHaXZlbiB0aGF0IFFFTVUgZG9lc24ndCBlbXVsYXRlIHRoZSBRdWFsY29tbSBXQ05TUyBibG9jaywgdGhlIGFuc3dlciBpcyBhIHJlc291bmRpbmcgbm8uIEV2ZW4gaWYgSSBnb3QgY2xldmVyIGFuZCB0cmllZCB0byBjcmVhdGUgdGhlIHBsYXRmb3JtIGRldmljZSBtYW51YWxseSB2aWEgc29tZSBzeXNmcyBoYWNrLCB0aGUgcHJvYmUgcm91dGluZSB3b3VsZCBmYWlsIGJlY2F1c2UgaXQncyBnb2luZyB0byBuZWVkIHRoYXQgYHdjbnNzYCBoYW5kbGUgYW5kIHRoZSBSUE1TRyBidXMgdG8gYmUgKnByZXNlbnQqIGFuZCAqZnVuY3Rpb25hbCouIEFuZCB3aXRob3V0IHRoZSBXQ05TUyBibG9jayBlbXVsYXRpb24sIHRoYXQncyBqdXN0IG5vdCBnb2luZyB0byBoYXBwZW4uXG5cbkFscmlnaHQsIGxldCdzIGp1c3QgbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciwgbW9yZSBmdW5kYW1lbnRhbCBpc3N1ZXMgaW4gdGhlIHByb2JlIHNlcXVlbmNlLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgYHdjbjM2eHhfcHJvYmVgIGZ1bmN0aW9uIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIGVhcmx5IGV4aXQgcG9pbnRzIHRoYXQgd291bGQgcXVpY2tseSBjb25maXJtIG15IHN1c3BpY2lvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODkyMCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMDo0NjowNi4zMzYyMDQ5NzZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcwNjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNTU4LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNTU4OlxcdHN0YXRpYyBpbnQgd2NuMzZ4eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbjE1NTk6XFx0e1xcbjE1NjA6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XFxuMTU2MTpcXHRcXHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuO1xcbjE1NjI6XFx0XFx0dm9pZCAqd2Nuc3M7XFxuMTU2MzpcXHRcXHRpbnQgcmV0O1xcbjE1NjQ6XFx0XFx0Y29uc3QgdTggKmFkZHI7XFxuMTU2NTpcXHRcXHRpbnQgbl9jaGFubmVscztcXG4xNTY2OlxcdFxcbjE1Njc6XFx0XFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcXFwicGxhdGZvcm0gcHJvYmVcXFxcblxcXCIpO1xcbjE1Njg6XFx0XFxuMTU2OTpcXHRcXHR3Y25zcyA9IGRldl9nZXRfZHJ2ZGF0YShwZGV2LVxcdTAwM2VkZXYucGFyZW50KTtcXG4xNTcwOlxcdFxcbjE1NzE6XFx0XFx0bl9jaGFubmVscyA9IHdjbl9iYW5kXzJnaHoubl9jaGFubmVscyArIHdjbl9iYW5kXzVnaHoubl9jaGFubmVscztcXG4xNTcyOlxcdFxcdGh3ID0gaWVlZTgwMjExX2FsbG9jX2h3KHN0cnVjdF9zaXplKHdjbiwgY2hhbl9zdXJ2ZXksIG5fY2hhbm5lbHMpLCBcXHUwMDI2d2NuMzZ4eF9vcHMpO1xcbjE1NzM6XFx0XFx0aWYgKCFodykge1xcbjE1NzQ6XFx0XFx0XFx0d2NuMzZ4eF9lcnIoXFxcImZhaWxlZCB0byBhbGxvYyBod1xcXFxuXFxcIik7XFxuMTU3NTpcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbjE1NzY6XFx0XFx0XFx0Z290byBvdXRfZXJyO1xcbjE1Nzc6XFx0XFx0fVxcbjE1Nzg6XFx0XFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgaHcpO1xcbjE1Nzk6XFx0XFx0d2NuID0gaHctXFx1MDAzZXByaXY7XFxuMTU4MDpcXHRcXHR3Y24tXFx1MDAzZWh3ID0gaHc7XFxuMTU4MTpcXHRcXHR3Y24tXFx1MDAzZWRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuMTU4MjpcXHRcXHR3Y24tXFx1MDAzZWZpcnN0X2Jvb3QgPSB0cnVlO1xcbjE1ODM6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2d2NuLVxcdTAwM2Vjb25mX211dGV4KTtcXG4xNTg0OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNndjbi1cXHUwMDNlaGFsX211dGV4KTtcXG4xNTg1OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNndjbi1cXHUwMDNlc2Nhbl9sb2NrKTtcXG4xNTg2OlxcdFxcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2d2NuLVxcdTAwM2VhbXNkdSk7XFxuMTU4NzpcXHRcXG4xNTg4OlxcdFxcdHdjbi1cXHUwMDNlaGFsX2J1ZiA9IGRldm1fa21hbGxvYyh3Y24tXFx1MDAzZWRldiwgV0NOMzZYWF9IQUxfQlVGX1NJWkUsIEdGUF9LRVJORUwpO1xcbjE1ODk6XFx0XFx0aWYgKCF3Y24tXFx1MDAzZWhhbF9idWYpIHtcXG4xNTkwOlxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuMTU5MTpcXHRcXHRcXHRnb3RvIG91dF93cTtcXG4xNTkyOlxcdFxcdH1cXG4xNTkzOlxcdFxcbjE1OTQ6XFx0XFx0cmV0ID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudCh3Y24tXFx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDMyKSk7XFxuMTU5NTpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbjE1OTY6XFx0XFx0XFx0d2NuMzZ4eF9lcnIoXFxcImZhaWxlZCB0byBzZXQgRE1BIG1hc2s6ICVkXFxcXG5cXFwiLCByZXQpO1xcbjE1OTc6XFx0XFx0XFx0Z290byBvdXRfd3E7XFxuMTU5ODpcXHRcXHR9XFxuMTU5OTpcXHRcXG4xNjAwOlxcdFxcdHdjbi1cXHUwMDNlbnZfZmlsZSA9IFdMQU5fTlZfRklMRTtcXG4xNjAxOlxcdFxcdHJldCA9IG9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nKHdjbi1cXHUwMDNlZGV2LVxcdTAwM2VwYXJlbnQtXFx1MDAzZW9mX25vZGUsIFxcXCJmaXJtd2FyZS1uYW1lXFxcIiwgXFx1MDAyNndjbi1cXHUwMDNlbnZfZmlsZSk7XFxuMTYwMjpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMCBcXHUwMDI2XFx1MDAyNiByZXQgIT0gLUVJTlZBTCkge1xcbjE2MDM6XFx0XFx0XFx0d2NuMzZ4eF9lcnIoXFxcImZhaWxlZCB0byByZWFkIFxcXFxcXFwiZmlybXdhcmUtbmFtZVxcXFxcXFwiIHByb3BlcnR5OiAlZFxcXFxuXFxcIiwgcmV0KTtcXG4xNjA0OlxcdFxcdFxcdGdvdG8gb3V0X3dxO1xcbjE2MDU6XFx0XFx0fVxcbjE2MDY6XFx0XFxuMTYwNzpcXHRcXHR3Y24tXFx1MDAzZXNtZF9jaGFubmVsID0gcWNvbV93Y25zc19vcGVuX2NoYW5uZWwod2Nuc3MsIFxcXCJXTEFOX0NUUkxcXFwiLCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcywgaHcpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMDo0NjowNi4zMzYzNzkyODZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA1MjA4ODg3MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPUZhbHNlOiBSZWFzb25pbmcgZm9yIEV4Y2x1ZGluZyB0aGUgd2NuMzZ4eCBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgc2NhbiBwb2ludHMgbWUgdG93YXJkIHRoZSBgd2NuMzZ4eGAgZHJpdmVyLCBhbmQgdGhhdCBpbW1lZGlhdGVseSBzZXRzIG9mZiBzb21lIGFsYXJtcy4gSSdtIHNlZWluZyBhY2Nlc3NlcyB0byBgcGRldi1cdTAwM2VkZXYucGFyZW50YCBhbmQgYSBzdWJzZXF1ZW50IGBkZXZfZ2V0X2RydmRhdGFgLiBJZiB0aGUgcGFyZW50IGlzbid0IHByb3Blcmx5IHNldCB1cCwgdGhpcyBpcyBnb2luZyB0byBjcmFzaCwgb3IgYXQgYmVzdCwgcmV0dXJuIE5VTEwuIFRoZW4sIGl0IGRpdmVzIGludG8gYG9mX25vZGVgIHByb3BlcnRpZXMsIHdoaWNoICpkZWZpbml0ZWx5KiByZXF1aXJlcyB0aGUgZGV2aWNlIHRyZWUgdG8gYmUgY29ycmVjdGx5IGluaXRpYWxpemVkLlxuXG5UaGlzIHNjcmVhbXMgXCJRdWFsY29tbS1zcGVjaWZpY1wiLiBUaGUgZHJpdmVyIGFic29sdXRlbHkgZXhwZWN0cyB0byBiZSBhIGNoaWxkIG9mIHRoZSBXQ05TUyBkZXZpY2UsIHNvbWV0aGluZyB0aGF0J3MgYnJvdWdodCB1cCBieSB0aGUgZGV2aWNlIHRyZWUgb24gUXVhbGNvbW0gU29Dcy4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgY2FuIHRlbGwgdGhpcyB3b24ndCBiZSByZWFjaGFibGUgaW4gYSBzdGFuZGFyZCBRRU1VIHNldHVwLlxuXG5Ob3csIEkgcGF1c2VkIGJyaWVmbHksIGNvbnNpZGVyaW5nIHRoZSBwb3NzaWJpbGl0eSBvZiBzeXprYWxsZXIgcnVubmluZyBvbiBhY3R1YWwgUXVhbGNvbW0gaGFyZHdhcmUuIEJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhlIHByb21wdCdzIGluc3RydWN0aW9ucy4gSXQgZXhwbGljaXRseSB3YW50cyBtZSB0byBleGNsdWRlIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgcmVseSBvbiBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gUUVNVS4gVGhpbmdzIGxpa2UgUENJZSBzd2l0Y2ggZHJpdmVycywgU21hcnROSUNzLCBHUFVzLi4uIFRoaXMgZHJpdmVyIGZpdHMgdGhlIGJpbGwuIEl0J3MgYSBRdWFsY29tbSBTb0MgZHJpdmVyLCBhbmQgaXQgbmVlZHMgdGhlIHNwZWNpZmljIFF1YWxjb21tIGhhcmR3YXJlIChvciBhdCBsZWFzdCB0aGUgc3BlY2lmaWMgZGV2aWNlIHRyZWUgYW5kIFJQTVNHIGluZnJhc3RydWN0dXJlKSwgd2hpY2gsIGFzIEkga25vdywgaXNuJ3Qgc29tZXRoaW5nIHRoYXQncyBlYXNpbHkgZnV6emFibGUgaW4gc3RhbmRhcmQgUUVNVS5cblxuSSBkb3VibGUtY2hlY2tlZCB0byBzZWUgaWYgdGhlcmUncyBhbnkgY2hhbmNlIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgY2FuIGJlIGNhbGxlZCBkaXJlY3RseSwgb3IgaWYgdGhlcmUncyBhIHN5emthbGxlciBwc2V1ZG8tc3lzY2FsbCBmb3IgaXQsIGJ1dCB0aGUgcHJvbXB0J3MgaW5zdHJ1Y3Rpb25zIGFyZSBjbGVhcjogaWYgaXQncyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgSSBzaG91bGQgcmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZS4gSSBhbSBub3QgdG8gc2VhcmNoIGZvciBzeXpsYW5nIGRlc2NyaXB0aW9ucy4gSXQgYWxsIGdvZXMgYmFjayB0byB0aG9zZSBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVVwiIHRoYXQgbmVlZCB0byBiZSBleGNsdWRlZC5cblxuQSBxdWljayB2ZXJpZmljYXRpb246IGB3Y24zNnh4YCBpcyBpbmRlZWQgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyIGZvciB0aG9zZSBXQ04zNjYwLzM2ODAgbW9iaWxlIGNoaXBzZXRzIGludGVncmF0ZWQgaW50byBRdWFsY29tbSBTbmFwZHJhZ29ucy4gVGhhdCBzZWFscyB0aGUgZGVhbC4gVGhpcyBpcyBub3QgYSBnZW5lcmljIHdpcmVsZXNzIGRyaXZlci5cblxuTXkgZmluYWwgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogVGhlIHBhdGNoIG1vZGlmaWVzIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgaW4gdGhlIGB3Y24zNnh4YCBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlciBmb3IgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgbW9iaWxlIGNoaXBzZXRzLiBUaGlzIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIFF1YWxjb21tIFNvQyBoYXJkd2FyZSBjb21wb25lbnRzIChXQ05TUykgYW5kIGNvbW11bmljYXRlcyB2aWEgdGhlIFJQTVNHIGJ1cy4gSXQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBhcyBpdCByZWxpZXMgb24gc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMgYW5kIHBhcmVudCBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZC4gVGhlcmVmb3JlLCBpdCBpcyBub3Qgc3VpdGFibGUgZm9yIGZ1enppbmcgaW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBXb3J0aEZ1enppbmc9ZmFsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNDA0LCJPdXRwdXRUb2tlbnMiOjE2NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAwOjQ2OjE2Ljg1NzI3MDc5MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgaW4gdGhlIGB3Y24zNnh4YCBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlciBmb3IgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgbW9iaWxlIGNoaXBzZXRzLiBUaGlzIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIFF1YWxjb21tIFNvQyBoYXJkd2FyZSBjb21wb25lbnRzIChXQ05TUykgYW5kIGNvbW11bmljYXRlcyB2aWEgdGhlIFJQTVNHIGJ1cy4gSXQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBhcyBpdCByZWxpZXMgb24gc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMgYW5kIHBhcmVudCBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZC4gVGhlcmVmb3JlLCBpdCBpcyBub3Qgc3VpdGFibGUgZm9yIGZ1enppbmcgaW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzYCBpbiB0aGUgYHdjbjM2eHhgIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgd2lyZWxlc3MgZHJpdmVyIGZvciBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MCBtb2JpbGUgY2hpcHNldHMuIFRoaXMgZHJpdmVyIGlzIGEgcGxhdGZvcm0gZHJpdmVyIHRoYXQgcmVxdWlyZXMgc3BlY2lmaWMgUXVhbGNvbW0gU29DIGhhcmR3YXJlIGNvbXBvbmVudHMgKFdDTlNTKSBhbmQgY29tbXVuaWNhdGVzIHZpYSB0aGUgUlBNU0cgYnVzLiBJdCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIG9yIHJlYWNoZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGFzIGl0IHJlbGllcyBvbiBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlcyBhbmQgcGFyZW50IGRldmljZXMgdGhhdCBhcmUgbm90IGVtdWxhdGVkLiBUaGVyZWZvcmUsIGl0IGlzIG5vdCBzdWl0YWJsZSBmb3IgZnV6emluZyBpbiBhIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6k8g9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-27 00:25:08 +0000 UTC FinishedAt: 2026-07-27 00:46: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+CgkJCTx0ZD4yMDI2LzA3LzI3IDAwOjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgaW4gdGhlIGB3Y24zNnh4YCBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlciBmb3IgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgbW9iaWxlIGNoaXBzZXRzLiBUaGlzIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIFF1YWxjb21tIFNvQyBoYXJkd2FyZSBjb21wb25lbnRzIChXQ05TUykgYW5kIGNvbW11bmljYXRlcyB2aWEgdGhlIFJQTVNHIGJ1cy4gSXQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBhcyBpdCByZWxpZXMgb24gc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMgYW5kIHBhcmVudCBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZC4gVGhlcmVmb3JlLCBpdCBpcyBub3Qgc3VpdGFibGUgZm9yIGZ1enppbmcgaW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwMDo0NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGRlNjg0NDk3MjE2MzI4MGQxOTEwZDU0ZjRlMzRlNDYxMWNhZTIxYmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAwMDo0NToxMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jXG5pbmRleCBjMGI0NzczNDU4MzJiOC4uMzJkZWM0NWRiYjUwZjUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmNcbkBAIC0zMjU0LDYgJiM0MzszMjU0LDExIEBAIGludCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcyhzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldixcbiBcdHN0cnVjdCB3Y24zNnh4X2hhbF9pbmRfbXNnICptc2dfaW5kO1xuIFx0d2NuMzZ4eF9kYmdfZHVtcChXQ04zNlhYX0RCR19TTURfRFVNUCwgXCYjMzQ7U01EIFx1MDAzY1x1MDAzY1x1MDAzYyBcJiMzNDssIGJ1ZiwgbGVuKTtcbiBcbiYjNDM7XHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKm1zZ19oZWFkZXIpKSB7XG4mIzQzO1x0XHR3Y24zNnh4X3dhcm4oXCYjMzQ7Q29ycnVwdGVkIEhBTCBtZXNzYWdlOiBsZW5ndGggJWRcXG5cJiMzNDssIGxlbik7XG4mIzQzO1x0XHRyZXR1cm4gMDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0c3dpdGNoIChtc2dfaGVhZGVyLVx1MDAzZW1zZ190eXBlKSB7XG4gXHRjYXNlIFdDTjM2WFhfSEFMX1NUQVJUX1JTUDpcbiBcdGNhc2UgV0NOMzZYWF9IQUxfQ09ORklHX1NUQV9SU1A6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDA6NDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgaW4gdGhlIGB3Y24zNnh4YCBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlciBmb3IgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgbW9iaWxlIGNoaXBzZXRzLiBUaGlzIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIFF1YWxjb21tIFNvQyBoYXJkd2FyZSBjb21wb25lbnRzIChXQ05TUykgYW5kIGNvbW11bmljYXRlcyB2aWEgdGhlIFJQTVNHIGJ1cy4gSXQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBhcyBpdCByZWxpZXMgb24gc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMgYW5kIHBhcmVudCBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZC4gVGhlcmVmb3JlLCBpdCBpcyBub3Qgc3VpdGFibGUgZm9yIGZ1enppbmcgaW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGRlNjg0NDk3MjE2MzI4MGQxOTEwZDU0ZjRlMzRlNDYxMWNhZTIxYmUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAyNyAwMDo0NToxMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmMKaW5kZXggYzBiNDc3MzQ1ODMyYjguLjMyZGVjNDVkYmI1MGY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYwpAQCAtMzI1NCw2ICYjNDM7MzI1NCwxMSBAQCBpbnQgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3Moc3RydWN0IHJwbXNnX2RldmljZSAqcnBkZXYsCiAJc3RydWN0IHdjbjM2eHhfaGFsX2luZF9tc2cgKm1zZ19pbmQ7CiAJd2NuMzZ4eF9kYmdfZHVtcChXQ04zNlhYX0RCR19TTURfRFVNUCwgJiMzNDtTTUQgJmx0OyZsdDsmbHQ7ICYjMzQ7LCBidWYsIGxlbik7CiAKJiM0MzsJaWYgKGxlbiAmbHQ7IHNpemVvZigqbXNnX2hlYWRlcikpIHsKJiM0MzsJCXdjbjM2eHhfd2FybigmIzM0O0NvcnJ1cHRlZCBIQUwgbWVzc2FnZTogbGVuZ3RoICVkXG4mIzM0OywgbGVuKTsKJiM0MzsJCXJldHVybiAwOwomIzQzOwl9CiYjNDM7CiAJc3dpdGNoIChtc2dfaGVhZGVyLSZndDttc2dfdHlwZSkgewogCWNhc2UgV0NOMzZYWF9IQUxfU1RBUlRfUlNQOgogCWNhc2UgV0NOMzZYWF9IQUxfQ09ORklHX1NUQV9SU1A6CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDAwOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNjMKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzOTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuY2AuIEl0JiMzOTtzIGEgc2ltcGxlIGxlbmd0aCBjaGVjayBhZGRlZCB0byBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgOgoKYGBgYwomIzQzOwlpZiAobGVuICZsdDsgc2l6ZW9mKCptc2dfaGVhZGVyKSkgewomIzQzOwkJd2NuMzZ4eF93YXJuKCYjMzQ7Q29ycnVwdGVkIEhBTCBtZXNzYWdlOiBsZW5ndGggJWRcbiYjMzQ7LCBsZW4pOwomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CX0KYGBgCgpGdW5jdGlvbmFsbHksIGl0JiMzOTtzIGp1c3QgYSBib3VuZHMgY2hlY2ssIHdoaWNoIGlzIGdvb2QgcHJhY3RpY2UuIFRoaXMgaXMgYSB3aXJlbGVzcyBkcml2ZXIgZm9yIHRoZSB3Y24zNnh4LCB3aGljaCBpcyBhIFF1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwIE1BQy9CQi9SYWRpbyBkcml2ZXIuIEl0JiMzOTtzIHVzaW5nIFNNRC9SUE1TRyB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBmaXJtd2FyZS4gTm93LCBteSBtaW5kIGltbWVkaWF0ZWx5IGdvZXMgdG8gd2hldGhlciB0aGlzIGlzIGEgcmVhY2hhYmxlIHRhcmdldCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50IGxpa2UgUUVNVS4KClRoZSBxdWVzdGlvbiBiZWNvbWVzLCBpcyB0aGlzIGZ1enphYmxlPyBSUE1TRyBkZXZpY2VzICpjYW4qIHNvbWV0aW1lcyBiZSBmdXp6ZWQgaWYgdGhlcmUmIzM5O3MgYSBtZXNzYWdlIGluamVjdGlvbiBwb2ludCwgYnV0IHRoZXkmIzM5O3JlIHR5cGljYWxseSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIGZvciBRdWFsY29tbSBTb0NzIChTbmFwZHJhZ29uKS4gQnV0IHRoZSBwYXRjaCBpcyBpbiBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgLCB3aGljaCBpcyBhbiBSUE1TRyBjYWxsYmFjaywgd2hpY2ggZG9lcyBtYWtlIGl0IGludGVyZXN0aW5nLiBDYW4gd2UgZnV6eiBSUE1TRyBlbmRwb2ludHMgaW4gc3l6a2FsbGVyPyBTeXprYWxsZXIgKmRvZXMqIGhhdmUgc29tZSBSUE1TRyBzdXBwb3J0LCBvciB3ZSBjb3VsZCBqdXN0IHRyZWF0IHRoaXMgbGlrZSBhbnkgd2lyZWxlc3MgZHJpdmVyIGFuZCBhc3N1bWUgaXQgKm1pZ2h0KiBiZSByZWFjaGFibGUgaWYgdGhlIFJQTVNHIGJ1cyBpcyBtb2NrYWJsZSBvciBpZiBpdCYjMzk7cyBqdXN0IGdlbmVyYWwga2VybmVsIGNvZGUuCgpXYWl0LCB0aGUgcHJvbXB0IHNhaWQgc29tZXRoaW5nIGFib3V0IHRoZSBjb2RlIGJlaW5nIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLCB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gU2luY2UgdGhpcyBpcyBhIHBsYXRmb3JtL1JQTVNHIGRyaXZlciBmb3IgUXVhbGNvbW0gU29DcyBJIHNob3VsZCBjaGVjayBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvS2NvbmZpZ2AgdG8gc2VlIGlmIHRoZXJlIGlzIGFueSBtZW50aW9uIG9mIGhhcmR3YXJlLCBqdXN0IGluIGNhc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDA6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogSVNDXG4gICAyOlx0Y29uZmlnIFdDTjM2WFhcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwIHN1cHBvcnRcJiMzNDtcbiAgIDQ6XHRcdGRlcGVuZHMgb24gTUFDODAyMTEgXHUwMDI2XHUwMDI2IEhBU19ETUFcbiAgIDU6XHRcdGRlcGVuZHMgb24gUUNPTV9XQ05TU19DVFJMIHx8IFFDT01fV0NOU1NfQ1RSTD1uXG4gICA2Olx0XHRkZXBlbmRzIG9uIFJQTVNHIHx8IFJQTVNHPW5cbiAgIDc6XHRcdGhlbHBcbiAgIDg6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciB3aXJlbGVzcyBhZGFwdGVycyBiYXNlZCBvblxuICAgOTpcdFx0ICBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAgYW5kIFdDTjM2ODAgbW9iaWxlIGNoaXBzZXRzLlxuICAxMDpcdFxuICAxMTpcdFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCYjMzk7bGwgYmUgY2FsbGVkIHdjbjM2eHguXG4gIDEyOlx0XG4gIDEzOlx0Y29uZmlnIFdDTjM2WFhfREVCVUdGU1xuICAxNDpcdFx0Ym9vbCBcJiMzNDtXQ04zNlhYIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuICAxNTpcdFx0ZGVwZW5kcyBvbiBXQ04zNlhYXG4gIDE2Olx0XHRoZWxwXG4gIDE3Olx0XHQgIEVuYWJsZWQgZGVidWdmcyBzdXBwb3J0XG4gIDE4Olx0XG4gIDE5Olx0XHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDA6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzMzMgoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFjaGluZyB0aGF0IFdpcmVsZXNzIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBkcml2ZXIsIGFuZCBpdCYjMzk7cyBlbnRhbmdsZWQgd2l0aCBgTUFDODAyMTFgLCBgSEFTX0RNQWAsIGBRQ09NX1dDTlNTX0NUUkxgLCBhbmQgYFJQTVNHYC4gVGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiBJIGV2ZW4gZ2V0IHRvIHRoaXMgdGhpbmcgd2l0aGluIFFFTVU/IFRoZXNlIHBsYXRmb3JtLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlcnMsIGVzcGVjaWFsbHkgUXVhbGNvbW0gc3R1ZmYsIGFyZSB1c3VhbGx5IGEgbmlnaHRtYXJlLiBUaGV5JiMzOTtyZSB0eXBpY2FsbHkgZGVzaWduZWQgdG8gYmUgdGlnaHRseSBpbnRlZ3JhdGVkIHdpdGggdGhlIGhhcmR3YXJlLiBVbmxlc3MgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyBlbXVsYXRvciBzZXR1cCwgb3IgaXQmIzM5O3MgYSBVU0Igb3IgU0RJTyBkcml2ZXIgSSBjYW4gaW50ZXJhY3Qgd2l0aCB1c2luZyBzb21lIGR1bW15IGRldmljZXMsIGl0JiMzOTtzIGEgbG9uZyBzaG90LgoKV2FpdCBhIHNlY29uZOKApiB3YXNuJiMzOTt0IHRoZXJlIHNvbWV0aGluZyBhYm91dCBSUE1TRyBkZXZpY2VzIGJlaW5nIGNyZWF0ZWQgdGhyb3VnaCBgcnBtc2dfY3RybGAgb3IgYSBzaW1pbGFyIGludGVyZmFjZT8gTWF5YmUgdGhlcmUmIzM5O3MgYSBjaGFuY2UuIEFuZCB3YXNuJiMzOTt0IHN5emthbGxlciBzdGFydGluZyB0byBzdXBwb3J0IGZ1enppbmcgUlBNU0c/IE9yIHdhcyB0aGF0IGp1c3QgdGhlIHN0YW5kYXJkIGRyaXZlciBpdHNlbGY/IE5lZWQgdG8gY2hlY2suCgpBbHJpZ2h0LCBsZXQmIzM5O3MgemVybyBpbiBvbiBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgLiBBaCwgdGhhdCYjMzk7cyB0aGUgY2FsbGJhY2sgKGBjYmApIGZvciB0aGUgcnBtc2cgZHJpdmVyLCBpc24mIzM5O3QgaXQ/IFNvLCBpZiBJIGNhbiB0cmlnZ2VyIGFuIFJQTVNHIGludGVyYWN0aW9uLCBtYXliZSBJIGNhbiBhY3R1YWxseSBnZXQgdG8gdGhpcyB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgY291bGQgYmUgcHJvbWlzaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDAwOjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3djbjM2eHhfc21kX3JzcF9wcm9jZXNzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYz0xNTU4PXN0YXRpYyBpbnQgd2NuMzZ4eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xNjA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjE2MDc6XHR3Y24tXHUwMDNlc21kX2NoYW5uZWwgPSBxY29tX3djbnNzX29wZW5fY2hhbm5lbCh3Y25zcywgXCYjMzQ7V0xBTl9DVFJMXCYjMzQ7LCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcywgaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE2MDgtXHRpZiAoSVNfRVJSKHdjbi1cdTAwM2VzbWRfY2hhbm5lbCkpIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYz0zMjAyPWludCB3Y24zNnh4X3NtZF9hZGRfYmVhY29uX2ZpbHRlcihzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jLTMyNDctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYzozMjQ4OmludCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcyhzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jLTMyNDktXHRcdFx0ICAgIHZvaWQgKmJ1ZiwgaW50IGxlbiwgdm9pZCAqcHJpdiwgdTMyIGFkZHIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmg9MTQwPWludCB3Y24zNnh4X3NtZF91cGRhdGVfY2ZnKHN0cnVjdCB3Y24zNnh4ICp3Y24sIHUzMiBjZmdfaWQsIHUzMiB2YWx1ZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuaC0xNDEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuaDoxNDI6aW50IHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzKHN0cnVjdCBycG1zZ19kZXZpY2UgKnJwZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmgtMTQzLVx0XHRcdCAgICB2b2lkICpidWYsIGludCBsZW4sIHZvaWQgKnByaXYsIHUzMiBhZGRyKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwMDo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzU1CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBRRU1VIEVudmlyb25tZW50IGZvciBXQ04zNlhYIERyaXZlciBJbnRlcmFjdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgd2NuMzZ4eF9wcm9iZWAgZnVuY3Rpb24sIHdoaWNoLCBhcyBJIHJlY2FsbCwgaXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgV0NOMzZYWCBkcml2ZXImIzM5O3MgcGxhdGZvcm0gZGV2aWNlIHNldHVwLiBQbGF0Zm9ybSBkZXZpY2VzLCByaWdodCwgdXN1YWxseSBjb21lIHRvIGxpZmUgdGhyb3VnaCBEZXZpY2UgVHJlZSBvciBBQ1BJLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtDYW4gd2UgdHJpZ2dlciB0aGlzIHNwZWNpZmljIGB3Y24zNnh4YCBwcm9iZSB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50PyYjMzQ7IEkgbWVhbiwgdGhhdCYjMzk7cyB0aGUgc2V0dXAgSSYjMzk7bSB3b3JraW5nIHdpdGguIFR5cGljYWxseSwgeW91JiMzOTtkIGJlIGhhcmQtcHJlc3NlZCB0byBqdXN0IGluc3RhbnRpYXRlIGEgcmFuZG9tIHBsYXRmb3JtIGRldmljZSBpbiBRRU1VIHVubGVzcywgcGVyaGFwcywgdGhlcmUmIzM5O3MgYSBjdXN0b20gcHNldWRvLWRldmljZSBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIGZ1enppbmcsIGxpa2Ugd2hhdCBTeXprYWxsZXIgb2Z0ZW4gcHJvdmlkZXMsIG9yIGlmIHRoZSBkZXZpY2UgaXMgYXR0YWNoZWQgdG8gYSBnZW5lcmljIGJ1cyB0aGF0IFFFTVUgbmF0aXZlbHkgZW11bGF0ZXMuIEhtbSwgYnV0IGhhbmcgb24gYSBtaW51dGUuLi4gd2FpdC4uLiBJJiMzOTttIG1pc3Npbmcgc29tZXRoaW5nLCBgd2NuMzZ4eF9wcm9iZWAgaXNuJiMzOTt0IGp1c3QgKmEqIGZ1bmN0aW9uLCBpdCYjMzk7cyBleHBsaWNpdGx5IHJlZ2lzdGVyZWQgYXMgYSBwbGF0Zm9ybSAqZHJpdmVyKi4gVGhhdCBpcyB0aGUgY2x1ZSEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwMDo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BsYXRmb3JtX2RyaXZlcl9yZWdpc3RlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDA6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDczNgoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyB0aGlzIGNvZGU6CgoqKkRpdmluZyBpbnRvIHRoZSBgd2NuMzZ4eF9wcm9iZWAgRnVuY3Rpb24gQ2FsbCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIGB3Y24zNnh4X3Byb2JlYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHRyYWNlIGJhY2sgaXRzIGNhbGwgcGF0aC4gV2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBiZWluZyBpbnZva2VkPyBJcyBpdCB3aXRoaW4gdGhlIFBDSSBkcml2ZXIgaW5pdGlhbGl6YXRpb24sIGEgcGxhdGZvcm0gZGV2aWNlIHJlZ2lzdHJhdGlvbiwgb3Igc29tZXdoZXJlIGVsc2UgZW50aXJlbHk/IEtub3dpbmcgdGhlIGNhbGxlciBpcyBhYnNvbHV0ZWx5IGNydWNpYWwgdG8gZ3Jhc3BpbmcgaXRzIHB1cnBvc2UgYW5kIHRoZSBpbmZvcm1hdGlvbiBpdCYjMzk7cyByZWx5aW5nIG9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgaW5pdGlhdGluZyBjb25kaXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwMDo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt3Y24zNnh4X3Byb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYz0xNDcyPXN0YXRpYyBpbnQgd2NuMzZ4eF9wbGF0Zm9ybV9nZXRfcmVzb3VyY2VzKHN0cnVjdCB3Y24zNnh4ICp3Y24sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE1NTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MTU1ODpzdGF0aWMgaW50IHdjbjM2eHhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xNTU5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM9MTY3Nj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB3Y24zNnh4X2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYzoxNjc3Olx0LnByb2JlID0gd2NuMzZ4eF9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xNjc4LVx0LnJlbW92ZSA9IHdjbjM2eHhfcmVtb3ZlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwMDo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTg0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNDY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIHRoaXMgUGxhdGZvcm0gRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGB3Y24zNnh4YCBkcml2ZXIsIGFuZCBpbW1lZGlhdGVseSBteSBleHBlcnQgYnJhaW4gZmxhZ3MgaXQgYXMgYSBwbGF0Zm9ybSBkcml2ZXIuIEkgc2VlIHRoZSBzdGFuZGFyZCBzdHJ1Y3R1cmUgd2l0aCBgcHJvYmVgLCBgcmVtb3ZlYCwgYW5kIHRoZSBkcml2ZXImIzM5O3MgbmFtZSwgJiMzNDt3Y24zNnh4JiMzNDssIGFsb25nIHdpdGggdGhlIE9GIG1hdGNoIHRhYmxlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBwbGF0Zm9ybSBkcml2ZXJzICpjYW4qIGJlIGJvdW5kIHZpYSBzeXNmcyBpZiB3ZSBjYW4gY3JlYXRlIHRoZSBwbGF0Zm9ybSBkZXZpY2UuIEkga25vdyBzeXprYWxsZXIgKmNhbiogY3JlYXRlIHBsYXRmb3JtIGRldmljZXMgYnkgd3JpdGluZyB0byBzb21ldGhpbmcgbGlrZSBgL3N5cy9kZXZpY2VzL3BsYXRmb3JtYCwgb3Igc28gSSB0aGluay4gQnV0IGl0JiMzOTtzIHVzdWFsbHkgbGltaXRlZCB0byBzcGVjaWZpYyBoYXJkd2FyZSBvciBkZXZpY2UgdHJlZSBub2Rlcywgb3IgbWF5YmUgdXNpbmcgYHN5el9kZXZsaW5rX25ldGAsIGFsdGhvdWdoIHRoYXQmIzM5O3Mgbm90IHR5cGljYWxseSByZWxldmFudCBmb3IgcGxhdGZvcm0gZGV2aWNlcyB1bmxlc3MgdGhlcmUmIzM5O3MgYW4gZW11bGF0b3Igc3BlY2lmaWNhbGx5IHNldCB1cC4KCldhaXQgYSBtaW51dGUsIGNhbiBzeXprYWxsZXIgKmFjdHVhbGx5KiBmdXp6IHBsYXRmb3JtIGRyaXZlcnM/IEl0JiMzOTtzIG5vdCBzdHJhaWdodGZvcndhcmQgdG8gaW5zdGFudGlhdGUgYXJiaXRyYXJ5IHBsYXRmb3JtIGRldmljZXMgdW5sZXNzIHRoZXkmIzM5O3JlIGluIHRoZSBkZXZpY2UgdHJlZSBvciB0aGVyZSYjMzk7cyBhIHBzZXVkby1zeXNjYWxsIHRoYXQmIzM5O3Mgc3BlY2lmaWMgdG8gc3l6a2FsbGVyLCBhbmQgdGhlcmUmIzM5O3Mgbm90IGEgbG90IG9mIHRoYXQuCgpIb2xkIG9uLCBJIG5lZWQgdG8gY2hlY2sgdGhlIHByb21wdCEgJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zLi4uIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4uLiYjMzQ7IE9rYXksIHRoaXMgYHdjbjM2eHhgIGlzIGEgUXVhbGNvbW0gQXRoZXJvcyB3aXJlbGVzcyBkcml2ZXIgZm9yIG1vYmlsZSBjaGlwc2V0cyAoV0NOMzY2MC8zNjgwKS4gSSBrbm93IGl0IHJlbGllcyBvbiBgUUNPTV9XQ05TU19DVFJMYCBhbmQgUlBNU0cuIEl0JiMzOTtzICpkZWZpbml0ZWx5KiBhIHBsYXRmb3JtIGRldmljZSBkcml2ZXIuCgpUaGUgbWlsbGlvbi1kb2xsYXIgcXVlc3Rpb246IElzIGl0IHJlYWNoYWJsZSBpbiBRRU1VPyBSUE1TRyBkZXZpY2VzICpjYW4qIHNvbWV0aW1lcyBiZSBjcmVhdGVkLCBidXQgdGhpcyBpcyBhICpwbGF0Zm9ybSogZGV2aWNlIGB3Y24zNnh4YCwgd2hpY2ggbWFrZXMgdGhpbmdzIHRyaWNraWVyLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgbm90IGxpa2UgdGhvc2UgUENJZSBzd2l0Y2hlcyBhbmQgU21hcnROSUNzLiBJJiMzOTttIHRoaW5raW5nIEkgaGF2ZSB0byBjaGVjayBpZiBzeXprYWxsZXIgaGFzIGFueSBwcmVkZWZpbmVkIGRlc2NyaXB0aW9ucyBmb3IgYHdjbjM2eHhgIG9yIGBycG1zZ2AuIE90aGVyd2lzZSwgaXQmIzM5O3MgdmVyeSBsaWtlbHkgSSYjMzk7bGwgaGF2ZSB0byBtYXJrIHRoaXMgYXMgbm90IGltbWVkaWF0ZWx5IGZ1enphYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwMDo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3djbjM2eHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDA6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjE1MwoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDU0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFN5emthbGxlciBCdWcgUmVwb3J0OiBBIFRob3VnaHQgUHJvY2VzcyoqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHN5emthbGxlciBoYXMgYW55IGhlbHBmdWwgc3l6bGFuZyBkZXNjcmlwdGlvbnMgZm9yIHRoaXMuIExldCYjMzk7cyBzZWUuLi4gdGhlIHByb21wdCBtZW50aW9ucyBhIGB0b29sUmVhZERlc2NyaXB0aW9uYCB0b29sLCBidXQgd2FpdCwgaXQmIzM5O3Mgbm90IGFjdHVhbGx5IGF2YWlsYWJsZS4gVGhhdCYjMzk7cyBhIGJpdCBhbm5veWluZy4gSG93ZXZlciwgSSBrbm93IGB3Y24zNnh4YCBpcyBhIHBsYXRmb3JtIGRyaXZlciBzcGVjaWZpY2FsbHkgZm9yIGEgUXVhbGNvbW0gU29DIGNvbXBvbmVudC4gVGhlIGNoYWxsZW5nZSBoZXJlIGlzIHRoYXQgaXQmIzM5O3MgcHJvYmFibHkgbm90IGVhc2lseSByZWFjaGFibGUgaW4gc3RhbmRhcmQgUUVNVSBzZXR1cHMsIGVzcGVjaWFsbHkgY29uc2lkZXJpbmcgc3l6a2FsbGVyIHR5cGljYWxseSBydW5zIG9uIHg4Nl82NCBvciBnZW5lcmljIGFybTY0IHZpcnQgYm9hcmRzLiBVbmxlc3MgdGhlcmUmIzM5O3Mgc3BlY2lmaWMgUXVhbGNvbW0gU29DIGVtdWxhdGlvbiwgd2hpY2ggc29tZSBRRU1VIGJ1aWxkcyBtaWdodCBoYXZlLCBidXQgaXNuJiMzOTt0IHRoZSBub3JtLgoKSG9sZCBvbiwgdGhlIGNvbW1pdCBhdXRob3IgaXMgbGlzdGVkIGFzIGBzeXotY2x1c3RlcmAuIEhtbSwgaWYgc3l6a2FsbGVyIGZvdW5kIHRoaXMgYnVnLCBpdCBtZWFucyBzeXprYWxsZXIgKmRpZCogcmVhY2ggaXQhIEJ1dCwgcmVhZGluZyBvbiwgdGhlIGNvbW1pdCBtZXNzYWdlIHNheXMgJiMzNDtzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcmIzM0Oy4gQWgsIGl0IGltcGxpZXMgc3l6a2FsbGVyIGlzICp0ZXN0aW5nKiB0aGlzIHBhdGNoLCBub3QgbmVjZXNzYXJpbHkgdGhhdCBpdCAqZm91bmQqIGEgYnVnLiBTeXprYWxsZXIgbWlnaHQganVzdCBiZSB0ZXN0aW5nIGEgcGF0Y2ggdGhhdCYjMzk7cyB1bmRlciByZXZpZXcsIGJlY2F1c2UgaXQgd2FzIHN1Ym1pdHRlZCB0byBhIG1haWxpbmcgbGlzdCBvciBzaW1pbGFyLiBJdCBkb2VzbiYjMzk7dCBtZWFuIHN5emthbGxlciBjYW4gcmVhY2ggdGhlIGNvZGUuCgpTbywgaG93IGNhbiBJIHRyaWdnZXIgYHdjbjM2eHhgPyBJcyBpdCBldmVuIHBvc3NpYmxlIHRvIGluc3RhbnRpYXRlIGl0PyBJIHJlbWVtYmVyIHBsYXRmb3JtIGRldmljZXMgY2FuIGJlIGNyZWF0ZWQgdXNpbmcgYHBsYXRmb3JtX2RldmljZV9yZWdpc3RlcmAsIGJ1dCBJIGNhbiYjMzk7dCBkbyB0aGF0IGZyb20gdXNlcnNwYWNlLiBJIHZhZ3VlbHkgcmVjYWxsIHRoZXJlJiMzOTtzIGEgd2F5IHRvIGNyZWF0ZSB0aGVtIHZpYSB0aGUgYHBsYXRmb3JtYCBidXMgc3lzZnMsIGJ1dCB5b3UgY2FuJiMzOTt0IGp1c3QgaW5zdGFudGlhdGUgYW55IGFyYml0cmFyeSBkZXZpY2UgdW5sZXNzIGEgZHJpdmVyIGFsbG93cyBpdC4KCkxldCYjMzk7cyBzZWUuLi4gYG1hYzgwMjExX2h3c2ltYD8gTm8sIHRoYXQmIzM5O3MgZm9yIHNpbXVsYXRlZCByYWRpb3MsIGNvbXBsZXRlbHkgaXJyZWxldmFudC4gV2hhdCBhYm91dCBSUE1TRz8gTm93IHdlJiMzOTtyZSB0YWxraW5nLiBSUE1TRyBkZXZpY2VzIGNhbiBiZSBjcmVhdGVkIHRocm91Z2ggYC9kZXYvcnBtc2dfY3RybDBgIHVzaW5nIGBSUE1TR19DUkVBVEVfRVBUX0lPQ1RMYCBvciBgUlBNU0dfQ1JFQVRFX0RFVl9JT0NUTGAuIFRoZSBxdWVzdGlvbiBpcywgaXMgYHdjbjM2eHhgIGFuIFJQTVNHIGRyaXZlcj8gVGhhdCYjMzk7cyB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwMDo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE2NzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTY3MDpcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHdjbjM2eHhfb2ZfbWF0Y2hbXSA9IHtcbjE2NzE6XHRcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtxY29tLHdjbnNzLXdsYW5cJiMzNDsgfSxcbjE2NzI6XHRcdHt9XG4xNjczOlx0fTtcbjE2NzQ6XHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB3Y24zNnh4X29mX21hdGNoKTtcbjE2NzU6XHRcbjE2NzY6XHRzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB3Y24zNnh4X2RyaXZlciA9IHtcbjE2Nzc6XHRcdC5wcm9iZSA9IHdjbjM2eHhfcHJvYmUsXG4xNjc4Olx0XHQucmVtb3ZlID0gd2NuMzZ4eF9yZW1vdmUsXG4xNjc5Olx0XHQuZHJpdmVyID0ge1xuMTY4MDpcdFx0XHQubmFtZSA9IFwmIzM0O3djbjM2eHhcJiMzNDssXG4xNjgxOlx0XHRcdC5vZl9tYXRjaF90YWJsZSA9IHdjbjM2eHhfb2ZfbWF0Y2gsXG4xNjgyOlx0XHR9LFxuMTY4MzpcdH07XG4xNjg0Olx0XG4xNjg1Olx0bW9kdWxlX3BsYXRmb3JtX2RyaXZlcih3Y24zNnh4X2RyaXZlcik7XG4xNjg2Olx0XG4xNjg3Olx0TU9EVUxFX0RFU0NSSVBUSU9OKFwmIzM0O1F1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwIHdpcmVsZXNzIGRyaXZlclwmIzM0Oyk7XG4xNjg4Olx0TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7RHVhbCBCU0QvR1BMXCYjMzQ7KTtcbjE2ODk6XHRNT0RVTEVfQVVUSE9SKFwmIzM0O0V1Z2VuZSBLcmFzbmlrb3Ygay5ldWdlbmUuZUBnbWFpbC5jb21cJiMzNDspO1xuMTY5MDpcdE1PRFVMRV9GSVJNV0FSRShXTEFOX05WX0ZJTEUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAwMDo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTczCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDk0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoIEZ1enppbmcgRGVjaXNpb246IFF1YWxjb21tIFdDTlNTIFdMQU4gRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHRhcmdldGluZyBhIHBsYXRmb3JtIGRyaXZlciBtYXRjaGluZyBgJiMzNDtxY29tLHdjbnNzLXdsYW4mIzM0O2AuIE15IGluaXRpYWwgdGhvdWdodCBpcywgY2FuIHRoaXMgYmUgZXZlbiB0b3VjaGVkIGJ5IHN5emthbGxlcj8gU3l6a2FsbGVyICpjYW4qIHVzZSBkZXZpY2UgdHJlZSBvdmVybGF5cywgYnV0IHRoYXQmIzM5O3Mgbm90IGl0cyB0eXBpY2FsIG1vZGUsIGVzcGVjaWFsbHkgb24geDg2XzY0IHdoZXJlIGl0IHVzdWFsbHkgcnVucywgd2hpY2ggZG9lc24mIzM5O3QgbmF0aXZlbHkgdXNlIE9GIG9mdGVuLCB0aG91Z2ggaXQmIzM5O3MgKnBvc3NpYmxlKiB0byBlbmFibGUuIEkgdGhlbiB0aGluayBhYm91dCBgc3l6X2luaXRfbmV0X3NvY2tldGAgYW5kIHNpbWlsYXIgZnVuY3Rpb25zIGFuZCBpZiB0aGV5IHdvdWxkIGJlIHVzZWZ1bCwgYnV0IHRoZW4gY29uc2lkZXIgaWYgaXQgY2FuIGV2ZW4gcmVhY2ggdmVuZG9yLXNwZWNpZmljIFF1YWxjb21tIGRyaXZlcnMuCgpHZW5lcmFsbHksIEkga25vdyB2ZW5kb3IgZHJpdmVycyBmb3IgYWN0dWFsIGhhcmR3YXJlLCBsaWtlIFBDSWUgY2FyZHMgb3IgU29DLXNwZWNpZmljIGJsb2NrcyBsaWtlIHRoaXMgV0NOU1MsIGFyZSBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIHN0YW5kYXJkIFFFTVUgdW5sZXNzIHdlIGhhdmUgc3BlY2lmaWMgZW11bGF0aW9uLiBOb3csIGRvZXMgUUVNVSBlbXVsYXRlIHRoZSBRdWFsY29tbSBXQ05TUz8gTm8sIGl0IGRvZXNuJiMzOTt0LiBTbywgbXkgZ3V0IHJlYWN0aW9uIGlzLCBpcyB0aGlzIGEgZGVhZCBlbmQ/IFNob3VsZCBJIGp1c3QgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgPwoKVGhlIHByb21wdCBzcGVjaWZpZXMgdG8gcmV0dXJuIGZhbHNlIGlmIHRoZSBwYXRjaCBoaXRzIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbCBlbnZpcm9ubWVudHMsIGxpa2UgaW4gR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBzb2Z0d2FyZSBlbXVsYXRpb24gb2YgaGFyZHdhcmUgYW5kIGFsc28gbWVudGlvbnMgdmVuZG9yLXNwZWNpZmljIFBDSWUsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4gVGhpcyBgd2NuMzZ4eGAgZHJpdmVyIGlzIFF1YWxjb21tIHNwZWNpZmljIGZvciB0aG9zZSBtb2JpbGUgY2hpcHNldHMsIGFuZCBpdCAqcmVxdWlyZXMqIHRoZSBXQ05TUyBoYXJkd2FyZSwgb3IgYXQgbGVhc3QgdGhlIFJQTVNHIGNoYW5uZWxzIHRvIHRhbGsgdG8gdGhlIFdDTlNTIGZpcm13YXJlLgoKSG9sZCBvbi4uLiBpZiBpdCB1c2VzIFJQTVNHLCBhbmQgUlBNU0cgaXMgZnV6emFibGUuLi4gY291bGQgdGhlcmUgYmUgYSB3YXkgaW4/IE5vdyBJIG5lZWQgdG8gY2hlY2sgaWYgUlBNU0cgZGV2aWNlcyBjYW4gYmUgY3JlYXRlZCBmcm9tIHVzZXJzcGFjZSB0byBiaW5kIHRvIHRoaXMgZHJpdmVyLiBCdXQgbm8sIHRoaXMgZHJpdmVyIGlzIGEgYHBsYXRmb3JtX2RyaXZlcmAsIG5vdCBhbiBgcnBtc2dfZHJpdmVyYC4gSSBrbm93IGl0JiMzOTtzIGNhbGxpbmcgYHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsYCBpbiBpdHMgcHJvYmUgZnVuY3Rpb24uIFRoYXQmIzM5O3MgZ29vZCwgYHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsYCBpcyBleHBvcnRlZCBieSB0aGF0IGBkcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuY2AgZmlsZS4gSSBuZWVkIHRvIGRpZyBkZWVwZXIgaW50byB0aGUgUlBNU0cgcGF0aCB0byBkZXRlcm1pbmUgd29ydGhpbmVzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDA6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cWNvbV93Y25zc19vcGVuX2NoYW5uZWwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3NvYy9xY29tLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYz0yMDA9c3RhdGljIGludCB3Y25zc19kb3dubG9hZF9udihzdHJ1Y3Qgd2Nuc3NfY3RybCAqd2Nuc3MsIGJvb2wgKmV4cGVjdF9jYmMpXG4tLVxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMtMjc1LS8qKlxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmM6Mjc2OiAqIHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsKCkgLSBvcGVuIGFkZGl0aW9uYWwgU01EIGNoYW5uZWwgdG8gV0NOU1NcbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jLTI3Ny0gKiBAd2Nuc3M6XHR3Y25zcyBoYW5kbGUsIHJldHJpZXZlZCBmcm9tIGRydmRhdGFcbi0tXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYy0yODEtICovXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYzoyODI6c3RydWN0IHJwbXNnX2VuZHBvaW50ICpxY29tX3djbnNzX29wZW5fY2hhbm5lbCh2b2lkICp3Y25zcywgY29uc3QgY2hhciAqbmFtZSwgcnBtc2dfcnhfY2JfdCBjYiwgdm9pZCAqcHJpdilcbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jLTI4My17XG4tLVxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMtMjkyLX1cbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jOjI5MzpFWFBPUlRfU1lNQk9MX0dQTChxY29tX3djbnNzX29wZW5fY2hhbm5lbCk7XG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYy0yOTQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDAwOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg5MjAKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxOTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSB3Y24zNnh4IERyaXZlciBhbmQgUUVNVSBDb21wYXRpYmlsaXR5KioKCk9rYXksIHNvIHRoZSBgd2NuMzZ4eGAgZHJpdmVyIGlzIGEgcGxhdGZvcm0gZHJpdmVyLiBUaGF0IG1lYW5zIGl0JiMzOTtzIGRlc2lnbmVkIHRvIGJlIHByb2JlZCBieSBhIHBsYXRmb3JtIGJ1cywgdHlwaWNhbGx5IHRocm91Z2ggRGV2aWNlIFRyZWUsIHJpZ2h0PyBUaGUgcHJvYmUgcm91dGluZSBpcyBnb2luZyB0byBleHBlY3QgdG8gZ2V0IGl0cyBgd2Nuc3NgIGhhbmRsZSBmcm9tIHRoZSBwYXJlbnQgZGV2aWNlIG9yIHNvbWV0aGluZyBzaW1pbGFyLCBhbmQgdGhlbiBpdCYjMzk7bGwgZ28gYWhlYWQgYW5kIG9wZW4gYW4gUlBNU0cgY2hhbm5lbC4gU2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYXJjaGl0ZWN0dXJhbGx5LgoKQnV0IGhlcmUmIzM5O3MgdGhlIGtpY2tlcjogaXQmIzM5O3MgbG9va2luZyBmb3IgYSAqc3BlY2lmaWMqIHBsYXRmb3JtIGRldmljZSDigJMgYSBgJiMzNDtxY29tLHdjbnNzLXdsYW4mIzM0O2AgZGV2aWNlLiBBbmQgdGhhdCBkZXZpY2UgaXMgYSAqY2hpbGQqIG9mIHRoZSBXQ05TUyBibG9jay4gVGhpcyBpbW1lZGlhdGVseSBzY3JlYW1zICYjMzQ7UXVhbGNvbW0gU29DIHNwZWNpZmljJiMzNDsgdG8gbWUuCgpUaGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIEkgZXZlbiB0b3VjaCB0aGlzIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudD8gR2l2ZW4gdGhhdCBRRU1VIGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIFF1YWxjb21tIFdDTlNTIGJsb2NrLCB0aGUgYW5zd2VyIGlzIGEgcmVzb3VuZGluZyBuby4gRXZlbiBpZiBJIGdvdCBjbGV2ZXIgYW5kIHRyaWVkIHRvIGNyZWF0ZSB0aGUgcGxhdGZvcm0gZGV2aWNlIG1hbnVhbGx5IHZpYSBzb21lIHN5c2ZzIGhhY2ssIHRoZSBwcm9iZSByb3V0aW5lIHdvdWxkIGZhaWwgYmVjYXVzZSBpdCYjMzk7cyBnb2luZyB0byBuZWVkIHRoYXQgYHdjbnNzYCBoYW5kbGUgYW5kIHRoZSBSUE1TRyBidXMgdG8gYmUgKnByZXNlbnQqIGFuZCAqZnVuY3Rpb25hbCouIEFuZCB3aXRob3V0IHRoZSBXQ05TUyBibG9jayBlbXVsYXRpb24sIHRoYXQmIzM5O3MganVzdCBub3QgZ29pbmcgdG8gaGFwcGVuLgoKQWxyaWdodCwgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciwgbW9yZSBmdW5kYW1lbnRhbCBpc3N1ZXMgaW4gdGhlIHByb2JlIHNlcXVlbmNlLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgYHdjbjM2eHhfcHJvYmVgIGZ1bmN0aW9uIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIGVhcmx5IGV4aXQgcG9pbnRzIHRoYXQgd291bGQgcXVpY2tseSBjb25maXJtIG15IHN1c3BpY2lvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDA6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTU4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE1NTg6XHRzdGF0aWMgaW50IHdjbjM2eHhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbjE1NTk6XHR7XG4xNTYwOlx0XHRzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodztcbjE1NjE6XHRcdHN0cnVjdCB3Y24zNnh4ICp3Y247XG4xNTYyOlx0XHR2b2lkICp3Y25zcztcbjE1NjM6XHRcdGludCByZXQ7XG4xNTY0Olx0XHRjb25zdCB1OCAqYWRkcjtcbjE1NjU6XHRcdGludCBuX2NoYW5uZWxzO1xuMTU2NjpcdFxuMTU2NzpcdFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcJiMzNDtwbGF0Zm9ybSBwcm9iZVxcblwmIzM0Oyk7XG4xNTY4Olx0XG4xNTY5Olx0XHR3Y25zcyA9IGRldl9nZXRfZHJ2ZGF0YShwZGV2LVx1MDAzZWRldi5wYXJlbnQpO1xuMTU3MDpcdFxuMTU3MTpcdFx0bl9jaGFubmVscyA9IHdjbl9iYW5kXzJnaHoubl9jaGFubmVscyAmIzQzOyB3Y25fYmFuZF81Z2h6Lm5fY2hhbm5lbHM7XG4xNTcyOlx0XHRodyA9IGllZWU4MDIxMV9hbGxvY19odyhzdHJ1Y3Rfc2l6ZSh3Y24sIGNoYW5fc3VydmV5LCBuX2NoYW5uZWxzKSwgXHUwMDI2d2NuMzZ4eF9vcHMpO1xuMTU3MzpcdFx0aWYgKCFodykge1xuMTU3NDpcdFx0XHR3Y24zNnh4X2VycihcJiMzNDtmYWlsZWQgdG8gYWxsb2MgaHdcXG5cJiMzNDspO1xuMTU3NTpcdFx0XHRyZXQgPSAtRU5PTUVNO1xuMTU3NjpcdFx0XHRnb3RvIG91dF9lcnI7XG4xNTc3Olx0XHR9XG4xNTc4Olx0XHRwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBodyk7XG4xNTc5Olx0XHR3Y24gPSBody1cdTAwM2Vwcml2O1xuMTU4MDpcdFx0d2NuLVx1MDAzZWh3ID0gaHc7XG4xNTgxOlx0XHR3Y24tXHUwMDNlZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4xNTgyOlx0XHR3Y24tXHUwMDNlZmlyc3RfYm9vdCA9IHRydWU7XG4xNTgzOlx0XHRtdXRleF9pbml0KFx1MDAyNndjbi1cdTAwM2Vjb25mX211dGV4KTtcbjE1ODQ6XHRcdG11dGV4X2luaXQoXHUwMDI2d2NuLVx1MDAzZWhhbF9tdXRleCk7XG4xNTg1Olx0XHRtdXRleF9pbml0KFx1MDAyNndjbi1cdTAwM2VzY2FuX2xvY2spO1xuMTU4NjpcdFx0X19za2JfcXVldWVfaGVhZF9pbml0KFx1MDAyNndjbi1cdTAwM2VhbXNkdSk7XG4xNTg3Olx0XG4xNTg4Olx0XHR3Y24tXHUwMDNlaGFsX2J1ZiA9IGRldm1fa21hbGxvYyh3Y24tXHUwMDNlZGV2LCBXQ04zNlhYX0hBTF9CVUZfU0laRSwgR0ZQX0tFUk5FTCk7XG4xNTg5Olx0XHRpZiAoIXdjbi1cdTAwM2VoYWxfYnVmKSB7XG4xNTkwOlx0XHRcdHJldCA9IC1FTk9NRU07XG4xNTkxOlx0XHRcdGdvdG8gb3V0X3dxO1xuMTU5MjpcdFx0fVxuMTU5MzpcdFxuMTU5NDpcdFx0cmV0ID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudCh3Y24tXHUwMDNlZGV2LCBETUFfQklUX01BU0soMzIpKTtcbjE1OTU6XHRcdGlmIChyZXQgXHUwMDNjIDApIHtcbjE1OTY6XHRcdFx0d2NuMzZ4eF9lcnIoXCYjMzQ7ZmFpbGVkIHRvIHNldCBETUEgbWFzazogJWRcXG5cJiMzNDssIHJldCk7XG4xNTk3Olx0XHRcdGdvdG8gb3V0X3dxO1xuMTU5ODpcdFx0fVxuMTU5OTpcdFxuMTYwMDpcdFx0d2NuLVx1MDAzZW52X2ZpbGUgPSBXTEFOX05WX0ZJTEU7XG4xNjAxOlx0XHRyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3N0cmluZyh3Y24tXHUwMDNlZGV2LVx1MDAzZXBhcmVudC1cdTAwM2VvZl9ub2RlLCBcJiMzNDtmaXJtd2FyZS1uYW1lXCYjMzQ7LCBcdTAwMjZ3Y24tXHUwMDNlbnZfZmlsZSk7XG4xNjAyOlx0XHRpZiAocmV0IFx1MDAzYyAwIFx1MDAyNlx1MDAyNiByZXQgIT0gLUVJTlZBTCkge1xuMTYwMzpcdFx0XHR3Y24zNnh4X2VycihcJiMzNDtmYWlsZWQgdG8gcmVhZCBcXFwmIzM0O2Zpcm13YXJlLW5hbWVcXFwmIzM0OyBwcm9wZXJ0eTogJWRcXG5cJiMzNDssIHJldCk7XG4xNjA0Olx0XHRcdGdvdG8gb3V0X3dxO1xuMTYwNTpcdFx0fVxuMTYwNjpcdFxuMTYwNzpcdFx0d2NuLVx1MDAzZXNtZF9jaGFubmVsID0gcWNvbV93Y25zc19vcGVuX2NoYW5uZWwod2Nuc3MsIFwmIzM0O1dMQU5fQ1RSTFwmIzM0Oywgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3MsIGh3KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMDA6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA0MDQKCQkJCQkJCW91dHB1dDogMTY0CgkJCQkJCQl0aG91Z2h0czogNjk1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKldvcnRoRnV6emluZz1GYWxzZTogUmVhc29uaW5nIGZvciBFeGNsdWRpbmcgdGhlIHdjbjM2eHggRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgc2NhbiBwb2ludHMgbWUgdG93YXJkIHRoZSBgd2NuMzZ4eGAgZHJpdmVyLCBhbmQgdGhhdCBpbW1lZGlhdGVseSBzZXRzIG9mZiBzb21lIGFsYXJtcy4gSSYjMzk7bSBzZWVpbmcgYWNjZXNzZXMgdG8gYHBkZXYtJmd0O2Rldi5wYXJlbnRgIGFuZCBhIHN1YnNlcXVlbnQgYGRldl9nZXRfZHJ2ZGF0YWAuIElmIHRoZSBwYXJlbnQgaXNuJiMzOTt0IHByb3Blcmx5IHNldCB1cCwgdGhpcyBpcyBnb2luZyB0byBjcmFzaCwgb3IgYXQgYmVzdCwgcmV0dXJuIE5VTEwuIFRoZW4sIGl0IGRpdmVzIGludG8gYG9mX25vZGVgIHByb3BlcnRpZXMsIHdoaWNoICpkZWZpbml0ZWx5KiByZXF1aXJlcyB0aGUgZGV2aWNlIHRyZWUgdG8gYmUgY29ycmVjdGx5IGluaXRpYWxpemVkLgoKVGhpcyBzY3JlYW1zICYjMzQ7UXVhbGNvbW0tc3BlY2lmaWMmIzM0Oy4gVGhlIGRyaXZlciBhYnNvbHV0ZWx5IGV4cGVjdHMgdG8gYmUgYSBjaGlsZCBvZiB0aGUgV0NOU1MgZGV2aWNlLCBzb21ldGhpbmcgdGhhdCYjMzk7cyBicm91Z2h0IHVwIGJ5IHRoZSBkZXZpY2UgdHJlZSBvbiBRdWFsY29tbSBTb0NzLiBSaWdodCBvZmYgdGhlIGJhdCwgSSBjYW4gdGVsbCB0aGlzIHdvbiYjMzk7dCBiZSByZWFjaGFibGUgaW4gYSBzdGFuZGFyZCBRRU1VIHNldHVwLgoKTm93LCBJIHBhdXNlZCBicmllZmx5LCBjb25zaWRlcmluZyB0aGUgcG9zc2liaWxpdHkgb2Ygc3l6a2FsbGVyIHJ1bm5pbmcgb24gYWN0dWFsIFF1YWxjb21tIGhhcmR3YXJlLiBCdXQgdGhlbiBJIHJlbWVtYmVyIHRoZSBwcm9tcHQmIzM5O3MgaW5zdHJ1Y3Rpb25zLiBJdCBleHBsaWNpdGx5IHdhbnRzIG1lIHRvIGV4Y2x1ZGUgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgdGhhdCByZWx5IG9uIHBoeXNpY2FsIGhhcmR3YXJlIG5vdCBlbXVsYXRlZCBpbiBRRU1VLiBUaGluZ3MgbGlrZSBQQ0llIHN3aXRjaCBkcml2ZXJzLCBTbWFydE5JQ3MsIEdQVXMuLi4gVGhpcyBkcml2ZXIgZml0cyB0aGUgYmlsbC4gSXQmIzM5O3MgYSBRdWFsY29tbSBTb0MgZHJpdmVyLCBhbmQgaXQgbmVlZHMgdGhlIHNwZWNpZmljIFF1YWxjb21tIGhhcmR3YXJlIChvciBhdCBsZWFzdCB0aGUgc3BlY2lmaWMgZGV2aWNlIHRyZWUgYW5kIFJQTVNHIGluZnJhc3RydWN0dXJlKSwgd2hpY2gsIGFzIEkga25vdywgaXNuJiMzOTt0IHNvbWV0aGluZyB0aGF0JiMzOTtzIGVhc2lseSBmdXp6YWJsZSBpbiBzdGFuZGFyZCBRRU1VLgoKSSBkb3VibGUtY2hlY2tlZCB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYW55IGNoYW5jZSBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgIGNhbiBiZSBjYWxsZWQgZGlyZWN0bHksIG9yIGlmIHRoZXJlJiMzOTtzIGEgc3l6a2FsbGVyIHBzZXVkby1zeXNjYWxsIGZvciBpdCwgYnV0IHRoZSBwcm9tcHQmIzM5O3MgaW5zdHJ1Y3Rpb25zIGFyZSBjbGVhcjogaWYgaXQmIzM5O3MgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIEkgc2hvdWxkIHJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UuIEkgYW0gbm90IHRvIHNlYXJjaCBmb3Igc3l6bGFuZyBkZXNjcmlwdGlvbnMuIEl0IGFsbCBnb2VzIGJhY2sgdG8gdGhvc2UgJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUmIzM0OyB0aGF0IG5lZWQgdG8gYmUgZXhjbHVkZWQuCgpBIHF1aWNrIHZlcmlmaWNhdGlvbjogYHdjbjM2eHhgIGlzIGluZGVlZCBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIgZm9yIHRob3NlIFdDTjM2NjAvMzY4MCBtb2JpbGUgY2hpcHNldHMgaW50ZWdyYXRlZCBpbnRvIFF1YWxjb21tIFNuYXBkcmFnb25zLiBUaGF0IHNlYWxzIHRoZSBkZWFsLiBUaGlzIGlzIG5vdCBhIGdlbmVyaWMgd2lyZWxlc3MgZHJpdmVyLgoKTXkgZmluYWwgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogVGhlIHBhdGNoIG1vZGlmaWVzIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgaW4gdGhlIGB3Y24zNnh4YCBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlciBmb3IgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgbW9iaWxlIGNoaXBzZXRzLiBUaGlzIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIFF1YWxjb21tIFNvQyBoYXJkd2FyZSBjb21wb25lbnRzIChXQ05TUykgYW5kIGNvbW11bmljYXRlcyB2aWEgdGhlIFJQTVNHIGJ1cy4gSXQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBhcyBpdCByZWxpZXMgb24gc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMgYW5kIHBhcmVudCBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZC4gVGhlcmVmb3JlLCBpdCBpcyBub3Qgc3VpdGFibGUgZm9yIGZ1enppbmcgaW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBXb3J0aEZ1enppbmc9ZmFsc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDAwOjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzYCBpbiB0aGUgYHdjbjM2eHhgIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgd2lyZWxlc3MgZHJpdmVyIGZvciBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MCBtb2JpbGUgY2hpcHNldHMuIFRoaXMgZHJpdmVyIGlzIGEgcGxhdGZvcm0gZHJpdmVyIHRoYXQgcmVxdWlyZXMgc3BlY2lmaWMgUXVhbGNvbW0gU29DIGhhcmR3YXJlIGNvbXBvbmVudHMgKFdDTlNTKSBhbmQgY29tbXVuaWNhdGVzIHZpYSB0aGUgUlBNU0cgYnVzLiBJdCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIG9yIHJlYWNoZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGFzIGl0IHJlbGllcyBvbiBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlcyBhbmQgcGFyZW50IGRldmljZXMgdGhhdCBhcmUgbm90IGVtdWxhdGVkLiBUaGVyZWZvcmUsIGl0IGlzIG5vdCBzdWl0YWJsZSBmb3IgZnV6emluZyBpbiBhIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3NgIGluIHRoZSBgd2NuMzZ4eGAgZHJpdmVyLCB3aGljaCBpcyBhIHZlbmRvci1zcGVjaWZpYyB3aXJlbGVzcyBkcml2ZXIgZm9yIFF1YWxjb21tIEF0aGVyb3MgV0NOMzY2MC8zNjgwIG1vYmlsZSBjaGlwc2V0cy4gVGhpcyBkcml2ZXIgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgdGhhdCByZXF1aXJlcyBzcGVjaWZpYyBRdWFsY29tbSBTb0MgaGFyZHdhcmUgY29tcG9uZW50cyAoV0NOU1MpIGFuZCBjb21tdW5pY2F0ZXMgdmlhIHRoZSBSUE1TRyBidXMuIEl0IGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQgb3IgcmVhY2hlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgYXMgaXQgcmVsaWVzIG9uIHNwZWNpZmljIGRldmljZSB0cmVlIG5vZGVzIGFuZCBwYXJlbnQgZGV2aWNlcyB0aGF0IGFyZSBub3QgZW11bGF0ZWQuIFRoZXJlZm9yZSwgaXQgaXMgbm90IHN1aXRhYmxlIGZvciBmdXp6aW5nIGluIGEgZ2VuZXJpYyB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMDo0NToxNS4wMTkxMzMxNzNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTgzODE3OTcyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzYCBpbiB0aGUgYHdjbjM2eHhgIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgd2lyZWxlc3MgZHJpdmVyIGZvciBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MCBtb2JpbGUgY2hpcHNldHMuIFRoaXMgZHJpdmVyIGlzIGEgcGxhdGZvcm0gZHJpdmVyIHRoYXQgcmVxdWlyZXMgc3BlY2lmaWMgUXVhbGNvbW0gU29DIGhhcmR3YXJlIGNvbXBvbmVudHMgKFdDTlNTKSBhbmQgY29tbXVuaWNhdGVzIHZpYSB0aGUgUlBNU0cgYnVzLiBJdCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIG9yIHJlYWNoZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGFzIGl0IHJlbGllcyBvbiBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlcyBhbmQgcGFyZW50IGRldmljZXMgdGhhdCBhcmUgbm90IGVtdWxhdGVkLiBUaGVyZWZvcmUsIGl0IGlzIG5vdCBzdWl0YWJsZSBmb3IgZnV6emluZyBpbiBhIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMDo0NToxNS4wMTkxNDI5NzNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMjY3NTA1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGRlNjg0NDk3MjE2MzI4MGQxOTEwZDU0ZjRlMzRlNDYxMWNhZTIxYmVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgMjcgMDA6NDU6MTMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuY1xcbmluZGV4IGMwYjQ3NzM0NTgzMmI4Li4zMmRlYzQ1ZGJiNTBmNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jXFxuQEAgLTMyNTQsNiArMzI1NCwxMSBAQCBpbnQgd2NuMzZ4eF9zbWRfcnNwX3Byb2Nlc3Moc3RydWN0IHJwbXNnX2RldmljZSAqcnBkZXYsXFxuIFxcdHN0cnVjdCB3Y24zNnh4X2hhbF9pbmRfbXNnICptc2dfaW5kO1xcbiBcXHR3Y24zNnh4X2RiZ19kdW1wKFdDTjM2WFhfREJHX1NNRF9EVU1QLCBcXFwiU01EIFxcdTAwM2NcXHUwMDNjXFx1MDAzYyBcXFwiLCBidWYsIGxlbik7XFxuIFxcbitcXHRpZiAobGVuIFxcdTAwM2Mgc2l6ZW9mKCptc2dfaGVhZGVyKSkge1xcbitcXHRcXHR3Y24zNnh4X3dhcm4oXFxcIkNvcnJ1cHRlZCBIQUwgbWVzc2FnZTogbGVuZ3RoICVkXFxcXG5cXFwiLCBsZW4pO1xcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFx0fVxcbitcXG4gXFx0c3dpdGNoIChtc2dfaGVhZGVyLVxcdTAwM2Vtc2dfdHlwZSkge1xcbiBcXHRjYXNlIFdDTjM2WFhfSEFMX1NUQVJUX1JTUDpcXG4gXFx0Y2FzZSBXQ04zNlhYX0hBTF9DT05GSUdfU1RBX1JTUDpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDA6NDU6MTUuNjUyNzQ5ODgxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NjEyMDQ1NTUxNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgaW4gdGhlIGB3Y24zNnh4YCBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlciBmb3IgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgbW9iaWxlIGNoaXBzZXRzLiBUaGlzIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIFF1YWxjb21tIFNvQyBoYXJkd2FyZSBjb21wb25lbnRzIChXQ05TUykgYW5kIGNvbW11bmljYXRlcyB2aWEgdGhlIFJQTVNHIGJ1cy4gSXQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBhcyBpdCByZWxpZXMgb24gc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMgYW5kIHBhcmVudCBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZC4gVGhlcmVmb3JlLCBpdCBpcyBub3Qgc3VpdGFibGUgZm9yIGZ1enppbmcgaW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZGU2ODQ0OTcyMTYzMjgwZDE5MTBkNTRmNGUzNGU0NjExY2FlMjFiZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDI3IDAwOjQ1OjEzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuY1xuaW5kZXggYzBiNDc3MzQ1ODMyYjguLjMyZGVjNDVkYmI1MGY1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jXG5AQCAtMzI1NCw2ICszMjU0LDExIEBAIGludCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcyhzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldixcbiBcdHN0cnVjdCB3Y24zNnh4X2hhbF9pbmRfbXNnICptc2dfaW5kO1xuIFx0d2NuMzZ4eF9kYmdfZHVtcChXQ04zNlhYX0RCR19TTURfRFVNUCwgXCJTTUQgXHUwMDNjXHUwMDNjXHUwMDNjIFwiLCBidWYsIGxlbik7XG4gXG4rXHRpZiAobGVuIFx1MDAzYyBzaXplb2YoKm1zZ19oZWFkZXIpKSB7XG4rXHRcdHdjbjM2eHhfd2FybihcIkNvcnJ1cHRlZCBIQUwgbWVzc2FnZTogbGVuZ3RoICVkXFxuXCIsIGxlbik7XG4rXHRcdHJldHVybiAwO1xuK1x0fVxuK1xuIFx0c3dpdGNoIChtc2dfaGVhZGVyLVx1MDAzZW1zZ190eXBlKSB7XG4gXHRjYXNlIFdDTjM2WFhfSEFMX1NUQVJUX1JTUDpcbiBcdGNhc2UgV0NOMzZYWF9IQUxfQ09ORklHX1NUQV9SU1A6XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMDo0NToxNS42NTI3NTE4MjFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MDIwMjMxODEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFdpcmVsZXNzIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jYC4gSXQncyBhIHNpbXBsZSBsZW5ndGggY2hlY2sgYWRkZWQgdG8gYHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzYDpcblxuYGBgY1xuK1x0aWYgKGxlbiBcdTAwM2Mgc2l6ZW9mKCptc2dfaGVhZGVyKSkge1xuK1x0XHR3Y24zNnh4X3dhcm4oXCJDb3JydXB0ZWQgSEFMIG1lc3NhZ2U6IGxlbmd0aCAlZFxcblwiLCBsZW4pO1xuK1x0XHRyZXR1cm4gMDtcbitcdH1cbmBgYFxuXG5GdW5jdGlvbmFsbHksIGl0J3MganVzdCBhIGJvdW5kcyBjaGVjaywgd2hpY2ggaXMgZ29vZCBwcmFjdGljZS4gVGhpcyBpcyBhIHdpcmVsZXNzIGRyaXZlciBmb3IgdGhlIHdjbjM2eHgsIHdoaWNoIGlzIGEgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgTUFDL0JCL1JhZGlvIGRyaXZlci4gSXQncyB1c2luZyBTTUQvUlBNU0cgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgZmlybXdhcmUuIE5vdywgbXkgbWluZCBpbW1lZGlhdGVseSBnb2VzIHRvIHdoZXRoZXIgdGhpcyBpcyBhIHJlYWNoYWJsZSB0YXJnZXQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUuXG5cblRoZSBxdWVzdGlvbiBiZWNvbWVzLCBpcyB0aGlzIGZ1enphYmxlPyBSUE1TRyBkZXZpY2VzICpjYW4qIHNvbWV0aW1lcyBiZSBmdXp6ZWQgaWYgdGhlcmUncyBhIG1lc3NhZ2UgaW5qZWN0aW9uIHBvaW50LCBidXQgdGhleSdyZSB0eXBpY2FsbHkgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVycyBmb3IgUXVhbGNvbW0gU29DcyAoU25hcGRyYWdvbikuIEJ1dCB0aGUgcGF0Y2ggaXMgaW4gYHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzYCwgd2hpY2ggaXMgYW4gUlBNU0cgY2FsbGJhY2ssIHdoaWNoIGRvZXMgbWFrZSBpdCBpbnRlcmVzdGluZy4gQ2FuIHdlIGZ1enogUlBNU0cgZW5kcG9pbnRzIGluIHN5emthbGxlcj8gU3l6a2FsbGVyICpkb2VzKiBoYXZlIHNvbWUgUlBNU0cgc3VwcG9ydCwgb3Igd2UgY291bGQganVzdCB0cmVhdCB0aGlzIGxpa2UgYW55IHdpcmVsZXNzIGRyaXZlciBhbmQgYXNzdW1lIGl0ICptaWdodCogYmUgcmVhY2hhYmxlIGlmIHRoZSBSUE1TRyBidXMgaXMgbW9ja2FibGUgb3IgaWYgaXQncyBqdXN0IGdlbmVyYWwga2VybmVsIGNvZGUuXG5cbldhaXQsIHRoZSBwcm9tcHQgc2FpZCBzb21ldGhpbmcgYWJvdXQgdGhlIGNvZGUgYmVpbmcgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMsIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBTaW5jZSB0aGlzIGlzIGEgcGxhdGZvcm0vUlBNU0cgZHJpdmVyIGZvciBRdWFsY29tbSBTb0NzIEkgc2hvdWxkIGNoZWNrIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9LY29uZmlnYCB0byBzZWUgaWYgdGhlcmUgaXMgYW55IG1lbnRpb24gb2YgaGFyZHdhcmUsIGp1c3QgaW4gY2FzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE2MywiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAwOjQ1OjIyLjY3Mjk4NjAyNFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwMzIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcXG4gICAyOlxcdGNvbmZpZyBXQ04zNlhYXFxuICAgMzpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTEgXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBRQ09NX1dDTlNTX0NUUkwgfHwgUUNPTV9XQ05TU19DVFJMPW5cXG4gICA2OlxcdFxcdGRlcGVuZHMgb24gUlBNU0cgfHwgUlBNU0c9blxcbiAgIDc6XFx0XFx0aGVscFxcbiAgIDg6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uXFxuICAgOTpcXHRcXHQgIFF1YWxjb21tIEF0aGVyb3MgV0NOMzY2MCBhbmQgV0NOMzY4MCBtb2JpbGUgY2hpcHNldHMuXFxuICAxMDpcXHRcXG4gIDExOlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQnbGwgYmUgY2FsbGVkIHdjbjM2eHguXFxuICAxMjpcXHRcXG4gIDEzOlxcdGNvbmZpZyBXQ04zNlhYX0RFQlVHRlNcXG4gIDE0OlxcdFxcdGJvb2wgXFxcIldDTjM2WFggZGVidWdmcyBzdXBwb3J0XFxcIlxcbiAgMTU6XFx0XFx0ZGVwZW5kcyBvbiBXQ04zNlhYXFxuICAxNjpcXHRcXHRoZWxwXFxuICAxNzpcXHRcXHQgIEVuYWJsZWQgZGVidWdmcyBzdXBwb3J0XFxuICAxODpcXHRcXG4gIDE5OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWSB0byBtYWtlIGl0IGVhc2llciB0byBkZWJ1ZyBwcm9ibGVtcy5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDA6NDU6MjIuNjczMDU4ODQ0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU1ODM4MjQ1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFjaGluZyB0aGF0IFdpcmVsZXNzIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLCBhbmQgaXQncyBlbnRhbmdsZWQgd2l0aCBgTUFDODAyMTFgLCBgSEFTX0RNQWAsIGBRQ09NX1dDTlNTX0NUUkxgLCBhbmQgYFJQTVNHYC4gVGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiBJIGV2ZW4gZ2V0IHRvIHRoaXMgdGhpbmcgd2l0aGluIFFFTVU/IFRoZXNlIHBsYXRmb3JtLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlcnMsIGVzcGVjaWFsbHkgUXVhbGNvbW0gc3R1ZmYsIGFyZSB1c3VhbGx5IGEgbmlnaHRtYXJlLiBUaGV5J3JlIHR5cGljYWxseSBkZXNpZ25lZCB0byBiZSB0aWdodGx5IGludGVncmF0ZWQgd2l0aCB0aGUgaGFyZHdhcmUuIFVubGVzcyB0aGVyZSdzIGEgc3BlY2lmaWMgZW11bGF0b3Igc2V0dXAsIG9yIGl0J3MgYSBVU0Igb3IgU0RJTyBkcml2ZXIgSSBjYW4gaW50ZXJhY3Qgd2l0aCB1c2luZyBzb21lIGR1bW15IGRldmljZXMsIGl0J3MgYSBsb25nIHNob3QuXG5cbldhaXQgYSBzZWNvbmTigKYgd2Fzbid0IHRoZXJlIHNvbWV0aGluZyBhYm91dCBSUE1TRyBkZXZpY2VzIGJlaW5nIGNyZWF0ZWQgdGhyb3VnaCBgcnBtc2dfY3RybGAgb3IgYSBzaW1pbGFyIGludGVyZmFjZT8gTWF5YmUgdGhlcmUncyBhIGNoYW5jZS4gQW5kIHdhc24ndCBzeXprYWxsZXIgc3RhcnRpbmcgdG8gc3VwcG9ydCBmdXp6aW5nIFJQTVNHPyBPciB3YXMgdGhhdCBqdXN0IHRoZSBzdGFuZGFyZCBkcml2ZXIgaXRzZWxmPyBOZWVkIHRvIGNoZWNrLlxuXG5BbHJpZ2h0LCBsZXQncyB6ZXJvIGluIG9uIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AuIEFoLCB0aGF0J3MgdGhlIGNhbGxiYWNrIChgY2JgKSBmb3IgdGhlIHJwbXNnIGRyaXZlciwgaXNuJ3QgaXQ/IFNvLCBpZiBJIGNhbiB0cmlnZ2VyIGFuIFJQTVNHIGludGVyYWN0aW9uLCBtYXliZSBJIGNhbiBhY3R1YWxseSBnZXQgdG8gdGhpcyB3aXJlbGVzcyBkcml2ZXIuIFRoaXMgY291bGQgYmUgcHJvbWlzaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzMyLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDA6NDU6MjcuMjMxNDQ0MzU2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0Nzk4OTg5NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jPTE1NTg9c3RhdGljIGludCB3Y24zNnh4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMTYwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM6MTYwNzpcXHR3Y24tXFx1MDAzZXNtZF9jaGFubmVsID0gcWNvbV93Y25zc19vcGVuX2NoYW5uZWwod2Nuc3MsIFxcXCJXTEFOX0NUUkxcXFwiLCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcywgaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uYy0xNjA4LVxcdGlmIChJU19FUlIod2NuLVxcdTAwM2VzbWRfY2hhbm5lbCkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jPTMyMDI9aW50IHdjbjM2eHhfc21kX2FkZF9iZWFjb25fZmlsdGVyKHN0cnVjdCB3Y24zNnh4ICp3Y24sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuYy0zMjQ3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jOjMyNDg6aW50IHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzKHN0cnVjdCBycG1zZ19kZXZpY2UgKnJwZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L3NtZC5jLTMyNDktXFx0XFx0XFx0ICAgIHZvaWQgKmJ1ZiwgaW50IGxlbiwgdm9pZCAqcHJpdiwgdTMyIGFkZHIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuaD0xNDA9aW50IHdjbjM2eHhfc21kX3VwZGF0ZV9jZmcoc3RydWN0IHdjbjM2eHggKndjbiwgdTMyIGNmZ19pZCwgdTMyIHZhbHVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuaC0xNDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvc21kLmg6MTQyOmludCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcyhzdHJ1Y3QgcnBtc2dfZGV2aWNlICpycGRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9zbWQuaC0xNDMtXFx0XFx0XFx0ICAgIHZvaWQgKmJ1ZiwgaW50IGxlbiwgdm9pZCAqcHJpdiwgdTMyIGFkZHIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMDo0NToyNy4zNzk0NDA4ODNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzY0MTQxNjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUUVNVSBFbnZpcm9ubWVudCBmb3IgV0NOMzZYWCBEcml2ZXIgSW50ZXJhY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGB3Y24zNnh4X3Byb2JlYCBmdW5jdGlvbiwgd2hpY2gsIGFzIEkgcmVjYWxsLCBpcyB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBXQ04zNlhYIGRyaXZlcidzIHBsYXRmb3JtIGRldmljZSBzZXR1cC4gUGxhdGZvcm0gZGV2aWNlcywgcmlnaHQsIHVzdWFsbHkgY29tZSB0byBsaWZlIHRocm91Z2ggRGV2aWNlIFRyZWUgb3IgQUNQSS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiQ2FuIHdlIHRyaWdnZXIgdGhpcyBzcGVjaWZpYyBgd2NuMzZ4eGAgcHJvYmUgd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudD9cIiBJIG1lYW4sIHRoYXQncyB0aGUgc2V0dXAgSSdtIHdvcmtpbmcgd2l0aC4gVHlwaWNhbGx5LCB5b3UnZCBiZSBoYXJkLXByZXNzZWQgdG8ganVzdCBpbnN0YW50aWF0ZSBhIHJhbmRvbSBwbGF0Zm9ybSBkZXZpY2UgaW4gUUVNVSB1bmxlc3MsIHBlcmhhcHMsIHRoZXJlJ3MgYSBjdXN0b20gcHNldWRvLWRldmljZSBzcGVjaWZpY2FsbHkgZGVzaWduZWQgZm9yIGZ1enppbmcsIGxpa2Ugd2hhdCBTeXprYWxsZXIgb2Z0ZW4gcHJvdmlkZXMsIG9yIGlmIHRoZSBkZXZpY2UgaXMgYXR0YWNoZWQgdG8gYSBnZW5lcmljIGJ1cyB0aGF0IFFFTVUgbmF0aXZlbHkgZW11bGF0ZXMuIEhtbSwgYnV0IGhhbmcgb24gYSBtaW51dGUuLi4gd2FpdC4uLiBJJ20gbWlzc2luZyBzb21ldGhpbmcsIGB3Y24zNnh4X3Byb2JlYCBpc24ndCBqdXN0ICphKiBmdW5jdGlvbiwgaXQncyBleHBsaWNpdGx5IHJlZ2lzdGVyZWQgYXMgYSBwbGF0Zm9ybSAqZHJpdmVyKi4gVGhhdCBpcyB0aGUgY2x1ZSFcblxuXG4iLCJJbnB1dFRva2VucyI6NDM1NSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAwOjQ1OjMxLjE0MzU4NTFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAyOTA3NjA5MCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDA6NDU6MzMuMTcyNjY5NjhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODg3MTI1NDMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoaXMgY29kZTpcblxuKipEaXZpbmcgaW50byB0aGUgYHdjbjM2eHhfcHJvYmVgIEZ1bmN0aW9uIENhbGwqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIGB3Y24zNnh4X3Byb2JlYCBmdW5jdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuIE15IGZpcnN0IGluc3RpbmN0IGlzIHRvIHRyYWNlIGJhY2sgaXRzIGNhbGwgcGF0aC4gV2hlcmUgaXMgdGhpcyBmdW5jdGlvbiBiZWluZyBpbnZva2VkPyBJcyBpdCB3aXRoaW4gdGhlIFBDSSBkcml2ZXIgaW5pdGlhbGl6YXRpb24sIGEgcGxhdGZvcm0gZGV2aWNlIHJlZ2lzdHJhdGlvbiwgb3Igc29tZXdoZXJlIGVsc2UgZW50aXJlbHk/IEtub3dpbmcgdGhlIGNhbGxlciBpcyBhYnNvbHV0ZWx5IGNydWNpYWwgdG8gZ3Jhc3BpbmcgaXRzIHB1cnBvc2UgYW5kIHRoZSBpbmZvcm1hdGlvbiBpdCdzIHJlbHlpbmcgb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBpbml0aWF0aW5nIGNvbmRpdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3MzYsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMDo0NTozNi4wNTk3OTkzMDRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0Njc1NjA1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3Y24zNnh4X3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmM9MTQ3Mj1zdGF0aWMgaW50IHdjbjM2eHhfcGxhdGZvcm1fZ2V0X3Jlc291cmNlcyhzdHJ1Y3Qgd2NuMzZ4eCAqd2NuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE1NTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjE1NTg6c3RhdGljIGludCB3Y24zNnh4X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jLTE1NTkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jPTE2NzY9c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgd2NuMzZ4eF9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3djbjM2eHgvbWFpbi5jOjE2Nzc6XFx0LnByb2JlID0gd2NuMzZ4eF9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2NuMzZ4eC9tYWluLmMtMTY3OC1cXHQucmVtb3ZlID0gd2NuMzZ4eF9yZW1vdmUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAwOjQ1OjM2LjYwNjU2NTQyNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MjQyNjM3OTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIHRoaXMgUGxhdGZvcm0gRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgd2NuMzZ4eGAgZHJpdmVyLCBhbmQgaW1tZWRpYXRlbHkgbXkgZXhwZXJ0IGJyYWluIGZsYWdzIGl0IGFzIGEgcGxhdGZvcm0gZHJpdmVyLiBJIHNlZSB0aGUgc3RhbmRhcmQgc3RydWN0dXJlIHdpdGggYHByb2JlYCwgYHJlbW92ZWAsIGFuZCB0aGUgZHJpdmVyJ3MgbmFtZSwgXCJ3Y24zNnh4XCIsIGFsb25nIHdpdGggdGhlIE9GIG1hdGNoIHRhYmxlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBwbGF0Zm9ybSBkcml2ZXJzICpjYW4qIGJlIGJvdW5kIHZpYSBzeXNmcyBpZiB3ZSBjYW4gY3JlYXRlIHRoZSBwbGF0Zm9ybSBkZXZpY2UuIEkga25vdyBzeXprYWxsZXIgKmNhbiogY3JlYXRlIHBsYXRmb3JtIGRldmljZXMgYnkgd3JpdGluZyB0byBzb21ldGhpbmcgbGlrZSBgL3N5cy9kZXZpY2VzL3BsYXRmb3JtYCwgb3Igc28gSSB0aGluay4gQnV0IGl0J3MgdXN1YWxseSBsaW1pdGVkIHRvIHNwZWNpZmljIGhhcmR3YXJlIG9yIGRldmljZSB0cmVlIG5vZGVzLCBvciBtYXliZSB1c2luZyBgc3l6X2RldmxpbmtfbmV0YCwgYWx0aG91Z2ggdGhhdCdzIG5vdCB0eXBpY2FsbHkgcmVsZXZhbnQgZm9yIHBsYXRmb3JtIGRldmljZXMgdW5sZXNzIHRoZXJlJ3MgYW4gZW11bGF0b3Igc3BlY2lmaWNhbGx5IHNldCB1cC5cblxuV2FpdCBhIG1pbnV0ZSwgY2FuIHN5emthbGxlciAqYWN0dWFsbHkqIGZ1enogcGxhdGZvcm0gZHJpdmVycz8gSXQncyBub3Qgc3RyYWlnaHRmb3J3YXJkIHRvIGluc3RhbnRpYXRlIGFyYml0cmFyeSBwbGF0Zm9ybSBkZXZpY2VzIHVubGVzcyB0aGV5J3JlIGluIHRoZSBkZXZpY2UgdHJlZSBvciB0aGVyZSdzIGEgcHNldWRvLXN5c2NhbGwgdGhhdCdzIHNwZWNpZmljIHRvIHN5emthbGxlciwgYW5kIHRoZXJlJ3Mgbm90IGEgbG90IG9mIHRoYXQuXG5cbkhvbGQgb24sIEkgbmVlZCB0byBjaGVjayB0aGUgcHJvbXB0ISBcIlJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnMuLi4gY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLi4uXCIgT2theSwgdGhpcyBgd2NuMzZ4eGAgaXMgYSBRdWFsY29tbSBBdGhlcm9zIHdpcmVsZXNzIGRyaXZlciBmb3IgbW9iaWxlIGNoaXBzZXRzIChXQ04zNjYwLzM2ODApLiBJIGtub3cgaXQgcmVsaWVzIG9uIGBRQ09NX1dDTlNTX0NUUkxgIGFuZCBSUE1TRy4gSXQncyAqZGVmaW5pdGVseSogYSBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyLlxuXG5UaGUgbWlsbGlvbi1kb2xsYXIgcXVlc3Rpb246IElzIGl0IHJlYWNoYWJsZSBpbiBRRU1VPyBSUE1TRyBkZXZpY2VzICpjYW4qIHNvbWV0aW1lcyBiZSBjcmVhdGVkLCBidXQgdGhpcyBpcyBhICpwbGF0Zm9ybSogZGV2aWNlIGB3Y24zNnh4YCwgd2hpY2ggbWFrZXMgdGhpbmdzIHRyaWNraWVyLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgbm90IGxpa2UgdGhvc2UgUENJZSBzd2l0Y2hlcyBhbmQgU21hcnROSUNzLiBJJ20gdGhpbmtpbmcgSSBoYXZlIHRvIGNoZWNrIGlmIHN5emthbGxlciBoYXMgYW55IHByZWRlZmluZWQgZGVzY3JpcHRpb25zIGZvciBgd2NuMzZ4eGAgb3IgYHJwbXNnYC4gT3RoZXJ3aXNlLCBpdCdzIHZlcnkgbGlrZWx5IEknbGwgaGF2ZSB0byBtYXJrIHRoaXMgYXMgbm90IGltbWVkaWF0ZWx5IGZ1enphYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTg0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAwOjQ1OjQzLjg0OTIwNjEyM1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQzOTEwNDkwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ3Y24zNnh4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAwOjQ1OjQ0LjM5MzEyMzIxM1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTIzNjY2ODg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU3l6a2FsbGVyIEJ1ZyBSZXBvcnQ6IEEgVGhvdWdodCBQcm9jZXNzKipcblxuT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBzeXprYWxsZXIgaGFzIGFueSBoZWxwZnVsIHN5emxhbmcgZGVzY3JpcHRpb25zIGZvciB0aGlzLiBMZXQncyBzZWUuLi4gdGhlIHByb21wdCBtZW50aW9ucyBhIGB0b29sUmVhZERlc2NyaXB0aW9uYCB0b29sLCBidXQgd2FpdCwgaXQncyBub3QgYWN0dWFsbHkgYXZhaWxhYmxlLiBUaGF0J3MgYSBiaXQgYW5ub3lpbmcuIEhvd2V2ZXIsIEkga25vdyBgd2NuMzZ4eGAgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgc3BlY2lmaWNhbGx5IGZvciBhIFF1YWxjb21tIFNvQyBjb21wb25lbnQuIFRoZSBjaGFsbGVuZ2UgaGVyZSBpcyB0aGF0IGl0J3MgcHJvYmFibHkgbm90IGVhc2lseSByZWFjaGFibGUgaW4gc3RhbmRhcmQgUUVNVSBzZXR1cHMsIGVzcGVjaWFsbHkgY29uc2lkZXJpbmcgc3l6a2FsbGVyIHR5cGljYWxseSBydW5zIG9uIHg4Nl82NCBvciBnZW5lcmljIGFybTY0IHZpcnQgYm9hcmRzLiBVbmxlc3MgdGhlcmUncyBzcGVjaWZpYyBRdWFsY29tbSBTb0MgZW11bGF0aW9uLCB3aGljaCBzb21lIFFFTVUgYnVpbGRzIG1pZ2h0IGhhdmUsIGJ1dCBpc24ndCB0aGUgbm9ybS5cblxuSG9sZCBvbiwgdGhlIGNvbW1pdCBhdXRob3IgaXMgbGlzdGVkIGFzIGBzeXotY2x1c3RlcmAuIEhtbSwgaWYgc3l6a2FsbGVyIGZvdW5kIHRoaXMgYnVnLCBpdCBtZWFucyBzeXprYWxsZXIgKmRpZCogcmVhY2ggaXQhIEJ1dCwgcmVhZGluZyBvbiwgdGhlIGNvbW1pdCBtZXNzYWdlIHNheXMgXCJzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcIi4gQWgsIGl0IGltcGxpZXMgc3l6a2FsbGVyIGlzICp0ZXN0aW5nKiB0aGlzIHBhdGNoLCBub3QgbmVjZXNzYXJpbHkgdGhhdCBpdCAqZm91bmQqIGEgYnVnLiBTeXprYWxsZXIgbWlnaHQganVzdCBiZSB0ZXN0aW5nIGEgcGF0Y2ggdGhhdCdzIHVuZGVyIHJldmlldywgYmVjYXVzZSBpdCB3YXMgc3VibWl0dGVkIHRvIGEgbWFpbGluZyBsaXN0IG9yIHNpbWlsYXIuIEl0IGRvZXNuJ3QgbWVhbiBzeXprYWxsZXIgY2FuIHJlYWNoIHRoZSBjb2RlLlxuXG5TbywgaG93IGNhbiBJIHRyaWdnZXIgYHdjbjM2eHhgPyBJcyBpdCBldmVuIHBvc3NpYmxlIHRvIGluc3RhbnRpYXRlIGl0PyBJIHJlbWVtYmVyIHBsYXRmb3JtIGRldmljZXMgY2FuIGJlIGNyZWF0ZWQgdXNpbmcgYHBsYXRmb3JtX2RldmljZV9yZWdpc3RlcmAsIGJ1dCBJIGNhbid0IGRvIHRoYXQgZnJvbSB1c2Vyc3BhY2UuIEkgdmFndWVseSByZWNhbGwgdGhlcmUncyBhIHdheSB0byBjcmVhdGUgdGhlbSB2aWEgdGhlIGBwbGF0Zm9ybWAgYnVzIHN5c2ZzLCBidXQgeW91IGNhbid0IGp1c3QgaW5zdGFudGlhdGUgYW55IGFyYml0cmFyeSBkZXZpY2UgdW5sZXNzIGEgZHJpdmVyIGFsbG93cyBpdC5cblxuTGV0J3Mgc2VlLi4uIGBtYWM4MDIxMV9od3NpbWA/IE5vLCB0aGF0J3MgZm9yIHNpbXVsYXRlZCByYWRpb3MsIGNvbXBsZXRlbHkgaXJyZWxldmFudC4gV2hhdCBhYm91dCBSUE1TRz8gTm93IHdlJ3JlIHRhbGtpbmcuIFJQTVNHIGRldmljZXMgY2FuIGJlIGNyZWF0ZWQgdGhyb3VnaCBgL2Rldi9ycG1zZ19jdHJsMGAgdXNpbmcgYFJQTVNHX0NSRUFURV9FUFRfSU9DVExgIG9yIGBSUE1TR19DUkVBVEVfREVWX0lPQ1RMYC4gVGhlIHF1ZXN0aW9uIGlzLCBpcyBgd2NuMzZ4eGAgYW4gUlBNU0cgZHJpdmVyPyBUaGF0J3MgdGhlIGtleS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjE1MywiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMDo0NTo1Mi45MTY3OTM1NzdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjkzMTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjcwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNjcwOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHdjbjM2eHhfb2ZfbWF0Y2hbXSA9IHtcXG4xNjcxOlxcdFxcdHsgLmNvbXBhdGlibGUgPSBcXFwicWNvbSx3Y25zcy13bGFuXFxcIiB9LFxcbjE2NzI6XFx0XFx0e31cXG4xNjczOlxcdH07XFxuMTY3NDpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB3Y24zNnh4X29mX21hdGNoKTtcXG4xNjc1OlxcdFxcbjE2NzY6XFx0c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgd2NuMzZ4eF9kcml2ZXIgPSB7XFxuMTY3NzpcXHRcXHQucHJvYmUgPSB3Y24zNnh4X3Byb2JlLFxcbjE2Nzg6XFx0XFx0LnJlbW92ZSA9IHdjbjM2eHhfcmVtb3ZlLFxcbjE2Nzk6XFx0XFx0LmRyaXZlciA9IHtcXG4xNjgwOlxcdFxcdFxcdC5uYW1lID0gXFxcIndjbjM2eHhcXFwiLFxcbjE2ODE6XFx0XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gd2NuMzZ4eF9vZl9tYXRjaCxcXG4xNjgyOlxcdFxcdH0sXFxuMTY4MzpcXHR9O1xcbjE2ODQ6XFx0XFxuMTY4NTpcXHRtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKHdjbjM2eHhfZHJpdmVyKTtcXG4xNjg2OlxcdFxcbjE2ODc6XFx0TU9EVUxFX0RFU0NSSVBUSU9OKFxcXCJRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MCB3aXJlbGVzcyBkcml2ZXJcXFwiKTtcXG4xNjg4OlxcdE1PRFVMRV9MSUNFTlNFKFxcXCJEdWFsIEJTRC9HUExcXFwiKTtcXG4xNjg5OlxcdE1PRFVMRV9BVVRIT1IoXFxcIkV1Z2VuZSBLcmFzbmlrb3Ygay5ldWdlbmUuZUBnbWFpbC5jb21cXFwiKTtcXG4xNjkwOlxcdE1PRFVMRV9GSVJNV0FSRShXTEFOX05WX0ZJTEUpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMDo0NTo1Mi45MTcwODk2MjdaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzY1MTQ1OTcxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aCBGdXp6aW5nIERlY2lzaW9uOiBRdWFsY29tbSBXQ05TUyBXTEFOIERyaXZlcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGFyZ2V0aW5nIGEgcGxhdGZvcm0gZHJpdmVyIG1hdGNoaW5nIGBcInFjb20sd2Nuc3Mtd2xhblwiYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjYW4gdGhpcyBiZSBldmVuIHRvdWNoZWQgYnkgc3l6a2FsbGVyPyBTeXprYWxsZXIgKmNhbiogdXNlIGRldmljZSB0cmVlIG92ZXJsYXlzLCBidXQgdGhhdCdzIG5vdCBpdHMgdHlwaWNhbCBtb2RlLCBlc3BlY2lhbGx5IG9uIHg4Nl82NCB3aGVyZSBpdCB1c3VhbGx5IHJ1bnMsIHdoaWNoIGRvZXNuJ3QgbmF0aXZlbHkgdXNlIE9GIG9mdGVuLCB0aG91Z2ggaXQncyAqcG9zc2libGUqIHRvIGVuYWJsZS4gSSB0aGVuIHRoaW5rIGFib3V0IGBzeXpfaW5pdF9uZXRfc29ja2V0YCBhbmQgc2ltaWxhciBmdW5jdGlvbnMgYW5kIGlmIHRoZXkgd291bGQgYmUgdXNlZnVsLCBidXQgdGhlbiBjb25zaWRlciBpZiBpdCBjYW4gZXZlbiByZWFjaCB2ZW5kb3Itc3BlY2lmaWMgUXVhbGNvbW0gZHJpdmVycy5cblxuR2VuZXJhbGx5LCBJIGtub3cgdmVuZG9yIGRyaXZlcnMgZm9yIGFjdHVhbCBoYXJkd2FyZSwgbGlrZSBQQ0llIGNhcmRzIG9yIFNvQy1zcGVjaWZpYyBibG9ja3MgbGlrZSB0aGlzIFdDTlNTLCBhcmUgY29tcGxldGVseSB1bnJlYWNoYWJsZSBpbiBzdGFuZGFyZCBRRU1VIHVubGVzcyB3ZSBoYXZlIHNwZWNpZmljIGVtdWxhdGlvbi4gTm93LCBkb2VzIFFFTVUgZW11bGF0ZSB0aGUgUXVhbGNvbW0gV0NOU1M/IE5vLCBpdCBkb2Vzbid0LiBTbywgbXkgZ3V0IHJlYWN0aW9uIGlzLCBpcyB0aGlzIGEgZGVhZCBlbmQ/IFNob3VsZCBJIGp1c3QgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgP1xuXG5UaGUgcHJvbXB0IHNwZWNpZmllcyB0byByZXR1cm4gZmFsc2UgaWYgdGhlIHBhdGNoIGhpdHMgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsIGVudmlyb25tZW50cywgbGlrZSBpbiBHQ0Ugb3IgUUVNVSwgZXZlbiB3aXRoIHNvZnR3YXJlIGVtdWxhdGlvbiBvZiBoYXJkd2FyZSBhbmQgYWxzbyBtZW50aW9ucyB2ZW5kb3Itc3BlY2lmaWMgUENJZSwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLiBUaGlzIGB3Y24zNnh4YCBkcml2ZXIgaXMgUXVhbGNvbW0gc3BlY2lmaWMgZm9yIHRob3NlIG1vYmlsZSBjaGlwc2V0cywgYW5kIGl0ICpyZXF1aXJlcyogdGhlIFdDTlNTIGhhcmR3YXJlLCBvciBhdCBsZWFzdCB0aGUgUlBNU0cgY2hhbm5lbHMgdG8gdGFsayB0byB0aGUgV0NOU1MgZmlybXdhcmUuXG5cbkhvbGQgb24uLi4gaWYgaXQgdXNlcyBSUE1TRywgYW5kIFJQTVNHIGlzIGZ1enphYmxlLi4uIGNvdWxkIHRoZXJlIGJlIGEgd2F5IGluPyBOb3cgSSBuZWVkIHRvIGNoZWNrIGlmIFJQTVNHIGRldmljZXMgY2FuIGJlIGNyZWF0ZWQgZnJvbSB1c2Vyc3BhY2UgdG8gYmluZCB0byB0aGlzIGRyaXZlci4gQnV0IG5vLCB0aGlzIGRyaXZlciBpcyBhIGBwbGF0Zm9ybV9kcml2ZXJgLCBub3QgYW4gYHJwbXNnX2RyaXZlcmAuIEkga25vdyBpdCdzIGNhbGxpbmcgYHFjb21fd2Nuc3Nfb3Blbl9jaGFubmVsYCBpbiBpdHMgcHJvYmUgZnVuY3Rpb24uIFRoYXQncyBnb29kLCBgcWNvbV93Y25zc19vcGVuX2NoYW5uZWxgIGlzIGV4cG9ydGVkIGJ5IHRoYXQgYGRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jYCBmaWxlLiBJIG5lZWQgdG8gZGlnIGRlZXBlciBpbnRvIHRoZSBSUE1TRyBwYXRoIHRvIGRldGVybWluZSB3b3J0aGluZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NTczLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDA6NDY6MDAuNTY4NTUyNzY4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTU0Njk1MzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicWNvbV93Y25zc19vcGVuX2NoYW5uZWxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9zb2MvcWNvbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmM9MjAwPXN0YXRpYyBpbnQgd2Nuc3NfZG93bmxvYWRfbnYoc3RydWN0IHdjbnNzX2N0cmwgKndjbnNzLCBib29sICpleHBlY3RfY2JjKVxcbi0tXFxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMtMjc1LS8qKlxcbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jOjI3NjogKiBxY29tX3djbnNzX29wZW5fY2hhbm5lbCgpIC0gb3BlbiBhZGRpdGlvbmFsIFNNRCBjaGFubmVsIHRvIFdDTlNTXFxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMtMjc3LSAqIEB3Y25zczpcXHR3Y25zcyBoYW5kbGUsIHJldHJpZXZlZCBmcm9tIGRydmRhdGFcXG4tLVxcbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jLTI4MS0gKi9cXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYzoyODI6c3RydWN0IHJwbXNnX2VuZHBvaW50ICpxY29tX3djbnNzX29wZW5fY2hhbm5lbCh2b2lkICp3Y25zcywgY29uc3QgY2hhciAqbmFtZSwgcnBtc2dfcnhfY2JfdCBjYiwgdm9pZCAqcHJpdilcXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYy0yODMte1xcbi0tXFxuZHJpdmVycy9zb2MvcWNvbS93Y25zc19jdHJsLmMtMjkyLX1cXG5kcml2ZXJzL3NvYy9xY29tL3djbnNzX2N0cmwuYzoyOTM6RVhQT1JUX1NZTUJPTF9HUEwocWNvbV93Y25zc19vcGVuX2NoYW5uZWwpO1xcbmRyaXZlcnMvc29jL3Fjb20vd2Nuc3NfY3RybC5jLTI5NC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMDA6NDY6MDEuMTI0MDI3NTM3WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMTIxNzQ5MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSB3Y24zNnh4IERyaXZlciBhbmQgUUVNVSBDb21wYXRpYmlsaXR5KipcblxuT2theSwgc28gdGhlIGB3Y24zNnh4YCBkcml2ZXIgaXMgYSBwbGF0Zm9ybSBkcml2ZXIuIFRoYXQgbWVhbnMgaXQncyBkZXNpZ25lZCB0byBiZSBwcm9iZWQgYnkgYSBwbGF0Zm9ybSBidXMsIHR5cGljYWxseSB0aHJvdWdoIERldmljZSBUcmVlLCByaWdodD8gVGhlIHByb2JlIHJvdXRpbmUgaXMgZ29pbmcgdG8gZXhwZWN0IHRvIGdldCBpdHMgYHdjbnNzYCBoYW5kbGUgZnJvbSB0aGUgcGFyZW50IGRldmljZSBvciBzb21ldGhpbmcgc2ltaWxhciwgYW5kIHRoZW4gaXQnbGwgZ28gYWhlYWQgYW5kIG9wZW4gYW4gUlBNU0cgY2hhbm5lbC4gU2VlbXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYXJjaGl0ZWN0dXJhbGx5LlxuXG5CdXQgaGVyZSdzIHRoZSBraWNrZXI6IGl0J3MgbG9va2luZyBmb3IgYSAqc3BlY2lmaWMqIHBsYXRmb3JtIGRldmljZSDigJMgYSBgXCJxY29tLHdjbnNzLXdsYW5cImAgZGV2aWNlLiBBbmQgdGhhdCBkZXZpY2UgaXMgYSAqY2hpbGQqIG9mIHRoZSBXQ05TUyBibG9jay4gVGhpcyBpbW1lZGlhdGVseSBzY3JlYW1zIFwiUXVhbGNvbW0gU29DIHNwZWNpZmljXCIgdG8gbWUuXG5cblRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gSSBldmVuIHRvdWNoIHRoaXMgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50PyBHaXZlbiB0aGF0IFFFTVUgZG9lc24ndCBlbXVsYXRlIHRoZSBRdWFsY29tbSBXQ05TUyBibG9jaywgdGhlIGFuc3dlciBpcyBhIHJlc291bmRpbmcgbm8uIEV2ZW4gaWYgSSBnb3QgY2xldmVyIGFuZCB0cmllZCB0byBjcmVhdGUgdGhlIHBsYXRmb3JtIGRldmljZSBtYW51YWxseSB2aWEgc29tZSBzeXNmcyBoYWNrLCB0aGUgcHJvYmUgcm91dGluZSB3b3VsZCBmYWlsIGJlY2F1c2UgaXQncyBnb2luZyB0byBuZWVkIHRoYXQgYHdjbnNzYCBoYW5kbGUgYW5kIHRoZSBSUE1TRyBidXMgdG8gYmUgKnByZXNlbnQqIGFuZCAqZnVuY3Rpb25hbCouIEFuZCB3aXRob3V0IHRoZSBXQ05TUyBibG9jayBlbXVsYXRpb24sIHRoYXQncyBqdXN0IG5vdCBnb2luZyB0byBoYXBwZW4uXG5cbkFscmlnaHQsIGxldCdzIGp1c3QgbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvdGhlciwgbW9yZSBmdW5kYW1lbnRhbCBpc3N1ZXMgaW4gdGhlIHByb2JlIHNlcXVlbmNlLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgYHdjbjM2eHhfcHJvYmVgIGZ1bmN0aW9uIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIGVhcmx5IGV4aXQgcG9pbnRzIHRoYXQgd291bGQgcXVpY2tseSBjb25maXJtIG15IHN1c3BpY2lvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODkyMCwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMDo0NjowNi4zMzYyMDQ5NzZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcwNjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93Y24zNnh4L21haW4uY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNTU4LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNTU4OlxcdHN0YXRpYyBpbnQgd2NuMzZ4eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbjE1NTk6XFx0e1xcbjE1NjA6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9odyAqaHc7XFxuMTU2MTpcXHRcXHRzdHJ1Y3Qgd2NuMzZ4eCAqd2NuO1xcbjE1NjI6XFx0XFx0dm9pZCAqd2Nuc3M7XFxuMTU2MzpcXHRcXHRpbnQgcmV0O1xcbjE1NjQ6XFx0XFx0Y29uc3QgdTggKmFkZHI7XFxuMTU2NTpcXHRcXHRpbnQgbl9jaGFubmVscztcXG4xNTY2OlxcdFxcbjE1Njc6XFx0XFx0d2NuMzZ4eF9kYmcoV0NOMzZYWF9EQkdfTUFDLCBcXFwicGxhdGZvcm0gcHJvYmVcXFxcblxcXCIpO1xcbjE1Njg6XFx0XFxuMTU2OTpcXHRcXHR3Y25zcyA9IGRldl9nZXRfZHJ2ZGF0YShwZGV2LVxcdTAwM2VkZXYucGFyZW50KTtcXG4xNTcwOlxcdFxcbjE1NzE6XFx0XFx0bl9jaGFubmVscyA9IHdjbl9iYW5kXzJnaHoubl9jaGFubmVscyArIHdjbl9iYW5kXzVnaHoubl9jaGFubmVscztcXG4xNTcyOlxcdFxcdGh3ID0gaWVlZTgwMjExX2FsbG9jX2h3KHN0cnVjdF9zaXplKHdjbiwgY2hhbl9zdXJ2ZXksIG5fY2hhbm5lbHMpLCBcXHUwMDI2d2NuMzZ4eF9vcHMpO1xcbjE1NzM6XFx0XFx0aWYgKCFodykge1xcbjE1NzQ6XFx0XFx0XFx0d2NuMzZ4eF9lcnIoXFxcImZhaWxlZCB0byBhbGxvYyBod1xcXFxuXFxcIik7XFxuMTU3NTpcXHRcXHRcXHRyZXQgPSAtRU5PTUVNO1xcbjE1NzY6XFx0XFx0XFx0Z290byBvdXRfZXJyO1xcbjE1Nzc6XFx0XFx0fVxcbjE1Nzg6XFx0XFx0cGxhdGZvcm1fc2V0X2RydmRhdGEocGRldiwgaHcpO1xcbjE1Nzk6XFx0XFx0d2NuID0gaHctXFx1MDAzZXByaXY7XFxuMTU4MDpcXHRcXHR3Y24tXFx1MDAzZWh3ID0gaHc7XFxuMTU4MTpcXHRcXHR3Y24tXFx1MDAzZWRldiA9IFxcdTAwMjZwZGV2LVxcdTAwM2VkZXY7XFxuMTU4MjpcXHRcXHR3Y24tXFx1MDAzZWZpcnN0X2Jvb3QgPSB0cnVlO1xcbjE1ODM6XFx0XFx0bXV0ZXhfaW5pdChcXHUwMDI2d2NuLVxcdTAwM2Vjb25mX211dGV4KTtcXG4xNTg0OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNndjbi1cXHUwMDNlaGFsX211dGV4KTtcXG4xNTg1OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNndjbi1cXHUwMDNlc2Nhbl9sb2NrKTtcXG4xNTg2OlxcdFxcdF9fc2tiX3F1ZXVlX2hlYWRfaW5pdChcXHUwMDI2d2NuLVxcdTAwM2VhbXNkdSk7XFxuMTU4NzpcXHRcXG4xNTg4OlxcdFxcdHdjbi1cXHUwMDNlaGFsX2J1ZiA9IGRldm1fa21hbGxvYyh3Y24tXFx1MDAzZWRldiwgV0NOMzZYWF9IQUxfQlVGX1NJWkUsIEdGUF9LRVJORUwpO1xcbjE1ODk6XFx0XFx0aWYgKCF3Y24tXFx1MDAzZWhhbF9idWYpIHtcXG4xNTkwOlxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuMTU5MTpcXHRcXHRcXHRnb3RvIG91dF93cTtcXG4xNTkyOlxcdFxcdH1cXG4xNTkzOlxcdFxcbjE1OTQ6XFx0XFx0cmV0ID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVudCh3Y24tXFx1MDAzZWRldiwgRE1BX0JJVF9NQVNLKDMyKSk7XFxuMTU5NTpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbjE1OTY6XFx0XFx0XFx0d2NuMzZ4eF9lcnIoXFxcImZhaWxlZCB0byBzZXQgRE1BIG1hc2s6ICVkXFxcXG5cXFwiLCByZXQpO1xcbjE1OTc6XFx0XFx0XFx0Z290byBvdXRfd3E7XFxuMTU5ODpcXHRcXHR9XFxuMTU5OTpcXHRcXG4xNjAwOlxcdFxcdHdjbi1cXHUwMDNlbnZfZmlsZSA9IFdMQU5fTlZfRklMRTtcXG4xNjAxOlxcdFxcdHJldCA9IG9mX3Byb3BlcnR5X3JlYWRfc3RyaW5nKHdjbi1cXHUwMDNlZGV2LVxcdTAwM2VwYXJlbnQtXFx1MDAzZW9mX25vZGUsIFxcXCJmaXJtd2FyZS1uYW1lXFxcIiwgXFx1MDAyNndjbi1cXHUwMDNlbnZfZmlsZSk7XFxuMTYwMjpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMCBcXHUwMDI2XFx1MDAyNiByZXQgIT0gLUVJTlZBTCkge1xcbjE2MDM6XFx0XFx0XFx0d2NuMzZ4eF9lcnIoXFxcImZhaWxlZCB0byByZWFkIFxcXFxcXFwiZmlybXdhcmUtbmFtZVxcXFxcXFwiIHByb3BlcnR5OiAlZFxcXFxuXFxcIiwgcmV0KTtcXG4xNjA0OlxcdFxcdFxcdGdvdG8gb3V0X3dxO1xcbjE2MDU6XFx0XFx0fVxcbjE2MDY6XFx0XFxuMTYwNzpcXHRcXHR3Y24tXFx1MDAzZXNtZF9jaGFubmVsID0gcWNvbV93Y25zc19vcGVuX2NoYW5uZWwod2Nuc3MsIFxcXCJXTEFOX0NUUkxcXFwiLCB3Y24zNnh4X3NtZF9yc3BfcHJvY2VzcywgaHcpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QwMDo0NjowNi4zMzYzNzkyODZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA1MjA4ODg3MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nPUZhbHNlOiBSZWFzb25pbmcgZm9yIEV4Y2x1ZGluZyB0aGUgd2NuMzZ4eCBEcml2ZXIqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgc2NhbiBwb2ludHMgbWUgdG93YXJkIHRoZSBgd2NuMzZ4eGAgZHJpdmVyLCBhbmQgdGhhdCBpbW1lZGlhdGVseSBzZXRzIG9mZiBzb21lIGFsYXJtcy4gSSdtIHNlZWluZyBhY2Nlc3NlcyB0byBgcGRldi1cdTAwM2VkZXYucGFyZW50YCBhbmQgYSBzdWJzZXF1ZW50IGBkZXZfZ2V0X2RydmRhdGFgLiBJZiB0aGUgcGFyZW50IGlzbid0IHByb3Blcmx5IHNldCB1cCwgdGhpcyBpcyBnb2luZyB0byBjcmFzaCwgb3IgYXQgYmVzdCwgcmV0dXJuIE5VTEwuIFRoZW4sIGl0IGRpdmVzIGludG8gYG9mX25vZGVgIHByb3BlcnRpZXMsIHdoaWNoICpkZWZpbml0ZWx5KiByZXF1aXJlcyB0aGUgZGV2aWNlIHRyZWUgdG8gYmUgY29ycmVjdGx5IGluaXRpYWxpemVkLlxuXG5UaGlzIHNjcmVhbXMgXCJRdWFsY29tbS1zcGVjaWZpY1wiLiBUaGUgZHJpdmVyIGFic29sdXRlbHkgZXhwZWN0cyB0byBiZSBhIGNoaWxkIG9mIHRoZSBXQ05TUyBkZXZpY2UsIHNvbWV0aGluZyB0aGF0J3MgYnJvdWdodCB1cCBieSB0aGUgZGV2aWNlIHRyZWUgb24gUXVhbGNvbW0gU29Dcy4gUmlnaHQgb2ZmIHRoZSBiYXQsIEkgY2FuIHRlbGwgdGhpcyB3b24ndCBiZSByZWFjaGFibGUgaW4gYSBzdGFuZGFyZCBRRU1VIHNldHVwLlxuXG5Ob3csIEkgcGF1c2VkIGJyaWVmbHksIGNvbnNpZGVyaW5nIHRoZSBwb3NzaWJpbGl0eSBvZiBzeXprYWxsZXIgcnVubmluZyBvbiBhY3R1YWwgUXVhbGNvbW0gaGFyZHdhcmUuIEJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhlIHByb21wdCdzIGluc3RydWN0aW9ucy4gSXQgZXhwbGljaXRseSB3YW50cyBtZSB0byBleGNsdWRlIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHRoYXQgcmVseSBvbiBwaHlzaWNhbCBoYXJkd2FyZSBub3QgZW11bGF0ZWQgaW4gUUVNVS4gVGhpbmdzIGxpa2UgUENJZSBzd2l0Y2ggZHJpdmVycywgU21hcnROSUNzLCBHUFVzLi4uIFRoaXMgZHJpdmVyIGZpdHMgdGhlIGJpbGwuIEl0J3MgYSBRdWFsY29tbSBTb0MgZHJpdmVyLCBhbmQgaXQgbmVlZHMgdGhlIHNwZWNpZmljIFF1YWxjb21tIGhhcmR3YXJlIChvciBhdCBsZWFzdCB0aGUgc3BlY2lmaWMgZGV2aWNlIHRyZWUgYW5kIFJQTVNHIGluZnJhc3RydWN0dXJlKSwgd2hpY2gsIGFzIEkga25vdywgaXNuJ3Qgc29tZXRoaW5nIHRoYXQncyBlYXNpbHkgZnV6emFibGUgaW4gc3RhbmRhcmQgUUVNVS5cblxuSSBkb3VibGUtY2hlY2tlZCB0byBzZWUgaWYgdGhlcmUncyBhbnkgY2hhbmNlIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgY2FuIGJlIGNhbGxlZCBkaXJlY3RseSwgb3IgaWYgdGhlcmUncyBhIHN5emthbGxlciBwc2V1ZG8tc3lzY2FsbCBmb3IgaXQsIGJ1dCB0aGUgcHJvbXB0J3MgaW5zdHJ1Y3Rpb25zIGFyZSBjbGVhcjogaWYgaXQncyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgSSBzaG91bGQgcmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZS4gSSBhbSBub3QgdG8gc2VhcmNoIGZvciBzeXpsYW5nIGRlc2NyaXB0aW9ucy4gSXQgYWxsIGdvZXMgYmFjayB0byB0aG9zZSBcIkNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVVwiIHRoYXQgbmVlZCB0byBiZSBleGNsdWRlZC5cblxuQSBxdWljayB2ZXJpZmljYXRpb246IGB3Y24zNnh4YCBpcyBpbmRlZWQgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyIGZvciB0aG9zZSBXQ04zNjYwLzM2ODAgbW9iaWxlIGNoaXBzZXRzIGludGVncmF0ZWQgaW50byBRdWFsY29tbSBTbmFwZHJhZ29ucy4gVGhhdCBzZWFscyB0aGUgZGVhbC4gVGhpcyBpcyBub3QgYSBnZW5lcmljIHdpcmVsZXNzIGRyaXZlci5cblxuTXkgZmluYWwgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogVGhlIHBhdGNoIG1vZGlmaWVzIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgaW4gdGhlIGB3Y24zNnh4YCBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlciBmb3IgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgbW9iaWxlIGNoaXBzZXRzLiBUaGlzIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIFF1YWxjb21tIFNvQyBoYXJkd2FyZSBjb21wb25lbnRzIChXQ05TUykgYW5kIGNvbW11bmljYXRlcyB2aWEgdGhlIFJQTVNHIGJ1cy4gSXQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBhcyBpdCByZWxpZXMgb24gc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMgYW5kIHBhcmVudCBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZC4gVGhlcmVmb3JlLCBpdCBpcyBub3Qgc3VpdGFibGUgZm9yIGZ1enppbmcgaW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBXb3J0aEZ1enppbmc9ZmFsc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNDA0LCJPdXRwdXRUb2tlbnMiOjE2NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDAwOjQ2OjE2Ljg1NzI3MDc5MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGB3Y24zNnh4X3NtZF9yc3BfcHJvY2Vzc2AgaW4gdGhlIGB3Y24zNnh4YCBkcml2ZXIsIHdoaWNoIGlzIGEgdmVuZG9yLXNwZWNpZmljIHdpcmVsZXNzIGRyaXZlciBmb3IgUXVhbGNvbW0gQXRoZXJvcyBXQ04zNjYwLzM2ODAgbW9iaWxlIGNoaXBzZXRzLiBUaGlzIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciB0aGF0IHJlcXVpcmVzIHNwZWNpZmljIFF1YWxjb21tIFNvQyBoYXJkd2FyZSBjb21wb25lbnRzIChXQ05TUykgYW5kIGNvbW11bmljYXRlcyB2aWEgdGhlIFJQTVNHIGJ1cy4gSXQgY2Fubm90IGJlIGluc3RhbnRpYXRlZCBvciByZWFjaGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBhcyBpdCByZWxpZXMgb24gc3BlY2lmaWMgZGV2aWNlIHRyZWUgbm9kZXMgYW5kIHBhcmVudCBkZXZpY2VzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZC4gVGhlcmVmb3JlLCBpdCBpcyBub3Qgc3VpdGFibGUgZm9yIGZ1enppbmcgaW4gYSBnZW5lcmljIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYHdjbjM2eHhfc21kX3JzcF9wcm9jZXNzYCBpbiB0aGUgYHdjbjM2eHhgIGRyaXZlciwgd2hpY2ggaXMgYSB2ZW5kb3Itc3BlY2lmaWMgd2lyZWxlc3MgZHJpdmVyIGZvciBRdWFsY29tbSBBdGhlcm9zIFdDTjM2NjAvMzY4MCBtb2JpbGUgY2hpcHNldHMuIFRoaXMgZHJpdmVyIGlzIGEgcGxhdGZvcm0gZHJpdmVyIHRoYXQgcmVxdWlyZXMgc3BlY2lmaWMgUXVhbGNvbW0gU29DIGhhcmR3YXJlIGNvbXBvbmVudHMgKFdDTlNTKSBhbmQgY29tbXVuaWNhdGVzIHZpYSB0aGUgUlBNU0cgYnVzLiBJdCBjYW5ub3QgYmUgaW5zdGFudGlhdGVkIG9yIHJlYWNoZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGFzIGl0IHJlbGllcyBvbiBzcGVjaWZpYyBkZXZpY2UgdHJlZSBub2RlcyBhbmQgcGFyZW50IGRldmljZXMgdGhhdCBhcmUgbm90IGVtdWxhdGVkLiBUaGVyZWZvcmUsIGl0IGlzIG5vdCBzdWl0YWJsZSBmb3IgZnV6emluZyBpbiBhIGdlbmVyaWMgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow6k8g9[1] Phase: Running StartedAt: 2026-07-27 00:46:28 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6k8g9[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-27 00:46:28 +0000 UTC FinishedAt: 2026-07-27 00:46:35 +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,}