Name: series-workflowpvxxg Phase: Failed StartedAt: 2026-08-09 16:03:41 +0000 UTC FinishedAt: 2026-08-09 16:18:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpvxxg[0] Phase: Succeeded StartedAt: 2026-08-09 16:03:41 +0000 UTC FinishedAt: 2026-08-09 16:18:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpvxxg[0].run-triage Phase: Succeeded StartedAt: 2026-08-09 16:03:41 +0000 UTC FinishedAt: 2026-08-09 16:18:02 +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+CgkJCTx0ZD4yMDI2LzA4LzA5IDE2OjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7JiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSAoUGVudGEgU0dNSUkpIHRvIHNldmVyYWwgc3dpdGNoIHN0YXRlbWVudHMgaW4gdGhlIHBoeWxpbmsgY29yZS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBIWSBpbnRlcmZhY2UgbW9kZS4gQSBzZWFyY2ggb2YgdGhlIGtlcm5lbCB0cmVlIHJldmVhbHMgdGhhdCBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIGlzIG9ubHkgcmVmZXJlbmNlZCBieSB0aGUgcWNhODA3eCBwaHlzaWNhbCBQSFkgZHJpdmVyLCBhbmQgbm8gTUFDIGRyaXZlcnMgZXhwbGljaXRseSBzdXBwb3J0IGl0LiBGdXJ0aGVybW9yZSwgdmlydHVhbCBuZXR3b3JrIGRyaXZlcnMgYW5kIHNvZnR3YXJlLWVtdWxhdGVkIFVTQiBldGhlcm5ldCBhZGFwdGVycyAod2hpY2ggdXNlIHBoeWxpbmspIGhhcmRjb2RlIHRoZWlyIGludGVyZmFjZSBtb2RlcyB0byBzdGFuZGFyZCBvbmVzIGxpa2UgTUlJLCBSTUlJLCBvciBHTUlJLiBTaW5jZSB0aGlzIGludGVyZmFjZSBtb2RlIGNhbm5vdCBiZSBjb25maWd1cmVkIGZyb20gdXNlcnNwYWNlIGFuZCBpcyBub3QgdXNlZCBieSBhbnkgZW11bGF0ZWQgaGFyZHdhcmUsIHRoZSBuZXdseSBhZGRlZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxNjowNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGNkN2ZjMDMxMjc1ZWI0Y2Q2ZTkwZTRkZmU0Njk0NzFkYTQ5NDYxMGNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyA5IDE2OjA0OjUxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5pbmRleCAxOGQyZWFkOTdhYTU0Li4xY2U5ZDIyNjY3NzRkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuQEAgLTEwNDAsNiAmIzQzOzEwNDAsNyBAQCBzdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuIHtcbiBcdHN3aXRjaCAoaW50ZXJmYWNlKSB7XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RVVNHTUlJOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSTpcbkBAIC00MTgzLDYgJiM0Mzs0MTg0LDcgQEAgdm9pZCBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4gXHRcdGlmIChuZWdfbW9kZSA9PSBQSFlMSU5LX1BDU19ORUdfSU5CQU5EX0VOQUJMRUQpXG4gXHRcdFx0cGh5bGlua19kZWNvZGVfc2dtaWlfd29yZChzdGF0ZSwgbHBhKTtcbkBAIC00MjYzLDYgJiM0Mzs0MjY1LDcgQEAgaW50IHBoeWxpbmtfbWlpX2MyMl9wY3NfZW5jb2RlX2FkdmVydGlzZW1lbnQocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcbiBcdFx0XHRhZHYgfD0gQURWRVJUSVNFXzEwMDBYUFNFX0FTWU07XG4gXHRcdHJldHVybiBhZHY7XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4gXHRcdHJldHVybiAweDAwMDE7XG4gXHRkZWZhdWx0OlxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5bGluay5oIGIvaW5jbHVkZS9saW51eC9waHlsaW5rLmhcbmluZGV4IDJiYzBkYjNkNTJhYzguLjFkZGE1YzdlZDVmMTQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9waHlsaW5rLmhcbkBAIC03OTEsNiAmIzQzOzc5MSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHBoeWxpbmtfZ2V0X2xpbmtfdGltZXJfbnMocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbiB7XG4gXHRzd2l0Y2ggKGludGVyZmFjZSkge1xuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG4mIzQzO1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSTpcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwR19RWEdNSUk6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTY6MDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgKFBlbnRhIFNHTUlJKSB0byBzZXZlcmFsIHN3aXRjaCBzdGF0ZW1lbnRzIGluIHRoZSBwaHlsaW5rIGNvcmUuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQSFkgaW50ZXJmYWNlIG1vZGUuIEEgc2VhcmNoIG9mIHRoZSBrZXJuZWwgdHJlZSByZXZlYWxzIHRoYXQgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSBpcyBvbmx5IHJlZmVyZW5jZWQgYnkgdGhlIHFjYTgwN3ggcGh5c2ljYWwgUEhZIGRyaXZlciwgYW5kIG5vIE1BQyBkcml2ZXJzIGV4cGxpY2l0bHkgc3VwcG9ydCBpdC4gRnVydGhlcm1vcmUsIHZpcnR1YWwgbmV0d29yayBkcml2ZXJzIGFuZCBzb2Z0d2FyZS1lbXVsYXRlZCBVU0IgZXRoZXJuZXQgYWRhcHRlcnMgKHdoaWNoIHVzZSBwaHlsaW5rKSBoYXJkY29kZSB0aGVpciBpbnRlcmZhY2UgbW9kZXMgdG8gc3RhbmRhcmQgb25lcyBsaWtlIE1JSSwgUk1JSSwgb3IgR01JSS4gU2luY2UgdGhpcyBpbnRlcmZhY2UgbW9kZSBjYW5ub3QgYmUgY29uZmlndXJlZCBmcm9tIHVzZXJzcGFjZSBhbmQgaXMgbm90IHVzZWQgYnkgYW55IGVtdWxhdGVkIGhhcmR3YXJlLCB0aGUgbmV3bHkgYWRkZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjZDdmYzAzMTI3NWViNGNkNmU5MGU0ZGZlNDY5NDcxZGE0OTQ2MTBjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgOSAxNjowNDo1MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jCmluZGV4IDE4ZDJlYWQ5N2FhNTQuLjFjZTlkMjI2Njc3NGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwpAQCAtMTA0MCw2ICYjNDM7MTA0MCw3IEBAIHN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpCiB7CiAJc3dpdGNoIChpbnRlcmZhY2UpIHsKIAljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSToKJiM0MzsJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOgogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSToKIAljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RVVNHTUlJOgogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1VTWEdNSUk6CkBAIC00MTgzLDYgJiM0Mzs0MTg0LDcgQEAgdm9pZCBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSwKIAkJYnJlYWs7CiAKIAljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSToKJiM0MzsJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOgogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSToKIAkJaWYgKG5lZ19tb2RlID09IFBIWUxJTktfUENTX05FR19JTkJBTkRfRU5BQkxFRCkKIAkJCXBoeWxpbmtfZGVjb2RlX3NnbWlpX3dvcmQoc3RhdGUsIGxwYSk7CkBAIC00MjYzLDYgJiM0Mzs0MjY1LDcgQEAgaW50IHBoeWxpbmtfbWlpX2MyMl9wY3NfZW5jb2RlX2FkdmVydGlzZW1lbnQocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSwKIAkJCWFkdiB8PSBBRFZFUlRJU0VfMTAwMFhQU0VfQVNZTTsKIAkJcmV0dXJuIGFkdjsKIAljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSToKJiM0MzsJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOgogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSToKIAkJcmV0dXJuIDB4MDAwMTsKIAlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9waHlsaW5rLmggYi9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaAppbmRleCAyYmMwZGIzZDUyYWM4Li4xZGRhNWM3ZWQ1ZjE0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaApAQCAtNzkxLDYgJiM0Mzs3OTEsNyBAQCBzdGF0aWMgaW5saW5lIGludCBwaHlsaW5rX2dldF9saW5rX3RpbWVyX25zKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpCiB7CiAJc3dpdGNoIChpbnRlcmZhY2UpIHsKIAljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSToKJiM0MzsJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOgogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSToKIAljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJOgogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwR19RWEdNSUk6CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDE2OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT44bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NDIKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAzNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUEhZIEludGVyZmFjZSBNb2RlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBwaHlsaW5rLmNgIGFuZCBgcGh5bGluay5oYC4gTG9va3MgbGlrZSB0aGV5JiMzOTtyZSBhZGRpbmcgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHRvIGEgZmV3IHN3aXRjaCBzdGF0ZW1lbnRzIGluIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZSBwaHlsaW5rIGZyYW1ld29yay4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHNlZWluZyBjaGFuZ2VzIGluIGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAsIGBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZWAsIGBwaHlsaW5rX21paV9jMjJfcGNzX2VuY29kZV9hZHZlcnRpc2VtZW50YCwgYW5kIGBwaHlsaW5rX2dldF9saW5rX3RpbWVyX25zYC4gVGhlIGNoYW5nZXMgdGhlbXNlbHZlcyBhcmUgbWluaW1hbCDigJMgYmFzaWNhbGx5LCByb3V0aW5nIHRoZSBQU0dNSUkgY2FzZSB0aHJvdWdoIHRoZSBleGlzdGluZyBTR01JSSBhbmQgUVNHTUlJIGxvZ2ljLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz8gSXQmIzM5O3MgcGFydCBvZiB0aGUgcGh5bGluayBmcmFtZXdvcmssIHdoaWNoLCBhcyB3ZSBrbm93LCBpcyBwcmV0dHkgY29yZSB0byBuZXR3b3JrIGRyaXZlciBmdW5jdGlvbmFsaXR5LiBBbmQsIGBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZWAgYW5kIGBwaHlsaW5rX21paV9jMjJfcGNzX2VuY29kZV9hZHZlcnRpc2VtZW50YCBhcmUgZXhwb3J0ZWQgc3ltYm9scy4gVGhhdCByYWlzZXMgYSBmbGFnLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaXMgc29tZXRoaW5nIHRoYXQmIzM5O3Mgb25seSBjb25maWd1cmVkIGF0IHRoZSBoYXJkd2FyZSBsZXZlbCwgdmlhIERldmljZSBUcmVlIG9yIGRyaXZlciBwcm9iZSwgb3IgaWYgaXQgY2FuIGJlIHJlYWNoZWQgdmlhIHVzZXJzcGFjZSwgbWF5YmUgdGhyb3VnaCBldGh0b29sIG9yIG5ldGxpbmsuIFRoYXQmIzM5O3MgdGhlIGtleSB0byB3aGV0aGVyIGZ1enppbmcgaXMgZXZlbiByZWxldmFudCBoZXJlLgoKR2l2ZW4gdGhvc2UgZXhwb3J0ZWQgc3ltYm9scywgYHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlYCBhbmQgYHBoeWxpbmtfbWlpX2MyMl9wY3NfZW5jb2RlX2FkdmVydGlzZW1lbnRgLCB0aGF0IGZlZWxzIGxpa2UgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuIExldCYjMzk7cyBzZWUgaWYgdGhpcyBtb2RlIGlzIHNvbWV0aGluZyB0aGF0IGNhbiBiZSBzZXQgb3IgYWx0ZXJlZCBieSB1c2Vyc3BhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTY6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuYz0yMTM9c3RhdGljIHZvaWQgbXhsODYyeHhfcGNzX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtcGh5bGluay5jLTI1Ny1cdFx0ICAgICAgIChzdGF0ZS1cdTAwM2Vhbl9jb21wbGV0ZSA/IEJNU1JfQU5FR0NPTVBMRVRFIDogMCk7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtcGh5bGluay5jOjI1ODpcdFx0cGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RhdGUsIG5lZ19tb2RlLCBibXNyLFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuYy0yNTktXHRcdFx0XHRcdFx0IGxlMTZfdG9fY3B1KHN0LmxwYS5jbDM3KSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz01NzM9c3RhdGljIHZvaWQgbWFjYl9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01ODAtXHRscGEgPSBnZW1fcmVhZGwoYnAsIFBDU0FOTFBCQVNFKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTgxOlx0cGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RhdGUsIG5lZ19tb2RlLCBibXNyLCBscGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01ODItfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcG9ydC5jPTI4Nz12b2lkIGxhbjk2NnhfcG9ydF9zdGF0dXNfZ2V0KHN0cnVjdCBsYW45NjZ4X3BvcnQgKnBvcnQsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BvcnQuYy0zMTYtXHRcdGxwX2FkdiA9IERFVl9QQ1MxR19BTkVHX1NUQVRVU19MUF9BRFZfR0VUKHZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BvcnQuYzozMTc6XHRcdHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0YXRlLCBuZWdfbW9kZSwgYm1zciwgbHBfYWR2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcG9ydC5jLTMxOC1cdH0gZWxzZSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3Bjcy5jPTY2PXN0YXRpYyB2b2lkIGR3bWFjX2ludGVncmF0ZWRfcGNzX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNzLmMtODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNzLmM6ODQ6XHRcdHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0YXRlLCBuZWdfbW9kZSwgc3RhdHVzLCBscGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3Bjcy5jLTg1LVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLW10ay1seW54aS5jPTEwOD1zdGF0aWMgdm9pZCBtdGtfcGNzX2x5bnhpX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLW10ay1seW54aS5jLTExOC1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbXRrLWx5bnhpLmM6MTE5Olx0cGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RhdGUsIG5lZ19tb2RlLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1tdGstbHlueGkuYy0xMjAtXHRcdFx0XHRcdCBGSUVMRF9HRVQoU0dNSUlfQk1TUiwgYm0pLFxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jPTExMDM9c3RhdGljIGludCB4cGNzX2dldF9zdGF0ZV9jMzdfMTAwMGJhc2V4KHN0cnVjdCBkd194cGNzICp4cGNzLFxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jLTExMzItXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYzoxMTMzOlx0XHRwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdGF0ZSwgbmVnX21vZGUsIGJtc3IsIGxwYSk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy0xMTM0LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDExNj1zdGF0aWMgdm9pZCBwaHlsaW5rX2RlY29kZV91c2dtaWlfd29yZChzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQxNDAtLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQxNDE6ICogcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoKSAtIERlY29kZSBNQUMgUENTIHN0YXRlIGZyb20gTUlJIHJlZ2lzdGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MTQyLSAqIEBzdGF0ZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQxNTQtICovXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQxNTU6dm9pZCBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDE1Ni1cdFx0XHRcdCAgICAgIHVuc2lnbmVkIGludCBuZWdfbW9kZSwgdTE2IGJtc3IsIHUxNiBscGEpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MjAyLX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDIwMzpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQyMDQtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MjIwPXZvaWQgcGh5bGlua19taWlfYzIyX3Bjc19nZXRfc3RhdGUoc3RydWN0IG1kaW9fZGV2aWNlICpwY3MsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MjMyLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0MjMzOlx0cGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RhdGUsIG5lZ19tb2RlLCBibXNyLCBscGEpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MjM0LX1cbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaD04MTY9c3RhdGljIGlubGluZSBib29sIHBoeWxpbmtfbWFjX2ltcGxlbWVudHNfbHBpKGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgKm9wcylcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC04MjAtXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo4MjE6dm9pZCBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTgyMi1cdFx0XHRcdCAgICAgIHVuc2lnbmVkIGludCBuZWdfbW9kZSwgdTE2IGJtc3IsIHUxNiBscGEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDE2OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MTIKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFJlY2VudCBDaGFuZ2VzIGluIHRoZSBgcGh5bGlua2AgU3Vic3lzdGVtKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBvdmVyIHRoZXNlIHJlY2VudCBtb2RpZmljYXRpb25zLiBUaGV5IHNlZW0gdG8gYmUgZm9jdXNlZCBvbiBhIGZldyBzcGVjaWZpYyBhcmVhcyB3aXRoaW4gdGhlIGBwaHlsaW5rYCBzdWJzeXN0ZW06IGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAsIGBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZWAsIGBwaHlsaW5rX21paV9jMjJfcGNzX2VuY29kZV9hZHZlcnRpc2VtZW50YCwgYW5kIGBwaHlsaW5rX2dldF9saW5rX3RpbWVyX25zYC4gIE5vdCBhIHZhc3QgYW1vdW50IG9mIGNvZGUsIGJ1dCBjbGVhcmx5IGltcG9ydGFudCBwaWVjZXMsIGdpdmVuIHdoZXJlIHRoZXkgc2l0LgoKVGhlIGBwaHlsaW5rYCBzdWJzeXN0ZW0sIGFzIHdlIGtub3csIGlzIGEgY29yZSBjb21wb25lbnQgYW5kIGlzIGxldmVyYWdlZCBleHRlbnNpdmVseSBieSBhIHdpZGUgYXJyYXkgb2YgTUFDIGRyaXZlcnMuIEkgc2VlIHRoYXQgaXQgaXMgdXRpbGlzZWQgd2l0aGluIGBtYWNiYCwgYHN0bW1hY2AsIGBsYW45NjZ4YCwgYG10a19ldGhfc29jYCBkcml2ZXJzLCBhbGwgb2Ygd2hpY2ggYXJlIHF1aXRlIGNvbW1vbi4gIFRoaXMgc3VnZ2VzdHMgdGhhdCBldmVuIG1pbm9yIHR3ZWFrcyBoZXJlIGNvdWxkIHBvdGVudGlhbGx5IGhhdmUgYnJvYWQgaW1wbGljYXRpb25zLCBnb29kIHRvIGtlZXAgaW4gbWluZCBmb3IgdGVzdGluZy4KCk5vdywgYSBzbGlnaHRseSBkaWZmZXJlbnQgcXVlc3Rpb24gYXJpc2VzIGluIG15IG1pbmQuIFRoZXNlIGNoYW5nZXMgbWF5IGhhdmUgaW1wbGljYXRpb25zIGluIGEgdmVyeSBzcGVjaWZpYyBzY2VuYXJpbywgYW5kIEkgYW0gY3VyaW91cyB3aGV0aGVyIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpcyBhY3R1YWxseSAqcmVhY2hhYmxlKiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB3aGljaCBkcml2ZXJzIGV4cGxpY2l0bHkgdXNlIHRoaXMsIGp1c3QgdG8gZ2V0IGEgbGF5IG9mIHRoZSBsYW5kIGhlcmUuICBJdCB3b3VsZCBiZSBpbnRlcmVzdGluZyB0byBzZWUgaWYgYW55IG9mIHRoZXNlIGNoYW5nZXMgdG91Y2ggdGhhdCBjb2RlIHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTY6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdD0yMzg9U29tZSBvZiB0aGUgaW50ZXJmYWNlIG1vZGVzIGFyZSBkZXNjcmliZWQgYmVsb3c6XG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3QtMzI1LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3Q6MzI2OmBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWBgXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC0zMjctICAgIFRoaXMgaXMgdGhlIFBlbnRhIFNHTUlJIG1vZGUsIGl0IGlzIHNpbWlsYXIgdG8gUVNHTUlJIGJ1dCBpdCBjb21iaW5lcyA1XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM9MTU5PWludCBwaHlfaW50ZXJmYWNlX251bV9wb3J0cyhwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMS1cdFx0cmV0dXJuIDQ7XG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzoyMDI6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0yMDMtXHRcdHJldHVybiA1O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jPTI5ND11bnNpZ25lZCBsb25nIHBoeV9jYXBzX2Zyb21faW50ZXJmYWNlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMzEwLVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYzozMTE6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTItXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzg9c3RhdGljIGludCBwaHlsaW5rX2ludGVyZmFjZV9tYXhfc3BlZWQocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1OS1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjA6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MS1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTc3ND1zdGF0aWMgaW50IHBoeWxpbmtfcGFyc2VfbW9kZShzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MDgtXHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4MDk6XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODEwLVx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQyLVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwNDM6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDQtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MTU1PXZvaWQgcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MTg2LVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQxODc6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQxODgtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MjUxPWludCBwaHlsaW5rX21paV9jMjJfcGNzX2VuY29kZV9hZHZlcnRpc2VtZW50KHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MjY3LVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQyNjg6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQyNjktXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTQ5MD1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfcHJvYmVfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01NDktXHRcdGlmICghc3RyY2FzZWNtcChwYWNrYWdlX21vZGVfbmFtZSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTA6XHRcdFx0XHRwaHlfbW9kZXMoUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSkpKVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU1MTpcdFx0XHRwcml2LVx1MDAzZXBhY2thZ2VfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTUyLVx0XHRlbHNlIGlmICghc3RyY2FzZWNtcChwYWNrYWdlX21vZGVfbmFtZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM9NTYyPXN0YXRpYyBpbnQgcWNhODA3eF9waHlfcGFja2FnZV9jb25maWdfaW5pdF9vbmNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4NS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTg2Olx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4Ny1cdGRlZmF1bHQ6XG4tLVxuaW5jbHVkZS9saW51eC9waHkuaD01Mz1leHRlcm4gY29uc3QgaW50IHBoeV9iYXNpY19wb3J0c19hcnJheVszXTtcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTg5LSAqIEBQSFlfSU5URVJGQUNFX01PREVfTU9DQTogTXVsdGltZWRpYSBvdmVyIENvYXhcbmluY2x1ZGUvbGludXgvcGh5Lmg6OTA6ICogQFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6IFBlbnRhIFNHTUlJXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTkxLSAqIEBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOiBRdWFkIFNHTUlJXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaD0xMTQ9dHlwZWRlZiBlbnVtIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTEzMi1cdFBIWV9JTlRFUkZBQ0VfTU9ERV9NT0NBLFxuaW5jbHVkZS9saW51eC9waHkuaDoxMzM6XHRQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJLFxuaW5jbHVkZS9saW51eC9waHkuaC0xMzQtXHRQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJLFxuLS1cbmluY2x1ZGUvbGludXgvcGh5Lmg9MjEwPXN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqcGh5X21vZGVzKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaC0yNDgtXHRcdHJldHVybiBcJiMzNDttb2NhXCYjMzQ7O1xuaW5jbHVkZS9saW51eC9waHkuaDoyNDk6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5pbmNsdWRlL2xpbnV4L3BoeS5oLTI1MC1cdFx0cmV0dXJuIFwmIzM0O3BzZ21paVwmIzM0Oztcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaD03OTA9c3RhdGljIGlubGluZSBpbnQgcGh5bGlua19nZXRfbGlua190aW1lcl9ucyhwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTc5My1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg6Nzk0Olx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzk1LVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDE2OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1MjgKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA1MDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBwaHlsaW5rIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaW50byBhIGZldyBrZXkgYXJlYXMgb2YgdGhlIGBwaHlsaW5rYCBmcmFtZXdvcmsuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgdHJlYXRpbmcgaXQgc2ltaWxhcmx5IHRvIGBTR01JSWAgYW5kIGBRU0dNSUlgLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBwaHlsaW5rIGxvZ2ljLCBtZWFuaW5nIHRoZSB1bmRlcmx5aW5nIGJlaGF2aW9yIHdpbGwgY2hhbmdlLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiB0aGlzIGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSSBrbm93IGBwaHlsaW5rYCBpcyB1c2VkIGJ5IG51bWVyb3VzIG5ldHdvcmsgZHJpdmVycy4gU29tZSBvZiB0aG9zZSBjb3VsZCBiZSBlbXVsYXRlZCBvciB2aXJ0dWFsaXplZC4gQXQgbGVhc3QsIHRoZSBwaHlsaW5rIGNvcmUgbWlnaHQgYmUgcmVhY2hhYmxlIGlmIHdlIGhhdmUgYSBkcml2ZXIgdGhhdCB1c2VzIGl0LCByaWdodD8KCkFoYSwgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGlzIGEgKnNwZWNpZmljKiBoYXJkd2FyZSBpbnRlcmZhY2UgZm9yIFBlbnRhIFNHTUlJLiBTbywgYXJlIHRoZXJlIGFueSBkcml2ZXJzIGFjdHVhbGx5IHVzaW5nIGl0PyBMZXQmIzM5O3Mgc2VlLi4uIEdyZXBwaW5nIGZvciBpdCBzaG93cyB0aGF0IHRoZSBgcWNhODA3eGAgZHJpdmVyIGZyb20gUXVhbGNvbW0gZG9lcyB1c2UgdGhpcyBpbnRlcmZhY2UgbW9kZS4gVGhhdCBtYWtlcyBzZW5zZTsgdGhleSBvZnRlbiB1dGlsaXplIHRoZXNlIGludGVyZmFjZSB0eXBlcy4KClRoZSBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQgYXJlIGNyaXRpY2FsOiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgLCBgcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGVgLCBgcGh5bGlua19taWlfYzIyX3Bjc19lbmNvZGVfYWR2ZXJ0aXNlbWVudGAsIGFuZCBgcGh5bGlua19nZXRfbGlua190aW1lcl9uc2AuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZWl0aGVyIGV4cG9ydGVkIG9yIHVzZWQgaW50ZXJuYWxseSB3aXRoaW4gYHBoeWxpbmtgLCB0aGUgZ2VuZXJpYyBmcmFtZXdvcmsuIEl0IHNvdW5kcyBsaWtlIGEgY29yZSBjaGFuZ2UsIHRoZXJlZm9yZSBpdOKAmXMgd29ydGggdGhpbmtpbmcgYWJvdXQgZnV6emluZyB0aGlzLCByaWdodD8gSXQmIzM5O3MgYSBrZXkgcGllY2Ugb2YgdGhlIG5ldHdvcmsgc3RhY2ssIHNvIGZ1enppbmcgd291bGQgYmUgYSBnb29kIGlkZWEuIEhvd2V2ZXIsIHdhaXQsIGBwaHlsaW5rYCBpcyBtb3N0bHkgZm9yIHBoeXNpY2FsIGV0aGVybmV0IGRyaXZlcnMgbGlrZSBNQUNzIGFuZCBQSFlzLiBDYW4gU3l6a2FsbGVyIGV2ZW4gZnV6eiBgcGh5bGlua2AgZWZmZWN0aXZlbHk/IFN5emthbGxlciBjYW4gZnV6eiBuZXRsaW5rIGludGVyZmFjZXMsIGFuZCBtYXliZSBzb21lIHZpcnR1YWwgZXRoZXJuZXQgZHJpdmVycyB1c2UgYHBoeWxpbmtgPwoKTGV0JiMzOTtzIGNoZWNrIGlmIGFueSB2aXJ0dWFsIGRyaXZlciB1dGlsaXplcyBgcGh5bGlua2AuIEkgc2hvdWxkIGxvb2sgYXQgd2hldGhlciBgcGh5bGlua19jcmVhdGVgIGlzIGNhbGxlZCBieSBhbnkgZHJpdmVyIHRoYXQgY2FuIGJlIGluc3RhbnRpYXRlZCBieSBzeXprYWxsZXIuIExpa2UgYG5ldGRldnNpbWAsIGB2ZXRoYCwgb3IgYHR1bmAgZm9yIGV4YW1wbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTY6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5bGlua19jcmVhdGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdD03ND10aGlzIGRvY3VtZW50YXRpb24uXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zNjMtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0OjM2NDpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLCBub2RlLCBwaHlfbW9kZSwgXHUwMDI2cGh5bGlua19vcHMpO1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zNjUtXHRpZiAoSVNfRVJSKHBoeWxpbmspKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTExMjg9c3RhdGljIGludCBhbHRlcmFfdHNlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE0MTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTQxNjpcdHByaXYtXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnByaXYtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTQxNy1cdFx0XHRcdCAgICAgICBvZl9md25vZGVfaGFuZGxlKHByaXYtXHUwMDNlZGV2aWNlLVx1MDAzZW9mX25vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9MTA3ND1zdGF0aWMgaW50IGFnNzF4eF9waHlsaW5rX3NldHVwKHN0cnVjdCBhZzcxeHggKmFnKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTEwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTEwOTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZhZy1cdTAwM2VwaHlsaW5rX2NvbmZpZywgYWctXHUwMDNlcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMTEwLVx0XHRcdFx0IGFnLVx1MDAzZXBoeV9pZl9tb2RlLCBcdTAwMjZhZzcxeHhfcGh5bGlua19tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTEwMjM9c3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTA4NjpcdGJwLVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZicC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgYnAtXHUwMDNlcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDg3LVx0XHRcdFx0ICAgICBicC1cdTAwM2VwaHlfaW50ZXJmYWNlLCBcdTAwMjZtYWNiX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jPTIwMT1zdGF0aWMgaW50IGRwYWFfbmV0ZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yNzQtXHRtYWNfZGV2LVx1MDAzZXVwZGF0ZV9zcGVlZCA9IGRwYWFfZXRoX2Nncl9zZXRfc3BlZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jOjI3NTpcdG1hY19kZXYtXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNm1hY19kZXYtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI3Ni1cdFx0XHRcdFx0ICBkZXZfZndub2RlKG1hY19kZXYtXHUwMDNlZGV2KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM9NTYwPWludCBkcGFhMl9tYWNfY29ubmVjdChzdHJ1Y3QgZHBhYTJfbWFjICptYWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYzo2MjU6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNi1cdFx0XHRcdCBkcG1hY19ub2RlLCBtYWMtXHUwMDNlaWZfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9OTcxPXN0YXRpYyBpbnQgZW5ldGM0X2xpbmtfaW5pdChzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05ODktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTkwOlx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXHUwMDI2ZW5ldGNfcGxfbWFjX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTkxLVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5Mi1cdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBjcmVhdGUgcGh5bGlua1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTkzOlx0XHRnb3RvIGVycl9waHlsaW5rX2NyZWF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTQtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5OTg6ZXJyX3BoeWxpbmtfY3JlYXRlOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5OS1cdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9ODQ3PXN0YXRpYyBpbnQgZW5ldGNfcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6OTMwOlx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXHUwMDI2ZW5ldGNfbWFjX3BoeWxpbmtfb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTkzMS1cdGlmIChlcnIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo5MzI6XHRcdGdvdG8gZXJyX3BoeWxpbmtfY3JlYXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTMzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTk0MS1cdGVuZXRjX3BoeWxpbmtfZGVzdHJveShwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjk0MjplcnJfcGh5bGlua19jcmVhdGU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05NDMtXHRlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz0zMTI9RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfbWRpb2J1c19kZXN0cm95KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zMTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MzE0OmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzE1LVx0XHRcdCBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpvcHMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTMzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozMzg6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cGYtXHUwMDNlcGh5bGlua19jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUobm9kZSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzM5LVx0XHRcdFx0IHBmLVx1MDAzZWlmX21vZGUsIG9wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTM0OC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MzQ5OkVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3BoeWxpbmtfY3JlYXRlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNTAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oPTEyPXZvaWQgZW5ldGNfbWRpb2J1c19kZXN0cm95KHN0cnVjdCBlbmV0Y19wZiAqcGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oOjEzOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmgtMTQtXHRcdFx0IGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgKm9wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmM9ODUzPXN0YXRpYyBpbnQgZnNfZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYy05MzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYzo5MzM6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2ZmVwLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKGZlcC1cdTAwM2VkZXYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmMtOTM0LVx0XHRcdFx0IHBoeV9tb2RlLCBcdTAwMjZmc19lbmV0X3BoeWxpbmtfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmM9MzQxOT1zdGF0aWMgaW50IHVjY19nZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UqIG9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jLTM1NzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYzozNTc0Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnVnZXRoLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKFx1MDAyNmRldi1cdTAwM2VkZXYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmMtMzU3NS1cdFx0XHRcdCBwaHlfaW50ZXJmYWNlLCBcdTAwMjZ1Z2V0aF9tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jPTU0ODA9c3RhdGljIGludCBtdm5ldGFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jLTU1OTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jOjU1OTk6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cHAtXHUwMDNlcGh5bGlua19jb25maWcsIHBkZXYtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmMtNTYwMC1cdFx0XHRcdCBwaHlfbW9kZSwgXHUwMDI2bXZuZXRhX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYz02ODQwPXN0YXRpYyBpbnQgbXZwcDJfcG9ydF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTcxNDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYzo3MTQ4Olx0XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cG9ydC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgcG9ydF9md25vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy03MTQ5LVx0XHRcdFx0XHQgcGh5X21vZGUsIFx1MDAyNm12cHAyX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYz0zNzA9c3RhdGljIGludCBwcmVzdGVyYV9wb3J0X3NmcF9iaW5kKHN0cnVjdCBwcmVzdGVyYV9wb3J0ICpwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jLTQxNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jOjQxNzpcdFx0cGh5X2xpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwb3J0LVx1MDAzZXBoeV9jb25maWcsIGZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jLTQxOC1cdFx0XHRcdFx0ICBQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz00ODIzPXN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTQ5NjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjQ5Njg6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy00OTY5LVx0XHRcdFx0IG9mX2Z3bm9kZV9oYW5kbGUobWFjLVx1MDAzZW9mX25vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM9NzQ2PXN0cnVjdCBuZXRfZGV2aWNlICpmYm5pY19uZXRkZXZfYWxsb2Moc3RydWN0IGZibmljX2RldiAqZmJkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYzo4MzU6XHRpZiAoZmJuaWNfcGh5bGlua19jcmVhdGUobmV0ZGV2KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy04MzYtXHRcdGZyZWVfbmV0ZGV2KG5ldGRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaD0xMTE9aW50IGZibmljX3BoeWxpbmtfZ2V0X2ZlY3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oLTExMi1cdFx0XHQgICAgICAgc3RydWN0IGV0aHRvb2xfZmVjcGFyYW0gKmZlY3BhcmFtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2Lmg6MTEzOmludCBmYm5pY19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmgtMTE0LXZvaWQgZmJuaWNfcGh5bGlua19kZXN0cm95KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jPTE3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBmYm5pY19waHlsaW5rX21hY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTg2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MTg3OiAqIGZibmljX3BoeWxpbmtfY3JlYXRlIC0gUGh5bGluayBkZXZpY2UgY3JlYXRpb25cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE4OC0gKiBAbmV0ZGV2OiBOZXR3b3JrIERldmljZSBzdHJ1Y3QgdG8gYXR0YWNoIHBoeWxpbmsgZGV2aWNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTk2LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jOjE5NzppbnQgZmJuaWNfcGh5bGlua19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMjMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MjMyOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNmZibi1cdTAwM2VwaHlsaW5rX2NvbmZpZywgTlVMTCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTIzMy1cdFx0XHRcdCBmYm5pY19waHlsaW5rX3NlbGVjdF9pbnRlcmZhY2UoZmJuLVx1MDAzZWF1aSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTMxNDI9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgbGFuNzQzeF9waHlsaW5rX21hY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzE1MDpzdGF0aWMgaW50IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTUxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzE5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMTkzOlx0cGwgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZhZGFwdGVyLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBOVUxMLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxOTQtXHRcdFx0ICAgIGFkYXB0ZXItXHUwMDNlcGh5X2ludGVyZmFjZSwgXHUwMDI2bGFuNzQzeF9waHlsaW5rX21hY19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zNjY0PXN0YXRpYyBpbnQgbGFuNzQzeF9wY2lkZXZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3MjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzcyNDpcdHJldCA9IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzcyNS1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYz03OTE9c3RhdGljIGludCBsYW45NjZ4X3Byb2JlX3BvcnQoc3RydWN0IGxhbjk2NnggKmxhbjk2NngsIHUzMiBwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTg1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jOjg1NjpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwb3J0LVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmMtODU3LVx0XHRcdFx0IHBvcnRucCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM9MzEyPXN0YXRpYyBpbnQgc3Bhcng1X2NyZWF0ZV9wb3J0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jOjM4OTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZzcHg1X3BvcnQtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzkwLVx0XHRcdFx0IG9mX2Z3bm9kZV9oYW5kbGUoY29uZmlnLVx1MDAzZW5vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jPTE3NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgb2NlbG90X3BoeWxpbmtfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxNzgwOnN0YXRpYyBpbnQgb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IG9jZWxvdCAqb2NlbG90LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3ODEtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTgyMTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTgyMi1cdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKHBvcnRucCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM9MTg0Mz1pbnQgb2NlbG90X3Byb2JlX3BvcnQoc3RydWN0IG9jZWxvdCAqb2NlbG90LCBpbnQgcG9ydCwgc3RydWN0IHJlZ21hcCAqdGFyZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxODgwOlx0ZXJyID0gb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUob2NlbG90LCBwb3J0LCBwb3J0bnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTg4MS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xMzcwPXN0YXRpYyBpbnQgc3RtbWFjX3BoeWxpbmtfc2V0dXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTQ2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTQ2MjpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIGRldl9md25vZGUocHJpdi1cdTAwM2VkZXZpY2UpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNDYzLVx0XHRcdFx0IHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwaHlfaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jPTQ1PWludCB0bjQwX3BoeV9yZWdpc3RlcihzdHJ1Y3QgdG40MF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jLTYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmM6NjM6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBQSFlfSU5URVJGQUNFX01PREVfWEFVSSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jLTY0LVx0XHRcdFx0IFx1MDAyNnRuNDBfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYz0yNzU3PWFtNjVfY3Bzd19udXNzX2luaXRfcG9ydF9uZGV2KHN0cnVjdCBhbTY1X2Nwc3dfY29tbW9uICpjb21tb24sIHUzMiBwb3J0X2lkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jLTI4NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jOjI4NDI6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cG9ydC1cdTAwM2VzbGF2ZS5waHlsaW5rX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMjg0My1cdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKHBvcnQtXHUwMDNlc2xhdmUucG9ydF9ucCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jPTEzMD1zdGF0aWMgaW50IG5nYmVfcGh5bGlua19pbml0KHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jLTE0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYzoxNTA6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBwaHlfbW9kZSwgXHUwMDI2bmdiZV9tYWNfb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYy0xNTEtXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM9NDgyPWludCB0eGdiZV9waHlsaW5rX2luaXRfYW1sKHN0cnVjdCB0eGdiZSAqdHhnYmUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYy01MTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jOjUxMzpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIHBoeV9tb2RlLCBcdTAwMjZ0eGdiZV9tYWNfb3BzX2FtbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTUxNC1cdGlmIChJU19FUlIocGh5bGluaykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYz0yNjg9c3RhdGljIGludCB0eGdiZV9waHlsaW5rX2luaXQoc3RydWN0IHR4Z2JlICp0eGdiZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmM6MjkzOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgZndub2RlLCBwaHlfbW9kZSwgXHUwMDI2dHhnYmVfbWFjX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5NC1cdGlmIChJU19FUlIocGh5bGluaykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz0yNzk1PXN0YXRpYyBpbnQgYXhpZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzExNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzExODpcdGxwLVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZscC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTE5LVx0XHRcdFx0ICAgICBscC1cdTAwM2VwaHlfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjItXHRcdHJldCA9IFBUUl9FUlIobHAtXHUwMDNlcGh5bGluayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxMjM6XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O3BoeWxpbmtfY3JlYXRlIGVycm9yICglaSlcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjQtXHRcdGdvdG8gY2xlYW51cF9tZGlvO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NTE2PXN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9tYWNfYW5kX3BjcyhzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzEtXHRpZiAocGNzKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjUzMjpcdFx0LyogVGhlIFBDUywgaWYgcHJlc2VudCwgbXVzdCBiZSBzZXR1cCBiZWZvcmUgcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzMtXHRcdCAqIGhhcyBiZWVuIGNhbGxlZC4gSWYgdGhlIG9wcyBpcyBub3QgaW5pdGlhbGlzZWQsIHByaW50IGFuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDcxLSAqIHBoeWxpbmtfcGNzX25lZ19tb2RlKCkgLSBoZWxwZXIgdG8gZGV0ZXJtaW5lIFBDUyBpbmJhbmQgbW9kZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDcyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzMtICogQHBjczogYSBwb2ludGVyIHRvIFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTc2OT1zdGF0aWMgaW50IHBoeWxpbmtfcmVnaXN0ZXJfc2ZwKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3OTMtICogcGh5bGlua19zZXRfZml4ZWRfbGluaygpIC0gc2V0IHRoZSBmaXhlZCBsaW5rXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3OTQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc5NS0gKiBAc3RhdGU6IGEgcG9pbnRlciB0byBhIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xODMxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmspO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzMy0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgzNDogKiBwaHlsaW5rX2NyZWF0ZSgpIC0gY3JlYXRlIGEgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODM1LSAqIEBjb25maWc6IGEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IFx1MDAyNnN0cnVjdCBwaHlsaW5rX2NvbmZpZ1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg0OC0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTg0OTpzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NTAtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM2LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkzNzpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2NyZWF0ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MzgtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTQwLSAqIHBoeWxpbmtfZGVzdHJveSgpIC0gY2xlYW51cCBhbmQgZGVzdHJveSB0aGUgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTQxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NDItICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE5NTc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19kZXN0cm95KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjAtICogcGh5bGlua19leHBlY3RzX3BoeSgpIC0gRGV0ZXJtaW5lIGlmIHBoeWxpbmsgZXhwZWN0cyBhIHBoeSB0byBiZSBhdHRhY2hlZFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTYxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjItICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMDY9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyNi0gKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyMjc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyOC0gKiBAcGh5OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5X2RldmljZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNjA9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jb25uZWN0X3BoeSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjYzLSAqIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKSAtIGNvbm5lY3QgdGhlIFBIWSBzcGVjaWZpZWQgaW4gdGhlIERUIG1vZGUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNjQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI2NS0gKiBAZG46IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBkZXZpY2Vfbm9kZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNzk9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19vZl9waHlfY29ubmVjdCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjgyLSAqIHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KCkgLSBjb25uZWN0IHRoZSBQSFkgc3BlY2lmaWVkIGluIHRoZSBmd25vZGUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyODM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI4NC0gKiBAZndub2RlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZndub2RlX2hhbmRsZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzMzg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM0Mi0gKiAgIGluc3RhbmNlLlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzQzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDQtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzNzM9c3RhdGljIHZvaWQgcGh5bGlua19saW5rX2NoYW5nZWQoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIHVwLCBjb25zdCBjaGFyICp3aGF0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM4Mi0gKiBwaHlsaW5rX21hY19jaGFuZ2UoKSAtIG5vdGlmeSBwaHlsaW5rIG9mIGEgY2hhbmdlIGluIE1BQyBzdGF0ZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzgzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzODQtICogQHVwOiBpbmRpY2F0ZXMgd2hldGhlciB0aGUgbGluayBpcyBjdXJyZW50bHkgdXAuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDE1PXN0YXRpYyBpcnFyZXR1cm5fdCBwaHlsaW5rX2xpbmtfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQyNS0gKiBwaHlsaW5rX3N0YXJ0KCkgLSBzdGFydCBhIHBoeWxpbmsgaW5zdGFuY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQyNjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDI3LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDg4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3RhcnQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ5MS0gKiBwaHlsaW5rX3N0b3AoKSAtIHN0b3AgYSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0OTI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ5My0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjUyMj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N0b3ApO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUyNS0gKiBwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKCkgLSBibG9jayBQSFkgYWJpbGl0eSB0byBzdG9wIHJlY2VpdmUgY2xvY2sgaW4gTFBJXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI1MjY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUyNy0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjU1MT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NTQtICogcGh5bGlua19yeF9jbGtfc3RvcF91bmJsb2NrKCkgLSB1bmJsb2NrIFBIWSBhYmlsaXR5IHRvIHN0b3AgcmVjZWl2ZSBjbG9ja1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTU1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NTYtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1OTM9c3RhdGljIGJvb2wgcGh5bGlua19waHlfcG1fc3BlZWRfY3RybChzdHJ1Y3QgcGh5bGluayAqcGwpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjAwLSAqIHBoeWxpbmtfc3VzcGVuZCgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2Ugc3VzcGVuZCBldmVudFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjAxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MDItICogQG1hY193b2w6IHRydWUgaWYgdGhlIE1BQyBuZWVkcyB0byByZWNlaXZlIHBhY2tldHMgZm9yIFdha2Utb24tTGFuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjUyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3VzcGVuZCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjU1LSAqIHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUoKSAtIHByZXBhcmUgdG8gcmVzdW1lIGEgbmV0d29yayBkZXZpY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjY1NjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjU3LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjc3PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY4MC0gKiBwaHlsaW5rX3Jlc3VtZSgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2UgcmVzdW1lIGV2ZW50XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2ODE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY4Mi0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjcyMD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Jlc3VtZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzIzLSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfd29sKCkgLSBnZXQgdGhlIHdha2Ugb24gbGFuIHBhcmFtZXRlcnMgZm9yIHRoZSBQSFlcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjcyNDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzI1LSAqIEB3b2w6IGEgcG9pbnRlciB0byBcdTAwMjZzdHJ1Y3QgZXRodG9vbF93b2xpbmZvIHRvIGhvbGQgdGhlIHJlYWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjc1Nz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X3dvbCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzYwLSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfd29sKCkgLSBzZXQgd2FrZSBvbiBsYW4gcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzYxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3NjItICogQHdvbDogYSBwb2ludGVyIHRvIFx1MDAyNnN0cnVjdCBldGh0b29sX3dvbGluZm8gZm9yIHRoZSBkZXNpcmVkIHBhcmFtZXRlcnNcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI4ODk9c3RhdGljIHZvaWQgcGh5bGlua19nZXRfa3NldHRpbmdzKGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjkwNC0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCgpIC0gZ2V0IHRoZSBjdXJyZW50IGxpbmsgc2V0dGluZ3NcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjkwNTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTA2LSAqIEBrc2V0OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyB0byBob2xkIGxpbmsgc2V0dGluZ3Ncbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5NTc9c3RhdGljIGJvb2wgcGh5bGlua192YWxpZGF0ZV9wY3NfaW5iYW5kX2F1dG9uZWcoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3OC0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCgpIC0gc2V0IHRoZSBsaW5rIHNldHRpbmdzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5Nzk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk4MC0gKiBAa3NldDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgZm9yIHRoZSBkZXNpcmVkIG1vZGVzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTQ1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNDgtICogcGh5bGlua19ldGh0b29sX253YXlfcmVzZXQoKSAtIHJlc3RhcnQgbmVnb3RpYXRpb25cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE0OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTUwLSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTcwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzMtICogcGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKCkgLSBnZXQgdGhlIGN1cnJlbnQgcGF1c2UgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTc0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzUtICogQHBhdXNlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTg2PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTg5LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSgpIC0gc2V0IHRoZSBjdXJyZW50IHBhdXNlIHBhcmFtZXRlcnNcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE5MDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTkxLSAqIEBwYXVzZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI3Mj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI3Ni0gKiAgIGNvdW50ZXJcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzI3NzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKS5cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI3OC0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI5NT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2dldF9lZWVfZXJyKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyOTgtICogcGh5bGlua19ldGh0b29sX2dldF9lZWUoKSAtIHJlYWQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjk5OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMDAtICogQGVlZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIHJlYWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzMyMT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X2VlZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzI0LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfZWVlKCkgLSBzZXQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMzI1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMjYtICogQGVlZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIGRlc2lyZWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzQ5NT1zdGF0aWMgaW50IHBoeWxpbmtfbWlpX3dyaXRlKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgaW50IHBoeV9pZCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTMtICogcGh5bGlua19taWlfaW9jdGwoKSAtIGdlbmVyaWMgbWlpIGlvY3RsIGludGVyZmFjZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTE0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTUtICogQGlmcjogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGlmcmVxIGZvciBzb2NrZXQgaW9jdGxzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNTg4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2lvY3RsKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1OTItICogICBsaW5rIHBhcnRuZXJzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM1OTM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzU5NC0gKiBAc3luYzogcGVyZm9ybSBhY3Rpb24gc3luY2hyb25vdXNseVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzYxMz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NwZWVkX2Rvd24pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxNy0gKiAgIHBoeWxpbmtfc3BlZWRfZG93bigpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM2MTg6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxOS0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDM3Mj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9jNDVfcGNzX2dldF9zdGF0ZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzc2LSAqXHRcdFx0XHQgd2hpY2ggbG9zZXMgc3RhdGVcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDM3NzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzc4LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MzkzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcmVwbGF5X2xpbmtfYmVnaW4pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5Ny0gKlx0XHRcdCAgICAgICB3aGljaCBsb3N0IHN0YXRlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQzOTg6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5OS0gKlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03OTk9c3RhdGljIGludCBheDg4NzcyX3BoeWxpbmtfc2V0dXAoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTktXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODIwOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnByaXYtXHUwMDNlcGh5bGlua19jb25maWcsIGRldi1cdTAwM2VuZXQtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MjEtXHRcdFx0XHQgcGh5X2lmX21vZGUsIFx1MDAyNmF4ODg3NzJfcGh5bGlua19tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI3OTk9c3RhdGljIGludCBsYW43OHh4X3BoeWxpbmtfc2V0dXAoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODM4LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODM5Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKHBjLCBkZXYtXHUwMDNlbmV0LVx1MDAzZWRldi5md25vZGUsXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NDAtXHRcdFx0XHQgZGV2LVx1MDAzZWludGVyZmFjZSwgXHUwMDI2bGFuNzh4eF9waHlsaW5rX21hY19vcHMpO1xuLS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTcxOD1pbnQgcGNzX3ByZV9pbml0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MjEtXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3MjI6c3RydWN0IHBoeWxpbmsgKnBoeWxpbmtfY3JlYXRlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqLFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzIzLVx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqLFxuLS1cbm5ldC9kc2EvcG9ydC5jPTE2MTE9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgZHNhX3BvcnRfcGh5bGlua19tYWNfb3BzID0ge1xuLS1cbm5ldC9kc2EvcG9ydC5jLTE2MTYtXG5uZXQvZHNhL3BvcnQuYzoxNjE3OmludCBkc2FfcG9ydF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZHNhX3BvcnQgKmRwKVxubmV0L2RzYS9wb3J0LmMtMTYxOC17XG4tLVxubmV0L2RzYS9wb3J0LmMtMTY0Ni1cbm5ldC9kc2EvcG9ydC5jOjE2NDc6XHRwbCA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNmRwLVx1MDAzZXBsX2NvbmZpZywgb2ZfZndub2RlX2hhbmRsZShkcC1cdTAwM2VkbiksIG1vZGUsXG5uZXQvZHNhL3BvcnQuYy0xNjQ4LVx0XHRcdCAgICBtYWNfb3BzKTtcbi0tXG5uZXQvZHNhL3BvcnQuYz0xNjY1PXN0YXRpYyBpbnQgZHNhX3NoYXJlZF9wb3J0X3BoeWxpbmtfcmVnaXN0ZXIoc3RydWN0IGRzYV9wb3J0ICpkcClcbi0tXG5uZXQvZHNhL3BvcnQuYy0xNjczLVxubmV0L2RzYS9wb3J0LmM6MTY3NDpcdGVyciA9IGRzYV9wb3J0X3BoeWxpbmtfY3JlYXRlKGRwKTtcbm5ldC9kc2EvcG9ydC5jLTE2NzUtXHRpZiAoZXJyKVxuLS1cbm5ldC9kc2EvcG9ydC5oPTEwMD1pbnQgZHNhX3BvcnRfbXJwX2RlbF9yaW5nX3JvbGUoY29uc3Qgc3RydWN0IGRzYV9wb3J0ICpkcCxcbm5ldC9kc2EvcG9ydC5oLTEwMS1cdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHN3aXRjaGRldl9vYmpfcmluZ19yb2xlX21ycCAqbXJwKTtcbm5ldC9kc2EvcG9ydC5oOjEwMjppbnQgZHNhX3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IGRzYV9wb3J0ICpkcCk7XG5uZXQvZHNhL3BvcnQuaC0xMDMtdm9pZCBkc2FfcG9ydF9waHlsaW5rX2Rlc3Ryb3koc3RydWN0IGRzYV9wb3J0ICpkcCk7XG4tLVxubmV0L2RzYS91c2VyLmM9MjY1ND1zdGF0aWMgaW50IGRzYV91c2VyX3BoeV9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqdXNlcl9kZXYpXG4tLVxubmV0L2RzYS91c2VyLmMtMjY3My1cbm5ldC9kc2EvdXNlci5jOjI2NzQ6XHRyZXQgPSBkc2FfcG9ydF9waHlsaW5rX2NyZWF0ZShkcCk7XG5uZXQvZHNhL3VzZXIuYy0yNjc1LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxNjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTcwMgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDcxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aCBGdXp6aW5nPyBBIERlZXAgRGl2ZSBpbnRvIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgUmVhY2hhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7V29ydGggRnV6emluZz8mIzM0OyBUaGUgcHJvbXB0IGdpdmVzIG1lIGEgY2xlYXIgZGlyZWN0aXZlOiBpZiB0aGUgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBlbXVsYXRlZCBoYXJkd2FyZSwgdGhlbiBpdCYjMzk7cyBhIG5vLWdvLiBMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKRmlyc3QsIEkgc2VlIHRoYXQgdGhpcyBwYXRjaCBkZWFscyB3aXRoIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCB3aXRoaW4gcGh5bGluay4gSSBrbm93IHBoeWxpbmssIGl0JiMzOTtzIGNvcmUgbmV0d29ya2luZyBzdHVmZiwgc28gYW55IGNoYW5nZSBoZXJlIHBpcXVlcyBteSBpbnRlcmVzdC4gVGhlIHBhdGNoIGl0c2VsZiBzZWVtcyBzbWFsbCwgcHJpbWFyaWx5IGFkZGluZyB0aGlzIG1vZGUgdG8gYSBzd2l0Y2ggc3RhdGVtZW50IHdpdGhpbiBjb3JlIHBoeWxpbmsgZnVuY3Rpb25zOiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgLCBgcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGVgLCBgcGh5bGlua19taWlfYzIyX3Bjc19lbmNvZGVfYWR2ZXJ0aXNlbWVudGAsIGFuZCBgcGh5bGlua19nZXRfbGlua190aW1lcl9uc2AuIFRoZXNlIGFyZSBhbGwgZnVuY3Rpb25zIGNhbGxlZCBieSBNQUMgYW5kIFBDUyBkcml2ZXJzLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogY2FuIEkgdHJpZ2dlciBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSSBzdGFydCB0aGlua2luZyBhYm91dCB0aGUgd2F5cyBVU0IgZGV2aWNlcyBjYW4gYmUgdXNlZCBpbiBhIHZpcnR1YWwgc2V0dGluZy4gSSBrbm93IGBzeXprYWxsZXJgIGNhbiBlbXVsYXRlIFVTQiB1c2luZyBgZHVtbXlfaGNkYCBvciBgcmF3LWdhZGdldGAsIHNvIFVTQiBkZXZpY2VzICphcmUqIHJlYWNoYWJsZS4gSSBxdWlja2x5IGNoZWNrIGEgY291cGxlIG9mIFVTQiBkcml2ZXJzIEkga25vdywgYGFzaXhfZGV2aWNlcy5jYCBhbmQgYGxhbjc4eHguY2AuIE5laXRoZXIgb2YgdGhlc2UgZGlyZWN0bHkgdXNlIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCwgd2hpY2ggbWFrZXMgbWUgcGF1c2UuIFRoZW4gSSBzdGFydCB0aGlua2luZyBhYm91dCBQSFkgZHJpdmVycyBtb3JlIGdlbmVyYWxseS4gSSByZWNhbGwgYHFjYTgwN3guY2AsIGFuZCB0aGF0IFBIWSBkcml2ZXJzIHR5cGljYWxseSB1c2UgTURJTy4gSSBrbm93IE1ESU8gYnVzZXMgY2FuIHNvbWV0aW1lcyBiZSBlbXVsYXRlZCwgYnV0IHVzdWFsbHkgdGhleSBhcmUgdGllZCB0byByZWFsIGhhcmR3YXJlLiBUaGlzIHNwZWNpZmljIG1vZGUgaXMgbGlrZWx5IHNldCBieSBkZXZpY2UgdHJlZSwgQUNQSSwgb3IgaGFyZGNvZGVkIGluIHRoZSBkcml2ZXIuCgpUaGUgY29yZSBvZiB0aGUgaXNzdWU6IGlzIHRoaXMgc3dpdGNoIHN0YXRlbWVudCBjYXNlLCBzcGVjaWZpY2FsbHkgZm9yIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCwgYWN0dWFsbHkgKnJlYWNoYWJsZSo/ICBFdmVuIGlmIEkgKmNvdWxkKiBlbXVsYXRlIGEgTUFDL1BIWSBjYXBhYmxlIG9mIHVzaW5nIGBQU0dNSUlgLCBpcyB0aGVyZSBhIG1lY2hhbmlzbSB0byBjb25maWd1cmUgYSB2aXJ0dWFsIGRldmljZSB0byAqdXNlKiB0aGF0IHBhcnRpY3VsYXIgaW50ZXJmYWNlIG1vZGU/ICBMaWtlbHkgbm90LiBJIHdvdWxkIG5lZWQgYSB3YXkgdG8gaW5zdGFudGlhdGUgYSBQSFkgb3IgTUFDIHdpdGggdGhpcyBtb2RlIHZpYSBzb21ldGhpbmcgbGlrZSBuZXRsaW5rLCBidXQgdGhhdCBzZWVtcyBleHRyZW1lbHkgdW5saWtlbHkgZ2l2ZW4gdGhhdCBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaXMgcHJpbWFyaWx5IGEgaGFyZHdhcmUgcHJvcGVydHkuCgpTbywgdGhpcyBtb2RlLCBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAsIGlzICpwcm9iYWJseSogdW5yZWFjaGFibGUgaW4gbXkgc3RhbmRhcmQgdmlydHVhbCBzZXR1cC4gTXkgY29uY2x1c2lvbiBpcyB0aGF0IHVubGVzcyB0aGVyZSYjMzk7cyBhIHNwZWNpZmljLCB1bmNvbW1vbiwgYW5kIGVtdWxhdGVkIGhhcmR3YXJlIHNjZW5hcmlvLCB0aGlzIGNvZGUgcGF0aCwgYXQgbGVhc3QgdGhlIHNwZWNpZmljIGNhc2UgZm9yIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCB3aXRoaW4gdGhvc2Ugc3dpdGNoIHN0YXRlbWVudHMsIGlzIGxpa2VseSBkZWFkIGNvZGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gSG93ZXZlciwgdGhlIGZ1bmN0aW9ucyBtb2RpZmllZCwgYXJlIGNvcmUgcGh5bGluayBmdW5jdGlvbnMgYW5kIGNvdWxkIGJlIHJlYWNoZWQgd2l0aCBvdGhlciB2YWx1ZXMuClRoZSBmYWN0IHRoYXQgdGhpcyBpcyBqdXN0IGFuIGVudW0gdmFsdWUgaXMga2V5OyBpdCYjMzk7cyB0aGUgKnVzYWdlKiBvZiB0aGF0IGVudW0gdGhhdCBtYXR0ZXJzLgoKSSBzaG91bGQgcHJvYmFibHkgY29uZmlybSBpZiB0aGVyZSBpcyBhIHdheSB0byBzZXQgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGZyb20gdXNlcnNwYWNlLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTY6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdD0yMzg9U29tZSBvZiB0aGUgaW50ZXJmYWNlIG1vZGVzIGFyZSBkZXNjcmliZWQgYmVsb3c6XG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3QtMzI1LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3Q6MzI2OmBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWBgXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC0zMjctICAgIFRoaXMgaXMgdGhlIFBlbnRhIFNHTUlJIG1vZGUsIGl0IGlzIHNpbWlsYXIgdG8gUVNHTUlJIGJ1dCBpdCBjb21iaW5lcyA1XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM9MTU5PWludCBwaHlfaW50ZXJmYWNlX251bV9wb3J0cyhwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMS1cdFx0cmV0dXJuIDQ7XG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzoyMDI6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0yMDMtXHRcdHJldHVybiA1O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jPTI5ND11bnNpZ25lZCBsb25nIHBoeV9jYXBzX2Zyb21faW50ZXJmYWNlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMzEwLVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYzozMTE6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTItXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzg9c3RhdGljIGludCBwaHlsaW5rX2ludGVyZmFjZV9tYXhfc3BlZWQocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1OS1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjA6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MS1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTc3ND1zdGF0aWMgaW50IHBoeWxpbmtfcGFyc2VfbW9kZShzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MDgtXHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4MDk6XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODEwLVx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQyLVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwNDM6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDQtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MTU1PXZvaWQgcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MTg2LVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQxODc6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQxODgtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MjUxPWludCBwaHlsaW5rX21paV9jMjJfcGNzX2VuY29kZV9hZHZlcnRpc2VtZW50KHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MjY3LVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQyNjg6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQyNjktXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTQ5MD1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfcHJvYmVfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01NDktXHRcdGlmICghc3RyY2FzZWNtcChwYWNrYWdlX21vZGVfbmFtZSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTA6XHRcdFx0XHRwaHlfbW9kZXMoUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSkpKVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU1MTpcdFx0XHRwcml2LVx1MDAzZXBhY2thZ2VfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTUyLVx0XHRlbHNlIGlmICghc3RyY2FzZWNtcChwYWNrYWdlX21vZGVfbmFtZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM9NTYyPXN0YXRpYyBpbnQgcWNhODA3eF9waHlfcGFja2FnZV9jb25maWdfaW5pdF9vbmNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4NS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTg2Olx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4Ny1cdGRlZmF1bHQ6XG4tLVxuaW5jbHVkZS9saW51eC9waHkuaD01Mz1leHRlcm4gY29uc3QgaW50IHBoeV9iYXNpY19wb3J0c19hcnJheVszXTtcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTg5LSAqIEBQSFlfSU5URVJGQUNFX01PREVfTU9DQTogTXVsdGltZWRpYSBvdmVyIENvYXhcbmluY2x1ZGUvbGludXgvcGh5Lmg6OTA6ICogQFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6IFBlbnRhIFNHTUlJXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTkxLSAqIEBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOiBRdWFkIFNHTUlJXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaD0xMTQ9dHlwZWRlZiBlbnVtIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTEzMi1cdFBIWV9JTlRFUkZBQ0VfTU9ERV9NT0NBLFxuaW5jbHVkZS9saW51eC9waHkuaDoxMzM6XHRQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJLFxuaW5jbHVkZS9saW51eC9waHkuaC0xMzQtXHRQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJLFxuLS1cbmluY2x1ZGUvbGludXgvcGh5Lmg9MjEwPXN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqcGh5X21vZGVzKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaC0yNDgtXHRcdHJldHVybiBcJiMzNDttb2NhXCYjMzQ7O1xuaW5jbHVkZS9saW51eC9waHkuaDoyNDk6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5pbmNsdWRlL2xpbnV4L3BoeS5oLTI1MC1cdFx0cmV0dXJuIFwmIzM0O3BzZ21paVwmIzM0Oztcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaD03OTA9c3RhdGljIGlubGluZSBpbnQgcGh5bGlua19nZXRfbGlua190aW1lcl9ucyhwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTc5My1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg6Nzk0Olx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzk1LVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxNjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjg4NQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDE5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaW4gYSBWaXJ0dWFsaXplZCBDb250ZXh0KioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gdGhpcyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgY29uc3RhbnQsIGFuZCBJIHNlZSBpdCYjMzk7cyBvbmx5IGV4cGxpY2l0bHkgdXNlZCB3aXRoaW4gYHFjYTgwN3guY2AuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgY29kZSBwYXRoLCBzcGVjaWZpY2FsbHkgdGhlIG5ld2x5IGFkZGVkIGNhc2VzIGZvciB0aGlzIG1vZGUsIGNhbiBldmVuIGJlICpyZWFjaGVkKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBJdCBzZWVtcyB1bmxpa2VseSwgcmlnaHQ/IElmIG5vIHZpcnR1YWwgbmV0d29yayBkcml2ZXIgbWFrZXMgdXNlIG9mIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCwgdGhlbiB0aG9zZSBuZXcgY2FzZSBicmFuY2hlcyBhcmUgZWZmZWN0aXZlbHkgZGVhZCBjb2RlLCBhdCBsZWFzdCBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQuCgpUaGUgbmV4dCB0aGluZyBJJiMzOTttIGNvbnNpZGVyaW5nIGlzIHdoZXRoZXIgYHBoeV9pbnRlcmZhY2VfdGAgaXMgZXZlbiBzb21ldGhpbmcgdGhhdCYjMzk7cyBjb25maWd1cmFibGUgZnJvbSB1c2Vyc3BhY2UsIGVpdGhlciB0aHJvdWdoIG5ldGxpbmsgb3IgZXRodG9vbC4gVHlwaWNhbGx5LCB0aGF0IHR5cGUgb2YgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24gaXMgYSBoYXJkd2FyZSBwcm9wZXJ0eSBhbmQgaXMgbWFuYWdlZCBkZWVwZXIgZG93biwgb2Z0ZW4gc2V0IGR1cmluZyBkcml2ZXIgaW5pdGlhbGl6YXRpb24uIERldmljZSB0cmVlIG92ZXJsYXlzIG1pZ2h0IG9mZmVyIGEgd29ya2Fyb3VuZCBvciBzcGVjaWZpYyBkZWJ1Z2ZzL3N5c2ZzIGludGVyZmFjZXMgKmNvdWxkKiBwb3RlbnRpYWxseSBhbGxvdyBzb21lIGNvbnRyb2wsIGJ1dCBldmVuIHRoYXQgcmVxdWlyZXMgYSBkcml2ZXIgdG8gaGF2ZSBpbXBsZW1lbnRlZCB0aGF0IGtpbmQgb2YgdXNlci1zcGFjZSBpbnRlcmZhY2UuCgpXYWl0LCBsb29raW5nIGF0IHRoZSBjb21tb24gdmlydHVhbCBuZXR3b3JrIGRldmljZXMgbGlrZSBgdHVuYCwgYHZldGhgLCBhbmQgYG5ldGRldnNpbWAsIEkmIzM5O20gcmVhbGl6aW5nIHRoZXkgZG9uJiMzOTt0IGV2ZW4gdXNlIGBwaHlsaW5rYC4gQW5kIHNwZWNpZmljYWxseSwgYG5ldGRldnNpbWAgaXNuJiMzOTt0IHVzaW5nIGBwaHlsaW5rYCBhdCBhbGwuIFRoaXMgZnVydGhlciByZWluZm9yY2VzIG15IGluaXRpYWwgc3VzcGljaW9uIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBjb2RlIHRoYXQmIzM5O3MgZnVuZGFtZW50YWxseSBoYXJkd2FyZS1kZXBlbmRlbnQgYW5kIHRoZXJlZm9yZSwgcG90ZW50aWFsbHkgdW5yZWFjaGFibGUgaW4gYSBmdWxseSB2aXJ0dWFsaXplZCBzZXR0aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxNjoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlsaW5rX2NyZWF0ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0PTc0PXRoaXMgZG9jdW1lbnRhdGlvbi5cbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTM2My1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q6MzY0Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnByaXYtXHUwMDNlcGh5bGlua19jb25maWcsIG5vZGUsIHBoeV9tb2RlLCBcdTAwMjZwaHlsaW5rX29wcyk7XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTM2NS1cdGlmIChJU19FUlIocGh5bGluaykpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM9MTEyOD1zdGF0aWMgaW50IGFsdGVyYV90c2VfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTQxNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYzoxNDE2Olx0cHJpdi1cdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cHJpdi1cdTAwM2VwaHlsaW5rX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNDE3LVx0XHRcdFx0ICAgICAgIG9mX2Z3bm9kZV9oYW5kbGUocHJpdi1cdTAwM2VkZXZpY2UtXHUwMDNlb2Zfbm9kZSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYz0xMDc0PXN0YXRpYyBpbnQgYWc3MXh4X3BoeWxpbmtfc2V0dXAoc3RydWN0IGFnNzF4eCAqYWcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMTA4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxMTA5Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNmFnLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBhZy1cdTAwM2VwZGV2LVx1MDAzZWRldi5md25vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTExMTAtXHRcdFx0XHQgYWctXHUwMDNlcGh5X2lmX21vZGUsIFx1MDAyNmFnNzF4eF9waHlsaW5rX21hY19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9MTAyMz1zdGF0aWMgaW50IG1hY2JfbWlpX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMDg2Olx0YnAtXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNmJwLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBicC1cdTAwM2VwZGV2LVx1MDAzZWRldi5md25vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwODctXHRcdFx0XHQgICAgIGJwLVx1MDAzZXBoeV9pbnRlcmZhY2UsIFx1MDAyNm1hY2JfcGh5bGlua19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmM9MjAxPXN0YXRpYyBpbnQgZHBhYV9uZXRkZXZfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0X2Rldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI3NC1cdG1hY19kZXYtXHUwMDNldXBkYXRlX3NwZWVkID0gZHBhYV9ldGhfY2dyX3NldF9zcGVlZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmM6Mjc1Olx0bWFjX2Rldi1cdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2bWFjX2Rldi1cdTAwM2VwaHlsaW5rX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmMtMjc2LVx0XHRcdFx0XHQgIGRldl9md25vZGUobWFjX2Rldi1cdTAwM2VkZXYpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYz01NjA9aW50IGRwYWEyX21hY19jb25uZWN0KHN0cnVjdCBkcGFhMl9tYWMgKm1hYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNjI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jOjYyNTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZtYWMtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNjI2LVx0XHRcdFx0IGRwbWFjX25vZGUsIG1hYy1cdTAwM2VpZl9tb2RlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYz05NzE9c3RhdGljIGludCBlbmV0YzRfbGlua19pbml0KHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk4OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5OTA6XHRlcnIgPSBlbmV0Y19waHlsaW5rX2NyZWF0ZShwcml2LCBub2RlLCBcdTAwMjZlbmV0Y19wbF9tYWNfb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTEtXHRpZiAoZXJyKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTkyLVx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7RmFpbGVkIHRvIGNyZWF0ZSBwaHlsaW5rXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5OTM6XHRcdGdvdG8gZXJyX3BoeWxpbmtfY3JlYXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5NC1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjk5ODplcnJfcGh5bGlua19jcmVhdGU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTk5LVx0ZW5ldGNfbWRpb2J1c19kZXN0cm95KHBmKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYz04NDc9c3RhdGljIGludCBlbmV0Y19wZl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05MjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo5MzA6XHRlcnIgPSBlbmV0Y19waHlsaW5rX2NyZWF0ZShwcml2LCBub2RlLCBcdTAwMjZlbmV0Y19tYWNfcGh5bGlua19vcHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTMxLVx0aWYgKGVycilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjkzMjpcdFx0Z290byBlcnJfcGh5bGlua19jcmVhdGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05MzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTQxLVx0ZW5ldGNfcGh5bGlua19kZXN0cm95KHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6OTQyOmVycl9waHlsaW5rX2NyZWF0ZTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTk0My1cdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jPTMxMj1FWFBPUlRfU1lNQk9MX0dQTChlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTMxMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozMTQ6aW50IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zMTUtXHRcdFx0IGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgKm9wcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjMzODpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwZi1cdTAwM2VwaHlsaW5rX2NvbmZpZywgb2ZfZndub2RlX2hhbmRsZShub2RlKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zMzktXHRcdFx0XHQgcGYtXHUwMDNlaWZfbW9kZSwgb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzQ4LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozNDk6RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfcGh5bGlua19jcmVhdGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTM1MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmg9MTI9dm9pZCBlbmV0Y19tZGlvYnVzX2Rlc3Ryb3koc3RydWN0IGVuZXRjX3BmICpwZik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmg6MTM6aW50IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaC0xNC1cdFx0XHQgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYz04NTM9c3RhdGljIGludCBmc19lbmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jLTkzMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jOjkzMzpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZmZXAtXHUwMDNlcGh5bGlua19jb25maWcsIGRldl9md25vZGUoZmVwLVx1MDAzZWRldiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYy05MzQtXHRcdFx0XHQgcGh5X21vZGUsIFx1MDAyNmZzX2VuZXRfcGh5bGlua19tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYz0zNDE5PXN0YXRpYyBpbnQgdWNjX2dldGhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSogb2ZkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmMtMzU3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jOjM1NzQ6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2dWdldGgtXHUwMDNlcGh5bGlua19jb25maWcsIGRldl9md25vZGUoXHUwMDI2ZGV2LVx1MDAzZWRldiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYy0zNTc1LVx0XHRcdFx0IHBoeV9pbnRlcmZhY2UsIFx1MDAyNnVnZXRoX21hY19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmM9NTQ4MD1zdGF0aWMgaW50IG12bmV0YV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmMtNTU5OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmM6NTU5OTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYy01NjAwLVx0XHRcdFx0IHBoeV9tb2RlLCBcdTAwMjZtdm5ldGFfcGh5bGlua19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jPTY4NDA9c3RhdGljIGludCBtdnBwMl9wb3J0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmMtNzE0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jOjcxNDg6XHRcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwb3J0LVx1MDAzZXBoeWxpbmtfY29uZmlnLCBwb3J0X2Z3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTcxNDktXHRcdFx0XHRcdCBwaHlfbW9kZSwgXHUwMDI2bXZwcDJfcGh5bGlua19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jPTM3MD1zdGF0aWMgaW50IHByZXN0ZXJhX3BvcnRfc2ZwX2JpbmQoc3RydWN0IHByZXN0ZXJhX3BvcnQgKnBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmMtNDE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmM6NDE3Olx0XHRwaHlfbGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnBvcnQtXHUwMDNlcGh5X2NvbmZpZywgZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmMtNDE4LVx0XHRcdFx0XHQgIFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jPTQ4MjM9c3RhdGljIGludCBtdGtfYWRkX21hYyhzdHJ1Y3QgbXRrX2V0aCAqZXRoLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNDk2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6NDk2ODpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZtYWMtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTQ5NjktXHRcdFx0XHQgb2ZfZndub2RlX2hhbmRsZShtYWMtXHUwMDNlb2Zfbm9kZSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYz03NDY9c3RydWN0IG5ldF9kZXZpY2UgKmZibmljX25ldGRldl9hbGxvYyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy04MzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jOjgzNTpcdGlmIChmYm5pY19waHlsaW5rX2NyZWF0ZShuZXRkZXYpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jLTgzNi1cdFx0ZnJlZV9uZXRkZXYobmV0ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oPTExMT1pbnQgZmJuaWNfcGh5bGlua19nZXRfZmVjcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmgtMTEyLVx0XHRcdCAgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNwYXJhbSAqZmVjcGFyYW0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaDoxMTM6aW50IGZibmljX3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaC0xMTQtdm9pZCBmYm5pY19waHlsaW5rX2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM9MTc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGZibmljX3BoeWxpbmtfbWFjX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0xODYtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYzoxODc6ICogZmJuaWNfcGh5bGlua19jcmVhdGUgLSBQaHlsaW5rIGRldmljZSBjcmVhdGlvblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTg4LSAqIEBuZXRkZXY6IE5ldHdvcmsgRGV2aWNlIHN0cnVjdCB0byBhdHRhY2ggcGh5bGluayBkZXZpY2Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0xOTYtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MTk3OmludCBmYm5pY19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTk4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0yMzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYzoyMzI6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2ZmJuLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBOVUxMLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMjMzLVx0XHRcdFx0IGZibmljX3BoeWxpbmtfc2VsZWN0X2ludGVyZmFjZShmYm4tXHUwMDNlYXVpKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzE0Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBsYW43NDN4X3BoeWxpbmtfbWFjX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzE0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMTUwOnN0YXRpYyBpbnQgbGFuNzQzeF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxNTEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjMxOTM6XHRwbCA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNmFkYXB0ZXItXHUwMDNlcGh5bGlua19jb25maWcsIE5VTEwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzE5NC1cdFx0XHQgICAgYWRhcHRlci1cdTAwM2VwaHlfaW50ZXJmYWNlLCBcdTAwMjZsYW43NDN4X3BoeWxpbmtfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTM2NjQ9c3RhdGljIGludCBsYW43NDN4X3BjaWRldl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzcyMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNzI0Olx0cmV0ID0gbGFuNzQzeF9waHlsaW5rX2NyZWF0ZShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNzI1LVx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jPTc5MT1zdGF0aWMgaW50IGxhbjk2NnhfcHJvYmVfcG9ydChzdHJ1Y3QgbGFuOTY2eCAqbGFuOTY2eCwgdTMyIHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmMtODU1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmM6ODU2Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnBvcnQtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYy04NTctXHRcdFx0XHQgcG9ydG5wLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYz0zMTI9c3RhdGljIGludCBzcGFyeDVfY3JlYXRlX3BvcnQoc3RydWN0IHNwYXJ4NSAqc3Bhcng1LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYy0zODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM6Mzg5Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnNweDVfcG9ydC1cdTAwM2VwaHlsaW5rX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYy0zOTAtXHRcdFx0XHQgb2ZfZndub2RlX2hhbmRsZShjb25maWctXHUwMDNlbm9kZSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM9MTc3ND1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBvY2Vsb3RfcGh5bGlua19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTc3OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jOjE3ODA6c3RhdGljIGludCBvY2Vsb3RfcG9ydF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTc4MS1cdFx0XHRcdCAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqcG9ydG5wKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4MjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxODIxOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnByaXYtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODIyLVx0XHRcdFx0IG9mX2Z3bm9kZV9oYW5kbGUocG9ydG5wKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYz0xODQzPWludCBvY2Vsb3RfcHJvYmVfcG9ydChzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QsIGludCBwb3J0LCBzdHJ1Y3QgcmVnbWFwICp0YXJnZXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTg3OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jOjE4ODA6XHRlcnIgPSBvY2Vsb3RfcG9ydF9waHlsaW5rX2NyZWF0ZShvY2Vsb3QsIHBvcnQsIHBvcnRucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODgxLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTEzNzA9c3RhdGljIGludCBzdG1tYWNfcGh5bGlua19zZXR1cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNDYxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoxNDYyOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgZGV2X2Z3bm9kZShwcml2LVx1MDAzZWRldmljZSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE0NjMtXHRcdFx0XHQgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmM9NDU9aW50IHRuNDBfcGh5X3JlZ2lzdGVyKHN0cnVjdCB0bjQwX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmMtNjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYzo2MzpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIFBIWV9JTlRFUkZBQ0VfTU9ERV9YQVVJLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmMtNjQtXHRcdFx0XHQgXHUwMDI2dG40MF9tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jPTI3NTc9YW02NV9jcHN3X251c3NfaW5pdF9wb3J0X25kZXYoc3RydWN0IGFtNjVfY3Bzd19jb21tb24gKmNvbW1vbiwgdTMyIHBvcnRfaWR4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMjg0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmM6Mjg0MjpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwb3J0LVx1MDAzZXNsYXZlLnBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYy0yODQzLVx0XHRcdFx0IG9mX2Z3bm9kZV9oYW5kbGUocG9ydC1cdTAwM2VzbGF2ZS5wb3J0X25wKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmM9MTMwPXN0YXRpYyBpbnQgbmdiZV9waHlsaW5rX2luaXQoc3RydWN0IHd4ICp3eClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmMtMTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jOjE1MDpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIHBoeV9tb2RlLCBcdTAwMjZuZ2JlX21hY19vcHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jLTE1MS1cdGlmIChJU19FUlIocGh5bGluaykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYz00ODI9aW50IHR4Z2JlX3BoeWxpbmtfaW5pdF9hbWwoc3RydWN0IHR4Z2JlICp0eGdiZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTUxMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM6NTEzOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgTlVMTCwgcGh5X21vZGUsIFx1MDAyNnR4Z2JlX21hY19vcHNfYW1sKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmMtNTE0LVx0aWYgKElTX0VSUihwaHlsaW5rKSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jPTI2OD1zdGF0aWMgaW50IHR4Z2JlX3BoeWxpbmtfaW5pdChzdHJ1Y3QgdHhnYmUgKnR4Z2JlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmMtMjkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYzoyOTM6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBmd25vZGUsIHBoeV9tb2RlLCBcdTAwMjZ0eGdiZV9tYWNfb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmMtMjk0LVx0aWYgKElTX0VSUihwaHlsaW5rKSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jPTI3OTU9c3RhdGljIGludCBheGllbmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMTE4Olx0bHAtXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNmxwLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBwZGV2LVx1MDAzZWRldi5md25vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMTktXHRcdFx0XHQgICAgIGxwLVx1MDAzZXBoeV9tb2RlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzEyMi1cdFx0cmV0ID0gUFRSX0VSUihscC1cdTAwM2VwaHlsaW5rKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzEyMzpcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7cGh5bGlua19jcmVhdGUgZXJyb3IgKCVpKVxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzEyNC1cdFx0Z290byBjbGVhbnVwX21kaW87XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz01MTY9c3RhdGljIGludCBwaHlsaW5rX3ZhbGlkYXRlX21hY19hbmRfcGNzKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTUzMS1cdGlmIChwY3MpIHtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NTMyOlx0XHQvKiBUaGUgUENTLCBpZiBwcmVzZW50LCBtdXN0IGJlIHNldHVwIGJlZm9yZSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTUzMy1cdFx0ICogaGFzIGJlZW4gY2FsbGVkLiBJZiB0aGUgb3BzIGlzIG5vdCBpbml0aWFsaXNlZCwgcHJpbnQgYW5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTEwMzk9c3RhdGljIGVudW0gaW5iYW5kX3R5cGUgcGh5bGlua19nZXRfaW5iYW5kX3R5cGUocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzEtICogcGh5bGlua19wY3NfbmVnX21vZGUoKSAtIGhlbHBlciB0byBkZXRlcm1pbmUgUENTIGluYmFuZCBtb2RlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwNzI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA3My0gKiBAcGNzOiBhIHBvaW50ZXIgdG8gXHUwMDI2c3RydWN0IHBoeWxpbmtfcGNzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xNzY5PXN0YXRpYyBpbnQgcGh5bGlua19yZWdpc3Rlcl9zZnAoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc5My0gKiBwaHlsaW5rX3NldF9maXhlZF9saW5rKCkgLSBzZXQgdGhlIGZpeGVkIGxpbmtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTc5NDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzk1LSAqIEBzdGF0ZTogYSBwb2ludGVyIHRvIGEgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE4MzE9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zZXRfZml4ZWRfbGluayk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODMzLS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODM0OiAqIHBoeWxpbmtfY3JlYXRlKCkgLSBjcmVhdGUgYSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4MzUtICogQGNvbmZpZzogYSBwb2ludGVyIHRvIHRoZSB0YXJnZXQgXHUwMDI2c3RydWN0IHBoeWxpbmtfY29uZmlnXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODQ4LSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODQ5OnN0cnVjdCBwaHlsaW5rICpwaHlsaW5rX2NyZWF0ZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg1MC1cdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MzYtfVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTM3OkVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfY3JlYXRlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTkzOC1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NDAtICogcGh5bGlua19kZXN0cm95KCkgLSBjbGVhbnVwIGFuZCBkZXN0cm95IHRoZSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5NDE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk0Mi0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTk1Nz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Rlc3Ryb3kpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk2MC0gKiBwaHlsaW5rX2V4cGVjdHNfcGh5KCkgLSBEZXRlcm1pbmUgaWYgcGh5bGluayBleHBlY3RzIGEgcGh5IHRvIGJlIGF0dGFjaGVkXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5NjE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk2Mi0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjIwNj1zdGF0aWMgaW50IHBoeWxpbmtfYXR0YWNoX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjI2LSAqIHBoeWxpbmtfY29ubmVjdF9waHkoKSAtIGNvbm5lY3QgYSBQSFkgdG8gdGhlIHBoeWxpbmsgaW5zdGFuY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjIyNzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjI4LSAqIEBwaHk6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlfZGV2aWNlLlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjI2MD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Nvbm5lY3RfcGh5KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNjMtICogcGh5bGlua19vZl9waHlfY29ubmVjdCgpIC0gY29ubmVjdCB0aGUgUEhZIHNwZWNpZmllZCBpbiB0aGUgRFQgbW9kZS5cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI2NDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjY1LSAqIEBkbjogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGRldmljZV9ub2RlLlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjI3OT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX29mX3BoeV9jb25uZWN0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyODItICogcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QoKSAtIGNvbm5lY3QgdGhlIFBIWSBzcGVjaWZpZWQgaW4gdGhlIGZ3bm9kZS5cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI4MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjg0LSAqIEBmd25vZGU6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBmd25vZGVfaGFuZGxlLlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjMzOD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzQyLSAqICAgaW5zdGFuY2UuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIzNDM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM0NC0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjM3Mz1zdGF0aWMgdm9pZCBwaHlsaW5rX2xpbmtfY2hhbmdlZChzdHJ1Y3QgcGh5bGluayAqcGwsIGJvb2wgdXAsIGNvbnN0IGNoYXIgKndoYXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzgyLSAqIHBoeWxpbmtfbWFjX2NoYW5nZSgpIC0gbm90aWZ5IHBoeWxpbmsgb2YgYSBjaGFuZ2UgaW4gTUFDIHN0YXRlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIzODM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM4NC0gKiBAdXA6IGluZGljYXRlcyB3aGV0aGVyIHRoZSBsaW5rIGlzIGN1cnJlbnRseSB1cC5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0MTU9c3RhdGljIGlycXJldHVybl90IHBoeWxpbmtfbGlua19oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDI1LSAqIHBoeWxpbmtfc3RhcnQoKSAtIHN0YXJ0IGEgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNDI2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0MjctICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0ODg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zdGFydCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDkxLSAqIHBoeWxpbmtfc3RvcCgpIC0gc3RvcCBhIHBoeWxpbmsgaW5zdGFuY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQ5MjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDkzLSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNTIyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3RvcCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTI1LSAqIHBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2soKSAtIGJsb2NrIFBIWSBhYmlsaXR5IHRvIHN0b3AgcmVjZWl2ZSBjbG9jayBpbiBMUElcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjUyNjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTI3LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNTUxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU1NC0gKiBwaHlsaW5rX3J4X2Nsa19zdG9wX3VuYmxvY2soKSAtIHVuYmxvY2sgUEhZIGFiaWxpdHkgdG8gc3RvcCByZWNlaXZlIGNsb2NrXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI1NTU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU1Ni0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjU5Mz1zdGF0aWMgYm9vbCBwaHlsaW5rX3BoeV9wbV9zcGVlZF9jdHJsKHN0cnVjdCBwaHlsaW5rICpwbClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MDAtICogcGh5bGlua19zdXNwZW5kKCkgLSBoYW5kbGUgYSBuZXR3b3JrIGRldmljZSBzdXNwZW5kIGV2ZW50XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2MDE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjYwMi0gKiBAbWFjX3dvbDogdHJ1ZSBpZiB0aGUgTUFDIG5lZWRzIHRvIHJlY2VpdmUgcGFja2V0cyBmb3IgV2FrZS1vbi1MYW5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI2NTI9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zdXNwZW5kKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2NTUtICogcGh5bGlua19wcmVwYXJlX3Jlc3VtZSgpIC0gcHJlcGFyZSB0byByZXN1bWUgYSBuZXR3b3JrIGRldmljZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjU2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2NTctICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI2Nzc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wcmVwYXJlX3Jlc3VtZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjgwLSAqIHBoeWxpbmtfcmVzdW1lKCkgLSBoYW5kbGUgYSBuZXR3b3JrIGRldmljZSByZXN1bWUgZXZlbnRcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjY4MTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjgyLSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNzIwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcmVzdW1lKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3MjMtICogcGh5bGlua19ldGh0b29sX2dldF93b2woKSAtIGdldCB0aGUgd2FrZSBvbiBsYW4gcGFyYW1ldGVycyBmb3IgdGhlIFBIWVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzI0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3MjUtICogQHdvbDogYSBwb2ludGVyIHRvIFx1MDAyNnN0cnVjdCBldGh0b29sX3dvbGluZm8gdG8gaG9sZCB0aGUgcmVhZCBwYXJhbWV0ZXJzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNzU3PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfd29sKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3NjAtICogcGh5bGlua19ldGh0b29sX3NldF93b2woKSAtIHNldCB3YWtlIG9uIGxhbiBwYXJhbWV0ZXJzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI3NjE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjc2Mi0gKiBAd29sOiBhIHBvaW50ZXIgdG8gXHUwMDI2c3RydWN0IGV0aHRvb2xfd29saW5mbyBmb3IgdGhlIGRlc2lyZWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjg4OT1zdGF0aWMgdm9pZCBwaHlsaW5rX2dldF9rc2V0dGluZ3MoY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTA0LSAqIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3NfZ2V0KCkgLSBnZXQgdGhlIGN1cnJlbnQgbGluayBzZXR0aW5nc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyOTA1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5MDYtICogQGtzZXQ6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzIHRvIGhvbGQgbGluayBzZXR0aW5nc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjk1Nz1zdGF0aWMgYm9vbCBwaHlsaW5rX3ZhbGlkYXRlX3Bjc19pbmJhbmRfYXV0b25lZyhzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTc4LSAqIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KCkgLSBzZXQgdGhlIGxpbmsgc2V0dGluZ3NcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjk3OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTgwLSAqIEBrc2V0OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyBmb3IgdGhlIGRlc2lyZWQgbW9kZXNcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMxNDU9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE0OC0gKiBwaHlsaW5rX2V0aHRvb2xfbndheV9yZXNldCgpIC0gcmVzdGFydCBuZWdvdGlhdGlvblxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTQ5OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNTAtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMxNzA9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX253YXlfcmVzZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE3My0gKiBwaHlsaW5rX2V0aHRvb2xfZ2V0X3BhdXNlcGFyYW0oKSAtIGdldCB0aGUgY3VycmVudCBwYXVzZSBwYXJhbWV0ZXJzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxNzQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE3NS0gKiBAcGF1c2U6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMxODY9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxODktICogcGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKCkgLSBzZXQgdGhlIGN1cnJlbnQgcGF1c2UgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTkwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxOTEtICogQHBhdXNlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMjcyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMjc2LSAqICAgY291bnRlclxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjc3OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpLlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMjc4LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMjk1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZ2V0X2VlZV9lcnIpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI5OC0gKiBwaHlsaW5rX2V0aHRvb2xfZ2V0X2VlZSgpIC0gcmVhZCB0aGUgZW5lcmd5IGVmZmljaWVudCBldGhlcm5ldCBwYXJhbWV0ZXJzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMyOTk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzMwMC0gKiBAZWVlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9rZWVlIGZvciB0aGUgcmVhZCBwYXJhbWV0ZXJzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMzIxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfZWVlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMjQtICogcGh5bGlua19ldGh0b29sX3NldF9lZWUoKSAtIHNldCB0aGUgZW5lcmd5IGVmZmljaWVudCBldGhlcm5ldCBwYXJhbWV0ZXJzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMzMjU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzMyNi0gKiBAZWVlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9rZWVlIGZvciB0aGUgZGVzaXJlZCBwYXJhbWV0ZXJzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNDk1PXN0YXRpYyBpbnQgcGh5bGlua19taWlfd3JpdGUoc3RydWN0IHBoeWxpbmsgKnBsLCB1bnNpZ25lZCBpbnQgcGh5X2lkLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzUxMy0gKiBwaHlsaW5rX21paV9pb2N0bCgpIC0gZ2VuZXJpYyBtaWkgaW9jdGwgaW50ZXJmYWNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM1MTQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzUxNS0gKiBAaWZyOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgaWZyZXEgZm9yIHNvY2tldCBpb2N0bHNcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM1ODg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19taWlfaW9jdGwpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzU5Mi0gKiAgIGxpbmsgcGFydG5lcnNcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzU5MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTk0LSAqIEBzeW5jOiBwZXJmb3JtIGFjdGlvbiBzeW5jaHJvbm91c2x5XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNjEzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3BlZWRfZG93bik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNjE3LSAqICAgcGh5bGlua19zcGVlZF9kb3duKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzYxODogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNjE5LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MzcyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2M0NV9wY3NfZ2V0X3N0YXRlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzNzYtICpcdFx0XHRcdCB3aGljaCBsb3NlcyBzdGF0ZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0Mzc3OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzNzgtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQzOTM9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19yZXBsYXlfbGlua19iZWdpbik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzk3LSAqXHRcdFx0ICAgICAgIHdoaWNoIGxvc3Qgc3RhdGVcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDM5ODogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzk5LSAqXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTc5OT1zdGF0aWMgaW50IGF4ODg3NzJfcGh5bGlua19zZXR1cChzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgxOS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjA6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cHJpdi1cdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2LVx1MDAzZW5ldC1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgyMS1cdFx0XHRcdCBwaHlfaWZfbW9kZSwgXHUwMDI2YXg4ODc3Ml9waHlsaW5rX21hY19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9Mjc5OT1zdGF0aWMgaW50IGxhbjc4eHhfcGh5bGlua19zZXR1cChzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4MzgtXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4Mzk6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUocGMsIGRldi1cdTAwM2VuZXQtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjg0MC1cdFx0XHRcdCBkZXYtXHUwMDNlaW50ZXJmYWNlLCBcdTAwMjZsYW43OHh4X3BoeWxpbmtfbWFjX29wcyk7XG4tLVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg9NzE4PWludCBwY3NfcHJlX2luaXQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpO1xuLS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTcyMS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjcyMjpzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICosXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MjMtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICosXG4tLVxubmV0L2RzYS9wb3J0LmM9MTYxMT1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBkc2FfcG9ydF9waHlsaW5rX21hY19vcHMgPSB7XG4tLVxubmV0L2RzYS9wb3J0LmMtMTYxNi1cbm5ldC9kc2EvcG9ydC5jOjE2MTc6aW50IGRzYV9wb3J0X3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBkc2FfcG9ydCAqZHApXG5uZXQvZHNhL3BvcnQuYy0xNjE4LXtcbi0tXG5uZXQvZHNhL3BvcnQuYy0xNjQ2LVxubmV0L2RzYS9wb3J0LmM6MTY0NzpcdHBsID0gcGh5bGlua19jcmVhdGUoXHUwMDI2ZHAtXHUwMDNlcGxfY29uZmlnLCBvZl9md25vZGVfaGFuZGxlKGRwLVx1MDAzZWRuKSwgbW9kZSxcbm5ldC9kc2EvcG9ydC5jLTE2NDgtXHRcdFx0ICAgIG1hY19vcHMpO1xuLS1cbm5ldC9kc2EvcG9ydC5jPTE2NjU9c3RhdGljIGludCBkc2Ffc2hhcmVkX3BvcnRfcGh5bGlua19yZWdpc3RlcihzdHJ1Y3QgZHNhX3BvcnQgKmRwKVxuLS1cbm5ldC9kc2EvcG9ydC5jLTE2NzMtXG5uZXQvZHNhL3BvcnQuYzoxNjc0Olx0ZXJyID0gZHNhX3BvcnRfcGh5bGlua19jcmVhdGUoZHApO1xubmV0L2RzYS9wb3J0LmMtMTY3NS1cdGlmIChlcnIpXG4tLVxubmV0L2RzYS9wb3J0Lmg9MTAwPWludCBkc2FfcG9ydF9tcnBfZGVsX3Jpbmdfcm9sZShjb25zdCBzdHJ1Y3QgZHNhX3BvcnQgKmRwLFxubmV0L2RzYS9wb3J0LmgtMTAxLVx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9yaW5nX3JvbGVfbXJwICptcnApO1xubmV0L2RzYS9wb3J0Lmg6MTAyOmludCBkc2FfcG9ydF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZHNhX3BvcnQgKmRwKTtcbm5ldC9kc2EvcG9ydC5oLTEwMy12b2lkIGRzYV9wb3J0X3BoeWxpbmtfZGVzdHJveShzdHJ1Y3QgZHNhX3BvcnQgKmRwKTtcbi0tXG5uZXQvZHNhL3VzZXIuYz0yNjU0PXN0YXRpYyBpbnQgZHNhX3VzZXJfcGh5X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICp1c2VyX2Rldilcbi0tXG5uZXQvZHNhL3VzZXIuYy0yNjczLVxubmV0L2RzYS91c2VyLmM6MjY3NDpcdHJldCA9IGRzYV9wb3J0X3BoeWxpbmtfY3JlYXRlKGRwKTtcbm5ldC9kc2EvdXNlci5jLTI2NzUtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxNjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTEyOQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDUzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgQ29kZSBQYXRoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBjYXNlIGFuZCBpdCYjMzk7cyBmbGFnZ2VkIGFzIGEgY29uY2Vybi4gSXQgc2VlbXMgdGhpcyBtb2RlIGlzICpvbmx5KiB1c2VkIHdpdGhpbiB0aGUgYHFjYTgwN3guY2AgUEhZIGRyaXZlci4gVGhlIGludGVyZXN0aW5nIHBhcnQgaXMgdGhhdCBgcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGVgIGFuZCBgcGh5bGlua19taWlfYzIyX3Bjc19lbmNvZGVfYWR2ZXJ0aXNlbWVudGAgYXJlIGV4cG9ydGVkIGZ1bmN0aW9ucywgYW5kIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlcmUmIzM5O3MgYW55IHdheSBhIHVzZXIsIG9yIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGNhbiBhY3R1YWxseSB0cmlnZ2VyIHRoaXMuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNvdWxkIGEgdmlydHVhbCBkcml2ZXIgcG90ZW50aWFsbHkgY2FsbCB0aGVzZT8gQnV0LCBubywgbm8gdmlydHVhbCBkcml2ZXIgKmRpcmVjdGx5KiBjYWxscyB0aGVzZSBmdW5jdGlvbnMuIENvdWxkIGEgdXNlciBzb21laG93IHRyaWdnZXIgdGhpcyBjb2RlIHBhdGg/IFBlcmhhcHMgaWYgYSB1c2VyIHdlcmUgdG8gY29uc3RydWN0IGEgZHVtbXkgTURJTyBidXMsIHJlZ2lzdGVyIGEgYHFjYTgwN3hgIFBIWSBvbiBpdCwgYW5kIHRoZW4gY29ubmVjdCB0aGlzIHRvIGEgTUFDIGRyaXZlciB0aGF0IHV0aWxpemVzIGBwaHlsaW5rYCwgbGlrZSB0aGUgYGxhbjc4eHhgIFVTQiBkcml2ZXI/IEJ1dCB0aGVuLCBoYW5nIG9uLCB0aGUgYGxhbjc4eHhgIGRyaXZlciAqaGFyZGNvZGVzKiBgUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUlgLiBBbmQgdGhlIGBheDg4NzcyYCBkcml2ZXIsIHRvbywganVzdCBoYXJkY29kZXMgZWl0aGVyIGBQSFlfSU5URVJGQUNFX01PREVfTUlJYCBvciBgUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUlgLiBUaGlzIGlzIGEgZGVhZCBlbmQuIEluIG90aGVyIHdvcmRzLCB0aGVzZSBkcml2ZXJzIHdpbGwgbmV2ZXIgYWxsb3cgdGhlIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBjYXNlIHRvIGJlIGhpdC4KCk9rYXksIHNvIHdoYXQgYWJvdXQgKm90aGVyKiBkcml2ZXJzPyBJcyB0aGVyZSBldmVuICphbnkqIGRyaXZlciB0aGF0IGFsbG93cyBzZXR0aW5nIGBwaHlfaW50ZXJmYWNlX3RgIGZyb20gdXNlcnNwYWNlPyBObywgbm90IHR5cGljYWxseS4gVGhpcyBpbnRlcmZhY2Ugc2V0dGluZyBpcyB1c3VhbGx5IGRldGVybWluZWQgYnkgZmlybXdhcmUgKERUL0FDUEkpIG9yIGl0JiMzOTtzIGhhcmRjb2RlZCB3aXRoaW4gdGhlIGRyaXZlciBpdHNlbGYuCgpJbiBhIHZpcnR1YWxpemVkIHNldHRpbmcgbGlrZSBRRU1VIG9yIEdDRSwgaXQgZ2V0cyBldmVuIHRyaWNraWVyLiBXZSBnZW5lcmFsbHkgZG9uJiMzOTt0IGhhdmUgRGV2aWNlIFRyZWUgKERUKSBub2RlcyBmb3IgYXJiaXRyYXJ5IE1BQ3MsIHVubGVzcyB3ZSYjMzk7cmUgdXNpbmcgZGV2aWNlIHRyZWUgb3ZlcmxheXMsIHdoaWNoIHN5emthbGxlciAod2hpY2ggSSYjMzk7bSBhc3N1bWluZyBpcyB0aGUgdGVzdCBmcmFtZXdvcmsgYmVpbmcgdXNlZCkgZG9lc24mIzM5O3QgdHlwaWNhbGx5IGVtcGxveSBieSBkZWZhdWx0LCByaWdodD8gT3IgKmRvZXMqIHN5emthbGxlciB1c2UgdGhvc2Ugb3ZlcmxheXM/IChJdCYjMzk7cyBjb25maWd1cmFibGUsIGJ1dCBJIGRvbiYjMzk7dCB0aGluayBpdCYjMzk7cyB0aGUgc3RhbmRhcmQgcHJhY3RpY2UuKQoKV2FpdCwgSSBuZWVkIHRvIGNvbnNpZGVyIGBuZXRsaW5rYC4gU3l6a2FsbGVyICpjYW4qIHVzZSBgbmV0bGlua2AgdG8gY3JlYXRlIHZpcnR1YWwgbGlua3MuIEJ1dCwgSSBrbm93IGBwaHlsaW5rYCBpc24mIzM5O3QgdXNlZCBieSB0aGUgdXN1YWwgc3VzcGVjdHMgbGlrZSBgdmV0aGAsIGBtYWN2bGFuYCwgYGlwdmxhbmAsIG9yIGB0dW5gLiBUaGF0IG1lYW5zIHRoZSAqb25seSogcGxhdXNpYmxlIHdheSB0byByZWFjaCBgcGh5bGlua2AgaXMgdGhyb3VnaCBVU0IgZHJpdmVycyBsaWtlIGBsYW43OHh4YCBvciBgYXNpeGAuIEFuZCwgYWdhaW4sIHRob3NlIGRyaXZlcnMgKmhhcmRjb2RlKiB0aGUgaW50ZXJmYWNlIG1vZGUuCgpTbywgdGhlIGNvbmNsdXNpb24gSSYjMzk7bSBsZWFuaW5nIHRvd2FyZCBpcyB0aGF0IHRoaXMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGNhc2UgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnRzIGlzIHZpcnR1YWxseSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHRoZSB2aXJ0dWFsaXplZCB0ZXN0aW5nIGVudmlyb25tZW50cy4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayBvbmUgdGhpbmc6IERvZXMgdGhlIGBpbnRlcmZhY2VgIHBhcmFtZXRlciwgaXMgaXQgZXZlbiBwYXNzZWQgdG8gdGhlIGBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZWAgZnVuY3Rpb24/IEhtbS4gTm8sIHRoZSBgaW50ZXJmYWNlYCBpcyAqbm90KiBwYXNzZWQuIE9rYXksIHRpbWUgdG8gcmUtZXhhbWluZSB0aGF0IHBhdGNoIGFnYWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxNjoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtcGh5bGluay5jPTIxMz1zdGF0aWMgdm9pZCBteGw4NjJ4eF9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1waHlsaW5rLmMtMjU3LVx0XHQgICAgICAgKHN0YXRlLVx1MDAzZWFuX2NvbXBsZXRlID8gQk1TUl9BTkVHQ09NUExFVEUgOiAwKTtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1waHlsaW5rLmM6MjU4Olx0XHRwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdGF0ZSwgbmVnX21vZGUsIGJtc3IsXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtcGh5bGluay5jLTI1OS1cdFx0XHRcdFx0XHQgbGUxNl90b19jcHUoc3QubHBhLmNsMzcpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU3Mz1zdGF0aWMgdm9pZCBtYWNiX3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU4MC1cdGxwYSA9IGdlbV9yZWFkbChicCwgUENTQU5MUEJBU0UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1ODE6XHRwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdGF0ZSwgbmVnX21vZGUsIGJtc3IsIGxwYSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU4Mi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wb3J0LmM9Mjg3PXZvaWQgbGFuOTY2eF9wb3J0X3N0YXR1c19nZXQoc3RydWN0IGxhbjk2NnhfcG9ydCAqcG9ydCwgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcG9ydC5jLTMxNi1cdFx0bHBfYWR2ID0gREVWX1BDUzFHX0FORUdfU1RBVFVTX0xQX0FEVl9HRVQodmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcG9ydC5jOjMxNzpcdFx0cGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RhdGUsIG5lZ19tb2RlLCBibXNyLCBscF9hZHYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wb3J0LmMtMzE4LVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNzLmM9NjY9c3RhdGljIHZvaWQgZHdtYWNfaW50ZWdyYXRlZF9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY3MuYy04My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY3MuYzo4NDpcdFx0cGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RhdGUsIG5lZ19tb2RlLCBzdGF0dXMsIGxwYSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNzLmMtODUtXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbXRrLWx5bnhpLmM9MTA4PXN0YXRpYyB2b2lkIG10a19wY3NfbHlueGlfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbXRrLWx5bnhpLmMtMTE4LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1tdGstbHlueGkuYzoxMTk6XHRwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdGF0ZSwgbmVnX21vZGUsXG5kcml2ZXJzL25ldC9wY3MvcGNzLW10ay1seW54aS5jLTEyMC1cdFx0XHRcdFx0IEZJRUxEX0dFVChTR01JSV9CTVNSLCBibSksXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmM9MTEwMz1zdGF0aWMgaW50IHhwY3NfZ2V0X3N0YXRlX2MzN18xMDAwYmFzZXgoc3RydWN0IGR3X3hwY3MgKnhwY3MsXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMtMTEzMi1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jOjExMzM6XHRcdHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0YXRlLCBuZWdfbW9kZSwgYm1zciwgbHBhKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jLTExMzQtXHR9XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MTE2PXN0YXRpYyB2b2lkIHBoeWxpbmtfZGVjb2RlX3VzZ21paV93b3JkKHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDE0MC0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDE0MTogKiBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZSgpIC0gRGVjb2RlIE1BQyBQQ1Mgc3RhdGUgZnJvbSBNSUkgcmVnaXN0ZXJzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQxNDItICogQHN0YXRlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlLlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDE1NC0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDE1NTp2b2lkIHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MTU2LVx0XHRcdFx0ICAgICAgdW5zaWduZWQgaW50IG5lZ19tb2RlLCB1MTYgYm1zciwgdTE2IGxwYSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQyMDItfVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0MjAzOkVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDIwNC1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQyMjA9dm9pZCBwaHlsaW5rX21paV9jMjJfcGNzX2dldF9zdGF0ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKnBjcyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQyMzItXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQyMzM6XHRwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdGF0ZSwgbmVnX21vZGUsIGJtc3IsIGxwYSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQyMzQtfVxuLS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTgxNj1zdGF0aWMgaW5saW5lIGJvb2wgcGh5bGlua19tYWNfaW1wbGVtZW50c19scGkoY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqb3BzKVxuLS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTgyMC1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjgyMTp2b2lkIHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtODIyLVx0XHRcdFx0ICAgICAgdW5zaWduZWQgaW50IG5lZ19tb2RlLCB1MTYgYm1zciwgdTE2IGxwYSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDE2OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MDE2CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlY29kaW5nIHRoZSBQU0dNSUkgUHV6emxlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZWAgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyB0YWtpbmcgYSBgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGVgLiBSaWdodCwgbWFrZXMgc2Vuc2UuIE5vdywgZGl2aW5nIGluLCB0aGVyZSYjMzk7cyBhIGBzd2l0Y2hgIHN0YXRlbWVudCBiYXNlZCBvbiBgc3RhdGUtJmd0O2ludGVyZmFjZWAuIFRoYXQmIzM5O3MgdGhlIGtleS4gU28sIHRoZSBjb2RlIHBhdGggd2UmIzM5O3JlIGNvbmNlcm5lZCB3aXRoIGlzIHRyaWdnZXJlZCB3aGVuIGBzdGF0ZS0mZ3Q7aW50ZXJmYWNlYCBpcyBlcXVhbCB0byBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAuIEdvdCBpdC4KCk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogd2hlcmUgZG9lcyBgc3RhdGUtJmd0O2ludGVyZmFjZWAgZ2V0IHNldD8gSSBrbm93IHRoZSBwaHlsaW5rIGNvcmUgaXMgcmVzcG9uc2libGUgZm9yIHRoYXQuIEl0IGRldGVybWluZXMgdGhlIGludGVyZmFjZSBtb2RlIGJhc2VkIG9uIHRoZSBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgYW5kIHRoZSBzeXN0ZW0gY29uZmlndXJhdGlvbi4gVGhlcmVmb3JlIGBzdGF0ZS0mZ3Q7aW50ZXJmYWNlYCBpcyBnb2luZyB0byBiZSBzZXQgdG8gYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgICpvbmx5KiBpZiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBhY3R1YWxseSAqc3VwcG9ydHMqIFBTR01JSSBhbmQgaXQmIzM5O3MgZXhwbGljaXRseSBjb25maWd1cmVkIHRvIHVzZSBpdC4KClJpZ2h0LCBub3csIEkgc2VlbSB0byByZW1lbWJlciB0aGF0IHRoZSBgcWNhODA3eC5jYCBkcml2ZXIgaXMgdGhlIG9ubHkgb25lIEkmIzM5O3ZlIHNlZW4gdGhhdCAqZXhwbGljaXRseSogdXNlcyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAuIEJ1dCBsZXQmIzM5O3MgYmUgdGhvcm91Z2gsIHlvdSBjYW4gbmV2ZXIgYmUgdG9vIGNhcmVmdWwuIEkgc2hvdWxkIHByb2JhYmx5IGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCwganVzdCB0byBtYWtlIHN1cmUgbXkgYXNzdW1wdGlvbiBpcyBjb3JyZWN0LiBJdCYjMzk7cyBhbHdheXMgYSBnb29kIGlkZWEgdG8gdmVyaWZ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxNjoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0PTIzOD1Tb21lIG9mIHRoZSBpbnRlcmZhY2UgbW9kZXMgYXJlIGRlc2NyaWJlZCBiZWxvdzpcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC0zMjUtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdDozMjY6YGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYGBcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0LTMyNy0gICAgVGhpcyBpcyB0aGUgUGVudGEgU0dNSUkgbW9kZSwgaXQgaXMgc2ltaWxhciB0byBRU0dNSUkgYnV0IGl0IGNvbWJpbmVzIDVcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYz0xNTk9aW50IHBoeV9pbnRlcmZhY2VfbnVtX3BvcnRzKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMtMjAxLVx0XHRyZXR1cm4gNDtcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jOjIwMjpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMy1cdFx0cmV0dXJuIDU7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM9Mjk0PXVuc2lnbmVkIGxvbmcgcGh5X2NhcHNfZnJvbV9pbnRlcmZhY2UocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTAtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jOjMxMTpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTMxMi1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzOD1zdGF0aWMgaW50IHBoeWxpbmtfaW50ZXJmYWNlX21heF9zcGVlZChwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU5LVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2MDpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjYxLVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Nzc0PXN0YXRpYyBpbnQgcGh5bGlua19wYXJzZV9tb2RlKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTgwOC1cdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjgwOTpcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MTAtXHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTEwMzk9c3RhdGljIGVudW0gaW5iYW5kX3R5cGUgcGh5bGlua19nZXRfaW5iYW5kX3R5cGUocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDItXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTA0MzpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA0NC1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQxNTU9dm9pZCBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQxODYtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDE4NzpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDE4OC1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQyNTE9aW50IHBoeWxpbmtfbWlpX2MyMl9wY3NfZW5jb2RlX2FkdmVydGlzZW1lbnQocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQyNjctXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDI2ODpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDI2OS1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM9NDkwPXN0YXRpYyBpbnQgcWNhODA3eF9waHlfcGFja2FnZV9wcm9iZV9vbmNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU0OS1cdFx0aWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU1MDpcdFx0XHRcdHBoeV9tb2RlcyhQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJKSkpXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTUxOlx0XHRcdHByaXYtXHUwMDNlcGFja2FnZV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01NTItXHRcdGVsc2UgaWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz01NjI9c3RhdGljIGludCBxY2E4MDd4X3BoeV9wYWNrYWdlX2NvbmZpZ19pbml0X29uY2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTg1LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1ODY6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTg3LVx0ZGVmYXVsdDpcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTUzPWV4dGVybiBjb25zdCBpbnQgcGh5X2Jhc2ljX3BvcnRzX2FycmF5WzNdO1xuLS1cbmluY2x1ZGUvbGludXgvcGh5LmgtODktICogQFBIWV9JTlRFUkZBQ0VfTU9ERV9NT0NBOiBNdWx0aW1lZGlhIG92ZXIgQ29heFxuaW5jbHVkZS9saW51eC9waHkuaDo5MDogKiBAUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTogUGVudGEgU0dNSUlcbmluY2x1ZGUvbGludXgvcGh5LmgtOTEtICogQFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6IFF1YWQgU0dNSUlcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTExND10eXBlZGVmIGVudW0ge1xuLS1cbmluY2x1ZGUvbGludXgvcGh5LmgtMTMyLVx0UEhZX0lOVEVSRkFDRV9NT0RFX01PQ0EsXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjEzMzpcdFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUksXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTEzNC1cdFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUksXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaD0yMTA9c3RhdGljIGlubGluZSBjb25zdCBjaGFyICpwaHlfbW9kZXMocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTI0OC1cdFx0cmV0dXJuIFwmIzM0O21vY2FcJiMzNDs7XG5pbmNsdWRlL2xpbnV4L3BoeS5oOjI0OTpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmluY2x1ZGUvbGludXgvcGh5LmgtMjUwLVx0XHRyZXR1cm4gXCYjMzQ7cHNnbWlpXCYjMzQ7O1xuLS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTc5MD1zdGF0aWMgaW5saW5lIGludCBwaHlsaW5rX2dldF9saW5rX3RpbWVyX25zKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzkzLVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3OTQ6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03OTUtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDE2OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMjQ1CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMzEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIFVzYWdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBxY2E4MDd4LmNgIGNvZGUsIGFuZCBpdCBzZWVtcyB0byBiZSB0aGUgKm9ubHkqIHBsYWNlIHdoZXJlIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpcyBiZWluZyB1c2VkLiBUaGF0JiMzOTtzIGEgc3RhcnRpbmcgcG9pbnQuIE5vdywgdGhlIG5leHQgcXVlc3Rpb24gaXMgaG93IHRoaXMgdmFsdWUgY2FuIGV2ZW4gYmUgc2V0LCBjYW4gaXQgYmUgbWFuaXB1bGF0ZWQ/CgpIbW0sIGNhbiBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgYmUgc2V0IHRocm91Z2ggbmV0bGluaz8gSSBkb24mIzM5O3QgdGhpbmsgc28sIGFuZCBJIHNob3VsZCByZWFsbHkgdmVyaWZ5IGlmIGBwaHlfbW9kZXNgIGFyZSBwYXJzZWFibGUgZnJvbSB1c2Vyc3BhY2UuIExldCYjMzk7cyBzZWUuLi4gdGhlIGNvZGUgdXRpbGl6ZXMgYHBoeWxpbmtfcGFyc2VfbW9kZWAsIGJ1dCB0aGF0JiMzOTtzIGRyaXZlbiBieSB0aGUgZGV2aWNlIHRyZWUsIHJpZ2h0PyBJdCYjMzk7cyBub3QgYSBydW4tdGltZSBjb25maWd1cmF0aW9uLCBzbyBjYW4gSSBjcmVhdGUgYSB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlIGFuZCBzb21laG93IGZvcmNlIGl0cyBQSFkgbW9kZSB0byBgUFNHTUlJYD8gSSBkb24mIzM5O3QgdGhpbmsgdGhhdCYjMzk7cyBwb3NzaWJsZS4gVGhlcmUgaXNuJiMzOTt0IGFueSBuZXRsaW5rIEFQSSB0byBkaXJlY3RseSBzZXQgdGhlIGBwaHlfaW50ZXJmYWNlX3RgIGZvciBhIGBuZXRfZGV2aWNlYC4gVGhhdCYjMzk7cyB1c3VhbGx5IGhhcmRjb2RlZCBvciBjb21pbmcgZnJvbSB0aGUgZGV2aWNlIHRyZWUuCgpBbHJpZ2h0LCBidXQgd2hhdCBhYm91dCBgZXRodG9vbGA/IENhbiBpdCBtYW5pcHVsYXRlIGFueSBvZiB0aGVzZSBsaW5rIHBhcmFtZXRlcnM/IE5vdCBkaXJlY3RseSwgaXQgc2VlbXMgbGlrZSBgZXRodG9vbGAgY2FuJiMzOTt0IHNldCB0aGUgUEhZIGludGVyZmFjZSBtb2RlLCBsaWtlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gU0dNSUksIFJHTUlJLCBvciBQU0dNSUkuCgpTbywgdGhlIG9ubHkgd2F5IHRoaXMgY29kZSB1c2luZyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaXMgZXZlbiBnb2luZyB0byBiZSByZWFjaGVkLCBpcyBpZiBhIGRldmljZSBpcyBwcm9iZWQgd2l0aCB0aGF0IHNwZWNpZmljIG1vZGUgc2V0LiBTaW5jZSBgcWNhODA3eGAgaXMgYSAqcGh5c2ljYWwqIFBIWSBjaGlwLCBpdCYjMzk7cyBub3QgZ29pbmcgdG8gc2hvdyB1cCBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgdW5sZXNzIEkgY3JhZnQgYSBkdW1teSBNRElPIGJ1cyBhbmQgcmVnaXN0ZXIgdGhpcyBQSFkgb24gaXQuIE5vdywgdGhhdCYjMzk7cyBwb3NzaWJsZSwgYnV0IGV2ZW4gaWYgdGhhdCB3b3JrZWQsIHJlbWVtYmVyIGBxY2E4MDd4YCBpcyBqdXN0IGEgUEhZICpkcml2ZXIqLiBUaGUgTUFDIGRyaXZlciwgd2hpY2ggdXRpbGl6ZXMgYHBoeWxpbmtgLCAqYWxzbyogaGFzIHRvIGJlIHNldCB0byB1c2UgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLiBUaGF0JiMzOTtzIHRoZSByZWFsIGNoYWxsZW5nZS4gSXMgdGhlcmUgZXZlbiBhIE1BQyBkcml2ZXIgdGhhdCBzdXBwb3J0cyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWA/IFRoYXQmIzM5O3Mgd2hhdCBJIG5lZWQgdG8gZGV0ZXJtaW5lLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIE1BQyBkcml2ZXJzIGFuZCBzZWUgaWYgYW55IGV2ZW4gKnN1cHBvcnQqIHRoaXMgc3BlY2lmaWMgaW50ZXJmYWNlIG1vZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDE2OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgcmVwZWF0aW5nIHRoZSBzYW1lIHRvb2wgY2FsbCB3aXRoIHRoZSBleGFjdCBzYW1lIGFyZ3VtZW50cy4KWW91IGFscmVhZHkgaGF2ZSB0aGUgcmVzdWx0IG9mIHRoaXMgZXhhY3QgdG9vbCBjYWxsIGluIHlvdXIgY29udmVyc2F0aW9uIGhpc3RvcnkuCkRvIE5PVCByZXF1ZXN0IGl0IGFnYWluLiBZb3UgTVVTVCBzeW50aGVzaXplIHRoZSBpbmZvcm1hdGlvbiB5b3UgYWxyZWFkeSBoYXZlLAp0cnkgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCB0b29sLCBvciBwcm9jZWVkIHRvIHRoZSBuZXh0IHN0ZXAuPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtZb3UgYXJlIHJlcGVhdGluZyB0aGUgc2FtZSB0b29sIGNhbGwgd2l0aCB0aGUgZXhhY3Qgc2FtZSBhcmd1bWVudHMuXG5Zb3UgYWxyZWFkeSBoYXZlIHRoZSByZXN1bHQgb2YgdGhpcyBleGFjdCB0b29sIGNhbGwgaW4geW91ciBjb252ZXJzYXRpb24gaGlzdG9yeS5cbkRvIE5PVCByZXF1ZXN0IGl0IGFnYWluLiBZb3UgTVVTVCBzeW50aGVzaXplIHRoZSBpbmZvcm1hdGlvbiB5b3UgYWxyZWFkeSBoYXZlLFxudHJ5IGEgY29tcGxldGVseSBkaWZmZXJlbnQgdG9vbCwgb3IgcHJvY2VlZCB0byB0aGUgbmV4dCBzdGVwLiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTY6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDEyMTMKCQkJCQkJCW91dHB1dDogMTkxCgkJCQkJCQl0aG91Z2h0czogNzY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IFdvcnRoRnV6emluZyA9IEZhbHNlKioKCk9rYXksIHNvIEkmIzM5O3ZlIGp1c3QgYmVlbiBsb29raW5nIGludG8gd2hldGhlciBvciBub3QgYSBwYXRjaCByZWxhdGVkIHRvIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpcyB3b3J0aCBmdXp6aW5nLiBNeSBpbml0aWFsIHNjYW4gdXNpbmcgYGdyZXBgIHF1aWNrbHkgc2hvd2VkIHRoYXQgdGhpcyBwYXJ0aWN1bGFyIGludGVyZmFjZSBtb2RlIGlzIG9ubHkgbWVudGlvbmVkIGluIGRvY3VtZW50YXRpb24sIHBoeSBjb3JlIGZpbGVzLCBhbmQgYSBmZXcgUEhZIGRyaXZlciBmaWxlcywgbmFtZWx5IHRoZSBgcWNhODA3eGAgZHJpdmVyLCBidXQgaXQgZG9lc24mIzM5O3QgYXBwZWFyIGluIGFueSBNQUMgZHJpdmVyIGltcGxlbWVudGF0aW9ucy4gVGhhdCYjMzk7cyBhIGtleSBvYnNlcnZhdGlvbi4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IHdhcywgY291bGQgc29tZSBNQUMgZHJpdmVycyAqaW5kaXJlY3RseSogc3VwcG9ydCBpdCwgcGVyaGFwcyBieSBwYXNzaW5nIGludGVyZmFjZSBtb2RlIGluZm9ybWF0aW9uIHRocm91Z2ggRGV2aWNlIFRyZWUgKERUKT8gQW5kLCBwZXJoYXBzIGEgTUFDIGRyaXZlciBjb3VsZCB1dGlsaXplIHBoeWxpbmsuIEhvd2V2ZXIsIGdpdmVuIHRoYXQgdGhpcyBpbnRlcmZhY2UgaXMgbm90IGV4cGxpY2l0bHkgbWVudGlvbmVkIGJ5IGFueSBNQUMgZHJpdmVyLCBhbmQgZXNwZWNpYWxseSBnaXZlbiB0aGUgY29udGV4dCBvZiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgd2hlcmUgRFQgaXNuJiMzOTt0IGdlbmVyYWxseSBhdmFpbGFibGUgZm9yIE1BQ3MsIEkmIzM5O3ZlIGNvbmNsdWRlZCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiBRRU1VIG9yIEdDRS4KCkkgZG91YmxlLWNoZWNrZWQgdG8gc2VlIGlmIHZpcnR1YWwgZHJpdmVycyBsaWtlIGBuZXRkZXZzaW1gLCBgZHVtbXlgLCBvciBgdmV0aGAgbWlnaHQgbGV2ZXJhZ2UgYHBoeWxpbmtgLCBidXQgbm9uZSBvZiB0aGVtIGRvLiBFdmVuIHRoZSB2aXJ0dWFsLWlzaCBVU0IgZHJpdmVycywgbGlrZSBgYXNpeGAgYW5kIGBsYW43OHh4YCwgd2hpY2ggKmRvKiB1c2UgYHBoeWxpbmtgLCBleHBsaWNpdGx5IGhhcmRjb2RlIHRoZWlyIGludGVyZmFjZSBtb2RlcyB0byBtb3JlIHN0YW5kYXJkIHR5cGVzIGxpa2UgTUlJLCBSTUlJLCBvciBHTUlJLiBUaGlzIGNvbmZpcm1zIHRoYXQgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHdvbiYjMzk7dCBldmVyIGJlIHNlZW4gYnkgYHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlYCwgYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlYCwgYHBoeWxpbmtfbWlpX2MyMl9wY3NfZW5jb2RlX2FkdmVydGlzZW1lbnRgLCBvciBgcGh5bGlua19nZXRfbGlua190aW1lcl9uc2Agd2l0aGluIGEgdmlydHVhbGl6ZWQgc2V0dGluZy4KCkVzc2VudGlhbGx5LCBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaXMgdGllZCB0byBhIHNwZWNpZmljIHBoeXNpY2FsIFBIWSAodGhlIGBxY2E4MDd4YCksIGFuZCBub3RoaW5nIGVtdWxhdGVkIG9yIHZpcnR1YWwgdG91Y2hlcyBpdC4gU2luY2UgdGhlIHByb21wdCBzdGF0ZXMgSSBzaG91bGQgcmV0dXJuICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgaWYgdGhlIHBhdGNoIG9ubHkgYWRkcyB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgSSYjMzk7bSBjb25maWRlbnQgaW4gc2F5aW5nIHRoYXQgdGhlIG5ldyBjb2RlIHBhdGhzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCBhcmUsIGluIGZhY3QsIHVucmVhY2hhYmxlLgoKTXkgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogVGhlIHBhdGNoIGludHJvZHVjZXMgc3VwcG9ydCBmb3IgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHdpdGhpbiBgcGh5bGlua2AuIEhvd2V2ZXIsIHRoaXMgaW50ZXJmYWNlIG1vZGUgaXMgc3BlY2lmaWMgdG8gdGhlIFFDQTgwN3ggUEhZLCB3aXRoIG5vIE1BQyBkcml2ZXJzIGV4cGxpY2l0bHkgc3VwcG9ydGluZyBpdCAob3IgcGFzc2luZyBpdCBmcm9tIERUKS4gRnVydGhlcm1vcmUsIHZpcnR1YWwgbmV0d29yayBkcml2ZXJzIGFuZCBzb2Z0d2FyZS1lbXVsYXRlZCBVU0IgZXRoZXJuZXQgYWRhcHRlcnMgaGFyZGNvZGUgc3RhbmRhcmQgaW50ZXJmYWNlIG1vZGVzLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuCgpJJiMzOTtsbCBwcm9jZWVkIHRvIHNldCB0aGUgcmVzdWx0cyB0byBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTY6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgKFBlbnRhIFNHTUlJKSB0byBzZXZlcmFsIHN3aXRjaCBzdGF0ZW1lbnRzIGluIHRoZSBwaHlsaW5rIGNvcmUuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQSFkgaW50ZXJmYWNlIG1vZGUuIEEgc2VhcmNoIG9mIHRoZSBrZXJuZWwgdHJlZSByZXZlYWxzIHRoYXQgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSBpcyBvbmx5IHJlZmVyZW5jZWQgYnkgdGhlIHFjYTgwN3ggcGh5c2ljYWwgUEhZIGRyaXZlciwgYW5kIG5vIE1BQyBkcml2ZXJzIGV4cGxpY2l0bHkgc3VwcG9ydCBpdC4gRnVydGhlcm1vcmUsIHZpcnR1YWwgbmV0d29yayBkcml2ZXJzIGFuZCBzb2Z0d2FyZS1lbXVsYXRlZCBVU0IgZXRoZXJuZXQgYWRhcHRlcnMgKHdoaWNoIHVzZSBwaHlsaW5rKSBoYXJkY29kZSB0aGVpciBpbnRlcmZhY2UgbW9kZXMgdG8gc3RhbmRhcmQgb25lcyBsaWtlIE1JSSwgUk1JSSwgb3IgR01JSS4gU2luY2UgdGhpcyBpbnRlcmZhY2UgbW9kZSBjYW5ub3QgYmUgY29uZmlndXJlZCBmcm9tIHVzZXJzcGFjZSBhbmQgaXMgbm90IHVzZWQgYnkgYW55IGVtdWxhdGVkIGhhcmR3YXJlLCB0aGUgbmV3bHkgYWRkZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSAoUGVudGEgU0dNSUkpIHRvIHNldmVyYWwgc3dpdGNoIHN0YXRlbWVudHMgaW4gdGhlIHBoeWxpbmsgY29yZS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBIWSBpbnRlcmZhY2UgbW9kZS4gQSBzZWFyY2ggb2YgdGhlIGtlcm5lbCB0cmVlIHJldmVhbHMgdGhhdCBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIGlzIG9ubHkgcmVmZXJlbmNlZCBieSB0aGUgcWNhODA3eCBwaHlzaWNhbCBQSFkgZHJpdmVyLCBhbmQgbm8gTUFDIGRyaXZlcnMgZXhwbGljaXRseSBzdXBwb3J0IGl0LiBGdXJ0aGVybW9yZSwgdmlydHVhbCBuZXR3b3JrIGRyaXZlcnMgYW5kIHNvZnR3YXJlLWVtdWxhdGVkIFVTQiBldGhlcm5ldCBhZGFwdGVycyAod2hpY2ggdXNlIHBoeWxpbmspIGhhcmRjb2RlIHRoZWlyIGludGVyZmFjZSBtb2RlcyB0byBzdGFuZGFyZCBvbmVzIGxpa2UgTUlJLCBSTUlJLCBvciBHTUlJLiBTaW5jZSB0aGlzIGludGVyZmFjZSBtb2RlIGNhbm5vdCBiZSBjb25maWd1cmVkIGZyb20gdXNlcnNwYWNlIGFuZCBpcyBub3QgdXNlZCBieSBhbnkgZW11bGF0ZWQgaGFyZHdhcmUsIHRoZSBuZXdseSBhZGRlZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTY6MTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDE2OjA0OjUzLjM0MjIyMzM4OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3ODU2NDIxMDQwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSAoUGVudGEgU0dNSUkpIHRvIHNldmVyYWwgc3dpdGNoIHN0YXRlbWVudHMgaW4gdGhlIHBoeWxpbmsgY29yZS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBIWSBpbnRlcmZhY2UgbW9kZS4gQSBzZWFyY2ggb2YgdGhlIGtlcm5lbCB0cmVlIHJldmVhbHMgdGhhdCBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIGlzIG9ubHkgcmVmZXJlbmNlZCBieSB0aGUgcWNhODA3eCBwaHlzaWNhbCBQSFkgZHJpdmVyLCBhbmQgbm8gTUFDIGRyaXZlcnMgZXhwbGljaXRseSBzdXBwb3J0IGl0LiBGdXJ0aGVybW9yZSwgdmlydHVhbCBuZXR3b3JrIGRyaXZlcnMgYW5kIHNvZnR3YXJlLWVtdWxhdGVkIFVTQiBldGhlcm5ldCBhZGFwdGVycyAod2hpY2ggdXNlIHBoeWxpbmspIGhhcmRjb2RlIHRoZWlyIGludGVyZmFjZSBtb2RlcyB0byBzdGFuZGFyZCBvbmVzIGxpa2UgTUlJLCBSTUlJLCBvciBHTUlJLiBTaW5jZSB0aGlzIGludGVyZmFjZSBtb2RlIGNhbm5vdCBiZSBjb25maWd1cmVkIGZyb20gdXNlcnNwYWNlIGFuZCBpcyBub3QgdXNlZCBieSBhbnkgZW11bGF0ZWQgaGFyZHdhcmUsIHRoZSBuZXdseSBhZGRlZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTY6MDQ6NTMuMzQyMjI3ODM5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjMzMDYzMjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgY2Q3ZmMwMzEyNzVlYjRjZDZlOTBlNGRmZTQ2OTQ3MWRhNDk0NjEwY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyA5IDE2OjA0OjUxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXFxuaW5kZXggMThkMmVhZDk3YWE1NC4uMWNlOWQyMjY2Nzc0ZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbkBAIC0xMDQwLDYgKzEwNDAsNyBAQCBzdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbiB7XFxuIFxcdHN3aXRjaCAoaW50ZXJmYWNlKSB7XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbitcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVVTR01JSTpcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSTpcXG5AQCAtNDE4Myw2ICs0MTg0LDcgQEAgdm9pZCBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcXG4gXFx0XFx0YnJlYWs7XFxuIFxcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcXG4rXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XFxuIFxcdFxcdGlmIChuZWdfbW9kZSA9PSBQSFlMSU5LX1BDU19ORUdfSU5CQU5EX0VOQUJMRUQpXFxuIFxcdFxcdFxcdHBoeWxpbmtfZGVjb2RlX3NnbWlpX3dvcmQoc3RhdGUsIGxwYSk7XFxuQEAgLTQyNjMsNiArNDI2NSw3IEBAIGludCBwaHlsaW5rX21paV9jMjJfcGNzX2VuY29kZV9hZHZlcnRpc2VtZW50KHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXFxuIFxcdFxcdFxcdGFkdiB8PSBBRFZFUlRJU0VfMTAwMFhQU0VfQVNZTTtcXG4gXFx0XFx0cmV0dXJuIGFkdjtcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuK1xcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbiBcXHRcXHRyZXR1cm4gMHgwMDAxO1xcbiBcXHRkZWZhdWx0OlxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaCBiL2luY2x1ZGUvbGludXgvcGh5bGluay5oXFxuaW5kZXggMmJjMGRiM2Q1MmFjOC4uMWRkYTVjN2VkNWYxNCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvcGh5bGluay5oXFxuQEAgLTc5MSw2ICs3OTEsNyBAQCBzdGF0aWMgaW5saW5lIGludCBwaHlsaW5rX2dldF9saW5rX3RpbWVyX25zKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuIHtcXG4gXFx0c3dpdGNoIChpbnRlcmZhY2UpIHtcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuK1xcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJOlxcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdfUVhHTUlJOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxNjowNDo1NC41NzU5MDMxODRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3NzczMzA1MTkzNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSAoUGVudGEgU0dNSUkpIHRvIHNldmVyYWwgc3dpdGNoIHN0YXRlbWVudHMgaW4gdGhlIHBoeWxpbmsgY29yZS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBIWSBpbnRlcmZhY2UgbW9kZS4gQSBzZWFyY2ggb2YgdGhlIGtlcm5lbCB0cmVlIHJldmVhbHMgdGhhdCBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIGlzIG9ubHkgcmVmZXJlbmNlZCBieSB0aGUgcWNhODA3eCBwaHlzaWNhbCBQSFkgZHJpdmVyLCBhbmQgbm8gTUFDIGRyaXZlcnMgZXhwbGljaXRseSBzdXBwb3J0IGl0LiBGdXJ0aGVybW9yZSwgdmlydHVhbCBuZXR3b3JrIGRyaXZlcnMgYW5kIHNvZnR3YXJlLWVtdWxhdGVkIFVTQiBldGhlcm5ldCBhZGFwdGVycyAod2hpY2ggdXNlIHBoeWxpbmspIGhhcmRjb2RlIHRoZWlyIGludGVyZmFjZSBtb2RlcyB0byBzdGFuZGFyZCBvbmVzIGxpa2UgTUlJLCBSTUlJLCBvciBHTUlJLiBTaW5jZSB0aGlzIGludGVyZmFjZSBtb2RlIGNhbm5vdCBiZSBjb25maWd1cmVkIGZyb20gdXNlcnNwYWNlIGFuZCBpcyBub3QgdXNlZCBieSBhbnkgZW11bGF0ZWQgaGFyZHdhcmUsIHRoZSBuZXdseSBhZGRlZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgY2Q3ZmMwMzEyNzVlYjRjZDZlOTBlNGRmZTQ2OTQ3MWRhNDk0NjEwY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDkgMTY6MDQ6NTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuaW5kZXggMThkMmVhZDk3YWE1NC4uMWNlOWQyMjY2Nzc0ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbkBAIC0xMDQwLDYgKzEwNDAsNyBAQCBzdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuIHtcbiBcdHN3aXRjaCAoaW50ZXJmYWNlKSB7XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbitcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FVU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJOlxuQEAgLTQxODMsNiArNDE4NCw3IEBAIHZvaWQgcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUsXG4gXHRcdGJyZWFrO1xuIFxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG4rXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4gXHRcdGlmIChuZWdfbW9kZSA9PSBQSFlMSU5LX1BDU19ORUdfSU5CQU5EX0VOQUJMRUQpXG4gXHRcdFx0cGh5bGlua19kZWNvZGVfc2dtaWlfd29yZChzdGF0ZSwgbHBhKTtcbkBAIC00MjYzLDYgKzQyNjUsNyBAQCBpbnQgcGh5bGlua19taWlfYzIyX3Bjc19lbmNvZGVfYWR2ZXJ0aXNlbWVudChwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxuIFx0XHRcdGFkdiB8PSBBRFZFUlRJU0VfMTAwMFhQU0VfQVNZTTtcbiBcdFx0cmV0dXJuIGFkdjtcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuK1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuIFx0XHRyZXR1cm4gMHgwMDAxO1xuIFx0ZGVmYXVsdDpcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaCBiL2luY2x1ZGUvbGludXgvcGh5bGluay5oXG5pbmRleCAyYmMwZGIzZDUyYWM4Li4xZGRhNWM3ZWQ1ZjE0IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9waHlsaW5rLmhcbisrKyBiL2luY2x1ZGUvbGludXgvcGh5bGluay5oXG5AQCAtNzkxLDYgKzc5MSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHBoeWxpbmtfZ2V0X2xpbmtfdGltZXJfbnMocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbiB7XG4gXHRzd2l0Y2ggKGludGVyZmFjZSkge1xuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG4rXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHX1FYR01JSTpcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDE2OjA0OjU0LjU3NTkwNDM2NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MDMwNzUwNzA5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQSFkgSW50ZXJmYWNlIE1vZGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBwaHlsaW5rLmNgIGFuZCBgcGh5bGluay5oYC4gTG9va3MgbGlrZSB0aGV5J3JlIGFkZGluZyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgdG8gYSBmZXcgc3dpdGNoIHN0YXRlbWVudHMgaW4gZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIHBoeWxpbmsgZnJhbWV3b3JrLiBTcGVjaWZpY2FsbHksIEknbSBzZWVpbmcgY2hhbmdlcyBpbiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgLCBgcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGVgLCBgcGh5bGlua19taWlfYzIyX3Bjc19lbmNvZGVfYWR2ZXJ0aXNlbWVudGAsIGFuZCBgcGh5bGlua19nZXRfbGlua190aW1lcl9uc2AuIFRoZSBjaGFuZ2VzIHRoZW1zZWx2ZXMgYXJlIG1pbmltYWwg4oCTIGJhc2ljYWxseSwgcm91dGluZyB0aGUgUFNHTUlJIGNhc2UgdGhyb3VnaCB0aGUgZXhpc3RpbmcgU0dNSUkgYW5kIFFTR01JSSBsb2dpYy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz8gSXQncyBwYXJ0IG9mIHRoZSBwaHlsaW5rIGZyYW1ld29yaywgd2hpY2gsIGFzIHdlIGtub3csIGlzIHByZXR0eSBjb3JlIHRvIG5ldHdvcmsgZHJpdmVyIGZ1bmN0aW9uYWxpdHkuIEFuZCwgYHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlYCBhbmQgYHBoeWxpbmtfbWlpX2MyMl9wY3NfZW5jb2RlX2FkdmVydGlzZW1lbnRgIGFyZSBleHBvcnRlZCBzeW1ib2xzLiBUaGF0IHJhaXNlcyBhIGZsYWcuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpcyBzb21ldGhpbmcgdGhhdCdzIG9ubHkgY29uZmlndXJlZCBhdCB0aGUgaGFyZHdhcmUgbGV2ZWwsIHZpYSBEZXZpY2UgVHJlZSBvciBkcml2ZXIgcHJvYmUsIG9yIGlmIGl0IGNhbiBiZSByZWFjaGVkIHZpYSB1c2Vyc3BhY2UsIG1heWJlIHRocm91Z2ggZXRodG9vbCBvciBuZXRsaW5rLiBUaGF0J3MgdGhlIGtleSB0byB3aGV0aGVyIGZ1enppbmcgaXMgZXZlbiByZWxldmFudCBoZXJlLlxuXG5HaXZlbiB0aG9zZSBleHBvcnRlZCBzeW1ib2xzLCBgcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGVgIGFuZCBgcGh5bGlua19taWlfYzIyX3Bjc19lbmNvZGVfYWR2ZXJ0aXNlbWVudGAsIHRoYXQgZmVlbHMgbGlrZSB0aGUgYmVzdCBwbGFjZSB0byBzdGFydC4gTGV0J3Mgc2VlIGlmIHRoaXMgbW9kZSBpcyBzb21ldGhpbmcgdGhhdCBjYW4gYmUgc2V0IG9yIGFsdGVyZWQgYnkgdXNlcnNwYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDQyLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTY6MTI6NTQuODgzNDE0MDM0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTQ1MzkwMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuYz0yMTM9c3RhdGljIHZvaWQgbXhsODYyeHhfcGNzX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1waHlsaW5rLmMtMjU3LVxcdFxcdCAgICAgICAoc3RhdGUtXFx1MDAzZWFuX2NvbXBsZXRlID8gQk1TUl9BTkVHQ09NUExFVEUgOiAwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtcGh5bGluay5jOjI1ODpcXHRcXHRwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdGF0ZSwgbmVnX21vZGUsIGJtc3IsXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuYy0yNTktXFx0XFx0XFx0XFx0XFx0XFx0IGxlMTZfdG9fY3B1KHN0LmxwYS5jbDM3KSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU3Mz1zdGF0aWMgdm9pZCBtYWNiX3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTgwLVxcdGxwYSA9IGdlbV9yZWFkbChicCwgUENTQU5MUEJBU0UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTgxOlxcdHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0YXRlLCBuZWdfbW9kZSwgYm1zciwgbHBhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU4Mi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BvcnQuYz0yODc9dm9pZCBsYW45NjZ4X3BvcnRfc3RhdHVzX2dldChzdHJ1Y3QgbGFuOTY2eF9wb3J0ICpwb3J0LCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BvcnQuYy0zMTYtXFx0XFx0bHBfYWR2ID0gREVWX1BDUzFHX0FORUdfU1RBVFVTX0xQX0FEVl9HRVQodmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BvcnQuYzozMTc6XFx0XFx0cGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RhdGUsIG5lZ19tb2RlLCBibXNyLCBscF9hZHYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcG9ydC5jLTMxOC1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3Bjcy5jPTY2PXN0YXRpYyB2b2lkIGR3bWFjX2ludGVncmF0ZWRfcGNzX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY3MuYy04My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNzLmM6ODQ6XFx0XFx0cGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RhdGUsIG5lZ19tb2RlLCBzdGF0dXMsIGxwYSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3Bjcy5jLTg1LVxcdH0gZWxzZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLW10ay1seW54aS5jPTEwOD1zdGF0aWMgdm9pZCBtdGtfcGNzX2x5bnhpX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbXRrLWx5bnhpLmMtMTE4LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbXRrLWx5bnhpLmM6MTE5OlxcdHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0YXRlLCBuZWdfbW9kZSxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLW10ay1seW54aS5jLTEyMC1cXHRcXHRcXHRcXHRcXHQgRklFTERfR0VUKFNHTUlJX0JNU1IsIGJtKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jPTExMDM9c3RhdGljIGludCB4cGNzX2dldF9zdGF0ZV9jMzdfMTAwMGJhc2V4KHN0cnVjdCBkd194cGNzICp4cGNzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMtMTEzMi1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYzoxMTMzOlxcdFxcdHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0YXRlLCBuZWdfbW9kZSwgYm1zciwgbHBhKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy0xMTM0LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDExNj1zdGF0aWMgdm9pZCBwaHlsaW5rX2RlY29kZV91c2dtaWlfd29yZChzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDE0MC0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQxNDE6ICogcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoKSAtIERlY29kZSBNQUMgUENTIHN0YXRlIGZyb20gTUlJIHJlZ2lzdGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDE0Mi0gKiBAc3RhdGU6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MTU0LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDE1NTp2b2lkIHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDE1Ni1cXHRcXHRcXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgbmVnX21vZGUsIHUxNiBibXNyLCB1MTYgbHBhKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MjAyLX1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQyMDM6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDIwNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDIyMD12b2lkIHBoeWxpbmtfbWlpX2MyMl9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBtZGlvX2RldmljZSAqcGNzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MjMyLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDIzMzpcXHRwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdGF0ZSwgbmVnX21vZGUsIGJtc3IsIGxwYSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MjM0LX1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTgxNj1zdGF0aWMgaW5saW5lIGJvb2wgcGh5bGlua19tYWNfaW1wbGVtZW50c19scGkoY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqb3BzKVxcbi0tXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtODIwLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjgyMTp2b2lkIHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTgyMi1cXHRcXHRcXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgbmVnX21vZGUsIHUxNiBibXNyLCB1MTYgbHBhKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTY6MTI6NTYuNDM3OTU4NTM0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTkwOTQxNjc0MzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBSZWNlbnQgQ2hhbmdlcyBpbiB0aGUgYHBoeWxpbmtgIFN1YnN5c3RlbSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIG92ZXIgdGhlc2UgcmVjZW50IG1vZGlmaWNhdGlvbnMuIFRoZXkgc2VlbSB0byBiZSBmb2N1c2VkIG9uIGEgZmV3IHNwZWNpZmljIGFyZWFzIHdpdGhpbiB0aGUgYHBoeWxpbmtgIHN1YnN5c3RlbTogYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlYCwgYHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlYCwgYHBoeWxpbmtfbWlpX2MyMl9wY3NfZW5jb2RlX2FkdmVydGlzZW1lbnRgLCBhbmQgYHBoeWxpbmtfZ2V0X2xpbmtfdGltZXJfbnNgLiAgTm90IGEgdmFzdCBhbW91bnQgb2YgY29kZSwgYnV0IGNsZWFybHkgaW1wb3J0YW50IHBpZWNlcywgZ2l2ZW4gd2hlcmUgdGhleSBzaXQuXG5cblRoZSBgcGh5bGlua2Agc3Vic3lzdGVtLCBhcyB3ZSBrbm93LCBpcyBhIGNvcmUgY29tcG9uZW50IGFuZCBpcyBsZXZlcmFnZWQgZXh0ZW5zaXZlbHkgYnkgYSB3aWRlIGFycmF5IG9mIE1BQyBkcml2ZXJzLiBJIHNlZSB0aGF0IGl0IGlzIHV0aWxpc2VkIHdpdGhpbiBgbWFjYmAsIGBzdG1tYWNgLCBgbGFuOTY2eGAsIGBtdGtfZXRoX3NvY2AgZHJpdmVycywgYWxsIG9mIHdoaWNoIGFyZSBxdWl0ZSBjb21tb24uICBUaGlzIHN1Z2dlc3RzIHRoYXQgZXZlbiBtaW5vciB0d2Vha3MgaGVyZSBjb3VsZCBwb3RlbnRpYWxseSBoYXZlIGJyb2FkIGltcGxpY2F0aW9ucywgZ29vZCB0byBrZWVwIGluIG1pbmQgZm9yIHRlc3RpbmcuXG5cbk5vdywgYSBzbGlnaHRseSBkaWZmZXJlbnQgcXVlc3Rpb24gYXJpc2VzIGluIG15IG1pbmQuIFRoZXNlIGNoYW5nZXMgbWF5IGhhdmUgaW1wbGljYXRpb25zIGluIGEgdmVyeSBzcGVjaWZpYyBzY2VuYXJpbywgYW5kIEkgYW0gY3VyaW91cyB3aGV0aGVyIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpcyBhY3R1YWxseSAqcmVhY2hhYmxlKiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHdoaWNoIGRyaXZlcnMgZXhwbGljaXRseSB1c2UgdGhpcywganVzdCB0byBnZXQgYSBsYXkgb2YgdGhlIGxhbmQgaGVyZS4gIEl0IHdvdWxkIGJlIGludGVyZXN0aW5nIHRvIHNlZSBpZiBhbnkgb2YgdGhlc2UgY2hhbmdlcyB0b3VjaCB0aGF0IGNvZGUgcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgxMiwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxNjoxNjowNy4zNzk2MzYwMTRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3Nzk0MjIxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0PTIzOD1Tb21lIG9mIHRoZSBpbnRlcmZhY2UgbW9kZXMgYXJlIGRlc2NyaWJlZCBiZWxvdzpcXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0LTMyNS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdDozMjY6YGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYGBcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC0zMjctICAgIFRoaXMgaXMgdGhlIFBlbnRhIFNHTUlJIG1vZGUsIGl0IGlzIHNpbWlsYXIgdG8gUVNHTUlJIGJ1dCBpdCBjb21iaW5lcyA1XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYz0xNTk9aW50IHBoeV9pbnRlcmZhY2VfbnVtX3BvcnRzKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0yMDEtXFx0XFx0cmV0dXJuIDQ7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM6MjAyOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0yMDMtXFx0XFx0cmV0dXJuIDU7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYz0yOTQ9dW5zaWduZWQgbG9uZyBwaHlfY2Fwc19mcm9tX2ludGVyZmFjZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMzEwLVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jOjMxMTpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMzEyLVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjM4PXN0YXRpYyBpbnQgcGh5bGlua19pbnRlcmZhY2VfbWF4X3NwZWVkKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1OS1cXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2MDpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjEtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz03NzQ9c3RhdGljIGludCBwaHlsaW5rX3BhcnNlX21vZGUoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MDgtXFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4MDk6XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODEwLVxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTAzOT1zdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQyLVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTA0MzpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQ0LVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDE1NT12b2lkIHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MTg2LVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDE4NzpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MTg4LVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDI1MT1pbnQgcGh5bGlua19taWlfYzIyX3Bjc19lbmNvZGVfYWR2ZXJ0aXNlbWVudChwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MjY3LVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDI2ODpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MjY5LVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz00OTA9c3RhdGljIGludCBxY2E4MDd4X3BoeV9wYWNrYWdlX3Byb2JlX29uY2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01NDktXFx0XFx0aWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTA6XFx0XFx0XFx0XFx0cGh5X21vZGVzKFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkpKSlcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTUxOlxcdFxcdFxcdHByaXYtXFx1MDAzZXBhY2thZ2VfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU1Mi1cXHRcXHRlbHNlIGlmICghc3RyY2FzZWNtcChwYWNrYWdlX21vZGVfbmFtZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz01NjI9c3RhdGljIGludCBxY2E4MDd4X3BoeV9wYWNrYWdlX2NvbmZpZ19pbml0X29uY2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01ODUtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU4NjpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4Ny1cXHRkZWZhdWx0Olxcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaD01Mz1leHRlcm4gY29uc3QgaW50IHBoeV9iYXNpY19wb3J0c19hcnJheVszXTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtODktICogQFBIWV9JTlRFUkZBQ0VfTU9ERV9NT0NBOiBNdWx0aW1lZGlhIG92ZXIgQ29heFxcbmluY2x1ZGUvbGludXgvcGh5Lmg6OTA6ICogQFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6IFBlbnRhIFNHTUlJXFxuaW5jbHVkZS9saW51eC9waHkuaC05MS0gKiBAUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTogUXVhZCBTR01JSVxcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaD0xMTQ9dHlwZWRlZiBlbnVtIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtMTMyLVxcdFBIWV9JTlRFUkZBQ0VfTU9ERV9NT0NBLFxcbmluY2x1ZGUvbGludXgvcGh5Lmg6MTMzOlxcdFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUksXFxuaW5jbHVkZS9saW51eC9waHkuaC0xMzQtXFx0UEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSSxcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5Lmg9MjEwPXN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqcGh5X21vZGVzKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTI0OC1cXHRcXHRyZXR1cm4gXFxcIm1vY2FcXFwiO1xcbmluY2x1ZGUvbGludXgvcGh5Lmg6MjQ5OlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTI1MC1cXHRcXHRyZXR1cm4gXFxcInBzZ21paVxcXCI7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaD03OTA9c3RhdGljIGlubGluZSBpbnQgcGh5bGlua19nZXRfbGlua190aW1lcl9ucyhwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzkzLVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjc5NDpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzk1LVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTY6MTY6MDguOTU3NTgyNTAyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTYxNzIwNDUwMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBwaHlsaW5rIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpbnRvIGEgZmV3IGtleSBhcmVhcyBvZiB0aGUgYHBoeWxpbmtgIGZyYW1ld29yay4gSXQgbG9va3MgbGlrZSBpdCdzIHRyZWF0aW5nIGl0IHNpbWlsYXJseSB0byBgU0dNSUlgIGFuZCBgUVNHTUlJYC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgcGh5bGluayBsb2dpYywgbWVhbmluZyB0aGUgdW5kZXJseWluZyBiZWhhdmlvciB3aWxsIGNoYW5nZS4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gdGhpcyBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEkga25vdyBgcGh5bGlua2AgaXMgdXNlZCBieSBudW1lcm91cyBuZXR3b3JrIGRyaXZlcnMuIFNvbWUgb2YgdGhvc2UgY291bGQgYmUgZW11bGF0ZWQgb3IgdmlydHVhbGl6ZWQuIEF0IGxlYXN0LCB0aGUgcGh5bGluayBjb3JlIG1pZ2h0IGJlIHJlYWNoYWJsZSBpZiB3ZSBoYXZlIGEgZHJpdmVyIHRoYXQgdXNlcyBpdCwgcmlnaHQ/XG5cbkFoYSwgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGlzIGEgKnNwZWNpZmljKiBoYXJkd2FyZSBpbnRlcmZhY2UgZm9yIFBlbnRhIFNHTUlJLiBTbywgYXJlIHRoZXJlIGFueSBkcml2ZXJzIGFjdHVhbGx5IHVzaW5nIGl0PyBMZXQncyBzZWUuLi4gR3JlcHBpbmcgZm9yIGl0IHNob3dzIHRoYXQgdGhlIGBxY2E4MDd4YCBkcml2ZXIgZnJvbSBRdWFsY29tbSBkb2VzIHVzZSB0aGlzIGludGVyZmFjZSBtb2RlLiBUaGF0IG1ha2VzIHNlbnNlOyB0aGV5IG9mdGVuIHV0aWxpemUgdGhlc2UgaW50ZXJmYWNlIHR5cGVzLlxuXG5UaGUgZnVuY3Rpb25zIGJlaW5nIG1vZGlmaWVkIGFyZSBjcml0aWNhbDogYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlYCwgYHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlYCwgYHBoeWxpbmtfbWlpX2MyMl9wY3NfZW5jb2RlX2FkdmVydGlzZW1lbnRgLCBhbmQgYHBoeWxpbmtfZ2V0X2xpbmtfdGltZXJfbnNgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGVpdGhlciBleHBvcnRlZCBvciB1c2VkIGludGVybmFsbHkgd2l0aGluIGBwaHlsaW5rYCwgdGhlIGdlbmVyaWMgZnJhbWV3b3JrLiBJdCBzb3VuZHMgbGlrZSBhIGNvcmUgY2hhbmdlLCB0aGVyZWZvcmUgaXTigJlzIHdvcnRoIHRoaW5raW5nIGFib3V0IGZ1enppbmcgdGhpcywgcmlnaHQ/IEl0J3MgYSBrZXkgcGllY2Ugb2YgdGhlIG5ldHdvcmsgc3RhY2ssIHNvIGZ1enppbmcgd291bGQgYmUgYSBnb29kIGlkZWEuIEhvd2V2ZXIsIHdhaXQsIGBwaHlsaW5rYCBpcyBtb3N0bHkgZm9yIHBoeXNpY2FsIGV0aGVybmV0IGRyaXZlcnMgbGlrZSBNQUNzIGFuZCBQSFlzLiBDYW4gU3l6a2FsbGVyIGV2ZW4gZnV6eiBgcGh5bGlua2AgZWZmZWN0aXZlbHk/IFN5emthbGxlciBjYW4gZnV6eiBuZXRsaW5rIGludGVyZmFjZXMsIGFuZCBtYXliZSBzb21lIHZpcnR1YWwgZXRoZXJuZXQgZHJpdmVycyB1c2UgYHBoeWxpbmtgP1xuXG5MZXQncyBjaGVjayBpZiBhbnkgdmlydHVhbCBkcml2ZXIgdXRpbGl6ZXMgYHBoeWxpbmtgLiBJIHNob3VsZCBsb29rIGF0IHdoZXRoZXIgYHBoeWxpbmtfY3JlYXRlYCBpcyBjYWxsZWQgYnkgYW55IGRyaXZlciB0aGF0IGNhbiBiZSBpbnN0YW50aWF0ZWQgYnkgc3l6a2FsbGVyLiBMaWtlIGBuZXRkZXZzaW1gLCBgdmV0aGAsIG9yIGB0dW5gIGZvciBleGFtcGxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTI4LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDE2OjE2OjI1LjEyOTYzMDgxOVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzA1NDUxNDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeWxpbmtfY3JlYXRlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q9NzQ9dGhpcyBkb2N1bWVudGF0aW9uLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zNjMtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdDozNjQ6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgbm9kZSwgcGh5X21vZGUsIFxcdTAwMjZwaHlsaW5rX29wcyk7XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zNjUtXFx0aWYgKElTX0VSUihwaHlsaW5rKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTExMjg9c3RhdGljIGludCBhbHRlcmFfdHNlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTQxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTQxNjpcXHRwcml2LVxcdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNDE3LVxcdFxcdFxcdFxcdCAgICAgICBvZl9md25vZGVfaGFuZGxlKHByaXYtXFx1MDAzZWRldmljZS1cXHUwMDNlb2Zfbm9kZSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jPTEwNzQ9c3RhdGljIGludCBhZzcxeHhfcGh5bGlua19zZXR1cChzdHJ1Y3QgYWc3MXh4ICphZylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTEwOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjExMDk6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZhZy1cXHUwMDNlcGh5bGlua19jb25maWcsIGFnLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTExMC1cXHRcXHRcXHRcXHQgYWctXFx1MDAzZXBoeV9pZl9tb2RlLCBcXHUwMDI2YWc3MXh4X3BoeWxpbmtfbWFjX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTEwMjM9c3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTA4NjpcXHRicC1cXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZicC1cXHUwMDNlcGh5bGlua19jb25maWcsIGJwLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA4Ny1cXHRcXHRcXHRcXHQgICAgIGJwLVxcdTAwM2VwaHlfaW50ZXJmYWNlLCBcXHUwMDI2bWFjYl9waHlsaW5rX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jPTIwMT1zdGF0aWMgaW50IGRwYWFfbmV0ZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI3NC1cXHRtYWNfZGV2LVxcdTAwM2V1cGRhdGVfc3BlZWQgPSBkcGFhX2V0aF9jZ3Jfc2V0X3NwZWVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmM6Mjc1OlxcdG1hY19kZXYtXFx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2bWFjX2Rldi1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yNzYtXFx0XFx0XFx0XFx0XFx0ICBkZXZfZndub2RlKG1hY19kZXYtXFx1MDAzZWRldiksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM9NTYwPWludCBkcGFhMl9tYWNfY29ubmVjdChzdHJ1Y3QgZHBhYTJfbWFjICptYWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNjI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYzo2MjU6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy02MjYtXFx0XFx0XFx0XFx0IGRwbWFjX25vZGUsIG1hYy1cXHUwMDNlaWZfbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYz05NzE9c3RhdGljIGludCBlbmV0YzRfbGlua19pbml0KHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5OTA6XFx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXFx1MDAyNmVuZXRjX3BsX21hY19vcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTEtXFx0aWYgKGVycikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTItXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJGYWlsZWQgdG8gY3JlYXRlIHBoeWxpbmtcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5OTM6XFx0XFx0Z290byBlcnJfcGh5bGlua19jcmVhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5NC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTk3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5OTg6ZXJyX3BoeWxpbmtfY3JlYXRlOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTktXFx0ZW5ldGNfbWRpb2J1c19kZXN0cm95KHBmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jPTg0Nz1zdGF0aWMgaW50IGVuZXRjX3BmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjkzMDpcXHRlcnIgPSBlbmV0Y19waHlsaW5rX2NyZWF0ZShwcml2LCBub2RlLCBcXHUwMDI2ZW5ldGNfbWFjX3BoeWxpbmtfb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05MzEtXFx0aWYgKGVycilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo5MzI6XFx0XFx0Z290byBlcnJfcGh5bGlua19jcmVhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTMzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTQxLVxcdGVuZXRjX3BoeWxpbmtfZGVzdHJveShwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo5NDI6ZXJyX3BoeWxpbmtfY3JlYXRlOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTk0My1cXHRlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jPTMxMj1FWFBPUlRfU1lNQk9MX0dQTChlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zMTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjMxNDppbnQgZW5ldGNfcGh5bGlua19jcmVhdGUoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zMTUtXFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgKm9wcylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjMzODpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBmLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgb2ZfZndub2RlX2hhbmRsZShub2RlKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzM5LVxcdFxcdFxcdFxcdCBwZi1cXHUwMDNlaWZfbW9kZSwgb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNDgtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozNDk6RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfcGh5bGlua19jcmVhdGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNTAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmg9MTI9dm9pZCBlbmV0Y19tZGlvYnVzX2Rlc3Ryb3koc3RydWN0IGVuZXRjX3BmICpwZik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oOjEzOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oLTE0LVxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpvcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmM9ODUzPXN0YXRpYyBpbnQgZnNfZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jLTkzMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYzo5MzM6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZmZXAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKGZlcC1cXHUwMDNlZGV2KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYy05MzQtXFx0XFx0XFx0XFx0IHBoeV9tb2RlLCBcXHUwMDI2ZnNfZW5ldF9waHlsaW5rX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmM9MzQxOT1zdGF0aWMgaW50IHVjY19nZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UqIG9mZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmMtMzU3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYzozNTc0OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2dWdldGgtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKFxcdTAwMjZkZXYtXFx1MDAzZWRldiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmMtMzU3NS1cXHRcXHRcXHRcXHQgcGh5X2ludGVyZmFjZSwgXFx1MDAyNnVnZXRoX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYz01NDgwPXN0YXRpYyBpbnQgbXZuZXRhX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jLTU1OTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYzo1NTk5OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBwZGV2LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmMtNTYwMC1cXHRcXHRcXHRcXHQgcGh5X21vZGUsIFxcdTAwMjZtdm5ldGFfcGh5bGlua19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmM9Njg0MD1zdGF0aWMgaW50IG12cHAyX3BvcnRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTcxNDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmM6NzE0ODpcXHRcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBvcnQtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBwb3J0X2Z3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy03MTQ5LVxcdFxcdFxcdFxcdFxcdCBwaHlfbW9kZSwgXFx1MDAyNm12cHAyX3BoeWxpbmtfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jPTM3MD1zdGF0aWMgaW50IHByZXN0ZXJhX3BvcnRfc2ZwX2JpbmQoc3RydWN0IHByZXN0ZXJhX3BvcnQgKnBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYy00MTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmM6NDE3OlxcdFxcdHBoeV9saW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBvcnQtXFx1MDAzZXBoeV9jb25maWcsIGZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYy00MTgtXFx0XFx0XFx0XFx0XFx0ICBQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jPTQ4MjM9c3RhdGljIGludCBtdGtfYWRkX21hYyhzdHJ1Y3QgbXRrX2V0aCAqZXRoLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy00OTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6NDk2ODpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNm1hYy1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy00OTY5LVxcdFxcdFxcdFxcdCBvZl9md25vZGVfaGFuZGxlKG1hYy1cXHUwMDNlb2Zfbm9kZSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jPTc0Nj1zdHJ1Y3QgbmV0X2RldmljZSAqZmJuaWNfbmV0ZGV2X2FsbG9jKHN0cnVjdCBmYm5pY19kZXYgKmZiZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM6ODM1OlxcdGlmIChmYm5pY19waHlsaW5rX2NyZWF0ZShuZXRkZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy04MzYtXFx0XFx0ZnJlZV9uZXRkZXYobmV0ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2Lmg9MTExPWludCBmYm5pY19waHlsaW5rX2dldF9mZWNwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmgtMTEyLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNwYXJhbSAqZmVjcGFyYW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2Lmg6MTEzOmludCBmYm5pY19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oLTExNC12b2lkIGZibmljX3BoeWxpbmtfZGVzdHJveShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jPTE3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBmYm5pY19waHlsaW5rX21hY19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0xODYtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MTg3OiAqIGZibmljX3BoeWxpbmtfY3JlYXRlIC0gUGh5bGluayBkZXZpY2UgY3JlYXRpb25cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0xODgtICogQG5ldGRldjogTmV0d29yayBEZXZpY2Ugc3RydWN0IHRvIGF0dGFjaCBwaHlsaW5rIGRldmljZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTk2LSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYzoxOTc6aW50IGZibmljX3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTIzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYzoyMzI6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZmYm4tXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBOVUxMLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTIzMy1cXHRcXHRcXHRcXHQgZmJuaWNfcGh5bGlua19zZWxlY3RfaW50ZXJmYWNlKGZibi1cXHUwMDNlYXVpKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zMTQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGxhbjc0M3hfcGh5bGlua19tYWNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjMxNTA6c3RhdGljIGludCBsYW43NDN4X3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxNTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjMxOTM6XFx0cGwgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2YWRhcHRlci1cXHUwMDNlcGh5bGlua19jb25maWcsIE5VTEwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxOTQtXFx0XFx0XFx0ICAgIGFkYXB0ZXItXFx1MDAzZXBoeV9pbnRlcmZhY2UsIFxcdTAwMjZsYW43NDN4X3BoeWxpbmtfbWFjX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzY2ND1zdGF0aWMgaW50IGxhbjc0M3hfcGNpZGV2X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3MjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjM3MjQ6XFx0cmV0ID0gbGFuNzQzeF9waHlsaW5rX2NyZWF0ZShhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzcyNS1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmM9NzkxPXN0YXRpYyBpbnQgbGFuOTY2eF9wcm9iZV9wb3J0KHN0cnVjdCBsYW45NjZ4ICpsYW45NjZ4LCB1MzIgcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTg1NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYzo4NTY6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwb3J0LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYy04NTctXFx0XFx0XFx0XFx0IHBvcnRucCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYz0zMTI9c3RhdGljIGludCBzcGFyeDVfY3JlYXRlX3BvcnQoc3RydWN0IHNwYXJ4NSAqc3Bhcng1LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jLTM4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM6Mzg5OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2c3B4NV9wb3J0LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzkwLVxcdFxcdFxcdFxcdCBvZl9md25vZGVfaGFuZGxlKGNvbmZpZy1cXHUwMDNlbm9kZSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYz0xNzc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIG9jZWxvdF9waHlsaW5rX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3NzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTc4MDpzdGF0aWMgaW50IG9jZWxvdF9wb3J0X3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTc4MS1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRucClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4MjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTgyMTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4MjItXFx0XFx0XFx0XFx0IG9mX2Z3bm9kZV9oYW5kbGUocG9ydG5wKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jPTE4NDM9aW50IG9jZWxvdF9wcm9iZV9wb3J0KHN0cnVjdCBvY2Vsb3QgKm9jZWxvdCwgaW50IHBvcnQsIHN0cnVjdCByZWdtYXAgKnRhcmdldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4NzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTg4MDpcXHRlcnIgPSBvY2Vsb3RfcG9ydF9waHlsaW5rX2NyZWF0ZShvY2Vsb3QsIHBvcnQsIHBvcnRucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTg4MS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xMzcwPXN0YXRpYyBpbnQgc3RtbWFjX3BoeWxpbmtfc2V0dXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNDYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTQ2MjpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBkZXZfZndub2RlKHByaXYtXFx1MDAzZWRldmljZSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNDYzLVxcdFxcdFxcdFxcdCBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VwaHlfaW50ZXJmYWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmM9NDU9aW50IHRuNDBfcGh5X3JlZ2lzdGVyKHN0cnVjdCB0bjQwX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYy02Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYzo2MzpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBQSFlfSU5URVJGQUNFX01PREVfWEFVSSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYy02NC1cXHRcXHRcXHRcXHQgXFx1MDAyNnRuNDBfbWFjX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jPTI3NTc9YW02NV9jcHN3X251c3NfaW5pdF9wb3J0X25kZXYoc3RydWN0IGFtNjVfY3Bzd19jb21tb24gKmNvbW1vbiwgdTMyIHBvcnRfaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYy0yODQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmM6Mjg0MjpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBvcnQtXFx1MDAzZXNsYXZlLnBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMjg0My1cXHRcXHRcXHRcXHQgb2ZfZndub2RlX2hhbmRsZShwb3J0LVxcdTAwM2VzbGF2ZS5wb3J0X25wKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYz0xMzA9c3RhdGljIGludCBuZ2JlX3BoeWxpbmtfaW5pdChzdHJ1Y3Qgd3ggKnd4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jLTE0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmM6MTUwOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIHBoeV9tb2RlLCBcXHUwMDI2bmdiZV9tYWNfb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmMtMTUxLVxcdGlmIChJU19FUlIocGh5bGluaykpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jPTQ4Mj1pbnQgdHhnYmVfcGh5bGlua19pbml0X2FtbChzdHJ1Y3QgdHhnYmUgKnR4Z2JlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYy01MTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYzo1MTM6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgTlVMTCwgcGh5X21vZGUsIFxcdTAwMjZ0eGdiZV9tYWNfb3BzX2FtbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYy01MTQtXFx0aWYgKElTX0VSUihwaHlsaW5rKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmM9MjY4PXN0YXRpYyBpbnQgdHhnYmVfcGh5bGlua19pbml0KHN0cnVjdCB0eGdiZSAqdHhnYmUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jOjI5MzpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBmd25vZGUsIHBoeV9tb2RlLCBcXHUwMDI2dHhnYmVfbWFjX29wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0yOTQtXFx0aWYgKElTX0VSUihwaHlsaW5rKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM9Mjc5NT1zdGF0aWMgaW50IGF4aWVuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzExNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxMTg6XFx0bHAtXFx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2bHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBwZGV2LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzExOS1cXHRcXHRcXHRcXHQgICAgIGxwLVxcdTAwM2VwaHlfbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzEyMi1cXHRcXHRyZXQgPSBQVFJfRVJSKGxwLVxcdTAwM2VwaHlsaW5rKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxMjM6XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwicGh5bGlua19jcmVhdGUgZXJyb3IgKCVpKVxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjQtXFx0XFx0Z290byBjbGVhbnVwX21kaW87XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTUxNj1zdGF0aWMgaW50IHBoeWxpbmtfdmFsaWRhdGVfbWFjX2FuZF9wY3Moc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzEtXFx0aWYgKHBjcykge1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NTMyOlxcdFxcdC8qIFRoZSBQQ1MsIGlmIHByZXNlbnQsIG11c3QgYmUgc2V0dXAgYmVmb3JlIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTUzMy1cXHRcXHQgKiBoYXMgYmVlbiBjYWxsZWQuIElmIHRoZSBvcHMgaXMgbm90IGluaXRpYWxpc2VkLCBwcmludCBhblxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzEtICogcGh5bGlua19wY3NfbmVnX21vZGUoKSAtIGhlbHBlciB0byBkZXRlcm1pbmUgUENTIGluYmFuZCBtb2RlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDcyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA3My0gKiBAcGNzOiBhIHBvaW50ZXIgdG8gXFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xNzY5PXN0YXRpYyBpbnQgcGh5bGlua19yZWdpc3Rlcl9zZnAoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzkzLSAqIHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmsoKSAtIHNldCB0aGUgZml4ZWQgbGlua1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTc5NDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3OTUtICogQHN0YXRlOiBhIHBvaW50ZXIgdG8gYSBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xODMxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmspO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODMzLS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgzNDogKiBwaHlsaW5rX2NyZWF0ZSgpIC0gY3JlYXRlIGEgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzNS0gKiBAY29uZmlnOiBhIHBvaW50ZXIgdG8gdGhlIHRhcmdldCBcXHUwMDI2c3RydWN0IHBoeWxpbmtfY29uZmlnXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NDgtICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODQ5OnN0cnVjdCBwaHlsaW5rICpwaHlsaW5rX2NyZWF0ZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NTAtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MzYtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkzNzpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2NyZWF0ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM4LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTQwLSAqIHBoeWxpbmtfZGVzdHJveSgpIC0gY2xlYW51cCBhbmQgZGVzdHJveSB0aGUgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTk0MTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NDItICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTk1Nz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Rlc3Ryb3kpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTYwLSAqIHBoeWxpbmtfZXhwZWN0c19waHkoKSAtIERldGVybWluZSBpZiBwaHlsaW5rIGV4cGVjdHMgYSBwaHkgdG8gYmUgYXR0YWNoZWRcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5NjE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTYyLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMDY9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjI2LSAqIHBoeWxpbmtfY29ubmVjdF9waHkoKSAtIGNvbm5lY3QgYSBQSFkgdG8gdGhlIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyMjc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjI4LSAqIEBwaHk6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5X2RldmljZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjI2MD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Nvbm5lY3RfcGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI2My0gKiBwaHlsaW5rX29mX3BoeV9jb25uZWN0KCkgLSBjb25uZWN0IHRoZSBQSFkgc3BlY2lmaWVkIGluIHRoZSBEVCBtb2RlLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI2NDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNjUtICogQGRuOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGRldmljZV9ub2RlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMjc5PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjgyLSAqIHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KCkgLSBjb25uZWN0IHRoZSBQSFkgc3BlY2lmaWVkIGluIHRoZSBmd25vZGUuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjgzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI4NC0gKiBAZndub2RlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGZ3bm9kZV9oYW5kbGUuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzMzg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzQyLSAqICAgaW5zdGFuY2UuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzQzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM0NC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzczPXN0YXRpYyB2b2lkIHBoeWxpbmtfbGlua19jaGFuZ2VkKHN0cnVjdCBwaHlsaW5rICpwbCwgYm9vbCB1cCwgY29uc3QgY2hhciAqd2hhdClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM4Mi0gKiBwaHlsaW5rX21hY19jaGFuZ2UoKSAtIG5vdGlmeSBwaHlsaW5rIG9mIGEgY2hhbmdlIGluIE1BQyBzdGF0ZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjM4MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzODQtICogQHVwOiBpbmRpY2F0ZXMgd2hldGhlciB0aGUgbGluayBpcyBjdXJyZW50bHkgdXAuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0MTU9c3RhdGljIGlycXJldHVybl90IHBoeWxpbmtfbGlua19oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0MjUtICogcGh5bGlua19zdGFydCgpIC0gc3RhcnQgYSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNDI2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQyNy0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDg4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3RhcnQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDkxLSAqIHBoeWxpbmtfc3RvcCgpIC0gc3RvcCBhIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0OTI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDkzLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1MjI9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zdG9wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUyNS0gKiBwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKCkgLSBibG9jayBQSFkgYWJpbGl0eSB0byBzdG9wIHJlY2VpdmUgY2xvY2sgaW4gTFBJXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTI2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUyNy0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNTUxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTU0LSAqIHBoeWxpbmtfcnhfY2xrX3N0b3BfdW5ibG9jaygpIC0gdW5ibG9jayBQSFkgYWJpbGl0eSB0byBzdG9wIHJlY2VpdmUgY2xvY2tcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI1NTU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTU2LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1OTM9c3RhdGljIGJvb2wgcGh5bGlua19waHlfcG1fc3BlZWRfY3RybChzdHJ1Y3QgcGh5bGluayAqcGwpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MDAtICogcGh5bGlua19zdXNwZW5kKCkgLSBoYW5kbGUgYSBuZXR3b3JrIGRldmljZSBzdXNwZW5kIGV2ZW50XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjAxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjYwMi0gKiBAbWFjX3dvbDogdHJ1ZSBpZiB0aGUgTUFDIG5lZWRzIHRvIHJlY2VpdmUgcGFja2V0cyBmb3IgV2FrZS1vbi1MYW5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjY1Mj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N1c3BlbmQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjU1LSAqIHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUoKSAtIHByZXBhcmUgdG8gcmVzdW1lIGEgbmV0d29yayBkZXZpY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2NTY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjU3LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI2Nzc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wcmVwYXJlX3Jlc3VtZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2ODAtICogcGh5bGlua19yZXN1bWUoKSAtIGhhbmRsZSBhIG5ldHdvcmsgZGV2aWNlIHJlc3VtZSBldmVudFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjY4MTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2ODItICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjcyMD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Jlc3VtZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3MjMtICogcGh5bGlua19ldGh0b29sX2dldF93b2woKSAtIGdldCB0aGUgd2FrZSBvbiBsYW4gcGFyYW1ldGVycyBmb3IgdGhlIFBIWVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjcyNDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3MjUtICogQHdvbDogYSBwb2ludGVyIHRvIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF93b2xpbmZvIHRvIGhvbGQgdGhlIHJlYWQgcGFyYW1ldGVyc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNzU3PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfd29sKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjc2MC0gKiBwaHlsaW5rX2V0aHRvb2xfc2V0X3dvbCgpIC0gc2V0IHdha2Ugb24gbGFuIHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI3NjE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzYyLSAqIEB3b2w6IGEgcG9pbnRlciB0byBcXHUwMDI2c3RydWN0IGV0aHRvb2xfd29saW5mbyBmb3IgdGhlIGRlc2lyZWQgcGFyYW1ldGVyc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yODg5PXN0YXRpYyB2b2lkIHBoeWxpbmtfZ2V0X2tzZXR0aW5ncyhjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjkwNC0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCgpIC0gZ2V0IHRoZSBjdXJyZW50IGxpbmsgc2V0dGluZ3NcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5MDU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTA2LSAqIEBrc2V0OiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgdG8gaG9sZCBsaW5rIHNldHRpbmdzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5NTc9c3RhdGljIGJvb2wgcGh5bGlua192YWxpZGF0ZV9wY3NfaW5iYW5kX2F1dG9uZWcoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTc4LSAqIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KCkgLSBzZXQgdGhlIGxpbmsgc2V0dGluZ3NcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5Nzk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTgwLSAqIEBrc2V0OiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgZm9yIHRoZSBkZXNpcmVkIG1vZGVzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMxNDU9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTQ4LSAqIHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KCkgLSByZXN0YXJ0IG5lZ290aWF0aW9uXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTQ5OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE1MC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTcwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE3My0gKiBwaHlsaW5rX2V0aHRvb2xfZ2V0X3BhdXNlcGFyYW0oKSAtIGdldCB0aGUgY3VycmVudCBwYXVzZSBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTc0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE3NS0gKiBAcGF1c2U6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMxODY9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE4OS0gKiBwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0oKSAtIHNldCB0aGUgY3VycmVudCBwYXVzZSBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTkwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE5MS0gKiBAcGF1c2U6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMyNzI9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI3Ni0gKiAgIGNvdW50ZXJcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMyNzc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI3OC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMjk1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZ2V0X2VlZV9lcnIpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMjk4LSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfZWVlKCkgLSByZWFkIHRoZSBlbmVyZ3kgZWZmaWNpZW50IGV0aGVybmV0IHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMyOTk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzAwLSAqIEBlZWU6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9rZWVlIGZvciB0aGUgcmVhZCBwYXJhbWV0ZXJzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMzMjE9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2dldF9lZWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzI0LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfZWVlKCkgLSBzZXQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzMyNTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMjYtICogQGVlZTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX2tlZWUgZm9yIHRoZSBkZXNpcmVkIHBhcmFtZXRlcnNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzQ5NT1zdGF0aWMgaW50IHBoeWxpbmtfbWlpX3dyaXRlKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgaW50IHBoeV9pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzUxMy0gKiBwaHlsaW5rX21paV9pb2N0bCgpIC0gZ2VuZXJpYyBtaWkgaW9jdGwgaW50ZXJmYWNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTE0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzUxNS0gKiBAaWZyOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGlmcmVxIGZvciBzb2NrZXQgaW9jdGxzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM1ODg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19taWlfaW9jdGwpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTkyLSAqICAgbGluayBwYXJ0bmVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzU5MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1OTQtICogQHN5bmM6IHBlcmZvcm0gYWN0aW9uIHN5bmNocm9ub3VzbHlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzYxMz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NwZWVkX2Rvd24pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNjE3LSAqICAgcGh5bGlua19zcGVlZF9kb3duKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM2MTg6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNjE5LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQzNzI9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19taWlfYzQ1X3Bjc19nZXRfc3RhdGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzc2LSAqXFx0XFx0XFx0XFx0IHdoaWNoIGxvc2VzIHN0YXRlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0Mzc3OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM3OC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MzkzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcmVwbGF5X2xpbmtfYmVnaW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzk3LSAqXFx0XFx0XFx0ICAgICAgIHdoaWNoIGxvc3Qgc3RhdGVcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQzOTg6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzk5LSAqXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9Nzk5PXN0YXRpYyBpbnQgYXg4ODc3Ml9waHlsaW5rX3NldHVwKHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTktXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgyMDpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXYtXFx1MDAzZW5ldC1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODIxLVxcdFxcdFxcdFxcdCBwaHlfaWZfbW9kZSwgXFx1MDAyNmF4ODg3NzJfcGh5bGlua19tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9Mjc5OT1zdGF0aWMgaW50IGxhbjc4eHhfcGh5bGlua19zZXR1cChzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjgzOC1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4Mzk6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKHBjLCBkZXYtXFx1MDAzZW5ldC1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NDAtXFx0XFx0XFx0XFx0IGRldi1cXHUwMDNlaW50ZXJmYWNlLCBcXHUwMDI2bGFuNzh4eF9waHlsaW5rX21hY19vcHMpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg9NzE4PWludCBwY3NfcHJlX2luaXQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzIxLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjcyMjpzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICosXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzIzLVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqLFxcbi0tXFxubmV0L2RzYS9wb3J0LmM9MTYxMT1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBkc2FfcG9ydF9waHlsaW5rX21hY19vcHMgPSB7XFxuLS1cXG5uZXQvZHNhL3BvcnQuYy0xNjE2LVxcbm5ldC9kc2EvcG9ydC5jOjE2MTc6aW50IGRzYV9wb3J0X3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBkc2FfcG9ydCAqZHApXFxubmV0L2RzYS9wb3J0LmMtMTYxOC17XFxuLS1cXG5uZXQvZHNhL3BvcnQuYy0xNjQ2LVxcbm5ldC9kc2EvcG9ydC5jOjE2NDc6XFx0cGwgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2ZHAtXFx1MDAzZXBsX2NvbmZpZywgb2ZfZndub2RlX2hhbmRsZShkcC1cXHUwMDNlZG4pLCBtb2RlLFxcbm5ldC9kc2EvcG9ydC5jLTE2NDgtXFx0XFx0XFx0ICAgIG1hY19vcHMpO1xcbi0tXFxubmV0L2RzYS9wb3J0LmM9MTY2NT1zdGF0aWMgaW50IGRzYV9zaGFyZWRfcG9ydF9waHlsaW5rX3JlZ2lzdGVyKHN0cnVjdCBkc2FfcG9ydCAqZHApXFxuLS1cXG5uZXQvZHNhL3BvcnQuYy0xNjczLVxcbm5ldC9kc2EvcG9ydC5jOjE2NzQ6XFx0ZXJyID0gZHNhX3BvcnRfcGh5bGlua19jcmVhdGUoZHApO1xcbm5ldC9kc2EvcG9ydC5jLTE2NzUtXFx0aWYgKGVycilcXG4tLVxcbm5ldC9kc2EvcG9ydC5oPTEwMD1pbnQgZHNhX3BvcnRfbXJwX2RlbF9yaW5nX3JvbGUoY29uc3Qgc3RydWN0IGRzYV9wb3J0ICpkcCxcXG5uZXQvZHNhL3BvcnQuaC0xMDEtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3Jpbmdfcm9sZV9tcnAgKm1ycCk7XFxubmV0L2RzYS9wb3J0Lmg6MTAyOmludCBkc2FfcG9ydF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZHNhX3BvcnQgKmRwKTtcXG5uZXQvZHNhL3BvcnQuaC0xMDMtdm9pZCBkc2FfcG9ydF9waHlsaW5rX2Rlc3Ryb3koc3RydWN0IGRzYV9wb3J0ICpkcCk7XFxuLS1cXG5uZXQvZHNhL3VzZXIuYz0yNjU0PXN0YXRpYyBpbnQgZHNhX3VzZXJfcGh5X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICp1c2VyX2RldilcXG4tLVxcbm5ldC9kc2EvdXNlci5jLTI2NzMtXFxubmV0L2RzYS91c2VyLmM6MjY3NDpcXHRyZXQgPSBkc2FfcG9ydF9waHlsaW5rX2NyZWF0ZShkcCk7XFxubmV0L2RzYS91c2VyLmMtMjY3NS1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxNjoxNjoyNi44MzUwODgzNjhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDEwNzEyNDMzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aCBGdXp6aW5nPyBBIERlZXAgRGl2ZSBpbnRvIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgUmVhY2hhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIldvcnRoIEZ1enppbmc/XCIgVGhlIHByb21wdCBnaXZlcyBtZSBhIGNsZWFyIGRpcmVjdGl2ZTogaWYgdGhlIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggZW11bGF0ZWQgaGFyZHdhcmUsIHRoZW4gaXQncyBhIG5vLWdvLiBMZXQncyBicmVhayB0aGlzIGRvd24uXG5cbkZpcnN0LCBJIHNlZSB0aGF0IHRoaXMgcGF0Y2ggZGVhbHMgd2l0aCBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgd2l0aGluIHBoeWxpbmsuIEkga25vdyBwaHlsaW5rLCBpdCdzIGNvcmUgbmV0d29ya2luZyBzdHVmZiwgc28gYW55IGNoYW5nZSBoZXJlIHBpcXVlcyBteSBpbnRlcmVzdC4gVGhlIHBhdGNoIGl0c2VsZiBzZWVtcyBzbWFsbCwgcHJpbWFyaWx5IGFkZGluZyB0aGlzIG1vZGUgdG8gYSBzd2l0Y2ggc3RhdGVtZW50IHdpdGhpbiBjb3JlIHBoeWxpbmsgZnVuY3Rpb25zOiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgLCBgcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGVgLCBgcGh5bGlua19taWlfYzIyX3Bjc19lbmNvZGVfYWR2ZXJ0aXNlbWVudGAsIGFuZCBgcGh5bGlua19nZXRfbGlua190aW1lcl9uc2AuIFRoZXNlIGFyZSBhbGwgZnVuY3Rpb25zIGNhbGxlZCBieSBNQUMgYW5kIFBDUyBkcml2ZXJzLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBjYW4gSSB0cmlnZ2VyIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJIHN0YXJ0IHRoaW5raW5nIGFib3V0IHRoZSB3YXlzIFVTQiBkZXZpY2VzIGNhbiBiZSB1c2VkIGluIGEgdmlydHVhbCBzZXR0aW5nLiBJIGtub3cgYHN5emthbGxlcmAgY2FuIGVtdWxhdGUgVVNCIHVzaW5nIGBkdW1teV9oY2RgIG9yIGByYXctZ2FkZ2V0YCwgc28gVVNCIGRldmljZXMgKmFyZSogcmVhY2hhYmxlLiBJIHF1aWNrbHkgY2hlY2sgYSBjb3VwbGUgb2YgVVNCIGRyaXZlcnMgSSBrbm93LCBgYXNpeF9kZXZpY2VzLmNgIGFuZCBgbGFuNzh4eC5jYC4gTmVpdGhlciBvZiB0aGVzZSBkaXJlY3RseSB1c2UgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLCB3aGljaCBtYWtlcyBtZSBwYXVzZS4gVGhlbiBJIHN0YXJ0IHRoaW5raW5nIGFib3V0IFBIWSBkcml2ZXJzIG1vcmUgZ2VuZXJhbGx5LiBJIHJlY2FsbCBgcWNhODA3eC5jYCwgYW5kIHRoYXQgUEhZIGRyaXZlcnMgdHlwaWNhbGx5IHVzZSBNRElPLiBJIGtub3cgTURJTyBidXNlcyBjYW4gc29tZXRpbWVzIGJlIGVtdWxhdGVkLCBidXQgdXN1YWxseSB0aGV5IGFyZSB0aWVkIHRvIHJlYWwgaGFyZHdhcmUuIFRoaXMgc3BlY2lmaWMgbW9kZSBpcyBsaWtlbHkgc2V0IGJ5IGRldmljZSB0cmVlLCBBQ1BJLCBvciBoYXJkY29kZWQgaW4gdGhlIGRyaXZlci5cblxuVGhlIGNvcmUgb2YgdGhlIGlzc3VlOiBpcyB0aGlzIHN3aXRjaCBzdGF0ZW1lbnQgY2FzZSwgc3BlY2lmaWNhbGx5IGZvciBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAsIGFjdHVhbGx5ICpyZWFjaGFibGUqPyAgRXZlbiBpZiBJICpjb3VsZCogZW11bGF0ZSBhIE1BQy9QSFkgY2FwYWJsZSBvZiB1c2luZyBgUFNHTUlJYCwgaXMgdGhlcmUgYSBtZWNoYW5pc20gdG8gY29uZmlndXJlIGEgdmlydHVhbCBkZXZpY2UgdG8gKnVzZSogdGhhdCBwYXJ0aWN1bGFyIGludGVyZmFjZSBtb2RlPyAgTGlrZWx5IG5vdC4gSSB3b3VsZCBuZWVkIGEgd2F5IHRvIGluc3RhbnRpYXRlIGEgUEhZIG9yIE1BQyB3aXRoIHRoaXMgbW9kZSB2aWEgc29tZXRoaW5nIGxpa2UgbmV0bGluaywgYnV0IHRoYXQgc2VlbXMgZXh0cmVtZWx5IHVubGlrZWx5IGdpdmVuIHRoYXQgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGlzIHByaW1hcmlseSBhIGhhcmR3YXJlIHByb3BlcnR5LlxuXG5TbywgdGhpcyBtb2RlLCBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAsIGlzICpwcm9iYWJseSogdW5yZWFjaGFibGUgaW4gbXkgc3RhbmRhcmQgdmlydHVhbCBzZXR1cC4gTXkgY29uY2x1c2lvbiBpcyB0aGF0IHVubGVzcyB0aGVyZSdzIGEgc3BlY2lmaWMsIHVuY29tbW9uLCBhbmQgZW11bGF0ZWQgaGFyZHdhcmUgc2NlbmFyaW8sIHRoaXMgY29kZSBwYXRoLCBhdCBsZWFzdCB0aGUgc3BlY2lmaWMgY2FzZSBmb3IgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHdpdGhpbiB0aG9zZSBzd2l0Y2ggc3RhdGVtZW50cywgaXMgbGlrZWx5IGRlYWQgY29kZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBIb3dldmVyLCB0aGUgZnVuY3Rpb25zIG1vZGlmaWVkLCBhcmUgY29yZSBwaHlsaW5rIGZ1bmN0aW9ucyBhbmQgY291bGQgYmUgcmVhY2hlZCB3aXRoIG90aGVyIHZhbHVlcy5cblRoZSBmYWN0IHRoYXQgdGhpcyBpcyBqdXN0IGFuIGVudW0gdmFsdWUgaXMga2V5OyBpdCdzIHRoZSAqdXNhZ2UqIG9mIHRoYXQgZW51bSB0aGF0IG1hdHRlcnMuXG5cbkkgc2hvdWxkIHByb2JhYmx5IGNvbmZpcm0gaWYgdGhlcmUgaXMgYSB3YXkgdG8gc2V0IGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBmcm9tIHVzZXJzcGFjZSwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NzAyLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDE2OjE2OjQwLjk0MjIxNTM4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDM4OTQxMDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3Q9MjM4PVNvbWUgb2YgdGhlIGludGVyZmFjZSBtb2RlcyBhcmUgZGVzY3JpYmVkIGJlbG93Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3QtMzI1LVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0OjMyNjpgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgYFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0LTMyNy0gICAgVGhpcyBpcyB0aGUgUGVudGEgU0dNSUkgbW9kZSwgaXQgaXMgc2ltaWxhciB0byBRU0dNSUkgYnV0IGl0IGNvbWJpbmVzIDVcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jPTE1OT1pbnQgcGh5X2ludGVyZmFjZV9udW1fcG9ydHMocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMS1cXHRcXHRyZXR1cm4gNDtcXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzoyMDI6XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMy1cXHRcXHRyZXR1cm4gNTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jPTI5ND11bnNpZ25lZCBsb25nIHBoeV9jYXBzX2Zyb21faW50ZXJmYWNlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTAtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM6MzExOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTItXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzg9c3RhdGljIGludCBwaHlsaW5rX2ludGVyZmFjZV9tYXhfc3BlZWQocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU5LVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjYwOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MS1cXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTc3ND1zdGF0aWMgaW50IHBoeWxpbmtfcGFyc2VfbW9kZShzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTgwOC1cXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjgwOTpcXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MTAtXFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDItXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDQzOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDQtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MTU1PXZvaWQgcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQxODYtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0MTg3OlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQxODgtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MjUxPWludCBwaHlsaW5rX21paV9jMjJfcGNzX2VuY29kZV9hZHZlcnRpc2VtZW50KHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQyNjctXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0MjY4OlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQyNjktXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTQ5MD1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfcHJvYmVfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU0OS1cXHRcXHRpZiAoIXN0cmNhc2VjbXAocGFja2FnZV9tb2RlX25hbWUsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU1MDpcXHRcXHRcXHRcXHRwaHlfbW9kZXMoUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSkpKVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTE6XFx0XFx0XFx0cHJpdi1cXHUwMDNlcGFja2FnZV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTUyLVxcdFxcdGVsc2UgaWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTU2Mj1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfY29uZmlnX2luaXRfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4NS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTg2OlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTg3LVxcdGRlZmF1bHQ6XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTUzPWV4dGVybiBjb25zdCBpbnQgcGh5X2Jhc2ljX3BvcnRzX2FycmF5WzNdO1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaC04OS0gKiBAUEhZX0lOVEVSRkFDRV9NT0RFX01PQ0E6IE11bHRpbWVkaWEgb3ZlciBDb2F4XFxuaW5jbHVkZS9saW51eC9waHkuaDo5MDogKiBAUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTogUGVudGEgU0dNSUlcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTkxLSAqIEBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOiBRdWFkIFNHTUlJXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTExND10eXBlZGVmIGVudW0ge1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaC0xMzItXFx0UEhZX0lOVEVSRkFDRV9NT0RFX01PQ0EsXFxuaW5jbHVkZS9saW51eC9waHkuaDoxMzM6XFx0UEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSxcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTEzNC1cXHRQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJLFxcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaD0yMTA9c3RhdGljIGlubGluZSBjb25zdCBjaGFyICpwaHlfbW9kZXMocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtMjQ4LVxcdFxcdHJldHVybiBcXFwibW9jYVxcXCI7XFxuaW5jbHVkZS9saW51eC9waHkuaDoyNDk6XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbmluY2x1ZGUvbGludXgvcGh5LmgtMjUwLVxcdFxcdHJldHVybiBcXFwicHNnbWlpXFxcIjtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTc5MD1zdGF0aWMgaW5saW5lIGludCBwaHlsaW5rX2dldF9saW5rX3RpbWVyX25zKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03OTMtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg6Nzk0OlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03OTUtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxNjoxNjo0Mi4zODExNjIxOThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk2MDA1NDQ4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaW4gYSBWaXJ0dWFsaXplZCBDb250ZXh0KipcblxuT2theSwgc28gSSdtIGZvY3VzaW5nIG9uIHRoaXMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGNvbnN0YW50LCBhbmQgSSBzZWUgaXQncyBvbmx5IGV4cGxpY2l0bHkgdXNlZCB3aXRoaW4gYHFjYTgwN3guY2AuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgY29kZSBwYXRoLCBzcGVjaWZpY2FsbHkgdGhlIG5ld2x5IGFkZGVkIGNhc2VzIGZvciB0aGlzIG1vZGUsIGNhbiBldmVuIGJlICpyZWFjaGVkKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBJdCBzZWVtcyB1bmxpa2VseSwgcmlnaHQ/IElmIG5vIHZpcnR1YWwgbmV0d29yayBkcml2ZXIgbWFrZXMgdXNlIG9mIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCwgdGhlbiB0aG9zZSBuZXcgY2FzZSBicmFuY2hlcyBhcmUgZWZmZWN0aXZlbHkgZGVhZCBjb2RlLCBhdCBsZWFzdCBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQuXG5cblRoZSBuZXh0IHRoaW5nIEknbSBjb25zaWRlcmluZyBpcyB3aGV0aGVyIGBwaHlfaW50ZXJmYWNlX3RgIGlzIGV2ZW4gc29tZXRoaW5nIHRoYXQncyBjb25maWd1cmFibGUgZnJvbSB1c2Vyc3BhY2UsIGVpdGhlciB0aHJvdWdoIG5ldGxpbmsgb3IgZXRodG9vbC4gVHlwaWNhbGx5LCB0aGF0IHR5cGUgb2YgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24gaXMgYSBoYXJkd2FyZSBwcm9wZXJ0eSBhbmQgaXMgbWFuYWdlZCBkZWVwZXIgZG93biwgb2Z0ZW4gc2V0IGR1cmluZyBkcml2ZXIgaW5pdGlhbGl6YXRpb24uIERldmljZSB0cmVlIG92ZXJsYXlzIG1pZ2h0IG9mZmVyIGEgd29ya2Fyb3VuZCBvciBzcGVjaWZpYyBkZWJ1Z2ZzL3N5c2ZzIGludGVyZmFjZXMgKmNvdWxkKiBwb3RlbnRpYWxseSBhbGxvdyBzb21lIGNvbnRyb2wsIGJ1dCBldmVuIHRoYXQgcmVxdWlyZXMgYSBkcml2ZXIgdG8gaGF2ZSBpbXBsZW1lbnRlZCB0aGF0IGtpbmQgb2YgdXNlci1zcGFjZSBpbnRlcmZhY2UuXG5cbldhaXQsIGxvb2tpbmcgYXQgdGhlIGNvbW1vbiB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlcyBsaWtlIGB0dW5gLCBgdmV0aGAsIGFuZCBgbmV0ZGV2c2ltYCwgSSdtIHJlYWxpemluZyB0aGV5IGRvbid0IGV2ZW4gdXNlIGBwaHlsaW5rYC4gQW5kIHNwZWNpZmljYWxseSwgYG5ldGRldnNpbWAgaXNuJ3QgdXNpbmcgYHBoeWxpbmtgIGF0IGFsbC4gVGhpcyBmdXJ0aGVyIHJlaW5mb3JjZXMgbXkgaW5pdGlhbCBzdXNwaWNpb24gdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggY29kZSB0aGF0J3MgZnVuZGFtZW50YWxseSBoYXJkd2FyZS1kZXBlbmRlbnQgYW5kIHRoZXJlZm9yZSwgcG90ZW50aWFsbHkgdW5yZWFjaGFibGUgaW4gYSBmdWxseSB2aXJ0dWFsaXplZCBzZXR0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjg4NSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxNjoxNjo0OC4zNDEyMTk1MDdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MzgyNzY0NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5bGlua19jcmVhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdD03ND10aGlzIGRvY3VtZW50YXRpb24uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTM2My1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0OjM2NDpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBub2RlLCBwaHlfbW9kZSwgXFx1MDAyNnBoeWxpbmtfb3BzKTtcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTM2NS1cXHRpZiAoSVNfRVJSKHBoeWxpbmspKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM9MTEyOD1zdGF0aWMgaW50IGFsdGVyYV90c2VfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNDE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYzoxNDE2OlxcdHByaXYtXFx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cHJpdi1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE0MTctXFx0XFx0XFx0XFx0ICAgICAgIG9mX2Z3bm9kZV9oYW5kbGUocHJpdi1cXHUwMDNlZGV2aWNlLVxcdTAwM2VvZl9ub2RlKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9MTA3ND1zdGF0aWMgaW50IGFnNzF4eF9waHlsaW5rX3NldHVwKHN0cnVjdCBhZzcxeHggKmFnKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMTA4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTEwOTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmFnLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgYWctXFx1MDAzZXBkZXYtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMTEwLVxcdFxcdFxcdFxcdCBhZy1cXHUwMDNlcGh5X2lmX21vZGUsIFxcdTAwMjZhZzcxeHhfcGh5bGlua19tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9MTAyMz1zdGF0aWMgaW50IG1hY2JfbWlpX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMDg2OlxcdGJwLVxcdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmJwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgYnAtXFx1MDAzZXBkZXYtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDg3LVxcdFxcdFxcdFxcdCAgICAgYnAtXFx1MDAzZXBoeV9pbnRlcmZhY2UsIFxcdTAwMjZtYWNiX3BoeWxpbmtfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmM9MjAxPXN0YXRpYyBpbnQgZHBhYV9uZXRkZXZfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0X2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmMtMjc0LVxcdG1hY19kZXYtXFx1MDAzZXVwZGF0ZV9zcGVlZCA9IGRwYWFfZXRoX2Nncl9zZXRfc3BlZWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYzoyNzU6XFx0bWFjX2Rldi1cXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZtYWNfZGV2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI3Ni1cXHRcXHRcXHRcXHRcXHQgIGRldl9md25vZGUobWFjX2Rldi1cXHUwMDNlZGV2KSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYz01NjA9aW50IGRwYWEyX21hY19jb25uZWN0KHN0cnVjdCBkcGFhMl9tYWMgKm1hYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy02MjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jOjYyNTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNm1hYy1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNi1cXHRcXHRcXHRcXHQgZHBtYWNfbm9kZSwgbWFjLVxcdTAwM2VpZl9tb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTk3MT1zdGF0aWMgaW50IGVuZXRjNF9saW5rX2luaXQoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05ODktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjk5MDpcXHRlcnIgPSBlbmV0Y19waHlsaW5rX2NyZWF0ZShwcml2LCBub2RlLCBcXHUwMDI2ZW5ldGNfcGxfbWFjX29wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5MS1cXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5Mi1cXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBjcmVhdGUgcGh5bGlua1xcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjk5MzpcXHRcXHRnb3RvIGVycl9waHlsaW5rX2NyZWF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTk0LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjk5ODplcnJfcGh5bGlua19jcmVhdGU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5OS1cXHRlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9ODQ3PXN0YXRpYyBpbnQgZW5ldGNfcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05MjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6OTMwOlxcdGVyciA9IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHByaXYsIG5vZGUsIFxcdTAwMjZlbmV0Y19tYWNfcGh5bGlua19vcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTkzMS1cXHRpZiAoZXJyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjkzMjpcXHRcXHRnb3RvIGVycl9waHlsaW5rX2NyZWF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05MzMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05NDEtXFx0ZW5ldGNfcGh5bGlua19kZXN0cm95KHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjk0MjplcnJfcGh5bGlua19jcmVhdGU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTQzLVxcdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM9MzEyPUVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX21kaW9idXNfZGVzdHJveSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTMxMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MzE0OmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTMxNS1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqb3BzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTMzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MzM4OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cGYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBvZl9md25vZGVfaGFuZGxlKG5vZGUpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zMzktXFx0XFx0XFx0XFx0IHBmLVxcdTAwM2VpZl9tb2RlLCBvcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTM0OC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjM0OTpFWFBPUlRfU1lNQk9MX0dQTChlbmV0Y19waHlsaW5rX2NyZWF0ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTM1MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaD0xMj12b2lkIGVuZXRjX21kaW9idXNfZGVzdHJveShzdHJ1Y3QgZW5ldGNfcGYgKnBmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmg6MTM6aW50IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmgtMTQtXFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgKm9wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYz04NTM9c3RhdGljIGludCBmc19lbmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmMtOTMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jOjkzMzpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmZlcC1cXHUwMDNlcGh5bGlua19jb25maWcsIGRldl9md25vZGUoZmVwLVxcdTAwM2VkZXYpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jLTkzNC1cXHRcXHRcXHRcXHQgcGh5X21vZGUsIFxcdTAwMjZmc19lbmV0X3BoeWxpbmtfbWFjX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYz0zNDE5PXN0YXRpYyBpbnQgdWNjX2dldGhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSogb2ZkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYy0zNTczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jOjM1NzQ6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZ1Z2V0aC1cXHUwMDNlcGh5bGlua19jb25maWcsIGRldl9md25vZGUoXFx1MDAyNmRldi1cXHUwMDNlZGV2KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYy0zNTc1LVxcdFxcdFxcdFxcdCBwaHlfaW50ZXJmYWNlLCBcXHUwMDI2dWdldGhfbWFjX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jPTU0ODA9c3RhdGljIGludCBtdm5ldGFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmMtNTU5OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jOjU1OTk6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwcC1cXHUwMDNlcGh5bGlua19jb25maWcsIHBkZXYtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYy01NjAwLVxcdFxcdFxcdFxcdCBwaHlfbW9kZSwgXFx1MDAyNm12bmV0YV9waHlsaW5rX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYz02ODQwPXN0YXRpYyBpbnQgbXZwcDJfcG9ydF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmMtNzE0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYzo3MTQ4OlxcdFxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cG9ydC1cXHUwMDNlcGh5bGlua19jb25maWcsIHBvcnRfZndub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTcxNDktXFx0XFx0XFx0XFx0XFx0IHBoeV9tb2RlLCBcXHUwMDI2bXZwcDJfcGh5bGlua19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmM9MzcwPXN0YXRpYyBpbnQgcHJlc3RlcmFfcG9ydF9zZnBfYmluZChzdHJ1Y3QgcHJlc3RlcmFfcG9ydCAqcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jLTQxNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYzo0MTc6XFx0XFx0cGh5X2xpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cG9ydC1cXHUwMDNlcGh5X2NvbmZpZywgZndub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jLTQxOC1cXHRcXHRcXHRcXHRcXHQgIFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM9NDgyMz1zdGF0aWMgaW50IG10a19hZGRfbWFjKHN0cnVjdCBtdGtfZXRoICpldGgsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTQ5NjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYzo0OTY4OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2bWFjLVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTQ5NjktXFx0XFx0XFx0XFx0IG9mX2Z3bm9kZV9oYW5kbGUobWFjLVxcdTAwM2VvZl9ub2RlKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM9NzQ2PXN0cnVjdCBuZXRfZGV2aWNlICpmYm5pY19uZXRkZXZfYWxsb2Moc3RydWN0IGZibmljX2RldiAqZmJkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy04MzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYzo4MzU6XFx0aWYgKGZibmljX3BoeWxpbmtfY3JlYXRlKG5ldGRldikpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jLTgzNi1cXHRcXHRmcmVlX25ldGRldihuZXRkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaD0xMTE9aW50IGZibmljX3BoeWxpbmtfZ2V0X2ZlY3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaC0xMTItXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2ZlY3BhcmFtICpmZWNwYXJhbSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaDoxMTM6aW50IGZibmljX3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmgtMTE0LXZvaWQgZmJuaWNfcGh5bGlua19kZXN0cm95KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM9MTc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGZibmljX3BoeWxpbmtfbWFjX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE4Ni0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYzoxODc6ICogZmJuaWNfcGh5bGlua19jcmVhdGUgLSBQaHlsaW5rIGRldmljZSBjcmVhdGlvblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE4OC0gKiBAbmV0ZGV2OiBOZXR3b3JrIERldmljZSBzdHJ1Y3QgdG8gYXR0YWNoIHBoeWxpbmsgZGV2aWNlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0xOTYtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jOjE5NzppbnQgZmJuaWNfcGh5bGlua19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0xOTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMjMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jOjIzMjpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmZibi1cXHUwMDNlcGh5bGlua19jb25maWcsIE5VTEwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMjMzLVxcdFxcdFxcdFxcdCBmYm5pY19waHlsaW5rX3NlbGVjdF9pbnRlcmZhY2UoZmJuLVxcdTAwM2VhdWkpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTMxNDI9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgbGFuNzQzeF9waHlsaW5rX21hY19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzE0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzE1MDpzdGF0aWMgaW50IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzE1MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzE5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzE5MzpcXHRwbCA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgTlVMTCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzE5NC1cXHRcXHRcXHQgICAgYWRhcHRlci1cXHUwMDNlcGh5X2ludGVyZmFjZSwgXFx1MDAyNmxhbjc0M3hfcGh5bGlua19tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zNjY0PXN0YXRpYyBpbnQgbGFuNzQzeF9wY2lkZXZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzcyMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzcyNDpcXHRyZXQgPSBsYW43NDN4X3BoeWxpbmtfY3JlYXRlKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNzI1LVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYz03OTE9c3RhdGljIGludCBsYW45NjZ4X3Byb2JlX3BvcnQoc3RydWN0IGxhbjk2NnggKmxhbjk2NngsIHUzMiBwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmMtODU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jOjg1NjpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBvcnQtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTg1Ny1cXHRcXHRcXHRcXHQgcG9ydG5wLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jPTMxMj1zdGF0aWMgaW50IHNwYXJ4NV9jcmVhdGVfcG9ydChzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYzozODk6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZzcHg1X3BvcnQtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYy0zOTAtXFx0XFx0XFx0XFx0IG9mX2Z3bm9kZV9oYW5kbGUoY29uZmlnLVxcdTAwM2Vub2RlKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jPTE3NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgb2NlbG90X3BoeWxpbmtfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTc3OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxNzgwOnN0YXRpYyBpbnQgb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IG9jZWxvdCAqb2NlbG90LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xNzgxLVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqcG9ydG5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTgyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxODIxOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cHJpdi1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTgyMi1cXHRcXHRcXHRcXHQgb2ZfZndub2RlX2hhbmRsZShwb3J0bnApLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM9MTg0Mz1pbnQgb2NlbG90X3Byb2JlX3BvcnQoc3RydWN0IG9jZWxvdCAqb2NlbG90LCBpbnQgcG9ydCwgc3RydWN0IHJlZ21hcCAqdGFyZ2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTg3OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxODgwOlxcdGVyciA9IG9jZWxvdF9wb3J0X3BoeWxpbmtfY3JlYXRlKG9jZWxvdCwgcG9ydCwgcG9ydG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODgxLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTEzNzA9c3RhdGljIGludCBzdG1tYWNfcGh5bGlua19zZXR1cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE0NjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoxNDYyOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIGRldl9md25vZGUocHJpdi1cXHUwMDNlZGV2aWNlKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE0NjMtXFx0XFx0XFx0XFx0IHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZXBoeV9pbnRlcmZhY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYz00NT1pbnQgdG40MF9waHlfcmVnaXN0ZXIoc3RydWN0IHRuNDBfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jLTYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jOjYzOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIFBIWV9JTlRFUkZBQ0VfTU9ERV9YQVVJLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jLTY0LVxcdFxcdFxcdFxcdCBcXHUwMDI2dG40MF9tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmM9Mjc1Nz1hbTY1X2Nwc3dfbnVzc19pbml0X3BvcnRfbmRldihzdHJ1Y3QgYW02NV9jcHN3X2NvbW1vbiAqY29tbW9uLCB1MzIgcG9ydF9pZHgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jLTI4NDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYzoyODQyOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cG9ydC1cXHUwMDNlc2xhdmUucGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYy0yODQzLVxcdFxcdFxcdFxcdCBvZl9md25vZGVfaGFuZGxlKHBvcnQtXFx1MDAzZXNsYXZlLnBvcnRfbnApLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jPTEzMD1zdGF0aWMgaW50IG5nYmVfcGh5bGlua19pbml0KHN0cnVjdCB3eCAqd3gpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmMtMTQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYzoxNTA6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgTlVMTCwgcGh5X21vZGUsIFxcdTAwMjZuZ2JlX21hY19vcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYy0xNTEtXFx0aWYgKElTX0VSUihwaHlsaW5rKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM9NDgyPWludCB0eGdiZV9waHlsaW5rX2luaXRfYW1sKHN0cnVjdCB0eGdiZSAqdHhnYmUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTUxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jOjUxMzpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBwaHlfbW9kZSwgXFx1MDAyNnR4Z2JlX21hY19vcHNfYW1sKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTUxNC1cXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYz0yNjg9c3RhdGljIGludCB0eGdiZV9waHlsaW5rX2luaXQoc3RydWN0IHR4Z2JlICp0eGdiZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmMtMjkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmM6MjkzOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIGZ3bm9kZSwgcGh5X21vZGUsIFxcdTAwMjZ0eGdiZV9tYWNfb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5NC1cXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz0yNzk1PXN0YXRpYyBpbnQgYXhpZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzExODpcXHRscC1cXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZscC1cXHUwMDNlcGh5bGlua19jb25maWcsIHBkZXYtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTE5LVxcdFxcdFxcdFxcdCAgICAgbHAtXFx1MDAzZXBoeV9tb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTIyLVxcdFxcdHJldCA9IFBUUl9FUlIobHAtXFx1MDAzZXBoeWxpbmspO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzEyMzpcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJwaHlsaW5rX2NyZWF0ZSBlcnJvciAoJWkpXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzEyNC1cXHRcXHRnb3RvIGNsZWFudXBfbWRpbztcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NTE2PXN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9tYWNfYW5kX3BjcyhzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTUzMS1cXHRpZiAocGNzKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo1MzI6XFx0XFx0LyogVGhlIFBDUywgaWYgcHJlc2VudCwgbXVzdCBiZSBzZXR1cCBiZWZvcmUgcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNTMzLVxcdFxcdCAqIGhhcyBiZWVuIGNhbGxlZC4gSWYgdGhlIG9wcyBpcyBub3QgaW5pdGlhbGlzZWQsIHByaW50IGFuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTEwMzk9c3RhdGljIGVudW0gaW5iYW5kX3R5cGUgcGh5bGlua19nZXRfaW5iYW5kX3R5cGUocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA3MS0gKiBwaHlsaW5rX3Bjc19uZWdfbW9kZSgpIC0gaGVscGVyIHRvIGRldGVybWluZSBQQ1MgaW5iYW5kIG1vZGVcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwNzI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDczLSAqIEBwY3M6IGEgcG9pbnRlciB0byBcXHUwMDI2c3RydWN0IHBoeWxpbmtfcGNzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE3Njk9c3RhdGljIGludCBwaHlsaW5rX3JlZ2lzdGVyX3NmcChzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3OTMtICogcGh5bGlua19zZXRfZml4ZWRfbGluaygpIC0gc2V0IHRoZSBmaXhlZCBsaW5rXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNzk0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc5NS0gKiBAc3RhdGU6IGEgcG9pbnRlciB0byBhIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE4MzE9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zZXRfZml4ZWRfbGluayk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4MzMtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODM0OiAqIHBoeWxpbmtfY3JlYXRlKCkgLSBjcmVhdGUgYSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODM1LSAqIEBjb25maWc6IGEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IFxcdTAwMjZzdHJ1Y3QgcGh5bGlua19jb25maWdcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg0OC0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4NDk6c3RydWN0IHBoeWxpbmsgKnBoeWxpbmtfY3JlYXRlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg1MC1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTkzNi19XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTM3OkVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfY3JlYXRlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MzgtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NDAtICogcGh5bGlua19kZXN0cm95KCkgLSBjbGVhbnVwIGFuZCBkZXN0cm95IHRoZSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTQxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk0Mi0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xOTU3PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZGVzdHJveSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjAtICogcGh5bGlua19leHBlY3RzX3BoeSgpIC0gRGV0ZXJtaW5lIGlmIHBoeWxpbmsgZXhwZWN0cyBhIHBoeSB0byBiZSBhdHRhY2hlZFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTk2MTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjItICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjIwNj1zdGF0aWMgaW50IHBoeWxpbmtfYXR0YWNoX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyMjYtICogcGh5bGlua19jb25uZWN0X3BoeSgpIC0gY29ubmVjdCBhIFBIWSB0byB0aGUgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjIyNzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyMjgtICogQHBoeTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlfZGV2aWNlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMjYwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfY29ubmVjdF9waHkpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjYzLSAqIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKSAtIGNvbm5lY3QgdGhlIFBIWSBzcGVjaWZpZWQgaW4gdGhlIERUIG1vZGUuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjY0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI2NS0gKiBAZG46IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZGV2aWNlX25vZGUuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNzk9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19vZl9waHlfY29ubmVjdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyODItICogcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QoKSAtIGNvbm5lY3QgdGhlIFBIWSBzcGVjaWZpZWQgaW4gdGhlIGZ3bm9kZS5cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyODM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjg0LSAqIEBmd25vZGU6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZndub2RlX2hhbmRsZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjMzOD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDItICogICBpbnN0YW5jZS5cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIzNDM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzQ0LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzNzM9c3RhdGljIHZvaWQgcGh5bGlua19saW5rX2NoYW5nZWQoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIHVwLCBjb25zdCBjaGFyICp3aGF0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzgyLSAqIHBoeWxpbmtfbWFjX2NoYW5nZSgpIC0gbm90aWZ5IHBoeWxpbmsgb2YgYSBjaGFuZ2UgaW4gTUFDIHN0YXRlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzgzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM4NC0gKiBAdXA6IGluZGljYXRlcyB3aGV0aGVyIHRoZSBsaW5rIGlzIGN1cnJlbnRseSB1cC5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjQxNT1zdGF0aWMgaXJxcmV0dXJuX3QgcGh5bGlua19saW5rX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQyNS0gKiBwaHlsaW5rX3N0YXJ0KCkgLSBzdGFydCBhIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0MjY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDI3LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0ODg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zdGFydCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0OTEtICogcGh5bGlua19zdG9wKCkgLSBzdG9wIGEgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQ5MjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0OTMtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjUyMj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N0b3ApO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTI1LSAqIHBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2soKSAtIGJsb2NrIFBIWSBhYmlsaXR5IHRvIHN0b3AgcmVjZWl2ZSBjbG9jayBpbiBMUElcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI1MjY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTI3LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1NTE9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19yeF9jbGtfc3RvcF9ibG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NTQtICogcGh5bGlua19yeF9jbGtfc3RvcF91bmJsb2NrKCkgLSB1bmJsb2NrIFBIWSBhYmlsaXR5IHRvIHN0b3AgcmVjZWl2ZSBjbG9ja1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjU1NTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NTYtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjU5Mz1zdGF0aWMgYm9vbCBwaHlsaW5rX3BoeV9wbV9zcGVlZF9jdHJsKHN0cnVjdCBwaHlsaW5rICpwbClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjYwMC0gKiBwaHlsaW5rX3N1c3BlbmQoKSAtIGhhbmRsZSBhIG5ldHdvcmsgZGV2aWNlIHN1c3BlbmQgZXZlbnRcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2MDE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjAyLSAqIEBtYWNfd29sOiB0cnVlIGlmIHRoZSBNQUMgbmVlZHMgdG8gcmVjZWl2ZSBwYWNrZXRzIGZvciBXYWtlLW9uLUxhblxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjUyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3VzcGVuZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2NTUtICogcGh5bGlua19wcmVwYXJlX3Jlc3VtZSgpIC0gcHJlcGFyZSB0byByZXN1bWUgYSBuZXR3b3JrIGRldmljZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjY1NjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2NTctICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjY3Nz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3ByZXBhcmVfcmVzdW1lKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY4MC0gKiBwaHlsaW5rX3Jlc3VtZSgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2UgcmVzdW1lIGV2ZW50XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjgxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY4Mi0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNzIwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcmVzdW1lKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjcyMy0gKiBwaHlsaW5rX2V0aHRvb2xfZ2V0X3dvbCgpIC0gZ2V0IHRoZSB3YWtlIG9uIGxhbiBwYXJhbWV0ZXJzIGZvciB0aGUgUEhZXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzI0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjcyNS0gKiBAd29sOiBhIHBvaW50ZXIgdG8gXFx1MDAyNnN0cnVjdCBldGh0b29sX3dvbGluZm8gdG8gaG9sZCB0aGUgcmVhZCBwYXJhbWV0ZXJzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI3NTc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2dldF93b2wpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzYwLSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfd29sKCkgLSBzZXQgd2FrZSBvbiBsYW4gcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjc2MTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3NjItICogQHdvbDogYSBwb2ludGVyIHRvIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF93b2xpbmZvIGZvciB0aGUgZGVzaXJlZCBwYXJhbWV0ZXJzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI4ODk9c3RhdGljIHZvaWQgcGh5bGlua19nZXRfa3NldHRpbmdzKGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTA0LSAqIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3NfZ2V0KCkgLSBnZXQgdGhlIGN1cnJlbnQgbGluayBzZXR0aW5nc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjkwNTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5MDYtICogQGtzZXQ6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyB0byBob2xkIGxpbmsgc2V0dGluZ3NcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjk1Nz1zdGF0aWMgYm9vbCBwaHlsaW5rX3ZhbGlkYXRlX3Bjc19pbmJhbmRfYXV0b25lZyhzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5NzgtICogcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQoKSAtIHNldCB0aGUgbGluayBzZXR0aW5nc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjk3OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5ODAtICogQGtzZXQ6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyBmb3IgdGhlIGRlc2lyZWQgbW9kZXNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzE0NT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNDgtICogcGh5bGlua19ldGh0b29sX253YXlfcmVzZXQoKSAtIHJlc3RhcnQgbmVnb3RpYXRpb25cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxNDk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTUwLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMxNzA9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX253YXlfcmVzZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTczLSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSgpIC0gZ2V0IHRoZSBjdXJyZW50IHBhdXNlIHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxNzQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTc1LSAqIEBwYXVzZTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzE4Nj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X3BhdXNlcGFyYW0pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTg5LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSgpIC0gc2V0IHRoZSBjdXJyZW50IHBhdXNlIHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxOTA6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTkxLSAqIEBwYXVzZTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI3Mj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMjc2LSAqICAgY291bnRlclxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzI3NzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKCkuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMjc4LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMyOTU9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19nZXRfZWVlX2Vycik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyOTgtICogcGh5bGlua19ldGh0b29sX2dldF9lZWUoKSAtIHJlYWQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzI5OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMDAtICogQGVlZTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX2tlZWUgZm9yIHRoZSByZWFkIHBhcmFtZXRlcnNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzMyMT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X2VlZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMjQtICogcGh5bGlua19ldGh0b29sX3NldF9lZWUoKSAtIHNldCB0aGUgZW5lcmd5IGVmZmljaWVudCBldGhlcm5ldCBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMzI1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzMyNi0gKiBAZWVlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIGRlc2lyZWQgcGFyYW1ldGVyc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNDk1PXN0YXRpYyBpbnQgcGh5bGlua19taWlfd3JpdGUoc3RydWN0IHBoeWxpbmsgKnBsLCB1bnNpZ25lZCBpbnQgcGh5X2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTEzLSAqIHBoeWxpbmtfbWlpX2lvY3RsKCkgLSBnZW5lcmljIG1paSBpb2N0bCBpbnRlcmZhY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM1MTQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTE1LSAqIEBpZnI6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgaWZyZXEgZm9yIHNvY2tldCBpb2N0bHNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzU4OD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9pb2N0bCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1OTItICogICBsaW5rIHBhcnRuZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTkzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzU5NC0gKiBAc3luYzogcGVyZm9ybSBhY3Rpb24gc3luY2hyb25vdXNseVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNjEzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3BlZWRfZG93bik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM2MTctICogICBwaHlsaW5rX3NwZWVkX2Rvd24oKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzYxODogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM2MTktICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDM3Mj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9jNDVfcGNzX2dldF9zdGF0ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzNzYtICpcXHRcXHRcXHRcXHQgd2hpY2ggbG9zZXMgc3RhdGVcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQzNzc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzc4LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQzOTM9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19yZXBsYXlfbGlua19iZWdpbik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzOTctICpcXHRcXHRcXHQgICAgICAgd2hpY2ggbG9zdCBzdGF0ZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDM5ODogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzOTktICpcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03OTk9c3RhdGljIGludCBheDg4NzcyX3BoeWxpbmtfc2V0dXAoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgxOS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODIwOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cHJpdi1cXHUwMDNlcGh5bGlua19jb25maWcsIGRldi1cXHUwMDNlbmV0LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MjEtXFx0XFx0XFx0XFx0IHBoeV9pZl9tb2RlLCBcXHUwMDI2YXg4ODc3Ml9waHlsaW5rX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0yNzk5PXN0YXRpYyBpbnQgbGFuNzh4eF9waHlsaW5rX3NldHVwKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODM4LVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjgzOTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUocGMsIGRldi1cXHUwMDNlbmV0LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjg0MC1cXHRcXHRcXHRcXHQgZGV2LVxcdTAwM2VpbnRlcmZhY2UsIFxcdTAwMjZsYW43OHh4X3BoeWxpbmtfbWFjX29wcyk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaD03MTg9aW50IHBjc19wcmVfaW5pdChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MjEtXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg6NzIyOnN0cnVjdCBwaHlsaW5rICpwaHlsaW5rX2NyZWF0ZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKixcXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MjMtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICosXFxuLS1cXG5uZXQvZHNhL3BvcnQuYz0xNjExPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGRzYV9wb3J0X3BoeWxpbmtfbWFjX29wcyA9IHtcXG4tLVxcbm5ldC9kc2EvcG9ydC5jLTE2MTYtXFxubmV0L2RzYS9wb3J0LmM6MTYxNzppbnQgZHNhX3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IGRzYV9wb3J0ICpkcClcXG5uZXQvZHNhL3BvcnQuYy0xNjE4LXtcXG4tLVxcbm5ldC9kc2EvcG9ydC5jLTE2NDYtXFxubmV0L2RzYS9wb3J0LmM6MTY0NzpcXHRwbCA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZkcC1cXHUwMDNlcGxfY29uZmlnLCBvZl9md25vZGVfaGFuZGxlKGRwLVxcdTAwM2VkbiksIG1vZGUsXFxubmV0L2RzYS9wb3J0LmMtMTY0OC1cXHRcXHRcXHQgICAgbWFjX29wcyk7XFxuLS1cXG5uZXQvZHNhL3BvcnQuYz0xNjY1PXN0YXRpYyBpbnQgZHNhX3NoYXJlZF9wb3J0X3BoeWxpbmtfcmVnaXN0ZXIoc3RydWN0IGRzYV9wb3J0ICpkcClcXG4tLVxcbm5ldC9kc2EvcG9ydC5jLTE2NzMtXFxubmV0L2RzYS9wb3J0LmM6MTY3NDpcXHRlcnIgPSBkc2FfcG9ydF9waHlsaW5rX2NyZWF0ZShkcCk7XFxubmV0L2RzYS9wb3J0LmMtMTY3NS1cXHRpZiAoZXJyKVxcbi0tXFxubmV0L2RzYS9wb3J0Lmg9MTAwPWludCBkc2FfcG9ydF9tcnBfZGVsX3Jpbmdfcm9sZShjb25zdCBzdHJ1Y3QgZHNhX3BvcnQgKmRwLFxcbm5ldC9kc2EvcG9ydC5oLTEwMS1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHN3aXRjaGRldl9vYmpfcmluZ19yb2xlX21ycCAqbXJwKTtcXG5uZXQvZHNhL3BvcnQuaDoxMDI6aW50IGRzYV9wb3J0X3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBkc2FfcG9ydCAqZHApO1xcbm5ldC9kc2EvcG9ydC5oLTEwMy12b2lkIGRzYV9wb3J0X3BoeWxpbmtfZGVzdHJveShzdHJ1Y3QgZHNhX3BvcnQgKmRwKTtcXG4tLVxcbm5ldC9kc2EvdXNlci5jPTI2NTQ9c3RhdGljIGludCBkc2FfdXNlcl9waHlfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKnVzZXJfZGV2KVxcbi0tXFxubmV0L2RzYS91c2VyLmMtMjY3My1cXG5uZXQvZHNhL3VzZXIuYzoyNjc0OlxcdHJldCA9IGRzYV9wb3J0X3BoeWxpbmtfY3JlYXRlKGRwKTtcXG5uZXQvZHNhL3VzZXIuYy0yNjc1LVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDE2OjE2OjQ5Ljc3OTUwMDEyNVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjA1MDY5MDI3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgQ29kZSBQYXRoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgY2FzZSBhbmQgaXQncyBmbGFnZ2VkIGFzIGEgY29uY2Vybi4gSXQgc2VlbXMgdGhpcyBtb2RlIGlzICpvbmx5KiB1c2VkIHdpdGhpbiB0aGUgYHFjYTgwN3guY2AgUEhZIGRyaXZlci4gVGhlIGludGVyZXN0aW5nIHBhcnQgaXMgdGhhdCBgcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGVgIGFuZCBgcGh5bGlua19taWlfYzIyX3Bjc19lbmNvZGVfYWR2ZXJ0aXNlbWVudGAgYXJlIGV4cG9ydGVkIGZ1bmN0aW9ucywgYW5kIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlcmUncyBhbnkgd2F5IGEgdXNlciwgb3IgYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgY2FuIGFjdHVhbGx5IHRyaWdnZXIgdGhpcy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjb3VsZCBhIHZpcnR1YWwgZHJpdmVyIHBvdGVudGlhbGx5IGNhbGwgdGhlc2U/IEJ1dCwgbm8sIG5vIHZpcnR1YWwgZHJpdmVyICpkaXJlY3RseSogY2FsbHMgdGhlc2UgZnVuY3Rpb25zLiBDb3VsZCBhIHVzZXIgc29tZWhvdyB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoPyBQZXJoYXBzIGlmIGEgdXNlciB3ZXJlIHRvIGNvbnN0cnVjdCBhIGR1bW15IE1ESU8gYnVzLCByZWdpc3RlciBhIGBxY2E4MDd4YCBQSFkgb24gaXQsIGFuZCB0aGVuIGNvbm5lY3QgdGhpcyB0byBhIE1BQyBkcml2ZXIgdGhhdCB1dGlsaXplcyBgcGh5bGlua2AsIGxpa2UgdGhlIGBsYW43OHh4YCBVU0IgZHJpdmVyPyBCdXQgdGhlbiwgaGFuZyBvbiwgdGhlIGBsYW43OHh4YCBkcml2ZXIgKmhhcmRjb2RlcyogYFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJYC4gQW5kIHRoZSBgYXg4ODc3MmAgZHJpdmVyLCB0b28sIGp1c3QgaGFyZGNvZGVzIGVpdGhlciBgUEhZX0lOVEVSRkFDRV9NT0RFX01JSWAgb3IgYFBIWV9JTlRFUkZBQ0VfTU9ERV9STUlJYC4gVGhpcyBpcyBhIGRlYWQgZW5kLiBJbiBvdGhlciB3b3JkcywgdGhlc2UgZHJpdmVycyB3aWxsIG5ldmVyIGFsbG93IHRoZSBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgY2FzZSB0byBiZSBoaXQuXG5cbk9rYXksIHNvIHdoYXQgYWJvdXQgKm90aGVyKiBkcml2ZXJzPyBJcyB0aGVyZSBldmVuICphbnkqIGRyaXZlciB0aGF0IGFsbG93cyBzZXR0aW5nIGBwaHlfaW50ZXJmYWNlX3RgIGZyb20gdXNlcnNwYWNlPyBObywgbm90IHR5cGljYWxseS4gVGhpcyBpbnRlcmZhY2Ugc2V0dGluZyBpcyB1c3VhbGx5IGRldGVybWluZWQgYnkgZmlybXdhcmUgKERUL0FDUEkpIG9yIGl0J3MgaGFyZGNvZGVkIHdpdGhpbiB0aGUgZHJpdmVyIGl0c2VsZi5cblxuSW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nIGxpa2UgUUVNVSBvciBHQ0UsIGl0IGdldHMgZXZlbiB0cmlja2llci4gV2UgZ2VuZXJhbGx5IGRvbid0IGhhdmUgRGV2aWNlIFRyZWUgKERUKSBub2RlcyBmb3IgYXJiaXRyYXJ5IE1BQ3MsIHVubGVzcyB3ZSdyZSB1c2luZyBkZXZpY2UgdHJlZSBvdmVybGF5cywgd2hpY2ggc3l6a2FsbGVyICh3aGljaCBJJ20gYXNzdW1pbmcgaXMgdGhlIHRlc3QgZnJhbWV3b3JrIGJlaW5nIHVzZWQpIGRvZXNuJ3QgdHlwaWNhbGx5IGVtcGxveSBieSBkZWZhdWx0LCByaWdodD8gT3IgKmRvZXMqIHN5emthbGxlciB1c2UgdGhvc2Ugb3ZlcmxheXM/IChJdCdzIGNvbmZpZ3VyYWJsZSwgYnV0IEkgZG9uJ3QgdGhpbmsgaXQncyB0aGUgc3RhbmRhcmQgcHJhY3RpY2UuKVxuXG5XYWl0LCBJIG5lZWQgdG8gY29uc2lkZXIgYG5ldGxpbmtgLiBTeXprYWxsZXIgKmNhbiogdXNlIGBuZXRsaW5rYCB0byBjcmVhdGUgdmlydHVhbCBsaW5rcy4gQnV0LCBJIGtub3cgYHBoeWxpbmtgIGlzbid0IHVzZWQgYnkgdGhlIHVzdWFsIHN1c3BlY3RzIGxpa2UgYHZldGhgLCBgbWFjdmxhbmAsIGBpcHZsYW5gLCBvciBgdHVuYC4gVGhhdCBtZWFucyB0aGUgKm9ubHkqIHBsYXVzaWJsZSB3YXkgdG8gcmVhY2ggYHBoeWxpbmtgIGlzIHRocm91Z2ggVVNCIGRyaXZlcnMgbGlrZSBgbGFuNzh4eGAgb3IgYGFzaXhgLiBBbmQsIGFnYWluLCB0aG9zZSBkcml2ZXJzICpoYXJkY29kZSogdGhlIGludGVyZmFjZSBtb2RlLlxuXG5TbywgdGhlIGNvbmNsdXNpb24gSSdtIGxlYW5pbmcgdG93YXJkIGlzIHRoYXQgdGhpcyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgY2FzZSBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudHMgaXMgdmlydHVhbGx5IGltcG9zc2libGUgdG8gcmVhY2ggaW4gdGhlIHZpcnR1YWxpemVkIHRlc3RpbmcgZW52aXJvbm1lbnRzLlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2sgb25lIHRoaW5nOiBEb2VzIHRoZSBgaW50ZXJmYWNlYCBwYXJhbWV0ZXIsIGlzIGl0IGV2ZW4gcGFzc2VkIHRvIHRoZSBgcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGVgIGZ1bmN0aW9uPyBIbW0uIE5vLCB0aGUgYGludGVyZmFjZWAgaXMgKm5vdCogcGFzc2VkLiBPa2F5LCB0aW1lIHRvIHJlLWV4YW1pbmUgdGhhdCBwYXRjaCBhZ2Fpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUxMjksIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTY6MTc6MDEuODMwMTkyMjlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MDg2ODM5NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuYz0yMTM9c3RhdGljIHZvaWQgbXhsODYyeHhfcGNzX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1waHlsaW5rLmMtMjU3LVxcdFxcdCAgICAgICAoc3RhdGUtXFx1MDAzZWFuX2NvbXBsZXRlID8gQk1TUl9BTkVHQ09NUExFVEUgOiAwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtcGh5bGluay5jOjI1ODpcXHRcXHRwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdGF0ZSwgbmVnX21vZGUsIGJtc3IsXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuYy0yNTktXFx0XFx0XFx0XFx0XFx0XFx0IGxlMTZfdG9fY3B1KHN0LmxwYS5jbDM3KSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU3Mz1zdGF0aWMgdm9pZCBtYWNiX3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTgwLVxcdGxwYSA9IGdlbV9yZWFkbChicCwgUENTQU5MUEJBU0UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTgxOlxcdHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0YXRlLCBuZWdfbW9kZSwgYm1zciwgbHBhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU4Mi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BvcnQuYz0yODc9dm9pZCBsYW45NjZ4X3BvcnRfc3RhdHVzX2dldChzdHJ1Y3QgbGFuOTY2eF9wb3J0ICpwb3J0LCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BvcnQuYy0zMTYtXFx0XFx0bHBfYWR2ID0gREVWX1BDUzFHX0FORUdfU1RBVFVTX0xQX0FEVl9HRVQodmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BvcnQuYzozMTc6XFx0XFx0cGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RhdGUsIG5lZ19tb2RlLCBibXNyLCBscF9hZHYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcG9ydC5jLTMxOC1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3Bjcy5jPTY2PXN0YXRpYyB2b2lkIGR3bWFjX2ludGVncmF0ZWRfcGNzX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY3MuYy04My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNzLmM6ODQ6XFx0XFx0cGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RhdGUsIG5lZ19tb2RlLCBzdGF0dXMsIGxwYSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3Bjcy5jLTg1LVxcdH0gZWxzZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLW10ay1seW54aS5jPTEwOD1zdGF0aWMgdm9pZCBtdGtfcGNzX2x5bnhpX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbXRrLWx5bnhpLmMtMTE4LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbXRrLWx5bnhpLmM6MTE5OlxcdHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0YXRlLCBuZWdfbW9kZSxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLW10ay1seW54aS5jLTEyMC1cXHRcXHRcXHRcXHRcXHQgRklFTERfR0VUKFNHTUlJX0JNU1IsIGJtKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jPTExMDM9c3RhdGljIGludCB4cGNzX2dldF9zdGF0ZV9jMzdfMTAwMGJhc2V4KHN0cnVjdCBkd194cGNzICp4cGNzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMtMTEzMi1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYzoxMTMzOlxcdFxcdHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0YXRlLCBuZWdfbW9kZSwgYm1zciwgbHBhKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy0xMTM0LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDExNj1zdGF0aWMgdm9pZCBwaHlsaW5rX2RlY29kZV91c2dtaWlfd29yZChzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDE0MC0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQxNDE6ICogcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoKSAtIERlY29kZSBNQUMgUENTIHN0YXRlIGZyb20gTUlJIHJlZ2lzdGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDE0Mi0gKiBAc3RhdGU6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MTU0LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDE1NTp2b2lkIHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDE1Ni1cXHRcXHRcXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgbmVnX21vZGUsIHUxNiBibXNyLCB1MTYgbHBhKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MjAyLX1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQyMDM6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDIwNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDIyMD12b2lkIHBoeWxpbmtfbWlpX2MyMl9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBtZGlvX2RldmljZSAqcGNzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MjMyLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDIzMzpcXHRwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdGF0ZSwgbmVnX21vZGUsIGJtc3IsIGxwYSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MjM0LX1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTgxNj1zdGF0aWMgaW5saW5lIGJvb2wgcGh5bGlua19tYWNfaW1wbGVtZW50c19scGkoY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqb3BzKVxcbi0tXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtODIwLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjgyMTp2b2lkIHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTgyMi1cXHRcXHRcXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgbmVnX21vZGUsIHUxNiBibXNyLCB1MTYgbHBhKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTY6MTc6MDMuNzM4ODgwNTM1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg5NzQ0NTk3MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVjb2RpbmcgdGhlIFBTR01JSSBQdXp6bGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZWAgZnVuY3Rpb24sIGFuZCBpdCdzIHRha2luZyBhIGBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZWAuIFJpZ2h0LCBtYWtlcyBzZW5zZS4gTm93LCBkaXZpbmcgaW4sIHRoZXJlJ3MgYSBgc3dpdGNoYCBzdGF0ZW1lbnQgYmFzZWQgb24gYHN0YXRlLVx1MDAzZWludGVyZmFjZWAuIFRoYXQncyB0aGUga2V5LiBTbywgdGhlIGNvZGUgcGF0aCB3ZSdyZSBjb25jZXJuZWQgd2l0aCBpcyB0cmlnZ2VyZWQgd2hlbiBgc3RhdGUtXHUwMDNlaW50ZXJmYWNlYCBpcyBlcXVhbCB0byBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAuIEdvdCBpdC5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiB3aGVyZSBkb2VzIGBzdGF0ZS1cdTAwM2VpbnRlcmZhY2VgIGdldCBzZXQ/IEkga25vdyB0aGUgcGh5bGluayBjb3JlIGlzIHJlc3BvbnNpYmxlIGZvciB0aGF0LiBJdCBkZXRlcm1pbmVzIHRoZSBpbnRlcmZhY2UgbW9kZSBiYXNlZCBvbiB0aGUgaGFyZHdhcmUgY2FwYWJpbGl0aWVzIGFuZCB0aGUgc3lzdGVtIGNvbmZpZ3VyYXRpb24uIFRoZXJlZm9yZSBgc3RhdGUtXHUwMDNlaW50ZXJmYWNlYCBpcyBnb2luZyB0byBiZSBzZXQgdG8gYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgICpvbmx5KiBpZiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBhY3R1YWxseSAqc3VwcG9ydHMqIFBTR01JSSBhbmQgaXQncyBleHBsaWNpdGx5IGNvbmZpZ3VyZWQgdG8gdXNlIGl0LlxuXG5SaWdodCwgbm93LCBJIHNlZW0gdG8gcmVtZW1iZXIgdGhhdCB0aGUgYHFjYTgwN3guY2AgZHJpdmVyIGlzIHRoZSBvbmx5IG9uZSBJJ3ZlIHNlZW4gdGhhdCAqZXhwbGljaXRseSogdXNlcyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAuIEJ1dCBsZXQncyBiZSB0aG9yb3VnaCwgeW91IGNhbiBuZXZlciBiZSB0b28gY2FyZWZ1bC4gSSBzaG91bGQgcHJvYmFibHkganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0LCBqdXN0IHRvIG1ha2Ugc3VyZSBteSBhc3N1bXB0aW9uIGlzIGNvcnJlY3QuIEl0J3MgYWx3YXlzIGEgZ29vZCBpZGVhIHRvIHZlcmlmeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzgwMTYsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTY6MTc6MTIuNzEzMzQyNzExWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDM2MzUyMDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3Q9MjM4PVNvbWUgb2YgdGhlIGludGVyZmFjZSBtb2RlcyBhcmUgZGVzY3JpYmVkIGJlbG93Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3QtMzI1LVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0OjMyNjpgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgYFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0LTMyNy0gICAgVGhpcyBpcyB0aGUgUGVudGEgU0dNSUkgbW9kZSwgaXQgaXMgc2ltaWxhciB0byBRU0dNSUkgYnV0IGl0IGNvbWJpbmVzIDVcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jPTE1OT1pbnQgcGh5X2ludGVyZmFjZV9udW1fcG9ydHMocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMS1cXHRcXHRyZXR1cm4gNDtcXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzoyMDI6XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMy1cXHRcXHRyZXR1cm4gNTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jPTI5ND11bnNpZ25lZCBsb25nIHBoeV9jYXBzX2Zyb21faW50ZXJmYWNlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTAtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM6MzExOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTItXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzg9c3RhdGljIGludCBwaHlsaW5rX2ludGVyZmFjZV9tYXhfc3BlZWQocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU5LVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjYwOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MS1cXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTc3ND1zdGF0aWMgaW50IHBoeWxpbmtfcGFyc2VfbW9kZShzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTgwOC1cXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjgwOTpcXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MTAtXFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDItXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDQzOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDQtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MTU1PXZvaWQgcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQxODYtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0MTg3OlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQxODgtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MjUxPWludCBwaHlsaW5rX21paV9jMjJfcGNzX2VuY29kZV9hZHZlcnRpc2VtZW50KHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQyNjctXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0MjY4OlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQyNjktXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTQ5MD1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfcHJvYmVfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU0OS1cXHRcXHRpZiAoIXN0cmNhc2VjbXAocGFja2FnZV9tb2RlX25hbWUsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU1MDpcXHRcXHRcXHRcXHRwaHlfbW9kZXMoUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSkpKVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTE6XFx0XFx0XFx0cHJpdi1cXHUwMDNlcGFja2FnZV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTUyLVxcdFxcdGVsc2UgaWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTU2Mj1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfY29uZmlnX2luaXRfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4NS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTg2OlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTg3LVxcdGRlZmF1bHQ6XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTUzPWV4dGVybiBjb25zdCBpbnQgcGh5X2Jhc2ljX3BvcnRzX2FycmF5WzNdO1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaC04OS0gKiBAUEhZX0lOVEVSRkFDRV9NT0RFX01PQ0E6IE11bHRpbWVkaWEgb3ZlciBDb2F4XFxuaW5jbHVkZS9saW51eC9waHkuaDo5MDogKiBAUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTogUGVudGEgU0dNSUlcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTkxLSAqIEBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOiBRdWFkIFNHTUlJXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTExND10eXBlZGVmIGVudW0ge1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaC0xMzItXFx0UEhZX0lOVEVSRkFDRV9NT0RFX01PQ0EsXFxuaW5jbHVkZS9saW51eC9waHkuaDoxMzM6XFx0UEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSxcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTEzNC1cXHRQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJLFxcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaD0yMTA9c3RhdGljIGlubGluZSBjb25zdCBjaGFyICpwaHlfbW9kZXMocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtMjQ4LVxcdFxcdHJldHVybiBcXFwibW9jYVxcXCI7XFxuaW5jbHVkZS9saW51eC9waHkuaDoyNDk6XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbmluY2x1ZGUvbGludXgvcGh5LmgtMjUwLVxcdFxcdHJldHVybiBcXFwicHNnbWlpXFxcIjtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTc5MD1zdGF0aWMgaW5saW5lIGludCBwaHlsaW5rX2dldF9saW5rX3RpbWVyX25zKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03OTMtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg6Nzk0OlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03OTUtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxNjoxNzoxNC4xNDk3MDAxNzlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE0ODQ0ODU3ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgVXNhZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBxY2E4MDd4LmNgIGNvZGUsIGFuZCBpdCBzZWVtcyB0byBiZSB0aGUgKm9ubHkqIHBsYWNlIHdoZXJlIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpcyBiZWluZyB1c2VkLiBUaGF0J3MgYSBzdGFydGluZyBwb2ludC4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiBpcyBob3cgdGhpcyB2YWx1ZSBjYW4gZXZlbiBiZSBzZXQsIGNhbiBpdCBiZSBtYW5pcHVsYXRlZD9cblxuSG1tLCBjYW4gYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGJlIHNldCB0aHJvdWdoIG5ldGxpbms/IEkgZG9uJ3QgdGhpbmsgc28sIGFuZCBJIHNob3VsZCByZWFsbHkgdmVyaWZ5IGlmIGBwaHlfbW9kZXNgIGFyZSBwYXJzZWFibGUgZnJvbSB1c2Vyc3BhY2UuIExldCdzIHNlZS4uLiB0aGUgY29kZSB1dGlsaXplcyBgcGh5bGlua19wYXJzZV9tb2RlYCwgYnV0IHRoYXQncyBkcml2ZW4gYnkgdGhlIGRldmljZSB0cmVlLCByaWdodD8gSXQncyBub3QgYSBydW4tdGltZSBjb25maWd1cmF0aW9uLCBzbyBjYW4gSSBjcmVhdGUgYSB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlIGFuZCBzb21laG93IGZvcmNlIGl0cyBQSFkgbW9kZSB0byBgUFNHTUlJYD8gSSBkb24ndCB0aGluayB0aGF0J3MgcG9zc2libGUuIFRoZXJlIGlzbid0IGFueSBuZXRsaW5rIEFQSSB0byBkaXJlY3RseSBzZXQgdGhlIGBwaHlfaW50ZXJmYWNlX3RgIGZvciBhIGBuZXRfZGV2aWNlYC4gVGhhdCdzIHVzdWFsbHkgaGFyZGNvZGVkIG9yIGNvbWluZyBmcm9tIHRoZSBkZXZpY2UgdHJlZS5cblxuQWxyaWdodCwgYnV0IHdoYXQgYWJvdXQgYGV0aHRvb2xgPyBDYW4gaXQgbWFuaXB1bGF0ZSBhbnkgb2YgdGhlc2UgbGluayBwYXJhbWV0ZXJzPyBOb3QgZGlyZWN0bHksIGl0IHNlZW1zIGxpa2UgYGV0aHRvb2xgIGNhbid0IHNldCB0aGUgUEhZIGludGVyZmFjZSBtb2RlLCBsaWtlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gU0dNSUksIFJHTUlJLCBvciBQU0dNSUkuXG5cblNvLCB0aGUgb25seSB3YXkgdGhpcyBjb2RlIHVzaW5nIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpcyBldmVuIGdvaW5nIHRvIGJlIHJlYWNoZWQsIGlzIGlmIGEgZGV2aWNlIGlzIHByb2JlZCB3aXRoIHRoYXQgc3BlY2lmaWMgbW9kZSBzZXQuIFNpbmNlIGBxY2E4MDd4YCBpcyBhICpwaHlzaWNhbCogUEhZIGNoaXAsIGl0J3Mgbm90IGdvaW5nIHRvIHNob3cgdXAgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IHVubGVzcyBJIGNyYWZ0IGEgZHVtbXkgTURJTyBidXMgYW5kIHJlZ2lzdGVyIHRoaXMgUEhZIG9uIGl0LiBOb3csIHRoYXQncyBwb3NzaWJsZSwgYnV0IGV2ZW4gaWYgdGhhdCB3b3JrZWQsIHJlbWVtYmVyIGBxY2E4MDd4YCBpcyBqdXN0IGEgUEhZICpkcml2ZXIqLiBUaGUgTUFDIGRyaXZlciwgd2hpY2ggdXRpbGl6ZXMgYHBoeWxpbmtgLCAqYWxzbyogaGFzIHRvIGJlIHNldCB0byB1c2UgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLiBUaGF0J3MgdGhlIHJlYWwgY2hhbGxlbmdlLiBJcyB0aGVyZSBldmVuIGEgTUFDIGRyaXZlciB0aGF0IHN1cHBvcnRzIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYD8gVGhhdCdzIHdoYXQgSSBuZWVkIHRvIGRldGVybWluZS4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBNQUMgZHJpdmVycyBhbmQgc2VlIGlmIGFueSBldmVuICpzdXBwb3J0KiB0aGlzIHNwZWNpZmljIGludGVyZmFjZSBtb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDI0NSwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxNjoxNzoyNS42MzQxODk2NzZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTcwLCJFcnJvciI6IllvdSBhcmUgcmVwZWF0aW5nIHRoZSBzYW1lIHRvb2wgY2FsbCB3aXRoIHRoZSBleGFjdCBzYW1lIGFyZ3VtZW50cy5cbllvdSBhbHJlYWR5IGhhdmUgdGhlIHJlc3VsdCBvZiB0aGlzIGV4YWN0IHRvb2wgY2FsbCBpbiB5b3VyIGNvbnZlcnNhdGlvbiBoaXN0b3J5LlxuRG8gTk9UIHJlcXVlc3QgaXQgYWdhaW4uIFlvdSBNVVNUIHN5bnRoZXNpemUgdGhlIGluZm9ybWF0aW9uIHlvdSBhbHJlYWR5IGhhdmUsXG50cnkgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCB0b29sLCBvciBwcm9jZWVkIHRvIHRoZSBuZXh0IHN0ZXAuIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIllvdSBhcmUgcmVwZWF0aW5nIHRoZSBzYW1lIHRvb2wgY2FsbCB3aXRoIHRoZSBleGFjdCBzYW1lIGFyZ3VtZW50cy5cXG5Zb3UgYWxyZWFkeSBoYXZlIHRoZSByZXN1bHQgb2YgdGhpcyBleGFjdCB0b29sIGNhbGwgaW4geW91ciBjb252ZXJzYXRpb24gaGlzdG9yeS5cXG5EbyBOT1QgcmVxdWVzdCBpdCBhZ2Fpbi4gWW91IE1VU1Qgc3ludGhlc2l6ZSB0aGUgaW5mb3JtYXRpb24geW91IGFscmVhZHkgaGF2ZSxcXG50cnkgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCB0b29sLCBvciBwcm9jZWVkIHRvIHRoZSBuZXh0IHN0ZXAuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDE2OjE3OjI1LjYzNDIyMzMxNloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjI3MjE3NDQzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBXb3J0aEZ1enppbmcgPSBGYWxzZSoqXG5cbk9rYXksIHNvIEkndmUganVzdCBiZWVuIGxvb2tpbmcgaW50byB3aGV0aGVyIG9yIG5vdCBhIHBhdGNoIHJlbGF0ZWQgdG8gYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGlzIHdvcnRoIGZ1enppbmcuIE15IGluaXRpYWwgc2NhbiB1c2luZyBgZ3JlcGAgcXVpY2tseSBzaG93ZWQgdGhhdCB0aGlzIHBhcnRpY3VsYXIgaW50ZXJmYWNlIG1vZGUgaXMgb25seSBtZW50aW9uZWQgaW4gZG9jdW1lbnRhdGlvbiwgcGh5IGNvcmUgZmlsZXMsIGFuZCBhIGZldyBQSFkgZHJpdmVyIGZpbGVzLCBuYW1lbHkgdGhlIGBxY2E4MDd4YCBkcml2ZXIsIGJ1dCBpdCBkb2Vzbid0IGFwcGVhciBpbiBhbnkgTUFDIGRyaXZlciBpbXBsZW1lbnRhdGlvbnMuIFRoYXQncyBhIGtleSBvYnNlcnZhdGlvbi5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgd2FzLCBjb3VsZCBzb21lIE1BQyBkcml2ZXJzICppbmRpcmVjdGx5KiBzdXBwb3J0IGl0LCBwZXJoYXBzIGJ5IHBhc3NpbmcgaW50ZXJmYWNlIG1vZGUgaW5mb3JtYXRpb24gdGhyb3VnaCBEZXZpY2UgVHJlZSAoRFQpPyBBbmQsIHBlcmhhcHMgYSBNQUMgZHJpdmVyIGNvdWxkIHV0aWxpemUgcGh5bGluay4gSG93ZXZlciwgZ2l2ZW4gdGhhdCB0aGlzIGludGVyZmFjZSBpcyBub3QgZXhwbGljaXRseSBtZW50aW9uZWQgYnkgYW55IE1BQyBkcml2ZXIsIGFuZCBlc3BlY2lhbGx5IGdpdmVuIHRoZSBjb250ZXh0IG9mIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aGVyZSBEVCBpc24ndCBnZW5lcmFsbHkgYXZhaWxhYmxlIGZvciBNQUNzLCBJJ3ZlIGNvbmNsdWRlZCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiBRRU1VIG9yIEdDRS5cblxuSSBkb3VibGUtY2hlY2tlZCB0byBzZWUgaWYgdmlydHVhbCBkcml2ZXJzIGxpa2UgYG5ldGRldnNpbWAsIGBkdW1teWAsIG9yIGB2ZXRoYCBtaWdodCBsZXZlcmFnZSBgcGh5bGlua2AsIGJ1dCBub25lIG9mIHRoZW0gZG8uIEV2ZW4gdGhlIHZpcnR1YWwtaXNoIFVTQiBkcml2ZXJzLCBsaWtlIGBhc2l4YCBhbmQgYGxhbjc4eHhgLCB3aGljaCAqZG8qIHVzZSBgcGh5bGlua2AsIGV4cGxpY2l0bHkgaGFyZGNvZGUgdGhlaXIgaW50ZXJmYWNlIG1vZGVzIHRvIG1vcmUgc3RhbmRhcmQgdHlwZXMgbGlrZSBNSUksIFJNSUksIG9yIEdNSUkuIFRoaXMgY29uZmlybXMgdGhhdCBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgd29uJ3QgZXZlciBiZSBzZWVuIGJ5IGBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZWAsIGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAsIGBwaHlsaW5rX21paV9jMjJfcGNzX2VuY29kZV9hZHZlcnRpc2VtZW50YCwgb3IgYHBoeWxpbmtfZ2V0X2xpbmtfdGltZXJfbnNgIHdpdGhpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcuXG5cbkVzc2VudGlhbGx5LCBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaXMgdGllZCB0byBhIHNwZWNpZmljIHBoeXNpY2FsIFBIWSAodGhlIGBxY2E4MDd4YCksIGFuZCBub3RoaW5nIGVtdWxhdGVkIG9yIHZpcnR1YWwgdG91Y2hlcyBpdC4gU2luY2UgdGhlIHByb21wdCBzdGF0ZXMgSSBzaG91bGQgcmV0dXJuIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgaWYgdGhlIHBhdGNoIG9ubHkgYWRkcyB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgSSdtIGNvbmZpZGVudCBpbiBzYXlpbmcgdGhhdCB0aGUgbmV3IGNvZGUgcGF0aHMgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIGFyZSwgaW4gZmFjdCwgdW5yZWFjaGFibGUuXG5cbk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IFRoZSBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCB3aXRoaW4gYHBoeWxpbmtgLiBIb3dldmVyLCB0aGlzIGludGVyZmFjZSBtb2RlIGlzIHNwZWNpZmljIHRvIHRoZSBRQ0E4MDd4IFBIWSwgd2l0aCBubyBNQUMgZHJpdmVycyBleHBsaWNpdGx5IHN1cHBvcnRpbmcgaXQgKG9yIHBhc3NpbmcgaXQgZnJvbSBEVCkuIEZ1cnRoZXJtb3JlLCB2aXJ0dWFsIG5ldHdvcmsgZHJpdmVycyBhbmQgc29mdHdhcmUtZW11bGF0ZWQgVVNCIGV0aGVybmV0IGFkYXB0ZXJzIGhhcmRjb2RlIHN0YW5kYXJkIGludGVyZmFjZSBtb2Rlcy4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlxuXG5JJ2xsIHByb2NlZWQgdG8gc2V0IHRoZSByZXN1bHRzIHRvIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTIxMywiT3V0cHV0VG9rZW5zIjoxOTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTY6MTc6NTEuOTA2NDAxMjg4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIChQZW50YSBTR01JSSkgdG8gc2V2ZXJhbCBzd2l0Y2ggc3RhdGVtZW50cyBpbiB0aGUgcGh5bGluayBjb3JlLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUEhZIGludGVyZmFjZSBtb2RlLiBBIHNlYXJjaCBvZiB0aGUga2VybmVsIHRyZWUgcmV2ZWFscyB0aGF0IFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgaXMgb25seSByZWZlcmVuY2VkIGJ5IHRoZSBxY2E4MDd4IHBoeXNpY2FsIFBIWSBkcml2ZXIsIGFuZCBubyBNQUMgZHJpdmVycyBleHBsaWNpdGx5IHN1cHBvcnQgaXQuIEZ1cnRoZXJtb3JlLCB2aXJ0dWFsIG5ldHdvcmsgZHJpdmVycyBhbmQgc29mdHdhcmUtZW11bGF0ZWQgVVNCIGV0aGVybmV0IGFkYXB0ZXJzICh3aGljaCB1c2UgcGh5bGluaykgaGFyZGNvZGUgdGhlaXIgaW50ZXJmYWNlIG1vZGVzIHRvIHN0YW5kYXJkIG9uZXMgbGlrZSBNSUksIFJNSUksIG9yIEdNSUkuIFNpbmNlIHRoaXMgaW50ZXJmYWNlIG1vZGUgY2Fubm90IGJlIGNvbmZpZ3VyZWQgZnJvbSB1c2Vyc3BhY2UgYW5kIGlzIG5vdCB1c2VkIGJ5IGFueSBlbXVsYXRlZCBoYXJkd2FyZSwgdGhlIG5ld2x5IGFkZGVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgKFBlbnRhIFNHTUlJKSB0byBzZXZlcmFsIHN3aXRjaCBzdGF0ZW1lbnRzIGluIHRoZSBwaHlsaW5rIGNvcmUuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQSFkgaW50ZXJmYWNlIG1vZGUuIEEgc2VhcmNoIG9mIHRoZSBrZXJuZWwgdHJlZSByZXZlYWxzIHRoYXQgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSBpcyBvbmx5IHJlZmVyZW5jZWQgYnkgdGhlIHFjYTgwN3ggcGh5c2ljYWwgUEhZIGRyaXZlciwgYW5kIG5vIE1BQyBkcml2ZXJzIGV4cGxpY2l0bHkgc3VwcG9ydCBpdC4gRnVydGhlcm1vcmUsIHZpcnR1YWwgbmV0d29yayBkcml2ZXJzIGFuZCBzb2Z0d2FyZS1lbXVsYXRlZCBVU0IgZXRoZXJuZXQgYWRhcHRlcnMgKHdoaWNoIHVzZSBwaHlsaW5rKSBoYXJkY29kZSB0aGVpciBpbnRlcmZhY2UgbW9kZXMgdG8gc3RhbmRhcmQgb25lcyBsaWtlIE1JSSwgUk1JSSwgb3IgR01JSS4gU2luY2UgdGhpcyBpbnRlcmZhY2UgbW9kZSBjYW5ub3QgYmUgY29uZmlndXJlZCBmcm9tIHVzZXJzcGFjZSBhbmQgaXMgbm90IHVzZWQgYnkgYW55IGVtdWxhdGVkIGhhcmR3YXJlLCB0aGUgbmV3bHkgYWRkZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDE2OjE3OjUxLjkwNjQyNDYxOFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowpvxxg[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-09 16:03:41 +0000 UTC FinishedAt: 2026-08-09 16:17:52 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDE2OjA0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7JiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSAoUGVudGEgU0dNSUkpIHRvIHNldmVyYWwgc3dpdGNoIHN0YXRlbWVudHMgaW4gdGhlIHBoeWxpbmsgY29yZS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBIWSBpbnRlcmZhY2UgbW9kZS4gQSBzZWFyY2ggb2YgdGhlIGtlcm5lbCB0cmVlIHJldmVhbHMgdGhhdCBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIGlzIG9ubHkgcmVmZXJlbmNlZCBieSB0aGUgcWNhODA3eCBwaHlzaWNhbCBQSFkgZHJpdmVyLCBhbmQgbm8gTUFDIGRyaXZlcnMgZXhwbGljaXRseSBzdXBwb3J0IGl0LiBGdXJ0aGVybW9yZSwgdmlydHVhbCBuZXR3b3JrIGRyaXZlcnMgYW5kIHNvZnR3YXJlLWVtdWxhdGVkIFVTQiBldGhlcm5ldCBhZGFwdGVycyAod2hpY2ggdXNlIHBoeWxpbmspIGhhcmRjb2RlIHRoZWlyIGludGVyZmFjZSBtb2RlcyB0byBzdGFuZGFyZCBvbmVzIGxpa2UgTUlJLCBSTUlJLCBvciBHTUlJLiBTaW5jZSB0aGlzIGludGVyZmFjZSBtb2RlIGNhbm5vdCBiZSBjb25maWd1cmVkIGZyb20gdXNlcnNwYWNlIGFuZCBpcyBub3QgdXNlZCBieSBhbnkgZW11bGF0ZWQgaGFyZHdhcmUsIHRoZSBuZXdseSBhZGRlZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxNjowNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGNkN2ZjMDMxMjc1ZWI0Y2Q2ZTkwZTRkZmU0Njk0NzFkYTQ5NDYxMGNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyA5IDE2OjA0OjUxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5pbmRleCAxOGQyZWFkOTdhYTU0Li4xY2U5ZDIyNjY3NzRkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuQEAgLTEwNDAsNiAmIzQzOzEwNDAsNyBAQCBzdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuIHtcbiBcdHN3aXRjaCAoaW50ZXJmYWNlKSB7XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RVVNHTUlJOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSTpcbkBAIC00MTgzLDYgJiM0Mzs0MTg0LDcgQEAgdm9pZCBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcbiBcdFx0YnJlYWs7XG4gXG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4gXHRcdGlmIChuZWdfbW9kZSA9PSBQSFlMSU5LX1BDU19ORUdfSU5CQU5EX0VOQUJMRUQpXG4gXHRcdFx0cGh5bGlua19kZWNvZGVfc2dtaWlfd29yZChzdGF0ZSwgbHBhKTtcbkBAIC00MjYzLDYgJiM0Mzs0MjY1LDcgQEAgaW50IHBoeWxpbmtfbWlpX2MyMl9wY3NfZW5jb2RlX2FkdmVydGlzZW1lbnQocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcbiBcdFx0XHRhZHYgfD0gQURWRVJUSVNFXzEwMDBYUFNFX0FTWU07XG4gXHRcdHJldHVybiBhZHY7XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4gXHRcdHJldHVybiAweDAwMDE7XG4gXHRkZWZhdWx0OlxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGh5bGluay5oIGIvaW5jbHVkZS9saW51eC9waHlsaW5rLmhcbmluZGV4IDJiYzBkYjNkNTJhYzguLjFkZGE1YzdlZDVmMTQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9waHlsaW5rLmhcbkBAIC03OTEsNiAmIzQzOzc5MSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHBoeWxpbmtfZ2V0X2xpbmtfdGltZXJfbnMocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbiB7XG4gXHRzd2l0Y2ggKGludGVyZmFjZSkge1xuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG4mIzQzO1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSTpcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwR19RWEdNSUk6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTY6MDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgKFBlbnRhIFNHTUlJKSB0byBzZXZlcmFsIHN3aXRjaCBzdGF0ZW1lbnRzIGluIHRoZSBwaHlsaW5rIGNvcmUuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQSFkgaW50ZXJmYWNlIG1vZGUuIEEgc2VhcmNoIG9mIHRoZSBrZXJuZWwgdHJlZSByZXZlYWxzIHRoYXQgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSBpcyBvbmx5IHJlZmVyZW5jZWQgYnkgdGhlIHFjYTgwN3ggcGh5c2ljYWwgUEhZIGRyaXZlciwgYW5kIG5vIE1BQyBkcml2ZXJzIGV4cGxpY2l0bHkgc3VwcG9ydCBpdC4gRnVydGhlcm1vcmUsIHZpcnR1YWwgbmV0d29yayBkcml2ZXJzIGFuZCBzb2Z0d2FyZS1lbXVsYXRlZCBVU0IgZXRoZXJuZXQgYWRhcHRlcnMgKHdoaWNoIHVzZSBwaHlsaW5rKSBoYXJkY29kZSB0aGVpciBpbnRlcmZhY2UgbW9kZXMgdG8gc3RhbmRhcmQgb25lcyBsaWtlIE1JSSwgUk1JSSwgb3IgR01JSS4gU2luY2UgdGhpcyBpbnRlcmZhY2UgbW9kZSBjYW5ub3QgYmUgY29uZmlndXJlZCBmcm9tIHVzZXJzcGFjZSBhbmQgaXMgbm90IHVzZWQgYnkgYW55IGVtdWxhdGVkIGhhcmR3YXJlLCB0aGUgbmV3bHkgYWRkZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjZDdmYzAzMTI3NWViNGNkNmU5MGU0ZGZlNDY5NDcxZGE0OTQ2MTBjCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgOSAxNjowNDo1MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jCmluZGV4IDE4ZDJlYWQ5N2FhNTQuLjFjZTlkMjI2Njc3NGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwpAQCAtMTA0MCw2ICYjNDM7MTA0MCw3IEBAIHN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpCiB7CiAJc3dpdGNoIChpbnRlcmZhY2UpIHsKIAljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSToKJiM0MzsJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOgogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSToKIAljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RVVNHTUlJOgogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1VTWEdNSUk6CkBAIC00MTgzLDYgJiM0Mzs0MTg0LDcgQEAgdm9pZCBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSwKIAkJYnJlYWs7CiAKIAljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSToKJiM0MzsJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOgogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSToKIAkJaWYgKG5lZ19tb2RlID09IFBIWUxJTktfUENTX05FR19JTkJBTkRfRU5BQkxFRCkKIAkJCXBoeWxpbmtfZGVjb2RlX3NnbWlpX3dvcmQoc3RhdGUsIGxwYSk7CkBAIC00MjYzLDYgJiM0Mzs0MjY1LDcgQEAgaW50IHBoeWxpbmtfbWlpX2MyMl9wY3NfZW5jb2RlX2FkdmVydGlzZW1lbnQocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSwKIAkJCWFkdiB8PSBBRFZFUlRJU0VfMTAwMFhQU0VfQVNZTTsKIAkJcmV0dXJuIGFkdjsKIAljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSToKJiM0MzsJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOgogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSToKIAkJcmV0dXJuIDB4MDAwMTsKIAlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9waHlsaW5rLmggYi9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaAppbmRleCAyYmMwZGIzZDUyYWM4Li4xZGRhNWM3ZWQ1ZjE0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaApAQCAtNzkxLDYgJiM0Mzs3OTEsNyBAQCBzdGF0aWMgaW5saW5lIGludCBwaHlsaW5rX2dldF9saW5rX3RpbWVyX25zKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpCiB7CiAJc3dpdGNoIChpbnRlcmZhY2UpIHsKIAljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSToKJiM0MzsJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOgogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSToKIAljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJOgogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwR19RWEdNSUk6CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDE2OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT44bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NDIKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAzNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUEhZIEludGVyZmFjZSBNb2RlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBwaHlsaW5rLmNgIGFuZCBgcGh5bGluay5oYC4gTG9va3MgbGlrZSB0aGV5JiMzOTtyZSBhZGRpbmcgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHRvIGEgZmV3IHN3aXRjaCBzdGF0ZW1lbnRzIGluIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZSBwaHlsaW5rIGZyYW1ld29yay4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHNlZWluZyBjaGFuZ2VzIGluIGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAsIGBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZWAsIGBwaHlsaW5rX21paV9jMjJfcGNzX2VuY29kZV9hZHZlcnRpc2VtZW50YCwgYW5kIGBwaHlsaW5rX2dldF9saW5rX3RpbWVyX25zYC4gVGhlIGNoYW5nZXMgdGhlbXNlbHZlcyBhcmUgbWluaW1hbCDigJMgYmFzaWNhbGx5LCByb3V0aW5nIHRoZSBQU0dNSUkgY2FzZSB0aHJvdWdoIHRoZSBleGlzdGluZyBTR01JSSBhbmQgUVNHTUlJIGxvZ2ljLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz8gSXQmIzM5O3MgcGFydCBvZiB0aGUgcGh5bGluayBmcmFtZXdvcmssIHdoaWNoLCBhcyB3ZSBrbm93LCBpcyBwcmV0dHkgY29yZSB0byBuZXR3b3JrIGRyaXZlciBmdW5jdGlvbmFsaXR5LiBBbmQsIGBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZWAgYW5kIGBwaHlsaW5rX21paV9jMjJfcGNzX2VuY29kZV9hZHZlcnRpc2VtZW50YCBhcmUgZXhwb3J0ZWQgc3ltYm9scy4gVGhhdCByYWlzZXMgYSBmbGFnLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaXMgc29tZXRoaW5nIHRoYXQmIzM5O3Mgb25seSBjb25maWd1cmVkIGF0IHRoZSBoYXJkd2FyZSBsZXZlbCwgdmlhIERldmljZSBUcmVlIG9yIGRyaXZlciBwcm9iZSwgb3IgaWYgaXQgY2FuIGJlIHJlYWNoZWQgdmlhIHVzZXJzcGFjZSwgbWF5YmUgdGhyb3VnaCBldGh0b29sIG9yIG5ldGxpbmsuIFRoYXQmIzM5O3MgdGhlIGtleSB0byB3aGV0aGVyIGZ1enppbmcgaXMgZXZlbiByZWxldmFudCBoZXJlLgoKR2l2ZW4gdGhvc2UgZXhwb3J0ZWQgc3ltYm9scywgYHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlYCBhbmQgYHBoeWxpbmtfbWlpX2MyMl9wY3NfZW5jb2RlX2FkdmVydGlzZW1lbnRgLCB0aGF0IGZlZWxzIGxpa2UgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuIExldCYjMzk7cyBzZWUgaWYgdGhpcyBtb2RlIGlzIHNvbWV0aGluZyB0aGF0IGNhbiBiZSBzZXQgb3IgYWx0ZXJlZCBieSB1c2Vyc3BhY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTY6MTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuYz0yMTM9c3RhdGljIHZvaWQgbXhsODYyeHhfcGNzX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtcGh5bGluay5jLTI1Ny1cdFx0ICAgICAgIChzdGF0ZS1cdTAwM2Vhbl9jb21wbGV0ZSA/IEJNU1JfQU5FR0NPTVBMRVRFIDogMCk7XG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtcGh5bGluay5jOjI1ODpcdFx0cGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RhdGUsIG5lZ19tb2RlLCBibXNyLFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuYy0yNTktXHRcdFx0XHRcdFx0IGxlMTZfdG9fY3B1KHN0LmxwYS5jbDM3KSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz01NzM9c3RhdGljIHZvaWQgbWFjYl9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01ODAtXHRscGEgPSBnZW1fcmVhZGwoYnAsIFBDU0FOTFBCQVNFKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTgxOlx0cGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RhdGUsIG5lZ19tb2RlLCBibXNyLCBscGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy01ODItfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcG9ydC5jPTI4Nz12b2lkIGxhbjk2NnhfcG9ydF9zdGF0dXNfZ2V0KHN0cnVjdCBsYW45NjZ4X3BvcnQgKnBvcnQsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BvcnQuYy0zMTYtXHRcdGxwX2FkdiA9IERFVl9QQ1MxR19BTkVHX1NUQVRVU19MUF9BRFZfR0VUKHZhbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BvcnQuYzozMTc6XHRcdHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0YXRlLCBuZWdfbW9kZSwgYm1zciwgbHBfYWR2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcG9ydC5jLTMxOC1cdH0gZWxzZSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3Bjcy5jPTY2PXN0YXRpYyB2b2lkIGR3bWFjX2ludGVncmF0ZWRfcGNzX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNzLmMtODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNzLmM6ODQ6XHRcdHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0YXRlLCBuZWdfbW9kZSwgc3RhdHVzLCBscGEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3Bjcy5jLTg1LVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLW10ay1seW54aS5jPTEwOD1zdGF0aWMgdm9pZCBtdGtfcGNzX2x5bnhpX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcbi0tXG5kcml2ZXJzL25ldC9wY3MvcGNzLW10ay1seW54aS5jLTExOC1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbXRrLWx5bnhpLmM6MTE5Olx0cGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RhdGUsIG5lZ19tb2RlLFxuZHJpdmVycy9uZXQvcGNzL3Bjcy1tdGstbHlueGkuYy0xMjAtXHRcdFx0XHRcdCBGSUVMRF9HRVQoU0dNSUlfQk1TUiwgYm0pLFxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jPTExMDM9c3RhdGljIGludCB4cGNzX2dldF9zdGF0ZV9jMzdfMTAwMGJhc2V4KHN0cnVjdCBkd194cGNzICp4cGNzLFxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jLTExMzItXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYzoxMTMzOlx0XHRwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdGF0ZSwgbmVnX21vZGUsIGJtc3IsIGxwYSk7XG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy0xMTM0LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDExNj1zdGF0aWMgdm9pZCBwaHlsaW5rX2RlY29kZV91c2dtaWlfd29yZChzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQxNDAtLyoqXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQxNDE6ICogcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoKSAtIERlY29kZSBNQUMgUENTIHN0YXRlIGZyb20gTUlJIHJlZ2lzdGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MTQyLSAqIEBzdGF0ZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQxNTQtICovXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQxNTU6dm9pZCBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDE1Ni1cdFx0XHRcdCAgICAgIHVuc2lnbmVkIGludCBuZWdfbW9kZSwgdTE2IGJtc3IsIHUxNiBscGEpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MjAyLX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDIwMzpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQyMDQtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MjIwPXZvaWQgcGh5bGlua19taWlfYzIyX3Bjc19nZXRfc3RhdGUoc3RydWN0IG1kaW9fZGV2aWNlICpwY3MsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MjMyLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0MjMzOlx0cGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RhdGUsIG5lZ19tb2RlLCBibXNyLCBscGEpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MjM0LX1cbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaD04MTY9c3RhdGljIGlubGluZSBib29sIHBoeWxpbmtfbWFjX2ltcGxlbWVudHNfbHBpKGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgKm9wcylcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC04MjAtXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo4MjE6dm9pZCBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTgyMi1cdFx0XHRcdCAgICAgIHVuc2lnbmVkIGludCBuZWdfbW9kZSwgdTE2IGJtc3IsIHUxNiBscGEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDE2OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MTIKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxNTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFJlY2VudCBDaGFuZ2VzIGluIHRoZSBgcGh5bGlua2AgU3Vic3lzdGVtKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBvdmVyIHRoZXNlIHJlY2VudCBtb2RpZmljYXRpb25zLiBUaGV5IHNlZW0gdG8gYmUgZm9jdXNlZCBvbiBhIGZldyBzcGVjaWZpYyBhcmVhcyB3aXRoaW4gdGhlIGBwaHlsaW5rYCBzdWJzeXN0ZW06IGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAsIGBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZWAsIGBwaHlsaW5rX21paV9jMjJfcGNzX2VuY29kZV9hZHZlcnRpc2VtZW50YCwgYW5kIGBwaHlsaW5rX2dldF9saW5rX3RpbWVyX25zYC4gIE5vdCBhIHZhc3QgYW1vdW50IG9mIGNvZGUsIGJ1dCBjbGVhcmx5IGltcG9ydGFudCBwaWVjZXMsIGdpdmVuIHdoZXJlIHRoZXkgc2l0LgoKVGhlIGBwaHlsaW5rYCBzdWJzeXN0ZW0sIGFzIHdlIGtub3csIGlzIGEgY29yZSBjb21wb25lbnQgYW5kIGlzIGxldmVyYWdlZCBleHRlbnNpdmVseSBieSBhIHdpZGUgYXJyYXkgb2YgTUFDIGRyaXZlcnMuIEkgc2VlIHRoYXQgaXQgaXMgdXRpbGlzZWQgd2l0aGluIGBtYWNiYCwgYHN0bW1hY2AsIGBsYW45NjZ4YCwgYG10a19ldGhfc29jYCBkcml2ZXJzLCBhbGwgb2Ygd2hpY2ggYXJlIHF1aXRlIGNvbW1vbi4gIFRoaXMgc3VnZ2VzdHMgdGhhdCBldmVuIG1pbm9yIHR3ZWFrcyBoZXJlIGNvdWxkIHBvdGVudGlhbGx5IGhhdmUgYnJvYWQgaW1wbGljYXRpb25zLCBnb29kIHRvIGtlZXAgaW4gbWluZCBmb3IgdGVzdGluZy4KCk5vdywgYSBzbGlnaHRseSBkaWZmZXJlbnQgcXVlc3Rpb24gYXJpc2VzIGluIG15IG1pbmQuIFRoZXNlIGNoYW5nZXMgbWF5IGhhdmUgaW1wbGljYXRpb25zIGluIGEgdmVyeSBzcGVjaWZpYyBzY2VuYXJpbywgYW5kIEkgYW0gY3VyaW91cyB3aGV0aGVyIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpcyBhY3R1YWxseSAqcmVhY2hhYmxlKiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB3aGljaCBkcml2ZXJzIGV4cGxpY2l0bHkgdXNlIHRoaXMsIGp1c3QgdG8gZ2V0IGEgbGF5IG9mIHRoZSBsYW5kIGhlcmUuICBJdCB3b3VsZCBiZSBpbnRlcmVzdGluZyB0byBzZWUgaWYgYW55IG9mIHRoZXNlIGNoYW5nZXMgdG91Y2ggdGhhdCBjb2RlIHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTY6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdD0yMzg9U29tZSBvZiB0aGUgaW50ZXJmYWNlIG1vZGVzIGFyZSBkZXNjcmliZWQgYmVsb3c6XG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3QtMzI1LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3Q6MzI2OmBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWBgXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC0zMjctICAgIFRoaXMgaXMgdGhlIFBlbnRhIFNHTUlJIG1vZGUsIGl0IGlzIHNpbWlsYXIgdG8gUVNHTUlJIGJ1dCBpdCBjb21iaW5lcyA1XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM9MTU5PWludCBwaHlfaW50ZXJmYWNlX251bV9wb3J0cyhwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMS1cdFx0cmV0dXJuIDQ7XG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzoyMDI6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0yMDMtXHRcdHJldHVybiA1O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jPTI5ND11bnNpZ25lZCBsb25nIHBoeV9jYXBzX2Zyb21faW50ZXJmYWNlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMzEwLVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYzozMTE6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTItXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzg9c3RhdGljIGludCBwaHlsaW5rX2ludGVyZmFjZV9tYXhfc3BlZWQocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1OS1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjA6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MS1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTc3ND1zdGF0aWMgaW50IHBoeWxpbmtfcGFyc2VfbW9kZShzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MDgtXHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4MDk6XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODEwLVx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQyLVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwNDM6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDQtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MTU1PXZvaWQgcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MTg2LVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQxODc6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQxODgtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MjUxPWludCBwaHlsaW5rX21paV9jMjJfcGNzX2VuY29kZV9hZHZlcnRpc2VtZW50KHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MjY3LVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQyNjg6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQyNjktXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTQ5MD1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfcHJvYmVfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01NDktXHRcdGlmICghc3RyY2FzZWNtcChwYWNrYWdlX21vZGVfbmFtZSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTA6XHRcdFx0XHRwaHlfbW9kZXMoUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSkpKVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU1MTpcdFx0XHRwcml2LVx1MDAzZXBhY2thZ2VfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTUyLVx0XHRlbHNlIGlmICghc3RyY2FzZWNtcChwYWNrYWdlX21vZGVfbmFtZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM9NTYyPXN0YXRpYyBpbnQgcWNhODA3eF9waHlfcGFja2FnZV9jb25maWdfaW5pdF9vbmNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4NS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTg2Olx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4Ny1cdGRlZmF1bHQ6XG4tLVxuaW5jbHVkZS9saW51eC9waHkuaD01Mz1leHRlcm4gY29uc3QgaW50IHBoeV9iYXNpY19wb3J0c19hcnJheVszXTtcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTg5LSAqIEBQSFlfSU5URVJGQUNFX01PREVfTU9DQTogTXVsdGltZWRpYSBvdmVyIENvYXhcbmluY2x1ZGUvbGludXgvcGh5Lmg6OTA6ICogQFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6IFBlbnRhIFNHTUlJXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTkxLSAqIEBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOiBRdWFkIFNHTUlJXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaD0xMTQ9dHlwZWRlZiBlbnVtIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTEzMi1cdFBIWV9JTlRFUkZBQ0VfTU9ERV9NT0NBLFxuaW5jbHVkZS9saW51eC9waHkuaDoxMzM6XHRQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJLFxuaW5jbHVkZS9saW51eC9waHkuaC0xMzQtXHRQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJLFxuLS1cbmluY2x1ZGUvbGludXgvcGh5Lmg9MjEwPXN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqcGh5X21vZGVzKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaC0yNDgtXHRcdHJldHVybiBcJiMzNDttb2NhXCYjMzQ7O1xuaW5jbHVkZS9saW51eC9waHkuaDoyNDk6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5pbmNsdWRlL2xpbnV4L3BoeS5oLTI1MC1cdFx0cmV0dXJuIFwmIzM0O3BzZ21paVwmIzM0Oztcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaD03OTA9c3RhdGljIGlubGluZSBpbnQgcGh5bGlua19nZXRfbGlua190aW1lcl9ucyhwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTc5My1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg6Nzk0Olx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzk1LVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDE2OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1MjgKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiA1MDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBwaHlsaW5rIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaW50cm9kdWNlcyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaW50byBhIGZldyBrZXkgYXJlYXMgb2YgdGhlIGBwaHlsaW5rYCBmcmFtZXdvcmsuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgdHJlYXRpbmcgaXQgc2ltaWxhcmx5IHRvIGBTR01JSWAgYW5kIGBRU0dNSUlgLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBwaHlsaW5rIGxvZ2ljLCBtZWFuaW5nIHRoZSB1bmRlcmx5aW5nIGJlaGF2aW9yIHdpbGwgY2hhbmdlLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiB0aGlzIGJlIHJlYWNoZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSSBrbm93IGBwaHlsaW5rYCBpcyB1c2VkIGJ5IG51bWVyb3VzIG5ldHdvcmsgZHJpdmVycy4gU29tZSBvZiB0aG9zZSBjb3VsZCBiZSBlbXVsYXRlZCBvciB2aXJ0dWFsaXplZC4gQXQgbGVhc3QsIHRoZSBwaHlsaW5rIGNvcmUgbWlnaHQgYmUgcmVhY2hhYmxlIGlmIHdlIGhhdmUgYSBkcml2ZXIgdGhhdCB1c2VzIGl0LCByaWdodD8KCkFoYSwgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGlzIGEgKnNwZWNpZmljKiBoYXJkd2FyZSBpbnRlcmZhY2UgZm9yIFBlbnRhIFNHTUlJLiBTbywgYXJlIHRoZXJlIGFueSBkcml2ZXJzIGFjdHVhbGx5IHVzaW5nIGl0PyBMZXQmIzM5O3Mgc2VlLi4uIEdyZXBwaW5nIGZvciBpdCBzaG93cyB0aGF0IHRoZSBgcWNhODA3eGAgZHJpdmVyIGZyb20gUXVhbGNvbW0gZG9lcyB1c2UgdGhpcyBpbnRlcmZhY2UgbW9kZS4gVGhhdCBtYWtlcyBzZW5zZTsgdGhleSBvZnRlbiB1dGlsaXplIHRoZXNlIGludGVyZmFjZSB0eXBlcy4KClRoZSBmdW5jdGlvbnMgYmVpbmcgbW9kaWZpZWQgYXJlIGNyaXRpY2FsOiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgLCBgcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGVgLCBgcGh5bGlua19taWlfYzIyX3Bjc19lbmNvZGVfYWR2ZXJ0aXNlbWVudGAsIGFuZCBgcGh5bGlua19nZXRfbGlua190aW1lcl9uc2AuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZWl0aGVyIGV4cG9ydGVkIG9yIHVzZWQgaW50ZXJuYWxseSB3aXRoaW4gYHBoeWxpbmtgLCB0aGUgZ2VuZXJpYyBmcmFtZXdvcmsuIEl0IHNvdW5kcyBsaWtlIGEgY29yZSBjaGFuZ2UsIHRoZXJlZm9yZSBpdOKAmXMgd29ydGggdGhpbmtpbmcgYWJvdXQgZnV6emluZyB0aGlzLCByaWdodD8gSXQmIzM5O3MgYSBrZXkgcGllY2Ugb2YgdGhlIG5ldHdvcmsgc3RhY2ssIHNvIGZ1enppbmcgd291bGQgYmUgYSBnb29kIGlkZWEuIEhvd2V2ZXIsIHdhaXQsIGBwaHlsaW5rYCBpcyBtb3N0bHkgZm9yIHBoeXNpY2FsIGV0aGVybmV0IGRyaXZlcnMgbGlrZSBNQUNzIGFuZCBQSFlzLiBDYW4gU3l6a2FsbGVyIGV2ZW4gZnV6eiBgcGh5bGlua2AgZWZmZWN0aXZlbHk/IFN5emthbGxlciBjYW4gZnV6eiBuZXRsaW5rIGludGVyZmFjZXMsIGFuZCBtYXliZSBzb21lIHZpcnR1YWwgZXRoZXJuZXQgZHJpdmVycyB1c2UgYHBoeWxpbmtgPwoKTGV0JiMzOTtzIGNoZWNrIGlmIGFueSB2aXJ0dWFsIGRyaXZlciB1dGlsaXplcyBgcGh5bGlua2AuIEkgc2hvdWxkIGxvb2sgYXQgd2hldGhlciBgcGh5bGlua19jcmVhdGVgIGlzIGNhbGxlZCBieSBhbnkgZHJpdmVyIHRoYXQgY2FuIGJlIGluc3RhbnRpYXRlZCBieSBzeXprYWxsZXIuIExpa2UgYG5ldGRldnNpbWAsIGB2ZXRoYCwgb3IgYHR1bmAgZm9yIGV4YW1wbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTY6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5bGlua19jcmVhdGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7RG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdD03ND10aGlzIGRvY3VtZW50YXRpb24uXG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zNjMtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0OjM2NDpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLCBub2RlLCBwaHlfbW9kZSwgXHUwMDI2cGh5bGlua19vcHMpO1xuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zNjUtXHRpZiAoSVNfRVJSKHBoeWxpbmspKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTExMjg9c3RhdGljIGludCBhbHRlcmFfdHNlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE0MTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTQxNjpcdHByaXYtXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnByaXYtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTQxNy1cdFx0XHRcdCAgICAgICBvZl9md25vZGVfaGFuZGxlKHByaXYtXHUwMDNlZGV2aWNlLVx1MDAzZW9mX25vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9MTA3ND1zdGF0aWMgaW50IGFnNzF4eF9waHlsaW5rX3NldHVwKHN0cnVjdCBhZzcxeHggKmFnKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTEwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTEwOTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZhZy1cdTAwM2VwaHlsaW5rX2NvbmZpZywgYWctXHUwMDNlcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMTEwLVx0XHRcdFx0IGFnLVx1MDAzZXBoeV9pZl9tb2RlLCBcdTAwMjZhZzcxeHhfcGh5bGlua19tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTEwMjM9c3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTA4NjpcdGJwLVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZicC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgYnAtXHUwMDNlcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDg3LVx0XHRcdFx0ICAgICBicC1cdTAwM2VwaHlfaW50ZXJmYWNlLCBcdTAwMjZtYWNiX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jPTIwMT1zdGF0aWMgaW50IGRwYWFfbmV0ZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yNzQtXHRtYWNfZGV2LVx1MDAzZXVwZGF0ZV9zcGVlZCA9IGRwYWFfZXRoX2Nncl9zZXRfc3BlZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jOjI3NTpcdG1hY19kZXYtXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNm1hY19kZXYtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI3Ni1cdFx0XHRcdFx0ICBkZXZfZndub2RlKG1hY19kZXYtXHUwMDNlZGV2KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM9NTYwPWludCBkcGFhMl9tYWNfY29ubmVjdChzdHJ1Y3QgZHBhYTJfbWFjICptYWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYzo2MjU6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNi1cdFx0XHRcdCBkcG1hY19ub2RlLCBtYWMtXHUwMDNlaWZfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9OTcxPXN0YXRpYyBpbnQgZW5ldGM0X2xpbmtfaW5pdChzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05ODktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTkwOlx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXHUwMDI2ZW5ldGNfcGxfbWFjX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTkxLVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5Mi1cdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBjcmVhdGUgcGh5bGlua1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTkzOlx0XHRnb3RvIGVycl9waHlsaW5rX2NyZWF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTQtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5OTg6ZXJyX3BoeWxpbmtfY3JlYXRlOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5OS1cdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9ODQ3PXN0YXRpYyBpbnQgZW5ldGNfcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6OTMwOlx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXHUwMDI2ZW5ldGNfbWFjX3BoeWxpbmtfb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTkzMS1cdGlmIChlcnIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo5MzI6XHRcdGdvdG8gZXJyX3BoeWxpbmtfY3JlYXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTMzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTk0MS1cdGVuZXRjX3BoeWxpbmtfZGVzdHJveShwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjk0MjplcnJfcGh5bGlua19jcmVhdGU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05NDMtXHRlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz0zMTI9RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfbWRpb2J1c19kZXN0cm95KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zMTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MzE0OmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzE1LVx0XHRcdCBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpvcHMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTMzNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozMzg6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cGYtXHUwMDNlcGh5bGlua19jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUobm9kZSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzM5LVx0XHRcdFx0IHBmLVx1MDAzZWlmX21vZGUsIG9wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTM0OC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MzQ5OkVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3BoeWxpbmtfY3JlYXRlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNTAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oPTEyPXZvaWQgZW5ldGNfbWRpb2J1c19kZXN0cm95KHN0cnVjdCBlbmV0Y19wZiAqcGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oOjEzOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmgtMTQtXHRcdFx0IGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgKm9wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmM9ODUzPXN0YXRpYyBpbnQgZnNfZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYy05MzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYzo5MzM6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2ZmVwLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKGZlcC1cdTAwM2VkZXYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmMtOTM0LVx0XHRcdFx0IHBoeV9tb2RlLCBcdTAwMjZmc19lbmV0X3BoeWxpbmtfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmM9MzQxOT1zdGF0aWMgaW50IHVjY19nZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UqIG9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jLTM1NzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYzozNTc0Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnVnZXRoLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKFx1MDAyNmRldi1cdTAwM2VkZXYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmMtMzU3NS1cdFx0XHRcdCBwaHlfaW50ZXJmYWNlLCBcdTAwMjZ1Z2V0aF9tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jPTU0ODA9c3RhdGljIGludCBtdm5ldGFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jLTU1OTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jOjU1OTk6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cHAtXHUwMDNlcGh5bGlua19jb25maWcsIHBkZXYtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmMtNTYwMC1cdFx0XHRcdCBwaHlfbW9kZSwgXHUwMDI2bXZuZXRhX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYz02ODQwPXN0YXRpYyBpbnQgbXZwcDJfcG9ydF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTcxNDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYzo3MTQ4Olx0XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cG9ydC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgcG9ydF9md25vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy03MTQ5LVx0XHRcdFx0XHQgcGh5X21vZGUsIFx1MDAyNm12cHAyX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYz0zNzA9c3RhdGljIGludCBwcmVzdGVyYV9wb3J0X3NmcF9iaW5kKHN0cnVjdCBwcmVzdGVyYV9wb3J0ICpwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jLTQxNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jOjQxNzpcdFx0cGh5X2xpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwb3J0LVx1MDAzZXBoeV9jb25maWcsIGZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jLTQxOC1cdFx0XHRcdFx0ICBQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz00ODIzPXN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTQ5NjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjQ5Njg6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy00OTY5LVx0XHRcdFx0IG9mX2Z3bm9kZV9oYW5kbGUobWFjLVx1MDAzZW9mX25vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM9NzQ2PXN0cnVjdCBuZXRfZGV2aWNlICpmYm5pY19uZXRkZXZfYWxsb2Moc3RydWN0IGZibmljX2RldiAqZmJkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYzo4MzU6XHRpZiAoZmJuaWNfcGh5bGlua19jcmVhdGUobmV0ZGV2KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy04MzYtXHRcdGZyZWVfbmV0ZGV2KG5ldGRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaD0xMTE9aW50IGZibmljX3BoeWxpbmtfZ2V0X2ZlY3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oLTExMi1cdFx0XHQgICAgICAgc3RydWN0IGV0aHRvb2xfZmVjcGFyYW0gKmZlY3BhcmFtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2Lmg6MTEzOmludCBmYm5pY19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmgtMTE0LXZvaWQgZmJuaWNfcGh5bGlua19kZXN0cm95KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jPTE3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBmYm5pY19waHlsaW5rX21hY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTg2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MTg3OiAqIGZibmljX3BoeWxpbmtfY3JlYXRlIC0gUGh5bGluayBkZXZpY2UgY3JlYXRpb25cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE4OC0gKiBAbmV0ZGV2OiBOZXR3b3JrIERldmljZSBzdHJ1Y3QgdG8gYXR0YWNoIHBoeWxpbmsgZGV2aWNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTk2LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jOjE5NzppbnQgZmJuaWNfcGh5bGlua19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMjMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MjMyOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNmZibi1cdTAwM2VwaHlsaW5rX2NvbmZpZywgTlVMTCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTIzMy1cdFx0XHRcdCBmYm5pY19waHlsaW5rX3NlbGVjdF9pbnRlcmZhY2UoZmJuLVx1MDAzZWF1aSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTMxNDI9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgbGFuNzQzeF9waHlsaW5rX21hY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzE1MDpzdGF0aWMgaW50IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTUxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzE5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMTkzOlx0cGwgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZhZGFwdGVyLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBOVUxMLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxOTQtXHRcdFx0ICAgIGFkYXB0ZXItXHUwMDNlcGh5X2ludGVyZmFjZSwgXHUwMDI2bGFuNzQzeF9waHlsaW5rX21hY19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zNjY0PXN0YXRpYyBpbnQgbGFuNzQzeF9wY2lkZXZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3MjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzcyNDpcdHJldCA9IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzcyNS1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYz03OTE9c3RhdGljIGludCBsYW45NjZ4X3Byb2JlX3BvcnQoc3RydWN0IGxhbjk2NnggKmxhbjk2NngsIHUzMiBwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTg1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jOjg1NjpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwb3J0LVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmMtODU3LVx0XHRcdFx0IHBvcnRucCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM9MzEyPXN0YXRpYyBpbnQgc3Bhcng1X2NyZWF0ZV9wb3J0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jOjM4OTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZzcHg1X3BvcnQtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzkwLVx0XHRcdFx0IG9mX2Z3bm9kZV9oYW5kbGUoY29uZmlnLVx1MDAzZW5vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jPTE3NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgb2NlbG90X3BoeWxpbmtfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxNzgwOnN0YXRpYyBpbnQgb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IG9jZWxvdCAqb2NlbG90LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3ODEtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTgyMTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTgyMi1cdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKHBvcnRucCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM9MTg0Mz1pbnQgb2NlbG90X3Byb2JlX3BvcnQoc3RydWN0IG9jZWxvdCAqb2NlbG90LCBpbnQgcG9ydCwgc3RydWN0IHJlZ21hcCAqdGFyZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxODgwOlx0ZXJyID0gb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUob2NlbG90LCBwb3J0LCBwb3J0bnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTg4MS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xMzcwPXN0YXRpYyBpbnQgc3RtbWFjX3BoeWxpbmtfc2V0dXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTQ2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTQ2MjpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIGRldl9md25vZGUocHJpdi1cdTAwM2VkZXZpY2UpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNDYzLVx0XHRcdFx0IHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwaHlfaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jPTQ1PWludCB0bjQwX3BoeV9yZWdpc3RlcihzdHJ1Y3QgdG40MF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jLTYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmM6NjM6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBQSFlfSU5URVJGQUNFX01PREVfWEFVSSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jLTY0LVx0XHRcdFx0IFx1MDAyNnRuNDBfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYz0yNzU3PWFtNjVfY3Bzd19udXNzX2luaXRfcG9ydF9uZGV2KHN0cnVjdCBhbTY1X2Nwc3dfY29tbW9uICpjb21tb24sIHUzMiBwb3J0X2lkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jLTI4NDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jOjI4NDI6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cG9ydC1cdTAwM2VzbGF2ZS5waHlsaW5rX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMjg0My1cdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKHBvcnQtXHUwMDNlc2xhdmUucG9ydF9ucCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jPTEzMD1zdGF0aWMgaW50IG5nYmVfcGh5bGlua19pbml0KHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jLTE0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYzoxNTA6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBwaHlfbW9kZSwgXHUwMDI2bmdiZV9tYWNfb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYy0xNTEtXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM9NDgyPWludCB0eGdiZV9waHlsaW5rX2luaXRfYW1sKHN0cnVjdCB0eGdiZSAqdHhnYmUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYy01MTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jOjUxMzpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIHBoeV9tb2RlLCBcdTAwMjZ0eGdiZV9tYWNfb3BzX2FtbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTUxNC1cdGlmIChJU19FUlIocGh5bGluaykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYz0yNjg9c3RhdGljIGludCB0eGdiZV9waHlsaW5rX2luaXQoc3RydWN0IHR4Z2JlICp0eGdiZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmM6MjkzOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgZndub2RlLCBwaHlfbW9kZSwgXHUwMDI2dHhnYmVfbWFjX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5NC1cdGlmIChJU19FUlIocGh5bGluaykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz0yNzk1PXN0YXRpYyBpbnQgYXhpZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzExNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzExODpcdGxwLVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZscC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTE5LVx0XHRcdFx0ICAgICBscC1cdTAwM2VwaHlfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjItXHRcdHJldCA9IFBUUl9FUlIobHAtXHUwMDNlcGh5bGluayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxMjM6XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O3BoeWxpbmtfY3JlYXRlIGVycm9yICglaSlcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjQtXHRcdGdvdG8gY2xlYW51cF9tZGlvO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NTE2PXN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9tYWNfYW5kX3BjcyhzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzEtXHRpZiAocGNzKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjUzMjpcdFx0LyogVGhlIFBDUywgaWYgcHJlc2VudCwgbXVzdCBiZSBzZXR1cCBiZWZvcmUgcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzMtXHRcdCAqIGhhcyBiZWVuIGNhbGxlZC4gSWYgdGhlIG9wcyBpcyBub3QgaW5pdGlhbGlzZWQsIHByaW50IGFuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDcxLSAqIHBoeWxpbmtfcGNzX25lZ19tb2RlKCkgLSBoZWxwZXIgdG8gZGV0ZXJtaW5lIFBDUyBpbmJhbmQgbW9kZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDcyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzMtICogQHBjczogYSBwb2ludGVyIHRvIFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTc2OT1zdGF0aWMgaW50IHBoeWxpbmtfcmVnaXN0ZXJfc2ZwKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3OTMtICogcGh5bGlua19zZXRfZml4ZWRfbGluaygpIC0gc2V0IHRoZSBmaXhlZCBsaW5rXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3OTQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc5NS0gKiBAc3RhdGU6IGEgcG9pbnRlciB0byBhIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xODMxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmspO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzMy0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgzNDogKiBwaHlsaW5rX2NyZWF0ZSgpIC0gY3JlYXRlIGEgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODM1LSAqIEBjb25maWc6IGEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IFx1MDAyNnN0cnVjdCBwaHlsaW5rX2NvbmZpZ1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg0OC0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTg0OTpzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NTAtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM2LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkzNzpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2NyZWF0ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MzgtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTQwLSAqIHBoeWxpbmtfZGVzdHJveSgpIC0gY2xlYW51cCBhbmQgZGVzdHJveSB0aGUgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTQxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NDItICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE5NTc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19kZXN0cm95KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjAtICogcGh5bGlua19leHBlY3RzX3BoeSgpIC0gRGV0ZXJtaW5lIGlmIHBoeWxpbmsgZXhwZWN0cyBhIHBoeSB0byBiZSBhdHRhY2hlZFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTYxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjItICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMDY9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyNi0gKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyMjc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyOC0gKiBAcGh5OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5X2RldmljZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNjA9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jb25uZWN0X3BoeSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjYzLSAqIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKSAtIGNvbm5lY3QgdGhlIFBIWSBzcGVjaWZpZWQgaW4gdGhlIERUIG1vZGUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNjQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI2NS0gKiBAZG46IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBkZXZpY2Vfbm9kZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNzk9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19vZl9waHlfY29ubmVjdCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjgyLSAqIHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KCkgLSBjb25uZWN0IHRoZSBQSFkgc3BlY2lmaWVkIGluIHRoZSBmd25vZGUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyODM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI4NC0gKiBAZndub2RlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZndub2RlX2hhbmRsZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzMzg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM0Mi0gKiAgIGluc3RhbmNlLlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzQzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDQtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzNzM9c3RhdGljIHZvaWQgcGh5bGlua19saW5rX2NoYW5nZWQoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIHVwLCBjb25zdCBjaGFyICp3aGF0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM4Mi0gKiBwaHlsaW5rX21hY19jaGFuZ2UoKSAtIG5vdGlmeSBwaHlsaW5rIG9mIGEgY2hhbmdlIGluIE1BQyBzdGF0ZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzgzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzODQtICogQHVwOiBpbmRpY2F0ZXMgd2hldGhlciB0aGUgbGluayBpcyBjdXJyZW50bHkgdXAuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDE1PXN0YXRpYyBpcnFyZXR1cm5fdCBwaHlsaW5rX2xpbmtfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQyNS0gKiBwaHlsaW5rX3N0YXJ0KCkgLSBzdGFydCBhIHBoeWxpbmsgaW5zdGFuY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQyNjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDI3LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDg4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3RhcnQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ5MS0gKiBwaHlsaW5rX3N0b3AoKSAtIHN0b3AgYSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0OTI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ5My0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjUyMj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N0b3ApO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUyNS0gKiBwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKCkgLSBibG9jayBQSFkgYWJpbGl0eSB0byBzdG9wIHJlY2VpdmUgY2xvY2sgaW4gTFBJXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI1MjY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUyNy0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjU1MT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NTQtICogcGh5bGlua19yeF9jbGtfc3RvcF91bmJsb2NrKCkgLSB1bmJsb2NrIFBIWSBhYmlsaXR5IHRvIHN0b3AgcmVjZWl2ZSBjbG9ja1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTU1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NTYtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1OTM9c3RhdGljIGJvb2wgcGh5bGlua19waHlfcG1fc3BlZWRfY3RybChzdHJ1Y3QgcGh5bGluayAqcGwpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjAwLSAqIHBoeWxpbmtfc3VzcGVuZCgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2Ugc3VzcGVuZCBldmVudFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjAxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MDItICogQG1hY193b2w6IHRydWUgaWYgdGhlIE1BQyBuZWVkcyB0byByZWNlaXZlIHBhY2tldHMgZm9yIFdha2Utb24tTGFuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjUyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3VzcGVuZCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjU1LSAqIHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUoKSAtIHByZXBhcmUgdG8gcmVzdW1lIGEgbmV0d29yayBkZXZpY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjY1NjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjU3LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjc3PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY4MC0gKiBwaHlsaW5rX3Jlc3VtZSgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2UgcmVzdW1lIGV2ZW50XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2ODE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY4Mi0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjcyMD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Jlc3VtZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzIzLSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfd29sKCkgLSBnZXQgdGhlIHdha2Ugb24gbGFuIHBhcmFtZXRlcnMgZm9yIHRoZSBQSFlcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjcyNDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzI1LSAqIEB3b2w6IGEgcG9pbnRlciB0byBcdTAwMjZzdHJ1Y3QgZXRodG9vbF93b2xpbmZvIHRvIGhvbGQgdGhlIHJlYWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjc1Nz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X3dvbCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzYwLSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfd29sKCkgLSBzZXQgd2FrZSBvbiBsYW4gcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzYxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3NjItICogQHdvbDogYSBwb2ludGVyIHRvIFx1MDAyNnN0cnVjdCBldGh0b29sX3dvbGluZm8gZm9yIHRoZSBkZXNpcmVkIHBhcmFtZXRlcnNcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI4ODk9c3RhdGljIHZvaWQgcGh5bGlua19nZXRfa3NldHRpbmdzKGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjkwNC0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCgpIC0gZ2V0IHRoZSBjdXJyZW50IGxpbmsgc2V0dGluZ3NcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjkwNTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTA2LSAqIEBrc2V0OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyB0byBob2xkIGxpbmsgc2V0dGluZ3Ncbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5NTc9c3RhdGljIGJvb2wgcGh5bGlua192YWxpZGF0ZV9wY3NfaW5iYW5kX2F1dG9uZWcoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3OC0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCgpIC0gc2V0IHRoZSBsaW5rIHNldHRpbmdzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5Nzk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk4MC0gKiBAa3NldDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgZm9yIHRoZSBkZXNpcmVkIG1vZGVzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTQ1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNDgtICogcGh5bGlua19ldGh0b29sX253YXlfcmVzZXQoKSAtIHJlc3RhcnQgbmVnb3RpYXRpb25cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE0OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTUwLSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTcwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzMtICogcGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKCkgLSBnZXQgdGhlIGN1cnJlbnQgcGF1c2UgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTc0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzUtICogQHBhdXNlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTg2PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTg5LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSgpIC0gc2V0IHRoZSBjdXJyZW50IHBhdXNlIHBhcmFtZXRlcnNcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE5MDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTkxLSAqIEBwYXVzZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI3Mj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI3Ni0gKiAgIGNvdW50ZXJcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzI3NzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKS5cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI3OC0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI5NT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2dldF9lZWVfZXJyKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyOTgtICogcGh5bGlua19ldGh0b29sX2dldF9lZWUoKSAtIHJlYWQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjk5OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMDAtICogQGVlZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIHJlYWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzMyMT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X2VlZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzI0LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfZWVlKCkgLSBzZXQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMzI1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMjYtICogQGVlZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIGRlc2lyZWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzQ5NT1zdGF0aWMgaW50IHBoeWxpbmtfbWlpX3dyaXRlKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgaW50IHBoeV9pZCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTMtICogcGh5bGlua19taWlfaW9jdGwoKSAtIGdlbmVyaWMgbWlpIGlvY3RsIGludGVyZmFjZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTE0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTUtICogQGlmcjogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGlmcmVxIGZvciBzb2NrZXQgaW9jdGxzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNTg4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2lvY3RsKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1OTItICogICBsaW5rIHBhcnRuZXJzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM1OTM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzU5NC0gKiBAc3luYzogcGVyZm9ybSBhY3Rpb24gc3luY2hyb25vdXNseVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzYxMz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NwZWVkX2Rvd24pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxNy0gKiAgIHBoeWxpbmtfc3BlZWRfZG93bigpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM2MTg6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxOS0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDM3Mj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9jNDVfcGNzX2dldF9zdGF0ZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzc2LSAqXHRcdFx0XHQgd2hpY2ggbG9zZXMgc3RhdGVcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDM3NzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzc4LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MzkzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcmVwbGF5X2xpbmtfYmVnaW4pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5Ny0gKlx0XHRcdCAgICAgICB3aGljaCBsb3N0IHN0YXRlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQzOTg6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5OS0gKlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03OTk9c3RhdGljIGludCBheDg4NzcyX3BoeWxpbmtfc2V0dXAoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTktXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODIwOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnByaXYtXHUwMDNlcGh5bGlua19jb25maWcsIGRldi1cdTAwM2VuZXQtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MjEtXHRcdFx0XHQgcGh5X2lmX21vZGUsIFx1MDAyNmF4ODg3NzJfcGh5bGlua19tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI3OTk9c3RhdGljIGludCBsYW43OHh4X3BoeWxpbmtfc2V0dXAoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODM4LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODM5Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKHBjLCBkZXYtXHUwMDNlbmV0LVx1MDAzZWRldi5md25vZGUsXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NDAtXHRcdFx0XHQgZGV2LVx1MDAzZWludGVyZmFjZSwgXHUwMDI2bGFuNzh4eF9waHlsaW5rX21hY19vcHMpO1xuLS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTcxOD1pbnQgcGNzX3ByZV9pbml0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MjEtXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3MjI6c3RydWN0IHBoeWxpbmsgKnBoeWxpbmtfY3JlYXRlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqLFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzIzLVx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqLFxuLS1cbm5ldC9kc2EvcG9ydC5jPTE2MTE9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgZHNhX3BvcnRfcGh5bGlua19tYWNfb3BzID0ge1xuLS1cbm5ldC9kc2EvcG9ydC5jLTE2MTYtXG5uZXQvZHNhL3BvcnQuYzoxNjE3OmludCBkc2FfcG9ydF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZHNhX3BvcnQgKmRwKVxubmV0L2RzYS9wb3J0LmMtMTYxOC17XG4tLVxubmV0L2RzYS9wb3J0LmMtMTY0Ni1cbm5ldC9kc2EvcG9ydC5jOjE2NDc6XHRwbCA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNmRwLVx1MDAzZXBsX2NvbmZpZywgb2ZfZndub2RlX2hhbmRsZShkcC1cdTAwM2VkbiksIG1vZGUsXG5uZXQvZHNhL3BvcnQuYy0xNjQ4LVx0XHRcdCAgICBtYWNfb3BzKTtcbi0tXG5uZXQvZHNhL3BvcnQuYz0xNjY1PXN0YXRpYyBpbnQgZHNhX3NoYXJlZF9wb3J0X3BoeWxpbmtfcmVnaXN0ZXIoc3RydWN0IGRzYV9wb3J0ICpkcClcbi0tXG5uZXQvZHNhL3BvcnQuYy0xNjczLVxubmV0L2RzYS9wb3J0LmM6MTY3NDpcdGVyciA9IGRzYV9wb3J0X3BoeWxpbmtfY3JlYXRlKGRwKTtcbm5ldC9kc2EvcG9ydC5jLTE2NzUtXHRpZiAoZXJyKVxuLS1cbm5ldC9kc2EvcG9ydC5oPTEwMD1pbnQgZHNhX3BvcnRfbXJwX2RlbF9yaW5nX3JvbGUoY29uc3Qgc3RydWN0IGRzYV9wb3J0ICpkcCxcbm5ldC9kc2EvcG9ydC5oLTEwMS1cdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHN3aXRjaGRldl9vYmpfcmluZ19yb2xlX21ycCAqbXJwKTtcbm5ldC9kc2EvcG9ydC5oOjEwMjppbnQgZHNhX3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IGRzYV9wb3J0ICpkcCk7XG5uZXQvZHNhL3BvcnQuaC0xMDMtdm9pZCBkc2FfcG9ydF9waHlsaW5rX2Rlc3Ryb3koc3RydWN0IGRzYV9wb3J0ICpkcCk7XG4tLVxubmV0L2RzYS91c2VyLmM9MjY1ND1zdGF0aWMgaW50IGRzYV91c2VyX3BoeV9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqdXNlcl9kZXYpXG4tLVxubmV0L2RzYS91c2VyLmMtMjY3My1cbm5ldC9kc2EvdXNlci5jOjI2NzQ6XHRyZXQgPSBkc2FfcG9ydF9waHlsaW5rX2NyZWF0ZShkcCk7XG5uZXQvZHNhL3VzZXIuYy0yNjc1LVx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxNjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTcwMgoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDcxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aCBGdXp6aW5nPyBBIERlZXAgRGl2ZSBpbnRvIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgUmVhY2hhYmlsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7V29ydGggRnV6emluZz8mIzM0OyBUaGUgcHJvbXB0IGdpdmVzIG1lIGEgY2xlYXIgZGlyZWN0aXZlOiBpZiB0aGUgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2l0aCBlbXVsYXRlZCBoYXJkd2FyZSwgdGhlbiBpdCYjMzk7cyBhIG5vLWdvLiBMZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKRmlyc3QsIEkgc2VlIHRoYXQgdGhpcyBwYXRjaCBkZWFscyB3aXRoIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCB3aXRoaW4gcGh5bGluay4gSSBrbm93IHBoeWxpbmssIGl0JiMzOTtzIGNvcmUgbmV0d29ya2luZyBzdHVmZiwgc28gYW55IGNoYW5nZSBoZXJlIHBpcXVlcyBteSBpbnRlcmVzdC4gVGhlIHBhdGNoIGl0c2VsZiBzZWVtcyBzbWFsbCwgcHJpbWFyaWx5IGFkZGluZyB0aGlzIG1vZGUgdG8gYSBzd2l0Y2ggc3RhdGVtZW50IHdpdGhpbiBjb3JlIHBoeWxpbmsgZnVuY3Rpb25zOiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgLCBgcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGVgLCBgcGh5bGlua19taWlfYzIyX3Bjc19lbmNvZGVfYWR2ZXJ0aXNlbWVudGAsIGFuZCBgcGh5bGlua19nZXRfbGlua190aW1lcl9uc2AuIFRoZXNlIGFyZSBhbGwgZnVuY3Rpb25zIGNhbGxlZCBieSBNQUMgYW5kIFBDUyBkcml2ZXJzLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogY2FuIEkgdHJpZ2dlciBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSSBzdGFydCB0aGlua2luZyBhYm91dCB0aGUgd2F5cyBVU0IgZGV2aWNlcyBjYW4gYmUgdXNlZCBpbiBhIHZpcnR1YWwgc2V0dGluZy4gSSBrbm93IGBzeXprYWxsZXJgIGNhbiBlbXVsYXRlIFVTQiB1c2luZyBgZHVtbXlfaGNkYCBvciBgcmF3LWdhZGdldGAsIHNvIFVTQiBkZXZpY2VzICphcmUqIHJlYWNoYWJsZS4gSSBxdWlja2x5IGNoZWNrIGEgY291cGxlIG9mIFVTQiBkcml2ZXJzIEkga25vdywgYGFzaXhfZGV2aWNlcy5jYCBhbmQgYGxhbjc4eHguY2AuIE5laXRoZXIgb2YgdGhlc2UgZGlyZWN0bHkgdXNlIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCwgd2hpY2ggbWFrZXMgbWUgcGF1c2UuIFRoZW4gSSBzdGFydCB0aGlua2luZyBhYm91dCBQSFkgZHJpdmVycyBtb3JlIGdlbmVyYWxseS4gSSByZWNhbGwgYHFjYTgwN3guY2AsIGFuZCB0aGF0IFBIWSBkcml2ZXJzIHR5cGljYWxseSB1c2UgTURJTy4gSSBrbm93IE1ESU8gYnVzZXMgY2FuIHNvbWV0aW1lcyBiZSBlbXVsYXRlZCwgYnV0IHVzdWFsbHkgdGhleSBhcmUgdGllZCB0byByZWFsIGhhcmR3YXJlLiBUaGlzIHNwZWNpZmljIG1vZGUgaXMgbGlrZWx5IHNldCBieSBkZXZpY2UgdHJlZSwgQUNQSSwgb3IgaGFyZGNvZGVkIGluIHRoZSBkcml2ZXIuCgpUaGUgY29yZSBvZiB0aGUgaXNzdWU6IGlzIHRoaXMgc3dpdGNoIHN0YXRlbWVudCBjYXNlLCBzcGVjaWZpY2FsbHkgZm9yIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCwgYWN0dWFsbHkgKnJlYWNoYWJsZSo/ICBFdmVuIGlmIEkgKmNvdWxkKiBlbXVsYXRlIGEgTUFDL1BIWSBjYXBhYmxlIG9mIHVzaW5nIGBQU0dNSUlgLCBpcyB0aGVyZSBhIG1lY2hhbmlzbSB0byBjb25maWd1cmUgYSB2aXJ0dWFsIGRldmljZSB0byAqdXNlKiB0aGF0IHBhcnRpY3VsYXIgaW50ZXJmYWNlIG1vZGU/ICBMaWtlbHkgbm90LiBJIHdvdWxkIG5lZWQgYSB3YXkgdG8gaW5zdGFudGlhdGUgYSBQSFkgb3IgTUFDIHdpdGggdGhpcyBtb2RlIHZpYSBzb21ldGhpbmcgbGlrZSBuZXRsaW5rLCBidXQgdGhhdCBzZWVtcyBleHRyZW1lbHkgdW5saWtlbHkgZ2l2ZW4gdGhhdCBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaXMgcHJpbWFyaWx5IGEgaGFyZHdhcmUgcHJvcGVydHkuCgpTbywgdGhpcyBtb2RlLCBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAsIGlzICpwcm9iYWJseSogdW5yZWFjaGFibGUgaW4gbXkgc3RhbmRhcmQgdmlydHVhbCBzZXR1cC4gTXkgY29uY2x1c2lvbiBpcyB0aGF0IHVubGVzcyB0aGVyZSYjMzk7cyBhIHNwZWNpZmljLCB1bmNvbW1vbiwgYW5kIGVtdWxhdGVkIGhhcmR3YXJlIHNjZW5hcmlvLCB0aGlzIGNvZGUgcGF0aCwgYXQgbGVhc3QgdGhlIHNwZWNpZmljIGNhc2UgZm9yIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCB3aXRoaW4gdGhvc2Ugc3dpdGNoIHN0YXRlbWVudHMsIGlzIGxpa2VseSBkZWFkIGNvZGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gSG93ZXZlciwgdGhlIGZ1bmN0aW9ucyBtb2RpZmllZCwgYXJlIGNvcmUgcGh5bGluayBmdW5jdGlvbnMgYW5kIGNvdWxkIGJlIHJlYWNoZWQgd2l0aCBvdGhlciB2YWx1ZXMuClRoZSBmYWN0IHRoYXQgdGhpcyBpcyBqdXN0IGFuIGVudW0gdmFsdWUgaXMga2V5OyBpdCYjMzk7cyB0aGUgKnVzYWdlKiBvZiB0aGF0IGVudW0gdGhhdCBtYXR0ZXJzLgoKSSBzaG91bGQgcHJvYmFibHkgY29uZmlybSBpZiB0aGVyZSBpcyBhIHdheSB0byBzZXQgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGZyb20gdXNlcnNwYWNlLCBqdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTY6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdD0yMzg9U29tZSBvZiB0aGUgaW50ZXJmYWNlIG1vZGVzIGFyZSBkZXNjcmliZWQgYmVsb3c6XG4tLVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3QtMzI1LVxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3Q6MzI2OmBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWBgXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC0zMjctICAgIFRoaXMgaXMgdGhlIFBlbnRhIFNHTUlJIG1vZGUsIGl0IGlzIHNpbWlsYXIgdG8gUVNHTUlJIGJ1dCBpdCBjb21iaW5lcyA1XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM9MTU5PWludCBwaHlfaW50ZXJmYWNlX251bV9wb3J0cyhwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMS1cdFx0cmV0dXJuIDQ7XG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzoyMDI6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0yMDMtXHRcdHJldHVybiA1O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jPTI5ND11bnNpZ25lZCBsb25nIHBoeV9jYXBzX2Zyb21faW50ZXJmYWNlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMzEwLVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYzozMTE6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTItXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzg9c3RhdGljIGludCBwaHlsaW5rX2ludGVyZmFjZV9tYXhfc3BlZWQocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1OS1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjA6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MS1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTc3ND1zdGF0aWMgaW50IHBoeWxpbmtfcGFyc2VfbW9kZShzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MDgtXHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4MDk6XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODEwLVx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQyLVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwNDM6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDQtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MTU1PXZvaWQgcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MTg2LVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQxODc6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQxODgtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MjUxPWludCBwaHlsaW5rX21paV9jMjJfcGNzX2VuY29kZV9hZHZlcnRpc2VtZW50KHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MjY3LVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQyNjg6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQyNjktXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTQ5MD1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfcHJvYmVfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01NDktXHRcdGlmICghc3RyY2FzZWNtcChwYWNrYWdlX21vZGVfbmFtZSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTA6XHRcdFx0XHRwaHlfbW9kZXMoUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSkpKVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU1MTpcdFx0XHRwcml2LVx1MDAzZXBhY2thZ2VfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTUyLVx0XHRlbHNlIGlmICghc3RyY2FzZWNtcChwYWNrYWdlX21vZGVfbmFtZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM9NTYyPXN0YXRpYyBpbnQgcWNhODA3eF9waHlfcGFja2FnZV9jb25maWdfaW5pdF9vbmNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4NS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTg2Olx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4Ny1cdGRlZmF1bHQ6XG4tLVxuaW5jbHVkZS9saW51eC9waHkuaD01Mz1leHRlcm4gY29uc3QgaW50IHBoeV9iYXNpY19wb3J0c19hcnJheVszXTtcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTg5LSAqIEBQSFlfSU5URVJGQUNFX01PREVfTU9DQTogTXVsdGltZWRpYSBvdmVyIENvYXhcbmluY2x1ZGUvbGludXgvcGh5Lmg6OTA6ICogQFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6IFBlbnRhIFNHTUlJXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTkxLSAqIEBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOiBRdWFkIFNHTUlJXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaD0xMTQ9dHlwZWRlZiBlbnVtIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTEzMi1cdFBIWV9JTlRFUkZBQ0VfTU9ERV9NT0NBLFxuaW5jbHVkZS9saW51eC9waHkuaDoxMzM6XHRQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJLFxuaW5jbHVkZS9saW51eC9waHkuaC0xMzQtXHRQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJLFxuLS1cbmluY2x1ZGUvbGludXgvcGh5Lmg9MjEwPXN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqcGh5X21vZGVzKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaC0yNDgtXHRcdHJldHVybiBcJiMzNDttb2NhXCYjMzQ7O1xuaW5jbHVkZS9saW51eC9waHkuaDoyNDk6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5pbmNsdWRlL2xpbnV4L3BoeS5oLTI1MC1cdFx0cmV0dXJuIFwmIzM0O3BzZ21paVwmIzM0Oztcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaD03OTA9c3RhdGljIGlubGluZSBpbnQgcGh5bGlua19nZXRfbGlua190aW1lcl9ucyhwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTc5My1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg6Nzk0Olx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzk1LVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxNjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjg4NQoJCQkJCQkJb3V0cHV0OiAxOAoJCQkJCQkJdGhvdWdodHM6IDE5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaW4gYSBWaXJ0dWFsaXplZCBDb250ZXh0KioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gdGhpcyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgY29uc3RhbnQsIGFuZCBJIHNlZSBpdCYjMzk7cyBvbmx5IGV4cGxpY2l0bHkgdXNlZCB3aXRoaW4gYHFjYTgwN3guY2AuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgY29kZSBwYXRoLCBzcGVjaWZpY2FsbHkgdGhlIG5ld2x5IGFkZGVkIGNhc2VzIGZvciB0aGlzIG1vZGUsIGNhbiBldmVuIGJlICpyZWFjaGVkKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBJdCBzZWVtcyB1bmxpa2VseSwgcmlnaHQ/IElmIG5vIHZpcnR1YWwgbmV0d29yayBkcml2ZXIgbWFrZXMgdXNlIG9mIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCwgdGhlbiB0aG9zZSBuZXcgY2FzZSBicmFuY2hlcyBhcmUgZWZmZWN0aXZlbHkgZGVhZCBjb2RlLCBhdCBsZWFzdCBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQuCgpUaGUgbmV4dCB0aGluZyBJJiMzOTttIGNvbnNpZGVyaW5nIGlzIHdoZXRoZXIgYHBoeV9pbnRlcmZhY2VfdGAgaXMgZXZlbiBzb21ldGhpbmcgdGhhdCYjMzk7cyBjb25maWd1cmFibGUgZnJvbSB1c2Vyc3BhY2UsIGVpdGhlciB0aHJvdWdoIG5ldGxpbmsgb3IgZXRodG9vbC4gVHlwaWNhbGx5LCB0aGF0IHR5cGUgb2YgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24gaXMgYSBoYXJkd2FyZSBwcm9wZXJ0eSBhbmQgaXMgbWFuYWdlZCBkZWVwZXIgZG93biwgb2Z0ZW4gc2V0IGR1cmluZyBkcml2ZXIgaW5pdGlhbGl6YXRpb24uIERldmljZSB0cmVlIG92ZXJsYXlzIG1pZ2h0IG9mZmVyIGEgd29ya2Fyb3VuZCBvciBzcGVjaWZpYyBkZWJ1Z2ZzL3N5c2ZzIGludGVyZmFjZXMgKmNvdWxkKiBwb3RlbnRpYWxseSBhbGxvdyBzb21lIGNvbnRyb2wsIGJ1dCBldmVuIHRoYXQgcmVxdWlyZXMgYSBkcml2ZXIgdG8gaGF2ZSBpbXBsZW1lbnRlZCB0aGF0IGtpbmQgb2YgdXNlci1zcGFjZSBpbnRlcmZhY2UuCgpXYWl0LCBsb29raW5nIGF0IHRoZSBjb21tb24gdmlydHVhbCBuZXR3b3JrIGRldmljZXMgbGlrZSBgdHVuYCwgYHZldGhgLCBhbmQgYG5ldGRldnNpbWAsIEkmIzM5O20gcmVhbGl6aW5nIHRoZXkgZG9uJiMzOTt0IGV2ZW4gdXNlIGBwaHlsaW5rYC4gQW5kIHNwZWNpZmljYWxseSwgYG5ldGRldnNpbWAgaXNuJiMzOTt0IHVzaW5nIGBwaHlsaW5rYCBhdCBhbGwuIFRoaXMgZnVydGhlciByZWluZm9yY2VzIG15IGluaXRpYWwgc3VzcGljaW9uIHRoYXQgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBjb2RlIHRoYXQmIzM5O3MgZnVuZGFtZW50YWxseSBoYXJkd2FyZS1kZXBlbmRlbnQgYW5kIHRoZXJlZm9yZSwgcG90ZW50aWFsbHkgdW5yZWFjaGFibGUgaW4gYSBmdWxseSB2aXJ0dWFsaXplZCBzZXR0aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxNjoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlsaW5rX2NyZWF0ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0PTc0PXRoaXMgZG9jdW1lbnRhdGlvbi5cbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTM2My1cbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q6MzY0Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnByaXYtXHUwMDNlcGh5bGlua19jb25maWcsIG5vZGUsIHBoeV9tb2RlLCBcdTAwMjZwaHlsaW5rX29wcyk7XG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTM2NS1cdGlmIChJU19FUlIocGh5bGluaykpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM9MTEyOD1zdGF0aWMgaW50IGFsdGVyYV90c2VfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTQxNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYzoxNDE2Olx0cHJpdi1cdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cHJpdi1cdTAwM2VwaHlsaW5rX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNDE3LVx0XHRcdFx0ICAgICAgIG9mX2Z3bm9kZV9oYW5kbGUocHJpdi1cdTAwM2VkZXZpY2UtXHUwMDNlb2Zfbm9kZSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYz0xMDc0PXN0YXRpYyBpbnQgYWc3MXh4X3BoeWxpbmtfc2V0dXAoc3RydWN0IGFnNzF4eCAqYWcpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMTA4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxMTA5Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNmFnLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBhZy1cdTAwM2VwZGV2LVx1MDAzZWRldi5md25vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTExMTAtXHRcdFx0XHQgYWctXHUwMDNlcGh5X2lmX21vZGUsIFx1MDAyNmFnNzF4eF9waHlsaW5rX21hY19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9MTAyMz1zdGF0aWMgaW50IG1hY2JfbWlpX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMDg2Olx0YnAtXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNmJwLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBicC1cdTAwM2VwZGV2LVx1MDAzZWRldi5md25vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwODctXHRcdFx0XHQgICAgIGJwLVx1MDAzZXBoeV9pbnRlcmZhY2UsIFx1MDAyNm1hY2JfcGh5bGlua19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmM9MjAxPXN0YXRpYyBpbnQgZHBhYV9uZXRkZXZfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0X2Rldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI3NC1cdG1hY19kZXYtXHUwMDNldXBkYXRlX3NwZWVkID0gZHBhYV9ldGhfY2dyX3NldF9zcGVlZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmM6Mjc1Olx0bWFjX2Rldi1cdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2bWFjX2Rldi1cdTAwM2VwaHlsaW5rX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmMtMjc2LVx0XHRcdFx0XHQgIGRldl9md25vZGUobWFjX2Rldi1cdTAwM2VkZXYpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYz01NjA9aW50IGRwYWEyX21hY19jb25uZWN0KHN0cnVjdCBkcGFhMl9tYWMgKm1hYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNjI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jOjYyNTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZtYWMtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNjI2LVx0XHRcdFx0IGRwbWFjX25vZGUsIG1hYy1cdTAwM2VpZl9tb2RlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYz05NzE9c3RhdGljIGludCBlbmV0YzRfbGlua19pbml0KHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk4OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5OTA6XHRlcnIgPSBlbmV0Y19waHlsaW5rX2NyZWF0ZShwcml2LCBub2RlLCBcdTAwMjZlbmV0Y19wbF9tYWNfb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTEtXHRpZiAoZXJyKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTkyLVx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7RmFpbGVkIHRvIGNyZWF0ZSBwaHlsaW5rXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5OTM6XHRcdGdvdG8gZXJyX3BoeWxpbmtfY3JlYXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5NC1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTk3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjk5ODplcnJfcGh5bGlua19jcmVhdGU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTk5LVx0ZW5ldGNfbWRpb2J1c19kZXN0cm95KHBmKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYz04NDc9c3RhdGljIGludCBlbmV0Y19wZl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05MjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo5MzA6XHRlcnIgPSBlbmV0Y19waHlsaW5rX2NyZWF0ZShwcml2LCBub2RlLCBcdTAwMjZlbmV0Y19tYWNfcGh5bGlua19vcHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTMxLVx0aWYgKGVycilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjkzMjpcdFx0Z290byBlcnJfcGh5bGlua19jcmVhdGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05MzMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTQxLVx0ZW5ldGNfcGh5bGlua19kZXN0cm95KHByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6OTQyOmVycl9waHlsaW5rX2NyZWF0ZTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTk0My1cdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jPTMxMj1FWFBPUlRfU1lNQk9MX0dQTChlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTMxMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozMTQ6aW50IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zMTUtXHRcdFx0IGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgKm9wcylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzM3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjMzODpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwZi1cdTAwM2VwaHlsaW5rX2NvbmZpZywgb2ZfZndub2RlX2hhbmRsZShub2RlKSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zMzktXHRcdFx0XHQgcGYtXHUwMDNlaWZfbW9kZSwgb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzQ4LX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozNDk6RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfcGh5bGlua19jcmVhdGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTM1MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmg9MTI9dm9pZCBlbmV0Y19tZGlvYnVzX2Rlc3Ryb3koc3RydWN0IGVuZXRjX3BmICpwZik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmg6MTM6aW50IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaC0xNC1cdFx0XHQgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYz04NTM9c3RhdGljIGludCBmc19lbmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jLTkzMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jOjkzMzpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZmZXAtXHUwMDNlcGh5bGlua19jb25maWcsIGRldl9md25vZGUoZmVwLVx1MDAzZWRldiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYy05MzQtXHRcdFx0XHQgcGh5X21vZGUsIFx1MDAyNmZzX2VuZXRfcGh5bGlua19tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYz0zNDE5PXN0YXRpYyBpbnQgdWNjX2dldGhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSogb2ZkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmMtMzU3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jOjM1NzQ6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2dWdldGgtXHUwMDNlcGh5bGlua19jb25maWcsIGRldl9md25vZGUoXHUwMDI2ZGV2LVx1MDAzZWRldiksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYy0zNTc1LVx0XHRcdFx0IHBoeV9pbnRlcmZhY2UsIFx1MDAyNnVnZXRoX21hY19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmM9NTQ4MD1zdGF0aWMgaW50IG12bmV0YV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmMtNTU5OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmM6NTU5OTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYy01NjAwLVx0XHRcdFx0IHBoeV9tb2RlLCBcdTAwMjZtdm5ldGFfcGh5bGlua19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jPTY4NDA9c3RhdGljIGludCBtdnBwMl9wb3J0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmMtNzE0Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jOjcxNDg6XHRcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwb3J0LVx1MDAzZXBoeWxpbmtfY29uZmlnLCBwb3J0X2Z3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTcxNDktXHRcdFx0XHRcdCBwaHlfbW9kZSwgXHUwMDI2bXZwcDJfcGh5bGlua19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jPTM3MD1zdGF0aWMgaW50IHByZXN0ZXJhX3BvcnRfc2ZwX2JpbmQoc3RydWN0IHByZXN0ZXJhX3BvcnQgKnBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmMtNDE2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmM6NDE3Olx0XHRwaHlfbGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnBvcnQtXHUwMDNlcGh5X2NvbmZpZywgZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmMtNDE4LVx0XHRcdFx0XHQgIFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jPTQ4MjM9c3RhdGljIGludCBtdGtfYWRkX21hYyhzdHJ1Y3QgbXRrX2V0aCAqZXRoLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmMtNDk2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6NDk2ODpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZtYWMtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTQ5NjktXHRcdFx0XHQgb2ZfZndub2RlX2hhbmRsZShtYWMtXHUwMDNlb2Zfbm9kZSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYz03NDY9c3RydWN0IG5ldF9kZXZpY2UgKmZibmljX25ldGRldl9hbGxvYyhzdHJ1Y3QgZmJuaWNfZGV2ICpmYmQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy04MzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jOjgzNTpcdGlmIChmYm5pY19waHlsaW5rX2NyZWF0ZShuZXRkZXYpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jLTgzNi1cdFx0ZnJlZV9uZXRkZXYobmV0ZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oPTExMT1pbnQgZmJuaWNfcGh5bGlua19nZXRfZmVjcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmgtMTEyLVx0XHRcdCAgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNwYXJhbSAqZmVjcGFyYW0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaDoxMTM6aW50IGZibmljX3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaC0xMTQtdm9pZCBmYm5pY19waHlsaW5rX2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM9MTc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGZibmljX3BoeWxpbmtfbWFjX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0xODYtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYzoxODc6ICogZmJuaWNfcGh5bGlua19jcmVhdGUgLSBQaHlsaW5rIGRldmljZSBjcmVhdGlvblxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTg4LSAqIEBuZXRkZXY6IE5ldHdvcmsgRGV2aWNlIHN0cnVjdCB0byBhdHRhY2ggcGh5bGluayBkZXZpY2Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0xOTYtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MTk3OmludCBmYm5pY19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTk4LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0yMzEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYzoyMzI6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2ZmJuLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBOVUxMLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMjMzLVx0XHRcdFx0IGZibmljX3BoeWxpbmtfc2VsZWN0X2ludGVyZmFjZShmYm4tXHUwMDNlYXVpKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzE0Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBsYW43NDN4X3BoeWxpbmtfbWFjX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzE0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMTUwOnN0YXRpYyBpbnQgbGFuNzQzeF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbGFuNzQzeF9hZGFwdGVyICphZGFwdGVyKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxNTEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjMxOTM6XHRwbCA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNmFkYXB0ZXItXHUwMDNlcGh5bGlua19jb25maWcsIE5VTEwsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzE5NC1cdFx0XHQgICAgYWRhcHRlci1cdTAwM2VwaHlfaW50ZXJmYWNlLCBcdTAwMjZsYW43NDN4X3BoeWxpbmtfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTM2NjQ9c3RhdGljIGludCBsYW43NDN4X3BjaWRldl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzcyMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozNzI0Olx0cmV0ID0gbGFuNzQzeF9waHlsaW5rX2NyZWF0ZShhZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNzI1LVx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jPTc5MT1zdGF0aWMgaW50IGxhbjk2NnhfcHJvYmVfcG9ydChzdHJ1Y3QgbGFuOTY2eCAqbGFuOTY2eCwgdTMyIHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmMtODU1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmM6ODU2Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnBvcnQtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYy04NTctXHRcdFx0XHQgcG9ydG5wLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYz0zMTI9c3RhdGljIGludCBzcGFyeDVfY3JlYXRlX3BvcnQoc3RydWN0IHNwYXJ4NSAqc3Bhcng1LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYy0zODgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM6Mzg5Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnNweDVfcG9ydC1cdTAwM2VwaHlsaW5rX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYy0zOTAtXHRcdFx0XHQgb2ZfZndub2RlX2hhbmRsZShjb25maWctXHUwMDNlbm9kZSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM9MTc3ND1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBvY2Vsb3RfcGh5bGlua19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTc3OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jOjE3ODA6c3RhdGljIGludCBvY2Vsb3RfcG9ydF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTc4MS1cdFx0XHRcdCAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqcG9ydG5wKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4MjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxODIxOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnByaXYtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODIyLVx0XHRcdFx0IG9mX2Z3bm9kZV9oYW5kbGUocG9ydG5wKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYz0xODQzPWludCBvY2Vsb3RfcHJvYmVfcG9ydChzdHJ1Y3Qgb2NlbG90ICpvY2Vsb3QsIGludCBwb3J0LCBzdHJ1Y3QgcmVnbWFwICp0YXJnZXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTg3OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jOjE4ODA6XHRlcnIgPSBvY2Vsb3RfcG9ydF9waHlsaW5rX2NyZWF0ZShvY2Vsb3QsIHBvcnQsIHBvcnRucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODgxLVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTEzNzA9c3RhdGljIGludCBzdG1tYWNfcGh5bGlua19zZXR1cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNDYxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoxNDYyOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgZGV2X2Z3bm9kZShwcml2LVx1MDAzZWRldmljZSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE0NjMtXHRcdFx0XHQgcHJpdi1cdTAwM2VwbGF0LVx1MDAzZXBoeV9pbnRlcmZhY2UsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmM9NDU9aW50IHRuNDBfcGh5X3JlZ2lzdGVyKHN0cnVjdCB0bjQwX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmMtNjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYzo2MzpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIFBIWV9JTlRFUkZBQ0VfTU9ERV9YQVVJLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmMtNjQtXHRcdFx0XHQgXHUwMDI2dG40MF9tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jPTI3NTc9YW02NV9jcHN3X251c3NfaW5pdF9wb3J0X25kZXYoc3RydWN0IGFtNjVfY3Bzd19jb21tb24gKmNvbW1vbiwgdTMyIHBvcnRfaWR4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMjg0MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmM6Mjg0MjpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwb3J0LVx1MDAzZXNsYXZlLnBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYy0yODQzLVx0XHRcdFx0IG9mX2Z3bm9kZV9oYW5kbGUocG9ydC1cdTAwM2VzbGF2ZS5wb3J0X25wKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmM9MTMwPXN0YXRpYyBpbnQgbmdiZV9waHlsaW5rX2luaXQoc3RydWN0IHd4ICp3eClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmMtMTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jOjE1MDpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIHBoeV9tb2RlLCBcdTAwMjZuZ2JlX21hY19vcHMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jLTE1MS1cdGlmIChJU19FUlIocGh5bGluaykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYz00ODI9aW50IHR4Z2JlX3BoeWxpbmtfaW5pdF9hbWwoc3RydWN0IHR4Z2JlICp0eGdiZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTUxMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM6NTEzOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgTlVMTCwgcGh5X21vZGUsIFx1MDAyNnR4Z2JlX21hY19vcHNfYW1sKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmMtNTE0LVx0aWYgKElTX0VSUihwaHlsaW5rKSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jPTI2OD1zdGF0aWMgaW50IHR4Z2JlX3BoeWxpbmtfaW5pdChzdHJ1Y3QgdHhnYmUgKnR4Z2JlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmMtMjkyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYzoyOTM6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBmd25vZGUsIHBoeV9tb2RlLCBcdTAwMjZ0eGdiZV9tYWNfb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmMtMjk0LVx0aWYgKElTX0VSUihwaHlsaW5rKSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jPTI3OTU9c3RhdGljIGludCBheGllbmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYzozMTE4Olx0bHAtXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNmxwLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBwZGV2LVx1MDAzZWRldi5md25vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMTktXHRcdFx0XHQgICAgIGxwLVx1MDAzZXBoeV9tb2RlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzEyMi1cdFx0cmV0ID0gUFRSX0VSUihscC1cdTAwM2VwaHlsaW5rKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzEyMzpcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7cGh5bGlua19jcmVhdGUgZXJyb3IgKCVpKVxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzEyNC1cdFx0Z290byBjbGVhbnVwX21kaW87XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz01MTY9c3RhdGljIGludCBwaHlsaW5rX3ZhbGlkYXRlX21hY19hbmRfcGNzKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTUzMS1cdGlmIChwY3MpIHtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NTMyOlx0XHQvKiBUaGUgUENTLCBpZiBwcmVzZW50LCBtdXN0IGJlIHNldHVwIGJlZm9yZSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTUzMy1cdFx0ICogaGFzIGJlZW4gY2FsbGVkLiBJZiB0aGUgb3BzIGlzIG5vdCBpbml0aWFsaXNlZCwgcHJpbnQgYW5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTEwMzk9c3RhdGljIGVudW0gaW5iYW5kX3R5cGUgcGh5bGlua19nZXRfaW5iYW5kX3R5cGUocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzEtICogcGh5bGlua19wY3NfbmVnX21vZGUoKSAtIGhlbHBlciB0byBkZXRlcm1pbmUgUENTIGluYmFuZCBtb2RlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwNzI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA3My0gKiBAcGNzOiBhIHBvaW50ZXIgdG8gXHUwMDI2c3RydWN0IHBoeWxpbmtfcGNzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xNzY5PXN0YXRpYyBpbnQgcGh5bGlua19yZWdpc3Rlcl9zZnAoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc5My0gKiBwaHlsaW5rX3NldF9maXhlZF9saW5rKCkgLSBzZXQgdGhlIGZpeGVkIGxpbmtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTc5NDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzk1LSAqIEBzdGF0ZTogYSBwb2ludGVyIHRvIGEgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE4MzE9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zZXRfZml4ZWRfbGluayk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODMzLS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODM0OiAqIHBoeWxpbmtfY3JlYXRlKCkgLSBjcmVhdGUgYSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4MzUtICogQGNvbmZpZzogYSBwb2ludGVyIHRvIHRoZSB0YXJnZXQgXHUwMDI2c3RydWN0IHBoeWxpbmtfY29uZmlnXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODQ4LSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODQ5OnN0cnVjdCBwaHlsaW5rICpwaHlsaW5rX2NyZWF0ZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg1MC1cdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MzYtfVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTM3OkVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfY3JlYXRlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTkzOC1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NDAtICogcGh5bGlua19kZXN0cm95KCkgLSBjbGVhbnVwIGFuZCBkZXN0cm95IHRoZSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5NDE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk0Mi0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTk1Nz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Rlc3Ryb3kpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk2MC0gKiBwaHlsaW5rX2V4cGVjdHNfcGh5KCkgLSBEZXRlcm1pbmUgaWYgcGh5bGluayBleHBlY3RzIGEgcGh5IHRvIGJlIGF0dGFjaGVkXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5NjE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk2Mi0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjIwNj1zdGF0aWMgaW50IHBoeWxpbmtfYXR0YWNoX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjI2LSAqIHBoeWxpbmtfY29ubmVjdF9waHkoKSAtIGNvbm5lY3QgYSBQSFkgdG8gdGhlIHBoeWxpbmsgaW5zdGFuY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjIyNzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjI4LSAqIEBwaHk6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlfZGV2aWNlLlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjI2MD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Nvbm5lY3RfcGh5KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNjMtICogcGh5bGlua19vZl9waHlfY29ubmVjdCgpIC0gY29ubmVjdCB0aGUgUEhZIHNwZWNpZmllZCBpbiB0aGUgRFQgbW9kZS5cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI2NDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjY1LSAqIEBkbjogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGRldmljZV9ub2RlLlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjI3OT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX29mX3BoeV9jb25uZWN0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyODItICogcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QoKSAtIGNvbm5lY3QgdGhlIFBIWSBzcGVjaWZpZWQgaW4gdGhlIGZ3bm9kZS5cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI4MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjg0LSAqIEBmd25vZGU6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBmd25vZGVfaGFuZGxlLlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjMzOD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzQyLSAqICAgaW5zdGFuY2UuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIzNDM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM0NC0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjM3Mz1zdGF0aWMgdm9pZCBwaHlsaW5rX2xpbmtfY2hhbmdlZChzdHJ1Y3QgcGh5bGluayAqcGwsIGJvb2wgdXAsIGNvbnN0IGNoYXIgKndoYXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzgyLSAqIHBoeWxpbmtfbWFjX2NoYW5nZSgpIC0gbm90aWZ5IHBoeWxpbmsgb2YgYSBjaGFuZ2UgaW4gTUFDIHN0YXRlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIzODM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM4NC0gKiBAdXA6IGluZGljYXRlcyB3aGV0aGVyIHRoZSBsaW5rIGlzIGN1cnJlbnRseSB1cC5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0MTU9c3RhdGljIGlycXJldHVybl90IHBoeWxpbmtfbGlua19oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDI1LSAqIHBoeWxpbmtfc3RhcnQoKSAtIHN0YXJ0IGEgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNDI2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0MjctICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0ODg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zdGFydCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDkxLSAqIHBoeWxpbmtfc3RvcCgpIC0gc3RvcCBhIHBoeWxpbmsgaW5zdGFuY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQ5MjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDkzLSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNTIyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3RvcCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTI1LSAqIHBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2soKSAtIGJsb2NrIFBIWSBhYmlsaXR5IHRvIHN0b3AgcmVjZWl2ZSBjbG9jayBpbiBMUElcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjUyNjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTI3LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNTUxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2spO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU1NC0gKiBwaHlsaW5rX3J4X2Nsa19zdG9wX3VuYmxvY2soKSAtIHVuYmxvY2sgUEhZIGFiaWxpdHkgdG8gc3RvcCByZWNlaXZlIGNsb2NrXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI1NTU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU1Ni0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjU5Mz1zdGF0aWMgYm9vbCBwaHlsaW5rX3BoeV9wbV9zcGVlZF9jdHJsKHN0cnVjdCBwaHlsaW5rICpwbClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MDAtICogcGh5bGlua19zdXNwZW5kKCkgLSBoYW5kbGUgYSBuZXR3b3JrIGRldmljZSBzdXNwZW5kIGV2ZW50XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2MDE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjYwMi0gKiBAbWFjX3dvbDogdHJ1ZSBpZiB0aGUgTUFDIG5lZWRzIHRvIHJlY2VpdmUgcGFja2V0cyBmb3IgV2FrZS1vbi1MYW5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI2NTI9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zdXNwZW5kKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2NTUtICogcGh5bGlua19wcmVwYXJlX3Jlc3VtZSgpIC0gcHJlcGFyZSB0byByZXN1bWUgYSBuZXR3b3JrIGRldmljZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjU2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2NTctICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI2Nzc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wcmVwYXJlX3Jlc3VtZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjgwLSAqIHBoeWxpbmtfcmVzdW1lKCkgLSBoYW5kbGUgYSBuZXR3b3JrIGRldmljZSByZXN1bWUgZXZlbnRcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjY4MTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjgyLSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNzIwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcmVzdW1lKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3MjMtICogcGh5bGlua19ldGh0b29sX2dldF93b2woKSAtIGdldCB0aGUgd2FrZSBvbiBsYW4gcGFyYW1ldGVycyBmb3IgdGhlIFBIWVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzI0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3MjUtICogQHdvbDogYSBwb2ludGVyIHRvIFx1MDAyNnN0cnVjdCBldGh0b29sX3dvbGluZm8gdG8gaG9sZCB0aGUgcmVhZCBwYXJhbWV0ZXJzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNzU3PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfd29sKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3NjAtICogcGh5bGlua19ldGh0b29sX3NldF93b2woKSAtIHNldCB3YWtlIG9uIGxhbiBwYXJhbWV0ZXJzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI3NjE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjc2Mi0gKiBAd29sOiBhIHBvaW50ZXIgdG8gXHUwMDI2c3RydWN0IGV0aHRvb2xfd29saW5mbyBmb3IgdGhlIGRlc2lyZWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjg4OT1zdGF0aWMgdm9pZCBwaHlsaW5rX2dldF9rc2V0dGluZ3MoY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTA0LSAqIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3NfZ2V0KCkgLSBnZXQgdGhlIGN1cnJlbnQgbGluayBzZXR0aW5nc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyOTA1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5MDYtICogQGtzZXQ6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzIHRvIGhvbGQgbGluayBzZXR0aW5nc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjk1Nz1zdGF0aWMgYm9vbCBwaHlsaW5rX3ZhbGlkYXRlX3Bjc19pbmJhbmRfYXV0b25lZyhzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTc4LSAqIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KCkgLSBzZXQgdGhlIGxpbmsgc2V0dGluZ3NcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjk3OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTgwLSAqIEBrc2V0OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyBmb3IgdGhlIGRlc2lyZWQgbW9kZXNcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMxNDU9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE0OC0gKiBwaHlsaW5rX2V0aHRvb2xfbndheV9yZXNldCgpIC0gcmVzdGFydCBuZWdvdGlhdGlvblxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTQ5OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNTAtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMxNzA9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX253YXlfcmVzZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE3My0gKiBwaHlsaW5rX2V0aHRvb2xfZ2V0X3BhdXNlcGFyYW0oKSAtIGdldCB0aGUgY3VycmVudCBwYXVzZSBwYXJhbWV0ZXJzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxNzQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE3NS0gKiBAcGF1c2U6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMxODY9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxODktICogcGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKCkgLSBzZXQgdGhlIGN1cnJlbnQgcGF1c2UgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTkwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxOTEtICogQHBhdXNlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMjcyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMjc2LSAqICAgY291bnRlclxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjc3OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpLlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMjc4LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMjk1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZ2V0X2VlZV9lcnIpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI5OC0gKiBwaHlsaW5rX2V0aHRvb2xfZ2V0X2VlZSgpIC0gcmVhZCB0aGUgZW5lcmd5IGVmZmljaWVudCBldGhlcm5ldCBwYXJhbWV0ZXJzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMyOTk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzMwMC0gKiBAZWVlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9rZWVlIGZvciB0aGUgcmVhZCBwYXJhbWV0ZXJzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMzIxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfZWVlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMjQtICogcGh5bGlua19ldGh0b29sX3NldF9lZWUoKSAtIHNldCB0aGUgZW5lcmd5IGVmZmljaWVudCBldGhlcm5ldCBwYXJhbWV0ZXJzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMzMjU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzMyNi0gKiBAZWVlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9rZWVlIGZvciB0aGUgZGVzaXJlZCBwYXJhbWV0ZXJzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNDk1PXN0YXRpYyBpbnQgcGh5bGlua19taWlfd3JpdGUoc3RydWN0IHBoeWxpbmsgKnBsLCB1bnNpZ25lZCBpbnQgcGh5X2lkLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzUxMy0gKiBwaHlsaW5rX21paV9pb2N0bCgpIC0gZ2VuZXJpYyBtaWkgaW9jdGwgaW50ZXJmYWNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM1MTQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzUxNS0gKiBAaWZyOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgaWZyZXEgZm9yIHNvY2tldCBpb2N0bHNcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM1ODg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19taWlfaW9jdGwpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzU5Mi0gKiAgIGxpbmsgcGFydG5lcnNcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzU5MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTk0LSAqIEBzeW5jOiBwZXJmb3JtIGFjdGlvbiBzeW5jaHJvbm91c2x5XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNjEzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3BlZWRfZG93bik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNjE3LSAqICAgcGh5bGlua19zcGVlZF9kb3duKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzYxODogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNjE5LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MzcyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2M0NV9wY3NfZ2V0X3N0YXRlKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzNzYtICpcdFx0XHRcdCB3aGljaCBsb3NlcyBzdGF0ZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0Mzc3OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzNzgtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQzOTM9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19yZXBsYXlfbGlua19iZWdpbik7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzk3LSAqXHRcdFx0ICAgICAgIHdoaWNoIGxvc3Qgc3RhdGVcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDM5ODogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzk5LSAqXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTc5OT1zdGF0aWMgaW50IGF4ODg3NzJfcGh5bGlua19zZXR1cChzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgxOS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjA6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cHJpdi1cdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2LVx1MDAzZW5ldC1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgyMS1cdFx0XHRcdCBwaHlfaWZfbW9kZSwgXHUwMDI2YXg4ODc3Ml9waHlsaW5rX21hY19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9Mjc5OT1zdGF0aWMgaW50IGxhbjc4eHhfcGh5bGlua19zZXR1cChzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4MzgtXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4Mzk6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUocGMsIGRldi1cdTAwM2VuZXQtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjg0MC1cdFx0XHRcdCBkZXYtXHUwMDNlaW50ZXJmYWNlLCBcdTAwMjZsYW43OHh4X3BoeWxpbmtfbWFjX29wcyk7XG4tLVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg9NzE4PWludCBwY3NfcHJlX2luaXQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpO1xuLS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTcyMS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjcyMjpzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICosXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MjMtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICosXG4tLVxubmV0L2RzYS9wb3J0LmM9MTYxMT1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBkc2FfcG9ydF9waHlsaW5rX21hY19vcHMgPSB7XG4tLVxubmV0L2RzYS9wb3J0LmMtMTYxNi1cbm5ldC9kc2EvcG9ydC5jOjE2MTc6aW50IGRzYV9wb3J0X3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBkc2FfcG9ydCAqZHApXG5uZXQvZHNhL3BvcnQuYy0xNjE4LXtcbi0tXG5uZXQvZHNhL3BvcnQuYy0xNjQ2LVxubmV0L2RzYS9wb3J0LmM6MTY0NzpcdHBsID0gcGh5bGlua19jcmVhdGUoXHUwMDI2ZHAtXHUwMDNlcGxfY29uZmlnLCBvZl9md25vZGVfaGFuZGxlKGRwLVx1MDAzZWRuKSwgbW9kZSxcbm5ldC9kc2EvcG9ydC5jLTE2NDgtXHRcdFx0ICAgIG1hY19vcHMpO1xuLS1cbm5ldC9kc2EvcG9ydC5jPTE2NjU9c3RhdGljIGludCBkc2Ffc2hhcmVkX3BvcnRfcGh5bGlua19yZWdpc3RlcihzdHJ1Y3QgZHNhX3BvcnQgKmRwKVxuLS1cbm5ldC9kc2EvcG9ydC5jLTE2NzMtXG5uZXQvZHNhL3BvcnQuYzoxNjc0Olx0ZXJyID0gZHNhX3BvcnRfcGh5bGlua19jcmVhdGUoZHApO1xubmV0L2RzYS9wb3J0LmMtMTY3NS1cdGlmIChlcnIpXG4tLVxubmV0L2RzYS9wb3J0Lmg9MTAwPWludCBkc2FfcG9ydF9tcnBfZGVsX3Jpbmdfcm9sZShjb25zdCBzdHJ1Y3QgZHNhX3BvcnQgKmRwLFxubmV0L2RzYS9wb3J0LmgtMTAxLVx0XHRcdCAgICAgICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9yaW5nX3JvbGVfbXJwICptcnApO1xubmV0L2RzYS9wb3J0Lmg6MTAyOmludCBkc2FfcG9ydF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZHNhX3BvcnQgKmRwKTtcbm5ldC9kc2EvcG9ydC5oLTEwMy12b2lkIGRzYV9wb3J0X3BoeWxpbmtfZGVzdHJveShzdHJ1Y3QgZHNhX3BvcnQgKmRwKTtcbi0tXG5uZXQvZHNhL3VzZXIuYz0yNjU0PXN0YXRpYyBpbnQgZHNhX3VzZXJfcGh5X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICp1c2VyX2Rldilcbi0tXG5uZXQvZHNhL3VzZXIuYy0yNjczLVxubmV0L2RzYS91c2VyLmM6MjY3NDpcdHJldCA9IGRzYV9wb3J0X3BoeWxpbmtfY3JlYXRlKGRwKTtcbm5ldC9kc2EvdXNlci5jLTI2NzUtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxNjoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTEyOQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDUzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgQ29kZSBQYXRoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBjYXNlIGFuZCBpdCYjMzk7cyBmbGFnZ2VkIGFzIGEgY29uY2Vybi4gSXQgc2VlbXMgdGhpcyBtb2RlIGlzICpvbmx5KiB1c2VkIHdpdGhpbiB0aGUgYHFjYTgwN3guY2AgUEhZIGRyaXZlci4gVGhlIGludGVyZXN0aW5nIHBhcnQgaXMgdGhhdCBgcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGVgIGFuZCBgcGh5bGlua19taWlfYzIyX3Bjc19lbmNvZGVfYWR2ZXJ0aXNlbWVudGAgYXJlIGV4cG9ydGVkIGZ1bmN0aW9ucywgYW5kIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlcmUmIzM5O3MgYW55IHdheSBhIHVzZXIsIG9yIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGNhbiBhY3R1YWxseSB0cmlnZ2VyIHRoaXMuCgpNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNvdWxkIGEgdmlydHVhbCBkcml2ZXIgcG90ZW50aWFsbHkgY2FsbCB0aGVzZT8gQnV0LCBubywgbm8gdmlydHVhbCBkcml2ZXIgKmRpcmVjdGx5KiBjYWxscyB0aGVzZSBmdW5jdGlvbnMuIENvdWxkIGEgdXNlciBzb21laG93IHRyaWdnZXIgdGhpcyBjb2RlIHBhdGg/IFBlcmhhcHMgaWYgYSB1c2VyIHdlcmUgdG8gY29uc3RydWN0IGEgZHVtbXkgTURJTyBidXMsIHJlZ2lzdGVyIGEgYHFjYTgwN3hgIFBIWSBvbiBpdCwgYW5kIHRoZW4gY29ubmVjdCB0aGlzIHRvIGEgTUFDIGRyaXZlciB0aGF0IHV0aWxpemVzIGBwaHlsaW5rYCwgbGlrZSB0aGUgYGxhbjc4eHhgIFVTQiBkcml2ZXI/IEJ1dCB0aGVuLCBoYW5nIG9uLCB0aGUgYGxhbjc4eHhgIGRyaXZlciAqaGFyZGNvZGVzKiBgUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUlgLiBBbmQgdGhlIGBheDg4NzcyYCBkcml2ZXIsIHRvbywganVzdCBoYXJkY29kZXMgZWl0aGVyIGBQSFlfSU5URVJGQUNFX01PREVfTUlJYCBvciBgUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUlgLiBUaGlzIGlzIGEgZGVhZCBlbmQuIEluIG90aGVyIHdvcmRzLCB0aGVzZSBkcml2ZXJzIHdpbGwgbmV2ZXIgYWxsb3cgdGhlIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBjYXNlIHRvIGJlIGhpdC4KCk9rYXksIHNvIHdoYXQgYWJvdXQgKm90aGVyKiBkcml2ZXJzPyBJcyB0aGVyZSBldmVuICphbnkqIGRyaXZlciB0aGF0IGFsbG93cyBzZXR0aW5nIGBwaHlfaW50ZXJmYWNlX3RgIGZyb20gdXNlcnNwYWNlPyBObywgbm90IHR5cGljYWxseS4gVGhpcyBpbnRlcmZhY2Ugc2V0dGluZyBpcyB1c3VhbGx5IGRldGVybWluZWQgYnkgZmlybXdhcmUgKERUL0FDUEkpIG9yIGl0JiMzOTtzIGhhcmRjb2RlZCB3aXRoaW4gdGhlIGRyaXZlciBpdHNlbGYuCgpJbiBhIHZpcnR1YWxpemVkIHNldHRpbmcgbGlrZSBRRU1VIG9yIEdDRSwgaXQgZ2V0cyBldmVuIHRyaWNraWVyLiBXZSBnZW5lcmFsbHkgZG9uJiMzOTt0IGhhdmUgRGV2aWNlIFRyZWUgKERUKSBub2RlcyBmb3IgYXJiaXRyYXJ5IE1BQ3MsIHVubGVzcyB3ZSYjMzk7cmUgdXNpbmcgZGV2aWNlIHRyZWUgb3ZlcmxheXMsIHdoaWNoIHN5emthbGxlciAod2hpY2ggSSYjMzk7bSBhc3N1bWluZyBpcyB0aGUgdGVzdCBmcmFtZXdvcmsgYmVpbmcgdXNlZCkgZG9lc24mIzM5O3QgdHlwaWNhbGx5IGVtcGxveSBieSBkZWZhdWx0LCByaWdodD8gT3IgKmRvZXMqIHN5emthbGxlciB1c2UgdGhvc2Ugb3ZlcmxheXM/IChJdCYjMzk7cyBjb25maWd1cmFibGUsIGJ1dCBJIGRvbiYjMzk7dCB0aGluayBpdCYjMzk7cyB0aGUgc3RhbmRhcmQgcHJhY3RpY2UuKQoKV2FpdCwgSSBuZWVkIHRvIGNvbnNpZGVyIGBuZXRsaW5rYC4gU3l6a2FsbGVyICpjYW4qIHVzZSBgbmV0bGlua2AgdG8gY3JlYXRlIHZpcnR1YWwgbGlua3MuIEJ1dCwgSSBrbm93IGBwaHlsaW5rYCBpc24mIzM5O3QgdXNlZCBieSB0aGUgdXN1YWwgc3VzcGVjdHMgbGlrZSBgdmV0aGAsIGBtYWN2bGFuYCwgYGlwdmxhbmAsIG9yIGB0dW5gLiBUaGF0IG1lYW5zIHRoZSAqb25seSogcGxhdXNpYmxlIHdheSB0byByZWFjaCBgcGh5bGlua2AgaXMgdGhyb3VnaCBVU0IgZHJpdmVycyBsaWtlIGBsYW43OHh4YCBvciBgYXNpeGAuIEFuZCwgYWdhaW4sIHRob3NlIGRyaXZlcnMgKmhhcmRjb2RlKiB0aGUgaW50ZXJmYWNlIG1vZGUuCgpTbywgdGhlIGNvbmNsdXNpb24gSSYjMzk7bSBsZWFuaW5nIHRvd2FyZCBpcyB0aGF0IHRoaXMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGNhc2UgaW4gdGhlIHN3aXRjaCBzdGF0ZW1lbnRzIGlzIHZpcnR1YWxseSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHRoZSB2aXJ0dWFsaXplZCB0ZXN0aW5nIGVudmlyb25tZW50cy4KCkxldCBtZSBqdXN0IGRvdWJsZS1jaGVjayBvbmUgdGhpbmc6IERvZXMgdGhlIGBpbnRlcmZhY2VgIHBhcmFtZXRlciwgaXMgaXQgZXZlbiBwYXNzZWQgdG8gdGhlIGBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZWAgZnVuY3Rpb24/IEhtbS4gTm8sIHRoZSBgaW50ZXJmYWNlYCBpcyAqbm90KiBwYXNzZWQuIE9rYXksIHRpbWUgdG8gcmUtZXhhbWluZSB0aGF0IHBhdGNoIGFnYWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxNjoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtcGh5bGluay5jPTIxMz1zdGF0aWMgdm9pZCBteGw4NjJ4eF9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1waHlsaW5rLmMtMjU3LVx0XHQgICAgICAgKHN0YXRlLVx1MDAzZWFuX2NvbXBsZXRlID8gQk1TUl9BTkVHQ09NUExFVEUgOiAwKTtcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1waHlsaW5rLmM6MjU4Olx0XHRwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdGF0ZSwgbmVnX21vZGUsIGJtc3IsXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtcGh5bGluay5jLTI1OS1cdFx0XHRcdFx0XHQgbGUxNl90b19jcHUoc3QubHBhLmNsMzcpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU3Mz1zdGF0aWMgdm9pZCBtYWNiX3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU4MC1cdGxwYSA9IGdlbV9yZWFkbChicCwgUENTQU5MUEJBU0UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzo1ODE6XHRwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdGF0ZSwgbmVnX21vZGUsIGJtc3IsIGxwYSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU4Mi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wb3J0LmM9Mjg3PXZvaWQgbGFuOTY2eF9wb3J0X3N0YXR1c19nZXQoc3RydWN0IGxhbjk2NnhfcG9ydCAqcG9ydCwgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcG9ydC5jLTMxNi1cdFx0bHBfYWR2ID0gREVWX1BDUzFHX0FORUdfU1RBVFVTX0xQX0FEVl9HRVQodmFsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcG9ydC5jOjMxNzpcdFx0cGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RhdGUsIG5lZ19tb2RlLCBibXNyLCBscF9hZHYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wb3J0LmMtMzE4LVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNzLmM9NjY9c3RhdGljIHZvaWQgZHdtYWNfaW50ZWdyYXRlZF9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY3MuYy04My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY3MuYzo4NDpcdFx0cGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RhdGUsIG5lZ19tb2RlLCBzdGF0dXMsIGxwYSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNzLmMtODUtXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbXRrLWx5bnhpLmM9MTA4PXN0YXRpYyB2b2lkIG10a19wY3NfbHlueGlfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbXRrLWx5bnhpLmMtMTE4LVxuZHJpdmVycy9uZXQvcGNzL3Bjcy1tdGstbHlueGkuYzoxMTk6XHRwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdGF0ZSwgbmVnX21vZGUsXG5kcml2ZXJzL25ldC9wY3MvcGNzLW10ay1seW54aS5jLTEyMC1cdFx0XHRcdFx0IEZJRUxEX0dFVChTR01JSV9CTVNSLCBibSksXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmM9MTEwMz1zdGF0aWMgaW50IHhwY3NfZ2V0X3N0YXRlX2MzN18xMDAwYmFzZXgoc3RydWN0IGR3X3hwY3MgKnhwY3MsXG4tLVxuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMtMTEzMi1cbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jOjExMzM6XHRcdHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0YXRlLCBuZWdfbW9kZSwgYm1zciwgbHBhKTtcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jLTExMzQtXHR9XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MTE2PXN0YXRpYyB2b2lkIHBoeWxpbmtfZGVjb2RlX3VzZ21paV93b3JkKHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDE0MC0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDE0MTogKiBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZSgpIC0gRGVjb2RlIE1BQyBQQ1Mgc3RhdGUgZnJvbSBNSUkgcmVnaXN0ZXJzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQxNDItICogQHN0YXRlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlLlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDE1NC0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDE1NTp2b2lkIHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MTU2LVx0XHRcdFx0ICAgICAgdW5zaWduZWQgaW50IG5lZ19tb2RlLCB1MTYgYm1zciwgdTE2IGxwYSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQyMDItfVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0MjAzOkVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDIwNC1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQyMjA9dm9pZCBwaHlsaW5rX21paV9jMjJfcGNzX2dldF9zdGF0ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKnBjcyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQyMzItXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQyMzM6XHRwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdGF0ZSwgbmVnX21vZGUsIGJtc3IsIGxwYSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQyMzQtfVxuLS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTgxNj1zdGF0aWMgaW5saW5lIGJvb2wgcGh5bGlua19tYWNfaW1wbGVtZW50c19scGkoY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqb3BzKVxuLS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTgyMC1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjgyMTp2b2lkIHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtODIyLVx0XHRcdFx0ICAgICAgdW5zaWduZWQgaW50IG5lZ19tb2RlLCB1MTYgYm1zciwgdTE2IGxwYSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDE2OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4MDE2CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTYzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRlY29kaW5nIHRoZSBQU0dNSUkgUHV6emxlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZWAgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyB0YWtpbmcgYSBgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGVgLiBSaWdodCwgbWFrZXMgc2Vuc2UuIE5vdywgZGl2aW5nIGluLCB0aGVyZSYjMzk7cyBhIGBzd2l0Y2hgIHN0YXRlbWVudCBiYXNlZCBvbiBgc3RhdGUtJmd0O2ludGVyZmFjZWAuIFRoYXQmIzM5O3MgdGhlIGtleS4gU28sIHRoZSBjb2RlIHBhdGggd2UmIzM5O3JlIGNvbmNlcm5lZCB3aXRoIGlzIHRyaWdnZXJlZCB3aGVuIGBzdGF0ZS0mZ3Q7aW50ZXJmYWNlYCBpcyBlcXVhbCB0byBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAuIEdvdCBpdC4KCk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbiBpczogd2hlcmUgZG9lcyBgc3RhdGUtJmd0O2ludGVyZmFjZWAgZ2V0IHNldD8gSSBrbm93IHRoZSBwaHlsaW5rIGNvcmUgaXMgcmVzcG9uc2libGUgZm9yIHRoYXQuIEl0IGRldGVybWluZXMgdGhlIGludGVyZmFjZSBtb2RlIGJhc2VkIG9uIHRoZSBoYXJkd2FyZSBjYXBhYmlsaXRpZXMgYW5kIHRoZSBzeXN0ZW0gY29uZmlndXJhdGlvbi4gVGhlcmVmb3JlIGBzdGF0ZS0mZ3Q7aW50ZXJmYWNlYCBpcyBnb2luZyB0byBiZSBzZXQgdG8gYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgICpvbmx5KiBpZiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBhY3R1YWxseSAqc3VwcG9ydHMqIFBTR01JSSBhbmQgaXQmIzM5O3MgZXhwbGljaXRseSBjb25maWd1cmVkIHRvIHVzZSBpdC4KClJpZ2h0LCBub3csIEkgc2VlbSB0byByZW1lbWJlciB0aGF0IHRoZSBgcWNhODA3eC5jYCBkcml2ZXIgaXMgdGhlIG9ubHkgb25lIEkmIzM5O3ZlIHNlZW4gdGhhdCAqZXhwbGljaXRseSogdXNlcyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAuIEJ1dCBsZXQmIzM5O3MgYmUgdGhvcm91Z2gsIHlvdSBjYW4gbmV2ZXIgYmUgdG9vIGNhcmVmdWwuIEkgc2hvdWxkIHByb2JhYmx5IGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCwganVzdCB0byBtYWtlIHN1cmUgbXkgYXNzdW1wdGlvbiBpcyBjb3JyZWN0LiBJdCYjMzk7cyBhbHdheXMgYSBnb29kIGlkZWEgdG8gdmVyaWZ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOSAxNjoxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0PTIzOD1Tb21lIG9mIHRoZSBpbnRlcmZhY2UgbW9kZXMgYXJlIGRlc2NyaWJlZCBiZWxvdzpcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC0zMjUtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdDozMjY6YGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYGBcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0LTMyNy0gICAgVGhpcyBpcyB0aGUgUGVudGEgU0dNSUkgbW9kZSwgaXQgaXMgc2ltaWxhciB0byBRU0dNSUkgYnV0IGl0IGNvbWJpbmVzIDVcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYz0xNTk9aW50IHBoeV9pbnRlcmZhY2VfbnVtX3BvcnRzKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMtMjAxLVx0XHRyZXR1cm4gNDtcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jOjIwMjpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMy1cdFx0cmV0dXJuIDU7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM9Mjk0PXVuc2lnbmVkIGxvbmcgcGh5X2NhcHNfZnJvbV9pbnRlcmZhY2UocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTAtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jOjMxMTpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTMxMi1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzOD1zdGF0aWMgaW50IHBoeWxpbmtfaW50ZXJmYWNlX21heF9zcGVlZChwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU5LVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2MDpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjYxLVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Nzc0PXN0YXRpYyBpbnQgcGh5bGlua19wYXJzZV9tb2RlKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTgwOC1cdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjgwOTpcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MTAtXHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTEwMzk9c3RhdGljIGVudW0gaW5iYW5kX3R5cGUgcGh5bGlua19nZXRfaW5iYW5kX3R5cGUocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDItXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTA0MzpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA0NC1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQxNTU9dm9pZCBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQxODYtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDE4NzpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDE4OC1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQyNTE9aW50IHBoeWxpbmtfbWlpX2MyMl9wY3NfZW5jb2RlX2FkdmVydGlzZW1lbnQocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQyNjctXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDI2ODpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDI2OS1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM9NDkwPXN0YXRpYyBpbnQgcWNhODA3eF9waHlfcGFja2FnZV9wcm9iZV9vbmNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU0OS1cdFx0aWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU1MDpcdFx0XHRcdHBoeV9tb2RlcyhQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJKSkpXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTUxOlx0XHRcdHByaXYtXHUwMDNlcGFja2FnZV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01NTItXHRcdGVsc2UgaWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz01NjI9c3RhdGljIGludCBxY2E4MDd4X3BoeV9wYWNrYWdlX2NvbmZpZ19pbml0X29uY2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTg1LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1ODY6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTg3LVx0ZGVmYXVsdDpcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTUzPWV4dGVybiBjb25zdCBpbnQgcGh5X2Jhc2ljX3BvcnRzX2FycmF5WzNdO1xuLS1cbmluY2x1ZGUvbGludXgvcGh5LmgtODktICogQFBIWV9JTlRFUkZBQ0VfTU9ERV9NT0NBOiBNdWx0aW1lZGlhIG92ZXIgQ29heFxuaW5jbHVkZS9saW51eC9waHkuaDo5MDogKiBAUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTogUGVudGEgU0dNSUlcbmluY2x1ZGUvbGludXgvcGh5LmgtOTEtICogQFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6IFF1YWQgU0dNSUlcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTExND10eXBlZGVmIGVudW0ge1xuLS1cbmluY2x1ZGUvbGludXgvcGh5LmgtMTMyLVx0UEhZX0lOVEVSRkFDRV9NT0RFX01PQ0EsXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjEzMzpcdFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUksXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTEzNC1cdFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUksXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaD0yMTA9c3RhdGljIGlubGluZSBjb25zdCBjaGFyICpwaHlfbW9kZXMocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTI0OC1cdFx0cmV0dXJuIFwmIzM0O21vY2FcJiMzNDs7XG5pbmNsdWRlL2xpbnV4L3BoeS5oOjI0OTpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmluY2x1ZGUvbGludXgvcGh5LmgtMjUwLVx0XHRyZXR1cm4gXCYjMzQ7cHNnbWlpXCYjMzQ7O1xuLS1cbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTc5MD1zdGF0aWMgaW5saW5lIGludCBwaHlsaW5rX2dldF9saW5rX3RpbWVyX25zKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzkzLVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo3OTQ6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03OTUtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDE2OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMjQ1CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMzEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIFVzYWdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBxY2E4MDd4LmNgIGNvZGUsIGFuZCBpdCBzZWVtcyB0byBiZSB0aGUgKm9ubHkqIHBsYWNlIHdoZXJlIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpcyBiZWluZyB1c2VkLiBUaGF0JiMzOTtzIGEgc3RhcnRpbmcgcG9pbnQuIE5vdywgdGhlIG5leHQgcXVlc3Rpb24gaXMgaG93IHRoaXMgdmFsdWUgY2FuIGV2ZW4gYmUgc2V0LCBjYW4gaXQgYmUgbWFuaXB1bGF0ZWQ/CgpIbW0sIGNhbiBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgYmUgc2V0IHRocm91Z2ggbmV0bGluaz8gSSBkb24mIzM5O3QgdGhpbmsgc28sIGFuZCBJIHNob3VsZCByZWFsbHkgdmVyaWZ5IGlmIGBwaHlfbW9kZXNgIGFyZSBwYXJzZWFibGUgZnJvbSB1c2Vyc3BhY2UuIExldCYjMzk7cyBzZWUuLi4gdGhlIGNvZGUgdXRpbGl6ZXMgYHBoeWxpbmtfcGFyc2VfbW9kZWAsIGJ1dCB0aGF0JiMzOTtzIGRyaXZlbiBieSB0aGUgZGV2aWNlIHRyZWUsIHJpZ2h0PyBJdCYjMzk7cyBub3QgYSBydW4tdGltZSBjb25maWd1cmF0aW9uLCBzbyBjYW4gSSBjcmVhdGUgYSB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlIGFuZCBzb21laG93IGZvcmNlIGl0cyBQSFkgbW9kZSB0byBgUFNHTUlJYD8gSSBkb24mIzM5O3QgdGhpbmsgdGhhdCYjMzk7cyBwb3NzaWJsZS4gVGhlcmUgaXNuJiMzOTt0IGFueSBuZXRsaW5rIEFQSSB0byBkaXJlY3RseSBzZXQgdGhlIGBwaHlfaW50ZXJmYWNlX3RgIGZvciBhIGBuZXRfZGV2aWNlYC4gVGhhdCYjMzk7cyB1c3VhbGx5IGhhcmRjb2RlZCBvciBjb21pbmcgZnJvbSB0aGUgZGV2aWNlIHRyZWUuCgpBbHJpZ2h0LCBidXQgd2hhdCBhYm91dCBgZXRodG9vbGA/IENhbiBpdCBtYW5pcHVsYXRlIGFueSBvZiB0aGVzZSBsaW5rIHBhcmFtZXRlcnM/IE5vdCBkaXJlY3RseSwgaXQgc2VlbXMgbGlrZSBgZXRodG9vbGAgY2FuJiMzOTt0IHNldCB0aGUgUEhZIGludGVyZmFjZSBtb2RlLCBsaWtlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gU0dNSUksIFJHTUlJLCBvciBQU0dNSUkuCgpTbywgdGhlIG9ubHkgd2F5IHRoaXMgY29kZSB1c2luZyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaXMgZXZlbiBnb2luZyB0byBiZSByZWFjaGVkLCBpcyBpZiBhIGRldmljZSBpcyBwcm9iZWQgd2l0aCB0aGF0IHNwZWNpZmljIG1vZGUgc2V0LiBTaW5jZSBgcWNhODA3eGAgaXMgYSAqcGh5c2ljYWwqIFBIWSBjaGlwLCBpdCYjMzk7cyBub3QgZ29pbmcgdG8gc2hvdyB1cCBpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgdW5sZXNzIEkgY3JhZnQgYSBkdW1teSBNRElPIGJ1cyBhbmQgcmVnaXN0ZXIgdGhpcyBQSFkgb24gaXQuIE5vdywgdGhhdCYjMzk7cyBwb3NzaWJsZSwgYnV0IGV2ZW4gaWYgdGhhdCB3b3JrZWQsIHJlbWVtYmVyIGBxY2E4MDd4YCBpcyBqdXN0IGEgUEhZICpkcml2ZXIqLiBUaGUgTUFDIGRyaXZlciwgd2hpY2ggdXRpbGl6ZXMgYHBoeWxpbmtgLCAqYWxzbyogaGFzIHRvIGJlIHNldCB0byB1c2UgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLiBUaGF0JiMzOTtzIHRoZSByZWFsIGNoYWxsZW5nZS4gSXMgdGhlcmUgZXZlbiBhIE1BQyBkcml2ZXIgdGhhdCBzdXBwb3J0cyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWA/IFRoYXQmIzM5O3Mgd2hhdCBJIG5lZWQgdG8gZGV0ZXJtaW5lLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIE1BQyBkcml2ZXJzIGFuZCBzZWUgaWYgYW55IGV2ZW4gKnN1cHBvcnQqIHRoaXMgc3BlY2lmaWMgaW50ZXJmYWNlIG1vZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA5IDE2OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgcmVwZWF0aW5nIHRoZSBzYW1lIHRvb2wgY2FsbCB3aXRoIHRoZSBleGFjdCBzYW1lIGFyZ3VtZW50cy4KWW91IGFscmVhZHkgaGF2ZSB0aGUgcmVzdWx0IG9mIHRoaXMgZXhhY3QgdG9vbCBjYWxsIGluIHlvdXIgY29udmVyc2F0aW9uIGhpc3RvcnkuCkRvIE5PVCByZXF1ZXN0IGl0IGFnYWluLiBZb3UgTVVTVCBzeW50aGVzaXplIHRoZSBpbmZvcm1hdGlvbiB5b3UgYWxyZWFkeSBoYXZlLAp0cnkgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCB0b29sLCBvciBwcm9jZWVkIHRvIHRoZSBuZXh0IHN0ZXAuPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtZb3UgYXJlIHJlcGVhdGluZyB0aGUgc2FtZSB0b29sIGNhbGwgd2l0aCB0aGUgZXhhY3Qgc2FtZSBhcmd1bWVudHMuXG5Zb3UgYWxyZWFkeSBoYXZlIHRoZSByZXN1bHQgb2YgdGhpcyBleGFjdCB0b29sIGNhbGwgaW4geW91ciBjb252ZXJzYXRpb24gaGlzdG9yeS5cbkRvIE5PVCByZXF1ZXN0IGl0IGFnYWluLiBZb3UgTVVTVCBzeW50aGVzaXplIHRoZSBpbmZvcm1hdGlvbiB5b3UgYWxyZWFkeSBoYXZlLFxudHJ5IGEgY29tcGxldGVseSBkaWZmZXJlbnQgdG9vbCwgb3IgcHJvY2VlZCB0byB0aGUgbmV4dCBzdGVwLiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTY6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDEyMTMKCQkJCQkJCW91dHB1dDogMTkxCgkJCQkJCQl0aG91Z2h0czogNzY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQ6IFdvcnRoRnV6emluZyA9IEZhbHNlKioKCk9rYXksIHNvIEkmIzM5O3ZlIGp1c3QgYmVlbiBsb29raW5nIGludG8gd2hldGhlciBvciBub3QgYSBwYXRjaCByZWxhdGVkIHRvIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpcyB3b3J0aCBmdXp6aW5nLiBNeSBpbml0aWFsIHNjYW4gdXNpbmcgYGdyZXBgIHF1aWNrbHkgc2hvd2VkIHRoYXQgdGhpcyBwYXJ0aWN1bGFyIGludGVyZmFjZSBtb2RlIGlzIG9ubHkgbWVudGlvbmVkIGluIGRvY3VtZW50YXRpb24sIHBoeSBjb3JlIGZpbGVzLCBhbmQgYSBmZXcgUEhZIGRyaXZlciBmaWxlcywgbmFtZWx5IHRoZSBgcWNhODA3eGAgZHJpdmVyLCBidXQgaXQgZG9lc24mIzM5O3QgYXBwZWFyIGluIGFueSBNQUMgZHJpdmVyIGltcGxlbWVudGF0aW9ucy4gVGhhdCYjMzk7cyBhIGtleSBvYnNlcnZhdGlvbi4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IHdhcywgY291bGQgc29tZSBNQUMgZHJpdmVycyAqaW5kaXJlY3RseSogc3VwcG9ydCBpdCwgcGVyaGFwcyBieSBwYXNzaW5nIGludGVyZmFjZSBtb2RlIGluZm9ybWF0aW9uIHRocm91Z2ggRGV2aWNlIFRyZWUgKERUKT8gQW5kLCBwZXJoYXBzIGEgTUFDIGRyaXZlciBjb3VsZCB1dGlsaXplIHBoeWxpbmsuIEhvd2V2ZXIsIGdpdmVuIHRoYXQgdGhpcyBpbnRlcmZhY2UgaXMgbm90IGV4cGxpY2l0bHkgbWVudGlvbmVkIGJ5IGFueSBNQUMgZHJpdmVyLCBhbmQgZXNwZWNpYWxseSBnaXZlbiB0aGUgY29udGV4dCBvZiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgd2hlcmUgRFQgaXNuJiMzOTt0IGdlbmVyYWxseSBhdmFpbGFibGUgZm9yIE1BQ3MsIEkmIzM5O3ZlIGNvbmNsdWRlZCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiBRRU1VIG9yIEdDRS4KCkkgZG91YmxlLWNoZWNrZWQgdG8gc2VlIGlmIHZpcnR1YWwgZHJpdmVycyBsaWtlIGBuZXRkZXZzaW1gLCBgZHVtbXlgLCBvciBgdmV0aGAgbWlnaHQgbGV2ZXJhZ2UgYHBoeWxpbmtgLCBidXQgbm9uZSBvZiB0aGVtIGRvLiBFdmVuIHRoZSB2aXJ0dWFsLWlzaCBVU0IgZHJpdmVycywgbGlrZSBgYXNpeGAgYW5kIGBsYW43OHh4YCwgd2hpY2ggKmRvKiB1c2UgYHBoeWxpbmtgLCBleHBsaWNpdGx5IGhhcmRjb2RlIHRoZWlyIGludGVyZmFjZSBtb2RlcyB0byBtb3JlIHN0YW5kYXJkIHR5cGVzIGxpa2UgTUlJLCBSTUlJLCBvciBHTUlJLiBUaGlzIGNvbmZpcm1zIHRoYXQgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHdvbiYjMzk7dCBldmVyIGJlIHNlZW4gYnkgYHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlYCwgYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlYCwgYHBoeWxpbmtfbWlpX2MyMl9wY3NfZW5jb2RlX2FkdmVydGlzZW1lbnRgLCBvciBgcGh5bGlua19nZXRfbGlua190aW1lcl9uc2Agd2l0aGluIGEgdmlydHVhbGl6ZWQgc2V0dGluZy4KCkVzc2VudGlhbGx5LCBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaXMgdGllZCB0byBhIHNwZWNpZmljIHBoeXNpY2FsIFBIWSAodGhlIGBxY2E4MDd4YCksIGFuZCBub3RoaW5nIGVtdWxhdGVkIG9yIHZpcnR1YWwgdG91Y2hlcyBpdC4gU2luY2UgdGhlIHByb21wdCBzdGF0ZXMgSSBzaG91bGQgcmV0dXJuICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsgaWYgdGhlIHBhdGNoIG9ubHkgYWRkcyB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgSSYjMzk7bSBjb25maWRlbnQgaW4gc2F5aW5nIHRoYXQgdGhlIG5ldyBjb2RlIHBhdGhzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCBhcmUsIGluIGZhY3QsIHVucmVhY2hhYmxlLgoKTXkgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogVGhlIHBhdGNoIGludHJvZHVjZXMgc3VwcG9ydCBmb3IgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHdpdGhpbiBgcGh5bGlua2AuIEhvd2V2ZXIsIHRoaXMgaW50ZXJmYWNlIG1vZGUgaXMgc3BlY2lmaWMgdG8gdGhlIFFDQTgwN3ggUEhZLCB3aXRoIG5vIE1BQyBkcml2ZXJzIGV4cGxpY2l0bHkgc3VwcG9ydGluZyBpdCAob3IgcGFzc2luZyBpdCBmcm9tIERUKS4gRnVydGhlcm1vcmUsIHZpcnR1YWwgbmV0d29yayBkcml2ZXJzIGFuZCBzb2Z0d2FyZS1lbXVsYXRlZCBVU0IgZXRoZXJuZXQgYWRhcHRlcnMgaGFyZGNvZGUgc3RhbmRhcmQgaW50ZXJmYWNlIG1vZGVzLiBUaGVyZWZvcmUsIHRoaXMgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuCgpJJiMzOTtsbCBwcm9jZWVkIHRvIHNldCB0aGUgcmVzdWx0cyB0byBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTY6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgKFBlbnRhIFNHTUlJKSB0byBzZXZlcmFsIHN3aXRjaCBzdGF0ZW1lbnRzIGluIHRoZSBwaHlsaW5rIGNvcmUuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQSFkgaW50ZXJmYWNlIG1vZGUuIEEgc2VhcmNoIG9mIHRoZSBrZXJuZWwgdHJlZSByZXZlYWxzIHRoYXQgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSBpcyBvbmx5IHJlZmVyZW5jZWQgYnkgdGhlIHFjYTgwN3ggcGh5c2ljYWwgUEhZIGRyaXZlciwgYW5kIG5vIE1BQyBkcml2ZXJzIGV4cGxpY2l0bHkgc3VwcG9ydCBpdC4gRnVydGhlcm1vcmUsIHZpcnR1YWwgbmV0d29yayBkcml2ZXJzIGFuZCBzb2Z0d2FyZS1lbXVsYXRlZCBVU0IgZXRoZXJuZXQgYWRhcHRlcnMgKHdoaWNoIHVzZSBwaHlsaW5rKSBoYXJkY29kZSB0aGVpciBpbnRlcmZhY2UgbW9kZXMgdG8gc3RhbmRhcmQgb25lcyBsaWtlIE1JSSwgUk1JSSwgb3IgR01JSS4gU2luY2UgdGhpcyBpbnRlcmZhY2UgbW9kZSBjYW5ub3QgYmUgY29uZmlndXJlZCBmcm9tIHVzZXJzcGFjZSBhbmQgaXMgbm90IHVzZWQgYnkgYW55IGVtdWxhdGVkIGhhcmR3YXJlLCB0aGUgbmV3bHkgYWRkZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSAoUGVudGEgU0dNSUkpIHRvIHNldmVyYWwgc3dpdGNoIHN0YXRlbWVudHMgaW4gdGhlIHBoeWxpbmsgY29yZS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBIWSBpbnRlcmZhY2UgbW9kZS4gQSBzZWFyY2ggb2YgdGhlIGtlcm5lbCB0cmVlIHJldmVhbHMgdGhhdCBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIGlzIG9ubHkgcmVmZXJlbmNlZCBieSB0aGUgcWNhODA3eCBwaHlzaWNhbCBQSFkgZHJpdmVyLCBhbmQgbm8gTUFDIGRyaXZlcnMgZXhwbGljaXRseSBzdXBwb3J0IGl0LiBGdXJ0aGVybW9yZSwgdmlydHVhbCBuZXR3b3JrIGRyaXZlcnMgYW5kIHNvZnR3YXJlLWVtdWxhdGVkIFVTQiBldGhlcm5ldCBhZGFwdGVycyAod2hpY2ggdXNlIHBoeWxpbmspIGhhcmRjb2RlIHRoZWlyIGludGVyZmFjZSBtb2RlcyB0byBzdGFuZGFyZCBvbmVzIGxpa2UgTUlJLCBSTUlJLCBvciBHTUlJLiBTaW5jZSB0aGlzIGludGVyZmFjZSBtb2RlIGNhbm5vdCBiZSBjb25maWd1cmVkIGZyb20gdXNlcnNwYWNlIGFuZCBpcyBub3QgdXNlZCBieSBhbnkgZW11bGF0ZWQgaGFyZHdhcmUsIHRoZSBuZXdseSBhZGRlZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDkgMTY6MTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDE2OjA0OjUzLjM0MjIyMzM4OVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3ODU2NDIxMDQwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSAoUGVudGEgU0dNSUkpIHRvIHNldmVyYWwgc3dpdGNoIHN0YXRlbWVudHMgaW4gdGhlIHBoeWxpbmsgY29yZS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBIWSBpbnRlcmZhY2UgbW9kZS4gQSBzZWFyY2ggb2YgdGhlIGtlcm5lbCB0cmVlIHJldmVhbHMgdGhhdCBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIGlzIG9ubHkgcmVmZXJlbmNlZCBieSB0aGUgcWNhODA3eCBwaHlzaWNhbCBQSFkgZHJpdmVyLCBhbmQgbm8gTUFDIGRyaXZlcnMgZXhwbGljaXRseSBzdXBwb3J0IGl0LiBGdXJ0aGVybW9yZSwgdmlydHVhbCBuZXR3b3JrIGRyaXZlcnMgYW5kIHNvZnR3YXJlLWVtdWxhdGVkIFVTQiBldGhlcm5ldCBhZGFwdGVycyAod2hpY2ggdXNlIHBoeWxpbmspIGhhcmRjb2RlIHRoZWlyIGludGVyZmFjZSBtb2RlcyB0byBzdGFuZGFyZCBvbmVzIGxpa2UgTUlJLCBSTUlJLCBvciBHTUlJLiBTaW5jZSB0aGlzIGludGVyZmFjZSBtb2RlIGNhbm5vdCBiZSBjb25maWd1cmVkIGZyb20gdXNlcnNwYWNlIGFuZCBpcyBub3QgdXNlZCBieSBhbnkgZW11bGF0ZWQgaGFyZHdhcmUsIHRoZSBuZXdseSBhZGRlZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTY6MDQ6NTMuMzQyMjI3ODM5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjMzMDYzMjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgY2Q3ZmMwMzEyNzVlYjRjZDZlOTBlNGRmZTQ2OTQ3MWRhNDk0NjEwY1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyA5IDE2OjA0OjUxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXFxuaW5kZXggMThkMmVhZDk3YWE1NC4uMWNlOWQyMjY2Nzc0ZCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbkBAIC0xMDQwLDYgKzEwNDAsNyBAQCBzdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbiB7XFxuIFxcdHN3aXRjaCAoaW50ZXJmYWNlKSB7XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbitcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVVTR01JSTpcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSTpcXG5AQCAtNDE4Myw2ICs0MTg0LDcgQEAgdm9pZCBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcXG4gXFx0XFx0YnJlYWs7XFxuIFxcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcXG4rXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XFxuIFxcdFxcdGlmIChuZWdfbW9kZSA9PSBQSFlMSU5LX1BDU19ORUdfSU5CQU5EX0VOQUJMRUQpXFxuIFxcdFxcdFxcdHBoeWxpbmtfZGVjb2RlX3NnbWlpX3dvcmQoc3RhdGUsIGxwYSk7XFxuQEAgLTQyNjMsNiArNDI2NSw3IEBAIGludCBwaHlsaW5rX21paV9jMjJfcGNzX2VuY29kZV9hZHZlcnRpc2VtZW50KHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXFxuIFxcdFxcdFxcdGFkdiB8PSBBRFZFUlRJU0VfMTAwMFhQU0VfQVNZTTtcXG4gXFx0XFx0cmV0dXJuIGFkdjtcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuK1xcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbiBcXHRcXHRyZXR1cm4gMHgwMDAxO1xcbiBcXHRkZWZhdWx0OlxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaCBiL2luY2x1ZGUvbGludXgvcGh5bGluay5oXFxuaW5kZXggMmJjMGRiM2Q1MmFjOC4uMWRkYTVjN2VkNWYxNCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvcGh5bGluay5oXFxuQEAgLTc5MSw2ICs3OTEsNyBAQCBzdGF0aWMgaW5saW5lIGludCBwaHlsaW5rX2dldF9saW5rX3RpbWVyX25zKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuIHtcXG4gXFx0c3dpdGNoIChpbnRlcmZhY2UpIHtcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuK1xcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG4gXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJOlxcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdfUVhHTUlJOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxNjowNDo1NC41NzU5MDMxODRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3NzczMzA1MTkzNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSAoUGVudGEgU0dNSUkpIHRvIHNldmVyYWwgc3dpdGNoIHN0YXRlbWVudHMgaW4gdGhlIHBoeWxpbmsgY29yZS4gVGhpcyBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFBIWSBpbnRlcmZhY2UgbW9kZS4gQSBzZWFyY2ggb2YgdGhlIGtlcm5lbCB0cmVlIHJldmVhbHMgdGhhdCBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIGlzIG9ubHkgcmVmZXJlbmNlZCBieSB0aGUgcWNhODA3eCBwaHlzaWNhbCBQSFkgZHJpdmVyLCBhbmQgbm8gTUFDIGRyaXZlcnMgZXhwbGljaXRseSBzdXBwb3J0IGl0LiBGdXJ0aGVybW9yZSwgdmlydHVhbCBuZXR3b3JrIGRyaXZlcnMgYW5kIHNvZnR3YXJlLWVtdWxhdGVkIFVTQiBldGhlcm5ldCBhZGFwdGVycyAod2hpY2ggdXNlIHBoeWxpbmspIGhhcmRjb2RlIHRoZWlyIGludGVyZmFjZSBtb2RlcyB0byBzdGFuZGFyZCBvbmVzIGxpa2UgTUlJLCBSTUlJLCBvciBHTUlJLiBTaW5jZSB0aGlzIGludGVyZmFjZSBtb2RlIGNhbm5vdCBiZSBjb25maWd1cmVkIGZyb20gdXNlcnNwYWNlIGFuZCBpcyBub3QgdXNlZCBieSBhbnkgZW11bGF0ZWQgaGFyZHdhcmUsIHRoZSBuZXdseSBhZGRlZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgY2Q3ZmMwMzEyNzVlYjRjZDZlOTBlNGRmZTQ2OTQ3MWRhNDk0NjEwY1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDkgMTY6MDQ6NTEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuaW5kZXggMThkMmVhZDk3YWE1NC4uMWNlOWQyMjY2Nzc0ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbkBAIC0xMDQwLDYgKzEwNDAsNyBAQCBzdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuIHtcbiBcdHN3aXRjaCAoaW50ZXJmYWNlKSB7XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbitcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FVU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJOlxuQEAgLTQxODMsNiArNDE4NCw3IEBAIHZvaWQgcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUsXG4gXHRcdGJyZWFrO1xuIFxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG4rXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4gXHRcdGlmIChuZWdfbW9kZSA9PSBQSFlMSU5LX1BDU19ORUdfSU5CQU5EX0VOQUJMRUQpXG4gXHRcdFx0cGh5bGlua19kZWNvZGVfc2dtaWlfd29yZChzdGF0ZSwgbHBhKTtcbkBAIC00MjYzLDYgKzQyNjUsNyBAQCBpbnQgcGh5bGlua19taWlfYzIyX3Bjc19lbmNvZGVfYWR2ZXJ0aXNlbWVudChwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxuIFx0XHRcdGFkdiB8PSBBRFZFUlRJU0VfMTAwMFhQU0VfQVNZTTtcbiBcdFx0cmV0dXJuIGFkdjtcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuK1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuIFx0XHRyZXR1cm4gMHgwMDAxO1xuIFx0ZGVmYXVsdDpcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaCBiL2luY2x1ZGUvbGludXgvcGh5bGluay5oXG5pbmRleCAyYmMwZGIzZDUyYWM4Li4xZGRhNWM3ZWQ1ZjE0IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9waHlsaW5rLmhcbisrKyBiL2luY2x1ZGUvbGludXgvcGh5bGluay5oXG5AQCAtNzkxLDYgKzc5MSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHBoeWxpbmtfZ2V0X2xpbmtfdGltZXJfbnMocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbiB7XG4gXHRzd2l0Y2ggKGludGVyZmFjZSkge1xuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG4rXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHX1FYR01JSTpcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDE2OjA0OjU0LjU3NTkwNDM2NFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4MDMwNzUwNzA5MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQSFkgSW50ZXJmYWNlIE1vZGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBwaHlsaW5rLmNgIGFuZCBgcGh5bGluay5oYC4gTG9va3MgbGlrZSB0aGV5J3JlIGFkZGluZyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgdG8gYSBmZXcgc3dpdGNoIHN0YXRlbWVudHMgaW4gZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIHBoeWxpbmsgZnJhbWV3b3JrLiBTcGVjaWZpY2FsbHksIEknbSBzZWVpbmcgY2hhbmdlcyBpbiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgLCBgcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGVgLCBgcGh5bGlua19taWlfYzIyX3Bjc19lbmNvZGVfYWR2ZXJ0aXNlbWVudGAsIGFuZCBgcGh5bGlua19nZXRfbGlua190aW1lcl9uc2AuIFRoZSBjaGFuZ2VzIHRoZW1zZWx2ZXMgYXJlIG1pbmltYWwg4oCTIGJhc2ljYWxseSwgcm91dGluZyB0aGUgUFNHTUlJIGNhc2UgdGhyb3VnaCB0aGUgZXhpc3RpbmcgU0dNSUkgYW5kIFFTR01JSSBsb2dpYy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBpcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz8gSXQncyBwYXJ0IG9mIHRoZSBwaHlsaW5rIGZyYW1ld29yaywgd2hpY2gsIGFzIHdlIGtub3csIGlzIHByZXR0eSBjb3JlIHRvIG5ldHdvcmsgZHJpdmVyIGZ1bmN0aW9uYWxpdHkuIEFuZCwgYHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlYCBhbmQgYHBoeWxpbmtfbWlpX2MyMl9wY3NfZW5jb2RlX2FkdmVydGlzZW1lbnRgIGFyZSBleHBvcnRlZCBzeW1ib2xzLiBUaGF0IHJhaXNlcyBhIGZsYWcuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpcyBzb21ldGhpbmcgdGhhdCdzIG9ubHkgY29uZmlndXJlZCBhdCB0aGUgaGFyZHdhcmUgbGV2ZWwsIHZpYSBEZXZpY2UgVHJlZSBvciBkcml2ZXIgcHJvYmUsIG9yIGlmIGl0IGNhbiBiZSByZWFjaGVkIHZpYSB1c2Vyc3BhY2UsIG1heWJlIHRocm91Z2ggZXRodG9vbCBvciBuZXRsaW5rLiBUaGF0J3MgdGhlIGtleSB0byB3aGV0aGVyIGZ1enppbmcgaXMgZXZlbiByZWxldmFudCBoZXJlLlxuXG5HaXZlbiB0aG9zZSBleHBvcnRlZCBzeW1ib2xzLCBgcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGVgIGFuZCBgcGh5bGlua19taWlfYzIyX3Bjc19lbmNvZGVfYWR2ZXJ0aXNlbWVudGAsIHRoYXQgZmVlbHMgbGlrZSB0aGUgYmVzdCBwbGFjZSB0byBzdGFydC4gTGV0J3Mgc2VlIGlmIHRoaXMgbW9kZSBpcyBzb21ldGhpbmcgdGhhdCBjYW4gYmUgc2V0IG9yIGFsdGVyZWQgYnkgdXNlcnNwYWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDQyLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQ4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTY6MTI6NTQuODgzNDE0MDM0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1NTQ1MzkwMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuYz0yMTM9c3RhdGljIHZvaWQgbXhsODYyeHhfcGNzX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1waHlsaW5rLmMtMjU3LVxcdFxcdCAgICAgICAoc3RhdGUtXFx1MDAzZWFuX2NvbXBsZXRlID8gQk1TUl9BTkVHQ09NUExFVEUgOiAwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtcGh5bGluay5jOjI1ODpcXHRcXHRwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdGF0ZSwgbmVnX21vZGUsIGJtc3IsXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuYy0yNTktXFx0XFx0XFx0XFx0XFx0XFx0IGxlMTZfdG9fY3B1KHN0LmxwYS5jbDM3KSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU3Mz1zdGF0aWMgdm9pZCBtYWNiX3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTgwLVxcdGxwYSA9IGdlbV9yZWFkbChicCwgUENTQU5MUEJBU0UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTgxOlxcdHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0YXRlLCBuZWdfbW9kZSwgYm1zciwgbHBhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU4Mi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BvcnQuYz0yODc9dm9pZCBsYW45NjZ4X3BvcnRfc3RhdHVzX2dldChzdHJ1Y3QgbGFuOTY2eF9wb3J0ICpwb3J0LCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BvcnQuYy0zMTYtXFx0XFx0bHBfYWR2ID0gREVWX1BDUzFHX0FORUdfU1RBVFVTX0xQX0FEVl9HRVQodmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BvcnQuYzozMTc6XFx0XFx0cGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RhdGUsIG5lZ19tb2RlLCBibXNyLCBscF9hZHYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcG9ydC5jLTMxOC1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3Bjcy5jPTY2PXN0YXRpYyB2b2lkIGR3bWFjX2ludGVncmF0ZWRfcGNzX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY3MuYy04My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNzLmM6ODQ6XFx0XFx0cGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RhdGUsIG5lZ19tb2RlLCBzdGF0dXMsIGxwYSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3Bjcy5jLTg1LVxcdH0gZWxzZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLW10ay1seW54aS5jPTEwOD1zdGF0aWMgdm9pZCBtdGtfcGNzX2x5bnhpX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbXRrLWx5bnhpLmMtMTE4LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbXRrLWx5bnhpLmM6MTE5OlxcdHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0YXRlLCBuZWdfbW9kZSxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLW10ay1seW54aS5jLTEyMC1cXHRcXHRcXHRcXHRcXHQgRklFTERfR0VUKFNHTUlJX0JNU1IsIGJtKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jPTExMDM9c3RhdGljIGludCB4cGNzX2dldF9zdGF0ZV9jMzdfMTAwMGJhc2V4KHN0cnVjdCBkd194cGNzICp4cGNzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMtMTEzMi1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYzoxMTMzOlxcdFxcdHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0YXRlLCBuZWdfbW9kZSwgYm1zciwgbHBhKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy0xMTM0LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDExNj1zdGF0aWMgdm9pZCBwaHlsaW5rX2RlY29kZV91c2dtaWlfd29yZChzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDE0MC0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQxNDE6ICogcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoKSAtIERlY29kZSBNQUMgUENTIHN0YXRlIGZyb20gTUlJIHJlZ2lzdGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDE0Mi0gKiBAc3RhdGU6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MTU0LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDE1NTp2b2lkIHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDE1Ni1cXHRcXHRcXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgbmVnX21vZGUsIHUxNiBibXNyLCB1MTYgbHBhKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MjAyLX1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQyMDM6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDIwNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDIyMD12b2lkIHBoeWxpbmtfbWlpX2MyMl9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBtZGlvX2RldmljZSAqcGNzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MjMyLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDIzMzpcXHRwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdGF0ZSwgbmVnX21vZGUsIGJtc3IsIGxwYSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MjM0LX1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTgxNj1zdGF0aWMgaW5saW5lIGJvb2wgcGh5bGlua19tYWNfaW1wbGVtZW50c19scGkoY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqb3BzKVxcbi0tXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtODIwLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjgyMTp2b2lkIHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTgyMi1cXHRcXHRcXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgbmVnX21vZGUsIHUxNiBibXNyLCB1MTYgbHBhKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTY6MTI6NTYuNDM3OTU4NTM0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTkwOTQxNjc0MzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBSZWNlbnQgQ2hhbmdlcyBpbiB0aGUgYHBoeWxpbmtgIFN1YnN5c3RlbSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIG92ZXIgdGhlc2UgcmVjZW50IG1vZGlmaWNhdGlvbnMuIFRoZXkgc2VlbSB0byBiZSBmb2N1c2VkIG9uIGEgZmV3IHNwZWNpZmljIGFyZWFzIHdpdGhpbiB0aGUgYHBoeWxpbmtgIHN1YnN5c3RlbTogYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlYCwgYHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlYCwgYHBoeWxpbmtfbWlpX2MyMl9wY3NfZW5jb2RlX2FkdmVydGlzZW1lbnRgLCBhbmQgYHBoeWxpbmtfZ2V0X2xpbmtfdGltZXJfbnNgLiAgTm90IGEgdmFzdCBhbW91bnQgb2YgY29kZSwgYnV0IGNsZWFybHkgaW1wb3J0YW50IHBpZWNlcywgZ2l2ZW4gd2hlcmUgdGhleSBzaXQuXG5cblRoZSBgcGh5bGlua2Agc3Vic3lzdGVtLCBhcyB3ZSBrbm93LCBpcyBhIGNvcmUgY29tcG9uZW50IGFuZCBpcyBsZXZlcmFnZWQgZXh0ZW5zaXZlbHkgYnkgYSB3aWRlIGFycmF5IG9mIE1BQyBkcml2ZXJzLiBJIHNlZSB0aGF0IGl0IGlzIHV0aWxpc2VkIHdpdGhpbiBgbWFjYmAsIGBzdG1tYWNgLCBgbGFuOTY2eGAsIGBtdGtfZXRoX3NvY2AgZHJpdmVycywgYWxsIG9mIHdoaWNoIGFyZSBxdWl0ZSBjb21tb24uICBUaGlzIHN1Z2dlc3RzIHRoYXQgZXZlbiBtaW5vciB0d2Vha3MgaGVyZSBjb3VsZCBwb3RlbnRpYWxseSBoYXZlIGJyb2FkIGltcGxpY2F0aW9ucywgZ29vZCB0byBrZWVwIGluIG1pbmQgZm9yIHRlc3RpbmcuXG5cbk5vdywgYSBzbGlnaHRseSBkaWZmZXJlbnQgcXVlc3Rpb24gYXJpc2VzIGluIG15IG1pbmQuIFRoZXNlIGNoYW5nZXMgbWF5IGhhdmUgaW1wbGljYXRpb25zIGluIGEgdmVyeSBzcGVjaWZpYyBzY2VuYXJpbywgYW5kIEkgYW0gY3VyaW91cyB3aGV0aGVyIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpcyBhY3R1YWxseSAqcmVhY2hhYmxlKiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHdoaWNoIGRyaXZlcnMgZXhwbGljaXRseSB1c2UgdGhpcywganVzdCB0byBnZXQgYSBsYXkgb2YgdGhlIGxhbmQgaGVyZS4gIEl0IHdvdWxkIGJlIGludGVyZXN0aW5nIHRvIHNlZSBpZiBhbnkgb2YgdGhlc2UgY2hhbmdlcyB0b3VjaCB0aGF0IGNvZGUgcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDgxMiwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxNjoxNjowNy4zNzk2MzYwMTRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU3Nzk0MjIxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0PTIzOD1Tb21lIG9mIHRoZSBpbnRlcmZhY2UgbW9kZXMgYXJlIGRlc2NyaWJlZCBiZWxvdzpcXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0LTMyNS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdDozMjY6YGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYGBcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC0zMjctICAgIFRoaXMgaXMgdGhlIFBlbnRhIFNHTUlJIG1vZGUsIGl0IGlzIHNpbWlsYXIgdG8gUVNHTUlJIGJ1dCBpdCBjb21iaW5lcyA1XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYz0xNTk9aW50IHBoeV9pbnRlcmZhY2VfbnVtX3BvcnRzKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0yMDEtXFx0XFx0cmV0dXJuIDQ7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM6MjAyOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0yMDMtXFx0XFx0cmV0dXJuIDU7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYz0yOTQ9dW5zaWduZWQgbG9uZyBwaHlfY2Fwc19mcm9tX2ludGVyZmFjZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMzEwLVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jOjMxMTpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMzEyLVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjM4PXN0YXRpYyBpbnQgcGh5bGlua19pbnRlcmZhY2VfbWF4X3NwZWVkKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1OS1cXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2MDpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjEtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz03NzQ9c3RhdGljIGludCBwaHlsaW5rX3BhcnNlX21vZGUoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MDgtXFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4MDk6XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODEwLVxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTAzOT1zdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQyLVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTA0MzpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQ0LVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDE1NT12b2lkIHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MTg2LVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDE4NzpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MTg4LVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDI1MT1pbnQgcGh5bGlua19taWlfYzIyX3Bjc19lbmNvZGVfYWR2ZXJ0aXNlbWVudChwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MjY3LVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDI2ODpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MjY5LVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz00OTA9c3RhdGljIGludCBxY2E4MDd4X3BoeV9wYWNrYWdlX3Byb2JlX29uY2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01NDktXFx0XFx0aWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTA6XFx0XFx0XFx0XFx0cGh5X21vZGVzKFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkpKSlcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTUxOlxcdFxcdFxcdHByaXYtXFx1MDAzZXBhY2thZ2VfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU1Mi1cXHRcXHRlbHNlIGlmICghc3RyY2FzZWNtcChwYWNrYWdlX21vZGVfbmFtZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz01NjI9c3RhdGljIGludCBxY2E4MDd4X3BoeV9wYWNrYWdlX2NvbmZpZ19pbml0X29uY2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01ODUtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU4NjpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4Ny1cXHRkZWZhdWx0Olxcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaD01Mz1leHRlcm4gY29uc3QgaW50IHBoeV9iYXNpY19wb3J0c19hcnJheVszXTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtODktICogQFBIWV9JTlRFUkZBQ0VfTU9ERV9NT0NBOiBNdWx0aW1lZGlhIG92ZXIgQ29heFxcbmluY2x1ZGUvbGludXgvcGh5Lmg6OTA6ICogQFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6IFBlbnRhIFNHTUlJXFxuaW5jbHVkZS9saW51eC9waHkuaC05MS0gKiBAUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTogUXVhZCBTR01JSVxcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaD0xMTQ9dHlwZWRlZiBlbnVtIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtMTMyLVxcdFBIWV9JTlRFUkZBQ0VfTU9ERV9NT0NBLFxcbmluY2x1ZGUvbGludXgvcGh5Lmg6MTMzOlxcdFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUksXFxuaW5jbHVkZS9saW51eC9waHkuaC0xMzQtXFx0UEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSSxcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5Lmg9MjEwPXN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqcGh5X21vZGVzKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTI0OC1cXHRcXHRyZXR1cm4gXFxcIm1vY2FcXFwiO1xcbmluY2x1ZGUvbGludXgvcGh5Lmg6MjQ5OlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTI1MC1cXHRcXHRyZXR1cm4gXFxcInBzZ21paVxcXCI7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaD03OTA9c3RhdGljIGlubGluZSBpbnQgcGh5bGlua19nZXRfbGlua190aW1lcl9ucyhwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzkzLVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjc5NDpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzk1LVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTY6MTY6MDguOTU3NTgyNTAyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTYxNzIwNDUwMTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBwaHlsaW5rIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpbnRvIGEgZmV3IGtleSBhcmVhcyBvZiB0aGUgYHBoeWxpbmtgIGZyYW1ld29yay4gSXQgbG9va3MgbGlrZSBpdCdzIHRyZWF0aW5nIGl0IHNpbWlsYXJseSB0byBgU0dNSUlgIGFuZCBgUVNHTUlJYC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgcGh5bGluayBsb2dpYywgbWVhbmluZyB0aGUgdW5kZXJseWluZyBiZWhhdmlvciB3aWxsIGNoYW5nZS4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gdGhpcyBiZSByZWFjaGVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEkga25vdyBgcGh5bGlua2AgaXMgdXNlZCBieSBudW1lcm91cyBuZXR3b3JrIGRyaXZlcnMuIFNvbWUgb2YgdGhvc2UgY291bGQgYmUgZW11bGF0ZWQgb3IgdmlydHVhbGl6ZWQuIEF0IGxlYXN0LCB0aGUgcGh5bGluayBjb3JlIG1pZ2h0IGJlIHJlYWNoYWJsZSBpZiB3ZSBoYXZlIGEgZHJpdmVyIHRoYXQgdXNlcyBpdCwgcmlnaHQ/XG5cbkFoYSwgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGlzIGEgKnNwZWNpZmljKiBoYXJkd2FyZSBpbnRlcmZhY2UgZm9yIFBlbnRhIFNHTUlJLiBTbywgYXJlIHRoZXJlIGFueSBkcml2ZXJzIGFjdHVhbGx5IHVzaW5nIGl0PyBMZXQncyBzZWUuLi4gR3JlcHBpbmcgZm9yIGl0IHNob3dzIHRoYXQgdGhlIGBxY2E4MDd4YCBkcml2ZXIgZnJvbSBRdWFsY29tbSBkb2VzIHVzZSB0aGlzIGludGVyZmFjZSBtb2RlLiBUaGF0IG1ha2VzIHNlbnNlOyB0aGV5IG9mdGVuIHV0aWxpemUgdGhlc2UgaW50ZXJmYWNlIHR5cGVzLlxuXG5UaGUgZnVuY3Rpb25zIGJlaW5nIG1vZGlmaWVkIGFyZSBjcml0aWNhbDogYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlYCwgYHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlYCwgYHBoeWxpbmtfbWlpX2MyMl9wY3NfZW5jb2RlX2FkdmVydGlzZW1lbnRgLCBhbmQgYHBoeWxpbmtfZ2V0X2xpbmtfdGltZXJfbnNgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGVpdGhlciBleHBvcnRlZCBvciB1c2VkIGludGVybmFsbHkgd2l0aGluIGBwaHlsaW5rYCwgdGhlIGdlbmVyaWMgZnJhbWV3b3JrLiBJdCBzb3VuZHMgbGlrZSBhIGNvcmUgY2hhbmdlLCB0aGVyZWZvcmUgaXTigJlzIHdvcnRoIHRoaW5raW5nIGFib3V0IGZ1enppbmcgdGhpcywgcmlnaHQ/IEl0J3MgYSBrZXkgcGllY2Ugb2YgdGhlIG5ldHdvcmsgc3RhY2ssIHNvIGZ1enppbmcgd291bGQgYmUgYSBnb29kIGlkZWEuIEhvd2V2ZXIsIHdhaXQsIGBwaHlsaW5rYCBpcyBtb3N0bHkgZm9yIHBoeXNpY2FsIGV0aGVybmV0IGRyaXZlcnMgbGlrZSBNQUNzIGFuZCBQSFlzLiBDYW4gU3l6a2FsbGVyIGV2ZW4gZnV6eiBgcGh5bGlua2AgZWZmZWN0aXZlbHk/IFN5emthbGxlciBjYW4gZnV6eiBuZXRsaW5rIGludGVyZmFjZXMsIGFuZCBtYXliZSBzb21lIHZpcnR1YWwgZXRoZXJuZXQgZHJpdmVycyB1c2UgYHBoeWxpbmtgP1xuXG5MZXQncyBjaGVjayBpZiBhbnkgdmlydHVhbCBkcml2ZXIgdXRpbGl6ZXMgYHBoeWxpbmtgLiBJIHNob3VsZCBsb29rIGF0IHdoZXRoZXIgYHBoeWxpbmtfY3JlYXRlYCBpcyBjYWxsZWQgYnkgYW55IGRyaXZlciB0aGF0IGNhbiBiZSBpbnN0YW50aWF0ZWQgYnkgc3l6a2FsbGVyLiBMaWtlIGBuZXRkZXZzaW1gLCBgdmV0aGAsIG9yIGB0dW5gIGZvciBleGFtcGxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NTI4LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDE2OjE2OjI1LjEyOTYzMDgxOVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzA1NDUxNDM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeWxpbmtfY3JlYXRlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q9NzQ9dGhpcyBkb2N1bWVudGF0aW9uLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zNjMtXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdDozNjQ6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgbm9kZSwgcGh5X21vZGUsIFxcdTAwMjZwaHlsaW5rX29wcyk7XFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zNjUtXFx0aWYgKElTX0VSUihwaHlsaW5rKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTExMjg9c3RhdGljIGludCBhbHRlcmFfdHNlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTQxNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTQxNjpcXHRwcml2LVxcdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNDE3LVxcdFxcdFxcdFxcdCAgICAgICBvZl9md25vZGVfaGFuZGxlKHByaXYtXFx1MDAzZWRldmljZS1cXHUwMDNlb2Zfbm9kZSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jPTEwNzQ9c3RhdGljIGludCBhZzcxeHhfcGh5bGlua19zZXR1cChzdHJ1Y3QgYWc3MXh4ICphZylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTEwOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jOjExMDk6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZhZy1cXHUwMDNlcGh5bGlua19jb25maWcsIGFnLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTExMC1cXHRcXHRcXHRcXHQgYWctXFx1MDAzZXBoeV9pZl9tb2RlLCBcXHUwMDI2YWc3MXh4X3BoeWxpbmtfbWFjX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTEwMjM9c3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTA4NjpcXHRicC1cXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZicC1cXHUwMDNlcGh5bGlua19jb25maWcsIGJwLVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA4Ny1cXHRcXHRcXHRcXHQgICAgIGJwLVxcdTAwM2VwaHlfaW50ZXJmYWNlLCBcXHUwMDI2bWFjYl9waHlsaW5rX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jPTIwMT1zdGF0aWMgaW50IGRwYWFfbmV0ZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI3NC1cXHRtYWNfZGV2LVxcdTAwM2V1cGRhdGVfc3BlZWQgPSBkcGFhX2V0aF9jZ3Jfc2V0X3NwZWVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmM6Mjc1OlxcdG1hY19kZXYtXFx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2bWFjX2Rldi1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yNzYtXFx0XFx0XFx0XFx0XFx0ICBkZXZfZndub2RlKG1hY19kZXYtXFx1MDAzZWRldiksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM9NTYwPWludCBkcGFhMl9tYWNfY29ubmVjdChzdHJ1Y3QgZHBhYTJfbWFjICptYWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNjI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYzo2MjU6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZtYWMtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy02MjYtXFx0XFx0XFx0XFx0IGRwbWFjX25vZGUsIG1hYy1cXHUwMDNlaWZfbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYz05NzE9c3RhdGljIGludCBlbmV0YzRfbGlua19pbml0KHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5OTA6XFx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXFx1MDAyNmVuZXRjX3BsX21hY19vcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTEtXFx0aWYgKGVycikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTItXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJGYWlsZWQgdG8gY3JlYXRlIHBoeWxpbmtcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5OTM6XFx0XFx0Z290byBlcnJfcGh5bGlua19jcmVhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5NC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTk3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5OTg6ZXJyX3BoeWxpbmtfY3JlYXRlOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTktXFx0ZW5ldGNfbWRpb2J1c19kZXN0cm95KHBmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jPTg0Nz1zdGF0aWMgaW50IGVuZXRjX3BmX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjkzMDpcXHRlcnIgPSBlbmV0Y19waHlsaW5rX2NyZWF0ZShwcml2LCBub2RlLCBcXHUwMDI2ZW5ldGNfbWFjX3BoeWxpbmtfb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05MzEtXFx0aWYgKGVycilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo5MzI6XFx0XFx0Z290byBlcnJfcGh5bGlua19jcmVhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTMzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTQxLVxcdGVuZXRjX3BoeWxpbmtfZGVzdHJveShwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo5NDI6ZXJyX3BoeWxpbmtfY3JlYXRlOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTk0My1cXHRlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jPTMxMj1FWFBPUlRfU1lNQk9MX0dQTChlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zMTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjMxNDppbnQgZW5ldGNfcGh5bGlua19jcmVhdGUoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdiwgc3RydWN0IGRldmljZV9ub2RlICpub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zMTUtXFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgKm9wcylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjMzODpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBmLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgb2ZfZndub2RlX2hhbmRsZShub2RlKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtMzM5LVxcdFxcdFxcdFxcdCBwZi1cXHUwMDNlaWZfbW9kZSwgb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNDgtfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzozNDk6RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfcGh5bGlua19jcmVhdGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zNTAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmg9MTI9dm9pZCBlbmV0Y19tZGlvYnVzX2Rlc3Ryb3koc3RydWN0IGVuZXRjX3BmICpwZik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oOjEzOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oLTE0LVxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpvcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmM9ODUzPXN0YXRpYyBpbnQgZnNfZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jLTkzMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYzo5MzM6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZmZXAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKGZlcC1cXHUwMDNlZGV2KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYy05MzQtXFx0XFx0XFx0XFx0IHBoeV9tb2RlLCBcXHUwMDI2ZnNfZW5ldF9waHlsaW5rX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmM9MzQxOT1zdGF0aWMgaW50IHVjY19nZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UqIG9mZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmMtMzU3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYzozNTc0OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2dWdldGgtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKFxcdTAwMjZkZXYtXFx1MDAzZWRldiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmMtMzU3NS1cXHRcXHRcXHRcXHQgcGh5X2ludGVyZmFjZSwgXFx1MDAyNnVnZXRoX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYz01NDgwPXN0YXRpYyBpbnQgbXZuZXRhX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jLTU1OTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYzo1NTk5OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBwZGV2LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmMtNTYwMC1cXHRcXHRcXHRcXHQgcGh5X21vZGUsIFxcdTAwMjZtdm5ldGFfcGh5bGlua19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmM9Njg0MD1zdGF0aWMgaW50IG12cHAyX3BvcnRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTcxNDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmM6NzE0ODpcXHRcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBvcnQtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBwb3J0X2Z3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy03MTQ5LVxcdFxcdFxcdFxcdFxcdCBwaHlfbW9kZSwgXFx1MDAyNm12cHAyX3BoeWxpbmtfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jPTM3MD1zdGF0aWMgaW50IHByZXN0ZXJhX3BvcnRfc2ZwX2JpbmQoc3RydWN0IHByZXN0ZXJhX3BvcnQgKnBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYy00MTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmM6NDE3OlxcdFxcdHBoeV9saW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBvcnQtXFx1MDAzZXBoeV9jb25maWcsIGZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYy00MTgtXFx0XFx0XFx0XFx0XFx0ICBQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jPTQ4MjM9c3RhdGljIGludCBtdGtfYWRkX21hYyhzdHJ1Y3QgbXRrX2V0aCAqZXRoLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy00OTY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6NDk2ODpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNm1hYy1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy00OTY5LVxcdFxcdFxcdFxcdCBvZl9md25vZGVfaGFuZGxlKG1hYy1cXHUwMDNlb2Zfbm9kZSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jPTc0Nj1zdHJ1Y3QgbmV0X2RldmljZSAqZmJuaWNfbmV0ZGV2X2FsbG9jKHN0cnVjdCBmYm5pY19kZXYgKmZiZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM6ODM1OlxcdGlmIChmYm5pY19waHlsaW5rX2NyZWF0ZShuZXRkZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy04MzYtXFx0XFx0ZnJlZV9uZXRkZXYobmV0ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2Lmg9MTExPWludCBmYm5pY19waHlsaW5rX2dldF9mZWNwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmgtMTEyLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNwYXJhbSAqZmVjcGFyYW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2Lmg6MTEzOmludCBmYm5pY19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oLTExNC12b2lkIGZibmljX3BoeWxpbmtfZGVzdHJveShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jPTE3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBmYm5pY19waHlsaW5rX21hY19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0xODYtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MTg3OiAqIGZibmljX3BoeWxpbmtfY3JlYXRlIC0gUGh5bGluayBkZXZpY2UgY3JlYXRpb25cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0xODgtICogQG5ldGRldjogTmV0d29yayBEZXZpY2Ugc3RydWN0IHRvIGF0dGFjaCBwaHlsaW5rIGRldmljZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTk2LSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYzoxOTc6aW50IGZibmljX3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTIzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYzoyMzI6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZmYm4tXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBOVUxMLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTIzMy1cXHRcXHRcXHRcXHQgZmJuaWNfcGh5bGlua19zZWxlY3RfaW50ZXJmYWNlKGZibi1cXHUwMDNlYXVpKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zMTQyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGxhbjc0M3hfcGh5bGlua19tYWNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjMxNTA6c3RhdGljIGludCBsYW43NDN4X3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxNTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxOTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjMxOTM6XFx0cGwgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2YWRhcHRlci1cXHUwMDNlcGh5bGlua19jb25maWcsIE5VTEwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxOTQtXFx0XFx0XFx0ICAgIGFkYXB0ZXItXFx1MDAzZXBoeV9pbnRlcmZhY2UsIFxcdTAwMjZsYW43NDN4X3BoeWxpbmtfbWFjX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzY2ND1zdGF0aWMgaW50IGxhbjc0M3hfcGNpZGV2X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3MjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjM3MjQ6XFx0cmV0ID0gbGFuNzQzeF9waHlsaW5rX2NyZWF0ZShhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzcyNS1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmM9NzkxPXN0YXRpYyBpbnQgbGFuOTY2eF9wcm9iZV9wb3J0KHN0cnVjdCBsYW45NjZ4ICpsYW45NjZ4LCB1MzIgcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTg1NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYzo4NTY6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwb3J0LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYy04NTctXFx0XFx0XFx0XFx0IHBvcnRucCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYz0zMTI9c3RhdGljIGludCBzcGFyeDVfY3JlYXRlX3BvcnQoc3RydWN0IHNwYXJ4NSAqc3Bhcng1LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jLTM4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM6Mzg5OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2c3B4NV9wb3J0LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzkwLVxcdFxcdFxcdFxcdCBvZl9md25vZGVfaGFuZGxlKGNvbmZpZy1cXHUwMDNlbm9kZSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYz0xNzc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIG9jZWxvdF9waHlsaW5rX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3NzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTc4MDpzdGF0aWMgaW50IG9jZWxvdF9wb3J0X3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTc4MS1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRucClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4MjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTgyMTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4MjItXFx0XFx0XFx0XFx0IG9mX2Z3bm9kZV9oYW5kbGUocG9ydG5wKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jPTE4NDM9aW50IG9jZWxvdF9wcm9iZV9wb3J0KHN0cnVjdCBvY2Vsb3QgKm9jZWxvdCwgaW50IHBvcnQsIHN0cnVjdCByZWdtYXAgKnRhcmdldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4NzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTg4MDpcXHRlcnIgPSBvY2Vsb3RfcG9ydF9waHlsaW5rX2NyZWF0ZShvY2Vsb3QsIHBvcnQsIHBvcnRucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTg4MS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xMzcwPXN0YXRpYyBpbnQgc3RtbWFjX3BoeWxpbmtfc2V0dXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNDYxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTQ2MjpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBkZXZfZndub2RlKHByaXYtXFx1MDAzZWRldmljZSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNDYzLVxcdFxcdFxcdFxcdCBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VwaHlfaW50ZXJmYWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmM9NDU9aW50IHRuNDBfcGh5X3JlZ2lzdGVyKHN0cnVjdCB0bjQwX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYy02Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYzo2MzpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBQSFlfSU5URVJGQUNFX01PREVfWEFVSSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYy02NC1cXHRcXHRcXHRcXHQgXFx1MDAyNnRuNDBfbWFjX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jPTI3NTc9YW02NV9jcHN3X251c3NfaW5pdF9wb3J0X25kZXYoc3RydWN0IGFtNjVfY3Bzd19jb21tb24gKmNvbW1vbiwgdTMyIHBvcnRfaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYy0yODQxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmM6Mjg0MjpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBvcnQtXFx1MDAzZXNsYXZlLnBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMjg0My1cXHRcXHRcXHRcXHQgb2ZfZndub2RlX2hhbmRsZShwb3J0LVxcdTAwM2VzbGF2ZS5wb3J0X25wKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYz0xMzA9c3RhdGljIGludCBuZ2JlX3BoeWxpbmtfaW5pdChzdHJ1Y3Qgd3ggKnd4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jLTE0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmM6MTUwOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIHBoeV9tb2RlLCBcXHUwMDI2bmdiZV9tYWNfb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmMtMTUxLVxcdGlmIChJU19FUlIocGh5bGluaykpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jPTQ4Mj1pbnQgdHhnYmVfcGh5bGlua19pbml0X2FtbChzdHJ1Y3QgdHhnYmUgKnR4Z2JlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYy01MTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYzo1MTM6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgTlVMTCwgcGh5X21vZGUsIFxcdTAwMjZ0eGdiZV9tYWNfb3BzX2FtbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYy01MTQtXFx0aWYgKElTX0VSUihwaHlsaW5rKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmM9MjY4PXN0YXRpYyBpbnQgdHhnYmVfcGh5bGlua19pbml0KHN0cnVjdCB0eGdiZSAqdHhnYmUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jOjI5MzpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBmd25vZGUsIHBoeV9tb2RlLCBcXHUwMDI2dHhnYmVfbWFjX29wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0yOTQtXFx0aWYgKElTX0VSUihwaHlsaW5rKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM9Mjc5NT1zdGF0aWMgaW50IGF4aWVuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzExNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxMTg6XFx0bHAtXFx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2bHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBwZGV2LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzExOS1cXHRcXHRcXHRcXHQgICAgIGxwLVxcdTAwM2VwaHlfbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzEyMi1cXHRcXHRyZXQgPSBQVFJfRVJSKGxwLVxcdTAwM2VwaHlsaW5rKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxMjM6XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwicGh5bGlua19jcmVhdGUgZXJyb3IgKCVpKVxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjQtXFx0XFx0Z290byBjbGVhbnVwX21kaW87XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTUxNj1zdGF0aWMgaW50IHBoeWxpbmtfdmFsaWRhdGVfbWFjX2FuZF9wY3Moc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzEtXFx0aWYgKHBjcykge1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NTMyOlxcdFxcdC8qIFRoZSBQQ1MsIGlmIHByZXNlbnQsIG11c3QgYmUgc2V0dXAgYmVmb3JlIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTUzMy1cXHRcXHQgKiBoYXMgYmVlbiBjYWxsZWQuIElmIHRoZSBvcHMgaXMgbm90IGluaXRpYWxpc2VkLCBwcmludCBhblxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzEtICogcGh5bGlua19wY3NfbmVnX21vZGUoKSAtIGhlbHBlciB0byBkZXRlcm1pbmUgUENTIGluYmFuZCBtb2RlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDcyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA3My0gKiBAcGNzOiBhIHBvaW50ZXIgdG8gXFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xNzY5PXN0YXRpYyBpbnQgcGh5bGlua19yZWdpc3Rlcl9zZnAoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzkzLSAqIHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmsoKSAtIHNldCB0aGUgZml4ZWQgbGlua1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTc5NDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3OTUtICogQHN0YXRlOiBhIHBvaW50ZXIgdG8gYSBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xODMxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmspO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODMzLS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgzNDogKiBwaHlsaW5rX2NyZWF0ZSgpIC0gY3JlYXRlIGEgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzNS0gKiBAY29uZmlnOiBhIHBvaW50ZXIgdG8gdGhlIHRhcmdldCBcXHUwMDI2c3RydWN0IHBoeWxpbmtfY29uZmlnXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NDgtICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODQ5OnN0cnVjdCBwaHlsaW5rICpwaHlsaW5rX2NyZWF0ZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NTAtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MzYtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkzNzpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2NyZWF0ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM4LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTQwLSAqIHBoeWxpbmtfZGVzdHJveSgpIC0gY2xlYW51cCBhbmQgZGVzdHJveSB0aGUgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTk0MTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NDItICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTk1Nz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Rlc3Ryb3kpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTYwLSAqIHBoeWxpbmtfZXhwZWN0c19waHkoKSAtIERldGVybWluZSBpZiBwaHlsaW5rIGV4cGVjdHMgYSBwaHkgdG8gYmUgYXR0YWNoZWRcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5NjE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTYyLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMDY9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjI2LSAqIHBoeWxpbmtfY29ubmVjdF9waHkoKSAtIGNvbm5lY3QgYSBQSFkgdG8gdGhlIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyMjc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjI4LSAqIEBwaHk6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5X2RldmljZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjI2MD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Nvbm5lY3RfcGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI2My0gKiBwaHlsaW5rX29mX3BoeV9jb25uZWN0KCkgLSBjb25uZWN0IHRoZSBQSFkgc3BlY2lmaWVkIGluIHRoZSBEVCBtb2RlLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI2NDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNjUtICogQGRuOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGRldmljZV9ub2RlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMjc5PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjgyLSAqIHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KCkgLSBjb25uZWN0IHRoZSBQSFkgc3BlY2lmaWVkIGluIHRoZSBmd25vZGUuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjgzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI4NC0gKiBAZndub2RlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGZ3bm9kZV9oYW5kbGUuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzMzg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzQyLSAqICAgaW5zdGFuY2UuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzQzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM0NC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzczPXN0YXRpYyB2b2lkIHBoeWxpbmtfbGlua19jaGFuZ2VkKHN0cnVjdCBwaHlsaW5rICpwbCwgYm9vbCB1cCwgY29uc3QgY2hhciAqd2hhdClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM4Mi0gKiBwaHlsaW5rX21hY19jaGFuZ2UoKSAtIG5vdGlmeSBwaHlsaW5rIG9mIGEgY2hhbmdlIGluIE1BQyBzdGF0ZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjM4MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzODQtICogQHVwOiBpbmRpY2F0ZXMgd2hldGhlciB0aGUgbGluayBpcyBjdXJyZW50bHkgdXAuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0MTU9c3RhdGljIGlycXJldHVybl90IHBoeWxpbmtfbGlua19oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0MjUtICogcGh5bGlua19zdGFydCgpIC0gc3RhcnQgYSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNDI2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQyNy0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDg4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3RhcnQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDkxLSAqIHBoeWxpbmtfc3RvcCgpIC0gc3RvcCBhIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0OTI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDkzLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1MjI9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zdG9wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUyNS0gKiBwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKCkgLSBibG9jayBQSFkgYWJpbGl0eSB0byBzdG9wIHJlY2VpdmUgY2xvY2sgaW4gTFBJXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTI2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUyNy0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNTUxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTU0LSAqIHBoeWxpbmtfcnhfY2xrX3N0b3BfdW5ibG9jaygpIC0gdW5ibG9jayBQSFkgYWJpbGl0eSB0byBzdG9wIHJlY2VpdmUgY2xvY2tcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI1NTU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTU2LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1OTM9c3RhdGljIGJvb2wgcGh5bGlua19waHlfcG1fc3BlZWRfY3RybChzdHJ1Y3QgcGh5bGluayAqcGwpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MDAtICogcGh5bGlua19zdXNwZW5kKCkgLSBoYW5kbGUgYSBuZXR3b3JrIGRldmljZSBzdXNwZW5kIGV2ZW50XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjAxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjYwMi0gKiBAbWFjX3dvbDogdHJ1ZSBpZiB0aGUgTUFDIG5lZWRzIHRvIHJlY2VpdmUgcGFja2V0cyBmb3IgV2FrZS1vbi1MYW5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjY1Mj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N1c3BlbmQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjU1LSAqIHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUoKSAtIHByZXBhcmUgdG8gcmVzdW1lIGEgbmV0d29yayBkZXZpY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2NTY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjU3LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI2Nzc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wcmVwYXJlX3Jlc3VtZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2ODAtICogcGh5bGlua19yZXN1bWUoKSAtIGhhbmRsZSBhIG5ldHdvcmsgZGV2aWNlIHJlc3VtZSBldmVudFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjY4MTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2ODItICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjcyMD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Jlc3VtZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3MjMtICogcGh5bGlua19ldGh0b29sX2dldF93b2woKSAtIGdldCB0aGUgd2FrZSBvbiBsYW4gcGFyYW1ldGVycyBmb3IgdGhlIFBIWVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjcyNDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3MjUtICogQHdvbDogYSBwb2ludGVyIHRvIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF93b2xpbmZvIHRvIGhvbGQgdGhlIHJlYWQgcGFyYW1ldGVyc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNzU3PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfd29sKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjc2MC0gKiBwaHlsaW5rX2V0aHRvb2xfc2V0X3dvbCgpIC0gc2V0IHdha2Ugb24gbGFuIHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI3NjE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzYyLSAqIEB3b2w6IGEgcG9pbnRlciB0byBcXHUwMDI2c3RydWN0IGV0aHRvb2xfd29saW5mbyBmb3IgdGhlIGRlc2lyZWQgcGFyYW1ldGVyc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yODg5PXN0YXRpYyB2b2lkIHBoeWxpbmtfZ2V0X2tzZXR0aW5ncyhjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjkwNC0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCgpIC0gZ2V0IHRoZSBjdXJyZW50IGxpbmsgc2V0dGluZ3NcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5MDU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTA2LSAqIEBrc2V0OiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgdG8gaG9sZCBsaW5rIHNldHRpbmdzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5NTc9c3RhdGljIGJvb2wgcGh5bGlua192YWxpZGF0ZV9wY3NfaW5iYW5kX2F1dG9uZWcoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTc4LSAqIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KCkgLSBzZXQgdGhlIGxpbmsgc2V0dGluZ3NcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5Nzk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTgwLSAqIEBrc2V0OiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgZm9yIHRoZSBkZXNpcmVkIG1vZGVzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMxNDU9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTQ4LSAqIHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KCkgLSByZXN0YXJ0IG5lZ290aWF0aW9uXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTQ5OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE1MC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTcwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE3My0gKiBwaHlsaW5rX2V0aHRvb2xfZ2V0X3BhdXNlcGFyYW0oKSAtIGdldCB0aGUgY3VycmVudCBwYXVzZSBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTc0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE3NS0gKiBAcGF1c2U6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMxODY9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE4OS0gKiBwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0oKSAtIHNldCB0aGUgY3VycmVudCBwYXVzZSBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTkwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE5MS0gKiBAcGF1c2U6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMyNzI9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI3Ni0gKiAgIGNvdW50ZXJcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMyNzc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI3OC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMjk1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZ2V0X2VlZV9lcnIpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMjk4LSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfZWVlKCkgLSByZWFkIHRoZSBlbmVyZ3kgZWZmaWNpZW50IGV0aGVybmV0IHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMyOTk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzAwLSAqIEBlZWU6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9rZWVlIGZvciB0aGUgcmVhZCBwYXJhbWV0ZXJzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMzMjE9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2dldF9lZWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzI0LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfZWVlKCkgLSBzZXQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzMyNTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMjYtICogQGVlZTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX2tlZWUgZm9yIHRoZSBkZXNpcmVkIHBhcmFtZXRlcnNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzQ5NT1zdGF0aWMgaW50IHBoeWxpbmtfbWlpX3dyaXRlKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgaW50IHBoeV9pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzUxMy0gKiBwaHlsaW5rX21paV9pb2N0bCgpIC0gZ2VuZXJpYyBtaWkgaW9jdGwgaW50ZXJmYWNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTE0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzUxNS0gKiBAaWZyOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGlmcmVxIGZvciBzb2NrZXQgaW9jdGxzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM1ODg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19taWlfaW9jdGwpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTkyLSAqICAgbGluayBwYXJ0bmVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzU5MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1OTQtICogQHN5bmM6IHBlcmZvcm0gYWN0aW9uIHN5bmNocm9ub3VzbHlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzYxMz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NwZWVkX2Rvd24pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNjE3LSAqICAgcGh5bGlua19zcGVlZF9kb3duKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM2MTg6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNjE5LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQzNzI9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19taWlfYzQ1X3Bjc19nZXRfc3RhdGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzc2LSAqXFx0XFx0XFx0XFx0IHdoaWNoIGxvc2VzIHN0YXRlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0Mzc3OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM3OC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MzkzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcmVwbGF5X2xpbmtfYmVnaW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzk3LSAqXFx0XFx0XFx0ICAgICAgIHdoaWNoIGxvc3Qgc3RhdGVcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQzOTg6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzk5LSAqXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9Nzk5PXN0YXRpYyBpbnQgYXg4ODc3Ml9waHlsaW5rX3NldHVwKHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTktXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgyMDpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXYtXFx1MDAzZW5ldC1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODIxLVxcdFxcdFxcdFxcdCBwaHlfaWZfbW9kZSwgXFx1MDAyNmF4ODg3NzJfcGh5bGlua19tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9Mjc5OT1zdGF0aWMgaW50IGxhbjc4eHhfcGh5bGlua19zZXR1cChzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjgzOC1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4Mzk6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKHBjLCBkZXYtXFx1MDAzZW5ldC1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NDAtXFx0XFx0XFx0XFx0IGRldi1cXHUwMDNlaW50ZXJmYWNlLCBcXHUwMDI2bGFuNzh4eF9waHlsaW5rX21hY19vcHMpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg9NzE4PWludCBwY3NfcHJlX2luaXQoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzIxLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjcyMjpzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICosXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNzIzLVxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqLFxcbi0tXFxubmV0L2RzYS9wb3J0LmM9MTYxMT1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBkc2FfcG9ydF9waHlsaW5rX21hY19vcHMgPSB7XFxuLS1cXG5uZXQvZHNhL3BvcnQuYy0xNjE2LVxcbm5ldC9kc2EvcG9ydC5jOjE2MTc6aW50IGRzYV9wb3J0X3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBkc2FfcG9ydCAqZHApXFxubmV0L2RzYS9wb3J0LmMtMTYxOC17XFxuLS1cXG5uZXQvZHNhL3BvcnQuYy0xNjQ2LVxcbm5ldC9kc2EvcG9ydC5jOjE2NDc6XFx0cGwgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2ZHAtXFx1MDAzZXBsX2NvbmZpZywgb2ZfZndub2RlX2hhbmRsZShkcC1cXHUwMDNlZG4pLCBtb2RlLFxcbm5ldC9kc2EvcG9ydC5jLTE2NDgtXFx0XFx0XFx0ICAgIG1hY19vcHMpO1xcbi0tXFxubmV0L2RzYS9wb3J0LmM9MTY2NT1zdGF0aWMgaW50IGRzYV9zaGFyZWRfcG9ydF9waHlsaW5rX3JlZ2lzdGVyKHN0cnVjdCBkc2FfcG9ydCAqZHApXFxuLS1cXG5uZXQvZHNhL3BvcnQuYy0xNjczLVxcbm5ldC9kc2EvcG9ydC5jOjE2NzQ6XFx0ZXJyID0gZHNhX3BvcnRfcGh5bGlua19jcmVhdGUoZHApO1xcbm5ldC9kc2EvcG9ydC5jLTE2NzUtXFx0aWYgKGVycilcXG4tLVxcbm5ldC9kc2EvcG9ydC5oPTEwMD1pbnQgZHNhX3BvcnRfbXJwX2RlbF9yaW5nX3JvbGUoY29uc3Qgc3RydWN0IGRzYV9wb3J0ICpkcCxcXG5uZXQvZHNhL3BvcnQuaC0xMDEtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3Jpbmdfcm9sZV9tcnAgKm1ycCk7XFxubmV0L2RzYS9wb3J0Lmg6MTAyOmludCBkc2FfcG9ydF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZHNhX3BvcnQgKmRwKTtcXG5uZXQvZHNhL3BvcnQuaC0xMDMtdm9pZCBkc2FfcG9ydF9waHlsaW5rX2Rlc3Ryb3koc3RydWN0IGRzYV9wb3J0ICpkcCk7XFxuLS1cXG5uZXQvZHNhL3VzZXIuYz0yNjU0PXN0YXRpYyBpbnQgZHNhX3VzZXJfcGh5X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICp1c2VyX2RldilcXG4tLVxcbm5ldC9kc2EvdXNlci5jLTI2NzMtXFxubmV0L2RzYS91c2VyLmM6MjY3NDpcXHRyZXQgPSBkc2FfcG9ydF9waHlsaW5rX2NyZWF0ZShkcCk7XFxubmV0L2RzYS91c2VyLmMtMjY3NS1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxNjoxNjoyNi44MzUwODgzNjhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNDEwNzEyNDMzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aCBGdXp6aW5nPyBBIERlZXAgRGl2ZSBpbnRvIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgUmVhY2hhYmlsaXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIldvcnRoIEZ1enppbmc/XCIgVGhlIHByb21wdCBnaXZlcyBtZSBhIGNsZWFyIGRpcmVjdGl2ZTogaWYgdGhlIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdpdGggZW11bGF0ZWQgaGFyZHdhcmUsIHRoZW4gaXQncyBhIG5vLWdvLiBMZXQncyBicmVhayB0aGlzIGRvd24uXG5cbkZpcnN0LCBJIHNlZSB0aGF0IHRoaXMgcGF0Y2ggZGVhbHMgd2l0aCBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgd2l0aGluIHBoeWxpbmsuIEkga25vdyBwaHlsaW5rLCBpdCdzIGNvcmUgbmV0d29ya2luZyBzdHVmZiwgc28gYW55IGNoYW5nZSBoZXJlIHBpcXVlcyBteSBpbnRlcmVzdC4gVGhlIHBhdGNoIGl0c2VsZiBzZWVtcyBzbWFsbCwgcHJpbWFyaWx5IGFkZGluZyB0aGlzIG1vZGUgdG8gYSBzd2l0Y2ggc3RhdGVtZW50IHdpdGhpbiBjb3JlIHBoeWxpbmsgZnVuY3Rpb25zOiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgLCBgcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGVgLCBgcGh5bGlua19taWlfYzIyX3Bjc19lbmNvZGVfYWR2ZXJ0aXNlbWVudGAsIGFuZCBgcGh5bGlua19nZXRfbGlua190aW1lcl9uc2AuIFRoZXNlIGFyZSBhbGwgZnVuY3Rpb25zIGNhbGxlZCBieSBNQUMgYW5kIFBDUyBkcml2ZXJzLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBjYW4gSSB0cmlnZ2VyIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJIHN0YXJ0IHRoaW5raW5nIGFib3V0IHRoZSB3YXlzIFVTQiBkZXZpY2VzIGNhbiBiZSB1c2VkIGluIGEgdmlydHVhbCBzZXR0aW5nLiBJIGtub3cgYHN5emthbGxlcmAgY2FuIGVtdWxhdGUgVVNCIHVzaW5nIGBkdW1teV9oY2RgIG9yIGByYXctZ2FkZ2V0YCwgc28gVVNCIGRldmljZXMgKmFyZSogcmVhY2hhYmxlLiBJIHF1aWNrbHkgY2hlY2sgYSBjb3VwbGUgb2YgVVNCIGRyaXZlcnMgSSBrbm93LCBgYXNpeF9kZXZpY2VzLmNgIGFuZCBgbGFuNzh4eC5jYC4gTmVpdGhlciBvZiB0aGVzZSBkaXJlY3RseSB1c2UgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLCB3aGljaCBtYWtlcyBtZSBwYXVzZS4gVGhlbiBJIHN0YXJ0IHRoaW5raW5nIGFib3V0IFBIWSBkcml2ZXJzIG1vcmUgZ2VuZXJhbGx5LiBJIHJlY2FsbCBgcWNhODA3eC5jYCwgYW5kIHRoYXQgUEhZIGRyaXZlcnMgdHlwaWNhbGx5IHVzZSBNRElPLiBJIGtub3cgTURJTyBidXNlcyBjYW4gc29tZXRpbWVzIGJlIGVtdWxhdGVkLCBidXQgdXN1YWxseSB0aGV5IGFyZSB0aWVkIHRvIHJlYWwgaGFyZHdhcmUuIFRoaXMgc3BlY2lmaWMgbW9kZSBpcyBsaWtlbHkgc2V0IGJ5IGRldmljZSB0cmVlLCBBQ1BJLCBvciBoYXJkY29kZWQgaW4gdGhlIGRyaXZlci5cblxuVGhlIGNvcmUgb2YgdGhlIGlzc3VlOiBpcyB0aGlzIHN3aXRjaCBzdGF0ZW1lbnQgY2FzZSwgc3BlY2lmaWNhbGx5IGZvciBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAsIGFjdHVhbGx5ICpyZWFjaGFibGUqPyAgRXZlbiBpZiBJICpjb3VsZCogZW11bGF0ZSBhIE1BQy9QSFkgY2FwYWJsZSBvZiB1c2luZyBgUFNHTUlJYCwgaXMgdGhlcmUgYSBtZWNoYW5pc20gdG8gY29uZmlndXJlIGEgdmlydHVhbCBkZXZpY2UgdG8gKnVzZSogdGhhdCBwYXJ0aWN1bGFyIGludGVyZmFjZSBtb2RlPyAgTGlrZWx5IG5vdC4gSSB3b3VsZCBuZWVkIGEgd2F5IHRvIGluc3RhbnRpYXRlIGEgUEhZIG9yIE1BQyB3aXRoIHRoaXMgbW9kZSB2aWEgc29tZXRoaW5nIGxpa2UgbmV0bGluaywgYnV0IHRoYXQgc2VlbXMgZXh0cmVtZWx5IHVubGlrZWx5IGdpdmVuIHRoYXQgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGlzIHByaW1hcmlseSBhIGhhcmR3YXJlIHByb3BlcnR5LlxuXG5TbywgdGhpcyBtb2RlLCBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAsIGlzICpwcm9iYWJseSogdW5yZWFjaGFibGUgaW4gbXkgc3RhbmRhcmQgdmlydHVhbCBzZXR1cC4gTXkgY29uY2x1c2lvbiBpcyB0aGF0IHVubGVzcyB0aGVyZSdzIGEgc3BlY2lmaWMsIHVuY29tbW9uLCBhbmQgZW11bGF0ZWQgaGFyZHdhcmUgc2NlbmFyaW8sIHRoaXMgY29kZSBwYXRoLCBhdCBsZWFzdCB0aGUgc3BlY2lmaWMgY2FzZSBmb3IgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHdpdGhpbiB0aG9zZSBzd2l0Y2ggc3RhdGVtZW50cywgaXMgbGlrZWx5IGRlYWQgY29kZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBIb3dldmVyLCB0aGUgZnVuY3Rpb25zIG1vZGlmaWVkLCBhcmUgY29yZSBwaHlsaW5rIGZ1bmN0aW9ucyBhbmQgY291bGQgYmUgcmVhY2hlZCB3aXRoIG90aGVyIHZhbHVlcy5cblRoZSBmYWN0IHRoYXQgdGhpcyBpcyBqdXN0IGFuIGVudW0gdmFsdWUgaXMga2V5OyBpdCdzIHRoZSAqdXNhZ2UqIG9mIHRoYXQgZW51bSB0aGF0IG1hdHRlcnMuXG5cbkkgc2hvdWxkIHByb2JhYmx5IGNvbmZpcm0gaWYgdGhlcmUgaXMgYSB3YXkgdG8gc2V0IGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBmcm9tIHVzZXJzcGFjZSwganVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NzAyLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDE2OjE2OjQwLjk0MjIxNTM4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDM4OTQxMDg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3Q9MjM4PVNvbWUgb2YgdGhlIGludGVyZmFjZSBtb2RlcyBhcmUgZGVzY3JpYmVkIGJlbG93Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3QtMzI1LVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0OjMyNjpgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgYFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0LTMyNy0gICAgVGhpcyBpcyB0aGUgUGVudGEgU0dNSUkgbW9kZSwgaXQgaXMgc2ltaWxhciB0byBRU0dNSUkgYnV0IGl0IGNvbWJpbmVzIDVcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jPTE1OT1pbnQgcGh5X2ludGVyZmFjZV9udW1fcG9ydHMocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMS1cXHRcXHRyZXR1cm4gNDtcXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzoyMDI6XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMy1cXHRcXHRyZXR1cm4gNTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jPTI5ND11bnNpZ25lZCBsb25nIHBoeV9jYXBzX2Zyb21faW50ZXJmYWNlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTAtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM6MzExOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTItXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzg9c3RhdGljIGludCBwaHlsaW5rX2ludGVyZmFjZV9tYXhfc3BlZWQocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU5LVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjYwOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MS1cXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTc3ND1zdGF0aWMgaW50IHBoeWxpbmtfcGFyc2VfbW9kZShzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTgwOC1cXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjgwOTpcXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MTAtXFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDItXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDQzOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDQtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MTU1PXZvaWQgcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQxODYtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0MTg3OlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQxODgtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MjUxPWludCBwaHlsaW5rX21paV9jMjJfcGNzX2VuY29kZV9hZHZlcnRpc2VtZW50KHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQyNjctXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0MjY4OlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQyNjktXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTQ5MD1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfcHJvYmVfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU0OS1cXHRcXHRpZiAoIXN0cmNhc2VjbXAocGFja2FnZV9tb2RlX25hbWUsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU1MDpcXHRcXHRcXHRcXHRwaHlfbW9kZXMoUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSkpKVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTE6XFx0XFx0XFx0cHJpdi1cXHUwMDNlcGFja2FnZV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTUyLVxcdFxcdGVsc2UgaWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTU2Mj1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfY29uZmlnX2luaXRfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4NS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTg2OlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTg3LVxcdGRlZmF1bHQ6XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTUzPWV4dGVybiBjb25zdCBpbnQgcGh5X2Jhc2ljX3BvcnRzX2FycmF5WzNdO1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaC04OS0gKiBAUEhZX0lOVEVSRkFDRV9NT0RFX01PQ0E6IE11bHRpbWVkaWEgb3ZlciBDb2F4XFxuaW5jbHVkZS9saW51eC9waHkuaDo5MDogKiBAUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTogUGVudGEgU0dNSUlcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTkxLSAqIEBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOiBRdWFkIFNHTUlJXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTExND10eXBlZGVmIGVudW0ge1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaC0xMzItXFx0UEhZX0lOVEVSRkFDRV9NT0RFX01PQ0EsXFxuaW5jbHVkZS9saW51eC9waHkuaDoxMzM6XFx0UEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSxcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTEzNC1cXHRQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJLFxcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaD0yMTA9c3RhdGljIGlubGluZSBjb25zdCBjaGFyICpwaHlfbW9kZXMocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtMjQ4LVxcdFxcdHJldHVybiBcXFwibW9jYVxcXCI7XFxuaW5jbHVkZS9saW51eC9waHkuaDoyNDk6XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbmluY2x1ZGUvbGludXgvcGh5LmgtMjUwLVxcdFxcdHJldHVybiBcXFwicHNnbWlpXFxcIjtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTc5MD1zdGF0aWMgaW5saW5lIGludCBwaHlsaW5rX2dldF9saW5rX3RpbWVyX25zKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03OTMtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg6Nzk0OlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03OTUtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxNjoxNjo0Mi4zODExNjIxOThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk2MDA1NDQ4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaW4gYSBWaXJ0dWFsaXplZCBDb250ZXh0KipcblxuT2theSwgc28gSSdtIGZvY3VzaW5nIG9uIHRoaXMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGNvbnN0YW50LCBhbmQgSSBzZWUgaXQncyBvbmx5IGV4cGxpY2l0bHkgdXNlZCB3aXRoaW4gYHFjYTgwN3guY2AuIE15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgY29kZSBwYXRoLCBzcGVjaWZpY2FsbHkgdGhlIG5ld2x5IGFkZGVkIGNhc2VzIGZvciB0aGlzIG1vZGUsIGNhbiBldmVuIGJlICpyZWFjaGVkKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBJdCBzZWVtcyB1bmxpa2VseSwgcmlnaHQ/IElmIG5vIHZpcnR1YWwgbmV0d29yayBkcml2ZXIgbWFrZXMgdXNlIG9mIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCwgdGhlbiB0aG9zZSBuZXcgY2FzZSBicmFuY2hlcyBhcmUgZWZmZWN0aXZlbHkgZGVhZCBjb2RlLCBhdCBsZWFzdCBpbiBhIHZpcnR1YWxpemVkIGNvbnRleHQuXG5cblRoZSBuZXh0IHRoaW5nIEknbSBjb25zaWRlcmluZyBpcyB3aGV0aGVyIGBwaHlfaW50ZXJmYWNlX3RgIGlzIGV2ZW4gc29tZXRoaW5nIHRoYXQncyBjb25maWd1cmFibGUgZnJvbSB1c2Vyc3BhY2UsIGVpdGhlciB0aHJvdWdoIG5ldGxpbmsgb3IgZXRodG9vbC4gVHlwaWNhbGx5LCB0aGF0IHR5cGUgb2YgaW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24gaXMgYSBoYXJkd2FyZSBwcm9wZXJ0eSBhbmQgaXMgbWFuYWdlZCBkZWVwZXIgZG93biwgb2Z0ZW4gc2V0IGR1cmluZyBkcml2ZXIgaW5pdGlhbGl6YXRpb24uIERldmljZSB0cmVlIG92ZXJsYXlzIG1pZ2h0IG9mZmVyIGEgd29ya2Fyb3VuZCBvciBzcGVjaWZpYyBkZWJ1Z2ZzL3N5c2ZzIGludGVyZmFjZXMgKmNvdWxkKiBwb3RlbnRpYWxseSBhbGxvdyBzb21lIGNvbnRyb2wsIGJ1dCBldmVuIHRoYXQgcmVxdWlyZXMgYSBkcml2ZXIgdG8gaGF2ZSBpbXBsZW1lbnRlZCB0aGF0IGtpbmQgb2YgdXNlci1zcGFjZSBpbnRlcmZhY2UuXG5cbldhaXQsIGxvb2tpbmcgYXQgdGhlIGNvbW1vbiB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlcyBsaWtlIGB0dW5gLCBgdmV0aGAsIGFuZCBgbmV0ZGV2c2ltYCwgSSdtIHJlYWxpemluZyB0aGV5IGRvbid0IGV2ZW4gdXNlIGBwaHlsaW5rYC4gQW5kIHNwZWNpZmljYWxseSwgYG5ldGRldnNpbWAgaXNuJ3QgdXNpbmcgYHBoeWxpbmtgIGF0IGFsbC4gVGhpcyBmdXJ0aGVyIHJlaW5mb3JjZXMgbXkgaW5pdGlhbCBzdXNwaWNpb24gdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggY29kZSB0aGF0J3MgZnVuZGFtZW50YWxseSBoYXJkd2FyZS1kZXBlbmRlbnQgYW5kIHRoZXJlZm9yZSwgcG90ZW50aWFsbHkgdW5yZWFjaGFibGUgaW4gYSBmdWxseSB2aXJ0dWFsaXplZCBzZXR0aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjg4NSwiT3V0cHV0VG9rZW5zIjoxOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxNjoxNjo0OC4zNDEyMTk1MDdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MzgyNzY0NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5bGlua19jcmVhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdD03ND10aGlzIGRvY3VtZW50YXRpb24uXFxuLS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTM2My1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0OjM2NDpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBub2RlLCBwaHlfbW9kZSwgXFx1MDAyNnBoeWxpbmtfb3BzKTtcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTM2NS1cXHRpZiAoSVNfRVJSKHBoeWxpbmspKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM9MTEyOD1zdGF0aWMgaW50IGFsdGVyYV90c2VfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYy0xNDE1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYzoxNDE2OlxcdHByaXYtXFx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cHJpdi1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE0MTctXFx0XFx0XFx0XFx0ICAgICAgIG9mX2Z3bm9kZV9oYW5kbGUocHJpdi1cXHUwMDNlZGV2aWNlLVxcdTAwM2VvZl9ub2RlKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9MTA3ND1zdGF0aWMgaW50IGFnNzF4eF9waHlsaW5rX3NldHVwKHN0cnVjdCBhZzcxeHggKmFnKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMTA4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTEwOTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmFnLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgYWctXFx1MDAzZXBkZXYtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMTEwLVxcdFxcdFxcdFxcdCBhZy1cXHUwMDNlcGh5X2lmX21vZGUsIFxcdTAwMjZhZzcxeHhfcGh5bGlua19tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM9MTAyMz1zdGF0aWMgaW50IG1hY2JfbWlpX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYzoxMDg2OlxcdGJwLVxcdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmJwLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgYnAtXFx1MDAzZXBkZXYtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDg3LVxcdFxcdFxcdFxcdCAgICAgYnAtXFx1MDAzZXBoeV9pbnRlcmZhY2UsIFxcdTAwMjZtYWNiX3BoeWxpbmtfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmM9MjAxPXN0YXRpYyBpbnQgZHBhYV9uZXRkZXZfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0X2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmMtMjc0LVxcdG1hY19kZXYtXFx1MDAzZXVwZGF0ZV9zcGVlZCA9IGRwYWFfZXRoX2Nncl9zZXRfc3BlZWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYzoyNzU6XFx0bWFjX2Rldi1cXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZtYWNfZGV2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI3Ni1cXHRcXHRcXHRcXHRcXHQgIGRldl9md25vZGUobWFjX2Rldi1cXHUwMDNlZGV2KSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYz01NjA9aW50IGRwYWEyX21hY19jb25uZWN0KHN0cnVjdCBkcGFhMl9tYWMgKm1hYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy02MjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jOjYyNTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNm1hYy1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNi1cXHRcXHRcXHRcXHQgZHBtYWNfbm9kZSwgbWFjLVxcdTAwM2VpZl9tb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jPTk3MT1zdGF0aWMgaW50IGVuZXRjNF9saW5rX2luaXQoc3RydWN0IGVuZXRjX25kZXZfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05ODktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjk5MDpcXHRlcnIgPSBlbmV0Y19waHlsaW5rX2NyZWF0ZShwcml2LCBub2RlLCBcXHUwMDI2ZW5ldGNfcGxfbWFjX29wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5MS1cXHRpZiAoZXJyKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5Mi1cXHRcXHRkZXZfZXJyKGRldiwgXFxcIkZhaWxlZCB0byBjcmVhdGUgcGh5bGlua1xcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjk5MzpcXHRcXHRnb3RvIGVycl9waHlsaW5rX2NyZWF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTk0LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05OTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jOjk5ODplcnJfcGh5bGlua19jcmVhdGU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk5OS1cXHRlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9ODQ3PXN0YXRpYyBpbnQgZW5ldGNfcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05MjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6OTMwOlxcdGVyciA9IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHByaXYsIG5vZGUsIFxcdTAwMjZlbmV0Y19tYWNfcGh5bGlua19vcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTkzMS1cXHRpZiAoZXJyKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjkzMjpcXHRcXHRnb3RvIGVycl9waHlsaW5rX2NyZWF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05MzMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy05NDEtXFx0ZW5ldGNfcGh5bGlua19kZXN0cm95KHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjk0MjplcnJfcGh5bGlua19jcmVhdGU6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtOTQzLVxcdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM9MzEyPUVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX21kaW9idXNfZGVzdHJveSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTMxMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MzE0OmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTMxNS1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqb3BzKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTMzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6MzM4OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cGYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBvZl9md25vZGVfaGFuZGxlKG5vZGUpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy0zMzktXFx0XFx0XFx0XFx0IHBmLVxcdTAwM2VpZl9tb2RlLCBvcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTM0OC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjM0OTpFWFBPUlRfU1lNQk9MX0dQTChlbmV0Y19waHlsaW5rX2NyZWF0ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTM1MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uaD0xMj12b2lkIGVuZXRjX21kaW9idXNfZGVzdHJveShzdHJ1Y3QgZW5ldGNfcGYgKnBmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmg6MTM6aW50IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmgtMTQtXFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgKm9wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYz04NTM9c3RhdGljIGludCBmc19lbmV0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmMtOTMyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jOjkzMzpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmZlcC1cXHUwMDNlcGh5bGlua19jb25maWcsIGRldl9md25vZGUoZmVwLVxcdTAwM2VkZXYpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jLTkzNC1cXHRcXHRcXHRcXHQgcGh5X21vZGUsIFxcdTAwMjZmc19lbmV0X3BoeWxpbmtfbWFjX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYz0zNDE5PXN0YXRpYyBpbnQgdWNjX2dldGhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSogb2ZkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYy0zNTczLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jOjM1NzQ6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZ1Z2V0aC1cXHUwMDNlcGh5bGlua19jb25maWcsIGRldl9md25vZGUoXFx1MDAyNmRldi1cXHUwMDNlZGV2KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYy0zNTc1LVxcdFxcdFxcdFxcdCBwaHlfaW50ZXJmYWNlLCBcXHUwMDI2dWdldGhfbWFjX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jPTU0ODA9c3RhdGljIGludCBtdm5ldGFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmMtNTU5OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jOjU1OTk6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwcC1cXHUwMDNlcGh5bGlua19jb25maWcsIHBkZXYtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYy01NjAwLVxcdFxcdFxcdFxcdCBwaHlfbW9kZSwgXFx1MDAyNm12bmV0YV9waHlsaW5rX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYz02ODQwPXN0YXRpYyBpbnQgbXZwcDJfcG9ydF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmMtNzE0Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYzo3MTQ4OlxcdFxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cG9ydC1cXHUwMDNlcGh5bGlua19jb25maWcsIHBvcnRfZndub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTcxNDktXFx0XFx0XFx0XFx0XFx0IHBoeV9tb2RlLCBcXHUwMDI2bXZwcDJfcGh5bGlua19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmM9MzcwPXN0YXRpYyBpbnQgcHJlc3RlcmFfcG9ydF9zZnBfYmluZChzdHJ1Y3QgcHJlc3RlcmFfcG9ydCAqcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jLTQxNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYzo0MTc6XFx0XFx0cGh5X2xpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cG9ydC1cXHUwMDNlcGh5X2NvbmZpZywgZndub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jLTQxOC1cXHRcXHRcXHRcXHRcXHQgIFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM9NDgyMz1zdGF0aWMgaW50IG10a19hZGRfbWFjKHN0cnVjdCBtdGtfZXRoICpldGgsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTQ5NjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYzo0OTY4OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2bWFjLVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTQ5NjktXFx0XFx0XFx0XFx0IG9mX2Z3bm9kZV9oYW5kbGUobWFjLVxcdTAwM2VvZl9ub2RlKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM9NzQ2PXN0cnVjdCBuZXRfZGV2aWNlICpmYm5pY19uZXRkZXZfYWxsb2Moc3RydWN0IGZibmljX2RldiAqZmJkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy04MzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYzo4MzU6XFx0aWYgKGZibmljX3BoeWxpbmtfY3JlYXRlKG5ldGRldikpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jLTgzNi1cXHRcXHRmcmVlX25ldGRldihuZXRkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaD0xMTE9aW50IGZibmljX3BoeWxpbmtfZ2V0X2ZlY3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaC0xMTItXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBldGh0b29sX2ZlY3BhcmFtICpmZWNwYXJhbSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaDoxMTM6aW50IGZibmljX3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmgtMTE0LXZvaWQgZmJuaWNfcGh5bGlua19kZXN0cm95KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM9MTc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGZibmljX3BoeWxpbmtfbWFjX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE4Ni0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYzoxODc6ICogZmJuaWNfcGh5bGlua19jcmVhdGUgLSBQaHlsaW5rIGRldmljZSBjcmVhdGlvblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE4OC0gKiBAbmV0ZGV2OiBOZXR3b3JrIERldmljZSBzdHJ1Y3QgdG8gYXR0YWNoIHBoeWxpbmsgZGV2aWNlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0xOTYtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jOjE5NzppbnQgZmJuaWNfcGh5bGlua19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0xOTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMjMxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jOjIzMjpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNmZibi1cXHUwMDNlcGh5bGlua19jb25maWcsIE5VTEwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMjMzLVxcdFxcdFxcdFxcdCBmYm5pY19waHlsaW5rX3NlbGVjdF9pbnRlcmZhY2UoZmJuLVxcdTAwM2VhdWkpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTMxNDI9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgbGFuNzQzeF9waHlsaW5rX21hY19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzE0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzE1MDpzdGF0aWMgaW50IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzE1MS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzE5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzE5MzpcXHRwbCA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgTlVMTCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzE5NC1cXHRcXHRcXHQgICAgYWRhcHRlci1cXHUwMDNlcGh5X2ludGVyZmFjZSwgXFx1MDAyNmxhbjc0M3hfcGh5bGlua19tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zNjY0PXN0YXRpYyBpbnQgbGFuNzQzeF9wY2lkZXZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzcyMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzcyNDpcXHRyZXQgPSBsYW43NDN4X3BoeWxpbmtfY3JlYXRlKGFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zNzI1LVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYz03OTE9c3RhdGljIGludCBsYW45NjZ4X3Byb2JlX3BvcnQoc3RydWN0IGxhbjk2NnggKmxhbjk2NngsIHUzMiBwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmMtODU1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jOjg1NjpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBvcnQtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTg1Ny1cXHRcXHRcXHRcXHQgcG9ydG5wLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jPTMxMj1zdGF0aWMgaW50IHNwYXJ4NV9jcmVhdGVfcG9ydChzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzg4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYzozODk6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZzcHg1X3BvcnQtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYy0zOTAtXFx0XFx0XFx0XFx0IG9mX2Z3bm9kZV9oYW5kbGUoY29uZmlnLVxcdTAwM2Vub2RlKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jPTE3NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgb2NlbG90X3BoeWxpbmtfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTc3OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxNzgwOnN0YXRpYyBpbnQgb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IG9jZWxvdCAqb2NlbG90LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xNzgxLVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqcG9ydG5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTgyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxODIxOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cHJpdi1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTgyMi1cXHRcXHRcXHRcXHQgb2ZfZndub2RlX2hhbmRsZShwb3J0bnApLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM9MTg0Mz1pbnQgb2NlbG90X3Byb2JlX3BvcnQoc3RydWN0IG9jZWxvdCAqb2NlbG90LCBpbnQgcG9ydCwgc3RydWN0IHJlZ21hcCAqdGFyZ2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTg3OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxODgwOlxcdGVyciA9IG9jZWxvdF9wb3J0X3BoeWxpbmtfY3JlYXRlKG9jZWxvdCwgcG9ydCwgcG9ydG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODgxLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTEzNzA9c3RhdGljIGludCBzdG1tYWNfcGh5bGlua19zZXR1cChzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE0NjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzoxNDYyOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIGRldl9md25vZGUocHJpdi1cXHUwMDNlZGV2aWNlKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTE0NjMtXFx0XFx0XFx0XFx0IHByaXYtXFx1MDAzZXBsYXQtXFx1MDAzZXBoeV9pbnRlcmZhY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYz00NT1pbnQgdG40MF9waHlfcmVnaXN0ZXIoc3RydWN0IHRuNDBfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jLTYyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jOjYzOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIFBIWV9JTlRFUkZBQ0VfTU9ERV9YQVVJLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jLTY0LVxcdFxcdFxcdFxcdCBcXHUwMDI2dG40MF9tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmM9Mjc1Nz1hbTY1X2Nwc3dfbnVzc19pbml0X3BvcnRfbmRldihzdHJ1Y3QgYW02NV9jcHN3X2NvbW1vbiAqY29tbW9uLCB1MzIgcG9ydF9pZHgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jLTI4NDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYzoyODQyOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cG9ydC1cXHUwMDNlc2xhdmUucGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYy0yODQzLVxcdFxcdFxcdFxcdCBvZl9md25vZGVfaGFuZGxlKHBvcnQtXFx1MDAzZXNsYXZlLnBvcnRfbnApLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jPTEzMD1zdGF0aWMgaW50IG5nYmVfcGh5bGlua19pbml0KHN0cnVjdCB3eCAqd3gpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmMtMTQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYzoxNTA6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgTlVMTCwgcGh5X21vZGUsIFxcdTAwMjZuZ2JlX21hY19vcHMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYy0xNTEtXFx0aWYgKElTX0VSUihwaHlsaW5rKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM9NDgyPWludCB0eGdiZV9waHlsaW5rX2luaXRfYW1sKHN0cnVjdCB0eGdiZSAqdHhnYmUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTUxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jOjUxMzpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBwaHlfbW9kZSwgXFx1MDAyNnR4Z2JlX21hY19vcHNfYW1sKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTUxNC1cXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYz0yNjg9c3RhdGljIGludCB0eGdiZV9waHlsaW5rX2luaXQoc3RydWN0IHR4Z2JlICp0eGdiZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmMtMjkyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmM6MjkzOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIGZ3bm9kZSwgcGh5X21vZGUsIFxcdTAwMjZ0eGdiZV9tYWNfb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5NC1cXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz0yNzk1PXN0YXRpYyBpbnQgYXhpZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzExODpcXHRscC1cXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZscC1cXHUwMDNlcGh5bGlua19jb25maWcsIHBkZXYtXFx1MDAzZWRldi5md25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTE5LVxcdFxcdFxcdFxcdCAgICAgbHAtXFx1MDAzZXBoeV9tb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTIyLVxcdFxcdHJldCA9IFBUUl9FUlIobHAtXFx1MDAzZXBoeWxpbmspO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzEyMzpcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJwaHlsaW5rX2NyZWF0ZSBlcnJvciAoJWkpXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzEyNC1cXHRcXHRnb3RvIGNsZWFudXBfbWRpbztcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NTE2PXN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9tYWNfYW5kX3BjcyhzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTUzMS1cXHRpZiAocGNzKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo1MzI6XFx0XFx0LyogVGhlIFBDUywgaWYgcHJlc2VudCwgbXVzdCBiZSBzZXR1cCBiZWZvcmUgcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNTMzLVxcdFxcdCAqIGhhcyBiZWVuIGNhbGxlZC4gSWYgdGhlIG9wcyBpcyBub3QgaW5pdGlhbGlzZWQsIHByaW50IGFuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTEwMzk9c3RhdGljIGVudW0gaW5iYW5kX3R5cGUgcGh5bGlua19nZXRfaW5iYW5kX3R5cGUocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA3MS0gKiBwaHlsaW5rX3Bjc19uZWdfbW9kZSgpIC0gaGVscGVyIHRvIGRldGVybWluZSBQQ1MgaW5iYW5kIG1vZGVcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwNzI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDczLSAqIEBwY3M6IGEgcG9pbnRlciB0byBcXHUwMDI2c3RydWN0IHBoeWxpbmtfcGNzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE3Njk9c3RhdGljIGludCBwaHlsaW5rX3JlZ2lzdGVyX3NmcChzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3OTMtICogcGh5bGlua19zZXRfZml4ZWRfbGluaygpIC0gc2V0IHRoZSBmaXhlZCBsaW5rXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNzk0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc5NS0gKiBAc3RhdGU6IGEgcG9pbnRlciB0byBhIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE4MzE9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zZXRfZml4ZWRfbGluayk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4MzMtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODM0OiAqIHBoeWxpbmtfY3JlYXRlKCkgLSBjcmVhdGUgYSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODM1LSAqIEBjb25maWc6IGEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IFxcdTAwMjZzdHJ1Y3QgcGh5bGlua19jb25maWdcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg0OC0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4NDk6c3RydWN0IHBoeWxpbmsgKnBoeWxpbmtfY3JlYXRlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg1MC1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTkzNi19XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTM3OkVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfY3JlYXRlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MzgtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NDAtICogcGh5bGlua19kZXN0cm95KCkgLSBjbGVhbnVwIGFuZCBkZXN0cm95IHRoZSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTQxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk0Mi0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xOTU3PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZGVzdHJveSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjAtICogcGh5bGlua19leHBlY3RzX3BoeSgpIC0gRGV0ZXJtaW5lIGlmIHBoeWxpbmsgZXhwZWN0cyBhIHBoeSB0byBiZSBhdHRhY2hlZFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTk2MTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjItICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjIwNj1zdGF0aWMgaW50IHBoeWxpbmtfYXR0YWNoX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyMjYtICogcGh5bGlua19jb25uZWN0X3BoeSgpIC0gY29ubmVjdCBhIFBIWSB0byB0aGUgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjIyNzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyMjgtICogQHBoeTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlfZGV2aWNlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMjYwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfY29ubmVjdF9waHkpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjYzLSAqIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKSAtIGNvbm5lY3QgdGhlIFBIWSBzcGVjaWZpZWQgaW4gdGhlIERUIG1vZGUuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjY0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI2NS0gKiBAZG46IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZGV2aWNlX25vZGUuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNzk9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19vZl9waHlfY29ubmVjdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyODItICogcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QoKSAtIGNvbm5lY3QgdGhlIFBIWSBzcGVjaWZpZWQgaW4gdGhlIGZ3bm9kZS5cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyODM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjg0LSAqIEBmd25vZGU6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZndub2RlX2hhbmRsZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjMzOD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDItICogICBpbnN0YW5jZS5cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIzNDM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzQ0LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzNzM9c3RhdGljIHZvaWQgcGh5bGlua19saW5rX2NoYW5nZWQoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIHVwLCBjb25zdCBjaGFyICp3aGF0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzgyLSAqIHBoeWxpbmtfbWFjX2NoYW5nZSgpIC0gbm90aWZ5IHBoeWxpbmsgb2YgYSBjaGFuZ2UgaW4gTUFDIHN0YXRlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzgzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM4NC0gKiBAdXA6IGluZGljYXRlcyB3aGV0aGVyIHRoZSBsaW5rIGlzIGN1cnJlbnRseSB1cC5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjQxNT1zdGF0aWMgaXJxcmV0dXJuX3QgcGh5bGlua19saW5rX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQyNS0gKiBwaHlsaW5rX3N0YXJ0KCkgLSBzdGFydCBhIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0MjY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDI3LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0ODg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zdGFydCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0OTEtICogcGh5bGlua19zdG9wKCkgLSBzdG9wIGEgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQ5MjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0OTMtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjUyMj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N0b3ApO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTI1LSAqIHBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2soKSAtIGJsb2NrIFBIWSBhYmlsaXR5IHRvIHN0b3AgcmVjZWl2ZSBjbG9jayBpbiBMUElcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI1MjY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTI3LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1NTE9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19yeF9jbGtfc3RvcF9ibG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NTQtICogcGh5bGlua19yeF9jbGtfc3RvcF91bmJsb2NrKCkgLSB1bmJsb2NrIFBIWSBhYmlsaXR5IHRvIHN0b3AgcmVjZWl2ZSBjbG9ja1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjU1NTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NTYtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjU5Mz1zdGF0aWMgYm9vbCBwaHlsaW5rX3BoeV9wbV9zcGVlZF9jdHJsKHN0cnVjdCBwaHlsaW5rICpwbClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjYwMC0gKiBwaHlsaW5rX3N1c3BlbmQoKSAtIGhhbmRsZSBhIG5ldHdvcmsgZGV2aWNlIHN1c3BlbmQgZXZlbnRcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2MDE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjAyLSAqIEBtYWNfd29sOiB0cnVlIGlmIHRoZSBNQUMgbmVlZHMgdG8gcmVjZWl2ZSBwYWNrZXRzIGZvciBXYWtlLW9uLUxhblxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjUyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3VzcGVuZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2NTUtICogcGh5bGlua19wcmVwYXJlX3Jlc3VtZSgpIC0gcHJlcGFyZSB0byByZXN1bWUgYSBuZXR3b3JrIGRldmljZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjY1NjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2NTctICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjY3Nz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3ByZXBhcmVfcmVzdW1lKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY4MC0gKiBwaHlsaW5rX3Jlc3VtZSgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2UgcmVzdW1lIGV2ZW50XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjgxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY4Mi0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNzIwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcmVzdW1lKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjcyMy0gKiBwaHlsaW5rX2V0aHRvb2xfZ2V0X3dvbCgpIC0gZ2V0IHRoZSB3YWtlIG9uIGxhbiBwYXJhbWV0ZXJzIGZvciB0aGUgUEhZXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzI0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjcyNS0gKiBAd29sOiBhIHBvaW50ZXIgdG8gXFx1MDAyNnN0cnVjdCBldGh0b29sX3dvbGluZm8gdG8gaG9sZCB0aGUgcmVhZCBwYXJhbWV0ZXJzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI3NTc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2dldF93b2wpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzYwLSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfd29sKCkgLSBzZXQgd2FrZSBvbiBsYW4gcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjc2MTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3NjItICogQHdvbDogYSBwb2ludGVyIHRvIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF93b2xpbmZvIGZvciB0aGUgZGVzaXJlZCBwYXJhbWV0ZXJzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI4ODk9c3RhdGljIHZvaWQgcGh5bGlua19nZXRfa3NldHRpbmdzKGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTA0LSAqIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3NfZ2V0KCkgLSBnZXQgdGhlIGN1cnJlbnQgbGluayBzZXR0aW5nc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjkwNTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5MDYtICogQGtzZXQ6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyB0byBob2xkIGxpbmsgc2V0dGluZ3NcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjk1Nz1zdGF0aWMgYm9vbCBwaHlsaW5rX3ZhbGlkYXRlX3Bjc19pbmJhbmRfYXV0b25lZyhzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5NzgtICogcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQoKSAtIHNldCB0aGUgbGluayBzZXR0aW5nc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjk3OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5ODAtICogQGtzZXQ6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyBmb3IgdGhlIGRlc2lyZWQgbW9kZXNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzE0NT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNDgtICogcGh5bGlua19ldGh0b29sX253YXlfcmVzZXQoKSAtIHJlc3RhcnQgbmVnb3RpYXRpb25cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxNDk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTUwLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMxNzA9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX253YXlfcmVzZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTczLSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSgpIC0gZ2V0IHRoZSBjdXJyZW50IHBhdXNlIHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxNzQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTc1LSAqIEBwYXVzZTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzE4Nj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X3BhdXNlcGFyYW0pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTg5LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSgpIC0gc2V0IHRoZSBjdXJyZW50IHBhdXNlIHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxOTA6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTkxLSAqIEBwYXVzZTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI3Mj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMjc2LSAqICAgY291bnRlclxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzI3NzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKCkuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMjc4LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMyOTU9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19nZXRfZWVlX2Vycik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyOTgtICogcGh5bGlua19ldGh0b29sX2dldF9lZWUoKSAtIHJlYWQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzI5OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMDAtICogQGVlZTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX2tlZWUgZm9yIHRoZSByZWFkIHBhcmFtZXRlcnNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzMyMT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X2VlZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMjQtICogcGh5bGlua19ldGh0b29sX3NldF9lZWUoKSAtIHNldCB0aGUgZW5lcmd5IGVmZmljaWVudCBldGhlcm5ldCBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMzI1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzMyNi0gKiBAZWVlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIGRlc2lyZWQgcGFyYW1ldGVyc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNDk1PXN0YXRpYyBpbnQgcGh5bGlua19taWlfd3JpdGUoc3RydWN0IHBoeWxpbmsgKnBsLCB1bnNpZ25lZCBpbnQgcGh5X2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTEzLSAqIHBoeWxpbmtfbWlpX2lvY3RsKCkgLSBnZW5lcmljIG1paSBpb2N0bCBpbnRlcmZhY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM1MTQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTE1LSAqIEBpZnI6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgaWZyZXEgZm9yIHNvY2tldCBpb2N0bHNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzU4OD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9pb2N0bCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1OTItICogICBsaW5rIHBhcnRuZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTkzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzU5NC0gKiBAc3luYzogcGVyZm9ybSBhY3Rpb24gc3luY2hyb25vdXNseVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNjEzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3BlZWRfZG93bik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM2MTctICogICBwaHlsaW5rX3NwZWVkX2Rvd24oKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzYxODogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM2MTktICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDM3Mj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9jNDVfcGNzX2dldF9zdGF0ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzNzYtICpcXHRcXHRcXHRcXHQgd2hpY2ggbG9zZXMgc3RhdGVcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQzNzc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzc4LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQzOTM9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19yZXBsYXlfbGlua19iZWdpbik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzOTctICpcXHRcXHRcXHQgICAgICAgd2hpY2ggbG9zdCBzdGF0ZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDM5ODogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzOTktICpcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03OTk9c3RhdGljIGludCBheDg4NzcyX3BoeWxpbmtfc2V0dXAoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgxOS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODIwOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cHJpdi1cXHUwMDNlcGh5bGlua19jb25maWcsIGRldi1cXHUwMDNlbmV0LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MjEtXFx0XFx0XFx0XFx0IHBoeV9pZl9tb2RlLCBcXHUwMDI2YXg4ODc3Ml9waHlsaW5rX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYz0yNzk5PXN0YXRpYyBpbnQgbGFuNzh4eF9waHlsaW5rX3NldHVwKHN0cnVjdCBsYW43OHh4X25ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODM4LVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM6MjgzOTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUocGMsIGRldi1cXHUwMDNlbmV0LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjg0MC1cXHRcXHRcXHRcXHQgZGV2LVxcdTAwM2VpbnRlcmZhY2UsIFxcdTAwMjZsYW43OHh4X3BoeWxpbmtfbWFjX29wcyk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaD03MTg9aW50IHBjc19wcmVfaW5pdChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MjEtXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg6NzIyOnN0cnVjdCBwaHlsaW5rICpwaHlsaW5rX2NyZWF0ZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKixcXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03MjMtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICosXFxuLS1cXG5uZXQvZHNhL3BvcnQuYz0xNjExPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGRzYV9wb3J0X3BoeWxpbmtfbWFjX29wcyA9IHtcXG4tLVxcbm5ldC9kc2EvcG9ydC5jLTE2MTYtXFxubmV0L2RzYS9wb3J0LmM6MTYxNzppbnQgZHNhX3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IGRzYV9wb3J0ICpkcClcXG5uZXQvZHNhL3BvcnQuYy0xNjE4LXtcXG4tLVxcbm5ldC9kc2EvcG9ydC5jLTE2NDYtXFxubmV0L2RzYS9wb3J0LmM6MTY0NzpcXHRwbCA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZkcC1cXHUwMDNlcGxfY29uZmlnLCBvZl9md25vZGVfaGFuZGxlKGRwLVxcdTAwM2VkbiksIG1vZGUsXFxubmV0L2RzYS9wb3J0LmMtMTY0OC1cXHRcXHRcXHQgICAgbWFjX29wcyk7XFxuLS1cXG5uZXQvZHNhL3BvcnQuYz0xNjY1PXN0YXRpYyBpbnQgZHNhX3NoYXJlZF9wb3J0X3BoeWxpbmtfcmVnaXN0ZXIoc3RydWN0IGRzYV9wb3J0ICpkcClcXG4tLVxcbm5ldC9kc2EvcG9ydC5jLTE2NzMtXFxubmV0L2RzYS9wb3J0LmM6MTY3NDpcXHRlcnIgPSBkc2FfcG9ydF9waHlsaW5rX2NyZWF0ZShkcCk7XFxubmV0L2RzYS9wb3J0LmMtMTY3NS1cXHRpZiAoZXJyKVxcbi0tXFxubmV0L2RzYS9wb3J0Lmg9MTAwPWludCBkc2FfcG9ydF9tcnBfZGVsX3Jpbmdfcm9sZShjb25zdCBzdHJ1Y3QgZHNhX3BvcnQgKmRwLFxcbm5ldC9kc2EvcG9ydC5oLTEwMS1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHN3aXRjaGRldl9vYmpfcmluZ19yb2xlX21ycCAqbXJwKTtcXG5uZXQvZHNhL3BvcnQuaDoxMDI6aW50IGRzYV9wb3J0X3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBkc2FfcG9ydCAqZHApO1xcbm5ldC9kc2EvcG9ydC5oLTEwMy12b2lkIGRzYV9wb3J0X3BoeWxpbmtfZGVzdHJveShzdHJ1Y3QgZHNhX3BvcnQgKmRwKTtcXG4tLVxcbm5ldC9kc2EvdXNlci5jPTI2NTQ9c3RhdGljIGludCBkc2FfdXNlcl9waHlfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKnVzZXJfZGV2KVxcbi0tXFxubmV0L2RzYS91c2VyLmMtMjY3My1cXG5uZXQvZHNhL3VzZXIuYzoyNjc0OlxcdHJldCA9IGRzYV9wb3J0X3BoeWxpbmtfY3JlYXRlKGRwKTtcXG5uZXQvZHNhL3VzZXIuYy0yNjc1LVxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDE2OjE2OjQ5Ljc3OTUwMDEyNVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjA1MDY5MDI3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgQ29kZSBQYXRoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgY2FzZSBhbmQgaXQncyBmbGFnZ2VkIGFzIGEgY29uY2Vybi4gSXQgc2VlbXMgdGhpcyBtb2RlIGlzICpvbmx5KiB1c2VkIHdpdGhpbiB0aGUgYHFjYTgwN3guY2AgUEhZIGRyaXZlci4gVGhlIGludGVyZXN0aW5nIHBhcnQgaXMgdGhhdCBgcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGVgIGFuZCBgcGh5bGlua19taWlfYzIyX3Bjc19lbmNvZGVfYWR2ZXJ0aXNlbWVudGAgYXJlIGV4cG9ydGVkIGZ1bmN0aW9ucywgYW5kIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlcmUncyBhbnkgd2F5IGEgdXNlciwgb3IgYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgY2FuIGFjdHVhbGx5IHRyaWdnZXIgdGhpcy5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBjb3VsZCBhIHZpcnR1YWwgZHJpdmVyIHBvdGVudGlhbGx5IGNhbGwgdGhlc2U/IEJ1dCwgbm8sIG5vIHZpcnR1YWwgZHJpdmVyICpkaXJlY3RseSogY2FsbHMgdGhlc2UgZnVuY3Rpb25zLiBDb3VsZCBhIHVzZXIgc29tZWhvdyB0cmlnZ2VyIHRoaXMgY29kZSBwYXRoPyBQZXJoYXBzIGlmIGEgdXNlciB3ZXJlIHRvIGNvbnN0cnVjdCBhIGR1bW15IE1ESU8gYnVzLCByZWdpc3RlciBhIGBxY2E4MDd4YCBQSFkgb24gaXQsIGFuZCB0aGVuIGNvbm5lY3QgdGhpcyB0byBhIE1BQyBkcml2ZXIgdGhhdCB1dGlsaXplcyBgcGh5bGlua2AsIGxpa2UgdGhlIGBsYW43OHh4YCBVU0IgZHJpdmVyPyBCdXQgdGhlbiwgaGFuZyBvbiwgdGhlIGBsYW43OHh4YCBkcml2ZXIgKmhhcmRjb2RlcyogYFBIWV9JTlRFUkZBQ0VfTU9ERV9HTUlJYC4gQW5kIHRoZSBgYXg4ODc3MmAgZHJpdmVyLCB0b28sIGp1c3QgaGFyZGNvZGVzIGVpdGhlciBgUEhZX0lOVEVSRkFDRV9NT0RFX01JSWAgb3IgYFBIWV9JTlRFUkZBQ0VfTU9ERV9STUlJYC4gVGhpcyBpcyBhIGRlYWQgZW5kLiBJbiBvdGhlciB3b3JkcywgdGhlc2UgZHJpdmVycyB3aWxsIG5ldmVyIGFsbG93IHRoZSBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgY2FzZSB0byBiZSBoaXQuXG5cbk9rYXksIHNvIHdoYXQgYWJvdXQgKm90aGVyKiBkcml2ZXJzPyBJcyB0aGVyZSBldmVuICphbnkqIGRyaXZlciB0aGF0IGFsbG93cyBzZXR0aW5nIGBwaHlfaW50ZXJmYWNlX3RgIGZyb20gdXNlcnNwYWNlPyBObywgbm90IHR5cGljYWxseS4gVGhpcyBpbnRlcmZhY2Ugc2V0dGluZyBpcyB1c3VhbGx5IGRldGVybWluZWQgYnkgZmlybXdhcmUgKERUL0FDUEkpIG9yIGl0J3MgaGFyZGNvZGVkIHdpdGhpbiB0aGUgZHJpdmVyIGl0c2VsZi5cblxuSW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nIGxpa2UgUUVNVSBvciBHQ0UsIGl0IGdldHMgZXZlbiB0cmlja2llci4gV2UgZ2VuZXJhbGx5IGRvbid0IGhhdmUgRGV2aWNlIFRyZWUgKERUKSBub2RlcyBmb3IgYXJiaXRyYXJ5IE1BQ3MsIHVubGVzcyB3ZSdyZSB1c2luZyBkZXZpY2UgdHJlZSBvdmVybGF5cywgd2hpY2ggc3l6a2FsbGVyICh3aGljaCBJJ20gYXNzdW1pbmcgaXMgdGhlIHRlc3QgZnJhbWV3b3JrIGJlaW5nIHVzZWQpIGRvZXNuJ3QgdHlwaWNhbGx5IGVtcGxveSBieSBkZWZhdWx0LCByaWdodD8gT3IgKmRvZXMqIHN5emthbGxlciB1c2UgdGhvc2Ugb3ZlcmxheXM/IChJdCdzIGNvbmZpZ3VyYWJsZSwgYnV0IEkgZG9uJ3QgdGhpbmsgaXQncyB0aGUgc3RhbmRhcmQgcHJhY3RpY2UuKVxuXG5XYWl0LCBJIG5lZWQgdG8gY29uc2lkZXIgYG5ldGxpbmtgLiBTeXprYWxsZXIgKmNhbiogdXNlIGBuZXRsaW5rYCB0byBjcmVhdGUgdmlydHVhbCBsaW5rcy4gQnV0LCBJIGtub3cgYHBoeWxpbmtgIGlzbid0IHVzZWQgYnkgdGhlIHVzdWFsIHN1c3BlY3RzIGxpa2UgYHZldGhgLCBgbWFjdmxhbmAsIGBpcHZsYW5gLCBvciBgdHVuYC4gVGhhdCBtZWFucyB0aGUgKm9ubHkqIHBsYXVzaWJsZSB3YXkgdG8gcmVhY2ggYHBoeWxpbmtgIGlzIHRocm91Z2ggVVNCIGRyaXZlcnMgbGlrZSBgbGFuNzh4eGAgb3IgYGFzaXhgLiBBbmQsIGFnYWluLCB0aG9zZSBkcml2ZXJzICpoYXJkY29kZSogdGhlIGludGVyZmFjZSBtb2RlLlxuXG5TbywgdGhlIGNvbmNsdXNpb24gSSdtIGxlYW5pbmcgdG93YXJkIGlzIHRoYXQgdGhpcyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgY2FzZSBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudHMgaXMgdmlydHVhbGx5IGltcG9zc2libGUgdG8gcmVhY2ggaW4gdGhlIHZpcnR1YWxpemVkIHRlc3RpbmcgZW52aXJvbm1lbnRzLlxuXG5MZXQgbWUganVzdCBkb3VibGUtY2hlY2sgb25lIHRoaW5nOiBEb2VzIHRoZSBgaW50ZXJmYWNlYCBwYXJhbWV0ZXIsIGlzIGl0IGV2ZW4gcGFzc2VkIHRvIHRoZSBgcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGVgIGZ1bmN0aW9uPyBIbW0uIE5vLCB0aGUgYGludGVyZmFjZWAgaXMgKm5vdCogcGFzc2VkLiBPa2F5LCB0aW1lIHRvIHJlLWV4YW1pbmUgdGhhdCBwYXRjaCBhZ2Fpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzUxMjksIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTY6MTc6MDEuODMwMTkyMjlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MDg2ODM5NDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuYz0yMTM9c3RhdGljIHZvaWQgbXhsODYyeHhfcGNzX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9teGw4NjJ4eC9teGw4NjJ4eC1waHlsaW5rLmMtMjU3LVxcdFxcdCAgICAgICAoc3RhdGUtXFx1MDAzZWFuX2NvbXBsZXRlID8gQk1TUl9BTkVHQ09NUExFVEUgOiAwKTtcXG5kcml2ZXJzL25ldC9kc2EvbXhsODYyeHgvbXhsODYyeHgtcGh5bGluay5jOjI1ODpcXHRcXHRwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdGF0ZSwgbmVnX21vZGUsIGJtc3IsXFxuZHJpdmVycy9uZXQvZHNhL214bDg2Mnh4L214bDg2Mnh4LXBoeWxpbmsuYy0yNTktXFx0XFx0XFx0XFx0XFx0XFx0IGxlMTZfdG9fY3B1KHN0LmxwYS5jbDM3KSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTU3Mz1zdGF0aWMgdm9pZCBtYWNiX3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtNTgwLVxcdGxwYSA9IGdlbV9yZWFkbChicCwgUENTQU5MUEJBU0UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6NTgxOlxcdHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0YXRlLCBuZWdfbW9kZSwgYm1zciwgbHBhKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTU4Mi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BvcnQuYz0yODc9dm9pZCBsYW45NjZ4X3BvcnRfc3RhdHVzX2dldChzdHJ1Y3QgbGFuOTY2eF9wb3J0ICpwb3J0LCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BvcnQuYy0zMTYtXFx0XFx0bHBfYWR2ID0gREVWX1BDUzFHX0FORUdfU1RBVFVTX0xQX0FEVl9HRVQodmFsKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BvcnQuYzozMTc6XFx0XFx0cGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RhdGUsIG5lZ19tb2RlLCBibXNyLCBscF9hZHYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcG9ydC5jLTMxOC1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3Bjcy5jPTY2PXN0YXRpYyB2b2lkIGR3bWFjX2ludGVncmF0ZWRfcGNzX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY3MuYy04My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNzLmM6ODQ6XFx0XFx0cGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RhdGUsIG5lZ19tb2RlLCBzdGF0dXMsIGxwYSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3Bjcy5jLTg1LVxcdH0gZWxzZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLW10ay1seW54aS5jPTEwOD1zdGF0aWMgdm9pZCBtdGtfcGNzX2x5bnhpX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbXRrLWx5bnhpLmMtMTE4LVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MtbXRrLWx5bnhpLmM6MTE5OlxcdHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0YXRlLCBuZWdfbW9kZSxcXG5kcml2ZXJzL25ldC9wY3MvcGNzLW10ay1seW54aS5jLTEyMC1cXHRcXHRcXHRcXHRcXHQgRklFTERfR0VUKFNHTUlJX0JNU1IsIGJtKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3Bjcy9wY3MteHBjcy5jPTExMDM9c3RhdGljIGludCB4cGNzX2dldF9zdGF0ZV9jMzdfMTAwMGJhc2V4KHN0cnVjdCBkd194cGNzICp4cGNzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL3Bjcy14cGNzLmMtMTEzMi1cXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYzoxMTMzOlxcdFxcdHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0YXRlLCBuZWdfbW9kZSwgYm1zciwgbHBhKTtcXG5kcml2ZXJzL25ldC9wY3MvcGNzLXhwY3MuYy0xMTM0LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDExNj1zdGF0aWMgdm9pZCBwaHlsaW5rX2RlY29kZV91c2dtaWlfd29yZChzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDE0MC0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQxNDE6ICogcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoKSAtIERlY29kZSBNQUMgUENTIHN0YXRlIGZyb20gTUlJIHJlZ2lzdGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDE0Mi0gKiBAc3RhdGU6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MTU0LSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDE1NTp2b2lkIHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDE1Ni1cXHRcXHRcXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgbmVnX21vZGUsIHUxNiBibXNyLCB1MTYgbHBhKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MjAyLX1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQyMDM6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDIwNC1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDIyMD12b2lkIHBoeWxpbmtfbWlpX2MyMl9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBtZGlvX2RldmljZSAqcGNzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MjMyLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDIzMzpcXHRwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZShzdGF0ZSwgbmVnX21vZGUsIGJtc3IsIGxwYSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MjM0LX1cXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTgxNj1zdGF0aWMgaW5saW5lIGJvb2wgcGh5bGlua19tYWNfaW1wbGVtZW50c19scGkoY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyAqb3BzKVxcbi0tXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtODIwLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oOjgyMTp2b2lkIHBoeWxpbmtfbWlpX2MyMl9wY3NfZGVjb2RlX3N0YXRlKHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTgyMi1cXHRcXHRcXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgbmVnX21vZGUsIHUxNiBibXNyLCB1MTYgbHBhKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTY6MTc6MDMuNzM4ODgwNTM1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg5NzQ0NTk3MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVjb2RpbmcgdGhlIFBTR01JSSBQdXp6bGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZWAgZnVuY3Rpb24sIGFuZCBpdCdzIHRha2luZyBhIGBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZWAuIFJpZ2h0LCBtYWtlcyBzZW5zZS4gTm93LCBkaXZpbmcgaW4sIHRoZXJlJ3MgYSBgc3dpdGNoYCBzdGF0ZW1lbnQgYmFzZWQgb24gYHN0YXRlLVx1MDAzZWludGVyZmFjZWAuIFRoYXQncyB0aGUga2V5LiBTbywgdGhlIGNvZGUgcGF0aCB3ZSdyZSBjb25jZXJuZWQgd2l0aCBpcyB0cmlnZ2VyZWQgd2hlbiBgc3RhdGUtXHUwMDNlaW50ZXJmYWNlYCBpcyBlcXVhbCB0byBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAuIEdvdCBpdC5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGlzOiB3aGVyZSBkb2VzIGBzdGF0ZS1cdTAwM2VpbnRlcmZhY2VgIGdldCBzZXQ/IEkga25vdyB0aGUgcGh5bGluayBjb3JlIGlzIHJlc3BvbnNpYmxlIGZvciB0aGF0LiBJdCBkZXRlcm1pbmVzIHRoZSBpbnRlcmZhY2UgbW9kZSBiYXNlZCBvbiB0aGUgaGFyZHdhcmUgY2FwYWJpbGl0aWVzIGFuZCB0aGUgc3lzdGVtIGNvbmZpZ3VyYXRpb24uIFRoZXJlZm9yZSBgc3RhdGUtXHUwMDNlaW50ZXJmYWNlYCBpcyBnb2luZyB0byBiZSBzZXQgdG8gYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgICpvbmx5KiBpZiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSBhY3R1YWxseSAqc3VwcG9ydHMqIFBTR01JSSBhbmQgaXQncyBleHBsaWNpdGx5IGNvbmZpZ3VyZWQgdG8gdXNlIGl0LlxuXG5SaWdodCwgbm93LCBJIHNlZW0gdG8gcmVtZW1iZXIgdGhhdCB0aGUgYHFjYTgwN3guY2AgZHJpdmVyIGlzIHRoZSBvbmx5IG9uZSBJJ3ZlIHNlZW4gdGhhdCAqZXhwbGljaXRseSogdXNlcyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAuIEJ1dCBsZXQncyBiZSB0aG9yb3VnaCwgeW91IGNhbiBuZXZlciBiZSB0b28gY2FyZWZ1bC4gSSBzaG91bGQgcHJvYmFibHkganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0LCBqdXN0IHRvIG1ha2Ugc3VyZSBteSBhc3N1bXB0aW9uIGlzIGNvcnJlY3QuIEl0J3MgYWx3YXlzIGEgZ29vZCBpZGVhIHRvIHZlcmlmeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzgwMTYsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTY6MTc6MTIuNzEzMzQyNzExWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDM2MzUyMDY4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3Q9MjM4PVNvbWUgb2YgdGhlIGludGVyZmFjZSBtb2RlcyBhcmUgZGVzY3JpYmVkIGJlbG93Olxcbi0tXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BoeS5yc3QtMzI1LVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0OjMyNjpgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgYFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0LTMyNy0gICAgVGhpcyBpcyB0aGUgUGVudGEgU0dNSUkgbW9kZSwgaXQgaXMgc2ltaWxhciB0byBRU0dNSUkgYnV0IGl0IGNvbWJpbmVzIDVcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jPTE1OT1pbnQgcGh5X2ludGVyZmFjZV9udW1fcG9ydHMocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMS1cXHRcXHRyZXR1cm4gNDtcXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzoyMDI6XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMy1cXHRcXHRyZXR1cm4gNTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jPTI5ND11bnNpZ25lZCBsb25nIHBoeV9jYXBzX2Zyb21faW50ZXJmYWNlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTAtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM6MzExOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTItXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzg9c3RhdGljIGludCBwaHlsaW5rX2ludGVyZmFjZV9tYXhfc3BlZWQocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU5LVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjYwOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MS1cXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTc3ND1zdGF0aWMgaW50IHBoeWxpbmtfcGFyc2VfbW9kZShzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTgwOC1cXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjgwOTpcXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MTAtXFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDItXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDQzOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDQtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MTU1PXZvaWQgcGh5bGlua19taWlfYzIyX3Bjc19kZWNvZGVfc3RhdGUoc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQxODYtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0MTg3OlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQxODgtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MjUxPWludCBwaHlsaW5rX21paV9jMjJfcGNzX2VuY29kZV9hZHZlcnRpc2VtZW50KHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQyNjctXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0MjY4OlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQyNjktXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTQ5MD1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfcHJvYmVfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU0OS1cXHRcXHRpZiAoIXN0cmNhc2VjbXAocGFja2FnZV9tb2RlX25hbWUsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU1MDpcXHRcXHRcXHRcXHRwaHlfbW9kZXMoUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSkpKVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTE6XFx0XFx0XFx0cHJpdi1cXHUwMDNlcGFja2FnZV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTUyLVxcdFxcdGVsc2UgaWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTU2Mj1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfY29uZmlnX2luaXRfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4NS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTg2OlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTg3LVxcdGRlZmF1bHQ6XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTUzPWV4dGVybiBjb25zdCBpbnQgcGh5X2Jhc2ljX3BvcnRzX2FycmF5WzNdO1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaC04OS0gKiBAUEhZX0lOVEVSRkFDRV9NT0RFX01PQ0E6IE11bHRpbWVkaWEgb3ZlciBDb2F4XFxuaW5jbHVkZS9saW51eC9waHkuaDo5MDogKiBAUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTogUGVudGEgU0dNSUlcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTkxLSAqIEBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOiBRdWFkIFNHTUlJXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTExND10eXBlZGVmIGVudW0ge1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaC0xMzItXFx0UEhZX0lOVEVSRkFDRV9NT0RFX01PQ0EsXFxuaW5jbHVkZS9saW51eC9waHkuaDoxMzM6XFx0UEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSxcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTEzNC1cXHRQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJLFxcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaD0yMTA9c3RhdGljIGlubGluZSBjb25zdCBjaGFyICpwaHlfbW9kZXMocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtMjQ4LVxcdFxcdHJldHVybiBcXFwibW9jYVxcXCI7XFxuaW5jbHVkZS9saW51eC9waHkuaDoyNDk6XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbmluY2x1ZGUvbGludXgvcGh5LmgtMjUwLVxcdFxcdHJldHVybiBcXFwicHNnbWlpXFxcIjtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTc5MD1zdGF0aWMgaW5saW5lIGludCBwaHlsaW5rX2dldF9saW5rX3RpbWVyX25zKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03OTMtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmg6Nzk0OlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC03OTUtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxNjoxNzoxNC4xNDk3MDAxNzlaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE0ODQ0ODU3ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgVXNhZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBxY2E4MDd4LmNgIGNvZGUsIGFuZCBpdCBzZWVtcyB0byBiZSB0aGUgKm9ubHkqIHBsYWNlIHdoZXJlIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpcyBiZWluZyB1c2VkLiBUaGF0J3MgYSBzdGFydGluZyBwb2ludC4gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiBpcyBob3cgdGhpcyB2YWx1ZSBjYW4gZXZlbiBiZSBzZXQsIGNhbiBpdCBiZSBtYW5pcHVsYXRlZD9cblxuSG1tLCBjYW4gYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGJlIHNldCB0aHJvdWdoIG5ldGxpbms/IEkgZG9uJ3QgdGhpbmsgc28sIGFuZCBJIHNob3VsZCByZWFsbHkgdmVyaWZ5IGlmIGBwaHlfbW9kZXNgIGFyZSBwYXJzZWFibGUgZnJvbSB1c2Vyc3BhY2UuIExldCdzIHNlZS4uLiB0aGUgY29kZSB1dGlsaXplcyBgcGh5bGlua19wYXJzZV9tb2RlYCwgYnV0IHRoYXQncyBkcml2ZW4gYnkgdGhlIGRldmljZSB0cmVlLCByaWdodD8gSXQncyBub3QgYSBydW4tdGltZSBjb25maWd1cmF0aW9uLCBzbyBjYW4gSSBjcmVhdGUgYSB2aXJ0dWFsIG5ldHdvcmsgZGV2aWNlIGFuZCBzb21laG93IGZvcmNlIGl0cyBQSFkgbW9kZSB0byBgUFNHTUlJYD8gSSBkb24ndCB0aGluayB0aGF0J3MgcG9zc2libGUuIFRoZXJlIGlzbid0IGFueSBuZXRsaW5rIEFQSSB0byBkaXJlY3RseSBzZXQgdGhlIGBwaHlfaW50ZXJmYWNlX3RgIGZvciBhIGBuZXRfZGV2aWNlYC4gVGhhdCdzIHVzdWFsbHkgaGFyZGNvZGVkIG9yIGNvbWluZyBmcm9tIHRoZSBkZXZpY2UgdHJlZS5cblxuQWxyaWdodCwgYnV0IHdoYXQgYWJvdXQgYGV0aHRvb2xgPyBDYW4gaXQgbWFuaXB1bGF0ZSBhbnkgb2YgdGhlc2UgbGluayBwYXJhbWV0ZXJzPyBOb3QgZGlyZWN0bHksIGl0IHNlZW1zIGxpa2UgYGV0aHRvb2xgIGNhbid0IHNldCB0aGUgUEhZIGludGVyZmFjZSBtb2RlLCBsaWtlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gU0dNSUksIFJHTUlJLCBvciBQU0dNSUkuXG5cblNvLCB0aGUgb25seSB3YXkgdGhpcyBjb2RlIHVzaW5nIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpcyBldmVuIGdvaW5nIHRvIGJlIHJlYWNoZWQsIGlzIGlmIGEgZGV2aWNlIGlzIHByb2JlZCB3aXRoIHRoYXQgc3BlY2lmaWMgbW9kZSBzZXQuIFNpbmNlIGBxY2E4MDd4YCBpcyBhICpwaHlzaWNhbCogUEhZIGNoaXAsIGl0J3Mgbm90IGdvaW5nIHRvIHNob3cgdXAgaW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IHVubGVzcyBJIGNyYWZ0IGEgZHVtbXkgTURJTyBidXMgYW5kIHJlZ2lzdGVyIHRoaXMgUEhZIG9uIGl0LiBOb3csIHRoYXQncyBwb3NzaWJsZSwgYnV0IGV2ZW4gaWYgdGhhdCB3b3JrZWQsIHJlbWVtYmVyIGBxY2E4MDd4YCBpcyBqdXN0IGEgUEhZICpkcml2ZXIqLiBUaGUgTUFDIGRyaXZlciwgd2hpY2ggdXRpbGl6ZXMgYHBoeWxpbmtgLCAqYWxzbyogaGFzIHRvIGJlIHNldCB0byB1c2UgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLiBUaGF0J3MgdGhlIHJlYWwgY2hhbGxlbmdlLiBJcyB0aGVyZSBldmVuIGEgTUFDIGRyaXZlciB0aGF0IHN1cHBvcnRzIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYD8gVGhhdCdzIHdoYXQgSSBuZWVkIHRvIGRldGVybWluZS4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBNQUMgZHJpdmVycyBhbmQgc2VlIGlmIGFueSBldmVuICpzdXBwb3J0KiB0aGlzIHNwZWNpZmljIGludGVyZmFjZSBtb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDI0NSwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOVQxNjoxNzoyNS42MzQxODk2NzZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTcwLCJFcnJvciI6IllvdSBhcmUgcmVwZWF0aW5nIHRoZSBzYW1lIHRvb2wgY2FsbCB3aXRoIHRoZSBleGFjdCBzYW1lIGFyZ3VtZW50cy5cbllvdSBhbHJlYWR5IGhhdmUgdGhlIHJlc3VsdCBvZiB0aGlzIGV4YWN0IHRvb2wgY2FsbCBpbiB5b3VyIGNvbnZlcnNhdGlvbiBoaXN0b3J5LlxuRG8gTk9UIHJlcXVlc3QgaXQgYWdhaW4uIFlvdSBNVVNUIHN5bnRoZXNpemUgdGhlIGluZm9ybWF0aW9uIHlvdSBhbHJlYWR5IGhhdmUsXG50cnkgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCB0b29sLCBvciBwcm9jZWVkIHRvIHRoZSBuZXh0IHN0ZXAuIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIllvdSBhcmUgcmVwZWF0aW5nIHRoZSBzYW1lIHRvb2wgY2FsbCB3aXRoIHRoZSBleGFjdCBzYW1lIGFyZ3VtZW50cy5cXG5Zb3UgYWxyZWFkeSBoYXZlIHRoZSByZXN1bHQgb2YgdGhpcyBleGFjdCB0b29sIGNhbGwgaW4geW91ciBjb252ZXJzYXRpb24gaGlzdG9yeS5cXG5EbyBOT1QgcmVxdWVzdCBpdCBhZ2Fpbi4gWW91IE1VU1Qgc3ludGhlc2l6ZSB0aGUgaW5mb3JtYXRpb24geW91IGFscmVhZHkgaGF2ZSxcXG50cnkgYSBjb21wbGV0ZWx5IGRpZmZlcmVudCB0b29sLCBvciBwcm9jZWVkIHRvIHRoZSBuZXh0IHN0ZXAuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDE2OjE3OjI1LjYzNDIyMzMxNloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjI3MjE3NDQzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50OiBXb3J0aEZ1enppbmcgPSBGYWxzZSoqXG5cbk9rYXksIHNvIEkndmUganVzdCBiZWVuIGxvb2tpbmcgaW50byB3aGV0aGVyIG9yIG5vdCBhIHBhdGNoIHJlbGF0ZWQgdG8gYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGlzIHdvcnRoIGZ1enppbmcuIE15IGluaXRpYWwgc2NhbiB1c2luZyBgZ3JlcGAgcXVpY2tseSBzaG93ZWQgdGhhdCB0aGlzIHBhcnRpY3VsYXIgaW50ZXJmYWNlIG1vZGUgaXMgb25seSBtZW50aW9uZWQgaW4gZG9jdW1lbnRhdGlvbiwgcGh5IGNvcmUgZmlsZXMsIGFuZCBhIGZldyBQSFkgZHJpdmVyIGZpbGVzLCBuYW1lbHkgdGhlIGBxY2E4MDd4YCBkcml2ZXIsIGJ1dCBpdCBkb2Vzbid0IGFwcGVhciBpbiBhbnkgTUFDIGRyaXZlciBpbXBsZW1lbnRhdGlvbnMuIFRoYXQncyBhIGtleSBvYnNlcnZhdGlvbi5cblxuTXkgaW1tZWRpYXRlIHRob3VnaHQgd2FzLCBjb3VsZCBzb21lIE1BQyBkcml2ZXJzICppbmRpcmVjdGx5KiBzdXBwb3J0IGl0LCBwZXJoYXBzIGJ5IHBhc3NpbmcgaW50ZXJmYWNlIG1vZGUgaW5mb3JtYXRpb24gdGhyb3VnaCBEZXZpY2UgVHJlZSAoRFQpPyBBbmQsIHBlcmhhcHMgYSBNQUMgZHJpdmVyIGNvdWxkIHV0aWxpemUgcGh5bGluay4gSG93ZXZlciwgZ2l2ZW4gdGhhdCB0aGlzIGludGVyZmFjZSBpcyBub3QgZXhwbGljaXRseSBtZW50aW9uZWQgYnkgYW55IE1BQyBkcml2ZXIsIGFuZCBlc3BlY2lhbGx5IGdpdmVuIHRoZSBjb250ZXh0IG9mIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aGVyZSBEVCBpc24ndCBnZW5lcmFsbHkgYXZhaWxhYmxlIGZvciBNQUNzLCBJJ3ZlIGNvbmNsdWRlZCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiBRRU1VIG9yIEdDRS5cblxuSSBkb3VibGUtY2hlY2tlZCB0byBzZWUgaWYgdmlydHVhbCBkcml2ZXJzIGxpa2UgYG5ldGRldnNpbWAsIGBkdW1teWAsIG9yIGB2ZXRoYCBtaWdodCBsZXZlcmFnZSBgcGh5bGlua2AsIGJ1dCBub25lIG9mIHRoZW0gZG8uIEV2ZW4gdGhlIHZpcnR1YWwtaXNoIFVTQiBkcml2ZXJzLCBsaWtlIGBhc2l4YCBhbmQgYGxhbjc4eHhgLCB3aGljaCAqZG8qIHVzZSBgcGh5bGlua2AsIGV4cGxpY2l0bHkgaGFyZGNvZGUgdGhlaXIgaW50ZXJmYWNlIG1vZGVzIHRvIG1vcmUgc3RhbmRhcmQgdHlwZXMgbGlrZSBNSUksIFJNSUksIG9yIEdNSUkuIFRoaXMgY29uZmlybXMgdGhhdCBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgd29uJ3QgZXZlciBiZSBzZWVuIGJ5IGBwaHlsaW5rX21paV9jMjJfcGNzX2RlY29kZV9zdGF0ZWAsIGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAsIGBwaHlsaW5rX21paV9jMjJfcGNzX2VuY29kZV9hZHZlcnRpc2VtZW50YCwgb3IgYHBoeWxpbmtfZ2V0X2xpbmtfdGltZXJfbnNgIHdpdGhpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcuXG5cbkVzc2VudGlhbGx5LCBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaXMgdGllZCB0byBhIHNwZWNpZmljIHBoeXNpY2FsIFBIWSAodGhlIGBxY2E4MDd4YCksIGFuZCBub3RoaW5nIGVtdWxhdGVkIG9yIHZpcnR1YWwgdG91Y2hlcyBpdC4gU2luY2UgdGhlIHByb21wdCBzdGF0ZXMgSSBzaG91bGQgcmV0dXJuIFwiV29ydGhGdXp6aW5nPWZhbHNlXCIgaWYgdGhlIHBhdGNoIG9ubHkgYWRkcyB1bnJlYWNoYWJsZSBjb2RlIHBhdGhzIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgSSdtIGNvbmZpZGVudCBpbiBzYXlpbmcgdGhhdCB0aGUgbmV3IGNvZGUgcGF0aHMgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoIGFyZSwgaW4gZmFjdCwgdW5yZWFjaGFibGUuXG5cbk15IHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IFRoZSBwYXRjaCBpbnRyb2R1Y2VzIHN1cHBvcnQgZm9yIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCB3aXRoaW4gYHBoeWxpbmtgLiBIb3dldmVyLCB0aGlzIGludGVyZmFjZSBtb2RlIGlzIHNwZWNpZmljIHRvIHRoZSBRQ0E4MDd4IFBIWSwgd2l0aCBubyBNQUMgZHJpdmVycyBleHBsaWNpdGx5IHN1cHBvcnRpbmcgaXQgKG9yIHBhc3NpbmcgaXQgZnJvbSBEVCkuIEZ1cnRoZXJtb3JlLCB2aXJ0dWFsIG5ldHdvcmsgZHJpdmVycyBhbmQgc29mdHdhcmUtZW11bGF0ZWQgVVNCIGV0aGVybmV0IGFkYXB0ZXJzIGhhcmRjb2RlIHN0YW5kYXJkIGludGVyZmFjZSBtb2Rlcy4gVGhlcmVmb3JlLCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlxuXG5JJ2xsIHByb2NlZWQgdG8gc2V0IHRoZSByZXN1bHRzIHRvIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTIxMywiT3V0cHV0VG9rZW5zIjoxOTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDlUMTY6MTc6NTEuOTA2NDAxMjg4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAwOTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIChQZW50YSBTR01JSSkgdG8gc2V2ZXJhbCBzd2l0Y2ggc3RhdGVtZW50cyBpbiB0aGUgcGh5bGluayBjb3JlLiBUaGlzIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgUEhZIGludGVyZmFjZSBtb2RlLiBBIHNlYXJjaCBvZiB0aGUga2VybmVsIHRyZWUgcmV2ZWFscyB0aGF0IFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgaXMgb25seSByZWZlcmVuY2VkIGJ5IHRoZSBxY2E4MDd4IHBoeXNpY2FsIFBIWSBkcml2ZXIsIGFuZCBubyBNQUMgZHJpdmVycyBleHBsaWNpdGx5IHN1cHBvcnQgaXQuIEZ1cnRoZXJtb3JlLCB2aXJ0dWFsIG5ldHdvcmsgZHJpdmVycyBhbmQgc29mdHdhcmUtZW11bGF0ZWQgVVNCIGV0aGVybmV0IGFkYXB0ZXJzICh3aGljaCB1c2UgcGh5bGluaykgaGFyZGNvZGUgdGhlaXIgaW50ZXJmYWNlIG1vZGVzIHRvIHN0YW5kYXJkIG9uZXMgbGlrZSBNSUksIFJNSUksIG9yIEdNSUkuIFNpbmNlIHRoaXMgaW50ZXJmYWNlIG1vZGUgY2Fubm90IGJlIGNvbmZpZ3VyZWQgZnJvbSB1c2Vyc3BhY2UgYW5kIGlzIG5vdCB1c2VkIGJ5IGFueSBlbXVsYXRlZCBoYXJkd2FyZSwgdGhlIG5ld2x5IGFkZGVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgKFBlbnRhIFNHTUlJKSB0byBzZXZlcmFsIHN3aXRjaCBzdGF0ZW1lbnRzIGluIHRoZSBwaHlsaW5rIGNvcmUuIFRoaXMgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBQSFkgaW50ZXJmYWNlIG1vZGUuIEEgc2VhcmNoIG9mIHRoZSBrZXJuZWwgdHJlZSByZXZlYWxzIHRoYXQgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSBpcyBvbmx5IHJlZmVyZW5jZWQgYnkgdGhlIHFjYTgwN3ggcGh5c2ljYWwgUEhZIGRyaXZlciwgYW5kIG5vIE1BQyBkcml2ZXJzIGV4cGxpY2l0bHkgc3VwcG9ydCBpdC4gRnVydGhlcm1vcmUsIHZpcnR1YWwgbmV0d29yayBkcml2ZXJzIGFuZCBzb2Z0d2FyZS1lbXVsYXRlZCBVU0IgZXRoZXJuZXQgYWRhcHRlcnMgKHdoaWNoIHVzZSBwaHlsaW5rKSBoYXJkY29kZSB0aGVpciBpbnRlcmZhY2UgbW9kZXMgdG8gc3RhbmRhcmQgb25lcyBsaWtlIE1JSSwgUk1JSSwgb3IgR01JSS4gU2luY2UgdGhpcyBpbnRlcmZhY2UgbW9kZSBjYW5ub3QgYmUgY29uZmlndXJlZCBmcm9tIHVzZXJzcGFjZSBhbmQgaXMgbm90IHVzZWQgYnkgYW55IGVtdWxhdGVkIGhhcmR3YXJlLCB0aGUgbmV3bHkgYWRkZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA5VDE2OjE3OjUxLjkwNjQyNDYxOFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowpvxxg[1] Phase: Running StartedAt: 2026-08-09 16:18:02 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowpvxxg[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-09 16:18:02 +0000 UTC FinishedAt: 2026-08-09 16:18:07 +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,}