Name: series-workflowz7zpf Phase: Succeeded StartedAt: 2026-08-25 12:39:32 +0000 UTC FinishedAt: 2026-08-25 15:59:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz7zpf[0] Phase: Succeeded StartedAt: 2026-08-25 12:39:32 +0000 UTC FinishedAt: 2026-08-25 13:33:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz7zpf[0].run-triage Phase: Succeeded StartedAt: 2026-08-25 12:39:32 +0000 UTC FinishedAt: 2026-08-25 13:33:46 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "1ff8d3e3165fd077faa4259fd232bdddcd30249f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM_CIRRUS_QEMU" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "1ff8d3e3165fd077faa4259fd232bdddcd30249f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM_CIRRUS_QEMU" ], "series_id": "125adc4a-cb5c-4dbe-a3e7-05381b5113e9" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "cirrus_pci_probe" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTV9DSVJSVVNfUUVNVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NpcnJ1c19wY2lfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgc2ltcGxlIGJvdW5kcyBjaGVjayB0byBlbnN1cmUgdGhhdCB0aGUgUENJIHJlc291cmNlIGxlbmd0aCBpcyBhdCBsZWFzdCBDSVJSVVNfVlJBTV9TSVpFIGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggdGhlIHByb2JlLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIGludmFsaWQgbWVtb3J5IG1hcHBpbmdzIHdoZW4gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgZGV2aWNlJiMzOTtzIFZSQU0uIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYW5kIGludmFsaWQgbWFwcGluZ3MgYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIG1lbW9yeSBwcm90ZWN0aW9ucy4gVGhlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBkbyBub3QgZXhwb3NlIGtlcm5lbCBtZW1vcnkgdG8gdXNlciBzcGFjZSwgYW5kIGRvIG5vdCBpbnZvbHZlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgZnVuY3Rpb25hbCBjaGVjayBpbiB0aGUgUENJIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBRRU1VIENpcnJ1cyBWR0EgRFJNIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIGNhbiBiZSB0cmlnZ2VyZWQgYnkgaW5qZWN0aW5nIGEgUENJIGRldmljZSB3aXRoIGEgc21hbGwgcmVzb3VyY2UgbGVuZ3RoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjMyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMGVhN2M1ODFlYTIzNjllYWUzMjI0MDExNWM3ZTJhYWIwNmI3MjkxMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDI1IDEzOjMxOjU5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jXG5pbmRleCAwNzUyMjFiNDMxZDM3Li4zYmYyM2ZjZjY1NzQ5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY1xuQEAgLTU4Miw2ICYjNDM7NTgyLDkgQEAgc3RhdGljIGludCBjaXJydXNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFx0c3RydWN0IGNpcnJ1c19kZXZpY2UgKmNpcnJ1cztcbiBcdGludCByZXQ7XG4gXG4mIzQzO1x0aWYgKHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCkgXHUwMDNjIENJUlJVU19WUkFNX1NJWkUpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XG4gXHRyZXQgPSBhcGVydHVyZV9yZW1vdmVfY29uZmxpY3RpbmdfcGNpX2RldmljZXMocGRldiwgY2lycnVzX2RyaXZlci5uYW1lKTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTM6MzI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTV9DSVJSVVNfUUVNVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NpcnJ1c19wY2lfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGZ1bmN0aW9uYWwgY2hlY2sgaW4gdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiBvZiB0aGUgUUVNVSBDaXJydXMgVkdBIERSTSBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGluamVjdGluZyBhIFBDSSBkZXZpY2Ugd2l0aCBhIHNtYWxsIHJlc291cmNlIGxlbmd0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDBlYTdjNTgxZWEyMzY5ZWFlMzIyNDAxMTVjN2UyYWFiMDZiNzI5MTIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAyNSAxMzozMTo1OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jCmluZGV4IDA3NTIyMWI0MzFkMzcuLjNiZjIzZmNmNjU3NDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYwpAQCAtNTgyLDYgJiM0Mzs1ODIsOSBAQCBzdGF0aWMgaW50IGNpcnJ1c19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAJc3RydWN0IGNpcnJ1c19kZXZpY2UgKmNpcnJ1czsKIAlpbnQgcmV0OwogCiYjNDM7CWlmIChwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApICZsdDsgQ0lSUlVTX1ZSQU1fU0laRSkKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwogCXJldCA9IGFwZXJ0dXJlX3JlbW92ZV9jb25mbGljdGluZ19wY2lfZGV2aWNlcyhwZGV2LCBjaXJydXNfZHJpdmVyLm5hbWUpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBGZWFzaWJpbGl0eSBvZiBDaXJydXMgVkdBIERyaXZlciBDaGFuZ2UqKgoKT2theSwgc28gdGhlcmUmIzM5O3MgYSBwYXRjaCBpbiBgZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY2AgdGhhdCBtb2RpZmllcyB0aGUgYGNpcnJ1c19wY2lfcHJvYmVgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGFkZGluZyBhIGNoZWNrOiBgaWYgKHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCkgJmx0OyBDSVJSVVNfVlJBTV9TSVpFKSByZXR1cm4gLUVOT0RFVjtgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgZHJpdmVyJiMzOTtzIHByb2JlIGZ1bmN0aW9uLCB3aGljaCwgaW4gaXRzZWxmLCB3YXJyYW50cyBhIGNsb3NlciBsb29rIGZvciBmdXp6aW5nIHBvdGVudGlhbC4gSXQmIzM5O3MgYSBEUk0gZHJpdmVyIGZvciBRRU1VJiMzOTtzIENpcnJ1cyBWR0EgZW11bGF0aW9uLCBtZWFuaW5nIGl0JiMzOTtzIHJlbGV2YW50IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KClRoZSBrZXkgcXVlc3Rpb24gaXMsIGlzIHRoaXMgd29ydGggZnV6emluZz8gVGhlIGNoYW5nZSBpcyBpbiBgY2lycnVzX3BjaV9wcm9iZWAsIHdoaWNoIGdpdmVzIG1lIHBhdXNlLiBJIGRvbiYjMzk7dCB0eXBpY2FsbHkgc2VlIHN5emthbGxlciBkaXJlY3RseSBmdXp6aW5nIFBDSSBwcm9iZSBmdW5jdGlvbnMgdW5sZXNzIGl0JiMzOTtzIGEgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlLCBvciB0aGVyZSYjMzk7cyBVU0Igb3IgUENJIGluamVjdGlvbiBhdCBwbGF5LiBIb3dldmVyLCBzaW5jZSB0aGlzIGlzICpRRU1VKiBwcm92aWRpbmcgdGhlIENpcnJ1cyBWR0EgZGV2aWNlLCBpdCB3aWxsIGxpa2VseSBiZSBwcm9iZWQgYXQgYm9vdCBpZiB0aGUgZGV2aWNlIGlzIHByZXNlbnQuIFRoYXQmIzM5O3MgYSBwb2ludCBpbiBmYXZvciBvZiBmdXp6aW5nLgoKVGhlIGNoYW5nZSBpdHNlbGYgaXMgYSBmYWlybHkgc2ltcGxlIGxlbmd0aCBjaGVjaywgdGhhdCYjMzk7cyBub3QgZXhhY3RseSByaXBlIGZvciBjb21wbGV4IGJ1Z3MsIGhvd2V2ZXIsIGl0IGlzIHdpdGhpbiBhIHByb2JlIGZ1bmN0aW9uLCBhbmQgdW5leHBlY3RlZCB2YWx1ZXMgY291bGQgcG90ZW50aWFsbHkgdHJpZ2dlciBlZGdlIGNhc2VzLiBUaW1lIHRvIGZpbmQgYENJUlJVU19WUkFNX1NJWkVgIGFuZCBgY2lycnVzX3BjaV9wcm9iZWAgdG8gc2VlIHdoYXQgaXMgZ29pbmcgb24uIFRoZW4sIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmb3IgYGNpcnJ1cy1xZW11LmNgIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhpcyBjb2RlIGlzIGVuYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTM6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2lycnVzX3BjaV9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYz01NjU9c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZHJpdmVyIGNpcnJ1c19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01NzctXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjU3ODpzdGF0aWMgaW50IGNpcnJ1c19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTU3OS1cdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jPTY2Nj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgY2lycnVzX3BjaV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy02NjgtXHQuaWRfdGFibGUgPSBwY2lpZGxpc3QsXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjY2OTpcdC5wcm9iZSA9IGNpcnJ1c19wY2lfcHJvYmUsXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTY3MC1cdC5yZW1vdmUgPSBjaXJydXNfcGNpX3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMzozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDI2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkV4YW1pbmluZyB0aGUgS2NvbmZpZyBmb3IgY2lycnVzLXFlbXUuYyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIENpcnJ1cyBWR0EgZW11bGF0aW9uIGlzIGNvbmZpZ3VyZWQgZm9yIFFFTVUuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBLY29uZmlnIGZpbGVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbG9va2luZyBpbiB0aGUgcmlnaHQgcGxhY2UsIHNwZWNpZmljYWxseSB0aGUgS2NvbmZpZyBmaWxlcyB0aGF0IGNvbnRyb2wgdGhlIGJ1aWxkIG9wdGlvbnMgZm9yIHRoZSBgY2lycnVzLXFlbXUuY2AgZHJpdmVyLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGRlcGVuZGVuY2llcyBpdCBoYXMsIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBhc3BlY3RzLCBhbmQgd2hhdCB0aGUgZGVmYXVsdCBzZXR0aW5ncyBhcmUuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGRyaXZlciBpcyBhY3RpdmF0ZWQsIHBvdGVudGlhbGx5IGRpc2FibGVkLCBhbmQgd2hpY2ggZmVhdHVyZXMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdCB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50LiBJdCBjb3VsZCByZXZlYWwgaWYgdGhlcmUgYXJlIHNwZWNpZmljIGNvbXBpbGUtdGltZSBmbGFncyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBjb3VsZCBiZSB0d2Vha2VkIHRvIGltcHJvdmUgcGVyZm9ybWFuY2Ugb3Igc3RhYmlsaXR5LCBvciBpZiB0aGVyZSBpcyBhIGRlcGVuZGVuY3kgb24gdGhlIHFlbXUgdmVyc2lvbiwgd2hpY2ggY2FuIGFmZmVjdCBpdHMgc3VwcG9ydC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoaXMgZHJpdmVyIGFuZCB0aGUgb3ZlcmFsbCBzeXN0ZW0gY29uZmlndXJhdGlvbi4gQSB0aG9yb3VnaCByZXZpZXcgd2lsbCBtYWtlIHN1cmUgdGhhdCB0aGUgc3lzdGVtIGlzIHNldCB1cCB0byBzdXBwb3J0IHRoZSB1c2Ugb2YgdGhlIGRyaXZlciBpbiB0aGUgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTM6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2lycnVzLXFlbXUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdGlueS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3RpbnkvTWFrZWZpbGU9NT1vYmotJChDT05GSUdfRFJNX0JPQ0hTKVx0XHRcdCYjNDM7PSBib2Nocy5vXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19EUk1fQ0lSUlVTX1FFTVUpXHRcdCYjNDM7PSBjaXJydXMtcWVtdS5vXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9NYWtlZmlsZS03LW9iai0kKENPTkZJR19EUk1fR00xMlUzMjApXHRcdCYjNDM7PSBnbTEydTMyMC5vXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01MS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NTI6I2RlZmluZSBEUklWRVJfTkFNRSBcJiMzNDtjaXJydXMtcWVtdVwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01My0jZGVmaW5lIERSSVZFUl9ERVNDIFwmIzM0O3FlbXUgY2lycnVzIHZnYVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MTUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyBpdDoKCioqRGlnZ2luZyBpbnRvIHRoZSBDaXJydXMgUUVNVSBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgQ2lycnVzIFFFTVUgZHJpdmVyLiBUaGUgZmlyc3QgbG9naWNhbCBzdGVwIGlzIGFsd2F5cyB0byBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLCB0aGUgYEtjb25maWdgIGZpbGVzLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O2xsIHNwZWNpZmljYWxseSBsb29rIGZvciB0aGUgYENPTkZJR19EUk1fQ0lSUlVTX1FFTVVgIG9wdGlvbiB3aXRoaW4gdGhlIGBLY29uZmlnYCBmaWxlcy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY29yZSBsb2dpYywgZGVwZW5kZW5jaWVzLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IGNvbnRleHR1YWwgaW5mb3JtYXRpb24gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yIGFuZCB3aHkgaXQgbWlnaHQgb3IgbWlnaHQgbm90IGJlIGFjdGl2YXRlZC4gRnJvbSB0aGVyZSwgSSBjYW4gYW5hbHl6ZSB0aGUgYXNzb2NpYXRlZCBjb2RlIGJhc2VkIG9uIGl0cyBkZXBlbmRlbmN5IHRyZWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTM6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERSTV9DSVJSVVNfUUVNVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZz0yNz1jb25maWcgRFJNX0JPQ0hTXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZy0zOC1cbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWc6Mzk6Y29uZmlnIERSTV9DSVJSVVNfUUVNVVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZy00MC1cdHRyaXN0YXRlIFwmIzM0O0NpcnJ1cyBkcml2ZXIgZm9yIFFFTVUgZW11bGF0ZWQgZGV2aWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTM6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgzNgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIEkmIzM5O20gcmVhZHkgdG8gZGl2ZSBpbnRvIHRoaXMuIExldCYjMzk7cyBzdGFydCBicmVha2luZyB0aGlzIGRvd24uCgoqKlVucGFja2luZyB0aGUgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIG15IGluaXRpYWwgcmVhY3Rpb24gaXMgdG8gZmlndXJlIG91dCB0aGUgY3JpdGljYWwgZGVwZW5kZW5jaWVzIGF0IHBsYXkgaGVyZS4gVGhpcyBpc24mIzM5O3QganVzdCBhYm91dCBhIHN1cmZhY2UtbGV2ZWwgdW5kZXJzdGFuZGluZzsgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBjb3JlIGVsZW1lbnRzIHRoYXQgdW5kZXJwaW4gdGhlIHNpdHVhdGlvbi4gV2hhdCBhcmUgdGhlIHZhcmlhYmxlcyBhbmQgY29uZGl0aW9ucyB0aGF0IGRyaXZlIHRoaXM/IEFyZSB0aGVyZSBhbnkgaGlkZGVuIGFzc3VtcHRpb25zIHRoYXQgbmVlZCB0byBiZSBhZGRyZXNzZWQ/IE15IGZvY3VzIGlzIHRvIGNyZWF0ZSBhIHN0cnVjdHVyZSB0byBidWlsZCBhIHJvYnVzdCBtb2RlbCB0byBleHBsYWluIHRoaXMgcHJvYmxlbS4gVGhpcyBpcyB3aGVyZSBJIHN0YXJ0IHRvIHNlZSB0aGUgYmlnZ2VyIHBpY3R1cmUsIGFuZCB0aGF0JiMzOTtzIHRoZSBvbmx5IHBsYWNlIHRvIHN0YXJ0IHRvIGdvIGRlZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzk6XHRjb25maWcgRFJNX0NJUlJVU19RRU1VXG4gIDQwOlx0XHR0cmlzdGF0ZSBcJiMzNDtDaXJydXMgZHJpdmVyIGZvciBRRU1VIGVtdWxhdGVkIGRldmljZVwmIzM0O1xuICA0MTpcdFx0ZGVwZW5kcyBvbiBEUk0gXHUwMDI2XHUwMDI2IFBDSVxuICA0MjpcdFx0c2VsZWN0IERSTV9DTElFTlRfU0VMRUNUSU9OXG4gIDQzOlx0XHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcbiAgNDQ6XHRcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxuICA0NTpcdFx0aGVscFxuICA0NjpcdFx0IFRoaXMgaXMgYSBLTVMgZHJpdmVyIGZvciBlbXVsYXRlZCBjaXJydXMgZGV2aWNlIGluIHFlbXUuXG4gIDQ3Olx0XHQgSXQgaXMgKk5PVCogaW50ZW5kZWQgZm9yIHJlYWwgY2lycnVzIGRldmljZXMuIFRoaXMgcmVxdWlyZXNcbiAgNDg6XHRcdCB0aGUgbW9kZXNldHRpbmcgdXNlcnNwYWNlIFgub3JnIGRyaXZlci5cbiAgNDk6XHRcbiAgNTA6XHRcdCBDaXJydXMgaXMgb2Jzb2xldGUsIHRoZSBoYXJkd2FyZSB3YXMgZGVzaWduZWQgaW4gdGhlIDkwaWVzXG4gIDUxOlx0XHQgYW5kIGNhbiYjMzk7dCBrZWVwIHVwIHdpdGggdG9kYXlzIG5lZWRzLiAgTW9yZSBiYWNrZ3JvdW5kOlxuICA1MjpcdFx0IGh0dHBzOi8vd3d3LmtyYXhlbC5vcmcvYmxvZy8yMDE0LzEwL3FlbXUtdXNpbmctY2lycnVzLWNvbnNpZGVyZWQtaGFybWZ1bC9cbiAgNTM6XHRcbiAgNTQ6XHRcdCBCZXR0ZXIgYWx0ZXJuYXRpdmVzIGFyZTpcbiAgNTU6XHRcdCAgIC0gc3RkdmdhIChEUk1fQk9DSFMsIHFlbXUgLXZnYSBzdGQsIGRlZmF1bHQgaW4gcWVtdSAyLjImIzQzOylcbiAgNTY6XHRcdCAgIC0gcXhsIChEUk1fUVhMLCBxZW11IC12Z2EgcXhsLCB3b3JrcyBiZXN0IHdpdGggc3BpY2UpXG4gIDU3Olx0XHQgICAtIHZpcnRpbyAoRFJNX1ZJUlRJT19HUFUpLCBxZW11IC12Z2EgdmlydGlvKVxuICA1ODpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMzozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mzc5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNTc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIGBjaXJydXNfcGNpX3Byb2JlYCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIG1vZGlmaWVzIGBjaXJydXNfcGNpX3Byb2JlYCwgd2hpY2ggaXMgYSBQQ0kgcHJvYmUgZnVuY3Rpb24uIFRoZSBwcm9tcHQgZXhwbGljaXRseSBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdCYjMzk7cyBvbmx5IHRvdWNoaW5nIHRlYXJkb3duIGNhbGxiYWNrcyBsaWtlIGAucmVtb3ZlYCBvciBgLnNodXRkb3duYC4gVGhpcyBpcyBhIGAucHJvYmVgIGZ1bmN0aW9uLCBub3QgYSB0ZWFyZG93biBmdW5jdGlvbiwgc28gd2UmIzM5O3JlIG5vdCBpbW1lZGlhdGVseSBvdXQuCgpUaGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIHdlICplZmZlY3RpdmVseSogZnV6eiBgY2lycnVzX3BjaV9wcm9iZWA/IFN5emthbGxlciBjYW4gZnV6eiBQQ0kgZGV2aWNlcywgZXNwZWNpYWxseSB0aG9zZSBpbmplY3RlZCB2aWEgYHN5el9wY2lfZGV2aWNlYCwgYnV0IHR5cGljYWxseSB0aGVzZSBwcm9iZSBmdW5jdGlvbnMgcnVuIG9uY2UsIGR1cmluZyBib290IG9yIGhvdHBsdWcuIEhvd2V2ZXIsIHRoaXMgaXMgZm9yIGEgUUVNVSBlbXVsYXRlZCBkZXZpY2UsIGFuZCBRRU1VIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IGV4Y2x1ZGVzIHRoaW5ncyB0aGF0ICphcmVuJiMzOTt0KiByZWFjaGFibGUgaW4gUUVNVSwgc28gdGhhdCYjMzk7cyBhIGNoZWNrIGluIHRoZSBwbHVzIGNvbHVtbi4KCk5vdywgaXMgaXQgKndvcnRoKiBmdXp6aW5nPyBUaGUgYWN0dWFsIGNvZGUgY2hhbmdlIGlzIGEgc2luZ2xlIGNoZWNrOgoKYGBgYwoJaWYgKHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCkgJmx0OyBDSVJSVVNfVlJBTV9TSVpFKQoJCXJldHVybiAtRU5PREVWOwpgYGAKCkl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNvIGl0JiMzOTtzIG5vdCBqdXN0IGNvc21ldGljLiBJZiB3ZSBkZWNpZGUgaXQgKmlzKiB3b3J0aCBpdCwgd2UgbmVlZCBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgLiBGb3IgYEZvY3VzU3ltYm9sc2AsIGBjaXJydXNfcGNpX3Byb2JlYCBpcyB0aGUgb2J2aW91cyBjaG9pY2UuIFByb2JlIGZ1bmN0aW9ucyBhcmVuJiMzOTt0IHVzdWFsbHkgdGFyZ2V0ZWQgaGVhdmlseSBiZWNhdXNlIG9mIHRoZWlyIHNpbmdsZSBleGVjdXRpb24sIGJ1dCBhIGJ1ZyBoZXJlLCB0cmlnZ2VyZWQgYnkgYSBQQ0kgZGV2aWNlIHdpdGggYSBzbWFsbCByZXNvdXJjZSBsZW5ndGgsICpjb3VsZCogYmUgc2lnbmlmaWNhbnQuCgpMZXQmIzM5O3Mgc2VlLCBkb2VzIHRoaXMgcGF0Y2ggbW9kaWZ5IGFueSBvdGhlciBmdW5jdGlvbnM/IE5vcGUsIGp1c3QgYGNpcnJ1c19wY2lfcHJvYmVgLgoKT2theSwgbmV4dCwgaXMgYGNpcnJ1c19wY2lfcHJvYmVgIHN0YXRpYz8gWWVzLCBpdCBpcy4gVGhlIHByb21wdCBwcmVmZXJzIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzLCBidXQgdGhlbiBhZ2FpbiwgZXZlbiB0aG91Z2ggaXQmIzM5O3Mgc3RhdGljLCBpdCYjMzk7cyBhc3NpZ25lZCB0byB0aGUgYC5wcm9iZWAgZnVuY3Rpb24gcG9pbnRlciwgbWVhbmluZyBpdCYjMzk7cyBub3QgaW5saW5lZCBhbmQgaGFzIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIFRoYXQgbWFrZXMgaXQgbW9yZSBpbnRlcmVzdGluZy4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQgbWUgc2NhbiB0aGUgcmVzdCBvZiBgY2lycnVzLXFlbXUuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGlzIGRyaXZlciB0aGF0IG1pZ2h0IGJlIG1vcmUgcHJvbWlzaW5nLCBldmVuIHRob3VnaCB0aGUgcGF0Y2ggaXRzZWxmIG9ubHkgbW9kaWZpZXMgYGNpcnJ1c19wY2lfcHJvYmVgLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15pbnQgfF52b2lkIHxec3RydWN0ICYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01OS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NjA6c3RydWN0IGNpcnJ1c19kZXZpY2Uge1xuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy02MS1cdHN0cnVjdCBkcm1fZGV2aWNlXHQgICAgICAgZGV2O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMzozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjE1CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkNvbXByZWhlbnNpdmUgRnVuY3Rpb24gUmV2aWV3KioKCkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAgaW50byB0aGlzIHByb2JsZW0sIEkgd2FudCB0byBtYWtlIHN1cmUgSSYjMzk7dmUgZ290IGEgaGFuZGxlIG9uICphbGwqIHRoZSBhdmFpbGFibGUgdG9vbHMgYW5kIHRoZWlyIGNhcGFiaWxpdGllcy4gTGV0JiMzOTtzIHNlZS4uLiBJIG5lZWQgdG8gc3RhcnQgYnkgbWVudGFsbHkgbGlzdGluZyBldmVyeSBmdW5jdGlvbiwgZXZlcnkgc3Vicm91dGluZSwgZXZlcnkgQVBJIGNhbGwsIGV2ZXJ5dGhpbmcgdGhhdCBjb3VsZCBjb25jZWl2YWJseSBiZSByZWxldmFudCB0byB0aGUgdGFzayBhdCBoYW5kLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgc3VyZmFjZS1sZXZlbCBzY2FuOyBJIG5lZWQgdG8gcmVhbGx5IGRpZyBpbnRvIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB1bmRlcnN0YW5kIHRoZSBudWFuY2VzIG9mIGVhY2ggZnVuY3Rpb24uIFdoYXQgYXJlIHRoZSBpbnB1dHMsIHRoZSBvdXRwdXRzLCB0aGUgcG90ZW50aWFsIHNpZGUgZWZmZWN0cywgYW55IGVkZ2UgY2FzZXMgb3IgbGltaXRhdGlvbnM/IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGxvdy1sZXZlbCBpbXBsZW1lbnRhdGlvbnMgdG9vLiBJIHNob3VsZCBhbHNvIGNvbnNpZGVyIGhvdyB0aGVzZSBmdW5jdGlvbnMgaW50ZXJhY3QsIGFuZCBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIGRlcGVuZGVuY2llcy4gV2hhdCBkb2VzIHRoZSBBUEkgZG9jdW1lbnRhdGlvbiBzYXk/IEFueSB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMgdGhhdCBtaWdodCBvZmZlciBhIHVzZWZ1bCBmdW5jdGlvbj8gVGhpcyBpbml0aWFsIGludmVudG9yeSBpcyBjcnVjaWFsLCBvciBJJiMzOTtsbCBtaXNzIHNvbWV0aGluZyBmdW5kYW1lbnRhbCBhbmQgd2FzdGUgdGltZSBsYXRlciBjaGFzaW5nIG15IHRhaWwuIEkgbmVlZCBhICpjb21wbGV0ZSogZnVuY3Rpb25hbCBtYXAgYmVmb3JlIHByb2NlZWRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15zdGF0aWMuKiBjaXJydXNfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jPTYwPXN0cnVjdCBjaXJydXNfZGV2aWNlIHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTg4LVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo4OTpzdGF0aWMgdTggcnJlZ19zZXEoc3RydWN0IGNpcnJ1c19kZXZpY2UgKmNpcnJ1cywgdTggcmVnKVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy05MC17XG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy05NC1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6OTU6c3RhdGljIHZvaWQgd3JlZ19zZXEoc3RydWN0IGNpcnJ1c19kZXZpY2UgKmNpcnJ1cywgdTggcmVnLCB1OCB2YWwpXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTk2LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTEwMy1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6MTA0OnN0YXRpYyB1OCBycmVnX2NydChzdHJ1Y3QgY2lycnVzX2RldmljZSAqY2lycnVzLCB1OCByZWcpXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTEwNS17XG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0xMDktXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjExMDpzdGF0aWMgdm9pZCB3cmVnX2NydChzdHJ1Y3QgY2lycnVzX2RldmljZSAqY2lycnVzLCB1OCByZWcsIHU4IHZhbClcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtMTExLXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTExOC1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6MTE5OnN0YXRpYyB2b2lkIHdyZWdfZ2Z4KHN0cnVjdCBjaXJydXNfZGV2aWNlICpjaXJydXMsIHU4IHJlZywgdTggdmFsKVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0xMjAte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtMTI2LVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzoxMjc6c3RhdGljIHZvaWQgd3JlZ19oZHIoc3RydWN0IGNpcnJ1c19kZXZpY2UgKmNpcnJ1cywgdTggdmFsKVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0xMjgte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtMTM1LVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzoxMzY6c3RhdGljIHZvaWQgY2lycnVzX3NldF9zdGFydF9hZGRyZXNzKHN0cnVjdCBjaXJydXNfZGV2aWNlICpjaXJydXMsIHUzMiBvZmZzZXQpXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTEzNy17XG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0xNTYtXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjE1NzpzdGF0aWMgdm9pZCBjaXJydXNfbW9kZV9zZXQoc3RydWN0IGNpcnJ1c19kZXZpY2UgKmNpcnJ1cyxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtMTU4LVx0XHRcdCAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTIyNy1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6MjI4OnN0YXRpYyB2b2lkIGNpcnJ1c19mb3JtYXRfc2V0KHN0cnVjdCBjaXJydXNfZGV2aWNlICpjaXJydXMsXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTIyOS1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICpmb3JtYXQpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0yNjctXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjI2ODpzdGF0aWMgdm9pZCBjaXJydXNfcGl0Y2hfc2V0KHN0cnVjdCBjaXJydXNfZGV2aWNlICpjaXJydXMsIHVuc2lnbmVkIGludCBwaXRjaClcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtMjY5LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTI4Ni1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6Mjg3OnN0YXRpYyBjb25zdCB1aW50MzJfdCBjaXJydXNfcHJpbWFyeV9wbGFuZV9mb3JtYXRzW10gPSB7XG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTI4OC1cdERSTV9GT1JNQVRfUkdCNTY1LFxuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtMjkyLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzoyOTM6c3RhdGljIGNvbnN0IHVpbnQ2NF90IGNpcnJ1c19wcmltYXJ5X3BsYW5lX2Zvcm1hdF9tb2RpZmllcnNbXSA9IHtcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtMjk0LVx0RFJNX0ZPUk1BVF9NT0RfTElORUFSLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtMjk3LVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzoyOTg6c3RhdGljIGludCBjaXJydXNfcHJpbWFyeV9wbGFuZV9oZWxwZXJfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0yOTktXHRcdFx0XHRcdFx0ICAgIHN0cnVjdCBkcm1fYXRvbWljX2NvbW1pdCAqc3RhdGUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0zMjctXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjMyODpzdGF0aWMgdm9pZCBjaXJydXNfcHJpbWFyeV9wbGFuZV9oZWxwZXJfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtMzI5LVx0XHRcdFx0XHRcdCAgICAgIHN0cnVjdCBkcm1fYXRvbWljX2NvbW1pdCAqc3RhdGUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0zNjMtXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjM2NDpzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgY2lycnVzX3ByaW1hcnlfcGxhbmVfaGVscGVyX2Z1bmNzID0ge1xuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0zNjUtXHREUk1fR0VNX1NIQURPV19QTEFORV9IRUxQRVJfRlVOQ1MsXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0zNjktXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjM3MDpzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBjaXJydXNfcHJpbWFyeV9wbGFuZV9mdW5jcyA9IHtcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtMzcxLVx0LnVwZGF0ZV9wbGFuZSA9IGRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9wbGFuZSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTM3Ni1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6Mzc3OnN0YXRpYyBpbnQgY2lycnVzX2NydGNfaGVscGVyX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdCBkcm1fYXRvbWljX2NvbW1pdCAqc3RhdGUpXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTM3OC17XG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0zOTEtXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjM5MjpzdGF0aWMgdm9pZCBjaXJydXNfY3J0Y19oZWxwZXJfYXRvbWljX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTM5My1cdFx0XHRcdFx0ICAgICBzdHJ1Y3QgZHJtX2F0b21pY19jb21taXQgKnN0YXRlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNDEzLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo0MTQ6c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgY2lycnVzX2NydGNfaGVscGVyX2Z1bmNzID0ge1xuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy00MTUtXHQuYXRvbWljX2NoZWNrID0gY2lycnVzX2NydGNfaGVscGVyX2F0b21pY19jaGVjayxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTQyMC1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NDIxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfZnVuY3MgY2lycnVzX2NydGNfZnVuY3MgPSB7XG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTQyMi1cdC5yZXNldCA9IGRybV9hdG9taWNfaGVscGVyX2NydGNfcmVzZXQsXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy00MzAtXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjQzMTpzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2Z1bmNzIGNpcnJ1c19lbmNvZGVyX2Z1bmNzID0ge1xuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy00MzItXHQuZGVzdHJveSA9IGRybV9lbmNvZGVyX2NsZWFudXAsXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy00MzQtXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjQzNTpzdGF0aWMgaW50IGNpcnJ1c19jb25uZWN0b3JfaGVscGVyX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy00MzYte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNDQ1LVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo0NDY6c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyBjaXJydXNfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyA9IHtcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNDQ3LVx0LmdldF9tb2RlcyA9IGNpcnJ1c19jb25uZWN0b3JfaGVscGVyX2dldF9tb2Rlcyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTQ0OS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NDUwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBjaXJydXNfY29ubmVjdG9yX2Z1bmNzID0ge1xuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy00NTEtXHQuZmlsbF9tb2RlcyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2Rlcyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTQ1Ny1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NDU4OnN0YXRpYyBpbnQgY2lycnVzX3BpcGVfaW5pdChzdHJ1Y3QgY2lycnVzX2RldmljZSAqY2lycnVzKVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy00NTkte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTEzLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo1MTQ6c3RhdGljIGVudW0gZHJtX21vZGVfc3RhdHVzIGNpcnJ1c19tb2RlX2NvbmZpZ19tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTUxNS1cdFx0XHRcdFx0XHRcdCAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01MzMtXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjUzNDpzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9tb2RlX2NvbmZpZ19mdW5jcyBjaXJydXNfbW9kZV9jb25maWdfZnVuY3MgPSB7XG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTUzNS1cdC5mYl9jcmVhdGUgPSBkcm1fZ2VtX2ZiX2NyZWF0ZV93aXRoX2RpcnR5LFxuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTQwLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo1NDE6c3RhdGljIGludCBjaXJydXNfbW9kZV9jb25maWdfaW5pdChzdHJ1Y3QgY2lycnVzX2RldmljZSAqY2lycnVzKVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01NDIte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM9NTYzPURFRklORV9EUk1fR0VNX0ZPUFMoY2lycnVzX2ZvcHMpO1xuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01NjQtXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjU2NTpzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kcml2ZXIgY2lycnVzX2RyaXZlciA9IHtcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTY2LVx0LmRyaXZlcl9mZWF0dXJlcyA9IERSSVZFUl9NT0RFU0VUIHwgRFJJVkVSX0dFTSB8IERSSVZFUl9BVE9NSUMsXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01NzctXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjU3ODpzdGF0aWMgaW50IGNpcnJ1c19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTU3OS1cdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTYzNi1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NjM3OnN0YXRpYyB2b2lkIGNpcnJ1c19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy02Mzgte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNjQ0LVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo2NDU6c3RhdGljIHZvaWQgY2lycnVzX3BjaV9zaHV0ZG93bihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNjQ2LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jPTY1MD1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcGNpaWRsaXN0W10gPSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy02NjUtXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjY2NjpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgY2lycnVzX3BjaV9kcml2ZXIgPSB7XG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTY2Ny1cdC5uYW1lID0gRFJJVkVSX05BTUUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwNzgKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA2MjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBEZWNpc2lvbiBmb3IgdGhlIENpcnJ1cyBEcml2ZXIgUHJvYmUgRnVuY3Rpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IHNpbmNlICphbGwqIHRoZSBmdW5jdGlvbnMgSSBzZWUgYXJlIHN0YXRpYywgd2Ugd291bGRuJiMzOTt0IG5lZWQgdG8gY29uc2lkZXIgZnV6emluZy4gQnV0IHRoZW4gSSByZW1lbWJlciBgY2lycnVzX3BjaV9wcm9iZWAgaXMgc3RhdGljLCAqYnV0KiBpdCYjMzk7cyB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgdGhlIGRyaXZlci4gVGhhdCYjMzk7cyBhIGtleSBkaXN0aW5jdGlvbi4KClRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIHByZWZlcnJpbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBTaW5jZSBgY2lycnVzX3BjaV9wcm9iZWAgaXMgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyLCBpdCBpc24mIzM5O3QgaW5saW5lZCBhbmQgKmRvZXMqIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wuIFNvLCBpdCBpcyBwb3RlbnRpYWxseSBmdXp6YWJsZS4KCkJ1dCwgaXMgaXQgKndvcnRoKiBmdXp6aW5nPyBUaGUgYWN0dWFsIGNvZGUgY2hhbmdlIGlzIGp1c3QgYSBzaW1wbGUgY2hlY2s6CgpgYGBjCglpZiAocGNpX3Jlc291cmNlX2xlbihwZGV2LCAwKSAmbHQ7IENJUlJVU19WUkFNX1NJWkUpCgkJcmV0dXJuIC1FTk9ERVY7CmBgYAoKSXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgc2l6ZSBjb21wYXJpc29uLiBObyBjb21wbGV4IGxvZ2ljLCBzdGF0ZSBtYWNoaW5lcywgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBpbnZvbHZlZC4gSG93ZXZlciwgdGhpcyBjaGVjayAqZml4ZXMqIGFuIGFzc3VtcHRpb24gYWJvdXQgcmVzb3VyY2Ugc2l6ZSB3aGljaCBjb3VsZCBsZWFkIHRvIG91dC1vZi1ib3VuZHMgYWNjZXNzLiBUaGUgcHJvbXB0IHNheXMgdGhhdCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCBhbmQgYXMgc3VjaCBpdCBkb2VzIHdhcnJhbnQgZnV6emluZy4KCklmIEkmIzM5O20gZ29pbmcgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAsIEkgaGF2ZSB0byBpZGVudGlmeSBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgLiBgY2lycnVzX3BjaV9wcm9iZWAgaXMgdGhlIG9idmlvdXMgYEZvY3VzU3ltYm9sYC4gVGhlIGBFbmFibGVDb25maWdzYCBzaG91bGQgYmUgYERSTV9DSVJSVVNfUUVNVWAuIEkgZG91YmxlLWNoZWNrZWQgdGhlIGRlcGVuZGVuY2llcy4gVGhpcyBpbmNsdWRlcyBgRFJNYCBhbmQgYFBDSWAuCgpJJiMzOTt2ZSBhbHNvIGNoZWNrZWQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgb3IgbW9kaWZpZWQgZnVuY3Rpb25zLiBUaGVyZSBhcmVuJiMzOTt0LgoKTm93LCB0aGUgbmlnZ2xpbmcgZG91YnQuLi4gaXMgdGhpcyAqcmVhbGx5KiB3b3J0aCB0aGUgZWZmb3J0PyBKdXN0IGEgc2luZ2xlIGBpZmAgc3RhdGVtZW50IGluIGEgYHByb2JlYCBmdW5jdGlvbj8gQnV0IHRoZW4gSSByZWFsaXplZCwgeWVzLCBpdCBpcy4gVGhlIGZ1enppbmcgdGFyZ2V0IGlzIHRoZSBicmFuY2ggd2l0aGluIGBjaXJydXNfcGNpX3Byb2JlYC4gVGhpcyBtZWFucyB0aGUgZnV6emVyIG5lZWRzIHRvIGJlIGFibGUgdG8gZ2VuZXJhdGUgUENJIGRldmljZXMgd2l0aCBkaWZmZXJpbmcgcmVzb3VyY2UgbGVuZ3RocyB0byBoaXQgdGhpcyBjb25kaXRpb24uIFRoYXQgaXMgd2VsbCB3aXRoaW4gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgZnV6emVyLCBzcGVjaWZpY2FsbHkgYHN5el9wY2lfZGV2aWNlYC4KClNvLCBpdCYjMzk7cyBhICYjMzQ7eWVzJiMzNDsuIEkmIzM5O20gY29uZmlybWluZyB0aGF0IHRoZSBwYXRjaCBpcyBXb3J0aEZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NJUlJVU19WUkFNX1NJWkUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTctI2RlZmluZSBDSVJSVVNfTUFYX1BJVENIICgweDFGRiBcdTAwM2NcdTAwM2MgMykgICAgICAvKiAoNDA5NiAtIDEpIFx1MDAyNiB+MTExYiBieXRlcyAqL1xuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo1ODojZGVmaW5lIENJUlJVU19WUkFNX1NJWkUgKDQgKiAxMDI0ICogMTAyNCkgLyogNCBNQiAqL1xuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01OS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jPTI5OD1zdGF0aWMgaW50IGNpcnJ1c19wcmltYXJ5X3BsYW5lX2hlbHBlcl9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0zMjEtXHRcdHJldHVybiAtRUlOVkFMO1xuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzozMjI6XHRlbHNlIGlmIChmYi1cdTAwM2VwaXRjaGVzWzBdIFx1MDAzZSBDSVJSVVNfVlJBTV9TSVpFIC8gZmItXHUwMDNlaGVpZ2h0KVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0zMjMtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM9NTE0PXN0YXRpYyBlbnVtIGRybV9tb2RlX3N0YXR1cyBjaXJydXNfbW9kZV9jb25maWdfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTI3LVx0XHRyZXR1cm4gTU9ERV9CQURfV0lEVEg7IC8qIG1heGltdW0gcHJvZ3JhbW1hYmxlIHBpdGNoICovXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjUyODpcdGlmIChwaXRjaCBcdTAwM2UgQ0lSUlVTX1ZSQU1fU0laRSAvIG1vZGUtXHUwMDNldmRpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTUyOS1cdFx0cmV0dXJuIE1PREVfTUVNO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM9NTc4PXN0YXRpYyBpbnQgY2lycnVzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTU4NC1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NTg1Olx0aWYgKHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCkgXHUwMDNjIENJUlJVU19WUkFNX1NJWkUpXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTU4Ni1cdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODE4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBDSSBSZXNvdXJjZSBBbGxvY2F0aW9uKioKCk9rYXksIHNvIHRoZSBkb2N1bWVudGF0aW9uIGNsZWFybHkgc3RhdGVzIHRoZSBsaW1pdCBhcyA0TUIuIEFuZCBJIHVuZGVyc3RhbmQsIGlmIHRoZSBQQ0kgcmVzb3VyY2UgbGVuZ3RoIHJlcG9ydGVkIGlzIHNtYWxsZXIgdGhhbiB0aGF0IHRocmVzaG9sZCwgdGhlbiBpdCBhcHByb3ByaWF0ZWx5IHJldHVybnMgYC1FTk9ERVZgLiBUaGlzIGlzIGEgdmVyeSBzdHJhaWdodGZvcndhcmQgY2hhbmdlIGluIHRoZSBncmFuZCBzY2hlbWUgb2YgdGhpbmdzLgoKTXkgbmV4dCBzdGVwIGlzIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIEFuZCBteSBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlIGNlbnRlcmVkIGFyb3VuZCBgY2lycnVzX3BjaV9wcm9iZWAsIHdpdGggdGhlIGBFbmFibGVDb25maWdzYCB0byBpbmNsdWRlIGBEUk1fQ0lSUlVTX1FFTVVgLgoKQnV0IHdhaXQgYSBtaW51dGUsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBgRFJNX0NJUlJVU19RRU1VYCBkb2VzbiYjMzk7dCBoYXZlIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzLiBMZXQmIzM5O3MgcXVpY2tseSByZXZpZXcgYGRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWdgIHRvIGNvbmZpcm0gdGhlcmUgYXJlIG5vIHN1cnByaXNlcyB0aGF0IGNvdWxkIGltcGFjdCB0aGlzIGNvbmZpZ3VyYXRpb24uIEJldHRlciBzYWZlIHRoYW4gc29ycnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEUk1fQ0lSUlVTX1FFTVUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWc9Mjc9Y29uZmlnIERSTV9CT0NIU1xuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWctMzgtXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnOjM5OmNvbmZpZyBEUk1fQ0lSUlVTX1FFTVVcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWctNDAtXHR0cmlzdGF0ZSBcJiMzNDtDaXJydXMgZHJpdmVyIGZvciBRRU1VIGVtdWxhdGVkIGRldmljZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMzozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTI1NgoJCQkJCQkJb3V0cHV0OiA5NgoJCQkJCQkJdGhvdWdodHM6IDE4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDaXJydXMgUUVNVSBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgYXQgdGhlIHJlbGV2YW50IGNvZGUgc25pcHBldC4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgYERSTV9DSVJSVVNfUUVNVWAgY29uZmlndXJhdGlvbiBvcHRpb24gaGVyZS4gQ2xlYXJseSwgdGhpcyBpcyBmb3IgdGhlIENpcnJ1cyBkcml2ZXIgd2hlbiB1c2luZyBhIFFFTVUgZW11bGF0ZWQgZGV2aWNlLiBUaGUgZGVwZW5kZW5jaWVzIGFyZSBzdHJhaWdodGZvcndhcmQ6IGBEUk1gIGFuZCBgUENJYC4gTm8gc3VycHJpc2VzIHRoZXJlOyB0aGVzZSBhcmUgcHJldHR5IGZ1bmRhbWVudGFsLiBHaXZlbiB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgSSYjMzk7bGwgZ28gYWhlYWQgYW5kIHNldCBgRFJNX0NJUlJVU19RRU1VYCBpbiBFbmFibGVDb25maWdzLgoKTm93LCBsZXQmIzM5O3Mgc3RlcCBiYWNrIGZvciBhIG1vbWVudCwgaXMgdGhlcmUgYW55dGhpbmcgZWxzZSBJIG5lZWQgdG8gZm9jdXMgb24/IE5vcGUsIGxvb2tzIGxpa2UgdGhpcyBpcyB0aGUgZXh0ZW50IG9mIGl0LgoKSXMgdGhpcyBmdXp6YWJsZT8gWWVzLCBpdCYjMzk7cyBhIGRyaXZlciBwcm9iZSBmdW5jdGlvbiwgYW5kIHdlIGNhbiBnZXQgdGhlcmUgdmlhIFBDSSBkZXZpY2UgaW5qZWN0aW9uLiBUaGlzIG1ha2VzIGl0IGEgc29saWQgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBUaW1lIHRvIGxvZyB0aGUgcmVzdWx0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMzozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RFJNX0NJUlJVU19RRU1VJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2lycnVzX3BjaV9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgZnVuY3Rpb25hbCBjaGVjayBpbiB0aGUgUENJIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBRRU1VIENpcnJ1cyBWR0EgRFJNIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIGNhbiBiZSB0cmlnZ2VyZWQgYnkgaW5qZWN0aW5nIGEgUENJIGRldmljZSB3aXRoIGEgc21hbGwgcmVzb3VyY2UgbGVuZ3RoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEUk1fQ0lSUlVTX1FFTVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjaXJydXNfcGNpX3Byb2JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBmdW5jdGlvbmFsIGNoZWNrIGluIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIFFFTVUgQ2lycnVzIFZHQSBEUk0gZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgY2FuIGJlIHRyaWdnZXJlZCBieSBpbmplY3RpbmcgYSBQQ0kgZGV2aWNlIHdpdGggYSBzbWFsbCByZXNvdXJjZSBsZW5ndGguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjMzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTM6MzM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHNpbXBsZSBib3VuZHMgY2hlY2sgdG8gZW5zdXJlIHRoYXQgdGhlIFBDSSByZXNvdXJjZSBsZW5ndGggaXMgYXQgbGVhc3QgQ0lSUlVTX1ZSQU1fU0laRSBiZWZvcmUgcHJvY2VlZGluZyB3aXRoIHRoZSBwcm9iZS4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBpbnZhbGlkIG1lbW9yeSBtYXBwaW5ncyB3aGVuIGludGVyYWN0aW5nIHdpdGggdGhlIGRldmljZSYjMzk7cyBWUkFNLiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBpbnZhbGlkIG1hcHBpbmdzIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBtZW1vcnkgcHJvdGVjdGlvbnMuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgZG8gbm90IGV4cG9zZSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkbyBub3QgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMGVhN2M1ODFlYTIzNjllYWUzMjI0MDExNWM3ZTJhYWIwNmI3MjkxMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDI1IDEzOjMxOjU5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYyBiL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMKaW5kZXggMDc1MjIxYjQzMWQzNy4uM2JmMjNmY2Y2NTc0OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jCkBAIC01ODIsNiAmIzQzOzU4Miw5IEBAIHN0YXRpYyBpbnQgY2lycnVzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAlzdHJ1Y3QgY2lycnVzX2RldmljZSAqY2lycnVzOwogCWludCByZXQ7CiAKJiM0MzsJaWYgKHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCkgJmx0OyBDSVJSVVNfVlJBTV9TSVpFKQomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CiAJcmV0ID0gYXBlcnR1cmVfcmVtb3ZlX2NvbmZsaWN0aW5nX3BjaV9kZXZpY2VzKHBkZXYsIGNpcnJ1c19kcml2ZXIubmFtZSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMTkKCQkJCQkJCW91dHB1dDogMTQxCgkJCQkJCQl0aG91Z2h0czogMjc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaW4gYGNpcnJ1c19wY2lfcHJvYmVgIGZvciB0aGUgQ2lycnVzIFFFTVUgZHJpdmVyIGFkZHMgYSBzdHJhaWdodGZvcndhcmQgbGVuZ3RoIGNoZWNrOiBgaWYgKHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCkgJmx0OyBDSVJSVVNfVlJBTV9TSVpFKWAuIEVzc2VudGlhbGx5LCBpdCYjMzk7cyB2ZXJpZnlpbmcgdGhhdCB0aGUgc2l6ZSBvZiBQQ0kgcmVzb3VyY2UgMCBpcyBhdCBsZWFzdCBsYXJnZSBlbm91Z2ggdG8gaG9sZCB0aGUgZGVmaW5lZCBWUkFNIHNpemUuIElmIG5vdCwgaXQgcmV0dXJucyBgLUVOT0RFVmAuIFByZXR0eSBiYXNpYyBib3VuZHMgY2hlY2tpbmcsIHJlYWxseS4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIHNlZW1zIHBydWRlbnQuIEl0IGFjdHMgYXMgYSBkZWZlbnNlIGFnYWluc3QgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzIGR1cmluZyBWUkFNIG1hcHBpbmcgb3IgdXNhZ2UuIFdoaWxlIEtBU0FOIG9yIHN0YW5kYXJkIG1lbW9yeSBwcm90ZWN0aW9uIHdvdWxkIGxpa2VseSBjYXRjaCBzdWNoIGlzc3VlcyBkb3duIHRoZSBsaW5lLCB0aGlzIHByZXZlbnRhdGl2ZSBtZWFzdXJlIGlzIGEgZ29vZCBwcmFjdGljZS4gSXQmIzM5O3MgZXNzZW50aWFsbHkgYSBzYW5pdHkgY2hlY2sgb24gdGhlIGhhcmR3YXJlJiMzOTtzIHJlc291cmNlcy4KCkxldCYjMzk7cyBxdWlja2x5IGNvbmZpcm0uIGBwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApYCBnaXZlcyB1cyB0aGUgc2l6ZSBvZiBCQVIgMCwgYW5kIGBDSVJSVVNfVlJBTV9TSVpFYCBpcyBhIGNvbnN0YW50LiBUaGUgcGF0Y2gmIzM5O3Mgb25seSBmdW5jdGlvbiBpcyB0byBlbnN1cmUgdGhhdCB0aGUgYWxsb2NhdGVkIHJlc291cmNlIGlzIG9mIHRoZSBleHBlY3RlZCBtaW5pbXVtIHNpemUuIE5vdywgS01TQU4gaXMgdGhlcmUgdG8gY2F0Y2ggdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFRoaXMgcGF0Y2ggaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB1bmluaXRpYWxpemVkIG1lbW9yeS4gSXQmIzM5O3Mgc29sZWx5IGFib3V0IHJlc291cmNlIHNpemUuCgpUaGVyZWZvcmUsICpOZWVkc0tNU0FOKiBpcyBkZWZpbml0aXZlbHkgKmZhbHNlKiBoZXJlLiBUaGlzIGlzIGEgY2xlYXIgY2FzZSBvZiByZXNvdXJjZSB2YWxpZGF0aW9uLCBub3QgdW5pbml0aWFsaXplZCBtZW1vcnkgcHJvdGVjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTM6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHNpbXBsZSBib3VuZHMgY2hlY2sgdG8gZW5zdXJlIHRoYXQgdGhlIFBDSSByZXNvdXJjZSBsZW5ndGggaXMgYXQgbGVhc3QgQ0lSUlVTX1ZSQU1fU0laRSBiZWZvcmUgcHJvY2VlZGluZyB3aXRoIHRoZSBwcm9iZS4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBpbnZhbGlkIG1lbW9yeSBtYXBwaW5ncyB3aGVuIGludGVyYWN0aW5nIHdpdGggdGhlIGRldmljZSYjMzk7cyBWUkFNLiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBpbnZhbGlkIG1hcHBpbmdzIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBtZW1vcnkgcHJvdGVjdGlvbnMuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgZG8gbm90IGV4cG9zZSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkbyBub3QgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBzaW1wbGUgYm91bmRzIGNoZWNrIHRvIGVuc3VyZSB0aGF0IHRoZSBQQ0kgcmVzb3VyY2UgbGVuZ3RoIGlzIGF0IGxlYXN0IENJUlJVU19WUkFNX1NJWkUgYmVmb3JlIHByb2NlZWRpbmcgd2l0aCB0aGUgcHJvYmUuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgaW52YWxpZCBtZW1vcnkgbWFwcGluZ3Mgd2hlbiBpbnRlcmFjdGluZyB3aXRoIHRoZSBkZXZpY2UmIzM5O3MgVlJBTS4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhbmQgaW52YWxpZCBtYXBwaW5ncyBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgbWVtb3J5IHByb3RlY3Rpb25zLiBUaGUgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIGRvIG5vdCBleHBvc2Uga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBhbmQgZG8gbm90IGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEzOjMyOjAxLjcyMzE2OTE2OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzNjAzMjY2ODExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRSTV9DSVJSVVNfUUVNVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNpcnJ1c19wY2lfcHJvYmVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBzaW1wbGUgYm91bmRzIGNoZWNrIHRvIGVuc3VyZSB0aGF0IHRoZSBQQ0kgcmVzb3VyY2UgbGVuZ3RoIGlzIGF0IGxlYXN0IENJUlJVU19WUkFNX1NJWkUgYmVmb3JlIHByb2NlZWRpbmcgd2l0aCB0aGUgcHJvYmUuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgaW52YWxpZCBtZW1vcnkgbWFwcGluZ3Mgd2hlbiBpbnRlcmFjdGluZyB3aXRoIHRoZSBkZXZpY2UncyBWUkFNLiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBpbnZhbGlkIG1hcHBpbmdzIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBtZW1vcnkgcHJvdGVjdGlvbnMuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgZG8gbm90IGV4cG9zZSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkbyBub3QgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgZnVuY3Rpb25hbCBjaGVjayBpbiB0aGUgUENJIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBRRU1VIENpcnJ1cyBWR0EgRFJNIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIGNhbiBiZSB0cmlnZ2VyZWQgYnkgaW5qZWN0aW5nIGEgUENJIGRldmljZSB3aXRoIGEgc21hbGwgcmVzb3VyY2UgbGVuZ3RoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzozMjowMS43MjMxNzM1MThaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MDg2OTE1NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwZWE3YzU4MWVhMjM2OWVhZTMyMjQwMTE1YzdlMmFhYjA2YjcyOTEyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDI1IDEzOjMxOjU5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jXFxuaW5kZXggMDc1MjIxYjQzMWQzNy4uM2JmMjNmY2Y2NTc0OSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jXFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY1xcbkBAIC01ODIsNiArNTgyLDkgQEAgc3RhdGljIGludCBjaXJydXNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiBcXHRzdHJ1Y3QgY2lycnVzX2RldmljZSAqY2lycnVzO1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4rXFx0aWYgKHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCkgXFx1MDAzYyBDSVJSVVNfVlJBTV9TSVpFKVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuIFxcdHJldCA9IGFwZXJ0dXJlX3JlbW92ZV9jb25mbGljdGluZ19wY2lfZGV2aWNlcyhwZGV2LCBjaXJydXNfZHJpdmVyLm5hbWUpO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzozMjowMy4xMzI1Mjg0NzdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4MDUxNjA4NTYxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUk1fQ0lSUlVTX1FFTVVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjaXJydXNfcGNpX3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGZ1bmN0aW9uYWwgY2hlY2sgaW4gdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiBvZiB0aGUgUUVNVSBDaXJydXMgVkdBIERSTSBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGluamVjdGluZyBhIFBDSSBkZXZpY2Ugd2l0aCBhIHNtYWxsIHJlc291cmNlIGxlbmd0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGVhN2M1ODFlYTIzNjllYWUzMjI0MDExNWM3ZTJhYWIwNmI3MjkxMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDI1IDEzOjMxOjU5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYyBiL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmNcbmluZGV4IDA3NTIyMWI0MzFkMzcuLjNiZjIzZmNmNjU3NDkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jXG5AQCAtNTgyLDYgKzU4Miw5IEBAIHN0YXRpYyBpbnQgY2lycnVzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiBcdHN0cnVjdCBjaXJydXNfZGV2aWNlICpjaXJydXM7XG4gXHRpbnQgcmV0O1xuIFxuK1x0aWYgKHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCkgXHUwMDNjIENJUlJVU19WUkFNX1NJWkUpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuIFx0cmV0ID0gYXBlcnR1cmVfcmVtb3ZlX2NvbmZsaWN0aW5nX3BjaV9kZXZpY2VzKHBkZXYsIGNpcnJ1c19kcml2ZXIubmFtZSk7XG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6MzI6MDMuMTMyNTI5ODE3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzU5NDA3MDY3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZlYXNpYmlsaXR5IG9mIENpcnJ1cyBWR0EgRHJpdmVyIENoYW5nZSoqXG5cbk9rYXksIHNvIHRoZXJlJ3MgYSBwYXRjaCBpbiBgZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY2AgdGhhdCBtb2RpZmllcyB0aGUgYGNpcnJ1c19wY2lfcHJvYmVgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0J3MgYWRkaW5nIGEgY2hlY2s6IGBpZiAocGNpX3Jlc291cmNlX2xlbihwZGV2LCAwKSBcdTAwM2MgQ0lSUlVTX1ZSQU1fU0laRSkgcmV0dXJuIC1FTk9ERVY7YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBhIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uLCB3aGljaCwgaW4gaXRzZWxmLCB3YXJyYW50cyBhIGNsb3NlciBsb29rIGZvciBmdXp6aW5nIHBvdGVudGlhbC4gSXQncyBhIERSTSBkcml2ZXIgZm9yIFFFTVUncyBDaXJydXMgVkdBIGVtdWxhdGlvbiwgbWVhbmluZyBpdCdzIHJlbGV2YW50IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cblxuVGhlIGtleSBxdWVzdGlvbiBpcywgaXMgdGhpcyB3b3J0aCBmdXp6aW5nPyBUaGUgY2hhbmdlIGlzIGluIGBjaXJydXNfcGNpX3Byb2JlYCwgd2hpY2ggZ2l2ZXMgbWUgcGF1c2UuIEkgZG9uJ3QgdHlwaWNhbGx5IHNlZSBzeXprYWxsZXIgZGlyZWN0bHkgZnV6emluZyBQQ0kgcHJvYmUgZnVuY3Rpb25zIHVubGVzcyBpdCdzIGEgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlLCBvciB0aGVyZSdzIFVTQiBvciBQQ0kgaW5qZWN0aW9uIGF0IHBsYXkuIEhvd2V2ZXIsIHNpbmNlIHRoaXMgaXMgKlFFTVUqIHByb3ZpZGluZyB0aGUgQ2lycnVzIFZHQSBkZXZpY2UsIGl0IHdpbGwgbGlrZWx5IGJlIHByb2JlZCBhdCBib290IGlmIHRoZSBkZXZpY2UgaXMgcHJlc2VudC4gVGhhdCdzIGEgcG9pbnQgaW4gZmF2b3Igb2YgZnV6emluZy5cblxuVGhlIGNoYW5nZSBpdHNlbGYgaXMgYSBmYWlybHkgc2ltcGxlIGxlbmd0aCBjaGVjaywgdGhhdCdzIG5vdCBleGFjdGx5IHJpcGUgZm9yIGNvbXBsZXggYnVncywgaG93ZXZlciwgaXQgaXMgd2l0aGluIGEgcHJvYmUgZnVuY3Rpb24sIGFuZCB1bmV4cGVjdGVkIHZhbHVlcyBjb3VsZCBwb3RlbnRpYWxseSB0cmlnZ2VyIGVkZ2UgY2FzZXMuIFRpbWUgdG8gZmluZCBgQ0lSUlVTX1ZSQU1fU0laRWAgYW5kIGBjaXJydXNfcGNpX3Byb2JlYCB0byBzZWUgd2hhdCBpcyBnb2luZyBvbi4gVGhlbiwgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZvciBgY2lycnVzLXFlbXUuY2AgdG8gdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGlzIGNvZGUgaXMgZW5hYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyMiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEzOjMyOjEwLjcyNjYwMjc3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MDE2ODE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNpcnJ1c19wY2lfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jPTU2NT1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kcml2ZXIgY2lycnVzX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTc3LVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NTc4OnN0YXRpYyBpbnQgY2lycnVzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTU3OS1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM9NjY2PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBjaXJydXNfcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNjY4LVxcdC5pZF90YWJsZSA9IHBjaWlkbGlzdCxcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjY2OTpcXHQucHJvYmUgPSBjaXJydXNfcGNpX3Byb2JlLFxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNjcwLVxcdC5yZW1vdmUgPSBjaXJydXNfcGNpX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6MzI6MTAuNzcyNjIxNjQ5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAwMzQ0MDA1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OlxuXG4qKkV4YW1pbmluZyB0aGUgS2NvbmZpZyBmb3IgY2lycnVzLXFlbXUuYyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgQ2lycnVzIFZHQSBlbXVsYXRpb24gaXMgY29uZmlndXJlZCBmb3IgUUVNVS4gVGltZSB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIGxvb2tpbmcgaW4gdGhlIHJpZ2h0IHBsYWNlLCBzcGVjaWZpY2FsbHkgdGhlIEtjb25maWcgZmlsZXMgdGhhdCBjb250cm9sIHRoZSBidWlsZCBvcHRpb25zIGZvciB0aGUgYGNpcnJ1cy1xZW11LmNgIGRyaXZlci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBkZXBlbmRlbmNpZXMgaXQgaGFzLCBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYXNwZWN0cywgYW5kIHdoYXQgdGhlIGRlZmF1bHQgc2V0dGluZ3MgYXJlLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBkcml2ZXIgaXMgYWN0aXZhdGVkLCBwb3RlbnRpYWxseSBkaXNhYmxlZCwgYW5kIHdoaWNoIGZlYXR1cmVzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQgd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudC4gSXQgY291bGQgcmV2ZWFsIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBjb21waWxlLXRpbWUgZmxhZ3Mgb3IgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgY291bGQgYmUgdHdlYWtlZCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIG9yIHN0YWJpbGl0eSwgb3IgaWYgdGhlcmUgaXMgYSBkZXBlbmRlbmN5IG9uIHRoZSBxZW11IHZlcnNpb24sIHdoaWNoIGNhbiBhZmZlY3QgaXRzIHN1cHBvcnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGlzIGRyaXZlciBhbmQgdGhlIG92ZXJhbGwgc3lzdGVtIGNvbmZpZ3VyYXRpb24uIEEgdGhvcm91Z2ggcmV2aWV3IHdpbGwgbWFrZSBzdXJlIHRoYXQgdGhlIHN5c3RlbSBpcyBzZXQgdXAgdG8gc3VwcG9ydCB0aGUgdXNlIG9mIHRoZSBkcml2ZXIgaW4gdGhlIGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDI2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6MzI6MTQuNzc2MDYzMTM3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NTQ0MTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNpcnJ1cy1xZW11XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS90aW55L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vdGlueS9NYWtlZmlsZT01PW9iai0kKENPTkZJR19EUk1fQk9DSFMpXFx0XFx0XFx0Kz0gYm9jaHMub1xcbmRyaXZlcnMvZ3B1L2RybS90aW55L01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX0RSTV9DSVJSVVNfUUVNVSlcXHRcXHQrPSBjaXJydXMtcWVtdS5vXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvTWFrZWZpbGUtNy1vYmotJChDT05GSUdfRFJNX0dNMTJVMzIwKVxcdFxcdCs9IGdtMTJ1MzIwLm9cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTEtXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo1MjojZGVmaW5lIERSSVZFUl9OQU1FIFxcXCJjaXJydXMtcWVtdVxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTUzLSNkZWZpbmUgRFJJVkVSX0RFU0MgXFxcInFlbXUgY2lycnVzIHZnYVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6MzI6MTQuODI0NjEyNDE3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyMTUyODIwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgaXQ6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBDaXJydXMgUUVNVSBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBDaXJydXMgUUVNVSBkcml2ZXIuIFRoZSBmaXJzdCBsb2dpY2FsIHN0ZXAgaXMgYWx3YXlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UsIHRoZSBgS2NvbmZpZ2AgZmlsZXMuIExldCdzIHNlZS4uLiBJJ2xsIHNwZWNpZmljYWxseSBsb29rIGZvciB0aGUgYENPTkZJR19EUk1fQ0lSUlVTX1FFTVVgIG9wdGlvbiB3aXRoaW4gdGhlIGBLY29uZmlnYCBmaWxlcy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY29yZSBsb2dpYywgZGVwZW5kZW5jaWVzLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IGNvbnRleHR1YWwgaW5mb3JtYXRpb24gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yIGFuZCB3aHkgaXQgbWlnaHQgb3IgbWlnaHQgbm90IGJlIGFjdGl2YXRlZC4gRnJvbSB0aGVyZSwgSSBjYW4gYW5hbHl6ZSB0aGUgYXNzb2NpYXRlZCBjb2RlIGJhc2VkIG9uIGl0cyBkZXBlbmRlbmN5IHRyZWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MTUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzozMjoxOC4zNDYxNDI4MTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQyMTM3NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERSTV9DSVJSVVNfUUVNVVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWc9Mjc9Y29uZmlnIERSTV9CT0NIU1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZy0zOC1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnOjM5OmNvbmZpZyBEUk1fQ0lSUlVTX1FFTVVcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnLTQwLVxcdHRyaXN0YXRlIFxcXCJDaXJydXMgZHJpdmVyIGZvciBRRU1VIGVtdWxhdGVkIGRldmljZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6MzI6MTguMzkwMzYwODkyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc5NjgyMjg1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgSSdtIHJlYWR5IHRvIGRpdmUgaW50byB0aGlzLiBMZXQncyBzdGFydCBicmVha2luZyB0aGlzIGRvd24uXG5cbioqVW5wYWNraW5nIHRoZSBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBteSBpbml0aWFsIHJlYWN0aW9uIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGNyaXRpY2FsIGRlcGVuZGVuY2llcyBhdCBwbGF5IGhlcmUuIFRoaXMgaXNuJ3QganVzdCBhYm91dCBhIHN1cmZhY2UtbGV2ZWwgdW5kZXJzdGFuZGluZzsgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBjb3JlIGVsZW1lbnRzIHRoYXQgdW5kZXJwaW4gdGhlIHNpdHVhdGlvbi4gV2hhdCBhcmUgdGhlIHZhcmlhYmxlcyBhbmQgY29uZGl0aW9ucyB0aGF0IGRyaXZlIHRoaXM/IEFyZSB0aGVyZSBhbnkgaGlkZGVuIGFzc3VtcHRpb25zIHRoYXQgbmVlZCB0byBiZSBhZGRyZXNzZWQ/IE15IGZvY3VzIGlzIHRvIGNyZWF0ZSBhIHN0cnVjdHVyZSB0byBidWlsZCBhIHJvYnVzdCBtb2RlbCB0byBleHBsYWluIHRoaXMgcHJvYmxlbS4gVGhpcyBpcyB3aGVyZSBJIHN0YXJ0IHRvIHNlZSB0aGUgYmlnZ2VyIHBpY3R1cmUsIGFuZCB0aGF0J3MgdGhlIG9ubHkgcGxhY2UgdG8gc3RhcnQgdG8gZ28gZGVlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzgzNiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6MzI6MjMuMTg3MTg1ODQ4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzksXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzk6XFx0Y29uZmlnIERSTV9DSVJSVVNfUUVNVVxcbiAgNDA6XFx0XFx0dHJpc3RhdGUgXFxcIkNpcnJ1cyBkcml2ZXIgZm9yIFFFTVUgZW11bGF0ZWQgZGV2aWNlXFxcIlxcbiAgNDE6XFx0XFx0ZGVwZW5kcyBvbiBEUk0gXFx1MDAyNlxcdTAwMjYgUENJXFxuICA0MjpcXHRcXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cXG4gIDQzOlxcdFxcdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxcbiAgNDQ6XFx0XFx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXFxuICA0NTpcXHRcXHRoZWxwXFxuICA0NjpcXHRcXHQgVGhpcyBpcyBhIEtNUyBkcml2ZXIgZm9yIGVtdWxhdGVkIGNpcnJ1cyBkZXZpY2UgaW4gcWVtdS5cXG4gIDQ3OlxcdFxcdCBJdCBpcyAqTk9UKiBpbnRlbmRlZCBmb3IgcmVhbCBjaXJydXMgZGV2aWNlcy4gVGhpcyByZXF1aXJlc1xcbiAgNDg6XFx0XFx0IHRoZSBtb2Rlc2V0dGluZyB1c2Vyc3BhY2UgWC5vcmcgZHJpdmVyLlxcbiAgNDk6XFx0XFxuICA1MDpcXHRcXHQgQ2lycnVzIGlzIG9ic29sZXRlLCB0aGUgaGFyZHdhcmUgd2FzIGRlc2lnbmVkIGluIHRoZSA5MGllc1xcbiAgNTE6XFx0XFx0IGFuZCBjYW4ndCBrZWVwIHVwIHdpdGggdG9kYXlzIG5lZWRzLiAgTW9yZSBiYWNrZ3JvdW5kOlxcbiAgNTI6XFx0XFx0IGh0dHBzOi8vd3d3LmtyYXhlbC5vcmcvYmxvZy8yMDE0LzEwL3FlbXUtdXNpbmctY2lycnVzLWNvbnNpZGVyZWQtaGFybWZ1bC9cXG4gIDUzOlxcdFxcbiAgNTQ6XFx0XFx0IEJldHRlciBhbHRlcm5hdGl2ZXMgYXJlOlxcbiAgNTU6XFx0XFx0ICAgLSBzdGR2Z2EgKERSTV9CT0NIUywgcWVtdSAtdmdhIHN0ZCwgZGVmYXVsdCBpbiBxZW11IDIuMispXFxuICA1NjpcXHRcXHQgICAtIHF4bCAoRFJNX1FYTCwgcWVtdSAtdmdhIHF4bCwgd29ya3MgYmVzdCB3aXRoIHNwaWNlKVxcbiAgNTc6XFx0XFx0ICAgLSB2aXJ0aW8gKERSTV9WSVJUSU9fR1BVKSwgcWVtdSAtdmdhIHZpcnRpbylcXG4gIDU4OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzozMjoyMy4xODcyNDk2ODhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAzMjMzNjc0MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgZm9yIEZ1enppbmcgYGNpcnJ1c19wY2lfcHJvYmVgKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBtb2RpZmllcyBgY2lycnVzX3BjaV9wcm9iZWAsIHdoaWNoIGlzIGEgUENJIHByb2JlIGZ1bmN0aW9uLiBUaGUgcHJvbXB0IGV4cGxpY2l0bHkgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgaXQncyBvbmx5IHRvdWNoaW5nIHRlYXJkb3duIGNhbGxiYWNrcyBsaWtlIGAucmVtb3ZlYCBvciBgLnNodXRkb3duYC4gVGhpcyBpcyBhIGAucHJvYmVgIGZ1bmN0aW9uLCBub3QgYSB0ZWFyZG93biBmdW5jdGlvbiwgc28gd2UncmUgbm90IGltbWVkaWF0ZWx5IG91dC5cblxuVGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiB3ZSAqZWZmZWN0aXZlbHkqIGZ1enogYGNpcnJ1c19wY2lfcHJvYmVgPyBTeXprYWxsZXIgY2FuIGZ1enogUENJIGRldmljZXMsIGVzcGVjaWFsbHkgdGhvc2UgaW5qZWN0ZWQgdmlhIGBzeXpfcGNpX2RldmljZWAsIGJ1dCB0eXBpY2FsbHkgdGhlc2UgcHJvYmUgZnVuY3Rpb25zIHJ1biBvbmNlLCBkdXJpbmcgYm9vdCBvciBob3RwbHVnLiBIb3dldmVyLCB0aGlzIGlzIGZvciBhIFFFTVUgZW11bGF0ZWQgZGV2aWNlLCBhbmQgUUVNVSBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBleGNsdWRlcyB0aGluZ3MgdGhhdCAqYXJlbid0KiByZWFjaGFibGUgaW4gUUVNVSwgc28gdGhhdCdzIGEgY2hlY2sgaW4gdGhlIHBsdXMgY29sdW1uLlxuXG5Ob3csIGlzIGl0ICp3b3J0aCogZnV6emluZz8gVGhlIGFjdHVhbCBjb2RlIGNoYW5nZSBpcyBhIHNpbmdsZSBjaGVjazpcblxuYGBgY1xuXHRpZiAocGNpX3Jlc291cmNlX2xlbihwZGV2LCAwKSBcdTAwM2MgQ0lSUlVTX1ZSQU1fU0laRSlcblx0XHRyZXR1cm4gLUVOT0RFVjtcbmBgYFxuXG5JdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNvIGl0J3Mgbm90IGp1c3QgY29zbWV0aWMuIElmIHdlIGRlY2lkZSBpdCAqaXMqIHdvcnRoIGl0LCB3ZSBuZWVkIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2AuIEZvciBgRm9jdXNTeW1ib2xzYCwgYGNpcnJ1c19wY2lfcHJvYmVgIGlzIHRoZSBvYnZpb3VzIGNob2ljZS4gUHJvYmUgZnVuY3Rpb25zIGFyZW4ndCB1c3VhbGx5IHRhcmdldGVkIGhlYXZpbHkgYmVjYXVzZSBvZiB0aGVpciBzaW5nbGUgZXhlY3V0aW9uLCBidXQgYSBidWcgaGVyZSwgdHJpZ2dlcmVkIGJ5IGEgUENJIGRldmljZSB3aXRoIGEgc21hbGwgcmVzb3VyY2UgbGVuZ3RoLCAqY291bGQqIGJlIHNpZ25pZmljYW50LlxuXG5MZXQncyBzZWUsIGRvZXMgdGhpcyBwYXRjaCBtb2RpZnkgYW55IG90aGVyIGZ1bmN0aW9ucz8gTm9wZSwganVzdCBgY2lycnVzX3BjaV9wcm9iZWAuXG5cbk9rYXksIG5leHQsIGlzIGBjaXJydXNfcGNpX3Byb2JlYCBzdGF0aWM/IFllcywgaXQgaXMuIFRoZSBwcm9tcHQgcHJlZmVycyBub24tc3RhdGljIGVudHJ5IHBvaW50cywgYnV0IHRoZW4gYWdhaW4sIGV2ZW4gdGhvdWdoIGl0J3Mgc3RhdGljLCBpdCdzIGFzc2lnbmVkIHRvIHRoZSBgLnByb2JlYCBmdW5jdGlvbiBwb2ludGVyLCBtZWFuaW5nIGl0J3Mgbm90IGlubGluZWQgYW5kIGhhcyBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBUaGF0IG1ha2VzIGl0IG1vcmUgaW50ZXJlc3RpbmcuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQgbWUgc2NhbiB0aGUgcmVzdCBvZiBgY2lycnVzLXFlbXUuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGlzIGRyaXZlciB0aGF0IG1pZ2h0IGJlIG1vcmUgcHJvbWlzaW5nLCBldmVuIHRob3VnaCB0aGUgcGF0Y2ggaXRzZWxmIG9ubHkgbW9kaWZpZXMgYGNpcnJ1c19wY2lfcHJvYmVgLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM3OSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEzOjMyOjMzLjUxMDYxOTUxOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA4Njg3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXmludCB8XnZvaWQgfF5zdHJ1Y3QgXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01OS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjYwOnN0cnVjdCBjaXJydXNfZGV2aWNlIHtcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTYxLVxcdHN0cnVjdCBkcm1fZGV2aWNlXFx0ICAgICAgIGRldjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6MzI6MzMuNTYxNDkyODc4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3MDM1MDI1MTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkNvbXByZWhlbnNpdmUgRnVuY3Rpb24gUmV2aWV3KipcblxuQWxyaWdodCwgYmVmb3JlIGRpdmluZyB0b28gZGVlcCBpbnRvIHRoaXMgcHJvYmxlbSwgSSB3YW50IHRvIG1ha2Ugc3VyZSBJJ3ZlIGdvdCBhIGhhbmRsZSBvbiAqYWxsKiB0aGUgYXZhaWxhYmxlIHRvb2xzIGFuZCB0aGVpciBjYXBhYmlsaXRpZXMuIExldCdzIHNlZS4uLiBJIG5lZWQgdG8gc3RhcnQgYnkgbWVudGFsbHkgbGlzdGluZyBldmVyeSBmdW5jdGlvbiwgZXZlcnkgc3Vicm91dGluZSwgZXZlcnkgQVBJIGNhbGwsIGV2ZXJ5dGhpbmcgdGhhdCBjb3VsZCBjb25jZWl2YWJseSBiZSByZWxldmFudCB0byB0aGUgdGFzayBhdCBoYW5kLiBUaGlzIGlzbid0IGp1c3QgYSBzdXJmYWNlLWxldmVsIHNjYW47IEkgbmVlZCB0byByZWFsbHkgZGlnIGludG8gdGhlIGRvY3VtZW50YXRpb24gYW5kIHVuZGVyc3RhbmQgdGhlIG51YW5jZXMgb2YgZWFjaCBmdW5jdGlvbi4gV2hhdCBhcmUgdGhlIGlucHV0cywgdGhlIG91dHB1dHMsIHRoZSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLCBhbnkgZWRnZSBjYXNlcyBvciBsaW1pdGF0aW9ucz8gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBsb3ctbGV2ZWwgaW1wbGVtZW50YXRpb25zIHRvby4gSSBzaG91bGQgYWxzbyBjb25zaWRlciBob3cgdGhlc2UgZnVuY3Rpb25zIGludGVyYWN0LCBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cyBvciBkZXBlbmRlbmNpZXMuIFdoYXQgZG9lcyB0aGUgQVBJIGRvY3VtZW50YXRpb24gc2F5PyBBbnkgdGhpcmQtcGFydHkgbGlicmFyaWVzIHRoYXQgbWlnaHQgb2ZmZXIgYSB1c2VmdWwgZnVuY3Rpb24/IFRoaXMgaW5pdGlhbCBpbnZlbnRvcnkgaXMgY3J1Y2lhbCwgb3IgSSdsbCBtaXNzIHNvbWV0aGluZyBmdW5kYW1lbnRhbCBhbmQgd2FzdGUgdGltZSBsYXRlciBjaGFzaW5nIG15IHRhaWwuIEkgbmVlZCBhICpjb21wbGV0ZSogZnVuY3Rpb25hbCBtYXAgYmVmb3JlIHByb2NlZWRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2MTUsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEzOjMyOjUwLjU5NjUyMDIyN1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ0MzI2OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnN0YXRpYy4qIGNpcnJ1c19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jPTYwPXN0cnVjdCBjaXJydXNfZGV2aWNlIHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtODgtXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo4OTpzdGF0aWMgdTggcnJlZ19zZXEoc3RydWN0IGNpcnJ1c19kZXZpY2UgKmNpcnJ1cywgdTggcmVnKVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtOTAte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy05NC1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjk1OnN0YXRpYyB2b2lkIHdyZWdfc2VxKHN0cnVjdCBjaXJydXNfZGV2aWNlICpjaXJydXMsIHU4IHJlZywgdTggdmFsKVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtOTYte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0xMDMtXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzoxMDQ6c3RhdGljIHU4IHJyZWdfY3J0KHN0cnVjdCBjaXJydXNfZGV2aWNlICpjaXJydXMsIHU4IHJlZylcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTEwNS17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTEwOS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjExMDpzdGF0aWMgdm9pZCB3cmVnX2NydChzdHJ1Y3QgY2lycnVzX2RldmljZSAqY2lycnVzLCB1OCByZWcsIHU4IHZhbClcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTExMS17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTExOC1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjExOTpzdGF0aWMgdm9pZCB3cmVnX2dmeChzdHJ1Y3QgY2lycnVzX2RldmljZSAqY2lycnVzLCB1OCByZWcsIHU4IHZhbClcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTEyMC17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTEyNi1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjEyNzpzdGF0aWMgdm9pZCB3cmVnX2hkcihzdHJ1Y3QgY2lycnVzX2RldmljZSAqY2lycnVzLCB1OCB2YWwpXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0xMjgte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0xMzUtXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzoxMzY6c3RhdGljIHZvaWQgY2lycnVzX3NldF9zdGFydF9hZGRyZXNzKHN0cnVjdCBjaXJydXNfZGV2aWNlICpjaXJydXMsIHUzMiBvZmZzZXQpXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0xMzcte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0xNTYtXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzoxNTc6c3RhdGljIHZvaWQgY2lycnVzX21vZGVfc2V0KHN0cnVjdCBjaXJydXNfZGV2aWNlICpjaXJydXMsXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0xNTgtXFx0XFx0XFx0ICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0yMjctXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzoyMjg6c3RhdGljIHZvaWQgY2lycnVzX2Zvcm1hdF9zZXQoc3RydWN0IGNpcnJ1c19kZXZpY2UgKmNpcnJ1cyxcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTIyOS1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICpmb3JtYXQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTI2Ny1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjI2ODpzdGF0aWMgdm9pZCBjaXJydXNfcGl0Y2hfc2V0KHN0cnVjdCBjaXJydXNfZGV2aWNlICpjaXJydXMsIHVuc2lnbmVkIGludCBwaXRjaClcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTI2OS17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTI4Ni1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjI4NzpzdGF0aWMgY29uc3QgdWludDMyX3QgY2lycnVzX3ByaW1hcnlfcGxhbmVfZm9ybWF0c1tdID0ge1xcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtMjg4LVxcdERSTV9GT1JNQVRfUkdCNTY1LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0yOTItXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzoyOTM6c3RhdGljIGNvbnN0IHVpbnQ2NF90IGNpcnJ1c19wcmltYXJ5X3BsYW5lX2Zvcm1hdF9tb2RpZmllcnNbXSA9IHtcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTI5NC1cXHREUk1fRk9STUFUX01PRF9MSU5FQVIsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTI5Ny1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjI5ODpzdGF0aWMgaW50IGNpcnJ1c19wcmltYXJ5X3BsYW5lX2hlbHBlcl9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0yOTktXFx0XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBkcm1fYXRvbWljX2NvbW1pdCAqc3RhdGUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTMyNy1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjMyODpzdGF0aWMgdm9pZCBjaXJydXNfcHJpbWFyeV9wbGFuZV9oZWxwZXJfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSxcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTMyOS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19jb21taXQgKnN0YXRlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0zNjMtXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzozNjQ6c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzIGNpcnJ1c19wcmltYXJ5X3BsYW5lX2hlbHBlcl9mdW5jcyA9IHtcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTM2NS1cXHREUk1fR0VNX1NIQURPV19QTEFORV9IRUxQRVJfRlVOQ1MsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTM2OS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjM3MDpzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBjaXJydXNfcHJpbWFyeV9wbGFuZV9mdW5jcyA9IHtcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTM3MS1cXHQudXBkYXRlX3BsYW5lID0gZHJtX2F0b21pY19oZWxwZXJfdXBkYXRlX3BsYW5lLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0zNzYtXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzozNzc6c3RhdGljIGludCBjaXJydXNfY3J0Y19oZWxwZXJfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywgc3RydWN0IGRybV9hdG9taWNfY29tbWl0ICpzdGF0ZSlcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTM3OC17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTM5MS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjM5MjpzdGF0aWMgdm9pZCBjaXJydXNfY3J0Y19oZWxwZXJfYXRvbWljX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0zOTMtXFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZHJtX2F0b21pY19jb21taXQgKnN0YXRlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy00MTMtXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo0MTQ6c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgY2lycnVzX2NydGNfaGVscGVyX2Z1bmNzID0ge1xcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNDE1LVxcdC5hdG9taWNfY2hlY2sgPSBjaXJydXNfY3J0Y19oZWxwZXJfYXRvbWljX2NoZWNrLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy00MjAtXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo0MjE6c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19mdW5jcyBjaXJydXNfY3J0Y19mdW5jcyA9IHtcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTQyMi1cXHQucmVzZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jcnRjX3Jlc2V0LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy00MzAtXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo0MzE6c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9mdW5jcyBjaXJydXNfZW5jb2Rlcl9mdW5jcyA9IHtcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTQzMi1cXHQuZGVzdHJveSA9IGRybV9lbmNvZGVyX2NsZWFudXAsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTQzNC1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjQzNTpzdGF0aWMgaW50IGNpcnJ1c19jb25uZWN0b3JfaGVscGVyX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNDM2LXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNDQ1LVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NDQ2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgY2lycnVzX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgPSB7XFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy00NDctXFx0LmdldF9tb2RlcyA9IGNpcnJ1c19jb25uZWN0b3JfaGVscGVyX2dldF9tb2RlcyxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNDQ5LVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NDUwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBjaXJydXNfY29ubmVjdG9yX2Z1bmNzID0ge1xcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNDUxLVxcdC5maWxsX21vZGVzID0gZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy00NTctXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo0NTg6c3RhdGljIGludCBjaXJydXNfcGlwZV9pbml0KHN0cnVjdCBjaXJydXNfZGV2aWNlICpjaXJydXMpXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy00NTkte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01MTMtXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo1MTQ6c3RhdGljIGVudW0gZHJtX21vZGVfc3RhdHVzIGNpcnJ1c19tb2RlX2NvbmZpZ19tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01MTUtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTMzLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NTM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNzIGNpcnJ1c19tb2RlX2NvbmZpZ19mdW5jcyA9IHtcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTUzNS1cXHQuZmJfY3JlYXRlID0gZHJtX2dlbV9mYl9jcmVhdGVfd2l0aF9kaXJ0eSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTQwLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NTQxOnN0YXRpYyBpbnQgY2lycnVzX21vZGVfY29uZmlnX2luaXQoc3RydWN0IGNpcnJ1c19kZXZpY2UgKmNpcnJ1cylcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTU0Mi17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jPTU2Mz1ERUZJTkVfRFJNX0dFTV9GT1BTKGNpcnJ1c19mb3BzKTtcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTU2NC1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjU2NTpzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kcml2ZXIgY2lycnVzX2RyaXZlciA9IHtcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTU2Ni1cXHQuZHJpdmVyX2ZlYXR1cmVzID0gRFJJVkVSX01PREVTRVQgfCBEUklWRVJfR0VNIHwgRFJJVkVSX0FUT01JQyxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTc3LVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NTc4OnN0YXRpYyBpbnQgY2lycnVzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTU3OS1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNjM2LVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NjM3OnN0YXRpYyB2b2lkIGNpcnJ1c19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNjM4LXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNjQ0LVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NjQ1OnN0YXRpYyB2b2lkIGNpcnJ1c19wY2lfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy02NDYte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYz02NTA9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHBjaWlkbGlzdFtdID0ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy02NjUtXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo2NjY6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGNpcnJ1c19wY2lfZHJpdmVyID0ge1xcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNjY3LVxcdC5uYW1lID0gRFJJVkVSX05BTUUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEzOjMyOjUwLjY0MDk1NjgxNloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMjE0OTA1ODI2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgQ2lycnVzIERyaXZlciBQcm9iZSBGdW5jdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IHNpbmNlICphbGwqIHRoZSBmdW5jdGlvbnMgSSBzZWUgYXJlIHN0YXRpYywgd2Ugd291bGRuJ3QgbmVlZCB0byBjb25zaWRlciBmdXp6aW5nLiBCdXQgdGhlbiBJIHJlbWVtYmVyIGBjaXJydXNfcGNpX3Byb2JlYCBpcyBzdGF0aWMsICpidXQqIGl0J3MgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoZSBkcml2ZXIuIFRoYXQncyBhIGtleSBkaXN0aW5jdGlvbi5cblxuVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgcHJlZmVycmluZyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIFNpbmNlIGBjaXJydXNfcGNpX3Byb2JlYCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIGl0IGlzbid0IGlubGluZWQgYW5kICpkb2VzKiBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sLiBTbywgaXQgaXMgcG90ZW50aWFsbHkgZnV6emFibGUuXG5cbkJ1dCwgaXMgaXQgKndvcnRoKiBmdXp6aW5nPyBUaGUgYWN0dWFsIGNvZGUgY2hhbmdlIGlzIGp1c3QgYSBzaW1wbGUgY2hlY2s6XG5cbmBgYGNcblx0aWYgKHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCkgXHUwMDNjIENJUlJVU19WUkFNX1NJWkUpXG5cdFx0cmV0dXJuIC1FTk9ERVY7XG5gYGBcblxuSXQncyBhIHN0cmFpZ2h0Zm9yd2FyZCBzaXplIGNvbXBhcmlzb24uIE5vIGNvbXBsZXggbG9naWMsIHN0YXRlIG1hY2hpbmVzLCBvciBkYXRhIHN0cnVjdHVyZXMgYXJlIGludm9sdmVkLiBIb3dldmVyLCB0aGlzIGNoZWNrICpmaXhlcyogYW4gYXNzdW1wdGlvbiBhYm91dCByZXNvdXJjZSBzaXplIHdoaWNoIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyBhY2Nlc3MuIFRoZSBwcm9tcHQgc2F5cyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCBhcyBzdWNoIGl0IGRvZXMgd2FycmFudCBmdXp6aW5nLlxuXG5JZiBJJ20gZ29pbmcgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAsIEkgaGF2ZSB0byBpZGVudGlmeSBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgLiBgY2lycnVzX3BjaV9wcm9iZWAgaXMgdGhlIG9idmlvdXMgYEZvY3VzU3ltYm9sYC4gVGhlIGBFbmFibGVDb25maWdzYCBzaG91bGQgYmUgYERSTV9DSVJSVVNfUUVNVWAuIEkgZG91YmxlLWNoZWNrZWQgdGhlIGRlcGVuZGVuY2llcy4gVGhpcyBpbmNsdWRlcyBgRFJNYCBhbmQgYFBDSWAuXG5cbkkndmUgYWxzbyBjaGVja2VkIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIG9yIG1vZGlmaWVkIGZ1bmN0aW9ucy4gVGhlcmUgYXJlbid0LlxuXG5Ob3csIHRoZSBuaWdnbGluZyBkb3VidC4uLiBpcyB0aGlzICpyZWFsbHkqIHdvcnRoIHRoZSBlZmZvcnQ/IEp1c3QgYSBzaW5nbGUgYGlmYCBzdGF0ZW1lbnQgaW4gYSBgcHJvYmVgIGZ1bmN0aW9uPyBCdXQgdGhlbiBJIHJlYWxpemVkLCB5ZXMsIGl0IGlzLiBUaGUgZnV6emluZyB0YXJnZXQgaXMgdGhlIGJyYW5jaCB3aXRoaW4gYGNpcnJ1c19wY2lfcHJvYmVgLiBUaGlzIG1lYW5zIHRoZSBmdXp6ZXIgbmVlZHMgdG8gYmUgYWJsZSB0byBnZW5lcmF0ZSBQQ0kgZGV2aWNlcyB3aXRoIGRpZmZlcmluZyByZXNvdXJjZSBsZW5ndGhzIHRvIGhpdCB0aGlzIGNvbmRpdGlvbi4gVGhhdCBpcyB3ZWxsIHdpdGhpbiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBmdXp6ZXIsIHNwZWNpZmljYWxseSBgc3l6X3BjaV9kZXZpY2VgLlxuXG5TbywgaXQncyBhIFwieWVzXCIuIEknbSBjb25maXJtaW5nIHRoYXQgdGhlIHBhdGNoIGlzIFdvcnRoRnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTA3OCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzozMzoxMi43OTAwMTY5NjVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMjQxMTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNJUlJVU19WUkFNX1NJWkVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTU3LSNkZWZpbmUgQ0lSUlVTX01BWF9QSVRDSCAoMHgxRkYgXFx1MDAzY1xcdTAwM2MgMykgICAgICAvKiAoNDA5NiAtIDEpIFxcdTAwMjYgfjExMWIgYnl0ZXMgKi9cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjU4OiNkZWZpbmUgQ0lSUlVTX1ZSQU1fU0laRSAoNCAqIDEwMjQgKiAxMDI0KSAvKiA0IE1CICovXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01OS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM9Mjk4PXN0YXRpYyBpbnQgY2lycnVzX3ByaW1hcnlfcGxhbmVfaGVscGVyX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtMzIxLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6MzIyOlxcdGVsc2UgaWYgKGZiLVxcdTAwM2VwaXRjaGVzWzBdIFxcdTAwM2UgQ0lSUlVTX1ZSQU1fU0laRSAvIGZiLVxcdTAwM2VoZWlnaHQpXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0zMjMtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jPTUxND1zdGF0aWMgZW51bSBkcm1fbW9kZV9zdGF0dXMgY2lycnVzX21vZGVfY29uZmlnX21vZGVfdmFsaWQoc3RydWN0IGRybV9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTI3LVxcdFxcdHJldHVybiBNT0RFX0JBRF9XSURUSDsgLyogbWF4aW11bSBwcm9ncmFtbWFibGUgcGl0Y2ggKi9cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjUyODpcXHRpZiAocGl0Y2ggXFx1MDAzZSBDSVJSVVNfVlJBTV9TSVpFIC8gbW9kZS1cXHUwMDNldmRpc3BsYXkpXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01MjktXFx0XFx0cmV0dXJuIE1PREVfTUVNO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYz01Nzg9c3RhdGljIGludCBjaXJydXNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01ODQtXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo1ODU6XFx0aWYgKHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCkgXFx1MDAzYyBDSVJSVVNfVlJBTV9TSVpFKVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTg2LVxcdFxcdHJldHVybiAtRU5PREVWO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzozMzoxMi44NTIyNjI3NDRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkxOTg2MDk0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQQ0kgUmVzb3VyY2UgQWxsb2NhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBkb2N1bWVudGF0aW9uIGNsZWFybHkgc3RhdGVzIHRoZSBsaW1pdCBhcyA0TUIuIEFuZCBJIHVuZGVyc3RhbmQsIGlmIHRoZSBQQ0kgcmVzb3VyY2UgbGVuZ3RoIHJlcG9ydGVkIGlzIHNtYWxsZXIgdGhhbiB0aGF0IHRocmVzaG9sZCwgdGhlbiBpdCBhcHByb3ByaWF0ZWx5IHJldHVybnMgYC1FTk9ERVZgLiBUaGlzIGlzIGEgdmVyeSBzdHJhaWdodGZvcndhcmQgY2hhbmdlIGluIHRoZSBncmFuZCBzY2hlbWUgb2YgdGhpbmdzLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4gQW5kIG15IGBGb2N1c1N5bWJvbHNgIHdpbGwgYmUgY2VudGVyZWQgYXJvdW5kIGBjaXJydXNfcGNpX3Byb2JlYCwgd2l0aCB0aGUgYEVuYWJsZUNvbmZpZ3NgIHRvIGluY2x1ZGUgYERSTV9DSVJSVVNfUUVNVWAuXG5cbkJ1dCB3YWl0IGEgbWludXRlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYERSTV9DSVJSVVNfUUVNVWAgZG9lc24ndCBoYXZlIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzLiBMZXQncyBxdWlja2x5IHJldmlldyBgZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZ2AgdG8gY29uZmlybSB0aGVyZSBhcmUgbm8gc3VycHJpc2VzIHRoYXQgY291bGQgaW1wYWN0IHRoaXMgY29uZmlndXJhdGlvbi4gQmV0dGVyIHNhZmUgdGhhbiBzb3JyeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA4MTgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6MzM6MTcuNzcyMTI1ODA5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzI1NzE1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRFJNX0NJUlJVU19RRU1VXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZz0yNz1jb25maWcgRFJNX0JPQ0hTXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnLTM4LVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWc6Mzk6Y29uZmlnIERSTV9DSVJSVVNfUUVNVVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWctNDAtXFx0dHJpc3RhdGUgXFxcIkNpcnJ1cyBkcml2ZXIgZm9yIFFFTVUgZW11bGF0ZWQgZGV2aWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzozMzoxNy44MTUzODU5MThaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc1MDE1Mzk4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDaXJydXMgUUVNVSBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIGF0IHRoZSByZWxldmFudCBjb2RlIHNuaXBwZXQuIFdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgYERSTV9DSVJSVVNfUUVNVWAgY29uZmlndXJhdGlvbiBvcHRpb24gaGVyZS4gQ2xlYXJseSwgdGhpcyBpcyBmb3IgdGhlIENpcnJ1cyBkcml2ZXIgd2hlbiB1c2luZyBhIFFFTVUgZW11bGF0ZWQgZGV2aWNlLiBUaGUgZGVwZW5kZW5jaWVzIGFyZSBzdHJhaWdodGZvcndhcmQ6IGBEUk1gIGFuZCBgUENJYC4gTm8gc3VycHJpc2VzIHRoZXJlOyB0aGVzZSBhcmUgcHJldHR5IGZ1bmRhbWVudGFsLiBHaXZlbiB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgSSdsbCBnbyBhaGVhZCBhbmQgc2V0IGBEUk1fQ0lSUlVTX1FFTVVgIGluIEVuYWJsZUNvbmZpZ3MuXG5cbk5vdywgbGV0J3Mgc3RlcCBiYWNrIGZvciBhIG1vbWVudCwgaXMgdGhlcmUgYW55dGhpbmcgZWxzZSBJIG5lZWQgdG8gZm9jdXMgb24/IE5vcGUsIGxvb2tzIGxpa2UgdGhpcyBpcyB0aGUgZXh0ZW50IG9mIGl0LlxuXG5JcyB0aGlzIGZ1enphYmxlPyBZZXMsIGl0J3MgYSBkcml2ZXIgcHJvYmUgZnVuY3Rpb24sIGFuZCB3ZSBjYW4gZ2V0IHRoZXJlIHZpYSBQQ0kgZGV2aWNlIGluamVjdGlvbi4gVGhpcyBtYWtlcyBpdCBhIHNvbGlkIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gVGltZSB0byBsb2cgdGhlIHJlc3VsdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyNTYsIk91dHB1dFRva2VucyI6OTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6MzM6MjMuNTY1NTQxOThaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzA2ODQ0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFJNX0NJUlJVU19RRU1VXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2lycnVzX3BjaV9wcm9iZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBmdW5jdGlvbmFsIGNoZWNrIGluIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIFFFTVUgQ2lycnVzIFZHQSBEUk0gZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgY2FuIGJlIHRyaWdnZXJlZCBieSBpbmplY3RpbmcgYSBQQ0kgZGV2aWNlIHdpdGggYSBzbWFsbCByZXNvdXJjZSBsZW5ndGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFJNX0NJUlJVU19RRU1VXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2lycnVzX3BjaV9wcm9iZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBmdW5jdGlvbmFsIGNoZWNrIGluIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIFFFTVUgQ2lycnVzIFZHQSBEUk0gZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgY2FuIGJlIHRyaWdnZXJlZCBieSBpbmplY3RpbmcgYSBQQ0kgZGV2aWNlIHdpdGggYSBzbWFsbCByZXNvdXJjZSBsZW5ndGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEzOjMzOjIzLjY0ODYxODA5OFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE2Nzc4MDk5NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzozMzoyMy42NDkwNDMxMThaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTE2NzczODEyNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBzaW1wbGUgYm91bmRzIGNoZWNrIHRvIGVuc3VyZSB0aGF0IHRoZSBQQ0kgcmVzb3VyY2UgbGVuZ3RoIGlzIGF0IGxlYXN0IENJUlJVU19WUkFNX1NJWkUgYmVmb3JlIHByb2NlZWRpbmcgd2l0aCB0aGUgcHJvYmUuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgaW52YWxpZCBtZW1vcnkgbWFwcGluZ3Mgd2hlbiBpbnRlcmFjdGluZyB3aXRoIHRoZSBkZXZpY2UncyBWUkFNLiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBpbnZhbGlkIG1hcHBpbmdzIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBtZW1vcnkgcHJvdGVjdGlvbnMuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgZG8gbm90IGV4cG9zZSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkbyBub3QgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwZWE3YzU4MWVhMjM2OWVhZTMyMjQwMTE1YzdlMmFhYjA2YjcyOTEyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMTM6MzE6NTkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jIGIvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY1xuaW5kZXggMDc1MjIxYjQzMWQzNy4uM2JmMjNmY2Y2NTc0OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmNcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmNcbkBAIC01ODIsNiArNTgyLDkgQEAgc3RhdGljIGludCBjaXJydXNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFx0c3RydWN0IGNpcnJ1c19kZXZpY2UgKmNpcnJ1cztcbiBcdGludCByZXQ7XG4gXG4rXHRpZiAocGNpX3Jlc291cmNlX2xlbihwZGV2LCAwKSBcdTAwM2MgQ0lSUlVTX1ZSQU1fU0laRSlcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXG4gXHRyZXQgPSBhcGVydHVyZV9yZW1vdmVfY29uZmxpY3RpbmdfcGNpX2RldmljZXMocGRldiwgY2lycnVzX2RyaXZlci5uYW1lKTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzozMzoyMy42NDkwNDM5MzhaIiwiU2VxIjoyMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE2NzczNjI5MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGluIGBjaXJydXNfcGNpX3Byb2JlYCBmb3IgdGhlIENpcnJ1cyBRRU1VIGRyaXZlciBhZGRzIGEgc3RyYWlnaHRmb3J3YXJkIGxlbmd0aCBjaGVjazogYGlmIChwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApIFx1MDAzYyBDSVJSVVNfVlJBTV9TSVpFKWAuIEVzc2VudGlhbGx5LCBpdCdzIHZlcmlmeWluZyB0aGF0IHRoZSBzaXplIG9mIFBDSSByZXNvdXJjZSAwIGlzIGF0IGxlYXN0IGxhcmdlIGVub3VnaCB0byBob2xkIHRoZSBkZWZpbmVkIFZSQU0gc2l6ZS4gSWYgbm90LCBpdCByZXR1cm5zIGAtRU5PREVWYC4gUHJldHR5IGJhc2ljIGJvdW5kcyBjaGVja2luZywgcmVhbGx5LlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdGhpcyBzZWVtcyBwcnVkZW50LiBJdCBhY3RzIGFzIGEgZGVmZW5zZSBhZ2FpbnN0IHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2VzcyBkdXJpbmcgVlJBTSBtYXBwaW5nIG9yIHVzYWdlLiBXaGlsZSBLQVNBTiBvciBzdGFuZGFyZCBtZW1vcnkgcHJvdGVjdGlvbiB3b3VsZCBsaWtlbHkgY2F0Y2ggc3VjaCBpc3N1ZXMgZG93biB0aGUgbGluZSwgdGhpcyBwcmV2ZW50YXRpdmUgbWVhc3VyZSBpcyBhIGdvb2QgcHJhY3RpY2UuIEl0J3MgZXNzZW50aWFsbHkgYSBzYW5pdHkgY2hlY2sgb24gdGhlIGhhcmR3YXJlJ3MgcmVzb3VyY2VzLlxuXG5MZXQncyBxdWlja2x5IGNvbmZpcm0uIGBwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApYCBnaXZlcyB1cyB0aGUgc2l6ZSBvZiBCQVIgMCwgYW5kIGBDSVJSVVNfVlJBTV9TSVpFYCBpcyBhIGNvbnN0YW50LiBUaGUgcGF0Y2gncyBvbmx5IGZ1bmN0aW9uIGlzIHRvIGVuc3VyZSB0aGF0IHRoZSBhbGxvY2F0ZWQgcmVzb3VyY2UgaXMgb2YgdGhlIGV4cGVjdGVkIG1pbmltdW0gc2l6ZS4gTm93LCBLTVNBTiBpcyB0aGVyZSB0byBjYXRjaCB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhpcyBwYXRjaCBoYXMgbm90aGluZyB0byBkbyB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBJdCdzIHNvbGVseSBhYm91dCByZXNvdXJjZSBzaXplLlxuXG5UaGVyZWZvcmUsICpOZWVkc0tNU0FOKiBpcyBkZWZpbml0aXZlbHkgKmZhbHNlKiBoZXJlLiBUaGlzIGlzIGEgY2xlYXIgY2FzZSBvZiByZXNvdXJjZSB2YWxpZGF0aW9uLCBub3QgdW5pbml0aWFsaXplZCBtZW1vcnkgcHJvdGVjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAxOSwiT3V0cHV0VG9rZW5zIjoxNDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzozMzozNS4zMjY0MTAxNTlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjk1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBzaW1wbGUgYm91bmRzIGNoZWNrIHRvIGVuc3VyZSB0aGF0IHRoZSBQQ0kgcmVzb3VyY2UgbGVuZ3RoIGlzIGF0IGxlYXN0IENJUlJVU19WUkFNX1NJWkUgYmVmb3JlIHByb2NlZWRpbmcgd2l0aCB0aGUgcHJvYmUuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgaW52YWxpZCBtZW1vcnkgbWFwcGluZ3Mgd2hlbiBpbnRlcmFjdGluZyB3aXRoIHRoZSBkZXZpY2UncyBWUkFNLiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBpbnZhbGlkIG1hcHBpbmdzIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBtZW1vcnkgcHJvdGVjdGlvbnMuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgZG8gbm90IGV4cG9zZSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkbyBub3QgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgc2ltcGxlIGJvdW5kcyBjaGVjayB0byBlbnN1cmUgdGhhdCB0aGUgUENJIHJlc291cmNlIGxlbmd0aCBpcyBhdCBsZWFzdCBDSVJSVVNfVlJBTV9TSVpFIGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggdGhlIHByb2JlLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIGludmFsaWQgbWVtb3J5IG1hcHBpbmdzIHdoZW4gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgZGV2aWNlJ3MgVlJBTS4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhbmQgaW52YWxpZCBtYXBwaW5ncyBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgbWVtb3J5IHByb3RlY3Rpb25zLiBUaGUgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIGRvIG5vdCBleHBvc2Uga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBhbmQgZG8gbm90IGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowz7zpf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-25 12:39:32 +0000 UTC FinishedAt: 2026-08-25 13:33:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "1ff8d3e3165fd077faa4259fd232bdddcd30249f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM_CIRRUS_QEMU" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "1ff8d3e3165fd077faa4259fd232bdddcd30249f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DRM_CIRRUS_QEMU" ], "series_id": "125adc4a-cb5c-4dbe-a3e7-05381b5113e9" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "cirrus_pci_probe" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTV9DSVJSVVNfUUVNVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NpcnJ1c19wY2lfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgc2ltcGxlIGJvdW5kcyBjaGVjayB0byBlbnN1cmUgdGhhdCB0aGUgUENJIHJlc291cmNlIGxlbmd0aCBpcyBhdCBsZWFzdCBDSVJSVVNfVlJBTV9TSVpFIGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggdGhlIHByb2JlLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIGludmFsaWQgbWVtb3J5IG1hcHBpbmdzIHdoZW4gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgZGV2aWNlJiMzOTtzIFZSQU0uIE91dC1vZi1ib3VuZHMgYWNjZXNzZXMgYW5kIGludmFsaWQgbWFwcGluZ3MgYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQga2VybmVsIG1lbW9yeSBwcm90ZWN0aW9ucy4gVGhlIGNoYW5nZXMgZG8gbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBkbyBub3QgZXhwb3NlIGtlcm5lbCBtZW1vcnkgdG8gdXNlciBzcGFjZSwgYW5kIGRvIG5vdCBpbnZvbHZlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgZnVuY3Rpb25hbCBjaGVjayBpbiB0aGUgUENJIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBRRU1VIENpcnJ1cyBWR0EgRFJNIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIGNhbiBiZSB0cmlnZ2VyZWQgYnkgaW5qZWN0aW5nIGEgUENJIGRldmljZSB3aXRoIGEgc21hbGwgcmVzb3VyY2UgbGVuZ3RoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjMyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMGVhN2M1ODFlYTIzNjllYWUzMjI0MDExNWM3ZTJhYWIwNmI3MjkxMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDI1IDEzOjMxOjU5IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jXG5pbmRleCAwNzUyMjFiNDMxZDM3Li4zYmYyM2ZjZjY1NzQ5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY1xuQEAgLTU4Miw2ICYjNDM7NTgyLDkgQEAgc3RhdGljIGludCBjaXJydXNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFx0c3RydWN0IGNpcnJ1c19kZXZpY2UgKmNpcnJ1cztcbiBcdGludCByZXQ7XG4gXG4mIzQzO1x0aWYgKHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCkgXHUwMDNjIENJUlJVU19WUkFNX1NJWkUpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT0RFVjtcbiYjNDM7XG4gXHRyZXQgPSBhcGVydHVyZV9yZW1vdmVfY29uZmxpY3RpbmdfcGNpX2RldmljZXMocGRldiwgY2lycnVzX2RyaXZlci5uYW1lKTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTM6MzI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RSTV9DSVJSVVNfUUVNVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NpcnJ1c19wY2lfcHJvYmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIGZ1bmN0aW9uYWwgY2hlY2sgaW4gdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiBvZiB0aGUgUUVNVSBDaXJydXMgVkdBIERSTSBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGluamVjdGluZyBhIFBDSSBkZXZpY2Ugd2l0aCBhIHNtYWxsIHJlc291cmNlIGxlbmd0aC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDBlYTdjNTgxZWEyMzY5ZWFlMzIyNDAxMTVjN2UyYWFiMDZiNzI5MTIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAyNSAxMzozMTo1OSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jCmluZGV4IDA3NTIyMWI0MzFkMzcuLjNiZjIzZmNmNjU3NDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYwpAQCAtNTgyLDYgJiM0Mzs1ODIsOSBAQCBzdGF0aWMgaW50IGNpcnJ1c19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAJc3RydWN0IGNpcnJ1c19kZXZpY2UgKmNpcnJ1czsKIAlpbnQgcmV0OwogCiYjNDM7CWlmIChwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApICZsdDsgQ0lSUlVTX1ZSQU1fU0laRSkKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwogCXJldCA9IGFwZXJ0dXJlX3JlbW92ZV9jb25mbGljdGluZ19wY2lfZGV2aWNlcyhwZGV2LCBjaXJydXNfZHJpdmVyLm5hbWUpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMjIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBGZWFzaWJpbGl0eSBvZiBDaXJydXMgVkdBIERyaXZlciBDaGFuZ2UqKgoKT2theSwgc28gdGhlcmUmIzM5O3MgYSBwYXRjaCBpbiBgZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY2AgdGhhdCBtb2RpZmllcyB0aGUgYGNpcnJ1c19wY2lfcHJvYmVgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIGFkZGluZyBhIGNoZWNrOiBgaWYgKHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCkgJmx0OyBDSVJSVVNfVlJBTV9TSVpFKSByZXR1cm4gLUVOT0RFVjtgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgZHJpdmVyJiMzOTtzIHByb2JlIGZ1bmN0aW9uLCB3aGljaCwgaW4gaXRzZWxmLCB3YXJyYW50cyBhIGNsb3NlciBsb29rIGZvciBmdXp6aW5nIHBvdGVudGlhbC4gSXQmIzM5O3MgYSBEUk0gZHJpdmVyIGZvciBRRU1VJiMzOTtzIENpcnJ1cyBWR0EgZW11bGF0aW9uLCBtZWFuaW5nIGl0JiMzOTtzIHJlbGV2YW50IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KClRoZSBrZXkgcXVlc3Rpb24gaXMsIGlzIHRoaXMgd29ydGggZnV6emluZz8gVGhlIGNoYW5nZSBpcyBpbiBgY2lycnVzX3BjaV9wcm9iZWAsIHdoaWNoIGdpdmVzIG1lIHBhdXNlLiBJIGRvbiYjMzk7dCB0eXBpY2FsbHkgc2VlIHN5emthbGxlciBkaXJlY3RseSBmdXp6aW5nIFBDSSBwcm9iZSBmdW5jdGlvbnMgdW5sZXNzIGl0JiMzOTtzIGEgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlLCBvciB0aGVyZSYjMzk7cyBVU0Igb3IgUENJIGluamVjdGlvbiBhdCBwbGF5LiBIb3dldmVyLCBzaW5jZSB0aGlzIGlzICpRRU1VKiBwcm92aWRpbmcgdGhlIENpcnJ1cyBWR0EgZGV2aWNlLCBpdCB3aWxsIGxpa2VseSBiZSBwcm9iZWQgYXQgYm9vdCBpZiB0aGUgZGV2aWNlIGlzIHByZXNlbnQuIFRoYXQmIzM5O3MgYSBwb2ludCBpbiBmYXZvciBvZiBmdXp6aW5nLgoKVGhlIGNoYW5nZSBpdHNlbGYgaXMgYSBmYWlybHkgc2ltcGxlIGxlbmd0aCBjaGVjaywgdGhhdCYjMzk7cyBub3QgZXhhY3RseSByaXBlIGZvciBjb21wbGV4IGJ1Z3MsIGhvd2V2ZXIsIGl0IGlzIHdpdGhpbiBhIHByb2JlIGZ1bmN0aW9uLCBhbmQgdW5leHBlY3RlZCB2YWx1ZXMgY291bGQgcG90ZW50aWFsbHkgdHJpZ2dlciBlZGdlIGNhc2VzLiBUaW1lIHRvIGZpbmQgYENJUlJVU19WUkFNX1NJWkVgIGFuZCBgY2lycnVzX3BjaV9wcm9iZWAgdG8gc2VlIHdoYXQgaXMgZ29pbmcgb24uIFRoZW4sIEkgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmb3IgYGNpcnJ1cy1xZW11LmNgIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhpcyBjb2RlIGlzIGVuYWJsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTM6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2lycnVzX3BjaV9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYz01NjU9c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZHJpdmVyIGNpcnJ1c19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01NzctXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjU3ODpzdGF0aWMgaW50IGNpcnJ1c19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTU3OS1cdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jPTY2Nj1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgY2lycnVzX3BjaV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy02NjgtXHQuaWRfdGFibGUgPSBwY2lpZGxpc3QsXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjY2OTpcdC5wcm9iZSA9IGNpcnJ1c19wY2lfcHJvYmUsXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTY3MC1cdC5yZW1vdmUgPSBjaXJydXNfcGNpX3JlbW92ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMzozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDI2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkV4YW1pbmluZyB0aGUgS2NvbmZpZyBmb3IgY2lycnVzLXFlbXUuYyoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIENpcnJ1cyBWR0EgZW11bGF0aW9uIGlzIGNvbmZpZ3VyZWQgZm9yIFFFTVUuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBLY29uZmlnIGZpbGVzLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O20gbG9va2luZyBpbiB0aGUgcmlnaHQgcGxhY2UsIHNwZWNpZmljYWxseSB0aGUgS2NvbmZpZyBmaWxlcyB0aGF0IGNvbnRyb2wgdGhlIGJ1aWxkIG9wdGlvbnMgZm9yIHRoZSBgY2lycnVzLXFlbXUuY2AgZHJpdmVyLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGRlcGVuZGVuY2llcyBpdCBoYXMsIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBhc3BlY3RzLCBhbmQgd2hhdCB0aGUgZGVmYXVsdCBzZXR0aW5ncyBhcmUuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGRyaXZlciBpcyBhY3RpdmF0ZWQsIHBvdGVudGlhbGx5IGRpc2FibGVkLCBhbmQgd2hpY2ggZmVhdHVyZXMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdCB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50LiBJdCBjb3VsZCByZXZlYWwgaWYgdGhlcmUgYXJlIHNwZWNpZmljIGNvbXBpbGUtdGltZSBmbGFncyBvciBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBjb3VsZCBiZSB0d2Vha2VkIHRvIGltcHJvdmUgcGVyZm9ybWFuY2Ugb3Igc3RhYmlsaXR5LCBvciBpZiB0aGVyZSBpcyBhIGRlcGVuZGVuY3kgb24gdGhlIHFlbXUgdmVyc2lvbiwgd2hpY2ggY2FuIGFmZmVjdCBpdHMgc3VwcG9ydC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoaXMgZHJpdmVyIGFuZCB0aGUgb3ZlcmFsbCBzeXN0ZW0gY29uZmlndXJhdGlvbi4gQSB0aG9yb3VnaCByZXZpZXcgd2lsbCBtYWtlIHN1cmUgdGhhdCB0aGUgc3lzdGVtIGlzIHNldCB1cCB0byBzdXBwb3J0IHRoZSB1c2Ugb2YgdGhlIGRyaXZlciBpbiB0aGUgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTM6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2lycnVzLXFlbXUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdGlueS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3RpbnkvTWFrZWZpbGU9NT1vYmotJChDT05GSUdfRFJNX0JPQ0hTKVx0XHRcdCYjNDM7PSBib2Nocy5vXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19EUk1fQ0lSUlVTX1FFTVUpXHRcdCYjNDM7PSBjaXJydXMtcWVtdS5vXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9NYWtlZmlsZS03LW9iai0kKENPTkZJR19EUk1fR00xMlUzMjApXHRcdCYjNDM7PSBnbTEydTMyMC5vXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01MS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NTI6I2RlZmluZSBEUklWRVJfTkFNRSBcJiMzNDtjaXJydXMtcWVtdVwmIzM0O1xuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01My0jZGVmaW5lIERSSVZFUl9ERVNDIFwmIzM0O3FlbXUgY2lycnVzIHZnYVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MTUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyBpdDoKCioqRGlnZ2luZyBpbnRvIHRoZSBDaXJydXMgUUVNVSBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgQ2lycnVzIFFFTVUgZHJpdmVyLiBUaGUgZmlyc3QgbG9naWNhbCBzdGVwIGlzIGFsd2F5cyB0byBnbyBzdHJhaWdodCB0byB0aGUgc291cmNlLCB0aGUgYEtjb25maWdgIGZpbGVzLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O2xsIHNwZWNpZmljYWxseSBsb29rIGZvciB0aGUgYENPTkZJR19EUk1fQ0lSUlVTX1FFTVVgIG9wdGlvbiB3aXRoaW4gdGhlIGBLY29uZmlnYCBmaWxlcy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY29yZSBsb2dpYywgZGVwZW5kZW5jaWVzLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IGNvbnRleHR1YWwgaW5mb3JtYXRpb24gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yIGFuZCB3aHkgaXQgbWlnaHQgb3IgbWlnaHQgbm90IGJlIGFjdGl2YXRlZC4gRnJvbSB0aGVyZSwgSSBjYW4gYW5hbHl6ZSB0aGUgYXNzb2NpYXRlZCBjb2RlIGJhc2VkIG9uIGl0cyBkZXBlbmRlbmN5IHRyZWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTM6MzI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERSTV9DSVJSVVNfUUVNVSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZz0yNz1jb25maWcgRFJNX0JPQ0hTXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZy0zOC1cbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWc6Mzk6Y29uZmlnIERSTV9DSVJSVVNfUUVNVVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZy00MC1cdHRyaXN0YXRlIFwmIzM0O0NpcnJ1cyBkcml2ZXIgZm9yIFFFTVUgZW11bGF0ZWQgZGV2aWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTM6MzI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgzNgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIEkmIzM5O20gcmVhZHkgdG8gZGl2ZSBpbnRvIHRoaXMuIExldCYjMzk7cyBzdGFydCBicmVha2luZyB0aGlzIGRvd24uCgoqKlVucGFja2luZyB0aGUgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIG15IGluaXRpYWwgcmVhY3Rpb24gaXMgdG8gZmlndXJlIG91dCB0aGUgY3JpdGljYWwgZGVwZW5kZW5jaWVzIGF0IHBsYXkgaGVyZS4gVGhpcyBpc24mIzM5O3QganVzdCBhYm91dCBhIHN1cmZhY2UtbGV2ZWwgdW5kZXJzdGFuZGluZzsgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBjb3JlIGVsZW1lbnRzIHRoYXQgdW5kZXJwaW4gdGhlIHNpdHVhdGlvbi4gV2hhdCBhcmUgdGhlIHZhcmlhYmxlcyBhbmQgY29uZGl0aW9ucyB0aGF0IGRyaXZlIHRoaXM/IEFyZSB0aGVyZSBhbnkgaGlkZGVuIGFzc3VtcHRpb25zIHRoYXQgbmVlZCB0byBiZSBhZGRyZXNzZWQ/IE15IGZvY3VzIGlzIHRvIGNyZWF0ZSBhIHN0cnVjdHVyZSB0byBidWlsZCBhIHJvYnVzdCBtb2RlbCB0byBleHBsYWluIHRoaXMgcHJvYmxlbS4gVGhpcyBpcyB3aGVyZSBJIHN0YXJ0IHRvIHNlZSB0aGUgYmlnZ2VyIHBpY3R1cmUsIGFuZCB0aGF0JiMzOTtzIHRoZSBvbmx5IHBsYWNlIHRvIHN0YXJ0IHRvIGdvIGRlZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM5LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzk6XHRjb25maWcgRFJNX0NJUlJVU19RRU1VXG4gIDQwOlx0XHR0cmlzdGF0ZSBcJiMzNDtDaXJydXMgZHJpdmVyIGZvciBRRU1VIGVtdWxhdGVkIGRldmljZVwmIzM0O1xuICA0MTpcdFx0ZGVwZW5kcyBvbiBEUk0gXHUwMDI2XHUwMDI2IFBDSVxuICA0MjpcdFx0c2VsZWN0IERSTV9DTElFTlRfU0VMRUNUSU9OXG4gIDQzOlx0XHRzZWxlY3QgRFJNX0tNU19IRUxQRVJcbiAgNDQ6XHRcdHNlbGVjdCBEUk1fR0VNX1NITUVNX0hFTFBFUlxuICA0NTpcdFx0aGVscFxuICA0NjpcdFx0IFRoaXMgaXMgYSBLTVMgZHJpdmVyIGZvciBlbXVsYXRlZCBjaXJydXMgZGV2aWNlIGluIHFlbXUuXG4gIDQ3Olx0XHQgSXQgaXMgKk5PVCogaW50ZW5kZWQgZm9yIHJlYWwgY2lycnVzIGRldmljZXMuIFRoaXMgcmVxdWlyZXNcbiAgNDg6XHRcdCB0aGUgbW9kZXNldHRpbmcgdXNlcnNwYWNlIFgub3JnIGRyaXZlci5cbiAgNDk6XHRcbiAgNTA6XHRcdCBDaXJydXMgaXMgb2Jzb2xldGUsIHRoZSBoYXJkd2FyZSB3YXMgZGVzaWduZWQgaW4gdGhlIDkwaWVzXG4gIDUxOlx0XHQgYW5kIGNhbiYjMzk7dCBrZWVwIHVwIHdpdGggdG9kYXlzIG5lZWRzLiAgTW9yZSBiYWNrZ3JvdW5kOlxuICA1MjpcdFx0IGh0dHBzOi8vd3d3LmtyYXhlbC5vcmcvYmxvZy8yMDE0LzEwL3FlbXUtdXNpbmctY2lycnVzLWNvbnNpZGVyZWQtaGFybWZ1bC9cbiAgNTM6XHRcbiAgNTQ6XHRcdCBCZXR0ZXIgYWx0ZXJuYXRpdmVzIGFyZTpcbiAgNTU6XHRcdCAgIC0gc3RkdmdhIChEUk1fQk9DSFMsIHFlbXUgLXZnYSBzdGQsIGRlZmF1bHQgaW4gcWVtdSAyLjImIzQzOylcbiAgNTY6XHRcdCAgIC0gcXhsIChEUk1fUVhMLCBxZW11IC12Z2EgcXhsLCB3b3JrcyBiZXN0IHdpdGggc3BpY2UpXG4gIDU3Olx0XHQgICAtIHZpcnRpbyAoRFJNX1ZJUlRJT19HUFUpLCBxZW11IC12Z2EgdmlydGlvKVxuICA1ODpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMzozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Mzc5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNTc3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIGZvciBGdXp6aW5nIGBjaXJydXNfcGNpX3Byb2JlYCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIG1vZGlmaWVzIGBjaXJydXNfcGNpX3Byb2JlYCwgd2hpY2ggaXMgYSBQQ0kgcHJvYmUgZnVuY3Rpb24uIFRoZSBwcm9tcHQgZXhwbGljaXRseSBzYXlzIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYCBpZiBpdCYjMzk7cyBvbmx5IHRvdWNoaW5nIHRlYXJkb3duIGNhbGxiYWNrcyBsaWtlIGAucmVtb3ZlYCBvciBgLnNodXRkb3duYC4gVGhpcyBpcyBhIGAucHJvYmVgIGZ1bmN0aW9uLCBub3QgYSB0ZWFyZG93biBmdW5jdGlvbiwgc28gd2UmIzM5O3JlIG5vdCBpbW1lZGlhdGVseSBvdXQuCgpUaGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIHdlICplZmZlY3RpdmVseSogZnV6eiBgY2lycnVzX3BjaV9wcm9iZWA/IFN5emthbGxlciBjYW4gZnV6eiBQQ0kgZGV2aWNlcywgZXNwZWNpYWxseSB0aG9zZSBpbmplY3RlZCB2aWEgYHN5el9wY2lfZGV2aWNlYCwgYnV0IHR5cGljYWxseSB0aGVzZSBwcm9iZSBmdW5jdGlvbnMgcnVuIG9uY2UsIGR1cmluZyBib290IG9yIGhvdHBsdWcuIEhvd2V2ZXIsIHRoaXMgaXMgZm9yIGEgUUVNVSBlbXVsYXRlZCBkZXZpY2UsIGFuZCBRRU1VIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IGV4Y2x1ZGVzIHRoaW5ncyB0aGF0ICphcmVuJiMzOTt0KiByZWFjaGFibGUgaW4gUUVNVSwgc28gdGhhdCYjMzk7cyBhIGNoZWNrIGluIHRoZSBwbHVzIGNvbHVtbi4KCk5vdywgaXMgaXQgKndvcnRoKiBmdXp6aW5nPyBUaGUgYWN0dWFsIGNvZGUgY2hhbmdlIGlzIGEgc2luZ2xlIGNoZWNrOgoKYGBgYwoJaWYgKHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCkgJmx0OyBDSVJSVVNfVlJBTV9TSVpFKQoJCXJldHVybiAtRU5PREVWOwpgYGAKCkl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNvIGl0JiMzOTtzIG5vdCBqdXN0IGNvc21ldGljLiBJZiB3ZSBkZWNpZGUgaXQgKmlzKiB3b3J0aCBpdCwgd2UgbmVlZCBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgLiBGb3IgYEZvY3VzU3ltYm9sc2AsIGBjaXJydXNfcGNpX3Byb2JlYCBpcyB0aGUgb2J2aW91cyBjaG9pY2UuIFByb2JlIGZ1bmN0aW9ucyBhcmVuJiMzOTt0IHVzdWFsbHkgdGFyZ2V0ZWQgaGVhdmlseSBiZWNhdXNlIG9mIHRoZWlyIHNpbmdsZSBleGVjdXRpb24sIGJ1dCBhIGJ1ZyBoZXJlLCB0cmlnZ2VyZWQgYnkgYSBQQ0kgZGV2aWNlIHdpdGggYSBzbWFsbCByZXNvdXJjZSBsZW5ndGgsICpjb3VsZCogYmUgc2lnbmlmaWNhbnQuCgpMZXQmIzM5O3Mgc2VlLCBkb2VzIHRoaXMgcGF0Y2ggbW9kaWZ5IGFueSBvdGhlciBmdW5jdGlvbnM/IE5vcGUsIGp1c3QgYGNpcnJ1c19wY2lfcHJvYmVgLgoKT2theSwgbmV4dCwgaXMgYGNpcnJ1c19wY2lfcHJvYmVgIHN0YXRpYz8gWWVzLCBpdCBpcy4gVGhlIHByb21wdCBwcmVmZXJzIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzLCBidXQgdGhlbiBhZ2FpbiwgZXZlbiB0aG91Z2ggaXQmIzM5O3Mgc3RhdGljLCBpdCYjMzk7cyBhc3NpZ25lZCB0byB0aGUgYC5wcm9iZWAgZnVuY3Rpb24gcG9pbnRlciwgbWVhbmluZyBpdCYjMzk7cyBub3QgaW5saW5lZCBhbmQgaGFzIGEgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3MuIFRoYXQgbWFrZXMgaXQgbW9yZSBpbnRlcmVzdGluZy4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQgbWUgc2NhbiB0aGUgcmVzdCBvZiBgY2lycnVzLXFlbXUuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGlzIGRyaXZlciB0aGF0IG1pZ2h0IGJlIG1vcmUgcHJvbWlzaW5nLCBldmVuIHRob3VnaCB0aGUgcGF0Y2ggaXRzZWxmIG9ubHkgbW9kaWZpZXMgYGNpcnJ1c19wY2lfcHJvYmVgLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG1pc3MgYW55dGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15pbnQgfF52b2lkIHxec3RydWN0ICYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01OS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NjA6c3RydWN0IGNpcnJ1c19kZXZpY2Uge1xuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy02MS1cdHN0cnVjdCBkcm1fZGV2aWNlXHQgICAgICAgZGV2O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMzozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjE1CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkNvbXByZWhlbnNpdmUgRnVuY3Rpb24gUmV2aWV3KioKCkFscmlnaHQsIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAgaW50byB0aGlzIHByb2JsZW0sIEkgd2FudCB0byBtYWtlIHN1cmUgSSYjMzk7dmUgZ290IGEgaGFuZGxlIG9uICphbGwqIHRoZSBhdmFpbGFibGUgdG9vbHMgYW5kIHRoZWlyIGNhcGFiaWxpdGllcy4gTGV0JiMzOTtzIHNlZS4uLiBJIG5lZWQgdG8gc3RhcnQgYnkgbWVudGFsbHkgbGlzdGluZyBldmVyeSBmdW5jdGlvbiwgZXZlcnkgc3Vicm91dGluZSwgZXZlcnkgQVBJIGNhbGwsIGV2ZXJ5dGhpbmcgdGhhdCBjb3VsZCBjb25jZWl2YWJseSBiZSByZWxldmFudCB0byB0aGUgdGFzayBhdCBoYW5kLiBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgc3VyZmFjZS1sZXZlbCBzY2FuOyBJIG5lZWQgdG8gcmVhbGx5IGRpZyBpbnRvIHRoZSBkb2N1bWVudGF0aW9uIGFuZCB1bmRlcnN0YW5kIHRoZSBudWFuY2VzIG9mIGVhY2ggZnVuY3Rpb24uIFdoYXQgYXJlIHRoZSBpbnB1dHMsIHRoZSBvdXRwdXRzLCB0aGUgcG90ZW50aWFsIHNpZGUgZWZmZWN0cywgYW55IGVkZ2UgY2FzZXMgb3IgbGltaXRhdGlvbnM/IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGxvdy1sZXZlbCBpbXBsZW1lbnRhdGlvbnMgdG9vLiBJIHNob3VsZCBhbHNvIGNvbnNpZGVyIGhvdyB0aGVzZSBmdW5jdGlvbnMgaW50ZXJhY3QsIGFuZCBwb3RlbnRpYWwgY29uZmxpY3RzIG9yIGRlcGVuZGVuY2llcy4gV2hhdCBkb2VzIHRoZSBBUEkgZG9jdW1lbnRhdGlvbiBzYXk/IEFueSB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMgdGhhdCBtaWdodCBvZmZlciBhIHVzZWZ1bCBmdW5jdGlvbj8gVGhpcyBpbml0aWFsIGludmVudG9yeSBpcyBjcnVjaWFsLCBvciBJJiMzOTtsbCBtaXNzIHNvbWV0aGluZyBmdW5kYW1lbnRhbCBhbmQgd2FzdGUgdGltZSBsYXRlciBjaGFzaW5nIG15IHRhaWwuIEkgbmVlZCBhICpjb21wbGV0ZSogZnVuY3Rpb25hbCBtYXAgYmVmb3JlIHByb2NlZWRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O15zdGF0aWMuKiBjaXJydXNfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jPTYwPXN0cnVjdCBjaXJydXNfZGV2aWNlIHtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTg4LVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo4OTpzdGF0aWMgdTggcnJlZ19zZXEoc3RydWN0IGNpcnJ1c19kZXZpY2UgKmNpcnJ1cywgdTggcmVnKVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy05MC17XG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy05NC1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6OTU6c3RhdGljIHZvaWQgd3JlZ19zZXEoc3RydWN0IGNpcnJ1c19kZXZpY2UgKmNpcnJ1cywgdTggcmVnLCB1OCB2YWwpXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTk2LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTEwMy1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6MTA0OnN0YXRpYyB1OCBycmVnX2NydChzdHJ1Y3QgY2lycnVzX2RldmljZSAqY2lycnVzLCB1OCByZWcpXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTEwNS17XG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0xMDktXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjExMDpzdGF0aWMgdm9pZCB3cmVnX2NydChzdHJ1Y3QgY2lycnVzX2RldmljZSAqY2lycnVzLCB1OCByZWcsIHU4IHZhbClcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtMTExLXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTExOC1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6MTE5OnN0YXRpYyB2b2lkIHdyZWdfZ2Z4KHN0cnVjdCBjaXJydXNfZGV2aWNlICpjaXJydXMsIHU4IHJlZywgdTggdmFsKVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0xMjAte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtMTI2LVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzoxMjc6c3RhdGljIHZvaWQgd3JlZ19oZHIoc3RydWN0IGNpcnJ1c19kZXZpY2UgKmNpcnJ1cywgdTggdmFsKVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0xMjgte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtMTM1LVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzoxMzY6c3RhdGljIHZvaWQgY2lycnVzX3NldF9zdGFydF9hZGRyZXNzKHN0cnVjdCBjaXJydXNfZGV2aWNlICpjaXJydXMsIHUzMiBvZmZzZXQpXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTEzNy17XG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0xNTYtXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjE1NzpzdGF0aWMgdm9pZCBjaXJydXNfbW9kZV9zZXQoc3RydWN0IGNpcnJ1c19kZXZpY2UgKmNpcnJ1cyxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtMTU4LVx0XHRcdCAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSlcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTIyNy1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6MjI4OnN0YXRpYyB2b2lkIGNpcnJ1c19mb3JtYXRfc2V0KHN0cnVjdCBjaXJydXNfZGV2aWNlICpjaXJydXMsXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTIyOS1cdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICpmb3JtYXQpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0yNjctXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjI2ODpzdGF0aWMgdm9pZCBjaXJydXNfcGl0Y2hfc2V0KHN0cnVjdCBjaXJydXNfZGV2aWNlICpjaXJydXMsIHVuc2lnbmVkIGludCBwaXRjaClcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtMjY5LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTI4Ni1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6Mjg3OnN0YXRpYyBjb25zdCB1aW50MzJfdCBjaXJydXNfcHJpbWFyeV9wbGFuZV9mb3JtYXRzW10gPSB7XG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTI4OC1cdERSTV9GT1JNQVRfUkdCNTY1LFxuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtMjkyLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzoyOTM6c3RhdGljIGNvbnN0IHVpbnQ2NF90IGNpcnJ1c19wcmltYXJ5X3BsYW5lX2Zvcm1hdF9tb2RpZmllcnNbXSA9IHtcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtMjk0LVx0RFJNX0ZPUk1BVF9NT0RfTElORUFSLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtMjk3LVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzoyOTg6c3RhdGljIGludCBjaXJydXNfcHJpbWFyeV9wbGFuZV9oZWxwZXJfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0yOTktXHRcdFx0XHRcdFx0ICAgIHN0cnVjdCBkcm1fYXRvbWljX2NvbW1pdCAqc3RhdGUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0zMjctXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjMyODpzdGF0aWMgdm9pZCBjaXJydXNfcHJpbWFyeV9wbGFuZV9oZWxwZXJfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtMzI5LVx0XHRcdFx0XHRcdCAgICAgIHN0cnVjdCBkcm1fYXRvbWljX2NvbW1pdCAqc3RhdGUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0zNjMtXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjM2NDpzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgY2lycnVzX3ByaW1hcnlfcGxhbmVfaGVscGVyX2Z1bmNzID0ge1xuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0zNjUtXHREUk1fR0VNX1NIQURPV19QTEFORV9IRUxQRVJfRlVOQ1MsXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0zNjktXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjM3MDpzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBjaXJydXNfcHJpbWFyeV9wbGFuZV9mdW5jcyA9IHtcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtMzcxLVx0LnVwZGF0ZV9wbGFuZSA9IGRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9wbGFuZSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTM3Ni1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6Mzc3OnN0YXRpYyBpbnQgY2lycnVzX2NydGNfaGVscGVyX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdCBkcm1fYXRvbWljX2NvbW1pdCAqc3RhdGUpXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTM3OC17XG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0zOTEtXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjM5MjpzdGF0aWMgdm9pZCBjaXJydXNfY3J0Y19oZWxwZXJfYXRvbWljX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTM5My1cdFx0XHRcdFx0ICAgICBzdHJ1Y3QgZHJtX2F0b21pY19jb21taXQgKnN0YXRlKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNDEzLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo0MTQ6c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgY2lycnVzX2NydGNfaGVscGVyX2Z1bmNzID0ge1xuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy00MTUtXHQuYXRvbWljX2NoZWNrID0gY2lycnVzX2NydGNfaGVscGVyX2F0b21pY19jaGVjayxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTQyMC1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NDIxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfZnVuY3MgY2lycnVzX2NydGNfZnVuY3MgPSB7XG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTQyMi1cdC5yZXNldCA9IGRybV9hdG9taWNfaGVscGVyX2NydGNfcmVzZXQsXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy00MzAtXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjQzMTpzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2Z1bmNzIGNpcnJ1c19lbmNvZGVyX2Z1bmNzID0ge1xuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy00MzItXHQuZGVzdHJveSA9IGRybV9lbmNvZGVyX2NsZWFudXAsXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy00MzQtXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjQzNTpzdGF0aWMgaW50IGNpcnJ1c19jb25uZWN0b3JfaGVscGVyX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy00MzYte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNDQ1LVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo0NDY6c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyBjaXJydXNfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyA9IHtcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNDQ3LVx0LmdldF9tb2RlcyA9IGNpcnJ1c19jb25uZWN0b3JfaGVscGVyX2dldF9tb2Rlcyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTQ0OS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NDUwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBjaXJydXNfY29ubmVjdG9yX2Z1bmNzID0ge1xuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy00NTEtXHQuZmlsbF9tb2RlcyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2Rlcyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTQ1Ny1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NDU4OnN0YXRpYyBpbnQgY2lycnVzX3BpcGVfaW5pdChzdHJ1Y3QgY2lycnVzX2RldmljZSAqY2lycnVzKVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy00NTkte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTEzLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo1MTQ6c3RhdGljIGVudW0gZHJtX21vZGVfc3RhdHVzIGNpcnJ1c19tb2RlX2NvbmZpZ19tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTUxNS1cdFx0XHRcdFx0XHRcdCAgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01MzMtXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjUzNDpzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9tb2RlX2NvbmZpZ19mdW5jcyBjaXJydXNfbW9kZV9jb25maWdfZnVuY3MgPSB7XG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTUzNS1cdC5mYl9jcmVhdGUgPSBkcm1fZ2VtX2ZiX2NyZWF0ZV93aXRoX2RpcnR5LFxuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTQwLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo1NDE6c3RhdGljIGludCBjaXJydXNfbW9kZV9jb25maWdfaW5pdChzdHJ1Y3QgY2lycnVzX2RldmljZSAqY2lycnVzKVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01NDIte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM9NTYzPURFRklORV9EUk1fR0VNX0ZPUFMoY2lycnVzX2ZvcHMpO1xuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01NjQtXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjU2NTpzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kcml2ZXIgY2lycnVzX2RyaXZlciA9IHtcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTY2LVx0LmRyaXZlcl9mZWF0dXJlcyA9IERSSVZFUl9NT0RFU0VUIHwgRFJJVkVSX0dFTSB8IERSSVZFUl9BVE9NSUMsXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01NzctXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjU3ODpzdGF0aWMgaW50IGNpcnJ1c19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTU3OS1cdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTYzNi1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NjM3OnN0YXRpYyB2b2lkIGNpcnJ1c19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy02Mzgte1xuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNjQ0LVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo2NDU6c3RhdGljIHZvaWQgY2lycnVzX3BjaV9zaHV0ZG93bihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNjQ2LXtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jPTY1MD1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcGNpaWRsaXN0W10gPSB7XG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy02NjUtXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjY2NjpzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgY2lycnVzX3BjaV9kcml2ZXIgPSB7XG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTY2Ny1cdC5uYW1lID0gRFJJVkVSX05BTUUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwNzgKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA2MjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBEZWNpc2lvbiBmb3IgdGhlIENpcnJ1cyBEcml2ZXIgUHJvYmUgRnVuY3Rpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IHNpbmNlICphbGwqIHRoZSBmdW5jdGlvbnMgSSBzZWUgYXJlIHN0YXRpYywgd2Ugd291bGRuJiMzOTt0IG5lZWQgdG8gY29uc2lkZXIgZnV6emluZy4gQnV0IHRoZW4gSSByZW1lbWJlciBgY2lycnVzX3BjaV9wcm9iZWAgaXMgc3RhdGljLCAqYnV0KiBpdCYjMzk7cyB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgdGhlIGRyaXZlci4gVGhhdCYjMzk7cyBhIGtleSBkaXN0aW5jdGlvbi4KClRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIHByZWZlcnJpbmcgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnRzLiBTaW5jZSBgY2lycnVzX3BjaV9wcm9iZWAgaXMgYXNzaWduZWQgdG8gYSBmdW5jdGlvbiBwb2ludGVyLCBpdCBpc24mIzM5O3QgaW5saW5lZCBhbmQgKmRvZXMqIGhhdmUgYSBkaXN0aW5jdCBzeW1ib2wuIFNvLCBpdCBpcyBwb3RlbnRpYWxseSBmdXp6YWJsZS4KCkJ1dCwgaXMgaXQgKndvcnRoKiBmdXp6aW5nPyBUaGUgYWN0dWFsIGNvZGUgY2hhbmdlIGlzIGp1c3QgYSBzaW1wbGUgY2hlY2s6CgpgYGBjCglpZiAocGNpX3Jlc291cmNlX2xlbihwZGV2LCAwKSAmbHQ7IENJUlJVU19WUkFNX1NJWkUpCgkJcmV0dXJuIC1FTk9ERVY7CmBgYAoKSXQmIzM5O3MgYSBzdHJhaWdodGZvcndhcmQgc2l6ZSBjb21wYXJpc29uLiBObyBjb21wbGV4IGxvZ2ljLCBzdGF0ZSBtYWNoaW5lcywgb3IgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBpbnZvbHZlZC4gSG93ZXZlciwgdGhpcyBjaGVjayAqZml4ZXMqIGFuIGFzc3VtcHRpb24gYWJvdXQgcmVzb3VyY2Ugc2l6ZSB3aGljaCBjb3VsZCBsZWFkIHRvIG91dC1vZi1ib3VuZHMgYWNjZXNzLiBUaGUgcHJvbXB0IHNheXMgdGhhdCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBkcml2ZXIgdGhhdCBjYW4gYmUgcmVhY2hlZCBhbmQgYXMgc3VjaCBpdCBkb2VzIHdhcnJhbnQgZnV6emluZy4KCklmIEkmIzM5O20gZ29pbmcgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAsIEkgaGF2ZSB0byBpZGVudGlmeSBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgLiBgY2lycnVzX3BjaV9wcm9iZWAgaXMgdGhlIG9idmlvdXMgYEZvY3VzU3ltYm9sYC4gVGhlIGBFbmFibGVDb25maWdzYCBzaG91bGQgYmUgYERSTV9DSVJSVVNfUUVNVWAuIEkgZG91YmxlLWNoZWNrZWQgdGhlIGRlcGVuZGVuY2llcy4gVGhpcyBpbmNsdWRlcyBgRFJNYCBhbmQgYFBDSWAuCgpJJiMzOTt2ZSBhbHNvIGNoZWNrZWQgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbnMgb3IgbW9kaWZpZWQgZnVuY3Rpb25zLiBUaGVyZSBhcmVuJiMzOTt0LgoKTm93LCB0aGUgbmlnZ2xpbmcgZG91YnQuLi4gaXMgdGhpcyAqcmVhbGx5KiB3b3J0aCB0aGUgZWZmb3J0PyBKdXN0IGEgc2luZ2xlIGBpZmAgc3RhdGVtZW50IGluIGEgYHByb2JlYCBmdW5jdGlvbj8gQnV0IHRoZW4gSSByZWFsaXplZCwgeWVzLCBpdCBpcy4gVGhlIGZ1enppbmcgdGFyZ2V0IGlzIHRoZSBicmFuY2ggd2l0aGluIGBjaXJydXNfcGNpX3Byb2JlYC4gVGhpcyBtZWFucyB0aGUgZnV6emVyIG5lZWRzIHRvIGJlIGFibGUgdG8gZ2VuZXJhdGUgUENJIGRldmljZXMgd2l0aCBkaWZmZXJpbmcgcmVzb3VyY2UgbGVuZ3RocyB0byBoaXQgdGhpcyBjb25kaXRpb24uIFRoYXQgaXMgd2VsbCB3aXRoaW4gdGhlIGNhcGFiaWxpdGllcyBvZiB0aGUgZnV6emVyLCBzcGVjaWZpY2FsbHkgYHN5el9wY2lfZGV2aWNlYC4KClNvLCBpdCYjMzk7cyBhICYjMzQ7eWVzJiMzNDsuIEkmIzM5O20gY29uZmlybWluZyB0aGF0IHRoZSBwYXRjaCBpcyBXb3J0aEZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NJUlJVU19WUkFNX1NJWkUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTctI2RlZmluZSBDSVJSVVNfTUFYX1BJVENIICgweDFGRiBcdTAwM2NcdTAwM2MgMykgICAgICAvKiAoNDA5NiAtIDEpIFx1MDAyNiB+MTExYiBieXRlcyAqL1xuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo1ODojZGVmaW5lIENJUlJVU19WUkFNX1NJWkUgKDQgKiAxMDI0ICogMTAyNCkgLyogNCBNQiAqL1xuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01OS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jPTI5OD1zdGF0aWMgaW50IGNpcnJ1c19wcmltYXJ5X3BsYW5lX2hlbHBlcl9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsXG4tLVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0zMjEtXHRcdHJldHVybiAtRUlOVkFMO1xuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzozMjI6XHRlbHNlIGlmIChmYi1cdTAwM2VwaXRjaGVzWzBdIFx1MDAzZSBDSVJSVVNfVlJBTV9TSVpFIC8gZmItXHUwMDNlaGVpZ2h0KVxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0zMjMtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM9NTE0PXN0YXRpYyBlbnVtIGRybV9tb2RlX3N0YXR1cyBjaXJydXNfbW9kZV9jb25maWdfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTI3LVx0XHRyZXR1cm4gTU9ERV9CQURfV0lEVEg7IC8qIG1heGltdW0gcHJvZ3JhbW1hYmxlIHBpdGNoICovXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjUyODpcdGlmIChwaXRjaCBcdTAwM2UgQ0lSUlVTX1ZSQU1fU0laRSAvIG1vZGUtXHUwMDNldmRpc3BsYXkpXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTUyOS1cdFx0cmV0dXJuIE1PREVfTUVNO1xuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM9NTc4PXN0YXRpYyBpbnQgY2lycnVzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTU4NC1cbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NTg1Olx0aWYgKHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCkgXHUwMDNjIENJUlJVU19WUkFNX1NJWkUpXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTU4Ni1cdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwODE4CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBDSSBSZXNvdXJjZSBBbGxvY2F0aW9uKioKCk9rYXksIHNvIHRoZSBkb2N1bWVudGF0aW9uIGNsZWFybHkgc3RhdGVzIHRoZSBsaW1pdCBhcyA0TUIuIEFuZCBJIHVuZGVyc3RhbmQsIGlmIHRoZSBQQ0kgcmVzb3VyY2UgbGVuZ3RoIHJlcG9ydGVkIGlzIHNtYWxsZXIgdGhhbiB0aGF0IHRocmVzaG9sZCwgdGhlbiBpdCBhcHByb3ByaWF0ZWx5IHJldHVybnMgYC1FTk9ERVZgLiBUaGlzIGlzIGEgdmVyeSBzdHJhaWdodGZvcndhcmQgY2hhbmdlIGluIHRoZSBncmFuZCBzY2hlbWUgb2YgdGhpbmdzLgoKTXkgbmV4dCBzdGVwIGlzIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIEFuZCBteSBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlIGNlbnRlcmVkIGFyb3VuZCBgY2lycnVzX3BjaV9wcm9iZWAsIHdpdGggdGhlIGBFbmFibGVDb25maWdzYCB0byBpbmNsdWRlIGBEUk1fQ0lSUlVTX1FFTVVgLgoKQnV0IHdhaXQgYSBtaW51dGUsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBgRFJNX0NJUlJVU19RRU1VYCBkb2VzbiYjMzk7dCBoYXZlIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzLiBMZXQmIzM5O3MgcXVpY2tseSByZXZpZXcgYGRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWdgIHRvIGNvbmZpcm0gdGhlcmUgYXJlIG5vIHN1cnByaXNlcyB0aGF0IGNvdWxkIGltcGFjdCB0aGlzIGNvbmZpZ3VyYXRpb24uIEJldHRlciBzYWZlIHRoYW4gc29ycnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBEUk1fQ0lSUlVTX1FFTVUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWc9Mjc9Y29uZmlnIERSTV9CT0NIU1xuLS1cbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWctMzgtXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnOjM5OmNvbmZpZyBEUk1fQ0lSUlVTX1FFTVVcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWctNDAtXHR0cmlzdGF0ZSBcJiMzNDtDaXJydXMgZHJpdmVyIGZvciBRRU1VIGVtdWxhdGVkIGRldmljZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMzozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTI1NgoJCQkJCQkJb3V0cHV0OiA5NgoJCQkJCQkJdGhvdWdodHM6IDE4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDaXJydXMgUUVNVSBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBsb29rZWQgYXQgdGhlIHJlbGV2YW50IGNvZGUgc25pcHBldC4gV2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgYERSTV9DSVJSVVNfUUVNVWAgY29uZmlndXJhdGlvbiBvcHRpb24gaGVyZS4gQ2xlYXJseSwgdGhpcyBpcyBmb3IgdGhlIENpcnJ1cyBkcml2ZXIgd2hlbiB1c2luZyBhIFFFTVUgZW11bGF0ZWQgZGV2aWNlLiBUaGUgZGVwZW5kZW5jaWVzIGFyZSBzdHJhaWdodGZvcndhcmQ6IGBEUk1gIGFuZCBgUENJYC4gTm8gc3VycHJpc2VzIHRoZXJlOyB0aGVzZSBhcmUgcHJldHR5IGZ1bmRhbWVudGFsLiBHaXZlbiB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgSSYjMzk7bGwgZ28gYWhlYWQgYW5kIHNldCBgRFJNX0NJUlJVU19RRU1VYCBpbiBFbmFibGVDb25maWdzLgoKTm93LCBsZXQmIzM5O3Mgc3RlcCBiYWNrIGZvciBhIG1vbWVudCwgaXMgdGhlcmUgYW55dGhpbmcgZWxzZSBJIG5lZWQgdG8gZm9jdXMgb24/IE5vcGUsIGxvb2tzIGxpa2UgdGhpcyBpcyB0aGUgZXh0ZW50IG9mIGl0LgoKSXMgdGhpcyBmdXp6YWJsZT8gWWVzLCBpdCYjMzk7cyBhIGRyaXZlciBwcm9iZSBmdW5jdGlvbiwgYW5kIHdlIGNhbiBnZXQgdGhlcmUgdmlhIFBDSSBkZXZpY2UgaW5qZWN0aW9uLiBUaGlzIG1ha2VzIGl0IGEgc29saWQgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBUaW1lIHRvIGxvZyB0aGUgcmVzdWx0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNSAxMzozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RFJNX0NJUlJVU19RRU1VJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y2lycnVzX3BjaV9wcm9iZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGEgZnVuY3Rpb25hbCBjaGVjayBpbiB0aGUgUENJIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBRRU1VIENpcnJ1cyBWR0EgRFJNIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIGNhbiBiZSB0cmlnZ2VyZWQgYnkgaW5qZWN0aW5nIGEgUENJIGRldmljZSB3aXRoIGEgc21hbGwgcmVzb3VyY2UgbGVuZ3RoLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtEUk1fQ0lSUlVTX1FFTVUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjaXJydXNfcGNpX3Byb2JlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBmdW5jdGlvbmFsIGNoZWNrIGluIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIFFFTVUgQ2lycnVzIFZHQSBEUk0gZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgY2FuIGJlIHRyaWdnZXJlZCBieSBpbmplY3RpbmcgYSBQQ0kgZGV2aWNlIHdpdGggYSBzbWFsbCByZXNvdXJjZSBsZW5ndGguJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjMzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTM6MzM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHNpbXBsZSBib3VuZHMgY2hlY2sgdG8gZW5zdXJlIHRoYXQgdGhlIFBDSSByZXNvdXJjZSBsZW5ndGggaXMgYXQgbGVhc3QgQ0lSUlVTX1ZSQU1fU0laRSBiZWZvcmUgcHJvY2VlZGluZyB3aXRoIHRoZSBwcm9iZS4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBpbnZhbGlkIG1lbW9yeSBtYXBwaW5ncyB3aGVuIGludGVyYWN0aW5nIHdpdGggdGhlIGRldmljZSYjMzk7cyBWUkFNLiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBpbnZhbGlkIG1hcHBpbmdzIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBtZW1vcnkgcHJvdGVjdGlvbnMuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgZG8gbm90IGV4cG9zZSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkbyBub3QgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMGVhN2M1ODFlYTIzNjllYWUzMjI0MDExNWM3ZTJhYWIwNmI3MjkxMgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgQXVnIDI1IDEzOjMxOjU5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYyBiL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMKaW5kZXggMDc1MjIxYjQzMWQzNy4uM2JmMjNmY2Y2NTc0OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jCkBAIC01ODIsNiAmIzQzOzU4Miw5IEBAIHN0YXRpYyBpbnQgY2lycnVzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAlzdHJ1Y3QgY2lycnVzX2RldmljZSAqY2lycnVzOwogCWludCByZXQ7CiAKJiM0MzsJaWYgKHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCkgJmx0OyBDSVJSVVNfVlJBTV9TSVpFKQomIzQzOwkJcmV0dXJuIC1FTk9ERVY7CiYjNDM7CiAJcmV0ID0gYXBlcnR1cmVfcmVtb3ZlX2NvbmZsaWN0aW5nX3BjaV9kZXZpY2VzKHBkZXYsIGNpcnJ1c19kcml2ZXIubmFtZSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI1IDEzOjMzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMTkKCQkJCQkJCW91dHB1dDogMTQxCgkJCQkJCQl0aG91Z2h0czogMjc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaW4gYGNpcnJ1c19wY2lfcHJvYmVgIGZvciB0aGUgQ2lycnVzIFFFTVUgZHJpdmVyIGFkZHMgYSBzdHJhaWdodGZvcndhcmQgbGVuZ3RoIGNoZWNrOiBgaWYgKHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCkgJmx0OyBDSVJSVVNfVlJBTV9TSVpFKWAuIEVzc2VudGlhbGx5LCBpdCYjMzk7cyB2ZXJpZnlpbmcgdGhhdCB0aGUgc2l6ZSBvZiBQQ0kgcmVzb3VyY2UgMCBpcyBhdCBsZWFzdCBsYXJnZSBlbm91Z2ggdG8gaG9sZCB0aGUgZGVmaW5lZCBWUkFNIHNpemUuIElmIG5vdCwgaXQgcmV0dXJucyBgLUVOT0RFVmAuIFByZXR0eSBiYXNpYyBib3VuZHMgY2hlY2tpbmcsIHJlYWxseS4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0aGlzIHNlZW1zIHBydWRlbnQuIEl0IGFjdHMgYXMgYSBkZWZlbnNlIGFnYWluc3QgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzIGR1cmluZyBWUkFNIG1hcHBpbmcgb3IgdXNhZ2UuIFdoaWxlIEtBU0FOIG9yIHN0YW5kYXJkIG1lbW9yeSBwcm90ZWN0aW9uIHdvdWxkIGxpa2VseSBjYXRjaCBzdWNoIGlzc3VlcyBkb3duIHRoZSBsaW5lLCB0aGlzIHByZXZlbnRhdGl2ZSBtZWFzdXJlIGlzIGEgZ29vZCBwcmFjdGljZS4gSXQmIzM5O3MgZXNzZW50aWFsbHkgYSBzYW5pdHkgY2hlY2sgb24gdGhlIGhhcmR3YXJlJiMzOTtzIHJlc291cmNlcy4KCkxldCYjMzk7cyBxdWlja2x5IGNvbmZpcm0uIGBwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApYCBnaXZlcyB1cyB0aGUgc2l6ZSBvZiBCQVIgMCwgYW5kIGBDSVJSVVNfVlJBTV9TSVpFYCBpcyBhIGNvbnN0YW50LiBUaGUgcGF0Y2gmIzM5O3Mgb25seSBmdW5jdGlvbiBpcyB0byBlbnN1cmUgdGhhdCB0aGUgYWxsb2NhdGVkIHJlc291cmNlIGlzIG9mIHRoZSBleHBlY3RlZCBtaW5pbXVtIHNpemUuIE5vdywgS01TQU4gaXMgdGhlcmUgdG8gY2F0Y2ggdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFRoaXMgcGF0Y2ggaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB1bmluaXRpYWxpemVkIG1lbW9yeS4gSXQmIzM5O3Mgc29sZWx5IGFib3V0IHJlc291cmNlIHNpemUuCgpUaGVyZWZvcmUsICpOZWVkc0tNU0FOKiBpcyBkZWZpbml0aXZlbHkgKmZhbHNlKiBoZXJlLiBUaGlzIGlzIGEgY2xlYXIgY2FzZSBvZiByZXNvdXJjZSB2YWxpZGF0aW9uLCBub3QgdW5pbml0aWFsaXplZCBtZW1vcnkgcHJvdGVjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjUgMTM6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBhIHNpbXBsZSBib3VuZHMgY2hlY2sgdG8gZW5zdXJlIHRoYXQgdGhlIFBDSSByZXNvdXJjZSBsZW5ndGggaXMgYXQgbGVhc3QgQ0lSUlVTX1ZSQU1fU0laRSBiZWZvcmUgcHJvY2VlZGluZyB3aXRoIHRoZSBwcm9iZS4gVGhpcyBwcmV2ZW50cyBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBvciBpbnZhbGlkIG1lbW9yeSBtYXBwaW5ncyB3aGVuIGludGVyYWN0aW5nIHdpdGggdGhlIGRldmljZSYjMzk7cyBWUkFNLiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBpbnZhbGlkIG1hcHBpbmdzIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBtZW1vcnkgcHJvdGVjdGlvbnMuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgZG8gbm90IGV4cG9zZSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkbyBub3QgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYSBzaW1wbGUgYm91bmRzIGNoZWNrIHRvIGVuc3VyZSB0aGF0IHRoZSBQQ0kgcmVzb3VyY2UgbGVuZ3RoIGlzIGF0IGxlYXN0IENJUlJVU19WUkFNX1NJWkUgYmVmb3JlIHByb2NlZWRpbmcgd2l0aCB0aGUgcHJvYmUuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgaW52YWxpZCBtZW1vcnkgbWFwcGluZ3Mgd2hlbiBpbnRlcmFjdGluZyB3aXRoIHRoZSBkZXZpY2UmIzM5O3MgVlJBTS4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhbmQgaW52YWxpZCBtYXBwaW5ncyBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgbWVtb3J5IHByb3RlY3Rpb25zLiBUaGUgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIGRvIG5vdCBleHBvc2Uga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBhbmQgZG8gbm90IGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEzOjMyOjAxLjcyMzE2OTE2OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzNjAzMjY2ODExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRSTV9DSVJSVVNfUUVNVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNpcnJ1c19wY2lfcHJvYmVcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBzaW1wbGUgYm91bmRzIGNoZWNrIHRvIGVuc3VyZSB0aGF0IHRoZSBQQ0kgcmVzb3VyY2UgbGVuZ3RoIGlzIGF0IGxlYXN0IENJUlJVU19WUkFNX1NJWkUgYmVmb3JlIHByb2NlZWRpbmcgd2l0aCB0aGUgcHJvYmUuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgaW52YWxpZCBtZW1vcnkgbWFwcGluZ3Mgd2hlbiBpbnRlcmFjdGluZyB3aXRoIHRoZSBkZXZpY2UncyBWUkFNLiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBpbnZhbGlkIG1hcHBpbmdzIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBtZW1vcnkgcHJvdGVjdGlvbnMuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgZG8gbm90IGV4cG9zZSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkbyBub3QgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgZnVuY3Rpb25hbCBjaGVjayBpbiB0aGUgUENJIHByb2JlIGZ1bmN0aW9uIG9mIHRoZSBRRU1VIENpcnJ1cyBWR0EgRFJNIGRyaXZlci4gVGhpcyBjb2RlIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgYW5kIGNhbiBiZSB0cmlnZ2VyZWQgYnkgaW5qZWN0aW5nIGEgUENJIGRldmljZSB3aXRoIGEgc21hbGwgcmVzb3VyY2UgbGVuZ3RoLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzozMjowMS43MjMxNzM1MThaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MDg2OTE1NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAwZWE3YzU4MWVhMjM2OWVhZTMyMjQwMTE1YzdlMmFhYjA2YjcyOTEyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgQXVnIDI1IDEzOjMxOjU5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jXFxuaW5kZXggMDc1MjIxYjQzMWQzNy4uM2JmMjNmY2Y2NTc0OSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jXFxuKysrIGIvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY1xcbkBAIC01ODIsNiArNTgyLDkgQEAgc3RhdGljIGludCBjaXJydXNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbiBcXHRzdHJ1Y3QgY2lycnVzX2RldmljZSAqY2lycnVzO1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4rXFx0aWYgKHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCkgXFx1MDAzYyBDSVJSVVNfVlJBTV9TSVpFKVxcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFxuIFxcdHJldCA9IGFwZXJ0dXJlX3JlbW92ZV9jb25mbGljdGluZ19wY2lfZGV2aWNlcyhwZGV2LCBjaXJydXNfZHJpdmVyLm5hbWUpO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzozMjowMy4xMzI1Mjg0NzdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4MDUxNjA4NTYxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJEUk1fQ0lSUlVTX1FFTVVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjaXJydXNfcGNpX3Byb2JlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBhIGZ1bmN0aW9uYWwgY2hlY2sgaW4gdGhlIFBDSSBwcm9iZSBmdW5jdGlvbiBvZiB0aGUgUUVNVSBDaXJydXMgVkdBIERSTSBkcml2ZXIuIFRoaXMgY29kZSBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGFuZCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGluamVjdGluZyBhIFBDSSBkZXZpY2Ugd2l0aCBhIHNtYWxsIHJlc291cmNlIGxlbmd0aC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGVhN2M1ODFlYTIzNjllYWUzMjI0MDExNWM3ZTJhYWIwNmI3MjkxMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDI1IDEzOjMxOjU5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYyBiL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmNcbmluZGV4IDA3NTIyMWI0MzFkMzcuLjNiZjIzZmNmNjU3NDkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jXG4rKysgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jXG5AQCAtNTgyLDYgKzU4Miw5IEBAIHN0YXRpYyBpbnQgY2lycnVzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiBcdHN0cnVjdCBjaXJydXNfZGV2aWNlICpjaXJydXM7XG4gXHRpbnQgcmV0O1xuIFxuK1x0aWYgKHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCkgXHUwMDNjIENJUlJVU19WUkFNX1NJWkUpXG4rXHRcdHJldHVybiAtRU5PREVWO1xuK1xuIFx0cmV0ID0gYXBlcnR1cmVfcmVtb3ZlX2NvbmZsaWN0aW5nX3BjaV9kZXZpY2VzKHBkZXYsIGNpcnJ1c19kcml2ZXIubmFtZSk7XG4gXHRpZiAocmV0KVxuIFx0XHRyZXR1cm4gcmV0O1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6MzI6MDMuMTMyNTI5ODE3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzU5NDA3MDY3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIEZlYXNpYmlsaXR5IG9mIENpcnJ1cyBWR0EgRHJpdmVyIENoYW5nZSoqXG5cbk9rYXksIHNvIHRoZXJlJ3MgYSBwYXRjaCBpbiBgZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY2AgdGhhdCBtb2RpZmllcyB0aGUgYGNpcnJ1c19wY2lfcHJvYmVgIGZ1bmN0aW9uLiBTcGVjaWZpY2FsbHksIGl0J3MgYWRkaW5nIGEgY2hlY2s6IGBpZiAocGNpX3Jlc291cmNlX2xlbihwZGV2LCAwKSBcdTAwM2MgQ0lSUlVTX1ZSQU1fU0laRSkgcmV0dXJuIC1FTk9ERVY7YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBhIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uLCB3aGljaCwgaW4gaXRzZWxmLCB3YXJyYW50cyBhIGNsb3NlciBsb29rIGZvciBmdXp6aW5nIHBvdGVudGlhbC4gSXQncyBhIERSTSBkcml2ZXIgZm9yIFFFTVUncyBDaXJydXMgVkdBIGVtdWxhdGlvbiwgbWVhbmluZyBpdCdzIHJlbGV2YW50IGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cblxuVGhlIGtleSBxdWVzdGlvbiBpcywgaXMgdGhpcyB3b3J0aCBmdXp6aW5nPyBUaGUgY2hhbmdlIGlzIGluIGBjaXJydXNfcGNpX3Byb2JlYCwgd2hpY2ggZ2l2ZXMgbWUgcGF1c2UuIEkgZG9uJ3QgdHlwaWNhbGx5IHNlZSBzeXprYWxsZXIgZGlyZWN0bHkgZnV6emluZyBQQ0kgcHJvYmUgZnVuY3Rpb25zIHVubGVzcyBpdCdzIGEgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlLCBvciB0aGVyZSdzIFVTQiBvciBQQ0kgaW5qZWN0aW9uIGF0IHBsYXkuIEhvd2V2ZXIsIHNpbmNlIHRoaXMgaXMgKlFFTVUqIHByb3ZpZGluZyB0aGUgQ2lycnVzIFZHQSBkZXZpY2UsIGl0IHdpbGwgbGlrZWx5IGJlIHByb2JlZCBhdCBib290IGlmIHRoZSBkZXZpY2UgaXMgcHJlc2VudC4gVGhhdCdzIGEgcG9pbnQgaW4gZmF2b3Igb2YgZnV6emluZy5cblxuVGhlIGNoYW5nZSBpdHNlbGYgaXMgYSBmYWlybHkgc2ltcGxlIGxlbmd0aCBjaGVjaywgdGhhdCdzIG5vdCBleGFjdGx5IHJpcGUgZm9yIGNvbXBsZXggYnVncywgaG93ZXZlciwgaXQgaXMgd2l0aGluIGEgcHJvYmUgZnVuY3Rpb24sIGFuZCB1bmV4cGVjdGVkIHZhbHVlcyBjb3VsZCBwb3RlbnRpYWxseSB0cmlnZ2VyIGVkZ2UgY2FzZXMuIFRpbWUgdG8gZmluZCBgQ0lSUlVTX1ZSQU1fU0laRWAgYW5kIGBjaXJydXNfcGNpX3Byb2JlYCB0byBzZWUgd2hhdCBpcyBnb2luZyBvbi4gVGhlbiwgSSBuZWVkIHRvIGNoZWNrIHRoZSBLY29uZmlnIGZvciBgY2lycnVzLXFlbXUuY2AgdG8gdW5kZXJzdGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGlzIGNvZGUgaXMgZW5hYmxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAyMiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyNiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEzOjMyOjEwLjcyNjYwMjc3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MDE2ODE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNpcnJ1c19wY2lfcHJvYmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jPTU2NT1zdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kcml2ZXIgY2lycnVzX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTc3LVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NTc4OnN0YXRpYyBpbnQgY2lycnVzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTU3OS1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM9NjY2PXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBjaXJydXNfcGNpX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNjY4LVxcdC5pZF90YWJsZSA9IHBjaWlkbGlzdCxcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjY2OTpcXHQucHJvYmUgPSBjaXJydXNfcGNpX3Byb2JlLFxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNjcwLVxcdC5yZW1vdmUgPSBjaXJydXNfcGNpX3JlbW92ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6MzI6MTAuNzcyNjIxNjQ5WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAwMzQ0MDA1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OlxuXG4qKkV4YW1pbmluZyB0aGUgS2NvbmZpZyBmb3IgY2lycnVzLXFlbXUuYyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgQ2lycnVzIFZHQSBlbXVsYXRpb24gaXMgY29uZmlndXJlZCBmb3IgUUVNVS4gVGltZSB0byBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIGxvb2tpbmcgaW4gdGhlIHJpZ2h0IHBsYWNlLCBzcGVjaWZpY2FsbHkgdGhlIEtjb25maWcgZmlsZXMgdGhhdCBjb250cm9sIHRoZSBidWlsZCBvcHRpb25zIGZvciB0aGUgYGNpcnJ1cy1xZW11LmNgIGRyaXZlci4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBkZXBlbmRlbmNpZXMgaXQgaGFzLCBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYXNwZWN0cywgYW5kIHdoYXQgdGhlIGRlZmF1bHQgc2V0dGluZ3MgYXJlLiBUaGlzIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBkcml2ZXIgaXMgYWN0aXZhdGVkLCBwb3RlbnRpYWxseSBkaXNhYmxlZCwgYW5kIHdoaWNoIGZlYXR1cmVzIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQgd2l0aGluIGEgUUVNVSBlbnZpcm9ubWVudC4gSXQgY291bGQgcmV2ZWFsIGlmIHRoZXJlIGFyZSBzcGVjaWZpYyBjb21waWxlLXRpbWUgZmxhZ3Mgb3IgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgY291bGQgYmUgdHdlYWtlZCB0byBpbXByb3ZlIHBlcmZvcm1hbmNlIG9yIHN0YWJpbGl0eSwgb3IgaWYgdGhlcmUgaXMgYSBkZXBlbmRlbmN5IG9uIHRoZSBxZW11IHZlcnNpb24sIHdoaWNoIGNhbiBhZmZlY3QgaXRzIHN1cHBvcnQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGlzIGRyaXZlciBhbmQgdGhlIG92ZXJhbGwgc3lzdGVtIGNvbmZpZ3VyYXRpb24uIEEgdGhvcm91Z2ggcmV2aWV3IHdpbGwgbWFrZSBzdXJlIHRoYXQgdGhlIHN5c3RlbSBpcyBzZXQgdXAgdG8gc3VwcG9ydCB0aGUgdXNlIG9mIHRoZSBkcml2ZXIgaW4gdGhlIGVudmlyb25tZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDI2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6MzI6MTQuNzc2MDYzMTM3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NTQ0MTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNpcnJ1cy1xZW11XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS90aW55L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vdGlueS9NYWtlZmlsZT01PW9iai0kKENPTkZJR19EUk1fQk9DSFMpXFx0XFx0XFx0Kz0gYm9jaHMub1xcbmRyaXZlcnMvZ3B1L2RybS90aW55L01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX0RSTV9DSVJSVVNfUUVNVSlcXHRcXHQrPSBjaXJydXMtcWVtdS5vXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvTWFrZWZpbGUtNy1vYmotJChDT05GSUdfRFJNX0dNMTJVMzIwKVxcdFxcdCs9IGdtMTJ1MzIwLm9cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTEtXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo1MjojZGVmaW5lIERSSVZFUl9OQU1FIFxcXCJjaXJydXMtcWVtdVxcXCJcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTUzLSNkZWZpbmUgRFJJVkVSX0RFU0MgXFxcInFlbXUgY2lycnVzIHZnYVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6MzI6MTQuODI0NjEyNDE3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzUyMTUyODIwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgaXQ6XG5cbioqRGlnZ2luZyBpbnRvIHRoZSBDaXJydXMgUUVNVSBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBDaXJydXMgUUVNVSBkcml2ZXIuIFRoZSBmaXJzdCBsb2dpY2FsIHN0ZXAgaXMgYWx3YXlzIHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UsIHRoZSBgS2NvbmZpZ2AgZmlsZXMuIExldCdzIHNlZS4uLiBJJ2xsIHNwZWNpZmljYWxseSBsb29rIGZvciB0aGUgYENPTkZJR19EUk1fQ0lSUlVTX1FFTVVgIG9wdGlvbiB3aXRoaW4gdGhlIGBLY29uZmlnYCBmaWxlcy4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgY29yZSBsb2dpYywgZGVwZW5kZW5jaWVzLCBhbmQgYW55IG90aGVyIHJlbGV2YW50IGNvbnRleHR1YWwgaW5mb3JtYXRpb24gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGJlaGF2aW9yIGFuZCB3aHkgaXQgbWlnaHQgb3IgbWlnaHQgbm90IGJlIGFjdGl2YXRlZC4gRnJvbSB0aGVyZSwgSSBjYW4gYW5hbHl6ZSB0aGUgYXNzb2NpYXRlZCBjb2RlIGJhc2VkIG9uIGl0cyBkZXBlbmRlbmN5IHRyZWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MTUsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzozMjoxOC4zNDYxNDI4MTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQyMTM3NDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERSTV9DSVJSVVNfUUVNVVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWc9Mjc9Y29uZmlnIERSTV9CT0NIU1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZy0zOC1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnOjM5OmNvbmZpZyBEUk1fQ0lSUlVTX1FFTVVcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnLTQwLVxcdHRyaXN0YXRlIFxcXCJDaXJydXMgZHJpdmVyIGZvciBRRU1VIGVtdWxhdGVkIGRldmljZVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6MzI6MTguMzkwMzYwODkyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDc5NjgyMjg1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgSSdtIHJlYWR5IHRvIGRpdmUgaW50byB0aGlzLiBMZXQncyBzdGFydCBicmVha2luZyB0aGlzIGRvd24uXG5cbioqVW5wYWNraW5nIHRoZSBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBteSBpbml0aWFsIHJlYWN0aW9uIGlzIHRvIGZpZ3VyZSBvdXQgdGhlIGNyaXRpY2FsIGRlcGVuZGVuY2llcyBhdCBwbGF5IGhlcmUuIFRoaXMgaXNuJ3QganVzdCBhYm91dCBhIHN1cmZhY2UtbGV2ZWwgdW5kZXJzdGFuZGluZzsgSSBuZWVkIHRvIHBpbnBvaW50IHRoZSBjb3JlIGVsZW1lbnRzIHRoYXQgdW5kZXJwaW4gdGhlIHNpdHVhdGlvbi4gV2hhdCBhcmUgdGhlIHZhcmlhYmxlcyBhbmQgY29uZGl0aW9ucyB0aGF0IGRyaXZlIHRoaXM/IEFyZSB0aGVyZSBhbnkgaGlkZGVuIGFzc3VtcHRpb25zIHRoYXQgbmVlZCB0byBiZSBhZGRyZXNzZWQ/IE15IGZvY3VzIGlzIHRvIGNyZWF0ZSBhIHN0cnVjdHVyZSB0byBidWlsZCBhIHJvYnVzdCBtb2RlbCB0byBleHBsYWluIHRoaXMgcHJvYmxlbS4gVGhpcyBpcyB3aGVyZSBJIHN0YXJ0IHRvIHNlZSB0aGUgYmlnZ2VyIHBpY3R1cmUsIGFuZCB0aGF0J3MgdGhlIG9ubHkgcGxhY2UgdG8gc3RhcnQgdG8gZ28gZGVlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzgzNiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6MzI6MjMuMTg3MTg1ODQ4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzksXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgMzk6XFx0Y29uZmlnIERSTV9DSVJSVVNfUUVNVVxcbiAgNDA6XFx0XFx0dHJpc3RhdGUgXFxcIkNpcnJ1cyBkcml2ZXIgZm9yIFFFTVUgZW11bGF0ZWQgZGV2aWNlXFxcIlxcbiAgNDE6XFx0XFx0ZGVwZW5kcyBvbiBEUk0gXFx1MDAyNlxcdTAwMjYgUENJXFxuICA0MjpcXHRcXHRzZWxlY3QgRFJNX0NMSUVOVF9TRUxFQ1RJT05cXG4gIDQzOlxcdFxcdHNlbGVjdCBEUk1fS01TX0hFTFBFUlxcbiAgNDQ6XFx0XFx0c2VsZWN0IERSTV9HRU1fU0hNRU1fSEVMUEVSXFxuICA0NTpcXHRcXHRoZWxwXFxuICA0NjpcXHRcXHQgVGhpcyBpcyBhIEtNUyBkcml2ZXIgZm9yIGVtdWxhdGVkIGNpcnJ1cyBkZXZpY2UgaW4gcWVtdS5cXG4gIDQ3OlxcdFxcdCBJdCBpcyAqTk9UKiBpbnRlbmRlZCBmb3IgcmVhbCBjaXJydXMgZGV2aWNlcy4gVGhpcyByZXF1aXJlc1xcbiAgNDg6XFx0XFx0IHRoZSBtb2Rlc2V0dGluZyB1c2Vyc3BhY2UgWC5vcmcgZHJpdmVyLlxcbiAgNDk6XFx0XFxuICA1MDpcXHRcXHQgQ2lycnVzIGlzIG9ic29sZXRlLCB0aGUgaGFyZHdhcmUgd2FzIGRlc2lnbmVkIGluIHRoZSA5MGllc1xcbiAgNTE6XFx0XFx0IGFuZCBjYW4ndCBrZWVwIHVwIHdpdGggdG9kYXlzIG5lZWRzLiAgTW9yZSBiYWNrZ3JvdW5kOlxcbiAgNTI6XFx0XFx0IGh0dHBzOi8vd3d3LmtyYXhlbC5vcmcvYmxvZy8yMDE0LzEwL3FlbXUtdXNpbmctY2lycnVzLWNvbnNpZGVyZWQtaGFybWZ1bC9cXG4gIDUzOlxcdFxcbiAgNTQ6XFx0XFx0IEJldHRlciBhbHRlcm5hdGl2ZXMgYXJlOlxcbiAgNTU6XFx0XFx0ICAgLSBzdGR2Z2EgKERSTV9CT0NIUywgcWVtdSAtdmdhIHN0ZCwgZGVmYXVsdCBpbiBxZW11IDIuMispXFxuICA1NjpcXHRcXHQgICAtIHF4bCAoRFJNX1FYTCwgcWVtdSAtdmdhIHF4bCwgd29ya3MgYmVzdCB3aXRoIHNwaWNlKVxcbiAgNTc6XFx0XFx0ICAgLSB2aXJ0aW8gKERSTV9WSVJUSU9fR1BVKSwgcWVtdSAtdmdhIHZpcnRpbylcXG4gIDU4OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzozMjoyMy4xODcyNDk2ODhaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTAzMjMzNjc0MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgZm9yIEZ1enppbmcgYGNpcnJ1c19wY2lfcHJvYmVgKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBtb2RpZmllcyBgY2lycnVzX3BjaV9wcm9iZWAsIHdoaWNoIGlzIGEgUENJIHByb2JlIGZ1bmN0aW9uLiBUaGUgcHJvbXB0IGV4cGxpY2l0bHkgc2F5cyB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgaXQncyBvbmx5IHRvdWNoaW5nIHRlYXJkb3duIGNhbGxiYWNrcyBsaWtlIGAucmVtb3ZlYCBvciBgLnNodXRkb3duYC4gVGhpcyBpcyBhIGAucHJvYmVgIGZ1bmN0aW9uLCBub3QgYSB0ZWFyZG93biBmdW5jdGlvbiwgc28gd2UncmUgbm90IGltbWVkaWF0ZWx5IG91dC5cblxuVGhlIHJlYWwgcXVlc3Rpb24gaXMsIGNhbiB3ZSAqZWZmZWN0aXZlbHkqIGZ1enogYGNpcnJ1c19wY2lfcHJvYmVgPyBTeXprYWxsZXIgY2FuIGZ1enogUENJIGRldmljZXMsIGVzcGVjaWFsbHkgdGhvc2UgaW5qZWN0ZWQgdmlhIGBzeXpfcGNpX2RldmljZWAsIGJ1dCB0eXBpY2FsbHkgdGhlc2UgcHJvYmUgZnVuY3Rpb25zIHJ1biBvbmNlLCBkdXJpbmcgYm9vdCBvciBob3RwbHVnLiBIb3dldmVyLCB0aGlzIGlzIGZvciBhIFFFTVUgZW11bGF0ZWQgZGV2aWNlLCBhbmQgUUVNVSBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBleGNsdWRlcyB0aGluZ3MgdGhhdCAqYXJlbid0KiByZWFjaGFibGUgaW4gUUVNVSwgc28gdGhhdCdzIGEgY2hlY2sgaW4gdGhlIHBsdXMgY29sdW1uLlxuXG5Ob3csIGlzIGl0ICp3b3J0aCogZnV6emluZz8gVGhlIGFjdHVhbCBjb2RlIGNoYW5nZSBpcyBhIHNpbmdsZSBjaGVjazpcblxuYGBgY1xuXHRpZiAocGNpX3Jlc291cmNlX2xlbihwZGV2LCAwKSBcdTAwM2MgQ0lSUlVTX1ZSQU1fU0laRSlcblx0XHRyZXR1cm4gLUVOT0RFVjtcbmBgYFxuXG5JdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNvIGl0J3Mgbm90IGp1c3QgY29zbWV0aWMuIElmIHdlIGRlY2lkZSBpdCAqaXMqIHdvcnRoIGl0LCB3ZSBuZWVkIGBGb2N1c1N5bWJvbHNgIGFuZCBgRW5hYmxlQ29uZmlnc2AuIEZvciBgRm9jdXNTeW1ib2xzYCwgYGNpcnJ1c19wY2lfcHJvYmVgIGlzIHRoZSBvYnZpb3VzIGNob2ljZS4gUHJvYmUgZnVuY3Rpb25zIGFyZW4ndCB1c3VhbGx5IHRhcmdldGVkIGhlYXZpbHkgYmVjYXVzZSBvZiB0aGVpciBzaW5nbGUgZXhlY3V0aW9uLCBidXQgYSBidWcgaGVyZSwgdHJpZ2dlcmVkIGJ5IGEgUENJIGRldmljZSB3aXRoIGEgc21hbGwgcmVzb3VyY2UgbGVuZ3RoLCAqY291bGQqIGJlIHNpZ25pZmljYW50LlxuXG5MZXQncyBzZWUsIGRvZXMgdGhpcyBwYXRjaCBtb2RpZnkgYW55IG90aGVyIGZ1bmN0aW9ucz8gTm9wZSwganVzdCBgY2lycnVzX3BjaV9wcm9iZWAuXG5cbk9rYXksIG5leHQsIGlzIGBjaXJydXNfcGNpX3Byb2JlYCBzdGF0aWM/IFllcywgaXQgaXMuIFRoZSBwcm9tcHQgcHJlZmVycyBub24tc3RhdGljIGVudHJ5IHBvaW50cywgYnV0IHRoZW4gYWdhaW4sIGV2ZW4gdGhvdWdoIGl0J3Mgc3RhdGljLCBpdCdzIGFzc2lnbmVkIHRvIHRoZSBgLnByb2JlYCBmdW5jdGlvbiBwb2ludGVyLCBtZWFuaW5nIGl0J3Mgbm90IGlubGluZWQgYW5kIGhhcyBhIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzLiBUaGF0IG1ha2VzIGl0IG1vcmUgaW50ZXJlc3RpbmcuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQgbWUgc2NhbiB0aGUgcmVzdCBvZiBgY2lycnVzLXFlbXUuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGlzIGRyaXZlciB0aGF0IG1pZ2h0IGJlIG1vcmUgcHJvbWlzaW5nLCBldmVuIHRob3VnaCB0aGUgcGF0Y2ggaXRzZWxmIG9ubHkgbW9kaWZpZXMgYGNpcnJ1c19wY2lfcHJvYmVgLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJ3QgbWlzcyBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM3OSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEzOjMyOjMzLjUxMDYxOTUxOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA4Njg3MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXmludCB8XnZvaWQgfF5zdHJ1Y3QgXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01OS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjYwOnN0cnVjdCBjaXJydXNfZGV2aWNlIHtcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTYxLVxcdHN0cnVjdCBkcm1fZGV2aWNlXFx0ICAgICAgIGRldjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6MzI6MzMuNTYxNDkyODc4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3MDM1MDI1MTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkNvbXByZWhlbnNpdmUgRnVuY3Rpb24gUmV2aWV3KipcblxuQWxyaWdodCwgYmVmb3JlIGRpdmluZyB0b28gZGVlcCBpbnRvIHRoaXMgcHJvYmxlbSwgSSB3YW50IHRvIG1ha2Ugc3VyZSBJJ3ZlIGdvdCBhIGhhbmRsZSBvbiAqYWxsKiB0aGUgYXZhaWxhYmxlIHRvb2xzIGFuZCB0aGVpciBjYXBhYmlsaXRpZXMuIExldCdzIHNlZS4uLiBJIG5lZWQgdG8gc3RhcnQgYnkgbWVudGFsbHkgbGlzdGluZyBldmVyeSBmdW5jdGlvbiwgZXZlcnkgc3Vicm91dGluZSwgZXZlcnkgQVBJIGNhbGwsIGV2ZXJ5dGhpbmcgdGhhdCBjb3VsZCBjb25jZWl2YWJseSBiZSByZWxldmFudCB0byB0aGUgdGFzayBhdCBoYW5kLiBUaGlzIGlzbid0IGp1c3QgYSBzdXJmYWNlLWxldmVsIHNjYW47IEkgbmVlZCB0byByZWFsbHkgZGlnIGludG8gdGhlIGRvY3VtZW50YXRpb24gYW5kIHVuZGVyc3RhbmQgdGhlIG51YW5jZXMgb2YgZWFjaCBmdW5jdGlvbi4gV2hhdCBhcmUgdGhlIGlucHV0cywgdGhlIG91dHB1dHMsIHRoZSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLCBhbnkgZWRnZSBjYXNlcyBvciBsaW1pdGF0aW9ucz8gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBsb3ctbGV2ZWwgaW1wbGVtZW50YXRpb25zIHRvby4gSSBzaG91bGQgYWxzbyBjb25zaWRlciBob3cgdGhlc2UgZnVuY3Rpb25zIGludGVyYWN0LCBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cyBvciBkZXBlbmRlbmNpZXMuIFdoYXQgZG9lcyB0aGUgQVBJIGRvY3VtZW50YXRpb24gc2F5PyBBbnkgdGhpcmQtcGFydHkgbGlicmFyaWVzIHRoYXQgbWlnaHQgb2ZmZXIgYSB1c2VmdWwgZnVuY3Rpb24/IFRoaXMgaW5pdGlhbCBpbnZlbnRvcnkgaXMgY3J1Y2lhbCwgb3IgSSdsbCBtaXNzIHNvbWV0aGluZyBmdW5kYW1lbnRhbCBhbmQgd2FzdGUgdGltZSBsYXRlciBjaGFzaW5nIG15IHRhaWwuIEkgbmVlZCBhICpjb21wbGV0ZSogZnVuY3Rpb25hbCBtYXAgYmVmb3JlIHByb2NlZWRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2MTUsIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEzOjMyOjUwLjU5NjUyMDIyN1oiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ0MzI2OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXnN0YXRpYy4qIGNpcnJ1c19cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jPTYwPXN0cnVjdCBjaXJydXNfZGV2aWNlIHtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtODgtXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo4OTpzdGF0aWMgdTggcnJlZ19zZXEoc3RydWN0IGNpcnJ1c19kZXZpY2UgKmNpcnJ1cywgdTggcmVnKVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtOTAte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy05NC1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjk1OnN0YXRpYyB2b2lkIHdyZWdfc2VxKHN0cnVjdCBjaXJydXNfZGV2aWNlICpjaXJydXMsIHU4IHJlZywgdTggdmFsKVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtOTYte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0xMDMtXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzoxMDQ6c3RhdGljIHU4IHJyZWdfY3J0KHN0cnVjdCBjaXJydXNfZGV2aWNlICpjaXJydXMsIHU4IHJlZylcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTEwNS17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTEwOS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjExMDpzdGF0aWMgdm9pZCB3cmVnX2NydChzdHJ1Y3QgY2lycnVzX2RldmljZSAqY2lycnVzLCB1OCByZWcsIHU4IHZhbClcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTExMS17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTExOC1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjExOTpzdGF0aWMgdm9pZCB3cmVnX2dmeChzdHJ1Y3QgY2lycnVzX2RldmljZSAqY2lycnVzLCB1OCByZWcsIHU4IHZhbClcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTEyMC17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTEyNi1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjEyNzpzdGF0aWMgdm9pZCB3cmVnX2hkcihzdHJ1Y3QgY2lycnVzX2RldmljZSAqY2lycnVzLCB1OCB2YWwpXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0xMjgte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0xMzUtXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzoxMzY6c3RhdGljIHZvaWQgY2lycnVzX3NldF9zdGFydF9hZGRyZXNzKHN0cnVjdCBjaXJydXNfZGV2aWNlICpjaXJydXMsIHUzMiBvZmZzZXQpXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0xMzcte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0xNTYtXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzoxNTc6c3RhdGljIHZvaWQgY2lycnVzX21vZGVfc2V0KHN0cnVjdCBjaXJydXNfZGV2aWNlICpjaXJydXMsXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0xNTgtXFx0XFx0XFx0ICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0yMjctXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzoyMjg6c3RhdGljIHZvaWQgY2lycnVzX2Zvcm1hdF9zZXQoc3RydWN0IGNpcnJ1c19kZXZpY2UgKmNpcnJ1cyxcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTIyOS1cXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICpmb3JtYXQpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTI2Ny1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjI2ODpzdGF0aWMgdm9pZCBjaXJydXNfcGl0Y2hfc2V0KHN0cnVjdCBjaXJydXNfZGV2aWNlICpjaXJydXMsIHVuc2lnbmVkIGludCBwaXRjaClcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTI2OS17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTI4Ni1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjI4NzpzdGF0aWMgY29uc3QgdWludDMyX3QgY2lycnVzX3ByaW1hcnlfcGxhbmVfZm9ybWF0c1tdID0ge1xcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtMjg4LVxcdERSTV9GT1JNQVRfUkdCNTY1LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0yOTItXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzoyOTM6c3RhdGljIGNvbnN0IHVpbnQ2NF90IGNpcnJ1c19wcmltYXJ5X3BsYW5lX2Zvcm1hdF9tb2RpZmllcnNbXSA9IHtcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTI5NC1cXHREUk1fRk9STUFUX01PRF9MSU5FQVIsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTI5Ny1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjI5ODpzdGF0aWMgaW50IGNpcnJ1c19wcmltYXJ5X3BsYW5lX2hlbHBlcl9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0yOTktXFx0XFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBkcm1fYXRvbWljX2NvbW1pdCAqc3RhdGUpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTMyNy1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjMyODpzdGF0aWMgdm9pZCBjaXJydXNfcHJpbWFyeV9wbGFuZV9oZWxwZXJfYXRvbWljX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSxcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTMyOS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19jb21taXQgKnN0YXRlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0zNjMtXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzozNjQ6c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzIGNpcnJ1c19wcmltYXJ5X3BsYW5lX2hlbHBlcl9mdW5jcyA9IHtcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTM2NS1cXHREUk1fR0VNX1NIQURPV19QTEFORV9IRUxQRVJfRlVOQ1MsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTM2OS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjM3MDpzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9mdW5jcyBjaXJydXNfcHJpbWFyeV9wbGFuZV9mdW5jcyA9IHtcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTM3MS1cXHQudXBkYXRlX3BsYW5lID0gZHJtX2F0b21pY19oZWxwZXJfdXBkYXRlX3BsYW5lLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0zNzYtXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzozNzc6c3RhdGljIGludCBjaXJydXNfY3J0Y19oZWxwZXJfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywgc3RydWN0IGRybV9hdG9taWNfY29tbWl0ICpzdGF0ZSlcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTM3OC17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTM5MS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjM5MjpzdGF0aWMgdm9pZCBjaXJydXNfY3J0Y19oZWxwZXJfYXRvbWljX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0zOTMtXFx0XFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgZHJtX2F0b21pY19jb21taXQgKnN0YXRlKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy00MTMtXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo0MTQ6c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgY2lycnVzX2NydGNfaGVscGVyX2Z1bmNzID0ge1xcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNDE1LVxcdC5hdG9taWNfY2hlY2sgPSBjaXJydXNfY3J0Y19oZWxwZXJfYXRvbWljX2NoZWNrLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy00MjAtXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo0MjE6c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19mdW5jcyBjaXJydXNfY3J0Y19mdW5jcyA9IHtcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTQyMi1cXHQucmVzZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jcnRjX3Jlc2V0LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy00MzAtXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo0MzE6c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9mdW5jcyBjaXJydXNfZW5jb2Rlcl9mdW5jcyA9IHtcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTQzMi1cXHQuZGVzdHJveSA9IGRybV9lbmNvZGVyX2NsZWFudXAsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTQzNC1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjQzNTpzdGF0aWMgaW50IGNpcnJ1c19jb25uZWN0b3JfaGVscGVyX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNDM2LXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNDQ1LVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NDQ2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgY2lycnVzX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgPSB7XFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy00NDctXFx0LmdldF9tb2RlcyA9IGNpcnJ1c19jb25uZWN0b3JfaGVscGVyX2dldF9tb2RlcyxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNDQ5LVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NDUwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBjaXJydXNfY29ubmVjdG9yX2Z1bmNzID0ge1xcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNDUxLVxcdC5maWxsX21vZGVzID0gZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy00NTctXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo0NTg6c3RhdGljIGludCBjaXJydXNfcGlwZV9pbml0KHN0cnVjdCBjaXJydXNfZGV2aWNlICpjaXJydXMpXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy00NTkte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01MTMtXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo1MTQ6c3RhdGljIGVudW0gZHJtX21vZGVfc3RhdHVzIGNpcnJ1c19tb2RlX2NvbmZpZ19tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01MTUtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSlcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTMzLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NTM0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNzIGNpcnJ1c19tb2RlX2NvbmZpZ19mdW5jcyA9IHtcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTUzNS1cXHQuZmJfY3JlYXRlID0gZHJtX2dlbV9mYl9jcmVhdGVfd2l0aF9kaXJ0eSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTQwLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NTQxOnN0YXRpYyBpbnQgY2lycnVzX21vZGVfY29uZmlnX2luaXQoc3RydWN0IGNpcnJ1c19kZXZpY2UgKmNpcnJ1cylcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTU0Mi17XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jPTU2Mz1ERUZJTkVfRFJNX0dFTV9GT1BTKGNpcnJ1c19mb3BzKTtcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTU2NC1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjU2NTpzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9kcml2ZXIgY2lycnVzX2RyaXZlciA9IHtcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTU2Ni1cXHQuZHJpdmVyX2ZlYXR1cmVzID0gRFJJVkVSX01PREVTRVQgfCBEUklWRVJfR0VNIHwgRFJJVkVSX0FUT01JQyxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTc3LVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NTc4OnN0YXRpYyBpbnQgY2lycnVzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTU3OS1cXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNjM2LVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NjM3OnN0YXRpYyB2b2lkIGNpcnJ1c19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNjM4LXtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNjQ0LVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6NjQ1OnN0YXRpYyB2b2lkIGNpcnJ1c19wY2lfc2h1dGRvd24oc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy02NDYte1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYz02NTA9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHBjaWlkbGlzdFtdID0ge1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy02NjUtXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo2NjY6c3RhdGljIHN0cnVjdCBwY2lfZHJpdmVyIGNpcnJ1c19wY2lfZHJpdmVyID0ge1xcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNjY3LVxcdC5uYW1lID0gRFJJVkVSX05BTUUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEzOjMyOjUwLjY0MDk1NjgxNloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyMjE0OTA1ODI2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIERlY2lzaW9uIGZvciB0aGUgQ2lycnVzIERyaXZlciBQcm9iZSBGdW5jdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0aGF0IHNpbmNlICphbGwqIHRoZSBmdW5jdGlvbnMgSSBzZWUgYXJlIHN0YXRpYywgd2Ugd291bGRuJ3QgbmVlZCB0byBjb25zaWRlciBmdXp6aW5nLiBCdXQgdGhlbiBJIHJlbWVtYmVyIGBjaXJydXNfcGNpX3Byb2JlYCBpcyBzdGF0aWMsICpidXQqIGl0J3MgdGhlIG1haW4gZW50cnkgcG9pbnQgZm9yIHRoZSBkcml2ZXIuIFRoYXQncyBhIGtleSBkaXN0aW5jdGlvbi5cblxuVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgcHJlZmVycmluZyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMuIFNpbmNlIGBjaXJydXNfcGNpX3Byb2JlYCBpcyBhc3NpZ25lZCB0byBhIGZ1bmN0aW9uIHBvaW50ZXIsIGl0IGlzbid0IGlubGluZWQgYW5kICpkb2VzKiBoYXZlIGEgZGlzdGluY3Qgc3ltYm9sLiBTbywgaXQgaXMgcG90ZW50aWFsbHkgZnV6emFibGUuXG5cbkJ1dCwgaXMgaXQgKndvcnRoKiBmdXp6aW5nPyBUaGUgYWN0dWFsIGNvZGUgY2hhbmdlIGlzIGp1c3QgYSBzaW1wbGUgY2hlY2s6XG5cbmBgYGNcblx0aWYgKHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCkgXHUwMDNjIENJUlJVU19WUkFNX1NJWkUpXG5cdFx0cmV0dXJuIC1FTk9ERVY7XG5gYGBcblxuSXQncyBhIHN0cmFpZ2h0Zm9yd2FyZCBzaXplIGNvbXBhcmlzb24uIE5vIGNvbXBsZXggbG9naWMsIHN0YXRlIG1hY2hpbmVzLCBvciBkYXRhIHN0cnVjdHVyZXMgYXJlIGludm9sdmVkLiBIb3dldmVyLCB0aGlzIGNoZWNrICpmaXhlcyogYW4gYXNzdW1wdGlvbiBhYm91dCByZXNvdXJjZSBzaXplIHdoaWNoIGNvdWxkIGxlYWQgdG8gb3V0LW9mLWJvdW5kcyBhY2Nlc3MuIFRoZSBwcm9tcHQgc2F5cyB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGRyaXZlciB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCBhcyBzdWNoIGl0IGRvZXMgd2FycmFudCBmdXp6aW5nLlxuXG5JZiBJJ20gZ29pbmcgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9dHJ1ZWAsIEkgaGF2ZSB0byBpZGVudGlmeSBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgLiBgY2lycnVzX3BjaV9wcm9iZWAgaXMgdGhlIG9idmlvdXMgYEZvY3VzU3ltYm9sYC4gVGhlIGBFbmFibGVDb25maWdzYCBzaG91bGQgYmUgYERSTV9DSVJSVVNfUUVNVWAuIEkgZG91YmxlLWNoZWNrZWQgdGhlIGRlcGVuZGVuY2llcy4gVGhpcyBpbmNsdWRlcyBgRFJNYCBhbmQgYFBDSWAuXG5cbkkndmUgYWxzbyBjaGVja2VkIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIG9yIG1vZGlmaWVkIGZ1bmN0aW9ucy4gVGhlcmUgYXJlbid0LlxuXG5Ob3csIHRoZSBuaWdnbGluZyBkb3VidC4uLiBpcyB0aGlzICpyZWFsbHkqIHdvcnRoIHRoZSBlZmZvcnQ/IEp1c3QgYSBzaW5nbGUgYGlmYCBzdGF0ZW1lbnQgaW4gYSBgcHJvYmVgIGZ1bmN0aW9uPyBCdXQgdGhlbiBJIHJlYWxpemVkLCB5ZXMsIGl0IGlzLiBUaGUgZnV6emluZyB0YXJnZXQgaXMgdGhlIGJyYW5jaCB3aXRoaW4gYGNpcnJ1c19wY2lfcHJvYmVgLiBUaGlzIG1lYW5zIHRoZSBmdXp6ZXIgbmVlZHMgdG8gYmUgYWJsZSB0byBnZW5lcmF0ZSBQQ0kgZGV2aWNlcyB3aXRoIGRpZmZlcmluZyByZXNvdXJjZSBsZW5ndGhzIHRvIGhpdCB0aGlzIGNvbmRpdGlvbi4gVGhhdCBpcyB3ZWxsIHdpdGhpbiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBmdXp6ZXIsIHNwZWNpZmljYWxseSBgc3l6X3BjaV9kZXZpY2VgLlxuXG5TbywgaXQncyBhIFwieWVzXCIuIEknbSBjb25maXJtaW5nIHRoYXQgdGhlIHBhdGNoIGlzIFdvcnRoRnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTA3OCwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzozMzoxMi43OTAwMTY5NjVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMjQxMTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNJUlJVU19WUkFNX1NJWkVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jLTU3LSNkZWZpbmUgQ0lSUlVTX01BWF9QSVRDSCAoMHgxRkYgXFx1MDAzY1xcdTAwM2MgMykgICAgICAvKiAoNDA5NiAtIDEpIFxcdTAwMjYgfjExMWIgYnl0ZXMgKi9cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjU4OiNkZWZpbmUgQ0lSUlVTX1ZSQU1fU0laRSAoNCAqIDEwMjQgKiAxMDI0KSAvKiA0IE1CICovXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01OS1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM9Mjk4PXN0YXRpYyBpbnQgY2lycnVzX3ByaW1hcnlfcGxhbmVfaGVscGVyX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtMzIxLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmM6MzIyOlxcdGVsc2UgaWYgKGZiLVxcdTAwM2VwaXRjaGVzWzBdIFxcdTAwM2UgQ0lSUlVTX1ZSQU1fU0laRSAvIGZiLVxcdTAwM2VoZWlnaHQpXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy0zMjMtXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jPTUxND1zdGF0aWMgZW51bSBkcm1fbW9kZV9zdGF0dXMgY2lycnVzX21vZGVfY29uZmlnX21vZGVfdmFsaWQoc3RydWN0IGRybV9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTI3LVxcdFxcdHJldHVybiBNT0RFX0JBRF9XSURUSDsgLyogbWF4aW11bSBwcm9ncmFtbWFibGUgcGl0Y2ggKi9cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jOjUyODpcXHRpZiAocGl0Y2ggXFx1MDAzZSBDSVJSVVNfVlJBTV9TSVpFIC8gbW9kZS1cXHUwMDNldmRpc3BsYXkpXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01MjktXFx0XFx0cmV0dXJuIE1PREVfTUVNO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYz01Nzg9c3RhdGljIGludCBjaXJydXNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYy01ODQtXFxuZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuYzo1ODU6XFx0aWYgKHBjaV9yZXNvdXJjZV9sZW4ocGRldiwgMCkgXFx1MDAzYyBDSVJSVVNfVlJBTV9TSVpFKVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmMtNTg2LVxcdFxcdHJldHVybiAtRU5PREVWO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzozMzoxMi44NTIyNjI3NDRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDkxOTg2MDk0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQQ0kgUmVzb3VyY2UgQWxsb2NhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBkb2N1bWVudGF0aW9uIGNsZWFybHkgc3RhdGVzIHRoZSBsaW1pdCBhcyA0TUIuIEFuZCBJIHVuZGVyc3RhbmQsIGlmIHRoZSBQQ0kgcmVzb3VyY2UgbGVuZ3RoIHJlcG9ydGVkIGlzIHNtYWxsZXIgdGhhbiB0aGF0IHRocmVzaG9sZCwgdGhlbiBpdCBhcHByb3ByaWF0ZWx5IHJldHVybnMgYC1FTk9ERVZgLiBUaGlzIGlzIGEgdmVyeSBzdHJhaWdodGZvcndhcmQgY2hhbmdlIGluIHRoZSBncmFuZCBzY2hlbWUgb2YgdGhpbmdzLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4gQW5kIG15IGBGb2N1c1N5bWJvbHNgIHdpbGwgYmUgY2VudGVyZWQgYXJvdW5kIGBjaXJydXNfcGNpX3Byb2JlYCwgd2l0aCB0aGUgYEVuYWJsZUNvbmZpZ3NgIHRvIGluY2x1ZGUgYERSTV9DSVJSVVNfUUVNVWAuXG5cbkJ1dCB3YWl0IGEgbWludXRlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgYERSTV9DSVJSVVNfUUVNVWAgZG9lc24ndCBoYXZlIGFueSBoaWRkZW4gZGVwZW5kZW5jaWVzLiBMZXQncyBxdWlja2x5IHJldmlldyBgZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZ2AgdG8gY29uZmlybSB0aGVyZSBhcmUgbm8gc3VycHJpc2VzIHRoYXQgY291bGQgaW1wYWN0IHRoaXMgY29uZmlndXJhdGlvbi4gQmV0dGVyIHNhZmUgdGhhbiBzb3JyeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA4MTgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6MzM6MTcuNzcyMTI1ODA5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzI1NzE1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRFJNX0NJUlJVU19RRU1VXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZz0yNz1jb25maWcgRFJNX0JPQ0hTXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnLTM4LVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWc6Mzk6Y29uZmlnIERSTV9DSVJSVVNfUUVNVVxcbmRyaXZlcnMvZ3B1L2RybS90aW55L0tjb25maWctNDAtXFx0dHJpc3RhdGUgXFxcIkNpcnJ1cyBkcml2ZXIgZm9yIFFFTVUgZW11bGF0ZWQgZGV2aWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzozMzoxNy44MTUzODU5MThaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc1MDE1Mzk4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDaXJydXMgUUVNVSBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkndmUgbG9va2VkIGF0IHRoZSByZWxldmFudCBjb2RlIHNuaXBwZXQuIFdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgYERSTV9DSVJSVVNfUUVNVWAgY29uZmlndXJhdGlvbiBvcHRpb24gaGVyZS4gQ2xlYXJseSwgdGhpcyBpcyBmb3IgdGhlIENpcnJ1cyBkcml2ZXIgd2hlbiB1c2luZyBhIFFFTVUgZW11bGF0ZWQgZGV2aWNlLiBUaGUgZGVwZW5kZW5jaWVzIGFyZSBzdHJhaWdodGZvcndhcmQ6IGBEUk1gIGFuZCBgUENJYC4gTm8gc3VycHJpc2VzIHRoZXJlOyB0aGVzZSBhcmUgcHJldHR5IGZ1bmRhbWVudGFsLiBHaXZlbiB0aGF0IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgSSdsbCBnbyBhaGVhZCBhbmQgc2V0IGBEUk1fQ0lSUlVTX1FFTVVgIGluIEVuYWJsZUNvbmZpZ3MuXG5cbk5vdywgbGV0J3Mgc3RlcCBiYWNrIGZvciBhIG1vbWVudCwgaXMgdGhlcmUgYW55dGhpbmcgZWxzZSBJIG5lZWQgdG8gZm9jdXMgb24/IE5vcGUsIGxvb2tzIGxpa2UgdGhpcyBpcyB0aGUgZXh0ZW50IG9mIGl0LlxuXG5JcyB0aGlzIGZ1enphYmxlPyBZZXMsIGl0J3MgYSBkcml2ZXIgcHJvYmUgZnVuY3Rpb24sIGFuZCB3ZSBjYW4gZ2V0IHRoZXJlIHZpYSBQQ0kgZGV2aWNlIGluamVjdGlvbi4gVGhpcyBtYWtlcyBpdCBhIHNvbGlkIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gVGltZSB0byBsb2cgdGhlIHJlc3VsdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyNTYsIk91dHB1dFRva2VucyI6OTYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjVUMTM6MzM6MjMuNTY1NTQxOThaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzA2ODQ0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFJNX0NJUlJVU19RRU1VXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2lycnVzX3BjaV9wcm9iZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBmdW5jdGlvbmFsIGNoZWNrIGluIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIFFFTVUgQ2lycnVzIFZHQSBEUk0gZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgY2FuIGJlIHRyaWdnZXJlZCBieSBpbmplY3RpbmcgYSBQQ0kgZGV2aWNlIHdpdGggYSBzbWFsbCByZXNvdXJjZSBsZW5ndGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRFJNX0NJUlJVU19RRU1VXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiY2lycnVzX3BjaV9wcm9iZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBmdW5jdGlvbmFsIGNoZWNrIGluIHRoZSBQQ0kgcHJvYmUgZnVuY3Rpb24gb2YgdGhlIFFFTVUgQ2lycnVzIFZHQSBEUk0gZHJpdmVyLiBUaGlzIGNvZGUgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBhbmQgY2FuIGJlIHRyaWdnZXJlZCBieSBpbmplY3RpbmcgYSBQQ0kgZGV2aWNlIHdpdGggYSBzbWFsbCByZXNvdXJjZSBsZW5ndGguXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI1VDEzOjMzOjIzLjY0ODYxODA5OFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE2Nzc4MDk5NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzozMzoyMy42NDkwNDMxMThaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTE2NzczODEyNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBzaW1wbGUgYm91bmRzIGNoZWNrIHRvIGVuc3VyZSB0aGF0IHRoZSBQQ0kgcmVzb3VyY2UgbGVuZ3RoIGlzIGF0IGxlYXN0IENJUlJVU19WUkFNX1NJWkUgYmVmb3JlIHByb2NlZWRpbmcgd2l0aCB0aGUgcHJvYmUuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgaW52YWxpZCBtZW1vcnkgbWFwcGluZ3Mgd2hlbiBpbnRlcmFjdGluZyB3aXRoIHRoZSBkZXZpY2UncyBWUkFNLiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBpbnZhbGlkIG1hcHBpbmdzIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBtZW1vcnkgcHJvdGVjdGlvbnMuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgZG8gbm90IGV4cG9zZSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkbyBub3QgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAwZWE3YzU4MWVhMjM2OWVhZTMyMjQwMTE1YzdlMmFhYjA2YjcyOTEyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMjUgMTM6MzE6NTkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlueS9jaXJydXMtcWVtdS5jIGIvZHJpdmVycy9ncHUvZHJtL3RpbnkvY2lycnVzLXFlbXUuY1xuaW5kZXggMDc1MjIxYjQzMWQzNy4uM2JmMjNmY2Y2NTc0OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmNcbisrKyBiL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy1xZW11LmNcbkBAIC01ODIsNiArNTgyLDkgQEAgc3RhdGljIGludCBjaXJydXNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFx0c3RydWN0IGNpcnJ1c19kZXZpY2UgKmNpcnJ1cztcbiBcdGludCByZXQ7XG4gXG4rXHRpZiAocGNpX3Jlc291cmNlX2xlbihwZGV2LCAwKSBcdTAwM2MgQ0lSUlVTX1ZSQU1fU0laRSlcbitcdFx0cmV0dXJuIC1FTk9ERVY7XG4rXG4gXHRyZXQgPSBhcGVydHVyZV9yZW1vdmVfY29uZmxpY3RpbmdfcGNpX2RldmljZXMocGRldiwgY2lycnVzX2RyaXZlci5uYW1lKTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzozMzoyMy42NDkwNDM5MzhaIiwiU2VxIjoyMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE2NzczNjI5MzEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGluIGBjaXJydXNfcGNpX3Byb2JlYCBmb3IgdGhlIENpcnJ1cyBRRU1VIGRyaXZlciBhZGRzIGEgc3RyYWlnaHRmb3J3YXJkIGxlbmd0aCBjaGVjazogYGlmIChwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApIFx1MDAzYyBDSVJSVVNfVlJBTV9TSVpFKWAuIEVzc2VudGlhbGx5LCBpdCdzIHZlcmlmeWluZyB0aGF0IHRoZSBzaXplIG9mIFBDSSByZXNvdXJjZSAwIGlzIGF0IGxlYXN0IGxhcmdlIGVub3VnaCB0byBob2xkIHRoZSBkZWZpbmVkIFZSQU0gc2l6ZS4gSWYgbm90LCBpdCByZXR1cm5zIGAtRU5PREVWYC4gUHJldHR5IGJhc2ljIGJvdW5kcyBjaGVja2luZywgcmVhbGx5LlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdGhpcyBzZWVtcyBwcnVkZW50LiBJdCBhY3RzIGFzIGEgZGVmZW5zZSBhZ2FpbnN0IHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2VzcyBkdXJpbmcgVlJBTSBtYXBwaW5nIG9yIHVzYWdlLiBXaGlsZSBLQVNBTiBvciBzdGFuZGFyZCBtZW1vcnkgcHJvdGVjdGlvbiB3b3VsZCBsaWtlbHkgY2F0Y2ggc3VjaCBpc3N1ZXMgZG93biB0aGUgbGluZSwgdGhpcyBwcmV2ZW50YXRpdmUgbWVhc3VyZSBpcyBhIGdvb2QgcHJhY3RpY2UuIEl0J3MgZXNzZW50aWFsbHkgYSBzYW5pdHkgY2hlY2sgb24gdGhlIGhhcmR3YXJlJ3MgcmVzb3VyY2VzLlxuXG5MZXQncyBxdWlja2x5IGNvbmZpcm0uIGBwY2lfcmVzb3VyY2VfbGVuKHBkZXYsIDApYCBnaXZlcyB1cyB0aGUgc2l6ZSBvZiBCQVIgMCwgYW5kIGBDSVJSVVNfVlJBTV9TSVpFYCBpcyBhIGNvbnN0YW50LiBUaGUgcGF0Y2gncyBvbmx5IGZ1bmN0aW9uIGlzIHRvIGVuc3VyZSB0aGF0IHRoZSBhbGxvY2F0ZWQgcmVzb3VyY2UgaXMgb2YgdGhlIGV4cGVjdGVkIG1pbmltdW0gc2l6ZS4gTm93LCBLTVNBTiBpcyB0aGVyZSB0byBjYXRjaCB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhpcyBwYXRjaCBoYXMgbm90aGluZyB0byBkbyB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBJdCdzIHNvbGVseSBhYm91dCByZXNvdXJjZSBzaXplLlxuXG5UaGVyZWZvcmUsICpOZWVkc0tNU0FOKiBpcyBkZWZpbml0aXZlbHkgKmZhbHNlKiBoZXJlLiBUaGlzIGlzIGEgY2xlYXIgY2FzZSBvZiByZXNvdXJjZSB2YWxpZGF0aW9uLCBub3QgdW5pbml0aWFsaXplZCBtZW1vcnkgcHJvdGVjdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAxOSwiT3V0cHV0VG9rZW5zIjoxNDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNVQxMzozMzozNS4zMjY0MTAxNTlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjk1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYSBzaW1wbGUgYm91bmRzIGNoZWNrIHRvIGVuc3VyZSB0aGF0IHRoZSBQQ0kgcmVzb3VyY2UgbGVuZ3RoIGlzIGF0IGxlYXN0IENJUlJVU19WUkFNX1NJWkUgYmVmb3JlIHByb2NlZWRpbmcgd2l0aCB0aGUgcHJvYmUuIFRoaXMgcHJldmVudHMgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgb3IgaW52YWxpZCBtZW1vcnkgbWFwcGluZ3Mgd2hlbiBpbnRlcmFjdGluZyB3aXRoIHRoZSBkZXZpY2UncyBWUkFNLiBPdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCBpbnZhbGlkIG1hcHBpbmdzIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBtZW1vcnkgcHJvdGVjdGlvbnMuIFRoZSBjaGFuZ2VzIGRvIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgZG8gbm90IGV4cG9zZSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkbyBub3QgaW52b2x2ZSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGEgc2ltcGxlIGJvdW5kcyBjaGVjayB0byBlbnN1cmUgdGhhdCB0aGUgUENJIHJlc291cmNlIGxlbmd0aCBpcyBhdCBsZWFzdCBDSVJSVVNfVlJBTV9TSVpFIGJlZm9yZSBwcm9jZWVkaW5nIHdpdGggdGhlIHByb2JlLiBUaGlzIHByZXZlbnRzIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIG9yIGludmFsaWQgbWVtb3J5IG1hcHBpbmdzIHdoZW4gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgZGV2aWNlJ3MgVlJBTS4gT3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyBhbmQgaW52YWxpZCBtYXBwaW5ncyBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgbWVtb3J5IHByb3RlY3Rpb25zLiBUaGUgY2hhbmdlcyBkbyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIGRvIG5vdCBleHBvc2Uga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBhbmQgZG8gbm90IGludm9sdmUgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowz7zpf[1] Phase: Succeeded StartedAt: 2026-08-25 13:33:46 +0000 UTC FinishedAt: 2026-08-25 13:33:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz7zpf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-25 13:33:46 +0000 UTC FinishedAt: 2026-08-25 13:33:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz7zpf[2] Phase: Succeeded StartedAt: 2026-08-25 13:33:46 +0000 UTC FinishedAt: 2026-08-25 15:59:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-25 13:33:46 +0000 UTC FinishedAt: 2026-08-25 15:59:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-25 13:33:46 +0000 UTC FinishedAt: 2026-08-25 13:33:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-25 13:33:46 +0000 UTC FinishedAt: 2026-08-25 13:33:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz7zpf/series-workflowz7zpf-convert-artifact-225217421/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-25 13:33:56 +0000 UTC FinishedAt: 2026-08-25 13:49:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-25 13:33:56 +0000 UTC FinishedAt: 2026-08-25 13:49:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*25a1a80a-c99c-43bf-b6e5-5d81bad4dafe,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz7zpf/series-workflowz7zpf-convert-artifact-225217421/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "a7bb1733-7a58-4b10-9c88-35d3a0bafc9b", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz7zpf/series-workflowz7zpf-build-action-4263765763/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-25 13:33:56 +0000 UTC FinishedAt: 2026-08-25 13:49:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*25a1a80a-c99c-43bf-b6e5-5d81bad4dafe,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz7zpf/series-workflowz7zpf-convert-artifact-225217421/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "a7bb1733-7a58-4b10-9c88-35d3a0bafc9b", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz7zpf/series-workflowz7zpf-build-action-4263765763/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-25 13:49:46 +0000 UTC FinishedAt: 2026-08-25 13:49:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-25 13:49:46 +0000 UTC FinishedAt: 2026-08-25 13:49:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-25 13:49:46 +0000 UTC FinishedAt: 2026-08-25 13:49:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-25 13:49:46 +0000 UTC FinishedAt: 2026-08-25 13:49:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz7zpf/series-workflowz7zpf-convert-artifact-2951273192/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-25 13:49:56 +0000 UTC FinishedAt: 2026-08-25 13:52:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-25 13:49:56 +0000 UTC FinishedAt: 2026-08-25 13:51:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a7bb1733-7a58-4b10-9c88-35d3a0bafc9b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz7zpf/series-workflowz7zpf-build-action-4263765763/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-25 13:52:05 +0000 UTC FinishedAt: 2026-08-25 13:52:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-25 13:52:05 +0000 UTC FinishedAt: 2026-08-25 13:52:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-25 13:52:05 +0000 UTC FinishedAt: 2026-08-25 14:07:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-25 13:52:05 +0000 UTC FinishedAt: 2026-08-25 14:07:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*25a1a80a-c99c-43bf-b6e5-5d81bad4dafe,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz7zpf/series-workflowz7zpf-convert-artifact-2951273192/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "3a2c40a6-63fb-4733-b51a-9d7e610f754f", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz7zpf/series-workflowz7zpf-build-action-3621098132/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-25 13:52:05 +0000 UTC FinishedAt: 2026-08-25 14:07:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*25a1a80a-c99c-43bf-b6e5-5d81bad4dafe,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz7zpf/series-workflowz7zpf-convert-artifact-2951273192/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "3a2c40a6-63fb-4733-b51a-9d7e610f754f", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz7zpf/series-workflowz7zpf-build-action-3621098132/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-25 14:07:56 +0000 UTC FinishedAt: 2026-08-25 14:07:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-25 14:07:56 +0000 UTC FinishedAt: 2026-08-25 14:07:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-25 14:07:56 +0000 UTC FinishedAt: 2026-08-25 14:10:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-25 14:07:56 +0000 UTC FinishedAt: 2026-08-25 14:09:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3a2c40a6-63fb-4733-b51a-9d7e610f754f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz7zpf/series-workflowz7zpf-build-action-3621098132/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-25 14:10:01 +0000 UTC FinishedAt: 2026-08-25 15:59:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-25 14:10:01 +0000 UTC FinishedAt: 2026-08-25 15:59:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*a7bb1733-7a58-4b10-9c88-35d3a0bafc9b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3a2c40a6-63fb-4733-b51a-9d7e610f754f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz7zpf/series-workflowz7zpf-build-action-4263765763/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz7zpf/series-workflowz7zpf-build-action-3621098132/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-25 14:10:01 +0000 UTC FinishedAt: 2026-08-25 14:10:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-25 14:10:01 +0000 UTC FinishedAt: 2026-08-25 14:10:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz7zpf/series-workflowz7zpf-convert-artifact-105389345/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-25 14:10:01 +0000 UTC FinishedAt: 2026-08-25 14:10:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-25 14:10:01 +0000 UTC FinishedAt: 2026-08-25 14:10:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-25 14:10:02 +0000 UTC FinishedAt: 2026-08-25 14:10:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-25 14:10:12 +0000 UTC FinishedAt: 2026-08-25 15:59:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowz7zpf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["cirrus_pci_probe"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1ff8d3e3165fd077faa4259fd232bdddcd30249f","config_name":"upstream-apparmor-kasan.config","enable_configs":["DRM_CIRRUS_QEMU"],"series_id":"125adc4a-cb5c-4dbe-a3e7-05381b5113e9","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-25 14:10:12 +0000 UTC FinishedAt: 2026-08-25 15:59:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a7bb1733-7a58-4b10-9c88-35d3a0bafc9b,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3a2c40a6-63fb-4733-b51a-9d7e610f754f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz7zpf/series-workflowz7zpf-build-action-4263765763/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz7zpf/series-workflowz7zpf-build-action-3621098132/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowz7zpf/series-workflowz7zpf-convert-artifact-105389345/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}