Name: series-workflowbll8x Phase: Failed StartedAt: 2026-08-08 02:21:47 +0000 UTC FinishedAt: 2026-08-08 02:41:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbll8x[0] Phase: Succeeded StartedAt: 2026-08-08 02:21:47 +0000 UTC FinishedAt: 2026-08-08 02:40:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbll8x[0].run-triage Phase: Succeeded StartedAt: 2026-08-08 02:21:47 +0000 UTC FinishedAt: 2026-08-08 02:40: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+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIHRvIHRoZSBzd2l0Y2ggc3RhdGVtZW50IGluIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKCkuIFRoZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIGludGVyZmFjZSBtb2RlIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiB0aGF0IGlzIHR5cGljYWxseSBzZXQgdmlhIERldmljZSBUcmVlIChEVCkgb3IgQUNQSSBwcm9wZXJ0aWVzIChlLmcuLCBpbiB0aGUgcWNhODA3eCBQSFkgZHJpdmVyKS4gU2luY2Ugc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzIGRvIG5vdCBoYXZlIHRoZSBzcGVjaWZpYyBoYXJkd2FyZSB0aGF0IHVzZXMgdGhpcyBtb2RlLCBub3IgZG8gdGhleSBpbmplY3QgYXJiaXRyYXJ5IERUL0FDUEkgcHJvcGVydGllcyB0byB0cmlnZ2VyIGl0LCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGEwZmIxM2ViODMwMWQzYTJjNWNkNjNkMjkwOTFkMzI1ZTBiNDk3YmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyA4IDAyOjM4OjEyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5pbmRleCAxOGQyZWFkOTdhYTU0Li45ODNhMWEzY2VlMzc0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuQEAgLTEwNDAsNiAmIzQzOzEwNDAsNyBAQCBzdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuIHtcbiBcdHN3aXRjaCAoaW50ZXJmYWNlKSB7XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RVVNHTUlJOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSTpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIHRvIHRoZSBzd2l0Y2ggc3RhdGVtZW50IGluIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKCkuIFRoZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIGludGVyZmFjZSBtb2RlIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiB0aGF0IGlzIHR5cGljYWxseSBzZXQgdmlhIERldmljZSBUcmVlIChEVCkgb3IgQUNQSSBwcm9wZXJ0aWVzIChlLmcuLCBpbiB0aGUgcWNhODA3eCBQSFkgZHJpdmVyKS4gU2luY2Ugc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzIGRvIG5vdCBoYXZlIHRoZSBzcGVjaWZpYyBoYXJkd2FyZSB0aGF0IHVzZXMgdGhpcyBtb2RlLCBub3IgZG8gdGhleSBpbmplY3QgYXJiaXRyYXJ5IERUL0FDUEkgcHJvcGVydGllcyB0byB0cmlnZ2VyIGl0LCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGEwZmIxM2ViODMwMWQzYTJjNWNkNjNkMjkwOTFkMzI1ZTBiNDk3YmYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyA4IDAyOjM4OjEyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKaW5kZXggMThkMmVhZDk3YWE1NC4uOTgzYTFhM2NlZTM3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jCkBAIC0xMDQwLDYgJiM0MzsxMDQwLDcgQEAgc3RhdGljIGVudW0gaW5iYW5kX3R5cGUgcGh5bGlua19nZXRfaW5iYW5kX3R5cGUocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSkKIHsKIAlzd2l0Y2ggKGludGVyZmFjZSkgewogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOgomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOgogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FVU0dNSUk6CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSToKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk4OAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6CgoqKkFuYWx5emluZyB0aGUgUEhZTGluayBQYXRjaCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIGJlZW4gYXBwbGllZCwgYW5kIGl0IHNlZW1zIHRvIGhhdmUgdG91Y2hlZCB0aGUgYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKClgIGZ1bmN0aW9uIHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AuIFRoZSBjb3JlIGNoYW5nZSBhcHBlYXJzIHRvIGJlIHRoZSBhZGRpdGlvbiBvZiBhIGBjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6YCBzdGF0ZW1lbnQgd2l0aGluIHRoYXQgZnVuY3Rpb24uIFRoaXMgaW1tZWRpYXRlbHkgdGVsbHMgbWUgd2UmIzM5O3JlIGV4dGVuZGluZyB0aGUgc3VwcG9ydGVkIGluLWJhbmQgc2lnbmFsaW5nIHR5cGVzIHJlY29nbml6ZWQgYnkgUEhZTGluayB0byBpbmNsdWRlIHNvbWV0aGluZyByZWxhdGVkIHRvIFBTR01JSS4gTXkgZmlyc3QgdGhvdWdodCBpczogSSBuZWVkIHRvIHF1aWNrbHkgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mICpleGFjdGx5KiBob3cgYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKClgIGlzIHVzZWQgYW5kIHdoeSB0aGlzIGFkZGl0aW9uIGlzIHNpZ25pZmljYW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGltcGxpY2F0aW9uIHRoaXMgY2hhbmdlIGhhcy4gSXMgdGhpcyBhZGRpbmcgc3VwcG9ydCBmb3IgbmV3IGhhcmR3YXJlLCBvciBmaXhpbmcgYSBidWcsIG9yIGNoYW5naW5nIHRoZSBzdGFuZGFyZCBpbiBzb21lIHdheT8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlsaW5rX2dldF9pbmJhbmRfdHlwZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDMzPWVudW0gaW5iYW5kX3R5cGUge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAzOC1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAzOTpzdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQwLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTEwOTA9c3RhdGljIHZvaWQgcGh5bGlua19wY3NfbmVnX21vZGUoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwOTgtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwOTk6XHR0eXBlID0gcGh5bGlua19nZXRfaW5iYW5kX3R5cGUoaW50ZXJmYWNlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTEwMC1cdGlmICh0eXBlID09IElOQkFORF9OT05FKSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNzU2PXN0YXRpYyBpbnQgcGh5bGlua19zZnBfY29uZmlnX29wdGljYWwoc3RydWN0IHBoeWxpbmsgKnBsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzgwNi1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzgwNzpcdGluYmFuZF90eXBlID0gcGh5bGlua19nZXRfaW5iYW5kX3R5cGUoaW50ZXJmYWNlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzgwOC1cdGlmIChpbmJhbmRfdHlwZSA9PSBJTkJBTkRfTk9ORSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NDkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgU21hbGwgQ29kZSBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBleHBlcnQgZXllIGhvbmVzIGluIG9uIHRoZSBjb3JlIG9mIHRoZSBtb2RpZmljYXRpb246IGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBiZWluZyBhZGRlZCB0byB0aGUgYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlYCBmdW5jdGlvbiYjMzk7cyBzd2l0Y2ggc3RhdGVtZW50LiBJdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgbGltaXRlZCBpbiBzY29wZS4gSXQmIzM5O3MgY2FsbGVkIGJ5IGBwaHlsaW5rX3Bjc19uZWdfbW9kZWAgYW5kIGBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbGAsIHNvIHRob3NlIGFyZSB0aGUga2V5IGFyZWFzIGltcGFjdGVkLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCAmIzM0O0lzIHRoaXMgd29ydGggbXkgdGltZSB0byBmdXp6LCBvciBldmVuIGxvb2sgaW50byBkZWVwbHk/JiMzNDsKCk9uIHRoZSBzdXJmYWNlLCBpdCYjMzk7cyB0aW55OyBqdXN0IGFkZGluZyBhIGNvbnN0YW50IHRvIGEgc3dpdGNoLiBCdXQuLi4gZG9lcyBpdCBoYXZlICpmdW5jdGlvbmFsKiBpbXBhY3Q/IFRoZSBhbnN3ZXIgaXMgJiMzNDt5ZXMuJiMzNDsgVGhpcyBzbWFsbCBjaGFuZ2UgKmRvZXMqIGNoYW5nZSB0aGUgcmV0dXJuIHZhbHVlIG9mIGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAgc3BlY2lmaWNhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYC4gSXQgZ29lcyBmcm9tIGEgZGVmYXVsdCB2YWx1ZSBvZiBgSU5CQU5EX05PTkVgIHRvIGBJTkJBTkRfQU5ZYCAob3Igd2hhdGV2ZXIgdGhlIG90aGVyIGNhc2VzIHJldHVybiwgZGVwZW5kaW5nIG9uIHRoZSBzd2l0Y2ggbG9naWMpLgoKVGhlcmVmb3JlLCBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBzd2l0Y2ggc3RhdGVtZW50IGluIGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAuIEkgbmVlZCB0byBhc3Nlc3MgdGhlIGNvbnRleHQgb2YgdGhlIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDM5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEwMzk6XHRzdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuMTA0MDpcdHtcbjEwNDE6XHRcdHN3aXRjaCAoaW50ZXJmYWNlKSB7XG4xMDQyOlx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbjEwNDM6XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbjEwNDQ6XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbjEwNDU6XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FVU0dNSUk6XG4xMDQ2Olx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJOlxuMTA0NzpcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHX1FYR01JSTpcbjEwNDg6XHRcdFx0LyogVGhlc2UgcHJvdG9jb2xzIGFyZSBkZXNpZ25lZCBmb3IgdXNlIHdpdGggYSBQSFkgd2hpY2hcbjEwNDk6XHRcdFx0ICogY29tbXVuaWNhdGVzIGl0cyBuZWdvdGlhdGlvbiByZXN1bHQgYmFjayB0byB0aGUgTUFDIHZpYVxuMTA1MDpcdFx0XHQgKiBpbmJhbmQgY29tbXVuaWNhdGlvbi4gTm90ZTogdGhlcmUgZXhpc3QgUEhZcyB0aGF0IHJ1blxuMTA1MTpcdFx0XHQgKiB3aXRoIFNHTUlJIGJ1dCBkbyBub3Qgc2VuZCB0aGUgaW5iYW5kIGRhdGEuXG4xMDUyOlx0XHRcdCAqL1xuMTA1MzpcdFx0XHRyZXR1cm4gSU5CQU5EX0NJU0NPX1NHTUlJO1xuMTA1NDpcdFxuMTA1NTpcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYOlxuMTA1NjpcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYOlxuMTA1NzpcdFx0XHQvKiAxMDAwYmFzZS1YIGlzIGRlc2lnbmVkIGZvciB1c2UgbWVkaWEtc2lkZSBmb3IgRmlicmVcbjEwNTg6XHRcdFx0ICogY29ubmVjdGlvbnMsIGFuZCB0aHVzIHRoZSBBdXRvbmVnIGJpdCBuZWVkcyB0byBiZVxuMTA1OTpcdFx0XHQgKiB0YWtlbiBpbnRvIGFjY291bnQuIFdlIGFsc28gZG8gdGhpcyBmb3IgMjUwMGJhc2UtWFxuMTA2MDpcdFx0XHQgKiBhcyB3ZWxsLCBidXQgZHJpdmVycyBtYXkgbm90IHN1cHBvcnQgdGhpcywgc28gbWF5XG4xMDYxOlx0XHRcdCAqIG5lZWQgdG8gb3ZlcnJpZGUgdGhpcy5cbjEwNjI6XHRcdFx0ICovXG4xMDYzOlx0XHRcdHJldHVybiBJTkJBTkRfQkFTRVg7XG4xMDY0Olx0XG4xMDY1Olx0XHRkZWZhdWx0OlxuMTA2NjpcdFx0XHRyZXR1cm4gSU5CQU5EX05PTkU7XG4xMDY3Olx0XHR9XG4xMDY4Olx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MzQKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRnVuY3Rpb25hbCBDaGFuZ2UgaW4gUEhZIExpbmsgTWFuYWdlbWVudCoqCgpPa2F5LCBzbyBJIHNlZSBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgY29kZSBtb2RpZmljYXRpb24gaGVyZS4gV2UmIzM5O3JlIGNoYW5naW5nIHRoZSByZXR1cm4gdmFsdWUgZnJvbSBgSU5CQU5EX05PTkVgIHRvIGBJTkJBTkRfQ0lTQ09fU0dNSUlgLiBTZWVtcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYXQgZmFjZSB2YWx1ZS4gTm93LCB0aGUgcXVlc3Rpb24gaXMsIGhvdyBicm9hZGx5IGRvZXMgdGhpcyBpbXBhY3QgdGhlIHN5c3RlbT8KClNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlYWNoIG9mIHRoaXMgbmV3IGNvZGUgcGF0aC4gVGhpcyBpbnZvbHZlcyBgcGh5bGlua2AsIHRoZSBQSFkgbGluayBtYW5hZ2VtZW50IGZyYW1ld29yay4gU2luY2UgYHBoeWxpbmtgIGlzIHByZXR0eSB1YmlxdWl0b3VzIGFuZCBsZXZlcmFnZWQgYWNyb3NzIGEgbG90IG9mIG5ldHdvcmsgZHJpdmVycywgSSBuZWVkIHRvIGFzY2VydGFpbiBpZiB0aGlzIGNoYW5nZSBoYXMgdGhlIHBvdGVudGlhbCB0byBjYXVzZSBpc3N1ZXMgZnVydGhlciBkb3duIHRoZSBsaW5lLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZXhhY3QgY29kZSBwYXRocyB0aGF0IGFyZSBhZmZlY3RlZC4KCkFyZSB3ZSBsb29raW5nIGF0IHRoaXMgaW1wYWN0aW5nIGBwaHlsaW5rX3Bjc19uZWdfbW9kZWAgb3IgcG90ZW50aWFsbHkgYHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsYD8gVGltZSB0byBmaWd1cmUgb3V0IHdobyBpcyBjYWxsaW5nIGBwaHlsaW5rX3Bjc19uZWdfbW9kZWAgdG8gZW5zdXJlIGEgZnVsbCBpbXBhY3QgYXNzZXNzbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlsaW5rX3Bjc19uZWdfbW9kZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDcwLS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDcxOiAqIHBoeWxpbmtfcGNzX25lZ19tb2RlKCkgLSBoZWxwZXIgdG8gZGV0ZXJtaW5lIFBDUyBpbmJhbmQgbW9kZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDcyLSAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDg5LSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDkwOnN0YXRpYyB2b2lkIHBoeWxpbmtfcGNzX25lZ19tb2RlKHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwOTEtXHRcdFx0XHQgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTEyNDA9c3RhdGljIHZvaWQgcGh5bGlua19tYWpvcl9jb25maWcoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIHJlc3RhcnQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMjY3LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMjY4Olx0cGh5bGlua19wY3NfbmVnX21vZGUocGwsIHBjcywgc3RhdGUtXHUwMDNlaW50ZXJmYWNlLCBzdGF0ZS1cdTAwM2VhZHZlcnRpc2luZyk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEyNjktXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMzc2PXN0YXRpYyBpbnQgcGh5bGlua19jaGFuZ2VfaW5iYW5kX2FkdmVydChzdHJ1Y3QgcGh5bGluayAqcGwpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMzg5LVx0LyogUmVjb21wdXRlIHRoZSBQQ1MgbmVnIG1vZGUgKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTM5MDpcdHBoeWxpbmtfcGNzX25lZ19tb2RlKHBsLCBwbC1cdTAwM2VwY3MsIHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTM5MS1cdFx0XHQgICAgIHBsLVx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDU3CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFBoeWxpbmsgSW52ZXN0aWdhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgaW50byBob3cgYHBoeWxpbmtgIGlzIHVzZWQgYW5kIGhvdyB0byB0ZXN0IGl0LiBJIHNlZSB0aGF0IGJvdGggYHBoeWxpbmtfbWFqb3JfY29uZmlnYCBhbmQgYHBoeWxpbmtfY2hhbmdlX2luYmFuZF9hZHZlcnRgIGNhbGwgYHBoeWxpbmtfcGNzX25lZ19tb2RlYC4gYHBoeWxpbmtfbWFqb3JfY29uZmlnYCwgaW4gdHVybiwgaXMgdHJpZ2dlcmVkIGJ5IGBwaHlsaW5rX21hY19jb25maWdgLiBTbywgdGhhdCYjMzk7cyB0aGUgY29yZSBmbG93LgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uOiB3aGljaCBkcml2ZXJzIHJlbHkgb24gYHBoeWxpbmtgPyBJIGluaXRpYWxseSB0aG91Z2h0IGB2aXJ0aW9fbmV0YCBtaWdodCBiZSBhIGNvbnRlbmRlciwgYnV0IG5vcGUsIHRoYXQmIzM5O3Mgbm90IHRoZSBjYXNlLiBPa2F5LCB3aGF0IGFib3V0IHZpcnR1YWwgaW50ZXJmYWNlcz8gTm8sIGB0dW5gIGFuZCBgdmV0aGAgYXJlbiYjMzk7dCB1c2luZyBgcGh5bGlua2AgZWl0aGVyLiBUaGVuIEkgbG9va2VkIGF0IGBtYWNiYCwgYW5kIHllcywgdGhhdCBvbmUgdXNlcyBpdC4gQW5kIGBzdG1tYWNgPyBEZWZpbml0ZWx5IHVzZXMgYHBoeWxpbmtgIGFzIHdlbGwuCgpUaGUgZ29hbCBpcyB0byBkZXRlcm1pbmUgaWYgSSBjYW4gdHJpZ2dlciBgcGh5bGlua2AgbG9naWMgdXNpbmcgYSB2aXJ0dWFsIG9yIGR1bW15IGRyaXZlciBzZXR1cCBmb3IgdGVzdGluZyBwdXJwb3Nlcy4gSXMgdGhlcmUgYSBkdW1teSBwaHlsaW5rIGRyaXZlcj8gT3IgcGVyaGFwcyBhIG5ldHdvcmsgZHJpdmVyIEkgY2FuIHVzZSB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50PwoKTGV0JiMzOTtzIHJ1bGUgb3V0IHNvbWUgcG90ZW50aWFsIGNhbmRpZGF0ZXMuIGBlMTAwMGVgIGFuZCBgaWdiYCBkb24mIzM5O3QgbGV2ZXJhZ2UgYHBoeWxpbmtgIGZyb20gd2hhdCBJIGNhbiBzZWUuIEhvd2V2ZXIsIGBzdG1tYWNgIG1pZ2h0IGJlIHByb21pc2luZyBzaW5jZSBpdCYjMzk7cyB1c2VkIGluIHNvbWUgQVJNIFFFTVUgaW5zdGFuY2VzLiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgcG9zc2liaWxpdHkgZm9yIG15IHRlc3Qgc2V0dXAuIEkgc2hvdWxkIGV4cGxvcmUgdGhpcyBmdXJ0aGVyLgoKQW5kIGZpbmFsbHksIHdoYXQgYWJvdXQgYG5ldGRldnNpbWA/IERvZXMgdGhhdCBwbGF5IHdpdGggYHBoeWxpbmtgPyBUaGF0IHdvdWxkIGJlIGEgZ29vZCB0b29sIGlmIGl0IGRvZXMuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGF0IG9wdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlsaW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxMDIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeHBsb3JpbmcgUGh5bGluayBEcml2ZXJzIGZvciBGdXp6aW5nIE9wcG9ydHVuaXRpZXMqKgoKT2theSwgbGV0JiMzOTtzIHNlZSBpZiB3ZSBjYW4gaWRlbnRpZnkgYW55IG90aGVyIG5ldHdvcmsgZHJpdmVycyB0aGF0IGxldmVyYWdlIHRoZSBgcGh5bGlua2AgZnJhbWV3b3JrLCBhbmQgdGhhdCBtaWdodCBwcmVzZW50IGdvb2QgdGFyZ2V0cyBmb3IgZnV6emluZy4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgdGhlIGBkcml2ZXJzL25ldC9kc2EvYCBkaXJlY3Rvcnkgc3ByaW5ncyB0byBtaW5kIGFzIGEgbGlrZWx5IGNhbmRpZGF0ZSwgc2luY2UgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSB1dGlsaXplcyBgcGh5bGlua2AgcXVpdGUgZXh0ZW5zaXZlbHkuIE5vdywgdGhlIHF1ZXN0aW9uIGJlY29tZXM6IGhvdyBjYW4gd2UgdGVzdCB0aGlzPyBJIGtub3cgd2UmIzM5O3ZlIGdvdCBhIGNvdXBsZSBvZiBvcHRpb25zOiBgZHNhX2xvb3BgIGFuZCBgbmV0ZGV2c2ltYC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgZHNhX2xvb3BgIGFuZCBzZWUgd2hhdCB0aGF0IG9mZmVycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5bGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTMyMT1zdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfbWF4X210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkc2EsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzI3Olx0XHRcdFx0ICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTMzND1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGRzYV9sb29wX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTEtXHQucG9ydF9tYXhfbXR1XHRcdD0gZHNhX2xvb3BfcG9ydF9tYXhfbXR1LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUyOlx0LnBoeWxpbmtfZ2V0X2NhcHNcdD0gZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1My19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjU3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBQaHlsaW5rIFVzYWdlIGluIHRoZSBLZXJuZWwgTmV0d29yayBTdGFjayoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgaW50byBob3cgYHBoeWxpbmtgIGlzIHVzZWQgd2l0aGluIHRoZSBuZXR3b3JrIHN0YWNrLCBzcGVjaWZpY2FsbHkgaXRzIHJlbGF0aW9uc2hpcCB3aXRoIGRpZmZlcmVudCBkcml2ZXJzLiBJIHNlZSB0aGF0IGBkc2FfbG9vcGAgZXhwbGljaXRseSB1c2VzIGBwaHlsaW5rYCB3aGljaCBpcyBleHBlY3RlZCBhcyBpdCYjMzk7cyBhIE1BQyBkZXZpY2UuIE5vdywgSSYjMzk7bSBjaGVja2luZyB0byBzZWUgaWYgdGhpcyBpcyBjb25zaXN0ZW50LiBJIGtub3cgdGhhdCBgZHJpdmVycy9uZXQvZHVtbXkuY2AgZG9lc24mIzM5O3QgdXNlIGBwaHlsaW5rYCwgdGhhdCYjMzk7cyBzdHJhaWdodGZvcndhcmQuIE5vdywgbGV0JiMzOTtzIGNvbnNpZGVyIGBkcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmNgLiBUaGF0JiMzOTtzIGEgUEhZIGRyaXZlciwgbm90IGEgTUFDLCBzbyBpdCB3b3VsZG4mIzM5O3QgZGlyZWN0bHkgaW50ZXJmYWNlIHdpdGggYHBoeWxpbmtgIGluIHRoZSBzYW1lIHdheS4gVGhlIHByaW1hcnkgdXNlIGNhc2Ugb2YgYHBoeWxpbmtgIGFwcGVhcnMgdG8gYmUgaW4gdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiBhIE1BQyBhbmQgYSBQSFkuCgpUaGUgbmV4dCB0aGluZyB0byBpbnZlc3RpZ2F0ZSBpcyB3aGV0aGVyIG9yIG5vdCBgZHNhX2xvb3BgIGNvdWxkIGJlIHJlc3BvbnNpYmxlIGZvciB0cmlnZ2VyaW5nIGBwaHlsaW5rX21ham9yX2NvbmZpZ2AuIEkmIzM5O2xsIGNvbmZpcm0gdGhhdCBEU0EgcG9ydCBicmluZy11cCBjYWxscyBgcGh5bGlua19zdGFydGAuIFRoaXMgbWFrZXMgc2Vuc2UsIGFzIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIE1BQy1QSFkgc2V0dXAgd291bGQgb2NjdXIuIEkgbmVlZCB0byBleGFtaW5lIGBwaHlsaW5rX3N0YXJ0YCBkaXJlY3RseSB0byB2ZXJpZnkgdGhlIGZsb3cgb2YgY29udHJvbCBhbmQgZGV0ZXJtaW5lIGhvdyB0aGUgY29uZmlndXJhdGlvbiBhY3R1YWxseSBnZXRzIGltcGxlbWVudGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlsaW5rX3N0YXJ0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0MTU9c3RhdGljIGlycXJldHVybl90IHBoeWxpbmtfbGlua19oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDI0LS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNDI1OiAqIHBoeWxpbmtfc3RhcnQoKSAtIHN0YXJ0IGEgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDI2LSAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDMxLSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNDMyOnZvaWQgcGh5bGlua19zdGFydChzdHJ1Y3QgcGh5bGluayAqcGwpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0MzMte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ4Ny19XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0ODg6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zdGFydCk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0ODktXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjg2PXZvaWQgcGh5bGlua19yZXN1bWUoc3RydWN0IHBoeWxpbmsgKnBsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjcxNi1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI3MTc6XHRcdHBoeWxpbmtfc3RhcnQocGwpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzE4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDM5MT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3JlcGxheV9saW5rX2JlZ2luKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQ0MDEtICpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDQwMjogKiBUaGlzIGlzIHNpbWlsYXIgdG8gcGh5bGlua19zdGFydCgpLCBleGNlcHQgaXQgZG9lcyBub3QgYWx0ZXIgdGhlIHN0YXRlIG9mXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQ0MDMtICogdGhlIHBoeWxpYiBQSFkuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1NDcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBQSFkgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBQSFkgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBpcyBraWNrZWQgb2ZmLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIGBwaHlsaW5rX3N0YXJ0YC4gSSYjMzk7bSB0aGlua2luZyBpdCYjMzk7cyBsaWtlbHkgcmVzcG9uc2libGUgZm9yIGVpdGhlciBjYWxsaW5nIGBwaHlsaW5rX21hY19pbml0aWFsX2NvbmZpZ2AgZGlyZWN0bHksIG9yIHBlcmhhcHMgdHJpZ2dlcmluZyBhIGZ1bmN0aW9uIHRoYXQgKnVsdGltYXRlbHkqIGxlYWRzIHRvIHRoYXQgY29uZmlndXJhdGlvbiBzdGVwLiBHaXZlbiB0aGF0IGBwaHlsaW5rX3N0YXJ0YCBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIGVudHJ5IHBvaW50IGZvciBQSFkgYnJpbmctdXAsIGl0IG1ha2VzIHNlbnNlIHRvIHN0YXJ0IHRoZSBpbnZlc3RpZ2F0aW9uIHRoZXJlLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIG15IGh5cG90aGVzaXMgaXMgY29ycmVjdCBieSBsb29raW5nIGF0IHRoZSBjb2RlLiBUaW1lIHRvIGRpZyBpbiBhbmQgdmVyaWZ5IHRoZSBjb250cm9sIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI0MzIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjQzMjpcdHZvaWQgcGh5bGlua19zdGFydChzdHJ1Y3QgcGh5bGluayAqcGwpXG4yNDMzOlx0e1xuMjQzNDpcdFx0Ym9vbCBwb2xsID0gZmFsc2U7XG4yNDM1Olx0XG4yNDM2Olx0XHRBU1NFUlRfUlROTCgpO1xuMjQzNzpcdFxuMjQzODpcdFx0cGh5bGlua19pbmZvKHBsLCBcJiMzNDtjb25maWd1cmluZyBmb3IgJXMvJXMgbGluayBtb2RlXFxuXCYjMzQ7LFxuMjQzOTpcdFx0XHQgICAgIHBoeWxpbmtfYW5fbW9kZV9zdHIocGwtXHUwMDNlcmVxX2xpbmtfYW5fbW9kZSksXG4yNDQwOlx0XHRcdCAgICAgcGh5X21vZGVzKHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSkpO1xuMjQ0MTpcdFxuMjQ0MjpcdFx0LyogQWx3YXlzIHNldCB0aGUgY2FycmllciBvZmYgKi9cbjI0NDM6XHRcdGlmIChwbC1cdTAwM2VuZXRkZXYpXG4yNDQ0Olx0XHRcdG5ldGlmX2NhcnJpZXJfb2ZmKHBsLVx1MDAzZW5ldGRldik7XG4yNDQ1Olx0XG4yNDQ2Olx0XHRwbC1cdTAwM2VwY3Nfc3RhdGUgPSBQQ1NfU1RBVEVfU1RBUlRJTkc7XG4yNDQ3Olx0XG4yNDQ4Olx0XHQvKiBBcHBseSB0aGUgbGluayBjb25maWd1cmF0aW9uIHRvIHRoZSBNQUMgd2hlbiBzdGFydGluZy4gVGhpcyBhbGxvd3NcbjI0NDk6XHRcdCAqIGEgZml4ZWQtbGluayB0byBzdGFydCB3aXRoIHRoZSBjb3JyZWN0IHBhcmFtZXRlcnMsIGFuZCBhbHNvXG4yNDUwOlx0XHQgKiBlbnN1cmVzIHRoYXQgd2Ugc2V0IHRoZSBhcHByb3ByaWF0ZSBhZHZlcnRpc2VtZW50IGZvciBTZXJkZXMgbGlua3MuXG4yNDUxOlx0XHQgKlxuMjQ1MjpcdFx0ICogUmVzdGFydCBhdXRvbmVnb3RpYXRpb24gaWYgdXNpbmcgODAyLjN6IHRvIGVuc3VyZSB0aGF0IHRoZSBsaW5rXG4yNDUzOlx0XHQgKiBwYXJhbWV0ZXJzIGFyZSBwcm9wZXJseSBuZWdvdGlhdGVkLiAgVGhpcyBpcyBuZWNlc3NhcnkgZm9yIERTQVxuMjQ1NDpcdFx0ICogc3dpdGNoZXMgdXNpbmcgODAyLjN6IG5lZ290aWF0aW9uIHRvIGVuc3VyZSB0aGV5IHNlZSBvdXIgbW9kZXMuXG4yNDU1Olx0XHQgKi9cbjI0NTY6XHRcdHBoeWxpbmtfbWFjX2luaXRpYWxfY29uZmlnKHBsLCB0cnVlKTtcbjI0NTc6XHRcbjI0NTg6XHRcdHBsLVx1MDAzZXBjc19zdGF0ZSA9IFBDU19TVEFURV9TVEFSVEVEO1xuMjQ1OTpcdFxuMjQ2MDpcdFx0cGh5bGlua19lbmFibGVfYW5kX3J1bl9yZXNvbHZlKHBsLCBQSFlMSU5LX0RJU0FCTEVfU1RPUFBFRCk7XG4yNDYxOlx0XG4yNDYyOlx0XHRpZiAocGwtXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQgXHUwMDI2XHUwMDI2IHBsLVx1MDAzZWxpbmtfZ3Bpbykge1xuMjQ2MzpcdFx0XHRpbnQgaXJxID0gZ3Bpb2RfdG9faXJxKHBsLVx1MDAzZWxpbmtfZ3Bpbyk7XG4yNDY0Olx0XG4yNDY1Olx0XHRcdGlmIChpcnEgXHUwMDNlIDApIHtcbjI0NjY6XHRcdFx0XHRpZiAoIXJlcXVlc3RfaXJxKGlycSwgcGh5bGlua19saW5rX2hhbmRsZXIsXG4yNDY3Olx0XHRcdFx0XHRcdCBJUlFGX1RSSUdHRVJfUklTSU5HIHxcbjI0Njg6XHRcdFx0XHRcdFx0IElSUUZfVFJJR0dFUl9GQUxMSU5HLFxuMjQ2OTpcdFx0XHRcdFx0XHQgXCYjMzQ7bmV0ZGV2IGxpbmtcJiMzNDssIHBsKSlcbjI0NzA6XHRcdFx0XHRcdHBsLVx1MDAzZWxpbmtfaXJxID0gaXJxO1xuMjQ3MTpcdFx0XHRcdGVsc2VcbjI0NzI6XHRcdFx0XHRcdGlycSA9IDA7XG4yNDczOlx0XHRcdH1cbjI0NzQ6XHRcdFx0aWYgKGlycSBcdTAwM2M9IDApXG4yNDc1Olx0XHRcdFx0cG9sbCA9IHRydWU7XG4yNDc2Olx0XHR9XG4yNDc3Olx0XG4yNDc4Olx0XHRpZiAocGwtXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQpXG4yNDc5Olx0XHRcdHBvbGwgfD0gcGwtXHUwMDNlY29uZmlnLVx1MDAzZXBvbGxfZml4ZWRfc3RhdGU7XG4yNDgwOlx0XG4yNDgxOlx0XHRpZiAocG9sbClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzUzOAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkluaXRpYWwgUGh5bGluayBNQUMgQ29uZmlndXJhdGlvbiAtIFRpbWUgdG8gRGlnIEluKioKCk9rYXksIHNvIGBwaHlsaW5rX21hY19pbml0aWFsX2NvbmZpZ2AgaGFzIGJlZW4gY2FsbGVkLiBUaGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludCB3ZSYjMzk7cmUgaW50ZXJlc3RlZCBpbiwgdGhlIHBsYWNlIHdoZXJlIHRoZSBNQUMmIzM5O3MgaW5pdGlhbCBjb25maWd1cmF0aW9uIGZvciB0aGUgUEhZIGxpbmsgZ2V0cyBzZXQgdXAuIE15IGV4cGVydCBpbnR1aXRpb24gdGVsbHMgbWUgdGhpcyBpcyB3aGVyZSB0aGUgY29yZSBwYXJhbWV0ZXJzIGFyZSB1c3VhbGx5IGluaXRpYWxpemVkIOKAkyBhdXRvLW5lZ290aWF0aW9uLCBzcGVlZC9kdXBsZXggc2V0dGluZ3MsIHBvc3NpYmx5IHNvbWUgYmFzaWMgZXJyb3IgY29ycmVjdGlvbiBzdHVmZiwgdGhlIHdob2xlIHNoZWJhbmcuIExldCYjMzk7cyBzZWUgd2hhdCB0aGV5JiMzOTt2ZSBkb25lIHdpdGggaXQuIEkmIzM5O2xsIG5lZWQgdG8gbWV0aWN1bG91c2x5IGNoZWNrIHdoYXQgdGhlIGNhbGxpbmcgYXJndW1lbnRzIGFyZSwgYW5kIHRoZW4gSSYjMzk7bGwgZXhhbWluZSB0aGUgZnVuY3Rpb24mIzM5O3MgbG9naWMgbGluZSBieSBsaW5lLiBJ4oCZbGwgYmUgbG9va2luZyBmb3IgYW55IHBvdGVudGlhbCBmb3IgZnV0dXJlIGlzc3VlcyBpbiB0aGUgc2V0dXAsIGZvY3VzaW5nIG9uIGFzcGVjdHMgdGhhdCBjb3VsZCBpbnRlcmFjdCBzdHJhbmdlbHkgd2l0aCBjZXJ0YWluIHVuY29tbW9uIFBIWXMsIG9yIHRoYXQgZGVwZW5kIHRvbyBoZWF2aWx5IG9uIGFzc3VtcHRpb25zIGFib3V0IHNwZWNpZmljIGxpbmsgcGFydG5lciBiZWhhdmlvci4gVGltZSB0byBkZWx2ZSBpbnRvIHRoZSBjb2RlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlsaW5rX21hY19pbml0aWFsX2NvbmZpZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xNDQyPXN0YXRpYyB2b2lkIHBoeWxpbmtfZ2V0X2ZpeGVkX3N0YXRlKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE0NTQtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE0NTU6c3RhdGljIHZvaWQgcGh5bGlua19tYWNfaW5pdGlhbF9jb25maWcoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIGZvcmNlX3Jlc3RhcnQpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE0NTYte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjQzMj12b2lkIHBoeWxpbmtfc3RhcnQoc3RydWN0IHBoeWxpbmsgKnBsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ1NS1cdCAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNDU2Olx0cGh5bGlua19tYWNfaW5pdGlhbF9jb25maWcocGwsIHRydWUpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDU3LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjY4Nj12b2lkIHBoeWxpbmtfcmVzdW1lKHN0cnVjdCBwaHlsaW5rICpwbClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3MTEtXHRcdCAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzEyOlx0XHRwaHlsaW5rX21hY19pbml0aWFsX2NvbmZpZyhwbCwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3MTMtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNjY4PXN0YXRpYyB2b2lkIHBoeWxpbmtfc2ZwX3NldF9jb25maWcoc3RydWN0IHBoeWxpbmsgKnBsLCB1bnNpZ25lZCBsb25nICpzdXBwb3J0ZWQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNzAxLVx0XHRcdFx0IFx1MDAyNnBsLVx1MDAzZXBoeWxpbmtfZGlzYWJsZV9zdGF0ZSkpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM3MDI6XHRcdHBoeWxpbmtfbWFjX2luaXRpYWxfY29uZmlnKHBsLCBmYWxzZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM3MDMtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjQwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgYHBoeWxpbmtfbWFjX2luaXRpYWxfY29uZmlnYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBoYXBwZW5pbmcgd2l0aCBgcGh5bGlua19tYWNfaW5pdGlhbF9jb25maWdgLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0gYXJjaGl0ZWN0dXJlLCBJJiMzOTttIGFzc3VtaW5nIHRoaXMgY29uZmlndXJhdGlvbiBmaWxlIChvciBwZXJoYXBzIHNjcmlwdCwgZGVwZW5kaW5nIG9uIHRoZSBpbXBsZW1lbnRhdGlvbikgaXMgYWJzb2x1dGVseSBjcnVjaWFsIGZvciBpbml0aWFsaXppbmcgdGhlIE1BQyAoTWVkaWEgQWNjZXNzIENvbnRyb2xsZXIpIGxheWVyIHdpdGhpbiB0aGUgUEhZIGxpbmsgZXN0YWJsaXNobWVudCBwcm9jZXNzLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmU6CgoqICAgKipXaGF0IGV4YWN0bHkgZG9lcyBpdCBjb25maWd1cmU/KiogU3BlY2lmaWNhbGx5LCBJJiMzOTttIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGNsb2NrIHNldHRpbmdzLCBwb3dlciBtYW5hZ2VtZW50IHBhcmFtZXRlcnMsIGxhbmUgb3JkZXJpbmcsIGVxdWFsaXphdGlvbiBzZXR0aW5ncywgYW5kIGFueSBzcGVjaWZpYyBQSFktc3BlY2lmaWMgb3B0aW1pemF0aW9ucy4gSSBrbm93IHdoZXJlIHRvIGxvb2sgZm9yIHRob3NlLgoqICAgKipIb3cgaXMgaXQgYmVpbmcgbG9hZGVkL2FwcGxpZWQ/KiogSXMgaXQgYSBzdGF0aWMgZmlsZSwgb3IgZHluYW1pY2FsbHkgZ2VuZXJhdGVkPyBJcyBpdCBiZWluZyBhcHBsaWVkIGF0IGJvb3QsIGR1cmluZyBsaW5rIHRyYWluaW5nLCBvciBvbiBzcGVjaWZpYyBldmVudHM/IFRoZSB0aW1pbmcgaXMga2V5LgoqICAgKipXaGF0IGFyZSB0aGUgZGVwZW5kZW5jaWVzPyoqIERvZXMgdGhpcyBjb25maWcgZmlsZSByZWx5IG9uIGFueSBvdGhlciBzeXN0ZW0gb3IgZHJpdmVyIGxldmVsIGNvbmZpZ3VyYXRpb25zLCBsaWtlIGRldmljZSB0cmVlIGVudHJpZXMsIHBsYXRmb3JtLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcywgb3IgcmVnaXN0ZXIgc2V0dGluZ3M/IFRoZXNlIGRlcGVuZGVuY2llcyBhcmUgY3JpdGljYWwgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZS4KKiAgICoqQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgYXJlYXMgZm9yIG9wdGltaXphdGlvbj8qKiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIGFyZWFzIEkga25vdyBJJiMzOTt2ZSBlbmNvdW50ZXJlZCBiZWZvcmUgYXMgYm90dGxlbmVja3MgKHBvdGVudGlhbGx5IGNvbmZsaWN0aW5nIHNldHRpbmdzIG9yIHJlZHVuZGFudCBjb25maWd1cmF0aW9ucykuCgpJIGFsc28gbmVlZCB0byBjaGVjayBmb3IgYW55IHZlbmRvci1zcGVjaWZpYyBudWFuY2VzIG9yIHVuZG9jdW1lbnRlZCBwYXJhbWV0ZXJzIHRoYXQgbWlnaHQgYmUgbHVya2luZyB3aXRoaW4gdGhpcyBjb25maWd1cmF0aW9uLiBUaW1lIHRvIGRpZyBpbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQ1NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNDU1Olx0c3RhdGljIHZvaWQgcGh5bGlua19tYWNfaW5pdGlhbF9jb25maWcoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIGZvcmNlX3Jlc3RhcnQpXG4xNDU2Olx0e1xuMTQ1NzpcdFx0c3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSBsaW5rX3N0YXRlO1xuMTQ1ODpcdFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeSA9IHBsLVx1MDAzZXBoeWRldjtcbjE0NTk6XHRcbjE0NjA6XHRcdHN3aXRjaCAocGwtXHUwMDNlcmVxX2xpbmtfYW5fbW9kZSkge1xuMTQ2MTpcdFx0Y2FzZSBNTE9fQU5fUEhZOlxuMTQ2MjpcdFx0XHRsaW5rX3N0YXRlID0gcGwtXHUwMDNlcGh5X3N0YXRlO1xuMTQ2MzpcdFx0XHRicmVhaztcbjE0NjQ6XHRcbjE0NjU6XHRcdGNhc2UgTUxPX0FOX0ZJWEVEOlxuMTQ2NjpcdFx0XHRwaHlsaW5rX2dldF9maXhlZF9zdGF0ZShwbCwgXHUwMDI2bGlua19zdGF0ZSk7XG4xNDY3Olx0XHRcdGJyZWFrO1xuMTQ2ODpcdFxuMTQ2OTpcdFx0Y2FzZSBNTE9fQU5fSU5CQU5EOlxuMTQ3MDpcdFx0XHRsaW5rX3N0YXRlID0gcGwtXHUwMDNlbGlua19jb25maWc7XG4xNDcxOlx0XHRcdGlmIChsaW5rX3N0YXRlLmludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpXG4xNDcyOlx0XHRcdFx0bGlua19zdGF0ZS5wYXVzZSA9IE1MT19QQVVTRV9OT05FO1xuMTQ3MzpcdFx0XHRicmVhaztcbjE0NzQ6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODkyOAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBhY2NvdW50OgoKKipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gQ2FsbCoqCgpIbW0sIGludGVyZXN0aW5nLiBJIHNlZSBhIGNhbGwgdG8gYHBoeWxpbmtfbWFqb3JfY29uZmlnYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIHRoYXQmIzM5O3Mgd2hhdCBjYXVnaHQgbXkgZXllLiBUaGUgYHBoeWxpbmtgIHByZWZpeCBzdWdnZXN0cyB0aGlzIGZ1bmN0aW9uIGlzIGludGltYXRlbHkgaW52b2x2ZWQgd2l0aCwgbGlrZWx5LCB0aGUgcGh5c2ljYWwgbGF5ZXIgbGluaywgcHJvYmFibHkgd2l0aGluIGEgUEhZIG1hbmFnZW1lbnQgb3IgaW5pdGlhbGl6YXRpb24gY29udGV4dC4gJiMzNDtNYWpvciBjb25maWcmIzM0OyBpbXBsaWVzIHRoaXMgaXNuJiMzOTt0IGp1c3QgYSBzaW1wbGUgcmVnaXN0ZXIgd3JpdGU7IGl0IGxpa2VseSBvcmNoZXN0cmF0ZXMgYSBzaWduaWZpY2FudCBwYXJ0IG9mIHRoZSBQSFkmIzM5O3Mgb3BlcmF0aW9uYWwgcGFyYW1ldGVycywgbWF5YmUgZXZlbiBpdHMgc3RhdGUgbWFjaGluZSBzZXR1cC4gVGhpcyBjb3VsZCBpbnZvbHZlIGNsb2NrIGNvbmZpZ3VyYXRpb24sIGVxdWFsaXphdGlvbiBzZXR0aW5ncywgc2lnbmFsIGNvbmRpdGlvbmluZyDigJMgYSB3aG9sZSBob3N0IG9mIGxvdy1sZXZlbCBkZXRhaWxzLiBOZWVkIHRvIGRpZyBpbiBhbmQgdW5kZXJzdGFuZCB3aGF0IHRoZSBmdW5jdGlvbiBkb2VzIGZ1cnRoZXIsIG9yIHdoZXJlIGl0JiMzOTtzIGNhbGxlZCBmcm9tLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDc1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE0NzU6XHRcdGRlZmF1bHQ6IC8qIGNhbiYjMzk7dCBoYXBwZW4gKi9cbjE0NzY6XHRcdFx0cmV0dXJuO1xuMTQ3NzpcdFx0fVxuMTQ3ODpcdFxuMTQ3OTpcdFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XG4xNDgwOlx0XG4xNDgxOlx0XHRwaHlsaW5rX2FwcGx5X21hbnVhbF9mbG93KHBsLCBcdTAwMjZsaW5rX3N0YXRlKTtcbjE0ODI6XHRcdGlmIChwaHkpXG4xNDgzOlx0XHRcdG11dGV4X2xvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuMTQ4NDpcdFx0cGh5bGlua19tYWpvcl9jb25maWcocGwsIGZvcmNlX3Jlc3RhcnQsIFx1MDAyNmxpbmtfc3RhdGUpO1xuMTQ4NTpcdFx0aWYgKHBoeSlcbjE0ODY6XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbjE0ODc6XHR9XG4xNDg4Olx0XG4xNDg5Olx0c3RhdGljIGNvbnN0IGNoYXIgKnBoeWxpbmtfcGF1c2VfdG9fc3RyKGludCBwYXVzZSlcbjE0OTA6XHR7XG4xNDkxOlx0XHRzd2l0Y2ggKHBhdXNlIFx1MDAyNiBNTE9fUEFVU0VfVFhSWF9NQVNLKSB7XG4xNDkyOlx0XHRjYXNlIE1MT19QQVVTRV9UWCB8IE1MT19QQVVTRV9SWDpcbjE0OTM6XHRcdFx0cmV0dXJuIFwmIzM0O3J4L3R4XCYjMzQ7O1xuMTQ5NDpcdFx0Y2FzZSBNTE9fUEFVU0VfVFg6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0NTUKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJhY2luZyB0aGUgUEhZIEludGVyZmFjZSBNb2RlKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaG93IGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBjb21lcyBpbnRvIHBsYXkuIEZyb20gd2hhdCBJIGNhbiBzZWUsIHRoZSBwcm9jZXNzIHN0YXJ0cyB3aXRoIGEgY2FsbCB0byBgcGh5bGlua19tYWpvcl9jb25maWdgLCB3aGljaCB0aGVuIGNhbGxzIGBwaHlsaW5rX3Bjc19uZWdfbW9kZWAsIHdoaWNoLCBmaW5hbGx5LCBjYWxscyBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgLiBUaGF0IHRlbGxzIG1lIGRlZmluaXRpdmVseSB0aGF0IGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAgKmlzKiByZWFjaGFibGUgZHVyaW5nIHBoeWxpbmsgaW5zdGFuY2Ugc3RhcnR1cCwgd2hpY2ggaXMgZ29vZC4KCkJ1dCBteSByZWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGl0c2VsZiBpcyBhIHBvdGVudGlhbCB2YWx1ZSB0aGVyZS4gSSBrbm93IGl0JiMzOTtzIGFuIGVudW0gdmFsdWUsIHNvIHRoYXQmIzM5O3MgYSBjaGVjaywgYnV0IHRoYXQgZG9lc24mIzM5O3QgdGVsbCBtZSBpZiBpdCAqY2FuKiBiZSB1c2VkLgoKVGhlIG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHdoZXRoZXIgd2UgY2FuIGFjdHVhbGx5ICpjcmVhdGUqIGEgcGh5bGluayBpbnN0YW5jZSB1c2luZyB0aGF0IG1vZGUuIEkgbmVlZCB0byB0cmFjZSB0aGUgdXNhZ2Ugb2YgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGluIHRoZSBjb2RlLCBzZWUgd2hlcmUgaXQgaXMgYXNzaWduZWQsIGFuZCBob3cgaXQmIzM5O3MgdXNlZC4gTGV0JiMzOTtzIHN0YXJ0IHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0PTIzOD1Tb21lIG9mIHRoZSBpbnRlcmZhY2UgbW9kZXMgYXJlIGRlc2NyaWJlZCBiZWxvdzpcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC0zMjUtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdDozMjY6YGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYGBcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0LTMyNy0gICAgVGhpcyBpcyB0aGUgUGVudGEgU0dNSUkgbW9kZSwgaXQgaXMgc2ltaWxhciB0byBRU0dNSUkgYnV0IGl0IGNvbWJpbmVzIDVcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYz0xNTk9aW50IHBoeV9pbnRlcmZhY2VfbnVtX3BvcnRzKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMtMjAxLVx0XHRyZXR1cm4gNDtcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jOjIwMjpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMy1cdFx0cmV0dXJuIDU7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM9Mjk0PXVuc2lnbmVkIGxvbmcgcGh5X2NhcHNfZnJvbV9pbnRlcmZhY2UocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTAtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jOjMxMTpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTMxMi1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzOD1zdGF0aWMgaW50IHBoeWxpbmtfaW50ZXJmYWNlX21heF9zcGVlZChwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU5LVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2MDpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjYxLVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Nzc0PXN0YXRpYyBpbnQgcGh5bGlua19wYXJzZV9tb2RlKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTgwOC1cdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjgwOTpcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MTAtXHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTEwMzk9c3RhdGljIGVudW0gaW5iYW5kX3R5cGUgcGh5bGlua19nZXRfaW5iYW5kX3R5cGUocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDItXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTA0MzpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA0NC1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM9NDkwPXN0YXRpYyBpbnQgcWNhODA3eF9waHlfcGFja2FnZV9wcm9iZV9vbmNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU0OS1cdFx0aWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU1MDpcdFx0XHRcdHBoeV9tb2RlcyhQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJKSkpXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTUxOlx0XHRcdHByaXYtXHUwMDNlcGFja2FnZV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01NTItXHRcdGVsc2UgaWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz01NjI9c3RhdGljIGludCBxY2E4MDd4X3BoeV9wYWNrYWdlX2NvbmZpZ19pbml0X29uY2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTg1LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1ODY6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTg3LVx0ZGVmYXVsdDpcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTUzPWV4dGVybiBjb25zdCBpbnQgcGh5X2Jhc2ljX3BvcnRzX2FycmF5WzNdO1xuLS1cbmluY2x1ZGUvbGludXgvcGh5LmgtODktICogQFBIWV9JTlRFUkZBQ0VfTU9ERV9NT0NBOiBNdWx0aW1lZGlhIG92ZXIgQ29heFxuaW5jbHVkZS9saW51eC9waHkuaDo5MDogKiBAUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTogUGVudGEgU0dNSUlcbmluY2x1ZGUvbGludXgvcGh5LmgtOTEtICogQFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6IFF1YWQgU0dNSUlcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTExND10eXBlZGVmIGVudW0ge1xuLS1cbmluY2x1ZGUvbGludXgvcGh5LmgtMTMyLVx0UEhZX0lOVEVSRkFDRV9NT0RFX01PQ0EsXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjEzMzpcdFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUksXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTEzNC1cdFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUksXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaD0yMTA9c3RhdGljIGlubGluZSBjb25zdCBjaGFyICpwaHlfbW9kZXMocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTI0OC1cdFx0cmV0dXJuIFwmIzM0O21vY2FcJiMzNDs7XG5pbmNsdWRlL2xpbnV4L3BoeS5oOjI0OTpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmluY2x1ZGUvbGludXgvcGh5LmgtMjUwLVx0XHRyZXR1cm4gXCYjMzQ7cHNnbWlpXCYjMzQ7O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTIxNQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeHBsb3JpbmcgUEhZIEludGVyZmFjZSBNb2RlIENvbnRyb2wgaW4gdGhlIFBoeWxpbmsgRnJhbWV3b3JrKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgcWNhODA3eC5jYCBhbmQgc2VlIHRoYXQgaXQmIzM5O3MgdXNpbmcgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLiBCdXQgbXkgYnJhaW4gaW1tZWRpYXRlbHkga2lja3MgaW4gd2l0aCwgJiMzNDtXYWl0LCBwaHlsaW5rIGlzIHN1cHBvc2VkIHRvIGJlIGdlbmVyaWMuIENhbiBJIGFjdHVhbGx5ICpjb250cm9sKiB0aGlzIGludGVyZmFjZSBtb2RlIHNvbWVob3csIHlvdSBrbm93LCBwb2tlIGF0IGl0IHdpdGhvdXQgcmVseWluZyBzb2xlbHkgb24gdGhlIGRldmljZSB0cmVlIG9yIHRoZSBkcml2ZXIgZGlyZWN0bHk/JiMzNDsgVGhlIHR5cGljYWwgc2V0dXAgaGFzIHRoaXMgZGV0ZXJtaW5lZCBieSB0aGUgZGV2aWNlIHRyZWUgb3IgdGhlIGRyaXZlciwgd2hpY2ggZmVlbHMgYSBiaXQgbGltaXRpbmcgZm9yIHRlc3Rpbmcgb3IgZXhwZXJpbWVudGF0aW9uLgoKTXkgZmlyc3QgdGhvdWdodCBpcywgY2FuIEkgcmVhY2ggaW4gc29tZWhvdyB1c2luZyBuZXRsaW5rLCBzeXNmcywgb3IgbWF5YmUgYW4gaW9jdGw/IE1heWJlIEkgY2FuIHJpZyB1cCBhIHdheSB0byB0cmlnZ2VyIGl0IGJ5IHVzaW5nIHNvbWUgb2YgdGhvc2UgaGFuZHkgdmlydHVhbCBpbnRlcmZhY2VzIGxpa2UgYG5ldGRldnNpbWAsIGBkc2FfbG9vcGAsIGBkdW1teWAsIG9yIGB2ZXRoYC4gVGhhdCB3b3VsZCBiZSBzbGljayEKCkhvbGQgb24gdGhvdWdoLCB0aGlua2luZyB0aGlzIHRocm91Z2gsIGBkc2FfbG9vcGAuLi4gZG9lc24mIzM5O3Qgc2VlbSBsaWtlIGl0IGFjdHVhbGx5ICphbGxvd3MqIHNldHRpbmcgdGhlIGludGVyZmFjZSBtb2RlIGFyYml0cmFyaWx5LiBTZWVtcyBsaWtlIGl0JiMzOTtzIGhhcmRjb2RlZCBvciwgZXZlbiBtb3JlIGxpa2VseSwgYmVpbmcgc2V0IGJ5IHRoZSBEU0EgY29yZSBpdHNlbGYuIEJsYXN0LiBBbmQgYWN0dWFsbHksIHRoaW5raW5nIGJhY2ssIEkgZG9uJiMzOTt0IHRoaW5rIGBkc2FfbG9vcGAgZXZlbiBtYWtlcyB1c2Ugb2YgdGhlIGRldmljZSB0cmVlLgoKT2theSwgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIGBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzYCBmdW5jdGlvbiBhbmQgc2VlIGhvdyBpdCBpcyB3b3JraW5nLCBtYXliZSB0aGF0IHdpbGwgaGVscC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBpbnRlcmZhY2UgbW9kZSBjYXBhYmlsaXRpZXMgYXJlIGJlaW5nIGhhbmRsZWQuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMyNiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzI2Olx0c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHNhLCBpbnQgcG9ydCxcbiAzMjc6XHRcdFx0XHRcdCAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuIDMyODpcdHtcbiAzMjk6XHRcdGJpdG1hcF9maWxsKGNvbmZpZy1cdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcywgUEhZX0lOVEVSRkFDRV9NT0RFX01BWCk7XG4gMzMwOlx0XHRfX2NsZWFyX2JpdChQSFlfSU5URVJGQUNFX01PREVfTkEsIGNvbmZpZy1cdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4gMzMxOlx0XHRjb25maWctXHUwMDNlbWFjX2NhcGFiaWxpdGllcyA9IH4wO1xuIDMzMjpcdH1cbiAzMzM6XHRcbiAzMzQ6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGRzYV9sb29wX2RyaXZlciA9IHtcbiAzMzU6XHRcdC5nZXRfdGFnX3Byb3RvY29sXHQ9IGRzYV9sb29wX2dldF9wcm90b2NvbCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE5MzcKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA0ODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IFBIWSBJbnRlcmZhY2UgTW9kZSBDaGFuZ2UqKgoKT2theSwgc28gYGRzYV9sb29wYCBzdXBwb3J0cyBhbGwgaW50ZXJmYWNlcywgdGhhdCYjMzk7cyBnb29kLiBBbmQgYGJpdG1hcF9maWxsYCBjb3ZlcnMgdGhlIGZ1bGwgcmFuZ2Ugb2YgYFBIWV9JTlRFUkZBQ0VfTU9ERV9NQVhgLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGhvdyB0aGUgaW50ZXJmYWNlIG1vZGUgZ2V0cyBzZXQgb24gYSBEU0EgcG9ydC4gQ2FuIHdlIG1hbmlwdWxhdGUgdGhhdCB2aWEgYGV0aHRvb2xgIG9yIGBuZXRsaW5rYD8gVGhhdCYjMzk7cyB0aGUgY3J1eCBvZiB0aGlzLgoKVGhpcyBvbmUtbGluZSBwYXRjaCBqdXN0IGFkZHMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHRvIHRoZSBzd2l0Y2guIEkgd2FzIGluaXRpYWxseSBoZXNpdGFudCB0byBkZWRpY2F0ZSB0aW1lIHRvIGZ1enppbmcgYSBvbmUtbGluZSBjaGFuZ2UsIGJ1dCB0aGlzIGlzIGhpdHRpbmcgdGhlIG5ldHdvcmtpbmcgY29yZSwgc3BlY2lmaWNhbGx5IGBwaHlsaW5rYCwgYW5kIGFmZmVjdGluZyBpdHMgY29yZSBmdW5jdGlvbmFsaXR5LiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzbyBpdCBkZXNlcnZlcyBhIGxvb2suIElmIGl0JiMzOTtzIHJlYWNoYWJsZSwgd2Ugc2hvdWxkIGhpdCBpdCB3aXRoIGZ1enppbmcuCgpUaGUgdGFyZ2V0IGZ1bmN0aW9uIGlzIGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAuIEl0JiMzOTtzIHN0YXRpYywgc28gd2UgbmVlZCB0byBzZWUgaWYgd2UgY2FuIHJlYWNoIGl0IGZyb20gYW4gZXhwb3J0ZWQgc3ltYm9sLiBJdHMgY2FsbGVycyBhcmUgYHBoeWxpbmtfcGNzX25lZ19tb2RlYCBhbmQgYHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsYC4gTG9va2luZyB1cHN0cmVhbSwgYHBoeWxpbmtfcGNzX25lZ19tb2RlYCBpcyBjYWxsZWQgYnkgYHBoeWxpbmtfbWFqb3JfY29uZmlnYCBhbmQgYHBoeWxpbmtfY2hhbmdlX2luYmFuZF9hZHZlcnRgLiBgcGh5bGlua19tYWpvcl9jb25maWdgIGlzIGNhbGxlZCBieSBgcGh5bGlua19tYWNfaW5pdGlhbF9jb25maWdgLCBgcGh5bGlua19tYWNfY29uZmlnYCwgYW5kIGBwaHlsaW5rX21hY19saW5rX3VwYC4KCmBwaHlsaW5rX21hY19pbml0aWFsX2NvbmZpZ2AgaXMgY2FsbGVkIGJ5IGBwaHlsaW5rX3N0YXJ0YCwgYHBoeWxpbmtfcmVzdW1lYCwgYW5kIGBwaHlsaW5rX3NmcF9zZXRfY29uZmlnYC4gQW5kLCBjcnVjaWFsbHksIGBwaHlsaW5rX3N0YXJ0YCBpcyBleHBvcnRlZCBhbmQgdXNlZCBieSBudW1lcm91cyBkcml2ZXJzLiBCaW5nby4gU28gYHBoeWxpbmtfc3RhcnRgIHNlZW1zIHRvIGJlIGFuIGlkZWFsIHN5bWJvbCB0byBmb2N1cyBvbi4gSXQmIzM5O3MgZXhwb3J0ZWQsIHNvIGl0JiMzOTtzIGRpcmVjdGx5IHJlYWNoYWJsZS4gV2UgY2FuIGlnbm9yZSB0aGUgc3RhdGljIG5hdHVyZSBvZiB0aGUgaW50ZXJtZWRpYXRlIGZ1bmN0aW9ucy4KCkp1c3QgdG8gY29uZmlybTogYHBoeWxpbmtfcGNzX25lZ19tb2RlYCBpcyBzdGF0aWMuIGBwaHlsaW5rX21hY19jb25maWdgIGlzIHN0YXRpYy4gYHBoeWxpbmtfc3RhcnRgIGlzIGV4cG9ydGVkLiBgcGh5bGlua19jcmVhdGVgIGlzIGV4cG9ydGVkLiBgcGh5bGlua19jb25uZWN0X21hY2AgaXMgZXhwb3J0ZWQuIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAgaXMgZXhwb3J0ZWQhIFRoYXTigJlzIGtleS4gTm93LCAqY2FuKiB3ZSBjaGFuZ2UgdGhlIGludGVyZmFjZSBtb2RlIHdpdGggZXRodG9vbD8gYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBzZWVtcyB0byBiZSB0aGUgcGxhY2UgdG8gY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5NTc9c3RhdGljIGJvb2wgcGh5bGlua192YWxpZGF0ZV9wY3NfaW5iYW5kX2F1dG9uZWcoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3Ny0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjk3ODogKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCgpIC0gc2V0IHRoZSBsaW5rIHNldHRpbmdzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5NzktICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5ODEtICovXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5ODI6aW50IHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHN0cnVjdCBwaHlsaW5rICpwbCxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk4My1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmtzZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTQ0LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE0NTpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNDYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMjkwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIEludGVyZmFjZSBNb2RlIE1vZGlmaWNhdGlvbiB3aXRoIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAqKgoKQWxyaWdodCwgc28gdGhlIHRhc2sgYXQgaGFuZCBpcyB0byBhbHRlciB0aGUgaW50ZXJmYWNlIG1vZGUsIGFuZCBteSBpbml0aWFsIHRob3VnaHQgZ29lcyBzdHJhaWdodCB0byBgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRgLiBHaXZlbiBteSBiYWNrZ3JvdW5kLCBJJiMzOTttIG5hdHVyYWxseSBhc3N1bWluZyB0aGlzIGZ1bmN0aW9uIGlzIGEgbGlrZWx5IGNhbmRpZGF0ZS4gSXQmIzM5O3MgdGhlIHN0YW5kYXJkIGVudHJ5IHBvaW50LCByaWdodD8gV2XigJlyZSBsb29raW5nIHRvIG1vZGlmeSB0aGUgbGluayBzZXR0aW5ncyB2aWEgYGV0aHRvb2xgIGFuZCB0aGlzIGlzIHRoZSBkaXJlY3QgcGF0aCBmb3IgdGhhdCBraW5kIG9mIGNoYW5nZS4gSSYjMzk7bSBtZW50YWxseSBwYXJzaW5nIHRoZSBpbXBsaWNhdGlvbnM6IGFyZSB0aGUgYXJndW1lbnRzIGNvcnJlY3QsIGRvIEkgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgc2V0dGluZ3MgaW4gdGhlIGtlcm5lbCwgaXMgdGhpcyB0aGUgcmlnaHQgY2FsbCBzaXRlIGluIG15IGN1cnJlbnQgY29udGV4dD8gVGltZSB0byBjaGVjayB0aGUgbG9ncywgbWF5YmUgc3RhcnQgZGlnZ2luZyBpbnRvIHRoYXQgZnVuY3Rpb27igJlzIHNvdXJjZSBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIFBIWSBhbmQgbmV0d29yayBkcml2ZXJzLCBqdXN0IHRvIGJlIHN1cmUuIEkgbmVlZCB0byBjb25maXJtIGlmIGl0IGhhcyB0aGUgY2FwYWJpbGl0aWVzIEkgcmVxdWlyZSwgb3IgaWYgSSBuZWVkIHRvIGxvb2sgZGVlcGVyIGludG8gb3RoZXIgZnVuY3Rpb25zIHRvIG1ha2UgdGhlIG5lZWRlZCBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyOTgyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI5ODI6XHRpbnQgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQoc3RydWN0IHBoeWxpbmsgKnBsLFxuMjk4MzpcdFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqa3NldClcbjI5ODQ6XHR7XG4yOTg1Olx0XHRfX0VUSFRPT0xfREVDTEFSRV9MSU5LX01PREVfTUFTSyhzdXBwb3J0KTtcbjI5ODY6XHRcdGNvbnN0IHN0cnVjdCBsaW5rX2NhcGFiaWxpdGllcyAqYztcbjI5ODc6XHRcdHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgY29uZmlnO1xuMjk4ODpcdFxuMjk4OTpcdFx0QVNTRVJUX1JUTkwoKTtcbjI5OTA6XHRcbjI5OTE6XHRcdGlmIChwbC1cdTAwM2VwaHlkZXYpIHtcbjI5OTI6XHRcdFx0c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgcGh5X2tzZXQgPSAqa3NldDtcbjI5OTM6XHRcbjI5OTQ6XHRcdFx0bGlua21vZGVfYW5kKHBoeV9rc2V0LmxpbmtfbW9kZXMuYWR2ZXJ0aXNpbmcsXG4yOTk1Olx0XHRcdFx0ICAgICBwaHlfa3NldC5saW5rX21vZGVzLmFkdmVydGlzaW5nLFxuMjk5NjpcdFx0XHRcdCAgICAgcGwtXHUwMDNlc3VwcG9ydGVkKTtcbjI5OTc6XHRcbjI5OTg6XHRcdFx0LyogV2UgY2FuIHJlbHkgb24gcGh5bGliIGZvciB0aGlzIHVwZGF0ZTsgd2UgYWxzbyBkbyBub3QgbmVlZFxuMjk5OTpcdFx0XHQgKiB0byB1cGRhdGUgdGhlIHBsLVx1MDAzZWxpbmtfY29uZmlnIHNldHRpbmdzOlxuMzAwMDpcdFx0XHQgKiAtIHRoZSBjb25maWd1cmF0aW9uIHJldHVybmVkIHZpYSBrc2V0dGluZ3NfZ2V0KCkgd2lsbCBjb21lXG4zMDAxOlx0XHRcdCAqICAgZnJvbSBwaHlsaWIgd2hlbmV2ZXIgYSBQSFkgaXMgcHJlc2VudC5cbjMwMDI6XHRcdFx0ICogLSBsaW5rX2NvbmZpZy5pbnRlcmZhY2Ugd2lsbCBiZSB1cGRhdGVkIGJ5IHRoZSBQSFkgY2FsbGluZ1xuMzAwMzpcdFx0XHQgKiAgIGJhY2sgdmlhIHBoeWxpbmtfcGh5X2NoYW5nZSgpIGFuZCBhIHN1YnNlcXVlbnQgcmVzb2x2ZS5cbjMwMDQ6XHRcdFx0ICogLSBpbml0aWFsIGxpbmsgY29uZmlndXJhdGlvbiBmb3IgUEhZIG1vZGUgY29tZXMgZnJvbSB0aGVcbjMwMDU6XHRcdFx0ICogICBsYXN0IHBoeSBzdGF0ZSB1cGRhdGVkIHZpYSBwaHlsaW5rX3BoeV9jaGFuZ2UoKS5cbjMwMDY6XHRcdFx0ICogLSBvdGhlciBjb25maWd1cmF0aW9uIGNoYW5nZXMgKGUuZy4gcGF1c2UgbW9kZXMpIGFyZVxuMzAwNzpcdFx0XHQgKiAgIHBlcmZvcm1lZCBkaXJlY3RseSB2aWEgcGh5bGliLlxuMzAwODpcdFx0XHQgKiAtIGlmIGluIGluLWJhbmQgbW9kZSB3aXRoIGEgUEhZLCB0aGUgbGluayBjb25maWd1cmF0aW9uXG4zMDA5Olx0XHRcdCAqICAgaXMgcGFzc2VkIG9uIHRoZSBsaW5rIGZyb20gdGhlIFBIWSwgYW5kIGFsbCBvZlxuMzAxMDpcdFx0XHQgKiAgIGxpbmtfY29uZmlnLntzcGVlZCxkdXBsZXgsYW5fZW5hYmxlZCxwYXVzZX0gYXJlIG5vdCB1c2VkLlxuMzAxMTpcdFx0XHQgKiAtIHRoZSBvbmx5IHBvc3NpYmxlIHVzZSB3b3VsZCBiZSBsaW5rX2NvbmZpZy5hZHZlcnRpc2luZ1xuMzAxMjpcdFx0XHQgKiAgIHBhdXNlIG1vZGVzIHdoZW4gaW4gMTAwMGJhc2UtWCBtb2RlIHdpdGggYSBQSFksIGJ1dCBpblxuMzAxMzpcdFx0XHQgKiAgIHRoZSBwcmVzZW5jZSBvZiBhIFBIWSwgdGhpcyBzaG91bGQgbm90IGJlIGNoYW5nZWQgYXMgdGhhdFxuMzAxNDpcdFx0XHQgKiAgIHNob3VsZCBiZSBkZXRlcm1pbmVkIGZyb20gdGhlIG1lZGlhIHNpZGUgYWR2ZXJ0aXNlbWVudC5cbjMwMTU6XHRcdFx0ICovXG4zMDE2Olx0XHRcdHJldHVybiBwaHlfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHBsLVx1MDAzZXBoeWRldiwgXHUwMDI2cGh5X2tzZXQpO1xuMzAxNzpcdFx0fVxuMzAxODpcdFxuMzAxOTpcdFx0Y29uZmlnID0gcGwtXHUwMDNlbGlua19jb25maWc7XG4zMDIwOlx0XHQvKiBNYXNrIG91dCB1bnN1cHBvcnRlZCBhZHZlcnRpc2VtZW50cyAqL1xuMzAyMTpcdFx0bGlua21vZGVfYW5kKGNvbmZpZy5hZHZlcnRpc2luZywga3NldC1cdTAwM2VsaW5rX21vZGVzLmFkdmVydGlzaW5nLFxuMzAyMjpcdFx0XHQgICAgIHBsLVx1MDAzZXN1cHBvcnRlZCk7XG4zMDIzOlx0XG4zMDI0Olx0XHQvKiBGSVhNRTogc2hvdWxkIHdlIHJlamVjdCBhdXRvbmVnIGlmIHBoeS9tYWMgZG9lcyBub3Qgc3VwcG9ydCBpdD8gKi9cbjMwMjU6XHRcdHN3aXRjaCAoa3NldC1cdTAwM2ViYXNlLmF1dG9uZWcpIHtcbjMwMjY6XHRcdGNhc2UgQVVUT05FR19ESVNBQkxFOlxuMzAyNzpcdFx0XHQvKiBBdXRvbmVnb3RpYXRpb24gZGlzYWJsZWQsIHNlbGVjdCBhIHN1aXRhYmxlIHNwZWVkIGFuZFxuMzAyODpcdFx0XHQgKiBkdXBsZXguXG4zMDI5Olx0XHRcdCAqL1xuMzAzMDpcdFx0XHRjID0gcGh5X2NhcHNfbG9va3VwKGtzZXQtXHUwMDNlYmFzZS5zcGVlZCwga3NldC1cdTAwM2ViYXNlLmR1cGxleCxcbjMwMzE6XHRcdFx0XHRcdCAgICBwbC1cdTAwM2VzdXBwb3J0ZWQsIGZhbHNlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ0NTcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgdGhleSB3ZXJlIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBJbnRlcmZhY2UgQ29uZmlndXJhdGlvbiBBZnRlciBQaHlsaW5rIFNldHRpbmdzKioKCkhtbSwgaXQmIzM5O3MgYmVjb21pbmcgY2xlYXIgdGhhdCBgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRgIGlzbiYjMzk7dCB0b3VjaGluZyB0aGUgYGNvbmZpZy5pbnRlcmZhY2VgIHNldHRpbmcsIHdoaWNoIGlzIGEgYml0IHVuZXhwZWN0ZWQuIFVzdWFsbHksIHRoZSBpbnRlcmZhY2UgbW9kZSDigJMgd2hldGhlciBpdCYjMzk7cyBjb3BwZXIsIG9wdGljYWwsIG9yIHNvbWV0aGluZyBlbHNlIOKAkyBpcyBuYWlsZWQgZG93biBkdXJpbmcgcGh5bGluayBjcmVhdGlvbiBvciwgbW9yZSBkeW5hbWljYWxseSwgd2hlbiBhbiBTRlAgbW9kdWxlIGdldHMgaG90LXBsdWdnZWQuIFNvLCBJIG5lZWQgdG8gdHJhY2Ugd2hlcmUgdGhhdCBgY29uZmlnLmludGVyZmFjZWAgdmFsdWUgKmlzKiBiZWluZyBzZXQsIGFuZCwgaWYgbm90LCB3aHkuIE15IGluc3RpbmN0IGlzIHRoYXQgdGhpcyBpcyBwb3RlbnRpYWxseSBpbiB0aGUgYHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsYCBmdW5jdGlvbiBhbmQgaXQmIzM5O3MgbWlzc2luZyB0aGUgZXhwZWN0ZWQgZnVuY3Rpb25hbGl0eSwgb3IgdGhlcmUmIzM5O3MgYSBwcm9ibGVtIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGUgZnVuY3Rpb25zIGFyZSBjYWxsZWQuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIFNGUCBjb25maWd1cmF0aW9uIGNvZGUgbm93LiBJJiMzOTtsbCBzdGFydCB3aXRoIGEgcmV2aWV3IG9mIGBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbGAgdG8gc2VlIHdoYXQgSSYjMzk7bSBtaXNzaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNzA1PXN0YXRpYyBpbnQgcGh5bGlua19zZnBfY29uZmlnX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNzU1LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNzU2OnN0YXRpYyBpbnQgcGh5bGlua19zZnBfY29uZmlnX29wdGljYWwoc3RydWN0IHBoeWxpbmsgKnBsKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNzU3LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM4NDg9c3RhdGljIGludCBwaHlsaW5rX3NmcF9tb2R1bGVfaW5zZXJ0KHZvaWQgKnVwc3RyZWFtLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzg2NS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mzg2NjpcdHJldHVybiBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbChwbCk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM4NjctfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mzg3Nj1zdGF0aWMgaW50IHBoeWxpbmtfc2ZwX21vZHVsZV9zdGFydCh2b2lkICp1cHN0cmVhbSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM4OTEtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM4OTI6XHRyZXR1cm4gcGh5bGlua19zZnBfY29uZmlnX29wdGljYWwocGwpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zODkzLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUxMTgKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgYHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsYCBDYWxsKioKCk9rYXksIHNvIGBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbGAgZ2V0cyB0cmlnZ2VyZWQgd2hlbiBhbiBTRlAgbW9kdWxlIGlzIGluc2VydGVkLiBJIGluaXRpYWxseSB0aG91Z2h0IHRoaXMgbWlnaHQgYmUgdHJpZ2dlcmVkIHRocm91Z2ggc3lzZnMgb3Igc29tZSBzb3J0IG9mIHNpbXVsYXRpb24sIGJ1dCBTRlAgbW9kdWxlcyBhcmUgdHlwaWNhbGx5IGhhcmR3YXJlLWJhc2VkLCByaWdodD8gSG93ZXZlciwgSSYjMzk7bSByZW1pbmRlZCB0aGF0IGBwaHlsaW5rX3N0YXJ0YCBpcyBjYWxsZWQgYnkgbWFueSBkaWZmZXJlbnQgZHJpdmVycywgbm90IGp1c3QgU0ZQLXNwZWNpZmljIGNvZGUuIFRoaXMgZnVuY3Rpb24gaXMgbW9yZSBnZW5lcmFsLXB1cnBvc2UuCgpOb3csIGlmIGEgZHJpdmVyIHV0aWxpemVzIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCwgaXQmIzM5O2xsIGVuZCB1cCBoaXR0aW5nIHRoaXMgc3BlY2lmaWMgY29kZSBwYXRoLiBUaGUgcXVlc3Rpb24gaXM6IGRvIGFueSBkcml2ZXJzIGFjdHVhbGx5IHVzZSBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWA/IEEgcXVpY2sgc2NhbiBzaG93cyB0aGF0IGBxY2E4MDd4LmNgIGRvZXMgdXNlIGl0LiBIbW0sIGlzIGBxY2E4MDd4LmNgIHJlYWNoYWJsZT8gSXQgaXMgYSBQSFkgZHJpdmVyLCB3aGljaCBpcyBwcm9taXNpbmcuCgpMZXQmIzM5O3Mgc2VlIGlmIEkgY2FuIHBvdGVudGlhbGx5IHRlc3QgYHFjYTgwN3guY2Agd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudC4gSXQmIzM5O3MgYSBRdWFsY29tbSBQSFkgZHJpdmVyLCBhbmQgdGhvc2UgYXJlIHR5cGljYWxseSBib3VuZCB2aWEgdGhlIE1ESU8gYnVzLiBJIGNhbiBzaW11bGF0ZSB0aGUgTURJTyBidXMgd2l0aCBgbWRpby1tb2NrdXBgLCBgbWRpby1ncGlvYCwgb3IgZXZlbiBgZHNhX2xvb3BgLiBBY3R1YWxseSwgdGhpbmtpbmcgbW9yZSBhYm91dCBpdCwgYGRzYV9sb29wYCB1c2VzIGVpdGhlciBgZml4ZWQtbGlua2Agb3Igc29tZXRoaW5nIHNpbWlsYXIsIHJpZ2h0PwoKSSBzaG91bGQgcHJvYmFibHkgYnJvYWRlbiBteSBzZWFyY2guIEJlc2lkZXMgYHFjYTgwN3guY2AsIGFyZSB0aGVyZSBhbnkgKm90aGVyKiBkcml2ZXJzIEkmIzM5O20gZm9yZ2V0dGluZyB0aGF0IHV0aWxpemUgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgPyBJIHNob3VsZCBtYWtlIHN1cmUgSSBoYXZlIGEgY29tcHJlaGVuc2l2ZSBsaXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jPTE1OT1pbnQgcGh5X2ludGVyZmFjZV9udW1fcG9ydHMocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0yMDEtXHRcdHJldHVybiA0O1xuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM6MjAyOlx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMtMjAzLVx0XHRyZXR1cm4gNTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYz0yOTQ9dW5zaWduZWQgbG9uZyBwaHlfY2Fwc19mcm9tX2ludGVyZmFjZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTMxMC1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM6MzExOlx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMzEyLVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjM4PXN0YXRpYyBpbnQgcGh5bGlua19pbnRlcmZhY2VfbWF4X3NwZWVkKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTktXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjYwOlx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjEtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz03NzQ9c3RhdGljIGludCBwaHlsaW5rX3BhcnNlX21vZGUoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODA4LVx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6ODA5Olx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTgxMC1cdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTAzOT1zdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA0Mi1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDQzOlx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQ0LVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz00OTA9c3RhdGljIGludCBxY2E4MDd4X3BoeV9wYWNrYWdlX3Byb2JlX29uY2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTQ5LVx0XHRpZiAoIXN0cmNhc2VjbXAocGFja2FnZV9tb2RlX25hbWUsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTUwOlx0XHRcdFx0cGh5X21vZGVzKFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkpKSlcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTE6XHRcdFx0cHJpdi1cdTAwM2VwYWNrYWdlX21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU1Mi1cdFx0ZWxzZSBpZiAoIXN0cmNhc2VjbXAocGFja2FnZV9tb2RlX25hbWUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTU2Mj1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfY29uZmlnX2luaXRfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01ODUtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU4NjpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01ODctXHRkZWZhdWx0OlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjcxNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDExNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBBdHRhY2sgU3VyZmFjZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgcWNhODA3eC5jYCBkcml2ZXIgYW5kIGl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgdGhlIG9ubHkgb25lIGRpcmVjdGx5IHV0aWxpemluZyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAuIEJ1dCB3YWl0IGEgc2Vjb25kLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nLi4uIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBjYW4gKmFsc28qIGJlIGRlZmluZWQgd2l0aGluIGEgZGV2aWNlIHRyZWUsIGFuZCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBJJiMzOTttIHdvbmRlcmluZyBpZiBJIGNhbiBnZXQgc3l6a2FsbGVyIHRvIGluamVjdCBhIGN1c3RvbSBub2RlIGludG8gdGhlIGRldmljZSB0cmVlIGRpcmVjdGx5LiBQcm9iYWJseSBub3QsIHN5emthbGxlciBkb2VzbiYjMzk7dCB1c3VhbGx5IGRvIGR5bmFtaWMgZGV2aWNlIHRyZWUgbWFuaXB1bGF0aW9uLCBidXQgSSBtaWdodCBiZSBhYmxlIHRvIGxldmVyYWdlIGFuIGV4aXN0aW5nIG9uZSBvciBwZXJoYXBzIHRyeSB3aXRoIHZpcnR1YWwgZHJpdmVycy4KCkFscmlnaHQsIGJhY2sgdG8gdGhlIGRldmljZSB0cmVl4oCmIGBwaHlsaW5rX3BhcnNlX21vZGVgIGlzIHJlc3BvbnNpYmxlIGZvciBwYXJzaW5nIHRoZSBtb2RlIGZyb20gdGhlIGRldmljZSB0cmVlIGl0c2VsZi4gSG1tLCB0aGlzIGlzIGdldHRpbmcgaW50cmlndWluZy4uLiBDb3VsZCBJIHBvdGVudGlhbGx5IHRyaWdnZXIgdGhpcyBwYXJzaW5nIHRocm91Z2ggdGhlIGBuZXRsaW5rYCBpbnRlcmZhY2Ugc29tZWhvdz8gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgUEhZIG1vZGVzIGFyZSBiZWluZyB1dGlsaXplZC4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gdGhvcm91Z2hseSBleGFtaW5lIGBwaHlsaW5rX2NyZWF0ZWAgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlciBhbmQgd2hlcmUgdGhlIHZ1bG5lcmFibGUgc3BvdCBtaWdodCBiZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5bGlua19jcmVhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NTE2PXN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9tYWNfYW5kX3BjcyhzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzEtXHRpZiAocGNzKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjUzMjpcdFx0LyogVGhlIFBDUywgaWYgcHJlc2VudCwgbXVzdCBiZSBzZXR1cCBiZWZvcmUgcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzMtXHRcdCAqIGhhcyBiZWVuIGNhbGxlZC4gSWYgdGhlIG9wcyBpcyBub3QgaW5pdGlhbGlzZWQsIHByaW50IGFuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDcxLSAqIHBoeWxpbmtfcGNzX25lZ19tb2RlKCkgLSBoZWxwZXIgdG8gZGV0ZXJtaW5lIFBDUyBpbmJhbmQgbW9kZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDcyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzMtICogQHBjczogYSBwb2ludGVyIHRvIFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTc2OT1zdGF0aWMgaW50IHBoeWxpbmtfcmVnaXN0ZXJfc2ZwKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3OTMtICogcGh5bGlua19zZXRfZml4ZWRfbGluaygpIC0gc2V0IHRoZSBmaXhlZCBsaW5rXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3OTQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc5NS0gKiBAc3RhdGU6IGEgcG9pbnRlciB0byBhIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xODMxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmspO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzMy0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgzNDogKiBwaHlsaW5rX2NyZWF0ZSgpIC0gY3JlYXRlIGEgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODM1LSAqIEBjb25maWc6IGEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IFx1MDAyNnN0cnVjdCBwaHlsaW5rX2NvbmZpZ1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg0OC0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTg0OTpzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NTAtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM2LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkzNzpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2NyZWF0ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MzgtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTQwLSAqIHBoeWxpbmtfZGVzdHJveSgpIC0gY2xlYW51cCBhbmQgZGVzdHJveSB0aGUgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTQxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NDItICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE5NTc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19kZXN0cm95KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjAtICogcGh5bGlua19leHBlY3RzX3BoeSgpIC0gRGV0ZXJtaW5lIGlmIHBoeWxpbmsgZXhwZWN0cyBhIHBoeSB0byBiZSBhdHRhY2hlZFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTYxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjItICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMDY9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyNi0gKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyMjc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyOC0gKiBAcGh5OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5X2RldmljZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNjA9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jb25uZWN0X3BoeSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjYzLSAqIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKSAtIGNvbm5lY3QgdGhlIFBIWSBzcGVjaWZpZWQgaW4gdGhlIERUIG1vZGUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNjQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI2NS0gKiBAZG46IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBkZXZpY2Vfbm9kZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNzk9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19vZl9waHlfY29ubmVjdCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjgyLSAqIHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KCkgLSBjb25uZWN0IHRoZSBQSFkgc3BlY2lmaWVkIGluIHRoZSBmd25vZGUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyODM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI4NC0gKiBAZndub2RlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZndub2RlX2hhbmRsZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzMzg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM0Mi0gKiAgIGluc3RhbmNlLlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzQzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDQtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzNzM9c3RhdGljIHZvaWQgcGh5bGlua19saW5rX2NoYW5nZWQoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIHVwLCBjb25zdCBjaGFyICp3aGF0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM4Mi0gKiBwaHlsaW5rX21hY19jaGFuZ2UoKSAtIG5vdGlmeSBwaHlsaW5rIG9mIGEgY2hhbmdlIGluIE1BQyBzdGF0ZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzgzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzODQtICogQHVwOiBpbmRpY2F0ZXMgd2hldGhlciB0aGUgbGluayBpcyBjdXJyZW50bHkgdXAuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDE1PXN0YXRpYyBpcnFyZXR1cm5fdCBwaHlsaW5rX2xpbmtfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQyNS0gKiBwaHlsaW5rX3N0YXJ0KCkgLSBzdGFydCBhIHBoeWxpbmsgaW5zdGFuY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQyNjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDI3LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDg4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3RhcnQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ5MS0gKiBwaHlsaW5rX3N0b3AoKSAtIHN0b3AgYSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0OTI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ5My0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjUyMj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N0b3ApO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUyNS0gKiBwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKCkgLSBibG9jayBQSFkgYWJpbGl0eSB0byBzdG9wIHJlY2VpdmUgY2xvY2sgaW4gTFBJXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI1MjY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUyNy0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjU1MT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NTQtICogcGh5bGlua19yeF9jbGtfc3RvcF91bmJsb2NrKCkgLSB1bmJsb2NrIFBIWSBhYmlsaXR5IHRvIHN0b3AgcmVjZWl2ZSBjbG9ja1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTU1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NTYtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1OTM9c3RhdGljIGJvb2wgcGh5bGlua19waHlfcG1fc3BlZWRfY3RybChzdHJ1Y3QgcGh5bGluayAqcGwpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjAwLSAqIHBoeWxpbmtfc3VzcGVuZCgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2Ugc3VzcGVuZCBldmVudFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjAxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MDItICogQG1hY193b2w6IHRydWUgaWYgdGhlIE1BQyBuZWVkcyB0byByZWNlaXZlIHBhY2tldHMgZm9yIFdha2Utb24tTGFuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjUyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3VzcGVuZCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjU1LSAqIHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUoKSAtIHByZXBhcmUgdG8gcmVzdW1lIGEgbmV0d29yayBkZXZpY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjY1NjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjU3LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjc3PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY4MC0gKiBwaHlsaW5rX3Jlc3VtZSgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2UgcmVzdW1lIGV2ZW50XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2ODE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY4Mi0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjcyMD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Jlc3VtZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzIzLSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfd29sKCkgLSBnZXQgdGhlIHdha2Ugb24gbGFuIHBhcmFtZXRlcnMgZm9yIHRoZSBQSFlcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjcyNDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzI1LSAqIEB3b2w6IGEgcG9pbnRlciB0byBcdTAwMjZzdHJ1Y3QgZXRodG9vbF93b2xpbmZvIHRvIGhvbGQgdGhlIHJlYWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjc1Nz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X3dvbCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzYwLSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfd29sKCkgLSBzZXQgd2FrZSBvbiBsYW4gcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzYxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3NjItICogQHdvbDogYSBwb2ludGVyIHRvIFx1MDAyNnN0cnVjdCBldGh0b29sX3dvbGluZm8gZm9yIHRoZSBkZXNpcmVkIHBhcmFtZXRlcnNcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI4ODk9c3RhdGljIHZvaWQgcGh5bGlua19nZXRfa3NldHRpbmdzKGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjkwNC0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCgpIC0gZ2V0IHRoZSBjdXJyZW50IGxpbmsgc2V0dGluZ3NcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjkwNTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTA2LSAqIEBrc2V0OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyB0byBob2xkIGxpbmsgc2V0dGluZ3Ncbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5NTc9c3RhdGljIGJvb2wgcGh5bGlua192YWxpZGF0ZV9wY3NfaW5iYW5kX2F1dG9uZWcoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3OC0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCgpIC0gc2V0IHRoZSBsaW5rIHNldHRpbmdzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5Nzk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk4MC0gKiBAa3NldDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgZm9yIHRoZSBkZXNpcmVkIG1vZGVzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTQ1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNDgtICogcGh5bGlua19ldGh0b29sX253YXlfcmVzZXQoKSAtIHJlc3RhcnQgbmVnb3RpYXRpb25cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE0OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTUwLSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTcwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzMtICogcGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKCkgLSBnZXQgdGhlIGN1cnJlbnQgcGF1c2UgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTc0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzUtICogQHBhdXNlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTg2PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTg5LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSgpIC0gc2V0IHRoZSBjdXJyZW50IHBhdXNlIHBhcmFtZXRlcnNcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE5MDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTkxLSAqIEBwYXVzZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI3Mj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI3Ni0gKiAgIGNvdW50ZXJcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzI3NzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKS5cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI3OC0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI5NT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2dldF9lZWVfZXJyKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyOTgtICogcGh5bGlua19ldGh0b29sX2dldF9lZWUoKSAtIHJlYWQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjk5OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMDAtICogQGVlZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIHJlYWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzMyMT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X2VlZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzI0LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfZWVlKCkgLSBzZXQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMzI1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMjYtICogQGVlZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIGRlc2lyZWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzQ5NT1zdGF0aWMgaW50IHBoeWxpbmtfbWlpX3dyaXRlKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgaW50IHBoeV9pZCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTMtICogcGh5bGlua19taWlfaW9jdGwoKSAtIGdlbmVyaWMgbWlpIGlvY3RsIGludGVyZmFjZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTE0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTUtICogQGlmcjogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGlmcmVxIGZvciBzb2NrZXQgaW9jdGxzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNTg4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2lvY3RsKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1OTItICogICBsaW5rIHBhcnRuZXJzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM1OTM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzU5NC0gKiBAc3luYzogcGVyZm9ybSBhY3Rpb24gc3luY2hyb25vdXNseVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzYxMz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NwZWVkX2Rvd24pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxNy0gKiAgIHBoeWxpbmtfc3BlZWRfZG93bigpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM2MTg6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxOS0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDM3MD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9jNDVfcGNzX2dldF9zdGF0ZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzc0LSAqXHRcdFx0XHQgd2hpY2ggbG9zZXMgc3RhdGVcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDM3NTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzc2LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MzkxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcmVwbGF5X2xpbmtfYmVnaW4pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5NS0gKlx0XHRcdCAgICAgICB3aGljaCBsb3N0IHN0YXRlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQzOTY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5Ny0gKlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTYxMAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDExOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUEhZIEludGVyZmFjZSBNb2RlIFVzYWdlIHdpdGggYGRzYV9sb29wYCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJIHNlZSB0aGF0IGBwaHlsaW5rX2NyZWF0ZWAgcmVjZWl2ZXMgYSBgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWdgLiBUaGUgY3JpdGljYWwgYml0IGhlcmUgaXMgdGhlIGBzdXBwb3J0ZWRfaW50ZXJmYWNlc2AgZmllbGQgd2l0aGluIHRoYXQgY29uZmlnLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBhbGxvd2VkIGludGVyZmFjZSBtb2RlcyBhcmUgc3BlY2lmaWVkLCBhbmQgSSYjMzk7bSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAuIElmIHRoYXQgYml0IGlzIHNldCBpbiBgc3VwcG9ydGVkX2ludGVyZmFjZXNgLCB0aGVuIHRoZW9yZXRpY2FsbHksIGBQU0dNSUlgIGlzIGEgdmFsaWQgb3B0aW9uIGZvciB0aGlzIHBhcnRpY3VsYXIgUEhZIGxpbmsuCgpOb3csIHRoZSBjb2RlIG5vdGVzIHRoYXQgdGhlIGBkc2FfbG9vcGAgZnVuY3Rpb24gbWVzc2VzIHdpdGggdGhlc2UgYHN1cHBvcnRlZF9pbnRlcmZhY2VzYC4gU3BlY2lmaWNhbGx5LCBpdCBhcHBlYXJzIHRvIHNldCBhbGwgb2YgdGhlbS4gVGhpcyBtZWFucyBgZHNhX2xvb3BgICpjb3VsZCogcG90ZW50aWFsbHkgZW5hYmxlIHRoZSB1c2Ugb2YgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLiBUaGF0IHJhaXNlcyBhIGtleSBxdWVzdGlvbiBpbiBteSBtaW5kOiBIb3cgZG9lcyBgZHNhX2xvb3BgIGFjdHVhbGx5IHNldCB0aGUgaW50ZXJmYWNlIG1vZGU/IEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIGBkc2FfbG9vcGAgaXRzZWxmIHRvIHVuZGVyc3RhbmQgaG93IGl0IG1hbmlwdWxhdGVzIHRoZSBgc3VwcG9ydGVkX2ludGVyZmFjZXNgIGFuZCBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgY29udHJpYnV0aW5nIHRvLCBvciBwcmV2ZW50aW5nLCB0aGUgdXNlIG9mIGBQU0dNSUlgIGluIHRoaXMgY29udGV4dC4gVGltZSB0byB0cmFjZSB0aHJvdWdoIHRoYXQgZnVuY3Rpb24gYW5kIHNlZSB3aGF0IGl0JiMzOTtzIHJlYWxseSBkb2luZyB1bmRlciB0aGUgaG9vZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UEhZX0lOVEVSRkFDRV9NT0RFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MzI2PXN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzYSwgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI4LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyOTpcdGJpdG1hcF9maWxsKGNvbmZpZy1cdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcywgUEhZX0lOVEVSRkFDRV9NT0RFX01BWCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzA6XHRfX2NsZWFyX2JpdChQSFlfSU5URVJGQUNFX01PREVfTkEsIGNvbmZpZy1cdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMzEtXHRjb25maWctXHUwMDNlbWFjX2NhcGFiaWxpdGllcyA9IH4wO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjIyMQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIHRoaW5raW5nIHRocm91Z2ggdGhpcyBjb2RlOgoKKipVbmRlcnN0YW5kaW5nIERTQSBDYXBhYmlsaXR5IFNldHVwIGluIGBkc2FfbG9vcGAqKgoKQWxyaWdodCwgc28gdGhlIHRleHQgaXMgc2F5aW5nIHRoaXMgY29kZSBwcmltYXJpbHkgZGVmaW5lcyB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBkZXZpY2Ug4oCTIHRoYXQmIzM5O3MgdGhlIHNldHVwIHN0YWdlLiBCdXQgdGhlICphY3R1YWwqIG9wZXJhdGluZyBtb2RlLCB0aGUgaW50ZXJmYWNlIHNwZWNpZmljcywgdGhhdCYjMzk7cyBkZXRlcm1pbmVkIGJ5IHRoZSBEU0EgY29yZSBpdHNlbGYuIFRoZSBzeXN0ZW0gdXNlcyBlaXRoZXIgdGhlIGRldmljZSB0cmVlIG9yIGZpeGVkLWxpbmsgcHJvcGVydGllcyB0byBmaWd1cmUgb3V0IGhvdyB0byBvcGVyYXRlLgoKU2luY2UgYGRzYV9sb29wYCBpcyBhIG1vY2sgZHJpdmVyLCBpdCYjMzk7cyBub3QgZ29pbmcgdG8gYmUgdXNpbmcgdGhlIGRldmljZSB0cmVlLCB3aGljaCBpcyBleHBlY3RlZC4gVGhhdCYjMzk7cyBhIGtleSBwb2ludC4gU28sIHRoZSBxdWVzdGlvbiBub3cgaXMsIGhvdyBkb2VzIHRoaXMgbW9jayBkcml2ZXIsIGBkc2FfbG9vcGAsIG9idGFpbiBpdHMgZml4ZWQtbGluayBwcm9wZXJ0aWVzIGlmIGl0JiMzOTtzIG5vdCB1c2luZyB0aGUgZGV2aWNlIHRyZWU/IEkgbmVlZCB0byBkaWcgaW50byB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBvZiBgZHNhX2xvb3BgIGFuZCBmaW5kIHRoZSBhbnN3ZXIuIExldCYjMzk7cyBzZWUgaG93IHRoYXQgd29ya3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RzYV9sb29wJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTpzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNi1cdHUxNiBtZW1iZXJzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzA6c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMS1cdGNoYXIgbmFtZVtFVEhfR1NUUklOR19MRU5dO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU6ZW51bSBkc2FfbG9vcF9taWJfY291bnRlcnMge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzYtXHREU0FfTE9PUF9QSFlfUkVBRF9PSyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00Mi1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzOnN0cnVjdCBkc2FfbG9vcF9wb3J0IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0Olx0c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSBtaWJbX19EU0FfTE9PUF9DTlRfTUFYXTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ1LVx0dTE2IHB2aWQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTpzdHJ1Y3QgZHNhX2xvb3BfcHJpdiB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MC1cdHN0cnVjdCBtaWlfYnVzXHQqYnVzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTEtXHR1bnNpZ25lZCBpbnRcdHBvcnRfYmFzZTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUyOlx0c3RydWN0IGRzYV9sb29wX3ZsYW4gdmxhbnNbVkxBTl9OX1ZJRF07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01My1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1NDpcdHN0cnVjdCBkc2FfbG9vcF9wb3J0IHBvcnRzW0RTQV9NQVhfUE9SVFNdO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTUtfTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTc6c3RydWN0IGRzYV9sb29wX3BkYXRhIHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU4LVx0LyogTXVzdCBiZSBmaXJzdCwgc3VjaCB0aGF0IGRzYV9yZWdpc3Rlcl9zd2l0Y2goKSBjYW4gYWNjZXNzIHRoaXNcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy02Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjY3OnN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IGRzYV9sb29wX21pYnNbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY4LVx0W0RTQV9MT09QX1BIWV9SRUFEX09LXVx0PSB7IFwmIzM0O3BoeV9yZWFkX29rXCYjMzQ7LCB9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTc1PXN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2UgKnN3aXRjaF9tZGlvZGV2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo3NzplbnVtIGRzYV9sb29wX2RldmxpbmtfcmVzb3VyY2VfaWQge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzgtXHREU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX05PTkUsICAvKiBERVZMSU5LX1JFU09VUkNFX0lEX1BBUkVOVF9UT1AgKi9cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04MS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjgyOnN0YXRpYyB1NjQgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0KHZvaWQgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04My17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IHByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04NS1cdHVuc2lnbmVkIGludCBpLCBjb3VudCA9IDA7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NjpcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg3LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6OTc6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OC17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OS1cdHN0cnVjdCBkZXZsaW5rX3Jlc291cmNlX3NpemVfcGFyYW1zIHNpemVfcGFyYW1zO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTAwOlx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEwMS1cdGludCBlcnI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTE1LVx0XHRcdFx0XHQgICAgICBEU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX1ZUVSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjExNjpcdFx0XHRcdFx0ICAgICAgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0LCBwcyk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMTctXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTI1OnN0YXRpYyBlbnVtIGRzYV90YWdfcHJvdG9jb2wgZHNhX2xvb3BfZ2V0X3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEyNi1cdFx0XHRcdFx0XHQgICBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMzQ6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzUte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTM2Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNy1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzOS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRzLVx1MDAzZW51bV9wb3J0czsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDA6XHRcdG1lbWNweShwcy1cdTAwM2Vwb3J0c1tpXS5taWIsIGRzYV9sb29wX21pYnMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDE6XHRcdCAgICAgICBzaXplb2YoZHNhX2xvb3BfbWlicykpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0NC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0NTpcdHJldHVybiBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhkcyk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDYtfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ3LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQ4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3RlYXJkb3duKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0OS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTUyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTUzOnN0YXRpYyBpbnQgZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHNzZXQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2MC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE2MTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfc3RyaW5ncyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYyLVx0XHRcdFx0IHUzMiBzdHJpbmdzZXQsIHVpbnQ4X3QgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjMte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTY0Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2NS1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3My1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NDpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc1LVx0XHRcdFx0ICAgICAgIHVpbnQ2NF90ICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc2LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NzpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzgtXHR1bnNpZ25lZCBpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxODQ6c3RhdGljIGludCBkc2FfbG9vcF9waHlfcmVhZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg1LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NjpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODctXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXHUwMDNlYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE5OC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE5OTpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV93cml0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAwLVx0XHRcdCAgICAgIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMS17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMDI6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAzLVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMTU6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTYtXHRcdFx0XHQgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMjUtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9icmlkZ2VfbGVhdmUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIyNy1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjMyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjMzOnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjM0LVx0XHRcdFx0XHR1OCBzdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNDA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDEtXHRcdFx0XHRcdGJvb2wgdmxhbl9maWx0ZXJpbmcsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQ5LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjUwOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjUxLVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4sXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU1LVx0Ym9vbCBwdmlkID0gdmxhbi1cdTAwM2VmbGFncyBcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19QVklEO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU2Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1Ny1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cdTAwM2VidXM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTg6XHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTktXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjgyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjgzOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg0LVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4pXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg2LVx0Ym9vbCB1bnRhZ2dlZCA9IHZsYW4tXHUwMDNlZmxhZ3MgXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fVU5UQUdHRUQ7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODc6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg4LVx0dTE2IHB2aWQgPSBwcy1cdTAwM2Vwb3J0c1twb3J0XS5wdmlkO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg5LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI5MDpcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5MS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTE6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMi1cdFx0XHRcdCAgICBpbnQgbmV3X210dSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMy17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTQ6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzIwLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzIxOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjIte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkc2EsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI3LVx0XHRcdFx0ICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzMzLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM1Olx0LmdldF90YWdfcHJvdG9jb2xcdD0gZHNhX2xvb3BfZ2V0X3Byb3RvY29sLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM2Olx0LnNldHVwXHRcdFx0PSBkc2FfbG9vcF9zZXR1cCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNzpcdC50ZWFyZG93blx0XHQ9IGRzYV9sb29wX3RlYXJkb3duLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM4Olx0LmdldF9zdHJpbmdzXHRcdD0gZHNhX2xvb3BfZ2V0X3N0cmluZ3MsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzk6XHQuZ2V0X2V0aHRvb2xfc3RhdHNcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDA6XHQuZ2V0X3NzZXRfY291bnRcdFx0PSBkc2FfbG9vcF9nZXRfc3NldF9jb3VudCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MTpcdC5nZXRfZXRodG9vbF9waHlfc3RhdHNcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDI6XHQucGh5X3JlYWRcdFx0PSBkc2FfbG9vcF9waHlfcmVhZCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MzpcdC5waHlfd3JpdGVcdFx0PSBkc2FfbG9vcF9waHlfd3JpdGUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDQ6XHQucG9ydF9icmlkZ2Vfam9pblx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ1Olx0LnBvcnRfYnJpZGdlX2xlYXZlXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ2Olx0LnBvcnRfc3RwX3N0YXRlX3NldFx0PSBkc2FfbG9vcF9wb3J0X3N0cF9zdGF0ZV9zZXQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDc6XHQucG9ydF92bGFuX2ZpbHRlcmluZ1x0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ4Olx0LnBvcnRfdmxhbl9hZGRcdFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ5Olx0LnBvcnRfdmxhbl9kZWxcdFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUwOlx0LnBvcnRfY2hhbmdlX210dVx0PSBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTE6XHQucG9ydF9tYXhfbXR1XHRcdD0gZHNhX2xvb3BfcG9ydF9tYXhfbXR1LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUyOlx0LnBoeWxpbmtfZ2V0X2NhcHNcdD0gZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1My19O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU1OnN0YXRpYyBpbnQgZHNhX2xvb3BfZHJ2X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1Ni17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTc6XHRzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgKnBkYXRhID0gbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1ODpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1OS1cdHN0cnVjdCBkc2Ffc3dpdGNoICpkcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODItXHRkcy1cdTAwM2VkZXYgPSBcdTAwMjZtZGlvZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4MzpcdGRzLVx1MDAzZW9wcyA9IFx1MDAyNmRzYV9sb29wX2RyaXZlcjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4NC1cdGRzLVx1MDAzZXByaXYgPSBwcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozOTc6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTgte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk5LVx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQwMDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQwMS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MTE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDIyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDIzOnN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgZHNhX2xvb3BfZHJ2ID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDI0LVx0Lm1kaW9kcnYuZHJpdmVyXHQ9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjYtXHR9LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI3Olx0LnByb2JlXHQ9IGRzYV9sb29wX2Rydl9wcm9iZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyODpcdC5yZW1vdmVcdD0gZHNhX2xvb3BfZHJ2X3JlbW92ZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyOTpcdC5zaHV0ZG93biA9IGRzYV9sb29wX2Rydl9zaHV0ZG93bixcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMC19O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMxLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDMyOnN0YXRpYyBpbnQgZHNhX2xvb3BfYnVzX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMy1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM0LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzNTpcdHJldHVybiBkcnYgPT0gXHUwMDI2ZHNhX2xvb3BfZHJ2Lm1kaW9kcnYuZHJpdmVyO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM2LX1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNy1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzODpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzOS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ1LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ2OnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ3LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0ODpcdHN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgZHNhX2xvb3BfcGRhdGEgPSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDktXHRcdC5jZCA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzE6XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VidXNfbWF0Y2ggPSBkc2FfbG9vcF9idXNfbWF0Y2g7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzI6XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YSA9IFx1MDAyNmRzYV9sb29wX3BkYXRhO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDczLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4MS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4MjpzdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4NzpcdHJldCA9IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTQ6XHRyZXQgPSBtZGlvX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZkc2FfbG9vcF9kcnYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk1LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk2Olx0XHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5Ny1cdFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDItfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTAzOm1vZHVsZV9pbml0KGRzYV9sb29wX2luaXQpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA1OnN0YXRpYyB2b2lkIF9fZXhpdCBkc2FfbG9vcF9leGl0KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDYte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA3Olx0bWRpb19kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZkc2FfbG9vcF9kcnYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA4Olx0ZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDktXHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMS19XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MTI6bW9kdWxlX2V4aXQoZHNhX2xvb3BfZXhpdCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MTMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4OTYzCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipVbmRlcnN0YW5kaW5nIHRoZSBEU0EgTG9vcCBTdHJ1Y3R1cmUqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgRFNBIGxvb3AgY3JlYXRpb24sIHNwZWNpZmljYWxseSB0aGUgaW5zdGFudGlhdGlvbiBvZiBhIHN3aXRjaCB3aXRoIGZpeGVkIHBvcnRzLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGF0IHRoaXMgc2V0dXAgaXMgcmlnaWRseSBkZWZpbmVkOiB0aGUgcG9ydHMgYXJlIHByZWNvbmZpZ3VyZWQuIFRoaXMsIG9mIGNvdXJzZSwgaXNuJiMzOTt0IGluaGVyZW50bHkgYSBiYWQgdGhpbmcsIGl0IGp1c3QgdGVsbHMgbWUgdGhlIHN5c3RlbSYjMzk7cyBkZXNpZ24gaXMgaGlnaGx5IHN0cnVjdHVyZWQuCgpJIGltbWVkaWF0ZWx5IGtleSBpbiBvbiBgZHNhX2xvb3BfcGRhdGFgLiAqVGhhdCogaXMgd2hlcmUgdGhlIHNwZWNpZmljcyBmb3IgdGhlIGludGVyZmFjZSBtb2RlIG9mIHRoZXNlIGZpeGVkIHBvcnRzIHJlc2lkZS4gTm93IEkgbmVlZCB0byBzZWUgKmhvdyogdGhpcyBgZHNhX2xvb3BfcGRhdGFgIHN0cnVjdHVyZSBpcyBkZWZpbmVkIGFuZCB1c2VkLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIGR5bmFtaWMgY29uZmlndXJhdGlvbiBhdCB0aGlzIHBvaW50LCBob3cgbXVjaCBydW50aW1lIGZsZXhpYmlsaXR5IGRvIHdlIGhhdmUgd2l0aCB0aGlzLiBBcmUgdGhlIGludGVyZmFjZSBtb2RlcyBzZXQgaW4gc3RvbmUgYXQgY29tcGlsZSB0aW1lLCBvciBjYW4gd2UgaW5mbHVlbmNlIHRoZW0sIGV2ZW4gaWYgaXQmIzM5O3MgdmlhIHNvbWV0aGluZyBsaWtlIGRldmljZSB0cmVlIG92ZXJyaWRlcyBvciBhIHBsYXRmb3JtLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIHBoYXNlPyBUaGUgZGV2aWwsIGFzIGFsd2F5cywgaXMgaW4gdGhlIGRldGFpbHMsIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGUgYHBkYXRhYCB0byBzZWUgaXRzIGZ1bGwgZGVmaW5pdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ0NiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDQ2Olx0c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KHZvaWQpXG4gNDQ3Olx0e1xuIDQ0ODpcdFx0c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9wZGF0YSBkc2FfbG9vcF9wZGF0YSA9IHtcbiA0NDk6XHRcdFx0LmNkID0ge1xuIDQ1MDpcdFx0XHRcdC5wb3J0X25hbWVzWzBdID0gXCYjMzQ7bGFuMVwmIzM0OyxcbiA0NTE6XHRcdFx0XHQucG9ydF9uYW1lc1sxXSA9IFwmIzM0O2xhbjJcJiMzNDssXG4gNDUyOlx0XHRcdFx0LnBvcnRfbmFtZXNbMl0gPSBcJiMzNDtsYW4zXCYjMzQ7LFxuIDQ1MzpcdFx0XHRcdC5wb3J0X25hbWVzWzNdID0gXCYjMzQ7bGFuNFwmIzM0OyxcbiA0NTQ6XHRcdFx0XHQucG9ydF9uYW1lc1tEU0FfTE9PUF9DUFVfUE9SVF0gPSBcJiMzNDtjcHVcJiMzNDssXG4gNDU1Olx0XHRcdH0sXG4gNDU2Olx0XHRcdC5uYW1lID0gXCYjMzQ7RFNBIG1vY2t1cCBkcml2ZXJcJiMzNDssXG4gNDU3Olx0XHRcdC5lbmFibGVkX3BvcnRzID0gMHgxZixcbiA0NTg6XHRcdFx0Lm5ldGRldiA9IFwmIzM0O2V0aDBcJiMzNDssXG4gNDU5Olx0XHR9O1xuIDQ2MDpcdFx0c3RydWN0IG1paV9idXMgKmJ1cztcbiA0NjE6XHRcdGludCByZXQgPSAtRU5PREVWO1xuIDQ2MjpcdFxuIDQ2MzpcdFx0YnVzID0gbWRpb19maW5kX2J1cyhcJiMzNDtmaXhlZC0wXCYjMzQ7KTtcbiA0NjQ6XHRcdGlmIChXQVJOX09OKCFidXMpKVxuIDQ2NTpcdFx0XHRyZXR1cm4gcmV0O1xuIDQ2NjpcdFxuIDQ2NzpcdFx0c3dpdGNoX21kaW9kZXYgPSBtZGlvX2RldmljZV9jcmVhdGUoYnVzLCAzMSk7XG4gNDY4Olx0XHRpZiAoSVNfRVJSKHN3aXRjaF9tZGlvZGV2KSlcbiA0Njk6XHRcdFx0Z290byBvdXQ7XG4gNDcwOlx0XG4gNDcxOlx0XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VidXNfbWF0Y2ggPSBkc2FfbG9vcF9idXNfbWF0Y2g7XG4gNDcyOlx0XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YSA9IFx1MDAyNmRzYV9sb29wX3BkYXRhO1xuIDQ3MzpcdFxuIDQ3NDpcdFx0cmV0ID0gbWRpb19kZXZpY2VfcmVnaXN0ZXIoc3dpdGNoX21kaW9kZXYpO1xuIDQ3NTpcdFx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk3NzEKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA1ODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYSBQSFkgRnJhbWV3b3JrIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIGl0IGRvZXNuJiMzOTt0IGV4cGxpY2l0bHkgc2V0IHRoZSBpbnRlcmZhY2UgbW9kZSwgc28gaXQmIzM5O3MgcHJvYmFibHkgZGVmYXVsdGluZyB0byBzb21ldGhpbmcgbGlrZSBgUEhZX0lOVEVSRkFDRV9NT0RFX05BYCBvciBgUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMYC4gVGhlIHF1ZXN0aW9uIGlzLCBob3cgZG8gd2UgKmFjdHVhbGx5KiBnZXQgYHBoeWxpbmtfc3RhcnRgIHRvIGV4ZWN1dGUgd2l0aCBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWA/IFN5emthbGxlciYjMzk7cyBub3QgZGlyZWN0bHkgaW5qZWN0aW5nIGRldmljZSB0cmVlcywgc28gdGhhdCYjMzk7cyBvdXQsIGFuZCBpdCByZWxpZXMgb24gbmV0bGluayBmb3IgdmlydHVhbCBpbnRlcmZhY2VzLiBJIGhhZCBhIHRob3VnaHQgYWJvdXQgY3JlYXRpbmcgYSB2aXJ0dWFsIGludGVyZmFjZSB3aXRoIHBoeWxpbmsgYW5kIHNldHRpbmcgdGhlIG1vZGUsIGJ1dCB0aGVuIHJlbWVtYmVyZWQgYG5ldGRldnNpbWAgZG9lc24mIzM5O3QgZXZlbiB1c2UgcGh5bGluay4gV2hhdCBhYm91dCBgZHNhX2xvb3BgPyBDb3VsZCBJIG1hbmlwdWxhdGUgaXRzIGludGVyZmFjZSBtb2RlIHZpYSBldGh0b29sIG9yIG5ldGxpbms/IE5vLCB1c3VhbGx5IHRoYXQmIzM5O3MgZml4ZWQgYnkgdGhlIGhhcmR3YXJlIG9yIGRldmljZSB0cmVlLgoKQnV0LCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGVlcCBpbiBgcGh5bGluay5jYCwgd2hpY2ggbWFrZXMgaXQgaW50ZXJlc3RpbmcgZXZlbiBpZiBzeXprYWxsZXIgY2FuJiMzOTt0ICplYXNpbHkqIGhpdCB0aGUgc3BlY2lmaWMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHBhdGguIEhvd2V2ZXIsIHRoZXJlJiMzOTtzIHRoYXQgZ3VpZGVsaW5lIGFib3V0IG5vdCBmdXp6aW5nIGlmIGl0JiMzOTtzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gVGhhdCYjMzk7cyB0aGUga2V5IHF1ZXN0aW9uLiBJcyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgYWN0dWFsbHkgcmVhY2hhYmxlIGluIFFFTVU/CgpJZiBubyBkcml2ZXIgaW4gUUVNVSAqdXNlcyogYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLCB0aGVuIGl0JiMzOTtzIGEgZGVhZCBlbmQuIExldCYjMzk7cyBsb29rIGZvciBhIGRyaXZlci4gUmlnaHQsIEkgcmVtZW1iZXIgc2VlaW5nIHRoYXQgYHFjYTgwN3guY2AgZXhwbGljaXRseSB1c2VzIGl0LiBHb29kLiBgcWNhODA3eC5jYCBpcyBhIFBIWSBkcml2ZXIsIHRob3VnaC4gQ2FuIHdlIGxvYWQgdGhhdCBpbiBRRU1VPyBZZXMsIHdlIGNhbiBsb2FkIFBIWSBkcml2ZXJzIGFuZCBiaW5kIHRoZW0gdG8gdmlydHVhbCBNRElPIGJ1c2VzLgoKQnV0IGhlcmUmIzM5O3MgdGhlIGNhdGNoOiBUbyB0cmlnZ2VyIGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAgd2l0aCBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAsIHdlIG5lZWQgYSBNQUMgZHJpdmVyIHRoYXQgKnVzZXMqIHBoeWxpbmsgKmFuZCogY29ubmVjdHMgdG8gdGhpcyBQSFksICphbmQqIHRoZSBpbnRlcmZhY2UgbW9kZSAqbXVzdCogYmUgc2V0IHRvIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYC4gVGhhdCB1c3VhbGx5IGdldHMgc2V0IGJ5IHRoZSBNQUMgZHJpdmVyIGJhc2VkIG9uIGEgZGV2aWNlIHRyZWUuIFdpdGhvdXQgdGhhdCBkZXZpY2UgdHJlZSBzZXR0aW5nLCBpdCYjMzk7cyBub3QgZ29pbmcgdG8gaGFwcGVuLgoKSG1tLi4uIHdhaXQuLi4gY291bGQgYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBvciBzb21ldGhpbmcgZWxzZSAqdHJpZ2dlciogaXQ/IFRoYXQmIzM5O3MgdGhlIG5leHQgYXZlbnVlIHRvIGV4cGxvcmUuIExldCYjMzk7cyBjaGVjayBpZiBgcWNhODA3eGAgaXRzZWxmIHNldHMgdGhlIGludGVyZmFjZSBtb2RlLCBzb21laG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU0NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTQ1Olx0XG4gNTQ2Olx0XHRwcml2LVx1MDAzZXBhY2thZ2VfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9OQTtcbiA1NDc6XHRcdGlmICghb2ZfcHJvcGVydHlfcmVhZF9zdHJpbmcobnAsIFwmIzM0O3Fjb20scGFja2FnZS1tb2RlXCYjMzQ7LFxuIDU0ODpcdFx0XHRcdFx0ICAgICBcdTAwMjZwYWNrYWdlX21vZGVfbmFtZSkpIHtcbiA1NDk6XHRcdFx0aWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxuIDU1MDpcdFx0XHRcdFx0cGh5X21vZGVzKFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkpKSlcbiA1NTE6XHRcdFx0XHRwcml2LVx1MDAzZXBhY2thZ2VfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk7XG4gNTUyOlx0XHRcdGVsc2UgaWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxuIDU1MzpcdFx0XHRcdFx0ICAgICBwaHlfbW9kZXMoUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSSkpKVxuIDU1NDpcdFx0XHRcdHByaXYtXHUwMDNlcGFja2FnZV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTtcbiA1NTU6XHRcdFx0ZWxzZVxuIDU1NjpcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDU1NzpcdFx0fVxuIDU1ODpcdFxuIDU1OTpcdFx0cmV0dXJuIDA7XG4gNTYwOlx0fVxuIDU2MTpcdFxuIDU2MjpcdHN0YXRpYyBpbnQgcWNhODA3eF9waHlfcGFja2FnZV9jb25maWdfaW5pdF9vbmNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gNTYzOlx0e1xuIDU2NDpcdFx0c3RydWN0IHFjYTgwN3hfc2hhcmVkX3ByaXYgKnByaXYgPSBwaHlfcGFja2FnZV9nZXRfcHJpdihwaHlkZXYpO1xuIDU2NTpcdFx0aW50IHZhbCwgcmV0O1xuIDU2NjpcdFxuIDU2NzpcdFx0LyogTWFrZSBzdXJlIFBIWSBmb2xsb3cgUEhZIHBhY2thZ2UgbW9kZSBpZiBlbmZvcmNlZCAqL1xuIDU2ODpcdFx0aWYgKHByaXYtXHUwMDNlcGFja2FnZV9tb2RlICE9IFBIWV9JTlRFUkZBQ0VfTU9ERV9OQSBcdTAwMjZcdTAwMjZcbiA1Njk6XHRcdCAgICBwaHlkZXYtXHUwMDNlaW50ZXJmYWNlICE9IHByaXYtXHUwMDNlcGFja2FnZV9tb2RlKVxuIDU3MDpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1NzE6XHRcbiA1NzI6XHRcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XG4gNTczOlx0XG4gNTc0Olx0XHQvKiBTZXQgY29ycmVjdCBQSFkgcGFja2FnZSBtb2RlICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNDQ2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEludmVzdGlnYXRpb24gaW50byBTZXR0aW5nIFBIWSBJbnRlcmZhY2UgTW9kZSBmb3IgcWNhODA3eCB3aXRoIHN5emthbGxlcioqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyB0byBtYW5pcHVsYXRlIHRoZSBgcWNhODA3eGAgZHJpdmVyJiMzOTtzIGBxY29tLHBhY2thZ2UtbW9kZWAgc2V0dGluZyB1c2luZyBzeXprYWxsZXIuIFRoZSBkcml2ZXIgY2hlY2tzIHRoZSBkZXZpY2UgdHJlZSwgYW5kIGlmIGl0JiMzOTtzIG5vdCBzZXQgdGhlcmUsIGl0IGRvZXNuJiMzOTt0IHNldCBpdC4gVGhhdCYjMzk7cyBhIHByb2JsZW0uIFNvLCBhcmUgdGhlcmUgYW55IG90aGVyIHdheXMgdG8gZm9yY2UgYSBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgY29uZmlndXJhdGlvbj8KCk15IGZpcnN0IHRob3VnaHQgd2FzLCBtYXliZSBzeXprYWxsZXIgY291bGQgbGV2ZXJhZ2UgYElGTEFfSU5GT19LSU5EYCBvbiBzb21lIHNvcnQgb2YgdmlydHVhbCBkZXZpY2UgdG8gc3BlY2lmeSB0aGUgUEhZIGludGVyZmFjZSBtb2RlLiBCdXQsIG5vLCB0aGVyZSBkb2VzbiYjMzk7dCBzZWVtIHRvIGJlIGEgc3VpdGFibGUgdmlydHVhbCBkZXZpY2UgdG8gZG8gdGhhdCB3aXRoLiBXaGF0IGFib3V0IGB0dW5gLCBgdmV0aGAsIG9yIGBuZXRkZXZzaW1gPyBOb3BlLCB0aG9zZSBkb24mIzM5O3QgdXNlIHBoeWxpbmssIHNvIHRoZXkmIzM5O3JlIG5vdCByZWxldmFudC4gYGRzYV9sb29wYCB1c2VzIHBoeWxpbmssIGJ1dCB0aGUgaW50ZXJmYWNlIG1vZGUgaXMgZml4ZWQuIFVnaC4KCkNhbiBJIGV2ZW4gKnJlYWNoKiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgIHdpdGggYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGluIFFFTVU/IFByb2JhYmx5IG5vdC4gSXQgbG9va3MgbGlrZSB0aGF0IHNldHRpbmcgaXMgdGllZCB0byB2ZXJ5IHNwZWNpZmljIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zIG9yIGhhcmR3YXJlIHRoYXQgZXhwbGljaXRseSB1c2VzIFBTR01JSS4KCkFscmlnaHQsIG1heWJlIEkgY2FuIG1hbmlwdWxhdGUgaXQgdGhyb3VnaCBgU0lPQ1NNSUlSRUdgIG9yIHJlbGF0ZWQgaW9jdGxzPyBObywgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGlzIGp1c3QgYW4gaW50ZXJuYWwgZW51bSB2YWx1ZS4gSXQmIzM5O3Mgc2V0IGR1cmluZyBkZXZpY2UgcHJvYmUgYmFzZWQgb24gZGV2aWNlIHRyZWUsIEFDUEksIG9yIGJvYXJkIGZpbGVzLiBTaW5jZSBzeXprYWxsZXIgbGlrZWx5IGNhbiYjMzk7dCBpbmplY3QgZGV2aWNlIHRyZWUgbm9kZXMgZGlyZWN0bHksIEkmIzM5O20gb3V0IG9mIGx1Y2sgdGhlcmUuCgpIYW5nIG9uLi4uIGNvdWxkIHN5emthbGxlciwgaW4gKnNvbWUqIHNldHVwcywgaW5qZWN0IGRldmljZSB0cmVlIG5vZGVzLCBwZXJoYXBzIHVzaW5nIGBzeXpfbW91bnRfaW1hZ2VgIHdpdGggYSBjdXN0b20gRFRCPyBObywgRFRCcyBhcmUgcGFzc2VkIGF0IGJvb3QsIHNvIHRoYXQmIzM5O3MgYSBkZWFkIGVuZC4KCkkga25vdyBzeXprYWxsZXIgaGFzIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlgIGFuZCBvdGhlciByZWxhdGVkIHBzZXVkby1zeXNjYWxscywgYnV0IG5vdGhpbmcgc2VlbXMgdG8gZGlyZWN0bHkgYWRkcmVzcyBEVEIgaW5qZWN0aW9uLiBIb3dldmVyLCB3YWl0LCB0aGVyZSYjMzk7cyBgc3l6X2luaXRfbmV0X3NvY2tldGAgYW5kIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlgLi4uIElzIHRoZXJlIGEgbmV0bGluayBhdHRyaWJ1dGUsIG1heWJlLCB0aGF0IEkgY291bGQgdXNlIHRvIHNldCB0aGUgUEhZIGludGVyZmFjZSBtb2RlPyBJIG5lZWQgdG8gY2hlY2sgYHJ0bmxfbGlua19vcHNgIHRvIHNlZSB3aGF0JiMzOTtzIGF2YWlsYWJsZS4gVGhpcyBpcyB3aGVyZSB0aGUgc29sdXRpb24gaXMgcHJvYmFibHkgaGlkaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BIWV9JTlRFUkZBQ0VfTU9ERSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL3J0bmV0bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI0NTkKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJpemF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbnZlc3RpZ2F0aW5nIE5ldGxpbmsgQXR0cmlidXRlcyBmb3IgUEhZIEludGVyZmFjZSBNb2RlKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgd2UmIzM5O3JlIHJlcHJlc2VudGluZyBhbmQgbWFuaXB1bGF0aW5nIFBIWSBpbnRlcmZhY2UgbW9kZXMgd2l0aGluIHRoZSBuZXRsaW5rIGZyYW1ld29yay4gTXkgaW1tZWRpYXRlIHRhc2sgaXMgdG8gY29uZmlybSBpZiB3ZSYjMzk7dmUgZGVmaW5lZCBhIHNwZWNpZmljIG5ldGxpbmsgYXR0cmlidXRlIGRlZGljYXRlZCB0byBoYW5kbGluZyB0aGlzIGFzcGVjdCBvZiB0aGUgUEhZLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGFuIGF0dHJpYnV0ZSBleGlzdHMsIG9yIGlmIHRoZSByZWxldmFudCBpbmZvcm1hdGlvbiBpcyBiZWluZyBlbmNvZGVkIHdpdGhpbiBhIGJyb2FkZXIsIG1vcmUgZ2VuZXJpYyBhdHRyaWJ1dGUgc3RydWN0dXJlLiBJZiBhIGRlZGljYXRlZCBhdHRyaWJ1dGUgKmRvZXMqIGV4aXN0LCBJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUgaXRzIHN0cnVjdHVyZSBhbmQgYXNzb2NpYXRlZCBmbGFncy4gSWYgbm90LCBJJiMzOTtsbCBoYXZlIHRvIGludmVzdGlnYXRlIGhvdyB0aGUgbW9kZSBpbmZvcm1hdGlvbiBpcyBjdXJyZW50bHkgYmVpbmcgcGFzc2Vk4oCUbGlrZWx5LCBpdCYjMzk7cyBlbWJlZGRlZCB3aXRoaW4gYW5vdGhlciBhdHRyaWJ1dGUsIG9yIHBlcmhhcHMgcmVxdWlyZXMgc29tZSBjdXN0b20gaGFuZGxpbmcgdGhhdCYjMzk7cyBub3QgaW1tZWRpYXRlbHkgYXBwYXJlbnQuIExldCBtZSBzdGFydCBkaWdnaW5nIHRocm91Z2ggdGhlIHJlbGV2YW50IGhlYWRlcnMgYW5kIGV4aXN0aW5nIGNvZGXigKYgdGhlIGBubDgwMjExYCBkZWZpbml0aW9ucyBhcmUgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQuIEkgc3VzcGVjdCBJIG1pZ2h0IGFsc28gbmVlZCB0byBleGFtaW5lIHRoZSBkZXZpY2UgZHJpdmVycyYjMzk7IGFuZCByZWxldmFudCBzdGFjayYjMzk7cyBuZXRsaW5rIGludGVyZmFjZXMgdG9vLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQSFlfSU5URVJGQUNFX01PREUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL29mX25ldC5jLTI0LSAqIGludGVyZmFjZSBhbmQgMCByZXR1cm5lZC4gSW4gY2FzZSBvZiBlcnJvciBpbnRlcmZhY2UgaXMgc2V0IHRvXG5uZXQvY29yZS9vZl9uZXQuYzoyNTogKiBQSFlfSU5URVJGQUNFX01PREVfTkEgYW5kIGFuIGVycm5vIGlzIHJldHVybmVkLCBlLmcuIC1FTk9ERVYuXG5uZXQvY29yZS9vZl9uZXQuYy0yNi0gKi9cbm5ldC9jb3JlL29mX25ldC5jPTI3PWludCBvZl9nZXRfcGh5X21vZGUoc3RydWN0IGRldmljZV9ub2RlICpucCwgcGh5X2ludGVyZmFjZV90ICppbnRlcmZhY2UpXG4tLVxubmV0L2NvcmUvb2ZfbmV0LmMtMzEtXG5uZXQvY29yZS9vZl9uZXQuYzozMjpcdCppbnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01PREVfTkE7XG5uZXQvY29yZS9vZl9uZXQuYy0zMy1cbi0tXG5uZXQvY29yZS9vZl9uZXQuYy0zOS1cbm5ldC9jb3JlL29mX25ldC5jOjQwOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgUEhZX0lOVEVSRkFDRV9NT0RFX01BWDsgaSYjNDM7JiM0MzspXG5uZXQvY29yZS9vZl9uZXQuYy00MS1cdFx0aWYgKCFzdHJjYXNlY21wKHBtLCBwaHlfbW9kZXMoaSkpKSB7XG4tLVxubmV0L2RzYS9wb3J0LmM9MTYxNz1pbnQgZHNhX3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IGRzYV9wb3J0ICpkcClcbi0tXG5uZXQvZHNhL3BvcnQuYy0xNjI2LVx0aWYgKGVycilcbm5ldC9kc2EvcG9ydC5jOjE2Mjc6XHRcdG1vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfTkE7XG5uZXQvZHNhL3BvcnQuYy0xNjI4LVxuLS1cbm5ldC9kc2EvcG9ydC5jLTE2MzItXHRcdC8qIEZvciBsZWdhY3kgZHJpdmVycyAqL1xubmV0L2RzYS9wb3J0LmM6MTYzMzpcdFx0aWYgKG1vZGUgIT0gUEhZX0lOVEVSRkFDRV9NT0RFX05BKSB7XG5uZXQvZHNhL3BvcnQuYy0xNjM0LVx0XHRcdF9fc2V0X2JpdChtb2RlLCBkcC1cdTAwM2VwbF9jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xubmV0L2RzYS9wb3J0LmMtMTYzNS1cdFx0fSBlbHNlIHtcbm5ldC9kc2EvcG9ydC5jOjE2MzY6XHRcdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCxcbm5ldC9kc2EvcG9ydC5jLTE2MzctXHRcdFx0XHQgIGRwLVx1MDAzZXBsX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG5uZXQvZHNhL3BvcnQuYzoxNjM4Olx0XHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfR01JSSxcbm5ldC9kc2EvcG9ydC5jLTE2MzktXHRcdFx0XHQgIGRwLVx1MDAzZXBsX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4tLVxubmV0L2RzYS9wb3J0LmM9MTg0Mj1zdGF0aWMgdm9pZCBkc2Ffc2hhcmVkX3BvcnRfbGlua19kb3duKHN0cnVjdCBkc2FfcG9ydCAqZHApXG4tLVxubmV0L2RzYS9wb3J0LmMtMTg0Ny1cdFx0ZHMtXHUwMDNlcGh5bGlua19tYWNfb3BzLVx1MDAzZW1hY19saW5rX2Rvd24oXHUwMDI2ZHAtXHUwMDNlcGxfY29uZmlnLCBNTE9fQU5fRklYRUQsXG5uZXQvZHNhL3BvcnQuYzoxODQ4Olx0XHRcdFx0XHRcdCAgIFBIWV9JTlRFUkZBQ0VfTU9ERV9OQSk7XG5uZXQvZHNhL3BvcnQuYy0xODQ5LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM0NDEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgVnVsbmVyYWJpbGl0eSBQYXRoKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSwgYW5kIGl0IGxvb2tzIGxpa2UgdGhlIGludGVyZmFjZSBtb2RlLCBzcGVjaWZpY2FsbHkgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLCBpcyBvbmx5IGRldGVybWluZWQgZnJvbSB0aGUgZGV2aWNlIHRyZWUgdXNpbmcgYG9mX2dldF9waHlfbW9kZWAuIFRoYXQmIzM5O3MgYSBwb3RlbnRpYWwgd2VhayBwb2ludCwgYnV0IGFsc28gYSBsaW1pdGF0aW9uLiBUaGUgY2hhbGxlbmdlIGlzLCBpZiBzeXprYWxsZXIgY2FuJiMzOTt0IG1vZGlmeSB0aGUgZGV2aWNlIHRyZWUgZGlyZWN0bHksIHRoZW4gaXQgY2FuJiMzOTt0IHNpbXBseSBmb3JjZSB0aGF0IGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCB2YWx1ZS4gSXQgc2VlbXMgYSBjbGFzc2ljIHZ1bG5lcmFiaWxpdHkgcGF0aCwgYXNzdW1pbmcgdGhlIGF0dGFja2VyIGNhbiBhY2Nlc3MgYW5kIG1vZGlmeSB0aGUgZGV2aWNlIHRyZWUsIGEgdHlwaWNhbCBzeXprYWxsZXIgZ29hbC4KCldhaXQgYSBzZWNvbmQuLi4gYmVmb3JlIEkgZ2V0IHRvbyBmaXhhdGVkIG9uIHRoZSBkZXZpY2UgdHJlZSwgYXJlIHRoZXJlICphbnkqIG90aGVyIHdheXMgdG8gc2V0IHRoYXQgc3BlY2lmaWMgaW50ZXJmYWNlIG1vZGU/IE1heWJlIHNvbWUgb2JzY3VyZSByZWdpc3RlciBzZXR0aW5nIG9yIGEgZGlmZmVyZW50IGRyaXZlciBwYXRoPyBJIHNob3VsZCBwcm9iYWJseSBicm9hZGVuIHRoZSBzZWFyY2guIExldCBtZSBxdWlja2x5IHNjYW4gdGhyb3VnaCB0aGUgYGRyaXZlcnMvbmV0L2AgZGlyZWN0b3J5IGFnYWluLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHRoZXJlIGlzbiYjMzk7dCBhbm90aGVyIHdheSB0byBpbmZsdWVuY2UgdGhhdCBzZXR0aW5nIGJlZm9yZSBJIGNvbXBsZXRlbHkgZGlzY291bnQgdGhlIHBvc3NpYmlsaXR5IG9mIGV4cGxvaXRhdGlvbi4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM9MTU5PWludCBwaHlfaW50ZXJmYWNlX251bV9wb3J0cyhwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMS1cdFx0cmV0dXJuIDQ7XG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzoyMDI6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0yMDMtXHRcdHJldHVybiA1O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jPTI5ND11bnNpZ25lZCBsb25nIHBoeV9jYXBzX2Zyb21faW50ZXJmYWNlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMzEwLVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYzozMTE6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTItXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzg9c3RhdGljIGludCBwaHlsaW5rX2ludGVyZmFjZV9tYXhfc3BlZWQocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1OS1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjA6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MS1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTc3ND1zdGF0aWMgaW50IHBoeWxpbmtfcGFyc2VfbW9kZShzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MDgtXHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4MDk6XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODEwLVx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQyLVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwNDM6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDQtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTQ5MD1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfcHJvYmVfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01NDktXHRcdGlmICghc3RyY2FzZWNtcChwYWNrYWdlX21vZGVfbmFtZSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTA6XHRcdFx0XHRwaHlfbW9kZXMoUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSkpKVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU1MTpcdFx0XHRwcml2LVx1MDAzZXBhY2thZ2VfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTUyLVx0XHRlbHNlIGlmICghc3RyY2FzZWNtcChwYWNrYWdlX21vZGVfbmFtZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM9NTYyPXN0YXRpYyBpbnQgcWNhODA3eF9waHlfcGFja2FnZV9jb25maWdfaW5pdF9vbmNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4NS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTg2Olx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4Ny1cdGRlZmF1bHQ6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NzU1CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBQSFkgSW50ZXJmYWNlIE1vZGUgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBpdCBsb29rcyBsaWtlIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpcyBleGNsdXNpdmVseSBkZWZpbmVkIHdpdGhpbiB0aGUgYHFjYTgwN3guY2AgZmlsZSwgcHJpbWFyaWx5IGRyaXZlbiBieSB0aGUgRGV2aWNlIFRyZWUgKERUKS4gSSBrbm93IGl0IGdldHMgcGFyc2VkIGZyb20gdGhlIERUIGluIGBvZl9uZXQuY2AgYW5kIGBwaHlsaW5rLmNgLCB3aGljaCBtYWtlcyBzZW5zZS4gQnV0LCBJJiMzOTttIGN1cmlvdXMsIGlzIHRoYXQgKnRydWx5KiB0aGUgb25seSB3YXkgdGhpcyBzcGVjaWZpYyBtb2RlIGdldHMgc2V0PyBBcmUgdGhlcmUgYW55IG90aGVyIHBvdGVudGlhbCByb3V0ZXM/IE15IGd1dCB0ZWxscyBtZSBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHBvc3NpYmlsaXRpZXMuCgpQZXJoYXBzIHRoZXJlJiMzOTtzIGFuIEFDUEktcmVsYXRlZCBhdmVudWUgSSYjMzk7bSBvdmVybG9va2luZz8gSSBzaG91bGQgcmVhbGx5IG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIG5lZWQgdG8gZGlnIGEgbGl0dGxlIGRlZXBlciwgYW5kIHRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGBhY3BpX2dldF9waHlfbW9kZWAuIEl0JiMzOTtzIHRpbWUgdG8gY2hlY2sgdGhhdCBmdW5jdGlvbiBhbmQgc2VlIGlmIEFDUEkgaXMgaW52b2x2ZWQuIFRoaXMgZmVlbHMgbGlrZSB0aGUgcmlnaHQgcGxhY2UgdG8gc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWNwaV9nZXRfcGh5X21vZGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTA3OAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEZWVwIERpdmUgaW50byBgZndub2RlX2dldF9waHlfbW9kZWAqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBmd25vZGVfZ2V0X3BoeV9tb2RlYC4uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIHN1cHBvc2VkIHRvIHdvcmsgYW5kIHdoYXQgY29udGV4dCBpdCBvcGVyYXRlcyBpbi4gSSBzaG91bGQgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIGZpcnN0LiBJcyBpdCBzdHJhaWdodGZvcndhcmQsIG9yIGlzIGl0IGNhbGxpbmcgb3RoZXIgZnVuY3Rpb25zIHdoaWNoIGNhbiBhZmZlY3QgaXRzIGJlaGF2aW9yPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgcG90ZW50aWFsIGdvdGNoYXMgSSBzaG91bGQgYmUgYXdhcmUgb2YgcmVnYXJkaW5nIHBvdGVudGlhbCBzaWRlIGVmZmVjdHM/IEkgd29uZGVyIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgaGFyZHdhcmUgcGxhdGZvcm1zIHdoZXJlIHRoaXMgZnVuY3Rpb24gYmVoYXZlcyB1bmV4cGVjdGVkbHksIG1heWJlIHNvbWUgcGxhdGZvcm0tc3BlY2lmaWMgcXVpcmtzLiBJIGJldHRlciBjaGVjayB0aGUgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbiBvciBjb21tZW50cyB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhbnl0aGluZyBvYnZpb3VzLiBJdCYjMzk7cyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRyYWN0IGFuZCBhbnkgZXJyb3Igc2NlbmFyaW9zIGl0JiMzOTtzIGludGVuZGVkIHRvIGhhbmRsZS4gSSYjMzk7bGwgbmVlZCB0byB0aGluayBhYm91dCBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCB0aGUgb3ZlcmFsbCBmcmFtZXdvcmsgb3IgYXJjaGl0ZWN0dXJlLiBLbm93aW5nIHRoZSBgcGh5X21vZGVgIGlzIGNyaXRpY2FsIHRvIG91ciBzeXN0ZW0uIExldCBtZSBzdGFydCBkaWdnaW5nIGludG8gdGhlIGNvZGUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zndub2RlX2dldF9waHlfbW9kZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jhc2UvcHJvcGVydHkuYz05OTc9RVhQT1JUX1NZTUJPTF9HUEwoZGV2aWNlX2dldF9kbWFfYXR0cik7XG4tLVxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMtOTk5LS8qKlxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM6MTAwMDogKiBmd25vZGVfZ2V0X3BoeV9tb2RlIC0gR2V0IHBoeSBtb2RlIGZvciBnaXZlbiBmaXJtd2FyZSBub2RlXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYy0xMDAxLSAqIEBmd25vZGU6XHRQb2ludGVyIHRvIHRoZSBnaXZlbiBub2RlXG4tLVxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMtMTAwNi0gKi9cbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jOjEwMDc6aW50IGZ3bm9kZV9nZXRfcGh5X21vZGUoY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSlcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jLTEwMDgte1xuLS1cbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jLTEwMjQtfVxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM6MTAyNTpFWFBPUlRfU1lNQk9MX0dQTChmd25vZGVfZ2V0X3BoeV9tb2RlKTtcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jLTEwMjYtXG4tLVxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM9MTAzNT1pbnQgZGV2aWNlX2dldF9waHlfbW9kZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYy0xMDM2LXtcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jOjEwMzc6XHRyZXR1cm4gZndub2RlX2dldF9waHlfbW9kZShkZXZfZndub2RlKGRldikpO1xuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMtMTAzOC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jPTMzMT1zdGF0aWMgaW50IGRwYWEyX21hY19nZXRfaWZfbW9kZShzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZHBtYWNfbm9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtMzM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jOjMzNzpcdGVyciA9IGZ3bm9kZV9nZXRfcGh5X21vZGUoZHBtYWNfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtMzM4LVx0aWYgKGVyciBcdTAwM2UgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYz02ODQwPXN0YXRpYyBpbnQgbXZwcDJfcG9ydF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTY4NzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYzo2ODczOlx0cGh5X21vZGUgPSBmd25vZGVfZ2V0X3BoeV9tb2RlKHBvcnRfZndub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTY4NzQtXHRpZiAocGh5X21vZGUgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYz0xMDg0PXN0YXRpYyBpbnQgbGFuOTY2eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTEyMDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYzoxMjAzOlx0XHRwaHlfbW9kZSA9IGZ3bm9kZV9nZXRfcGh5X21vZGUocG9ydG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTEyMDQtXHRcdGVyciA9IGxhbjk2NnhfcHJvYmVfcG9ydChsYW45NjZ4LCBwLCBwaHlfbW9kZSwgcG9ydG5wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTYxNj1zdGF0aWMgaW50IGludGVsX21nYmVfY29tbW9uX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03MjAtXHRcdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo3MjE6XHRcdHBoeV9tb2RlID0gZndub2RlX2dldF9waHlfbW9kZShmd25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03MjItXHRcdGlmIChwaHlfbW9kZSBcdTAwM2U9IDApIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3Byb3BlcnR5Lmg9NTAzPWludCBkZXZpY2VfZ2V0X3BoeV9tb2RlKHN0cnVjdCBkZXZpY2UgKmRldik7XG5pbmNsdWRlL2xpbnV4L3Byb3BlcnR5Lmg6NTA0OmludCBmd25vZGVfZ2V0X3BoeV9tb2RlKGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUpO1xuaW5jbHVkZS9saW51eC9wcm9wZXJ0eS5oLTUwNS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY0NTYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA1NzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBY2Nlc3NpYmlsaXR5IG9mIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgdmlhIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgdGhpbmcuIFRoZSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgZndub2RlX2dldF9waHlfbW9kZWAgcmVhZHMgZnJvbSBkZXZpY2UgcHJvcGVydGllcy4gTXkgbWFpbiBxdWVzdGlvbiB0aGVuIGJlY29tZXMsIGNhbiBzeXprYWxsZXIgaW5qZWN0IHRob3NlIGRldmljZSBwcm9wZXJ0aWVzPyBJdCBsb29rcyBsaWtlIHN5emthbGxlciBjYW4gdXNlIGBzeXpfdXNiX2Nvbm5lY3RgIGFuZCBgc3l6XzgwMjExX2luamVjdF9mcmFtZWAgYW5kIHRoZSBsaWtlLCBidXQgaXQgZG9lc24mIzM5O3QgZ2VuZXJhbGx5IHN1cHBvcnQgaW5qZWN0aW5nIGFyYml0cmFyeSBBQ1BJIG9yIERUIHByb3BlcnRpZXMuIFRoZSBzcGVjaWZpYyBleGFtcGxlIG9mIGBzdG1tYWNgIChzcGVjaWZpY2FsbHkgYGR3bWFjLWludGVsYCkgcmVhZHMgYHBoeV9tb2RlYCBmcm9tIHRoZSBgZndub2RlYCwgYW5kIGlmIHRoYXQmIzM5O3Mgbm90IHRoZXJlLCBpdCBkZWZhdWx0cyB0byBzb21ldGhpbmcgZWxzZS4gQnV0IHdhaXQsIGBkd21hYy1pbnRlbGAgaXMgYSBQQ0kgZGV2aWNlLiBDYW4gc3l6a2FsbGVyIGluamVjdCBQQ0kgZGV2aWNlcyB3aXRoIHBhcnRpY3VsYXIgcHJvcGVydGllcz8gU3l6a2FsbGVyICpkb2VzKiBoYXZlIGBzeXpfcGNpX2RldmljZV9hZGRgIHdoaWNoIGxldHMgeW91IGFkZCB2aXJ0dWFsIFBDSSBkZXZpY2VzLCBidXQgcmlnaHQgbm93LCBpdCBkb2VzbiYjMzk7dCBsb29rIGxpa2UgdGhhdCBzdXBwb3J0cyBpbmplY3RpbmcgdGhvc2UgQUNQSS9md25vZGUgcHJvcGVydGllcy4gU28sIGl0IHNlZW1zIHVubGlrZWx5IHRoYXQgc3l6a2FsbGVyIGNhbiBlYXNpbHkgdHJpZ2dlciBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4KCkJ1dCBsZXQmIzM5O3MgdGhpbmsgb3V0c2lkZSB0aGUgYm94LiBJcyB0aGVyZSAqYW55KiBvdGhlciByb3V0ZT8gUGVyaGFwcyBhIGRyaXZlciBzZXRzIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBhcyBpdHMgZGVmYXVsdD8gSSBjaGVja2VkLCBhbmQgZnJvbSBteSBxdWljayByZXZpZXcgb2YgZHJpdmVycyB1c2luZyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAsIG9ubHkgYHFjYTgwN3guY2AgdXNlcyBpdCBleHBsaWNpdGx5LCBzbyBubyBNQUMgZHJpdmVyIGFwcGVhcnMgdG8gc2V0IGl0IGFzIGEgZGVmYXVsdC4gV2FpdCwgd2hhdCBhYm91dCBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaW5zaWRlIGBwaHlsaW5rX3BhcnNlX21vZGVgPyBSaWdodCwgdGhhdCBwYXJzZXMgdGhlIG1vZGUgZnJvbSB0aGUgZGV2aWNlIHRyZWUuIFNvLCBubyBkZXZpY2UgdHJlZSwgbm8gcGFyc2luZy4KCklzIHRoZXJlIGFueSBuZXRsaW5rIGludGVyZmFjZSB0aGF0IGxldHMgeW91IHNldCB0aGUgUEhZIG1vZGU/IExldCYjMzk7cyBjaGVjayBgcnRubF9saW5rX29wc2AgZm9yIGFueSBkcml2ZXIgdGhhdCBleHBvc2VzIHRoaXMgZnVuY3Rpb25hbGl0eS4gTm8gbHVjay4gUEhZIG1vZGUgbG9va3MgbGlrZSBhIGhhcmR3YXJlIHByb3BlcnR5LCBpdOKAmXMgbm90IGNvbmZpZ3VyYWJsZSBhdCBydW50aW1lLgoKU28sIHRoaXMgcGF0Y2ggaXMgZXNzZW50aWFsbHkgZW5hYmxpbmcgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHdpdGhpbiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgLiBHaXZlbiB0aGF0IGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBzZWVtcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbGlrZSBHQ0Ugb3IgUUVNVSwgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBvciBkZXZpY2UgdHJlZSBpbmplY3Rpb24sIHRoaXMgY2hhbmdlIHNlZW1zIGxpa2UgYSBsb3cteWllbGQgdGFyZ2V0IGZvciBmdXp6aW5nLgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjaywgdGhvdWdoLiBDYW4gd2Ugc29tZWhvdyBnZXQgYXQgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHZpYSBgZXRodG9vbGA/IEkgcmV2aWV3ZWQgYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBhbmQgaXQgZG9lc24mIzM5O3Qgc2V0IGBjb25maWcuaW50ZXJmYWNlYCwgd2hpY2ggaXMgbm90IGEgZ29vZCBzaWduLiBDYW4gd2UgZG8gaXQgd2l0aCBgU0lPQ1NNSUlSRUdgPyBObywgdGhhdCYjMzk7cyBqdXN0IGZvciByZWFkaW5nL3dyaXRpbmcgUEhZIHJlZ2lzdGVycy4gV2hhdCBhYm91dCBgZGV2bGlua2A/IEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgaWYgYGRldmxpbmtgIGhhcyBhbnkgY29udHJvbCBvdmVyIFBIWSBtb2RlLCBidXQgSSYjMzk7bSBsZWFuaW5nIHRvd2FyZHMgdGhpcyBub3QgYmVpbmcgYSB2aWFibGUgZnV6emluZyB0YXJnZXQgYXQgdGhpcyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQSFlfSU5URVJGQUNFX01PREUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvZGV2bGluay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzc0OAoJCQkJCQkJb3V0cHV0OiAxNTEKCQkJCQkJCXRob3VnaHRzOiA1NDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogTm90IFdvcnRoIEZ1enppbmcqKgoKT2theSwgc28gdGhlIHNpdHVhdGlvbiBpcyB0aGlzOiBJJiMzOTt2ZSBsb29rZWQgYXQgdGhlIGNvZGUsIGFuZCBJJiMzOTt2ZSBkZXRlcm1pbmVkIHRoaXMgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiBvdXIgZnV6emluZyBlbnZpcm9ubWVudC4gU3BlY2lmaWNhbGx5LCB0aGUgb25seSB3YXkgdG8gc2V0IGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBzZWVtcyB0byBiZSB0aHJvdWdoIGVpdGhlciBkZXZpY2UgdHJlZSAoRFQpIGNvbmZpZ3VyYXRpb25zLCBBQ1BJLCBvciwgaW4gYSB2ZXJ5IHNwZWNpZmljIGV4Y2VwdGlvbiwgaGFyZGNvZGluZyBpdCB3aXRoaW4gYSBkcml2ZXIuIEJ1dCwgYW5kIHRoaXMgaXMgdGhlIGNydXggb2YgaXQsIG5vIHN0YW5kYXJkIGRyaXZlciBoYXJkY29kZXMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHRvIGJlIHVzZWQgZm9yIHRoZSBjdXJyZW50IGNvZGUgaW4gcXVlc3Rpb24sIG90aGVyIHRoYW4gdGhlIGBxY2E4MDd4YCBQSFkgZHJpdmVyOyBhbmQgdGhlIGBxY2E4MDd4YCBQSFkgZHJpdmVyICpvbmx5KiBzZXRzIGl0IGlmIHRoZSBjb25maWd1cmF0aW9uIGlzIHNwZWNpZmllZCBpbiBEVC4KClNpbmNlIHdlIGNhbiYjMzk7dCBpbmplY3QgYXJiaXRyYXJ5IERUIG9yIEFDUEkgcHJvcGVydGllcyBpbiBlbnZpcm9ubWVudHMgbGlrZSBzeXprYWxsZXIsIHdlIGNhbm5vdCB0cmlnZ2VyIHRoYXQgcGFydGljdWxhciBjb2RlIHBhdGguIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBzeXprYWxsZXIgYW5kIG90aGVyIHN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIHNldHVwcyAoUUVNVS9HQ0UpIGRvbiYjMzk7dCBoYXZlIHRoZSBuZWNlc3NhcnkgaGFyZHdhcmUgdG8gdXRpbGl6ZSB0aGlzIHNldHRpbmcgb3IgY29uZmlndXJlIHRoZSBzeXN0ZW0gaW4gc3VjaCBhIHdheS4KClRoZXJlZm9yZSwgbG9va2luZyBhdCB0aGUgZnV6emluZyBndWlkZWxpbmVzLCB0aGlzIHBhdGNoIHNxdWFyZWx5IGZhbGxzIHVuZGVyIHRoZSBjcml0ZXJpYTogJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUmIzM0Oy4gVGhlIGhhcmR3YXJlLCBvciBpdHMgZW11bGF0ZWQgZXF1aXZhbGVudCwgaXMganVzdCBub3QgdGhlcmUsIGFuZCB3ZSBjYW4mIzM5O3QgbWFrZSBpdCBhcHBlYXIuCgpTbywgaW4gc2hvcnQsIHdoaWxlIHRoZSBwYXRjaCBpdHNlbGYgaXMgZmluZSwgdHJpZ2dlcmluZyBpdHMgaW50ZW5kZWQgZnVuY3Rpb25hbGl0eSBpcyBpbXBvc3NpYmxlIGluIG91ciBjdXJyZW50IGZ1enppbmcgc2V0dXAuIEkmIzM5O20gY29uZmlkZW50bHkgc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSB0byB0aGUgc3dpdGNoIHN0YXRlbWVudCBpbiBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZSgpLiBUaGUgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSBpbnRlcmZhY2UgbW9kZSBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyB0eXBpY2FsbHkgc2V0IHZpYSBEZXZpY2UgVHJlZSAoRFQpIG9yIEFDUEkgcHJvcGVydGllcyAoZS5nLiwgaW4gdGhlIHFjYTgwN3ggUEhZIGRyaXZlcikuIFNpbmNlIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cyBkbyBub3QgaGF2ZSB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCB1c2VzIHRoaXMgbW9kZSwgbm9yIGRvIHRoZXkgaW5qZWN0IGFyYml0cmFyeSBEVC9BQ1BJIHByb3BlcnRpZXMgdG8gdHJpZ2dlciBpdCwgdGhpcyBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSB0byB0aGUgc3dpdGNoIHN0YXRlbWVudCBpbiBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZSgpLiBUaGUgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSBpbnRlcmZhY2UgbW9kZSBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyB0eXBpY2FsbHkgc2V0IHZpYSBEZXZpY2UgVHJlZSAoRFQpIG9yIEFDUEkgcHJvcGVydGllcyAoZS5nLiwgaW4gdGhlIHFjYTgwN3ggUEhZIGRyaXZlcikuIFNpbmNlIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cyBkbyBub3QgaGF2ZSB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCB1c2VzIHRoaXMgbW9kZSwgbm9yIGRvIHRoZXkgaW5qZWN0IGFyYml0cmFyeSBEVC9BQ1BJIHByb3BlcnRpZXMgdG8gdHJpZ2dlciBpdCwgdGhpcyBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjQwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozODoxMy44MjM1NjcwMDNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDc0ODE1NjU1NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgdG8gdGhlIHN3aXRjaCBzdGF0ZW1lbnQgaW4gcGh5bGlua19nZXRfaW5iYW5kX3R5cGUoKS4gVGhlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgaW50ZXJmYWNlIG1vZGUgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIHRoYXQgaXMgdHlwaWNhbGx5IHNldCB2aWEgRGV2aWNlIFRyZWUgKERUKSBvciBBQ1BJIHByb3BlcnRpZXMgKGUuZy4sIGluIHRoZSBxY2E4MDd4IFBIWSBkcml2ZXIpLiBTaW5jZSBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMgZG8gbm90IGhhdmUgdGhlIHNwZWNpZmljIGhhcmR3YXJlIHRoYXQgdXNlcyB0aGlzIG1vZGUsIG5vciBkbyB0aGV5IGluamVjdCBhcmJpdHJhcnkgRFQvQUNQSSBwcm9wZXJ0aWVzIHRvIHRyaWdnZXIgaXQsIHRoaXMgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozODoxMy44MjM1NzI0NzJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMjQzOTg0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGEwZmIxM2ViODMwMWQzYTJjNWNkNjNkMjkwOTFkMzI1ZTBiNDk3YmZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBBdWcgOCAwMjozODoxMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbmluZGV4IDE4ZDJlYWQ5N2FhNTQuLjk4M2ExYTNjZWUzNzQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcXG5AQCAtMTA0MCw2ICsxMDQwLDcgQEAgc3RhdGljIGVudW0gaW5iYW5kX3R5cGUgcGh5bGlua19nZXRfaW5iYW5kX3R5cGUocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4ge1xcbiBcXHRzd2l0Y2ggKGludGVyZmFjZSkge1xcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcXG4rXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FVU0dNSUk6XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1VTWEdNSUk6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM4OjE0LjIyNjY3MTQ2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTQ3MDc4NDQ1MzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgdG8gdGhlIHN3aXRjaCBzdGF0ZW1lbnQgaW4gcGh5bGlua19nZXRfaW5iYW5kX3R5cGUoKS4gVGhlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgaW50ZXJmYWNlIG1vZGUgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIHRoYXQgaXMgdHlwaWNhbGx5IHNldCB2aWEgRGV2aWNlIFRyZWUgKERUKSBvciBBQ1BJIHByb3BlcnRpZXMgKGUuZy4sIGluIHRoZSBxY2E4MDd4IFBIWSBkcml2ZXIpLiBTaW5jZSBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMgZG8gbm90IGhhdmUgdGhlIHNwZWNpZmljIGhhcmR3YXJlIHRoYXQgdXNlcyB0aGlzIG1vZGUsIG5vciBkbyB0aGV5IGluamVjdCBhcmJpdHJhcnkgRFQvQUNQSSBwcm9wZXJ0aWVzIHRvIHRyaWdnZXIgaXQsIHRoaXMgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhMGZiMTNlYjgzMDFkM2EyYzVjZDYzZDI5MDkxZDMyNWUwYjQ5N2JmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgOCAwMjozODoxMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5pbmRleCAxOGQyZWFkOTdhYTU0Li45ODNhMWEzY2VlMzc0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuQEAgLTEwNDAsNiArMTA0MCw3IEBAIHN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4ge1xuIFx0c3dpdGNoIChpbnRlcmZhY2UpIHtcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuK1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVVTR01JSTpcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1VTWEdNSUk6XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozODoxNC4yMjY2NzI3MzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjgxMjkzNTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDpcblxuKipBbmFseXppbmcgdGhlIFBIWUxpbmsgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyBiZWVuIGFwcGxpZWQsIGFuZCBpdCBzZWVtcyB0byBoYXZlIHRvdWNoZWQgdGhlIGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZSgpYCBmdW5jdGlvbiB3aXRoaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgLiBUaGUgY29yZSBjaGFuZ2UgYXBwZWFycyB0byBiZSB0aGUgYWRkaXRpb24gb2YgYSBgY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOmAgc3RhdGVtZW50IHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJ3JlIGV4dGVuZGluZyB0aGUgc3VwcG9ydGVkIGluLWJhbmQgc2lnbmFsaW5nIHR5cGVzIHJlY29nbml6ZWQgYnkgUEhZTGluayB0byBpbmNsdWRlIHNvbWV0aGluZyByZWxhdGVkIHRvIFBTR01JSS4gTXkgZmlyc3QgdGhvdWdodCBpczogSSBuZWVkIHRvIHF1aWNrbHkgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mICpleGFjdGx5KiBob3cgYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKClgIGlzIHVzZWQgYW5kIHdoeSB0aGlzIGFkZGl0aW9uIGlzIHNpZ25pZmljYW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGltcGxpY2F0aW9uIHRoaXMgY2hhbmdlIGhhcy4gSXMgdGhpcyBhZGRpbmcgc3VwcG9ydCBmb3IgbmV3IGhhcmR3YXJlLCBvciBmaXhpbmcgYSBidWcsIG9yIGNoYW5naW5nIHRoZSBzdGFuZGFyZCBpbiBzb21lIHdheT9cblxuXG4iLCJJbnB1dFRva2VucyI6MTk4OCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzg6MTcuNTA3OTY4NjNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ4OTY3MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5bGlua19nZXRfaW5iYW5kX3R5cGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTEwMzM9ZW51bSBpbmJhbmRfdHlwZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMzgtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDM5OnN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTA5MD1zdGF0aWMgdm9pZCBwaHlsaW5rX3Bjc19uZWdfbW9kZShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDk4LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTA5OTpcXHR0eXBlID0gcGh5bGlua19nZXRfaW5iYW5kX3R5cGUoaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTExMDAtXFx0aWYgKHR5cGUgPT0gSU5CQU5EX05PTkUpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mzc1Nj1zdGF0aWMgaW50IHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsKHN0cnVjdCBwaHlsaW5rICpwbClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzgwNi1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM4MDc6XFx0aW5iYW5kX3R5cGUgPSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShpbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzgwOC1cXHRpZiAoaW5iYW5kX3R5cGUgPT0gSU5CQU5EX05PTkUpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzg6MTcuNTUyODcxNDY5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMxODM2MjAzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBTbWFsbCBDb2RlIENoYW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBleHBlcnQgZXllIGhvbmVzIGluIG9uIHRoZSBjb3JlIG9mIHRoZSBtb2RpZmljYXRpb246IGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBiZWluZyBhZGRlZCB0byB0aGUgYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlYCBmdW5jdGlvbidzIHN3aXRjaCBzdGF0ZW1lbnQuIEl0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIG1lYW5zIGl0J3MgbGltaXRlZCBpbiBzY29wZS4gSXQncyBjYWxsZWQgYnkgYHBoeWxpbmtfcGNzX25lZ19tb2RlYCBhbmQgYHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsYCwgc28gdGhvc2UgYXJlIHRoZSBrZXkgYXJlYXMgaW1wYWN0ZWQuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIFwiSXMgdGhpcyB3b3J0aCBteSB0aW1lIHRvIGZ1enosIG9yIGV2ZW4gbG9vayBpbnRvIGRlZXBseT9cIlxuXG5PbiB0aGUgc3VyZmFjZSwgaXQncyB0aW55OyBqdXN0IGFkZGluZyBhIGNvbnN0YW50IHRvIGEgc3dpdGNoLiBCdXQuLi4gZG9lcyBpdCBoYXZlICpmdW5jdGlvbmFsKiBpbXBhY3Q/IFRoZSBhbnN3ZXIgaXMgXCJ5ZXMuXCIgVGhpcyBzbWFsbCBjaGFuZ2UgKmRvZXMqIGNoYW5nZSB0aGUgcmV0dXJuIHZhbHVlIG9mIGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAgc3BlY2lmaWNhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYC4gSXQgZ29lcyBmcm9tIGEgZGVmYXVsdCB2YWx1ZSBvZiBgSU5CQU5EX05PTkVgIHRvIGBJTkJBTkRfQU5ZYCAob3Igd2hhdGV2ZXIgdGhlIG90aGVyIGNhc2VzIHJldHVybiwgZGVwZW5kaW5nIG9uIHRoZSBzd2l0Y2ggbG9naWMpLlxuXG5UaGVyZWZvcmUsIGxldCdzIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgc3dpdGNoIHN0YXRlbWVudCBpbiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgLiBJIG5lZWQgdG8gYXNzZXNzIHRoZSBjb250ZXh0IG9mIHRoZSBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NDksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzg6MjEuODcxMjM1Njc5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwNjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTAzOSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTAzOTpcXHRzdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbjEwNDA6XFx0e1xcbjEwNDE6XFx0XFx0c3dpdGNoIChpbnRlcmZhY2UpIHtcXG4xMDQyOlxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbjEwNDM6XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbjEwNDQ6XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbjEwNDU6XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVVTR01JSTpcXG4xMDQ2OlxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1VTWEdNSUk6XFxuMTA0NzpcXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdfUVhHTUlJOlxcbjEwNDg6XFx0XFx0XFx0LyogVGhlc2UgcHJvdG9jb2xzIGFyZSBkZXNpZ25lZCBmb3IgdXNlIHdpdGggYSBQSFkgd2hpY2hcXG4xMDQ5OlxcdFxcdFxcdCAqIGNvbW11bmljYXRlcyBpdHMgbmVnb3RpYXRpb24gcmVzdWx0IGJhY2sgdG8gdGhlIE1BQyB2aWFcXG4xMDUwOlxcdFxcdFxcdCAqIGluYmFuZCBjb21tdW5pY2F0aW9uLiBOb3RlOiB0aGVyZSBleGlzdCBQSFlzIHRoYXQgcnVuXFxuMTA1MTpcXHRcXHRcXHQgKiB3aXRoIFNHTUlJIGJ1dCBkbyBub3Qgc2VuZCB0aGUgaW5iYW5kIGRhdGEuXFxuMTA1MjpcXHRcXHRcXHQgKi9cXG4xMDUzOlxcdFxcdFxcdHJldHVybiBJTkJBTkRfQ0lTQ09fU0dNSUk7XFxuMTA1NDpcXHRcXG4xMDU1OlxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWDpcXG4xMDU2OlxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWDpcXG4xMDU3OlxcdFxcdFxcdC8qIDEwMDBiYXNlLVggaXMgZGVzaWduZWQgZm9yIHVzZSBtZWRpYS1zaWRlIGZvciBGaWJyZVxcbjEwNTg6XFx0XFx0XFx0ICogY29ubmVjdGlvbnMsIGFuZCB0aHVzIHRoZSBBdXRvbmVnIGJpdCBuZWVkcyB0byBiZVxcbjEwNTk6XFx0XFx0XFx0ICogdGFrZW4gaW50byBhY2NvdW50LiBXZSBhbHNvIGRvIHRoaXMgZm9yIDI1MDBiYXNlLVhcXG4xMDYwOlxcdFxcdFxcdCAqIGFzIHdlbGwsIGJ1dCBkcml2ZXJzIG1heSBub3Qgc3VwcG9ydCB0aGlzLCBzbyBtYXlcXG4xMDYxOlxcdFxcdFxcdCAqIG5lZWQgdG8gb3ZlcnJpZGUgdGhpcy5cXG4xMDYyOlxcdFxcdFxcdCAqL1xcbjEwNjM6XFx0XFx0XFx0cmV0dXJuIElOQkFORF9CQVNFWDtcXG4xMDY0OlxcdFxcbjEwNjU6XFx0XFx0ZGVmYXVsdDpcXG4xMDY2OlxcdFxcdFxcdHJldHVybiBJTkJBTkRfTk9ORTtcXG4xMDY3OlxcdFxcdH1cXG4xMDY4OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzg6MjEuODcxNDE4MDU5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE2NjE3MTk0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBGdW5jdGlvbmFsIENoYW5nZSBpbiBQSFkgTGluayBNYW5hZ2VtZW50KipcblxuT2theSwgc28gSSBzZWUgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGNvZGUgbW9kaWZpY2F0aW9uIGhlcmUuIFdlJ3JlIGNoYW5naW5nIHRoZSByZXR1cm4gdmFsdWUgZnJvbSBgSU5CQU5EX05PTkVgIHRvIGBJTkJBTkRfQ0lTQ09fU0dNSUlgLiBTZWVtcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYXQgZmFjZSB2YWx1ZS4gTm93LCB0aGUgcXVlc3Rpb24gaXMsIGhvdyBicm9hZGx5IGRvZXMgdGhpcyBpbXBhY3QgdGhlIHN5c3RlbT9cblxuU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVhY2ggb2YgdGhpcyBuZXcgY29kZSBwYXRoLiBUaGlzIGludm9sdmVzIGBwaHlsaW5rYCwgdGhlIFBIWSBsaW5rIG1hbmFnZW1lbnQgZnJhbWV3b3JrLiBTaW5jZSBgcGh5bGlua2AgaXMgcHJldHR5IHViaXF1aXRvdXMgYW5kIGxldmVyYWdlZCBhY3Jvc3MgYSBsb3Qgb2YgbmV0d29yayBkcml2ZXJzLCBJIG5lZWQgdG8gYXNjZXJ0YWluIGlmIHRoaXMgY2hhbmdlIGhhcyB0aGUgcG90ZW50aWFsIHRvIGNhdXNlIGlzc3VlcyBmdXJ0aGVyIGRvd24gdGhlIGxpbmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBleGFjdCBjb2RlIHBhdGhzIHRoYXQgYXJlIGFmZmVjdGVkLlxuXG5BcmUgd2UgbG9va2luZyBhdCB0aGlzIGltcGFjdGluZyBgcGh5bGlua19wY3NfbmVnX21vZGVgIG9yIHBvdGVudGlhbGx5IGBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbGA/IFRpbWUgdG8gZmlndXJlIG91dCB3aG8gaXMgY2FsbGluZyBgcGh5bGlua19wY3NfbmVnX21vZGVgIHRvIGVuc3VyZSBhIGZ1bGwgaW1wYWN0IGFzc2Vzc21lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MzQsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozODoyNi4wMzc1OTIyODRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU1MTEyNTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeWxpbmtfcGNzX25lZ19tb2RlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzAtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDcxOiAqIHBoeWxpbmtfcGNzX25lZ19tb2RlKCkgLSBoZWxwZXIgdG8gZGV0ZXJtaW5lIFBDUyBpbmJhbmQgbW9kZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA3Mi0gKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA4OS0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwOTA6c3RhdGljIHZvaWQgcGh5bGlua19wY3NfbmVnX21vZGUoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwOTEtXFx0XFx0XFx0XFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTEyNDA9c3RhdGljIHZvaWQgcGh5bGlua19tYWpvcl9jb25maWcoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIHJlc3RhcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEyNjctXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMjY4OlxcdHBoeWxpbmtfcGNzX25lZ19tb2RlKHBsLCBwY3MsIHN0YXRlLVxcdTAwM2VpbnRlcmZhY2UsIHN0YXRlLVxcdTAwM2VhZHZlcnRpc2luZyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMjY5LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMzc2PXN0YXRpYyBpbnQgcGh5bGlua19jaGFuZ2VfaW5iYW5kX2FkdmVydChzdHJ1Y3QgcGh5bGluayAqcGwpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEzODktXFx0LyogUmVjb21wdXRlIHRoZSBQQ1MgbmVnIG1vZGUgKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEzOTA6XFx0cGh5bGlua19wY3NfbmVnX21vZGUocGwsIHBsLVxcdTAwM2VwY3MsIHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5pbnRlcmZhY2UsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMzkxLVxcdFxcdFxcdCAgICAgcGwtXFx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzg6MjYuMTkyNzEzODFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzI2Nzk1MDk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFBoeWxpbmsgSW52ZXN0aWdhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gaG93IGBwaHlsaW5rYCBpcyB1c2VkIGFuZCBob3cgdG8gdGVzdCBpdC4gSSBzZWUgdGhhdCBib3RoIGBwaHlsaW5rX21ham9yX2NvbmZpZ2AgYW5kIGBwaHlsaW5rX2NoYW5nZV9pbmJhbmRfYWR2ZXJ0YCBjYWxsIGBwaHlsaW5rX3Bjc19uZWdfbW9kZWAuIGBwaHlsaW5rX21ham9yX2NvbmZpZ2AsIGluIHR1cm4sIGlzIHRyaWdnZXJlZCBieSBgcGh5bGlua19tYWNfY29uZmlnYC4gU28sIHRoYXQncyB0aGUgY29yZSBmbG93LlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IHdoaWNoIGRyaXZlcnMgcmVseSBvbiBgcGh5bGlua2A/IEkgaW5pdGlhbGx5IHRob3VnaHQgYHZpcnRpb19uZXRgIG1pZ2h0IGJlIGEgY29udGVuZGVyLCBidXQgbm9wZSwgdGhhdCdzIG5vdCB0aGUgY2FzZS4gT2theSwgd2hhdCBhYm91dCB2aXJ0dWFsIGludGVyZmFjZXM/IE5vLCBgdHVuYCBhbmQgYHZldGhgIGFyZW4ndCB1c2luZyBgcGh5bGlua2AgZWl0aGVyLiBUaGVuIEkgbG9va2VkIGF0IGBtYWNiYCwgYW5kIHllcywgdGhhdCBvbmUgdXNlcyBpdC4gQW5kIGBzdG1tYWNgPyBEZWZpbml0ZWx5IHVzZXMgYHBoeWxpbmtgIGFzIHdlbGwuXG5cblRoZSBnb2FsIGlzIHRvIGRldGVybWluZSBpZiBJIGNhbiB0cmlnZ2VyIGBwaHlsaW5rYCBsb2dpYyB1c2luZyBhIHZpcnR1YWwgb3IgZHVtbXkgZHJpdmVyIHNldHVwIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBJcyB0aGVyZSBhIGR1bW15IHBoeWxpbmsgZHJpdmVyPyBPciBwZXJoYXBzIGEgbmV0d29yayBkcml2ZXIgSSBjYW4gdXNlIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQ/XG5cbkxldCdzIHJ1bGUgb3V0IHNvbWUgcG90ZW50aWFsIGNhbmRpZGF0ZXMuIGBlMTAwMGVgIGFuZCBgaWdiYCBkb24ndCBsZXZlcmFnZSBgcGh5bGlua2AgZnJvbSB3aGF0IEkgY2FuIHNlZS4gSG93ZXZlciwgYHN0bW1hY2AgbWlnaHQgYmUgcHJvbWlzaW5nIHNpbmNlIGl0J3MgdXNlZCBpbiBzb21lIEFSTSBRRU1VIGluc3RhbmNlcy4gVGhhdCdzIGEgZGVmaW5pdGUgcG9zc2liaWxpdHkgZm9yIG15IHRlc3Qgc2V0dXAuIEkgc2hvdWxkIGV4cGxvcmUgdGhpcyBmdXJ0aGVyLlxuXG5BbmQgZmluYWxseSwgd2hhdCBhYm91dCBgbmV0ZGV2c2ltYD8gRG9lcyB0aGF0IHBsYXkgd2l0aCBgcGh5bGlua2A/IFRoYXQgd291bGQgYmUgYSBnb29kIHRvb2wgaWYgaXQgZG9lcy4gSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoYXQgb3B0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDU3LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM4OjMxLjUxOTUxMTU5OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU4NTg4ODksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeWxpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzg6MzEuNTY1Mzc4NzI3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTQwODA4MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhwbG9yaW5nIFBoeWxpbmsgRHJpdmVycyBmb3IgRnV6emluZyBPcHBvcnR1bml0aWVzKipcblxuT2theSwgbGV0J3Mgc2VlIGlmIHdlIGNhbiBpZGVudGlmeSBhbnkgb3RoZXIgbmV0d29yayBkcml2ZXJzIHRoYXQgbGV2ZXJhZ2UgdGhlIGBwaHlsaW5rYCBmcmFtZXdvcmssIGFuZCB0aGF0IG1pZ2h0IHByZXNlbnQgZ29vZCB0YXJnZXRzIGZvciBmdXp6aW5nLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgYGRyaXZlcnMvbmV0L2RzYS9gIGRpcmVjdG9yeSBzcHJpbmdzIHRvIG1pbmQgYXMgYSBsaWtlbHkgY2FuZGlkYXRlLCBzaW5jZSBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIHV0aWxpemVzIGBwaHlsaW5rYCBxdWl0ZSBleHRlbnNpdmVseS4gTm93LCB0aGUgcXVlc3Rpb24gYmVjb21lczogaG93IGNhbiB3ZSB0ZXN0IHRoaXM/IEkga25vdyB3ZSd2ZSBnb3QgYSBjb3VwbGUgb2Ygb3B0aW9uczogYGRzYV9sb29wYCBhbmQgYG5ldGRldnNpbWAuIExldCdzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgZHNhX2xvb3BgIGFuZCBzZWUgd2hhdCB0aGF0IG9mZmVycy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTEwMiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM4OjM0Ljk1OTQ2MjEwNVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUwNDk1MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5bGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0zMjE9c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X21heF9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHNhLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjc6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTMzND1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGRzYV9sb29wX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1MS1cXHQucG9ydF9tYXhfbXR1XFx0XFx0PSBkc2FfbG9vcF9wb3J0X21heF9tdHUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUyOlxcdC5waHlsaW5rX2dldF9jYXBzXFx0PSBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1My19O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozODozNS4wMDQ1MTczMzNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk2NDA4MzAyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUGh5bGluayBVc2FnZSBpbiB0aGUgS2VybmVsIE5ldHdvcmsgU3RhY2sqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBpbnRvIGhvdyBgcGh5bGlua2AgaXMgdXNlZCB3aXRoaW4gdGhlIG5ldHdvcmsgc3RhY2ssIHNwZWNpZmljYWxseSBpdHMgcmVsYXRpb25zaGlwIHdpdGggZGlmZmVyZW50IGRyaXZlcnMuIEkgc2VlIHRoYXQgYGRzYV9sb29wYCBleHBsaWNpdGx5IHVzZXMgYHBoeWxpbmtgIHdoaWNoIGlzIGV4cGVjdGVkIGFzIGl0J3MgYSBNQUMgZGV2aWNlLiBOb3csIEknbSBjaGVja2luZyB0byBzZWUgaWYgdGhpcyBpcyBjb25zaXN0ZW50LiBJIGtub3cgdGhhdCBgZHJpdmVycy9uZXQvZHVtbXkuY2AgZG9lc24ndCB1c2UgYHBoeWxpbmtgLCB0aGF0J3Mgc3RyYWlnaHRmb3J3YXJkLiBOb3csIGxldCdzIGNvbnNpZGVyIGBkcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmNgLiBUaGF0J3MgYSBQSFkgZHJpdmVyLCBub3QgYSBNQUMsIHNvIGl0IHdvdWxkbid0IGRpcmVjdGx5IGludGVyZmFjZSB3aXRoIGBwaHlsaW5rYCBpbiB0aGUgc2FtZSB3YXkuIFRoZSBwcmltYXJ5IHVzZSBjYXNlIG9mIGBwaHlsaW5rYCBhcHBlYXJzIHRvIGJlIGluIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gYSBNQUMgYW5kIGEgUEhZLlxuXG5UaGUgbmV4dCB0aGluZyB0byBpbnZlc3RpZ2F0ZSBpcyB3aGV0aGVyIG9yIG5vdCBgZHNhX2xvb3BgIGNvdWxkIGJlIHJlc3BvbnNpYmxlIGZvciB0cmlnZ2VyaW5nIGBwaHlsaW5rX21ham9yX2NvbmZpZ2AuIEknbGwgY29uZmlybSB0aGF0IERTQSBwb3J0IGJyaW5nLXVwIGNhbGxzIGBwaHlsaW5rX3N0YXJ0YC4gVGhpcyBtYWtlcyBzZW5zZSwgYXMgdGhhdCdzIHdoZXJlIHRoZSBNQUMtUEhZIHNldHVwIHdvdWxkIG9jY3VyLiBJIG5lZWQgdG8gZXhhbWluZSBgcGh5bGlua19zdGFydGAgZGlyZWN0bHkgdG8gdmVyaWZ5IHRoZSBmbG93IG9mIGNvbnRyb2wgYW5kIGRldGVybWluZSBob3cgdGhlIGNvbmZpZ3VyYXRpb24gYWN0dWFsbHkgZ2V0cyBpbXBsZW1lbnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY1NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozODozOC45Njg2MDI5NzVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MTQzMTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeWxpbmtfc3RhcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0MTU9c3RhdGljIGlycXJldHVybl90IHBoeWxpbmtfbGlua19oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0MjQtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNDI1OiAqIHBoeWxpbmtfc3RhcnQoKSAtIHN0YXJ0IGEgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQyNi0gKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQzMS0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0MzI6dm9pZCBwaHlsaW5rX3N0YXJ0KHN0cnVjdCBwaHlsaW5rICpwbClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0MzMte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDg3LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0ODg6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zdGFydCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDg5LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjg2PXZvaWQgcGh5bGlua19yZXN1bWUoc3RydWN0IHBoeWxpbmsgKnBsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzE2LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzE3OlxcdFxcdHBoeWxpbmtfc3RhcnQocGwpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjcxOC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQzOTE9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19yZXBsYXlfbGlua19iZWdpbik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQ0MDEtICpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQ0MDI6ICogVGhpcyBpcyBzaW1pbGFyIHRvIHBoeWxpbmtfc3RhcnQoKSwgZXhjZXB0IGl0IGRvZXMgbm90IGFsdGVyIHRoZSBzdGF0ZSBvZlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDQwMy0gKiB0aGUgcGh5bGliIFBIWS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzg6MzkuMDE1NzUxMjEzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MjM0Nzc3MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIFBIWSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgUEhZIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgaXMga2lja2VkIG9mZi4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiBgcGh5bGlua19zdGFydGAuIEknbSB0aGlua2luZyBpdCdzIGxpa2VseSByZXNwb25zaWJsZSBmb3IgZWl0aGVyIGNhbGxpbmcgYHBoeWxpbmtfbWFjX2luaXRpYWxfY29uZmlnYCBkaXJlY3RseSwgb3IgcGVyaGFwcyB0cmlnZ2VyaW5nIGEgZnVuY3Rpb24gdGhhdCAqdWx0aW1hdGVseSogbGVhZHMgdG8gdGhhdCBjb25maWd1cmF0aW9uIHN0ZXAuIEdpdmVuIHRoYXQgYHBoeWxpbmtfc3RhcnRgIHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgZW50cnkgcG9pbnQgZm9yIFBIWSBicmluZy11cCwgaXQgbWFrZXMgc2Vuc2UgdG8gc3RhcnQgdGhlIGludmVzdGlnYXRpb24gdGhlcmUuIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgbXkgaHlwb3RoZXNpcyBpcyBjb3JyZWN0IGJ5IGxvb2tpbmcgYXQgdGhlIGNvZGUuIFRpbWUgdG8gZGlnIGluIGFuZCB2ZXJpZnkgdGhlIGNvbnRyb2wgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU0NywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM4OjQxLjkzOTIzMTg1NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODY1MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNDMyLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNDMyOlxcdHZvaWQgcGh5bGlua19zdGFydChzdHJ1Y3QgcGh5bGluayAqcGwpXFxuMjQzMzpcXHR7XFxuMjQzNDpcXHRcXHRib29sIHBvbGwgPSBmYWxzZTtcXG4yNDM1OlxcdFxcbjI0MzY6XFx0XFx0QVNTRVJUX1JUTkwoKTtcXG4yNDM3OlxcdFxcbjI0Mzg6XFx0XFx0cGh5bGlua19pbmZvKHBsLCBcXFwiY29uZmlndXJpbmcgZm9yICVzLyVzIGxpbmsgbW9kZVxcXFxuXFxcIixcXG4yNDM5OlxcdFxcdFxcdCAgICAgcGh5bGlua19hbl9tb2RlX3N0cihwbC1cXHUwMDNlcmVxX2xpbmtfYW5fbW9kZSksXFxuMjQ0MDpcXHRcXHRcXHQgICAgIHBoeV9tb2RlcyhwbC1cXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlKSk7XFxuMjQ0MTpcXHRcXG4yNDQyOlxcdFxcdC8qIEFsd2F5cyBzZXQgdGhlIGNhcnJpZXIgb2ZmICovXFxuMjQ0MzpcXHRcXHRpZiAocGwtXFx1MDAzZW5ldGRldilcXG4yNDQ0OlxcdFxcdFxcdG5ldGlmX2NhcnJpZXJfb2ZmKHBsLVxcdTAwM2VuZXRkZXYpO1xcbjI0NDU6XFx0XFxuMjQ0NjpcXHRcXHRwbC1cXHUwMDNlcGNzX3N0YXRlID0gUENTX1NUQVRFX1NUQVJUSU5HO1xcbjI0NDc6XFx0XFxuMjQ0ODpcXHRcXHQvKiBBcHBseSB0aGUgbGluayBjb25maWd1cmF0aW9uIHRvIHRoZSBNQUMgd2hlbiBzdGFydGluZy4gVGhpcyBhbGxvd3NcXG4yNDQ5OlxcdFxcdCAqIGEgZml4ZWQtbGluayB0byBzdGFydCB3aXRoIHRoZSBjb3JyZWN0IHBhcmFtZXRlcnMsIGFuZCBhbHNvXFxuMjQ1MDpcXHRcXHQgKiBlbnN1cmVzIHRoYXQgd2Ugc2V0IHRoZSBhcHByb3ByaWF0ZSBhZHZlcnRpc2VtZW50IGZvciBTZXJkZXMgbGlua3MuXFxuMjQ1MTpcXHRcXHQgKlxcbjI0NTI6XFx0XFx0ICogUmVzdGFydCBhdXRvbmVnb3RpYXRpb24gaWYgdXNpbmcgODAyLjN6IHRvIGVuc3VyZSB0aGF0IHRoZSBsaW5rXFxuMjQ1MzpcXHRcXHQgKiBwYXJhbWV0ZXJzIGFyZSBwcm9wZXJseSBuZWdvdGlhdGVkLiAgVGhpcyBpcyBuZWNlc3NhcnkgZm9yIERTQVxcbjI0NTQ6XFx0XFx0ICogc3dpdGNoZXMgdXNpbmcgODAyLjN6IG5lZ290aWF0aW9uIHRvIGVuc3VyZSB0aGV5IHNlZSBvdXIgbW9kZXMuXFxuMjQ1NTpcXHRcXHQgKi9cXG4yNDU2OlxcdFxcdHBoeWxpbmtfbWFjX2luaXRpYWxfY29uZmlnKHBsLCB0cnVlKTtcXG4yNDU3OlxcdFxcbjI0NTg6XFx0XFx0cGwtXFx1MDAzZXBjc19zdGF0ZSA9IFBDU19TVEFURV9TVEFSVEVEO1xcbjI0NTk6XFx0XFxuMjQ2MDpcXHRcXHRwaHlsaW5rX2VuYWJsZV9hbmRfcnVuX3Jlc29sdmUocGwsIFBIWUxJTktfRElTQUJMRV9TVE9QUEVEKTtcXG4yNDYxOlxcdFxcbjI0NjI6XFx0XFx0aWYgKHBsLVxcdTAwM2VjZmdfbGlua19hbl9tb2RlID09IE1MT19BTl9GSVhFRCBcXHUwMDI2XFx1MDAyNiBwbC1cXHUwMDNlbGlua19ncGlvKSB7XFxuMjQ2MzpcXHRcXHRcXHRpbnQgaXJxID0gZ3Bpb2RfdG9faXJxKHBsLVxcdTAwM2VsaW5rX2dwaW8pO1xcbjI0NjQ6XFx0XFxuMjQ2NTpcXHRcXHRcXHRpZiAoaXJxIFxcdTAwM2UgMCkge1xcbjI0NjY6XFx0XFx0XFx0XFx0aWYgKCFyZXF1ZXN0X2lycShpcnEsIHBoeWxpbmtfbGlua19oYW5kbGVyLFxcbjI0Njc6XFx0XFx0XFx0XFx0XFx0XFx0IElSUUZfVFJJR0dFUl9SSVNJTkcgfFxcbjI0Njg6XFx0XFx0XFx0XFx0XFx0XFx0IElSUUZfVFJJR0dFUl9GQUxMSU5HLFxcbjI0Njk6XFx0XFx0XFx0XFx0XFx0XFx0IFxcXCJuZXRkZXYgbGlua1xcXCIsIHBsKSlcXG4yNDcwOlxcdFxcdFxcdFxcdFxcdHBsLVxcdTAwM2VsaW5rX2lycSA9IGlycTtcXG4yNDcxOlxcdFxcdFxcdFxcdGVsc2VcXG4yNDcyOlxcdFxcdFxcdFxcdFxcdGlycSA9IDA7XFxuMjQ3MzpcXHRcXHRcXHR9XFxuMjQ3NDpcXHRcXHRcXHRpZiAoaXJxIFxcdTAwM2M9IDApXFxuMjQ3NTpcXHRcXHRcXHRcXHRwb2xsID0gdHJ1ZTtcXG4yNDc2OlxcdFxcdH1cXG4yNDc3OlxcdFxcbjI0Nzg6XFx0XFx0aWYgKHBsLVxcdTAwM2VjZmdfbGlua19hbl9tb2RlID09IE1MT19BTl9GSVhFRClcXG4yNDc5OlxcdFxcdFxcdHBvbGwgfD0gcGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlcG9sbF9maXhlZF9zdGF0ZTtcXG4yNDgwOlxcdFxcbjI0ODE6XFx0XFx0aWYgKHBvbGwpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM4OjQxLjkzOTQxOTYzNVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjA2NDAzNjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipJbml0aWFsIFBoeWxpbmsgTUFDIENvbmZpZ3VyYXRpb24gLSBUaW1lIHRvIERpZyBJbioqXG5cbk9rYXksIHNvIGBwaHlsaW5rX21hY19pbml0aWFsX2NvbmZpZ2AgaGFzIGJlZW4gY2FsbGVkLiBUaGF0J3MgdGhlIGVudHJ5IHBvaW50IHdlJ3JlIGludGVyZXN0ZWQgaW4sIHRoZSBwbGFjZSB3aGVyZSB0aGUgTUFDJ3MgaW5pdGlhbCBjb25maWd1cmF0aW9uIGZvciB0aGUgUEhZIGxpbmsgZ2V0cyBzZXQgdXAuIE15IGV4cGVydCBpbnR1aXRpb24gdGVsbHMgbWUgdGhpcyBpcyB3aGVyZSB0aGUgY29yZSBwYXJhbWV0ZXJzIGFyZSB1c3VhbGx5IGluaXRpYWxpemVkIOKAkyBhdXRvLW5lZ290aWF0aW9uLCBzcGVlZC9kdXBsZXggc2V0dGluZ3MsIHBvc3NpYmx5IHNvbWUgYmFzaWMgZXJyb3IgY29ycmVjdGlvbiBzdHVmZiwgdGhlIHdob2xlIHNoZWJhbmcuIExldCdzIHNlZSB3aGF0IHRoZXkndmUgZG9uZSB3aXRoIGl0LiBJJ2xsIG5lZWQgdG8gbWV0aWN1bG91c2x5IGNoZWNrIHdoYXQgdGhlIGNhbGxpbmcgYXJndW1lbnRzIGFyZSwgYW5kIHRoZW4gSSdsbCBleGFtaW5lIHRoZSBmdW5jdGlvbidzIGxvZ2ljIGxpbmUgYnkgbGluZS4gSeKAmWxsIGJlIGxvb2tpbmcgZm9yIGFueSBwb3RlbnRpYWwgZm9yIGZ1dHVyZSBpc3N1ZXMgaW4gdGhlIHNldHVwLCBmb2N1c2luZyBvbiBhc3BlY3RzIHRoYXQgY291bGQgaW50ZXJhY3Qgc3RyYW5nZWx5IHdpdGggY2VydGFpbiB1bmNvbW1vbiBQSFlzLCBvciB0aGF0IGRlcGVuZCB0b28gaGVhdmlseSBvbiBhc3N1bXB0aW9ucyBhYm91dCBzcGVjaWZpYyBsaW5rIHBhcnRuZXIgYmVoYXZpb3IuIFRpbWUgdG8gZGVsdmUgaW50byB0aGUgY29kZSFcblxuXG4iLCJJbnB1dFRva2VucyI6NzUzOCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzg6NDUuMTQ1ODI3MDg2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjA3NDE5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rX21hY19pbml0aWFsX2NvbmZpZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTQ0Mj1zdGF0aWMgdm9pZCBwaHlsaW5rX2dldF9maXhlZF9zdGF0ZShzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE0NTQtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNDU1OnN0YXRpYyB2b2lkIHBoeWxpbmtfbWFjX2luaXRpYWxfY29uZmlnKHN0cnVjdCBwaHlsaW5rICpwbCwgYm9vbCBmb3JjZV9yZXN0YXJ0KVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTQ1Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0MzI9dm9pZCBwaHlsaW5rX3N0YXJ0KHN0cnVjdCBwaHlsaW5rICpwbClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ1NS1cXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0NTY6XFx0cGh5bGlua19tYWNfaW5pdGlhbF9jb25maWcocGwsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ1Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjY4Nj12b2lkIHBoeWxpbmtfcmVzdW1lKHN0cnVjdCBwaHlsaW5rICpwbClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjcxMS1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI3MTI6XFx0XFx0cGh5bGlua19tYWNfaW5pdGlhbF9jb25maWcocGwsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjcxMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzY2OD1zdGF0aWMgdm9pZCBwaHlsaW5rX3NmcF9zZXRfY29uZmlnKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgbG9uZyAqc3VwcG9ydGVkLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNzAxLVxcdFxcdFxcdFxcdCBcXHUwMDI2cGwtXFx1MDAzZXBoeWxpbmtfZGlzYWJsZV9zdGF0ZSkpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNzAyOlxcdFxcdHBoeWxpbmtfbWFjX2luaXRpYWxfY29uZmlnKHBsLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNzAzLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzg6NDUuMTkxOTEwMTg1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MDY0NjQ4MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIGBwaHlsaW5rX21hY19pbml0aWFsX2NvbmZpZ2AqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0J3MgaGFwcGVuaW5nIHdpdGggYHBoeWxpbmtfbWFjX2luaXRpYWxfY29uZmlnYC4gR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtIGFyY2hpdGVjdHVyZSwgSSdtIGFzc3VtaW5nIHRoaXMgY29uZmlndXJhdGlvbiBmaWxlIChvciBwZXJoYXBzIHNjcmlwdCwgZGVwZW5kaW5nIG9uIHRoZSBpbXBsZW1lbnRhdGlvbikgaXMgYWJzb2x1dGVseSBjcnVjaWFsIGZvciBpbml0aWFsaXppbmcgdGhlIE1BQyAoTWVkaWEgQWNjZXNzIENvbnRyb2xsZXIpIGxheWVyIHdpdGhpbiB0aGUgUEhZIGxpbmsgZXN0YWJsaXNobWVudCBwcm9jZXNzLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmU6XG5cbiogICAqKldoYXQgZXhhY3RseSBkb2VzIGl0IGNvbmZpZ3VyZT8qKiBTcGVjaWZpY2FsbHksIEknbSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBjbG9jayBzZXR0aW5ncywgcG93ZXIgbWFuYWdlbWVudCBwYXJhbWV0ZXJzLCBsYW5lIG9yZGVyaW5nLCBlcXVhbGl6YXRpb24gc2V0dGluZ3MsIGFuZCBhbnkgc3BlY2lmaWMgUEhZLXNwZWNpZmljIG9wdGltaXphdGlvbnMuIEkga25vdyB3aGVyZSB0byBsb29rIGZvciB0aG9zZS5cbiogICAqKkhvdyBpcyBpdCBiZWluZyBsb2FkZWQvYXBwbGllZD8qKiBJcyBpdCBhIHN0YXRpYyBmaWxlLCBvciBkeW5hbWljYWxseSBnZW5lcmF0ZWQ/IElzIGl0IGJlaW5nIGFwcGxpZWQgYXQgYm9vdCwgZHVyaW5nIGxpbmsgdHJhaW5pbmcsIG9yIG9uIHNwZWNpZmljIGV2ZW50cz8gVGhlIHRpbWluZyBpcyBrZXkuXG4qICAgKipXaGF0IGFyZSB0aGUgZGVwZW5kZW5jaWVzPyoqIERvZXMgdGhpcyBjb25maWcgZmlsZSByZWx5IG9uIGFueSBvdGhlciBzeXN0ZW0gb3IgZHJpdmVyIGxldmVsIGNvbmZpZ3VyYXRpb25zLCBsaWtlIGRldmljZSB0cmVlIGVudHJpZXMsIHBsYXRmb3JtLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcywgb3IgcmVnaXN0ZXIgc2V0dGluZ3M/IFRoZXNlIGRlcGVuZGVuY2llcyBhcmUgY3JpdGljYWwgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZS5cbiogICAqKkFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGFyZWFzIGZvciBvcHRpbWl6YXRpb24/KiogSSdtIGdvaW5nIHRvIGxvb2sgZm9yIGFyZWFzIEkga25vdyBJJ3ZlIGVuY291bnRlcmVkIGJlZm9yZSBhcyBib3R0bGVuZWNrcyAocG90ZW50aWFsbHkgY29uZmxpY3Rpbmcgc2V0dGluZ3Mgb3IgcmVkdW5kYW50IGNvbmZpZ3VyYXRpb25zKS5cblxuSSBhbHNvIG5lZWQgdG8gY2hlY2sgZm9yIGFueSB2ZW5kb3Itc3BlY2lmaWMgbnVhbmNlcyBvciB1bmRvY3VtZW50ZWQgcGFyYW1ldGVycyB0aGF0IG1pZ2h0IGJlIGx1cmtpbmcgd2l0aGluIHRoaXMgY29uZmlndXJhdGlvbi4gVGltZSB0byBkaWcgaW4hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyNDAsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozODo0OC42OTgzNzgzNThaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc0MjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQ1NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTQ1NTpcXHRzdGF0aWMgdm9pZCBwaHlsaW5rX21hY19pbml0aWFsX2NvbmZpZyhzdHJ1Y3QgcGh5bGluayAqcGwsIGJvb2wgZm9yY2VfcmVzdGFydClcXG4xNDU2OlxcdHtcXG4xNDU3OlxcdFxcdHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgbGlua19zdGF0ZTtcXG4xNDU4OlxcdFxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHkgPSBwbC1cXHUwMDNlcGh5ZGV2O1xcbjE0NTk6XFx0XFxuMTQ2MDpcXHRcXHRzd2l0Y2ggKHBsLVxcdTAwM2VyZXFfbGlua19hbl9tb2RlKSB7XFxuMTQ2MTpcXHRcXHRjYXNlIE1MT19BTl9QSFk6XFxuMTQ2MjpcXHRcXHRcXHRsaW5rX3N0YXRlID0gcGwtXFx1MDAzZXBoeV9zdGF0ZTtcXG4xNDYzOlxcdFxcdFxcdGJyZWFrO1xcbjE0NjQ6XFx0XFxuMTQ2NTpcXHRcXHRjYXNlIE1MT19BTl9GSVhFRDpcXG4xNDY2OlxcdFxcdFxcdHBoeWxpbmtfZ2V0X2ZpeGVkX3N0YXRlKHBsLCBcXHUwMDI2bGlua19zdGF0ZSk7XFxuMTQ2NzpcXHRcXHRcXHRicmVhaztcXG4xNDY4OlxcdFxcbjE0Njk6XFx0XFx0Y2FzZSBNTE9fQU5fSU5CQU5EOlxcbjE0NzA6XFx0XFx0XFx0bGlua19zdGF0ZSA9IHBsLVxcdTAwM2VsaW5rX2NvbmZpZztcXG4xNDcxOlxcdFxcdFxcdGlmIChsaW5rX3N0YXRlLmludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpXFxuMTQ3MjpcXHRcXHRcXHRcXHRsaW5rX3N0YXRlLnBhdXNlID0gTUxPX1BBVVNFX05PTkU7XFxuMTQ3MzpcXHRcXHRcXHRicmVhaztcXG4xNDc0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozODo0OC42OTg2NTM5NzhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkyMTA1MjI1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBhY2NvdW50OlxuXG4qKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBDYWxsKipcblxuSG1tLCBpbnRlcmVzdGluZy4gSSBzZWUgYSBjYWxsIHRvIGBwaHlsaW5rX21ham9yX2NvbmZpZ2AuIFJpZ2h0IG9mZiB0aGUgYmF0LCB0aGF0J3Mgd2hhdCBjYXVnaHQgbXkgZXllLiBUaGUgYHBoeWxpbmtgIHByZWZpeCBzdWdnZXN0cyB0aGlzIGZ1bmN0aW9uIGlzIGludGltYXRlbHkgaW52b2x2ZWQgd2l0aCwgbGlrZWx5LCB0aGUgcGh5c2ljYWwgbGF5ZXIgbGluaywgcHJvYmFibHkgd2l0aGluIGEgUEhZIG1hbmFnZW1lbnQgb3IgaW5pdGlhbGl6YXRpb24gY29udGV4dC4gXCJNYWpvciBjb25maWdcIiBpbXBsaWVzIHRoaXMgaXNuJ3QganVzdCBhIHNpbXBsZSByZWdpc3RlciB3cml0ZTsgaXQgbGlrZWx5IG9yY2hlc3RyYXRlcyBhIHNpZ25pZmljYW50IHBhcnQgb2YgdGhlIFBIWSdzIG9wZXJhdGlvbmFsIHBhcmFtZXRlcnMsIG1heWJlIGV2ZW4gaXRzIHN0YXRlIG1hY2hpbmUgc2V0dXAuIFRoaXMgY291bGQgaW52b2x2ZSBjbG9jayBjb25maWd1cmF0aW9uLCBlcXVhbGl6YXRpb24gc2V0dGluZ3MsIHNpZ25hbCBjb25kaXRpb25pbmcg4oCTIGEgd2hvbGUgaG9zdCBvZiBsb3ctbGV2ZWwgZGV0YWlscy4gTmVlZCB0byBkaWcgaW4gYW5kIHVuZGVyc3RhbmQgd2hhdCB0aGUgZnVuY3Rpb24gZG9lcyBmdXJ0aGVyLCBvciB3aGVyZSBpdCdzIGNhbGxlZCBmcm9tLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTI4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozODo1MS42MTk3MDk5NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTgyNTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNDc1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNDc1OlxcdFxcdGRlZmF1bHQ6IC8qIGNhbid0IGhhcHBlbiAqL1xcbjE0NzY6XFx0XFx0XFx0cmV0dXJuO1xcbjE0Nzc6XFx0XFx0fVxcbjE0Nzg6XFx0XFxuMTQ3OTpcXHRcXHRsaW5rX3N0YXRlLmxpbmsgPSBmYWxzZTtcXG4xNDgwOlxcdFxcbjE0ODE6XFx0XFx0cGh5bGlua19hcHBseV9tYW51YWxfZmxvdyhwbCwgXFx1MDAyNmxpbmtfc3RhdGUpO1xcbjE0ODI6XFx0XFx0aWYgKHBoeSlcXG4xNDgzOlxcdFxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBoeS1cXHUwMDNlbG9jayk7XFxuMTQ4NDpcXHRcXHRwaHlsaW5rX21ham9yX2NvbmZpZyhwbCwgZm9yY2VfcmVzdGFydCwgXFx1MDAyNmxpbmtfc3RhdGUpO1xcbjE0ODU6XFx0XFx0aWYgKHBoeSlcXG4xNDg2OlxcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cGh5LVxcdTAwM2Vsb2NrKTtcXG4xNDg3OlxcdH1cXG4xNDg4OlxcdFxcbjE0ODk6XFx0c3RhdGljIGNvbnN0IGNoYXIgKnBoeWxpbmtfcGF1c2VfdG9fc3RyKGludCBwYXVzZSlcXG4xNDkwOlxcdHtcXG4xNDkxOlxcdFxcdHN3aXRjaCAocGF1c2UgXFx1MDAyNiBNTE9fUEFVU0VfVFhSWF9NQVNLKSB7XFxuMTQ5MjpcXHRcXHRjYXNlIE1MT19QQVVTRV9UWCB8IE1MT19QQVVTRV9SWDpcXG4xNDkzOlxcdFxcdFxcdHJldHVybiBcXFwicngvdHhcXFwiO1xcbjE0OTQ6XFx0XFx0Y2FzZSBNTE9fUEFVU0VfVFg6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM4OjUxLjYyMDAxMDE4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NzQyMjQzMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJhY2luZyB0aGUgUEhZIEludGVyZmFjZSBNb2RlKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUgYW5kIHRyeWluZyB0byB1bmRlcnN0YW5kIGhvdyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgY29tZXMgaW50byBwbGF5LiBGcm9tIHdoYXQgSSBjYW4gc2VlLCB0aGUgcHJvY2VzcyBzdGFydHMgd2l0aCBhIGNhbGwgdG8gYHBoeWxpbmtfbWFqb3JfY29uZmlnYCwgd2hpY2ggdGhlbiBjYWxscyBgcGh5bGlua19wY3NfbmVnX21vZGVgLCB3aGljaCwgZmluYWxseSwgY2FsbHMgYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlYC4gVGhhdCB0ZWxscyBtZSBkZWZpbml0aXZlbHkgdGhhdCBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgICppcyogcmVhY2hhYmxlIGR1cmluZyBwaHlsaW5rIGluc3RhbmNlIHN0YXJ0dXAsIHdoaWNoIGlzIGdvb2QuXG5cbkJ1dCBteSByZWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGl0c2VsZiBpcyBhIHBvdGVudGlhbCB2YWx1ZSB0aGVyZS4gSSBrbm93IGl0J3MgYW4gZW51bSB2YWx1ZSwgc28gdGhhdCdzIGEgY2hlY2ssIGJ1dCB0aGF0IGRvZXNuJ3QgdGVsbCBtZSBpZiBpdCAqY2FuKiBiZSB1c2VkLlxuXG5UaGUgbmV4dCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgd2hldGhlciB3ZSBjYW4gYWN0dWFsbHkgKmNyZWF0ZSogYSBwaHlsaW5rIGluc3RhbmNlIHVzaW5nIHRoYXQgbW9kZS4gSSBuZWVkIHRvIHRyYWNlIHRoZSB1c2FnZSBvZiBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaW4gdGhlIGNvZGUsIHNlZSB3aGVyZSBpdCBpcyBhc3NpZ25lZCwgYW5kIGhvdyBpdCdzIHVzZWQuIExldCdzIHN0YXJ0IHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDU1LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzg6NTUuNDk0MjM3NTAyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjYzOTQ2NDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0PTIzOD1Tb21lIG9mIHRoZSBpbnRlcmZhY2UgbW9kZXMgYXJlIGRlc2NyaWJlZCBiZWxvdzpcXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0LTMyNS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdDozMjY6YGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYGBcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC0zMjctICAgIFRoaXMgaXMgdGhlIFBlbnRhIFNHTUlJIG1vZGUsIGl0IGlzIHNpbWlsYXIgdG8gUVNHTUlJIGJ1dCBpdCBjb21iaW5lcyA1XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYz0xNTk9aW50IHBoeV9pbnRlcmZhY2VfbnVtX3BvcnRzKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0yMDEtXFx0XFx0cmV0dXJuIDQ7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM6MjAyOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0yMDMtXFx0XFx0cmV0dXJuIDU7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYz0yOTQ9dW5zaWduZWQgbG9uZyBwaHlfY2Fwc19mcm9tX2ludGVyZmFjZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMzEwLVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jOjMxMTpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMzEyLVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjM4PXN0YXRpYyBpbnQgcGh5bGlua19pbnRlcmZhY2VfbWF4X3NwZWVkKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1OS1cXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2MDpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjEtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz03NzQ9c3RhdGljIGludCBwaHlsaW5rX3BhcnNlX21vZGUoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MDgtXFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4MDk6XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODEwLVxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTAzOT1zdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQyLVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTA0MzpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQ0LVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz00OTA9c3RhdGljIGludCBxY2E4MDd4X3BoeV9wYWNrYWdlX3Byb2JlX29uY2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01NDktXFx0XFx0aWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTA6XFx0XFx0XFx0XFx0cGh5X21vZGVzKFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkpKSlcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTUxOlxcdFxcdFxcdHByaXYtXFx1MDAzZXBhY2thZ2VfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU1Mi1cXHRcXHRlbHNlIGlmICghc3RyY2FzZWNtcChwYWNrYWdlX21vZGVfbmFtZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz01NjI9c3RhdGljIGludCBxY2E4MDd4X3BoeV9wYWNrYWdlX2NvbmZpZ19pbml0X29uY2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01ODUtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU4NjpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4Ny1cXHRkZWZhdWx0Olxcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaD01Mz1leHRlcm4gY29uc3QgaW50IHBoeV9iYXNpY19wb3J0c19hcnJheVszXTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtODktICogQFBIWV9JTlRFUkZBQ0VfTU9ERV9NT0NBOiBNdWx0aW1lZGlhIG92ZXIgQ29heFxcbmluY2x1ZGUvbGludXgvcGh5Lmg6OTA6ICogQFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6IFBlbnRhIFNHTUlJXFxuaW5jbHVkZS9saW51eC9waHkuaC05MS0gKiBAUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTogUXVhZCBTR01JSVxcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaD0xMTQ9dHlwZWRlZiBlbnVtIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtMTMyLVxcdFBIWV9JTlRFUkZBQ0VfTU9ERV9NT0NBLFxcbmluY2x1ZGUvbGludXgvcGh5Lmg6MTMzOlxcdFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUksXFxuaW5jbHVkZS9saW51eC9waHkuaC0xMzQtXFx0UEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSSxcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5Lmg9MjEwPXN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqcGh5X21vZGVzKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTI0OC1cXHRcXHRyZXR1cm4gXFxcIm1vY2FcXFwiO1xcbmluY2x1ZGUvbGludXgvcGh5Lmg6MjQ5OlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTI1MC1cXHRcXHRyZXR1cm4gXFxcInBzZ21paVxcXCI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM4OjU3LjE1ODE4OTIyMVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzgzMzAxNDU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4cGxvcmluZyBQSFkgSW50ZXJmYWNlIE1vZGUgQ29udHJvbCBpbiB0aGUgUGh5bGluayBGcmFtZXdvcmsqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgcWNhODA3eC5jYCBhbmQgc2VlIHRoYXQgaXQncyB1c2luZyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAuIEJ1dCBteSBicmFpbiBpbW1lZGlhdGVseSBraWNrcyBpbiB3aXRoLCBcIldhaXQsIHBoeWxpbmsgaXMgc3VwcG9zZWQgdG8gYmUgZ2VuZXJpYy4gQ2FuIEkgYWN0dWFsbHkgKmNvbnRyb2wqIHRoaXMgaW50ZXJmYWNlIG1vZGUgc29tZWhvdywgeW91IGtub3csIHBva2UgYXQgaXQgd2l0aG91dCByZWx5aW5nIHNvbGVseSBvbiB0aGUgZGV2aWNlIHRyZWUgb3IgdGhlIGRyaXZlciBkaXJlY3RseT9cIiBUaGUgdHlwaWNhbCBzZXR1cCBoYXMgdGhpcyBkZXRlcm1pbmVkIGJ5IHRoZSBkZXZpY2UgdHJlZSBvciB0aGUgZHJpdmVyLCB3aGljaCBmZWVscyBhIGJpdCBsaW1pdGluZyBmb3IgdGVzdGluZyBvciBleHBlcmltZW50YXRpb24uXG5cbk15IGZpcnN0IHRob3VnaHQgaXMsIGNhbiBJIHJlYWNoIGluIHNvbWVob3cgdXNpbmcgbmV0bGluaywgc3lzZnMsIG9yIG1heWJlIGFuIGlvY3RsPyBNYXliZSBJIGNhbiByaWcgdXAgYSB3YXkgdG8gdHJpZ2dlciBpdCBieSB1c2luZyBzb21lIG9mIHRob3NlIGhhbmR5IHZpcnR1YWwgaW50ZXJmYWNlcyBsaWtlIGBuZXRkZXZzaW1gLCBgZHNhX2xvb3BgLCBgZHVtbXlgLCBvciBgdmV0aGAuIFRoYXQgd291bGQgYmUgc2xpY2shXG5cbkhvbGQgb24gdGhvdWdoLCB0aGlua2luZyB0aGlzIHRocm91Z2gsIGBkc2FfbG9vcGAuLi4gZG9lc24ndCBzZWVtIGxpa2UgaXQgYWN0dWFsbHkgKmFsbG93cyogc2V0dGluZyB0aGUgaW50ZXJmYWNlIG1vZGUgYXJiaXRyYXJpbHkuIFNlZW1zIGxpa2UgaXQncyBoYXJkY29kZWQgb3IsIGV2ZW4gbW9yZSBsaWtlbHksIGJlaW5nIHNldCBieSB0aGUgRFNBIGNvcmUgaXRzZWxmLiBCbGFzdC4gQW5kIGFjdHVhbGx5LCB0aGlua2luZyBiYWNrLCBJIGRvbid0IHRoaW5rIGBkc2FfbG9vcGAgZXZlbiBtYWtlcyB1c2Ugb2YgdGhlIGRldmljZSB0cmVlLlxuXG5Pa2F5LCBsZXQncyBzdGVwIGJhY2sgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBgZHNhX2xvb3BfcGh5bGlua19nZXRfY2Fwc2AgZnVuY3Rpb24gYW5kIHNlZSBob3cgaXQgaXMgd29ya2luZywgbWF5YmUgdGhhdCB3aWxsIGhlbHAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgaW50ZXJmYWNlIG1vZGUgY2FwYWJpbGl0aWVzIGFyZSBiZWluZyBoYW5kbGVkLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjE1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM5OjAxLjk0MTQ5MzQ2NloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDQxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMjYsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzMjY6XFx0c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHNhLCBpbnQgcG9ydCxcXG4gMzI3OlxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbiAzMjg6XFx0e1xcbiAzMjk6XFx0XFx0Yml0bWFwX2ZpbGwoY29uZmlnLVxcdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcywgUEhZX0lOVEVSRkFDRV9NT0RFX01BWCk7XFxuIDMzMDpcXHRcXHRfX2NsZWFyX2JpdChQSFlfSU5URVJGQUNFX01PREVfTkEsIGNvbmZpZy1cXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xcbiAzMzE6XFx0XFx0Y29uZmlnLVxcdTAwM2VtYWNfY2FwYWJpbGl0aWVzID0gfjA7XFxuIDMzMjpcXHR9XFxuIDMzMzpcXHRcXG4gMzM0OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xcbiAzMzU6XFx0XFx0LmdldF90YWdfcHJvdG9jb2xcXHQ9IGRzYV9sb29wX2dldF9wcm90b2NvbCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzk6MDEuOTQxNTY0OTQ2WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk0ODQ0MDQ4NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IFBIWSBJbnRlcmZhY2UgTW9kZSBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBgZHNhX2xvb3BgIHN1cHBvcnRzIGFsbCBpbnRlcmZhY2VzLCB0aGF0J3MgZ29vZC4gQW5kIGBiaXRtYXBfZmlsbGAgY292ZXJzIHRoZSBmdWxsIHJhbmdlIG9mIGBQSFlfSU5URVJGQUNFX01PREVfTUFYYC4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBob3cgdGhlIGludGVyZmFjZSBtb2RlIGdldHMgc2V0IG9uIGEgRFNBIHBvcnQuIENhbiB3ZSBtYW5pcHVsYXRlIHRoYXQgdmlhIGBldGh0b29sYCBvciBgbmV0bGlua2A/IFRoYXQncyB0aGUgY3J1eCBvZiB0aGlzLlxuXG5UaGlzIG9uZS1saW5lIHBhdGNoIGp1c3QgYWRkcyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgdG8gdGhlIHN3aXRjaC4gSSB3YXMgaW5pdGlhbGx5IGhlc2l0YW50IHRvIGRlZGljYXRlIHRpbWUgdG8gZnV6emluZyBhIG9uZS1saW5lIGNoYW5nZSwgYnV0IHRoaXMgaXMgaGl0dGluZyB0aGUgbmV0d29ya2luZyBjb3JlLCBzcGVjaWZpY2FsbHkgYHBoeWxpbmtgLCBhbmQgYWZmZWN0aW5nIGl0cyBjb3JlIGZ1bmN0aW9uYWxpdHkuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc28gaXQgZGVzZXJ2ZXMgYSBsb29rLiBJZiBpdCdzIHJlYWNoYWJsZSwgd2Ugc2hvdWxkIGhpdCBpdCB3aXRoIGZ1enppbmcuXG5cblRoZSB0YXJnZXQgZnVuY3Rpb24gaXMgYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlYC4gSXQncyBzdGF0aWMsIHNvIHdlIG5lZWQgdG8gc2VlIGlmIHdlIGNhbiByZWFjaCBpdCBmcm9tIGFuIGV4cG9ydGVkIHN5bWJvbC4gSXRzIGNhbGxlcnMgYXJlIGBwaHlsaW5rX3Bjc19uZWdfbW9kZWAgYW5kIGBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbGAuIExvb2tpbmcgdXBzdHJlYW0sIGBwaHlsaW5rX3Bjc19uZWdfbW9kZWAgaXMgY2FsbGVkIGJ5IGBwaHlsaW5rX21ham9yX2NvbmZpZ2AgYW5kIGBwaHlsaW5rX2NoYW5nZV9pbmJhbmRfYWR2ZXJ0YC4gYHBoeWxpbmtfbWFqb3JfY29uZmlnYCBpcyBjYWxsZWQgYnkgYHBoeWxpbmtfbWFjX2luaXRpYWxfY29uZmlnYCwgYHBoeWxpbmtfbWFjX2NvbmZpZ2AsIGFuZCBgcGh5bGlua19tYWNfbGlua191cGAuXG5cbmBwaHlsaW5rX21hY19pbml0aWFsX2NvbmZpZ2AgaXMgY2FsbGVkIGJ5IGBwaHlsaW5rX3N0YXJ0YCwgYHBoeWxpbmtfcmVzdW1lYCwgYW5kIGBwaHlsaW5rX3NmcF9zZXRfY29uZmlnYC4gQW5kLCBjcnVjaWFsbHksIGBwaHlsaW5rX3N0YXJ0YCBpcyBleHBvcnRlZCBhbmQgdXNlZCBieSBudW1lcm91cyBkcml2ZXJzLiBCaW5nby4gU28gYHBoeWxpbmtfc3RhcnRgIHNlZW1zIHRvIGJlIGFuIGlkZWFsIHN5bWJvbCB0byBmb2N1cyBvbi4gSXQncyBleHBvcnRlZCwgc28gaXQncyBkaXJlY3RseSByZWFjaGFibGUuIFdlIGNhbiBpZ25vcmUgdGhlIHN0YXRpYyBuYXR1cmUgb2YgdGhlIGludGVybWVkaWF0ZSBmdW5jdGlvbnMuXG5cbkp1c3QgdG8gY29uZmlybTogYHBoeWxpbmtfcGNzX25lZ19tb2RlYCBpcyBzdGF0aWMuIGBwaHlsaW5rX21hY19jb25maWdgIGlzIHN0YXRpYy4gYHBoeWxpbmtfc3RhcnRgIGlzIGV4cG9ydGVkLiBgcGh5bGlua19jcmVhdGVgIGlzIGV4cG9ydGVkLiBgcGh5bGlua19jb25uZWN0X21hY2AgaXMgZXhwb3J0ZWQuIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAgaXMgZXhwb3J0ZWQhIFRoYXTigJlzIGtleS4gTm93LCAqY2FuKiB3ZSBjaGFuZ2UgdGhlIGludGVyZmFjZSBtb2RlIHdpdGggZXRodG9vbD8gYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBzZWVtcyB0byBiZSB0aGUgcGxhY2UgdG8gY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTM3LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzk6MTEuNDI1OTczMTM4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTUwMTU2MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5NTc9c3RhdGljIGJvb2wgcGh5bGlua192YWxpZGF0ZV9wY3NfaW5iYW5kX2F1dG9uZWcoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTc3LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjk3ODogKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCgpIC0gc2V0IHRoZSBsaW5rIHNldHRpbmdzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTc5LSAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTgxLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjk4MjppbnQgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQoc3RydWN0IHBoeWxpbmsgKnBsLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk4My1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICprc2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTQ0LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxNDU6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE0Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzk6MTEuNzIwOTk2NzU5WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODIwNDE2NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIEludGVyZmFjZSBNb2RlIE1vZGlmaWNhdGlvbiB3aXRoIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGlzIHRvIGFsdGVyIHRoZSBpbnRlcmZhY2UgbW9kZSwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBnb2VzIHN0cmFpZ2h0IHRvIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAuIEdpdmVuIG15IGJhY2tncm91bmQsIEknbSBuYXR1cmFsbHkgYXNzdW1pbmcgdGhpcyBmdW5jdGlvbiBpcyBhIGxpa2VseSBjYW5kaWRhdGUuIEl0J3MgdGhlIHN0YW5kYXJkIGVudHJ5IHBvaW50LCByaWdodD8gV2XigJlyZSBsb29raW5nIHRvIG1vZGlmeSB0aGUgbGluayBzZXR0aW5ncyB2aWEgYGV0aHRvb2xgIGFuZCB0aGlzIGlzIHRoZSBkaXJlY3QgcGF0aCBmb3IgdGhhdCBraW5kIG9mIGNoYW5nZS4gSSdtIG1lbnRhbGx5IHBhcnNpbmcgdGhlIGltcGxpY2F0aW9uczogYXJlIHRoZSBhcmd1bWVudHMgY29ycmVjdCwgZG8gSSBoYXZlIHRoZSBhcHByb3ByaWF0ZSBzZXR0aW5ncyBpbiB0aGUga2VybmVsLCBpcyB0aGlzIHRoZSByaWdodCBjYWxsIHNpdGUgaW4gbXkgY3VycmVudCBjb250ZXh0PyBUaW1lIHRvIGNoZWNrIHRoZSBsb2dzLCBtYXliZSBzdGFydCBkaWdnaW5nIGludG8gdGhhdCBmdW5jdGlvbuKAmXMgc291cmNlIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgUEhZIGFuZCBuZXR3b3JrIGRyaXZlcnMsIGp1c3QgdG8gYmUgc3VyZS4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgaXQgaGFzIHRoZSBjYXBhYmlsaXRpZXMgSSByZXF1aXJlLCBvciBpZiBJIG5lZWQgdG8gbG9vayBkZWVwZXIgaW50byBvdGhlciBmdW5jdGlvbnMgdG8gbWFrZSB0aGUgbmVlZGVkIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMjkwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzk6MTUuNDAzMDQwOTQ4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5ODA4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI5ODIsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI5ODI6XFx0aW50IHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHN0cnVjdCBwaHlsaW5rICpwbCxcXG4yOTgzOlxcdFxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmtzZXQpXFxuMjk4NDpcXHR7XFxuMjk4NTpcXHRcXHRfX0VUSFRPT0xfREVDTEFSRV9MSU5LX01PREVfTUFTSyhzdXBwb3J0KTtcXG4yOTg2OlxcdFxcdGNvbnN0IHN0cnVjdCBsaW5rX2NhcGFiaWxpdGllcyAqYztcXG4yOTg3OlxcdFxcdHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgY29uZmlnO1xcbjI5ODg6XFx0XFxuMjk4OTpcXHRcXHRBU1NFUlRfUlROTCgpO1xcbjI5OTA6XFx0XFxuMjk5MTpcXHRcXHRpZiAocGwtXFx1MDAzZXBoeWRldikge1xcbjI5OTI6XFx0XFx0XFx0c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgcGh5X2tzZXQgPSAqa3NldDtcXG4yOTkzOlxcdFxcbjI5OTQ6XFx0XFx0XFx0bGlua21vZGVfYW5kKHBoeV9rc2V0LmxpbmtfbW9kZXMuYWR2ZXJ0aXNpbmcsXFxuMjk5NTpcXHRcXHRcXHRcXHQgICAgIHBoeV9rc2V0LmxpbmtfbW9kZXMuYWR2ZXJ0aXNpbmcsXFxuMjk5NjpcXHRcXHRcXHRcXHQgICAgIHBsLVxcdTAwM2VzdXBwb3J0ZWQpO1xcbjI5OTc6XFx0XFxuMjk5ODpcXHRcXHRcXHQvKiBXZSBjYW4gcmVseSBvbiBwaHlsaWIgZm9yIHRoaXMgdXBkYXRlOyB3ZSBhbHNvIGRvIG5vdCBuZWVkXFxuMjk5OTpcXHRcXHRcXHQgKiB0byB1cGRhdGUgdGhlIHBsLVxcdTAwM2VsaW5rX2NvbmZpZyBzZXR0aW5nczpcXG4zMDAwOlxcdFxcdFxcdCAqIC0gdGhlIGNvbmZpZ3VyYXRpb24gcmV0dXJuZWQgdmlhIGtzZXR0aW5nc19nZXQoKSB3aWxsIGNvbWVcXG4zMDAxOlxcdFxcdFxcdCAqICAgZnJvbSBwaHlsaWIgd2hlbmV2ZXIgYSBQSFkgaXMgcHJlc2VudC5cXG4zMDAyOlxcdFxcdFxcdCAqIC0gbGlua19jb25maWcuaW50ZXJmYWNlIHdpbGwgYmUgdXBkYXRlZCBieSB0aGUgUEhZIGNhbGxpbmdcXG4zMDAzOlxcdFxcdFxcdCAqICAgYmFjayB2aWEgcGh5bGlua19waHlfY2hhbmdlKCkgYW5kIGEgc3Vic2VxdWVudCByZXNvbHZlLlxcbjMwMDQ6XFx0XFx0XFx0ICogLSBpbml0aWFsIGxpbmsgY29uZmlndXJhdGlvbiBmb3IgUEhZIG1vZGUgY29tZXMgZnJvbSB0aGVcXG4zMDA1OlxcdFxcdFxcdCAqICAgbGFzdCBwaHkgc3RhdGUgdXBkYXRlZCB2aWEgcGh5bGlua19waHlfY2hhbmdlKCkuXFxuMzAwNjpcXHRcXHRcXHQgKiAtIG90aGVyIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyAoZS5nLiBwYXVzZSBtb2RlcykgYXJlXFxuMzAwNzpcXHRcXHRcXHQgKiAgIHBlcmZvcm1lZCBkaXJlY3RseSB2aWEgcGh5bGliLlxcbjMwMDg6XFx0XFx0XFx0ICogLSBpZiBpbiBpbi1iYW5kIG1vZGUgd2l0aCBhIFBIWSwgdGhlIGxpbmsgY29uZmlndXJhdGlvblxcbjMwMDk6XFx0XFx0XFx0ICogICBpcyBwYXNzZWQgb24gdGhlIGxpbmsgZnJvbSB0aGUgUEhZLCBhbmQgYWxsIG9mXFxuMzAxMDpcXHRcXHRcXHQgKiAgIGxpbmtfY29uZmlnLntzcGVlZCxkdXBsZXgsYW5fZW5hYmxlZCxwYXVzZX0gYXJlIG5vdCB1c2VkLlxcbjMwMTE6XFx0XFx0XFx0ICogLSB0aGUgb25seSBwb3NzaWJsZSB1c2Ugd291bGQgYmUgbGlua19jb25maWcuYWR2ZXJ0aXNpbmdcXG4zMDEyOlxcdFxcdFxcdCAqICAgcGF1c2UgbW9kZXMgd2hlbiBpbiAxMDAwYmFzZS1YIG1vZGUgd2l0aCBhIFBIWSwgYnV0IGluXFxuMzAxMzpcXHRcXHRcXHQgKiAgIHRoZSBwcmVzZW5jZSBvZiBhIFBIWSwgdGhpcyBzaG91bGQgbm90IGJlIGNoYW5nZWQgYXMgdGhhdFxcbjMwMTQ6XFx0XFx0XFx0ICogICBzaG91bGQgYmUgZGV0ZXJtaW5lZCBmcm9tIHRoZSBtZWRpYSBzaWRlIGFkdmVydGlzZW1lbnQuXFxuMzAxNTpcXHRcXHRcXHQgKi9cXG4zMDE2OlxcdFxcdFxcdHJldHVybiBwaHlfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHBsLVxcdTAwM2VwaHlkZXYsIFxcdTAwMjZwaHlfa3NldCk7XFxuMzAxNzpcXHRcXHR9XFxuMzAxODpcXHRcXG4zMDE5OlxcdFxcdGNvbmZpZyA9IHBsLVxcdTAwM2VsaW5rX2NvbmZpZztcXG4zMDIwOlxcdFxcdC8qIE1hc2sgb3V0IHVuc3VwcG9ydGVkIGFkdmVydGlzZW1lbnRzICovXFxuMzAyMTpcXHRcXHRsaW5rbW9kZV9hbmQoY29uZmlnLmFkdmVydGlzaW5nLCBrc2V0LVxcdTAwM2VsaW5rX21vZGVzLmFkdmVydGlzaW5nLFxcbjMwMjI6XFx0XFx0XFx0ICAgICBwbC1cXHUwMDNlc3VwcG9ydGVkKTtcXG4zMDIzOlxcdFxcbjMwMjQ6XFx0XFx0LyogRklYTUU6IHNob3VsZCB3ZSByZWplY3QgYXV0b25lZyBpZiBwaHkvbWFjIGRvZXMgbm90IHN1cHBvcnQgaXQ/ICovXFxuMzAyNTpcXHRcXHRzd2l0Y2ggKGtzZXQtXFx1MDAzZWJhc2UuYXV0b25lZykge1xcbjMwMjY6XFx0XFx0Y2FzZSBBVVRPTkVHX0RJU0FCTEU6XFxuMzAyNzpcXHRcXHRcXHQvKiBBdXRvbmVnb3RpYXRpb24gZGlzYWJsZWQsIHNlbGVjdCBhIHN1aXRhYmxlIHNwZWVkIGFuZFxcbjMwMjg6XFx0XFx0XFx0ICogZHVwbGV4LlxcbjMwMjk6XFx0XFx0XFx0ICovXFxuMzAzMDpcXHRcXHRcXHRjID0gcGh5X2NhcHNfbG9va3VwKGtzZXQtXFx1MDAzZWJhc2Uuc3BlZWQsIGtzZXQtXFx1MDAzZWJhc2UuZHVwbGV4LFxcbjMwMzE6XFx0XFx0XFx0XFx0XFx0ICAgIHBsLVxcdTAwM2VzdXBwb3J0ZWQsIGZhbHNlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzk6MTUuNDAzMjQwNTQ4WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NDUwMTU4MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgdGhleSB3ZXJlIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIEludGVyZmFjZSBDb25maWd1cmF0aW9uIEFmdGVyIFBoeWxpbmsgU2V0dGluZ3MqKlxuXG5IbW0sIGl0J3MgYmVjb21pbmcgY2xlYXIgdGhhdCBgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRgIGlzbid0IHRvdWNoaW5nIHRoZSBgY29uZmlnLmludGVyZmFjZWAgc2V0dGluZywgd2hpY2ggaXMgYSBiaXQgdW5leHBlY3RlZC4gVXN1YWxseSwgdGhlIGludGVyZmFjZSBtb2RlIOKAkyB3aGV0aGVyIGl0J3MgY29wcGVyLCBvcHRpY2FsLCBvciBzb21ldGhpbmcgZWxzZSDigJMgaXMgbmFpbGVkIGRvd24gZHVyaW5nIHBoeWxpbmsgY3JlYXRpb24gb3IsIG1vcmUgZHluYW1pY2FsbHksIHdoZW4gYW4gU0ZQIG1vZHVsZSBnZXRzIGhvdC1wbHVnZ2VkLiBTbywgSSBuZWVkIHRvIHRyYWNlIHdoZXJlIHRoYXQgYGNvbmZpZy5pbnRlcmZhY2VgIHZhbHVlICppcyogYmVpbmcgc2V0LCBhbmQsIGlmIG5vdCwgd2h5LiBNeSBpbnN0aW5jdCBpcyB0aGF0IHRoaXMgaXMgcG90ZW50aWFsbHkgaW4gdGhlIGBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbGAgZnVuY3Rpb24gYW5kIGl0J3MgbWlzc2luZyB0aGUgZXhwZWN0ZWQgZnVuY3Rpb25hbGl0eSwgb3IgdGhlcmUncyBhIHByb2JsZW0gaW4gdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBmdW5jdGlvbnMgYXJlIGNhbGxlZC4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBTRlAgY29uZmlndXJhdGlvbiBjb2RlIG5vdy4gSSdsbCBzdGFydCB3aXRoIGEgcmV2aWV3IG9mIGBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbGAgdG8gc2VlIHdoYXQgSSdtIG1pc3NpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NDU3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozOToxOS4wNDgyNTg2ODhaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMzg3Mzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNzA1PXN0YXRpYyBpbnQgcGh5bGlua19zZnBfY29uZmlnX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM3NTUtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNzU2OnN0YXRpYyBpbnQgcGh5bGlua19zZnBfY29uZmlnX29wdGljYWwoc3RydWN0IHBoeWxpbmsgKnBsKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzc1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM4NDg9c3RhdGljIGludCBwaHlsaW5rX3NmcF9tb2R1bGVfaW5zZXJ0KHZvaWQgKnVwc3RyZWFtLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zODY1LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mzg2NjpcXHRyZXR1cm4gcGh5bGlua19zZnBfY29uZmlnX29wdGljYWwocGwpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzg2Ny19XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM4NzY9c3RhdGljIGludCBwaHlsaW5rX3NmcF9tb2R1bGVfc3RhcnQodm9pZCAqdXBzdHJlYW0pXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM4OTEtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozODkyOlxcdHJldHVybiBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbChwbCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zODkzLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzk6MTkuMTAxNjUxOTI2WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5MDExOTkzODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgYHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsYCBDYWxsKipcblxuT2theSwgc28gYHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsYCBnZXRzIHRyaWdnZXJlZCB3aGVuIGFuIFNGUCBtb2R1bGUgaXMgaW5zZXJ0ZWQuIEkgaW5pdGlhbGx5IHRob3VnaHQgdGhpcyBtaWdodCBiZSB0cmlnZ2VyZWQgdGhyb3VnaCBzeXNmcyBvciBzb21lIHNvcnQgb2Ygc2ltdWxhdGlvbiwgYnV0IFNGUCBtb2R1bGVzIGFyZSB0eXBpY2FsbHkgaGFyZHdhcmUtYmFzZWQsIHJpZ2h0PyBIb3dldmVyLCBJJ20gcmVtaW5kZWQgdGhhdCBgcGh5bGlua19zdGFydGAgaXMgY2FsbGVkIGJ5IG1hbnkgZGlmZmVyZW50IGRyaXZlcnMsIG5vdCBqdXN0IFNGUC1zcGVjaWZpYyBjb2RlLiBUaGlzIGZ1bmN0aW9uIGlzIG1vcmUgZ2VuZXJhbC1wdXJwb3NlLlxuXG5Ob3csIGlmIGEgZHJpdmVyIHV0aWxpemVzIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCwgaXQnbGwgZW5kIHVwIGhpdHRpbmcgdGhpcyBzcGVjaWZpYyBjb2RlIHBhdGguIFRoZSBxdWVzdGlvbiBpczogZG8gYW55IGRyaXZlcnMgYWN0dWFsbHkgdXNlIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYD8gQSBxdWljayBzY2FuIHNob3dzIHRoYXQgYHFjYTgwN3guY2AgZG9lcyB1c2UgaXQuIEhtbSwgaXMgYHFjYTgwN3guY2AgcmVhY2hhYmxlPyBJdCBpcyBhIFBIWSBkcml2ZXIsIHdoaWNoIGlzIHByb21pc2luZy5cblxuTGV0J3Mgc2VlIGlmIEkgY2FuIHBvdGVudGlhbGx5IHRlc3QgYHFjYTgwN3guY2Agd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudC4gSXQncyBhIFF1YWxjb21tIFBIWSBkcml2ZXIsIGFuZCB0aG9zZSBhcmUgdHlwaWNhbGx5IGJvdW5kIHZpYSB0aGUgTURJTyBidXMuIEkgY2FuIHNpbXVsYXRlIHRoZSBNRElPIGJ1cyB3aXRoIGBtZGlvLW1vY2t1cGAsIGBtZGlvLWdwaW9gLCBvciBldmVuIGBkc2FfbG9vcGAuIEFjdHVhbGx5LCB0aGlua2luZyBtb3JlIGFib3V0IGl0LCBgZHNhX2xvb3BgIHVzZXMgZWl0aGVyIGBmaXhlZC1saW5rYCBvciBzb21ldGhpbmcgc2ltaWxhciwgcmlnaHQ/XG5cbkkgc2hvdWxkIHByb2JhYmx5IGJyb2FkZW4gbXkgc2VhcmNoLiBCZXNpZGVzIGBxY2E4MDd4LmNgLCBhcmUgdGhlcmUgYW55ICpvdGhlciogZHJpdmVycyBJJ20gZm9yZ2V0dGluZyB0aGF0IHV0aWxpemUgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgPyBJIHNob3VsZCBtYWtlIHN1cmUgSSBoYXZlIGEgY29tcHJlaGVuc2l2ZSBsaXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTExOCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozOToyNS4wMDI4NTM0ODhaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMTk3MDUxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYz0xNTk9aW50IHBoeV9pbnRlcmZhY2VfbnVtX3BvcnRzKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0yMDEtXFx0XFx0cmV0dXJuIDQ7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM6MjAyOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0yMDMtXFx0XFx0cmV0dXJuIDU7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYz0yOTQ9dW5zaWduZWQgbG9uZyBwaHlfY2Fwc19mcm9tX2ludGVyZmFjZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMzEwLVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jOjMxMTpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMzEyLVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjM4PXN0YXRpYyBpbnQgcGh5bGlua19pbnRlcmZhY2VfbWF4X3NwZWVkKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1OS1cXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2MDpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjEtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz03NzQ9c3RhdGljIGludCBwaHlsaW5rX3BhcnNlX21vZGUoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MDgtXFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4MDk6XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODEwLVxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTAzOT1zdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQyLVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTA0MzpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQ0LVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz00OTA9c3RhdGljIGludCBxY2E4MDd4X3BoeV9wYWNrYWdlX3Byb2JlX29uY2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01NDktXFx0XFx0aWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTA6XFx0XFx0XFx0XFx0cGh5X21vZGVzKFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkpKSlcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTUxOlxcdFxcdFxcdHByaXYtXFx1MDAzZXBhY2thZ2VfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU1Mi1cXHRcXHRlbHNlIGlmICghc3RyY2FzZWNtcChwYWNrYWdlX21vZGVfbmFtZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz01NjI9c3RhdGljIGludCBxY2E4MDd4X3BoeV9wYWNrYWdlX2NvbmZpZ19pbml0X29uY2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01ODUtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU4NjpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4Ny1cXHRkZWZhdWx0OlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozOToyNS4xMzQ4MzY1MjRaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAzOTMzODY5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBBdHRhY2sgU3VyZmFjZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHFjYTgwN3guY2AgZHJpdmVyIGFuZCBpdCBzZWVtcyBsaWtlIGl0J3MgdGhlIG9ubHkgb25lIGRpcmVjdGx5IHV0aWxpemluZyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAuIEJ1dCB3YWl0IGEgc2Vjb25kLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nLi4uIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBjYW4gKmFsc28qIGJlIGRlZmluZWQgd2l0aGluIGEgZGV2aWNlIHRyZWUsIGFuZCB0aGF0J3MgaW50ZXJlc3RpbmcuIEknbSB3b25kZXJpbmcgaWYgSSBjYW4gZ2V0IHN5emthbGxlciB0byBpbmplY3QgYSBjdXN0b20gbm9kZSBpbnRvIHRoZSBkZXZpY2UgdHJlZSBkaXJlY3RseS4gUHJvYmFibHkgbm90LCBzeXprYWxsZXIgZG9lc24ndCB1c3VhbGx5IGRvIGR5bmFtaWMgZGV2aWNlIHRyZWUgbWFuaXB1bGF0aW9uLCBidXQgSSBtaWdodCBiZSBhYmxlIHRvIGxldmVyYWdlIGFuIGV4aXN0aW5nIG9uZSBvciBwZXJoYXBzIHRyeSB3aXRoIHZpcnR1YWwgZHJpdmVycy5cblxuQWxyaWdodCwgYmFjayB0byB0aGUgZGV2aWNlIHRyZWXigKYgYHBoeWxpbmtfcGFyc2VfbW9kZWAgaXMgcmVzcG9uc2libGUgZm9yIHBhcnNpbmcgdGhlIG1vZGUgZnJvbSB0aGUgZGV2aWNlIHRyZWUgaXRzZWxmLiBIbW0sIHRoaXMgaXMgZ2V0dGluZyBpbnRyaWd1aW5nLi4uIENvdWxkIEkgcG90ZW50aWFsbHkgdHJpZ2dlciB0aGlzIHBhcnNpbmcgdGhyb3VnaCB0aGUgYG5ldGxpbmtgIGludGVyZmFjZSBzb21laG93PyBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBQSFkgbW9kZXMgYXJlIGJlaW5nIHV0aWxpemVkLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byB0aG9yb3VnaGx5IGV4YW1pbmUgYHBoeWxpbmtfY3JlYXRlYCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGhvdyB0aGlzIGFsbCBmaXRzIHRvZ2V0aGVyIGFuZCB3aGVyZSB0aGUgdnVsbmVyYWJsZSBzcG90IG1pZ2h0IGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjcxNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozOTozMC4xNzQxNzc1NDJaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTMxNDY4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rX2NyZWF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NTE2PXN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9tYWNfYW5kX3BjcyhzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTUzMS1cXHRpZiAocGNzKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo1MzI6XFx0XFx0LyogVGhlIFBDUywgaWYgcHJlc2VudCwgbXVzdCBiZSBzZXR1cCBiZWZvcmUgcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNTMzLVxcdFxcdCAqIGhhcyBiZWVuIGNhbGxlZC4gSWYgdGhlIG9wcyBpcyBub3QgaW5pdGlhbGlzZWQsIHByaW50IGFuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTEwMzk9c3RhdGljIGVudW0gaW5iYW5kX3R5cGUgcGh5bGlua19nZXRfaW5iYW5kX3R5cGUocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA3MS0gKiBwaHlsaW5rX3Bjc19uZWdfbW9kZSgpIC0gaGVscGVyIHRvIGRldGVybWluZSBQQ1MgaW5iYW5kIG1vZGVcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwNzI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDczLSAqIEBwY3M6IGEgcG9pbnRlciB0byBcXHUwMDI2c3RydWN0IHBoeWxpbmtfcGNzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE3Njk9c3RhdGljIGludCBwaHlsaW5rX3JlZ2lzdGVyX3NmcChzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3OTMtICogcGh5bGlua19zZXRfZml4ZWRfbGluaygpIC0gc2V0IHRoZSBmaXhlZCBsaW5rXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNzk0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc5NS0gKiBAc3RhdGU6IGEgcG9pbnRlciB0byBhIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE4MzE9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zZXRfZml4ZWRfbGluayk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4MzMtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODM0OiAqIHBoeWxpbmtfY3JlYXRlKCkgLSBjcmVhdGUgYSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODM1LSAqIEBjb25maWc6IGEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IFxcdTAwMjZzdHJ1Y3QgcGh5bGlua19jb25maWdcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg0OC0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4NDk6c3RydWN0IHBoeWxpbmsgKnBoeWxpbmtfY3JlYXRlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg1MC1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTkzNi19XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTM3OkVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfY3JlYXRlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MzgtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NDAtICogcGh5bGlua19kZXN0cm95KCkgLSBjbGVhbnVwIGFuZCBkZXN0cm95IHRoZSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTQxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk0Mi0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xOTU3PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZGVzdHJveSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjAtICogcGh5bGlua19leHBlY3RzX3BoeSgpIC0gRGV0ZXJtaW5lIGlmIHBoeWxpbmsgZXhwZWN0cyBhIHBoeSB0byBiZSBhdHRhY2hlZFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTk2MTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjItICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjIwNj1zdGF0aWMgaW50IHBoeWxpbmtfYXR0YWNoX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyMjYtICogcGh5bGlua19jb25uZWN0X3BoeSgpIC0gY29ubmVjdCBhIFBIWSB0byB0aGUgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjIyNzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyMjgtICogQHBoeTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlfZGV2aWNlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMjYwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfY29ubmVjdF9waHkpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjYzLSAqIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKSAtIGNvbm5lY3QgdGhlIFBIWSBzcGVjaWZpZWQgaW4gdGhlIERUIG1vZGUuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjY0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI2NS0gKiBAZG46IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZGV2aWNlX25vZGUuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNzk9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19vZl9waHlfY29ubmVjdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyODItICogcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QoKSAtIGNvbm5lY3QgdGhlIFBIWSBzcGVjaWZpZWQgaW4gdGhlIGZ3bm9kZS5cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyODM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjg0LSAqIEBmd25vZGU6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZndub2RlX2hhbmRsZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjMzOD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDItICogICBpbnN0YW5jZS5cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIzNDM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzQ0LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzNzM9c3RhdGljIHZvaWQgcGh5bGlua19saW5rX2NoYW5nZWQoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIHVwLCBjb25zdCBjaGFyICp3aGF0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzgyLSAqIHBoeWxpbmtfbWFjX2NoYW5nZSgpIC0gbm90aWZ5IHBoeWxpbmsgb2YgYSBjaGFuZ2UgaW4gTUFDIHN0YXRlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzgzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM4NC0gKiBAdXA6IGluZGljYXRlcyB3aGV0aGVyIHRoZSBsaW5rIGlzIGN1cnJlbnRseSB1cC5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjQxNT1zdGF0aWMgaXJxcmV0dXJuX3QgcGh5bGlua19saW5rX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQyNS0gKiBwaHlsaW5rX3N0YXJ0KCkgLSBzdGFydCBhIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0MjY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDI3LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0ODg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zdGFydCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0OTEtICogcGh5bGlua19zdG9wKCkgLSBzdG9wIGEgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQ5MjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0OTMtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjUyMj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N0b3ApO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTI1LSAqIHBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2soKSAtIGJsb2NrIFBIWSBhYmlsaXR5IHRvIHN0b3AgcmVjZWl2ZSBjbG9jayBpbiBMUElcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI1MjY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTI3LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1NTE9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19yeF9jbGtfc3RvcF9ibG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NTQtICogcGh5bGlua19yeF9jbGtfc3RvcF91bmJsb2NrKCkgLSB1bmJsb2NrIFBIWSBhYmlsaXR5IHRvIHN0b3AgcmVjZWl2ZSBjbG9ja1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjU1NTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NTYtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjU5Mz1zdGF0aWMgYm9vbCBwaHlsaW5rX3BoeV9wbV9zcGVlZF9jdHJsKHN0cnVjdCBwaHlsaW5rICpwbClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjYwMC0gKiBwaHlsaW5rX3N1c3BlbmQoKSAtIGhhbmRsZSBhIG5ldHdvcmsgZGV2aWNlIHN1c3BlbmQgZXZlbnRcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2MDE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjAyLSAqIEBtYWNfd29sOiB0cnVlIGlmIHRoZSBNQUMgbmVlZHMgdG8gcmVjZWl2ZSBwYWNrZXRzIGZvciBXYWtlLW9uLUxhblxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjUyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3VzcGVuZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2NTUtICogcGh5bGlua19wcmVwYXJlX3Jlc3VtZSgpIC0gcHJlcGFyZSB0byByZXN1bWUgYSBuZXR3b3JrIGRldmljZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjY1NjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2NTctICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjY3Nz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3ByZXBhcmVfcmVzdW1lKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY4MC0gKiBwaHlsaW5rX3Jlc3VtZSgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2UgcmVzdW1lIGV2ZW50XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjgxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY4Mi0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNzIwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcmVzdW1lKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjcyMy0gKiBwaHlsaW5rX2V0aHRvb2xfZ2V0X3dvbCgpIC0gZ2V0IHRoZSB3YWtlIG9uIGxhbiBwYXJhbWV0ZXJzIGZvciB0aGUgUEhZXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzI0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjcyNS0gKiBAd29sOiBhIHBvaW50ZXIgdG8gXFx1MDAyNnN0cnVjdCBldGh0b29sX3dvbGluZm8gdG8gaG9sZCB0aGUgcmVhZCBwYXJhbWV0ZXJzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI3NTc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2dldF93b2wpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzYwLSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfd29sKCkgLSBzZXQgd2FrZSBvbiBsYW4gcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjc2MTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3NjItICogQHdvbDogYSBwb2ludGVyIHRvIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF93b2xpbmZvIGZvciB0aGUgZGVzaXJlZCBwYXJhbWV0ZXJzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI4ODk9c3RhdGljIHZvaWQgcGh5bGlua19nZXRfa3NldHRpbmdzKGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTA0LSAqIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3NfZ2V0KCkgLSBnZXQgdGhlIGN1cnJlbnQgbGluayBzZXR0aW5nc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjkwNTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5MDYtICogQGtzZXQ6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyB0byBob2xkIGxpbmsgc2V0dGluZ3NcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjk1Nz1zdGF0aWMgYm9vbCBwaHlsaW5rX3ZhbGlkYXRlX3Bjc19pbmJhbmRfYXV0b25lZyhzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5NzgtICogcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQoKSAtIHNldCB0aGUgbGluayBzZXR0aW5nc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjk3OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5ODAtICogQGtzZXQ6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyBmb3IgdGhlIGRlc2lyZWQgbW9kZXNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzE0NT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNDgtICogcGh5bGlua19ldGh0b29sX253YXlfcmVzZXQoKSAtIHJlc3RhcnQgbmVnb3RpYXRpb25cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxNDk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTUwLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMxNzA9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX253YXlfcmVzZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTczLSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSgpIC0gZ2V0IHRoZSBjdXJyZW50IHBhdXNlIHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxNzQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTc1LSAqIEBwYXVzZTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzE4Nj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X3BhdXNlcGFyYW0pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTg5LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSgpIC0gc2V0IHRoZSBjdXJyZW50IHBhdXNlIHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxOTA6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTkxLSAqIEBwYXVzZTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI3Mj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMjc2LSAqICAgY291bnRlclxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzI3NzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKCkuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMjc4LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMyOTU9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19nZXRfZWVlX2Vycik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyOTgtICogcGh5bGlua19ldGh0b29sX2dldF9lZWUoKSAtIHJlYWQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzI5OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMDAtICogQGVlZTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX2tlZWUgZm9yIHRoZSByZWFkIHBhcmFtZXRlcnNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzMyMT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X2VlZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMjQtICogcGh5bGlua19ldGh0b29sX3NldF9lZWUoKSAtIHNldCB0aGUgZW5lcmd5IGVmZmljaWVudCBldGhlcm5ldCBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMzI1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzMyNi0gKiBAZWVlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIGRlc2lyZWQgcGFyYW1ldGVyc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNDk1PXN0YXRpYyBpbnQgcGh5bGlua19taWlfd3JpdGUoc3RydWN0IHBoeWxpbmsgKnBsLCB1bnNpZ25lZCBpbnQgcGh5X2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTEzLSAqIHBoeWxpbmtfbWlpX2lvY3RsKCkgLSBnZW5lcmljIG1paSBpb2N0bCBpbnRlcmZhY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM1MTQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTE1LSAqIEBpZnI6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgaWZyZXEgZm9yIHNvY2tldCBpb2N0bHNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzU4OD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9pb2N0bCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1OTItICogICBsaW5rIHBhcnRuZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTkzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzU5NC0gKiBAc3luYzogcGVyZm9ybSBhY3Rpb24gc3luY2hyb25vdXNseVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNjEzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3BlZWRfZG93bik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM2MTctICogICBwaHlsaW5rX3NwZWVkX2Rvd24oKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzYxODogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM2MTktICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDM3MD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9jNDVfcGNzX2dldF9zdGF0ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzNzQtICpcXHRcXHRcXHRcXHQgd2hpY2ggbG9zZXMgc3RhdGVcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQzNzU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzc2LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQzOTE9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19yZXBsYXlfbGlua19iZWdpbik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzOTUtICpcXHRcXHRcXHQgICAgICAgd2hpY2ggbG9zdCBzdGF0ZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDM5NjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzOTctICpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzk6MzAuMzM1NDk3ODQ4WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1MTM5MzM4MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBIWSBJbnRlcmZhY2UgTW9kZSBVc2FnZSB3aXRoIGBkc2FfbG9vcGAqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEkgc2VlIHRoYXQgYHBoeWxpbmtfY3JlYXRlYCByZWNlaXZlcyBhIGBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZ2AuIFRoZSBjcml0aWNhbCBiaXQgaGVyZSBpcyB0aGUgYHN1cHBvcnRlZF9pbnRlcmZhY2VzYCBmaWVsZCB3aXRoaW4gdGhhdCBjb25maWcuIFRoYXQncyB3aGVyZSB0aGUgYWxsb3dlZCBpbnRlcmZhY2UgbW9kZXMgYXJlIHNwZWNpZmllZCwgYW5kIEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAuIElmIHRoYXQgYml0IGlzIHNldCBpbiBgc3VwcG9ydGVkX2ludGVyZmFjZXNgLCB0aGVuIHRoZW9yZXRpY2FsbHksIGBQU0dNSUlgIGlzIGEgdmFsaWQgb3B0aW9uIGZvciB0aGlzIHBhcnRpY3VsYXIgUEhZIGxpbmsuXG5cbk5vdywgdGhlIGNvZGUgbm90ZXMgdGhhdCB0aGUgYGRzYV9sb29wYCBmdW5jdGlvbiBtZXNzZXMgd2l0aCB0aGVzZSBgc3VwcG9ydGVkX2ludGVyZmFjZXNgLiBTcGVjaWZpY2FsbHksIGl0IGFwcGVhcnMgdG8gc2V0IGFsbCBvZiB0aGVtLiBUaGlzIG1lYW5zIGBkc2FfbG9vcGAgKmNvdWxkKiBwb3RlbnRpYWxseSBlbmFibGUgdGhlIHVzZSBvZiBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAuIFRoYXQgcmFpc2VzIGEga2V5IHF1ZXN0aW9uIGluIG15IG1pbmQ6IEhvdyBkb2VzIGBkc2FfbG9vcGAgYWN0dWFsbHkgc2V0IHRoZSBpbnRlcmZhY2UgbW9kZT8gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGRzYV9sb29wYCBpdHNlbGYgdG8gdW5kZXJzdGFuZCBob3cgaXQgbWFuaXB1bGF0ZXMgdGhlIGBzdXBwb3J0ZWRfaW50ZXJmYWNlc2AgYW5kIGRldGVybWluZSBpZiBpdCdzIGNvbnRyaWJ1dGluZyB0bywgb3IgcHJldmVudGluZywgdGhlIHVzZSBvZiBgUFNHTUlJYCBpbiB0aGlzIGNvbnRleHQuIFRpbWUgdG8gdHJhY2UgdGhyb3VnaCB0aGF0IGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCBpdCdzIHJlYWxseSBkb2luZyB1bmRlciB0aGUgaG9vZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE2MTAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzk6MzYuODQ5NDM0Mzk5WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODIwNTYyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQSFlfSU5URVJGQUNFX01PREVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MzI2PXN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzYSwgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjgte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyOTpcXHRiaXRtYXBfZmlsbChjb25maWctXFx1MDAzZXN1cHBvcnRlZF9pbnRlcmZhY2VzLCBQSFlfSU5URVJGQUNFX01PREVfTUFYKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzA6XFx0X19jbGVhcl9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX05BLCBjb25maWctXFx1MDAzZXN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMzEtXFx0Y29uZmlnLVxcdTAwM2VtYWNfY2FwYWJpbGl0aWVzID0gfjA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM5OjM2Ljg5NzY0MzQyOFoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDU3OTg5OTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdW5kZXJzdGFuZGluZywgdGhpbmtpbmcgdGhyb3VnaCB0aGlzIGNvZGU6XG5cbioqVW5kZXJzdGFuZGluZyBEU0EgQ2FwYWJpbGl0eSBTZXR1cCBpbiBgZHNhX2xvb3BgKipcblxuQWxyaWdodCwgc28gdGhlIHRleHQgaXMgc2F5aW5nIHRoaXMgY29kZSBwcmltYXJpbHkgZGVmaW5lcyB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBkZXZpY2Ug4oCTIHRoYXQncyB0aGUgc2V0dXAgc3RhZ2UuIEJ1dCB0aGUgKmFjdHVhbCogb3BlcmF0aW5nIG1vZGUsIHRoZSBpbnRlcmZhY2Ugc3BlY2lmaWNzLCB0aGF0J3MgZGV0ZXJtaW5lZCBieSB0aGUgRFNBIGNvcmUgaXRzZWxmLiBUaGUgc3lzdGVtIHVzZXMgZWl0aGVyIHRoZSBkZXZpY2UgdHJlZSBvciBmaXhlZC1saW5rIHByb3BlcnRpZXMgdG8gZmlndXJlIG91dCBob3cgdG8gb3BlcmF0ZS5cblxuU2luY2UgYGRzYV9sb29wYCBpcyBhIG1vY2sgZHJpdmVyLCBpdCdzIG5vdCBnb2luZyB0byBiZSB1c2luZyB0aGUgZGV2aWNlIHRyZWUsIHdoaWNoIGlzIGV4cGVjdGVkLiBUaGF0J3MgYSBrZXkgcG9pbnQuIFNvLCB0aGUgcXVlc3Rpb24gbm93IGlzLCBob3cgZG9lcyB0aGlzIG1vY2sgZHJpdmVyLCBgZHNhX2xvb3BgLCBvYnRhaW4gaXRzIGZpeGVkLWxpbmsgcHJvcGVydGllcyBpZiBpdCdzIG5vdCB1c2luZyB0aGUgZGV2aWNlIHRyZWU/IEkgbmVlZCB0byBkaWcgaW50byB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBvZiBgZHNhX2xvb3BgIGFuZCBmaW5kIHRoZSBhbnN3ZXIuIExldCdzIHNlZSBob3cgdGhhdCB3b3Jrcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIyMjEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozOTo0MC45NTU2MzU5NDVaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NjI0ODU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRzYV9sb29wXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1OnN0cnVjdCBkc2FfbG9vcF92bGFuIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNi1cXHR1MTYgbWVtYmVycztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMwOnN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxLVxcdGNoYXIgbmFtZVtFVEhfR1NUUklOR19MRU5dO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU6ZW51bSBkc2FfbG9vcF9taWJfY291bnRlcnMge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM2LVxcdERTQV9MT09QX1BIWV9SRUFEX09LLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM6c3RydWN0IGRzYV9sb29wX3BvcnQge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0OlxcdHN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkgbWliW19fRFNBX0xPT1BfQ05UX01BWF07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDUtXFx0dTE2IHB2aWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTpzdHJ1Y3QgZHNhX2xvb3BfcHJpdiB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTAtXFx0c3RydWN0IG1paV9idXNcXHQqYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxLVxcdHVuc2lnbmVkIGludFxcdHBvcnRfYmFzZTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MjpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB2bGFuc1tWTEFOX05fVklEXTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01My1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjU0OlxcdHN0cnVjdCBkc2FfbG9vcF9wb3J0IHBvcnRzW0RTQV9NQVhfUE9SVFNdO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU1LX07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTc6c3RydWN0IGRzYV9sb29wX3BkYXRhIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01OC1cXHQvKiBNdXN0IGJlIGZpcnN0LCBzdWNoIHRoYXQgZHNhX3JlZ2lzdGVyX3N3aXRjaCgpIGNhbiBhY2Nlc3MgdGhpc1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNjYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Njc6c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkgZHNhX2xvb3BfbWlic1tdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY4LVxcdFtEU0FfTE9PUF9QSFlfUkVBRF9PS11cXHQ9IHsgXFxcInBoeV9yZWFkX29rXFxcIiwgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTc1PXN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2UgKnN3aXRjaF9tZGlvZGV2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTc2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjc3OmVudW0gZHNhX2xvb3BfZGV2bGlua19yZXNvdXJjZV9pZCB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzgtXFx0RFNBX0xPT1BfREVWTElOS19QQVJBTV9JRF9OT05FLCAgLyogREVWTElOS19SRVNPVVJDRV9JRF9QQVJFTlRfVE9QICovXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04MS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4MjpzdGF0aWMgdTY0IGRzYV9sb29wX2RldmxpbmtfdnR1X2dldCh2b2lkICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTgzLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg1LVxcdHVuc2lnbmVkIGludCBpLCBjb3VudCA9IDA7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6ODY6XFx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6OTc6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTgte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk5LVxcdHN0cnVjdCBkZXZsaW5rX3Jlc291cmNlX3NpemVfcGFyYW1zIHNpemVfcGFyYW1zO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEwMDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMDEtXFx0aW50IGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTExNS1cXHRcXHRcXHRcXHRcXHQgICAgICBEU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX1ZUVSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMTY6XFx0XFx0XFx0XFx0XFx0ICAgICAgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0LCBwcyk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTE3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEyNTpzdGF0aWMgZW51bSBkc2FfdGFnX3Byb3RvY29sIGRzYV9sb29wX2dldF9wcm90b2NvbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI2LVxcdFxcdFxcdFxcdFxcdFxcdCAgIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTMzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEzNDpzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzUte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEzNjpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzctXFx0dW5zaWduZWQgaW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGRzLVxcdTAwM2VudW1fcG9ydHM7IGkrKylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDA6XFx0XFx0bWVtY3B5KHBzLVxcdTAwM2Vwb3J0c1tpXS5taWIsIGRzYV9sb29wX21pYnMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQxOlxcdFxcdCAgICAgICBzaXplb2YoZHNhX2xvb3BfbWlicykpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0NC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDU6XFx0cmV0dXJuIGRzYV9sb29wX3NldHVwX2RldmxpbmtfcmVzb3VyY2VzKGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDYtfVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Ny1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDg6c3RhdGljIHZvaWQgZHNhX2xvb3BfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0OS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTUzOnN0YXRpYyBpbnQgZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHNzZXQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTU0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2MC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNjE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZ2V0X3N0cmluZ3Moc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjItXFx0XFx0XFx0XFx0IHUzMiBzdHJpbmdzZXQsIHVpbnQ4X3QgKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYzLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNjQ6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTY1LVxcdHVuc2lnbmVkIGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTczLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NDpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3NS1cXHRcXHRcXHRcXHQgICAgICAgdWludDY0X3QgKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc2LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNzc6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc4LVxcdHVuc2lnbmVkIGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTgzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NDpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV9yZWFkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg1LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxODY6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg3LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTk4LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE5OTpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV93cml0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMC1cXHRcXHRcXHQgICAgICBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAxLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMDI6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAzLVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjE0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIxNTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfYnJpZGdlX2pvaW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTYtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMjUtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjI2OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjI3LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjMzOnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzNC1cXHRcXHRcXHRcXHRcXHR1OCBzdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzOS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNDA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQxLVxcdFxcdFxcdFxcdFxcdGJvb2wgdmxhbl9maWx0ZXJpbmcsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDktXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjUwOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1MS1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfdmxhbiAqdmxhbixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1NS1cXHRib29sIHB2aWQgPSB2bGFuLVxcdTAwM2VmbGFncyBcXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fUFZJRDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTY6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU3LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1ODpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjgyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI4MzpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9kZWwoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODQtXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODYtXFx0Ym9vbCB1bnRhZ2dlZCA9IHZsYW4tXFx1MDAzZWZsYWdzIFxcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19VTlRBR0dFRDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODc6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg4LVxcdHUxNiBwdmlkID0gcHMtXFx1MDAzZXBvcnRzW3BvcnRdLnB2aWQ7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg5LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI5MDpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjkxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMxMTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfY2hhbmdlX210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMi1cXHRcXHRcXHRcXHQgICAgaW50IG5ld19tdHUpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEzLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTQ6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzIxOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzIyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHNhLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjctXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMzMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNTpcXHQuZ2V0X3RhZ19wcm90b2NvbFxcdD0gZHNhX2xvb3BfZ2V0X3Byb3RvY29sLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNjpcXHQuc2V0dXBcXHRcXHRcXHQ9IGRzYV9sb29wX3NldHVwLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNzpcXHQudGVhcmRvd25cXHRcXHQ9IGRzYV9sb29wX3RlYXJkb3duLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzODpcXHQuZ2V0X3N0cmluZ3NcXHRcXHQ9IGRzYV9sb29wX2dldF9zdHJpbmdzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzOTpcXHQuZ2V0X2V0aHRvb2xfc3RhdHNcXHQ9IGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MDpcXHQuZ2V0X3NzZXRfY291bnRcXHRcXHQ9IGRzYV9sb29wX2dldF9zc2V0X2NvdW50LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MTpcXHQuZ2V0X2V0aHRvb2xfcGh5X3N0YXRzXFx0PSBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDI6XFx0LnBoeV9yZWFkXFx0XFx0PSBkc2FfbG9vcF9waHlfcmVhZCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDM6XFx0LnBoeV93cml0ZVxcdFxcdD0gZHNhX2xvb3BfcGh5X3dyaXRlLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NDpcXHQucG9ydF9icmlkZ2Vfam9pblxcdD0gZHNhX2xvb3BfcG9ydF9icmlkZ2Vfam9pbixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDU6XFx0LnBvcnRfYnJpZGdlX2xlYXZlXFx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9sZWF2ZSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDY6XFx0LnBvcnRfc3RwX3N0YXRlX3NldFxcdD0gZHNhX2xvb3BfcG9ydF9zdHBfc3RhdGVfc2V0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NzpcXHQucG9ydF92bGFuX2ZpbHRlcmluZ1xcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2ZpbHRlcmluZyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDg6XFx0LnBvcnRfdmxhbl9hZGRcXHRcXHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9hZGQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ5OlxcdC5wb3J0X3ZsYW5fZGVsXFx0XFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MDpcXHQucG9ydF9jaGFuZ2VfbXR1XFx0PSBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUxOlxcdC5wb3J0X21heF9tdHVcXHRcXHQ9IGRzYV9sb29wX3BvcnRfbWF4X210dSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTI6XFx0LnBoeWxpbmtfZ2V0X2NhcHNcXHQ9IGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzUzLX07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1NTpzdGF0aWMgaW50IGRzYV9sb29wX2Rydl9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU2LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTc6XFx0c3RydWN0IGRzYV9sb29wX3BkYXRhICpwZGF0YSA9IG1kaW9kZXYtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1ODpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU5LVxcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4Mi1cXHRkcy1cXHUwMDNlZGV2ID0gXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozODM6XFx0ZHMtXFx1MDAzZW9wcyA9IFxcdTAwMjZkc2FfbG9vcF9kcml2ZXI7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzg0LVxcdGRzLVxcdTAwM2Vwcml2ID0gcHM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mzk3OnN0YXRpYyB2b2lkIGRzYV9sb29wX2Rydl9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5OC17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk5LVxcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MDA6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQwMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MTE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTIte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDIyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyMzpzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIGRzYV9sb29wX2RydiA9IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjQtXFx0Lm1kaW9kcnYuZHJpdmVyXFx0PSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjYtXFx0fSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjc6XFx0LnByb2JlXFx0PSBkc2FfbG9vcF9kcnZfcHJvYmUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI4OlxcdC5yZW1vdmVcXHQ9IGRzYV9sb29wX2Rydl9yZW1vdmUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI5OlxcdC5zaHV0ZG93biA9IGRzYV9sb29wX2Rydl9zaHV0ZG93bixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzAtfTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzEtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDMyOnN0YXRpYyBpbnQgZHNhX2xvb3BfYnVzX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzMtXFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGRldmljZV9kcml2ZXIgKmRydilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzQte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzNTpcXHRyZXR1cm4gZHJ2ID09IFxcdTAwMjZkc2FfbG9vcF9kcnYubWRpb2Rydi5kcml2ZXI7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM2LX1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzctXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3Rlcih2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDUtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ2OnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0Ny17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ4OlxcdHN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgZHNhX2xvb3BfcGRhdGEgPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ5LVxcdFxcdC5jZCA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3MC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzE6XFx0c3dpdGNoX21kaW9kZXYtXFx1MDAzZWJ1c19tYXRjaCA9IGRzYV9sb29wX2J1c19tYXRjaDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzI6XFx0c3dpdGNoX21kaW9kZXYtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhID0gXFx1MDAyNmRzYV9sb29wX3BkYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4MS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0ODI6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfaW5pdCh2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4My17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDg3OlxcdHJldCA9IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4OC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NDpcXHRyZXQgPSBtZGlvX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2ZHNhX2xvb3BfZHJ2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTUtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NjpcXHRcXHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTctXFx0XFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwMi19XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTAzOm1vZHVsZV9pbml0KGRzYV9sb29wX2luaXQpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwNC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDU6c3RhdGljIHZvaWQgX19leGl0IGRzYV9sb29wX2V4aXQodm9pZClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDYte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwNzpcXHRtZGlvX2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZkc2FfbG9vcF9kcnYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwODpcXHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDktXFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMS19XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTEyOm1vZHVsZV9leGl0KGRzYV9sb29wX2V4aXQpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzk6NDEuMDAyMjY1NTIzWiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MzUzNjIyOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqVW5kZXJzdGFuZGluZyB0aGUgRFNBIExvb3AgU3RydWN0dXJlKipcblxuQWxyaWdodCwgc28gSSdtIGZvY3VzaW5nIG9uIHRoZSBEU0EgbG9vcCBjcmVhdGlvbiwgc3BlY2lmaWNhbGx5IHRoZSBpbnN0YW50aWF0aW9uIG9mIGEgc3dpdGNoIHdpdGggZml4ZWQgcG9ydHMuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHRoYXQgdGhpcyBzZXR1cCBpcyByaWdpZGx5IGRlZmluZWQ6IHRoZSBwb3J0cyBhcmUgcHJlY29uZmlndXJlZC4gVGhpcywgb2YgY291cnNlLCBpc24ndCBpbmhlcmVudGx5IGEgYmFkIHRoaW5nLCBpdCBqdXN0IHRlbGxzIG1lIHRoZSBzeXN0ZW0ncyBkZXNpZ24gaXMgaGlnaGx5IHN0cnVjdHVyZWQuXG5cbkkgaW1tZWRpYXRlbHkga2V5IGluIG9uIGBkc2FfbG9vcF9wZGF0YWAuICpUaGF0KiBpcyB3aGVyZSB0aGUgc3BlY2lmaWNzIGZvciB0aGUgaW50ZXJmYWNlIG1vZGUgb2YgdGhlc2UgZml4ZWQgcG9ydHMgcmVzaWRlLiBOb3cgSSBuZWVkIHRvIHNlZSAqaG93KiB0aGlzIGBkc2FfbG9vcF9wZGF0YWAgc3RydWN0dXJlIGlzIGRlZmluZWQgYW5kIHVzZWQuIEknbSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciBkeW5hbWljIGNvbmZpZ3VyYXRpb24gYXQgdGhpcyBwb2ludCwgaG93IG11Y2ggcnVudGltZSBmbGV4aWJpbGl0eSBkbyB3ZSBoYXZlIHdpdGggdGhpcy4gQXJlIHRoZSBpbnRlcmZhY2UgbW9kZXMgc2V0IGluIHN0b25lIGF0IGNvbXBpbGUgdGltZSwgb3IgY2FuIHdlIGluZmx1ZW5jZSB0aGVtLCBldmVuIGlmIGl0J3MgdmlhIHNvbWV0aGluZyBsaWtlIGRldmljZSB0cmVlIG92ZXJyaWRlcyBvciBhIHBsYXRmb3JtLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIHBoYXNlPyBUaGUgZGV2aWwsIGFzIGFsd2F5cywgaXMgaW4gdGhlIGRldGFpbHMsIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGUgYHBkYXRhYCB0byBzZWUgaXRzIGZ1bGwgZGVmaW5pdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg5NjMsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozOTo0NC44Mzc2MzAzMjhaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIzMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDQ2LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDQ2OlxcdHN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxcbiA0NDc6XFx0e1xcbiA0NDg6XFx0XFx0c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9wZGF0YSBkc2FfbG9vcF9wZGF0YSA9IHtcXG4gNDQ5OlxcdFxcdFxcdC5jZCA9IHtcXG4gNDUwOlxcdFxcdFxcdFxcdC5wb3J0X25hbWVzWzBdID0gXFxcImxhbjFcXFwiLFxcbiA0NTE6XFx0XFx0XFx0XFx0LnBvcnRfbmFtZXNbMV0gPSBcXFwibGFuMlxcXCIsXFxuIDQ1MjpcXHRcXHRcXHRcXHQucG9ydF9uYW1lc1syXSA9IFxcXCJsYW4zXFxcIixcXG4gNDUzOlxcdFxcdFxcdFxcdC5wb3J0X25hbWVzWzNdID0gXFxcImxhbjRcXFwiLFxcbiA0NTQ6XFx0XFx0XFx0XFx0LnBvcnRfbmFtZXNbRFNBX0xPT1BfQ1BVX1BPUlRdID0gXFxcImNwdVxcXCIsXFxuIDQ1NTpcXHRcXHRcXHR9LFxcbiA0NTY6XFx0XFx0XFx0Lm5hbWUgPSBcXFwiRFNBIG1vY2t1cCBkcml2ZXJcXFwiLFxcbiA0NTc6XFx0XFx0XFx0LmVuYWJsZWRfcG9ydHMgPSAweDFmLFxcbiA0NTg6XFx0XFx0XFx0Lm5ldGRldiA9IFxcXCJldGgwXFxcIixcXG4gNDU5OlxcdFxcdH07XFxuIDQ2MDpcXHRcXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xcbiA0NjE6XFx0XFx0aW50IHJldCA9IC1FTk9ERVY7XFxuIDQ2MjpcXHRcXG4gNDYzOlxcdFxcdGJ1cyA9IG1kaW9fZmluZF9idXMoXFxcImZpeGVkLTBcXFwiKTtcXG4gNDY0OlxcdFxcdGlmIChXQVJOX09OKCFidXMpKVxcbiA0NjU6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gNDY2OlxcdFxcbiA0Njc6XFx0XFx0c3dpdGNoX21kaW9kZXYgPSBtZGlvX2RldmljZV9jcmVhdGUoYnVzLCAzMSk7XFxuIDQ2ODpcXHRcXHRpZiAoSVNfRVJSKHN3aXRjaF9tZGlvZGV2KSlcXG4gNDY5OlxcdFxcdFxcdGdvdG8gb3V0O1xcbiA0NzA6XFx0XFxuIDQ3MTpcXHRcXHRzd2l0Y2hfbWRpb2Rldi1cXHUwMDNlYnVzX21hdGNoID0gZHNhX2xvb3BfYnVzX21hdGNoO1xcbiA0NzI6XFx0XFx0c3dpdGNoX21kaW9kZXYtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhID0gXFx1MDAyNmRzYV9sb29wX3BkYXRhO1xcbiA0NzM6XFx0XFxuIDQ3NDpcXHRcXHRyZXQgPSBtZGlvX2RldmljZV9yZWdpc3Rlcihzd2l0Y2hfbWRpb2Rldik7XFxuIDQ3NTpcXHRcXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozOTo0NC44Mzc3MTQwNDhaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTk1NDI1MzI1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBhIFBIWSBGcmFtZXdvcmsgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIGl0IGRvZXNuJ3QgZXhwbGljaXRseSBzZXQgdGhlIGludGVyZmFjZSBtb2RlLCBzbyBpdCdzIHByb2JhYmx5IGRlZmF1bHRpbmcgdG8gc29tZXRoaW5nIGxpa2UgYFBIWV9JTlRFUkZBQ0VfTU9ERV9OQWAgb3IgYFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTGAuIFRoZSBxdWVzdGlvbiBpcywgaG93IGRvIHdlICphY3R1YWxseSogZ2V0IGBwaHlsaW5rX3N0YXJ0YCB0byBleGVjdXRlIHdpdGggYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgPyBTeXprYWxsZXIncyBub3QgZGlyZWN0bHkgaW5qZWN0aW5nIGRldmljZSB0cmVlcywgc28gdGhhdCdzIG91dCwgYW5kIGl0IHJlbGllcyBvbiBuZXRsaW5rIGZvciB2aXJ0dWFsIGludGVyZmFjZXMuIEkgaGFkIGEgdGhvdWdodCBhYm91dCBjcmVhdGluZyBhIHZpcnR1YWwgaW50ZXJmYWNlIHdpdGggcGh5bGluayBhbmQgc2V0dGluZyB0aGUgbW9kZSwgYnV0IHRoZW4gcmVtZW1iZXJlZCBgbmV0ZGV2c2ltYCBkb2Vzbid0IGV2ZW4gdXNlIHBoeWxpbmsuIFdoYXQgYWJvdXQgYGRzYV9sb29wYD8gQ291bGQgSSBtYW5pcHVsYXRlIGl0cyBpbnRlcmZhY2UgbW9kZSB2aWEgZXRodG9vbCBvciBuZXRsaW5rPyBObywgdXN1YWxseSB0aGF0J3MgZml4ZWQgYnkgdGhlIGhhcmR3YXJlIG9yIGRldmljZSB0cmVlLlxuXG5CdXQsIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBkZWVwIGluIGBwaHlsaW5rLmNgLCB3aGljaCBtYWtlcyBpdCBpbnRlcmVzdGluZyBldmVuIGlmIHN5emthbGxlciBjYW4ndCAqZWFzaWx5KiBoaXQgdGhlIHNwZWNpZmljIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBwYXRoLiBIb3dldmVyLCB0aGVyZSdzIHRoYXQgZ3VpZGVsaW5lIGFib3V0IG5vdCBmdXp6aW5nIGlmIGl0J3MgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGF0J3MgdGhlIGtleSBxdWVzdGlvbi4gSXMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGFjdHVhbGx5IHJlYWNoYWJsZSBpbiBRRU1VP1xuXG5JZiBubyBkcml2ZXIgaW4gUUVNVSAqdXNlcyogYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLCB0aGVuIGl0J3MgYSBkZWFkIGVuZC4gTGV0J3MgbG9vayBmb3IgYSBkcml2ZXIuIFJpZ2h0LCBJIHJlbWVtYmVyIHNlZWluZyB0aGF0IGBxY2E4MDd4LmNgIGV4cGxpY2l0bHkgdXNlcyBpdC4gR29vZC4gYHFjYTgwN3guY2AgaXMgYSBQSFkgZHJpdmVyLCB0aG91Z2guIENhbiB3ZSBsb2FkIHRoYXQgaW4gUUVNVT8gWWVzLCB3ZSBjYW4gbG9hZCBQSFkgZHJpdmVycyBhbmQgYmluZCB0aGVtIHRvIHZpcnR1YWwgTURJTyBidXNlcy5cblxuQnV0IGhlcmUncyB0aGUgY2F0Y2g6IFRvIHRyaWdnZXIgYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlYCB3aXRoIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCwgd2UgbmVlZCBhIE1BQyBkcml2ZXIgdGhhdCAqdXNlcyogcGh5bGluayAqYW5kKiBjb25uZWN0cyB0byB0aGlzIFBIWSwgKmFuZCogdGhlIGludGVyZmFjZSBtb2RlICptdXN0KiBiZSBzZXQgdG8gYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLiBUaGF0IHVzdWFsbHkgZ2V0cyBzZXQgYnkgdGhlIE1BQyBkcml2ZXIgYmFzZWQgb24gYSBkZXZpY2UgdHJlZS4gV2l0aG91dCB0aGF0IGRldmljZSB0cmVlIHNldHRpbmcsIGl0J3Mgbm90IGdvaW5nIHRvIGhhcHBlbi5cblxuSG1tLi4uIHdhaXQuLi4gY291bGQgYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBvciBzb21ldGhpbmcgZWxzZSAqdHJpZ2dlciogaXQ/IFRoYXQncyB0aGUgbmV4dCBhdmVudWUgdG8gZXhwbG9yZS4gTGV0J3MgY2hlY2sgaWYgYHFjYTgwN3hgIGl0c2VsZiBzZXRzIHRoZSBpbnRlcmZhY2UgbW9kZSwgc29tZWhvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk3NzEsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1ODcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozOTo1NC43OTE5Njk4NTZaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg1MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDU0NSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDU0NTpcXHRcXG4gNTQ2OlxcdFxcdHByaXYtXFx1MDAzZXBhY2thZ2VfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9OQTtcXG4gNTQ3OlxcdFxcdGlmICghb2ZfcHJvcGVydHlfcmVhZF9zdHJpbmcobnAsIFxcXCJxY29tLHBhY2thZ2UtbW9kZVxcXCIsXFxuIDU0ODpcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZwYWNrYWdlX21vZGVfbmFtZSkpIHtcXG4gNTQ5OlxcdFxcdFxcdGlmICghc3RyY2FzZWNtcChwYWNrYWdlX21vZGVfbmFtZSxcXG4gNTUwOlxcdFxcdFxcdFxcdFxcdHBoeV9tb2RlcyhQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJKSkpXFxuIDU1MTpcXHRcXHRcXHRcXHRwcml2LVxcdTAwM2VwYWNrYWdlX21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJO1xcbiA1NTI6XFx0XFx0XFx0ZWxzZSBpZiAoIXN0cmNhc2VjbXAocGFja2FnZV9tb2RlX25hbWUsXFxuIDU1MzpcXHRcXHRcXHRcXHRcXHQgICAgIHBoeV9tb2RlcyhQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJKSkpXFxuIDU1NDpcXHRcXHRcXHRcXHRwcml2LVxcdTAwM2VwYWNrYWdlX21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJO1xcbiA1NTU6XFx0XFx0XFx0ZWxzZVxcbiA1NTY6XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDU1NzpcXHRcXHR9XFxuIDU1ODpcXHRcXG4gNTU5OlxcdFxcdHJldHVybiAwO1xcbiA1NjA6XFx0fVxcbiA1NjE6XFx0XFxuIDU2MjpcXHRzdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfY29uZmlnX2luaXRfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiA1NjM6XFx0e1xcbiA1NjQ6XFx0XFx0c3RydWN0IHFjYTgwN3hfc2hhcmVkX3ByaXYgKnByaXYgPSBwaHlfcGFja2FnZV9nZXRfcHJpdihwaHlkZXYpO1xcbiA1NjU6XFx0XFx0aW50IHZhbCwgcmV0O1xcbiA1NjY6XFx0XFxuIDU2NzpcXHRcXHQvKiBNYWtlIHN1cmUgUEhZIGZvbGxvdyBQSFkgcGFja2FnZSBtb2RlIGlmIGVuZm9yY2VkICovXFxuIDU2ODpcXHRcXHRpZiAocHJpdi1cXHUwMDNlcGFja2FnZV9tb2RlICE9IFBIWV9JTlRFUkZBQ0VfTU9ERV9OQSBcXHUwMDI2XFx1MDAyNlxcbiA1Njk6XFx0XFx0ICAgIHBoeWRldi1cXHUwMDNlaW50ZXJmYWNlICE9IHByaXYtXFx1MDAzZXBhY2thZ2VfbW9kZSlcXG4gNTcwOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA1NzE6XFx0XFxuIDU3MjpcXHRcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbiA1NzM6XFx0XFxuIDU3NDpcXHRcXHQvKiBTZXQgY29ycmVjdCBQSFkgcGFja2FnZSBtb2RlICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM5OjU0Ljc5MjA3MTM1NloiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MjIxNjYyNzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEludmVzdGlnYXRpb24gaW50byBTZXR0aW5nIFBIWSBJbnRlcmZhY2UgTW9kZSBmb3IgcWNhODA3eCB3aXRoIHN5emthbGxlcioqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdG8gbWFuaXB1bGF0ZSB0aGUgYHFjYTgwN3hgIGRyaXZlcidzIGBxY29tLHBhY2thZ2UtbW9kZWAgc2V0dGluZyB1c2luZyBzeXprYWxsZXIuIFRoZSBkcml2ZXIgY2hlY2tzIHRoZSBkZXZpY2UgdHJlZSwgYW5kIGlmIGl0J3Mgbm90IHNldCB0aGVyZSwgaXQgZG9lc24ndCBzZXQgaXQuIFRoYXQncyBhIHByb2JsZW0uIFNvLCBhcmUgdGhlcmUgYW55IG90aGVyIHdheXMgdG8gZm9yY2UgYSBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgY29uZmlndXJhdGlvbj9cblxuTXkgZmlyc3QgdGhvdWdodCB3YXMsIG1heWJlIHN5emthbGxlciBjb3VsZCBsZXZlcmFnZSBgSUZMQV9JTkZPX0tJTkRgIG9uIHNvbWUgc29ydCBvZiB2aXJ0dWFsIGRldmljZSB0byBzcGVjaWZ5IHRoZSBQSFkgaW50ZXJmYWNlIG1vZGUuIEJ1dCwgbm8sIHRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZSBhIHN1aXRhYmxlIHZpcnR1YWwgZGV2aWNlIHRvIGRvIHRoYXQgd2l0aC4gV2hhdCBhYm91dCBgdHVuYCwgYHZldGhgLCBvciBgbmV0ZGV2c2ltYD8gTm9wZSwgdGhvc2UgZG9uJ3QgdXNlIHBoeWxpbmssIHNvIHRoZXkncmUgbm90IHJlbGV2YW50LiBgZHNhX2xvb3BgIHVzZXMgcGh5bGluaywgYnV0IHRoZSBpbnRlcmZhY2UgbW9kZSBpcyBmaXhlZC4gVWdoLlxuXG5DYW4gSSBldmVuICpyZWFjaCogYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlYCB3aXRoIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpbiBRRU1VPyBQcm9iYWJseSBub3QuIEl0IGxvb2tzIGxpa2UgdGhhdCBzZXR0aW5nIGlzIHRpZWQgdG8gdmVyeSBzcGVjaWZpYyBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucyBvciBoYXJkd2FyZSB0aGF0IGV4cGxpY2l0bHkgdXNlcyBQU0dNSUkuXG5cbkFscmlnaHQsIG1heWJlIEkgY2FuIG1hbmlwdWxhdGUgaXQgdGhyb3VnaCBgU0lPQ1NNSUlSRUdgIG9yIHJlbGF0ZWQgaW9jdGxzPyBObywgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGlzIGp1c3QgYW4gaW50ZXJuYWwgZW51bSB2YWx1ZS4gSXQncyBzZXQgZHVyaW5nIGRldmljZSBwcm9iZSBiYXNlZCBvbiBkZXZpY2UgdHJlZSwgQUNQSSwgb3IgYm9hcmQgZmlsZXMuIFNpbmNlIHN5emthbGxlciBsaWtlbHkgY2FuJ3QgaW5qZWN0IGRldmljZSB0cmVlIG5vZGVzIGRpcmVjdGx5LCBJJ20gb3V0IG9mIGx1Y2sgdGhlcmUuXG5cbkhhbmcgb24uLi4gY291bGQgc3l6a2FsbGVyLCBpbiAqc29tZSogc2V0dXBzLCBpbmplY3QgZGV2aWNlIHRyZWUgbm9kZXMsIHBlcmhhcHMgdXNpbmcgYHN5el9tb3VudF9pbWFnZWAgd2l0aCBhIGN1c3RvbSBEVEI/IE5vLCBEVEJzIGFyZSBwYXNzZWQgYXQgYm9vdCwgc28gdGhhdCdzIGEgZGVhZCBlbmQuXG5cbkkga25vdyBzeXprYWxsZXIgaGFzIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlgIGFuZCBvdGhlciByZWxhdGVkIHBzZXVkby1zeXNjYWxscywgYnV0IG5vdGhpbmcgc2VlbXMgdG8gZGlyZWN0bHkgYWRkcmVzcyBEVEIgaW5qZWN0aW9uLiBIb3dldmVyLCB3YWl0LCB0aGVyZSdzIGBzeXpfaW5pdF9uZXRfc29ja2V0YCBhbmQgYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseWAuLi4gSXMgdGhlcmUgYSBuZXRsaW5rIGF0dHJpYnV0ZSwgbWF5YmUsIHRoYXQgSSBjb3VsZCB1c2UgdG8gc2V0IHRoZSBQSFkgaW50ZXJmYWNlIG1vZGU/IEkgbmVlZCB0byBjaGVjayBgcnRubF9saW5rX29wc2AgdG8gc2VlIHdoYXQncyBhdmFpbGFibGUuIFRoaXMgaXMgd2hlcmUgdGhlIHNvbHV0aW9uIGlzIHByb2JhYmx5IGhpZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE0NDYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjo0MDowNC4wMTM3Mzc3NjhaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MTI4MDU5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQSFlfSU5URVJGQUNFX01PREVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NvcmUvcnRuZXRsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjQwOjA0LjA2MDg3NjM4N1oiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODU4MzU5OTczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyaXphdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbnZlc3RpZ2F0aW5nIE5ldGxpbmsgQXR0cmlidXRlcyBmb3IgUEhZIEludGVyZmFjZSBNb2RlKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHdlJ3JlIHJlcHJlc2VudGluZyBhbmQgbWFuaXB1bGF0aW5nIFBIWSBpbnRlcmZhY2UgbW9kZXMgd2l0aGluIHRoZSBuZXRsaW5rIGZyYW1ld29yay4gTXkgaW1tZWRpYXRlIHRhc2sgaXMgdG8gY29uZmlybSBpZiB3ZSd2ZSBkZWZpbmVkIGEgc3BlY2lmaWMgbmV0bGluayBhdHRyaWJ1dGUgZGVkaWNhdGVkIHRvIGhhbmRsaW5nIHRoaXMgYXNwZWN0IG9mIHRoZSBQSFkuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYW4gYXR0cmlidXRlIGV4aXN0cywgb3IgaWYgdGhlIHJlbGV2YW50IGluZm9ybWF0aW9uIGlzIGJlaW5nIGVuY29kZWQgd2l0aGluIGEgYnJvYWRlciwgbW9yZSBnZW5lcmljIGF0dHJpYnV0ZSBzdHJ1Y3R1cmUuIElmIGEgZGVkaWNhdGVkIGF0dHJpYnV0ZSAqZG9lcyogZXhpc3QsIEknbGwgbmVlZCB0byBleGFtaW5lIGl0cyBzdHJ1Y3R1cmUgYW5kIGFzc29jaWF0ZWQgZmxhZ3MuIElmIG5vdCwgSSdsbCBoYXZlIHRvIGludmVzdGlnYXRlIGhvdyB0aGUgbW9kZSBpbmZvcm1hdGlvbiBpcyBjdXJyZW50bHkgYmVpbmcgcGFzc2Vk4oCUbGlrZWx5LCBpdCdzIGVtYmVkZGVkIHdpdGhpbiBhbm90aGVyIGF0dHJpYnV0ZSwgb3IgcGVyaGFwcyByZXF1aXJlcyBzb21lIGN1c3RvbSBoYW5kbGluZyB0aGF0J3Mgbm90IGltbWVkaWF0ZWx5IGFwcGFyZW50LiBMZXQgbWUgc3RhcnQgZGlnZ2luZyB0aHJvdWdoIHRoZSByZWxldmFudCBoZWFkZXJzIGFuZCBleGlzdGluZyBjb2Rl4oCmIHRoZSBgbmw4MDIxMWAgZGVmaW5pdGlvbnMgYXJlIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LiBJIHN1c3BlY3QgSSBtaWdodCBhbHNvIG5lZWQgdG8gZXhhbWluZSB0aGUgZGV2aWNlIGRyaXZlcnMnIGFuZCByZWxldmFudCBzdGFjaydzIG5ldGxpbmsgaW50ZXJmYWNlcyB0b28uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyNDU5LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6NDA6MDcuOTE5MjM4NTVaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2OTM1NzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JTlRFUkZBQ0VfTU9ERVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL29mX25ldC5jLTI0LSAqIGludGVyZmFjZSBhbmQgMCByZXR1cm5lZC4gSW4gY2FzZSBvZiBlcnJvciBpbnRlcmZhY2UgaXMgc2V0IHRvXFxubmV0L2NvcmUvb2ZfbmV0LmM6MjU6ICogUEhZX0lOVEVSRkFDRV9NT0RFX05BIGFuZCBhbiBlcnJubyBpcyByZXR1cm5lZCwgZS5nLiAtRU5PREVWLlxcbm5ldC9jb3JlL29mX25ldC5jLTI2LSAqL1xcbm5ldC9jb3JlL29mX25ldC5jPTI3PWludCBvZl9nZXRfcGh5X21vZGUoc3RydWN0IGRldmljZV9ub2RlICpucCwgcGh5X2ludGVyZmFjZV90ICppbnRlcmZhY2UpXFxuLS1cXG5uZXQvY29yZS9vZl9uZXQuYy0zMS1cXG5uZXQvY29yZS9vZl9uZXQuYzozMjpcXHQqaW50ZXJmYWNlID0gUEhZX0lOVEVSRkFDRV9NT0RFX05BO1xcbm5ldC9jb3JlL29mX25ldC5jLTMzLVxcbi0tXFxubmV0L2NvcmUvb2ZfbmV0LmMtMzktXFxubmV0L2NvcmUvb2ZfbmV0LmM6NDA6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFBIWV9JTlRFUkZBQ0VfTU9ERV9NQVg7IGkrKylcXG5uZXQvY29yZS9vZl9uZXQuYy00MS1cXHRcXHRpZiAoIXN0cmNhc2VjbXAocG0sIHBoeV9tb2RlcyhpKSkpIHtcXG4tLVxcbm5ldC9kc2EvcG9ydC5jPTE2MTc9aW50IGRzYV9wb3J0X3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBkc2FfcG9ydCAqZHApXFxuLS1cXG5uZXQvZHNhL3BvcnQuYy0xNjI2LVxcdGlmIChlcnIpXFxubmV0L2RzYS9wb3J0LmM6MTYyNzpcXHRcXHRtb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX05BO1xcbm5ldC9kc2EvcG9ydC5jLTE2MjgtXFxuLS1cXG5uZXQvZHNhL3BvcnQuYy0xNjMyLVxcdFxcdC8qIEZvciBsZWdhY3kgZHJpdmVycyAqL1xcbm5ldC9kc2EvcG9ydC5jOjE2MzM6XFx0XFx0aWYgKG1vZGUgIT0gUEhZX0lOVEVSRkFDRV9NT0RFX05BKSB7XFxubmV0L2RzYS9wb3J0LmMtMTYzNC1cXHRcXHRcXHRfX3NldF9iaXQobW9kZSwgZHAtXFx1MDAzZXBsX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxubmV0L2RzYS9wb3J0LmMtMTYzNS1cXHRcXHR9IGVsc2Uge1xcbm5ldC9kc2EvcG9ydC5jOjE2MzY6XFx0XFx0XFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCxcXG5uZXQvZHNhL3BvcnQuYy0xNjM3LVxcdFxcdFxcdFxcdCAgZHAtXFx1MDAzZXBsX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxubmV0L2RzYS9wb3J0LmM6MTYzODpcXHRcXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUksXFxubmV0L2RzYS9wb3J0LmMtMTYzOS1cXHRcXHRcXHRcXHQgIGRwLVxcdTAwM2VwbF9jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xcbi0tXFxubmV0L2RzYS9wb3J0LmM9MTg0Mj1zdGF0aWMgdm9pZCBkc2Ffc2hhcmVkX3BvcnRfbGlua19kb3duKHN0cnVjdCBkc2FfcG9ydCAqZHApXFxuLS1cXG5uZXQvZHNhL3BvcnQuYy0xODQ3LVxcdFxcdGRzLVxcdTAwM2VwaHlsaW5rX21hY19vcHMtXFx1MDAzZW1hY19saW5rX2Rvd24oXFx1MDAyNmRwLVxcdTAwM2VwbF9jb25maWcsIE1MT19BTl9GSVhFRCxcXG5uZXQvZHNhL3BvcnQuYzoxODQ4OlxcdFxcdFxcdFxcdFxcdFxcdCAgIFBIWV9JTlRFUkZBQ0VfTU9ERV9OQSk7XFxubmV0L2RzYS9wb3J0LmMtMTg0OS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjQwOjA3Ljk4NjE4MTA0OFoiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Njk2ODg1MTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBWdWxuZXJhYmlsaXR5IFBhdGgqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSwgYW5kIGl0IGxvb2tzIGxpa2UgdGhlIGludGVyZmFjZSBtb2RlLCBzcGVjaWZpY2FsbHkgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLCBpcyBvbmx5IGRldGVybWluZWQgZnJvbSB0aGUgZGV2aWNlIHRyZWUgdXNpbmcgYG9mX2dldF9waHlfbW9kZWAuIFRoYXQncyBhIHBvdGVudGlhbCB3ZWFrIHBvaW50LCBidXQgYWxzbyBhIGxpbWl0YXRpb24uIFRoZSBjaGFsbGVuZ2UgaXMsIGlmIHN5emthbGxlciBjYW4ndCBtb2RpZnkgdGhlIGRldmljZSB0cmVlIGRpcmVjdGx5LCB0aGVuIGl0IGNhbid0IHNpbXBseSBmb3JjZSB0aGF0IGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCB2YWx1ZS4gSXQgc2VlbXMgYSBjbGFzc2ljIHZ1bG5lcmFiaWxpdHkgcGF0aCwgYXNzdW1pbmcgdGhlIGF0dGFja2VyIGNhbiBhY2Nlc3MgYW5kIG1vZGlmeSB0aGUgZGV2aWNlIHRyZWUsIGEgdHlwaWNhbCBzeXprYWxsZXIgZ29hbC5cblxuV2FpdCBhIHNlY29uZC4uLiBiZWZvcmUgSSBnZXQgdG9vIGZpeGF0ZWQgb24gdGhlIGRldmljZSB0cmVlLCBhcmUgdGhlcmUgKmFueSogb3RoZXIgd2F5cyB0byBzZXQgdGhhdCBzcGVjaWZpYyBpbnRlcmZhY2UgbW9kZT8gTWF5YmUgc29tZSBvYnNjdXJlIHJlZ2lzdGVyIHNldHRpbmcgb3IgYSBkaWZmZXJlbnQgZHJpdmVyIHBhdGg/IEkgc2hvdWxkIHByb2JhYmx5IGJyb2FkZW4gdGhlIHNlYXJjaC4gTGV0IG1lIHF1aWNrbHkgc2NhbiB0aHJvdWdoIHRoZSBgZHJpdmVycy9uZXQvYCBkaXJlY3RvcnkgYWdhaW4uIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhlcmUgaXNuJ3QgYW5vdGhlciB3YXkgdG8gaW5mbHVlbmNlIHRoYXQgc2V0dGluZyBiZWZvcmUgSSBjb21wbGV0ZWx5IGRpc2NvdW50IHRoZSBwb3NzaWJpbGl0eSBvZiBleHBsb2l0YXRpb24uIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzQ0MSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjQwOjEyLjY4MzA2ODQ5NloiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc1NDUxNzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jPTE1OT1pbnQgcGh5X2ludGVyZmFjZV9udW1fcG9ydHMocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMS1cXHRcXHRyZXR1cm4gNDtcXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzoyMDI6XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMy1cXHRcXHRyZXR1cm4gNTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jPTI5ND11bnNpZ25lZCBsb25nIHBoeV9jYXBzX2Zyb21faW50ZXJmYWNlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTAtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM6MzExOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTItXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzg9c3RhdGljIGludCBwaHlsaW5rX2ludGVyZmFjZV9tYXhfc3BlZWQocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU5LVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjYwOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MS1cXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTc3ND1zdGF0aWMgaW50IHBoeWxpbmtfcGFyc2VfbW9kZShzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTgwOC1cXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjgwOTpcXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MTAtXFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDItXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDQzOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDQtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTQ5MD1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfcHJvYmVfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU0OS1cXHRcXHRpZiAoIXN0cmNhc2VjbXAocGFja2FnZV9tb2RlX25hbWUsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU1MDpcXHRcXHRcXHRcXHRwaHlfbW9kZXMoUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSkpKVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTE6XFx0XFx0XFx0cHJpdi1cXHUwMDNlcGFja2FnZV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTUyLVxcdFxcdGVsc2UgaWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTU2Mj1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfY29uZmlnX2luaXRfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4NS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTg2OlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTg3LVxcdGRlZmF1bHQ6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjQwOjEzLjA1ODUyNTE3NVoiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjAxMTg0NzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgUEhZIEludGVyZmFjZSBNb2RlIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBpdCBsb29rcyBsaWtlIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpcyBleGNsdXNpdmVseSBkZWZpbmVkIHdpdGhpbiB0aGUgYHFjYTgwN3guY2AgZmlsZSwgcHJpbWFyaWx5IGRyaXZlbiBieSB0aGUgRGV2aWNlIFRyZWUgKERUKS4gSSBrbm93IGl0IGdldHMgcGFyc2VkIGZyb20gdGhlIERUIGluIGBvZl9uZXQuY2AgYW5kIGBwaHlsaW5rLmNgLCB3aGljaCBtYWtlcyBzZW5zZS4gQnV0LCBJJ20gY3VyaW91cywgaXMgdGhhdCAqdHJ1bHkqIHRoZSBvbmx5IHdheSB0aGlzIHNwZWNpZmljIG1vZGUgZ2V0cyBzZXQ/IEFyZSB0aGVyZSBhbnkgb3RoZXIgcG90ZW50aWFsIHJvdXRlcz8gTXkgZ3V0IHRlbGxzIG1lIEkgbmVlZCB0byBjb25zaWRlciBhbGwgcG9zc2liaWxpdGllcy5cblxuUGVyaGFwcyB0aGVyZSdzIGFuIEFDUEktcmVsYXRlZCBhdmVudWUgSSdtIG92ZXJsb29raW5nPyBJIHNob3VsZCByZWFsbHkgbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSBuZWVkIHRvIGRpZyBhIGxpdHRsZSBkZWVwZXIsIGFuZCB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBgYWNwaV9nZXRfcGh5X21vZGVgLiBJdCdzIHRpbWUgdG8gY2hlY2sgdGhhdCBmdW5jdGlvbiBhbmQgc2VlIGlmIEFDUEkgaXMgaW52b2x2ZWQuIFRoaXMgZmVlbHMgbGlrZSB0aGUgcmlnaHQgcGxhY2UgdG8gc3RhcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NzU1LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6NDA6MTYuNjU5NzEyMDc3WiIsIlNlcSI6NTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjgzMDI0NTU5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhY3BpX2dldF9waHlfbW9kZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjQwOjE4LjM0Mjc1NjM4NloiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTY3MTkwODU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGVlcCBEaXZlIGludG8gYGZ3bm9kZV9nZXRfcGh5X21vZGVgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGZ3bm9kZV9nZXRfcGh5X21vZGVgLi4uIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgZnVuY3Rpb24gaXMgc3VwcG9zZWQgdG8gd29yayBhbmQgd2hhdCBjb250ZXh0IGl0IG9wZXJhdGVzIGluLiBJIHNob3VsZCBjaGVjayB0aGUgaW1wbGVtZW50YXRpb24gZmlyc3QuIElzIGl0IHN0cmFpZ2h0Zm9yd2FyZCwgb3IgaXMgaXQgY2FsbGluZyBvdGhlciBmdW5jdGlvbnMgd2hpY2ggY2FuIGFmZmVjdCBpdHMgYmVoYXZpb3I/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBwb3RlbnRpYWwgZ290Y2hhcyBJIHNob3VsZCBiZSBhd2FyZSBvZiByZWdhcmRpbmcgcG90ZW50aWFsIHNpZGUgZWZmZWN0cz8gSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBoYXJkd2FyZSBwbGF0Zm9ybXMgd2hlcmUgdGhpcyBmdW5jdGlvbiBiZWhhdmVzIHVuZXhwZWN0ZWRseSwgbWF5YmUgc29tZSBwbGF0Zm9ybS1zcGVjaWZpYyBxdWlya3MuIEkgYmV0dGVyIGNoZWNrIHRoZSByZWxldmFudCBkb2N1bWVudGF0aW9uIG9yIGNvbW1lbnRzIHRvIG1ha2Ugc3VyZSBJIGFtIG5vdCBtaXNzaW5nIGFueXRoaW5nIG9idmlvdXMuIEl0J3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIGl0cyBjb250cmFjdCBhbmQgYW55IGVycm9yIHNjZW5hcmlvcyBpdCdzIGludGVuZGVkIHRvIGhhbmRsZS4gSSdsbCBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHRoZSBvdmVyYWxsIGZyYW1ld29yayBvciBhcmNoaXRlY3R1cmUuIEtub3dpbmcgdGhlIGBwaHlfbW9kZWAgaXMgY3JpdGljYWwgdG8gb3VyIHN5c3RlbS4gTGV0IG1lIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgY29kZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTA3OCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjQwOjIxLjUwOTk1MDMyMVoiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU5MDMxNTUwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmd25vZGVfZ2V0X3BoeV9tb2RlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jhc2UvcHJvcGVydHkuYz05OTc9RVhQT1JUX1NZTUJPTF9HUEwoZGV2aWNlX2dldF9kbWFfYXR0cik7XFxuLS1cXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYy05OTktLyoqXFxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM6MTAwMDogKiBmd25vZGVfZ2V0X3BoeV9tb2RlIC0gR2V0IHBoeSBtb2RlIGZvciBnaXZlbiBmaXJtd2FyZSBub2RlXFxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMtMTAwMS0gKiBAZndub2RlOlxcdFBvaW50ZXIgdG8gdGhlIGdpdmVuIG5vZGVcXG4tLVxcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jLTEwMDYtICovXFxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM6MTAwNzppbnQgZndub2RlX2dldF9waHlfbW9kZShjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlKVxcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jLTEwMDgte1xcbi0tXFxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMtMTAyNC19XFxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM6MTAyNTpFWFBPUlRfU1lNQk9MX0dQTChmd25vZGVfZ2V0X3BoeV9tb2RlKTtcXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYy0xMDI2LVxcbi0tXFxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM9MTAzNT1pbnQgZGV2aWNlX2dldF9waHlfbW9kZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMtMTAzNi17XFxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM6MTAzNzpcXHRyZXR1cm4gZndub2RlX2dldF9waHlfbW9kZShkZXZfZndub2RlKGRldikpO1xcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jLTEwMzgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jPTMzMT1zdGF0aWMgaW50IGRwYWEyX21hY19nZXRfaWZfbW9kZShzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZHBtYWNfbm9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy0zMzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jOjMzNzpcXHRlcnIgPSBmd25vZGVfZ2V0X3BoeV9tb2RlKGRwbWFjX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy0zMzgtXFx0aWYgKGVyciBcXHUwMDNlIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYz02ODQwPXN0YXRpYyBpbnQgbXZwcDJfcG9ydF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmMtNjg3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYzo2ODczOlxcdHBoeV9tb2RlID0gZndub2RlX2dldF9waHlfbW9kZShwb3J0X2Z3bm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmMtNjg3NC1cXHRpZiAocGh5X21vZGUgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYz0xMDg0PXN0YXRpYyBpbnQgbGFuOTY2eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmMtMTIwMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYzoxMjAzOlxcdFxcdHBoeV9tb2RlID0gZndub2RlX2dldF9waHlfbW9kZShwb3J0bnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTEyMDQtXFx0XFx0ZXJyID0gbGFuOTY2eF9wcm9iZV9wb3J0KGxhbjk2NngsIHAsIHBoeV9tb2RlLCBwb3J0bnApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz02MTY9c3RhdGljIGludCBpbnRlbF9tZ2JlX2NvbW1vbl9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03MjAtXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo3MjE6XFx0XFx0cGh5X21vZGUgPSBmd25vZGVfZ2V0X3BoeV9tb2RlKGZ3bm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03MjItXFx0XFx0aWYgKHBoeV9tb2RlIFxcdTAwM2U9IDApIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvcHJvcGVydHkuaD01MDM9aW50IGRldmljZV9nZXRfcGh5X21vZGUoc3RydWN0IGRldmljZSAqZGV2KTtcXG5pbmNsdWRlL2xpbnV4L3Byb3BlcnR5Lmg6NTA0OmludCBmd25vZGVfZ2V0X3BoeV9tb2RlKGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUpO1xcbmluY2x1ZGUvbGludXgvcHJvcGVydHkuaC01MDUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjQwOjIzLjEwMDI3MTk0M1oiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MDczMDQ1OTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQWNjZXNzaWJpbGl0eSBvZiBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIHZpYSBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCB0aGluZy4gVGhlIGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBmd25vZGVfZ2V0X3BoeV9tb2RlYCByZWFkcyBmcm9tIGRldmljZSBwcm9wZXJ0aWVzLiBNeSBtYWluIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgY2FuIHN5emthbGxlciBpbmplY3QgdGhvc2UgZGV2aWNlIHByb3BlcnRpZXM/IEl0IGxvb2tzIGxpa2Ugc3l6a2FsbGVyIGNhbiB1c2UgYHN5el91c2JfY29ubmVjdGAgYW5kIGBzeXpfODAyMTFfaW5qZWN0X2ZyYW1lYCBhbmQgdGhlIGxpa2UsIGJ1dCBpdCBkb2Vzbid0IGdlbmVyYWxseSBzdXBwb3J0IGluamVjdGluZyBhcmJpdHJhcnkgQUNQSSBvciBEVCBwcm9wZXJ0aWVzLiBUaGUgc3BlY2lmaWMgZXhhbXBsZSBvZiBgc3RtbWFjYCAoc3BlY2lmaWNhbGx5IGBkd21hYy1pbnRlbGApIHJlYWRzIGBwaHlfbW9kZWAgZnJvbSB0aGUgYGZ3bm9kZWAsIGFuZCBpZiB0aGF0J3Mgbm90IHRoZXJlLCBpdCBkZWZhdWx0cyB0byBzb21ldGhpbmcgZWxzZS4gQnV0IHdhaXQsIGBkd21hYy1pbnRlbGAgaXMgYSBQQ0kgZGV2aWNlLiBDYW4gc3l6a2FsbGVyIGluamVjdCBQQ0kgZGV2aWNlcyB3aXRoIHBhcnRpY3VsYXIgcHJvcGVydGllcz8gU3l6a2FsbGVyICpkb2VzKiBoYXZlIGBzeXpfcGNpX2RldmljZV9hZGRgIHdoaWNoIGxldHMgeW91IGFkZCB2aXJ0dWFsIFBDSSBkZXZpY2VzLCBidXQgcmlnaHQgbm93LCBpdCBkb2Vzbid0IGxvb2sgbGlrZSB0aGF0IHN1cHBvcnRzIGluamVjdGluZyB0aG9zZSBBQ1BJL2Z3bm9kZSBwcm9wZXJ0aWVzLiBTbywgaXQgc2VlbXMgdW5saWtlbHkgdGhhdCBzeXprYWxsZXIgY2FuIGVhc2lseSB0cmlnZ2VyIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlxuXG5CdXQgbGV0J3MgdGhpbmsgb3V0c2lkZSB0aGUgYm94LiBJcyB0aGVyZSAqYW55KiBvdGhlciByb3V0ZT8gUGVyaGFwcyBhIGRyaXZlciBzZXRzIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBhcyBpdHMgZGVmYXVsdD8gSSBjaGVja2VkLCBhbmQgZnJvbSBteSBxdWljayByZXZpZXcgb2YgZHJpdmVycyB1c2luZyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAsIG9ubHkgYHFjYTgwN3guY2AgdXNlcyBpdCBleHBsaWNpdGx5LCBzbyBubyBNQUMgZHJpdmVyIGFwcGVhcnMgdG8gc2V0IGl0IGFzIGEgZGVmYXVsdC4gV2FpdCwgd2hhdCBhYm91dCBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaW5zaWRlIGBwaHlsaW5rX3BhcnNlX21vZGVgPyBSaWdodCwgdGhhdCBwYXJzZXMgdGhlIG1vZGUgZnJvbSB0aGUgZGV2aWNlIHRyZWUuIFNvLCBubyBkZXZpY2UgdHJlZSwgbm8gcGFyc2luZy5cblxuSXMgdGhlcmUgYW55IG5ldGxpbmsgaW50ZXJmYWNlIHRoYXQgbGV0cyB5b3Ugc2V0IHRoZSBQSFkgbW9kZT8gTGV0J3MgY2hlY2sgYHJ0bmxfbGlua19vcHNgIGZvciBhbnkgZHJpdmVyIHRoYXQgZXhwb3NlcyB0aGlzIGZ1bmN0aW9uYWxpdHkuIE5vIGx1Y2suIFBIWSBtb2RlIGxvb2tzIGxpa2UgYSBoYXJkd2FyZSBwcm9wZXJ0eSwgaXTigJlzIG5vdCBjb25maWd1cmFibGUgYXQgcnVudGltZS5cblxuU28sIHRoaXMgcGF0Y2ggaXMgZXNzZW50aWFsbHkgZW5hYmxpbmcgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHdpdGhpbiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgLiBHaXZlbiB0aGF0IGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBzZWVtcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbGlrZSBHQ0Ugb3IgUUVNVSwgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBvciBkZXZpY2UgdHJlZSBpbmplY3Rpb24sIHRoaXMgY2hhbmdlIHNlZW1zIGxpa2UgYSBsb3cteWllbGQgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5MZXQncyBkb3VibGUtY2hlY2ssIHRob3VnaC4gQ2FuIHdlIHNvbWVob3cgZ2V0IGF0IGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCB2aWEgYGV0aHRvb2xgPyBJIHJldmlld2VkIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAgYW5kIGl0IGRvZXNuJ3Qgc2V0IGBjb25maWcuaW50ZXJmYWNlYCwgd2hpY2ggaXMgbm90IGEgZ29vZCBzaWduLiBDYW4gd2UgZG8gaXQgd2l0aCBgU0lPQ1NNSUlSRUdgPyBObywgdGhhdCdzIGp1c3QgZm9yIHJlYWRpbmcvd3JpdGluZyBQSFkgcmVnaXN0ZXJzLiBXaGF0IGFib3V0IGBkZXZsaW5rYD8gSSdsbCBuZWVkIHRvIGNoZWNrIGlmIGBkZXZsaW5rYCBoYXMgYW55IGNvbnRyb2wgb3ZlciBQSFkgbW9kZSwgYnV0IEknbSBsZWFuaW5nIHRvd2FyZHMgdGhpcyBub3QgYmVpbmcgYSB2aWFibGUgZnV6emluZyB0YXJnZXQgYXQgdGhpcyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY0NTYsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6NDA6MzIuMTczMzIxNTY5WiIsIlNlcSI6NTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDk5OTM2NjUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JTlRFUkZBQ0VfTU9ERVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvZGV2bGluay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjQwOjMyLjMyMzMyMzk4NFoiLCJTZXEiOjU3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTgxNzYxMTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQ6IE5vdCBXb3J0aCBGdXp6aW5nKipcblxuT2theSwgc28gdGhlIHNpdHVhdGlvbiBpcyB0aGlzOiBJJ3ZlIGxvb2tlZCBhdCB0aGUgY29kZSwgYW5kIEkndmUgZGV0ZXJtaW5lZCB0aGlzIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gb3VyIGZ1enppbmcgZW52aXJvbm1lbnQuIFNwZWNpZmljYWxseSwgdGhlIG9ubHkgd2F5IHRvIHNldCBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgc2VlbXMgdG8gYmUgdGhyb3VnaCBlaXRoZXIgZGV2aWNlIHRyZWUgKERUKSBjb25maWd1cmF0aW9ucywgQUNQSSwgb3IsIGluIGEgdmVyeSBzcGVjaWZpYyBleGNlcHRpb24sIGhhcmRjb2RpbmcgaXQgd2l0aGluIGEgZHJpdmVyLiBCdXQsIGFuZCB0aGlzIGlzIHRoZSBjcnV4IG9mIGl0LCBubyBzdGFuZGFyZCBkcml2ZXIgaGFyZGNvZGVzIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCB0byBiZSB1c2VkIGZvciB0aGUgY3VycmVudCBjb2RlIGluIHF1ZXN0aW9uLCBvdGhlciB0aGFuIHRoZSBgcWNhODA3eGAgUEhZIGRyaXZlcjsgYW5kIHRoZSBgcWNhODA3eGAgUEhZIGRyaXZlciAqb25seSogc2V0cyBpdCBpZiB0aGUgY29uZmlndXJhdGlvbiBpcyBzcGVjaWZpZWQgaW4gRFQuXG5cblNpbmNlIHdlIGNhbid0IGluamVjdCBhcmJpdHJhcnkgRFQgb3IgQUNQSSBwcm9wZXJ0aWVzIGluIGVudmlyb25tZW50cyBsaWtlIHN5emthbGxlciwgd2UgY2Fubm90IHRyaWdnZXIgdGhhdCBwYXJ0aWN1bGFyIGNvZGUgcGF0aC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHN5emthbGxlciBhbmQgb3RoZXIgc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gc2V0dXBzIChRRU1VL0dDRSkgZG9uJ3QgaGF2ZSB0aGUgbmVjZXNzYXJ5IGhhcmR3YXJlIHRvIHV0aWxpemUgdGhpcyBzZXR0aW5nIG9yIGNvbmZpZ3VyZSB0aGUgc3lzdGVtIGluIHN1Y2ggYSB3YXkuXG5cblRoZXJlZm9yZSwgbG9va2luZyBhdCB0aGUgZnV6emluZyBndWlkZWxpbmVzLCB0aGlzIHBhdGNoIHNxdWFyZWx5IGZhbGxzIHVuZGVyIHRoZSBjcml0ZXJpYTogXCJDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmVcIi4gVGhlIGhhcmR3YXJlLCBvciBpdHMgZW11bGF0ZWQgZXF1aXZhbGVudCwgaXMganVzdCBub3QgdGhlcmUsIGFuZCB3ZSBjYW4ndCBtYWtlIGl0IGFwcGVhci5cblxuU28sIGluIHNob3J0LCB3aGlsZSB0aGUgcGF0Y2ggaXRzZWxmIGlzIGZpbmUsIHRyaWdnZXJpbmcgaXRzIGludGVuZGVkIGZ1bmN0aW9uYWxpdHkgaXMgaW1wb3NzaWJsZSBpbiBvdXIgY3VycmVudCBmdXp6aW5nIHNldHVwLiBJJ20gY29uZmlkZW50bHkgc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzc0OCwiT3V0cHV0VG9rZW5zIjoxNTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6NDA6NDEuMzA1MDg4ODM0WiIsIlNlcSI6NTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY4NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIHRvIHRoZSBzd2l0Y2ggc3RhdGVtZW50IGluIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKCkuIFRoZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIGludGVyZmFjZSBtb2RlIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiB0aGF0IGlzIHR5cGljYWxseSBzZXQgdmlhIERldmljZSBUcmVlIChEVCkgb3IgQUNQSSBwcm9wZXJ0aWVzIChlLmcuLCBpbiB0aGUgcWNhODA3eCBQSFkgZHJpdmVyKS4gU2luY2Ugc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzIGRvIG5vdCBoYXZlIHRoZSBzcGVjaWZpYyBoYXJkd2FyZSB0aGF0IHVzZXMgdGhpcyBtb2RlLCBub3IgZG8gdGhleSBpbmplY3QgYXJiaXRyYXJ5IERUL0FDUEkgcHJvcGVydGllcyB0byB0cmlnZ2VyIGl0LCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIHRvIHRoZSBzd2l0Y2ggc3RhdGVtZW50IGluIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKCkuIFRoZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIGludGVyZmFjZSBtb2RlIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiB0aGF0IGlzIHR5cGljYWxseSBzZXQgdmlhIERldmljZSBUcmVlIChEVCkgb3IgQUNQSSBwcm9wZXJ0aWVzIChlLmcuLCBpbiB0aGUgcWNhODA3eCBQSFkgZHJpdmVyKS4gU2luY2Ugc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzIGRvIG5vdCBoYXZlIHRoZSBzcGVjaWZpYyBoYXJkd2FyZSB0aGF0IHVzZXMgdGhpcyBtb2RlLCBub3IgZG8gdGhleSBpbmplY3QgYXJiaXRyYXJ5IERUL0FDUEkgcHJvcGVydGllcyB0byB0cmlnZ2VyIGl0LCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6NDA6NDEuMzA1MTE4NzU0WiIsIlNlcSI6NTksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowbll8x[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-08 02:21:47 +0000 UTC FinishedAt: 2026-08-08 02:40:42 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIHRvIHRoZSBzd2l0Y2ggc3RhdGVtZW50IGluIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKCkuIFRoZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIGludGVyZmFjZSBtb2RlIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiB0aGF0IGlzIHR5cGljYWxseSBzZXQgdmlhIERldmljZSBUcmVlIChEVCkgb3IgQUNQSSBwcm9wZXJ0aWVzIChlLmcuLCBpbiB0aGUgcWNhODA3eCBQSFkgZHJpdmVyKS4gU2luY2Ugc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzIGRvIG5vdCBoYXZlIHRoZSBzcGVjaWZpYyBoYXJkd2FyZSB0aGF0IHVzZXMgdGhpcyBtb2RlLCBub3IgZG8gdGhleSBpbmplY3QgYXJiaXRyYXJ5IERUL0FDUEkgcHJvcGVydGllcyB0byB0cmlnZ2VyIGl0LCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGEwZmIxM2ViODMwMWQzYTJjNWNkNjNkMjkwOTFkMzI1ZTBiNDk3YmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyA4IDAyOjM4OjEyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5pbmRleCAxOGQyZWFkOTdhYTU0Li45ODNhMWEzY2VlMzc0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuQEAgLTEwNDAsNiAmIzQzOzEwNDAsNyBAQCBzdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuIHtcbiBcdHN3aXRjaCAoaW50ZXJmYWNlKSB7XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbiYjNDM7XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4gXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RVVNHTUlJOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSTpcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIHRvIHRoZSBzd2l0Y2ggc3RhdGVtZW50IGluIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKCkuIFRoZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIGludGVyZmFjZSBtb2RlIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiB0aGF0IGlzIHR5cGljYWxseSBzZXQgdmlhIERldmljZSBUcmVlIChEVCkgb3IgQUNQSSBwcm9wZXJ0aWVzIChlLmcuLCBpbiB0aGUgcWNhODA3eCBQSFkgZHJpdmVyKS4gU2luY2Ugc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzIGRvIG5vdCBoYXZlIHRoZSBzcGVjaWZpYyBoYXJkd2FyZSB0aGF0IHVzZXMgdGhpcyBtb2RlLCBub3IgZG8gdGhleSBpbmplY3QgYXJiaXRyYXJ5IERUL0FDUEkgcHJvcGVydGllcyB0byB0cmlnZ2VyIGl0LCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGEwZmIxM2ViODMwMWQzYTJjNWNkNjNkMjkwOTFkMzI1ZTBiNDk3YmYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyA4IDAyOjM4OjEyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKaW5kZXggMThkMmVhZDk3YWE1NC4uOTgzYTFhM2NlZTM3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jCkBAIC0xMDQwLDYgJiM0MzsxMDQwLDcgQEAgc3RhdGljIGVudW0gaW5iYW5kX3R5cGUgcGh5bGlua19nZXRfaW5iYW5kX3R5cGUocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSkKIHsKIAlzd2l0Y2ggKGludGVyZmFjZSkgewogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOgomIzQzOwljYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOgogCWNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FVU0dNSUk6CiAJY2FzZSBQSFlfSU5URVJGQUNFX01PREVfVVNYR01JSToKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk4OAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6CgoqKkFuYWx5emluZyB0aGUgUEhZTGluayBQYXRjaCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0JiMzOTtzIGJlZW4gYXBwbGllZCwgYW5kIGl0IHNlZW1zIHRvIGhhdmUgdG91Y2hlZCB0aGUgYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKClgIGZ1bmN0aW9uIHdpdGhpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AuIFRoZSBjb3JlIGNoYW5nZSBhcHBlYXJzIHRvIGJlIHRoZSBhZGRpdGlvbiBvZiBhIGBjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6YCBzdGF0ZW1lbnQgd2l0aGluIHRoYXQgZnVuY3Rpb24uIFRoaXMgaW1tZWRpYXRlbHkgdGVsbHMgbWUgd2UmIzM5O3JlIGV4dGVuZGluZyB0aGUgc3VwcG9ydGVkIGluLWJhbmQgc2lnbmFsaW5nIHR5cGVzIHJlY29nbml6ZWQgYnkgUEhZTGluayB0byBpbmNsdWRlIHNvbWV0aGluZyByZWxhdGVkIHRvIFBTR01JSS4gTXkgZmlyc3QgdGhvdWdodCBpczogSSBuZWVkIHRvIHF1aWNrbHkgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mICpleGFjdGx5KiBob3cgYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKClgIGlzIHVzZWQgYW5kIHdoeSB0aGlzIGFkZGl0aW9uIGlzIHNpZ25pZmljYW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGltcGxpY2F0aW9uIHRoaXMgY2hhbmdlIGhhcy4gSXMgdGhpcyBhZGRpbmcgc3VwcG9ydCBmb3IgbmV3IGhhcmR3YXJlLCBvciBmaXhpbmcgYSBidWcsIG9yIGNoYW5naW5nIHRoZSBzdGFuZGFyZCBpbiBzb21lIHdheT8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlsaW5rX2dldF9pbmJhbmRfdHlwZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDMzPWVudW0gaW5iYW5kX3R5cGUge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTAzOC1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTAzOTpzdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQwLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTEwOTA9c3RhdGljIHZvaWQgcGh5bGlua19wY3NfbmVnX21vZGUoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwOTgtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwOTk6XHR0eXBlID0gcGh5bGlua19nZXRfaW5iYW5kX3R5cGUoaW50ZXJmYWNlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTEwMC1cdGlmICh0eXBlID09IElOQkFORF9OT05FKSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNzU2PXN0YXRpYyBpbnQgcGh5bGlua19zZnBfY29uZmlnX29wdGljYWwoc3RydWN0IHBoeWxpbmsgKnBsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzgwNi1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzgwNzpcdGluYmFuZF90eXBlID0gcGh5bGlua19nZXRfaW5iYW5kX3R5cGUoaW50ZXJmYWNlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzgwOC1cdGlmIChpbmJhbmRfdHlwZSA9PSBJTkJBTkRfTk9ORSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NDkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgU21hbGwgQ29kZSBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBleHBlcnQgZXllIGhvbmVzIGluIG9uIHRoZSBjb3JlIG9mIHRoZSBtb2RpZmljYXRpb246IGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBiZWluZyBhZGRlZCB0byB0aGUgYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlYCBmdW5jdGlvbiYjMzk7cyBzd2l0Y2ggc3RhdGVtZW50LiBJdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbiwgd2hpY2ggbWVhbnMgaXQmIzM5O3MgbGltaXRlZCBpbiBzY29wZS4gSXQmIzM5O3MgY2FsbGVkIGJ5IGBwaHlsaW5rX3Bjc19uZWdfbW9kZWAgYW5kIGBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbGAsIHNvIHRob3NlIGFyZSB0aGUga2V5IGFyZWFzIGltcGFjdGVkLiBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCAmIzM0O0lzIHRoaXMgd29ydGggbXkgdGltZSB0byBmdXp6LCBvciBldmVuIGxvb2sgaW50byBkZWVwbHk/JiMzNDsKCk9uIHRoZSBzdXJmYWNlLCBpdCYjMzk7cyB0aW55OyBqdXN0IGFkZGluZyBhIGNvbnN0YW50IHRvIGEgc3dpdGNoLiBCdXQuLi4gZG9lcyBpdCBoYXZlICpmdW5jdGlvbmFsKiBpbXBhY3Q/IFRoZSBhbnN3ZXIgaXMgJiMzNDt5ZXMuJiMzNDsgVGhpcyBzbWFsbCBjaGFuZ2UgKmRvZXMqIGNoYW5nZSB0aGUgcmV0dXJuIHZhbHVlIG9mIGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAgc3BlY2lmaWNhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYC4gSXQgZ29lcyBmcm9tIGEgZGVmYXVsdCB2YWx1ZSBvZiBgSU5CQU5EX05PTkVgIHRvIGBJTkJBTkRfQU5ZYCAob3Igd2hhdGV2ZXIgdGhlIG90aGVyIGNhc2VzIHJldHVybiwgZGVwZW5kaW5nIG9uIHRoZSBzd2l0Y2ggbG9naWMpLgoKVGhlcmVmb3JlLCBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBzd2l0Y2ggc3RhdGVtZW50IGluIGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAuIEkgbmVlZCB0byBhc3Nlc3MgdGhlIGNvbnRleHQgb2YgdGhlIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMDM5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEwMzk6XHRzdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuMTA0MDpcdHtcbjEwNDE6XHRcdHN3aXRjaCAoaW50ZXJmYWNlKSB7XG4xMDQyOlx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbjEwNDM6XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbjEwNDQ6XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbjEwNDU6XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FVU0dNSUk6XG4xMDQ2Olx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9VU1hHTUlJOlxuMTA0NzpcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTBHX1FYR01JSTpcbjEwNDg6XHRcdFx0LyogVGhlc2UgcHJvdG9jb2xzIGFyZSBkZXNpZ25lZCBmb3IgdXNlIHdpdGggYSBQSFkgd2hpY2hcbjEwNDk6XHRcdFx0ICogY29tbXVuaWNhdGVzIGl0cyBuZWdvdGlhdGlvbiByZXN1bHQgYmFjayB0byB0aGUgTUFDIHZpYVxuMTA1MDpcdFx0XHQgKiBpbmJhbmQgY29tbXVuaWNhdGlvbi4gTm90ZTogdGhlcmUgZXhpc3QgUEhZcyB0aGF0IHJ1blxuMTA1MTpcdFx0XHQgKiB3aXRoIFNHTUlJIGJ1dCBkbyBub3Qgc2VuZCB0aGUgaW5iYW5kIGRhdGEuXG4xMDUyOlx0XHRcdCAqL1xuMTA1MzpcdFx0XHRyZXR1cm4gSU5CQU5EX0NJU0NPX1NHTUlJO1xuMTA1NDpcdFxuMTA1NTpcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMTAwMEJBU0VYOlxuMTA1NjpcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYOlxuMTA1NzpcdFx0XHQvKiAxMDAwYmFzZS1YIGlzIGRlc2lnbmVkIGZvciB1c2UgbWVkaWEtc2lkZSBmb3IgRmlicmVcbjEwNTg6XHRcdFx0ICogY29ubmVjdGlvbnMsIGFuZCB0aHVzIHRoZSBBdXRvbmVnIGJpdCBuZWVkcyB0byBiZVxuMTA1OTpcdFx0XHQgKiB0YWtlbiBpbnRvIGFjY291bnQuIFdlIGFsc28gZG8gdGhpcyBmb3IgMjUwMGJhc2UtWFxuMTA2MDpcdFx0XHQgKiBhcyB3ZWxsLCBidXQgZHJpdmVycyBtYXkgbm90IHN1cHBvcnQgdGhpcywgc28gbWF5XG4xMDYxOlx0XHRcdCAqIG5lZWQgdG8gb3ZlcnJpZGUgdGhpcy5cbjEwNjI6XHRcdFx0ICovXG4xMDYzOlx0XHRcdHJldHVybiBJTkJBTkRfQkFTRVg7XG4xMDY0Olx0XG4xMDY1Olx0XHRkZWZhdWx0OlxuMTA2NjpcdFx0XHRyZXR1cm4gSU5CQU5EX05PTkU7XG4xMDY3Olx0XHR9XG4xMDY4Olx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MzQKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRnVuY3Rpb25hbCBDaGFuZ2UgaW4gUEhZIExpbmsgTWFuYWdlbWVudCoqCgpPa2F5LCBzbyBJIHNlZSBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgY29kZSBtb2RpZmljYXRpb24gaGVyZS4gV2UmIzM5O3JlIGNoYW5naW5nIHRoZSByZXR1cm4gdmFsdWUgZnJvbSBgSU5CQU5EX05PTkVgIHRvIGBJTkJBTkRfQ0lTQ09fU0dNSUlgLiBTZWVtcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYXQgZmFjZSB2YWx1ZS4gTm93LCB0aGUgcXVlc3Rpb24gaXMsIGhvdyBicm9hZGx5IGRvZXMgdGhpcyBpbXBhY3QgdGhlIHN5c3RlbT8KClNwZWNpZmljYWxseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlYWNoIG9mIHRoaXMgbmV3IGNvZGUgcGF0aC4gVGhpcyBpbnZvbHZlcyBgcGh5bGlua2AsIHRoZSBQSFkgbGluayBtYW5hZ2VtZW50IGZyYW1ld29yay4gU2luY2UgYHBoeWxpbmtgIGlzIHByZXR0eSB1YmlxdWl0b3VzIGFuZCBsZXZlcmFnZWQgYWNyb3NzIGEgbG90IG9mIG5ldHdvcmsgZHJpdmVycywgSSBuZWVkIHRvIGFzY2VydGFpbiBpZiB0aGlzIGNoYW5nZSBoYXMgdGhlIHBvdGVudGlhbCB0byBjYXVzZSBpc3N1ZXMgZnVydGhlciBkb3duIHRoZSBsaW5lLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZXhhY3QgY29kZSBwYXRocyB0aGF0IGFyZSBhZmZlY3RlZC4KCkFyZSB3ZSBsb29raW5nIGF0IHRoaXMgaW1wYWN0aW5nIGBwaHlsaW5rX3Bjc19uZWdfbW9kZWAgb3IgcG90ZW50aWFsbHkgYHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsYD8gVGltZSB0byBmaWd1cmUgb3V0IHdobyBpcyBjYWxsaW5nIGBwaHlsaW5rX3Bjc19uZWdfbW9kZWAgdG8gZW5zdXJlIGEgZnVsbCBpbXBhY3QgYXNzZXNzbWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlsaW5rX3Bjc19uZWdfbW9kZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDcwLS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDcxOiAqIHBoeWxpbmtfcGNzX25lZ19tb2RlKCkgLSBoZWxwZXIgdG8gZGV0ZXJtaW5lIFBDUyBpbmJhbmQgbW9kZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDcyLSAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDg5LSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDkwOnN0YXRpYyB2b2lkIHBoeWxpbmtfcGNzX25lZ19tb2RlKHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwOTEtXHRcdFx0XHQgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTEyNDA9c3RhdGljIHZvaWQgcGh5bGlua19tYWpvcl9jb25maWcoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIHJlc3RhcnQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMjY3LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMjY4Olx0cGh5bGlua19wY3NfbmVnX21vZGUocGwsIHBjcywgc3RhdGUtXHUwMDNlaW50ZXJmYWNlLCBzdGF0ZS1cdTAwM2VhZHZlcnRpc2luZyk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEyNjktXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMzc2PXN0YXRpYyBpbnQgcGh5bGlua19jaGFuZ2VfaW5iYW5kX2FkdmVydChzdHJ1Y3QgcGh5bGluayAqcGwpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMzg5LVx0LyogUmVjb21wdXRlIHRoZSBQQ1MgbmVnIG1vZGUgKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTM5MDpcdHBoeWxpbmtfcGNzX25lZ19tb2RlKHBsLCBwbC1cdTAwM2VwY3MsIHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTM5MS1cdFx0XHQgICAgIHBsLVx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDU3CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFBoeWxpbmsgSW52ZXN0aWdhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgaW50byBob3cgYHBoeWxpbmtgIGlzIHVzZWQgYW5kIGhvdyB0byB0ZXN0IGl0LiBJIHNlZSB0aGF0IGJvdGggYHBoeWxpbmtfbWFqb3JfY29uZmlnYCBhbmQgYHBoeWxpbmtfY2hhbmdlX2luYmFuZF9hZHZlcnRgIGNhbGwgYHBoeWxpbmtfcGNzX25lZ19tb2RlYC4gYHBoeWxpbmtfbWFqb3JfY29uZmlnYCwgaW4gdHVybiwgaXMgdHJpZ2dlcmVkIGJ5IGBwaHlsaW5rX21hY19jb25maWdgLiBTbywgdGhhdCYjMzk7cyB0aGUgY29yZSBmbG93LgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uOiB3aGljaCBkcml2ZXJzIHJlbHkgb24gYHBoeWxpbmtgPyBJIGluaXRpYWxseSB0aG91Z2h0IGB2aXJ0aW9fbmV0YCBtaWdodCBiZSBhIGNvbnRlbmRlciwgYnV0IG5vcGUsIHRoYXQmIzM5O3Mgbm90IHRoZSBjYXNlLiBPa2F5LCB3aGF0IGFib3V0IHZpcnR1YWwgaW50ZXJmYWNlcz8gTm8sIGB0dW5gIGFuZCBgdmV0aGAgYXJlbiYjMzk7dCB1c2luZyBgcGh5bGlua2AgZWl0aGVyLiBUaGVuIEkgbG9va2VkIGF0IGBtYWNiYCwgYW5kIHllcywgdGhhdCBvbmUgdXNlcyBpdC4gQW5kIGBzdG1tYWNgPyBEZWZpbml0ZWx5IHVzZXMgYHBoeWxpbmtgIGFzIHdlbGwuCgpUaGUgZ29hbCBpcyB0byBkZXRlcm1pbmUgaWYgSSBjYW4gdHJpZ2dlciBgcGh5bGlua2AgbG9naWMgdXNpbmcgYSB2aXJ0dWFsIG9yIGR1bW15IGRyaXZlciBzZXR1cCBmb3IgdGVzdGluZyBwdXJwb3Nlcy4gSXMgdGhlcmUgYSBkdW1teSBwaHlsaW5rIGRyaXZlcj8gT3IgcGVyaGFwcyBhIG5ldHdvcmsgZHJpdmVyIEkgY2FuIHVzZSB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50PwoKTGV0JiMzOTtzIHJ1bGUgb3V0IHNvbWUgcG90ZW50aWFsIGNhbmRpZGF0ZXMuIGBlMTAwMGVgIGFuZCBgaWdiYCBkb24mIzM5O3QgbGV2ZXJhZ2UgYHBoeWxpbmtgIGZyb20gd2hhdCBJIGNhbiBzZWUuIEhvd2V2ZXIsIGBzdG1tYWNgIG1pZ2h0IGJlIHByb21pc2luZyBzaW5jZSBpdCYjMzk7cyB1c2VkIGluIHNvbWUgQVJNIFFFTVUgaW5zdGFuY2VzLiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgcG9zc2liaWxpdHkgZm9yIG15IHRlc3Qgc2V0dXAuIEkgc2hvdWxkIGV4cGxvcmUgdGhpcyBmdXJ0aGVyLgoKQW5kIGZpbmFsbHksIHdoYXQgYWJvdXQgYG5ldGRldnNpbWA/IERvZXMgdGhhdCBwbGF5IHdpdGggYHBoeWxpbmtgPyBUaGF0IHdvdWxkIGJlIGEgZ29vZCB0b29sIGlmIGl0IGRvZXMuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB0aGF0IG9wdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlsaW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxMDIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeHBsb3JpbmcgUGh5bGluayBEcml2ZXJzIGZvciBGdXp6aW5nIE9wcG9ydHVuaXRpZXMqKgoKT2theSwgbGV0JiMzOTtzIHNlZSBpZiB3ZSBjYW4gaWRlbnRpZnkgYW55IG90aGVyIG5ldHdvcmsgZHJpdmVycyB0aGF0IGxldmVyYWdlIHRoZSBgcGh5bGlua2AgZnJhbWV3b3JrLCBhbmQgdGhhdCBtaWdodCBwcmVzZW50IGdvb2QgdGFyZ2V0cyBmb3IgZnV6emluZy4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgdGhlIGBkcml2ZXJzL25ldC9kc2EvYCBkaXJlY3Rvcnkgc3ByaW5ncyB0byBtaW5kIGFzIGEgbGlrZWx5IGNhbmRpZGF0ZSwgc2luY2UgRFNBIChEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlKSB1dGlsaXplcyBgcGh5bGlua2AgcXVpdGUgZXh0ZW5zaXZlbHkuIE5vdywgdGhlIHF1ZXN0aW9uIGJlY29tZXM6IGhvdyBjYW4gd2UgdGVzdCB0aGlzPyBJIGtub3cgd2UmIzM5O3ZlIGdvdCBhIGNvdXBsZSBvZiBvcHRpb25zOiBgZHNhX2xvb3BgIGFuZCBgbmV0ZGV2c2ltYC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgZHNhX2xvb3BgIGFuZCBzZWUgd2hhdCB0aGF0IG9mZmVycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5bGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTMyMT1zdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfbWF4X210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkc2EsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzI3Olx0XHRcdFx0ICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTMzND1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGRzYV9sb29wX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTEtXHQucG9ydF9tYXhfbXR1XHRcdD0gZHNhX2xvb3BfcG9ydF9tYXhfbXR1LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUyOlx0LnBoeWxpbmtfZ2V0X2NhcHNcdD0gZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1My19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjU3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBQaHlsaW5rIFVzYWdlIGluIHRoZSBLZXJuZWwgTmV0d29yayBTdGFjayoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgaW50byBob3cgYHBoeWxpbmtgIGlzIHVzZWQgd2l0aGluIHRoZSBuZXR3b3JrIHN0YWNrLCBzcGVjaWZpY2FsbHkgaXRzIHJlbGF0aW9uc2hpcCB3aXRoIGRpZmZlcmVudCBkcml2ZXJzLiBJIHNlZSB0aGF0IGBkc2FfbG9vcGAgZXhwbGljaXRseSB1c2VzIGBwaHlsaW5rYCB3aGljaCBpcyBleHBlY3RlZCBhcyBpdCYjMzk7cyBhIE1BQyBkZXZpY2UuIE5vdywgSSYjMzk7bSBjaGVja2luZyB0byBzZWUgaWYgdGhpcyBpcyBjb25zaXN0ZW50LiBJIGtub3cgdGhhdCBgZHJpdmVycy9uZXQvZHVtbXkuY2AgZG9lc24mIzM5O3QgdXNlIGBwaHlsaW5rYCwgdGhhdCYjMzk7cyBzdHJhaWdodGZvcndhcmQuIE5vdywgbGV0JiMzOTtzIGNvbnNpZGVyIGBkcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmNgLiBUaGF0JiMzOTtzIGEgUEhZIGRyaXZlciwgbm90IGEgTUFDLCBzbyBpdCB3b3VsZG4mIzM5O3QgZGlyZWN0bHkgaW50ZXJmYWNlIHdpdGggYHBoeWxpbmtgIGluIHRoZSBzYW1lIHdheS4gVGhlIHByaW1hcnkgdXNlIGNhc2Ugb2YgYHBoeWxpbmtgIGFwcGVhcnMgdG8gYmUgaW4gdGhlIGNvbm5lY3Rpb24gYmV0d2VlbiBhIE1BQyBhbmQgYSBQSFkuCgpUaGUgbmV4dCB0aGluZyB0byBpbnZlc3RpZ2F0ZSBpcyB3aGV0aGVyIG9yIG5vdCBgZHNhX2xvb3BgIGNvdWxkIGJlIHJlc3BvbnNpYmxlIGZvciB0cmlnZ2VyaW5nIGBwaHlsaW5rX21ham9yX2NvbmZpZ2AuIEkmIzM5O2xsIGNvbmZpcm0gdGhhdCBEU0EgcG9ydCBicmluZy11cCBjYWxscyBgcGh5bGlua19zdGFydGAuIFRoaXMgbWFrZXMgc2Vuc2UsIGFzIHRoYXQmIzM5O3Mgd2hlcmUgdGhlIE1BQy1QSFkgc2V0dXAgd291bGQgb2NjdXIuIEkgbmVlZCB0byBleGFtaW5lIGBwaHlsaW5rX3N0YXJ0YCBkaXJlY3RseSB0byB2ZXJpZnkgdGhlIGZsb3cgb2YgY29udHJvbCBhbmQgZGV0ZXJtaW5lIGhvdyB0aGUgY29uZmlndXJhdGlvbiBhY3R1YWxseSBnZXRzIGltcGxlbWVudGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlsaW5rX3N0YXJ0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0MTU9c3RhdGljIGlycXJldHVybl90IHBoeWxpbmtfbGlua19oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDI0LS8qKlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNDI1OiAqIHBoeWxpbmtfc3RhcnQoKSAtIHN0YXJ0IGEgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDI2LSAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDMxLSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNDMyOnZvaWQgcGh5bGlua19zdGFydChzdHJ1Y3QgcGh5bGluayAqcGwpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0MzMte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ4Ny19XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0ODg6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zdGFydCk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0ODktXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjg2PXZvaWQgcGh5bGlua19yZXN1bWUoc3RydWN0IHBoeWxpbmsgKnBsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjcxNi1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI3MTc6XHRcdHBoeWxpbmtfc3RhcnQocGwpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzE4LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDM5MT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3JlcGxheV9saW5rX2JlZ2luKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQ0MDEtICpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDQwMjogKiBUaGlzIGlzIHNpbWlsYXIgdG8gcGh5bGlua19zdGFydCgpLCBleGNlcHQgaXQgZG9lcyBub3QgYWx0ZXIgdGhlIHN0YXRlIG9mXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQ0MDMtICogdGhlIHBoeWxpYiBQSFkuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY1NDcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byBQSFkgSW5pdGlhbGl6YXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBQSFkgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBpcyBraWNrZWQgb2ZmLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB6ZXJvIGluIG9uIGBwaHlsaW5rX3N0YXJ0YC4gSSYjMzk7bSB0aGlua2luZyBpdCYjMzk7cyBsaWtlbHkgcmVzcG9uc2libGUgZm9yIGVpdGhlciBjYWxsaW5nIGBwaHlsaW5rX21hY19pbml0aWFsX2NvbmZpZ2AgZGlyZWN0bHksIG9yIHBlcmhhcHMgdHJpZ2dlcmluZyBhIGZ1bmN0aW9uIHRoYXQgKnVsdGltYXRlbHkqIGxlYWRzIHRvIHRoYXQgY29uZmlndXJhdGlvbiBzdGVwLiBHaXZlbiB0aGF0IGBwaHlsaW5rX3N0YXJ0YCBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIGVudHJ5IHBvaW50IGZvciBQSFkgYnJpbmctdXAsIGl0IG1ha2VzIHNlbnNlIHRvIHN0YXJ0IHRoZSBpbnZlc3RpZ2F0aW9uIHRoZXJlLiBJIG5lZWQgdG8gY29uZmlybSB3aGV0aGVyIG15IGh5cG90aGVzaXMgaXMgY29ycmVjdCBieSBsb29raW5nIGF0IHRoZSBjb2RlLiBUaW1lIHRvIGRpZyBpbiBhbmQgdmVyaWZ5IHRoZSBjb250cm9sIGZsb3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI0MzIsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjQzMjpcdHZvaWQgcGh5bGlua19zdGFydChzdHJ1Y3QgcGh5bGluayAqcGwpXG4yNDMzOlx0e1xuMjQzNDpcdFx0Ym9vbCBwb2xsID0gZmFsc2U7XG4yNDM1Olx0XG4yNDM2Olx0XHRBU1NFUlRfUlROTCgpO1xuMjQzNzpcdFxuMjQzODpcdFx0cGh5bGlua19pbmZvKHBsLCBcJiMzNDtjb25maWd1cmluZyBmb3IgJXMvJXMgbGluayBtb2RlXFxuXCYjMzQ7LFxuMjQzOTpcdFx0XHQgICAgIHBoeWxpbmtfYW5fbW9kZV9zdHIocGwtXHUwMDNlcmVxX2xpbmtfYW5fbW9kZSksXG4yNDQwOlx0XHRcdCAgICAgcGh5X21vZGVzKHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSkpO1xuMjQ0MTpcdFxuMjQ0MjpcdFx0LyogQWx3YXlzIHNldCB0aGUgY2FycmllciBvZmYgKi9cbjI0NDM6XHRcdGlmIChwbC1cdTAwM2VuZXRkZXYpXG4yNDQ0Olx0XHRcdG5ldGlmX2NhcnJpZXJfb2ZmKHBsLVx1MDAzZW5ldGRldik7XG4yNDQ1Olx0XG4yNDQ2Olx0XHRwbC1cdTAwM2VwY3Nfc3RhdGUgPSBQQ1NfU1RBVEVfU1RBUlRJTkc7XG4yNDQ3Olx0XG4yNDQ4Olx0XHQvKiBBcHBseSB0aGUgbGluayBjb25maWd1cmF0aW9uIHRvIHRoZSBNQUMgd2hlbiBzdGFydGluZy4gVGhpcyBhbGxvd3NcbjI0NDk6XHRcdCAqIGEgZml4ZWQtbGluayB0byBzdGFydCB3aXRoIHRoZSBjb3JyZWN0IHBhcmFtZXRlcnMsIGFuZCBhbHNvXG4yNDUwOlx0XHQgKiBlbnN1cmVzIHRoYXQgd2Ugc2V0IHRoZSBhcHByb3ByaWF0ZSBhZHZlcnRpc2VtZW50IGZvciBTZXJkZXMgbGlua3MuXG4yNDUxOlx0XHQgKlxuMjQ1MjpcdFx0ICogUmVzdGFydCBhdXRvbmVnb3RpYXRpb24gaWYgdXNpbmcgODAyLjN6IHRvIGVuc3VyZSB0aGF0IHRoZSBsaW5rXG4yNDUzOlx0XHQgKiBwYXJhbWV0ZXJzIGFyZSBwcm9wZXJseSBuZWdvdGlhdGVkLiAgVGhpcyBpcyBuZWNlc3NhcnkgZm9yIERTQVxuMjQ1NDpcdFx0ICogc3dpdGNoZXMgdXNpbmcgODAyLjN6IG5lZ290aWF0aW9uIHRvIGVuc3VyZSB0aGV5IHNlZSBvdXIgbW9kZXMuXG4yNDU1Olx0XHQgKi9cbjI0NTY6XHRcdHBoeWxpbmtfbWFjX2luaXRpYWxfY29uZmlnKHBsLCB0cnVlKTtcbjI0NTc6XHRcbjI0NTg6XHRcdHBsLVx1MDAzZXBjc19zdGF0ZSA9IFBDU19TVEFURV9TVEFSVEVEO1xuMjQ1OTpcdFxuMjQ2MDpcdFx0cGh5bGlua19lbmFibGVfYW5kX3J1bl9yZXNvbHZlKHBsLCBQSFlMSU5LX0RJU0FCTEVfU1RPUFBFRCk7XG4yNDYxOlx0XG4yNDYyOlx0XHRpZiAocGwtXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQgXHUwMDI2XHUwMDI2IHBsLVx1MDAzZWxpbmtfZ3Bpbykge1xuMjQ2MzpcdFx0XHRpbnQgaXJxID0gZ3Bpb2RfdG9faXJxKHBsLVx1MDAzZWxpbmtfZ3Bpbyk7XG4yNDY0Olx0XG4yNDY1Olx0XHRcdGlmIChpcnEgXHUwMDNlIDApIHtcbjI0NjY6XHRcdFx0XHRpZiAoIXJlcXVlc3RfaXJxKGlycSwgcGh5bGlua19saW5rX2hhbmRsZXIsXG4yNDY3Olx0XHRcdFx0XHRcdCBJUlFGX1RSSUdHRVJfUklTSU5HIHxcbjI0Njg6XHRcdFx0XHRcdFx0IElSUUZfVFJJR0dFUl9GQUxMSU5HLFxuMjQ2OTpcdFx0XHRcdFx0XHQgXCYjMzQ7bmV0ZGV2IGxpbmtcJiMzNDssIHBsKSlcbjI0NzA6XHRcdFx0XHRcdHBsLVx1MDAzZWxpbmtfaXJxID0gaXJxO1xuMjQ3MTpcdFx0XHRcdGVsc2VcbjI0NzI6XHRcdFx0XHRcdGlycSA9IDA7XG4yNDczOlx0XHRcdH1cbjI0NzQ6XHRcdFx0aWYgKGlycSBcdTAwM2M9IDApXG4yNDc1Olx0XHRcdFx0cG9sbCA9IHRydWU7XG4yNDc2Olx0XHR9XG4yNDc3Olx0XG4yNDc4Olx0XHRpZiAocGwtXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQpXG4yNDc5Olx0XHRcdHBvbGwgfD0gcGwtXHUwMDNlY29uZmlnLVx1MDAzZXBvbGxfZml4ZWRfc3RhdGU7XG4yNDgwOlx0XG4yNDgxOlx0XHRpZiAocG9sbClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzUzOAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkluaXRpYWwgUGh5bGluayBNQUMgQ29uZmlndXJhdGlvbiAtIFRpbWUgdG8gRGlnIEluKioKCk9rYXksIHNvIGBwaHlsaW5rX21hY19pbml0aWFsX2NvbmZpZ2AgaGFzIGJlZW4gY2FsbGVkLiBUaGF0JiMzOTtzIHRoZSBlbnRyeSBwb2ludCB3ZSYjMzk7cmUgaW50ZXJlc3RlZCBpbiwgdGhlIHBsYWNlIHdoZXJlIHRoZSBNQUMmIzM5O3MgaW5pdGlhbCBjb25maWd1cmF0aW9uIGZvciB0aGUgUEhZIGxpbmsgZ2V0cyBzZXQgdXAuIE15IGV4cGVydCBpbnR1aXRpb24gdGVsbHMgbWUgdGhpcyBpcyB3aGVyZSB0aGUgY29yZSBwYXJhbWV0ZXJzIGFyZSB1c3VhbGx5IGluaXRpYWxpemVkIOKAkyBhdXRvLW5lZ290aWF0aW9uLCBzcGVlZC9kdXBsZXggc2V0dGluZ3MsIHBvc3NpYmx5IHNvbWUgYmFzaWMgZXJyb3IgY29ycmVjdGlvbiBzdHVmZiwgdGhlIHdob2xlIHNoZWJhbmcuIExldCYjMzk7cyBzZWUgd2hhdCB0aGV5JiMzOTt2ZSBkb25lIHdpdGggaXQuIEkmIzM5O2xsIG5lZWQgdG8gbWV0aWN1bG91c2x5IGNoZWNrIHdoYXQgdGhlIGNhbGxpbmcgYXJndW1lbnRzIGFyZSwgYW5kIHRoZW4gSSYjMzk7bGwgZXhhbWluZSB0aGUgZnVuY3Rpb24mIzM5O3MgbG9naWMgbGluZSBieSBsaW5lLiBJ4oCZbGwgYmUgbG9va2luZyBmb3IgYW55IHBvdGVudGlhbCBmb3IgZnV0dXJlIGlzc3VlcyBpbiB0aGUgc2V0dXAsIGZvY3VzaW5nIG9uIGFzcGVjdHMgdGhhdCBjb3VsZCBpbnRlcmFjdCBzdHJhbmdlbHkgd2l0aCBjZXJ0YWluIHVuY29tbW9uIFBIWXMsIG9yIHRoYXQgZGVwZW5kIHRvbyBoZWF2aWx5IG9uIGFzc3VtcHRpb25zIGFib3V0IHNwZWNpZmljIGxpbmsgcGFydG5lciBiZWhhdmlvci4gVGltZSB0byBkZWx2ZSBpbnRvIHRoZSBjb2RlIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlsaW5rX21hY19pbml0aWFsX2NvbmZpZyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xNDQyPXN0YXRpYyB2b2lkIHBoeWxpbmtfZ2V0X2ZpeGVkX3N0YXRlKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE0NTQtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE0NTU6c3RhdGljIHZvaWQgcGh5bGlua19tYWNfaW5pdGlhbF9jb25maWcoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIGZvcmNlX3Jlc3RhcnQpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE0NTYte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjQzMj12b2lkIHBoeWxpbmtfc3RhcnQoc3RydWN0IHBoeWxpbmsgKnBsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ1NS1cdCAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNDU2Olx0cGh5bGlua19tYWNfaW5pdGlhbF9jb25maWcocGwsIHRydWUpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDU3LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjY4Nj12b2lkIHBoeWxpbmtfcmVzdW1lKHN0cnVjdCBwaHlsaW5rICpwbClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3MTEtXHRcdCAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzEyOlx0XHRwaHlsaW5rX21hY19pbml0aWFsX2NvbmZpZyhwbCwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3MTMtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNjY4PXN0YXRpYyB2b2lkIHBoeWxpbmtfc2ZwX3NldF9jb25maWcoc3RydWN0IHBoeWxpbmsgKnBsLCB1bnNpZ25lZCBsb25nICpzdXBwb3J0ZWQsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNzAxLVx0XHRcdFx0IFx1MDAyNnBsLVx1MDAzZXBoeWxpbmtfZGlzYWJsZV9zdGF0ZSkpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM3MDI6XHRcdHBoeWxpbmtfbWFjX2luaXRpYWxfY29uZmlnKHBsLCBmYWxzZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM3MDMtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjQwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgYHBoeWxpbmtfbWFjX2luaXRpYWxfY29uZmlnYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBoYXBwZW5pbmcgd2l0aCBgcGh5bGlua19tYWNfaW5pdGlhbF9jb25maWdgLiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzeXN0ZW0gYXJjaGl0ZWN0dXJlLCBJJiMzOTttIGFzc3VtaW5nIHRoaXMgY29uZmlndXJhdGlvbiBmaWxlIChvciBwZXJoYXBzIHNjcmlwdCwgZGVwZW5kaW5nIG9uIHRoZSBpbXBsZW1lbnRhdGlvbikgaXMgYWJzb2x1dGVseSBjcnVjaWFsIGZvciBpbml0aWFsaXppbmcgdGhlIE1BQyAoTWVkaWEgQWNjZXNzIENvbnRyb2xsZXIpIGxheWVyIHdpdGhpbiB0aGUgUEhZIGxpbmsgZXN0YWJsaXNobWVudCBwcm9jZXNzLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmU6CgoqICAgKipXaGF0IGV4YWN0bHkgZG9lcyBpdCBjb25maWd1cmU/KiogU3BlY2lmaWNhbGx5LCBJJiMzOTttIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGNsb2NrIHNldHRpbmdzLCBwb3dlciBtYW5hZ2VtZW50IHBhcmFtZXRlcnMsIGxhbmUgb3JkZXJpbmcsIGVxdWFsaXphdGlvbiBzZXR0aW5ncywgYW5kIGFueSBzcGVjaWZpYyBQSFktc3BlY2lmaWMgb3B0aW1pemF0aW9ucy4gSSBrbm93IHdoZXJlIHRvIGxvb2sgZm9yIHRob3NlLgoqICAgKipIb3cgaXMgaXQgYmVpbmcgbG9hZGVkL2FwcGxpZWQ/KiogSXMgaXQgYSBzdGF0aWMgZmlsZSwgb3IgZHluYW1pY2FsbHkgZ2VuZXJhdGVkPyBJcyBpdCBiZWluZyBhcHBsaWVkIGF0IGJvb3QsIGR1cmluZyBsaW5rIHRyYWluaW5nLCBvciBvbiBzcGVjaWZpYyBldmVudHM/IFRoZSB0aW1pbmcgaXMga2V5LgoqICAgKipXaGF0IGFyZSB0aGUgZGVwZW5kZW5jaWVzPyoqIERvZXMgdGhpcyBjb25maWcgZmlsZSByZWx5IG9uIGFueSBvdGhlciBzeXN0ZW0gb3IgZHJpdmVyIGxldmVsIGNvbmZpZ3VyYXRpb25zLCBsaWtlIGRldmljZSB0cmVlIGVudHJpZXMsIHBsYXRmb3JtLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcywgb3IgcmVnaXN0ZXIgc2V0dGluZ3M/IFRoZXNlIGRlcGVuZGVuY2llcyBhcmUgY3JpdGljYWwgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZS4KKiAgICoqQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgYXJlYXMgZm9yIG9wdGltaXphdGlvbj8qKiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIGFyZWFzIEkga25vdyBJJiMzOTt2ZSBlbmNvdW50ZXJlZCBiZWZvcmUgYXMgYm90dGxlbmVja3MgKHBvdGVudGlhbGx5IGNvbmZsaWN0aW5nIHNldHRpbmdzIG9yIHJlZHVuZGFudCBjb25maWd1cmF0aW9ucykuCgpJIGFsc28gbmVlZCB0byBjaGVjayBmb3IgYW55IHZlbmRvci1zcGVjaWZpYyBudWFuY2VzIG9yIHVuZG9jdW1lbnRlZCBwYXJhbWV0ZXJzIHRoYXQgbWlnaHQgYmUgbHVya2luZyB3aXRoaW4gdGhpcyBjb25maWd1cmF0aW9uLiBUaW1lIHRvIGRpZyBpbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQ1NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNDU1Olx0c3RhdGljIHZvaWQgcGh5bGlua19tYWNfaW5pdGlhbF9jb25maWcoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIGZvcmNlX3Jlc3RhcnQpXG4xNDU2Olx0e1xuMTQ1NzpcdFx0c3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSBsaW5rX3N0YXRlO1xuMTQ1ODpcdFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeSA9IHBsLVx1MDAzZXBoeWRldjtcbjE0NTk6XHRcbjE0NjA6XHRcdHN3aXRjaCAocGwtXHUwMDNlcmVxX2xpbmtfYW5fbW9kZSkge1xuMTQ2MTpcdFx0Y2FzZSBNTE9fQU5fUEhZOlxuMTQ2MjpcdFx0XHRsaW5rX3N0YXRlID0gcGwtXHUwMDNlcGh5X3N0YXRlO1xuMTQ2MzpcdFx0XHRicmVhaztcbjE0NjQ6XHRcbjE0NjU6XHRcdGNhc2UgTUxPX0FOX0ZJWEVEOlxuMTQ2NjpcdFx0XHRwaHlsaW5rX2dldF9maXhlZF9zdGF0ZShwbCwgXHUwMDI2bGlua19zdGF0ZSk7XG4xNDY3Olx0XHRcdGJyZWFrO1xuMTQ2ODpcdFxuMTQ2OTpcdFx0Y2FzZSBNTE9fQU5fSU5CQU5EOlxuMTQ3MDpcdFx0XHRsaW5rX3N0YXRlID0gcGwtXHUwMDNlbGlua19jb25maWc7XG4xNDcxOlx0XHRcdGlmIChsaW5rX3N0YXRlLmludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpXG4xNDcyOlx0XHRcdFx0bGlua19zdGF0ZS5wYXVzZSA9IE1MT19QQVVTRV9OT05FO1xuMTQ3MzpcdFx0XHRicmVhaztcbjE0NzQ6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODkyOAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBhY2NvdW50OgoKKipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gQ2FsbCoqCgpIbW0sIGludGVyZXN0aW5nLiBJIHNlZSBhIGNhbGwgdG8gYHBoeWxpbmtfbWFqb3JfY29uZmlnYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIHRoYXQmIzM5O3Mgd2hhdCBjYXVnaHQgbXkgZXllLiBUaGUgYHBoeWxpbmtgIHByZWZpeCBzdWdnZXN0cyB0aGlzIGZ1bmN0aW9uIGlzIGludGltYXRlbHkgaW52b2x2ZWQgd2l0aCwgbGlrZWx5LCB0aGUgcGh5c2ljYWwgbGF5ZXIgbGluaywgcHJvYmFibHkgd2l0aGluIGEgUEhZIG1hbmFnZW1lbnQgb3IgaW5pdGlhbGl6YXRpb24gY29udGV4dC4gJiMzNDtNYWpvciBjb25maWcmIzM0OyBpbXBsaWVzIHRoaXMgaXNuJiMzOTt0IGp1c3QgYSBzaW1wbGUgcmVnaXN0ZXIgd3JpdGU7IGl0IGxpa2VseSBvcmNoZXN0cmF0ZXMgYSBzaWduaWZpY2FudCBwYXJ0IG9mIHRoZSBQSFkmIzM5O3Mgb3BlcmF0aW9uYWwgcGFyYW1ldGVycywgbWF5YmUgZXZlbiBpdHMgc3RhdGUgbWFjaGluZSBzZXR1cC4gVGhpcyBjb3VsZCBpbnZvbHZlIGNsb2NrIGNvbmZpZ3VyYXRpb24sIGVxdWFsaXphdGlvbiBzZXR0aW5ncywgc2lnbmFsIGNvbmRpdGlvbmluZyDigJMgYSB3aG9sZSBob3N0IG9mIGxvdy1sZXZlbCBkZXRhaWxzLiBOZWVkIHRvIGRpZyBpbiBhbmQgdW5kZXJzdGFuZCB3aGF0IHRoZSBmdW5jdGlvbiBkb2VzIGZ1cnRoZXIsIG9yIHdoZXJlIGl0JiMzOTtzIGNhbGxlZCBmcm9tLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDc1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE0NzU6XHRcdGRlZmF1bHQ6IC8qIGNhbiYjMzk7dCBoYXBwZW4gKi9cbjE0NzY6XHRcdFx0cmV0dXJuO1xuMTQ3NzpcdFx0fVxuMTQ3ODpcdFxuMTQ3OTpcdFx0bGlua19zdGF0ZS5saW5rID0gZmFsc2U7XG4xNDgwOlx0XG4xNDgxOlx0XHRwaHlsaW5rX2FwcGx5X21hbnVhbF9mbG93KHBsLCBcdTAwMjZsaW5rX3N0YXRlKTtcbjE0ODI6XHRcdGlmIChwaHkpXG4xNDgzOlx0XHRcdG11dGV4X2xvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuMTQ4NDpcdFx0cGh5bGlua19tYWpvcl9jb25maWcocGwsIGZvcmNlX3Jlc3RhcnQsIFx1MDAyNmxpbmtfc3RhdGUpO1xuMTQ4NTpcdFx0aWYgKHBoeSlcbjE0ODY6XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbjE0ODc6XHR9XG4xNDg4Olx0XG4xNDg5Olx0c3RhdGljIGNvbnN0IGNoYXIgKnBoeWxpbmtfcGF1c2VfdG9fc3RyKGludCBwYXVzZSlcbjE0OTA6XHR7XG4xNDkxOlx0XHRzd2l0Y2ggKHBhdXNlIFx1MDAyNiBNTE9fUEFVU0VfVFhSWF9NQVNLKSB7XG4xNDkyOlx0XHRjYXNlIE1MT19QQVVTRV9UWCB8IE1MT19QQVVTRV9SWDpcbjE0OTM6XHRcdFx0cmV0dXJuIFwmIzM0O3J4L3R4XCYjMzQ7O1xuMTQ5NDpcdFx0Y2FzZSBNTE9fUEFVU0VfVFg6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0NTUKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAxMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJhY2luZyB0aGUgUEhZIEludGVyZmFjZSBNb2RlKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIHVuZGVyc3RhbmQgaG93IGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBjb21lcyBpbnRvIHBsYXkuIEZyb20gd2hhdCBJIGNhbiBzZWUsIHRoZSBwcm9jZXNzIHN0YXJ0cyB3aXRoIGEgY2FsbCB0byBgcGh5bGlua19tYWpvcl9jb25maWdgLCB3aGljaCB0aGVuIGNhbGxzIGBwaHlsaW5rX3Bjc19uZWdfbW9kZWAsIHdoaWNoLCBmaW5hbGx5LCBjYWxscyBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgLiBUaGF0IHRlbGxzIG1lIGRlZmluaXRpdmVseSB0aGF0IGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAgKmlzKiByZWFjaGFibGUgZHVyaW5nIHBoeWxpbmsgaW5zdGFuY2Ugc3RhcnR1cCwgd2hpY2ggaXMgZ29vZC4KCkJ1dCBteSByZWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGl0c2VsZiBpcyBhIHBvdGVudGlhbCB2YWx1ZSB0aGVyZS4gSSBrbm93IGl0JiMzOTtzIGFuIGVudW0gdmFsdWUsIHNvIHRoYXQmIzM5O3MgYSBjaGVjaywgYnV0IHRoYXQgZG9lc24mIzM5O3QgdGVsbCBtZSBpZiBpdCAqY2FuKiBiZSB1c2VkLgoKVGhlIG5leHQgc3RlcCBpcyB0byBmaWd1cmUgb3V0IHdoZXRoZXIgd2UgY2FuIGFjdHVhbGx5ICpjcmVhdGUqIGEgcGh5bGluayBpbnN0YW5jZSB1c2luZyB0aGF0IG1vZGUuIEkgbmVlZCB0byB0cmFjZSB0aGUgdXNhZ2Ugb2YgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGluIHRoZSBjb2RlLCBzZWUgd2hlcmUgaXQgaXMgYXNzaWduZWQsIGFuZCBob3cgaXQmIzM5O3MgdXNlZC4gTGV0JiMzOTtzIHN0YXJ0IHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0PTIzOD1Tb21lIG9mIHRoZSBpbnRlcmZhY2UgbW9kZXMgYXJlIGRlc2NyaWJlZCBiZWxvdzpcbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC0zMjUtXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdDozMjY6YGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYGBcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0LTMyNy0gICAgVGhpcyBpcyB0aGUgUGVudGEgU0dNSUkgbW9kZSwgaXQgaXMgc2ltaWxhciB0byBRU0dNSUkgYnV0IGl0IGNvbWJpbmVzIDVcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYz0xNTk9aW50IHBoeV9pbnRlcmZhY2VfbnVtX3BvcnRzKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMtMjAxLVx0XHRyZXR1cm4gNDtcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jOjIwMjpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMy1cdFx0cmV0dXJuIDU7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM9Mjk0PXVuc2lnbmVkIGxvbmcgcGh5X2NhcHNfZnJvbV9pbnRlcmZhY2UocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTAtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jOjMxMTpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTMxMi1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzOD1zdGF0aWMgaW50IHBoeWxpbmtfaW50ZXJmYWNlX21heF9zcGVlZChwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU5LVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2MDpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjYxLVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Nzc0PXN0YXRpYyBpbnQgcGh5bGlua19wYXJzZV9tb2RlKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTgwOC1cdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjgwOTpcdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MTAtXHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTEwMzk9c3RhdGljIGVudW0gaW5iYW5kX3R5cGUgcGh5bGlua19nZXRfaW5iYW5kX3R5cGUocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDItXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTA0MzpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA0NC1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM9NDkwPXN0YXRpYyBpbnQgcWNhODA3eF9waHlfcGFja2FnZV9wcm9iZV9vbmNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU0OS1cdFx0aWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU1MDpcdFx0XHRcdHBoeV9tb2RlcyhQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJKSkpXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTUxOlx0XHRcdHByaXYtXHUwMDNlcGFja2FnZV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTtcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01NTItXHRcdGVsc2UgaWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz01NjI9c3RhdGljIGludCBxY2E4MDd4X3BoeV9wYWNrYWdlX2NvbmZpZ19pbml0X29uY2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTg1LVx0XHRicmVhaztcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1ODY6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTg3LVx0ZGVmYXVsdDpcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTUzPWV4dGVybiBjb25zdCBpbnQgcGh5X2Jhc2ljX3BvcnRzX2FycmF5WzNdO1xuLS1cbmluY2x1ZGUvbGludXgvcGh5LmgtODktICogQFBIWV9JTlRFUkZBQ0VfTU9ERV9NT0NBOiBNdWx0aW1lZGlhIG92ZXIgQ29heFxuaW5jbHVkZS9saW51eC9waHkuaDo5MDogKiBAUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTogUGVudGEgU0dNSUlcbmluY2x1ZGUvbGludXgvcGh5LmgtOTEtICogQFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6IFF1YWQgU0dNSUlcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oPTExND10eXBlZGVmIGVudW0ge1xuLS1cbmluY2x1ZGUvbGludXgvcGh5LmgtMTMyLVx0UEhZX0lOVEVSRkFDRV9NT0RFX01PQ0EsXG5pbmNsdWRlL2xpbnV4L3BoeS5oOjEzMzpcdFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUksXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTEzNC1cdFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUksXG4tLVxuaW5jbHVkZS9saW51eC9waHkuaD0yMTA9c3RhdGljIGlubGluZSBjb25zdCBjaGFyICpwaHlfbW9kZXMocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTI0OC1cdFx0cmV0dXJuIFwmIzM0O21vY2FcJiMzNDs7XG5pbmNsdWRlL2xpbnV4L3BoeS5oOjI0OTpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmluY2x1ZGUvbGludXgvcGh5LmgtMjUwLVx0XHRyZXR1cm4gXCYjMzQ7cHNnbWlpXCYjMzQ7O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTIxNQoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDE1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeHBsb3JpbmcgUEhZIEludGVyZmFjZSBNb2RlIENvbnRyb2wgaW4gdGhlIFBoeWxpbmsgRnJhbWV3b3JrKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBgcWNhODA3eC5jYCBhbmQgc2VlIHRoYXQgaXQmIzM5O3MgdXNpbmcgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLiBCdXQgbXkgYnJhaW4gaW1tZWRpYXRlbHkga2lja3MgaW4gd2l0aCwgJiMzNDtXYWl0LCBwaHlsaW5rIGlzIHN1cHBvc2VkIHRvIGJlIGdlbmVyaWMuIENhbiBJIGFjdHVhbGx5ICpjb250cm9sKiB0aGlzIGludGVyZmFjZSBtb2RlIHNvbWVob3csIHlvdSBrbm93LCBwb2tlIGF0IGl0IHdpdGhvdXQgcmVseWluZyBzb2xlbHkgb24gdGhlIGRldmljZSB0cmVlIG9yIHRoZSBkcml2ZXIgZGlyZWN0bHk/JiMzNDsgVGhlIHR5cGljYWwgc2V0dXAgaGFzIHRoaXMgZGV0ZXJtaW5lZCBieSB0aGUgZGV2aWNlIHRyZWUgb3IgdGhlIGRyaXZlciwgd2hpY2ggZmVlbHMgYSBiaXQgbGltaXRpbmcgZm9yIHRlc3Rpbmcgb3IgZXhwZXJpbWVudGF0aW9uLgoKTXkgZmlyc3QgdGhvdWdodCBpcywgY2FuIEkgcmVhY2ggaW4gc29tZWhvdyB1c2luZyBuZXRsaW5rLCBzeXNmcywgb3IgbWF5YmUgYW4gaW9jdGw/IE1heWJlIEkgY2FuIHJpZyB1cCBhIHdheSB0byB0cmlnZ2VyIGl0IGJ5IHVzaW5nIHNvbWUgb2YgdGhvc2UgaGFuZHkgdmlydHVhbCBpbnRlcmZhY2VzIGxpa2UgYG5ldGRldnNpbWAsIGBkc2FfbG9vcGAsIGBkdW1teWAsIG9yIGB2ZXRoYC4gVGhhdCB3b3VsZCBiZSBzbGljayEKCkhvbGQgb24gdGhvdWdoLCB0aGlua2luZyB0aGlzIHRocm91Z2gsIGBkc2FfbG9vcGAuLi4gZG9lc24mIzM5O3Qgc2VlbSBsaWtlIGl0IGFjdHVhbGx5ICphbGxvd3MqIHNldHRpbmcgdGhlIGludGVyZmFjZSBtb2RlIGFyYml0cmFyaWx5LiBTZWVtcyBsaWtlIGl0JiMzOTtzIGhhcmRjb2RlZCBvciwgZXZlbiBtb3JlIGxpa2VseSwgYmVpbmcgc2V0IGJ5IHRoZSBEU0EgY29yZSBpdHNlbGYuIEJsYXN0LiBBbmQgYWN0dWFsbHksIHRoaW5raW5nIGJhY2ssIEkgZG9uJiMzOTt0IHRoaW5rIGBkc2FfbG9vcGAgZXZlbiBtYWtlcyB1c2Ugb2YgdGhlIGRldmljZSB0cmVlLgoKT2theSwgbGV0JiMzOTtzIHN0ZXAgYmFjayBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIGBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzYCBmdW5jdGlvbiBhbmQgc2VlIGhvdyBpdCBpcyB3b3JraW5nLCBtYXliZSB0aGF0IHdpbGwgaGVscC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBpbnRlcmZhY2UgbW9kZSBjYXBhYmlsaXRpZXMgYXJlIGJlaW5nIGhhbmRsZWQuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMyNiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzI2Olx0c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHNhLCBpbnQgcG9ydCxcbiAzMjc6XHRcdFx0XHRcdCAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuIDMyODpcdHtcbiAzMjk6XHRcdGJpdG1hcF9maWxsKGNvbmZpZy1cdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcywgUEhZX0lOVEVSRkFDRV9NT0RFX01BWCk7XG4gMzMwOlx0XHRfX2NsZWFyX2JpdChQSFlfSU5URVJGQUNFX01PREVfTkEsIGNvbmZpZy1cdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4gMzMxOlx0XHRjb25maWctXHUwMDNlbWFjX2NhcGFiaWxpdGllcyA9IH4wO1xuIDMzMjpcdH1cbiAzMzM6XHRcbiAzMzQ6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGRzYV9sb29wX2RyaXZlciA9IHtcbiAzMzU6XHRcdC5nZXRfdGFnX3Byb3RvY29sXHQ9IGRzYV9sb29wX2dldF9wcm90b2NvbCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE5MzcKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA0ODMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IFBIWSBJbnRlcmZhY2UgTW9kZSBDaGFuZ2UqKgoKT2theSwgc28gYGRzYV9sb29wYCBzdXBwb3J0cyBhbGwgaW50ZXJmYWNlcywgdGhhdCYjMzk7cyBnb29kLiBBbmQgYGJpdG1hcF9maWxsYCBjb3ZlcnMgdGhlIGZ1bGwgcmFuZ2Ugb2YgYFBIWV9JTlRFUkZBQ0VfTU9ERV9NQVhgLiBNeSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGhvdyB0aGUgaW50ZXJmYWNlIG1vZGUgZ2V0cyBzZXQgb24gYSBEU0EgcG9ydC4gQ2FuIHdlIG1hbmlwdWxhdGUgdGhhdCB2aWEgYGV0aHRvb2xgIG9yIGBuZXRsaW5rYD8gVGhhdCYjMzk7cyB0aGUgY3J1eCBvZiB0aGlzLgoKVGhpcyBvbmUtbGluZSBwYXRjaCBqdXN0IGFkZHMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHRvIHRoZSBzd2l0Y2guIEkgd2FzIGluaXRpYWxseSBoZXNpdGFudCB0byBkZWRpY2F0ZSB0aW1lIHRvIGZ1enppbmcgYSBvbmUtbGluZSBjaGFuZ2UsIGJ1dCB0aGlzIGlzIGhpdHRpbmcgdGhlIG5ldHdvcmtpbmcgY29yZSwgc3BlY2lmaWNhbGx5IGBwaHlsaW5rYCwgYW5kIGFmZmVjdGluZyBpdHMgY29yZSBmdW5jdGlvbmFsaXR5LiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzbyBpdCBkZXNlcnZlcyBhIGxvb2suIElmIGl0JiMzOTtzIHJlYWNoYWJsZSwgd2Ugc2hvdWxkIGhpdCBpdCB3aXRoIGZ1enppbmcuCgpUaGUgdGFyZ2V0IGZ1bmN0aW9uIGlzIGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAuIEl0JiMzOTtzIHN0YXRpYywgc28gd2UgbmVlZCB0byBzZWUgaWYgd2UgY2FuIHJlYWNoIGl0IGZyb20gYW4gZXhwb3J0ZWQgc3ltYm9sLiBJdHMgY2FsbGVycyBhcmUgYHBoeWxpbmtfcGNzX25lZ19tb2RlYCBhbmQgYHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsYC4gTG9va2luZyB1cHN0cmVhbSwgYHBoeWxpbmtfcGNzX25lZ19tb2RlYCBpcyBjYWxsZWQgYnkgYHBoeWxpbmtfbWFqb3JfY29uZmlnYCBhbmQgYHBoeWxpbmtfY2hhbmdlX2luYmFuZF9hZHZlcnRgLiBgcGh5bGlua19tYWpvcl9jb25maWdgIGlzIGNhbGxlZCBieSBgcGh5bGlua19tYWNfaW5pdGlhbF9jb25maWdgLCBgcGh5bGlua19tYWNfY29uZmlnYCwgYW5kIGBwaHlsaW5rX21hY19saW5rX3VwYC4KCmBwaHlsaW5rX21hY19pbml0aWFsX2NvbmZpZ2AgaXMgY2FsbGVkIGJ5IGBwaHlsaW5rX3N0YXJ0YCwgYHBoeWxpbmtfcmVzdW1lYCwgYW5kIGBwaHlsaW5rX3NmcF9zZXRfY29uZmlnYC4gQW5kLCBjcnVjaWFsbHksIGBwaHlsaW5rX3N0YXJ0YCBpcyBleHBvcnRlZCBhbmQgdXNlZCBieSBudW1lcm91cyBkcml2ZXJzLiBCaW5nby4gU28gYHBoeWxpbmtfc3RhcnRgIHNlZW1zIHRvIGJlIGFuIGlkZWFsIHN5bWJvbCB0byBmb2N1cyBvbi4gSXQmIzM5O3MgZXhwb3J0ZWQsIHNvIGl0JiMzOTtzIGRpcmVjdGx5IHJlYWNoYWJsZS4gV2UgY2FuIGlnbm9yZSB0aGUgc3RhdGljIG5hdHVyZSBvZiB0aGUgaW50ZXJtZWRpYXRlIGZ1bmN0aW9ucy4KCkp1c3QgdG8gY29uZmlybTogYHBoeWxpbmtfcGNzX25lZ19tb2RlYCBpcyBzdGF0aWMuIGBwaHlsaW5rX21hY19jb25maWdgIGlzIHN0YXRpYy4gYHBoeWxpbmtfc3RhcnRgIGlzIGV4cG9ydGVkLiBgcGh5bGlua19jcmVhdGVgIGlzIGV4cG9ydGVkLiBgcGh5bGlua19jb25uZWN0X21hY2AgaXMgZXhwb3J0ZWQuIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAgaXMgZXhwb3J0ZWQhIFRoYXTigJlzIGtleS4gTm93LCAqY2FuKiB3ZSBjaGFuZ2UgdGhlIGludGVyZmFjZSBtb2RlIHdpdGggZXRodG9vbD8gYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBzZWVtcyB0byBiZSB0aGUgcGxhY2UgdG8gY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5NTc9c3RhdGljIGJvb2wgcGh5bGlua192YWxpZGF0ZV9wY3NfaW5iYW5kX2F1dG9uZWcoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3Ny0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjk3ODogKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCgpIC0gc2V0IHRoZSBsaW5rIHNldHRpbmdzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5NzktICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5ODEtICovXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5ODI6aW50IHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHN0cnVjdCBwaHlsaW5rICpwbCxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk4My1cdFx0XHRcdCAgY29uc3Qgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmtzZXQpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTQ0LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE0NTpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNDYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzMjkwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIEludGVyZmFjZSBNb2RlIE1vZGlmaWNhdGlvbiB3aXRoIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAqKgoKQWxyaWdodCwgc28gdGhlIHRhc2sgYXQgaGFuZCBpcyB0byBhbHRlciB0aGUgaW50ZXJmYWNlIG1vZGUsIGFuZCBteSBpbml0aWFsIHRob3VnaHQgZ29lcyBzdHJhaWdodCB0byBgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRgLiBHaXZlbiBteSBiYWNrZ3JvdW5kLCBJJiMzOTttIG5hdHVyYWxseSBhc3N1bWluZyB0aGlzIGZ1bmN0aW9uIGlzIGEgbGlrZWx5IGNhbmRpZGF0ZS4gSXQmIzM5O3MgdGhlIHN0YW5kYXJkIGVudHJ5IHBvaW50LCByaWdodD8gV2XigJlyZSBsb29raW5nIHRvIG1vZGlmeSB0aGUgbGluayBzZXR0aW5ncyB2aWEgYGV0aHRvb2xgIGFuZCB0aGlzIGlzIHRoZSBkaXJlY3QgcGF0aCBmb3IgdGhhdCBraW5kIG9mIGNoYW5nZS4gSSYjMzk7bSBtZW50YWxseSBwYXJzaW5nIHRoZSBpbXBsaWNhdGlvbnM6IGFyZSB0aGUgYXJndW1lbnRzIGNvcnJlY3QsIGRvIEkgaGF2ZSB0aGUgYXBwcm9wcmlhdGUgc2V0dGluZ3MgaW4gdGhlIGtlcm5lbCwgaXMgdGhpcyB0aGUgcmlnaHQgY2FsbCBzaXRlIGluIG15IGN1cnJlbnQgY29udGV4dD8gVGltZSB0byBjaGVjayB0aGUgbG9ncywgbWF5YmUgc3RhcnQgZGlnZ2luZyBpbnRvIHRoYXQgZnVuY3Rpb27igJlzIHNvdXJjZSBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggdGhlIFBIWSBhbmQgbmV0d29yayBkcml2ZXJzLCBqdXN0IHRvIGJlIHN1cmUuIEkgbmVlZCB0byBjb25maXJtIGlmIGl0IGhhcyB0aGUgY2FwYWJpbGl0aWVzIEkgcmVxdWlyZSwgb3IgaWYgSSBuZWVkIHRvIGxvb2sgZGVlcGVyIGludG8gb3RoZXIgZnVuY3Rpb25zIHRvIG1ha2UgdGhlIG5lZWRlZCBjaGFuZ2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyOTgyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzI5ODI6XHRpbnQgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQoc3RydWN0IHBoeWxpbmsgKnBsLFxuMjk4MzpcdFx0XHRcdFx0ICBjb25zdCBzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyAqa3NldClcbjI5ODQ6XHR7XG4yOTg1Olx0XHRfX0VUSFRPT0xfREVDTEFSRV9MSU5LX01PREVfTUFTSyhzdXBwb3J0KTtcbjI5ODY6XHRcdGNvbnN0IHN0cnVjdCBsaW5rX2NhcGFiaWxpdGllcyAqYztcbjI5ODc6XHRcdHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgY29uZmlnO1xuMjk4ODpcdFxuMjk4OTpcdFx0QVNTRVJUX1JUTkwoKTtcbjI5OTA6XHRcbjI5OTE6XHRcdGlmIChwbC1cdTAwM2VwaHlkZXYpIHtcbjI5OTI6XHRcdFx0c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgcGh5X2tzZXQgPSAqa3NldDtcbjI5OTM6XHRcbjI5OTQ6XHRcdFx0bGlua21vZGVfYW5kKHBoeV9rc2V0LmxpbmtfbW9kZXMuYWR2ZXJ0aXNpbmcsXG4yOTk1Olx0XHRcdFx0ICAgICBwaHlfa3NldC5saW5rX21vZGVzLmFkdmVydGlzaW5nLFxuMjk5NjpcdFx0XHRcdCAgICAgcGwtXHUwMDNlc3VwcG9ydGVkKTtcbjI5OTc6XHRcbjI5OTg6XHRcdFx0LyogV2UgY2FuIHJlbHkgb24gcGh5bGliIGZvciB0aGlzIHVwZGF0ZTsgd2UgYWxzbyBkbyBub3QgbmVlZFxuMjk5OTpcdFx0XHQgKiB0byB1cGRhdGUgdGhlIHBsLVx1MDAzZWxpbmtfY29uZmlnIHNldHRpbmdzOlxuMzAwMDpcdFx0XHQgKiAtIHRoZSBjb25maWd1cmF0aW9uIHJldHVybmVkIHZpYSBrc2V0dGluZ3NfZ2V0KCkgd2lsbCBjb21lXG4zMDAxOlx0XHRcdCAqICAgZnJvbSBwaHlsaWIgd2hlbmV2ZXIgYSBQSFkgaXMgcHJlc2VudC5cbjMwMDI6XHRcdFx0ICogLSBsaW5rX2NvbmZpZy5pbnRlcmZhY2Ugd2lsbCBiZSB1cGRhdGVkIGJ5IHRoZSBQSFkgY2FsbGluZ1xuMzAwMzpcdFx0XHQgKiAgIGJhY2sgdmlhIHBoeWxpbmtfcGh5X2NoYW5nZSgpIGFuZCBhIHN1YnNlcXVlbnQgcmVzb2x2ZS5cbjMwMDQ6XHRcdFx0ICogLSBpbml0aWFsIGxpbmsgY29uZmlndXJhdGlvbiBmb3IgUEhZIG1vZGUgY29tZXMgZnJvbSB0aGVcbjMwMDU6XHRcdFx0ICogICBsYXN0IHBoeSBzdGF0ZSB1cGRhdGVkIHZpYSBwaHlsaW5rX3BoeV9jaGFuZ2UoKS5cbjMwMDY6XHRcdFx0ICogLSBvdGhlciBjb25maWd1cmF0aW9uIGNoYW5nZXMgKGUuZy4gcGF1c2UgbW9kZXMpIGFyZVxuMzAwNzpcdFx0XHQgKiAgIHBlcmZvcm1lZCBkaXJlY3RseSB2aWEgcGh5bGliLlxuMzAwODpcdFx0XHQgKiAtIGlmIGluIGluLWJhbmQgbW9kZSB3aXRoIGEgUEhZLCB0aGUgbGluayBjb25maWd1cmF0aW9uXG4zMDA5Olx0XHRcdCAqICAgaXMgcGFzc2VkIG9uIHRoZSBsaW5rIGZyb20gdGhlIFBIWSwgYW5kIGFsbCBvZlxuMzAxMDpcdFx0XHQgKiAgIGxpbmtfY29uZmlnLntzcGVlZCxkdXBsZXgsYW5fZW5hYmxlZCxwYXVzZX0gYXJlIG5vdCB1c2VkLlxuMzAxMTpcdFx0XHQgKiAtIHRoZSBvbmx5IHBvc3NpYmxlIHVzZSB3b3VsZCBiZSBsaW5rX2NvbmZpZy5hZHZlcnRpc2luZ1xuMzAxMjpcdFx0XHQgKiAgIHBhdXNlIG1vZGVzIHdoZW4gaW4gMTAwMGJhc2UtWCBtb2RlIHdpdGggYSBQSFksIGJ1dCBpblxuMzAxMzpcdFx0XHQgKiAgIHRoZSBwcmVzZW5jZSBvZiBhIFBIWSwgdGhpcyBzaG91bGQgbm90IGJlIGNoYW5nZWQgYXMgdGhhdFxuMzAxNDpcdFx0XHQgKiAgIHNob3VsZCBiZSBkZXRlcm1pbmVkIGZyb20gdGhlIG1lZGlhIHNpZGUgYWR2ZXJ0aXNlbWVudC5cbjMwMTU6XHRcdFx0ICovXG4zMDE2Olx0XHRcdHJldHVybiBwaHlfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHBsLVx1MDAzZXBoeWRldiwgXHUwMDI2cGh5X2tzZXQpO1xuMzAxNzpcdFx0fVxuMzAxODpcdFxuMzAxOTpcdFx0Y29uZmlnID0gcGwtXHUwMDNlbGlua19jb25maWc7XG4zMDIwOlx0XHQvKiBNYXNrIG91dCB1bnN1cHBvcnRlZCBhZHZlcnRpc2VtZW50cyAqL1xuMzAyMTpcdFx0bGlua21vZGVfYW5kKGNvbmZpZy5hZHZlcnRpc2luZywga3NldC1cdTAwM2VsaW5rX21vZGVzLmFkdmVydGlzaW5nLFxuMzAyMjpcdFx0XHQgICAgIHBsLVx1MDAzZXN1cHBvcnRlZCk7XG4zMDIzOlx0XG4zMDI0Olx0XHQvKiBGSVhNRTogc2hvdWxkIHdlIHJlamVjdCBhdXRvbmVnIGlmIHBoeS9tYWMgZG9lcyBub3Qgc3VwcG9ydCBpdD8gKi9cbjMwMjU6XHRcdHN3aXRjaCAoa3NldC1cdTAwM2ViYXNlLmF1dG9uZWcpIHtcbjMwMjY6XHRcdGNhc2UgQVVUT05FR19ESVNBQkxFOlxuMzAyNzpcdFx0XHQvKiBBdXRvbmVnb3RpYXRpb24gZGlzYWJsZWQsIHNlbGVjdCBhIHN1aXRhYmxlIHNwZWVkIGFuZFxuMzAyODpcdFx0XHQgKiBkdXBsZXguXG4zMDI5Olx0XHRcdCAqL1xuMzAzMDpcdFx0XHRjID0gcGh5X2NhcHNfbG9va3VwKGtzZXQtXHUwMDNlYmFzZS5zcGVlZCwga3NldC1cdTAwM2ViYXNlLmR1cGxleCxcbjMwMzE6XHRcdFx0XHRcdCAgICBwbC1cdTAwM2VzdXBwb3J0ZWQsIGZhbHNlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ0NTcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA2MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgdGhleSB3ZXJlIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBJbnRlcmZhY2UgQ29uZmlndXJhdGlvbiBBZnRlciBQaHlsaW5rIFNldHRpbmdzKioKCkhtbSwgaXQmIzM5O3MgYmVjb21pbmcgY2xlYXIgdGhhdCBgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRgIGlzbiYjMzk7dCB0b3VjaGluZyB0aGUgYGNvbmZpZy5pbnRlcmZhY2VgIHNldHRpbmcsIHdoaWNoIGlzIGEgYml0IHVuZXhwZWN0ZWQuIFVzdWFsbHksIHRoZSBpbnRlcmZhY2UgbW9kZSDigJMgd2hldGhlciBpdCYjMzk7cyBjb3BwZXIsIG9wdGljYWwsIG9yIHNvbWV0aGluZyBlbHNlIOKAkyBpcyBuYWlsZWQgZG93biBkdXJpbmcgcGh5bGluayBjcmVhdGlvbiBvciwgbW9yZSBkeW5hbWljYWxseSwgd2hlbiBhbiBTRlAgbW9kdWxlIGdldHMgaG90LXBsdWdnZWQuIFNvLCBJIG5lZWQgdG8gdHJhY2Ugd2hlcmUgdGhhdCBgY29uZmlnLmludGVyZmFjZWAgdmFsdWUgKmlzKiBiZWluZyBzZXQsIGFuZCwgaWYgbm90LCB3aHkuIE15IGluc3RpbmN0IGlzIHRoYXQgdGhpcyBpcyBwb3RlbnRpYWxseSBpbiB0aGUgYHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsYCBmdW5jdGlvbiBhbmQgaXQmIzM5O3MgbWlzc2luZyB0aGUgZXhwZWN0ZWQgZnVuY3Rpb25hbGl0eSwgb3IgdGhlcmUmIzM5O3MgYSBwcm9ibGVtIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGUgZnVuY3Rpb25zIGFyZSBjYWxsZWQuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIFNGUCBjb25maWd1cmF0aW9uIGNvZGUgbm93LiBJJiMzOTtsbCBzdGFydCB3aXRoIGEgcmV2aWV3IG9mIGBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbGAgdG8gc2VlIHdoYXQgSSYjMzk7bSBtaXNzaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNzA1PXN0YXRpYyBpbnQgcGh5bGlua19zZnBfY29uZmlnX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNzU1LVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNzU2OnN0YXRpYyBpbnQgcGh5bGlua19zZnBfY29uZmlnX29wdGljYWwoc3RydWN0IHBoeWxpbmsgKnBsKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNzU3LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM4NDg9c3RhdGljIGludCBwaHlsaW5rX3NmcF9tb2R1bGVfaW5zZXJ0KHZvaWQgKnVwc3RyZWFtLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzg2NS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mzg2NjpcdHJldHVybiBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbChwbCk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM4NjctfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mzg3Nj1zdGF0aWMgaW50IHBoeWxpbmtfc2ZwX21vZHVsZV9zdGFydCh2b2lkICp1cHN0cmVhbSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM4OTEtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM4OTI6XHRyZXR1cm4gcGh5bGlua19zZnBfY29uZmlnX29wdGljYWwocGwpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zODkzLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUxMTgKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgYHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsYCBDYWxsKioKCk9rYXksIHNvIGBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbGAgZ2V0cyB0cmlnZ2VyZWQgd2hlbiBhbiBTRlAgbW9kdWxlIGlzIGluc2VydGVkLiBJIGluaXRpYWxseSB0aG91Z2h0IHRoaXMgbWlnaHQgYmUgdHJpZ2dlcmVkIHRocm91Z2ggc3lzZnMgb3Igc29tZSBzb3J0IG9mIHNpbXVsYXRpb24sIGJ1dCBTRlAgbW9kdWxlcyBhcmUgdHlwaWNhbGx5IGhhcmR3YXJlLWJhc2VkLCByaWdodD8gSG93ZXZlciwgSSYjMzk7bSByZW1pbmRlZCB0aGF0IGBwaHlsaW5rX3N0YXJ0YCBpcyBjYWxsZWQgYnkgbWFueSBkaWZmZXJlbnQgZHJpdmVycywgbm90IGp1c3QgU0ZQLXNwZWNpZmljIGNvZGUuIFRoaXMgZnVuY3Rpb24gaXMgbW9yZSBnZW5lcmFsLXB1cnBvc2UuCgpOb3csIGlmIGEgZHJpdmVyIHV0aWxpemVzIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCwgaXQmIzM5O2xsIGVuZCB1cCBoaXR0aW5nIHRoaXMgc3BlY2lmaWMgY29kZSBwYXRoLiBUaGUgcXVlc3Rpb24gaXM6IGRvIGFueSBkcml2ZXJzIGFjdHVhbGx5IHVzZSBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWA/IEEgcXVpY2sgc2NhbiBzaG93cyB0aGF0IGBxY2E4MDd4LmNgIGRvZXMgdXNlIGl0LiBIbW0sIGlzIGBxY2E4MDd4LmNgIHJlYWNoYWJsZT8gSXQgaXMgYSBQSFkgZHJpdmVyLCB3aGljaCBpcyBwcm9taXNpbmcuCgpMZXQmIzM5O3Mgc2VlIGlmIEkgY2FuIHBvdGVudGlhbGx5IHRlc3QgYHFjYTgwN3guY2Agd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudC4gSXQmIzM5O3MgYSBRdWFsY29tbSBQSFkgZHJpdmVyLCBhbmQgdGhvc2UgYXJlIHR5cGljYWxseSBib3VuZCB2aWEgdGhlIE1ESU8gYnVzLiBJIGNhbiBzaW11bGF0ZSB0aGUgTURJTyBidXMgd2l0aCBgbWRpby1tb2NrdXBgLCBgbWRpby1ncGlvYCwgb3IgZXZlbiBgZHNhX2xvb3BgLiBBY3R1YWxseSwgdGhpbmtpbmcgbW9yZSBhYm91dCBpdCwgYGRzYV9sb29wYCB1c2VzIGVpdGhlciBgZml4ZWQtbGlua2Agb3Igc29tZXRoaW5nIHNpbWlsYXIsIHJpZ2h0PwoKSSBzaG91bGQgcHJvYmFibHkgYnJvYWRlbiBteSBzZWFyY2guIEJlc2lkZXMgYHFjYTgwN3guY2AsIGFyZSB0aGVyZSBhbnkgKm90aGVyKiBkcml2ZXJzIEkmIzM5O20gZm9yZ2V0dGluZyB0aGF0IHV0aWxpemUgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgPyBJIHNob3VsZCBtYWtlIHN1cmUgSSBoYXZlIGEgY29tcHJlaGVuc2l2ZSBsaXN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jPTE1OT1pbnQgcGh5X2ludGVyZmFjZV9udW1fcG9ydHMocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0yMDEtXHRcdHJldHVybiA0O1xuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM6MjAyOlx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmMtMjAzLVx0XHRyZXR1cm4gNTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYz0yOTQ9dW5zaWduZWQgbG9uZyBwaHlfY2Fwc19mcm9tX2ludGVyZmFjZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jLTMxMC1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM6MzExOlx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMzEyLVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjM4PXN0YXRpYyBpbnQgcGh5bGlua19pbnRlcmZhY2VfbWF4X3NwZWVkKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTktXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjYwOlx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjEtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz03NzQ9c3RhdGljIGludCBwaHlsaW5rX3BhcnNlX21vZGUoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODA4LVx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6ODA5Olx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTgxMC1cdFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTAzOT1zdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA0Mi1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDQzOlx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQ0LVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz00OTA9c3RhdGljIGludCBxY2E4MDd4X3BoeV9wYWNrYWdlX3Byb2JlX29uY2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTQ5LVx0XHRpZiAoIXN0cmNhc2VjbXAocGFja2FnZV9tb2RlX25hbWUsXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTUwOlx0XHRcdFx0cGh5X21vZGVzKFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkpKSlcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTE6XHRcdFx0cHJpdi1cdTAwM2VwYWNrYWdlX21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU1Mi1cdFx0ZWxzZSBpZiAoIXN0cmNhc2VjbXAocGFja2FnZV9tb2RlX25hbWUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTU2Mj1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfY29uZmlnX2luaXRfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01ODUtXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU4NjpcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01ODctXHRkZWZhdWx0OlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjcxNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDExNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBBdHRhY2sgU3VyZmFjZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgcWNhODA3eC5jYCBkcml2ZXIgYW5kIGl0IHNlZW1zIGxpa2UgaXQmIzM5O3MgdGhlIG9ubHkgb25lIGRpcmVjdGx5IHV0aWxpemluZyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAuIEJ1dCB3YWl0IGEgc2Vjb25kLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nLi4uIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBjYW4gKmFsc28qIGJlIGRlZmluZWQgd2l0aGluIGEgZGV2aWNlIHRyZWUsIGFuZCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBJJiMzOTttIHdvbmRlcmluZyBpZiBJIGNhbiBnZXQgc3l6a2FsbGVyIHRvIGluamVjdCBhIGN1c3RvbSBub2RlIGludG8gdGhlIGRldmljZSB0cmVlIGRpcmVjdGx5LiBQcm9iYWJseSBub3QsIHN5emthbGxlciBkb2VzbiYjMzk7dCB1c3VhbGx5IGRvIGR5bmFtaWMgZGV2aWNlIHRyZWUgbWFuaXB1bGF0aW9uLCBidXQgSSBtaWdodCBiZSBhYmxlIHRvIGxldmVyYWdlIGFuIGV4aXN0aW5nIG9uZSBvciBwZXJoYXBzIHRyeSB3aXRoIHZpcnR1YWwgZHJpdmVycy4KCkFscmlnaHQsIGJhY2sgdG8gdGhlIGRldmljZSB0cmVl4oCmIGBwaHlsaW5rX3BhcnNlX21vZGVgIGlzIHJlc3BvbnNpYmxlIGZvciBwYXJzaW5nIHRoZSBtb2RlIGZyb20gdGhlIGRldmljZSB0cmVlIGl0c2VsZi4gSG1tLCB0aGlzIGlzIGdldHRpbmcgaW50cmlndWluZy4uLiBDb3VsZCBJIHBvdGVudGlhbGx5IHRyaWdnZXIgdGhpcyBwYXJzaW5nIHRocm91Z2ggdGhlIGBuZXRsaW5rYCBpbnRlcmZhY2Ugc29tZWhvdz8gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgUEhZIG1vZGVzIGFyZSBiZWluZyB1dGlsaXplZC4gTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gdGhvcm91Z2hseSBleGFtaW5lIGBwaHlsaW5rX2NyZWF0ZWAgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlciBhbmQgd2hlcmUgdGhlIHZ1bG5lcmFibGUgc3BvdCBtaWdodCBiZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5bGlua19jcmVhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NTE2PXN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9tYWNfYW5kX3BjcyhzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzEtXHRpZiAocGNzKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjUzMjpcdFx0LyogVGhlIFBDUywgaWYgcHJlc2VudCwgbXVzdCBiZSBzZXR1cCBiZWZvcmUgcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzMtXHRcdCAqIGhhcyBiZWVuIGNhbGxlZC4gSWYgdGhlIG9wcyBpcyBub3QgaW5pdGlhbGlzZWQsIHByaW50IGFuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDcxLSAqIHBoeWxpbmtfcGNzX25lZ19tb2RlKCkgLSBoZWxwZXIgdG8gZGV0ZXJtaW5lIFBDUyBpbmJhbmQgbW9kZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDcyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzMtICogQHBjczogYSBwb2ludGVyIHRvIFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTc2OT1zdGF0aWMgaW50IHBoeWxpbmtfcmVnaXN0ZXJfc2ZwKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3OTMtICogcGh5bGlua19zZXRfZml4ZWRfbGluaygpIC0gc2V0IHRoZSBmaXhlZCBsaW5rXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3OTQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc5NS0gKiBAc3RhdGU6IGEgcG9pbnRlciB0byBhIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xODMxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmspO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzMy0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgzNDogKiBwaHlsaW5rX2NyZWF0ZSgpIC0gY3JlYXRlIGEgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODM1LSAqIEBjb25maWc6IGEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IFx1MDAyNnN0cnVjdCBwaHlsaW5rX2NvbmZpZ1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg0OC0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTg0OTpzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NTAtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM2LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkzNzpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2NyZWF0ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MzgtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTQwLSAqIHBoeWxpbmtfZGVzdHJveSgpIC0gY2xlYW51cCBhbmQgZGVzdHJveSB0aGUgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTQxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NDItICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE5NTc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19kZXN0cm95KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjAtICogcGh5bGlua19leHBlY3RzX3BoeSgpIC0gRGV0ZXJtaW5lIGlmIHBoeWxpbmsgZXhwZWN0cyBhIHBoeSB0byBiZSBhdHRhY2hlZFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTYxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjItICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMDY9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyNi0gKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyMjc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIyOC0gKiBAcGh5OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5X2RldmljZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNjA9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jb25uZWN0X3BoeSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjYzLSAqIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKSAtIGNvbm5lY3QgdGhlIFBIWSBzcGVjaWZpZWQgaW4gdGhlIERUIG1vZGUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNjQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI2NS0gKiBAZG46IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBkZXZpY2Vfbm9kZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNzk9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19vZl9waHlfY29ubmVjdCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjgyLSAqIHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KCkgLSBjb25uZWN0IHRoZSBQSFkgc3BlY2lmaWVkIGluIHRoZSBmd25vZGUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyODM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI4NC0gKiBAZndub2RlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZndub2RlX2hhbmRsZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzMzg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM0Mi0gKiAgIGluc3RhbmNlLlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzQzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDQtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzNzM9c3RhdGljIHZvaWQgcGh5bGlua19saW5rX2NoYW5nZWQoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIHVwLCBjb25zdCBjaGFyICp3aGF0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM4Mi0gKiBwaHlsaW5rX21hY19jaGFuZ2UoKSAtIG5vdGlmeSBwaHlsaW5rIG9mIGEgY2hhbmdlIGluIE1BQyBzdGF0ZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzgzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzODQtICogQHVwOiBpbmRpY2F0ZXMgd2hldGhlciB0aGUgbGluayBpcyBjdXJyZW50bHkgdXAuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDE1PXN0YXRpYyBpcnFyZXR1cm5fdCBwaHlsaW5rX2xpbmtfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQyNS0gKiBwaHlsaW5rX3N0YXJ0KCkgLSBzdGFydCBhIHBoeWxpbmsgaW5zdGFuY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQyNjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDI3LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDg4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3RhcnQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ5MS0gKiBwaHlsaW5rX3N0b3AoKSAtIHN0b3AgYSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0OTI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ5My0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjUyMj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N0b3ApO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUyNS0gKiBwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKCkgLSBibG9jayBQSFkgYWJpbGl0eSB0byBzdG9wIHJlY2VpdmUgY2xvY2sgaW4gTFBJXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI1MjY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUyNy0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjU1MT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NTQtICogcGh5bGlua19yeF9jbGtfc3RvcF91bmJsb2NrKCkgLSB1bmJsb2NrIFBIWSBhYmlsaXR5IHRvIHN0b3AgcmVjZWl2ZSBjbG9ja1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTU1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NTYtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1OTM9c3RhdGljIGJvb2wgcGh5bGlua19waHlfcG1fc3BlZWRfY3RybChzdHJ1Y3QgcGh5bGluayAqcGwpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjAwLSAqIHBoeWxpbmtfc3VzcGVuZCgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2Ugc3VzcGVuZCBldmVudFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjAxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MDItICogQG1hY193b2w6IHRydWUgaWYgdGhlIE1BQyBuZWVkcyB0byByZWNlaXZlIHBhY2tldHMgZm9yIFdha2Utb24tTGFuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjUyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3VzcGVuZCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjU1LSAqIHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUoKSAtIHByZXBhcmUgdG8gcmVzdW1lIGEgbmV0d29yayBkZXZpY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjY1NjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjU3LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjc3PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY4MC0gKiBwaHlsaW5rX3Jlc3VtZSgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2UgcmVzdW1lIGV2ZW50XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2ODE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY4Mi0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjcyMD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Jlc3VtZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzIzLSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfd29sKCkgLSBnZXQgdGhlIHdha2Ugb24gbGFuIHBhcmFtZXRlcnMgZm9yIHRoZSBQSFlcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjcyNDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzI1LSAqIEB3b2w6IGEgcG9pbnRlciB0byBcdTAwMjZzdHJ1Y3QgZXRodG9vbF93b2xpbmZvIHRvIGhvbGQgdGhlIHJlYWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjc1Nz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X3dvbCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzYwLSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfd29sKCkgLSBzZXQgd2FrZSBvbiBsYW4gcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzYxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3NjItICogQHdvbDogYSBwb2ludGVyIHRvIFx1MDAyNnN0cnVjdCBldGh0b29sX3dvbGluZm8gZm9yIHRoZSBkZXNpcmVkIHBhcmFtZXRlcnNcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI4ODk9c3RhdGljIHZvaWQgcGh5bGlua19nZXRfa3NldHRpbmdzKGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjkwNC0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCgpIC0gZ2V0IHRoZSBjdXJyZW50IGxpbmsgc2V0dGluZ3NcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjkwNTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTA2LSAqIEBrc2V0OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyB0byBob2xkIGxpbmsgc2V0dGluZ3Ncbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5NTc9c3RhdGljIGJvb2wgcGh5bGlua192YWxpZGF0ZV9wY3NfaW5iYW5kX2F1dG9uZWcoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk3OC0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCgpIC0gc2V0IHRoZSBsaW5rIHNldHRpbmdzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5Nzk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk4MC0gKiBAa3NldDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgZm9yIHRoZSBkZXNpcmVkIG1vZGVzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTQ1PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNDgtICogcGh5bGlua19ldGh0b29sX253YXlfcmVzZXQoKSAtIHJlc3RhcnQgbmVnb3RpYXRpb25cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE0OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTUwLSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTcwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzMtICogcGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKCkgLSBnZXQgdGhlIGN1cnJlbnQgcGF1c2UgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTc0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzUtICogQHBhdXNlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTg2PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTg5LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSgpIC0gc2V0IHRoZSBjdXJyZW50IHBhdXNlIHBhcmFtZXRlcnNcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE5MDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTkxLSAqIEBwYXVzZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI3Mj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI3Ni0gKiAgIGNvdW50ZXJcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzI3NzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKS5cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI3OC0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI5NT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2dldF9lZWVfZXJyKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyOTgtICogcGh5bGlua19ldGh0b29sX2dldF9lZWUoKSAtIHJlYWQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjk5OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMDAtICogQGVlZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIHJlYWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzMyMT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X2VlZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzI0LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfZWVlKCkgLSBzZXQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMzI1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMjYtICogQGVlZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIGRlc2lyZWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzQ5NT1zdGF0aWMgaW50IHBoeWxpbmtfbWlpX3dyaXRlKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgaW50IHBoeV9pZCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTMtICogcGh5bGlua19taWlfaW9jdGwoKSAtIGdlbmVyaWMgbWlpIGlvY3RsIGludGVyZmFjZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTE0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTUtICogQGlmcjogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGlmcmVxIGZvciBzb2NrZXQgaW9jdGxzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNTg4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2lvY3RsKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1OTItICogICBsaW5rIHBhcnRuZXJzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM1OTM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzU5NC0gKiBAc3luYzogcGVyZm9ybSBhY3Rpb24gc3luY2hyb25vdXNseVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzYxMz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NwZWVkX2Rvd24pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxNy0gKiAgIHBoeWxpbmtfc3BlZWRfZG93bigpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM2MTg6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYxOS0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDM3MD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9jNDVfcGNzX2dldF9zdGF0ZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzc0LSAqXHRcdFx0XHQgd2hpY2ggbG9zZXMgc3RhdGVcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDM3NTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzc2LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00MzkxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcmVwbGF5X2xpbmtfYmVnaW4pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5NS0gKlx0XHRcdCAgICAgICB3aGljaCBsb3N0IHN0YXRlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQzOTY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM5Ny0gKlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTYxMAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDExOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUEhZIEludGVyZmFjZSBNb2RlIFVzYWdlIHdpdGggYGRzYV9sb29wYCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBJIHNlZSB0aGF0IGBwaHlsaW5rX2NyZWF0ZWAgcmVjZWl2ZXMgYSBgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWdgLiBUaGUgY3JpdGljYWwgYml0IGhlcmUgaXMgdGhlIGBzdXBwb3J0ZWRfaW50ZXJmYWNlc2AgZmllbGQgd2l0aGluIHRoYXQgY29uZmlnLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBhbGxvd2VkIGludGVyZmFjZSBtb2RlcyBhcmUgc3BlY2lmaWVkLCBhbmQgSSYjMzk7bSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAuIElmIHRoYXQgYml0IGlzIHNldCBpbiBgc3VwcG9ydGVkX2ludGVyZmFjZXNgLCB0aGVuIHRoZW9yZXRpY2FsbHksIGBQU0dNSUlgIGlzIGEgdmFsaWQgb3B0aW9uIGZvciB0aGlzIHBhcnRpY3VsYXIgUEhZIGxpbmsuCgpOb3csIHRoZSBjb2RlIG5vdGVzIHRoYXQgdGhlIGBkc2FfbG9vcGAgZnVuY3Rpb24gbWVzc2VzIHdpdGggdGhlc2UgYHN1cHBvcnRlZF9pbnRlcmZhY2VzYC4gU3BlY2lmaWNhbGx5LCBpdCBhcHBlYXJzIHRvIHNldCBhbGwgb2YgdGhlbS4gVGhpcyBtZWFucyBgZHNhX2xvb3BgICpjb3VsZCogcG90ZW50aWFsbHkgZW5hYmxlIHRoZSB1c2Ugb2YgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLiBUaGF0IHJhaXNlcyBhIGtleSBxdWVzdGlvbiBpbiBteSBtaW5kOiBIb3cgZG9lcyBgZHNhX2xvb3BgIGFjdHVhbGx5IHNldCB0aGUgaW50ZXJmYWNlIG1vZGU/IEkgbmVlZCB0byBkaXZlIGludG8gdGhlIGltcGxlbWVudGF0aW9uIG9mIGBkc2FfbG9vcGAgaXRzZWxmIHRvIHVuZGVyc3RhbmQgaG93IGl0IG1hbmlwdWxhdGVzIHRoZSBgc3VwcG9ydGVkX2ludGVyZmFjZXNgIGFuZCBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgY29udHJpYnV0aW5nIHRvLCBvciBwcmV2ZW50aW5nLCB0aGUgdXNlIG9mIGBQU0dNSUlgIGluIHRoaXMgY29udGV4dC4gVGltZSB0byB0cmFjZSB0aHJvdWdoIHRoYXQgZnVuY3Rpb24gYW5kIHNlZSB3aGF0IGl0JiMzOTtzIHJlYWxseSBkb2luZyB1bmRlciB0aGUgaG9vZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UEhZX0lOVEVSRkFDRV9NT0RFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MzI2PXN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzYSwgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI4LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyOTpcdGJpdG1hcF9maWxsKGNvbmZpZy1cdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcywgUEhZX0lOVEVSRkFDRV9NT0RFX01BWCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzA6XHRfX2NsZWFyX2JpdChQSFlfSU5URVJGQUNFX01PREVfTkEsIGNvbmZpZy1cdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMzEtXHRjb25maWctXHUwMDNlbWFjX2NhcGFiaWxpdGllcyA9IH4wO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjIyMQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcsIHRoaW5raW5nIHRocm91Z2ggdGhpcyBjb2RlOgoKKipVbmRlcnN0YW5kaW5nIERTQSBDYXBhYmlsaXR5IFNldHVwIGluIGBkc2FfbG9vcGAqKgoKQWxyaWdodCwgc28gdGhlIHRleHQgaXMgc2F5aW5nIHRoaXMgY29kZSBwcmltYXJpbHkgZGVmaW5lcyB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBkZXZpY2Ug4oCTIHRoYXQmIzM5O3MgdGhlIHNldHVwIHN0YWdlLiBCdXQgdGhlICphY3R1YWwqIG9wZXJhdGluZyBtb2RlLCB0aGUgaW50ZXJmYWNlIHNwZWNpZmljcywgdGhhdCYjMzk7cyBkZXRlcm1pbmVkIGJ5IHRoZSBEU0EgY29yZSBpdHNlbGYuIFRoZSBzeXN0ZW0gdXNlcyBlaXRoZXIgdGhlIGRldmljZSB0cmVlIG9yIGZpeGVkLWxpbmsgcHJvcGVydGllcyB0byBmaWd1cmUgb3V0IGhvdyB0byBvcGVyYXRlLgoKU2luY2UgYGRzYV9sb29wYCBpcyBhIG1vY2sgZHJpdmVyLCBpdCYjMzk7cyBub3QgZ29pbmcgdG8gYmUgdXNpbmcgdGhlIGRldmljZSB0cmVlLCB3aGljaCBpcyBleHBlY3RlZC4gVGhhdCYjMzk7cyBhIGtleSBwb2ludC4gU28sIHRoZSBxdWVzdGlvbiBub3cgaXMsIGhvdyBkb2VzIHRoaXMgbW9jayBkcml2ZXIsIGBkc2FfbG9vcGAsIG9idGFpbiBpdHMgZml4ZWQtbGluayBwcm9wZXJ0aWVzIGlmIGl0JiMzOTtzIG5vdCB1c2luZyB0aGUgZGV2aWNlIHRyZWU/IEkgbmVlZCB0byBkaWcgaW50byB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBvZiBgZHNhX2xvb3BgIGFuZCBmaW5kIHRoZSBhbnN3ZXIuIExldCYjMzk7cyBzZWUgaG93IHRoYXQgd29ya3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RzYV9sb29wJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTpzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNi1cdHUxNiBtZW1iZXJzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzA6c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMS1cdGNoYXIgbmFtZVtFVEhfR1NUUklOR19MRU5dO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU6ZW51bSBkc2FfbG9vcF9taWJfY291bnRlcnMge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzYtXHREU0FfTE9PUF9QSFlfUkVBRF9PSyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00Mi1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzOnN0cnVjdCBkc2FfbG9vcF9wb3J0IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0Olx0c3RydWN0IGRzYV9sb29wX21pYl9lbnRyeSBtaWJbX19EU0FfTE9PUF9DTlRfTUFYXTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ1LVx0dTE2IHB2aWQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDgtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTpzdHJ1Y3QgZHNhX2xvb3BfcHJpdiB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MC1cdHN0cnVjdCBtaWlfYnVzXHQqYnVzO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTEtXHR1bnNpZ25lZCBpbnRcdHBvcnRfYmFzZTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUyOlx0c3RydWN0IGRzYV9sb29wX3ZsYW4gdmxhbnNbVkxBTl9OX1ZJRF07XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01My1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1NDpcdHN0cnVjdCBkc2FfbG9vcF9wb3J0IHBvcnRzW0RTQV9NQVhfUE9SVFNdO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTUtfTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTc6c3RydWN0IGRzYV9sb29wX3BkYXRhIHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU4LVx0LyogTXVzdCBiZSBmaXJzdCwgc3VjaCB0aGF0IGRzYV9yZWdpc3Rlcl9zd2l0Y2goKSBjYW4gYWNjZXNzIHRoaXNcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy02Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjY3OnN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfbWliX2VudHJ5IGRzYV9sb29wX21pYnNbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY4LVx0W0RTQV9MT09QX1BIWV9SRUFEX09LXVx0PSB7IFwmIzM0O3BoeV9yZWFkX29rXCYjMzQ7LCB9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTc1PXN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2UgKnN3aXRjaF9tZGlvZGV2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo3NzplbnVtIGRzYV9sb29wX2RldmxpbmtfcmVzb3VyY2VfaWQge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzgtXHREU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX05PTkUsICAvKiBERVZMSU5LX1JFU09VUkNFX0lEX1BBUkVOVF9UT1AgKi9cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04MS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjgyOnN0YXRpYyB1NjQgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0KHZvaWQgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04My17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IHByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04NS1cdHVuc2lnbmVkIGludCBpLCBjb3VudCA9IDA7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NjpcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg3LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk2LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6OTc6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OC17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy05OS1cdHN0cnVjdCBkZXZsaW5rX3Jlc291cmNlX3NpemVfcGFyYW1zIHNpemVfcGFyYW1zO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTAwOlx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEwMS1cdGludCBlcnI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTE1LVx0XHRcdFx0XHQgICAgICBEU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX1ZUVSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjExNjpcdFx0XHRcdFx0ICAgICAgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0LCBwcyk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMTctXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTI1OnN0YXRpYyBlbnVtIGRzYV90YWdfcHJvdG9jb2wgZHNhX2xvb3BfZ2V0X3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEyNi1cdFx0XHRcdFx0XHQgICBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMzQ6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzUte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTM2Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzNy1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTEzOS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRzLVx1MDAzZW51bV9wb3J0czsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDA6XHRcdG1lbWNweShwcy1cdTAwM2Vwb3J0c1tpXS5taWIsIGRzYV9sb29wX21pYnMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDE6XHRcdCAgICAgICBzaXplb2YoZHNhX2xvb3BfbWlicykpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0NC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE0NTpcdHJldHVybiBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhkcyk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDYtfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTQ3LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQ4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3RlYXJkb3duKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0OS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTUyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTUzOnN0YXRpYyBpbnQgZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHNzZXQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2MC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE2MTpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfc3RyaW5ncyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYyLVx0XHRcdFx0IHUzMiBzdHJpbmdzZXQsIHVpbnQ4X3QgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjMte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTY0Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2NS1cdHVuc2lnbmVkIGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3My1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NDpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc1LVx0XHRcdFx0ICAgICAgIHVpbnQ2NF90ICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc2LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NzpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNzgtXHR1bnNpZ25lZCBpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxODQ6c3RhdGljIGludCBkc2FfbG9vcF9waHlfcmVhZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCBpbnQgcmVnbnVtKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg1LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NjpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcyA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xODctXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHMtXHUwMDNlYnVzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE5OC1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE5OTpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV93cml0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAwLVx0XHRcdCAgICAgIGludCByZWdudW0sIHUxNiB2YWx1ZSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMS17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMDI6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAzLVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTQtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMTU6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTYtXHRcdFx0XHQgICAgIHN0cnVjdCBkc2FfYnJpZGdlIGJyaWRnZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMjUtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcG9ydF9icmlkZ2VfbGVhdmUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIyNy1cdFx0XHRcdCAgICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjMyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjMzOnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjM0LVx0XHRcdFx0XHR1OCBzdGF0ZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzktXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNDA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDEtXHRcdFx0XHRcdGJvb2wgdmxhbl9maWx0ZXJpbmcsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQ5LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjUwOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjUxLVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4sXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU1LVx0Ym9vbCBwdmlkID0gdmxhbi1cdTAwM2VmbGFncyBcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19QVklEO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjU2Olx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1Ny1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cdTAwM2VidXM7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTg6XHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNTktXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjgyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjgzOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg0LVx0XHRcdFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4pXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg2LVx0Ym9vbCB1bnRhZ2dlZCA9IHZsYW4tXHUwMDNlZmxhZ3MgXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fVU5UQUdHRUQ7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODc6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cdTAwM2Vwcml2O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg4LVx0dTE2IHB2aWQgPSBwcy1cdTAwM2Vwb3J0c1twb3J0XS5wdmlkO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg5LVx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBzLVx1MDAzZWJ1cztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI5MDpcdHN0cnVjdCBkc2FfbG9vcF92bGFuICp2bDtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5MS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTE6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMi1cdFx0XHRcdCAgICBpbnQgbmV3X210dSlcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMy17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTQ6XHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzIwLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzIxOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjIte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyNjpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkc2EsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI3LVx0XHRcdFx0ICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzMzLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM1Olx0LmdldF90YWdfcHJvdG9jb2xcdD0gZHNhX2xvb3BfZ2V0X3Byb3RvY29sLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM2Olx0LnNldHVwXHRcdFx0PSBkc2FfbG9vcF9zZXR1cCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNzpcdC50ZWFyZG93blx0XHQ9IGRzYV9sb29wX3RlYXJkb3duLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM4Olx0LmdldF9zdHJpbmdzXHRcdD0gZHNhX2xvb3BfZ2V0X3N0cmluZ3MsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzk6XHQuZ2V0X2V0aHRvb2xfc3RhdHNcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDA6XHQuZ2V0X3NzZXRfY291bnRcdFx0PSBkc2FfbG9vcF9nZXRfc3NldF9jb3VudCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MTpcdC5nZXRfZXRodG9vbF9waHlfc3RhdHNcdD0gZHNhX2xvb3BfZ2V0X2V0aHRvb2xfc3RhdHMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDI6XHQucGh5X3JlYWRcdFx0PSBkc2FfbG9vcF9waHlfcmVhZCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MzpcdC5waHlfd3JpdGVcdFx0PSBkc2FfbG9vcF9waHlfd3JpdGUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDQ6XHQucG9ydF9icmlkZ2Vfam9pblx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9qb2luLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ1Olx0LnBvcnRfYnJpZGdlX2xlYXZlXHQ9IGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ2Olx0LnBvcnRfc3RwX3N0YXRlX3NldFx0PSBkc2FfbG9vcF9wb3J0X3N0cF9zdGF0ZV9zZXQsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDc6XHQucG9ydF92bGFuX2ZpbHRlcmluZ1x0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ4Olx0LnBvcnRfdmxhbl9hZGRcdFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fYWRkLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ5Olx0LnBvcnRfdmxhbl9kZWxcdFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsLFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUwOlx0LnBvcnRfY2hhbmdlX210dVx0PSBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTE6XHQucG9ydF9tYXhfbXR1XHRcdD0gZHNhX2xvb3BfcG9ydF9tYXhfbXR1LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUyOlx0LnBoeWxpbmtfZ2V0X2NhcHNcdD0gZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1My19O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU1OnN0YXRpYyBpbnQgZHNhX2xvb3BfZHJ2X3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1Ni17XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTc6XHRzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgKnBkYXRhID0gbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1ODpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1OS1cdHN0cnVjdCBkc2Ffc3dpdGNoICpkcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zODItXHRkcy1cdTAwM2VkZXYgPSBcdTAwMjZtZGlvZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM4MzpcdGRzLVx1MDAzZW9wcyA9IFx1MDAyNmRzYV9sb29wX2RyaXZlcjtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4NC1cdGRzLVx1MDAzZXByaXYgPSBwcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTYtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozOTc6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTgte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk5LVx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQwMDpcdHN0cnVjdCBkc2FfbG9vcF9wcml2ICpwcztcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQwMS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MTE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMi17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDIyLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDIzOnN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgZHNhX2xvb3BfZHJ2ID0ge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDI0LVx0Lm1kaW9kcnYuZHJpdmVyXHQ9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjYtXHR9LFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI3Olx0LnByb2JlXHQ9IGRzYV9sb29wX2Rydl9wcm9iZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyODpcdC5yZW1vdmVcdD0gZHNhX2xvb3BfZHJ2X3JlbW92ZSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyOTpcdC5zaHV0ZG93biA9IGRzYV9sb29wX2Rydl9zaHV0ZG93bixcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMC19O1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDMxLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDMyOnN0YXRpYyBpbnQgZHNhX2xvb3BfYnVzX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzMy1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZGV2aWNlX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM0LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzNTpcdHJldHVybiBkcnYgPT0gXHUwMDI2ZHNhX2xvb3BfZHJ2Lm1kaW9kcnYuZHJpdmVyO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM2LX1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzNy1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzODpzdGF0aWMgdm9pZCBkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIodm9pZClcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzOS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ1LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ2OnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ3LXtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0ODpcdHN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgZHNhX2xvb3BfcGRhdGEgPSB7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDktXHRcdC5jZCA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NzAtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzE6XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VidXNfbWF0Y2ggPSBkc2FfbG9vcF9idXNfbWF0Y2g7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzI6XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YSA9IFx1MDAyNmRzYV9sb29wX3BkYXRhO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDczLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4MS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4MjpzdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4Ni1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ4NzpcdHJldCA9IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDg4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTMtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTQ6XHRyZXQgPSBtZGlvX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZkc2FfbG9vcF9kcnYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDk1LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDk2Olx0XHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ5Ny1cdFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDItfVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTAzOm1vZHVsZV9pbml0KGRzYV9sb29wX2luaXQpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTA0LVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA1OnN0YXRpYyB2b2lkIF9fZXhpdCBkc2FfbG9vcF9leGl0KHZvaWQpXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDYte1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA3Olx0bWRpb19kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZkc2FfbG9vcF9kcnYpO1xuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTA4Olx0ZHNhX2xvb3BfcGh5ZGV2c191bnJlZ2lzdGVyKCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDktXHRtZGlvX2RldmljZV9yZW1vdmUoc3dpdGNoX21kaW9kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMS19XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MTI6bW9kdWxlX2V4aXQoZHNhX2xvb3BfZXhpdCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MTMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4OTYzCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipVbmRlcnN0YW5kaW5nIHRoZSBEU0EgTG9vcCBTdHJ1Y3R1cmUqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiB0aGUgRFNBIGxvb3AgY3JlYXRpb24sIHNwZWNpZmljYWxseSB0aGUgaW5zdGFudGlhdGlvbiBvZiBhIHN3aXRjaCB3aXRoIGZpeGVkIHBvcnRzLiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB0aGF0IHRoaXMgc2V0dXAgaXMgcmlnaWRseSBkZWZpbmVkOiB0aGUgcG9ydHMgYXJlIHByZWNvbmZpZ3VyZWQuIFRoaXMsIG9mIGNvdXJzZSwgaXNuJiMzOTt0IGluaGVyZW50bHkgYSBiYWQgdGhpbmcsIGl0IGp1c3QgdGVsbHMgbWUgdGhlIHN5c3RlbSYjMzk7cyBkZXNpZ24gaXMgaGlnaGx5IHN0cnVjdHVyZWQuCgpJIGltbWVkaWF0ZWx5IGtleSBpbiBvbiBgZHNhX2xvb3BfcGRhdGFgLiAqVGhhdCogaXMgd2hlcmUgdGhlIHNwZWNpZmljcyBmb3IgdGhlIGludGVyZmFjZSBtb2RlIG9mIHRoZXNlIGZpeGVkIHBvcnRzIHJlc2lkZS4gTm93IEkgbmVlZCB0byBzZWUgKmhvdyogdGhpcyBgZHNhX2xvb3BfcGRhdGFgIHN0cnVjdHVyZSBpcyBkZWZpbmVkIGFuZCB1c2VkLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIGR5bmFtaWMgY29uZmlndXJhdGlvbiBhdCB0aGlzIHBvaW50LCBob3cgbXVjaCBydW50aW1lIGZsZXhpYmlsaXR5IGRvIHdlIGhhdmUgd2l0aCB0aGlzLiBBcmUgdGhlIGludGVyZmFjZSBtb2RlcyBzZXQgaW4gc3RvbmUgYXQgY29tcGlsZSB0aW1lLCBvciBjYW4gd2UgaW5mbHVlbmNlIHRoZW0sIGV2ZW4gaWYgaXQmIzM5O3MgdmlhIHNvbWV0aGluZyBsaWtlIGRldmljZSB0cmVlIG92ZXJyaWRlcyBvciBhIHBsYXRmb3JtLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIHBoYXNlPyBUaGUgZGV2aWwsIGFzIGFsd2F5cywgaXMgaW4gdGhlIGRldGFpbHMsIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGUgYHBkYXRhYCB0byBzZWUgaXRzIGZ1bGwgZGVmaW5pdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ0NiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDQ2Olx0c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfY3JlYXRlX3N3aXRjaF9tZGlvZGV2KHZvaWQpXG4gNDQ3Olx0e1xuIDQ0ODpcdFx0c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9wZGF0YSBkc2FfbG9vcF9wZGF0YSA9IHtcbiA0NDk6XHRcdFx0LmNkID0ge1xuIDQ1MDpcdFx0XHRcdC5wb3J0X25hbWVzWzBdID0gXCYjMzQ7bGFuMVwmIzM0OyxcbiA0NTE6XHRcdFx0XHQucG9ydF9uYW1lc1sxXSA9IFwmIzM0O2xhbjJcJiMzNDssXG4gNDUyOlx0XHRcdFx0LnBvcnRfbmFtZXNbMl0gPSBcJiMzNDtsYW4zXCYjMzQ7LFxuIDQ1MzpcdFx0XHRcdC5wb3J0X25hbWVzWzNdID0gXCYjMzQ7bGFuNFwmIzM0OyxcbiA0NTQ6XHRcdFx0XHQucG9ydF9uYW1lc1tEU0FfTE9PUF9DUFVfUE9SVF0gPSBcJiMzNDtjcHVcJiMzNDssXG4gNDU1Olx0XHRcdH0sXG4gNDU2Olx0XHRcdC5uYW1lID0gXCYjMzQ7RFNBIG1vY2t1cCBkcml2ZXJcJiMzNDssXG4gNDU3Olx0XHRcdC5lbmFibGVkX3BvcnRzID0gMHgxZixcbiA0NTg6XHRcdFx0Lm5ldGRldiA9IFwmIzM0O2V0aDBcJiMzNDssXG4gNDU5Olx0XHR9O1xuIDQ2MDpcdFx0c3RydWN0IG1paV9idXMgKmJ1cztcbiA0NjE6XHRcdGludCByZXQgPSAtRU5PREVWO1xuIDQ2MjpcdFxuIDQ2MzpcdFx0YnVzID0gbWRpb19maW5kX2J1cyhcJiMzNDtmaXhlZC0wXCYjMzQ7KTtcbiA0NjQ6XHRcdGlmIChXQVJOX09OKCFidXMpKVxuIDQ2NTpcdFx0XHRyZXR1cm4gcmV0O1xuIDQ2NjpcdFxuIDQ2NzpcdFx0c3dpdGNoX21kaW9kZXYgPSBtZGlvX2RldmljZV9jcmVhdGUoYnVzLCAzMSk7XG4gNDY4Olx0XHRpZiAoSVNfRVJSKHN3aXRjaF9tZGlvZGV2KSlcbiA0Njk6XHRcdFx0Z290byBvdXQ7XG4gNDcwOlx0XG4gNDcxOlx0XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VidXNfbWF0Y2ggPSBkc2FfbG9vcF9idXNfbWF0Y2g7XG4gNDcyOlx0XHRzd2l0Y2hfbWRpb2Rldi1cdTAwM2VkZXYucGxhdGZvcm1fZGF0YSA9IFx1MDAyNmRzYV9sb29wX3BkYXRhO1xuIDQ3MzpcdFxuIDQ3NDpcdFx0cmV0ID0gbWRpb19kZXZpY2VfcmVnaXN0ZXIoc3dpdGNoX21kaW9kZXYpO1xuIDQ3NTpcdFx0aWYgKHJldClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk3NzEKCQkJCQkJCW91dHB1dDogNDUKCQkJCQkJCXRob3VnaHRzOiA1ODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYSBQSFkgRnJhbWV3b3JrIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIGl0IGRvZXNuJiMzOTt0IGV4cGxpY2l0bHkgc2V0IHRoZSBpbnRlcmZhY2UgbW9kZSwgc28gaXQmIzM5O3MgcHJvYmFibHkgZGVmYXVsdGluZyB0byBzb21ldGhpbmcgbGlrZSBgUEhZX0lOVEVSRkFDRV9NT0RFX05BYCBvciBgUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMYC4gVGhlIHF1ZXN0aW9uIGlzLCBob3cgZG8gd2UgKmFjdHVhbGx5KiBnZXQgYHBoeWxpbmtfc3RhcnRgIHRvIGV4ZWN1dGUgd2l0aCBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWA/IFN5emthbGxlciYjMzk7cyBub3QgZGlyZWN0bHkgaW5qZWN0aW5nIGRldmljZSB0cmVlcywgc28gdGhhdCYjMzk7cyBvdXQsIGFuZCBpdCByZWxpZXMgb24gbmV0bGluayBmb3IgdmlydHVhbCBpbnRlcmZhY2VzLiBJIGhhZCBhIHRob3VnaHQgYWJvdXQgY3JlYXRpbmcgYSB2aXJ0dWFsIGludGVyZmFjZSB3aXRoIHBoeWxpbmsgYW5kIHNldHRpbmcgdGhlIG1vZGUsIGJ1dCB0aGVuIHJlbWVtYmVyZWQgYG5ldGRldnNpbWAgZG9lc24mIzM5O3QgZXZlbiB1c2UgcGh5bGluay4gV2hhdCBhYm91dCBgZHNhX2xvb3BgPyBDb3VsZCBJIG1hbmlwdWxhdGUgaXRzIGludGVyZmFjZSBtb2RlIHZpYSBldGh0b29sIG9yIG5ldGxpbms/IE5vLCB1c3VhbGx5IHRoYXQmIzM5O3MgZml4ZWQgYnkgdGhlIGhhcmR3YXJlIG9yIGRldmljZSB0cmVlLgoKQnV0LCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgZGVlcCBpbiBgcGh5bGluay5jYCwgd2hpY2ggbWFrZXMgaXQgaW50ZXJlc3RpbmcgZXZlbiBpZiBzeXprYWxsZXIgY2FuJiMzOTt0ICplYXNpbHkqIGhpdCB0aGUgc3BlY2lmaWMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHBhdGguIEhvd2V2ZXIsIHRoZXJlJiMzOTtzIHRoYXQgZ3VpZGVsaW5lIGFib3V0IG5vdCBmdXp6aW5nIGlmIGl0JiMzOTtzIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gVGhhdCYjMzk7cyB0aGUga2V5IHF1ZXN0aW9uLiBJcyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgYWN0dWFsbHkgcmVhY2hhYmxlIGluIFFFTVU/CgpJZiBubyBkcml2ZXIgaW4gUUVNVSAqdXNlcyogYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLCB0aGVuIGl0JiMzOTtzIGEgZGVhZCBlbmQuIExldCYjMzk7cyBsb29rIGZvciBhIGRyaXZlci4gUmlnaHQsIEkgcmVtZW1iZXIgc2VlaW5nIHRoYXQgYHFjYTgwN3guY2AgZXhwbGljaXRseSB1c2VzIGl0LiBHb29kLiBgcWNhODA3eC5jYCBpcyBhIFBIWSBkcml2ZXIsIHRob3VnaC4gQ2FuIHdlIGxvYWQgdGhhdCBpbiBRRU1VPyBZZXMsIHdlIGNhbiBsb2FkIFBIWSBkcml2ZXJzIGFuZCBiaW5kIHRoZW0gdG8gdmlydHVhbCBNRElPIGJ1c2VzLgoKQnV0IGhlcmUmIzM5O3MgdGhlIGNhdGNoOiBUbyB0cmlnZ2VyIGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAgd2l0aCBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAsIHdlIG5lZWQgYSBNQUMgZHJpdmVyIHRoYXQgKnVzZXMqIHBoeWxpbmsgKmFuZCogY29ubmVjdHMgdG8gdGhpcyBQSFksICphbmQqIHRoZSBpbnRlcmZhY2UgbW9kZSAqbXVzdCogYmUgc2V0IHRvIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYC4gVGhhdCB1c3VhbGx5IGdldHMgc2V0IGJ5IHRoZSBNQUMgZHJpdmVyIGJhc2VkIG9uIGEgZGV2aWNlIHRyZWUuIFdpdGhvdXQgdGhhdCBkZXZpY2UgdHJlZSBzZXR0aW5nLCBpdCYjMzk7cyBub3QgZ29pbmcgdG8gaGFwcGVuLgoKSG1tLi4uIHdhaXQuLi4gY291bGQgYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBvciBzb21ldGhpbmcgZWxzZSAqdHJpZ2dlciogaXQ/IFRoYXQmIzM5O3MgdGhlIG5leHQgYXZlbnVlIHRvIGV4cGxvcmUuIExldCYjMzk7cyBjaGVjayBpZiBgcWNhODA3eGAgaXRzZWxmIHNldHMgdGhlIGludGVyZmFjZSBtb2RlLCBzb21laG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDU0NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTQ1Olx0XG4gNTQ2Olx0XHRwcml2LVx1MDAzZXBhY2thZ2VfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9OQTtcbiA1NDc6XHRcdGlmICghb2ZfcHJvcGVydHlfcmVhZF9zdHJpbmcobnAsIFwmIzM0O3Fjb20scGFja2FnZS1tb2RlXCYjMzQ7LFxuIDU0ODpcdFx0XHRcdFx0ICAgICBcdTAwMjZwYWNrYWdlX21vZGVfbmFtZSkpIHtcbiA1NDk6XHRcdFx0aWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxuIDU1MDpcdFx0XHRcdFx0cGh5X21vZGVzKFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkpKSlcbiA1NTE6XHRcdFx0XHRwcml2LVx1MDAzZXBhY2thZ2VfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk7XG4gNTUyOlx0XHRcdGVsc2UgaWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxuIDU1MzpcdFx0XHRcdFx0ICAgICBwaHlfbW9kZXMoUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSSkpKVxuIDU1NDpcdFx0XHRcdHByaXYtXHUwMDNlcGFja2FnZV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTtcbiA1NTU6XHRcdFx0ZWxzZVxuIDU1NjpcdFx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDU1NzpcdFx0fVxuIDU1ODpcdFxuIDU1OTpcdFx0cmV0dXJuIDA7XG4gNTYwOlx0fVxuIDU2MTpcdFxuIDU2MjpcdHN0YXRpYyBpbnQgcWNhODA3eF9waHlfcGFja2FnZV9jb25maWdfaW5pdF9vbmNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gNTYzOlx0e1xuIDU2NDpcdFx0c3RydWN0IHFjYTgwN3hfc2hhcmVkX3ByaXYgKnByaXYgPSBwaHlfcGFja2FnZV9nZXRfcHJpdihwaHlkZXYpO1xuIDU2NTpcdFx0aW50IHZhbCwgcmV0O1xuIDU2NjpcdFxuIDU2NzpcdFx0LyogTWFrZSBzdXJlIFBIWSBmb2xsb3cgUEhZIHBhY2thZ2UgbW9kZSBpZiBlbmZvcmNlZCAqL1xuIDU2ODpcdFx0aWYgKHByaXYtXHUwMDNlcGFja2FnZV9tb2RlICE9IFBIWV9JTlRFUkZBQ0VfTU9ERV9OQSBcdTAwMjZcdTAwMjZcbiA1Njk6XHRcdCAgICBwaHlkZXYtXHUwMDNlaW50ZXJmYWNlICE9IHByaXYtXHUwMDNlcGFja2FnZV9tb2RlKVxuIDU3MDpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA1NzE6XHRcbiA1NzI6XHRcdHBoeV9sb2NrX21kaW9fYnVzKHBoeWRldik7XG4gNTczOlx0XG4gNTc0Olx0XHQvKiBTZXQgY29ycmVjdCBQSFkgcGFja2FnZSBtb2RlICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNDQ2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEludmVzdGlnYXRpb24gaW50byBTZXR0aW5nIFBIWSBJbnRlcmZhY2UgTW9kZSBmb3IgcWNhODA3eCB3aXRoIHN5emthbGxlcioqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyB0byBtYW5pcHVsYXRlIHRoZSBgcWNhODA3eGAgZHJpdmVyJiMzOTtzIGBxY29tLHBhY2thZ2UtbW9kZWAgc2V0dGluZyB1c2luZyBzeXprYWxsZXIuIFRoZSBkcml2ZXIgY2hlY2tzIHRoZSBkZXZpY2UgdHJlZSwgYW5kIGlmIGl0JiMzOTtzIG5vdCBzZXQgdGhlcmUsIGl0IGRvZXNuJiMzOTt0IHNldCBpdC4gVGhhdCYjMzk7cyBhIHByb2JsZW0uIFNvLCBhcmUgdGhlcmUgYW55IG90aGVyIHdheXMgdG8gZm9yY2UgYSBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgY29uZmlndXJhdGlvbj8KCk15IGZpcnN0IHRob3VnaHQgd2FzLCBtYXliZSBzeXprYWxsZXIgY291bGQgbGV2ZXJhZ2UgYElGTEFfSU5GT19LSU5EYCBvbiBzb21lIHNvcnQgb2YgdmlydHVhbCBkZXZpY2UgdG8gc3BlY2lmeSB0aGUgUEhZIGludGVyZmFjZSBtb2RlLiBCdXQsIG5vLCB0aGVyZSBkb2VzbiYjMzk7dCBzZWVtIHRvIGJlIGEgc3VpdGFibGUgdmlydHVhbCBkZXZpY2UgdG8gZG8gdGhhdCB3aXRoLiBXaGF0IGFib3V0IGB0dW5gLCBgdmV0aGAsIG9yIGBuZXRkZXZzaW1gPyBOb3BlLCB0aG9zZSBkb24mIzM5O3QgdXNlIHBoeWxpbmssIHNvIHRoZXkmIzM5O3JlIG5vdCByZWxldmFudC4gYGRzYV9sb29wYCB1c2VzIHBoeWxpbmssIGJ1dCB0aGUgaW50ZXJmYWNlIG1vZGUgaXMgZml4ZWQuIFVnaC4KCkNhbiBJIGV2ZW4gKnJlYWNoKiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgIHdpdGggYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGluIFFFTVU/IFByb2JhYmx5IG5vdC4gSXQgbG9va3MgbGlrZSB0aGF0IHNldHRpbmcgaXMgdGllZCB0byB2ZXJ5IHNwZWNpZmljIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb25zIG9yIGhhcmR3YXJlIHRoYXQgZXhwbGljaXRseSB1c2VzIFBTR01JSS4KCkFscmlnaHQsIG1heWJlIEkgY2FuIG1hbmlwdWxhdGUgaXQgdGhyb3VnaCBgU0lPQ1NNSUlSRUdgIG9yIHJlbGF0ZWQgaW9jdGxzPyBObywgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGlzIGp1c3QgYW4gaW50ZXJuYWwgZW51bSB2YWx1ZS4gSXQmIzM5O3Mgc2V0IGR1cmluZyBkZXZpY2UgcHJvYmUgYmFzZWQgb24gZGV2aWNlIHRyZWUsIEFDUEksIG9yIGJvYXJkIGZpbGVzLiBTaW5jZSBzeXprYWxsZXIgbGlrZWx5IGNhbiYjMzk7dCBpbmplY3QgZGV2aWNlIHRyZWUgbm9kZXMgZGlyZWN0bHksIEkmIzM5O20gb3V0IG9mIGx1Y2sgdGhlcmUuCgpIYW5nIG9uLi4uIGNvdWxkIHN5emthbGxlciwgaW4gKnNvbWUqIHNldHVwcywgaW5qZWN0IGRldmljZSB0cmVlIG5vZGVzLCBwZXJoYXBzIHVzaW5nIGBzeXpfbW91bnRfaW1hZ2VgIHdpdGggYSBjdXN0b20gRFRCPyBObywgRFRCcyBhcmUgcGFzc2VkIGF0IGJvb3QsIHNvIHRoYXQmIzM5O3MgYSBkZWFkIGVuZC4KCkkga25vdyBzeXprYWxsZXIgaGFzIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlgIGFuZCBvdGhlciByZWxhdGVkIHBzZXVkby1zeXNjYWxscywgYnV0IG5vdGhpbmcgc2VlbXMgdG8gZGlyZWN0bHkgYWRkcmVzcyBEVEIgaW5qZWN0aW9uLiBIb3dldmVyLCB3YWl0LCB0aGVyZSYjMzk7cyBgc3l6X2luaXRfbmV0X3NvY2tldGAgYW5kIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlgLi4uIElzIHRoZXJlIGEgbmV0bGluayBhdHRyaWJ1dGUsIG1heWJlLCB0aGF0IEkgY291bGQgdXNlIHRvIHNldCB0aGUgUEhZIGludGVyZmFjZSBtb2RlPyBJIG5lZWQgdG8gY2hlY2sgYHJ0bmxfbGlua19vcHNgIHRvIHNlZSB3aGF0JiMzOTtzIGF2YWlsYWJsZS4gVGhpcyBpcyB3aGVyZSB0aGUgc29sdXRpb24gaXMgcHJvYmFibHkgaGlkaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BIWV9JTlRFUkZBQ0VfTU9ERSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9jb3JlL3J0bmV0bGluay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzI0NTkKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJpemF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipJbnZlc3RpZ2F0aW5nIE5ldGxpbmsgQXR0cmlidXRlcyBmb3IgUEhZIEludGVyZmFjZSBNb2RlKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgd2UmIzM5O3JlIHJlcHJlc2VudGluZyBhbmQgbWFuaXB1bGF0aW5nIFBIWSBpbnRlcmZhY2UgbW9kZXMgd2l0aGluIHRoZSBuZXRsaW5rIGZyYW1ld29yay4gTXkgaW1tZWRpYXRlIHRhc2sgaXMgdG8gY29uZmlybSBpZiB3ZSYjMzk7dmUgZGVmaW5lZCBhIHNwZWNpZmljIG5ldGxpbmsgYXR0cmlidXRlIGRlZGljYXRlZCB0byBoYW5kbGluZyB0aGlzIGFzcGVjdCBvZiB0aGUgUEhZLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIGFuIGF0dHJpYnV0ZSBleGlzdHMsIG9yIGlmIHRoZSByZWxldmFudCBpbmZvcm1hdGlvbiBpcyBiZWluZyBlbmNvZGVkIHdpdGhpbiBhIGJyb2FkZXIsIG1vcmUgZ2VuZXJpYyBhdHRyaWJ1dGUgc3RydWN0dXJlLiBJZiBhIGRlZGljYXRlZCBhdHRyaWJ1dGUgKmRvZXMqIGV4aXN0LCBJJiMzOTtsbCBuZWVkIHRvIGV4YW1pbmUgaXRzIHN0cnVjdHVyZSBhbmQgYXNzb2NpYXRlZCBmbGFncy4gSWYgbm90LCBJJiMzOTtsbCBoYXZlIHRvIGludmVzdGlnYXRlIGhvdyB0aGUgbW9kZSBpbmZvcm1hdGlvbiBpcyBjdXJyZW50bHkgYmVpbmcgcGFzc2Vk4oCUbGlrZWx5LCBpdCYjMzk7cyBlbWJlZGRlZCB3aXRoaW4gYW5vdGhlciBhdHRyaWJ1dGUsIG9yIHBlcmhhcHMgcmVxdWlyZXMgc29tZSBjdXN0b20gaGFuZGxpbmcgdGhhdCYjMzk7cyBub3QgaW1tZWRpYXRlbHkgYXBwYXJlbnQuIExldCBtZSBzdGFydCBkaWdnaW5nIHRocm91Z2ggdGhlIHJlbGV2YW50IGhlYWRlcnMgYW5kIGV4aXN0aW5nIGNvZGXigKYgdGhlIGBubDgwMjExYCBkZWZpbml0aW9ucyBhcmUgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQuIEkgc3VzcGVjdCBJIG1pZ2h0IGFsc28gbmVlZCB0byBleGFtaW5lIHRoZSBkZXZpY2UgZHJpdmVycyYjMzk7IGFuZCByZWxldmFudCBzdGFjayYjMzk7cyBuZXRsaW5rIGludGVyZmFjZXMgdG9vLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQSFlfSU5URVJGQUNFX01PREUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL29mX25ldC5jLTI0LSAqIGludGVyZmFjZSBhbmQgMCByZXR1cm5lZC4gSW4gY2FzZSBvZiBlcnJvciBpbnRlcmZhY2UgaXMgc2V0IHRvXG5uZXQvY29yZS9vZl9uZXQuYzoyNTogKiBQSFlfSU5URVJGQUNFX01PREVfTkEgYW5kIGFuIGVycm5vIGlzIHJldHVybmVkLCBlLmcuIC1FTk9ERVYuXG5uZXQvY29yZS9vZl9uZXQuYy0yNi0gKi9cbm5ldC9jb3JlL29mX25ldC5jPTI3PWludCBvZl9nZXRfcGh5X21vZGUoc3RydWN0IGRldmljZV9ub2RlICpucCwgcGh5X2ludGVyZmFjZV90ICppbnRlcmZhY2UpXG4tLVxubmV0L2NvcmUvb2ZfbmV0LmMtMzEtXG5uZXQvY29yZS9vZl9uZXQuYzozMjpcdCppbnRlcmZhY2UgPSBQSFlfSU5URVJGQUNFX01PREVfTkE7XG5uZXQvY29yZS9vZl9uZXQuYy0zMy1cbi0tXG5uZXQvY29yZS9vZl9uZXQuYy0zOS1cbm5ldC9jb3JlL29mX25ldC5jOjQwOlx0Zm9yIChpID0gMDsgaSBcdTAwM2MgUEhZX0lOVEVSRkFDRV9NT0RFX01BWDsgaSYjNDM7JiM0MzspXG5uZXQvY29yZS9vZl9uZXQuYy00MS1cdFx0aWYgKCFzdHJjYXNlY21wKHBtLCBwaHlfbW9kZXMoaSkpKSB7XG4tLVxubmV0L2RzYS9wb3J0LmM9MTYxNz1pbnQgZHNhX3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IGRzYV9wb3J0ICpkcClcbi0tXG5uZXQvZHNhL3BvcnQuYy0xNjI2LVx0aWYgKGVycilcbm5ldC9kc2EvcG9ydC5jOjE2Mjc6XHRcdG1vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfTkE7XG5uZXQvZHNhL3BvcnQuYy0xNjI4LVxuLS1cbm5ldC9kc2EvcG9ydC5jLTE2MzItXHRcdC8qIEZvciBsZWdhY3kgZHJpdmVycyAqL1xubmV0L2RzYS9wb3J0LmM6MTYzMzpcdFx0aWYgKG1vZGUgIT0gUEhZX0lOVEVSRkFDRV9NT0RFX05BKSB7XG5uZXQvZHNhL3BvcnQuYy0xNjM0LVx0XHRcdF9fc2V0X2JpdChtb2RlLCBkcC1cdTAwM2VwbF9jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xubmV0L2RzYS9wb3J0LmMtMTYzNS1cdFx0fSBlbHNlIHtcbm5ldC9kc2EvcG9ydC5jOjE2MzY6XHRcdFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCxcbm5ldC9kc2EvcG9ydC5jLTE2MzctXHRcdFx0XHQgIGRwLVx1MDAzZXBsX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG5uZXQvZHNhL3BvcnQuYzoxNjM4Olx0XHRcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfR01JSSxcbm5ldC9kc2EvcG9ydC5jLTE2MzktXHRcdFx0XHQgIGRwLVx1MDAzZXBsX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XG4tLVxubmV0L2RzYS9wb3J0LmM9MTg0Mj1zdGF0aWMgdm9pZCBkc2Ffc2hhcmVkX3BvcnRfbGlua19kb3duKHN0cnVjdCBkc2FfcG9ydCAqZHApXG4tLVxubmV0L2RzYS9wb3J0LmMtMTg0Ny1cdFx0ZHMtXHUwMDNlcGh5bGlua19tYWNfb3BzLVx1MDAzZW1hY19saW5rX2Rvd24oXHUwMDI2ZHAtXHUwMDNlcGxfY29uZmlnLCBNTE9fQU5fRklYRUQsXG5uZXQvZHNhL3BvcnQuYzoxODQ4Olx0XHRcdFx0XHRcdCAgIFBIWV9JTlRFUkZBQ0VfTU9ERV9OQSk7XG5uZXQvZHNhL3BvcnQuYy0xODQ5LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM0NDEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIHRoZSBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgVnVsbmVyYWJpbGl0eSBQYXRoKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSwgYW5kIGl0IGxvb2tzIGxpa2UgdGhlIGludGVyZmFjZSBtb2RlLCBzcGVjaWZpY2FsbHkgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLCBpcyBvbmx5IGRldGVybWluZWQgZnJvbSB0aGUgZGV2aWNlIHRyZWUgdXNpbmcgYG9mX2dldF9waHlfbW9kZWAuIFRoYXQmIzM5O3MgYSBwb3RlbnRpYWwgd2VhayBwb2ludCwgYnV0IGFsc28gYSBsaW1pdGF0aW9uLiBUaGUgY2hhbGxlbmdlIGlzLCBpZiBzeXprYWxsZXIgY2FuJiMzOTt0IG1vZGlmeSB0aGUgZGV2aWNlIHRyZWUgZGlyZWN0bHksIHRoZW4gaXQgY2FuJiMzOTt0IHNpbXBseSBmb3JjZSB0aGF0IGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCB2YWx1ZS4gSXQgc2VlbXMgYSBjbGFzc2ljIHZ1bG5lcmFiaWxpdHkgcGF0aCwgYXNzdW1pbmcgdGhlIGF0dGFja2VyIGNhbiBhY2Nlc3MgYW5kIG1vZGlmeSB0aGUgZGV2aWNlIHRyZWUsIGEgdHlwaWNhbCBzeXprYWxsZXIgZ29hbC4KCldhaXQgYSBzZWNvbmQuLi4gYmVmb3JlIEkgZ2V0IHRvbyBmaXhhdGVkIG9uIHRoZSBkZXZpY2UgdHJlZSwgYXJlIHRoZXJlICphbnkqIG90aGVyIHdheXMgdG8gc2V0IHRoYXQgc3BlY2lmaWMgaW50ZXJmYWNlIG1vZGU/IE1heWJlIHNvbWUgb2JzY3VyZSByZWdpc3RlciBzZXR0aW5nIG9yIGEgZGlmZmVyZW50IGRyaXZlciBwYXRoPyBJIHNob3VsZCBwcm9iYWJseSBicm9hZGVuIHRoZSBzZWFyY2guIExldCBtZSBxdWlja2x5IHNjYW4gdGhyb3VnaCB0aGUgYGRyaXZlcnMvbmV0L2AgZGlyZWN0b3J5IGFnYWluLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHRoZXJlIGlzbiYjMzk7dCBhbm90aGVyIHdheSB0byBpbmZsdWVuY2UgdGhhdCBzZXR0aW5nIGJlZm9yZSBJIGNvbXBsZXRlbHkgZGlzY291bnQgdGhlIHBvc3NpYmlsaXR5IG9mIGV4cGxvaXRhdGlvbi4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM9MTU5PWludCBwaHlfaW50ZXJmYWNlX251bV9wb3J0cyhwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMS1cdFx0cmV0dXJuIDQ7XG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzoyMDI6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0yMDMtXHRcdHJldHVybiA1O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jPTI5ND11bnNpZ25lZCBsb25nIHBoeV9jYXBzX2Zyb21faW50ZXJmYWNlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMzEwLVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYzozMTE6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTItXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzg9c3RhdGljIGludCBwaHlsaW5rX2ludGVyZmFjZV9tYXhfc3BlZWQocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1OS1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjA6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MS1cdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTc3ND1zdGF0aWMgaW50IHBoeWxpbmtfcGFyc2VfbW9kZShzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MDgtXHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4MDk6XHRcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODEwLVx0XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQyLVx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwNDM6XHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDQtXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTQ5MD1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfcHJvYmVfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01NDktXHRcdGlmICghc3RyY2FzZWNtcChwYWNrYWdlX21vZGVfbmFtZSxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTA6XHRcdFx0XHRwaHlfbW9kZXMoUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSkpKVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU1MTpcdFx0XHRwcml2LVx1MDAzZXBhY2thZ2VfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTUyLVx0XHRlbHNlIGlmICghc3RyY2FzZWNtcChwYWNrYWdlX21vZGVfbmFtZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM9NTYyPXN0YXRpYyBpbnQgcWNhODA3eF9waHlfcGFja2FnZV9jb25maWdfaW5pdF9vbmNlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4NS1cdFx0YnJlYWs7XG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTg2Olx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4Ny1cdGRlZmF1bHQ6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NzU1CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBQSFkgSW50ZXJmYWNlIE1vZGUgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBpdCBsb29rcyBsaWtlIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpcyBleGNsdXNpdmVseSBkZWZpbmVkIHdpdGhpbiB0aGUgYHFjYTgwN3guY2AgZmlsZSwgcHJpbWFyaWx5IGRyaXZlbiBieSB0aGUgRGV2aWNlIFRyZWUgKERUKS4gSSBrbm93IGl0IGdldHMgcGFyc2VkIGZyb20gdGhlIERUIGluIGBvZl9uZXQuY2AgYW5kIGBwaHlsaW5rLmNgLCB3aGljaCBtYWtlcyBzZW5zZS4gQnV0LCBJJiMzOTttIGN1cmlvdXMsIGlzIHRoYXQgKnRydWx5KiB0aGUgb25seSB3YXkgdGhpcyBzcGVjaWZpYyBtb2RlIGdldHMgc2V0PyBBcmUgdGhlcmUgYW55IG90aGVyIHBvdGVudGlhbCByb3V0ZXM/IE15IGd1dCB0ZWxscyBtZSBJIG5lZWQgdG8gY29uc2lkZXIgYWxsIHBvc3NpYmlsaXRpZXMuCgpQZXJoYXBzIHRoZXJlJiMzOTtzIGFuIEFDUEktcmVsYXRlZCBhdmVudWUgSSYjMzk7bSBvdmVybG9va2luZz8gSSBzaG91bGQgcmVhbGx5IG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIG5lZWQgdG8gZGlnIGEgbGl0dGxlIGRlZXBlciwgYW5kIHRoZSBsb2dpY2FsIG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGBhY3BpX2dldF9waHlfbW9kZWAuIEl0JiMzOTtzIHRpbWUgdG8gY2hlY2sgdGhhdCBmdW5jdGlvbiBhbmQgc2VlIGlmIEFDUEkgaXMgaW52b2x2ZWQuIFRoaXMgZmVlbHMgbGlrZSB0aGUgcmlnaHQgcGxhY2UgdG8gc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YWNwaV9nZXRfcGh5X21vZGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTA3OAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipEZWVwIERpdmUgaW50byBgZndub2RlX2dldF9waHlfbW9kZWAqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBmd25vZGVfZ2V0X3BoeV9tb2RlYC4uLiBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIGZ1bmN0aW9uIGlzIHN1cHBvc2VkIHRvIHdvcmsgYW5kIHdoYXQgY29udGV4dCBpdCBvcGVyYXRlcyBpbi4gSSBzaG91bGQgY2hlY2sgdGhlIGltcGxlbWVudGF0aW9uIGZpcnN0LiBJcyBpdCBzdHJhaWdodGZvcndhcmQsIG9yIGlzIGl0IGNhbGxpbmcgb3RoZXIgZnVuY3Rpb25zIHdoaWNoIGNhbiBhZmZlY3QgaXRzIGJlaGF2aW9yPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgcG90ZW50aWFsIGdvdGNoYXMgSSBzaG91bGQgYmUgYXdhcmUgb2YgcmVnYXJkaW5nIHBvdGVudGlhbCBzaWRlIGVmZmVjdHM/IEkgd29uZGVyIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgaGFyZHdhcmUgcGxhdGZvcm1zIHdoZXJlIHRoaXMgZnVuY3Rpb24gYmVoYXZlcyB1bmV4cGVjdGVkbHksIG1heWJlIHNvbWUgcGxhdGZvcm0tc3BlY2lmaWMgcXVpcmtzLiBJIGJldHRlciBjaGVjayB0aGUgcmVsZXZhbnQgZG9jdW1lbnRhdGlvbiBvciBjb21tZW50cyB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhbnl0aGluZyBvYnZpb3VzLiBJdCYjMzk7cyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRyYWN0IGFuZCBhbnkgZXJyb3Igc2NlbmFyaW9zIGl0JiMzOTtzIGludGVuZGVkIHRvIGhhbmRsZS4gSSYjMzk7bGwgbmVlZCB0byB0aGluayBhYm91dCBob3cgdGhpcyBpbnRlcmFjdHMgd2l0aCB0aGUgb3ZlcmFsbCBmcmFtZXdvcmsgb3IgYXJjaGl0ZWN0dXJlLiBLbm93aW5nIHRoZSBgcGh5X21vZGVgIGlzIGNyaXRpY2FsIHRvIG91ciBzeXN0ZW0uIExldCBtZSBzdGFydCBkaWdnaW5nIGludG8gdGhlIGNvZGUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zndub2RlX2dldF9waHlfbW9kZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jhc2UvcHJvcGVydHkuYz05OTc9RVhQT1JUX1NZTUJPTF9HUEwoZGV2aWNlX2dldF9kbWFfYXR0cik7XG4tLVxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMtOTk5LS8qKlxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM6MTAwMDogKiBmd25vZGVfZ2V0X3BoeV9tb2RlIC0gR2V0IHBoeSBtb2RlIGZvciBnaXZlbiBmaXJtd2FyZSBub2RlXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYy0xMDAxLSAqIEBmd25vZGU6XHRQb2ludGVyIHRvIHRoZSBnaXZlbiBub2RlXG4tLVxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMtMTAwNi0gKi9cbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jOjEwMDc6aW50IGZ3bm9kZV9nZXRfcGh5X21vZGUoY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSlcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jLTEwMDgte1xuLS1cbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jLTEwMjQtfVxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM6MTAyNTpFWFBPUlRfU1lNQk9MX0dQTChmd25vZGVfZ2V0X3BoeV9tb2RlKTtcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jLTEwMjYtXG4tLVxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM9MTAzNT1pbnQgZGV2aWNlX2dldF9waHlfbW9kZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYy0xMDM2LXtcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jOjEwMzc6XHRyZXR1cm4gZndub2RlX2dldF9waHlfbW9kZShkZXZfZndub2RlKGRldikpO1xuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMtMTAzOC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jPTMzMT1zdGF0aWMgaW50IGRwYWEyX21hY19nZXRfaWZfbW9kZShzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZHBtYWNfbm9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtMzM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jOjMzNzpcdGVyciA9IGZ3bm9kZV9nZXRfcGh5X21vZGUoZHBtYWNfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtMzM4LVx0aWYgKGVyciBcdTAwM2UgMClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYz02ODQwPXN0YXRpYyBpbnQgbXZwcDJfcG9ydF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTY4NzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYzo2ODczOlx0cGh5X21vZGUgPSBmd25vZGVfZ2V0X3BoeV9tb2RlKHBvcnRfZndub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTY4NzQtXHRpZiAocGh5X21vZGUgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYz0xMDg0PXN0YXRpYyBpbnQgbGFuOTY2eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTEyMDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYzoxMjAzOlx0XHRwaHlfbW9kZSA9IGZ3bm9kZV9nZXRfcGh5X21vZGUocG9ydG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTEyMDQtXHRcdGVyciA9IGxhbjk2NnhfcHJvYmVfcG9ydChsYW45NjZ4LCBwLCBwaHlfbW9kZSwgcG9ydG5wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy1pbnRlbC5jPTYxNj1zdGF0aWMgaW50IGludGVsX21nYmVfY29tbW9uX2RhdGEoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03MjAtXHRcdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo3MjE6XHRcdHBoeV9tb2RlID0gZndub2RlX2dldF9waHlfbW9kZShmd25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03MjItXHRcdGlmIChwaHlfbW9kZSBcdTAwM2U9IDApIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3Byb3BlcnR5Lmg9NTAzPWludCBkZXZpY2VfZ2V0X3BoeV9tb2RlKHN0cnVjdCBkZXZpY2UgKmRldik7XG5pbmNsdWRlL2xpbnV4L3Byb3BlcnR5Lmg6NTA0OmludCBmd25vZGVfZ2V0X3BoeV9tb2RlKGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUpO1xuaW5jbHVkZS9saW51eC9wcm9wZXJ0eS5oLTUwNS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY0NTYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA1NzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBY2Nlc3NpYmlsaXR5IG9mIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgdmlhIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgdGhpbmcuIFRoZSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgZndub2RlX2dldF9waHlfbW9kZWAgcmVhZHMgZnJvbSBkZXZpY2UgcHJvcGVydGllcy4gTXkgbWFpbiBxdWVzdGlvbiB0aGVuIGJlY29tZXMsIGNhbiBzeXprYWxsZXIgaW5qZWN0IHRob3NlIGRldmljZSBwcm9wZXJ0aWVzPyBJdCBsb29rcyBsaWtlIHN5emthbGxlciBjYW4gdXNlIGBzeXpfdXNiX2Nvbm5lY3RgIGFuZCBgc3l6XzgwMjExX2luamVjdF9mcmFtZWAgYW5kIHRoZSBsaWtlLCBidXQgaXQgZG9lc24mIzM5O3QgZ2VuZXJhbGx5IHN1cHBvcnQgaW5qZWN0aW5nIGFyYml0cmFyeSBBQ1BJIG9yIERUIHByb3BlcnRpZXMuIFRoZSBzcGVjaWZpYyBleGFtcGxlIG9mIGBzdG1tYWNgIChzcGVjaWZpY2FsbHkgYGR3bWFjLWludGVsYCkgcmVhZHMgYHBoeV9tb2RlYCBmcm9tIHRoZSBgZndub2RlYCwgYW5kIGlmIHRoYXQmIzM5O3Mgbm90IHRoZXJlLCBpdCBkZWZhdWx0cyB0byBzb21ldGhpbmcgZWxzZS4gQnV0IHdhaXQsIGBkd21hYy1pbnRlbGAgaXMgYSBQQ0kgZGV2aWNlLiBDYW4gc3l6a2FsbGVyIGluamVjdCBQQ0kgZGV2aWNlcyB3aXRoIHBhcnRpY3VsYXIgcHJvcGVydGllcz8gU3l6a2FsbGVyICpkb2VzKiBoYXZlIGBzeXpfcGNpX2RldmljZV9hZGRgIHdoaWNoIGxldHMgeW91IGFkZCB2aXJ0dWFsIFBDSSBkZXZpY2VzLCBidXQgcmlnaHQgbm93LCBpdCBkb2VzbiYjMzk7dCBsb29rIGxpa2UgdGhhdCBzdXBwb3J0cyBpbmplY3RpbmcgdGhvc2UgQUNQSS9md25vZGUgcHJvcGVydGllcy4gU28sIGl0IHNlZW1zIHVubGlrZWx5IHRoYXQgc3l6a2FsbGVyIGNhbiBlYXNpbHkgdHJpZ2dlciBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4KCkJ1dCBsZXQmIzM5O3MgdGhpbmsgb3V0c2lkZSB0aGUgYm94LiBJcyB0aGVyZSAqYW55KiBvdGhlciByb3V0ZT8gUGVyaGFwcyBhIGRyaXZlciBzZXRzIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBhcyBpdHMgZGVmYXVsdD8gSSBjaGVja2VkLCBhbmQgZnJvbSBteSBxdWljayByZXZpZXcgb2YgZHJpdmVycyB1c2luZyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAsIG9ubHkgYHFjYTgwN3guY2AgdXNlcyBpdCBleHBsaWNpdGx5LCBzbyBubyBNQUMgZHJpdmVyIGFwcGVhcnMgdG8gc2V0IGl0IGFzIGEgZGVmYXVsdC4gV2FpdCwgd2hhdCBhYm91dCBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaW5zaWRlIGBwaHlsaW5rX3BhcnNlX21vZGVgPyBSaWdodCwgdGhhdCBwYXJzZXMgdGhlIG1vZGUgZnJvbSB0aGUgZGV2aWNlIHRyZWUuIFNvLCBubyBkZXZpY2UgdHJlZSwgbm8gcGFyc2luZy4KCklzIHRoZXJlIGFueSBuZXRsaW5rIGludGVyZmFjZSB0aGF0IGxldHMgeW91IHNldCB0aGUgUEhZIG1vZGU/IExldCYjMzk7cyBjaGVjayBgcnRubF9saW5rX29wc2AgZm9yIGFueSBkcml2ZXIgdGhhdCBleHBvc2VzIHRoaXMgZnVuY3Rpb25hbGl0eS4gTm8gbHVjay4gUEhZIG1vZGUgbG9va3MgbGlrZSBhIGhhcmR3YXJlIHByb3BlcnR5LCBpdOKAmXMgbm90IGNvbmZpZ3VyYWJsZSBhdCBydW50aW1lLgoKU28sIHRoaXMgcGF0Y2ggaXMgZXNzZW50aWFsbHkgZW5hYmxpbmcgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHdpdGhpbiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgLiBHaXZlbiB0aGF0IGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBzZWVtcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbGlrZSBHQ0Ugb3IgUUVNVSwgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBvciBkZXZpY2UgdHJlZSBpbmplY3Rpb24sIHRoaXMgY2hhbmdlIHNlZW1zIGxpa2UgYSBsb3cteWllbGQgdGFyZ2V0IGZvciBmdXp6aW5nLgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjaywgdGhvdWdoLiBDYW4gd2Ugc29tZWhvdyBnZXQgYXQgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHZpYSBgZXRodG9vbGA/IEkgcmV2aWV3ZWQgYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBhbmQgaXQgZG9lc24mIzM5O3Qgc2V0IGBjb25maWcuaW50ZXJmYWNlYCwgd2hpY2ggaXMgbm90IGEgZ29vZCBzaWduLiBDYW4gd2UgZG8gaXQgd2l0aCBgU0lPQ1NNSUlSRUdgPyBObywgdGhhdCYjMzk7cyBqdXN0IGZvciByZWFkaW5nL3dyaXRpbmcgUEhZIHJlZ2lzdGVycy4gV2hhdCBhYm91dCBgZGV2bGlua2A/IEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgaWYgYGRldmxpbmtgIGhhcyBhbnkgY29udHJvbCBvdmVyIFBIWSBtb2RlLCBidXQgSSYjMzk7bSBsZWFuaW5nIHRvd2FyZHMgdGhpcyBub3QgYmVpbmcgYSB2aWFibGUgZnV6emluZyB0YXJnZXQgYXQgdGhpcyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDI6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtQSFlfSU5URVJGQUNFX01PREUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvZGV2bGluay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzc0OAoJCQkJCQkJb3V0cHV0OiAxNTEKCQkJCQkJCXRob3VnaHRzOiA1NDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogTm90IFdvcnRoIEZ1enppbmcqKgoKT2theSwgc28gdGhlIHNpdHVhdGlvbiBpcyB0aGlzOiBJJiMzOTt2ZSBsb29rZWQgYXQgdGhlIGNvZGUsIGFuZCBJJiMzOTt2ZSBkZXRlcm1pbmVkIHRoaXMgcGF0aCBpcyB1bnJlYWNoYWJsZSBpbiBvdXIgZnV6emluZyBlbnZpcm9ubWVudC4gU3BlY2lmaWNhbGx5LCB0aGUgb25seSB3YXkgdG8gc2V0IGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBzZWVtcyB0byBiZSB0aHJvdWdoIGVpdGhlciBkZXZpY2UgdHJlZSAoRFQpIGNvbmZpZ3VyYXRpb25zLCBBQ1BJLCBvciwgaW4gYSB2ZXJ5IHNwZWNpZmljIGV4Y2VwdGlvbiwgaGFyZGNvZGluZyBpdCB3aXRoaW4gYSBkcml2ZXIuIEJ1dCwgYW5kIHRoaXMgaXMgdGhlIGNydXggb2YgaXQsIG5vIHN0YW5kYXJkIGRyaXZlciBoYXJkY29kZXMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHRvIGJlIHVzZWQgZm9yIHRoZSBjdXJyZW50IGNvZGUgaW4gcXVlc3Rpb24sIG90aGVyIHRoYW4gdGhlIGBxY2E4MDd4YCBQSFkgZHJpdmVyOyBhbmQgdGhlIGBxY2E4MDd4YCBQSFkgZHJpdmVyICpvbmx5KiBzZXRzIGl0IGlmIHRoZSBjb25maWd1cmF0aW9uIGlzIHNwZWNpZmllZCBpbiBEVC4KClNpbmNlIHdlIGNhbiYjMzk7dCBpbmplY3QgYXJiaXRyYXJ5IERUIG9yIEFDUEkgcHJvcGVydGllcyBpbiBlbnZpcm9ubWVudHMgbGlrZSBzeXprYWxsZXIsIHdlIGNhbm5vdCB0cmlnZ2VyIHRoYXQgcGFydGljdWxhciBjb2RlIHBhdGguIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBzeXprYWxsZXIgYW5kIG90aGVyIHN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIHNldHVwcyAoUUVNVS9HQ0UpIGRvbiYjMzk7dCBoYXZlIHRoZSBuZWNlc3NhcnkgaGFyZHdhcmUgdG8gdXRpbGl6ZSB0aGlzIHNldHRpbmcgb3IgY29uZmlndXJlIHRoZSBzeXN0ZW0gaW4gc3VjaCBhIHdheS4KClRoZXJlZm9yZSwgbG9va2luZyBhdCB0aGUgZnV6emluZyBndWlkZWxpbmVzLCB0aGlzIHBhdGNoIHNxdWFyZWx5IGZhbGxzIHVuZGVyIHRoZSBjcml0ZXJpYTogJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUmIzM0Oy4gVGhlIGhhcmR3YXJlLCBvciBpdHMgZW11bGF0ZWQgZXF1aXZhbGVudCwgaXMganVzdCBub3QgdGhlcmUsIGFuZCB3ZSBjYW4mIzM5O3QgbWFrZSBpdCBhcHBlYXIuCgpTbywgaW4gc2hvcnQsIHdoaWxlIHRoZSBwYXRjaCBpdHNlbGYgaXMgZmluZSwgdHJpZ2dlcmluZyBpdHMgaW50ZW5kZWQgZnVuY3Rpb25hbGl0eSBpcyBpbXBvc3NpYmxlIGluIG91ciBjdXJyZW50IGZ1enppbmcgc2V0dXAuIEkmIzM5O20gY29uZmlkZW50bHkgc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMjo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSB0byB0aGUgc3dpdGNoIHN0YXRlbWVudCBpbiBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZSgpLiBUaGUgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSBpbnRlcmZhY2UgbW9kZSBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyB0eXBpY2FsbHkgc2V0IHZpYSBEZXZpY2UgVHJlZSAoRFQpIG9yIEFDUEkgcHJvcGVydGllcyAoZS5nLiwgaW4gdGhlIHFjYTgwN3ggUEhZIGRyaXZlcikuIFNpbmNlIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cyBkbyBub3QgaGF2ZSB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCB1c2VzIHRoaXMgbW9kZSwgbm9yIGRvIHRoZXkgaW5qZWN0IGFyYml0cmFyeSBEVC9BQ1BJIHByb3BlcnRpZXMgdG8gdHJpZ2dlciBpdCwgdGhpcyBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSB0byB0aGUgc3dpdGNoIHN0YXRlbWVudCBpbiBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZSgpLiBUaGUgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSBpbnRlcmZhY2UgbW9kZSBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyB0eXBpY2FsbHkgc2V0IHZpYSBEZXZpY2UgVHJlZSAoRFQpIG9yIEFDUEkgcHJvcGVydGllcyAoZS5nLiwgaW4gdGhlIHFjYTgwN3ggUEhZIGRyaXZlcikuIFNpbmNlIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cyBkbyBub3QgaGF2ZSB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgdGhhdCB1c2VzIHRoaXMgbW9kZSwgbm9yIGRvIHRoZXkgaW5qZWN0IGFyYml0cmFyeSBEVC9BQ1BJIHByb3BlcnRpZXMgdG8gdHJpZ2dlciBpdCwgdGhpcyBjb2RlIHBhdGggaXMgaW1wb3NzaWJsZSB0byByZWFjaCBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAyOjQwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozODoxMy44MjM1NjcwMDNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDc0ODE1NjU1NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgdG8gdGhlIHN3aXRjaCBzdGF0ZW1lbnQgaW4gcGh5bGlua19nZXRfaW5iYW5kX3R5cGUoKS4gVGhlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgaW50ZXJmYWNlIG1vZGUgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIHRoYXQgaXMgdHlwaWNhbGx5IHNldCB2aWEgRGV2aWNlIFRyZWUgKERUKSBvciBBQ1BJIHByb3BlcnRpZXMgKGUuZy4sIGluIHRoZSBxY2E4MDd4IFBIWSBkcml2ZXIpLiBTaW5jZSBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMgZG8gbm90IGhhdmUgdGhlIHNwZWNpZmljIGhhcmR3YXJlIHRoYXQgdXNlcyB0aGlzIG1vZGUsIG5vciBkbyB0aGV5IGluamVjdCBhcmJpdHJhcnkgRFQvQUNQSSBwcm9wZXJ0aWVzIHRvIHRyaWdnZXIgaXQsIHRoaXMgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozODoxMy44MjM1NzI0NzJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwMjQzOTg0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGEwZmIxM2ViODMwMWQzYTJjNWNkNjNkMjkwOTFkMzI1ZTBiNDk3YmZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBBdWcgOCAwMjozODoxMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbmluZGV4IDE4ZDJlYWQ5N2FhNTQuLjk4M2ExYTNjZWUzNzQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcXG5AQCAtMTA0MCw2ICsxMDQwLDcgQEAgc3RhdGljIGVudW0gaW5iYW5kX3R5cGUgcGh5bGlua19nZXRfaW5iYW5kX3R5cGUocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4ge1xcbiBcXHRzd2l0Y2ggKGludGVyZmFjZSkge1xcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcXG4rXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbiBcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FVU0dNSUk6XFxuIFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1VTWEdNSUk6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM4OjE0LjIyNjY3MTQ2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTQ3MDc4NDQ1MzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgdG8gdGhlIHN3aXRjaCBzdGF0ZW1lbnQgaW4gcGh5bGlua19nZXRfaW5iYW5kX3R5cGUoKS4gVGhlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkgaW50ZXJmYWNlIG1vZGUgaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIHRoYXQgaXMgdHlwaWNhbGx5IHNldCB2aWEgRGV2aWNlIFRyZWUgKERUKSBvciBBQ1BJIHByb3BlcnRpZXMgKGUuZy4sIGluIHRoZSBxY2E4MDd4IFBIWSBkcml2ZXIpLiBTaW5jZSBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMgZG8gbm90IGhhdmUgdGhlIHNwZWNpZmljIGhhcmR3YXJlIHRoYXQgdXNlcyB0aGlzIG1vZGUsIG5vciBkbyB0aGV5IGluamVjdCBhcmJpdHJhcnkgRFQvQUNQSSBwcm9wZXJ0aWVzIHRvIHRyaWdnZXIgaXQsIHRoaXMgY29kZSBwYXRoIGlzIGltcG9zc2libGUgdG8gcmVhY2ggZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhMGZiMTNlYjgzMDFkM2EyYzVjZDYzZDI5MDkxZDMyNWUwYjQ5N2JmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgOCAwMjozODoxMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5pbmRleCAxOGQyZWFkOTdhYTU0Li45ODNhMWEzY2VlMzc0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuQEAgLTEwNDAsNiArMTA0MCw3IEBAIHN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4ge1xuIFx0c3dpdGNoIChpbnRlcmZhY2UpIHtcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxuK1x0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxuIFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVVTR01JSTpcbiBcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1VTWEdNSUk6XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozODoxNC4yMjY2NzI3MzFaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjgxMjkzNTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDpcblxuKipBbmFseXppbmcgdGhlIFBIWUxpbmsgUGF0Y2gqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIHRoYXQncyBiZWVuIGFwcGxpZWQsIGFuZCBpdCBzZWVtcyB0byBoYXZlIHRvdWNoZWQgdGhlIGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZSgpYCBmdW5jdGlvbiB3aXRoaW4gYGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNgLiBUaGUgY29yZSBjaGFuZ2UgYXBwZWFycyB0byBiZSB0aGUgYWRkaXRpb24gb2YgYSBgY2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOmAgc3RhdGVtZW50IHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBUaGlzIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHdlJ3JlIGV4dGVuZGluZyB0aGUgc3VwcG9ydGVkIGluLWJhbmQgc2lnbmFsaW5nIHR5cGVzIHJlY29nbml6ZWQgYnkgUEhZTGluayB0byBpbmNsdWRlIHNvbWV0aGluZyByZWxhdGVkIHRvIFBTR01JSS4gTXkgZmlyc3QgdGhvdWdodCBpczogSSBuZWVkIHRvIHF1aWNrbHkgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mICpleGFjdGx5KiBob3cgYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKClgIGlzIHVzZWQgYW5kIHdoeSB0aGlzIGFkZGl0aW9uIGlzIHNpZ25pZmljYW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGltcGxpY2F0aW9uIHRoaXMgY2hhbmdlIGhhcy4gSXMgdGhpcyBhZGRpbmcgc3VwcG9ydCBmb3IgbmV3IGhhcmR3YXJlLCBvciBmaXhpbmcgYSBidWcsIG9yIGNoYW5naW5nIHRoZSBzdGFuZGFyZCBpbiBzb21lIHdheT9cblxuXG4iLCJJbnB1dFRva2VucyI6MTk4OCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzg6MTcuNTA3OTY4NjNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ4OTY3MTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5bGlua19nZXRfaW5iYW5kX3R5cGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTEwMzM9ZW51bSBpbmJhbmRfdHlwZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwMzgtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDM5OnN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTA5MD1zdGF0aWMgdm9pZCBwaHlsaW5rX3Bjc19uZWdfbW9kZShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDk4LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTA5OTpcXHR0eXBlID0gcGh5bGlua19nZXRfaW5iYW5kX3R5cGUoaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTExMDAtXFx0aWYgKHR5cGUgPT0gSU5CQU5EX05PTkUpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mzc1Nj1zdGF0aWMgaW50IHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsKHN0cnVjdCBwaHlsaW5rICpwbClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzgwNi1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM4MDc6XFx0aW5iYW5kX3R5cGUgPSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShpbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzgwOC1cXHRpZiAoaW5iYW5kX3R5cGUgPT0gSU5CQU5EX05PTkUpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzg6MTcuNTUyODcxNDY5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMxODM2MjAzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBTbWFsbCBDb2RlIENoYW5nZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBleHBlcnQgZXllIGhvbmVzIGluIG9uIHRoZSBjb3JlIG9mIHRoZSBtb2RpZmljYXRpb246IGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBiZWluZyBhZGRlZCB0byB0aGUgYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlYCBmdW5jdGlvbidzIHN3aXRjaCBzdGF0ZW1lbnQuIEl0J3MgYSBzdGF0aWMgZnVuY3Rpb24sIHdoaWNoIG1lYW5zIGl0J3MgbGltaXRlZCBpbiBzY29wZS4gSXQncyBjYWxsZWQgYnkgYHBoeWxpbmtfcGNzX25lZ19tb2RlYCBhbmQgYHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsYCwgc28gdGhvc2UgYXJlIHRoZSBrZXkgYXJlYXMgaW1wYWN0ZWQuIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIFwiSXMgdGhpcyB3b3J0aCBteSB0aW1lIHRvIGZ1enosIG9yIGV2ZW4gbG9vayBpbnRvIGRlZXBseT9cIlxuXG5PbiB0aGUgc3VyZmFjZSwgaXQncyB0aW55OyBqdXN0IGFkZGluZyBhIGNvbnN0YW50IHRvIGEgc3dpdGNoLiBCdXQuLi4gZG9lcyBpdCBoYXZlICpmdW5jdGlvbmFsKiBpbXBhY3Q/IFRoZSBhbnN3ZXIgaXMgXCJ5ZXMuXCIgVGhpcyBzbWFsbCBjaGFuZ2UgKmRvZXMqIGNoYW5nZSB0aGUgcmV0dXJuIHZhbHVlIG9mIGBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZWAgc3BlY2lmaWNhbGx5IHdoZW4gZGVhbGluZyB3aXRoIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYC4gSXQgZ29lcyBmcm9tIGEgZGVmYXVsdCB2YWx1ZSBvZiBgSU5CQU5EX05PTkVgIHRvIGBJTkJBTkRfQU5ZYCAob3Igd2hhdGV2ZXIgdGhlIG90aGVyIGNhc2VzIHJldHVybiwgZGVwZW5kaW5nIG9uIHRoZSBzd2l0Y2ggbG9naWMpLlxuXG5UaGVyZWZvcmUsIGxldCdzIHRha2UgYSBjbG9zZXIgbG9vayBhdCB0aGUgc3dpdGNoIHN0YXRlbWVudCBpbiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgLiBJIG5lZWQgdG8gYXNzZXNzIHRoZSBjb250ZXh0IG9mIHRoZSBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NDksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzg6MjEuODcxMjM1Njc5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwNjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTAzOSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTAzOTpcXHRzdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbjEwNDA6XFx0e1xcbjEwNDE6XFx0XFx0c3dpdGNoIChpbnRlcmZhY2UpIHtcXG4xMDQyOlxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbjEwNDM6XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbjEwNDQ6XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbjEwNDU6XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVVTR01JSTpcXG4xMDQ2OlxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1VTWEdNSUk6XFxuMTA0NzpcXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV8xMEdfUVhHTUlJOlxcbjEwNDg6XFx0XFx0XFx0LyogVGhlc2UgcHJvdG9jb2xzIGFyZSBkZXNpZ25lZCBmb3IgdXNlIHdpdGggYSBQSFkgd2hpY2hcXG4xMDQ5OlxcdFxcdFxcdCAqIGNvbW11bmljYXRlcyBpdHMgbmVnb3RpYXRpb24gcmVzdWx0IGJhY2sgdG8gdGhlIE1BQyB2aWFcXG4xMDUwOlxcdFxcdFxcdCAqIGluYmFuZCBjb21tdW5pY2F0aW9uLiBOb3RlOiB0aGVyZSBleGlzdCBQSFlzIHRoYXQgcnVuXFxuMTA1MTpcXHRcXHRcXHQgKiB3aXRoIFNHTUlJIGJ1dCBkbyBub3Qgc2VuZCB0aGUgaW5iYW5kIGRhdGEuXFxuMTA1MjpcXHRcXHRcXHQgKi9cXG4xMDUzOlxcdFxcdFxcdHJldHVybiBJTkJBTkRfQ0lTQ09fU0dNSUk7XFxuMTA1NDpcXHRcXG4xMDU1OlxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzEwMDBCQVNFWDpcXG4xMDU2OlxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFXzI1MDBCQVNFWDpcXG4xMDU3OlxcdFxcdFxcdC8qIDEwMDBiYXNlLVggaXMgZGVzaWduZWQgZm9yIHVzZSBtZWRpYS1zaWRlIGZvciBGaWJyZVxcbjEwNTg6XFx0XFx0XFx0ICogY29ubmVjdGlvbnMsIGFuZCB0aHVzIHRoZSBBdXRvbmVnIGJpdCBuZWVkcyB0byBiZVxcbjEwNTk6XFx0XFx0XFx0ICogdGFrZW4gaW50byBhY2NvdW50LiBXZSBhbHNvIGRvIHRoaXMgZm9yIDI1MDBiYXNlLVhcXG4xMDYwOlxcdFxcdFxcdCAqIGFzIHdlbGwsIGJ1dCBkcml2ZXJzIG1heSBub3Qgc3VwcG9ydCB0aGlzLCBzbyBtYXlcXG4xMDYxOlxcdFxcdFxcdCAqIG5lZWQgdG8gb3ZlcnJpZGUgdGhpcy5cXG4xMDYyOlxcdFxcdFxcdCAqL1xcbjEwNjM6XFx0XFx0XFx0cmV0dXJuIElOQkFORF9CQVNFWDtcXG4xMDY0OlxcdFxcbjEwNjU6XFx0XFx0ZGVmYXVsdDpcXG4xMDY2OlxcdFxcdFxcdHJldHVybiBJTkJBTkRfTk9ORTtcXG4xMDY3OlxcdFxcdH1cXG4xMDY4OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzg6MjEuODcxNDE4MDU5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE2NjE3MTk0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBGdW5jdGlvbmFsIENoYW5nZSBpbiBQSFkgTGluayBNYW5hZ2VtZW50KipcblxuT2theSwgc28gSSBzZWUgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGNvZGUgbW9kaWZpY2F0aW9uIGhlcmUuIFdlJ3JlIGNoYW5naW5nIHRoZSByZXR1cm4gdmFsdWUgZnJvbSBgSU5CQU5EX05PTkVgIHRvIGBJTkJBTkRfQ0lTQ09fU0dNSUlgLiBTZWVtcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYXQgZmFjZSB2YWx1ZS4gTm93LCB0aGUgcXVlc3Rpb24gaXMsIGhvdyBicm9hZGx5IGRvZXMgdGhpcyBpbXBhY3QgdGhlIHN5c3RlbT9cblxuU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVhY2ggb2YgdGhpcyBuZXcgY29kZSBwYXRoLiBUaGlzIGludm9sdmVzIGBwaHlsaW5rYCwgdGhlIFBIWSBsaW5rIG1hbmFnZW1lbnQgZnJhbWV3b3JrLiBTaW5jZSBgcGh5bGlua2AgaXMgcHJldHR5IHViaXF1aXRvdXMgYW5kIGxldmVyYWdlZCBhY3Jvc3MgYSBsb3Qgb2YgbmV0d29yayBkcml2ZXJzLCBJIG5lZWQgdG8gYXNjZXJ0YWluIGlmIHRoaXMgY2hhbmdlIGhhcyB0aGUgcG90ZW50aWFsIHRvIGNhdXNlIGlzc3VlcyBmdXJ0aGVyIGRvd24gdGhlIGxpbmUuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBleGFjdCBjb2RlIHBhdGhzIHRoYXQgYXJlIGFmZmVjdGVkLlxuXG5BcmUgd2UgbG9va2luZyBhdCB0aGlzIGltcGFjdGluZyBgcGh5bGlua19wY3NfbmVnX21vZGVgIG9yIHBvdGVudGlhbGx5IGBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbGA/IFRpbWUgdG8gZmlndXJlIG91dCB3aG8gaXMgY2FsbGluZyBgcGh5bGlua19wY3NfbmVnX21vZGVgIHRvIGVuc3VyZSBhIGZ1bGwgaW1wYWN0IGFzc2Vzc21lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MzQsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozODoyNi4wMzc1OTIyODRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU1MTEyNTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeWxpbmtfcGNzX25lZ19tb2RlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzAtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDcxOiAqIHBoeWxpbmtfcGNzX25lZ19tb2RlKCkgLSBoZWxwZXIgdG8gZGV0ZXJtaW5lIFBDUyBpbmJhbmQgbW9kZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA3Mi0gKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA4OS0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwOTA6c3RhdGljIHZvaWQgcGh5bGlua19wY3NfbmVnX21vZGUoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcyxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwOTEtXFx0XFx0XFx0XFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTEyNDA9c3RhdGljIHZvaWQgcGh5bGlua19tYWpvcl9jb25maWcoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIHJlc3RhcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEyNjctXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMjY4OlxcdHBoeWxpbmtfcGNzX25lZ19tb2RlKHBsLCBwY3MsIHN0YXRlLVxcdTAwM2VpbnRlcmZhY2UsIHN0YXRlLVxcdTAwM2VhZHZlcnRpc2luZyk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMjY5LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMzc2PXN0YXRpYyBpbnQgcGh5bGlua19jaGFuZ2VfaW5iYW5kX2FkdmVydChzdHJ1Y3QgcGh5bGluayAqcGwpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEzODktXFx0LyogUmVjb21wdXRlIHRoZSBQQ1MgbmVnIG1vZGUgKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEzOTA6XFx0cGh5bGlua19wY3NfbmVnX21vZGUocGwsIHBsLVxcdTAwM2VwY3MsIHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5pbnRlcmZhY2UsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMzkxLVxcdFxcdFxcdCAgICAgcGwtXFx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzg6MjYuMTkyNzEzODFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MzI2Nzk1MDk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IFBoeWxpbmsgSW52ZXN0aWdhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGludG8gaG93IGBwaHlsaW5rYCBpcyB1c2VkIGFuZCBob3cgdG8gdGVzdCBpdC4gSSBzZWUgdGhhdCBib3RoIGBwaHlsaW5rX21ham9yX2NvbmZpZ2AgYW5kIGBwaHlsaW5rX2NoYW5nZV9pbmJhbmRfYWR2ZXJ0YCBjYWxsIGBwaHlsaW5rX3Bjc19uZWdfbW9kZWAuIGBwaHlsaW5rX21ham9yX2NvbmZpZ2AsIGluIHR1cm4sIGlzIHRyaWdnZXJlZCBieSBgcGh5bGlua19tYWNfY29uZmlnYC4gU28sIHRoYXQncyB0aGUgY29yZSBmbG93LlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IHdoaWNoIGRyaXZlcnMgcmVseSBvbiBgcGh5bGlua2A/IEkgaW5pdGlhbGx5IHRob3VnaHQgYHZpcnRpb19uZXRgIG1pZ2h0IGJlIGEgY29udGVuZGVyLCBidXQgbm9wZSwgdGhhdCdzIG5vdCB0aGUgY2FzZS4gT2theSwgd2hhdCBhYm91dCB2aXJ0dWFsIGludGVyZmFjZXM/IE5vLCBgdHVuYCBhbmQgYHZldGhgIGFyZW4ndCB1c2luZyBgcGh5bGlua2AgZWl0aGVyLiBUaGVuIEkgbG9va2VkIGF0IGBtYWNiYCwgYW5kIHllcywgdGhhdCBvbmUgdXNlcyBpdC4gQW5kIGBzdG1tYWNgPyBEZWZpbml0ZWx5IHVzZXMgYHBoeWxpbmtgIGFzIHdlbGwuXG5cblRoZSBnb2FsIGlzIHRvIGRldGVybWluZSBpZiBJIGNhbiB0cmlnZ2VyIGBwaHlsaW5rYCBsb2dpYyB1c2luZyBhIHZpcnR1YWwgb3IgZHVtbXkgZHJpdmVyIHNldHVwIGZvciB0ZXN0aW5nIHB1cnBvc2VzLiBJcyB0aGVyZSBhIGR1bW15IHBoeWxpbmsgZHJpdmVyPyBPciBwZXJoYXBzIGEgbmV0d29yayBkcml2ZXIgSSBjYW4gdXNlIHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQ/XG5cbkxldCdzIHJ1bGUgb3V0IHNvbWUgcG90ZW50aWFsIGNhbmRpZGF0ZXMuIGBlMTAwMGVgIGFuZCBgaWdiYCBkb24ndCBsZXZlcmFnZSBgcGh5bGlua2AgZnJvbSB3aGF0IEkgY2FuIHNlZS4gSG93ZXZlciwgYHN0bW1hY2AgbWlnaHQgYmUgcHJvbWlzaW5nIHNpbmNlIGl0J3MgdXNlZCBpbiBzb21lIEFSTSBRRU1VIGluc3RhbmNlcy4gVGhhdCdzIGEgZGVmaW5pdGUgcG9zc2liaWxpdHkgZm9yIG15IHRlc3Qgc2V0dXAuIEkgc2hvdWxkIGV4cGxvcmUgdGhpcyBmdXJ0aGVyLlxuXG5BbmQgZmluYWxseSwgd2hhdCBhYm91dCBgbmV0ZGV2c2ltYD8gRG9lcyB0aGF0IHBsYXkgd2l0aCBgcGh5bGlua2A/IFRoYXQgd291bGQgYmUgYSBnb29kIHRvb2wgaWYgaXQgZG9lcy4gSSBuZWVkIHRvIGludmVzdGlnYXRlIHRoYXQgb3B0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDU3LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM4OjMxLjUxOTUxMTU5OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU4NTg4ODksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeWxpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzg6MzEuNTY1Mzc4NzI3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTQwODA4MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhwbG9yaW5nIFBoeWxpbmsgRHJpdmVycyBmb3IgRnV6emluZyBPcHBvcnR1bml0aWVzKipcblxuT2theSwgbGV0J3Mgc2VlIGlmIHdlIGNhbiBpZGVudGlmeSBhbnkgb3RoZXIgbmV0d29yayBkcml2ZXJzIHRoYXQgbGV2ZXJhZ2UgdGhlIGBwaHlsaW5rYCBmcmFtZXdvcmssIGFuZCB0aGF0IG1pZ2h0IHByZXNlbnQgZ29vZCB0YXJnZXRzIGZvciBmdXp6aW5nLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgYGRyaXZlcnMvbmV0L2RzYS9gIGRpcmVjdG9yeSBzcHJpbmdzIHRvIG1pbmQgYXMgYSBsaWtlbHkgY2FuZGlkYXRlLCBzaW5jZSBEU0EgKERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUpIHV0aWxpemVzIGBwaHlsaW5rYCBxdWl0ZSBleHRlbnNpdmVseS4gTm93LCB0aGUgcXVlc3Rpb24gYmVjb21lczogaG93IGNhbiB3ZSB0ZXN0IHRoaXM/IEkga25vdyB3ZSd2ZSBnb3QgYSBjb3VwbGUgb2Ygb3B0aW9uczogYGRzYV9sb29wYCBhbmQgYG5ldGRldnNpbWAuIExldCdzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgZHNhX2xvb3BgIGFuZCBzZWUgd2hhdCB0aGF0IG9mZmVycy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTEwMiwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM4OjM0Ljk1OTQ2MjEwNVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUwNDk1MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5bGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0zMjE9c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X21heF9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHNhLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjc6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTMzND1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGRzYV9sb29wX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1MS1cXHQucG9ydF9tYXhfbXR1XFx0XFx0PSBkc2FfbG9vcF9wb3J0X21heF9tdHUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUyOlxcdC5waHlsaW5rX2dldF9jYXBzXFx0PSBkc2FfbG9vcF9waHlsaW5rX2dldF9jYXBzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM1My19O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozODozNS4wMDQ1MTczMzNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk2NDA4MzAyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUGh5bGluayBVc2FnZSBpbiB0aGUgS2VybmVsIE5ldHdvcmsgU3RhY2sqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBpbnRvIGhvdyBgcGh5bGlua2AgaXMgdXNlZCB3aXRoaW4gdGhlIG5ldHdvcmsgc3RhY2ssIHNwZWNpZmljYWxseSBpdHMgcmVsYXRpb25zaGlwIHdpdGggZGlmZmVyZW50IGRyaXZlcnMuIEkgc2VlIHRoYXQgYGRzYV9sb29wYCBleHBsaWNpdGx5IHVzZXMgYHBoeWxpbmtgIHdoaWNoIGlzIGV4cGVjdGVkIGFzIGl0J3MgYSBNQUMgZGV2aWNlLiBOb3csIEknbSBjaGVja2luZyB0byBzZWUgaWYgdGhpcyBpcyBjb25zaXN0ZW50LiBJIGtub3cgdGhhdCBgZHJpdmVycy9uZXQvZHVtbXkuY2AgZG9lc24ndCB1c2UgYHBoeWxpbmtgLCB0aGF0J3Mgc3RyYWlnaHRmb3J3YXJkLiBOb3csIGxldCdzIGNvbnNpZGVyIGBkcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmNgLiBUaGF0J3MgYSBQSFkgZHJpdmVyLCBub3QgYSBNQUMsIHNvIGl0IHdvdWxkbid0IGRpcmVjdGx5IGludGVyZmFjZSB3aXRoIGBwaHlsaW5rYCBpbiB0aGUgc2FtZSB3YXkuIFRoZSBwcmltYXJ5IHVzZSBjYXNlIG9mIGBwaHlsaW5rYCBhcHBlYXJzIHRvIGJlIGluIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gYSBNQUMgYW5kIGEgUEhZLlxuXG5UaGUgbmV4dCB0aGluZyB0byBpbnZlc3RpZ2F0ZSBpcyB3aGV0aGVyIG9yIG5vdCBgZHNhX2xvb3BgIGNvdWxkIGJlIHJlc3BvbnNpYmxlIGZvciB0cmlnZ2VyaW5nIGBwaHlsaW5rX21ham9yX2NvbmZpZ2AuIEknbGwgY29uZmlybSB0aGF0IERTQSBwb3J0IGJyaW5nLXVwIGNhbGxzIGBwaHlsaW5rX3N0YXJ0YC4gVGhpcyBtYWtlcyBzZW5zZSwgYXMgdGhhdCdzIHdoZXJlIHRoZSBNQUMtUEhZIHNldHVwIHdvdWxkIG9jY3VyLiBJIG5lZWQgdG8gZXhhbWluZSBgcGh5bGlua19zdGFydGAgZGlyZWN0bHkgdG8gdmVyaWZ5IHRoZSBmbG93IG9mIGNvbnRyb2wgYW5kIGRldGVybWluZSBob3cgdGhlIGNvbmZpZ3VyYXRpb24gYWN0dWFsbHkgZ2V0cyBpbXBsZW1lbnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY1NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozODozOC45Njg2MDI5NzVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MTQzMTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeWxpbmtfc3RhcnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0MTU9c3RhdGljIGlycXJldHVybl90IHBoeWxpbmtfbGlua19oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0MjQtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNDI1OiAqIHBoeWxpbmtfc3RhcnQoKSAtIHN0YXJ0IGEgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQyNi0gKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQzMS0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0MzI6dm9pZCBwaHlsaW5rX3N0YXJ0KHN0cnVjdCBwaHlsaW5rICpwbClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0MzMte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDg3LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0ODg6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zdGFydCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDg5LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjg2PXZvaWQgcGh5bGlua19yZXN1bWUoc3RydWN0IHBoeWxpbmsgKnBsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzE2LVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzE3OlxcdFxcdHBoeWxpbmtfc3RhcnQocGwpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjcxOC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQzOTE9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19yZXBsYXlfbGlua19iZWdpbik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQ0MDEtICpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQ0MDI6ICogVGhpcyBpcyBzaW1pbGFyIHRvIHBoeWxpbmtfc3RhcnQoKSwgZXhjZXB0IGl0IGRvZXMgbm90IGFsdGVyIHRoZSBzdGF0ZSBvZlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDQwMy0gKiB0aGUgcGh5bGliIFBIWS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzg6MzkuMDE1NzUxMjEzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MjM0Nzc3MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIFBIWSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgUEhZIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgaXMga2lja2VkIG9mZi4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gemVybyBpbiBvbiBgcGh5bGlua19zdGFydGAuIEknbSB0aGlua2luZyBpdCdzIGxpa2VseSByZXNwb25zaWJsZSBmb3IgZWl0aGVyIGNhbGxpbmcgYHBoeWxpbmtfbWFjX2luaXRpYWxfY29uZmlnYCBkaXJlY3RseSwgb3IgcGVyaGFwcyB0cmlnZ2VyaW5nIGEgZnVuY3Rpb24gdGhhdCAqdWx0aW1hdGVseSogbGVhZHMgdG8gdGhhdCBjb25maWd1cmF0aW9uIHN0ZXAuIEdpdmVuIHRoYXQgYHBoeWxpbmtfc3RhcnRgIHNlZW1zIGxpa2UgdGhlIGxvZ2ljYWwgZW50cnkgcG9pbnQgZm9yIFBIWSBicmluZy11cCwgaXQgbWFrZXMgc2Vuc2UgdG8gc3RhcnQgdGhlIGludmVzdGlnYXRpb24gdGhlcmUuIEkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgbXkgaHlwb3RoZXNpcyBpcyBjb3JyZWN0IGJ5IGxvb2tpbmcgYXQgdGhlIGNvZGUuIFRpbWUgdG8gZGlnIGluIGFuZCB2ZXJpZnkgdGhlIGNvbnRyb2wgZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU0NywiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM4OjQxLjkzOTIzMTg1NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODY1MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNDMyLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyNDMyOlxcdHZvaWQgcGh5bGlua19zdGFydChzdHJ1Y3QgcGh5bGluayAqcGwpXFxuMjQzMzpcXHR7XFxuMjQzNDpcXHRcXHRib29sIHBvbGwgPSBmYWxzZTtcXG4yNDM1OlxcdFxcbjI0MzY6XFx0XFx0QVNTRVJUX1JUTkwoKTtcXG4yNDM3OlxcdFxcbjI0Mzg6XFx0XFx0cGh5bGlua19pbmZvKHBsLCBcXFwiY29uZmlndXJpbmcgZm9yICVzLyVzIGxpbmsgbW9kZVxcXFxuXFxcIixcXG4yNDM5OlxcdFxcdFxcdCAgICAgcGh5bGlua19hbl9tb2RlX3N0cihwbC1cXHUwMDNlcmVxX2xpbmtfYW5fbW9kZSksXFxuMjQ0MDpcXHRcXHRcXHQgICAgIHBoeV9tb2RlcyhwbC1cXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlKSk7XFxuMjQ0MTpcXHRcXG4yNDQyOlxcdFxcdC8qIEFsd2F5cyBzZXQgdGhlIGNhcnJpZXIgb2ZmICovXFxuMjQ0MzpcXHRcXHRpZiAocGwtXFx1MDAzZW5ldGRldilcXG4yNDQ0OlxcdFxcdFxcdG5ldGlmX2NhcnJpZXJfb2ZmKHBsLVxcdTAwM2VuZXRkZXYpO1xcbjI0NDU6XFx0XFxuMjQ0NjpcXHRcXHRwbC1cXHUwMDNlcGNzX3N0YXRlID0gUENTX1NUQVRFX1NUQVJUSU5HO1xcbjI0NDc6XFx0XFxuMjQ0ODpcXHRcXHQvKiBBcHBseSB0aGUgbGluayBjb25maWd1cmF0aW9uIHRvIHRoZSBNQUMgd2hlbiBzdGFydGluZy4gVGhpcyBhbGxvd3NcXG4yNDQ5OlxcdFxcdCAqIGEgZml4ZWQtbGluayB0byBzdGFydCB3aXRoIHRoZSBjb3JyZWN0IHBhcmFtZXRlcnMsIGFuZCBhbHNvXFxuMjQ1MDpcXHRcXHQgKiBlbnN1cmVzIHRoYXQgd2Ugc2V0IHRoZSBhcHByb3ByaWF0ZSBhZHZlcnRpc2VtZW50IGZvciBTZXJkZXMgbGlua3MuXFxuMjQ1MTpcXHRcXHQgKlxcbjI0NTI6XFx0XFx0ICogUmVzdGFydCBhdXRvbmVnb3RpYXRpb24gaWYgdXNpbmcgODAyLjN6IHRvIGVuc3VyZSB0aGF0IHRoZSBsaW5rXFxuMjQ1MzpcXHRcXHQgKiBwYXJhbWV0ZXJzIGFyZSBwcm9wZXJseSBuZWdvdGlhdGVkLiAgVGhpcyBpcyBuZWNlc3NhcnkgZm9yIERTQVxcbjI0NTQ6XFx0XFx0ICogc3dpdGNoZXMgdXNpbmcgODAyLjN6IG5lZ290aWF0aW9uIHRvIGVuc3VyZSB0aGV5IHNlZSBvdXIgbW9kZXMuXFxuMjQ1NTpcXHRcXHQgKi9cXG4yNDU2OlxcdFxcdHBoeWxpbmtfbWFjX2luaXRpYWxfY29uZmlnKHBsLCB0cnVlKTtcXG4yNDU3OlxcdFxcbjI0NTg6XFx0XFx0cGwtXFx1MDAzZXBjc19zdGF0ZSA9IFBDU19TVEFURV9TVEFSVEVEO1xcbjI0NTk6XFx0XFxuMjQ2MDpcXHRcXHRwaHlsaW5rX2VuYWJsZV9hbmRfcnVuX3Jlc29sdmUocGwsIFBIWUxJTktfRElTQUJMRV9TVE9QUEVEKTtcXG4yNDYxOlxcdFxcbjI0NjI6XFx0XFx0aWYgKHBsLVxcdTAwM2VjZmdfbGlua19hbl9tb2RlID09IE1MT19BTl9GSVhFRCBcXHUwMDI2XFx1MDAyNiBwbC1cXHUwMDNlbGlua19ncGlvKSB7XFxuMjQ2MzpcXHRcXHRcXHRpbnQgaXJxID0gZ3Bpb2RfdG9faXJxKHBsLVxcdTAwM2VsaW5rX2dwaW8pO1xcbjI0NjQ6XFx0XFxuMjQ2NTpcXHRcXHRcXHRpZiAoaXJxIFxcdTAwM2UgMCkge1xcbjI0NjY6XFx0XFx0XFx0XFx0aWYgKCFyZXF1ZXN0X2lycShpcnEsIHBoeWxpbmtfbGlua19oYW5kbGVyLFxcbjI0Njc6XFx0XFx0XFx0XFx0XFx0XFx0IElSUUZfVFJJR0dFUl9SSVNJTkcgfFxcbjI0Njg6XFx0XFx0XFx0XFx0XFx0XFx0IElSUUZfVFJJR0dFUl9GQUxMSU5HLFxcbjI0Njk6XFx0XFx0XFx0XFx0XFx0XFx0IFxcXCJuZXRkZXYgbGlua1xcXCIsIHBsKSlcXG4yNDcwOlxcdFxcdFxcdFxcdFxcdHBsLVxcdTAwM2VsaW5rX2lycSA9IGlycTtcXG4yNDcxOlxcdFxcdFxcdFxcdGVsc2VcXG4yNDcyOlxcdFxcdFxcdFxcdFxcdGlycSA9IDA7XFxuMjQ3MzpcXHRcXHRcXHR9XFxuMjQ3NDpcXHRcXHRcXHRpZiAoaXJxIFxcdTAwM2M9IDApXFxuMjQ3NTpcXHRcXHRcXHRcXHRwb2xsID0gdHJ1ZTtcXG4yNDc2OlxcdFxcdH1cXG4yNDc3OlxcdFxcbjI0Nzg6XFx0XFx0aWYgKHBsLVxcdTAwM2VjZmdfbGlua19hbl9tb2RlID09IE1MT19BTl9GSVhFRClcXG4yNDc5OlxcdFxcdFxcdHBvbGwgfD0gcGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlcG9sbF9maXhlZF9zdGF0ZTtcXG4yNDgwOlxcdFxcbjI0ODE6XFx0XFx0aWYgKHBvbGwpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM4OjQxLjkzOTQxOTYzNVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjA2NDAzNjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipJbml0aWFsIFBoeWxpbmsgTUFDIENvbmZpZ3VyYXRpb24gLSBUaW1lIHRvIERpZyBJbioqXG5cbk9rYXksIHNvIGBwaHlsaW5rX21hY19pbml0aWFsX2NvbmZpZ2AgaGFzIGJlZW4gY2FsbGVkLiBUaGF0J3MgdGhlIGVudHJ5IHBvaW50IHdlJ3JlIGludGVyZXN0ZWQgaW4sIHRoZSBwbGFjZSB3aGVyZSB0aGUgTUFDJ3MgaW5pdGlhbCBjb25maWd1cmF0aW9uIGZvciB0aGUgUEhZIGxpbmsgZ2V0cyBzZXQgdXAuIE15IGV4cGVydCBpbnR1aXRpb24gdGVsbHMgbWUgdGhpcyBpcyB3aGVyZSB0aGUgY29yZSBwYXJhbWV0ZXJzIGFyZSB1c3VhbGx5IGluaXRpYWxpemVkIOKAkyBhdXRvLW5lZ290aWF0aW9uLCBzcGVlZC9kdXBsZXggc2V0dGluZ3MsIHBvc3NpYmx5IHNvbWUgYmFzaWMgZXJyb3IgY29ycmVjdGlvbiBzdHVmZiwgdGhlIHdob2xlIHNoZWJhbmcuIExldCdzIHNlZSB3aGF0IHRoZXkndmUgZG9uZSB3aXRoIGl0LiBJJ2xsIG5lZWQgdG8gbWV0aWN1bG91c2x5IGNoZWNrIHdoYXQgdGhlIGNhbGxpbmcgYXJndW1lbnRzIGFyZSwgYW5kIHRoZW4gSSdsbCBleGFtaW5lIHRoZSBmdW5jdGlvbidzIGxvZ2ljIGxpbmUgYnkgbGluZS4gSeKAmWxsIGJlIGxvb2tpbmcgZm9yIGFueSBwb3RlbnRpYWwgZm9yIGZ1dHVyZSBpc3N1ZXMgaW4gdGhlIHNldHVwLCBmb2N1c2luZyBvbiBhc3BlY3RzIHRoYXQgY291bGQgaW50ZXJhY3Qgc3RyYW5nZWx5IHdpdGggY2VydGFpbiB1bmNvbW1vbiBQSFlzLCBvciB0aGF0IGRlcGVuZCB0b28gaGVhdmlseSBvbiBhc3N1bXB0aW9ucyBhYm91dCBzcGVjaWZpYyBsaW5rIHBhcnRuZXIgYmVoYXZpb3IuIFRpbWUgdG8gZGVsdmUgaW50byB0aGUgY29kZSFcblxuXG4iLCJJbnB1dFRva2VucyI6NzUzOCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzg6NDUuMTQ1ODI3MDg2WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjA3NDE5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rX21hY19pbml0aWFsX2NvbmZpZ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTQ0Mj1zdGF0aWMgdm9pZCBwaHlsaW5rX2dldF9maXhlZF9zdGF0ZShzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE0NTQtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNDU1OnN0YXRpYyB2b2lkIHBoeWxpbmtfbWFjX2luaXRpYWxfY29uZmlnKHN0cnVjdCBwaHlsaW5rICpwbCwgYm9vbCBmb3JjZV9yZXN0YXJ0KVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTQ1Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0MzI9dm9pZCBwaHlsaW5rX3N0YXJ0KHN0cnVjdCBwaHlsaW5rICpwbClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ1NS1cXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0NTY6XFx0cGh5bGlua19tYWNfaW5pdGlhbF9jb25maWcocGwsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ1Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjY4Nj12b2lkIHBoeWxpbmtfcmVzdW1lKHN0cnVjdCBwaHlsaW5rICpwbClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjcxMS1cXHRcXHQgKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI3MTI6XFx0XFx0cGh5bGlua19tYWNfaW5pdGlhbF9jb25maWcocGwsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjcxMy1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzY2OD1zdGF0aWMgdm9pZCBwaHlsaW5rX3NmcF9zZXRfY29uZmlnKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgbG9uZyAqc3VwcG9ydGVkLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNzAxLVxcdFxcdFxcdFxcdCBcXHUwMDI2cGwtXFx1MDAzZXBoeWxpbmtfZGlzYWJsZV9zdGF0ZSkpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNzAyOlxcdFxcdHBoeWxpbmtfbWFjX2luaXRpYWxfY29uZmlnKHBsLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNzAzLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzg6NDUuMTkxOTEwMTg1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MDY0NjQ4MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIGBwaHlsaW5rX21hY19pbml0aWFsX2NvbmZpZ2AqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0J3MgaGFwcGVuaW5nIHdpdGggYHBoeWxpbmtfbWFjX2luaXRpYWxfY29uZmlnYC4gR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3lzdGVtIGFyY2hpdGVjdHVyZSwgSSdtIGFzc3VtaW5nIHRoaXMgY29uZmlndXJhdGlvbiBmaWxlIChvciBwZXJoYXBzIHNjcmlwdCwgZGVwZW5kaW5nIG9uIHRoZSBpbXBsZW1lbnRhdGlvbikgaXMgYWJzb2x1dGVseSBjcnVjaWFsIGZvciBpbml0aWFsaXppbmcgdGhlIE1BQyAoTWVkaWEgQWNjZXNzIENvbnRyb2xsZXIpIGxheWVyIHdpdGhpbiB0aGUgUEhZIGxpbmsgZXN0YWJsaXNobWVudCBwcm9jZXNzLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmU6XG5cbiogICAqKldoYXQgZXhhY3RseSBkb2VzIGl0IGNvbmZpZ3VyZT8qKiBTcGVjaWZpY2FsbHksIEknbSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSBjbG9jayBzZXR0aW5ncywgcG93ZXIgbWFuYWdlbWVudCBwYXJhbWV0ZXJzLCBsYW5lIG9yZGVyaW5nLCBlcXVhbGl6YXRpb24gc2V0dGluZ3MsIGFuZCBhbnkgc3BlY2lmaWMgUEhZLXNwZWNpZmljIG9wdGltaXphdGlvbnMuIEkga25vdyB3aGVyZSB0byBsb29rIGZvciB0aG9zZS5cbiogICAqKkhvdyBpcyBpdCBiZWluZyBsb2FkZWQvYXBwbGllZD8qKiBJcyBpdCBhIHN0YXRpYyBmaWxlLCBvciBkeW5hbWljYWxseSBnZW5lcmF0ZWQ/IElzIGl0IGJlaW5nIGFwcGxpZWQgYXQgYm9vdCwgZHVyaW5nIGxpbmsgdHJhaW5pbmcsIG9yIG9uIHNwZWNpZmljIGV2ZW50cz8gVGhlIHRpbWluZyBpcyBrZXkuXG4qICAgKipXaGF0IGFyZSB0aGUgZGVwZW5kZW5jaWVzPyoqIERvZXMgdGhpcyBjb25maWcgZmlsZSByZWx5IG9uIGFueSBvdGhlciBzeXN0ZW0gb3IgZHJpdmVyIGxldmVsIGNvbmZpZ3VyYXRpb25zLCBsaWtlIGRldmljZSB0cmVlIGVudHJpZXMsIHBsYXRmb3JtLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcywgb3IgcmVnaXN0ZXIgc2V0dGluZ3M/IFRoZXNlIGRlcGVuZGVuY2llcyBhcmUgY3JpdGljYWwgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZS5cbiogICAqKkFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGFyZWFzIGZvciBvcHRpbWl6YXRpb24/KiogSSdtIGdvaW5nIHRvIGxvb2sgZm9yIGFyZWFzIEkga25vdyBJJ3ZlIGVuY291bnRlcmVkIGJlZm9yZSBhcyBib3R0bGVuZWNrcyAocG90ZW50aWFsbHkgY29uZmxpY3Rpbmcgc2V0dGluZ3Mgb3IgcmVkdW5kYW50IGNvbmZpZ3VyYXRpb25zKS5cblxuSSBhbHNvIG5lZWQgdG8gY2hlY2sgZm9yIGFueSB2ZW5kb3Itc3BlY2lmaWMgbnVhbmNlcyBvciB1bmRvY3VtZW50ZWQgcGFyYW1ldGVycyB0aGF0IG1pZ2h0IGJlIGx1cmtpbmcgd2l0aGluIHRoaXMgY29uZmlndXJhdGlvbi4gVGltZSB0byBkaWcgaW4hXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyNDAsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozODo0OC42OTgzNzgzNThaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc0MjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTQ1NSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTQ1NTpcXHRzdGF0aWMgdm9pZCBwaHlsaW5rX21hY19pbml0aWFsX2NvbmZpZyhzdHJ1Y3QgcGh5bGluayAqcGwsIGJvb2wgZm9yY2VfcmVzdGFydClcXG4xNDU2OlxcdHtcXG4xNDU3OlxcdFxcdHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgbGlua19zdGF0ZTtcXG4xNDU4OlxcdFxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHkgPSBwbC1cXHUwMDNlcGh5ZGV2O1xcbjE0NTk6XFx0XFxuMTQ2MDpcXHRcXHRzd2l0Y2ggKHBsLVxcdTAwM2VyZXFfbGlua19hbl9tb2RlKSB7XFxuMTQ2MTpcXHRcXHRjYXNlIE1MT19BTl9QSFk6XFxuMTQ2MjpcXHRcXHRcXHRsaW5rX3N0YXRlID0gcGwtXFx1MDAzZXBoeV9zdGF0ZTtcXG4xNDYzOlxcdFxcdFxcdGJyZWFrO1xcbjE0NjQ6XFx0XFxuMTQ2NTpcXHRcXHRjYXNlIE1MT19BTl9GSVhFRDpcXG4xNDY2OlxcdFxcdFxcdHBoeWxpbmtfZ2V0X2ZpeGVkX3N0YXRlKHBsLCBcXHUwMDI2bGlua19zdGF0ZSk7XFxuMTQ2NzpcXHRcXHRcXHRicmVhaztcXG4xNDY4OlxcdFxcbjE0Njk6XFx0XFx0Y2FzZSBNTE9fQU5fSU5CQU5EOlxcbjE0NzA6XFx0XFx0XFx0bGlua19zdGF0ZSA9IHBsLVxcdTAwM2VsaW5rX2NvbmZpZztcXG4xNDcxOlxcdFxcdFxcdGlmIChsaW5rX3N0YXRlLmludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUkpXFxuMTQ3MjpcXHRcXHRcXHRcXHRsaW5rX3N0YXRlLnBhdXNlID0gTUxPX1BBVVNFX05PTkU7XFxuMTQ3MzpcXHRcXHRcXHRicmVhaztcXG4xNDc0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozODo0OC42OTg2NTM5NzhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkyMTA1MjI1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiBhY2NvdW50OlxuXG4qKkFuYWx5emluZyB0aGUgQ29uZmlndXJhdGlvbiBDYWxsKipcblxuSG1tLCBpbnRlcmVzdGluZy4gSSBzZWUgYSBjYWxsIHRvIGBwaHlsaW5rX21ham9yX2NvbmZpZ2AuIFJpZ2h0IG9mZiB0aGUgYmF0LCB0aGF0J3Mgd2hhdCBjYXVnaHQgbXkgZXllLiBUaGUgYHBoeWxpbmtgIHByZWZpeCBzdWdnZXN0cyB0aGlzIGZ1bmN0aW9uIGlzIGludGltYXRlbHkgaW52b2x2ZWQgd2l0aCwgbGlrZWx5LCB0aGUgcGh5c2ljYWwgbGF5ZXIgbGluaywgcHJvYmFibHkgd2l0aGluIGEgUEhZIG1hbmFnZW1lbnQgb3IgaW5pdGlhbGl6YXRpb24gY29udGV4dC4gXCJNYWpvciBjb25maWdcIiBpbXBsaWVzIHRoaXMgaXNuJ3QganVzdCBhIHNpbXBsZSByZWdpc3RlciB3cml0ZTsgaXQgbGlrZWx5IG9yY2hlc3RyYXRlcyBhIHNpZ25pZmljYW50IHBhcnQgb2YgdGhlIFBIWSdzIG9wZXJhdGlvbmFsIHBhcmFtZXRlcnMsIG1heWJlIGV2ZW4gaXRzIHN0YXRlIG1hY2hpbmUgc2V0dXAuIFRoaXMgY291bGQgaW52b2x2ZSBjbG9jayBjb25maWd1cmF0aW9uLCBlcXVhbGl6YXRpb24gc2V0dGluZ3MsIHNpZ25hbCBjb25kaXRpb25pbmcg4oCTIGEgd2hvbGUgaG9zdCBvZiBsb3ctbGV2ZWwgZGV0YWlscy4gTmVlZCB0byBkaWcgaW4gYW5kIHVuZGVyc3RhbmQgd2hhdCB0aGUgZnVuY3Rpb24gZG9lcyBmdXJ0aGVyLCBvciB3aGVyZSBpdCdzIGNhbGxlZCBmcm9tLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4OTI4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozODo1MS42MTk3MDk5NloiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTgyNTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNDc1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNDc1OlxcdFxcdGRlZmF1bHQ6IC8qIGNhbid0IGhhcHBlbiAqL1xcbjE0NzY6XFx0XFx0XFx0cmV0dXJuO1xcbjE0Nzc6XFx0XFx0fVxcbjE0Nzg6XFx0XFxuMTQ3OTpcXHRcXHRsaW5rX3N0YXRlLmxpbmsgPSBmYWxzZTtcXG4xNDgwOlxcdFxcbjE0ODE6XFx0XFx0cGh5bGlua19hcHBseV9tYW51YWxfZmxvdyhwbCwgXFx1MDAyNmxpbmtfc3RhdGUpO1xcbjE0ODI6XFx0XFx0aWYgKHBoeSlcXG4xNDgzOlxcdFxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBoeS1cXHUwMDNlbG9jayk7XFxuMTQ4NDpcXHRcXHRwaHlsaW5rX21ham9yX2NvbmZpZyhwbCwgZm9yY2VfcmVzdGFydCwgXFx1MDAyNmxpbmtfc3RhdGUpO1xcbjE0ODU6XFx0XFx0aWYgKHBoeSlcXG4xNDg2OlxcdFxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cGh5LVxcdTAwM2Vsb2NrKTtcXG4xNDg3OlxcdH1cXG4xNDg4OlxcdFxcbjE0ODk6XFx0c3RhdGljIGNvbnN0IGNoYXIgKnBoeWxpbmtfcGF1c2VfdG9fc3RyKGludCBwYXVzZSlcXG4xNDkwOlxcdHtcXG4xNDkxOlxcdFxcdHN3aXRjaCAocGF1c2UgXFx1MDAyNiBNTE9fUEFVU0VfVFhSWF9NQVNLKSB7XFxuMTQ5MjpcXHRcXHRjYXNlIE1MT19QQVVTRV9UWCB8IE1MT19QQVVTRV9SWDpcXG4xNDkzOlxcdFxcdFxcdHJldHVybiBcXFwicngvdHhcXFwiO1xcbjE0OTQ6XFx0XFx0Y2FzZSBNTE9fUEFVU0VfVFg6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM4OjUxLjYyMDAxMDE4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4NzQyMjQzMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJhY2luZyB0aGUgUEhZIEludGVyZmFjZSBNb2RlKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUgYW5kIHRyeWluZyB0byB1bmRlcnN0YW5kIGhvdyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgY29tZXMgaW50byBwbGF5LiBGcm9tIHdoYXQgSSBjYW4gc2VlLCB0aGUgcHJvY2VzcyBzdGFydHMgd2l0aCBhIGNhbGwgdG8gYHBoeWxpbmtfbWFqb3JfY29uZmlnYCwgd2hpY2ggdGhlbiBjYWxscyBgcGh5bGlua19wY3NfbmVnX21vZGVgLCB3aGljaCwgZmluYWxseSwgY2FsbHMgYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlYC4gVGhhdCB0ZWxscyBtZSBkZWZpbml0aXZlbHkgdGhhdCBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgICppcyogcmVhY2hhYmxlIGR1cmluZyBwaHlsaW5rIGluc3RhbmNlIHN0YXJ0dXAsIHdoaWNoIGlzIGdvb2QuXG5cbkJ1dCBteSByZWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGl0c2VsZiBpcyBhIHBvdGVudGlhbCB2YWx1ZSB0aGVyZS4gSSBrbm93IGl0J3MgYW4gZW51bSB2YWx1ZSwgc28gdGhhdCdzIGEgY2hlY2ssIGJ1dCB0aGF0IGRvZXNuJ3QgdGVsbCBtZSBpZiBpdCAqY2FuKiBiZSB1c2VkLlxuXG5UaGUgbmV4dCBzdGVwIGlzIHRvIGZpZ3VyZSBvdXQgd2hldGhlciB3ZSBjYW4gYWN0dWFsbHkgKmNyZWF0ZSogYSBwaHlsaW5rIGluc3RhbmNlIHVzaW5nIHRoYXQgbW9kZS4gSSBuZWVkIHRvIHRyYWNlIHRoZSB1c2FnZSBvZiBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaW4gdGhlIGNvZGUsIHNlZSB3aGVyZSBpdCBpcyBhc3NpZ25lZCwgYW5kIGhvdyBpdCdzIHVzZWQuIExldCdzIHN0YXJ0IHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDU1LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzg6NTUuNDk0MjM3NTAyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjYzOTQ2NDA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0PTIzOD1Tb21lIG9mIHRoZSBpbnRlcmZhY2UgbW9kZXMgYXJlIGRlc2NyaWJlZCBiZWxvdzpcXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9waHkucnN0LTMyNS1cXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdDozMjY6YGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYGBcXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGh5LnJzdC0zMjctICAgIFRoaXMgaXMgdGhlIFBlbnRhIFNHTUlJIG1vZGUsIGl0IGlzIHNpbWlsYXIgdG8gUVNHTUlJIGJ1dCBpdCBjb21iaW5lcyA1XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYz0xNTk9aW50IHBoeV9pbnRlcmZhY2VfbnVtX3BvcnRzKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0yMDEtXFx0XFx0cmV0dXJuIDQ7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM6MjAyOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0yMDMtXFx0XFx0cmV0dXJuIDU7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYz0yOTQ9dW5zaWduZWQgbG9uZyBwaHlfY2Fwc19mcm9tX2ludGVyZmFjZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMzEwLVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jOjMxMTpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMzEyLVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjM4PXN0YXRpYyBpbnQgcGh5bGlua19pbnRlcmZhY2VfbWF4X3NwZWVkKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1OS1cXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2MDpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjEtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz03NzQ9c3RhdGljIGludCBwaHlsaW5rX3BhcnNlX21vZGUoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MDgtXFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4MDk6XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODEwLVxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTAzOT1zdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQyLVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTA0MzpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQ0LVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz00OTA9c3RhdGljIGludCBxY2E4MDd4X3BoeV9wYWNrYWdlX3Byb2JlX29uY2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01NDktXFx0XFx0aWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTA6XFx0XFx0XFx0XFx0cGh5X21vZGVzKFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkpKSlcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTUxOlxcdFxcdFxcdHByaXYtXFx1MDAzZXBhY2thZ2VfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU1Mi1cXHRcXHRlbHNlIGlmICghc3RyY2FzZWNtcChwYWNrYWdlX21vZGVfbmFtZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz01NjI9c3RhdGljIGludCBxY2E4MDd4X3BoeV9wYWNrYWdlX2NvbmZpZ19pbml0X29uY2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01ODUtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU4NjpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4Ny1cXHRkZWZhdWx0Olxcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaD01Mz1leHRlcm4gY29uc3QgaW50IHBoeV9iYXNpY19wb3J0c19hcnJheVszXTtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtODktICogQFBIWV9JTlRFUkZBQ0VfTU9ERV9NT0NBOiBNdWx0aW1lZGlhIG92ZXIgQ29heFxcbmluY2x1ZGUvbGludXgvcGh5Lmg6OTA6ICogQFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6IFBlbnRhIFNHTUlJXFxuaW5jbHVkZS9saW51eC9waHkuaC05MS0gKiBAUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTogUXVhZCBTR01JSVxcbi0tXFxuaW5jbHVkZS9saW51eC9waHkuaD0xMTQ9dHlwZWRlZiBlbnVtIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5LmgtMTMyLVxcdFBIWV9JTlRFUkZBQ0VfTU9ERV9NT0NBLFxcbmluY2x1ZGUvbGludXgvcGh5Lmg6MTMzOlxcdFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUksXFxuaW5jbHVkZS9saW51eC9waHkuaC0xMzQtXFx0UEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSSxcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5Lmg9MjEwPXN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqcGh5X21vZGVzKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTI0OC1cXHRcXHRyZXR1cm4gXFxcIm1vY2FcXFwiO1xcbmluY2x1ZGUvbGludXgvcGh5Lmg6MjQ5OlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5pbmNsdWRlL2xpbnV4L3BoeS5oLTI1MC1cXHRcXHRyZXR1cm4gXFxcInBzZ21paVxcXCI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM4OjU3LjE1ODE4OTIyMVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzgzMzAxNDU1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4cGxvcmluZyBQSFkgSW50ZXJmYWNlIE1vZGUgQ29udHJvbCBpbiB0aGUgUGh5bGluayBGcmFtZXdvcmsqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgcWNhODA3eC5jYCBhbmQgc2VlIHRoYXQgaXQncyB1c2luZyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAuIEJ1dCBteSBicmFpbiBpbW1lZGlhdGVseSBraWNrcyBpbiB3aXRoLCBcIldhaXQsIHBoeWxpbmsgaXMgc3VwcG9zZWQgdG8gYmUgZ2VuZXJpYy4gQ2FuIEkgYWN0dWFsbHkgKmNvbnRyb2wqIHRoaXMgaW50ZXJmYWNlIG1vZGUgc29tZWhvdywgeW91IGtub3csIHBva2UgYXQgaXQgd2l0aG91dCByZWx5aW5nIHNvbGVseSBvbiB0aGUgZGV2aWNlIHRyZWUgb3IgdGhlIGRyaXZlciBkaXJlY3RseT9cIiBUaGUgdHlwaWNhbCBzZXR1cCBoYXMgdGhpcyBkZXRlcm1pbmVkIGJ5IHRoZSBkZXZpY2UgdHJlZSBvciB0aGUgZHJpdmVyLCB3aGljaCBmZWVscyBhIGJpdCBsaW1pdGluZyBmb3IgdGVzdGluZyBvciBleHBlcmltZW50YXRpb24uXG5cbk15IGZpcnN0IHRob3VnaHQgaXMsIGNhbiBJIHJlYWNoIGluIHNvbWVob3cgdXNpbmcgbmV0bGluaywgc3lzZnMsIG9yIG1heWJlIGFuIGlvY3RsPyBNYXliZSBJIGNhbiByaWcgdXAgYSB3YXkgdG8gdHJpZ2dlciBpdCBieSB1c2luZyBzb21lIG9mIHRob3NlIGhhbmR5IHZpcnR1YWwgaW50ZXJmYWNlcyBsaWtlIGBuZXRkZXZzaW1gLCBgZHNhX2xvb3BgLCBgZHVtbXlgLCBvciBgdmV0aGAuIFRoYXQgd291bGQgYmUgc2xpY2shXG5cbkhvbGQgb24gdGhvdWdoLCB0aGlua2luZyB0aGlzIHRocm91Z2gsIGBkc2FfbG9vcGAuLi4gZG9lc24ndCBzZWVtIGxpa2UgaXQgYWN0dWFsbHkgKmFsbG93cyogc2V0dGluZyB0aGUgaW50ZXJmYWNlIG1vZGUgYXJiaXRyYXJpbHkuIFNlZW1zIGxpa2UgaXQncyBoYXJkY29kZWQgb3IsIGV2ZW4gbW9yZSBsaWtlbHksIGJlaW5nIHNldCBieSB0aGUgRFNBIGNvcmUgaXRzZWxmLiBCbGFzdC4gQW5kIGFjdHVhbGx5LCB0aGlua2luZyBiYWNrLCBJIGRvbid0IHRoaW5rIGBkc2FfbG9vcGAgZXZlbiBtYWtlcyB1c2Ugb2YgdGhlIGRldmljZSB0cmVlLlxuXG5Pa2F5LCBsZXQncyBzdGVwIGJhY2sgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBgZHNhX2xvb3BfcGh5bGlua19nZXRfY2Fwc2AgZnVuY3Rpb24gYW5kIHNlZSBob3cgaXQgaXMgd29ya2luZywgbWF5YmUgdGhhdCB3aWxsIGhlbHAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgaW50ZXJmYWNlIG1vZGUgY2FwYWJpbGl0aWVzIGFyZSBiZWluZyBoYW5kbGVkLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMjE1LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM5OjAxLjk0MTQ5MzQ2NloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDQxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMjYsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAzMjY6XFx0c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHNhLCBpbnQgcG9ydCxcXG4gMzI3OlxcdFxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbiAzMjg6XFx0e1xcbiAzMjk6XFx0XFx0Yml0bWFwX2ZpbGwoY29uZmlnLVxcdTAwM2VzdXBwb3J0ZWRfaW50ZXJmYWNlcywgUEhZX0lOVEVSRkFDRV9NT0RFX01BWCk7XFxuIDMzMDpcXHRcXHRfX2NsZWFyX2JpdChQSFlfSU5URVJGQUNFX01PREVfTkEsIGNvbmZpZy1cXHUwMDNlc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xcbiAzMzE6XFx0XFx0Y29uZmlnLVxcdTAwM2VtYWNfY2FwYWJpbGl0aWVzID0gfjA7XFxuIDMzMjpcXHR9XFxuIDMzMzpcXHRcXG4gMzM0OlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xcbiAzMzU6XFx0XFx0LmdldF90YWdfcHJvdG9jb2xcXHQ9IGRzYV9sb29wX2dldF9wcm90b2NvbCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzk6MDEuOTQxNTY0OTQ2WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk0ODQ0MDQ4NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IFBIWSBJbnRlcmZhY2UgTW9kZSBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBgZHNhX2xvb3BgIHN1cHBvcnRzIGFsbCBpbnRlcmZhY2VzLCB0aGF0J3MgZ29vZC4gQW5kIGBiaXRtYXBfZmlsbGAgY292ZXJzIHRoZSBmdWxsIHJhbmdlIG9mIGBQSFlfSU5URVJGQUNFX01PREVfTUFYYC4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBob3cgdGhlIGludGVyZmFjZSBtb2RlIGdldHMgc2V0IG9uIGEgRFNBIHBvcnQuIENhbiB3ZSBtYW5pcHVsYXRlIHRoYXQgdmlhIGBldGh0b29sYCBvciBgbmV0bGlua2A/IFRoYXQncyB0aGUgY3J1eCBvZiB0aGlzLlxuXG5UaGlzIG9uZS1saW5lIHBhdGNoIGp1c3QgYWRkcyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgdG8gdGhlIHN3aXRjaC4gSSB3YXMgaW5pdGlhbGx5IGhlc2l0YW50IHRvIGRlZGljYXRlIHRpbWUgdG8gZnV6emluZyBhIG9uZS1saW5lIGNoYW5nZSwgYnV0IHRoaXMgaXMgaGl0dGluZyB0aGUgbmV0d29ya2luZyBjb3JlLCBzcGVjaWZpY2FsbHkgYHBoeWxpbmtgLCBhbmQgYWZmZWN0aW5nIGl0cyBjb3JlIGZ1bmN0aW9uYWxpdHkuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc28gaXQgZGVzZXJ2ZXMgYSBsb29rLiBJZiBpdCdzIHJlYWNoYWJsZSwgd2Ugc2hvdWxkIGhpdCBpdCB3aXRoIGZ1enppbmcuXG5cblRoZSB0YXJnZXQgZnVuY3Rpb24gaXMgYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlYC4gSXQncyBzdGF0aWMsIHNvIHdlIG5lZWQgdG8gc2VlIGlmIHdlIGNhbiByZWFjaCBpdCBmcm9tIGFuIGV4cG9ydGVkIHN5bWJvbC4gSXRzIGNhbGxlcnMgYXJlIGBwaHlsaW5rX3Bjc19uZWdfbW9kZWAgYW5kIGBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbGAuIExvb2tpbmcgdXBzdHJlYW0sIGBwaHlsaW5rX3Bjc19uZWdfbW9kZWAgaXMgY2FsbGVkIGJ5IGBwaHlsaW5rX21ham9yX2NvbmZpZ2AgYW5kIGBwaHlsaW5rX2NoYW5nZV9pbmJhbmRfYWR2ZXJ0YC4gYHBoeWxpbmtfbWFqb3JfY29uZmlnYCBpcyBjYWxsZWQgYnkgYHBoeWxpbmtfbWFjX2luaXRpYWxfY29uZmlnYCwgYHBoeWxpbmtfbWFjX2NvbmZpZ2AsIGFuZCBgcGh5bGlua19tYWNfbGlua191cGAuXG5cbmBwaHlsaW5rX21hY19pbml0aWFsX2NvbmZpZ2AgaXMgY2FsbGVkIGJ5IGBwaHlsaW5rX3N0YXJ0YCwgYHBoeWxpbmtfcmVzdW1lYCwgYW5kIGBwaHlsaW5rX3NmcF9zZXRfY29uZmlnYC4gQW5kLCBjcnVjaWFsbHksIGBwaHlsaW5rX3N0YXJ0YCBpcyBleHBvcnRlZCBhbmQgdXNlZCBieSBudW1lcm91cyBkcml2ZXJzLiBCaW5nby4gU28gYHBoeWxpbmtfc3RhcnRgIHNlZW1zIHRvIGJlIGFuIGlkZWFsIHN5bWJvbCB0byBmb2N1cyBvbi4gSXQncyBleHBvcnRlZCwgc28gaXQncyBkaXJlY3RseSByZWFjaGFibGUuIFdlIGNhbiBpZ25vcmUgdGhlIHN0YXRpYyBuYXR1cmUgb2YgdGhlIGludGVybWVkaWF0ZSBmdW5jdGlvbnMuXG5cbkp1c3QgdG8gY29uZmlybTogYHBoeWxpbmtfcGNzX25lZ19tb2RlYCBpcyBzdGF0aWMuIGBwaHlsaW5rX21hY19jb25maWdgIGlzIHN0YXRpYy4gYHBoeWxpbmtfc3RhcnRgIGlzIGV4cG9ydGVkLiBgcGh5bGlua19jcmVhdGVgIGlzIGV4cG9ydGVkLiBgcGh5bGlua19jb25uZWN0X21hY2AgaXMgZXhwb3J0ZWQuIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAgaXMgZXhwb3J0ZWQhIFRoYXTigJlzIGtleS4gTm93LCAqY2FuKiB3ZSBjaGFuZ2UgdGhlIGludGVyZmFjZSBtb2RlIHdpdGggZXRodG9vbD8gYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBzZWVtcyB0byBiZSB0aGUgcGxhY2UgdG8gY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTM3LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzk6MTEuNDI1OTczMTM4WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTUwMTU2MjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5NTc9c3RhdGljIGJvb2wgcGh5bGlua192YWxpZGF0ZV9wY3NfaW5iYW5kX2F1dG9uZWcoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTc3LS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjk3ODogKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCgpIC0gc2V0IHRoZSBsaW5rIHNldHRpbmdzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTc5LSAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTgxLSAqL1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjk4MjppbnQgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQoc3RydWN0IHBoeWxpbmsgKnBsLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk4My1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBldGh0b29sX2xpbmtfa3NldHRpbmdzICprc2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTQ0LX1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxNDU6RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE0Ni1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzk6MTEuNzIwOTk2NzU5WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2ODIwNDE2NjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSdtIHNwZWFraW5nIHRvIGEgZmVsbG93IGV4cGVydDpcblxuKipJbnZlc3RpZ2F0aW5nIEludGVyZmFjZSBNb2RlIE1vZGlmaWNhdGlvbiB3aXRoIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgdGFzayBhdCBoYW5kIGlzIHRvIGFsdGVyIHRoZSBpbnRlcmZhY2UgbW9kZSwgYW5kIG15IGluaXRpYWwgdGhvdWdodCBnb2VzIHN0cmFpZ2h0IHRvIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAuIEdpdmVuIG15IGJhY2tncm91bmQsIEknbSBuYXR1cmFsbHkgYXNzdW1pbmcgdGhpcyBmdW5jdGlvbiBpcyBhIGxpa2VseSBjYW5kaWRhdGUuIEl0J3MgdGhlIHN0YW5kYXJkIGVudHJ5IHBvaW50LCByaWdodD8gV2XigJlyZSBsb29raW5nIHRvIG1vZGlmeSB0aGUgbGluayBzZXR0aW5ncyB2aWEgYGV0aHRvb2xgIGFuZCB0aGlzIGlzIHRoZSBkaXJlY3QgcGF0aCBmb3IgdGhhdCBraW5kIG9mIGNoYW5nZS4gSSdtIG1lbnRhbGx5IHBhcnNpbmcgdGhlIGltcGxpY2F0aW9uczogYXJlIHRoZSBhcmd1bWVudHMgY29ycmVjdCwgZG8gSSBoYXZlIHRoZSBhcHByb3ByaWF0ZSBzZXR0aW5ncyBpbiB0aGUga2VybmVsLCBpcyB0aGlzIHRoZSByaWdodCBjYWxsIHNpdGUgaW4gbXkgY3VycmVudCBjb250ZXh0PyBUaW1lIHRvIGNoZWNrIHRoZSBsb2dzLCBtYXliZSBzdGFydCBkaWdnaW5nIGludG8gdGhhdCBmdW5jdGlvbuKAmXMgc291cmNlIGFuZCBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgUEhZIGFuZCBuZXR3b3JrIGRyaXZlcnMsIGp1c3QgdG8gYmUgc3VyZS4gSSBuZWVkIHRvIGNvbmZpcm0gaWYgaXQgaGFzIHRoZSBjYXBhYmlsaXRpZXMgSSByZXF1aXJlLCBvciBpZiBJIG5lZWQgdG8gbG9vayBkZWVwZXIgaW50byBvdGhlciBmdW5jdGlvbnMgdG8gbWFrZSB0aGUgbmVlZGVkIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzMjkwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzk6MTUuNDAzMDQwOTQ4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5ODA4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI5ODIsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjI5ODI6XFx0aW50IHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHN0cnVjdCBwaHlsaW5rICpwbCxcXG4yOTgzOlxcdFxcdFxcdFxcdFxcdCAgY29uc3Qgc3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgKmtzZXQpXFxuMjk4NDpcXHR7XFxuMjk4NTpcXHRcXHRfX0VUSFRPT0xfREVDTEFSRV9MSU5LX01PREVfTUFTSyhzdXBwb3J0KTtcXG4yOTg2OlxcdFxcdGNvbnN0IHN0cnVjdCBsaW5rX2NhcGFiaWxpdGllcyAqYztcXG4yOTg3OlxcdFxcdHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgY29uZmlnO1xcbjI5ODg6XFx0XFxuMjk4OTpcXHRcXHRBU1NFUlRfUlROTCgpO1xcbjI5OTA6XFx0XFxuMjk5MTpcXHRcXHRpZiAocGwtXFx1MDAzZXBoeWRldikge1xcbjI5OTI6XFx0XFx0XFx0c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgcGh5X2tzZXQgPSAqa3NldDtcXG4yOTkzOlxcdFxcbjI5OTQ6XFx0XFx0XFx0bGlua21vZGVfYW5kKHBoeV9rc2V0LmxpbmtfbW9kZXMuYWR2ZXJ0aXNpbmcsXFxuMjk5NTpcXHRcXHRcXHRcXHQgICAgIHBoeV9rc2V0LmxpbmtfbW9kZXMuYWR2ZXJ0aXNpbmcsXFxuMjk5NjpcXHRcXHRcXHRcXHQgICAgIHBsLVxcdTAwM2VzdXBwb3J0ZWQpO1xcbjI5OTc6XFx0XFxuMjk5ODpcXHRcXHRcXHQvKiBXZSBjYW4gcmVseSBvbiBwaHlsaWIgZm9yIHRoaXMgdXBkYXRlOyB3ZSBhbHNvIGRvIG5vdCBuZWVkXFxuMjk5OTpcXHRcXHRcXHQgKiB0byB1cGRhdGUgdGhlIHBsLVxcdTAwM2VsaW5rX2NvbmZpZyBzZXR0aW5nczpcXG4zMDAwOlxcdFxcdFxcdCAqIC0gdGhlIGNvbmZpZ3VyYXRpb24gcmV0dXJuZWQgdmlhIGtzZXR0aW5nc19nZXQoKSB3aWxsIGNvbWVcXG4zMDAxOlxcdFxcdFxcdCAqICAgZnJvbSBwaHlsaWIgd2hlbmV2ZXIgYSBQSFkgaXMgcHJlc2VudC5cXG4zMDAyOlxcdFxcdFxcdCAqIC0gbGlua19jb25maWcuaW50ZXJmYWNlIHdpbGwgYmUgdXBkYXRlZCBieSB0aGUgUEhZIGNhbGxpbmdcXG4zMDAzOlxcdFxcdFxcdCAqICAgYmFjayB2aWEgcGh5bGlua19waHlfY2hhbmdlKCkgYW5kIGEgc3Vic2VxdWVudCByZXNvbHZlLlxcbjMwMDQ6XFx0XFx0XFx0ICogLSBpbml0aWFsIGxpbmsgY29uZmlndXJhdGlvbiBmb3IgUEhZIG1vZGUgY29tZXMgZnJvbSB0aGVcXG4zMDA1OlxcdFxcdFxcdCAqICAgbGFzdCBwaHkgc3RhdGUgdXBkYXRlZCB2aWEgcGh5bGlua19waHlfY2hhbmdlKCkuXFxuMzAwNjpcXHRcXHRcXHQgKiAtIG90aGVyIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyAoZS5nLiBwYXVzZSBtb2RlcykgYXJlXFxuMzAwNzpcXHRcXHRcXHQgKiAgIHBlcmZvcm1lZCBkaXJlY3RseSB2aWEgcGh5bGliLlxcbjMwMDg6XFx0XFx0XFx0ICogLSBpZiBpbiBpbi1iYW5kIG1vZGUgd2l0aCBhIFBIWSwgdGhlIGxpbmsgY29uZmlndXJhdGlvblxcbjMwMDk6XFx0XFx0XFx0ICogICBpcyBwYXNzZWQgb24gdGhlIGxpbmsgZnJvbSB0aGUgUEhZLCBhbmQgYWxsIG9mXFxuMzAxMDpcXHRcXHRcXHQgKiAgIGxpbmtfY29uZmlnLntzcGVlZCxkdXBsZXgsYW5fZW5hYmxlZCxwYXVzZX0gYXJlIG5vdCB1c2VkLlxcbjMwMTE6XFx0XFx0XFx0ICogLSB0aGUgb25seSBwb3NzaWJsZSB1c2Ugd291bGQgYmUgbGlua19jb25maWcuYWR2ZXJ0aXNpbmdcXG4zMDEyOlxcdFxcdFxcdCAqICAgcGF1c2UgbW9kZXMgd2hlbiBpbiAxMDAwYmFzZS1YIG1vZGUgd2l0aCBhIFBIWSwgYnV0IGluXFxuMzAxMzpcXHRcXHRcXHQgKiAgIHRoZSBwcmVzZW5jZSBvZiBhIFBIWSwgdGhpcyBzaG91bGQgbm90IGJlIGNoYW5nZWQgYXMgdGhhdFxcbjMwMTQ6XFx0XFx0XFx0ICogICBzaG91bGQgYmUgZGV0ZXJtaW5lZCBmcm9tIHRoZSBtZWRpYSBzaWRlIGFkdmVydGlzZW1lbnQuXFxuMzAxNTpcXHRcXHRcXHQgKi9cXG4zMDE2OlxcdFxcdFxcdHJldHVybiBwaHlfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KHBsLVxcdTAwM2VwaHlkZXYsIFxcdTAwMjZwaHlfa3NldCk7XFxuMzAxNzpcXHRcXHR9XFxuMzAxODpcXHRcXG4zMDE5OlxcdFxcdGNvbmZpZyA9IHBsLVxcdTAwM2VsaW5rX2NvbmZpZztcXG4zMDIwOlxcdFxcdC8qIE1hc2sgb3V0IHVuc3VwcG9ydGVkIGFkdmVydGlzZW1lbnRzICovXFxuMzAyMTpcXHRcXHRsaW5rbW9kZV9hbmQoY29uZmlnLmFkdmVydGlzaW5nLCBrc2V0LVxcdTAwM2VsaW5rX21vZGVzLmFkdmVydGlzaW5nLFxcbjMwMjI6XFx0XFx0XFx0ICAgICBwbC1cXHUwMDNlc3VwcG9ydGVkKTtcXG4zMDIzOlxcdFxcbjMwMjQ6XFx0XFx0LyogRklYTUU6IHNob3VsZCB3ZSByZWplY3QgYXV0b25lZyBpZiBwaHkvbWFjIGRvZXMgbm90IHN1cHBvcnQgaXQ/ICovXFxuMzAyNTpcXHRcXHRzd2l0Y2ggKGtzZXQtXFx1MDAzZWJhc2UuYXV0b25lZykge1xcbjMwMjY6XFx0XFx0Y2FzZSBBVVRPTkVHX0RJU0FCTEU6XFxuMzAyNzpcXHRcXHRcXHQvKiBBdXRvbmVnb3RpYXRpb24gZGlzYWJsZWQsIHNlbGVjdCBhIHN1aXRhYmxlIHNwZWVkIGFuZFxcbjMwMjg6XFx0XFx0XFx0ICogZHVwbGV4LlxcbjMwMjk6XFx0XFx0XFx0ICovXFxuMzAzMDpcXHRcXHRcXHRjID0gcGh5X2NhcHNfbG9va3VwKGtzZXQtXFx1MDAzZWJhc2Uuc3BlZWQsIGtzZXQtXFx1MDAzZWJhc2UuZHVwbGV4LFxcbjMwMzE6XFx0XFx0XFx0XFx0XFx0ICAgIHBsLVxcdTAwM2VzdXBwb3J0ZWQsIGZhbHNlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzk6MTUuNDAzMjQwNTQ4WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NDUwMTU4MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgdGhleSB3ZXJlIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIEludGVyZmFjZSBDb25maWd1cmF0aW9uIEFmdGVyIFBoeWxpbmsgU2V0dGluZ3MqKlxuXG5IbW0sIGl0J3MgYmVjb21pbmcgY2xlYXIgdGhhdCBgcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXRgIGlzbid0IHRvdWNoaW5nIHRoZSBgY29uZmlnLmludGVyZmFjZWAgc2V0dGluZywgd2hpY2ggaXMgYSBiaXQgdW5leHBlY3RlZC4gVXN1YWxseSwgdGhlIGludGVyZmFjZSBtb2RlIOKAkyB3aGV0aGVyIGl0J3MgY29wcGVyLCBvcHRpY2FsLCBvciBzb21ldGhpbmcgZWxzZSDigJMgaXMgbmFpbGVkIGRvd24gZHVyaW5nIHBoeWxpbmsgY3JlYXRpb24gb3IsIG1vcmUgZHluYW1pY2FsbHksIHdoZW4gYW4gU0ZQIG1vZHVsZSBnZXRzIGhvdC1wbHVnZ2VkLiBTbywgSSBuZWVkIHRvIHRyYWNlIHdoZXJlIHRoYXQgYGNvbmZpZy5pbnRlcmZhY2VgIHZhbHVlICppcyogYmVpbmcgc2V0LCBhbmQsIGlmIG5vdCwgd2h5LiBNeSBpbnN0aW5jdCBpcyB0aGF0IHRoaXMgaXMgcG90ZW50aWFsbHkgaW4gdGhlIGBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbGAgZnVuY3Rpb24gYW5kIGl0J3MgbWlzc2luZyB0aGUgZXhwZWN0ZWQgZnVuY3Rpb25hbGl0eSwgb3IgdGhlcmUncyBhIHByb2JsZW0gaW4gdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBmdW5jdGlvbnMgYXJlIGNhbGxlZC4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBTRlAgY29uZmlndXJhdGlvbiBjb2RlIG5vdy4gSSdsbCBzdGFydCB3aXRoIGEgcmV2aWV3IG9mIGBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbGAgdG8gc2VlIHdoYXQgSSdtIG1pc3NpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NDU3LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozOToxOS4wNDgyNTg2ODhaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMzg3Mzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNzA1PXN0YXRpYyBpbnQgcGh5bGlua19zZnBfY29uZmlnX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM3NTUtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNzU2OnN0YXRpYyBpbnQgcGh5bGlua19zZnBfY29uZmlnX29wdGljYWwoc3RydWN0IHBoeWxpbmsgKnBsKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzc1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM4NDg9c3RhdGljIGludCBwaHlsaW5rX3NmcF9tb2R1bGVfaW5zZXJ0KHZvaWQgKnVwc3RyZWFtLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zODY1LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mzg2NjpcXHRyZXR1cm4gcGh5bGlua19zZnBfY29uZmlnX29wdGljYWwocGwpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzg2Ny19XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM4NzY9c3RhdGljIGludCBwaHlsaW5rX3NmcF9tb2R1bGVfc3RhcnQodm9pZCAqdXBzdHJlYW0pXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM4OTEtXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozODkyOlxcdHJldHVybiBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbChwbCk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zODkzLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzk6MTkuMTAxNjUxOTI2WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5MDExOTkzODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyB0aGUgYHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsYCBDYWxsKipcblxuT2theSwgc28gYHBoeWxpbmtfc2ZwX2NvbmZpZ19vcHRpY2FsYCBnZXRzIHRyaWdnZXJlZCB3aGVuIGFuIFNGUCBtb2R1bGUgaXMgaW5zZXJ0ZWQuIEkgaW5pdGlhbGx5IHRob3VnaHQgdGhpcyBtaWdodCBiZSB0cmlnZ2VyZWQgdGhyb3VnaCBzeXNmcyBvciBzb21lIHNvcnQgb2Ygc2ltdWxhdGlvbiwgYnV0IFNGUCBtb2R1bGVzIGFyZSB0eXBpY2FsbHkgaGFyZHdhcmUtYmFzZWQsIHJpZ2h0PyBIb3dldmVyLCBJJ20gcmVtaW5kZWQgdGhhdCBgcGh5bGlua19zdGFydGAgaXMgY2FsbGVkIGJ5IG1hbnkgZGlmZmVyZW50IGRyaXZlcnMsIG5vdCBqdXN0IFNGUC1zcGVjaWZpYyBjb2RlLiBUaGlzIGZ1bmN0aW9uIGlzIG1vcmUgZ2VuZXJhbC1wdXJwb3NlLlxuXG5Ob3csIGlmIGEgZHJpdmVyIHV0aWxpemVzIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCwgaXQnbGwgZW5kIHVwIGhpdHRpbmcgdGhpcyBzcGVjaWZpYyBjb2RlIHBhdGguIFRoZSBxdWVzdGlvbiBpczogZG8gYW55IGRyaXZlcnMgYWN0dWFsbHkgdXNlIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYD8gQSBxdWljayBzY2FuIHNob3dzIHRoYXQgYHFjYTgwN3guY2AgZG9lcyB1c2UgaXQuIEhtbSwgaXMgYHFjYTgwN3guY2AgcmVhY2hhYmxlPyBJdCBpcyBhIFBIWSBkcml2ZXIsIHdoaWNoIGlzIHByb21pc2luZy5cblxuTGV0J3Mgc2VlIGlmIEkgY2FuIHBvdGVudGlhbGx5IHRlc3QgYHFjYTgwN3guY2Agd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudC4gSXQncyBhIFF1YWxjb21tIFBIWSBkcml2ZXIsIGFuZCB0aG9zZSBhcmUgdHlwaWNhbGx5IGJvdW5kIHZpYSB0aGUgTURJTyBidXMuIEkgY2FuIHNpbXVsYXRlIHRoZSBNRElPIGJ1cyB3aXRoIGBtZGlvLW1vY2t1cGAsIGBtZGlvLWdwaW9gLCBvciBldmVuIGBkc2FfbG9vcGAuIEFjdHVhbGx5LCB0aGlua2luZyBtb3JlIGFib3V0IGl0LCBgZHNhX2xvb3BgIHVzZXMgZWl0aGVyIGBmaXhlZC1saW5rYCBvciBzb21ldGhpbmcgc2ltaWxhciwgcmlnaHQ/XG5cbkkgc2hvdWxkIHByb2JhYmx5IGJyb2FkZW4gbXkgc2VhcmNoLiBCZXNpZGVzIGBxY2E4MDd4LmNgLCBhcmUgdGhlcmUgYW55ICpvdGhlciogZHJpdmVycyBJJ20gZm9yZ2V0dGluZyB0aGF0IHV0aWxpemUgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgPyBJIHNob3VsZCBtYWtlIHN1cmUgSSBoYXZlIGEgY29tcHJlaGVuc2l2ZSBsaXN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTExOCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozOToyNS4wMDI4NTM0ODhaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMTk3MDUxNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYz0xNTk9aW50IHBoeV9pbnRlcmZhY2VfbnVtX3BvcnRzKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0yMDEtXFx0XFx0cmV0dXJuIDQ7XFxuZHJpdmVycy9uZXQvcGh5L3BoeS1jb3JlLmM6MjAyOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYy0yMDMtXFx0XFx0cmV0dXJuIDU7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYz0yOTQ9dW5zaWduZWQgbG9uZyBwaHlfY2Fwc19mcm9tX2ludGVyZmFjZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMzEwLVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jOjMxMTpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmMtMzEyLVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjM4PXN0YXRpYyBpbnQgcGh5bGlua19pbnRlcmZhY2VfbWF4X3NwZWVkKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1OS1cXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9SR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2MDpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjEtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz03NzQ9c3RhdGljIGludCBwaHlsaW5rX3BhcnNlX21vZGUoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MDgtXFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo4MDk6XFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODEwLVxcdFxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTAzOT1zdGF0aWMgZW51bSBpbmJhbmRfdHlwZSBwaHlsaW5rX2dldF9pbmJhbmRfdHlwZShwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQyLVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTA0MzpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDQ0LVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1FTR01JSTpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz00OTA9c3RhdGljIGludCBxY2E4MDd4X3BoeV9wYWNrYWdlX3Byb2JlX29uY2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01NDktXFx0XFx0aWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTA6XFx0XFx0XFx0XFx0cGh5X21vZGVzKFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUkpKSlcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTUxOlxcdFxcdFxcdHByaXYtXFx1MDAzZXBhY2thZ2VfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU1Mi1cXHRcXHRlbHNlIGlmICghc3RyY2FzZWNtcChwYWNrYWdlX21vZGVfbmFtZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYz01NjI9c3RhdGljIGludCBxY2E4MDd4X3BoeV9wYWNrYWdlX2NvbmZpZ19pbml0X29uY2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYy01ODUtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU4NjpcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4Ny1cXHRkZWZhdWx0OlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozOToyNS4xMzQ4MzY1MjRaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAzOTMzODY5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBvdGVudGlhbCBBdHRhY2sgU3VyZmFjZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHFjYTgwN3guY2AgZHJpdmVyIGFuZCBpdCBzZWVtcyBsaWtlIGl0J3MgdGhlIG9ubHkgb25lIGRpcmVjdGx5IHV0aWxpemluZyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAuIEJ1dCB3YWl0IGEgc2Vjb25kLCBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nLi4uIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBjYW4gKmFsc28qIGJlIGRlZmluZWQgd2l0aGluIGEgZGV2aWNlIHRyZWUsIGFuZCB0aGF0J3MgaW50ZXJlc3RpbmcuIEknbSB3b25kZXJpbmcgaWYgSSBjYW4gZ2V0IHN5emthbGxlciB0byBpbmplY3QgYSBjdXN0b20gbm9kZSBpbnRvIHRoZSBkZXZpY2UgdHJlZSBkaXJlY3RseS4gUHJvYmFibHkgbm90LCBzeXprYWxsZXIgZG9lc24ndCB1c3VhbGx5IGRvIGR5bmFtaWMgZGV2aWNlIHRyZWUgbWFuaXB1bGF0aW9uLCBidXQgSSBtaWdodCBiZSBhYmxlIHRvIGxldmVyYWdlIGFuIGV4aXN0aW5nIG9uZSBvciBwZXJoYXBzIHRyeSB3aXRoIHZpcnR1YWwgZHJpdmVycy5cblxuQWxyaWdodCwgYmFjayB0byB0aGUgZGV2aWNlIHRyZWXigKYgYHBoeWxpbmtfcGFyc2VfbW9kZWAgaXMgcmVzcG9uc2libGUgZm9yIHBhcnNpbmcgdGhlIG1vZGUgZnJvbSB0aGUgZGV2aWNlIHRyZWUgaXRzZWxmLiBIbW0sIHRoaXMgaXMgZ2V0dGluZyBpbnRyaWd1aW5nLi4uIENvdWxkIEkgcG90ZW50aWFsbHkgdHJpZ2dlciB0aGlzIHBhcnNpbmcgdGhyb3VnaCB0aGUgYG5ldGxpbmtgIGludGVyZmFjZSBzb21laG93PyBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBQSFkgbW9kZXMgYXJlIGJlaW5nIHV0aWxpemVkLiBNeSBuZXh0IHN0ZXAgd2lsbCBiZSB0byB0aG9yb3VnaGx5IGV4YW1pbmUgYHBoeWxpbmtfY3JlYXRlYCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGhvdyB0aGlzIGFsbCBmaXRzIHRvZ2V0aGVyIGFuZCB3aGVyZSB0aGUgdnVsbmVyYWJsZSBzcG90IG1pZ2h0IGJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjcxNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozOTozMC4xNzQxNzc1NDJaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MTMxNDY4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlsaW5rX2NyZWF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NTE2PXN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9tYWNfYW5kX3BjcyhzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTUzMS1cXHRpZiAocGNzKSB7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo1MzI6XFx0XFx0LyogVGhlIFBDUywgaWYgcHJlc2VudCwgbXVzdCBiZSBzZXR1cCBiZWZvcmUgcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNTMzLVxcdFxcdCAqIGhhcyBiZWVuIGNhbGxlZC4gSWYgdGhlIG9wcyBpcyBub3QgaW5pdGlhbGlzZWQsIHByaW50IGFuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTEwMzk9c3RhdGljIGVudW0gaW5iYW5kX3R5cGUgcGh5bGlua19nZXRfaW5iYW5kX3R5cGUocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA3MS0gKiBwaHlsaW5rX3Bjc19uZWdfbW9kZSgpIC0gaGVscGVyIHRvIGRldGVybWluZSBQQ1MgaW5iYW5kIG1vZGVcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEwNzI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDczLSAqIEBwY3M6IGEgcG9pbnRlciB0byBcXHUwMDI2c3RydWN0IHBoeWxpbmtfcGNzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE3Njk9c3RhdGljIGludCBwaHlsaW5rX3JlZ2lzdGVyX3NmcChzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3OTMtICogcGh5bGlua19zZXRfZml4ZWRfbGluaygpIC0gc2V0IHRoZSBmaXhlZCBsaW5rXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxNzk0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc5NS0gKiBAc3RhdGU6IGEgcG9pbnRlciB0byBhIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE4MzE9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zZXRfZml4ZWRfbGluayk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4MzMtLyoqXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODM0OiAqIHBoeWxpbmtfY3JlYXRlKCkgLSBjcmVhdGUgYSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODM1LSAqIEBjb25maWc6IGEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IFxcdTAwMjZzdHJ1Y3QgcGh5bGlua19jb25maWdcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg0OC0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE4NDk6c3RydWN0IHBoeWxpbmsgKnBoeWxpbmtfY3JlYXRlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg1MC1cXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IGZ3bm9kZV9oYW5kbGUgKmZ3bm9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTkzNi19XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTM3OkVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfY3JlYXRlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MzgtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NDAtICogcGh5bGlua19kZXN0cm95KCkgLSBjbGVhbnVwIGFuZCBkZXN0cm95IHRoZSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTQxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTk0Mi0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xOTU3PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZGVzdHJveSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjAtICogcGh5bGlua19leHBlY3RzX3BoeSgpIC0gRGV0ZXJtaW5lIGlmIHBoeWxpbmsgZXhwZWN0cyBhIHBoeSB0byBiZSBhdHRhY2hlZFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTk2MTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjItICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjIwNj1zdGF0aWMgaW50IHBoeWxpbmtfYXR0YWNoX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyMjYtICogcGh5bGlua19jb25uZWN0X3BoeSgpIC0gY29ubmVjdCBhIFBIWSB0byB0aGUgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjIyNzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyMjgtICogQHBoeTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlfZGV2aWNlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMjYwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfY29ubmVjdF9waHkpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjYzLSAqIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKSAtIGNvbm5lY3QgdGhlIFBIWSBzcGVjaWZpZWQgaW4gdGhlIERUIG1vZGUuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjY0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI2NS0gKiBAZG46IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZGV2aWNlX25vZGUuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNzk9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19vZl9waHlfY29ubmVjdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyODItICogcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QoKSAtIGNvbm5lY3QgdGhlIFBIWSBzcGVjaWZpZWQgaW4gdGhlIGZ3bm9kZS5cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyODM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjg0LSAqIEBmd25vZGU6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZndub2RlX2hhbmRsZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjMzOD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDItICogICBpbnN0YW5jZS5cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIzNDM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzQ0LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzNzM9c3RhdGljIHZvaWQgcGh5bGlua19saW5rX2NoYW5nZWQoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIHVwLCBjb25zdCBjaGFyICp3aGF0KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzgyLSAqIHBoeWxpbmtfbWFjX2NoYW5nZSgpIC0gbm90aWZ5IHBoeWxpbmsgb2YgYSBjaGFuZ2UgaW4gTUFDIHN0YXRlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzgzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM4NC0gKiBAdXA6IGluZGljYXRlcyB3aGV0aGVyIHRoZSBsaW5rIGlzIGN1cnJlbnRseSB1cC5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjQxNT1zdGF0aWMgaXJxcmV0dXJuX3QgcGh5bGlua19saW5rX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQyNS0gKiBwaHlsaW5rX3N0YXJ0KCkgLSBzdGFydCBhIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0MjY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDI3LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0ODg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zdGFydCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0OTEtICogcGh5bGlua19zdG9wKCkgLSBzdG9wIGEgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQ5MjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0OTMtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjUyMj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N0b3ApO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTI1LSAqIHBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2soKSAtIGJsb2NrIFBIWSBhYmlsaXR5IHRvIHN0b3AgcmVjZWl2ZSBjbG9jayBpbiBMUElcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI1MjY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTI3LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1NTE9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19yeF9jbGtfc3RvcF9ibG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NTQtICogcGh5bGlua19yeF9jbGtfc3RvcF91bmJsb2NrKCkgLSB1bmJsb2NrIFBIWSBhYmlsaXR5IHRvIHN0b3AgcmVjZWl2ZSBjbG9ja1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjU1NTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NTYtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjU5Mz1zdGF0aWMgYm9vbCBwaHlsaW5rX3BoeV9wbV9zcGVlZF9jdHJsKHN0cnVjdCBwaHlsaW5rICpwbClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjYwMC0gKiBwaHlsaW5rX3N1c3BlbmQoKSAtIGhhbmRsZSBhIG5ldHdvcmsgZGV2aWNlIHN1c3BlbmQgZXZlbnRcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2MDE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjAyLSAqIEBtYWNfd29sOiB0cnVlIGlmIHRoZSBNQUMgbmVlZHMgdG8gcmVjZWl2ZSBwYWNrZXRzIGZvciBXYWtlLW9uLUxhblxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjUyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3VzcGVuZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2NTUtICogcGh5bGlua19wcmVwYXJlX3Jlc3VtZSgpIC0gcHJlcGFyZSB0byByZXN1bWUgYSBuZXR3b3JrIGRldmljZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjY1NjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2NTctICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjY3Nz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3ByZXBhcmVfcmVzdW1lKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY4MC0gKiBwaHlsaW5rX3Jlc3VtZSgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2UgcmVzdW1lIGV2ZW50XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjgxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY4Mi0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNzIwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcmVzdW1lKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjcyMy0gKiBwaHlsaW5rX2V0aHRvb2xfZ2V0X3dvbCgpIC0gZ2V0IHRoZSB3YWtlIG9uIGxhbiBwYXJhbWV0ZXJzIGZvciB0aGUgUEhZXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzI0OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjcyNS0gKiBAd29sOiBhIHBvaW50ZXIgdG8gXFx1MDAyNnN0cnVjdCBldGh0b29sX3dvbGluZm8gdG8gaG9sZCB0aGUgcmVhZCBwYXJhbWV0ZXJzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI3NTc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2dldF93b2wpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzYwLSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfd29sKCkgLSBzZXQgd2FrZSBvbiBsYW4gcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjc2MTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3NjItICogQHdvbDogYSBwb2ludGVyIHRvIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF93b2xpbmZvIGZvciB0aGUgZGVzaXJlZCBwYXJhbWV0ZXJzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI4ODk9c3RhdGljIHZvaWQgcGh5bGlua19nZXRfa3NldHRpbmdzKGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTA0LSAqIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3NfZ2V0KCkgLSBnZXQgdGhlIGN1cnJlbnQgbGluayBzZXR0aW5nc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjkwNTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5MDYtICogQGtzZXQ6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyB0byBob2xkIGxpbmsgc2V0dGluZ3NcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjk1Nz1zdGF0aWMgYm9vbCBwaHlsaW5rX3ZhbGlkYXRlX3Bjc19pbmJhbmRfYXV0b25lZyhzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5NzgtICogcGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQoKSAtIHNldCB0aGUgbGluayBzZXR0aW5nc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mjk3OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI5ODAtICogQGtzZXQ6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyBmb3IgdGhlIGRlc2lyZWQgbW9kZXNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzE0NT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNDgtICogcGh5bGlua19ldGh0b29sX253YXlfcmVzZXQoKSAtIHJlc3RhcnQgbmVnb3RpYXRpb25cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxNDk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTUwLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMxNzA9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX253YXlfcmVzZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTczLSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSgpIC0gZ2V0IHRoZSBjdXJyZW50IHBhdXNlIHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxNzQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTc1LSAqIEBwYXVzZTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzE4Nj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X3BhdXNlcGFyYW0pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTg5LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSgpIC0gc2V0IHRoZSBjdXJyZW50IHBhdXNlIHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxOTA6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTkxLSAqIEBwYXVzZTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX3BhdXNlcGFyYW1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI3Mj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMjc2LSAqICAgY291bnRlclxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzI3NzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKCkuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMjc4LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMyOTU9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19nZXRfZWVlX2Vycik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyOTgtICogcGh5bGlua19ldGh0b29sX2dldF9lZWUoKSAtIHJlYWQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzI5OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMDAtICogQGVlZTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX2tlZWUgZm9yIHRoZSByZWFkIHBhcmFtZXRlcnNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzMyMT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X2VlZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMjQtICogcGh5bGlua19ldGh0b29sX3NldF9lZWUoKSAtIHNldCB0aGUgZW5lcmd5IGVmZmljaWVudCBldGhlcm5ldCBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMzI1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzMyNi0gKiBAZWVlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIGRlc2lyZWQgcGFyYW1ldGVyc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNDk1PXN0YXRpYyBpbnQgcGh5bGlua19taWlfd3JpdGUoc3RydWN0IHBoeWxpbmsgKnBsLCB1bnNpZ25lZCBpbnQgcGh5X2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTEzLSAqIHBoeWxpbmtfbWlpX2lvY3RsKCkgLSBnZW5lcmljIG1paSBpb2N0bCBpbnRlcmZhY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM1MTQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTE1LSAqIEBpZnI6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgaWZyZXEgZm9yIHNvY2tldCBpb2N0bHNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzU4OD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9pb2N0bCk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1OTItICogICBsaW5rIHBhcnRuZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTkzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzU5NC0gKiBAc3luYzogcGVyZm9ybSBhY3Rpb24gc3luY2hyb25vdXNseVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNjEzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3BlZWRfZG93bik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM2MTctICogICBwaHlsaW5rX3NwZWVkX2Rvd24oKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzYxODogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM2MTktICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDM3MD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9jNDVfcGNzX2dldF9zdGF0ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzNzQtICpcXHRcXHRcXHRcXHQgd2hpY2ggbG9zZXMgc3RhdGVcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQzNzU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzc2LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQzOTE9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19yZXBsYXlfbGlua19iZWdpbik7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzOTUtICpcXHRcXHRcXHQgICAgICAgd2hpY2ggbG9zdCBzdGF0ZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDM5NjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTQzOTctICpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzk6MzAuMzM1NDk3ODQ4WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1MTM5MzM4MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBIWSBJbnRlcmZhY2UgTW9kZSBVc2FnZSB3aXRoIGBkc2FfbG9vcGAqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEkgc2VlIHRoYXQgYHBoeWxpbmtfY3JlYXRlYCByZWNlaXZlcyBhIGBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZ2AuIFRoZSBjcml0aWNhbCBiaXQgaGVyZSBpcyB0aGUgYHN1cHBvcnRlZF9pbnRlcmZhY2VzYCBmaWVsZCB3aXRoaW4gdGhhdCBjb25maWcuIFRoYXQncyB3aGVyZSB0aGUgYWxsb3dlZCBpbnRlcmZhY2UgbW9kZXMgYXJlIHNwZWNpZmllZCwgYW5kIEknbSBwYXJ0aWN1bGFybHkgaW50ZXJlc3RlZCBpbiBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAuIElmIHRoYXQgYml0IGlzIHNldCBpbiBgc3VwcG9ydGVkX2ludGVyZmFjZXNgLCB0aGVuIHRoZW9yZXRpY2FsbHksIGBQU0dNSUlgIGlzIGEgdmFsaWQgb3B0aW9uIGZvciB0aGlzIHBhcnRpY3VsYXIgUEhZIGxpbmsuXG5cbk5vdywgdGhlIGNvZGUgbm90ZXMgdGhhdCB0aGUgYGRzYV9sb29wYCBmdW5jdGlvbiBtZXNzZXMgd2l0aCB0aGVzZSBgc3VwcG9ydGVkX2ludGVyZmFjZXNgLiBTcGVjaWZpY2FsbHksIGl0IGFwcGVhcnMgdG8gc2V0IGFsbCBvZiB0aGVtLiBUaGlzIG1lYW5zIGBkc2FfbG9vcGAgKmNvdWxkKiBwb3RlbnRpYWxseSBlbmFibGUgdGhlIHVzZSBvZiBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAuIFRoYXQgcmFpc2VzIGEga2V5IHF1ZXN0aW9uIGluIG15IG1pbmQ6IEhvdyBkb2VzIGBkc2FfbG9vcGAgYWN0dWFsbHkgc2V0IHRoZSBpbnRlcmZhY2UgbW9kZT8gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgaW1wbGVtZW50YXRpb24gb2YgYGRzYV9sb29wYCBpdHNlbGYgdG8gdW5kZXJzdGFuZCBob3cgaXQgbWFuaXB1bGF0ZXMgdGhlIGBzdXBwb3J0ZWRfaW50ZXJmYWNlc2AgYW5kIGRldGVybWluZSBpZiBpdCdzIGNvbnRyaWJ1dGluZyB0bywgb3IgcHJldmVudGluZywgdGhlIHVzZSBvZiBgUFNHTUlJYCBpbiB0aGlzIGNvbnRleHQuIFRpbWUgdG8gdHJhY2UgdGhyb3VnaCB0aGF0IGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCBpdCdzIHJlYWxseSBkb2luZyB1bmRlciB0aGUgaG9vZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE2MTAsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzk6MzYuODQ5NDM0Mzk5WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODIwNTYyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQSFlfSU5URVJGQUNFX01PREVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MzI2PXN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzYSwgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjgte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyOTpcXHRiaXRtYXBfZmlsbChjb25maWctXFx1MDAzZXN1cHBvcnRlZF9pbnRlcmZhY2VzLCBQSFlfSU5URVJGQUNFX01PREVfTUFYKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMzA6XFx0X19jbGVhcl9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX05BLCBjb25maWctXFx1MDAzZXN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMzEtXFx0Y29uZmlnLVxcdTAwM2VtYWNfY2FwYWJpbGl0aWVzID0gfjA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM5OjM2Ljg5NzY0MzQyOFoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDU3OTg5OTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdW5kZXJzdGFuZGluZywgdGhpbmtpbmcgdGhyb3VnaCB0aGlzIGNvZGU6XG5cbioqVW5kZXJzdGFuZGluZyBEU0EgQ2FwYWJpbGl0eSBTZXR1cCBpbiBgZHNhX2xvb3BgKipcblxuQWxyaWdodCwgc28gdGhlIHRleHQgaXMgc2F5aW5nIHRoaXMgY29kZSBwcmltYXJpbHkgZGVmaW5lcyB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBkZXZpY2Ug4oCTIHRoYXQncyB0aGUgc2V0dXAgc3RhZ2UuIEJ1dCB0aGUgKmFjdHVhbCogb3BlcmF0aW5nIG1vZGUsIHRoZSBpbnRlcmZhY2Ugc3BlY2lmaWNzLCB0aGF0J3MgZGV0ZXJtaW5lZCBieSB0aGUgRFNBIGNvcmUgaXRzZWxmLiBUaGUgc3lzdGVtIHVzZXMgZWl0aGVyIHRoZSBkZXZpY2UgdHJlZSBvciBmaXhlZC1saW5rIHByb3BlcnRpZXMgdG8gZmlndXJlIG91dCBob3cgdG8gb3BlcmF0ZS5cblxuU2luY2UgYGRzYV9sb29wYCBpcyBhIG1vY2sgZHJpdmVyLCBpdCdzIG5vdCBnb2luZyB0byBiZSB1c2luZyB0aGUgZGV2aWNlIHRyZWUsIHdoaWNoIGlzIGV4cGVjdGVkLiBUaGF0J3MgYSBrZXkgcG9pbnQuIFNvLCB0aGUgcXVlc3Rpb24gbm93IGlzLCBob3cgZG9lcyB0aGlzIG1vY2sgZHJpdmVyLCBgZHNhX2xvb3BgLCBvYnRhaW4gaXRzIGZpeGVkLWxpbmsgcHJvcGVydGllcyBpZiBpdCdzIG5vdCB1c2luZyB0aGUgZGV2aWNlIHRyZWU/IEkgbmVlZCB0byBkaWcgaW50byB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBvZiBgZHNhX2xvb3BgIGFuZCBmaW5kIHRoZSBhbnN3ZXIuIExldCdzIHNlZSBob3cgdGhhdCB3b3Jrcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIyMjEsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozOTo0MC45NTU2MzU5NDVaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NjI0ODU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRzYV9sb29wXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1OnN0cnVjdCBkc2FfbG9vcF92bGFuIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNi1cXHR1MTYgbWVtYmVycztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI5LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMwOnN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxLVxcdGNoYXIgbmFtZVtFVEhfR1NUUklOR19MRU5dO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzQtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzU6ZW51bSBkc2FfbG9vcF9taWJfY291bnRlcnMge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM2LVxcdERTQV9MT09QX1BIWV9SRUFEX09LLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM6c3RydWN0IGRzYV9sb29wX3BvcnQge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ0OlxcdHN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkgbWliW19fRFNBX0xPT1BfQ05UX01BWF07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDUtXFx0dTE2IHB2aWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0OTpzdHJ1Y3QgZHNhX2xvb3BfcHJpdiB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTAtXFx0c3RydWN0IG1paV9idXNcXHQqYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxLVxcdHVuc2lnbmVkIGludFxcdHBvcnRfYmFzZTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MjpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiB2bGFuc1tWTEFOX05fVklEXTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01My1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjU0OlxcdHN0cnVjdCBkc2FfbG9vcF9wb3J0IHBvcnRzW0RTQV9NQVhfUE9SVFNdO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTU1LX07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNTYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTc6c3RydWN0IGRzYV9sb29wX3BkYXRhIHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01OC1cXHQvKiBNdXN0IGJlIGZpcnN0LCBzdWNoIHRoYXQgZHNhX3JlZ2lzdGVyX3N3aXRjaCgpIGNhbiBhY2Nlc3MgdGhpc1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNjYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Njc6c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9taWJfZW50cnkgZHNhX2xvb3BfbWlic1tdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTY4LVxcdFtEU0FfTE9PUF9QSFlfUkVBRF9PS11cXHQ9IHsgXFxcInBoeV9yZWFkX29rXFxcIiwgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTc1PXN0YXRpYyBzdHJ1Y3QgbWRpb19kZXZpY2UgKnN3aXRjaF9tZGlvZGV2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTc2LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjc3OmVudW0gZHNhX2xvb3BfZGV2bGlua19yZXNvdXJjZV9pZCB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNzgtXFx0RFNBX0xPT1BfREVWTElOS19QQVJBTV9JRF9OT05FLCAgLyogREVWTElOS19SRVNPVVJDRV9JRF9QQVJFTlRfVE9QICovXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy04MS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4MjpzdGF0aWMgdTY0IGRzYV9sb29wX2RldmxpbmtfdnR1X2dldCh2b2lkICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTgzLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo4NDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg1LVxcdHVuc2lnbmVkIGludCBpLCBjb3VudCA9IDA7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6ODY6XFx0c3RydWN0IGRzYV9sb29wX3ZsYW4gKnZsO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTg3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6OTc6c3RhdGljIGludCBkc2FfbG9vcF9zZXR1cF9kZXZsaW5rX3Jlc291cmNlcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtOTgte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTk5LVxcdHN0cnVjdCBkZXZsaW5rX3Jlc291cmNlX3NpemVfcGFyYW1zIHNpemVfcGFyYW1zO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEwMDpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMDEtXFx0aW50IGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTExNS1cXHRcXHRcXHRcXHRcXHQgICAgICBEU0FfTE9PUF9ERVZMSU5LX1BBUkFNX0lEX1ZUVSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxMTY6XFx0XFx0XFx0XFx0XFx0ICAgICAgZHNhX2xvb3BfZGV2bGlua192dHVfZ2V0LCBwcyk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTE3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEyNTpzdGF0aWMgZW51bSBkc2FfdGFnX3Byb3RvY29sIGRzYV9sb29wX2dldF9wcm90b2NvbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTI2LVxcdFxcdFxcdFxcdFxcdFxcdCAgIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTMzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEzNDpzdGF0aWMgaW50IGRzYV9sb29wX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzUte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjEzNjpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHMgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzctXFx0dW5zaWduZWQgaW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xMzktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGRzLVxcdTAwM2VudW1fcG9ydHM7IGkrKylcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDA6XFx0XFx0bWVtY3B5KHBzLVxcdTAwM2Vwb3J0c1tpXS5taWIsIGRzYV9sb29wX21pYnMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTQxOlxcdFxcdCAgICAgICBzaXplb2YoZHNhX2xvb3BfbWlicykpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0NC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDU6XFx0cmV0dXJuIGRzYV9sb29wX3NldHVwX2RldmxpbmtfcmVzb3VyY2VzKGRzKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNDYtfVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0Ny1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNDg6c3RhdGljIHZvaWQgZHNhX2xvb3BfdGVhcmRvd24oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE0OS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNTItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MTUzOnN0YXRpYyBpbnQgZHNhX2xvb3BfZ2V0X3NzZXRfY291bnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IHNzZXQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTU0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE2MC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNjE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZ2V0X3N0cmluZ3Moc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0xNjItXFx0XFx0XFx0XFx0IHUzMiBzdHJpbmdzZXQsIHVpbnQ4X3QgKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTYzLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNjQ6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTY1LVxcdHVuc2lnbmVkIGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTczLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE3NDpzdGF0aWMgdm9pZCBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTE3NS1cXHRcXHRcXHRcXHQgICAgICAgdWludDY0X3QgKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc2LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxNzc6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTc4LVxcdHVuc2lnbmVkIGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTgzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE4NDpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV9yZWFkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg1LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoxODY6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTg3LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMTk4LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjE5OTpzdGF0aWMgaW50IGRzYV9sb29wX3BoeV93cml0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIwMC1cXHRcXHRcXHQgICAgICBpbnQgcmVnbnVtLCB1MTYgdmFsdWUpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAxLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyMDI6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjAzLVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjE0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjIxNTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfYnJpZGdlX2pvaW4oc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMTYtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMjUtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjI2OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfYnJpZGdlX2xlYXZlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjI3LVxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZHNhX2JyaWRnZSBicmlkZ2UpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yMzItXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjMzOnN0YXRpYyB2b2lkIGRzYV9sb29wX3BvcnRfc3RwX3N0YXRlX3NldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzNC1cXHRcXHRcXHRcXHRcXHR1OCBzdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTIzOS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNDA6c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X3ZsYW5fZmlsdGVyaW5nKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjQxLVxcdFxcdFxcdFxcdFxcdGJvb2wgdmxhbl9maWx0ZXJpbmcsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yNDktXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MjUwOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1MS1cXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBzd2l0Y2hkZXZfb2JqX3BvcnRfdmxhbiAqdmxhbixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTI1NS1cXHRib29sIHB2aWQgPSB2bGFuLVxcdTAwM2VmbGFncyBcXHUwMDI2IEJSSURHRV9WTEFOX0lORk9fUFZJRDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyNTY6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU3LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI1ODpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjU5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjgyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI4MzpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfdmxhbl9kZWwoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODQtXFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3Qgc3dpdGNoZGV2X29ial9wb3J0X3ZsYW4gKnZsYW4pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0yODYtXFx0Ym9vbCB1bnRhZ2dlZCA9IHZsYW4tXFx1MDAzZWZsYWdzIFxcdTAwMjYgQlJJREdFX1ZMQU5fSU5GT19VTlRBR0dFRDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzoyODc6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg4LVxcdHUxNiBwdmlkID0gcHMtXFx1MDAzZXBvcnRzW3BvcnRdLnB2aWQ7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjg5LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcy1cXHUwMDNlYnVzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjI5MDpcXHRzdHJ1Y3QgZHNhX2xvb3BfdmxhbiAqdmw7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMjkxLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEwLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMxMTpzdGF0aWMgaW50IGRzYV9sb29wX3BvcnRfY2hhbmdlX210dShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMxMi1cXHRcXHRcXHRcXHQgICAgaW50IG5ld19tdHUpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzEzLXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMTQ6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMTUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjAtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzIxOnN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzIyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyNS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHNhLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjctXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMzMtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgZHNhX2xvb3BfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNTpcXHQuZ2V0X3RhZ19wcm90b2NvbFxcdD0gZHNhX2xvb3BfZ2V0X3Byb3RvY29sLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNjpcXHQuc2V0dXBcXHRcXHRcXHQ9IGRzYV9sb29wX3NldHVwLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzNzpcXHQudGVhcmRvd25cXHRcXHQ9IGRzYV9sb29wX3RlYXJkb3duLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzODpcXHQuZ2V0X3N0cmluZ3NcXHRcXHQ9IGRzYV9sb29wX2dldF9zdHJpbmdzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMzOTpcXHQuZ2V0X2V0aHRvb2xfc3RhdHNcXHQ9IGRzYV9sb29wX2dldF9ldGh0b29sX3N0YXRzLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MDpcXHQuZ2V0X3NzZXRfY291bnRcXHRcXHQ9IGRzYV9sb29wX2dldF9zc2V0X2NvdW50LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0MTpcXHQuZ2V0X2V0aHRvb2xfcGh5X3N0YXRzXFx0PSBkc2FfbG9vcF9nZXRfZXRodG9vbF9zdGF0cyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDI6XFx0LnBoeV9yZWFkXFx0XFx0PSBkc2FfbG9vcF9waHlfcmVhZCxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDM6XFx0LnBoeV93cml0ZVxcdFxcdD0gZHNhX2xvb3BfcGh5X3dyaXRlLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NDpcXHQucG9ydF9icmlkZ2Vfam9pblxcdD0gZHNhX2xvb3BfcG9ydF9icmlkZ2Vfam9pbixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDU6XFx0LnBvcnRfYnJpZGdlX2xlYXZlXFx0PSBkc2FfbG9vcF9wb3J0X2JyaWRnZV9sZWF2ZSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDY6XFx0LnBvcnRfc3RwX3N0YXRlX3NldFxcdD0gZHNhX2xvb3BfcG9ydF9zdHBfc3RhdGVfc2V0LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM0NzpcXHQucG9ydF92bGFuX2ZpbHRlcmluZ1xcdD0gZHNhX2xvb3BfcG9ydF92bGFuX2ZpbHRlcmluZyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNDg6XFx0LnBvcnRfdmxhbl9hZGRcXHRcXHQ9IGRzYV9sb29wX3BvcnRfdmxhbl9hZGQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzQ5OlxcdC5wb3J0X3ZsYW5fZGVsXFx0XFx0PSBkc2FfbG9vcF9wb3J0X3ZsYW5fZGVsLFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MDpcXHQucG9ydF9jaGFuZ2VfbXR1XFx0PSBkc2FfbG9vcF9wb3J0X2NoYW5nZV9tdHUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzUxOlxcdC5wb3J0X21heF9tdHVcXHRcXHQ9IGRzYV9sb29wX3BvcnRfbWF4X210dSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTI6XFx0LnBoeWxpbmtfZ2V0X2NhcHNcXHQ9IGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzUzLX07XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU0LVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1NTpzdGF0aWMgaW50IGRzYV9sb29wX2Rydl9wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU2LXtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozNTc6XFx0c3RydWN0IGRzYV9sb29wX3BkYXRhICpwZGF0YSA9IG1kaW9kZXYtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1ODpcXHRzdHJ1Y3QgZHNhX2xvb3BfcHJpdiAqcHM7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzU5LVxcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM4Mi1cXHRkcy1cXHUwMDNlZGV2ID0gXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozODM6XFx0ZHMtXFx1MDAzZW9wcyA9IFxcdTAwMjZkc2FfbG9vcF9kcml2ZXI7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzg0LVxcdGRzLVxcdTAwM2Vwcml2ID0gcHM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zOTYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6Mzk3OnN0YXRpYyB2b2lkIGRzYV9sb29wX2Rydl9yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTM5OC17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzk5LVxcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MDA6XFx0c3RydWN0IGRzYV9sb29wX3ByaXYgKnBzO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQwMS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQxMC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0MTE6c3RhdGljIHZvaWQgZHNhX2xvb3BfZHJ2X3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MTIte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDIyLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQyMzpzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIGRzYV9sb29wX2RydiA9IHtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjQtXFx0Lm1kaW9kcnYuZHJpdmVyXFx0PSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MjYtXFx0fSxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0Mjc6XFx0LnByb2JlXFx0PSBkc2FfbG9vcF9kcnZfcHJvYmUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI4OlxcdC5yZW1vdmVcXHQ9IGRzYV9sb29wX2Rydl9yZW1vdmUsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDI5OlxcdC5zaHV0ZG93biA9IGRzYV9sb29wX2Rydl9zaHV0ZG93bixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzAtfTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzEtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDMyOnN0YXRpYyBpbnQgZHNhX2xvb3BfYnVzX21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzMtXFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGRldmljZV9kcml2ZXIgKmRydilcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzQte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQzNTpcXHRyZXR1cm4gZHJ2ID09IFxcdTAwMjZkc2FfbG9vcF9kcnYubWRpb2Rydi5kcml2ZXI7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDM2LX1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00MzctXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDM4OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWRldnNfdW5yZWdpc3Rlcih2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00NDUtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ2OnN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ0Ny17XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDQ4OlxcdHN0YXRpYyBzdHJ1Y3QgZHNhX2xvb3BfcGRhdGEgZHNhX2xvb3BfcGRhdGEgPSB7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDQ5LVxcdFxcdC5jZCA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3MC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzE6XFx0c3dpdGNoX21kaW9kZXYtXFx1MDAzZWJ1c19tYXRjaCA9IGRzYV9sb29wX2J1c19tYXRjaDtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0NzI6XFx0c3dpdGNoX21kaW9kZXYtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhID0gXFx1MDAyNmRzYV9sb29wX3BkYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ3My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4MS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo0ODI6c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfaW5pdCh2b2lkKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4My17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00ODYtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDg3OlxcdHJldCA9IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2RldigpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTQ4OC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkzLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NDpcXHRyZXQgPSBtZGlvX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2ZHNhX2xvb3BfZHJ2KTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTUtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5NjpcXHRcXHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTctXFx0XFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwMi19XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTAzOm1vZHVsZV9pbml0KGRzYV9sb29wX2luaXQpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUwNC1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzo1MDU6c3RhdGljIHZvaWQgX19leGl0IGRzYV9sb29wX2V4aXQodm9pZClcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDYte1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwNzpcXHRtZGlvX2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZkc2FfbG9vcF9kcnYpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjUwODpcXHRkc2FfbG9vcF9waHlkZXZzX3VucmVnaXN0ZXIoKTtcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy01MDktXFx0bWRpb19kZXZpY2VfcmVtb3ZlKHN3aXRjaF9tZGlvZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMS19XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NTEyOm1vZHVsZV9leGl0KGRzYV9sb29wX2V4aXQpO1xcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTUxMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6Mzk6NDEuMDAyMjY1NTIzWiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MzUzNjIyOTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqVW5kZXJzdGFuZGluZyB0aGUgRFNBIExvb3AgU3RydWN0dXJlKipcblxuQWxyaWdodCwgc28gSSdtIGZvY3VzaW5nIG9uIHRoZSBEU0EgbG9vcCBjcmVhdGlvbiwgc3BlY2lmaWNhbGx5IHRoZSBpbnN0YW50aWF0aW9uIG9mIGEgc3dpdGNoIHdpdGggZml4ZWQgcG9ydHMuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHRoYXQgdGhpcyBzZXR1cCBpcyByaWdpZGx5IGRlZmluZWQ6IHRoZSBwb3J0cyBhcmUgcHJlY29uZmlndXJlZC4gVGhpcywgb2YgY291cnNlLCBpc24ndCBpbmhlcmVudGx5IGEgYmFkIHRoaW5nLCBpdCBqdXN0IHRlbGxzIG1lIHRoZSBzeXN0ZW0ncyBkZXNpZ24gaXMgaGlnaGx5IHN0cnVjdHVyZWQuXG5cbkkgaW1tZWRpYXRlbHkga2V5IGluIG9uIGBkc2FfbG9vcF9wZGF0YWAuICpUaGF0KiBpcyB3aGVyZSB0aGUgc3BlY2lmaWNzIGZvciB0aGUgaW50ZXJmYWNlIG1vZGUgb2YgdGhlc2UgZml4ZWQgcG9ydHMgcmVzaWRlLiBOb3cgSSBuZWVkIHRvIHNlZSAqaG93KiB0aGlzIGBkc2FfbG9vcF9wZGF0YWAgc3RydWN0dXJlIGlzIGRlZmluZWQgYW5kIHVzZWQuIEknbSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zIGZvciBkeW5hbWljIGNvbmZpZ3VyYXRpb24gYXQgdGhpcyBwb2ludCwgaG93IG11Y2ggcnVudGltZSBmbGV4aWJpbGl0eSBkbyB3ZSBoYXZlIHdpdGggdGhpcy4gQXJlIHRoZSBpbnRlcmZhY2UgbW9kZXMgc2V0IGluIHN0b25lIGF0IGNvbXBpbGUgdGltZSwgb3IgY2FuIHdlIGluZmx1ZW5jZSB0aGVtLCBldmVuIGlmIGl0J3MgdmlhIHNvbWV0aGluZyBsaWtlIGRldmljZSB0cmVlIG92ZXJyaWRlcyBvciBhIHBsYXRmb3JtLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIHBoYXNlPyBUaGUgZGV2aWwsIGFzIGFsd2F5cywgaXMgaW4gdGhlIGRldGFpbHMsIHNvIEkgbmVlZCB0byBkaWcgaW50byB0aGUgYHBkYXRhYCB0byBzZWUgaXRzIGZ1bGwgZGVmaW5pdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg5NjMsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozOTo0NC44Mzc2MzAzMjhaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIzMTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDQ2LFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDQ2OlxcdHN0YXRpYyBpbnQgX19pbml0IGRzYV9sb29wX2NyZWF0ZV9zd2l0Y2hfbWRpb2Rldih2b2lkKVxcbiA0NDc6XFx0e1xcbiA0NDg6XFx0XFx0c3RhdGljIHN0cnVjdCBkc2FfbG9vcF9wZGF0YSBkc2FfbG9vcF9wZGF0YSA9IHtcXG4gNDQ5OlxcdFxcdFxcdC5jZCA9IHtcXG4gNDUwOlxcdFxcdFxcdFxcdC5wb3J0X25hbWVzWzBdID0gXFxcImxhbjFcXFwiLFxcbiA0NTE6XFx0XFx0XFx0XFx0LnBvcnRfbmFtZXNbMV0gPSBcXFwibGFuMlxcXCIsXFxuIDQ1MjpcXHRcXHRcXHRcXHQucG9ydF9uYW1lc1syXSA9IFxcXCJsYW4zXFxcIixcXG4gNDUzOlxcdFxcdFxcdFxcdC5wb3J0X25hbWVzWzNdID0gXFxcImxhbjRcXFwiLFxcbiA0NTQ6XFx0XFx0XFx0XFx0LnBvcnRfbmFtZXNbRFNBX0xPT1BfQ1BVX1BPUlRdID0gXFxcImNwdVxcXCIsXFxuIDQ1NTpcXHRcXHRcXHR9LFxcbiA0NTY6XFx0XFx0XFx0Lm5hbWUgPSBcXFwiRFNBIG1vY2t1cCBkcml2ZXJcXFwiLFxcbiA0NTc6XFx0XFx0XFx0LmVuYWJsZWRfcG9ydHMgPSAweDFmLFxcbiA0NTg6XFx0XFx0XFx0Lm5ldGRldiA9IFxcXCJldGgwXFxcIixcXG4gNDU5OlxcdFxcdH07XFxuIDQ2MDpcXHRcXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xcbiA0NjE6XFx0XFx0aW50IHJldCA9IC1FTk9ERVY7XFxuIDQ2MjpcXHRcXG4gNDYzOlxcdFxcdGJ1cyA9IG1kaW9fZmluZF9idXMoXFxcImZpeGVkLTBcXFwiKTtcXG4gNDY0OlxcdFxcdGlmIChXQVJOX09OKCFidXMpKVxcbiA0NjU6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gNDY2OlxcdFxcbiA0Njc6XFx0XFx0c3dpdGNoX21kaW9kZXYgPSBtZGlvX2RldmljZV9jcmVhdGUoYnVzLCAzMSk7XFxuIDQ2ODpcXHRcXHRpZiAoSVNfRVJSKHN3aXRjaF9tZGlvZGV2KSlcXG4gNDY5OlxcdFxcdFxcdGdvdG8gb3V0O1xcbiA0NzA6XFx0XFxuIDQ3MTpcXHRcXHRzd2l0Y2hfbWRpb2Rldi1cXHUwMDNlYnVzX21hdGNoID0gZHNhX2xvb3BfYnVzX21hdGNoO1xcbiA0NzI6XFx0XFx0c3dpdGNoX21kaW9kZXYtXFx1MDAzZWRldi5wbGF0Zm9ybV9kYXRhID0gXFx1MDAyNmRzYV9sb29wX3BkYXRhO1xcbiA0NzM6XFx0XFxuIDQ3NDpcXHRcXHRyZXQgPSBtZGlvX2RldmljZV9yZWdpc3Rlcihzd2l0Y2hfbWRpb2Rldik7XFxuIDQ3NTpcXHRcXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozOTo0NC44Mzc3MTQwNDhaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTk1NDI1MzI1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBhIFBIWSBGcmFtZXdvcmsgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIGl0IGRvZXNuJ3QgZXhwbGljaXRseSBzZXQgdGhlIGludGVyZmFjZSBtb2RlLCBzbyBpdCdzIHByb2JhYmx5IGRlZmF1bHRpbmcgdG8gc29tZXRoaW5nIGxpa2UgYFBIWV9JTlRFUkZBQ0VfTU9ERV9OQWAgb3IgYFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTGAuIFRoZSBxdWVzdGlvbiBpcywgaG93IGRvIHdlICphY3R1YWxseSogZ2V0IGBwaHlsaW5rX3N0YXJ0YCB0byBleGVjdXRlIHdpdGggYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgPyBTeXprYWxsZXIncyBub3QgZGlyZWN0bHkgaW5qZWN0aW5nIGRldmljZSB0cmVlcywgc28gdGhhdCdzIG91dCwgYW5kIGl0IHJlbGllcyBvbiBuZXRsaW5rIGZvciB2aXJ0dWFsIGludGVyZmFjZXMuIEkgaGFkIGEgdGhvdWdodCBhYm91dCBjcmVhdGluZyBhIHZpcnR1YWwgaW50ZXJmYWNlIHdpdGggcGh5bGluayBhbmQgc2V0dGluZyB0aGUgbW9kZSwgYnV0IHRoZW4gcmVtZW1iZXJlZCBgbmV0ZGV2c2ltYCBkb2Vzbid0IGV2ZW4gdXNlIHBoeWxpbmsuIFdoYXQgYWJvdXQgYGRzYV9sb29wYD8gQ291bGQgSSBtYW5pcHVsYXRlIGl0cyBpbnRlcmZhY2UgbW9kZSB2aWEgZXRodG9vbCBvciBuZXRsaW5rPyBObywgdXN1YWxseSB0aGF0J3MgZml4ZWQgYnkgdGhlIGhhcmR3YXJlIG9yIGRldmljZSB0cmVlLlxuXG5CdXQsIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBkZWVwIGluIGBwaHlsaW5rLmNgLCB3aGljaCBtYWtlcyBpdCBpbnRlcmVzdGluZyBldmVuIGlmIHN5emthbGxlciBjYW4ndCAqZWFzaWx5KiBoaXQgdGhlIHNwZWNpZmljIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBwYXRoLiBIb3dldmVyLCB0aGVyZSdzIHRoYXQgZ3VpZGVsaW5lIGFib3V0IG5vdCBmdXp6aW5nIGlmIGl0J3MgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGF0J3MgdGhlIGtleSBxdWVzdGlvbi4gSXMgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGFjdHVhbGx5IHJlYWNoYWJsZSBpbiBRRU1VP1xuXG5JZiBubyBkcml2ZXIgaW4gUUVNVSAqdXNlcyogYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLCB0aGVuIGl0J3MgYSBkZWFkIGVuZC4gTGV0J3MgbG9vayBmb3IgYSBkcml2ZXIuIFJpZ2h0LCBJIHJlbWVtYmVyIHNlZWluZyB0aGF0IGBxY2E4MDd4LmNgIGV4cGxpY2l0bHkgdXNlcyBpdC4gR29vZC4gYHFjYTgwN3guY2AgaXMgYSBQSFkgZHJpdmVyLCB0aG91Z2guIENhbiB3ZSBsb2FkIHRoYXQgaW4gUUVNVT8gWWVzLCB3ZSBjYW4gbG9hZCBQSFkgZHJpdmVycyBhbmQgYmluZCB0aGVtIHRvIHZpcnR1YWwgTURJTyBidXNlcy5cblxuQnV0IGhlcmUncyB0aGUgY2F0Y2g6IFRvIHRyaWdnZXIgYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlYCB3aXRoIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCwgd2UgbmVlZCBhIE1BQyBkcml2ZXIgdGhhdCAqdXNlcyogcGh5bGluayAqYW5kKiBjb25uZWN0cyB0byB0aGlzIFBIWSwgKmFuZCogdGhlIGludGVyZmFjZSBtb2RlICptdXN0KiBiZSBzZXQgdG8gYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLiBUaGF0IHVzdWFsbHkgZ2V0cyBzZXQgYnkgdGhlIE1BQyBkcml2ZXIgYmFzZWQgb24gYSBkZXZpY2UgdHJlZS4gV2l0aG91dCB0aGF0IGRldmljZSB0cmVlIHNldHRpbmcsIGl0J3Mgbm90IGdvaW5nIHRvIGhhcHBlbi5cblxuSG1tLi4uIHdhaXQuLi4gY291bGQgYHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0YCBvciBzb21ldGhpbmcgZWxzZSAqdHJpZ2dlciogaXQ/IFRoYXQncyB0aGUgbmV4dCBhdmVudWUgdG8gZXhwbG9yZS4gTGV0J3MgY2hlY2sgaWYgYHFjYTgwN3hgIGl0c2VsZiBzZXRzIHRoZSBpbnRlcmZhY2UgbW9kZSwgc29tZWhvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk3NzEsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1ODcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjozOTo1NC43OTE5Njk4NTZaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg1MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDU0NSxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDU0NTpcXHRcXG4gNTQ2OlxcdFxcdHByaXYtXFx1MDAzZXBhY2thZ2VfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9OQTtcXG4gNTQ3OlxcdFxcdGlmICghb2ZfcHJvcGVydHlfcmVhZF9zdHJpbmcobnAsIFxcXCJxY29tLHBhY2thZ2UtbW9kZVxcXCIsXFxuIDU0ODpcXHRcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZwYWNrYWdlX21vZGVfbmFtZSkpIHtcXG4gNTQ5OlxcdFxcdFxcdGlmICghc3RyY2FzZWNtcChwYWNrYWdlX21vZGVfbmFtZSxcXG4gNTUwOlxcdFxcdFxcdFxcdFxcdHBoeV9tb2RlcyhQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJKSkpXFxuIDU1MTpcXHRcXHRcXHRcXHRwcml2LVxcdTAwM2VwYWNrYWdlX21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJO1xcbiA1NTI6XFx0XFx0XFx0ZWxzZSBpZiAoIXN0cmNhc2VjbXAocGFja2FnZV9tb2RlX25hbWUsXFxuIDU1MzpcXHRcXHRcXHRcXHRcXHQgICAgIHBoeV9tb2RlcyhQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJKSkpXFxuIDU1NDpcXHRcXHRcXHRcXHRwcml2LVxcdTAwM2VwYWNrYWdlX21vZGUgPSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJO1xcbiA1NTU6XFx0XFx0XFx0ZWxzZVxcbiA1NTY6XFx0XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDU1NzpcXHRcXHR9XFxuIDU1ODpcXHRcXG4gNTU5OlxcdFxcdHJldHVybiAwO1xcbiA1NjA6XFx0fVxcbiA1NjE6XFx0XFxuIDU2MjpcXHRzdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfY29uZmlnX2luaXRfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbiA1NjM6XFx0e1xcbiA1NjQ6XFx0XFx0c3RydWN0IHFjYTgwN3hfc2hhcmVkX3ByaXYgKnByaXYgPSBwaHlfcGFja2FnZV9nZXRfcHJpdihwaHlkZXYpO1xcbiA1NjU6XFx0XFx0aW50IHZhbCwgcmV0O1xcbiA1NjY6XFx0XFxuIDU2NzpcXHRcXHQvKiBNYWtlIHN1cmUgUEhZIGZvbGxvdyBQSFkgcGFja2FnZSBtb2RlIGlmIGVuZm9yY2VkICovXFxuIDU2ODpcXHRcXHRpZiAocHJpdi1cXHUwMDNlcGFja2FnZV9tb2RlICE9IFBIWV9JTlRFUkZBQ0VfTU9ERV9OQSBcXHUwMDI2XFx1MDAyNlxcbiA1Njk6XFx0XFx0ICAgIHBoeWRldi1cXHUwMDNlaW50ZXJmYWNlICE9IHByaXYtXFx1MDAzZXBhY2thZ2VfbW9kZSlcXG4gNTcwOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA1NzE6XFx0XFxuIDU3MjpcXHRcXHRwaHlfbG9ja19tZGlvX2J1cyhwaHlkZXYpO1xcbiA1NzM6XFx0XFxuIDU3NDpcXHRcXHQvKiBTZXQgY29ycmVjdCBQSFkgcGFja2FnZSBtb2RlICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjM5OjU0Ljc5MjA3MTM1NloiLCJTZXEiOjQ1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MjIxNjYyNzkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEludmVzdGlnYXRpb24gaW50byBTZXR0aW5nIFBIWSBJbnRlcmZhY2UgTW9kZSBmb3IgcWNhODA3eCB3aXRoIHN5emthbGxlcioqXG5cbk9rYXksIHNvIEknbSB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdG8gbWFuaXB1bGF0ZSB0aGUgYHFjYTgwN3hgIGRyaXZlcidzIGBxY29tLHBhY2thZ2UtbW9kZWAgc2V0dGluZyB1c2luZyBzeXprYWxsZXIuIFRoZSBkcml2ZXIgY2hlY2tzIHRoZSBkZXZpY2UgdHJlZSwgYW5kIGlmIGl0J3Mgbm90IHNldCB0aGVyZSwgaXQgZG9lc24ndCBzZXQgaXQuIFRoYXQncyBhIHByb2JsZW0uIFNvLCBhcmUgdGhlcmUgYW55IG90aGVyIHdheXMgdG8gZm9yY2UgYSBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgY29uZmlndXJhdGlvbj9cblxuTXkgZmlyc3QgdGhvdWdodCB3YXMsIG1heWJlIHN5emthbGxlciBjb3VsZCBsZXZlcmFnZSBgSUZMQV9JTkZPX0tJTkRgIG9uIHNvbWUgc29ydCBvZiB2aXJ0dWFsIGRldmljZSB0byBzcGVjaWZ5IHRoZSBQSFkgaW50ZXJmYWNlIG1vZGUuIEJ1dCwgbm8sIHRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZSBhIHN1aXRhYmxlIHZpcnR1YWwgZGV2aWNlIHRvIGRvIHRoYXQgd2l0aC4gV2hhdCBhYm91dCBgdHVuYCwgYHZldGhgLCBvciBgbmV0ZGV2c2ltYD8gTm9wZSwgdGhvc2UgZG9uJ3QgdXNlIHBoeWxpbmssIHNvIHRoZXkncmUgbm90IHJlbGV2YW50LiBgZHNhX2xvb3BgIHVzZXMgcGh5bGluaywgYnV0IHRoZSBpbnRlcmZhY2UgbW9kZSBpcyBmaXhlZC4gVWdoLlxuXG5DYW4gSSBldmVuICpyZWFjaCogYHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlYCB3aXRoIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpbiBRRU1VPyBQcm9iYWJseSBub3QuIEl0IGxvb2tzIGxpa2UgdGhhdCBzZXR0aW5nIGlzIHRpZWQgdG8gdmVyeSBzcGVjaWZpYyBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9ucyBvciBoYXJkd2FyZSB0aGF0IGV4cGxpY2l0bHkgdXNlcyBQU0dNSUkuXG5cbkFscmlnaHQsIG1heWJlIEkgY2FuIG1hbmlwdWxhdGUgaXQgdGhyb3VnaCBgU0lPQ1NNSUlSRUdgIG9yIHJlbGF0ZWQgaW9jdGxzPyBObywgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIGlzIGp1c3QgYW4gaW50ZXJuYWwgZW51bSB2YWx1ZS4gSXQncyBzZXQgZHVyaW5nIGRldmljZSBwcm9iZSBiYXNlZCBvbiBkZXZpY2UgdHJlZSwgQUNQSSwgb3IgYm9hcmQgZmlsZXMuIFNpbmNlIHN5emthbGxlciBsaWtlbHkgY2FuJ3QgaW5qZWN0IGRldmljZSB0cmVlIG5vZGVzIGRpcmVjdGx5LCBJJ20gb3V0IG9mIGx1Y2sgdGhlcmUuXG5cbkhhbmcgb24uLi4gY291bGQgc3l6a2FsbGVyLCBpbiAqc29tZSogc2V0dXBzLCBpbmplY3QgZGV2aWNlIHRyZWUgbm9kZXMsIHBlcmhhcHMgdXNpbmcgYHN5el9tb3VudF9pbWFnZWAgd2l0aCBhIGN1c3RvbSBEVEI/IE5vLCBEVEJzIGFyZSBwYXNzZWQgYXQgYm9vdCwgc28gdGhhdCdzIGEgZGVhZCBlbmQuXG5cbkkga25vdyBzeXprYWxsZXIgaGFzIGBzeXpfZ2VuZXRsaW5rX2dldF9mYW1pbHlgIGFuZCBvdGhlciByZWxhdGVkIHBzZXVkby1zeXNjYWxscywgYnV0IG5vdGhpbmcgc2VlbXMgdG8gZGlyZWN0bHkgYWRkcmVzcyBEVEIgaW5qZWN0aW9uLiBIb3dldmVyLCB3YWl0LCB0aGVyZSdzIGBzeXpfaW5pdF9uZXRfc29ja2V0YCBhbmQgYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseWAuLi4gSXMgdGhlcmUgYSBuZXRsaW5rIGF0dHJpYnV0ZSwgbWF5YmUsIHRoYXQgSSBjb3VsZCB1c2UgdG8gc2V0IHRoZSBQSFkgaW50ZXJmYWNlIG1vZGU/IEkgbmVlZCB0byBjaGVjayBgcnRubF9saW5rX29wc2AgdG8gc2VlIHdoYXQncyBhdmFpbGFibGUuIFRoaXMgaXMgd2hlcmUgdGhlIHNvbHV0aW9uIGlzIHByb2JhYmx5IGhpZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzE0NDYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMjo0MDowNC4wMTM3Mzc3NjhaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MTI4MDU5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQSFlfSU5URVJGQUNFX01PREVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2NvcmUvcnRuZXRsaW5rLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjQwOjA0LjA2MDg3NjM4N1oiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODU4MzU5OTczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyaXphdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbnZlc3RpZ2F0aW5nIE5ldGxpbmsgQXR0cmlidXRlcyBmb3IgUEhZIEludGVyZmFjZSBNb2RlKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHdlJ3JlIHJlcHJlc2VudGluZyBhbmQgbWFuaXB1bGF0aW5nIFBIWSBpbnRlcmZhY2UgbW9kZXMgd2l0aGluIHRoZSBuZXRsaW5rIGZyYW1ld29yay4gTXkgaW1tZWRpYXRlIHRhc2sgaXMgdG8gY29uZmlybSBpZiB3ZSd2ZSBkZWZpbmVkIGEgc3BlY2lmaWMgbmV0bGluayBhdHRyaWJ1dGUgZGVkaWNhdGVkIHRvIGhhbmRsaW5nIHRoaXMgYXNwZWN0IG9mIHRoZSBQSFkuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYW4gYXR0cmlidXRlIGV4aXN0cywgb3IgaWYgdGhlIHJlbGV2YW50IGluZm9ybWF0aW9uIGlzIGJlaW5nIGVuY29kZWQgd2l0aGluIGEgYnJvYWRlciwgbW9yZSBnZW5lcmljIGF0dHJpYnV0ZSBzdHJ1Y3R1cmUuIElmIGEgZGVkaWNhdGVkIGF0dHJpYnV0ZSAqZG9lcyogZXhpc3QsIEknbGwgbmVlZCB0byBleGFtaW5lIGl0cyBzdHJ1Y3R1cmUgYW5kIGFzc29jaWF0ZWQgZmxhZ3MuIElmIG5vdCwgSSdsbCBoYXZlIHRvIGludmVzdGlnYXRlIGhvdyB0aGUgbW9kZSBpbmZvcm1hdGlvbiBpcyBjdXJyZW50bHkgYmVpbmcgcGFzc2Vk4oCUbGlrZWx5LCBpdCdzIGVtYmVkZGVkIHdpdGhpbiBhbm90aGVyIGF0dHJpYnV0ZSwgb3IgcGVyaGFwcyByZXF1aXJlcyBzb21lIGN1c3RvbSBoYW5kbGluZyB0aGF0J3Mgbm90IGltbWVkaWF0ZWx5IGFwcGFyZW50LiBMZXQgbWUgc3RhcnQgZGlnZ2luZyB0aHJvdWdoIHRoZSByZWxldmFudCBoZWFkZXJzIGFuZCBleGlzdGluZyBjb2Rl4oCmIHRoZSBgbmw4MDIxMWAgZGVmaW5pdGlvbnMgYXJlIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50LiBJIHN1c3BlY3QgSSBtaWdodCBhbHNvIG5lZWQgdG8gZXhhbWluZSB0aGUgZGV2aWNlIGRyaXZlcnMnIGFuZCByZWxldmFudCBzdGFjaydzIG5ldGxpbmsgaW50ZXJmYWNlcyB0b28uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyNDU5LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6NDA6MDcuOTE5MjM4NTVaIiwiU2VxIjo0OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2OTM1NzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JTlRFUkZBQ0VfTU9ERVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9jb3JlL29mX25ldC5jLTI0LSAqIGludGVyZmFjZSBhbmQgMCByZXR1cm5lZC4gSW4gY2FzZSBvZiBlcnJvciBpbnRlcmZhY2UgaXMgc2V0IHRvXFxubmV0L2NvcmUvb2ZfbmV0LmM6MjU6ICogUEhZX0lOVEVSRkFDRV9NT0RFX05BIGFuZCBhbiBlcnJubyBpcyByZXR1cm5lZCwgZS5nLiAtRU5PREVWLlxcbm5ldC9jb3JlL29mX25ldC5jLTI2LSAqL1xcbm5ldC9jb3JlL29mX25ldC5jPTI3PWludCBvZl9nZXRfcGh5X21vZGUoc3RydWN0IGRldmljZV9ub2RlICpucCwgcGh5X2ludGVyZmFjZV90ICppbnRlcmZhY2UpXFxuLS1cXG5uZXQvY29yZS9vZl9uZXQuYy0zMS1cXG5uZXQvY29yZS9vZl9uZXQuYzozMjpcXHQqaW50ZXJmYWNlID0gUEhZX0lOVEVSRkFDRV9NT0RFX05BO1xcbm5ldC9jb3JlL29mX25ldC5jLTMzLVxcbi0tXFxubmV0L2NvcmUvb2ZfbmV0LmMtMzktXFxubmV0L2NvcmUvb2ZfbmV0LmM6NDA6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIFBIWV9JTlRFUkZBQ0VfTU9ERV9NQVg7IGkrKylcXG5uZXQvY29yZS9vZl9uZXQuYy00MS1cXHRcXHRpZiAoIXN0cmNhc2VjbXAocG0sIHBoeV9tb2RlcyhpKSkpIHtcXG4tLVxcbm5ldC9kc2EvcG9ydC5jPTE2MTc9aW50IGRzYV9wb3J0X3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBkc2FfcG9ydCAqZHApXFxuLS1cXG5uZXQvZHNhL3BvcnQuYy0xNjI2LVxcdGlmIChlcnIpXFxubmV0L2RzYS9wb3J0LmM6MTYyNzpcXHRcXHRtb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX05BO1xcbm5ldC9kc2EvcG9ydC5jLTE2MjgtXFxuLS1cXG5uZXQvZHNhL3BvcnQuYy0xNjMyLVxcdFxcdC8qIEZvciBsZWdhY3kgZHJpdmVycyAqL1xcbm5ldC9kc2EvcG9ydC5jOjE2MzM6XFx0XFx0aWYgKG1vZGUgIT0gUEhZX0lOVEVSRkFDRV9NT0RFX05BKSB7XFxubmV0L2RzYS9wb3J0LmMtMTYzNC1cXHRcXHRcXHRfX3NldF9iaXQobW9kZSwgZHAtXFx1MDAzZXBsX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxubmV0L2RzYS9wb3J0LmMtMTYzNS1cXHRcXHR9IGVsc2Uge1xcbm5ldC9kc2EvcG9ydC5jOjE2MzY6XFx0XFx0XFx0X19zZXRfYml0KFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTCxcXG5uZXQvZHNhL3BvcnQuYy0xNjM3LVxcdFxcdFxcdFxcdCAgZHAtXFx1MDAzZXBsX2NvbmZpZy5zdXBwb3J0ZWRfaW50ZXJmYWNlcyk7XFxubmV0L2RzYS9wb3J0LmM6MTYzODpcXHRcXHRcXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0dNSUksXFxubmV0L2RzYS9wb3J0LmMtMTYzOS1cXHRcXHRcXHRcXHQgIGRwLVxcdTAwM2VwbF9jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xcbi0tXFxubmV0L2RzYS9wb3J0LmM9MTg0Mj1zdGF0aWMgdm9pZCBkc2Ffc2hhcmVkX3BvcnRfbGlua19kb3duKHN0cnVjdCBkc2FfcG9ydCAqZHApXFxuLS1cXG5uZXQvZHNhL3BvcnQuYy0xODQ3LVxcdFxcdGRzLVxcdTAwM2VwaHlsaW5rX21hY19vcHMtXFx1MDAzZW1hY19saW5rX2Rvd24oXFx1MDAyNmRwLVxcdTAwM2VwbF9jb25maWcsIE1MT19BTl9GSVhFRCxcXG5uZXQvZHNhL3BvcnQuYzoxODQ4OlxcdFxcdFxcdFxcdFxcdFxcdCAgIFBIWV9JTlRFUkZBQ0VfTU9ERV9OQSk7XFxubmV0L2RzYS9wb3J0LmMtMTg0OS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjQwOjA3Ljk4NjE4MTA0OFoiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Njk2ODg1MTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBWdWxuZXJhYmlsaXR5IFBhdGgqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgY29kZSwgYW5kIGl0IGxvb2tzIGxpa2UgdGhlIGludGVyZmFjZSBtb2RlLCBzcGVjaWZpY2FsbHkgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgLCBpcyBvbmx5IGRldGVybWluZWQgZnJvbSB0aGUgZGV2aWNlIHRyZWUgdXNpbmcgYG9mX2dldF9waHlfbW9kZWAuIFRoYXQncyBhIHBvdGVudGlhbCB3ZWFrIHBvaW50LCBidXQgYWxzbyBhIGxpbWl0YXRpb24uIFRoZSBjaGFsbGVuZ2UgaXMsIGlmIHN5emthbGxlciBjYW4ndCBtb2RpZnkgdGhlIGRldmljZSB0cmVlIGRpcmVjdGx5LCB0aGVuIGl0IGNhbid0IHNpbXBseSBmb3JjZSB0aGF0IGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCB2YWx1ZS4gSXQgc2VlbXMgYSBjbGFzc2ljIHZ1bG5lcmFiaWxpdHkgcGF0aCwgYXNzdW1pbmcgdGhlIGF0dGFja2VyIGNhbiBhY2Nlc3MgYW5kIG1vZGlmeSB0aGUgZGV2aWNlIHRyZWUsIGEgdHlwaWNhbCBzeXprYWxsZXIgZ29hbC5cblxuV2FpdCBhIHNlY29uZC4uLiBiZWZvcmUgSSBnZXQgdG9vIGZpeGF0ZWQgb24gdGhlIGRldmljZSB0cmVlLCBhcmUgdGhlcmUgKmFueSogb3RoZXIgd2F5cyB0byBzZXQgdGhhdCBzcGVjaWZpYyBpbnRlcmZhY2UgbW9kZT8gTWF5YmUgc29tZSBvYnNjdXJlIHJlZ2lzdGVyIHNldHRpbmcgb3IgYSBkaWZmZXJlbnQgZHJpdmVyIHBhdGg/IEkgc2hvdWxkIHByb2JhYmx5IGJyb2FkZW4gdGhlIHNlYXJjaC4gTGV0IG1lIHF1aWNrbHkgc2NhbiB0aHJvdWdoIHRoZSBgZHJpdmVycy9uZXQvYCBkaXJlY3RvcnkgYWdhaW4uIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhlcmUgaXNuJ3QgYW5vdGhlciB3YXkgdG8gaW5mbHVlbmNlIHRoYXQgc2V0dGluZyBiZWZvcmUgSSBjb21wbGV0ZWx5IGRpc2NvdW50IHRoZSBwb3NzaWJpbGl0eSBvZiBleHBsb2l0YXRpb24uIEdvdHRhIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzQ0MSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjQwOjEyLjY4MzA2ODQ5NloiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzc1NDUxNzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jPTE1OT1pbnQgcGh5X2ludGVyZmFjZV9udW1fcG9ydHMocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMS1cXHRcXHRyZXR1cm4gNDtcXG5kcml2ZXJzL25ldC9waHkvcGh5LWNvcmUuYzoyMDI6XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHktY29yZS5jLTIwMy1cXHRcXHRyZXR1cm4gNTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfY2Fwcy5jPTI5ND11bnNpZ25lZCBsb25nIHBoeV9jYXBzX2Zyb21faW50ZXJmYWNlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTAtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUkdNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9jYXBzLmM6MzExOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5X2NhcHMuYy0zMTItXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzg9c3RhdGljIGludCBwaHlsaW5rX2ludGVyZmFjZV9tYXhfc3BlZWQocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjU5LVxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1JHTUlJOlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjYwOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MS1cXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9RU0dNSUk6XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTc3ND1zdGF0aWMgaW50IHBoeWxpbmtfcGFyc2VfbW9kZShzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTgwOC1cXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjgwOTpcXHRcXHRjYXNlIFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04MTAtXFx0XFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM5PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDItXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfU0dNSUk6XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDQzOlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNDQtXFx0Y2FzZSBQSFlfSU5URVJGQUNFX01PREVfUVNHTUlJOlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTQ5MD1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfcHJvYmVfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU0OS1cXHRcXHRpZiAoIXN0cmNhc2VjbXAocGFja2FnZV9tb2RlX25hbWUsXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jOjU1MDpcXHRcXHRcXHRcXHRwaHlfbW9kZXMoUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSSkpKVxcbmRyaXZlcnMvbmV0L3BoeS9xY29tL3FjYTgwN3guYzo1NTE6XFx0XFx0XFx0cHJpdi1cXHUwMDNlcGFja2FnZV9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTtcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTUyLVxcdFxcdGVsc2UgaWYgKCFzdHJjYXNlY21wKHBhY2thZ2VfbW9kZV9uYW1lLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jPTU2Mj1zdGF0aWMgaW50IHFjYTgwN3hfcGh5X3BhY2thZ2VfY29uZmlnX2luaXRfb25jZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3Fjb20vcWNhODA3eC5jLTU4NS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmM6NTg2OlxcdGNhc2UgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSTpcXG5kcml2ZXJzL25ldC9waHkvcWNvbS9xY2E4MDd4LmMtNTg3LVxcdGRlZmF1bHQ6XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjQwOjEzLjA1ODUyNTE3NVoiLCJTZXEiOjUxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjAxMTg0NzcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgUEhZIEludGVyZmFjZSBNb2RlIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBpdCBsb29rcyBsaWtlIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpcyBleGNsdXNpdmVseSBkZWZpbmVkIHdpdGhpbiB0aGUgYHFjYTgwN3guY2AgZmlsZSwgcHJpbWFyaWx5IGRyaXZlbiBieSB0aGUgRGV2aWNlIFRyZWUgKERUKS4gSSBrbm93IGl0IGdldHMgcGFyc2VkIGZyb20gdGhlIERUIGluIGBvZl9uZXQuY2AgYW5kIGBwaHlsaW5rLmNgLCB3aGljaCBtYWtlcyBzZW5zZS4gQnV0LCBJJ20gY3VyaW91cywgaXMgdGhhdCAqdHJ1bHkqIHRoZSBvbmx5IHdheSB0aGlzIHNwZWNpZmljIG1vZGUgZ2V0cyBzZXQ/IEFyZSB0aGVyZSBhbnkgb3RoZXIgcG90ZW50aWFsIHJvdXRlcz8gTXkgZ3V0IHRlbGxzIG1lIEkgbmVlZCB0byBjb25zaWRlciBhbGwgcG9zc2liaWxpdGllcy5cblxuUGVyaGFwcyB0aGVyZSdzIGFuIEFDUEktcmVsYXRlZCBhdmVudWUgSSdtIG92ZXJsb29raW5nPyBJIHNob3VsZCByZWFsbHkgbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSBuZWVkIHRvIGRpZyBhIGxpdHRsZSBkZWVwZXIsIGFuZCB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBgYWNwaV9nZXRfcGh5X21vZGVgLiBJdCdzIHRpbWUgdG8gY2hlY2sgdGhhdCBmdW5jdGlvbiBhbmQgc2VlIGlmIEFDUEkgaXMgaW52b2x2ZWQuIFRoaXMgZmVlbHMgbGlrZSB0aGUgcmlnaHQgcGxhY2UgdG8gc3RhcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NzU1LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6NDA6MTYuNjU5NzEyMDc3WiIsIlNlcSI6NTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjgzMDI0NTU5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhY3BpX2dldF9waHlfbW9kZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjQwOjE4LjM0Mjc1NjM4NloiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTY3MTkwODU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGVlcCBEaXZlIGludG8gYGZ3bm9kZV9nZXRfcGh5X21vZGVgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGZ3bm9kZV9nZXRfcGh5X21vZGVgLi4uIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgZnVuY3Rpb24gaXMgc3VwcG9zZWQgdG8gd29yayBhbmQgd2hhdCBjb250ZXh0IGl0IG9wZXJhdGVzIGluLiBJIHNob3VsZCBjaGVjayB0aGUgaW1wbGVtZW50YXRpb24gZmlyc3QuIElzIGl0IHN0cmFpZ2h0Zm9yd2FyZCwgb3IgaXMgaXQgY2FsbGluZyBvdGhlciBmdW5jdGlvbnMgd2hpY2ggY2FuIGFmZmVjdCBpdHMgYmVoYXZpb3I/IEFyZSB0aGVyZSBhbnkgb2J2aW91cyBwb3RlbnRpYWwgZ290Y2hhcyBJIHNob3VsZCBiZSBhd2FyZSBvZiByZWdhcmRpbmcgcG90ZW50aWFsIHNpZGUgZWZmZWN0cz8gSSB3b25kZXIgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBoYXJkd2FyZSBwbGF0Zm9ybXMgd2hlcmUgdGhpcyBmdW5jdGlvbiBiZWhhdmVzIHVuZXhwZWN0ZWRseSwgbWF5YmUgc29tZSBwbGF0Zm9ybS1zcGVjaWZpYyBxdWlya3MuIEkgYmV0dGVyIGNoZWNrIHRoZSByZWxldmFudCBkb2N1bWVudGF0aW9uIG9yIGNvbW1lbnRzIHRvIG1ha2Ugc3VyZSBJIGFtIG5vdCBtaXNzaW5nIGFueXRoaW5nIG9idmlvdXMuIEl0J3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIGl0cyBjb250cmFjdCBhbmQgYW55IGVycm9yIHNjZW5hcmlvcyBpdCdzIGludGVuZGVkIHRvIGhhbmRsZS4gSSdsbCBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHRoZSBvdmVyYWxsIGZyYW1ld29yayBvciBhcmNoaXRlY3R1cmUuIEtub3dpbmcgdGhlIGBwaHlfbW9kZWAgaXMgY3JpdGljYWwgdG8gb3VyIHN5c3RlbS4gTGV0IG1lIHN0YXJ0IGRpZ2dpbmcgaW50byB0aGUgY29kZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTA3OCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjQwOjIxLjUwOTk1MDMyMVoiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU5MDMxNTUwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmd25vZGVfZ2V0X3BoeV9tb2RlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jhc2UvcHJvcGVydHkuYz05OTc9RVhQT1JUX1NZTUJPTF9HUEwoZGV2aWNlX2dldF9kbWFfYXR0cik7XFxuLS1cXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYy05OTktLyoqXFxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM6MTAwMDogKiBmd25vZGVfZ2V0X3BoeV9tb2RlIC0gR2V0IHBoeSBtb2RlIGZvciBnaXZlbiBmaXJtd2FyZSBub2RlXFxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMtMTAwMS0gKiBAZndub2RlOlxcdFBvaW50ZXIgdG8gdGhlIGdpdmVuIG5vZGVcXG4tLVxcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jLTEwMDYtICovXFxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM6MTAwNzppbnQgZndub2RlX2dldF9waHlfbW9kZShjb25zdCBzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZndub2RlKVxcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jLTEwMDgte1xcbi0tXFxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMtMTAyNC19XFxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM6MTAyNTpFWFBPUlRfU1lNQk9MX0dQTChmd25vZGVfZ2V0X3BoeV9tb2RlKTtcXG5kcml2ZXJzL2Jhc2UvcHJvcGVydHkuYy0xMDI2LVxcbi0tXFxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM9MTAzNT1pbnQgZGV2aWNlX2dldF9waHlfbW9kZShzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmMtMTAzNi17XFxuZHJpdmVycy9iYXNlL3Byb3BlcnR5LmM6MTAzNzpcXHRyZXR1cm4gZndub2RlX2dldF9waHlfbW9kZShkZXZfZndub2RlKGRldikpO1xcbmRyaXZlcnMvYmFzZS9wcm9wZXJ0eS5jLTEwMzgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jPTMzMT1zdGF0aWMgaW50IGRwYWEyX21hY19nZXRfaWZfbW9kZShzdHJ1Y3QgZndub2RlX2hhbmRsZSAqZHBtYWNfbm9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy0zMzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jOjMzNzpcXHRlcnIgPSBmd25vZGVfZ2V0X3BoeV9tb2RlKGRwbWFjX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYy0zMzgtXFx0aWYgKGVyciBcXHUwMDNlIDApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYz02ODQwPXN0YXRpYyBpbnQgbXZwcDJfcG9ydF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmMtNjg3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYzo2ODczOlxcdHBoeV9tb2RlID0gZndub2RlX2dldF9waHlfbW9kZShwb3J0X2Z3bm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmMtNjg3NC1cXHRpZiAocGh5X21vZGUgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYz0xMDg0PXN0YXRpYyBpbnQgbGFuOTY2eF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmMtMTIwMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYzoxMjAzOlxcdFxcdHBoeV9tb2RlID0gZndub2RlX2dldF9waHlfbW9kZShwb3J0bnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTEyMDQtXFx0XFx0ZXJyID0gbGFuOTY2eF9wcm9iZV9wb3J0KGxhbjk2NngsIHAsIHBoeV9tb2RlLCBwb3J0bnApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYz02MTY9c3RhdGljIGludCBpbnRlbF9tZ2JlX2NvbW1vbl9kYXRhKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03MjAtXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYzo3MjE6XFx0XFx0cGh5X21vZGUgPSBmd25vZGVfZ2V0X3BoeV9tb2RlKGZ3bm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtaW50ZWwuYy03MjItXFx0XFx0aWYgKHBoeV9tb2RlIFxcdTAwM2U9IDApIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvcHJvcGVydHkuaD01MDM9aW50IGRldmljZV9nZXRfcGh5X21vZGUoc3RydWN0IGRldmljZSAqZGV2KTtcXG5pbmNsdWRlL2xpbnV4L3Byb3BlcnR5Lmg6NTA0OmludCBmd25vZGVfZ2V0X3BoeV9tb2RlKGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUpO1xcbmluY2x1ZGUvbGludXgvcHJvcGVydHkuaC01MDUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjQwOjIzLjEwMDI3MTk0M1oiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MDczMDQ1OTY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQWNjZXNzaWJpbGl0eSBvZiBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIHZpYSBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCB0aGluZy4gVGhlIGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBmd25vZGVfZ2V0X3BoeV9tb2RlYCByZWFkcyBmcm9tIGRldmljZSBwcm9wZXJ0aWVzLiBNeSBtYWluIHF1ZXN0aW9uIHRoZW4gYmVjb21lcywgY2FuIHN5emthbGxlciBpbmplY3QgdGhvc2UgZGV2aWNlIHByb3BlcnRpZXM/IEl0IGxvb2tzIGxpa2Ugc3l6a2FsbGVyIGNhbiB1c2UgYHN5el91c2JfY29ubmVjdGAgYW5kIGBzeXpfODAyMTFfaW5qZWN0X2ZyYW1lYCBhbmQgdGhlIGxpa2UsIGJ1dCBpdCBkb2Vzbid0IGdlbmVyYWxseSBzdXBwb3J0IGluamVjdGluZyBhcmJpdHJhcnkgQUNQSSBvciBEVCBwcm9wZXJ0aWVzLiBUaGUgc3BlY2lmaWMgZXhhbXBsZSBvZiBgc3RtbWFjYCAoc3BlY2lmaWNhbGx5IGBkd21hYy1pbnRlbGApIHJlYWRzIGBwaHlfbW9kZWAgZnJvbSB0aGUgYGZ3bm9kZWAsIGFuZCBpZiB0aGF0J3Mgbm90IHRoZXJlLCBpdCBkZWZhdWx0cyB0byBzb21ldGhpbmcgZWxzZS4gQnV0IHdhaXQsIGBkd21hYy1pbnRlbGAgaXMgYSBQQ0kgZGV2aWNlLiBDYW4gc3l6a2FsbGVyIGluamVjdCBQQ0kgZGV2aWNlcyB3aXRoIHBhcnRpY3VsYXIgcHJvcGVydGllcz8gU3l6a2FsbGVyICpkb2VzKiBoYXZlIGBzeXpfcGNpX2RldmljZV9hZGRgIHdoaWNoIGxldHMgeW91IGFkZCB2aXJ0dWFsIFBDSSBkZXZpY2VzLCBidXQgcmlnaHQgbm93LCBpdCBkb2Vzbid0IGxvb2sgbGlrZSB0aGF0IHN1cHBvcnRzIGluamVjdGluZyB0aG9zZSBBQ1BJL2Z3bm9kZSBwcm9wZXJ0aWVzLiBTbywgaXQgc2VlbXMgdW5saWtlbHkgdGhhdCBzeXprYWxsZXIgY2FuIGVhc2lseSB0cmlnZ2VyIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LlxuXG5CdXQgbGV0J3MgdGhpbmsgb3V0c2lkZSB0aGUgYm94LiBJcyB0aGVyZSAqYW55KiBvdGhlciByb3V0ZT8gUGVyaGFwcyBhIGRyaXZlciBzZXRzIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBhcyBpdHMgZGVmYXVsdD8gSSBjaGVja2VkLCBhbmQgZnJvbSBteSBxdWljayByZXZpZXcgb2YgZHJpdmVycyB1c2luZyBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAsIG9ubHkgYHFjYTgwN3guY2AgdXNlcyBpdCBleHBsaWNpdGx5LCBzbyBubyBNQUMgZHJpdmVyIGFwcGVhcnMgdG8gc2V0IGl0IGFzIGEgZGVmYXVsdC4gV2FpdCwgd2hhdCBhYm91dCBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgaW5zaWRlIGBwaHlsaW5rX3BhcnNlX21vZGVgPyBSaWdodCwgdGhhdCBwYXJzZXMgdGhlIG1vZGUgZnJvbSB0aGUgZGV2aWNlIHRyZWUuIFNvLCBubyBkZXZpY2UgdHJlZSwgbm8gcGFyc2luZy5cblxuSXMgdGhlcmUgYW55IG5ldGxpbmsgaW50ZXJmYWNlIHRoYXQgbGV0cyB5b3Ugc2V0IHRoZSBQSFkgbW9kZT8gTGV0J3MgY2hlY2sgYHJ0bmxfbGlua19vcHNgIGZvciBhbnkgZHJpdmVyIHRoYXQgZXhwb3NlcyB0aGlzIGZ1bmN0aW9uYWxpdHkuIE5vIGx1Y2suIFBIWSBtb2RlIGxvb2tzIGxpa2UgYSBoYXJkd2FyZSBwcm9wZXJ0eSwgaXTigJlzIG5vdCBjb25maWd1cmFibGUgYXQgcnVudGltZS5cblxuU28sIHRoaXMgcGF0Y2ggaXMgZXNzZW50aWFsbHkgZW5hYmxpbmcgYFBIWV9JTlRFUkZBQ0VfTU9ERV9QU0dNSUlgIHdpdGhpbiBgcGh5bGlua19nZXRfaW5iYW5kX3R5cGVgLiBHaXZlbiB0aGF0IGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCBzZWVtcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbGlrZSBHQ0Ugb3IgUUVNVSwgd2l0aG91dCBzcGVjaWZpYyBoYXJkd2FyZSBvciBkZXZpY2UgdHJlZSBpbmplY3Rpb24sIHRoaXMgY2hhbmdlIHNlZW1zIGxpa2UgYSBsb3cteWllbGQgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5MZXQncyBkb3VibGUtY2hlY2ssIHRob3VnaC4gQ2FuIHdlIHNvbWVob3cgZ2V0IGF0IGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCB2aWEgYGV0aHRvb2xgPyBJIHJldmlld2VkIGBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldGAgYW5kIGl0IGRvZXNuJ3Qgc2V0IGBjb25maWcuaW50ZXJmYWNlYCwgd2hpY2ggaXMgbm90IGEgZ29vZCBzaWduLiBDYW4gd2UgZG8gaXQgd2l0aCBgU0lPQ1NNSUlSRUdgPyBObywgdGhhdCdzIGp1c3QgZm9yIHJlYWRpbmcvd3JpdGluZyBQSFkgcmVnaXN0ZXJzLiBXaGF0IGFib3V0IGBkZXZsaW5rYD8gSSdsbCBuZWVkIHRvIGNoZWNrIGlmIGBkZXZsaW5rYCBoYXMgYW55IGNvbnRyb2wgb3ZlciBQSFkgbW9kZSwgYnV0IEknbSBsZWFuaW5nIHRvd2FyZHMgdGhpcyBub3QgYmVpbmcgYSB2aWFibGUgZnV6emluZyB0YXJnZXQgYXQgdGhpcyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzY0NTYsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6NDA6MzIuMTczMzIxNTY5WiIsIlNlcSI6NTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDk5OTM2NjUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlBIWV9JTlRFUkZBQ0VfTU9ERVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvZGV2bGluay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAyOjQwOjMyLjMyMzMyMzk4NFoiLCJTZXEiOjU3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTgxNzYxMTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQ6IE5vdCBXb3J0aCBGdXp6aW5nKipcblxuT2theSwgc28gdGhlIHNpdHVhdGlvbiBpcyB0aGlzOiBJJ3ZlIGxvb2tlZCBhdCB0aGUgY29kZSwgYW5kIEkndmUgZGV0ZXJtaW5lZCB0aGlzIHBhdGggaXMgdW5yZWFjaGFibGUgaW4gb3VyIGZ1enppbmcgZW52aXJvbm1lbnQuIFNwZWNpZmljYWxseSwgdGhlIG9ubHkgd2F5IHRvIHNldCBgUEhZX0lOVEVSRkFDRV9NT0RFX1BTR01JSWAgc2VlbXMgdG8gYmUgdGhyb3VnaCBlaXRoZXIgZGV2aWNlIHRyZWUgKERUKSBjb25maWd1cmF0aW9ucywgQUNQSSwgb3IsIGluIGEgdmVyeSBzcGVjaWZpYyBleGNlcHRpb24sIGhhcmRjb2RpbmcgaXQgd2l0aGluIGEgZHJpdmVyLiBCdXQsIGFuZCB0aGlzIGlzIHRoZSBjcnV4IG9mIGl0LCBubyBzdGFuZGFyZCBkcml2ZXIgaGFyZGNvZGVzIGBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJYCB0byBiZSB1c2VkIGZvciB0aGUgY3VycmVudCBjb2RlIGluIHF1ZXN0aW9uLCBvdGhlciB0aGFuIHRoZSBgcWNhODA3eGAgUEhZIGRyaXZlcjsgYW5kIHRoZSBgcWNhODA3eGAgUEhZIGRyaXZlciAqb25seSogc2V0cyBpdCBpZiB0aGUgY29uZmlndXJhdGlvbiBpcyBzcGVjaWZpZWQgaW4gRFQuXG5cblNpbmNlIHdlIGNhbid0IGluamVjdCBhcmJpdHJhcnkgRFQgb3IgQUNQSSBwcm9wZXJ0aWVzIGluIGVudmlyb25tZW50cyBsaWtlIHN5emthbGxlciwgd2UgY2Fubm90IHRyaWdnZXIgdGhhdCBwYXJ0aWN1bGFyIGNvZGUgcGF0aC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHN5emthbGxlciBhbmQgb3RoZXIgc3RhbmRhcmQgdmlydHVhbGl6YXRpb24gc2V0dXBzIChRRU1VL0dDRSkgZG9uJ3QgaGF2ZSB0aGUgbmVjZXNzYXJ5IGhhcmR3YXJlIHRvIHV0aWxpemUgdGhpcyBzZXR0aW5nIG9yIGNvbmZpZ3VyZSB0aGUgc3lzdGVtIGluIHN1Y2ggYSB3YXkuXG5cblRoZXJlZm9yZSwgbG9va2luZyBhdCB0aGUgZnV6emluZyBndWlkZWxpbmVzLCB0aGlzIHBhdGNoIHNxdWFyZWx5IGZhbGxzIHVuZGVyIHRoZSBjcml0ZXJpYTogXCJDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmVcIi4gVGhlIGhhcmR3YXJlLCBvciBpdHMgZW11bGF0ZWQgZXF1aXZhbGVudCwgaXMganVzdCBub3QgdGhlcmUsIGFuZCB3ZSBjYW4ndCBtYWtlIGl0IGFwcGVhci5cblxuU28sIGluIHNob3J0LCB3aGlsZSB0aGUgcGF0Y2ggaXRzZWxmIGlzIGZpbmUsIHRyaWdnZXJpbmcgaXRzIGludGVuZGVkIGZ1bmN0aW9uYWxpdHkgaXMgaW1wb3NzaWJsZSBpbiBvdXIgY3VycmVudCBmdXp6aW5nIHNldHVwLiBJJ20gY29uZmlkZW50bHkgc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYCBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzc0OCwiT3V0cHV0VG9rZW5zIjoxNTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6NDA6NDEuMzA1MDg4ODM0WiIsIlNlcSI6NTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjY4NjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIHRvIHRoZSBzd2l0Y2ggc3RhdGVtZW50IGluIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKCkuIFRoZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIGludGVyZmFjZSBtb2RlIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiB0aGF0IGlzIHR5cGljYWxseSBzZXQgdmlhIERldmljZSBUcmVlIChEVCkgb3IgQUNQSSBwcm9wZXJ0aWVzIChlLmcuLCBpbiB0aGUgcWNhODA3eCBQSFkgZHJpdmVyKS4gU2luY2Ugc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzIGRvIG5vdCBoYXZlIHRoZSBzcGVjaWZpYyBoYXJkd2FyZSB0aGF0IHVzZXMgdGhpcyBtb2RlLCBub3IgZG8gdGhleSBpbmplY3QgYXJiaXRyYXJ5IERUL0FDUEkgcHJvcGVydGllcyB0byB0cmlnZ2VyIGl0LCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIHRvIHRoZSBzd2l0Y2ggc3RhdGVtZW50IGluIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKCkuIFRoZSBQSFlfSU5URVJGQUNFX01PREVfUFNHTUlJIGludGVyZmFjZSBtb2RlIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgY29uZmlndXJhdGlvbiB0aGF0IGlzIHR5cGljYWxseSBzZXQgdmlhIERldmljZSBUcmVlIChEVCkgb3IgQUNQSSBwcm9wZXJ0aWVzIChlLmcuLCBpbiB0aGUgcWNhODA3eCBQSFkgZHJpdmVyKS4gU2luY2Ugc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzIGRvIG5vdCBoYXZlIHRoZSBzcGVjaWZpYyBoYXJkd2FyZSB0aGF0IHVzZXMgdGhpcyBtb2RlLCBub3IgZG8gdGhleSBpbmplY3QgYXJiaXRyYXJ5IERUL0FDUEkgcHJvcGVydGllcyB0byB0cmlnZ2VyIGl0LCB0aGlzIGNvZGUgcGF0aCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDI6NDA6NDEuMzA1MTE4NzU0WiIsIlNlcSI6NTksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowbll8x[1] Phase: Running StartedAt: 2026-08-08 02:40:52 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbll8x[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-08 02:40:52 +0000 UTC FinishedAt: 2026-08-08 02:40:56 +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,}