Name: series-workflowztq74 Phase: Succeeded StartedAt: 2026-07-27 16:26:02 +0000 UTC FinishedAt: 2026-07-27 22:49:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowztq74[0] Phase: Succeeded StartedAt: 2026-07-27 16:26:02 +0000 UTC FinishedAt: 2026-07-27 17:10:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowztq74[0].run-triage Phase: Succeeded StartedAt: 2026-07-27 16:26:02 +0000 UTC FinishedAt: 2026-07-27 17:10:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "9c66085e6dcfb44b70970aa4e323003fc7f2b738", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DEVICE_MIGRATION", "TEST_HMM", "TRANSPARENT_HUGEPAGE", "DEVICE_PRIVATE", "ZONE_DEVICE", "MIGRATION" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "9c66085e6dcfb44b70970aa4e323003fc7f2b738", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DEVICE_MIGRATION", "TEST_HMM", "TRANSPARENT_HUGEPAGE", "DEVICE_PRIVATE", "ZONE_DEVICE", "MIGRATION" ], "series_id": "92b115e6-0bc1-4647-bcd7-3472c8764be9" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "migrate_vma_pages", "migrate_device_pages" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RFVklDRV9NSUdSQVRJT04mIzM0OywKICAgICYjMzQ7VEVTVF9ITU0mIzM0OywKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OywKICAgICYjMzQ7REVWSUNFX1BSSVZBVEUmIzM0OywKICAgICYjMzQ7Wk9ORV9ERVZJQ0UmIzM0OywKICAgICYjMzQ7TUlHUkFUSU9OJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWlncmF0ZV92bWFfcGFnZXMmIzM0OywKICAgICYjMzQ7bWlncmF0ZV9kZXZpY2VfcGFnZXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgLCB3aGljaCBpcyBhIGNvcmUgZnVuY3Rpb24gZm9yIGRldmljZSBtZW1vcnkgbWlncmF0aW9uLiBJdCBmaXhlcyBhIGJ1ZyByZWxhdGVkIHRvIGZvbGlvIHNwbGl0IGFuZCBzd2FwIGNhY2hlLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBgbWlncmF0ZV92bWFfcGFnZXNgIGFuZCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgLCB3aGljaCBjYW4gYmUgdHJpZ2dlcmVkIHVzaW5nIHRoZSBgVEVTVF9ITU1gIHBzZXVkbyBkZXZpY2UgZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTMwOWUxMmQ2ZWY4YzgwZjU3YWY0Zjc4NjNiMjhmOTgxZTZmMzRhNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDI3IDE3OjA3OjUxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL21pZ3JhdGVfZGV2aWNlLmMgYi9tbS9taWdyYXRlX2RldmljZS5jXG5pbmRleCA1NTQ3NTRlYjI2ZmYyZi4uNzRhYzY2NTFkNGIzNDMgMTAwNjQ0XG4tLS0gYS9tbS9taWdyYXRlX2RldmljZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9taWdyYXRlX2RldmljZS5jXG5AQCAtMTE4Miw2ICYjNDM7MTE4MiwxMSBAQCBzdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxuIFx0XHRcdFx0XHRcdFx0IE1JR1JBVEVfUEZOX0NPTVBPVU5EKTtcbiBcdFx0XHRcdFx0Z290byBuZXh0O1xuIFx0XHRcdFx0fVxuJiM0MztcdFx0XHRcdC8qXG4mIzQzO1x0XHRcdFx0ICogcmVzZXQgbnIgc28gdGhhdCBvbmx5IGZpcnN0IGFmdGVyLXNwbGl0IGZvbGlvXG4mIzQzO1x0XHRcdFx0ICogaXMgcHJvY2Vzc2VkIGJlbG93XG4mIzQzO1x0XHRcdFx0ICovXG4mIzQzO1x0XHRcdFx0bnIgPSAxO1xuIFx0XHRcdH0gZWxzZSBpZiAoKHNyY19wZm5zW2ldIFx1MDAyNiBNSUdSQVRFX1BGTl9NSUdSQVRFKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHRcdChkc3RfcGZuc1tpXSBcdTAwMjYgTUlHUkFURV9QRk5fQ09NUE9VTkQpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0IShzcmNfcGZuc1tpXSBcdTAwMjYgTUlHUkFURV9QRk5fQ09NUE9VTkQpKSB7XG5AQCAtMTIwNCw2ICYjNDM7MTIwOSwxMiBAQCBzdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxuIFx0XHRcdFx0XHRzcmNfcGZuc1tpXSBcdTAwMjY9IH5NSUdSQVRFX1BGTl9NSUdSQVRFO1xuIFx0XHRcdFx0XHRnb3RvIG5leHQ7XG4gXHRcdFx0XHR9XG4mIzQzO1xuJiM0MztcdFx0XHRcdC8qXG4mIzQzO1x0XHRcdFx0ICogZm9saW9fZnJlZV9zd2FwKCkgcmVtb3ZlZCB0aGUgZm9saW8gZnJvbSB0aGUgc3dhcFxuJiM0MztcdFx0XHRcdCAqIGNhY2hlLiBSZWZyZXNoIHRoZSBzYXZlZCBtYXBwaW5nIGJlZm9yZSBtaWdyYXRpb24uXG4mIzQzO1x0XHRcdFx0ICovXG4mIzQzO1x0XHRcdFx0bWFwcGluZyA9IGZvbGlvX21hcHBpbmcoZm9saW8pO1xuIFx0XHRcdH1cbiBcdFx0fSBlbHNlIGlmIChmb2xpb19pc196b25lX2RldmljZShuZXdmb2xpbykpIHtcbiBcdFx0XHQvKlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtERVZJQ0VfTUlHUkFUSU9OJiMzNDssCiAgICAmIzM0O1RFU1RfSE1NJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O0RFVklDRV9QUklWQVRFJiMzNDssCiAgICAmIzM0O1pPTkVfREVWSUNFJiMzNDssCiAgICAmIzM0O01JR1JBVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21pZ3JhdGVfdm1hX3BhZ2VzJiMzNDssCiAgICAmIzM0O21pZ3JhdGVfZGV2aWNlX3BhZ2VzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgd2hpY2ggaXMgYSBjb3JlIGZ1bmN0aW9uIGZvciBkZXZpY2UgbWVtb3J5IG1pZ3JhdGlvbi4gSXQgZml4ZXMgYSBidWcgcmVsYXRlZCB0byBmb2xpbyBzcGxpdCBhbmQgc3dhcCBjYWNoZS4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgYG1pZ3JhdGVfdm1hX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgd2hpY2ggY2FuIGJlIHRyaWdnZXJlZCB1c2luZyB0aGUgYFRFU1RfSE1NYCBwc2V1ZG8gZGV2aWNlIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDEzMDllMTJkNmVmOGM4MGY1N2FmNGY3ODYzYjI4Zjk4MWU2ZjM0YTUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAyNyAxNzowNzo1MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL21pZ3JhdGVfZGV2aWNlLmMgYi9tbS9taWdyYXRlX2RldmljZS5jCmluZGV4IDU1NDc1NGViMjZmZjJmLi43NGFjNjY1MWQ0YjM0MyAxMDA2NDQKLS0tIGEvbW0vbWlncmF0ZV9kZXZpY2UuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9taWdyYXRlX2RldmljZS5jCkBAIC0xMTgyLDYgJiM0MzsxMTgyLDExIEBAIHN0YXRpYyB2b2lkIF9fbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsCiAJCQkJCQkJIE1JR1JBVEVfUEZOX0NPTVBPVU5EKTsKIAkJCQkJZ290byBuZXh0OwogCQkJCX0KJiM0MzsJCQkJLyoKJiM0MzsJCQkJICogcmVzZXQgbnIgc28gdGhhdCBvbmx5IGZpcnN0IGFmdGVyLXNwbGl0IGZvbGlvCiYjNDM7CQkJCSAqIGlzIHByb2Nlc3NlZCBiZWxvdwomIzQzOwkJCQkgKi8KJiM0MzsJCQkJbnIgPSAxOwogCQkJfSBlbHNlIGlmICgoc3JjX3BmbnNbaV0gJmFtcDsgTUlHUkFURV9QRk5fTUlHUkFURSkgJmFtcDsmYW1wOwogCQkJCShkc3RfcGZuc1tpXSAmYW1wOyBNSUdSQVRFX1BGTl9DT01QT1VORCkgJmFtcDsmYW1wOwogCQkJCSEoc3JjX3BmbnNbaV0gJmFtcDsgTUlHUkFURV9QRk5fQ09NUE9VTkQpKSB7CkBAIC0xMjA0LDYgJiM0MzsxMjA5LDEyIEBAIHN0YXRpYyB2b2lkIF9fbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsCiAJCQkJCXNyY19wZm5zW2ldICZhbXA7PSB+TUlHUkFURV9QRk5fTUlHUkFURTsKIAkJCQkJZ290byBuZXh0OwogCQkJCX0KJiM0MzsKJiM0MzsJCQkJLyoKJiM0MzsJCQkJICogZm9saW9fZnJlZV9zd2FwKCkgcmVtb3ZlZCB0aGUgZm9saW8gZnJvbSB0aGUgc3dhcAomIzQzOwkJCQkgKiBjYWNoZS4gUmVmcmVzaCB0aGUgc2F2ZWQgbWFwcGluZyBiZWZvcmUgbWlncmF0aW9uLgomIzQzOwkJCQkgKi8KJiM0MzsJCQkJbWFwcGluZyA9IGZvbGlvX21hcHBpbmcoZm9saW8pOwogCQkJfQogCQl9IGVsc2UgaWYgKGZvbGlvX2lzX3pvbmVfZGV2aWNlKG5ld2ZvbGlvKSkgewogCQkJLyoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzNAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTWVtb3J5IE1pZ3JhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG1tL21pZ3JhdGVfZGV2aWNlLmNgLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIHR3ZWFraW5nIHRoZSBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgZnVuY3Rpb24uIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoZSBjaGFuZ2VzIGFyZSBmYWlybHkgZm9jdXNlZCwgYnV0IGxldCYjMzk7cyBkaWcgZGVlcGVyLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBjYXRjaGVzIG15IGV5ZSBpcyB0aGUgYWRkaXRpb24gb2YgYG5yID0gMTtgIGFmdGVyIGEgZm9saW8gc3BsaXQuIFRoaXMgdGVsbHMgbWUgdGhleSYjMzk7cmUgbGlrZWx5IGRlYWxpbmcgd2l0aCB0aGUgcGFnZSBjb3VudCBhZnRlciBhIHNwbGl0LCB3aGljaCBpcyBjcnVjaWFsIGZvciBjb3JyZWN0IGl0ZXJhdGlvbiBvciBhY2NvdW50aW5nLiBJdCBzZWVtcyBzdHJhaWdodGZvcndhcmQsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIGZvciB0aGUgb3ZlcmFsbCBtaWdyYXRpb24gcHJvY2Vzcy4KClRoZSBzZWNvbmQgYWRkaXRpb24sIGBtYXBwaW5nID0gZm9saW9fbWFwcGluZyhmb2xpbyk7YCBhZnRlciBgZm9saW9fZnJlZV9zd2FwKClgLCBsb29rcyBlcXVhbGx5IGltcG9ydGFudC4gVGhlIHN3YXAgZnJlZWluZyBmdW5jdGlvbiBzdWdnZXN0cyB0aGF0IHRoaXMgZm9saW8gd2FzIHByZXZpb3VzbHkgc3dhcHBlZCBvdXQuIE5vdywgaXQgc2VlbXMgbGlrZSB0aGV5IGFyZSB0cnlpbmcgdG8gb2J0YWluIHRoZSBtYXBwaW5nIG9mIHRoZSBmb2xpby4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGV5IGludGVuZCB0byBkbyB3aXRoIGl0IG9uY2UgdGhlIHN3YXAgaXMgZnJlZWQsIG1heWJlIHJlbGF0ZWQgdG8gZGV2aWNlIG1pZ3JhdGlvbi4gVGhpcyBpbmRpY2F0ZXMgcG90ZW50aWFsIGNoYW5nZXMgaW4gaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyBzd2FwcGVkIHBhZ2VzIGR1cmluZyBkZXZpY2UgbWlncmF0aW9uLCBhbmQgdGhpcyBoYXMgdG8gYmUgY2FyZWZ1bGx5IGV4YW1pbmVkLgoKVG8gZnVsbHkgZ3Jhc3AgdGhlIGludGVudCBhbmQgcG90ZW50aWFsIGltcGFjdCwgSSBuZWVkIHRvIHpvb20gb3V0IGFuZCBhbmFseXplIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIHdpdGhpbiB0aGUgbGFyZ2VyIGBtbS9taWdyYXRlX2RldmljZS5jYCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgY2hhbmdlcyBmaXQgaW50byB0aGUgZXhpc3RpbmcgZmxvdyBhbmQgd2hhdCBvdGhlciBmdW5jdGlvbnMgb3IgZGF0YSBzdHJ1Y3R1cmVzIHRoZXkgaW50ZXJhY3Qgd2l0aC4gVGhlIGdvYWwgaXMgdG8gc2VlIGlmIHRoZXkmIzM5O3ZlIGFjY291bnRlZCBmb3IgYWxsIHRoZSBlZGdlIGNhc2VzIGFuZCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBnaXZlbiB0aGUgbmF0dXJlIG9mIG1lbW9yeSBtaWdyYXRpb24uIExldCYjMzk7cyBnZXQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19taWdyYXRlX2RldmljZV9wYWdlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL21pZ3JhdGVfZGV2aWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vbWlncmF0ZV9kZXZpY2UuYz05NjU9c3RhdGljIHZvaWQgbWlncmF0ZV92bWFfaW5zZXJ0X3BhZ2Uoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlLFxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTA5Ny1cbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTA5ODpzdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMDk5LVx0XHRcdFx0dW5zaWduZWQgbG9uZyAqZHN0X3BmbnMsIHVuc2lnbmVkIGxvbmcgbnBhZ2VzLFxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTI1OD12b2lkIG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLCB1bnNpZ25lZCBsb25nICpkc3RfcGZucyxcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjAte1xubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjYxOlx0X19taWdyYXRlX2RldmljZV9wYWdlcyhzcmNfcGZucywgZHN0X3BmbnMsIG5wYWdlcywgTlVMTCk7XG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjItfVxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTI3Mz12b2lkIG1pZ3JhdGVfdm1hX3BhZ2VzKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSlcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI3NC17XG5tbS9taWdyYXRlX2RldmljZS5jOjEyNzU6XHRfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKG1pZ3JhdGUtXHUwMDNlc3JjLCBtaWdyYXRlLVx1MDAzZWRzdCwgbWlncmF0ZS1cdTAwM2VucGFnZXMsIG1pZ3JhdGUpO1xubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjc2LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDExCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgRGV2aWNlIFBhZ2UgTWlncmF0aW9uKioKClJpZ2h0LCBzbyBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgaXMgY2xlYXJseSB0aGUgY29yZSBmdW5jdGlvbiBoZXJlLCB0aGUgb25lIGFjdHVhbGx5IGRvaW5nIHRoZSBoZWF2eSBsaWZ0aW5nLiBCb3RoIGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYW5kIGBtaWdyYXRlX3ZtYV9wYWdlc2Agc2VlbSB0byBiZSBjYWxsaW5nIGl0LCB3aGljaCBzdWdnZXN0cyBhIHNoYXJlZCBjb3JlIGZ1bmN0aW9uYWxpdHkgZm9yIG1pZ3JhdGluZyBwYWdlcyByZWxhdGVkIHRvIGRldmljZXMuIE9rYXksIHNvIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgY29udGV4dC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWd1cmF0aW9ucyBhY3R1YWxseSAqZW5hYmxlKiB0aGUgYG1tL21pZ3JhdGVfZGV2aWNlLmNgIGZpbGUgYW5kIGl0cyBmdW5jdGlvbmFsaXR5LiBXaGF0IGFyZSB0aGUgZGVwZW5kZW5jaWVzPyBXaGF0IGZlYXR1cmUgZmxhZ3MgYXJlIGludm9sdmVkPyBMZXQmIzM5O3MgY2hlY2sgdGhlIEtjb25maWcgYW5kIHNlZSB3aGF0IGRlZmluZXMgdGhlc2Ugb3B0aW9ucy4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzIHRoaXMgY29kZSBwYXRoIGlzIGV2ZW4gYWN0aXZlLiBJdCYjMzk7bGwgZ2l2ZSBtZSBjb250ZXh0IG9uIHdoYXQgYXJjaGl0ZWN0dXJhbCBhc3N1bXB0aW9ucyBhcmUgYnVpbHQgaW4gdG8gdGhlIG1pZ3JhdGlvbiBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21pZ3JhdGVfZGV2aWNlLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9NYWtlZmlsZT05OT1vYmotJChDT05GSUdfTlVNQSkgJiM0Mzs9IG1lbW9yeS10aWVycy5vXG5tbS9NYWtlZmlsZToxMDA6b2JqLSQoQ09ORklHX0RFVklDRV9NSUdSQVRJT04pICYjNDM7PSBtaWdyYXRlX2RldmljZS5vXG5tbS9NYWtlZmlsZS0xMDEtb2JqLSQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSAmIzQzOz0gaHVnZV9tZW1vcnkubyBraHVnZXBhZ2VkLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzY3CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgRGV2aWNlIE1pZ3JhdGlvbiBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHNvIGBDT05GSUdfREVWSUNFX01JR1JBVElPTmAgaXMgZmxpcHBlZC4gTmF0dXJhbGx5LCB0aGF0IHB1bGxzIGluIGBtbS9taWdyYXRlX2RldmljZS5jYC4gTm93LCBhcyBhbiBleHBlcnQgaW4gdGhpcyBhcmVhLCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIHRoZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmFsIHByZXJlcXVpc2l0ZXMgYW5kIHN1cHBvcnRpbmcgaW5mcmFzdHJ1Y3R1cmUgdGhhdCBhbGxvd3MgZm9yIGRldmljZSBtaWdyYXRpb24uIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zIGFyZSB0aWVkIHRvIGBDT05GSUdfREVWSUNFX01JR1JBVElPTmAuIFVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgZGVwZW5kZW5jeSB0cmVlIGlzIGNyaXRpY2FsIHRvIGFzc2Vzc2luZyBpdHMgaW1wbGljYXRpb25zIG9uIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBvdmVyYWxsIHN5c3RlbSBzdGFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERFVklDRV9NSUdSQVRJT04mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9Njk2PWNvbmZpZyBNSUdSQVRJT05cbi0tXG5tbS9LY29uZmlnLTY5OS1cbm1tL0tjb25maWc6NzAwOmNvbmZpZyBERVZJQ0VfTUlHUkFUSU9OXG5tbS9LY29uZmlnLTcwMS1cdGRlZl9ib29sIE1JR1JBVElPTiBcdTAwMjZcdTAwMjYgWk9ORV9ERVZJQ0VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjM4CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEZWNvbnN0cnVjdGluZyB0aGUgRGV2aWNlIE1pZ3JhdGlvbiBMb2dpYyoqCgpSaWdodCwgc28gYERFVklDRV9NSUdSQVRJT05gIGlzIGRlZmluZWQgYXMgYSBib29sZWFuIHRoYXQgcmVxdWlyZXMgYm90aCBgTUlHUkFUSU9OYCBhbmQgYFpPTkVfREVWSUNFYCB0byBiZSB0cnVlLiBNYWtlcyBzZW5zZS4gSXQmIzM5O3MgYSBjb25kaXRpb25hbCBzZXR0aW5nLCBlc3NlbnRpYWxseS4gTWlncmF0aW9uLCBpbiBpdHNlbGYsIGlzbiYjMzk7dCBlbm91Z2g7IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggem9uZS1zcGVjaWZpYyBkZXZpY2UgbWlncmF0aW9uLCB3aGljaCBpcyBtb3JlIHRhcmdldGVkLiBPa2F5LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGBaT05FX0RFVklDRWAgY29tcGxldGVseSwgdGhvdWdoLiBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGF0LiBHb3R0YSBlbnN1cmUgYWxsIHRoZSBwaWVjZXMgYXJlIHdoZXJlIHRoZXkgbmVlZCB0byBiZSwgZXNwZWNpYWxseSB3aXRoIHNvbWV0aGluZyB0aGF0IGNvdWxkIGltcGFjdCBkZXZpY2UgYmVoYXZpb3IgaW4gYSB6b25lLiBCZXR0ZXIgdG8gYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBaT05FX0RFVklDRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz0xMjMxPWNvbmZpZyBaT05FX0RNQTMyXG4tLVxubW0vS2NvbmZpZy0xMjM1LVxubW0vS2NvbmZpZzoxMjM2OmNvbmZpZyBaT05FX0RFVklDRVxubW0vS2NvbmZpZy0xMjM3LVx0Ym9vbCBcJiMzNDtEZXZpY2UgbWVtb3J5IChwbWVtLCBITU0sIGV0Yy4uLikgaG90cGx1ZyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NDIKCQkJCQkJCW91dHB1dDogNzMKCQkJCQkJCXRob3VnaHRzOiA0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgTWVtb3J5IE1pZ3JhdGlvbiBDYXBhYmlsaXRpZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEkmIzM5O20gZm9jdXNpbmcgb24gYENPTkZJR19aT05FX0RFVklDRWAgYW5kIGBDT05GSUdfTUlHUkFUSU9OYCDigJMgdGhvc2UgYXJlIHRoZSBrZXkgZmxhZ3MgaW5kaWNhdGluZyBzdXBwb3J0IGZvciBkZXZpY2Ugem9uZXMgYW5kIHBhZ2UgbWlncmF0aW9uLiBOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzIGhvdyBkZWVwbHkgdGhvc2UgZmVhdHVyZXMgYXJlIHdvdmVuIGludG8gdGhlIHN5c3RlbS4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGNoZWNrIGhvdyBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgIGFyZSAqZXhwb3NlZCouIEkgbmVlZCB0byBzZWUgd2hlcmUgdGhlc2UgY3JpdGljYWwgZnVuY3Rpb25zIGFyZSBleHBvcnRlZCB0byBnYXVnZSB0aGUgYWNjZXNzaWJpbGl0eSBhbmQgaW50ZWdyYXRpb24gcG9pbnRzIG9mIHRoZSBtaWdyYXRpb24gbWVjaGFuaXNtcy4gV2hlcmUgdGhleeKAmXJlIHZpc2libGUgdGVsbHMgdGhlIHdob2xlIHN0b3J5LiBBcmUgd2UgdGFsa2luZyBtb2R1bGUgYWNjZXNzLCBvciBpcyBpdCBkZWVwbHkgd2l0aGluIHRoZSBjb3JlPyBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyByb2J1c3RseSB0aGUgZnVuY3Rpb25hbGl0eSBpcyBpbmNvcnBvcmF0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKm1pZ3JhdGVfZGV2aWNlX3BhZ2VzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vbWlncmF0ZV9kZXZpY2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9taWdyYXRlX2RldmljZS5jPTEyNTg9dm9pZCBtaWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywgdW5zaWduZWQgbG9uZyAqZHN0X3BmbnMsXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjYyLX1cbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI2MzpFWFBPUlRfU1lNQk9MKG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKTtcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qbWlncmF0ZV92bWFfcGFnZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9taWdyYXRlX2RldmljZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21pZ3JhdGVfZGV2aWNlLmM9MTI3Mz12b2lkIG1pZ3JhdGVfdm1hX3BhZ2VzKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSlcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzYtfVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjc3OkVYUE9SVF9TWU1CT0wobWlncmF0ZV92bWFfcGFnZXMpO1xubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjc4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDI4CgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRyYWNraW5nIGRvd24gdGhlIGNhbGxlcnMgb2YgdGhvc2UgZnVuY3Rpb25zLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlIGluIHRoaXMgYXJlYToKCioqVHJhY2luZyB0aGUgQ2FsbGVycyoqCgpBbHJpZ2h0LCBzbyBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgLi4uIHRoZXkmIzM5O3JlIGtleSBmdW5jdGlvbnMgZm9yIHBhZ2UgbWlncmF0aW9uLCBwYXJ0aWN1bGFybHkgaW52b2x2aW5nIGRldmljZSBtZW1vcnkgYW5kIHZpcnR1YWwgbWVtb3J5IGFyZWFzLiBUaGF0IHRlbGxzIG1lIHRoZXkmIzM5O3JlIHByb2JhYmx5IHNpdHRpbmcgaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgY29kZSwgbGlrZWx5IHNvbWV3aGVyZSByZWxhdGVkIHRvIHRoZSBwYWdlIHRhYmxlIGhhbmRsaW5nLCBwb3RlbnRpYWxseSBsaW5rZWQgdG8gZGV2aWNlIGRyaXZlcnMgb3IgVk0gc3Vic3lzdGVtLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSwgaXMgdG8gZmlndXJlIG91dCB0aGUgc291cmNlIGNvZGUgb2YgdGhlIGZ1bmN0aW9ucy4KCkZpcnN0LCBJIG5lZWQgdG8ga25vdyAqd2hlcmUqIHRoZXNlIGFyZSBkZWZpbmVkLiBJIHdvdWxkIHVzZSBgZ3JlcGAgb3IgbXkgSURFJiMzOTtzIHNlYXJjaCBmdW5jdGlvbiBhY3Jvc3MgdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSwgbG9va2luZyBmb3IgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZXMuIE9uY2UgSSBrbm93IHRoZSBmaWxlcywgSSBjYW4gZGlyZWN0bHkgdmlldyB0aGVpciBkZWZpbml0aW9ucyB0byB1bmRlcnN0YW5kIHRoZWlyIHB1cnBvc2UuIEtub3dpbmcgdGhlaXIgcHVycG9zZSBnaXZlcyBtZSBmdXJ0aGVyIGhpbnRzIG9uIHdoZXJlIHRvIGxvb2sgbmV4dC4KCk9uY2UgSSBoYXZlIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9ucywgSSYjMzk7bGwgdGhlbiB1c2UgbXkgY29kZSBuYXZpZ2F0aW9uIHRvb2xzIChsaWtlIGBjc2NvcGVgLCBgY3RhZ3NgLCBvciBteSBJREUmIzM5O3MgYnVpbHQtaW4gY2FsbCBncmFwaCBmZWF0dXJlcykgdG8gcGVyZm9ybSBhICYjMzQ7ZmluZCBjYWxsZXJzJiMzNDsgc2VhcmNoLiBUaGF0JiMzOTtzIHRoZSBtb3N0IGRpcmVjdCBtZXRob2QuIEkgY2FuIHNjYW4gdGhlIGNvZGUgdG8gbG9vayBmb3IgdGhlIHVzZXMgb2YgdGhlIGZ1bmN0aW9ucy4KCkkgbmVlZCB0byBiZSBzeXN0ZW1hdGljLiBUaGlzIG1pZ2h0IGludm9sdmUgc2V0dGluZyB1cCBhIGNyb3NzLXJlZmVyZW5jZSBzZWFyY2gsIHNjYW5uaW5nIGtlcm5lbCBtb2R1bGVzIHRoYXQgaGF2ZSB0byBkbyB3aXRoIHBhZ2UgbWlncmF0aW9uLCBkZXZpY2UgZHJpdmVycyAoZXNwZWNpYWxseSB0aG9zZSBoYW5kbGluZyBETUEgb3IgbWVtb3J5LW1hcHBlZCBJL08pLCBvciB0aGUgdmlydHVhbCBtZW1vcnkgYXJlYSBjb2RlIChgbW0vYCkuIEkgd2lsbCBwYXkgYXR0ZW50aW9uIHRvIGFueSBjYWxscyB3aXRoIGRldmljZSBzcGVjaWZpYyBjb2RlIGFzIHRoaXMgaXMgcmVsYXRlZCB0byBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgCgpJIHdpbGwgYWxzbyBjb25zaWRlciBzdGF0aWMgYW5hbHlzaXMsIGlmIGF2YWlsYWJsZSwgd2hpY2ggY2FuIHByb3ZpZGUgYSBtb3JlIGV4aGF1c3RpdmUgbG9vayBhdCBwb3RlbnRpYWwgY2FsbCBwYXRocywgaW5jbHVkaW5nIHRob3NlIGludm9sdmluZyBmdW5jdGlvbiBwb2ludGVycyBvciBpbmRpcmVjdCBjYWxscy4gSSBtaWdodCBhbHNvIGNvbnNpZGVyIHRoZSB1c2Ugb2YgYHRyYWNlcG9pbnRzYCBvciBga3Byb2Jlc2AgdG8gZHluYW1pY2FsbHkgbW9uaXRvciB0aGUgY2FsbHMgdG8gdGhlc2UgZnVuY3Rpb25zIGR1cmluZyBydW50aW1lLCBlc3BlY2lhbGx5IG9uIGEgdGVzdCBzeXN0ZW0sIHRvIGNhdGNoIGluZnJlcXVlbnQgY2FsbHMgb3IgdGhvc2UgdHJpZ2dlcmVkIGJ5IHNwZWNpZmljIGV2ZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWlncmF0ZV9kZXZpY2VfcGFnZXNcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM9MTEwOT1pbnQgZHJtX3BhZ2VtYXBfZXZpY3RfdG9fcmFtKHN0cnVjdCBkcm1fcGFnZW1hcF9kZXZtZW0gKmRldm1lbV9hbGxvY2F0aW9uKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jLTExNzQtXHRcdGRybV9wYWdlbWFwX21pZ3JhdGlvbl91bmxvY2tfcHV0X3BhZ2VzKG5wYWdlcywgZHN0KTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jOjExNzU6XHRtaWdyYXRlX2RldmljZV9wYWdlcyhzcmMsIGRzdCwgbnBhZ2VzKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jLTExNzYtXHRtaWdyYXRlX2RldmljZV9maW5hbGl6ZShzcmMsIGRzdCwgbnBhZ2VzKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYz00NzU9bm91dmVhdV9kbWVtX2V2aWN0X2NodW5rKHN0cnVjdCBub3V2ZWF1X2RtZW1fY2h1bmsgKmNodW5rKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jLTUxNy1cdG5vdXZlYXVfZmVuY2VfbmV3KFx1MDAyNmZlbmNlLCBjaHVuay1cdTAwM2Vkcm0tXHUwMDNlZG1lbS1cdTAwM2VtaWdyYXRlLmNoYW4pO1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM6NTE4Olx0bWlncmF0ZV9kZXZpY2VfcGFnZXMoc3JjX3BmbnMsIGRzdF9wZm5zLCBucGFnZXMpO1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMtNTE5LVx0bm91dmVhdV9kbWVtX2ZlbmNlX2RvbmUoXHUwMDI2ZmVuY2UpO1xuLS1cbmluY2x1ZGUvbGludXgvbWlncmF0ZS5oPTE5OD1pbnQgbWlncmF0ZV9kZXZpY2VfcGZucyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywgdW5zaWduZWQgbG9uZyBucGFnZXMpO1xuaW5jbHVkZS9saW51eC9taWdyYXRlLmg6MTk5OnZvaWQgbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsIHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmgtMjAwLVx0XHRcdHVuc2lnbmVkIGxvbmcgbnBhZ2VzKTtcbi0tXG5saWIvdGVzdF9obW0uYz0xODg9c3RhdGljIHZvaWQgZG1pcnJvcl9kZXZpY2VfZXZpY3RfY2h1bmsoc3RydWN0IGRtaXJyb3JfY2h1bmsgKmNodW5rKVxuLS1cbmxpYi90ZXN0X2htbS5jLTIzMS1cdH1cbmxpYi90ZXN0X2htbS5jOjIzMjpcdG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKHNyY19wZm5zLCBkc3RfcGZucywgbnBhZ2VzKTtcbmxpYi90ZXN0X2htbS5jLTIzMy1cdG1pZ3JhdGVfZGV2aWNlX2ZpbmFsaXplKHNyY19wZm5zLCBkc3RfcGZucywgbnBhZ2VzKTtcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTk2NT1zdGF0aWMgdm9pZCBtaWdyYXRlX3ZtYV9pbnNlcnRfcGFnZShzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUsXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMDk3LVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMDk4OnN0YXRpYyB2b2lkIF9fbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsXG5tbS9taWdyYXRlX2RldmljZS5jLTEwOTktXHRcdFx0XHR1bnNpZ25lZCBsb25nICpkc3RfcGZucywgdW5zaWduZWQgbG9uZyBucGFnZXMsXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjQ5LS8qKlxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjUwOiAqIG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKCkgLSBtaWdyYXRlIG1ldGEtZGF0YSBmcm9tIHNyYyBwYWdlIHRvIGRzdCBwYWdlXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTEtICogQHNyY19wZm5zOiBzcmNfcGZucyByZXR1cm5lZCBmcm9tIG1pZ3JhdGVfZGV2aWNlX3JhbmdlKClcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTctICovXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNTg6dm9pZCBtaWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywgdW5zaWduZWQgbG9uZyAqZHN0X3BmbnMsXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTktXHRcdFx0dW5zaWduZWQgbG9uZyBucGFnZXMpXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjAte1xubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjYxOlx0X19taWdyYXRlX2RldmljZV9wYWdlcyhzcmNfcGZucywgZHN0X3BmbnMsIG5wYWdlcywgTlVMTCk7XG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjItfVxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTI3Mz12b2lkIG1pZ3JhdGVfdm1hX3BhZ2VzKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSlcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI3NC17XG5tbS9taWdyYXRlX2RldmljZS5jOjEyNzU6XHRfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKG1pZ3JhdGUtXHUwMDNlc3JjLCBtaWdyYXRlLVx1MDAzZWRzdCwgbWlncmF0ZS1cdTAwM2VucGFnZXMsIG1pZ3JhdGUpO1xubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjc2LX1cbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTEzNjY9c3RhdGljIHVuc2lnbmVkIGxvbmcgbWlncmF0ZV9kZXZpY2VfcGZuX2xvY2sodW5zaWduZWQgbG9uZyBwZm4pXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMzk4LSAqIGFsbG9jYXRlIGRlc3RpbmF0aW9uIHBhZ2VzIGFuZCBzdGFydCBjb3B5aW5nIGRhdGEgZnJvbSB0aGUgZGV2aWNlIHRvIENQVVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMzk5OiAqIG1lbW9yeSBiZWZvcmUgY2FsbGluZyBtaWdyYXRlX2RldmljZV9wYWdlcygpLlxubW0vbWlncmF0ZV9kZXZpY2UuYy0xNDAwLSAqL1xuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTQ2Nj1pbnQgbWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTE0OTAtXG5tbS9taWdyYXRlX2RldmljZS5jOjE0OTE6XHRtaWdyYXRlX2RldmljZV9wYWdlcyhcdTAwMjZzcmNfcGZuLCBcdTAwMjZkc3RfcGZuLCAxKTtcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTQ5Mi1cdGlmIChzcmNfcGZuIFx1MDAyNiBNSUdSQVRFX1BGTl9NSUdSQVRFKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttaWdyYXRlX3ZtYV9wYWdlc1xcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL21tL2htbS5yc3Q9MjY0PXVzZSBoYXJkd2FyZSBETUEgb3IgZGV2aWNlIHNwZWNpZmljIGxvYWQvc3RvcmUgaW5zdHJ1Y3Rpb25zIHRvIG1pZ3JhdGUgZGF0YS5cbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdDoyNjU6VGhlIG1pZ3JhdGVfdm1hX3NldHVwKCksIG1pZ3JhdGVfdm1hX3BhZ2VzKCksIGFuZCBtaWdyYXRlX3ZtYV9maW5hbGl6ZSgpXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3QtMjY2LWZ1bmN0aW9ucyBhcmUgZGVzaWduZWQgdG8gbWFrZSBkcml2ZXJzIGVhc2llciB0byB3cml0ZSBhbmQgdG8gY2VudHJhbGl6ZSBjb21tb25cbi0tXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3Q9Mjk3PWJldHdlZW4gZGV2aWNlIGRyaXZlciBzcGVjaWZpYyBjb2RlIGFuZCBzaGFyZWQgY29tbW9uIGNvZGU6XG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTM2NC1cbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdDozNjU6NC4gYGBtaWdyYXRlX3ZtYV9wYWdlcygpYGBcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdC0zNjYtXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdD0yMTI9SE1NIOWIh+aNouWIsOebtOaOpeS9v+eUqCBzdHJ1Y3QgcGFnZSDnlKjkuo7orr7lpIflhoXlrZjvvIzov5nkvb/lvpflpKflpJrmlbDlhoXmoLjku6PnoIHot6/lvoTkuI3nn6XpgZPlt67lvILjgIJcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0LTIxOC3nlLHkuo4gQ1BVIOaXoOazleebtOaOpeiuv+mXruiuvuWkh+WGheWtmO+8jOWboOatpOiuvuWkh+mpseWKqOeoi+W6j+W/hemhu+S9v+eUqOehrOS7tiBETUEg5oiW6K6+5aSH54m55a6a55qE5Yqg6L29L+WtmFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdDoyMTk65YKo5oyH5Luk5p2l6L+B56e75pWw5o2u44CCbWlncmF0ZV92bWFfc2V0dXAoKeOAgW1pZ3JhdGVfdm1hX3BhZ2VzKCkg5ZKMXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0LTIyMC1taWdyYXRlX3ZtYV9maW5hbGl6ZSgpIOWHveaVsOaXqOWcqOS9v+mpseWKqOeoi+W6j+abtOaYk+S6jue8luWGmeW5tumbhuS4rei3qOmpseWKqOeoi+W6j+eahOmAmueUqOS7o+eggeOAglxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3Q9MjQzPWRldm1fbWVtdW5tYXBfcGFnZXMoKSDlkowgZGV2bV9yZWxlYXNlX21lbV9yZWdpb24oKSDlvZPotYTmupDlj6/ku6Xnu5HlrprliLAgYGBzdHJ1Y3QgZGV2aWNlYGAuXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdC0yOTctXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0OjI5ODo0LiBgYG1pZ3JhdGVfdm1hX3BhZ2VzKClgYFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdC0yOTktXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYz01MTM9c3RhdGljIGludCBfX2t2bXBwY19zdm1fcGFnZV9vdXQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYy01NzgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jOjU3OTpcdG1pZ3JhdGVfdm1hX3BhZ2VzKFx1MDAyNm1pZyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jLTU4MC1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jPTc0MD1zdGF0aWMgaW50IGt2bXBwY19zdm1fcGFnZV9pbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jLTc4Ny1cdCptaWcuZHN0ID0gbWlncmF0ZV9wZm4ocGFnZV90b19wZm4oZHBhZ2UpKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmM6Nzg4Olx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2bWlnKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmMtNzg5LW91dF9maW5hbGl6ZTpcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jPTM5ND1zdm1fbWlncmF0ZV92bWFfdG9fdnJhbShzdHJ1Y3Qga2ZkX25vZGUgKm5vZGUsIHN0cnVjdCBzdm1fcmFuZ2UgKnByYW5nZSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jLTQ1MS1cdHIgPSBzdm1fbWlncmF0ZV9jb3B5X3RvX3ZyYW0obm9kZSwgcHJhbmdlLCBcdTAwMjZtaWdyYXRlLCBcdTAwMjZtZmVuY2UsIHNjcmF0Y2gsIHR0bV9yZXNfb2Zmc2V0KTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmM6NDUyOlx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2bWlncmF0ZSk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jLTQ1My1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jPTY5Mz1zdm1fbWlncmF0ZV92bWFfdG9fcmFtKHN0cnVjdCBrZmRfbm9kZSAqbm9kZSwgc3RydWN0IHN2bV9yYW5nZSAqcHJhbmdlLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmMtNzU1LVx0XHRcdFx0ICAgIHNjcmF0Y2gsIG5wYWdlcyk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jOjc1NjpcdG1pZ3JhdGVfdm1hX3BhZ2VzKFx1MDAyNm1pZ3JhdGUpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYy03NTctXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM9NjE2PWludCBkcm1fcGFnZW1hcF9taWdyYXRlX3RvX2Rldm1lbShzdHJ1Y3QgZHJtX3BhZ2VtYXBfZGV2bWVtICpkZXZtZW1fYWxsb2NhdGlvbixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy04MTItZXJyX2Fib3J0ZWRfbWlncmF0aW9uOlxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM6ODEzOlx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2bWlncmF0ZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy04MTQtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM9MTIxMT1zdGF0aWMgaW50IF9fZHJtX3BhZ2VtYXBfbWlncmF0ZV90b19yYW0oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2YXMsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmMtMTMwNC1cdFx0ZHJtX3BhZ2VtYXBfbWlncmF0aW9uX3VubG9ja19wdXRfcGFnZXMobnBhZ2VzLCBtaWdyYXRlLmRzdCk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYzoxMzA1Olx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2bWlncmF0ZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy0xMzA2LVx0bWlncmF0ZV92bWFfZmluYWxpemUoXHUwMDI2bWlncmF0ZSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM9MTgzPXN0YXRpYyB2bV9mYXVsdF90IG5vdXZlYXVfZG1lbV9taWdyYXRlX3RvX3JhbShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy0yNjctXHRub3V2ZWF1X2ZlbmNlX25ldyhcdTAwMjZmZW5jZSwgZG1lbS1cdTAwM2VtaWdyYXRlLmNoYW4pO1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM6MjY4Olx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2YXJncyk7XG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy0yNjktXHRub3V2ZWF1X2RtZW1fZmVuY2VfZG9uZShcdTAwMjZmZW5jZSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM9NzgzPXN0YXRpYyB2b2lkIG5vdXZlYXVfZG1lbV9taWdyYXRlX2NodW5rKHN0cnVjdCBub3V2ZWF1X2RybSAqZHJtLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jLTgwOS1cdG5vdXZlYXVfZmVuY2VfbmV3KFx1MDAyNmZlbmNlLCBkcm0tXHUwMDNlZG1lbS1cdTAwM2VtaWdyYXRlLmNoYW4pO1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM6ODEwOlx0bWlncmF0ZV92bWFfcGFnZXMoYXJncyk7XG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy04MTEtXHRub3V2ZWF1X2RtZW1fZmVuY2VfZG9uZShcdTAwMjZmZW5jZSk7XG4tLVxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg9MTU4PXN0cnVjdCBtaWdyYXRlX3ZtYSB7XG4tLVxuaW5jbHVkZS9saW51eC9taWdyYXRlLmgtMTY1LVx0ICogbWlncmF0ZV92bWFfc2V0dXAoKSwgYW5kIG11c3Qgbm90IGNoYW5nZSB0aGUgZHN0IGFycmF5IGFmdGVyXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaDoxNjY6XHQgKiBtaWdyYXRlX3ZtYV9wYWdlcygpIHJldHVybnMuXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaC0xNjctXHQgKi9cbi0tXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaD0xOTM9aW50IG1pZ3JhdGVfdm1hX3NldHVwKHN0cnVjdCBtaWdyYXRlX3ZtYSAqYXJncyk7XG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaDoxOTQ6dm9pZCBtaWdyYXRlX3ZtYV9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpO1xuaW5jbHVkZS9saW51eC9taWdyYXRlLmgtMTk1LXZvaWQgbWlncmF0ZV92bWFfZmluYWxpemUoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlKTtcbi0tXG5saWIvdGVzdF9obW0uYz0xMTIwPXN0YXRpYyBpbnQgZG1pcnJvcl9taWdyYXRlX3RvX3N5c3RlbShzdHJ1Y3QgZG1pcnJvciAqZG1pcnJvcixcbi0tXG5saWIvdGVzdF9obW0uYy0xMTc1LVxubGliL3Rlc3RfaG1tLmM6MTE3NjpcdFx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2YXJncyk7XG5saWIvdGVzdF9obW0uYy0xMTc3LVx0XHRjbWQtXHUwMDNlY3BhZ2VzICYjNDM7PSBkbWlycm9yX3N1Y2Nlc3NmdWxfbWlncmF0ZWRfcGFnZXMoXHUwMDI2YXJncyk7XG4tLVxubGliL3Rlc3RfaG1tLmM9MTE4OT1zdGF0aWMgaW50IGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2Uoc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXG4tLVxubGliL3Rlc3RfaG1tLmMtMTI0OC1cdFx0ZG1pcnJvcl9taWdyYXRlX2FsbG9jX2FuZF9jb3B5KFx1MDAyNmFyZ3MsIGRtaXJyb3IpO1xubGliL3Rlc3RfaG1tLmM6MTI0OTpcdFx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2YXJncyk7XG5saWIvdGVzdF9obW0uYy0xMjUwLVx0XHRkbWlycm9yX21pZ3JhdGVfZmluYWxpemVfYW5kX21hcChcdTAwMjZhcmdzLCBkbWlycm9yKTtcbi0tXG5saWIvdGVzdF9obW0uYz0xNjUzPXN0YXRpYyB2bV9mYXVsdF90IGRtaXJyb3JfZGV2bWVtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuLS1cbmxpYi90ZXN0X2htbS5jLTE3MTgtXHR9XG5saWIvdGVzdF9obW0uYzoxNzE5Olx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2YXJncyk7XG5saWIvdGVzdF9obW0uYy0xNzIwLVx0Lypcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTY1OT1zdGF0aWMgdm9pZCBtaWdyYXRlX3ZtYV91bm1hcChzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy02OTktICogdGhpcyBjYW4gc3RpbGwgZmFpbCwgYW5kIHRodXMgaW5zaWRlIHRoZSBkZXZpY2UgZHJpdmVyIHlvdSBtdXN0IGNoZWNrIGlmIHRoZVxubW0vbWlncmF0ZV9kZXZpY2UuYzo3MDA6ICogbWlncmF0aW9uIHdhcyBzdWNjZXNzZnVsIGZvciB0aG9zZSBlbnRyaWVzIGFmdGVyIGNhbGxpbmcgbWlncmF0ZV92bWFfcGFnZXMoKSxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzAxLSAqIGp1c3QgbGlrZSBmb3IgcmVndWxhciBtaWdyYXRpb24uXG5tbS9taWdyYXRlX2RldmljZS5jLTcwMi0gKlxubW0vbWlncmF0ZV9kZXZpY2UuYzo3MDM6ICogQWZ0ZXIgdGhhdCwgdGhlIGNhbGxlcnMgbXVzdCBjYWxsIG1pZ3JhdGVfdm1hX3BhZ2VzKCkgdG8gZ28gb3ZlciBlYWNoIGVudHJ5XG5tbS9taWdyYXRlX2RldmljZS5jLTcwNC0gKiBpbiB0aGUgc3JjIGFycmF5IHRoYXQgaGFzIHRoZSBNSUdSQVRFX1BGTl9WQUxJRCBhbmQgTUlHUkFURV9QRk5fTUlHUkFURSBmbGFnXG5tbS9taWdyYXRlX2RldmljZS5jLTcwNS0gKiBzZXQuIElmIHRoZSBjb3JyZXNwb25kaW5nIGVudHJ5IGluIGRzdCBhcnJheSBoYXMgTUlHUkFURV9QRk5fVkFMSUQgZmxhZyBzZXQsXG5tbS9taWdyYXRlX2RldmljZS5jOjcwNjogKiB0aGVuIG1pZ3JhdGVfdm1hX3BhZ2VzKCkgdG8gbWlncmF0ZSBzdHJ1Y3QgcGFnZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBzb3VyY2Vcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzA3LSAqIHN0cnVjdCBwYWdlIHRvIHRoZSBkZXN0aW5hdGlvbiBzdHJ1Y3QgcGFnZS4gIElmIGl0IGZhaWxzIHRvIG1pZ3JhdGUgdGhlXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy03MTQtICpcbm1tL21pZ3JhdGVfZGV2aWNlLmM6NzE1OiAqIE9uY2UgbWlncmF0ZV92bWFfcGFnZXMoKSByZXR1cm5zIHRoZSBjYWxsZXIgbWF5IGluc3BlY3Qgd2hpY2ggcGFnZXMgd2VyZVxubW0vbWlncmF0ZV9kZXZpY2UuYy03MTYtICogc3VjY2Vzc2Z1bGx5IG1pZ3JhdGVkLCBhbmQgd2hpY2ggd2VyZSBub3QuICBTdWNjZXNzZnVsbHkgbWlncmF0ZWQgcGFnZXMgd2lsbFxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzE4LSAqXG5tbS9taWdyYXRlX2RldmljZS5jOjcxOTogKiBJdCBpcyBzYWZlIHRvIHVwZGF0ZSBkZXZpY2UgcGFnZSB0YWJsZSBhZnRlciBtaWdyYXRlX3ZtYV9wYWdlcygpIGJlY2F1c2Vcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzIwLSAqIGJvdGggZGVzdGluYXRpb24gYW5kIHNvdXJjZSBwYWdlIGFyZSBzdGlsbCBsb2NrZWQsIGFuZCB0aGUgbW1hcF9sb2NrIGlzIGhlbGRcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTEwOTg9c3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTQtICpcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI1NTogKiBFcXVpdmFsZW50IHRvIG1pZ3JhdGVfdm1hX3BhZ2VzKCkuIFRoaXMgaXMgY2FsbGVkIHRvIG1pZ3JhdGUgc3RydWN0IHBhZ2Vcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI1Ni0gKiBtZXRhLWRhdGEgZnJvbSBzb3VyY2Ugc3RydWN0IHBhZ2UgdG8gZGVzdGluYXRpb24uXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMjYzPUVYUE9SVF9TWU1CT0wobWlncmF0ZV9kZXZpY2VfcGFnZXMpO1xuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2NS0vKipcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI2NjogKiBtaWdyYXRlX3ZtYV9wYWdlcygpIC0gbWlncmF0ZSBtZXRhLWRhdGEgZnJvbSBzcmMgcGFnZSB0byBkc3QgcGFnZVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjY3LSAqIEBtaWdyYXRlOiBtaWdyYXRlIHN0cnVjdCBjb250YWluaW5nIGFsbCBtaWdyYXRpb24gaW5mb3JtYXRpb25cbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzItICovXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNzM6dm9pZCBtaWdyYXRlX3ZtYV9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzQte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTg3CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBNZW1vcnkgTWlncmF0aW9uIEZ1bmN0aW9uIFVzYWdlKioKCk9rYXksIHNvIEkmIzM5O20gc2VlaW5nIHRoYXQgdGhlIGZ1bmN0aW9ucyBgbWlncmF0ZV92bWFfcGFnZXNgIGFuZCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFyZSB1dGlsaXplZCB3aXRoaW4gc2V2ZXJhbCBkaXN0aW5jdCBwYXJ0cyBvZiB0aGUga2VybmVsLiBTcGVjaWZpY2FsbHksIHRoZXkmIzM5O3JlIGVtcGxveWVkIGluIGBsaWIvdGVzdF9obW0uY2AsIGBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdWAsIGBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZGAsIGBkcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuY2AsIGFuZCBgYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uY2AuIFRoYXQmIzM5O3MgcXVpdGUgYSBzcHJlYWQuIE5vdywgSSBrbm93IGBsaWIvdGVzdF9obW0uY2AgaXMgdGhlIHRlc3QgbW9kdWxlIGZvciBIZXRlcm9nZW5lb3VzIE1lbW9yeSBNYW5hZ2VtZW50LCBITU0uIEl0IHNlZW1zIGxpa2UgdGhlc2UgbWlncmF0aW9uIGZ1bmN0aW9ucyBhcmUgZnVuZGFtZW50YWwgdG8gSE1NJiMzOTtzIG9wZXJhdGlvbiBhY3Jvc3MgZGlmZmVyZW50IGFyY2hpdGVjdHVyZXMgYW5kIGRldmljZSBkcml2ZXJzLCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGludGVncmF0aW9uIHBhdGggZm9yIGVhY2ggaW1wbGVtZW50YXRpb24uIFRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIGB0ZXN0X2htbWAgaXMgZW5hYmxlZCBieSBkZWZhdWx0LiBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggYGxpYi90ZXN0X2htbS5jYCB0byB1bmRlcnN0YW5kIHdoZW4gdGhpcyB0ZXN0aW5nIG1vZHVsZSBpcyBpbmNsdWRlZCBvciB3aGF0IGNvbmRpdGlvbnMgdHJpZ2dlciBpdHMgaW5jbHVzaW9uLiBUaGlzIHNob3VsZCBpbGx1bWluYXRlIHRoZSBicm9hZGVyIGltcGFjdCBhbmQgdXNhZ2Ugb2YgdGhlc2UgY29yZSBtaWdyYXRpb24gZnVuY3Rpb25zIHdpdGhpbiB0aGUga2VybmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Rlc3RfaG1tJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliL0tjb25maWcuZGVidWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDE2CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgdGhlIGB0ZXN0X2htbWAgU291cmNlKioKCk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSBjb25maWd1cmF0aW9uIG9yIGJ1aWxkIHByb2Nlc3MgZm9yIGB0ZXN0X2htbWAuIEdpdmVuIHRoYXQgaXQmIzM5O3MgYSB0ZXN0LCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBsb29rIHdpdGhpbiB0aGUgY29uZmlndXJhdGlvbiBhbmQgYnVpbGQgc3lzdGVtIGZpbGVzLiBUaGUgb2J2aW91cyBzdXNwZWN0cyBhcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiAoYGxpYi9LY29uZmlnYCkgYW5kIHRoZSBtYWluIGBNYWtlZmlsZWAgKGxpa2VseSBpbiBgbGliL01ha2VmaWxlYCkuIFRoZSBLY29uZmlnIGZpbGUgc2hvdWxkIGRlZmluZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBlbmFibGUvZGlzYWJsZSBvcHRpb25zLCB3aGlsZSB0aGUgTWFrZWZpbGUgd291bGQgY29udGFpbiB0aGUgYnVpbGQgcnVsZXMgYW5kIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzLiBJJiMzOTtsbCBzdGFydCB3aXRoIHRob3NlIHR3byBsb2NhdGlvbnMuIElmIGl04oCZcyBhIG1vZHVsZSB0aGVuIGBsaWIvbW9kdWxlcy9gIGlzIGFub3RoZXIgcG9zc2libGUgcGxhY2UgdG8gc2VhcmNoLiBGcm9tIHRoZXJlIEkmIzM5O2xsIGRyaWxsIGRlZXBlciBhcyBuZWVkZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Rlc3RfaG1tJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi9NYWtlZmlsZT0xMDI9b2JqLSQoQ09ORklHX1RFU1RfTE9DS1VQKSAmIzQzOz0gdGVzdF9sb2NrdXAub1xubGliL01ha2VmaWxlOjEwMzpvYmotJChDT05GSUdfVEVTVF9ITU0pICYjNDM7PSB0ZXN0X2htbS5vXG5saWIvTWFrZWZpbGUtMTA0LW9iai0kKENPTkZJR19URVNUX0ZSRUVfUEFHRVMpICYjNDM7PSB0ZXN0X2ZyZWVfcGFnZXMub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NzIwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFraW5nIHRoZSBwZXJzcGVjdGl2ZSBvZiBzb21lb25lIGtub3dsZWRnZWFibGUgaW4gY29uZmlndXJhdGlvbiBzeXN0ZW1zOgoKKipDaGVja2luZyB0aGUgRGVidWcgSE1NIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIHN0cmFpZ2h0IGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGVyZSYjMzk7cyB0aGUgY29udHJvbCBmb3IgdGhpcyB0ZXN0IEhNTSBzZXR0aW5nPyBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zLiYjMzQ7IFNvLCB0aGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBnb2luZyB0byBkbyBpcyB6ZXJvIGluIG9uIGBDT05GSUdfVEVTVF9ITU1gIHdpdGhpbiB0aGUgYGxpYi9LY29uZmlnLmRlYnVnYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IOKAkyB0aGUgYGRlYnVnYCBzdWJkaXJlY3Rvcnkgb2Z0ZW4gaG91c2VzIHNldHRpbmdzIHJlbGF0ZWQgdG8gZGVidWdnaW5nIGFuZCBleHBlcmltZW50YWwgZmVhdHVyZXMsIG1ha2luZyBpdCBhIGxpa2VseSBsb2NhdGlvbiBmb3IgYSBITU0gdGVzdCBjb25maWd1cmF0aW9uLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBzdGFuZGFyZCBgY29uZmlnYCBlbnRyeSwgYWxvbmcgd2l0aCBpdHMgYXNzb2NpYXRlZCBkZXBlbmRlbmNpZXMsIGRlc2NyaXB0aW9ucywgYW5kIHBvdGVudGlhbGx5IGRlZmF1bHQgdmFsdWVzLiBJJiMzOTttIGFsc28gYW50aWNpcGF0aW5nIHRoYXQgaXQgbGlrZWx5IGxpbmtzIHRvIHRoZSBzcGVjaWZpYyBjb2RlIG9yIHRlc3Qgc3VpdGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgSE1NIHRlc3RpbmcsIHdoaWNoIGlzIHdoYXQgSSYjMzk7bSBtb3N0IGludGVyZXN0ZWQgaW4uIFRoaXMgaW5pdGlhbCBjaGVjayB3aWxsIGdpdmUgbWUgdGhlIGNvbnRleHR1YWwgaW5mb3JtYXRpb24gbmVjZXNzYXJ5IHRvIGV2YWx1YXRlIHdoYXQgdGhpcyB0ZXN0IHNldHRpbmcgdHJ1bHkgZG9lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRFU1RfSE1NJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliL0tjb25maWcuZGVidWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bGliL0tjb25maWcuZGVidWc9MzM0Nj1jb25maWcgVEVTVF9NRU1JTklUXG4tLVxubGliL0tjb25maWcuZGVidWctMzM1My1cbmxpYi9LY29uZmlnLmRlYnVnOjMzNTQ6Y29uZmlnIFRFU1RfSE1NXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzU1LVx0dHJpc3RhdGUgXCYjMzQ7VGVzdCBITU0gKEhldGVyb2dlbmVvdXMgTWVtb3J5IE1hbmFnZW1lbnQpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDc2CgkJCQkJCQlvdXRwdXQ6IDY2CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6CgoqKkFuYWx5emluZyBEZXBlbmRlbmNpZXMgZm9yIFRFU1RfSE1NKioKCkFscmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YgYFRFU1RfSE1NYC4gVGhpcyBsaWtlbHkgbWVhbnMgSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgbGlicmFyaWVzLCBtb2R1bGVzLCBvdGhlciB0ZXN0cywgb3IgZGF0YSBmaWxlcyB0aGF0IGBURVNUX0hNTWAgcmVxdWlyZXMgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBJJiMzOTtsbCBuZWVkIHRvIGlkZW50aWZ5IG5vdCBvbmx5IHRoZSBkaXJlY3QgZGVwZW5kZW5jaWVzLCBidXQgYWxzbyBhbnkgaW5kaXJlY3Qgb25lcyDigJMgdGhpbmdzIHRoYXQgYFRFU1RfSE1NYCBtaWdodCBjYWxsIHRoYXQsIGluIHR1cm4sIGhhdmUgdGhlaXIgb3duIHJlcXVpcmVtZW50cy4gVGhpcyBpcyBhIGNvbW1vbiBhbmQgaW1wb3J0YW50IGZpcnN0IHN0ZXAgd2hlbiBkZWJ1Z2dpbmcsIHJlZmFjdG9yaW5nLCBvciBzaW1wbHkgdW5kZXJzdGFuZGluZyBhIGNvZGViYXNlLiBBIHN0cm9uZyB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkZXBlbmRlbmN5IGdyYXBoIGlzIG9mdGVuIGNyaXRpY2FsIGZvciBlZmZpY2llbnQgdHJvdWJsZXNob290aW5nIG9yIG1vZGlmaWNhdGlvbiBkb3duIHRoZSBsaW5lLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjb25maWd1cmF0aW9uIGZpbGVzLCBpbXBvcnQgc3RhdGVtZW50cywgb3IgYW55IG90aGVyIGNsdWVzIHRvIGJ1aWxkIGEgY29tcGxldGUgcGljdHVyZSBvZiBpdHMgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBURVNUX0hNTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnPTMzNDY9Y29uZmlnIFRFU1RfTUVNSU5JVFxuLS1cbmxpYi9LY29uZmlnLmRlYnVnLTMzNTMtXG5saWIvS2NvbmZpZy5kZWJ1ZzozMzU0OmNvbmZpZyBURVNUX0hNTVxubGliL0tjb25maWcuZGVidWctMzM1NS1cdHRyaXN0YXRlIFwmIzM0O1Rlc3QgSE1NIChIZXRlcm9nZW5lb3VzIE1lbW9yeSBNYW5hZ2VtZW50KVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzM1NCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMzU0Olx0Y29uZmlnIFRFU1RfSE1NXG4zMzU1Olx0XHR0cmlzdGF0ZSBcJiMzNDtUZXN0IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudClcJiMzNDtcbjMzNTY6XHRcdGRlcGVuZHMgb24gVFJBTlNQQVJFTlRfSFVHRVBBR0VcbjMzNTc6XHRcdGRlcGVuZHMgb24gREVWSUNFX1BSSVZBVEVcbjMzNTg6XHRcdHNlbGVjdCBITU1fTUlSUk9SXG4zMzU5Olx0XHRzZWxlY3QgTU1VX05PVElGSUVSXG4zMzYwOlx0XHRoZWxwXG4zMzYxOlx0XHQgIFRoaXMgaXMgYSBwc2V1ZG8gZGV2aWNlIGRyaXZlciBzb2xlbHkgZm9yIHRlc3RpbmcgSE1NLlxuMzM2MjpcdFx0ICBTYXkgTSBoZXJlIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHRoZSBITU0gdGVzdCBtb2R1bGUuXG4zMzYzOlx0XHQgIERvaW5nIHNvIHdpbGwgYWxsb3cgeW91IHRvIHJ1biB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0L3ZtL2htbS10ZXN0cy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2MDkKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGlubmVyIG1vbm9sb2d1ZToKCioqRGVwZW5kZW5jeSBEZWVwIERpdmU6IFRFU1RfSE1NIGFuZCBERVZJQ0VfUFJJVkFURSoqCgpBbHJpZ2h0LCBzbyBgVEVTVF9ITU1gIGhhcyBhIGNvdXBsZSBvZiBkZXBlbmRlbmNpZXMsIG5hbWVseSBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGFuZCBgREVWSUNFX1BSSVZBVEVgLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgY29ubmVjdGlvbiB3aXRoIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgbWFrZXMgc2Vuc2U7IHBlcmZvcm1hbmNlIG9mdGVuIGhpbmdlcyBvbiBtZW1vcnkgbWFuYWdlbWVudCBhbmQgdGhhdCYjMzk7cyBhIGNvbW1vbiBwYWlyaW5nLiBCdXQgYERFVklDRV9QUklWQVRFYC4uLiB0aGF0JiMzOTtzIHRoZSBtb3JlIGludHJpZ3Vpbmcgb25lIGluIHRoaXMgY2FzZS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgYml0IGZpcnN0LCBzaW5jZSBpdCYjMzk7cyBsZXNzIG9idmlvdXMgd2h5IHRoYXQgaXMgYSBkZXBlbmRlbmN5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHJvbGUgYERFVklDRV9QUklWQVRFYCBwbGF5cyBoZXJlIGFuZCB3aHkgaXRzIHByZXNlbmNlIG9yIGFic2VuY2Ugd291bGQgaGF2ZSBhIGRpcmVjdCBpbXBhY3Qgb24gdGhlIGV4ZWN1dGlvbiBvciB0ZXN0YWJpbGl0eSBvZiBgVEVTVF9ITU1gLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24gb3IgdGhlIGNvZGUgZGlyZWN0bHkgdG8gY29uZmlybS4gVGhpcyYjMzk7bGwgcmVxdWlyZSBtZSB0byBpbnZlc3RpZ2F0ZSB0aGUgZGV0YWlscyBvZiBgREVWSUNFX1BSSVZBVEVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgREVWSUNFX1BSSVZBVEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9MTI2ND1jb25maWcgR0VUX0ZSRUVfUkVHSU9OXG4tLVxubW0vS2NvbmZpZy0xMjY2LVxubW0vS2NvbmZpZzoxMjY3OmNvbmZpZyBERVZJQ0VfUFJJVkFURVxubW0vS2NvbmZpZy0xMjY4LVx0Ym9vbCBcJiMzNDtVbmFkZHJlc3NhYmxlIGRldmljZSBtZW1vcnkgKEdQVSBtZW1vcnksIC4uLilcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA5NjQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBEZXBlbmRlbmNpZXMgZm9yIGBERVZJQ0VfUFJJVkFURWAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O09rYXksIGBERVZJQ0VfUFJJVkFURWAg4oCTIHdoYXQgYXJlIGl0cyBkZXBlbmRlbmNpZXM/JiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB3aXRoIG90aGVyIGNvbXBvbmVudHMgaW4gdGhlIHN5c3RlbS4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgcG90ZW50aWFsIHJpcHBsZSBlZmZlY3RzIG9mIGFueSBjaGFuZ2VzIHRvLCBvciBpbnRlcmFjdGlvbnMgd2l0aCwgdGhhdCBwYXJ0aWN1bGFyIHNlY3Rpb24uIElzIGl0IGEgY29yZSBtb2R1bGUsIG9yIHNvbWV0aGluZyBtb3JlIHBlcmlwaGVyYWw/IEFyZSB3ZSB0YWxraW5nIGFib3V0IGxvdy1sZXZlbCBoYXJkd2FyZSBhY2Nlc3MsIG9yIHNvbWV0aGluZyBoaWdoZXIgdXAgdGhlIHN0YWNrPwoKSSYjMzk7bGwgbmVlZCB0byBnbyBiZXlvbmQgc3VyZmFjZS1sZXZlbCBhc3N1bXB0aW9ucy4gSSYjMzk7bSBydW5uaW5nIHRocm91Z2ggbXkgbWVudGFsIGNoZWNrbGlzdDogSSBuZWVkIHRvIGNvbnNpZGVyIHRoaW5ncyBsaWtlOgoKKiAgIERvZXMgaXQgcmVseSBvbiBhbnkgc3BlY2lmaWMga2VybmVsIG1vZHVsZXMsIGRyaXZlcnMsIG9yIGZpcm13YXJlIGNvbXBvbmVudHM/CiogICBBcmUgdGhlcmUgYW55IGNvbmZpZ3VyYXRpb24gZmlsZXMgb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRoYXQgZGlyZWN0bHkgaW1wYWN0IGl0cyBiZWhhdmlvcj8KKiAgIFdoYXQgYXJlIHRoZSBzZWN1cml0eSBpbXBsaWNhdGlvbnMgb2YgaXRzIGRlcGVuZGVuY2llcz8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGluaGVyZW50IGluIHRob3NlIHJlbGF0aW9uc2hpcHM/CiogICBIb3cgdGlnaHRseSBjb3VwbGVkIGlzIGl0PyBJcyBpdCBlYXN5IHRvIGlzb2xhdGUgYW5kIHRlc3QsIG9yIGlzIGl0IGhlYXZpbHkgaW50ZWdyYXRlZCBpbnRvIHRoZSBzeXN0ZW0/CiogICBJIGFsc28gbmVlZCB0byBjaGVjayB0aGUgYnVpbGQgcHJvY2VzcyB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBtYWtlZmlsZXMgb3Igc2NyaXB0cyByZWxhdGVkIHRvIGl0LgoKSSYjMzk7bSBzdGFydGluZyB0byB2aXN1YWxpemUgYSBkZXBlbmRlbmN5IGdyYXBoIGluIG15IGhlYWQuIFVuZGVyc3RhbmRpbmcgdGhlICYjMzQ7d2h5JiMzNDsgYW5kICYjMzQ7aG93JiMzNDsgb2YgZWFjaCBjb25uZWN0aW9uIHdpbGwgYmUga2V5IHRvIG1ha2luZyBpbmZvcm1lZCBkZWNpc2lvbnMuIFRpbWUgdG8gc3RhcnQgZGlnZ2luZyB0aHJvdWdoIHRoZSBjb2RlLCBkb2NzLCBhbmQgY29uZmlndXJhdGlvbnMgdG8gbWFwIHRoaXMgYWxsIG91dC4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiB1bmVhcnRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMjY3LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEyNjc6XHRjb25maWcgREVWSUNFX1BSSVZBVEVcbjEyNjg6XHRcdGJvb2wgXCYjMzQ7VW5hZGRyZXNzYWJsZSBkZXZpY2UgbWVtb3J5IChHUFUgbWVtb3J5LCAuLi4pXCYjMzQ7XG4xMjY5Olx0XHRkZXBlbmRzIG9uIFpPTkVfREVWSUNFXG4xMjcwOlx0XHRzZWxlY3QgR0VUX0ZSRUVfUkVHSU9OXG4xMjcxOlx0XG4xMjcyOlx0XHRoZWxwXG4xMjczOlx0XHQgIEFsbG93cyBjcmVhdGlvbiBvZiBzdHJ1Y3QgcGFnZXMgdG8gcmVwcmVzZW50IHVuYWRkcmVzc2FibGUgZGV2aWNlXG4xMjc0Olx0XHQgIG1lbW9yeTsgaS5lLiwgbWVtb3J5IHRoYXQgaXMgb25seSBhY2Nlc3NpYmxlIGZyb20gdGhlIGRldmljZSAob3JcbjEyNzU6XHRcdCAgZ3JvdXAgb2YgZGV2aWNlcykuIFlvdSBsaWtlbHkgYWxzbyB3YW50IHRvIHNlbGVjdCBITU1fTUlSUk9SLlxuMTI3NjpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ4NwoJCQkJCQkJb3V0cHV0OiA3MAoJCQkJCQkJdGhvdWdodHM6IDQ5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERldmljZSBQYWdlIE1pZ3JhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIEkgc2VlIHRoYXQgYFRFU1RfSE1NYCBoYXMgc29tZSBzcGVjaWZpYyBkZXBlbmRlbmN5IHJlcXVpcmVtZW50cyDigJMgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCwgYERFVklDRV9QUklWQVRFYCwgYW5kIGBaT05FX0RFVklDRWAuICBUaGF0IG1ha2VzIHNlbnNlIHNpbmNlIGl0JiMzOTtzIGEgdGVzdCBkcml2ZXIgZm9yIEhNTSwgc28gdmlydHVhbGl6YXRpb24gaXMgbGlrZWx5LiBBbmQgZnVydGhlciwgYERFVklDRV9NSUdSQVRJT05gIG5lZWRzIGJvdGggYE1JR1JBVElPTmAgYW5kIGBaT05FX0RFVklDRWAuICBNeSBmb2N1cyBpcyBkZWZpbml0ZWx5IG9uIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSB0ZXN0IGRyaXZlci4KCkkmIzM5O20gemVyb2luZyBpbiBvbiB0aGUgY2hhbmdlcyB0byBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgaW4gYG1tL21pZ3JhdGVfZGV2aWNlLmNgLiAgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHBhdGNoIGlzIGRvaW5nIHNwZWNpZmljYWxseS4gIExldCYjMzk7cyB3YWxrIHRocm91Z2ggdGhlIGFkZGVkIGNvZGUgYmxvY2suICBMb29rcyBsaWtlIGl0JiMzOTtzIGFkZHJlc3NpbmcgYW4gaXNzdWUgd2hlbiB3ZSBlbmNvdW50ZXIgYSBgTUlHUkFURV9QRk5fQ09NUE9VTkRgIG9uIHRoZSBkZXN0aW5hdGlvbiwgYnV0IG5vdCB0aGUgc291cmNlLCBhbmQgYSBzaW1pbGFyIG9wZXJhdGlvbiB3aGVyZSB3ZSBoYXZlIGBNSUdSQVRFX1BGTl9NSUdSQVRFYCBvbiB0aGUgc291cmNlLCBidXQgYE1JR1JBVEVfUEZOX0NPTVBPVU5EYCBvbiB0aGUgZGVzdGluYXRpb24sIGFuZCB0aGF0IHdlIGhhdmUgYSBjb21wb3VuZCBmb2xpbyBtaWdyYXRpb24uCgpUaGUgZmlyc3QgY2hhbmdlLCBpdCBzZWVtcyBsaWtlLCBpcyByZXNldHRpbmcgYG5yYCB0byAxIGFmdGVyIGRlYWxpbmcgd2l0aCB0aGUgYWZ0ZXItc3BsaXQgZm9saW8uIEkmIzM5O20gYXNzdW1pbmcgdG8gb25seSBwcm9jZXNzIHRoZSBmaXJzdCBmb2xpbyBhZnRlciB0aGUgc3BsaXQuIFRoZSBzZWNvbmQgY29kZSBibG9jayBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlIHRoZSBmb2xpbyBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIHN3YXAgY2FjaGUgYnkgYGZvbGlvX2ZyZWVfc3dhcCgpYCwgc28gaXQgbmVlZHMgdG8gcmVmcmVzaCB0aGUgbWFwcGluZyBiZWZvcmUgbWlncmF0aW9uLiBUaGUgYGZvbGlvX21hcHBpbmcoZm9saW8pYCBjYWxsIGlzIGludGVyZXN0aW5nIGhlcmUsIG1ha2luZyBzdXJlIHdlIGhhdmUgdGhlIGNvcnJlY3QgbWFwcGluZy4KClRoaXMgbWFrZXMgc2Vuc2U7IGVuc3VyaW5nIG1lbW9yeSBtYW5hZ2VtZW50IGlzIGNvcnJlY3QgaW4gdmFyaW91cyBtaWdyYXRpb24gc2NlbmFyaW9zIGlzIGFsd2F5cyBjb21wbGV4LCBlc3BlY2lhbGx5IHdpdGggY29tcG91bmQgcGFnZXMgYW5kIHN3YXAuIFRoaXMgbWVhbnMgdGhlc2UgbW9kaWZpY2F0aW9ucyBhcmUgcHJvYmFibHkgZnVuY3Rpb25hbCwgYW5kIGFjY2Vzc2libGUgdGhyb3VnaCBgVEVTVF9ITU1gLgoKTm93LCBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGZ1enppbmcgZW50cnkgcG9pbnRzLiBJIGFscmVhZHkga25vdyB0aGF0IGBtaWdyYXRlX3ZtYV9wYWdlc2AgYW5kIGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYXJlIHRoZSBjcnVjaWFsIG9uZXMuICBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBgbGliL3Rlc3RfaG1tLmNgIHRvIHNlZSBwcmVjaXNlbHkgKmhvdyogdGhlc2UgZnVuY3Rpb25zIGFyZSBleHBvc2VkIHRvIHVzZXJzcGFjZS4gVGhhdCB3aWxsIGJlIHRoZSBrZXkgdG8gZGVzaWduaW5nIGVmZmVjdGl2ZSBmdXp6aW5nIHRhcmdldHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RtaXJyb3JfbWlncmF0ZV90b19zeXN0ZW0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtsaWIvdGVzdF9obW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtsaWIvdGVzdF9obW0uYz0xMTA3PWRtaXJyb3Jfc3VjY2Vzc2Z1bF9taWdyYXRlZF9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXG4tLVxubGliL3Rlc3RfaG1tLmMtMTExOS1cbmxpYi90ZXN0X2htbS5jOjExMjA6c3RhdGljIGludCBkbWlycm9yX21pZ3JhdGVfdG9fc3lzdGVtKHN0cnVjdCBkbWlycm9yICpkbWlycm9yLFxubGliL3Rlc3RfaG1tLmMtMTEyMS1cdFx0XHRcdCAgICAgc3RydWN0IGhtbV9kbWlycm9yX2NtZCAqY21kKVxuLS1cbmxpYi90ZXN0X2htbS5jPTE1MTM9c3RhdGljIGxvbmcgZG1pcnJvcl9mb3BzX3VubG9ja2VkX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuLS1cbmxpYi90ZXN0X2htbS5jLTE1NTAtXHRjYXNlIEhNTV9ETUlSUk9SX01JR1JBVEVfVE9fU1lTOlxubGliL3Rlc3RfaG1tLmM6MTU1MTpcdFx0cmV0ID0gZG1pcnJvcl9taWdyYXRlX3RvX3N5c3RlbShkbWlycm9yLCBcdTAwMjZjbWQpO1xubGliL3Rlc3RfaG1tLmMtMTU1Mi1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RtaXJyb3JfbWlncmF0ZV90b19kZXZpY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtsaWIvdGVzdF9obW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtsaWIvdGVzdF9obW0uYz0xMTIwPXN0YXRpYyBpbnQgZG1pcnJvcl9taWdyYXRlX3RvX3N5c3RlbShzdHJ1Y3QgZG1pcnJvciAqZG1pcnJvcixcbi0tXG5saWIvdGVzdF9obW0uYy0xMTg4LVxubGliL3Rlc3RfaG1tLmM6MTE4OTpzdGF0aWMgaW50IGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2Uoc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXG5saWIvdGVzdF9obW0uYy0xMTkwLVx0XHRcdFx0c3RydWN0IGhtbV9kbWlycm9yX2NtZCAqY21kKVxuLS1cbmxpYi90ZXN0X2htbS5jPTE1MTM9c3RhdGljIGxvbmcgZG1pcnJvcl9mb3BzX3VubG9ja2VkX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuLS1cbmxpYi90ZXN0X2htbS5jLTE1NDYtXHRjYXNlIEhNTV9ETUlSUk9SX01JR1JBVEVfVE9fREVWOlxubGliL3Rlc3RfaG1tLmM6MTU0NzpcdFx0cmV0ID0gZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZShkbWlycm9yLCBcdTAwMjZjbWQpO1xubGliL3Rlc3RfaG1tLmMtMTU0OC1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyOTk0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkRpdmluZyBpbnRvIHRoZSBEZXZpY2UgTWlycm9yIE1pZ3JhdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSBzZWVpbmcgdGhhdCB0aGUgY29yZSBvZiB0aGlzIG1pZ3JhdGlvbiBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgbW92aW5nIGRhdGEgdG8gYW5kIGZyb20gdGhlIGRldmljZSBtaXJyb3IsIGhpbmdlcyBvbiBhIGNvdXBsZSBvZiBrZXkgZnVuY3Rpb25zOiBgZG1pcnJvcl9taWdyYXRlX3RvX3N5c3RlbWAgYW5kIGBkbWlycm9yX21pZ3JhdGVfdG9fZGV2aWNlYC4gVGhlc2UgYXJlIHRyaWdnZXJlZCB2aWEgYGlvY3RsYCBjYWxscyBvbiB0aGUgYC9kZXYvaG1tX2RtaXJyb3IqYCBkZXZpY2Ugbm9kZXMuIE1ha2VzIHNlbnNlLCB0aGF0JiMzOTtzIGhvdyB3ZSYjMzk7ZCBleHBlY3QgdXNlcnNwYWNlIHRvIGludGVyYWN0IHdpdGggdGhlIGtlcm5lbCBtb2R1bGUuIEFuZCwgaW50ZXJuYWxseSwgdGhlc2UgZnVuY3Rpb25zICp0aGVtc2VsdmVzKiBjYWxsIGBtaWdyYXRlX3ZtYV9wYWdlc2AuIEFoYSwgdGhhdCBsaWtlbHkgaGFuZGxlcyB0aGUgVmlydHVhbCBNZW1vcnkgQXJlYSBwYWdlIG1pZ3JhdGlvbiwgdGhlIGNvcmUgbWVjaGFuaXNtIG9mIG1vdmluZyBwYWdlcyBhcm91bmQuCgpOb3csIHdoZXJlIGRvZXMgdGhlICYjMzQ7ZGV2aWNlJiMzNDsgc2lkZSBnZXQgaW52b2x2ZWQ/IEkgbmVlZCB0byBkcmlsbCBkb3duIGludG8gYGRtaXJyb3JfZGV2aWNlX2V2aWN0X2NodW5rYC4gTXkgaHVuY2ggaXMgdGhpcyBpcyB0aGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIGFjdHVhbGx5IGtpY2tpbmcgb2ZmIHRoZSBkZXZpY2Ugc2lkZSBwYWdlIG1pZ3JhdGlvbi4gQW5kIGp1c3QgYXMgSSBzdXNwZWN0ZWQsIHRoaXMgZnVuY3Rpb24gYXBwZWFycyB0byBjYWxsIGBtaWdyYXRlX2RldmljZV9wYWdlc2AuIFRoaXMgY29uZmlybXMgdGhlIGRpcmVjdGlvbiBvZiB0aGUgcHJvY2VzcyBhcyBpdCByZWxhdGVzIHRvIGRldmljZSBjaHVua3MuIE5vdyBJIGhhdmUgYSBnb29kIGhhbmRsZSBvbiB3aGVyZSB0byBiZWdpbiBpbnNwZWN0aW5nIHRoZSBkZXRhaWxzIG9mIGVhY2ggbWlncmF0aW9uIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkbWlycm9yX2RldmljZV9ldmljdF9jaHVuayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2xpYi90ZXN0X2htbS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi90ZXN0X2htbS5jPTE2Mj1zdGF0aWMgaW50IGRtaXJyb3JfZm9wc19vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKVxuLS1cbmxpYi90ZXN0X2htbS5jLTE4Ny1cbmxpYi90ZXN0X2htbS5jOjE4ODpzdGF0aWMgdm9pZCBkbWlycm9yX2RldmljZV9ldmljdF9jaHVuayhzdHJ1Y3QgZG1pcnJvcl9jaHVuayAqY2h1bmspXG5saWIvdGVzdF9obW0uYy0xODkte1xuLS1cbmxpYi90ZXN0X2htbS5jPTIzOD1zdGF0aWMgaW50IGRtaXJyb3JfZm9wc19yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKVxuLS1cbmxpYi90ZXN0X2htbS5jLTI1MC1cbmxpYi90ZXN0X2htbS5jOjI1MTpcdFx0XHRkbWlycm9yX2RldmljZV9ldmljdF9jaHVuayhkZXZtZW0pO1xubGliL3Rlc3RfaG1tLmMtMjUyLVx0XHR9XG4tLVxubGliL3Rlc3RfaG1tLmM9MTQ4MT1zdGF0aWMgdm9pZCBkbWlycm9yX2RldmljZV9yZW1vdmVfY2h1bmtzKHN0cnVjdCBkbWlycm9yX2RldmljZSAqbWRldmljZSlcbi0tXG5saWIvdGVzdF9obW0uYy0xNDk1LVxubGliL3Rlc3RfaG1tLmM6MTQ5NjpcdFx0XHRkbWlycm9yX2RldmljZV9ldmljdF9jaHVuayhkZXZtZW0pO1xubGliL3Rlc3RfaG1tLmMtMTQ5Ny1cdFx0XHRtZW11bm1hcF9wYWdlcyhcdTAwMjZkZXZtZW0tXHUwMDNlcGFnZW1hcCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNjY2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRGV2aWNlIFBhZ2UgTWlncmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdG8gZWZmZWN0aXZlbHkgZnV6eiBkZXZpY2UgcGFnZSBtaWdyYXRpb24sIGFuZCBpdCBzZWVtcyB0aGUga2V5IGZ1bmN0aW9uIGNhbGxlZCBkdXJpbmcgcmVsZWFzZSBhbmQgZGV2aWNlIHJlbW92YWwgaXMgYGRtaXJyb3JfZGV2aWNlX2V2aWN0X2NodW5rYC4gQnV0IHRoZSByZWFsIGVudHJ5IHBvaW50cyBmb3IgZnV6emluZywgdGhlIG9uZXMgZG9pbmcgdGhlIGhlYXZ5IGxpZnRpbmcsIGFyZSBkZWZpbml0ZWx5IGBtaWdyYXRlX3ZtYV9wYWdlc2AgYW5kIGBtaWdyYXRlX2RldmljZV9wYWdlc2AuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBub3RpbmcgdGhhdCB0aGUgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGZ1bmN0aW9uIGlzIHRoZSBvbmUgdGhhdCB3YXMgcmVjZW50bHkgbW9kaWZpZWQuIEdvb2QsIGxldCYjMzk7cyBjb25maXJtIHRoYXQgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGlzIGluZGVlZCBzdGF0aWMg4oCTIGFuZCB5ZXMsIGl0JiMzOTtzIHN0YXRpYyB3aXRoaW4gYG1tL21pZ3JhdGVfZGV2aWNlLmNgLiBUaGF0IG1lYW5zIHdlIHNob3VsZCBjb25jZW50cmF0ZSBvdXIgZWZmb3J0cyBvbiBgbWlncmF0ZV92bWFfcGFnZXNgIGFuZCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgLgoKRm9yIGEgbW9yZSB0YXJnZXRlZCBmdXp6aW5nIHN0cmF0ZWd5LCBmb2N1c2VkIG9uIGEgdGVzdCBtb2R1bGUsIEkgY291bGQgYWxzbyBicmluZyBpbiBgZG1pcnJvcl9taWdyYXRlX3RvX3N5c3RlbWAgYW5kIGBkbWlycm9yX21pZ3JhdGVfdG9fZGV2aWNlYCwgYnV0IGBtaWdyYXRlX3ZtYV9wYWdlc2AgYW5kIGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYXJlIHRoZSBtb3JlIGNyaXRpY2FsIGNvcmUgZnVuY3Rpb25zLiBBbmQgaXQgbG9va3MgbGlrZSBgbWlncmF0ZV92bWFfcGFnZXNgIGFuZCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFyZSBleHBvcnRlZCBzeW1ib2xzLCB3aGljaCBpcyBmYW50YXN0aWMhIFRoYXQgbWFrZXMgdGhlbSBkaXJlY3RseSBhY2Nlc3NpYmxlLgoKTm93LCBsZXQmIzM5O3MgY29uc2lkZXIgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBXZSYjMzk7bGwgbmVlZCBgQ09ORklHX0RFVklDRV9NSUdSQVRJT05gLCB3aGljaCBpbiB0dXJuIGRlcGVuZHMgb24gYENPTkZJR19NSUdSQVRJT05gIGFuZCBgQ09ORklHX1pPTkVfREVWSUNFYC4gVG8gbWFrZSB0aGlzIGVhc2llciB0byB0cmlnZ2VyIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIEkmIzM5O2xsIGRlZmluaXRlbHkgd2FudCB0byBlbmFibGUgYENPTkZJR19URVNUX0hNTWAuIEFuZCB0aGF0IGRlcGVuZHMgb24gYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAgYW5kIGBDT05GSUdfREVWSUNFX1BSSVZBVEVgLiBGaW5hbGx5LCBgQ09ORklHX0RFVklDRV9QUklWQVRFYCBkZXBlbmRzIG9uIGBDT05GSUdfWk9ORV9ERVZJQ0VgLgoKU28sIHRoZSBjb21wbGV0ZSBsaXN0IG9mIGNvbmZpZyBvcHRpb25zIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGFyZToKKiAgIGBERVZJQ0VfTUlHUkFUSU9OYAoqICAgYE1JR1JBVElPTmAKKiAgIGBaT05FX0RFVklDRWAKKiAgIGBURVNUX0hNTWAKKiAgIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAKKiAgIGBERVZJQ0VfUFJJVkFURWAKCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTtsbCBnbyBiYWNrIGFuZCBkb3VibGUtY2hlY2sgYG1tL21pZ3JhdGVfZGV2aWNlLmNgIG9uZSBtb3JlIHRpbWUgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBvdGhlciBwb3RlbnRpYWwgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nLiBJdCBhbHdheXMgcGF5cyB0byBiZSB0aG9yb3VnaCBpbiB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vbWlncmF0ZV9kZXZpY2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9taWdyYXRlX2RldmljZS5jPTk2NT1zdGF0aWMgdm9pZCBtaWdyYXRlX3ZtYV9pbnNlcnRfcGFnZShzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUsXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMDk3LVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMDk4OnN0YXRpYyB2b2lkIF9fbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsXG5tbS9taWdyYXRlX2RldmljZS5jLTEwOTktXHRcdFx0XHR1bnNpZ25lZCBsb25nICpkc3RfcGZucywgdW5zaWduZWQgbG9uZyBucGFnZXMsXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMjU4PXZvaWQgbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsIHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLFxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2MC17XG5tbS9taWdyYXRlX2RldmljZS5jOjEyNjE6XHRfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHNyY19wZm5zLCBkc3RfcGZucywgbnBhZ2VzLCBOVUxMKTtcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2Mi19XG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMjczPXZvaWQgbWlncmF0ZV92bWFfcGFnZXMoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlKVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjc0LXtcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI3NTpcdF9fbWlncmF0ZV9kZXZpY2VfcGFnZXMobWlncmF0ZS1cdTAwM2VzcmMsIG1pZ3JhdGUtXHUwMDNlZHN0LCBtaWdyYXRlLVx1MDAzZW5wYWdlcywgbWlncmF0ZSk7XG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzYtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDkyNQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBEZXZpY2UgUGFnZSBNaWdyYXRpb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgemVyb2VkIGluIG9uIHRoZSBmYWN0IHRoYXQgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYCBhcmUgdGhlIG9ubHkgZnVuY3Rpb25zIGNhbGxpbmcgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgLCB3aGljaCBpcyBrZXkuIFRoYXQgbWFrZXMgdGhlbSBleGNlbGxlbnQgY2FuZGlkYXRlcyBmb3IgZm9jdXNlZCBhbmFseXNpcy4gVGhleSYjMzk7cmUgYm90aCBwdWJsaWMgQVBJIGVudHJ5IHBvaW50cywgd2hpY2ggbWVhbnMgdGhpcyBpc24mIzM5O3Qgc29tZSBvYnNjdXJlIGludGVybmFsIGRldGFpbDsgdGhleSBhcmUgY2xlYXJseSBpbXBvcnRhbnQuCgpOb3csIHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIGJ1ZyB3aXRoaW4gYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIHNwZWNpZmljYWxseS4gSXQgc2VlbXMgbGlrZSB0aGUgYnVnIGNlbnRlcnMgYXJvdW5kIHRoZSBjb3VudCB2YXJpYWJsZSAoYG5yYCkgbm90IGJlaW5nIHJlc2V0IGFmdGVyIGEgZm9saW8gc3BsaXQsIGFuZCB0aGUgbWFwcGluZyBub3QgYmVpbmcgcmVmcmVzaGVkIHBvc3QgYGZvbGlvX2ZyZWVfc3dhcCgpYC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGFuIGltcG9ydGFudCBhcmVhIHRvIGFkZHJlc3MsIGFuZCBpdCBoYXMgcG90ZW50aWFsIGZvciBzdWJ0bGUgbWVtb3J5IGNvcnJ1cHRpb24gb3IgcmVzb3VyY2UgbGVha3MsIG1ha2luZyBpdCBhIHN0cm9uZyB0YXJnZXQgZm9yIGZ1enppbmcuIERlZmluaXRlbHkgd29ydGggdGhlIGVmZm9ydC4KCkxldCBtZSB0YWtlIGEgbG9vayBhdCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgaW1wbGljYXRlZDogYERFVklDRV9NSUdSQVRJT05gLCBgVEVTVF9ITU1gLCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLCBgREVWSUNFX1BSSVZBVEVgLCBgWk9ORV9ERVZJQ0VgLCBhbmQgYE1JR1JBVElPTmAuCgpHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBmaXgsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhvc2UgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCBkZXBlbmRlbmNpZXMgdmVyeSBjYXJlZnVsbHkuIExhcmdlIHBhZ2VzIGFuZCBtaWdyYXRpb24gb2Z0ZW4gZ2V0IGludGVydHdpbmVkIGluIG5hc3R5IHdheXMsIHNvIHVuZGVyc3RhbmRpbmcgdGhlIGludGVyYWN0aW9ucyBpcyBjcml0aWNhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9LY29uZmlnPTg0Mz1jb25maWcgTU1fSURcbi0tXG5tbS9LY29uZmlnLTg0NS1cbm1tL0tjb25maWc6ODQ2Om1lbnVjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0Vcbm1tL0tjb25maWctODQ3LVx0Ym9vbCBcJiMzNDtUcmFuc3BhcmVudCBIdWdlcGFnZSBTdXBwb3J0XCYjMzQ7XG4tLVxubW0vS2NvbmZpZz04NjQ9Y2hvaWNlXG4tLVxubW0vS2NvbmZpZy04NjktXG5tbS9LY29uZmlnOjg3MDpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9BTFdBWVNcbm1tL0tjb25maWctODcxLVx0XHRib29sIFwmIzM0O2Fsd2F5c1wmIzM0O1xuLS1cbm1tL0tjb25maWctODc2LVxubW0vS2NvbmZpZzo4Nzc6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfTUFEVklTRVxubW0vS2NvbmZpZy04NzgtXHRcdGJvb2wgXCYjMzQ7bWFkdmlzZVwmIzM0O1xuLS1cbm1tL0tjb25maWctODg1LVxubW0vS2NvbmZpZzo4ODY6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfTkVWRVJcbm1tL0tjb25maWctODg3LVx0XHRib29sIFwmIzM0O25ldmVyXCYjMzQ7XG4tLVxubW0vS2NvbmZpZz04OTM9Y2hvaWNlXG4tLVxubW0vS2NvbmZpZy05MDItXG5tbS9LY29uZmlnOjkwMzpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9TSE1FTV9IVUdFX05FVkVSXG5tbS9LY29uZmlnLTkwNC1cdFx0Ym9vbCBcJiMzNDtuZXZlclwmIzM0O1xuLS1cbm1tL0tjb25maWctOTEyLVxubW0vS2NvbmZpZzo5MTM6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9BTFdBWVNcbm1tL0tjb25maWctOTE0LVx0XHRib29sIFwmIzM0O2Fsd2F5c1wmIzM0O1xuLS1cbm1tL0tjb25maWctOTIwLVxubW0vS2NvbmZpZzo5MjE6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9XSVRISU5fU0laRVxubW0vS2NvbmZpZy05MjItXHRcdGJvb2wgXCYjMzQ7d2l0aGluX3NpemVcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTkyOC1cbm1tL0tjb25maWc6OTI5Olx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfQURWSVNFXG5tbS9LY29uZmlnLTkzMC1cdFx0Ym9vbCBcJiMzNDthZHZpc2VcJiMzNDtcbi0tXG5tbS9LY29uZmlnPTkzOD1jaG9pY2Vcbi0tXG5tbS9LY29uZmlnLTk0Ny1cbm1tL0tjb25maWc6OTQ4Olx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfTkVWRVJcbm1tL0tjb25maWctOTQ5LVx0XHRib29sIFwmIzM0O25ldmVyXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy05NTYtXG5tbS9LY29uZmlnOjk1NzpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX0FMV0FZU1xubW0vS2NvbmZpZy05NTgtXHRcdGJvb2wgXCYjMzQ7YWx3YXlzXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy05NjQtXG5tbS9LY29uZmlnOjk2NTpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX1dJVEhJTl9TSVpFXG5tbS9LY29uZmlnLTk2Ni1cdFx0Ym9vbCBcJiMzNDt3aXRoaW5fc2l6ZVwmIzM0O1xuLS1cbm1tL0tjb25maWctOTcyLVxubW0vS2NvbmZpZzo5NzM6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfVE1QRlNfSFVHRV9BRFZJU0Vcbm1tL0tjb25maWctOTc0LVx0XHRib29sIFwmIzM0O2FkdmlzZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjE1NgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXM6CgoqKkNoZWNraW5nIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGl0IHJlbGllcyBvbiwgd2hhdCBvdGhlciBwaWVjZXMgb2YgdGhlIHN5c3RlbSBhcmUgcG90ZW50aWFsbHkgYWZmZWN0ZWQgYnkgaXRzIHByZXNlbmNlLCBhbmQgdW5kZXJzdGFuZCBpZiB0aGVyZSYjMzk7cyBhbnkgaW1tZWRpYXRlIHdvcmsgdGhhdCBuZWVkcyB0byBiZSBkb25lLiBJdCYjMzk7cyBjcnVjaWFsLCB3aGVuIGRlYWxpbmcgd2l0aCB0aGlzLCB0byBiZSBtZXRob2RpY2FsLiBJIGhhdmUgdG8gdGhpbmsgdGhyb3VnaCBhbnkga2VybmVsIGludGVyYWN0aW9ucyBhbmQgZW5zdXJlIHRoYXQgSSB1bmRlcnN0YW5kIGFueSBwb3RlbnRpYWwgY2FzY2FkaW5nIGVmZmVjdHMuIFdoZXJlIGlzIGl0IHVzZWQsIGhvdyBpcyBpdCB1c2VkLCBhbmQgd2hhdCBkb2VzIHRoZSBjb25maWd1cmF0aW9uIGxvb2sgbGlrZT8gSSYjMzk7bGwgcHJvYmFibHkgbmVlZCB0byBsb29rIGF0IHJlbGV2YW50IGRvY3VtZW50YXRpb24sIG1heWJlIHNvbWUga2VybmVsIHNvdXJjZSBjb2RlLCBhbmQgZGVmaW5pdGVseSBhbnkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmaWxlcy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLiBJ4oCZbGwgc3RhcnQgYnkgbGlzdGluZyBvdXQgdGhlIGtub3duIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODQ2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA4NDY6XHRtZW51Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFXG4gODQ3Olx0XHRib29sIFwmIzM0O1RyYW5zcGFyZW50IEh1Z2VwYWdlIFN1cHBvcnRcJiMzNDtcbiA4NDg6XHRcdGRlcGVuZHMgb24gSEFWRV9BUkNIX1RSQU5TUEFSRU5UX0hVR0VQQUdFIFx1MDAyNlx1MDAyNiAhUFJFRU1QVF9SVFxuIDg0OTpcdFx0c2VsZWN0IENPTVBBQ1RJT05cbiA4NTA6XHRcdHNlbGVjdCBYQVJSQVlfTVVMVElcbiA4NTE6XHRcdHNlbGVjdCBNTV9JRFxuIDg1MjpcdFx0aGVscFxuIDg1MzpcdFx0ICBUcmFuc3BhcmVudCBIdWdlcGFnZXMgYWxsb3dzIHRoZSBrZXJuZWwgdG8gdXNlIGh1Z2UgcGFnZXMgYW5kXG4gODU0Olx0XHQgIGh1Z2UgdGxiIHRyYW5zcGFyZW50bHkgdG8gdGhlIGFwcGxpY2F0aW9ucyB3aGVuZXZlciBwb3NzaWJsZS5cbiA4NTU6XHRcdCAgVGhpcyBmZWF0dXJlIGNhbiBpbXByb3ZlIGNvbXB1dGluZyBwZXJmb3JtYW5jZSB0byBjZXJ0YWluXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NTQ4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIFRyYW5zcGFyZW50IEh1Z2VwYWdlcyBhbmQgWm9uZSBEZXZpY2UgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBpdCBzZWVtcyB0aGUgZW5hYmxpbmcgb2YgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCByZWxpZXMgb24gYm90aCBgSEFWRV9BUkNIX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCBiZWluZyBkZWZpbmVkICphbmQqIHRoZSBzeXN0ZW0gKm5vdCogYmVpbmcgYSByZWFsLXRpbWUgcHJlZW1wdGlvbiBrZXJuZWwsIGAhUFJFRU1QVF9SVGAuIFRoYXQmIzM5O3Mgc3RhbmRhcmQgYmVoYXZpb3IuIE5vdGhpbmcgdG9vIHN1cnByaXNpbmcgdGhlcmUuIEkmIzM5O20gdXNlZCB0byBzZWVpbmcgdGhpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb24geDg2XzY0IHN5c3RlbXMsIHNvIHRoYXQgcGFydCBjaGVja3Mgb3V0LgoKTm93LCBsZXQmIzM5O3Mgc2hpZnQgZ2VhcnMgYW5kIHF1aWNrbHkgdmVyaWZ5IHdoYXQmIzM5O3MgZGVwZW5kZW50IG9uIGBaT05FX0RFVklDRWAuIEkgbmVlZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHVuZXhwZWN0ZWQgaW50ZXJhY3Rpb25zIG9yIGNvbmZsaWN0cyBpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMjM2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEyMzY6XHRjb25maWcgWk9ORV9ERVZJQ0VcbjEyMzc6XHRcdGJvb2wgXCYjMzQ7RGV2aWNlIG1lbW9yeSAocG1lbSwgSE1NLCBldGMuLi4pIGhvdHBsdWcgc3VwcG9ydFwmIzM0O1xuMTIzODpcdFx0ZGVwZW5kcyBvbiBNRU1PUllfSE9UUExVR1xuMTIzOTpcdFx0ZGVwZW5kcyBvbiBNRU1PUllfSE9UUkVNT1ZFXG4xMjQwOlx0XHRkZXBlbmRzIG9uIFNQQVJTRU1FTV9WTUVNTUFQXG4xMjQxOlx0XHRzZWxlY3QgWEFSUkFZX01VTFRJXG4xMjQyOlx0XG4xMjQzOlx0XHRoZWxwXG4xMjQ0Olx0XHQgIERldmljZSBtZW1vcnkgaG90cGx1ZyBzdXBwb3J0IGFsbG93cyBmb3IgZXN0YWJsaXNoaW5nIHBtZW0sXG4xMjQ1Olx0XHQgIG9yIG90aGVyIGRldmljZSBkcml2ZXIgZGlzY292ZXJlZCBtZW1vcnkgcmVnaW9ucywgaW4gdGhlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2OTU4CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgcXVpY2sgcnVuZG93biBvZiB0aGVzZSBrZXJuZWwgY29uZmlndXJhdGlvbiBjb25zaWRlcmF0aW9uczoKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzIGFuZCBDb25zaWRlcmF0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCBteSBpbml0aWFsIHRob3VnaHQgaGVyZSBpcyB0aGF0IGBaT05FX0RFVklDRWAgaXMgZGlyZWN0bHkgdGllZCB0byBgTUVNT1JZX0hPVFBMVUdgLCBgTUVNT1JZX0hPVFJFTU9WRWAsIGFuZCBgU1BBUlNFTUVNX1ZNRU1NQVBgLiBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBkZXBlbmRlbmN5IGNoYWluLiBOb3csIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LCBJJiMzOTttIGdvaW5nIHRvIGxpc3QgYSBidW5jaCBvZiByZWxhdGVkIGNvbmZpZ3MuIEkmIzM5O2xsIGluY2x1ZGUgYFpPTkVfREVWSUNFYCBpdHNlbGYsIGFsb25nIHdpdGggYERFVklDRV9NSUdSQVRJT05gLCBgVEVTVF9ITU1gLCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLCBgREVWSUNFX1BSSVZBVEVgLCBhbmQgYE1JR1JBVElPTmAuCgpOb3csIGJlZm9yZSBJIGNvbW1pdCB0byBhbnl0aGluZywgSSB3YW50IHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgVEVTVF9ITU1gLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgdGhhdCBwYXJ0aWN1bGFyIGNvbmZpZyBoYXMgYW55IGFkZGl0aW9uYWwgZGVwZW5kZW5jaWVzIHRoYXQgYXJlbiYjMzk7dCBpbW1lZGlhdGVseSBvYnZpb3VzLCBvciBpZiB0aGVyZSYjMzk7cyBhbnl0aGluZyBlbHNlIHRoYXQgSSBzaG91bGQgYmUgdGFraW5nIGludG8gYWNjb3VudC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNyaXRpY2FsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzM1NCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMzU0Olx0Y29uZmlnIFRFU1RfSE1NXG4zMzU1Olx0XHR0cmlzdGF0ZSBcJiMzNDtUZXN0IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudClcJiMzNDtcbjMzNTY6XHRcdGRlcGVuZHMgb24gVFJBTlNQQVJFTlRfSFVHRVBBR0VcbjMzNTc6XHRcdGRlcGVuZHMgb24gREVWSUNFX1BSSVZBVEVcbjMzNTg6XHRcdHNlbGVjdCBITU1fTUlSUk9SXG4zMzU5Olx0XHRzZWxlY3QgTU1VX05PVElGSUVSXG4zMzYwOlx0XHRoZWxwXG4zMzYxOlx0XHQgIFRoaXMgaXMgYSBwc2V1ZG8gZGV2aWNlIGRyaXZlciBzb2xlbHkgZm9yIHRlc3RpbmcgSE1NLlxuMzM2MjpcdFx0ICBTYXkgTSBoZXJlIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHRoZSBITU0gdGVzdCBtb2R1bGUuXG4zMzYzOlx0XHQgIERvaW5nIHNvIHdpbGwgYWxsb3cgeW91IHRvIHJ1biB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0L3ZtL2htbS10ZXN0cy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc0ODEKCQkJCQkJCW91dHB1dDogMTYwCgkJCQkJCQl0aG91Z2h0czogMTYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBDb2RlIENoYW5nZSoqCgpPa2F5LCBzbyB0aGUgc3lzdGVtIGNob3NlIGBITU1fTUlSUk9SYCBhbmQgYE1NVV9OT1RJRklFUmAgYmFzZWQgb24gdGhlIGNvbnRleHQsIHdoaWNoIG1ha2VzIHNlbnNlLiBOb3csIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIGludm9sdmVkIGluIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgYG1pZ3JhdGVfdm1hX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhcmUgdGhlIGZvY3VzLiBUaGUgcmVhc29uaW5nIGlzIHNvbGlkOiB0aGlzIHBhdGNoIGlzIGZpeGluZyBzb21ldGhpbmcgd2l0aGluIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgYW5kIHRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGJvdGggb2YgdGhvc2UgaGlnaC1sZXZlbCBtaWdyYXRpb24gZnVuY3Rpb25zLiBUaGUgYnVnIHNlZW1zIHRvIGNlbnRlciBhcm91bmQgZm9saW8gc3BsaXR0aW5nIGFuZCB0aGUgc3dhcCBjYWNoZSwgd2hpY2ggZGVmaW5pdGVseSBzb3VuZHMgbGlrZSBhIGZ1bmN0aW9uYWwgaXNzdWUuCgpCZWZvcmUgSSBnbyBmdXJ0aGVyLCBsZXQmIzM5O3MganVzdCBjb25maXJtIHRob3NlIHR3byBjb3JlIGZ1bmN0aW9ucyBhcmVuJiMzOTt0IHNvbWV0aGluZyB3ZWlyZCBsaWtlIHN0YXRpYyBvciBpbmxpbmVkLCBzaW5jZSB0aGF0IHdvdWxkIGNvbXBsaWNhdGUgdGhpbmdzLiBBIHF1aWNrIGNoZWNrLi4uIHllcCwgdGhleSYjMzk7cmUgZXhwb3J0ZWQgc3ltYm9scy4gVGhhdCYjMzk7cyBnb29kLCB0aGF0IGNvbmZpcm1zIHRoZXkmIzM5O3JlIG5vdCBzb21lIGxvY2FsLCBoaWRkZW4gaW1wbGVtZW50YXRpb25zLiBBbHJpZ2h0LCBub3cgSSBmZWVsIGNvbmZpZGVudCBpbiBtb3ZpbmcgZm9yd2FyZC4gSSYjMzk7bGwgZ28gYWhlYWQgYW5kIHNldCB0aGUgcmVzdWx0cyBhY2NvcmRpbmdseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RFVklDRV9NSUdSQVRJT04mIzM0OywKICAgICYjMzQ7VEVTVF9ITU0mIzM0OywKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OywKICAgICYjMzQ7REVWSUNFX1BSSVZBVEUmIzM0OywKICAgICYjMzQ7Wk9ORV9ERVZJQ0UmIzM0OywKICAgICYjMzQ7TUlHUkFUSU9OJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWlncmF0ZV92bWFfcGFnZXMmIzM0OywKICAgICYjMzQ7bWlncmF0ZV9kZXZpY2VfcGFnZXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgLCB3aGljaCBpcyBhIGNvcmUgZnVuY3Rpb24gZm9yIGRldmljZSBtZW1vcnkgbWlncmF0aW9uLiBJdCBmaXhlcyBhIGJ1ZyByZWxhdGVkIHRvIGZvbGlvIHNwbGl0IGFuZCBzd2FwIGNhY2hlLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBgbWlncmF0ZV92bWFfcGFnZXNgIGFuZCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgLCB3aGljaCBjYW4gYmUgdHJpZ2dlcmVkIHVzaW5nIHRoZSBgVEVTVF9ITU1gIHBzZXVkbyBkZXZpY2UgZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtERVZJQ0VfTUlHUkFUSU9OJiMzNDssCiAgICAmIzM0O1RFU1RfSE1NJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O0RFVklDRV9QUklWQVRFJiMzNDssCiAgICAmIzM0O1pPTkVfREVWSUNFJiMzNDssCiAgICAmIzM0O01JR1JBVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21pZ3JhdGVfdm1hX3BhZ2VzJiMzNDssCiAgICAmIzM0O21pZ3JhdGVfZGV2aWNlX3BhZ2VzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgd2hpY2ggaXMgYSBjb3JlIGZ1bmN0aW9uIGZvciBkZXZpY2UgbWVtb3J5IG1pZ3JhdGlvbi4gSXQgZml4ZXMgYSBidWcgcmVsYXRlZCB0byBmb2xpbyBzcGxpdCBhbmQgc3dhcCBjYWNoZS4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgYG1pZ3JhdGVfdm1hX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgd2hpY2ggY2FuIGJlIHRyaWdnZXJlZCB1c2luZyB0aGUgYFRFU1RfSE1NYCBwc2V1ZG8gZGV2aWNlIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA3OjUzLjE5NTA0ODk1MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODkxODc3NTA5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJERVZJQ0VfTUlHUkFUSU9OXCIsXG4gICAgXCJURVNUX0hNTVwiLFxuICAgIFwiVFJBTlNQQVJFTlRfSFVHRVBBR0VcIixcbiAgICBcIkRFVklDRV9QUklWQVRFXCIsXG4gICAgXCJaT05FX0RFVklDRVwiLFxuICAgIFwiTUlHUkFUSU9OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWlncmF0ZV92bWFfcGFnZXNcIixcbiAgICBcIm1pZ3JhdGVfZGV2aWNlX3BhZ2VzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgLCB3aGljaCBpcyBhIGNvcmUgZnVuY3Rpb24gZm9yIGRldmljZSBtZW1vcnkgbWlncmF0aW9uLiBJdCBmaXhlcyBhIGJ1ZyByZWxhdGVkIHRvIGZvbGlvIHNwbGl0IGFuZCBzd2FwIGNhY2hlLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBgbWlncmF0ZV92bWFfcGFnZXNgIGFuZCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgLCB3aGljaCBjYW4gYmUgdHJpZ2dlcmVkIHVzaW5nIHRoZSBgVEVTVF9ITU1gIHBzZXVkbyBkZXZpY2UgZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzowNzo1My4xOTUwNTU3ODJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0NDY1MzMyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDEzMDllMTJkNmVmOGM4MGY1N2FmNGY3ODYzYjI4Zjk4MWU2ZjM0YTVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgMjcgMTc6MDc6NTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vbWlncmF0ZV9kZXZpY2UuYyBiL21tL21pZ3JhdGVfZGV2aWNlLmNcXG5pbmRleCA1NTQ3NTRlYjI2ZmYyZi4uNzRhYzY2NTFkNGIzNDMgMTAwNjQ0XFxuLS0tIGEvbW0vbWlncmF0ZV9kZXZpY2UuY1xcbisrKyBiL21tL21pZ3JhdGVfZGV2aWNlLmNcXG5AQCAtMTE4Miw2ICsxMTgyLDExIEBAIHN0YXRpYyB2b2lkIF9fbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdCBNSUdSQVRFX1BGTl9DT01QT1VORCk7XFxuIFxcdFxcdFxcdFxcdFxcdGdvdG8gbmV4dDtcXG4gXFx0XFx0XFx0XFx0fVxcbitcXHRcXHRcXHRcXHQvKlxcbitcXHRcXHRcXHRcXHQgKiByZXNldCBuciBzbyB0aGF0IG9ubHkgZmlyc3QgYWZ0ZXItc3BsaXQgZm9saW9cXG4rXFx0XFx0XFx0XFx0ICogaXMgcHJvY2Vzc2VkIGJlbG93XFxuK1xcdFxcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHRcXHRuciA9IDE7XFxuIFxcdFxcdFxcdH0gZWxzZSBpZiAoKHNyY19wZm5zW2ldIFxcdTAwMjYgTUlHUkFURV9QRk5fTUlHUkFURSkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0XFx0KGRzdF9wZm5zW2ldIFxcdTAwMjYgTUlHUkFURV9QRk5fQ09NUE9VTkQpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdFxcdFxcdCEoc3JjX3BmbnNbaV0gXFx1MDAyNiBNSUdSQVRFX1BGTl9DT01QT1VORCkpIHtcXG5AQCAtMTIwNCw2ICsxMjA5LDEyIEBAIHN0YXRpYyB2b2lkIF9fbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsXFxuIFxcdFxcdFxcdFxcdFxcdHNyY19wZm5zW2ldIFxcdTAwMjY9IH5NSUdSQVRFX1BGTl9NSUdSQVRFO1xcbiBcXHRcXHRcXHRcXHRcXHRnb3RvIG5leHQ7XFxuIFxcdFxcdFxcdFxcdH1cXG4rXFxuK1xcdFxcdFxcdFxcdC8qXFxuK1xcdFxcdFxcdFxcdCAqIGZvbGlvX2ZyZWVfc3dhcCgpIHJlbW92ZWQgdGhlIGZvbGlvIGZyb20gdGhlIHN3YXBcXG4rXFx0XFx0XFx0XFx0ICogY2FjaGUuIFJlZnJlc2ggdGhlIHNhdmVkIG1hcHBpbmcgYmVmb3JlIG1pZ3JhdGlvbi5cXG4rXFx0XFx0XFx0XFx0ICovXFxuK1xcdFxcdFxcdFxcdG1hcHBpbmcgPSBmb2xpb19tYXBwaW5nKGZvbGlvKTtcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHR9IGVsc2UgaWYgKGZvbGlvX2lzX3pvbmVfZGV2aWNlKG5ld2ZvbGlvKSkge1xcbiBcXHRcXHRcXHQvKlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzowNzo1My45NDA4NTU5MjdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMTgxNzI5NTQyMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREVWSUNFX01JR1JBVElPTlwiLFxuICAgIFwiVEVTVF9ITU1cIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCIsXG4gICAgXCJERVZJQ0VfUFJJVkFURVwiLFxuICAgIFwiWk9ORV9ERVZJQ0VcIixcbiAgICBcIk1JR1JBVElPTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1pZ3JhdGVfdm1hX3BhZ2VzXCIsXG4gICAgXCJtaWdyYXRlX2RldmljZV9wYWdlc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgd2hpY2ggaXMgYSBjb3JlIGZ1bmN0aW9uIGZvciBkZXZpY2UgbWVtb3J5IG1pZ3JhdGlvbi4gSXQgZml4ZXMgYSBidWcgcmVsYXRlZCB0byBmb2xpbyBzcGxpdCBhbmQgc3dhcCBjYWNoZS4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgYG1pZ3JhdGVfdm1hX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgd2hpY2ggY2FuIGJlIHRyaWdnZXJlZCB1c2luZyB0aGUgYFRFU1RfSE1NYCBwc2V1ZG8gZGV2aWNlIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTMwOWUxMmQ2ZWY4YzgwZjU3YWY0Zjc4NjNiMjhmOTgxZTZmMzRhNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDI3IDE3OjA3OjUxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vbWlncmF0ZV9kZXZpY2UuYyBiL21tL21pZ3JhdGVfZGV2aWNlLmNcbmluZGV4IDU1NDc1NGViMjZmZjJmLi43NGFjNjY1MWQ0YjM0MyAxMDA2NDRcbi0tLSBhL21tL21pZ3JhdGVfZGV2aWNlLmNcbisrKyBiL21tL21pZ3JhdGVfZGV2aWNlLmNcbkBAIC0xMTgyLDYgKzExODIsMTEgQEAgc3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcbiBcdFx0XHRcdFx0XHRcdCBNSUdSQVRFX1BGTl9DT01QT1VORCk7XG4gXHRcdFx0XHRcdGdvdG8gbmV4dDtcbiBcdFx0XHRcdH1cbitcdFx0XHRcdC8qXG4rXHRcdFx0XHQgKiByZXNldCBuciBzbyB0aGF0IG9ubHkgZmlyc3QgYWZ0ZXItc3BsaXQgZm9saW9cbitcdFx0XHRcdCAqIGlzIHByb2Nlc3NlZCBiZWxvd1xuK1x0XHRcdFx0ICovXG4rXHRcdFx0XHRuciA9IDE7XG4gXHRcdFx0fSBlbHNlIGlmICgoc3JjX3BmbnNbaV0gXHUwMDI2IE1JR1JBVEVfUEZOX01JR1JBVEUpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0KGRzdF9wZm5zW2ldIFx1MDAyNiBNSUdSQVRFX1BGTl9DT01QT1VORCkgXHUwMDI2XHUwMDI2XG4gXHRcdFx0XHQhKHNyY19wZm5zW2ldIFx1MDAyNiBNSUdSQVRFX1BGTl9DT01QT1VORCkpIHtcbkBAIC0xMjA0LDYgKzEyMDksMTIgQEAgc3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcbiBcdFx0XHRcdFx0c3JjX3BmbnNbaV0gXHUwMDI2PSB+TUlHUkFURV9QRk5fTUlHUkFURTtcbiBcdFx0XHRcdFx0Z290byBuZXh0O1xuIFx0XHRcdFx0fVxuK1xuK1x0XHRcdFx0LypcbitcdFx0XHRcdCAqIGZvbGlvX2ZyZWVfc3dhcCgpIHJlbW92ZWQgdGhlIGZvbGlvIGZyb20gdGhlIHN3YXBcbitcdFx0XHRcdCAqIGNhY2hlLiBSZWZyZXNoIHRoZSBzYXZlZCBtYXBwaW5nIGJlZm9yZSBtaWdyYXRpb24uXG4rXHRcdFx0XHQgKi9cbitcdFx0XHRcdG1hcHBpbmcgPSBmb2xpb19tYXBwaW5nKGZvbGlvKTtcbiBcdFx0XHR9XG4gXHRcdH0gZWxzZSBpZiAoZm9saW9faXNfem9uZV9kZXZpY2UobmV3Zm9saW8pKSB7XG4gXHRcdFx0LypcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA3OjUzLjk0MDg1ODYxOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMDIwNjQ5NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNZW1vcnkgTWlncmF0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG1tL21pZ3JhdGVfZGV2aWNlLmNgLiBTcGVjaWZpY2FsbHksIGl0J3MgdHdlYWtpbmcgdGhlIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhlIGNoYW5nZXMgYXJlIGZhaXJseSBmb2N1c2VkLCBidXQgbGV0J3MgZGlnIGRlZXBlci4gVGhlIGZpcnN0IHRoaW5nIHRoYXQgY2F0Y2hlcyBteSBleWUgaXMgdGhlIGFkZGl0aW9uIG9mIGBuciA9IDE7YCBhZnRlciBhIGZvbGlvIHNwbGl0LiBUaGlzIHRlbGxzIG1lIHRoZXkncmUgbGlrZWx5IGRlYWxpbmcgd2l0aCB0aGUgcGFnZSBjb3VudCBhZnRlciBhIHNwbGl0LCB3aGljaCBpcyBjcnVjaWFsIGZvciBjb3JyZWN0IGl0ZXJhdGlvbiBvciBhY2NvdW50aW5nLiBJdCBzZWVtcyBzdHJhaWdodGZvcndhcmQsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIGZvciB0aGUgb3ZlcmFsbCBtaWdyYXRpb24gcHJvY2Vzcy5cblxuVGhlIHNlY29uZCBhZGRpdGlvbiwgYG1hcHBpbmcgPSBmb2xpb19tYXBwaW5nKGZvbGlvKTtgIGFmdGVyIGBmb2xpb19mcmVlX3N3YXAoKWAsIGxvb2tzIGVxdWFsbHkgaW1wb3J0YW50LiBUaGUgc3dhcCBmcmVlaW5nIGZ1bmN0aW9uIHN1Z2dlc3RzIHRoYXQgdGhpcyBmb2xpbyB3YXMgcHJldmlvdXNseSBzd2FwcGVkIG91dC4gTm93LCBpdCBzZWVtcyBsaWtlIHRoZXkgYXJlIHRyeWluZyB0byBvYnRhaW4gdGhlIG1hcHBpbmcgb2YgdGhlIGZvbGlvLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoZXkgaW50ZW5kIHRvIGRvIHdpdGggaXQgb25jZSB0aGUgc3dhcCBpcyBmcmVlZCwgbWF5YmUgcmVsYXRlZCB0byBkZXZpY2UgbWlncmF0aW9uLiBUaGlzIGluZGljYXRlcyBwb3RlbnRpYWwgY2hhbmdlcyBpbiBob3cgdGhlIHN5c3RlbSBoYW5kbGVzIHN3YXBwZWQgcGFnZXMgZHVyaW5nIGRldmljZSBtaWdyYXRpb24sIGFuZCB0aGlzIGhhcyB0byBiZSBjYXJlZnVsbHkgZXhhbWluZWQuXG5cblRvIGZ1bGx5IGdyYXNwIHRoZSBpbnRlbnQgYW5kIHBvdGVudGlhbCBpbXBhY3QsIEkgbmVlZCB0byB6b29tIG91dCBhbmQgYW5hbHl6ZSB0aGUgYnJvYWRlciBjb250ZXh0IG9mIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCB3aXRoaW4gdGhlIGxhcmdlciBgbW0vbWlncmF0ZV9kZXZpY2UuY2AgZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGNoYW5nZXMgZml0IGludG8gdGhlIGV4aXN0aW5nIGZsb3cgYW5kIHdoYXQgb3RoZXIgZnVuY3Rpb25zIG9yIGRhdGEgc3RydWN0dXJlcyB0aGV5IGludGVyYWN0IHdpdGguIFRoZSBnb2FsIGlzIHRvIHNlZSBpZiB0aGV5J3ZlIGFjY291bnRlZCBmb3IgYWxsIHRoZSBlZGdlIGNhc2VzIGFuZCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBnaXZlbiB0aGUgbmF0dXJlIG9mIG1lbW9yeSBtaWdyYXRpb24uIExldCdzIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIzNCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MDc6NTguOTQyOTI2NTQ4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMzYwOTYyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL21pZ3JhdGVfZGV2aWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbWlncmF0ZV9kZXZpY2UuYz05NjU9c3RhdGljIHZvaWQgbWlncmF0ZV92bWFfaW5zZXJ0X3BhZ2Uoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlLFxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMDk3LVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTA5ODpzdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTA5OS1cXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nICpkc3RfcGZucywgdW5zaWduZWQgbG9uZyBucGFnZXMsXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jPTEyNTg9dm9pZCBtaWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywgdW5zaWduZWQgbG9uZyAqZHN0X3BmbnMsXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjAte1xcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI2MTpcXHRfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHNyY19wZm5zLCBkc3RfcGZucywgbnBhZ2VzLCBOVUxMKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjItfVxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMjczPXZvaWQgbWlncmF0ZV92bWFfcGFnZXMoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlKVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI3NC17XFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjc1OlxcdF9fbWlncmF0ZV9kZXZpY2VfcGFnZXMobWlncmF0ZS1cXHUwMDNlc3JjLCBtaWdyYXRlLVxcdTAwM2Vkc3QsIG1pZ3JhdGUtXFx1MDAzZW5wYWdlcywgbWlncmF0ZSk7XFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjc2LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MDc6NTkuMDc2NTQ0NzA2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU2NjM5MTMxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBEZXZpY2UgUGFnZSBNaWdyYXRpb24qKlxuXG5SaWdodCwgc28gYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGlzIGNsZWFybHkgdGhlIGNvcmUgZnVuY3Rpb24gaGVyZSwgdGhlIG9uZSBhY3R1YWxseSBkb2luZyB0aGUgaGVhdnkgbGlmdGluZy4gQm90aCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgIHNlZW0gdG8gYmUgY2FsbGluZyBpdCwgd2hpY2ggc3VnZ2VzdHMgYSBzaGFyZWQgY29yZSBmdW5jdGlvbmFsaXR5IGZvciBtaWdyYXRpbmcgcGFnZXMgcmVsYXRlZCB0byBkZXZpY2VzLiBPa2F5LCBzbyBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgbGFyZ2VyIGNvbnRleHQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29uZmlndXJhdGlvbnMgYWN0dWFsbHkgKmVuYWJsZSogdGhlIGBtbS9taWdyYXRlX2RldmljZS5jYCBmaWxlIGFuZCBpdHMgZnVuY3Rpb25hbGl0eS4gV2hhdCBhcmUgdGhlIGRlcGVuZGVuY2llcz8gV2hhdCBmZWF0dXJlIGZsYWdzIGFyZSBpbnZvbHZlZD8gTGV0J3MgY2hlY2sgdGhlIEtjb25maWcgYW5kIHNlZSB3aGF0IGRlZmluZXMgdGhlc2Ugb3B0aW9ucy4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB1bmRlciB3aGF0IGNpcmN1bXN0YW5jZXMgdGhpcyBjb2RlIHBhdGggaXMgZXZlbiBhY3RpdmUuIEl0J2xsIGdpdmUgbWUgY29udGV4dCBvbiB3aGF0IGFyY2hpdGVjdHVyYWwgYXNzdW1wdGlvbnMgYXJlIGJ1aWx0IGluIHRvIHRoZSBtaWdyYXRpb24gY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAxMSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjAyLjY0MjkzOTI2NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjk5NzM5NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWlncmF0ZV9kZXZpY2Uub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9NYWtlZmlsZT05OT1vYmotJChDT05GSUdfTlVNQSkgKz0gbWVtb3J5LXRpZXJzLm9cXG5tbS9NYWtlZmlsZToxMDA6b2JqLSQoQ09ORklHX0RFVklDRV9NSUdSQVRJT04pICs9IG1pZ3JhdGVfZGV2aWNlLm9cXG5tbS9NYWtlZmlsZS0xMDEtb2JqLSQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSArPSBodWdlX21lbW9yeS5vIGtodWdlcGFnZWQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzowODowMi43NzI5MjI3NzNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDI1NzYwMTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBEZXZpY2UgTWlncmF0aW9uIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBgQ09ORklHX0RFVklDRV9NSUdSQVRJT05gIGlzIGZsaXBwZWQuIE5hdHVyYWxseSwgdGhhdCBwdWxscyBpbiBgbW0vbWlncmF0ZV9kZXZpY2UuY2AuIE5vdywgYXMgYW4gZXhwZXJ0IGluIHRoaXMgYXJlYSwgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGUgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJhbCBwcmVyZXF1aXNpdGVzIGFuZCBzdXBwb3J0aW5nIGluZnJhc3RydWN0dXJlIHRoYXQgYWxsb3dzIGZvciBkZXZpY2UgbWlncmF0aW9uLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zIGFyZSB0aWVkIHRvIGBDT05GSUdfREVWSUNFX01JR1JBVElPTmAuIFVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgZGVwZW5kZW5jeSB0cmVlIGlzIGNyaXRpY2FsIHRvIGFzc2Vzc2luZyBpdHMgaW1wbGljYXRpb25zIG9uIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBvdmVyYWxsIHN5c3RlbSBzdGFiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNjcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzowODowNS43OTg2ODY0MjNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY4NzM5OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERFVklDRV9NSUdSQVRJT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTY5Nj1jb25maWcgTUlHUkFUSU9OXFxuLS1cXG5tbS9LY29uZmlnLTY5OS1cXG5tbS9LY29uZmlnOjcwMDpjb25maWcgREVWSUNFX01JR1JBVElPTlxcbm1tL0tjb25maWctNzAxLVxcdGRlZl9ib29sIE1JR1JBVElPTiBcXHUwMDI2XFx1MDAyNiBaT05FX0RFVklDRVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzowODowNS44OTU1NjY5NTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjMzNDk5NTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIERldmljZSBNaWdyYXRpb24gTG9naWMqKlxuXG5SaWdodCwgc28gYERFVklDRV9NSUdSQVRJT05gIGlzIGRlZmluZWQgYXMgYSBib29sZWFuIHRoYXQgcmVxdWlyZXMgYm90aCBgTUlHUkFUSU9OYCBhbmQgYFpPTkVfREVWSUNFYCB0byBiZSB0cnVlLiBNYWtlcyBzZW5zZS4gSXQncyBhIGNvbmRpdGlvbmFsIHNldHRpbmcsIGVzc2VudGlhbGx5LiBNaWdyYXRpb24sIGluIGl0c2VsZiwgaXNuJ3QgZW5vdWdoOyB3ZSdyZSBkZWFsaW5nIHdpdGggem9uZS1zcGVjaWZpYyBkZXZpY2UgbWlncmF0aW9uLCB3aGljaCBpcyBtb3JlIHRhcmdldGVkLiBPa2F5LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgYFpPTkVfREVWSUNFYCBjb21wbGV0ZWx5LCB0aG91Z2guIEknbGwgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhhdC4gR290dGEgZW5zdXJlIGFsbCB0aGUgcGllY2VzIGFyZSB3aGVyZSB0aGV5IG5lZWQgdG8gYmUsIGVzcGVjaWFsbHkgd2l0aCBzb21ldGhpbmcgdGhhdCBjb3VsZCBpbXBhY3QgZGV2aWNlIGJlaGF2aW9yIGluIGEgem9uZS4gQmV0dGVyIHRvIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjM4LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MDg6MDkuMTI5MDcwMDQ3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzM0NjkxNDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFpPTkVfREVWSUNFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz0xMjMxPWNvbmZpZyBaT05FX0RNQTMyXFxuLS1cXG5tbS9LY29uZmlnLTEyMzUtXFxubW0vS2NvbmZpZzoxMjM2OmNvbmZpZyBaT05FX0RFVklDRVxcbm1tL0tjb25maWctMTIzNy1cXHRib29sIFxcXCJEZXZpY2UgbWVtb3J5IChwbWVtLCBITU0sIGV0Yy4uLikgaG90cGx1ZyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzowODowOS4yNjI1NDYyMTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk1ODM0NTY4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIE1lbW9yeSBNaWdyYXRpb24gQ2FwYWJpbGl0aWVzKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gSSdtIGZvY3VzaW5nIG9uIGBDT05GSUdfWk9ORV9ERVZJQ0VgIGFuZCBgQ09ORklHX01JR1JBVElPTmAg4oCTIHRob3NlIGFyZSB0aGUga2V5IGZsYWdzIGluZGljYXRpbmcgc3VwcG9ydCBmb3IgZGV2aWNlIHpvbmVzIGFuZCBwYWdlIG1pZ3JhdGlvbi4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyBob3cgZGVlcGx5IHRob3NlIGZlYXR1cmVzIGFyZSB3b3ZlbiBpbnRvIHRoZSBzeXN0ZW0uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBjaGVjayBob3cgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYCBhcmUgKmV4cG9zZWQqLiBJIG5lZWQgdG8gc2VlIHdoZXJlIHRoZXNlIGNyaXRpY2FsIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgdG8gZ2F1Z2UgdGhlIGFjY2Vzc2liaWxpdHkgYW5kIGludGVncmF0aW9uIHBvaW50cyBvZiB0aGUgbWlncmF0aW9uIG1lY2hhbmlzbXMuIFdoZXJlIHRoZXnigJlyZSB2aXNpYmxlIHRlbGxzIHRoZSB3aG9sZSBzdG9yeS4gQXJlIHdlIHRhbGtpbmcgbW9kdWxlIGFjY2Vzcywgb3IgaXMgaXQgZGVlcGx5IHdpdGhpbiB0aGUgY29yZT8gVGhhdCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgcm9idXN0bHkgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgaW5jb3Jwb3JhdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTQyLCJPdXRwdXRUb2tlbnMiOjczLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MDg6MTMuMjIwODk1MTU2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDEzNzc3OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qbWlncmF0ZV9kZXZpY2VfcGFnZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vbWlncmF0ZV9kZXZpY2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9taWdyYXRlX2RldmljZS5jPTEyNTg9dm9pZCBtaWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywgdW5zaWduZWQgbG9uZyAqZHN0X3BmbnMsXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjItfVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI2MzpFWFBPUlRfU1lNQk9MKG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjEzLjM2MjI3Nzk3M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY2OTM4MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qbWlncmF0ZV92bWFfcGFnZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vbWlncmF0ZV9kZXZpY2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9taWdyYXRlX2RldmljZS5jPTEyNzM9dm9pZCBtaWdyYXRlX3ZtYV9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzYtfVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI3NzpFWFBPUlRfU1lNQk9MKG1pZ3JhdGVfdm1hX3BhZ2VzKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjEzLjQ1ODk4MjA4MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzA3NjQzOTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRyYWNraW5nIGRvd24gdGhlIGNhbGxlcnMgb2YgdGhvc2UgZnVuY3Rpb25zLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlIGluIHRoaXMgYXJlYTpcblxuKipUcmFjaW5nIHRoZSBDYWxsZXJzKipcblxuQWxyaWdodCwgc28gYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYC4uLiB0aGV5J3JlIGtleSBmdW5jdGlvbnMgZm9yIHBhZ2UgbWlncmF0aW9uLCBwYXJ0aWN1bGFybHkgaW52b2x2aW5nIGRldmljZSBtZW1vcnkgYW5kIHZpcnR1YWwgbWVtb3J5IGFyZWFzLiBUaGF0IHRlbGxzIG1lIHRoZXkncmUgcHJvYmFibHkgc2l0dGluZyBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBjb2RlLCBsaWtlbHkgc29tZXdoZXJlIHJlbGF0ZWQgdG8gdGhlIHBhZ2UgdGFibGUgaGFuZGxpbmcsIHBvdGVudGlhbGx5IGxpbmtlZCB0byBkZXZpY2UgZHJpdmVycyBvciBWTSBzdWJzeXN0ZW0uIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBteSBleHBlcmllbmNlLCBpcyB0byBmaWd1cmUgb3V0IHRoZSBzb3VyY2UgY29kZSBvZiB0aGUgZnVuY3Rpb25zLlxuXG5GaXJzdCwgSSBuZWVkIHRvIGtub3cgKndoZXJlKiB0aGVzZSBhcmUgZGVmaW5lZC4gSSB3b3VsZCB1c2UgYGdyZXBgIG9yIG15IElERSdzIHNlYXJjaCBmdW5jdGlvbiBhY3Jvc3MgdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSwgbG9va2luZyBmb3IgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZXMuIE9uY2UgSSBrbm93IHRoZSBmaWxlcywgSSBjYW4gZGlyZWN0bHkgdmlldyB0aGVpciBkZWZpbml0aW9ucyB0byB1bmRlcnN0YW5kIHRoZWlyIHB1cnBvc2UuIEtub3dpbmcgdGhlaXIgcHVycG9zZSBnaXZlcyBtZSBmdXJ0aGVyIGhpbnRzIG9uIHdoZXJlIHRvIGxvb2sgbmV4dC5cblxuT25jZSBJIGhhdmUgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb25zLCBJJ2xsIHRoZW4gdXNlIG15IGNvZGUgbmF2aWdhdGlvbiB0b29scyAobGlrZSBgY3Njb3BlYCwgYGN0YWdzYCwgb3IgbXkgSURFJ3MgYnVpbHQtaW4gY2FsbCBncmFwaCBmZWF0dXJlcykgdG8gcGVyZm9ybSBhIFwiZmluZCBjYWxsZXJzXCIgc2VhcmNoLiBUaGF0J3MgdGhlIG1vc3QgZGlyZWN0IG1ldGhvZC4gSSBjYW4gc2NhbiB0aGUgY29kZSB0byBsb29rIGZvciB0aGUgdXNlcyBvZiB0aGUgZnVuY3Rpb25zLlxuXG5JIG5lZWQgdG8gYmUgc3lzdGVtYXRpYy4gVGhpcyBtaWdodCBpbnZvbHZlIHNldHRpbmcgdXAgYSBjcm9zcy1yZWZlcmVuY2Ugc2VhcmNoLCBzY2FubmluZyBrZXJuZWwgbW9kdWxlcyB0aGF0IGhhdmUgdG8gZG8gd2l0aCBwYWdlIG1pZ3JhdGlvbiwgZGV2aWNlIGRyaXZlcnMgKGVzcGVjaWFsbHkgdGhvc2UgaGFuZGxpbmcgRE1BIG9yIG1lbW9yeS1tYXBwZWQgSS9PKSwgb3IgdGhlIHZpcnR1YWwgbWVtb3J5IGFyZWEgY29kZSAoYG1tL2ApLiBJIHdpbGwgcGF5IGF0dGVudGlvbiB0byBhbnkgY2FsbHMgd2l0aCBkZXZpY2Ugc3BlY2lmaWMgY29kZSBhcyB0aGlzIGlzIHJlbGF0ZWQgdG8gYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYFxuXG5JIHdpbGwgYWxzbyBjb25zaWRlciBzdGF0aWMgYW5hbHlzaXMsIGlmIGF2YWlsYWJsZSwgd2hpY2ggY2FuIHByb3ZpZGUgYSBtb3JlIGV4aGF1c3RpdmUgbG9vayBhdCBwb3RlbnRpYWwgY2FsbCBwYXRocywgaW5jbHVkaW5nIHRob3NlIGludm9sdmluZyBmdW5jdGlvbiBwb2ludGVycyBvciBpbmRpcmVjdCBjYWxscy4gSSBtaWdodCBhbHNvIGNvbnNpZGVyIHRoZSB1c2Ugb2YgYHRyYWNlcG9pbnRzYCBvciBga3Byb2Jlc2AgdG8gZHluYW1pY2FsbHkgbW9uaXRvciB0aGUgY2FsbHMgdG8gdGhlc2UgZnVuY3Rpb25zIGR1cmluZyBydW50aW1lLCBlc3BlY2lhbGx5IG9uIGEgdGVzdCBzeXN0ZW0sIHRvIGNhdGNoIGluZnJlcXVlbnQgY2FsbHMgb3IgdGhvc2UgdHJpZ2dlcmVkIGJ5IHNwZWNpZmljIGV2ZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQyOCwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzowODoxOC4xNjY2MjgyNjhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1MDM4MzIxMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWlncmF0ZV9kZXZpY2VfcGFnZXNcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM9MTEwOT1pbnQgZHJtX3BhZ2VtYXBfZXZpY3RfdG9fcmFtKHN0cnVjdCBkcm1fcGFnZW1hcF9kZXZtZW0gKmRldm1lbV9hbGxvY2F0aW9uKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmMtMTE3NC1cXHRcXHRkcm1fcGFnZW1hcF9taWdyYXRpb25fdW5sb2NrX3B1dF9wYWdlcyhucGFnZXMsIGRzdCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM6MTE3NTpcXHRtaWdyYXRlX2RldmljZV9wYWdlcyhzcmMsIGRzdCwgbnBhZ2VzKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy0xMTc2LVxcdG1pZ3JhdGVfZGV2aWNlX2ZpbmFsaXplKHNyYywgZHN0LCBucGFnZXMpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM9NDc1PW5vdXZlYXVfZG1lbV9ldmljdF9jaHVuayhzdHJ1Y3Qgbm91dmVhdV9kbWVtX2NodW5rICpjaHVuaylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jLTUxNy1cXHRub3V2ZWF1X2ZlbmNlX25ldyhcXHUwMDI2ZmVuY2UsIGNodW5rLVxcdTAwM2Vkcm0tXFx1MDAzZWRtZW0tXFx1MDAzZW1pZ3JhdGUuY2hhbik7XFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM6NTE4OlxcdG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKHNyY19wZm5zLCBkc3RfcGZucywgbnBhZ2VzKTtcXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy01MTktXFx0bm91dmVhdV9kbWVtX2ZlbmNlX2RvbmUoXFx1MDAyNmZlbmNlKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWlncmF0ZS5oPTE5OD1pbnQgbWlncmF0ZV9kZXZpY2VfcGZucyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywgdW5zaWduZWQgbG9uZyBucGFnZXMpO1xcbmluY2x1ZGUvbGludXgvbWlncmF0ZS5oOjE5OTp2b2lkIG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLCB1bnNpZ25lZCBsb25nICpkc3RfcGZucyxcXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaC0yMDAtXFx0XFx0XFx0dW5zaWduZWQgbG9uZyBucGFnZXMpO1xcbi0tXFxubGliL3Rlc3RfaG1tLmM9MTg4PXN0YXRpYyB2b2lkIGRtaXJyb3JfZGV2aWNlX2V2aWN0X2NodW5rKHN0cnVjdCBkbWlycm9yX2NodW5rICpjaHVuaylcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTIzMS1cXHR9XFxubGliL3Rlc3RfaG1tLmM6MjMyOlxcdG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKHNyY19wZm5zLCBkc3RfcGZucywgbnBhZ2VzKTtcXG5saWIvdGVzdF9obW0uYy0yMzMtXFx0bWlncmF0ZV9kZXZpY2VfZmluYWxpemUoc3JjX3BmbnMsIGRzdF9wZm5zLCBucGFnZXMpO1xcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYz05NjU9c3RhdGljIHZvaWQgbWlncmF0ZV92bWFfaW5zZXJ0X3BhZ2Uoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlLFxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMDk3LVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTA5ODpzdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTA5OS1cXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nICpkc3RfcGZucywgdW5zaWduZWQgbG9uZyBucGFnZXMsXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNDktLyoqXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjUwOiAqIG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKCkgLSBtaWdyYXRlIG1ldGEtZGF0YSBmcm9tIHNyYyBwYWdlIHRvIGRzdCBwYWdlXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjUxLSAqIEBzcmNfcGZuczogc3JjX3BmbnMgcmV0dXJuZWQgZnJvbSBtaWdyYXRlX2RldmljZV9yYW5nZSgpXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTctICovXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjU4OnZvaWQgbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsIHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLFxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI1OS1cXHRcXHRcXHR1bnNpZ25lZCBsb25nIG5wYWdlcylcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjAte1xcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI2MTpcXHRfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHNyY19wZm5zLCBkc3RfcGZucywgbnBhZ2VzLCBOVUxMKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjItfVxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMjczPXZvaWQgbWlncmF0ZV92bWFfcGFnZXMoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlKVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI3NC17XFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjc1OlxcdF9fbWlncmF0ZV9kZXZpY2VfcGFnZXMobWlncmF0ZS1cXHUwMDNlc3JjLCBtaWdyYXRlLVxcdTAwM2Vkc3QsIG1pZ3JhdGUtXFx1MDAzZW5wYWdlcywgbWlncmF0ZSk7XFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjc2LX1cXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTM2Nj1zdGF0aWMgdW5zaWduZWQgbG9uZyBtaWdyYXRlX2RldmljZV9wZm5fbG9jayh1bnNpZ25lZCBsb25nIHBmbilcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTM5OC0gKiBhbGxvY2F0ZSBkZXN0aW5hdGlvbiBwYWdlcyBhbmQgc3RhcnQgY29weWluZyBkYXRhIGZyb20gdGhlIGRldmljZSB0byBDUFVcXG5tbS9taWdyYXRlX2RldmljZS5jOjEzOTk6ICogbWVtb3J5IGJlZm9yZSBjYWxsaW5nIG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKCkuXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xNDAwLSAqL1xcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYz0xNDY2PWludCBtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xNDkwLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTQ5MTpcXHRtaWdyYXRlX2RldmljZV9wYWdlcyhcXHUwMDI2c3JjX3BmbiwgXFx1MDAyNmRzdF9wZm4sIDEpO1xcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTQ5Mi1cXHRpZiAoc3JjX3BmbiBcXHUwMDI2IE1JR1JBVEVfUEZOX01JR1JBVEUpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjIxLjY3MDQ2NDg4OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjkwMzg0MDYyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtaWdyYXRlX3ZtYV9wYWdlc1xcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL21tL2htbS5yc3Q9MjY0PXVzZSBoYXJkd2FyZSBETUEgb3IgZGV2aWNlIHNwZWNpZmljIGxvYWQvc3RvcmUgaW5zdHJ1Y3Rpb25zIHRvIG1pZ3JhdGUgZGF0YS5cXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3Q6MjY1OlRoZSBtaWdyYXRlX3ZtYV9zZXR1cCgpLCBtaWdyYXRlX3ZtYV9wYWdlcygpLCBhbmQgbWlncmF0ZV92bWFfZmluYWxpemUoKVxcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdC0yNjYtZnVuY3Rpb25zIGFyZSBkZXNpZ25lZCB0byBtYWtlIGRyaXZlcnMgZWFzaWVyIHRvIHdyaXRlIGFuZCB0byBjZW50cmFsaXplIGNvbW1vblxcbi0tXFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0PTI5Nz1iZXR3ZWVuIGRldmljZSBkcml2ZXIgc3BlY2lmaWMgY29kZSBhbmQgc2hhcmVkIGNvbW1vbiBjb2RlOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTM2NC1cXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3Q6MzY1OjQuIGBgbWlncmF0ZV92bWFfcGFnZXMoKWBgXFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTM2Ni1cXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3Q9MjEyPUhNTSDliIfmjaLliLDnm7TmjqXkvb/nlKggc3RydWN0IHBhZ2Ug55So5LqO6K6+5aSH5YaF5a2Y77yM6L+Z5L2/5b6X5aSn5aSa5pWw5YaF5qC45Luj56CB6Lev5b6E5LiN55+l6YGT5beu5byC44CCXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0LTIxOC3nlLHkuo4gQ1BVIOaXoOazleebtOaOpeiuv+mXruiuvuWkh+WGheWtmO+8jOWboOatpOiuvuWkh+mpseWKqOeoi+W6j+W/hemhu+S9v+eUqOehrOS7tiBETUEg5oiW6K6+5aSH54m55a6a55qE5Yqg6L29L+WtmFxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3Q6MjE5OuWCqOaMh+S7pOadpei/geenu+aVsOaNruOAgm1pZ3JhdGVfdm1hX3NldHVwKCnjgIFtaWdyYXRlX3ZtYV9wYWdlcygpIOWSjFxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3QtMjIwLW1pZ3JhdGVfdm1hX2ZpbmFsaXplKCkg5Ye95pWw5peo5Zyo5L2/6amx5Yqo56iL5bqP5pu05piT5LqO57yW5YaZ5bm26ZuG5Lit6Leo6amx5Yqo56iL5bqP55qE6YCa55So5Luj56CB44CCXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0PTI0Mz1kZXZtX21lbXVubWFwX3BhZ2VzKCkg5ZKMIGRldm1fcmVsZWFzZV9tZW1fcmVnaW9uKCkg5b2T6LWE5rqQ5Y+v5Lul57uR5a6a5YiwIGBgc3RydWN0IGRldmljZWBgLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdC0yOTctXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdDoyOTg6NC4gYGBtaWdyYXRlX3ZtYV9wYWdlcygpYGBcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0LTI5OS1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmM9NTEzPXN0YXRpYyBpbnQgX19rdm1wcGNfc3ZtX3BhZ2Vfb3V0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYy01NzgtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYzo1Nzk6XFx0bWlncmF0ZV92bWFfcGFnZXMoXFx1MDAyNm1pZyk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYy01ODAtXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jPTc0MD1zdGF0aWMgaW50IGt2bXBwY19zdm1fcGFnZV9pbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmMtNzg3LVxcdCptaWcuZHN0ID0gbWlncmF0ZV9wZm4ocGFnZV90b19wZm4oZHBhZ2UpKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jOjc4ODpcXHRtaWdyYXRlX3ZtYV9wYWdlcyhcXHUwMDI2bWlnKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jLTc4OS1vdXRfZmluYWxpemU6XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jPTM5ND1zdm1fbWlncmF0ZV92bWFfdG9fdnJhbShzdHJ1Y3Qga2ZkX25vZGUgKm5vZGUsIHN0cnVjdCBzdm1fcmFuZ2UgKnByYW5nZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmMtNDUxLVxcdHIgPSBzdm1fbWlncmF0ZV9jb3B5X3RvX3ZyYW0obm9kZSwgcHJhbmdlLCBcXHUwMDI2bWlncmF0ZSwgXFx1MDAyNm1mZW5jZSwgc2NyYXRjaCwgdHRtX3Jlc19vZmZzZXQpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmM6NDUyOlxcdG1pZ3JhdGVfdm1hX3BhZ2VzKFxcdTAwMjZtaWdyYXRlKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jLTQ1My1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmM9NjkzPXN2bV9taWdyYXRlX3ZtYV90b19yYW0oc3RydWN0IGtmZF9ub2RlICpub2RlLCBzdHJ1Y3Qgc3ZtX3JhbmdlICpwcmFuZ2UsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jLTc1NS1cXHRcXHRcXHRcXHQgICAgc2NyYXRjaCwgbnBhZ2VzKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jOjc1NjpcXHRtaWdyYXRlX3ZtYV9wYWdlcyhcXHUwMDI2bWlncmF0ZSk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYy03NTctXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYz02MTY9aW50IGRybV9wYWdlbWFwX21pZ3JhdGVfdG9fZGV2bWVtKHN0cnVjdCBkcm1fcGFnZW1hcF9kZXZtZW0gKmRldm1lbV9hbGxvY2F0aW9uLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmMtODEyLWVycl9hYm9ydGVkX21pZ3JhdGlvbjpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYzo4MTM6XFx0bWlncmF0ZV92bWFfcGFnZXMoXFx1MDAyNm1pZ3JhdGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jLTgxNC1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jPTEyMTE9c3RhdGljIGludCBfX2RybV9wYWdlbWFwX21pZ3JhdGVfdG9fcmFtKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdmFzLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmMtMTMwNC1cXHRcXHRkcm1fcGFnZW1hcF9taWdyYXRpb25fdW5sb2NrX3B1dF9wYWdlcyhucGFnZXMsIG1pZ3JhdGUuZHN0KTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYzoxMzA1OlxcdG1pZ3JhdGVfdm1hX3BhZ2VzKFxcdTAwMjZtaWdyYXRlKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy0xMzA2LVxcdG1pZ3JhdGVfdm1hX2ZpbmFsaXplKFxcdTAwMjZtaWdyYXRlKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jPTE4Mz1zdGF0aWMgdm1fZmF1bHRfdCBub3V2ZWF1X2RtZW1fbWlncmF0ZV90b19yYW0oc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy0yNjctXFx0bm91dmVhdV9mZW5jZV9uZXcoXFx1MDAyNmZlbmNlLCBkbWVtLVxcdTAwM2VtaWdyYXRlLmNoYW4pO1xcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jOjI2ODpcXHRtaWdyYXRlX3ZtYV9wYWdlcyhcXHUwMDI2YXJncyk7XFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMtMjY5LVxcdG5vdXZlYXVfZG1lbV9mZW5jZV9kb25lKFxcdTAwMjZmZW5jZSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYz03ODM9c3RhdGljIHZvaWQgbm91dmVhdV9kbWVtX21pZ3JhdGVfY2h1bmsoc3RydWN0IG5vdXZlYXVfZHJtICpkcm0sXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy04MDktXFx0bm91dmVhdV9mZW5jZV9uZXcoXFx1MDAyNmZlbmNlLCBkcm0tXFx1MDAzZWRtZW0tXFx1MDAzZW1pZ3JhdGUuY2hhbik7XFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM6ODEwOlxcdG1pZ3JhdGVfdm1hX3BhZ2VzKGFyZ3MpO1xcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jLTgxMS1cXHRub3V2ZWF1X2RtZW1fZmVuY2VfZG9uZShcXHUwMDI2ZmVuY2UpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg9MTU4PXN0cnVjdCBtaWdyYXRlX3ZtYSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaC0xNjUtXFx0ICogbWlncmF0ZV92bWFfc2V0dXAoKSwgYW5kIG11c3Qgbm90IGNoYW5nZSB0aGUgZHN0IGFycmF5IGFmdGVyXFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg6MTY2OlxcdCAqIG1pZ3JhdGVfdm1hX3BhZ2VzKCkgcmV0dXJucy5cXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaC0xNjctXFx0ICovXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaD0xOTM9aW50IG1pZ3JhdGVfdm1hX3NldHVwKHN0cnVjdCBtaWdyYXRlX3ZtYSAqYXJncyk7XFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg6MTk0OnZvaWQgbWlncmF0ZV92bWFfcGFnZXMoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlKTtcXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaC0xOTUtdm9pZCBtaWdyYXRlX3ZtYV9maW5hbGl6ZShzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpO1xcbi0tXFxubGliL3Rlc3RfaG1tLmM9MTEyMD1zdGF0aWMgaW50IGRtaXJyb3JfbWlncmF0ZV90b19zeXN0ZW0oc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXFxuLS1cXG5saWIvdGVzdF9obW0uYy0xMTc1LVxcbmxpYi90ZXN0X2htbS5jOjExNzY6XFx0XFx0bWlncmF0ZV92bWFfcGFnZXMoXFx1MDAyNmFyZ3MpO1xcbmxpYi90ZXN0X2htbS5jLTExNzctXFx0XFx0Y21kLVxcdTAwM2VjcGFnZXMgKz0gZG1pcnJvcl9zdWNjZXNzZnVsX21pZ3JhdGVkX3BhZ2VzKFxcdTAwMjZhcmdzKTtcXG4tLVxcbmxpYi90ZXN0X2htbS5jPTExODk9c3RhdGljIGludCBkbWlycm9yX21pZ3JhdGVfdG9fZGV2aWNlKHN0cnVjdCBkbWlycm9yICpkbWlycm9yLFxcbi0tXFxubGliL3Rlc3RfaG1tLmMtMTI0OC1cXHRcXHRkbWlycm9yX21pZ3JhdGVfYWxsb2NfYW5kX2NvcHkoXFx1MDAyNmFyZ3MsIGRtaXJyb3IpO1xcbmxpYi90ZXN0X2htbS5jOjEyNDk6XFx0XFx0bWlncmF0ZV92bWFfcGFnZXMoXFx1MDAyNmFyZ3MpO1xcbmxpYi90ZXN0X2htbS5jLTEyNTAtXFx0XFx0ZG1pcnJvcl9taWdyYXRlX2ZpbmFsaXplX2FuZF9tYXAoXFx1MDAyNmFyZ3MsIGRtaXJyb3IpO1xcbi0tXFxubGliL3Rlc3RfaG1tLmM9MTY1Mz1zdGF0aWMgdm1fZmF1bHRfdCBkbWlycm9yX2Rldm1lbV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTE3MTgtXFx0fVxcbmxpYi90ZXN0X2htbS5jOjE3MTk6XFx0bWlncmF0ZV92bWFfcGFnZXMoXFx1MDAyNmFyZ3MpO1xcbmxpYi90ZXN0X2htbS5jLTE3MjAtXFx0LypcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM9NjU5PXN0YXRpYyB2b2lkIG1pZ3JhdGVfdm1hX3VubWFwKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSlcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNjk5LSAqIHRoaXMgY2FuIHN0aWxsIGZhaWwsIGFuZCB0aHVzIGluc2lkZSB0aGUgZGV2aWNlIGRyaXZlciB5b3UgbXVzdCBjaGVjayBpZiB0aGVcXG5tbS9taWdyYXRlX2RldmljZS5jOjcwMDogKiBtaWdyYXRpb24gd2FzIHN1Y2Nlc3NmdWwgZm9yIHRob3NlIGVudHJpZXMgYWZ0ZXIgY2FsbGluZyBtaWdyYXRlX3ZtYV9wYWdlcygpLFxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzAxLSAqIGp1c3QgbGlrZSBmb3IgcmVndWxhciBtaWdyYXRpb24uXFxubW0vbWlncmF0ZV9kZXZpY2UuYy03MDItICpcXG5tbS9taWdyYXRlX2RldmljZS5jOjcwMzogKiBBZnRlciB0aGF0LCB0aGUgY2FsbGVycyBtdXN0IGNhbGwgbWlncmF0ZV92bWFfcGFnZXMoKSB0byBnbyBvdmVyIGVhY2ggZW50cnlcXG5tbS9taWdyYXRlX2RldmljZS5jLTcwNC0gKiBpbiB0aGUgc3JjIGFycmF5IHRoYXQgaGFzIHRoZSBNSUdSQVRFX1BGTl9WQUxJRCBhbmQgTUlHUkFURV9QRk5fTUlHUkFURSBmbGFnXFxubW0vbWlncmF0ZV9kZXZpY2UuYy03MDUtICogc2V0LiBJZiB0aGUgY29ycmVzcG9uZGluZyBlbnRyeSBpbiBkc3QgYXJyYXkgaGFzIE1JR1JBVEVfUEZOX1ZBTElEIGZsYWcgc2V0LFxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6NzA2OiAqIHRoZW4gbWlncmF0ZV92bWFfcGFnZXMoKSB0byBtaWdyYXRlIHN0cnVjdCBwYWdlIGluZm9ybWF0aW9uIGZyb20gdGhlIHNvdXJjZVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzA3LSAqIHN0cnVjdCBwYWdlIHRvIHRoZSBkZXN0aW5hdGlvbiBzdHJ1Y3QgcGFnZS4gIElmIGl0IGZhaWxzIHRvIG1pZ3JhdGUgdGhlXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTcxNC0gKlxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6NzE1OiAqIE9uY2UgbWlncmF0ZV92bWFfcGFnZXMoKSByZXR1cm5zIHRoZSBjYWxsZXIgbWF5IGluc3BlY3Qgd2hpY2ggcGFnZXMgd2VyZVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzE2LSAqIHN1Y2Nlc3NmdWxseSBtaWdyYXRlZCwgYW5kIHdoaWNoIHdlcmUgbm90LiAgU3VjY2Vzc2Z1bGx5IG1pZ3JhdGVkIHBhZ2VzIHdpbGxcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzE4LSAqXFxubW0vbWlncmF0ZV9kZXZpY2UuYzo3MTk6ICogSXQgaXMgc2FmZSB0byB1cGRhdGUgZGV2aWNlIHBhZ2UgdGFibGUgYWZ0ZXIgbWlncmF0ZV92bWFfcGFnZXMoKSBiZWNhdXNlXFxubW0vbWlncmF0ZV9kZXZpY2UuYy03MjAtICogYm90aCBkZXN0aW5hdGlvbiBhbmQgc291cmNlIHBhZ2UgYXJlIHN0aWxsIGxvY2tlZCwgYW5kIHRoZSBtbWFwX2xvY2sgaXMgaGVsZFxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMDk4PXN0YXRpYyB2b2lkIF9fbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTQtICpcXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNTU6ICogRXF1aXZhbGVudCB0byBtaWdyYXRlX3ZtYV9wYWdlcygpLiBUaGlzIGlzIGNhbGxlZCB0byBtaWdyYXRlIHN0cnVjdCBwYWdlXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjU2LSAqIG1ldGEtZGF0YSBmcm9tIHNvdXJjZSBzdHJ1Y3QgcGFnZSB0byBkZXN0aW5hdGlvbi5cXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTI2Mz1FWFBPUlRfU1lNQk9MKG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKTtcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2NS0vKipcXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNjY6ICogbWlncmF0ZV92bWFfcGFnZXMoKSAtIG1pZ3JhdGUgbWV0YS1kYXRhIGZyb20gc3JjIHBhZ2UgdG8gZHN0IHBhZ2VcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjctICogQG1pZ3JhdGU6IG1pZ3JhdGUgc3RydWN0IGNvbnRhaW5pbmcgYWxsIG1pZ3JhdGlvbiBpbmZvcm1hdGlvblxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjcyLSAqL1xcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI3Mzp2b2lkIG1pZ3JhdGVfdm1hX3BhZ2VzKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSlcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzQte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzowODoyNC41NzQzMTE1OTFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA5ODUzNDE4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTWVtb3J5IE1pZ3JhdGlvbiBGdW5jdGlvbiBVc2FnZSoqXG5cbk9rYXksIHNvIEknbSBzZWVpbmcgdGhhdCB0aGUgZnVuY3Rpb25zIGBtaWdyYXRlX3ZtYV9wYWdlc2AgYW5kIGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYXJlIHV0aWxpemVkIHdpdGhpbiBzZXZlcmFsIGRpc3RpbmN0IHBhcnRzIG9mIHRoZSBrZXJuZWwuIFNwZWNpZmljYWxseSwgdGhleSdyZSBlbXBsb3llZCBpbiBgbGliL3Rlc3RfaG1tLmNgLCBgZHJpdmVycy9ncHUvZHJtL25vdXZlYXVgLCBgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmRgLCBgZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmNgLCBhbmQgYGFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmNgLiBUaGF0J3MgcXVpdGUgYSBzcHJlYWQuIE5vdywgSSBrbm93IGBsaWIvdGVzdF9obW0uY2AgaXMgdGhlIHRlc3QgbW9kdWxlIGZvciBIZXRlcm9nZW5lb3VzIE1lbW9yeSBNYW5hZ2VtZW50LCBITU0uIEl0IHNlZW1zIGxpa2UgdGhlc2UgbWlncmF0aW9uIGZ1bmN0aW9ucyBhcmUgZnVuZGFtZW50YWwgdG8gSE1NJ3Mgb3BlcmF0aW9uIGFjcm9zcyBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlcyBhbmQgZGV2aWNlIGRyaXZlcnMsIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgaW50ZWdyYXRpb24gcGF0aCBmb3IgZWFjaCBpbXBsZW1lbnRhdGlvbi4gVGhlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYHRlc3RfaG1tYCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuIEkgbmVlZCB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFzc29jaWF0ZWQgd2l0aCBgbGliL3Rlc3RfaG1tLmNgIHRvIHVuZGVyc3RhbmQgd2hlbiB0aGlzIHRlc3RpbmcgbW9kdWxlIGlzIGluY2x1ZGVkIG9yIHdoYXQgY29uZGl0aW9ucyB0cmlnZ2VyIGl0cyBpbmNsdXNpb24uIFRoaXMgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIGJyb2FkZXIgaW1wYWN0IGFuZCB1c2FnZSBvZiB0aGVzZSBjb3JlIG1pZ3JhdGlvbiBmdW5jdGlvbnMgd2l0aGluIHRoZSBrZXJuZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg5ODcsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjI5LjY3Mjg0ODNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwOTI5NDkxOCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGVzdF9obW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL0tjb25maWcuZGVidWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjI5Ljc4MjE1MjYzOFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODk3MjMwOTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYHRlc3RfaG1tYCBTb3VyY2UqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgY29uZmlndXJhdGlvbiBvciBidWlsZCBwcm9jZXNzIGZvciBgdGVzdF9obW1gLiBHaXZlbiB0aGF0IGl0J3MgYSB0ZXN0LCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBsb29rIHdpdGhpbiB0aGUgY29uZmlndXJhdGlvbiBhbmQgYnVpbGQgc3lzdGVtIGZpbGVzLiBUaGUgb2J2aW91cyBzdXNwZWN0cyBhcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiAoYGxpYi9LY29uZmlnYCkgYW5kIHRoZSBtYWluIGBNYWtlZmlsZWAgKGxpa2VseSBpbiBgbGliL01ha2VmaWxlYCkuIFRoZSBLY29uZmlnIGZpbGUgc2hvdWxkIGRlZmluZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBlbmFibGUvZGlzYWJsZSBvcHRpb25zLCB3aGlsZSB0aGUgTWFrZWZpbGUgd291bGQgY29udGFpbiB0aGUgYnVpbGQgcnVsZXMgYW5kIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzLiBJJ2xsIHN0YXJ0IHdpdGggdGhvc2UgdHdvIGxvY2F0aW9ucy4gSWYgaXTigJlzIGEgbW9kdWxlIHRoZW4gYGxpYi9tb2R1bGVzL2AgaXMgYW5vdGhlciBwb3NzaWJsZSBwbGFjZSB0byBzZWFyY2guIEZyb20gdGhlcmUgSSdsbCBkcmlsbCBkZWVwZXIgYXMgbmVlZGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDE2LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MDg6MzMuNjc5Mzg2MjMxWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTUyMjk0MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGVzdF9obW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImxpYi9NYWtlZmlsZT0xMDI9b2JqLSQoQ09ORklHX1RFU1RfTE9DS1VQKSArPSB0ZXN0X2xvY2t1cC5vXFxubGliL01ha2VmaWxlOjEwMzpvYmotJChDT05GSUdfVEVTVF9ITU0pICs9IHRlc3RfaG1tLm9cXG5saWIvTWFrZWZpbGUtMTA0LW9iai0kKENPTkZJR19URVNUX0ZSRUVfUEFHRVMpICs9IHRlc3RfZnJlZV9wYWdlcy5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjMzLjc5NDYyNzIyOFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQ3NjE3NTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFraW5nIHRoZSBwZXJzcGVjdGl2ZSBvZiBzb21lb25lIGtub3dsZWRnZWFibGUgaW4gY29uZmlndXJhdGlvbiBzeXN0ZW1zOlxuXG4qKkNoZWNraW5nIHRoZSBEZWJ1ZyBITU0gQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBsZXQncyBkaXZlIHN0cmFpZ2h0IGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGVyZSdzIHRoZSBjb250cm9sIGZvciB0aGlzIHRlc3QgSE1NIHNldHRpbmc/IEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IGl0cyBjb25maWd1cmF0aW9uIG9wdGlvbnMuXCIgU28sIHRoZSBmaXJzdCB0aGluZyBJJ20gZ29pbmcgdG8gZG8gaXMgemVybyBpbiBvbiBgQ09ORklHX1RFU1RfSE1NYCB3aXRoaW4gdGhlIGBsaWIvS2NvbmZpZy5kZWJ1Z2AgZmlsZS4gVGhhdCdzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IOKAkyB0aGUgYGRlYnVnYCBzdWJkaXJlY3Rvcnkgb2Z0ZW4gaG91c2VzIHNldHRpbmdzIHJlbGF0ZWQgdG8gZGVidWdnaW5nIGFuZCBleHBlcmltZW50YWwgZmVhdHVyZXMsIG1ha2luZyBpdCBhIGxpa2VseSBsb2NhdGlvbiBmb3IgYSBITU0gdGVzdCBjb25maWd1cmF0aW9uLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIHN0YW5kYXJkIGBjb25maWdgIGVudHJ5LCBhbG9uZyB3aXRoIGl0cyBhc3NvY2lhdGVkIGRlcGVuZGVuY2llcywgZGVzY3JpcHRpb25zLCBhbmQgcG90ZW50aWFsbHkgZGVmYXVsdCB2YWx1ZXMuIEknbSBhbHNvIGFudGljaXBhdGluZyB0aGF0IGl0IGxpa2VseSBsaW5rcyB0byB0aGUgc3BlY2lmaWMgY29kZSBvciB0ZXN0IHN1aXRlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIEhNTSB0ZXN0aW5nLCB3aGljaCBpcyB3aGF0IEknbSBtb3N0IGludGVyZXN0ZWQgaW4uIFRoaXMgaW5pdGlhbCBjaGVjayB3aWxsIGdpdmUgbWUgdGhlIGNvbnRleHR1YWwgaW5mb3JtYXRpb24gbmVjZXNzYXJ5IHRvIGV2YWx1YXRlIHdoYXQgdGhpcyB0ZXN0IHNldHRpbmcgdHJ1bHkgZG9lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTcyMCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjM3LjU0MjI0ODU3NFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI4ODQ4NzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBURVNUX0hNTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJsaWIvS2NvbmZpZy5kZWJ1Z1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvS2NvbmZpZy5kZWJ1Zz0zMzQ2PWNvbmZpZyBURVNUX01FTUlOSVRcXG4tLVxcbmxpYi9LY29uZmlnLmRlYnVnLTMzNTMtXFxubGliL0tjb25maWcuZGVidWc6MzM1NDpjb25maWcgVEVTVF9ITU1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzU1LVxcdHRyaXN0YXRlIFxcXCJUZXN0IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjM3LjY3MTEwNjA0MVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjM2OTc2MTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBEZXBlbmRlbmNpZXMgZm9yIFRFU1RfSE1NKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBvZiBgVEVTVF9ITU1gLiBUaGlzIGxpa2VseSBtZWFucyBJJ2xsIGJlIGxvb2tpbmcgZm9yIGxpYnJhcmllcywgbW9kdWxlcywgb3RoZXIgdGVzdHMsIG9yIGRhdGEgZmlsZXMgdGhhdCBgVEVTVF9ITU1gIHJlcXVpcmVzIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gSSdsbCBuZWVkIHRvIGlkZW50aWZ5IG5vdCBvbmx5IHRoZSBkaXJlY3QgZGVwZW5kZW5jaWVzLCBidXQgYWxzbyBhbnkgaW5kaXJlY3Qgb25lcyDigJMgdGhpbmdzIHRoYXQgYFRFU1RfSE1NYCBtaWdodCBjYWxsIHRoYXQsIGluIHR1cm4sIGhhdmUgdGhlaXIgb3duIHJlcXVpcmVtZW50cy4gVGhpcyBpcyBhIGNvbW1vbiBhbmQgaW1wb3J0YW50IGZpcnN0IHN0ZXAgd2hlbiBkZWJ1Z2dpbmcsIHJlZmFjdG9yaW5nLCBvciBzaW1wbHkgdW5kZXJzdGFuZGluZyBhIGNvZGViYXNlLiBBIHN0cm9uZyB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkZXBlbmRlbmN5IGdyYXBoIGlzIG9mdGVuIGNyaXRpY2FsIGZvciBlZmZpY2llbnQgdHJvdWJsZXNob290aW5nIG9yIG1vZGlmaWNhdGlvbiBkb3duIHRoZSBsaW5lLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGNvbmZpZ3VyYXRpb24gZmlsZXMsIGltcG9ydCBzdGF0ZW1lbnRzLCBvciBhbnkgb3RoZXIgY2x1ZXMgdG8gYnVpbGQgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIGl0cyBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwNzYsIk91dHB1dFRva2VucyI6NjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzowODo0MS45MDgwODU5ODhaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5Mjg0ODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBURVNUX0hNTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJsaWIvS2NvbmZpZy5kZWJ1Z1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvS2NvbmZpZy5kZWJ1Zz0zMzQ2PWNvbmZpZyBURVNUX01FTUlOSVRcXG4tLVxcbmxpYi9LY29uZmlnLmRlYnVnLTMzNTMtXFxubGliL0tjb25maWcuZGVidWc6MzM1NDpjb25maWcgVEVTVF9ITU1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzU1LVxcdHRyaXN0YXRlIFxcXCJUZXN0IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjQxLjk5NzQ5Mjk3NloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDU1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibGliL0tjb25maWcuZGVidWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzM1NCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzM1NDpcXHRjb25maWcgVEVTVF9ITU1cXG4zMzU1OlxcdFxcdHRyaXN0YXRlIFxcXCJUZXN0IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudClcXFwiXFxuMzM1NjpcXHRcXHRkZXBlbmRzIG9uIFRSQU5TUEFSRU5UX0hVR0VQQUdFXFxuMzM1NzpcXHRcXHRkZXBlbmRzIG9uIERFVklDRV9QUklWQVRFXFxuMzM1ODpcXHRcXHRzZWxlY3QgSE1NX01JUlJPUlxcbjMzNTk6XFx0XFx0c2VsZWN0IE1NVV9OT1RJRklFUlxcbjMzNjA6XFx0XFx0aGVscFxcbjMzNjE6XFx0XFx0ICBUaGlzIGlzIGEgcHNldWRvIGRldmljZSBkcml2ZXIgc29sZWx5IGZvciB0ZXN0aW5nIEhNTS5cXG4zMzYyOlxcdFxcdCAgU2F5IE0gaGVyZSBpZiB5b3Ugd2FudCB0byBidWlsZCB0aGUgSE1NIHRlc3QgbW9kdWxlLlxcbjMzNjM6XFx0XFx0ICBEb2luZyBzbyB3aWxsIGFsbG93IHlvdSB0byBydW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdC92bS9obW0tdGVzdHMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjQxLjk5NzkwMjE3NloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODA5MjMwODc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGlubmVyIG1vbm9sb2d1ZTpcblxuKipEZXBlbmRlbmN5IERlZXAgRGl2ZTogVEVTVF9ITU0gYW5kIERFVklDRV9QUklWQVRFKipcblxuQWxyaWdodCwgc28gYFRFU1RfSE1NYCBoYXMgYSBjb3VwbGUgb2YgZGVwZW5kZW5jaWVzLCBuYW1lbHkgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCBhbmQgYERFVklDRV9QUklWQVRFYC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgdGhlIGNvbm5lY3Rpb24gd2l0aCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIG1ha2VzIHNlbnNlOyBwZXJmb3JtYW5jZSBvZnRlbiBoaW5nZXMgb24gbWVtb3J5IG1hbmFnZW1lbnQgYW5kIHRoYXQncyBhIGNvbW1vbiBwYWlyaW5nLiBCdXQgYERFVklDRV9QUklWQVRFYC4uLiB0aGF0J3MgdGhlIG1vcmUgaW50cmlndWluZyBvbmUgaW4gdGhpcyBjYXNlLiBMZXQncyBkaWcgaW50byB0aGF0IGJpdCBmaXJzdCwgc2luY2UgaXQncyBsZXNzIG9idmlvdXMgd2h5IHRoYXQgaXMgYSBkZXBlbmRlbmN5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHJvbGUgYERFVklDRV9QUklWQVRFYCBwbGF5cyBoZXJlIGFuZCB3aHkgaXRzIHByZXNlbmNlIG9yIGFic2VuY2Ugd291bGQgaGF2ZSBhIGRpcmVjdCBpbXBhY3Qgb24gdGhlIGV4ZWN1dGlvbiBvciB0ZXN0YWJpbGl0eSBvZiBgVEVTVF9ITU1gLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24gb3IgdGhlIGNvZGUgZGlyZWN0bHkgdG8gY29uZmlybS4gVGhpcydsbCByZXF1aXJlIG1lIHRvIGludmVzdGlnYXRlIHRoZSBkZXRhaWxzIG9mIGBERVZJQ0VfUFJJVkFURWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjA5LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MDg6NDUuODA3MTM3MDJaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzNDE4MTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBERVZJQ0VfUFJJVkFURVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9MTI2ND1jb25maWcgR0VUX0ZSRUVfUkVHSU9OXFxuLS1cXG5tbS9LY29uZmlnLTEyNjYtXFxubW0vS2NvbmZpZzoxMjY3OmNvbmZpZyBERVZJQ0VfUFJJVkFURVxcbm1tL0tjb25maWctMTI2OC1cXHRib29sIFxcXCJVbmFkZHJlc3NhYmxlIGRldmljZSBtZW1vcnkgKEdQVSBtZW1vcnksIC4uLilcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjQ1LjkwMDU2MjM1OVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTA4NTUxNzQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBEZXBlbmRlbmNpZXMgZm9yIGBERVZJQ0VfUFJJVkFURWAqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJPa2F5LCBgREVWSUNFX1BSSVZBVEVgIOKAkyB3aGF0IGFyZSBpdHMgZGVwZW5kZW5jaWVzP1wiIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgd2l0aCBvdGhlciBjb21wb25lbnRzIGluIHRoZSBzeXN0ZW0uIEknbSB0aGlua2luZyBhYm91dCB0aGUgcG90ZW50aWFsIHJpcHBsZSBlZmZlY3RzIG9mIGFueSBjaGFuZ2VzIHRvLCBvciBpbnRlcmFjdGlvbnMgd2l0aCwgdGhhdCBwYXJ0aWN1bGFyIHNlY3Rpb24uIElzIGl0IGEgY29yZSBtb2R1bGUsIG9yIHNvbWV0aGluZyBtb3JlIHBlcmlwaGVyYWw/IEFyZSB3ZSB0YWxraW5nIGFib3V0IGxvdy1sZXZlbCBoYXJkd2FyZSBhY2Nlc3MsIG9yIHNvbWV0aGluZyBoaWdoZXIgdXAgdGhlIHN0YWNrP1xuXG5JJ2xsIG5lZWQgdG8gZ28gYmV5b25kIHN1cmZhY2UtbGV2ZWwgYXNzdW1wdGlvbnMuIEknbSBydW5uaW5nIHRocm91Z2ggbXkgbWVudGFsIGNoZWNrbGlzdDogSSBuZWVkIHRvIGNvbnNpZGVyIHRoaW5ncyBsaWtlOlxuXG4qICAgRG9lcyBpdCByZWx5IG9uIGFueSBzcGVjaWZpYyBrZXJuZWwgbW9kdWxlcywgZHJpdmVycywgb3IgZmlybXdhcmUgY29tcG9uZW50cz9cbiogICBBcmUgdGhlcmUgYW55IGNvbmZpZ3VyYXRpb24gZmlsZXMgb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRoYXQgZGlyZWN0bHkgaW1wYWN0IGl0cyBiZWhhdmlvcj9cbiogICBXaGF0IGFyZSB0aGUgc2VjdXJpdHkgaW1wbGljYXRpb25zIG9mIGl0cyBkZXBlbmRlbmNpZXM/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBpbmhlcmVudCBpbiB0aG9zZSByZWxhdGlvbnNoaXBzP1xuKiAgIEhvdyB0aWdodGx5IGNvdXBsZWQgaXMgaXQ/IElzIGl0IGVhc3kgdG8gaXNvbGF0ZSBhbmQgdGVzdCwgb3IgaXMgaXQgaGVhdmlseSBpbnRlZ3JhdGVkIGludG8gdGhlIHN5c3RlbT9cbiogICBJIGFsc28gbmVlZCB0byBjaGVjayB0aGUgYnVpbGQgcHJvY2VzcyB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBtYWtlZmlsZXMgb3Igc2NyaXB0cyByZWxhdGVkIHRvIGl0LlxuXG5JJ20gc3RhcnRpbmcgdG8gdmlzdWFsaXplIGEgZGVwZW5kZW5jeSBncmFwaCBpbiBteSBoZWFkLiBVbmRlcnN0YW5kaW5nIHRoZSBcIndoeVwiIGFuZCBcImhvd1wiIG9mIGVhY2ggY29ubmVjdGlvbiB3aWxsIGJlIGtleSB0byBtYWtpbmcgaW5mb3JtZWQgZGVjaXNpb25zLiBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmcgdGhyb3VnaCB0aGUgY29kZSwgZG9jcywgYW5kIGNvbmZpZ3VyYXRpb25zIHRvIG1hcCB0aGlzIGFsbCBvdXQuIExldCdzIHNlZSB3aGF0IHdlIGNhbiB1bmVhcnRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDk2NCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjQ5LjgwOTExODUzMloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTU3NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjY3LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjY3OlxcdGNvbmZpZyBERVZJQ0VfUFJJVkFURVxcbjEyNjg6XFx0XFx0Ym9vbCBcXFwiVW5hZGRyZXNzYWJsZSBkZXZpY2UgbWVtb3J5IChHUFUgbWVtb3J5LCAuLi4pXFxcIlxcbjEyNjk6XFx0XFx0ZGVwZW5kcyBvbiBaT05FX0RFVklDRVxcbjEyNzA6XFx0XFx0c2VsZWN0IEdFVF9GUkVFX1JFR0lPTlxcbjEyNzE6XFx0XFxuMTI3MjpcXHRcXHRoZWxwXFxuMTI3MzpcXHRcXHQgIEFsbG93cyBjcmVhdGlvbiBvZiBzdHJ1Y3QgcGFnZXMgdG8gcmVwcmVzZW50IHVuYWRkcmVzc2FibGUgZGV2aWNlXFxuMTI3NDpcXHRcXHQgIG1lbW9yeTsgaS5lLiwgbWVtb3J5IHRoYXQgaXMgb25seSBhY2Nlc3NpYmxlIGZyb20gdGhlIGRldmljZSAob3JcXG4xMjc1OlxcdFxcdCAgZ3JvdXAgb2YgZGV2aWNlcykuIFlvdSBsaWtlbHkgYWxzbyB3YW50IHRvIHNlbGVjdCBITU1fTUlSUk9SLlxcbjEyNzY6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjQ5LjgwOTMxNjY1MloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjUwMzI3OTI1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERldmljZSBQYWdlIE1pZ3JhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBJIHNlZSB0aGF0IGBURVNUX0hNTWAgaGFzIHNvbWUgc3BlY2lmaWMgZGVwZW5kZW5jeSByZXF1aXJlbWVudHMg4oCTIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAsIGBERVZJQ0VfUFJJVkFURWAsIGFuZCBgWk9ORV9ERVZJQ0VgLiAgVGhhdCBtYWtlcyBzZW5zZSBzaW5jZSBpdCdzIGEgdGVzdCBkcml2ZXIgZm9yIEhNTSwgc28gdmlydHVhbGl6YXRpb24gaXMgbGlrZWx5LiBBbmQgZnVydGhlciwgYERFVklDRV9NSUdSQVRJT05gIG5lZWRzIGJvdGggYE1JR1JBVElPTmAgYW5kIGBaT05FX0RFVklDRWAuICBNeSBmb2N1cyBpcyBkZWZpbml0ZWx5IG9uIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSB0ZXN0IGRyaXZlci5cblxuSSdtIHplcm9pbmcgaW4gb24gdGhlIGNoYW5nZXMgdG8gYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGluIGBtbS9taWdyYXRlX2RldmljZS5jYC4gIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBwYXRjaCBpcyBkb2luZyBzcGVjaWZpY2FsbHkuICBMZXQncyB3YWxrIHRocm91Z2ggdGhlIGFkZGVkIGNvZGUgYmxvY2suICBMb29rcyBsaWtlIGl0J3MgYWRkcmVzc2luZyBhbiBpc3N1ZSB3aGVuIHdlIGVuY291bnRlciBhIGBNSUdSQVRFX1BGTl9DT01QT1VORGAgb24gdGhlIGRlc3RpbmF0aW9uLCBidXQgbm90IHRoZSBzb3VyY2UsIGFuZCBhIHNpbWlsYXIgb3BlcmF0aW9uIHdoZXJlIHdlIGhhdmUgYE1JR1JBVEVfUEZOX01JR1JBVEVgIG9uIHRoZSBzb3VyY2UsIGJ1dCBgTUlHUkFURV9QRk5fQ09NUE9VTkRgIG9uIHRoZSBkZXN0aW5hdGlvbiwgYW5kIHRoYXQgd2UgaGF2ZSBhIGNvbXBvdW5kIGZvbGlvIG1pZ3JhdGlvbi5cblxuVGhlIGZpcnN0IGNoYW5nZSwgaXQgc2VlbXMgbGlrZSwgaXMgcmVzZXR0aW5nIGBucmAgdG8gMSBhZnRlciBkZWFsaW5nIHdpdGggdGhlIGFmdGVyLXNwbGl0IGZvbGlvLiBJJ20gYXNzdW1pbmcgdG8gb25seSBwcm9jZXNzIHRoZSBmaXJzdCBmb2xpbyBhZnRlciB0aGUgc3BsaXQuIFRoZSBzZWNvbmQgY29kZSBibG9jayBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlIHRoZSBmb2xpbyBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIHN3YXAgY2FjaGUgYnkgYGZvbGlvX2ZyZWVfc3dhcCgpYCwgc28gaXQgbmVlZHMgdG8gcmVmcmVzaCB0aGUgbWFwcGluZyBiZWZvcmUgbWlncmF0aW9uLiBUaGUgYGZvbGlvX21hcHBpbmcoZm9saW8pYCBjYWxsIGlzIGludGVyZXN0aW5nIGhlcmUsIG1ha2luZyBzdXJlIHdlIGhhdmUgdGhlIGNvcnJlY3QgbWFwcGluZy5cblxuVGhpcyBtYWtlcyBzZW5zZTsgZW5zdXJpbmcgbWVtb3J5IG1hbmFnZW1lbnQgaXMgY29ycmVjdCBpbiB2YXJpb3VzIG1pZ3JhdGlvbiBzY2VuYXJpb3MgaXMgYWx3YXlzIGNvbXBsZXgsIGVzcGVjaWFsbHkgd2l0aCBjb21wb3VuZCBwYWdlcyBhbmQgc3dhcC4gVGhpcyBtZWFucyB0aGVzZSBtb2RpZmljYXRpb25zIGFyZSBwcm9iYWJseSBmdW5jdGlvbmFsLCBhbmQgYWNjZXNzaWJsZSB0aHJvdWdoIGBURVNUX0hNTWAuXG5cbk5vdywgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBmdXp6aW5nIGVudHJ5IHBvaW50cy4gSSBhbHJlYWR5IGtub3cgdGhhdCBgbWlncmF0ZV92bWFfcGFnZXNgIGFuZCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFyZSB0aGUgY3J1Y2lhbCBvbmVzLiAgSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBgbGliL3Rlc3RfaG1tLmNgIHRvIHNlZSBwcmVjaXNlbHkgKmhvdyogdGhlc2UgZnVuY3Rpb25zIGFyZSBleHBvc2VkIHRvIHVzZXJzcGFjZS4gVGhhdCB3aWxsIGJlIHRoZSBrZXkgdG8gZGVzaWduaW5nIGVmZmVjdGl2ZSBmdXp6aW5nIHRhcmdldHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDg3LCJPdXRwdXRUb2tlbnMiOjcwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MDk6MDIuMzEyNjAxOTI0WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTg5NzA1NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG1pcnJvcl9taWdyYXRlX3RvX3N5c3RlbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJsaWIvdGVzdF9obW0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvdGVzdF9obW0uYz0xMTA3PWRtaXJyb3Jfc3VjY2Vzc2Z1bF9taWdyYXRlZF9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXFxuLS1cXG5saWIvdGVzdF9obW0uYy0xMTE5LVxcbmxpYi90ZXN0X2htbS5jOjExMjA6c3RhdGljIGludCBkbWlycm9yX21pZ3JhdGVfdG9fc3lzdGVtKHN0cnVjdCBkbWlycm9yICpkbWlycm9yLFxcbmxpYi90ZXN0X2htbS5jLTExMjEtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgaG1tX2RtaXJyb3JfY21kICpjbWQpXFxuLS1cXG5saWIvdGVzdF9obW0uYz0xNTEzPXN0YXRpYyBsb25nIGRtaXJyb3JfZm9wc191bmxvY2tlZF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTE1NTAtXFx0Y2FzZSBITU1fRE1JUlJPUl9NSUdSQVRFX1RPX1NZUzpcXG5saWIvdGVzdF9obW0uYzoxNTUxOlxcdFxcdHJldCA9IGRtaXJyb3JfbWlncmF0ZV90b19zeXN0ZW0oZG1pcnJvciwgXFx1MDAyNmNtZCk7XFxubGliL3Rlc3RfaG1tLmMtMTU1Mi1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MDk6MDIuODcxNTc2NDEzWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg2OTk3NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJsaWIvdGVzdF9obW0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvdGVzdF9obW0uYz0xMTIwPXN0YXRpYyBpbnQgZG1pcnJvcl9taWdyYXRlX3RvX3N5c3RlbShzdHJ1Y3QgZG1pcnJvciAqZG1pcnJvcixcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTExODgtXFxubGliL3Rlc3RfaG1tLmM6MTE4OTpzdGF0aWMgaW50IGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2Uoc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXFxubGliL3Rlc3RfaG1tLmMtMTE5MC1cXHRcXHRcXHRcXHRzdHJ1Y3QgaG1tX2RtaXJyb3JfY21kICpjbWQpXFxuLS1cXG5saWIvdGVzdF9obW0uYz0xNTEzPXN0YXRpYyBsb25nIGRtaXJyb3JfZm9wc191bmxvY2tlZF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTE1NDYtXFx0Y2FzZSBITU1fRE1JUlJPUl9NSUdSQVRFX1RPX0RFVjpcXG5saWIvdGVzdF9obW0uYzoxNTQ3OlxcdFxcdHJldCA9IGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2UoZG1pcnJvciwgXFx1MDAyNmNtZCk7XFxubGliL3Rlc3RfaG1tLmMtMTU0OC1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MDk6MDIuOTgwMjgxMjYxWiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3MDUzNjA3NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipEaXZpbmcgaW50byB0aGUgRGV2aWNlIE1pcnJvciBNaWdyYXRpb24qKlxuXG5SaWdodCwgc28gSSdtIHNlZWluZyB0aGF0IHRoZSBjb3JlIG9mIHRoaXMgbWlncmF0aW9uIHByb2Nlc3MsIHNwZWNpZmljYWxseSBtb3ZpbmcgZGF0YSB0byBhbmQgZnJvbSB0aGUgZGV2aWNlIG1pcnJvciwgaGluZ2VzIG9uIGEgY291cGxlIG9mIGtleSBmdW5jdGlvbnM6IGBkbWlycm9yX21pZ3JhdGVfdG9fc3lzdGVtYCBhbmQgYGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2VgLiBUaGVzZSBhcmUgdHJpZ2dlcmVkIHZpYSBgaW9jdGxgIGNhbGxzIG9uIHRoZSBgL2Rldi9obW1fZG1pcnJvcipgIGRldmljZSBub2Rlcy4gTWFrZXMgc2Vuc2UsIHRoYXQncyBob3cgd2UnZCBleHBlY3QgdXNlcnNwYWNlIHRvIGludGVyYWN0IHdpdGggdGhlIGtlcm5lbCBtb2R1bGUuIEFuZCwgaW50ZXJuYWxseSwgdGhlc2UgZnVuY3Rpb25zICp0aGVtc2VsdmVzKiBjYWxsIGBtaWdyYXRlX3ZtYV9wYWdlc2AuIEFoYSwgdGhhdCBsaWtlbHkgaGFuZGxlcyB0aGUgVmlydHVhbCBNZW1vcnkgQXJlYSBwYWdlIG1pZ3JhdGlvbiwgdGhlIGNvcmUgbWVjaGFuaXNtIG9mIG1vdmluZyBwYWdlcyBhcm91bmQuXG5cbk5vdywgd2hlcmUgZG9lcyB0aGUgXCJkZXZpY2VcIiBzaWRlIGdldCBpbnZvbHZlZD8gSSBuZWVkIHRvIGRyaWxsIGRvd24gaW50byBgZG1pcnJvcl9kZXZpY2VfZXZpY3RfY2h1bmtgLiBNeSBodW5jaCBpcyB0aGlzIGlzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgYWN0dWFsbHkga2lja2luZyBvZmYgdGhlIGRldmljZSBzaWRlIHBhZ2UgbWlncmF0aW9uLiBBbmQganVzdCBhcyBJIHN1c3BlY3RlZCwgdGhpcyBmdW5jdGlvbiBhcHBlYXJzIHRvIGNhbGwgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYC4gVGhpcyBjb25maXJtcyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBwcm9jZXNzIGFzIGl0IHJlbGF0ZXMgdG8gZGV2aWNlIGNodW5rcy4gTm93IEkgaGF2ZSBhIGdvb2QgaGFuZGxlIG9uIHdoZXJlIHRvIGJlZ2luIGluc3BlY3RpbmcgdGhlIGRldGFpbHMgb2YgZWFjaCBtaWdyYXRpb24gZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyOTk0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA5OjEwLjY4NTY0NjQ1OFoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU0ODU3Njk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRtaXJyb3JfZGV2aWNlX2V2aWN0X2NodW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImxpYi90ZXN0X2htbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImxpYi90ZXN0X2htbS5jPTE2Mj1zdGF0aWMgaW50IGRtaXJyb3JfZm9wc19vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKVxcbi0tXFxubGliL3Rlc3RfaG1tLmMtMTg3LVxcbmxpYi90ZXN0X2htbS5jOjE4ODpzdGF0aWMgdm9pZCBkbWlycm9yX2RldmljZV9ldmljdF9jaHVuayhzdHJ1Y3QgZG1pcnJvcl9jaHVuayAqY2h1bmspXFxubGliL3Rlc3RfaG1tLmMtMTg5LXtcXG4tLVxcbmxpYi90ZXN0X2htbS5jPTIzOD1zdGF0aWMgaW50IGRtaXJyb3JfZm9wc19yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKVxcbi0tXFxubGliL3Rlc3RfaG1tLmMtMjUwLVxcbmxpYi90ZXN0X2htbS5jOjI1MTpcXHRcXHRcXHRkbWlycm9yX2RldmljZV9ldmljdF9jaHVuayhkZXZtZW0pO1xcbmxpYi90ZXN0X2htbS5jLTI1Mi1cXHRcXHR9XFxuLS1cXG5saWIvdGVzdF9obW0uYz0xNDgxPXN0YXRpYyB2b2lkIGRtaXJyb3JfZGV2aWNlX3JlbW92ZV9jaHVua3Moc3RydWN0IGRtaXJyb3JfZGV2aWNlICptZGV2aWNlKVxcbi0tXFxubGliL3Rlc3RfaG1tLmMtMTQ5NS1cXG5saWIvdGVzdF9obW0uYzoxNDk2OlxcdFxcdFxcdGRtaXJyb3JfZGV2aWNlX2V2aWN0X2NodW5rKGRldm1lbSk7XFxubGliL3Rlc3RfaG1tLmMtMTQ5Ny1cXHRcXHRcXHRtZW11bm1hcF9wYWdlcyhcXHUwMDI2ZGV2bWVtLVxcdTAwM2VwYWdlbWFwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MDk6MTAuODQwNTA5OTU1WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgyMTIxOTAwMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBEZXZpY2UgUGFnZSBNaWdyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdG8gZWZmZWN0aXZlbHkgZnV6eiBkZXZpY2UgcGFnZSBtaWdyYXRpb24sIGFuZCBpdCBzZWVtcyB0aGUga2V5IGZ1bmN0aW9uIGNhbGxlZCBkdXJpbmcgcmVsZWFzZSBhbmQgZGV2aWNlIHJlbW92YWwgaXMgYGRtaXJyb3JfZGV2aWNlX2V2aWN0X2NodW5rYC4gQnV0IHRoZSByZWFsIGVudHJ5IHBvaW50cyBmb3IgZnV6emluZywgdGhlIG9uZXMgZG9pbmcgdGhlIGhlYXZ5IGxpZnRpbmcsIGFyZSBkZWZpbml0ZWx5IGBtaWdyYXRlX3ZtYV9wYWdlc2AgYW5kIGBtaWdyYXRlX2RldmljZV9wYWdlc2AuIFNwZWNpZmljYWxseSwgSSdtIG5vdGluZyB0aGF0IHRoZSBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgZnVuY3Rpb24gaXMgdGhlIG9uZSB0aGF0IHdhcyByZWNlbnRseSBtb2RpZmllZC4gR29vZCwgbGV0J3MgY29uZmlybSB0aGF0IGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBpcyBpbmRlZWQgc3RhdGljIOKAkyBhbmQgeWVzLCBpdCdzIHN0YXRpYyB3aXRoaW4gYG1tL21pZ3JhdGVfZGV2aWNlLmNgLiBUaGF0IG1lYW5zIHdlIHNob3VsZCBjb25jZW50cmF0ZSBvdXIgZWZmb3J0cyBvbiBgbWlncmF0ZV92bWFfcGFnZXNgIGFuZCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgLlxuXG5Gb3IgYSBtb3JlIHRhcmdldGVkIGZ1enppbmcgc3RyYXRlZ3ksIGZvY3VzZWQgb24gYSB0ZXN0IG1vZHVsZSwgSSBjb3VsZCBhbHNvIGJyaW5nIGluIGBkbWlycm9yX21pZ3JhdGVfdG9fc3lzdGVtYCBhbmQgYGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2VgLCBidXQgYG1pZ3JhdGVfdm1hX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhcmUgdGhlIG1vcmUgY3JpdGljYWwgY29yZSBmdW5jdGlvbnMuIEFuZCBpdCBsb29rcyBsaWtlIGBtaWdyYXRlX3ZtYV9wYWdlc2AgYW5kIGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYXJlIGV4cG9ydGVkIHN5bWJvbHMsIHdoaWNoIGlzIGZhbnRhc3RpYyEgVGhhdCBtYWtlcyB0aGVtIGRpcmVjdGx5IGFjY2Vzc2libGUuXG5cbk5vdywgbGV0J3MgY29uc2lkZXIgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBXZSdsbCBuZWVkIGBDT05GSUdfREVWSUNFX01JR1JBVElPTmAsIHdoaWNoIGluIHR1cm4gZGVwZW5kcyBvbiBgQ09ORklHX01JR1JBVElPTmAgYW5kIGBDT05GSUdfWk9ORV9ERVZJQ0VgLiBUbyBtYWtlIHRoaXMgZWFzaWVyIHRvIHRyaWdnZXIgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgSSdsbCBkZWZpbml0ZWx5IHdhbnQgdG8gZW5hYmxlIGBDT05GSUdfVEVTVF9ITU1gLiBBbmQgdGhhdCBkZXBlbmRzIG9uIGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGFuZCBgQ09ORklHX0RFVklDRV9QUklWQVRFYC4gRmluYWxseSwgYENPTkZJR19ERVZJQ0VfUFJJVkFURWAgZGVwZW5kcyBvbiBgQ09ORklHX1pPTkVfREVWSUNFYC5cblxuU28sIHRoZSBjb21wbGV0ZSBsaXN0IG9mIGNvbmZpZyBvcHRpb25zIEknbGwgbmVlZCB0byBlbmFibGUgYXJlOlxuKiAgIGBERVZJQ0VfTUlHUkFUSU9OYFxuKiAgIGBNSUdSQVRJT05gXG4qICAgYFpPTkVfREVWSUNFYFxuKiAgIGBURVNUX0hNTWBcbiogICBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgXG4qICAgYERFVklDRV9QUklWQVRFYFxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBnbyBiYWNrIGFuZCBkb3VibGUtY2hlY2sgYG1tL21pZ3JhdGVfZGV2aWNlLmNgIG9uZSBtb3JlIHRpbWUgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55IG90aGVyIHBvdGVudGlhbCBlbnRyeSBwb2ludHMgZm9yIGZ1enppbmcuIEl0IGFsd2F5cyBwYXlzIHRvIGJlIHRob3JvdWdoIGluIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNjY2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA5OjE5LjA1MjcwNDM5M1oiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE2NDg1MDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fbWlncmF0ZV9kZXZpY2VfcGFnZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vbWlncmF0ZV9kZXZpY2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9taWdyYXRlX2RldmljZS5jPTk2NT1zdGF0aWMgdm9pZCBtaWdyYXRlX3ZtYV9pbnNlcnRfcGFnZShzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUsXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEwOTctXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMDk4OnN0YXRpYyB2b2lkIF9fbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMDk5LVxcdFxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLCB1bnNpZ25lZCBsb25nIG5wYWdlcyxcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTI1OD12b2lkIG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLCB1bnNpZ25lZCBsb25nICpkc3RfcGZucyxcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2MC17XFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjYxOlxcdF9fbWlncmF0ZV9kZXZpY2VfcGFnZXMoc3JjX3BmbnMsIGRzdF9wZm5zLCBucGFnZXMsIE5VTEwpO1xcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2Mi19XFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jPTEyNzM9dm9pZCBtaWdyYXRlX3ZtYV9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjc0LXtcXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNzU6XFx0X19taWdyYXRlX2RldmljZV9wYWdlcyhtaWdyYXRlLVxcdTAwM2VzcmMsIG1pZ3JhdGUtXFx1MDAzZWRzdCwgbWlncmF0ZS1cXHUwMDNlbnBhZ2VzLCBtaWdyYXRlKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzYtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzowOToxOS4xNjkxOTgxN1oiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjU3MDM2NjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIERldmljZSBQYWdlIE1pZ3JhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgemVyb2VkIGluIG9uIHRoZSBmYWN0IHRoYXQgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYCBhcmUgdGhlIG9ubHkgZnVuY3Rpb25zIGNhbGxpbmcgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgLCB3aGljaCBpcyBrZXkuIFRoYXQgbWFrZXMgdGhlbSBleGNlbGxlbnQgY2FuZGlkYXRlcyBmb3IgZm9jdXNlZCBhbmFseXNpcy4gVGhleSdyZSBib3RoIHB1YmxpYyBBUEkgZW50cnkgcG9pbnRzLCB3aGljaCBtZWFucyB0aGlzIGlzbid0IHNvbWUgb2JzY3VyZSBpbnRlcm5hbCBkZXRhaWw7IHRoZXkgYXJlIGNsZWFybHkgaW1wb3J0YW50LlxuXG5Ob3csIHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIGJ1ZyB3aXRoaW4gYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIHNwZWNpZmljYWxseS4gSXQgc2VlbXMgbGlrZSB0aGUgYnVnIGNlbnRlcnMgYXJvdW5kIHRoZSBjb3VudCB2YXJpYWJsZSAoYG5yYCkgbm90IGJlaW5nIHJlc2V0IGFmdGVyIGEgZm9saW8gc3BsaXQsIGFuZCB0aGUgbWFwcGluZyBub3QgYmVpbmcgcmVmcmVzaGVkIHBvc3QgYGZvbGlvX2ZyZWVfc3dhcCgpYC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGFuIGltcG9ydGFudCBhcmVhIHRvIGFkZHJlc3MsIGFuZCBpdCBoYXMgcG90ZW50aWFsIGZvciBzdWJ0bGUgbWVtb3J5IGNvcnJ1cHRpb24gb3IgcmVzb3VyY2UgbGVha3MsIG1ha2luZyBpdCBhIHN0cm9uZyB0YXJnZXQgZm9yIGZ1enppbmcuIERlZmluaXRlbHkgd29ydGggdGhlIGVmZm9ydC5cblxuTGV0IG1lIHRha2UgYSBsb29rIGF0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSBpbXBsaWNhdGVkOiBgREVWSUNFX01JR1JBVElPTmAsIGBURVNUX0hNTWAsIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAsIGBERVZJQ0VfUFJJVkFURWAsIGBaT05FX0RFVklDRWAsIGFuZCBgTUlHUkFUSU9OYC5cblxuR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgZml4LCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRob3NlIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgZGVwZW5kZW5jaWVzIHZlcnkgY2FyZWZ1bGx5LiBMYXJnZSBwYWdlcyBhbmQgbWlncmF0aW9uIG9mdGVuIGdldCBpbnRlcnR3aW5lZCBpbiBuYXN0eSB3YXlzLCBzbyB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlcmFjdGlvbnMgaXMgY3JpdGljYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0OTI1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA5OjI0LjQyNjI0MDQ3NloiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1NDQyNjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9ODQzPWNvbmZpZyBNTV9JRFxcbi0tXFxubW0vS2NvbmZpZy04NDUtXFxubW0vS2NvbmZpZzo4NDY6bWVudWNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRVxcbm1tL0tjb25maWctODQ3LVxcdGJvb2wgXFxcIlRyYW5zcGFyZW50IEh1Z2VwYWdlIFN1cHBvcnRcXFwiXFxuLS1cXG5tbS9LY29uZmlnPTg2ND1jaG9pY2VcXG4tLVxcbm1tL0tjb25maWctODY5LVxcbm1tL0tjb25maWc6ODcwOlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9BTFdBWVNcXG5tbS9LY29uZmlnLTg3MS1cXHRcXHRib29sIFxcXCJhbHdheXNcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTg3Ni1cXG5tbS9LY29uZmlnOjg3NzpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfTUFEVklTRVxcbm1tL0tjb25maWctODc4LVxcdFxcdGJvb2wgXFxcIm1hZHZpc2VcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTg4NS1cXG5tbS9LY29uZmlnOjg4NjpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfTkVWRVJcXG5tbS9LY29uZmlnLTg4Ny1cXHRcXHRib29sIFxcXCJuZXZlclxcXCJcXG4tLVxcbm1tL0tjb25maWc9ODkzPWNob2ljZVxcbi0tXFxubW0vS2NvbmZpZy05MDItXFxubW0vS2NvbmZpZzo5MDM6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfTkVWRVJcXG5tbS9LY29uZmlnLTkwNC1cXHRcXHRib29sIFxcXCJuZXZlclxcXCJcXG4tLVxcbm1tL0tjb25maWctOTEyLVxcbm1tL0tjb25maWc6OTEzOlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9TSE1FTV9IVUdFX0FMV0FZU1xcbm1tL0tjb25maWctOTE0LVxcdFxcdGJvb2wgXFxcImFsd2F5c1xcXCJcXG4tLVxcbm1tL0tjb25maWctOTIwLVxcbm1tL0tjb25maWc6OTIxOlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9TSE1FTV9IVUdFX1dJVEhJTl9TSVpFXFxubW0vS2NvbmZpZy05MjItXFx0XFx0Ym9vbCBcXFwid2l0aGluX3NpemVcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTkyOC1cXG5tbS9LY29uZmlnOjkyOTpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9BRFZJU0VcXG5tbS9LY29uZmlnLTkzMC1cXHRcXHRib29sIFxcXCJhZHZpc2VcXFwiXFxuLS1cXG5tbS9LY29uZmlnPTkzOD1jaG9pY2VcXG4tLVxcbm1tL0tjb25maWctOTQ3LVxcbm1tL0tjb25maWc6OTQ4OlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX05FVkVSXFxubW0vS2NvbmZpZy05NDktXFx0XFx0Ym9vbCBcXFwibmV2ZXJcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTk1Ni1cXG5tbS9LY29uZmlnOjk1NzpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfVE1QRlNfSFVHRV9BTFdBWVNcXG5tbS9LY29uZmlnLTk1OC1cXHRcXHRib29sIFxcXCJhbHdheXNcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTk2NC1cXG5tbS9LY29uZmlnOjk2NTpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfVE1QRlNfSFVHRV9XSVRISU5fU0laRVxcbm1tL0tjb25maWctOTY2LVxcdFxcdGJvb2wgXFxcIndpdGhpbl9zaXplXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05NzItXFxubW0vS2NvbmZpZzo5NzM6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfQURWSVNFXFxubW0vS2NvbmZpZy05NzQtXFx0XFx0Ym9vbCBcXFwiYWR2aXNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzowOToyNC41NTE2OTIxMDRaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYyNDI2MzM4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpczpcblxuKipDaGVja2luZyBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIERlcGVuZGVuY2llcyoqXG5cblJpZ2h0LCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGl0IHJlbGllcyBvbiwgd2hhdCBvdGhlciBwaWVjZXMgb2YgdGhlIHN5c3RlbSBhcmUgcG90ZW50aWFsbHkgYWZmZWN0ZWQgYnkgaXRzIHByZXNlbmNlLCBhbmQgdW5kZXJzdGFuZCBpZiB0aGVyZSdzIGFueSBpbW1lZGlhdGUgd29yayB0aGF0IG5lZWRzIHRvIGJlIGRvbmUuIEl0J3MgY3J1Y2lhbCwgd2hlbiBkZWFsaW5nIHdpdGggdGhpcywgdG8gYmUgbWV0aG9kaWNhbC4gSSBoYXZlIHRvIHRoaW5rIHRocm91Z2ggYW55IGtlcm5lbCBpbnRlcmFjdGlvbnMgYW5kIGVuc3VyZSB0aGF0IEkgdW5kZXJzdGFuZCBhbnkgcG90ZW50aWFsIGNhc2NhZGluZyBlZmZlY3RzLiBXaGVyZSBpcyBpdCB1c2VkLCBob3cgaXMgaXQgdXNlZCwgYW5kIHdoYXQgZG9lcyB0aGUgY29uZmlndXJhdGlvbiBsb29rIGxpa2U/IEknbGwgcHJvYmFibHkgbmVlZCB0byBsb29rIGF0IHJlbGV2YW50IGRvY3VtZW50YXRpb24sIG1heWJlIHNvbWUga2VybmVsIHNvdXJjZSBjb2RlLCBhbmQgZGVmaW5pdGVseSBhbnkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmaWxlcy4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuIEnigJlsbCBzdGFydCBieSBsaXN0aW5nIG91dCB0aGUga25vd24gZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjE1NiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA5OjMwLjE3NTk1Nzg2MloiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjI2ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA4NDYsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA4NDY6XFx0bWVudWNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRVxcbiA4NDc6XFx0XFx0Ym9vbCBcXFwiVHJhbnNwYXJlbnQgSHVnZXBhZ2UgU3VwcG9ydFxcXCJcXG4gODQ4OlxcdFxcdGRlcGVuZHMgb24gSEFWRV9BUkNIX1RSQU5TUEFSRU5UX0hVR0VQQUdFIFxcdTAwMjZcXHUwMDI2ICFQUkVFTVBUX1JUXFxuIDg0OTpcXHRcXHRzZWxlY3QgQ09NUEFDVElPTlxcbiA4NTA6XFx0XFx0c2VsZWN0IFhBUlJBWV9NVUxUSVxcbiA4NTE6XFx0XFx0c2VsZWN0IE1NX0lEXFxuIDg1MjpcXHRcXHRoZWxwXFxuIDg1MzpcXHRcXHQgIFRyYW5zcGFyZW50IEh1Z2VwYWdlcyBhbGxvd3MgdGhlIGtlcm5lbCB0byB1c2UgaHVnZSBwYWdlcyBhbmRcXG4gODU0OlxcdFxcdCAgaHVnZSB0bGIgdHJhbnNwYXJlbnRseSB0byB0aGUgYXBwbGljYXRpb25zIHdoZW5ldmVyIHBvc3NpYmxlLlxcbiA4NTU6XFx0XFx0ICBUaGlzIGZlYXR1cmUgY2FuIGltcHJvdmUgY29tcHV0aW5nIHBlcmZvcm1hbmNlIHRvIGNlcnRhaW5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MDk6MzAuMTc2MDgyMDEzWiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NDQ4NzQzOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIFRyYW5zcGFyZW50IEh1Z2VwYWdlcyBhbmQgWm9uZSBEZXZpY2UgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzIGNvZGUsIGl0IHNlZW1zIHRoZSBlbmFibGluZyBvZiBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIHJlbGllcyBvbiBib3RoIGBIQVZFX0FSQ0hfVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGJlaW5nIGRlZmluZWQgKmFuZCogdGhlIHN5c3RlbSAqbm90KiBiZWluZyBhIHJlYWwtdGltZSBwcmVlbXB0aW9uIGtlcm5lbCwgYCFQUkVFTVBUX1JUYC4gVGhhdCdzIHN0YW5kYXJkIGJlaGF2aW9yLiBOb3RoaW5nIHRvbyBzdXJwcmlzaW5nIHRoZXJlLiBJJ20gdXNlZCB0byBzZWVpbmcgdGhpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb24geDg2XzY0IHN5c3RlbXMsIHNvIHRoYXQgcGFydCBjaGVja3Mgb3V0LlxuXG5Ob3csIGxldCdzIHNoaWZ0IGdlYXJzIGFuZCBxdWlja2x5IHZlcmlmeSB3aGF0J3MgZGVwZW5kZW50IG9uIGBaT05FX0RFVklDRWAuIEkgbmVlZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHVuZXhwZWN0ZWQgaW50ZXJhY3Rpb25zIG9yIGNvbmZsaWN0cyBpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjU0OCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MDk6MzQuODIwOTYwODIxWiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNjMzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyMzYsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEyMzY6XFx0Y29uZmlnIFpPTkVfREVWSUNFXFxuMTIzNzpcXHRcXHRib29sIFxcXCJEZXZpY2UgbWVtb3J5IChwbWVtLCBITU0sIGV0Yy4uLikgaG90cGx1ZyBzdXBwb3J0XFxcIlxcbjEyMzg6XFx0XFx0ZGVwZW5kcyBvbiBNRU1PUllfSE9UUExVR1xcbjEyMzk6XFx0XFx0ZGVwZW5kcyBvbiBNRU1PUllfSE9UUkVNT1ZFXFxuMTI0MDpcXHRcXHRkZXBlbmRzIG9uIFNQQVJTRU1FTV9WTUVNTUFQXFxuMTI0MTpcXHRcXHRzZWxlY3QgWEFSUkFZX01VTFRJXFxuMTI0MjpcXHRcXG4xMjQzOlxcdFxcdGhlbHBcXG4xMjQ0OlxcdFxcdCAgRGV2aWNlIG1lbW9yeSBob3RwbHVnIHN1cHBvcnQgYWxsb3dzIGZvciBlc3RhYmxpc2hpbmcgcG1lbSxcXG4xMjQ1OlxcdFxcdCAgb3Igb3RoZXIgZGV2aWNlIGRyaXZlciBkaXNjb3ZlcmVkIG1lbW9yeSByZWdpb25zLCBpbiB0aGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MDk6MzQuODIxMTcwMzFaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTExODA1OTcwMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBxdWljayBydW5kb3duIG9mIHRoZXNlIGtlcm5lbCBjb25maWd1cmF0aW9uIGNvbnNpZGVyYXRpb25zOlxuXG4qKktlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyBhbmQgQ29uc2lkZXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIG15IGluaXRpYWwgdGhvdWdodCBoZXJlIGlzIHRoYXQgYFpPTkVfREVWSUNFYCBpcyBkaXJlY3RseSB0aWVkIHRvIGBNRU1PUllfSE9UUExVR2AsIGBNRU1PUllfSE9UUkVNT1ZFYCwgYW5kIGBTUEFSU0VNRU1fVk1FTU1BUGAuIEkgbmVlZCB0byByZW1lbWJlciB0aGF0IGRlcGVuZGVuY3kgY2hhaW4uIE5vdywgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHksIEknbSBnb2luZyB0byBsaXN0IGEgYnVuY2ggb2YgcmVsYXRlZCBjb25maWdzLiBJJ2xsIGluY2x1ZGUgYFpPTkVfREVWSUNFYCBpdHNlbGYsIGFsb25nIHdpdGggYERFVklDRV9NSUdSQVRJT05gLCBgVEVTVF9ITU1gLCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLCBgREVWSUNFX1BSSVZBVEVgLCBhbmQgYE1JR1JBVElPTmAuXG5cbk5vdywgYmVmb3JlIEkgY29tbWl0IHRvIGFueXRoaW5nLCBJIHdhbnQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBURVNUX0hNTWAuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIHRoYXQgcGFydGljdWxhciBjb25maWcgaGFzIGFueSBhZGRpdGlvbmFsIGRlcGVuZGVuY2llcyB0aGF0IGFyZW4ndCBpbW1lZGlhdGVseSBvYnZpb3VzLCBvciBpZiB0aGVyZSdzIGFueXRoaW5nIGVsc2UgdGhhdCBJIHNob3VsZCBiZSB0YWtpbmcgaW50byBhY2NvdW50LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBjcml0aWNhbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY5NTgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA5OjQ2LjAwMTc3MDc0OVoiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTMxOTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImxpYi9LY29uZmlnLmRlYnVnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMzNTQsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMzNTQ6XFx0Y29uZmlnIFRFU1RfSE1NXFxuMzM1NTpcXHRcXHR0cmlzdGF0ZSBcXFwiVGVzdCBITU0gKEhldGVyb2dlbmVvdXMgTWVtb3J5IE1hbmFnZW1lbnQpXFxcIlxcbjMzNTY6XFx0XFx0ZGVwZW5kcyBvbiBUUkFOU1BBUkVOVF9IVUdFUEFHRVxcbjMzNTc6XFx0XFx0ZGVwZW5kcyBvbiBERVZJQ0VfUFJJVkFURVxcbjMzNTg6XFx0XFx0c2VsZWN0IEhNTV9NSVJST1JcXG4zMzU5OlxcdFxcdHNlbGVjdCBNTVVfTk9USUZJRVJcXG4zMzYwOlxcdFxcdGhlbHBcXG4zMzYxOlxcdFxcdCAgVGhpcyBpcyBhIHBzZXVkbyBkZXZpY2UgZHJpdmVyIHNvbGVseSBmb3IgdGVzdGluZyBITU0uXFxuMzM2MjpcXHRcXHQgIFNheSBNIGhlcmUgaWYgeW91IHdhbnQgdG8gYnVpbGQgdGhlIEhNTSB0ZXN0IG1vZHVsZS5cXG4zMzYzOlxcdFxcdCAgRG9pbmcgc28gd2lsbCBhbGxvdyB5b3UgdG8gcnVuIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3Qvdm0vaG1tLXRlc3RzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzowOTo0Ni4wMDM3MDU3MDlaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk1Njc5MDAxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgQ29kZSBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyB0aGUgc3lzdGVtIGNob3NlIGBITU1fTUlSUk9SYCBhbmQgYE1NVV9OT1RJRklFUmAgYmFzZWQgb24gdGhlIGNvbnRleHQsIHdoaWNoIG1ha2VzIHNlbnNlLiBOb3csIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIGludm9sdmVkIGluIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgYG1pZ3JhdGVfdm1hX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhcmUgdGhlIGZvY3VzLiBUaGUgcmVhc29uaW5nIGlzIHNvbGlkOiB0aGlzIHBhdGNoIGlzIGZpeGluZyBzb21ldGhpbmcgd2l0aGluIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgYW5kIHRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGJvdGggb2YgdGhvc2UgaGlnaC1sZXZlbCBtaWdyYXRpb24gZnVuY3Rpb25zLiBUaGUgYnVnIHNlZW1zIHRvIGNlbnRlciBhcm91bmQgZm9saW8gc3BsaXR0aW5nIGFuZCB0aGUgc3dhcCBjYWNoZSwgd2hpY2ggZGVmaW5pdGVseSBzb3VuZHMgbGlrZSBhIGZ1bmN0aW9uYWwgaXNzdWUuXG5cbkJlZm9yZSBJIGdvIGZ1cnRoZXIsIGxldCdzIGp1c3QgY29uZmlybSB0aG9zZSB0d28gY29yZSBmdW5jdGlvbnMgYXJlbid0IHNvbWV0aGluZyB3ZWlyZCBsaWtlIHN0YXRpYyBvciBpbmxpbmVkLCBzaW5jZSB0aGF0IHdvdWxkIGNvbXBsaWNhdGUgdGhpbmdzLiBBIHF1aWNrIGNoZWNrLi4uIHllcCwgdGhleSdyZSBleHBvcnRlZCBzeW1ib2xzLiBUaGF0J3MgZ29vZCwgdGhhdCBjb25maXJtcyB0aGV5J3JlIG5vdCBzb21lIGxvY2FsLCBoaWRkZW4gaW1wbGVtZW50YXRpb25zLiBBbHJpZ2h0LCBub3cgSSBmZWVsIGNvbmZpZGVudCBpbiBtb3ZpbmcgZm9yd2FyZC4gSSdsbCBnbyBhaGVhZCBhbmQgc2V0IHRoZSByZXN1bHRzIGFjY29yZGluZ2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzQ4MSwiT3V0cHV0VG9rZW5zIjoxNjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzowOTo1MS45NjA0OTc1NDFaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTMzMDcwMzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRFVklDRV9NSUdSQVRJT05cIixcbiAgICBcIlRFU1RfSE1NXCIsXG4gICAgXCJUUkFOU1BBUkVOVF9IVUdFUEFHRVwiLFxuICAgIFwiREVWSUNFX1BSSVZBVEVcIixcbiAgICBcIlpPTkVfREVWSUNFXCIsXG4gICAgXCJNSUdSQVRJT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtaWdyYXRlX3ZtYV9wYWdlc1wiLFxuICAgIFwibWlncmF0ZV9kZXZpY2VfcGFnZXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgX19taWdyYXRlX2RldmljZV9wYWdlc2AsIHdoaWNoIGlzIGEgY29yZSBmdW5jdGlvbiBmb3IgZGV2aWNlIG1lbW9yeSBtaWdyYXRpb24uIEl0IGZpeGVzIGEgYnVnIHJlbGF0ZWQgdG8gZm9saW8gc3BsaXQgYW5kIHN3YXAgY2FjaGUuIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIGBtaWdyYXRlX3ZtYV9wYWdlc2AgYW5kIGBtaWdyYXRlX2RldmljZV9wYWdlc2AsIHdoaWNoIGNhbiBiZSB0cmlnZ2VyZWQgdXNpbmcgdGhlIGBURVNUX0hNTWAgcHNldWRvIGRldmljZSBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREVWSUNFX01JR1JBVElPTlwiLFxuICAgIFwiVEVTVF9ITU1cIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCIsXG4gICAgXCJERVZJQ0VfUFJJVkFURVwiLFxuICAgIFwiWk9ORV9ERVZJQ0VcIixcbiAgICBcIk1JR1JBVElPTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1pZ3JhdGVfdm1hX3BhZ2VzXCIsXG4gICAgXCJtaWdyYXRlX2RldmljZV9wYWdlc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgd2hpY2ggaXMgYSBjb3JlIGZ1bmN0aW9uIGZvciBkZXZpY2UgbWVtb3J5IG1pZ3JhdGlvbi4gSXQgZml4ZXMgYSBidWcgcmVsYXRlZCB0byBmb2xpbyBzcGxpdCBhbmQgc3dhcCBjYWNoZS4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgYG1pZ3JhdGVfdm1hX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgd2hpY2ggY2FuIGJlIHRyaWdnZXJlZCB1c2luZyB0aGUgYFRFU1RfSE1NYCBwc2V1ZG8gZGV2aWNlIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowztq74[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-27 16:26:02 +0000 UTC FinishedAt: 2026-07-27 17:09:53 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "9c66085e6dcfb44b70970aa4e323003fc7f2b738", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DEVICE_MIGRATION", "TEST_HMM", "TRANSPARENT_HUGEPAGE", "DEVICE_PRIVATE", "ZONE_DEVICE", "MIGRATION" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "9c66085e6dcfb44b70970aa4e323003fc7f2b738", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "DEVICE_MIGRATION", "TEST_HMM", "TRANSPARENT_HUGEPAGE", "DEVICE_PRIVATE", "ZONE_DEVICE", "MIGRATION" ], "series_id": "92b115e6-0bc1-4647-bcd7-3472c8764be9" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "migrate_vma_pages", "migrate_device_pages" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RFVklDRV9NSUdSQVRJT04mIzM0OywKICAgICYjMzQ7VEVTVF9ITU0mIzM0OywKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OywKICAgICYjMzQ7REVWSUNFX1BSSVZBVEUmIzM0OywKICAgICYjMzQ7Wk9ORV9ERVZJQ0UmIzM0OywKICAgICYjMzQ7TUlHUkFUSU9OJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWlncmF0ZV92bWFfcGFnZXMmIzM0OywKICAgICYjMzQ7bWlncmF0ZV9kZXZpY2VfcGFnZXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgLCB3aGljaCBpcyBhIGNvcmUgZnVuY3Rpb24gZm9yIGRldmljZSBtZW1vcnkgbWlncmF0aW9uLiBJdCBmaXhlcyBhIGJ1ZyByZWxhdGVkIHRvIGZvbGlvIHNwbGl0IGFuZCBzd2FwIGNhY2hlLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBgbWlncmF0ZV92bWFfcGFnZXNgIGFuZCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgLCB3aGljaCBjYW4gYmUgdHJpZ2dlcmVkIHVzaW5nIHRoZSBgVEVTVF9ITU1gIHBzZXVkbyBkZXZpY2UgZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMTMwOWUxMmQ2ZWY4YzgwZjU3YWY0Zjc4NjNiMjhmOTgxZTZmMzRhNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDI3IDE3OjA3OjUxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL21tL21pZ3JhdGVfZGV2aWNlLmMgYi9tbS9taWdyYXRlX2RldmljZS5jXG5pbmRleCA1NTQ3NTRlYjI2ZmYyZi4uNzRhYzY2NTFkNGIzNDMgMTAwNjQ0XG4tLS0gYS9tbS9taWdyYXRlX2RldmljZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9tbS9taWdyYXRlX2RldmljZS5jXG5AQCAtMTE4Miw2ICYjNDM7MTE4MiwxMSBAQCBzdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxuIFx0XHRcdFx0XHRcdFx0IE1JR1JBVEVfUEZOX0NPTVBPVU5EKTtcbiBcdFx0XHRcdFx0Z290byBuZXh0O1xuIFx0XHRcdFx0fVxuJiM0MztcdFx0XHRcdC8qXG4mIzQzO1x0XHRcdFx0ICogcmVzZXQgbnIgc28gdGhhdCBvbmx5IGZpcnN0IGFmdGVyLXNwbGl0IGZvbGlvXG4mIzQzO1x0XHRcdFx0ICogaXMgcHJvY2Vzc2VkIGJlbG93XG4mIzQzO1x0XHRcdFx0ICovXG4mIzQzO1x0XHRcdFx0bnIgPSAxO1xuIFx0XHRcdH0gZWxzZSBpZiAoKHNyY19wZm5zW2ldIFx1MDAyNiBNSUdSQVRFX1BGTl9NSUdSQVRFKSBcdTAwMjZcdTAwMjZcbiBcdFx0XHRcdChkc3RfcGZuc1tpXSBcdTAwMjYgTUlHUkFURV9QRk5fQ09NUE9VTkQpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0IShzcmNfcGZuc1tpXSBcdTAwMjYgTUlHUkFURV9QRk5fQ09NUE9VTkQpKSB7XG5AQCAtMTIwNCw2ICYjNDM7MTIwOSwxMiBAQCBzdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxuIFx0XHRcdFx0XHRzcmNfcGZuc1tpXSBcdTAwMjY9IH5NSUdSQVRFX1BGTl9NSUdSQVRFO1xuIFx0XHRcdFx0XHRnb3RvIG5leHQ7XG4gXHRcdFx0XHR9XG4mIzQzO1xuJiM0MztcdFx0XHRcdC8qXG4mIzQzO1x0XHRcdFx0ICogZm9saW9fZnJlZV9zd2FwKCkgcmVtb3ZlZCB0aGUgZm9saW8gZnJvbSB0aGUgc3dhcFxuJiM0MztcdFx0XHRcdCAqIGNhY2hlLiBSZWZyZXNoIHRoZSBzYXZlZCBtYXBwaW5nIGJlZm9yZSBtaWdyYXRpb24uXG4mIzQzO1x0XHRcdFx0ICovXG4mIzQzO1x0XHRcdFx0bWFwcGluZyA9IGZvbGlvX21hcHBpbmcoZm9saW8pO1xuIFx0XHRcdH1cbiBcdFx0fSBlbHNlIGlmIChmb2xpb19pc196b25lX2RldmljZShuZXdmb2xpbykpIHtcbiBcdFx0XHQvKlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtERVZJQ0VfTUlHUkFUSU9OJiMzNDssCiAgICAmIzM0O1RFU1RfSE1NJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O0RFVklDRV9QUklWQVRFJiMzNDssCiAgICAmIzM0O1pPTkVfREVWSUNFJiMzNDssCiAgICAmIzM0O01JR1JBVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21pZ3JhdGVfdm1hX3BhZ2VzJiMzNDssCiAgICAmIzM0O21pZ3JhdGVfZGV2aWNlX3BhZ2VzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgd2hpY2ggaXMgYSBjb3JlIGZ1bmN0aW9uIGZvciBkZXZpY2UgbWVtb3J5IG1pZ3JhdGlvbi4gSXQgZml4ZXMgYSBidWcgcmVsYXRlZCB0byBmb2xpbyBzcGxpdCBhbmQgc3dhcCBjYWNoZS4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgYG1pZ3JhdGVfdm1hX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgd2hpY2ggY2FuIGJlIHRyaWdnZXJlZCB1c2luZyB0aGUgYFRFU1RfSE1NYCBwc2V1ZG8gZGV2aWNlIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDEzMDllMTJkNmVmOGM4MGY1N2FmNGY3ODYzYjI4Zjk4MWU2ZjM0YTUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAyNyAxNzowNzo1MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL21pZ3JhdGVfZGV2aWNlLmMgYi9tbS9taWdyYXRlX2RldmljZS5jCmluZGV4IDU1NDc1NGViMjZmZjJmLi43NGFjNjY1MWQ0YjM0MyAxMDA2NDQKLS0tIGEvbW0vbWlncmF0ZV9kZXZpY2UuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9taWdyYXRlX2RldmljZS5jCkBAIC0xMTgyLDYgJiM0MzsxMTgyLDExIEBAIHN0YXRpYyB2b2lkIF9fbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsCiAJCQkJCQkJIE1JR1JBVEVfUEZOX0NPTVBPVU5EKTsKIAkJCQkJZ290byBuZXh0OwogCQkJCX0KJiM0MzsJCQkJLyoKJiM0MzsJCQkJICogcmVzZXQgbnIgc28gdGhhdCBvbmx5IGZpcnN0IGFmdGVyLXNwbGl0IGZvbGlvCiYjNDM7CQkJCSAqIGlzIHByb2Nlc3NlZCBiZWxvdwomIzQzOwkJCQkgKi8KJiM0MzsJCQkJbnIgPSAxOwogCQkJfSBlbHNlIGlmICgoc3JjX3BmbnNbaV0gJmFtcDsgTUlHUkFURV9QRk5fTUlHUkFURSkgJmFtcDsmYW1wOwogCQkJCShkc3RfcGZuc1tpXSAmYW1wOyBNSUdSQVRFX1BGTl9DT01QT1VORCkgJmFtcDsmYW1wOwogCQkJCSEoc3JjX3BmbnNbaV0gJmFtcDsgTUlHUkFURV9QRk5fQ09NUE9VTkQpKSB7CkBAIC0xMjA0LDYgJiM0MzsxMjA5LDEyIEBAIHN0YXRpYyB2b2lkIF9fbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsCiAJCQkJCXNyY19wZm5zW2ldICZhbXA7PSB+TUlHUkFURV9QRk5fTUlHUkFURTsKIAkJCQkJZ290byBuZXh0OwogCQkJCX0KJiM0MzsKJiM0MzsJCQkJLyoKJiM0MzsJCQkJICogZm9saW9fZnJlZV9zd2FwKCkgcmVtb3ZlZCB0aGUgZm9saW8gZnJvbSB0aGUgc3dhcAomIzQzOwkJCQkgKiBjYWNoZS4gUmVmcmVzaCB0aGUgc2F2ZWQgbWFwcGluZyBiZWZvcmUgbWlncmF0aW9uLgomIzQzOwkJCQkgKi8KJiM0MzsJCQkJbWFwcGluZyA9IGZvbGlvX21hcHBpbmcoZm9saW8pOwogCQkJfQogCQl9IGVsc2UgaWYgKGZvbGlvX2lzX3pvbmVfZGV2aWNlKG5ld2ZvbGlvKSkgewogCQkJLyoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjIzNAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTWVtb3J5IE1pZ3JhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG1tL21pZ3JhdGVfZGV2aWNlLmNgLiBTcGVjaWZpY2FsbHksIGl0JiMzOTtzIHR3ZWFraW5nIHRoZSBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgZnVuY3Rpb24uIE15IGluaXRpYWwgaW1wcmVzc2lvbiBpcyB0aGF0IHRoZSBjaGFuZ2VzIGFyZSBmYWlybHkgZm9jdXNlZCwgYnV0IGxldCYjMzk7cyBkaWcgZGVlcGVyLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBjYXRjaGVzIG15IGV5ZSBpcyB0aGUgYWRkaXRpb24gb2YgYG5yID0gMTtgIGFmdGVyIGEgZm9saW8gc3BsaXQuIFRoaXMgdGVsbHMgbWUgdGhleSYjMzk7cmUgbGlrZWx5IGRlYWxpbmcgd2l0aCB0aGUgcGFnZSBjb3VudCBhZnRlciBhIHNwbGl0LCB3aGljaCBpcyBjcnVjaWFsIGZvciBjb3JyZWN0IGl0ZXJhdGlvbiBvciBhY2NvdW50aW5nLiBJdCBzZWVtcyBzdHJhaWdodGZvcndhcmQsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIGZvciB0aGUgb3ZlcmFsbCBtaWdyYXRpb24gcHJvY2Vzcy4KClRoZSBzZWNvbmQgYWRkaXRpb24sIGBtYXBwaW5nID0gZm9saW9fbWFwcGluZyhmb2xpbyk7YCBhZnRlciBgZm9saW9fZnJlZV9zd2FwKClgLCBsb29rcyBlcXVhbGx5IGltcG9ydGFudC4gVGhlIHN3YXAgZnJlZWluZyBmdW5jdGlvbiBzdWdnZXN0cyB0aGF0IHRoaXMgZm9saW8gd2FzIHByZXZpb3VzbHkgc3dhcHBlZCBvdXQuIE5vdywgaXQgc2VlbXMgbGlrZSB0aGV5IGFyZSB0cnlpbmcgdG8gb2J0YWluIHRoZSBtYXBwaW5nIG9mIHRoZSBmb2xpby4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGV5IGludGVuZCB0byBkbyB3aXRoIGl0IG9uY2UgdGhlIHN3YXAgaXMgZnJlZWQsIG1heWJlIHJlbGF0ZWQgdG8gZGV2aWNlIG1pZ3JhdGlvbi4gVGhpcyBpbmRpY2F0ZXMgcG90ZW50aWFsIGNoYW5nZXMgaW4gaG93IHRoZSBzeXN0ZW0gaGFuZGxlcyBzd2FwcGVkIHBhZ2VzIGR1cmluZyBkZXZpY2UgbWlncmF0aW9uLCBhbmQgdGhpcyBoYXMgdG8gYmUgY2FyZWZ1bGx5IGV4YW1pbmVkLgoKVG8gZnVsbHkgZ3Jhc3AgdGhlIGludGVudCBhbmQgcG90ZW50aWFsIGltcGFjdCwgSSBuZWVkIHRvIHpvb20gb3V0IGFuZCBhbmFseXplIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIHdpdGhpbiB0aGUgbGFyZ2VyIGBtbS9taWdyYXRlX2RldmljZS5jYCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgY2hhbmdlcyBmaXQgaW50byB0aGUgZXhpc3RpbmcgZmxvdyBhbmQgd2hhdCBvdGhlciBmdW5jdGlvbnMgb3IgZGF0YSBzdHJ1Y3R1cmVzIHRoZXkgaW50ZXJhY3Qgd2l0aC4gVGhlIGdvYWwgaXMgdG8gc2VlIGlmIHRoZXkmIzM5O3ZlIGFjY291bnRlZCBmb3IgYWxsIHRoZSBlZGdlIGNhc2VzIGFuZCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBnaXZlbiB0aGUgbmF0dXJlIG9mIG1lbW9yeSBtaWdyYXRpb24uIExldCYjMzk7cyBnZXQgdG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X19taWdyYXRlX2RldmljZV9wYWdlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL21pZ3JhdGVfZGV2aWNlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vbWlncmF0ZV9kZXZpY2UuYz05NjU9c3RhdGljIHZvaWQgbWlncmF0ZV92bWFfaW5zZXJ0X3BhZ2Uoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlLFxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTA5Ny1cbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTA5ODpzdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMDk5LVx0XHRcdFx0dW5zaWduZWQgbG9uZyAqZHN0X3BmbnMsIHVuc2lnbmVkIGxvbmcgbnBhZ2VzLFxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTI1OD12b2lkIG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLCB1bnNpZ25lZCBsb25nICpkc3RfcGZucyxcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjAte1xubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjYxOlx0X19taWdyYXRlX2RldmljZV9wYWdlcyhzcmNfcGZucywgZHN0X3BmbnMsIG5wYWdlcywgTlVMTCk7XG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjItfVxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTI3Mz12b2lkIG1pZ3JhdGVfdm1hX3BhZ2VzKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSlcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI3NC17XG5tbS9taWdyYXRlX2RldmljZS5jOjEyNzU6XHRfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKG1pZ3JhdGUtXHUwMDNlc3JjLCBtaWdyYXRlLVx1MDAzZWRzdCwgbWlncmF0ZS1cdTAwM2VucGFnZXMsIG1pZ3JhdGUpO1xubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjc2LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDExCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgRGV2aWNlIFBhZ2UgTWlncmF0aW9uKioKClJpZ2h0LCBzbyBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgaXMgY2xlYXJseSB0aGUgY29yZSBmdW5jdGlvbiBoZXJlLCB0aGUgb25lIGFjdHVhbGx5IGRvaW5nIHRoZSBoZWF2eSBsaWZ0aW5nLiBCb3RoIGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYW5kIGBtaWdyYXRlX3ZtYV9wYWdlc2Agc2VlbSB0byBiZSBjYWxsaW5nIGl0LCB3aGljaCBzdWdnZXN0cyBhIHNoYXJlZCBjb3JlIGZ1bmN0aW9uYWxpdHkgZm9yIG1pZ3JhdGluZyBwYWdlcyByZWxhdGVkIHRvIGRldmljZXMuIE9rYXksIHNvIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgY29udGV4dC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWd1cmF0aW9ucyBhY3R1YWxseSAqZW5hYmxlKiB0aGUgYG1tL21pZ3JhdGVfZGV2aWNlLmNgIGZpbGUgYW5kIGl0cyBmdW5jdGlvbmFsaXR5LiBXaGF0IGFyZSB0aGUgZGVwZW5kZW5jaWVzPyBXaGF0IGZlYXR1cmUgZmxhZ3MgYXJlIGludm9sdmVkPyBMZXQmIzM5O3MgY2hlY2sgdGhlIEtjb25maWcgYW5kIHNlZSB3aGF0IGRlZmluZXMgdGhlc2Ugb3B0aW9ucy4gVGhhdCYjMzk7cyB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdW5kZXIgd2hhdCBjaXJjdW1zdGFuY2VzIHRoaXMgY29kZSBwYXRoIGlzIGV2ZW4gYWN0aXZlLiBJdCYjMzk7bGwgZ2l2ZSBtZSBjb250ZXh0IG9uIHdoYXQgYXJjaGl0ZWN0dXJhbCBhc3N1bXB0aW9ucyBhcmUgYnVpbHQgaW4gdG8gdGhlIG1pZ3JhdGlvbiBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21pZ3JhdGVfZGV2aWNlLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9NYWtlZmlsZT05OT1vYmotJChDT05GSUdfTlVNQSkgJiM0Mzs9IG1lbW9yeS10aWVycy5vXG5tbS9NYWtlZmlsZToxMDA6b2JqLSQoQ09ORklHX0RFVklDRV9NSUdSQVRJT04pICYjNDM7PSBtaWdyYXRlX2RldmljZS5vXG5tbS9NYWtlZmlsZS0xMDEtb2JqLSQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSAmIzQzOz0gaHVnZV9tZW1vcnkubyBraHVnZXBhZ2VkLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzY3CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkludmVzdGlnYXRpbmcgRGV2aWNlIE1pZ3JhdGlvbiBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHNvIGBDT05GSUdfREVWSUNFX01JR1JBVElPTmAgaXMgZmxpcHBlZC4gTmF0dXJhbGx5LCB0aGF0IHB1bGxzIGluIGBtbS9taWdyYXRlX2RldmljZS5jYC4gTm93LCBhcyBhbiBleHBlcnQgaW4gdGhpcyBhcmVhLCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIHRoZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBhcmNoaXRlY3R1cmFsIHByZXJlcXVpc2l0ZXMgYW5kIHN1cHBvcnRpbmcgaW5mcmFzdHJ1Y3R1cmUgdGhhdCBhbGxvd3MgZm9yIGRldmljZSBtaWdyYXRpb24uIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zIGFyZSB0aWVkIHRvIGBDT05GSUdfREVWSUNFX01JR1JBVElPTmAuIFVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgZGVwZW5kZW5jeSB0cmVlIGlzIGNyaXRpY2FsIHRvIGFzc2Vzc2luZyBpdHMgaW1wbGljYXRpb25zIG9uIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBvdmVyYWxsIHN5c3RlbSBzdGFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIERFVklDRV9NSUdSQVRJT04mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9Njk2PWNvbmZpZyBNSUdSQVRJT05cbi0tXG5tbS9LY29uZmlnLTY5OS1cbm1tL0tjb25maWc6NzAwOmNvbmZpZyBERVZJQ0VfTUlHUkFUSU9OXG5tbS9LY29uZmlnLTcwMS1cdGRlZl9ib29sIE1JR1JBVElPTiBcdTAwMjZcdTAwMjYgWk9ORV9ERVZJQ0VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjM4CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0JiMzOTtzIHBlcnNwZWN0aXZlOgoKKipEZWNvbnN0cnVjdGluZyB0aGUgRGV2aWNlIE1pZ3JhdGlvbiBMb2dpYyoqCgpSaWdodCwgc28gYERFVklDRV9NSUdSQVRJT05gIGlzIGRlZmluZWQgYXMgYSBib29sZWFuIHRoYXQgcmVxdWlyZXMgYm90aCBgTUlHUkFUSU9OYCBhbmQgYFpPTkVfREVWSUNFYCB0byBiZSB0cnVlLiBNYWtlcyBzZW5zZS4gSXQmIzM5O3MgYSBjb25kaXRpb25hbCBzZXR0aW5nLCBlc3NlbnRpYWxseS4gTWlncmF0aW9uLCBpbiBpdHNlbGYsIGlzbiYjMzk7dCBlbm91Z2g7IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggem9uZS1zcGVjaWZpYyBkZXZpY2UgbWlncmF0aW9uLCB3aGljaCBpcyBtb3JlIHRhcmdldGVkLiBPa2F5LCBsZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIGBaT05FX0RFVklDRWAgY29tcGxldGVseSwgdGhvdWdoLiBJJiMzOTtsbCB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGF0LiBHb3R0YSBlbnN1cmUgYWxsIHRoZSBwaWVjZXMgYXJlIHdoZXJlIHRoZXkgbmVlZCB0byBiZSwgZXNwZWNpYWxseSB3aXRoIHNvbWV0aGluZyB0aGF0IGNvdWxkIGltcGFjdCBkZXZpY2UgYmVoYXZpb3IgaW4gYSB6b25lLiBCZXR0ZXIgdG8gYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBaT05FX0RFVklDRSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZz0xMjMxPWNvbmZpZyBaT05FX0RNQTMyXG4tLVxubW0vS2NvbmZpZy0xMjM1LVxubW0vS2NvbmZpZzoxMjM2OmNvbmZpZyBaT05FX0RFVklDRVxubW0vS2NvbmZpZy0xMjM3LVx0Ym9vbCBcJiMzNDtEZXZpY2UgbWVtb3J5IChwbWVtLCBITU0sIGV0Yy4uLikgaG90cGx1ZyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5NDIKCQkJCQkJCW91dHB1dDogNzMKCQkJCQkJCXRob3VnaHRzOiA0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgTWVtb3J5IE1pZ3JhdGlvbiBDYXBhYmlsaXRpZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEkmIzM5O20gZm9jdXNpbmcgb24gYENPTkZJR19aT05FX0RFVklDRWAgYW5kIGBDT05GSUdfTUlHUkFUSU9OYCDigJMgdGhvc2UgYXJlIHRoZSBrZXkgZmxhZ3MgaW5kaWNhdGluZyBzdXBwb3J0IGZvciBkZXZpY2Ugem9uZXMgYW5kIHBhZ2UgbWlncmF0aW9uLiBOb3csIHRoZSByZWFsIHF1ZXN0aW9uIGlzIGhvdyBkZWVwbHkgdGhvc2UgZmVhdHVyZXMgYXJlIHdvdmVuIGludG8gdGhlIHN5c3RlbS4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGNoZWNrIGhvdyBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgIGFyZSAqZXhwb3NlZCouIEkgbmVlZCB0byBzZWUgd2hlcmUgdGhlc2UgY3JpdGljYWwgZnVuY3Rpb25zIGFyZSBleHBvcnRlZCB0byBnYXVnZSB0aGUgYWNjZXNzaWJpbGl0eSBhbmQgaW50ZWdyYXRpb24gcG9pbnRzIG9mIHRoZSBtaWdyYXRpb24gbWVjaGFuaXNtcy4gV2hlcmUgdGhleeKAmXJlIHZpc2libGUgdGVsbHMgdGhlIHdob2xlIHN0b3J5LiBBcmUgd2UgdGFsa2luZyBtb2R1bGUgYWNjZXNzLCBvciBpcyBpdCBkZWVwbHkgd2l0aGluIHRoZSBjb3JlPyBUaGF0IHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyByb2J1c3RseSB0aGUgZnVuY3Rpb25hbGl0eSBpcyBpbmNvcnBvcmF0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wuKm1pZ3JhdGVfZGV2aWNlX3BhZ2VzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vbWlncmF0ZV9kZXZpY2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9taWdyYXRlX2RldmljZS5jPTEyNTg9dm9pZCBtaWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywgdW5zaWduZWQgbG9uZyAqZHN0X3BmbnMsXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjYyLX1cbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI2MzpFWFBPUlRfU1lNQk9MKG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKTtcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTC4qbWlncmF0ZV92bWFfcGFnZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9taWdyYXRlX2RldmljZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL21pZ3JhdGVfZGV2aWNlLmM9MTI3Mz12b2lkIG1pZ3JhdGVfdm1hX3BhZ2VzKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSlcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzYtfVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjc3OkVYUE9SVF9TWU1CT0wobWlncmF0ZV92bWFfcGFnZXMpO1xubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjc4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDI4CgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRyYWNraW5nIGRvd24gdGhlIGNhbGxlcnMgb2YgdGhvc2UgZnVuY3Rpb25zLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlIGluIHRoaXMgYXJlYToKCioqVHJhY2luZyB0aGUgQ2FsbGVycyoqCgpBbHJpZ2h0LCBzbyBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgLi4uIHRoZXkmIzM5O3JlIGtleSBmdW5jdGlvbnMgZm9yIHBhZ2UgbWlncmF0aW9uLCBwYXJ0aWN1bGFybHkgaW52b2x2aW5nIGRldmljZSBtZW1vcnkgYW5kIHZpcnR1YWwgbWVtb3J5IGFyZWFzLiBUaGF0IHRlbGxzIG1lIHRoZXkmIzM5O3JlIHByb2JhYmx5IHNpdHRpbmcgaW4gdGhlIGNvcmUgbWVtb3J5IG1hbmFnZW1lbnQgY29kZSwgbGlrZWx5IHNvbWV3aGVyZSByZWxhdGVkIHRvIHRoZSBwYWdlIHRhYmxlIGhhbmRsaW5nLCBwb3RlbnRpYWxseSBsaW5rZWQgdG8gZGV2aWNlIGRyaXZlcnMgb3IgVk0gc3Vic3lzdGVtLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSwgaXMgdG8gZmlndXJlIG91dCB0aGUgc291cmNlIGNvZGUgb2YgdGhlIGZ1bmN0aW9ucy4KCkZpcnN0LCBJIG5lZWQgdG8ga25vdyAqd2hlcmUqIHRoZXNlIGFyZSBkZWZpbmVkLiBJIHdvdWxkIHVzZSBgZ3JlcGAgb3IgbXkgSURFJiMzOTtzIHNlYXJjaCBmdW5jdGlvbiBhY3Jvc3MgdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSwgbG9va2luZyBmb3IgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZXMuIE9uY2UgSSBrbm93IHRoZSBmaWxlcywgSSBjYW4gZGlyZWN0bHkgdmlldyB0aGVpciBkZWZpbml0aW9ucyB0byB1bmRlcnN0YW5kIHRoZWlyIHB1cnBvc2UuIEtub3dpbmcgdGhlaXIgcHVycG9zZSBnaXZlcyBtZSBmdXJ0aGVyIGhpbnRzIG9uIHdoZXJlIHRvIGxvb2sgbmV4dC4KCk9uY2UgSSBoYXZlIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9ucywgSSYjMzk7bGwgdGhlbiB1c2UgbXkgY29kZSBuYXZpZ2F0aW9uIHRvb2xzIChsaWtlIGBjc2NvcGVgLCBgY3RhZ3NgLCBvciBteSBJREUmIzM5O3MgYnVpbHQtaW4gY2FsbCBncmFwaCBmZWF0dXJlcykgdG8gcGVyZm9ybSBhICYjMzQ7ZmluZCBjYWxsZXJzJiMzNDsgc2VhcmNoLiBUaGF0JiMzOTtzIHRoZSBtb3N0IGRpcmVjdCBtZXRob2QuIEkgY2FuIHNjYW4gdGhlIGNvZGUgdG8gbG9vayBmb3IgdGhlIHVzZXMgb2YgdGhlIGZ1bmN0aW9ucy4KCkkgbmVlZCB0byBiZSBzeXN0ZW1hdGljLiBUaGlzIG1pZ2h0IGludm9sdmUgc2V0dGluZyB1cCBhIGNyb3NzLXJlZmVyZW5jZSBzZWFyY2gsIHNjYW5uaW5nIGtlcm5lbCBtb2R1bGVzIHRoYXQgaGF2ZSB0byBkbyB3aXRoIHBhZ2UgbWlncmF0aW9uLCBkZXZpY2UgZHJpdmVycyAoZXNwZWNpYWxseSB0aG9zZSBoYW5kbGluZyBETUEgb3IgbWVtb3J5LW1hcHBlZCBJL08pLCBvciB0aGUgdmlydHVhbCBtZW1vcnkgYXJlYSBjb2RlIChgbW0vYCkuIEkgd2lsbCBwYXkgYXR0ZW50aW9uIHRvIGFueSBjYWxscyB3aXRoIGRldmljZSBzcGVjaWZpYyBjb2RlIGFzIHRoaXMgaXMgcmVsYXRlZCB0byBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgCgpJIHdpbGwgYWxzbyBjb25zaWRlciBzdGF0aWMgYW5hbHlzaXMsIGlmIGF2YWlsYWJsZSwgd2hpY2ggY2FuIHByb3ZpZGUgYSBtb3JlIGV4aGF1c3RpdmUgbG9vayBhdCBwb3RlbnRpYWwgY2FsbCBwYXRocywgaW5jbHVkaW5nIHRob3NlIGludm9sdmluZyBmdW5jdGlvbiBwb2ludGVycyBvciBpbmRpcmVjdCBjYWxscy4gSSBtaWdodCBhbHNvIGNvbnNpZGVyIHRoZSB1c2Ugb2YgYHRyYWNlcG9pbnRzYCBvciBga3Byb2Jlc2AgdG8gZHluYW1pY2FsbHkgbW9uaXRvciB0aGUgY2FsbHMgdG8gdGhlc2UgZnVuY3Rpb25zIGR1cmluZyBydW50aW1lLCBlc3BlY2lhbGx5IG9uIGEgdGVzdCBzeXN0ZW0sIHRvIGNhdGNoIGluZnJlcXVlbnQgY2FsbHMgb3IgdGhvc2UgdHJpZ2dlcmVkIGJ5IHNwZWNpZmljIGV2ZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWlncmF0ZV9kZXZpY2VfcGFnZXNcXCgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM9MTEwOT1pbnQgZHJtX3BhZ2VtYXBfZXZpY3RfdG9fcmFtKHN0cnVjdCBkcm1fcGFnZW1hcF9kZXZtZW0gKmRldm1lbV9hbGxvY2F0aW9uKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jLTExNzQtXHRcdGRybV9wYWdlbWFwX21pZ3JhdGlvbl91bmxvY2tfcHV0X3BhZ2VzKG5wYWdlcywgZHN0KTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jOjExNzU6XHRtaWdyYXRlX2RldmljZV9wYWdlcyhzcmMsIGRzdCwgbnBhZ2VzKTtcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jLTExNzYtXHRtaWdyYXRlX2RldmljZV9maW5hbGl6ZShzcmMsIGRzdCwgbnBhZ2VzKTtcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYz00NzU9bm91dmVhdV9kbWVtX2V2aWN0X2NodW5rKHN0cnVjdCBub3V2ZWF1X2RtZW1fY2h1bmsgKmNodW5rKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jLTUxNy1cdG5vdXZlYXVfZmVuY2VfbmV3KFx1MDAyNmZlbmNlLCBjaHVuay1cdTAwM2Vkcm0tXHUwMDNlZG1lbS1cdTAwM2VtaWdyYXRlLmNoYW4pO1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM6NTE4Olx0bWlncmF0ZV9kZXZpY2VfcGFnZXMoc3JjX3BmbnMsIGRzdF9wZm5zLCBucGFnZXMpO1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMtNTE5LVx0bm91dmVhdV9kbWVtX2ZlbmNlX2RvbmUoXHUwMDI2ZmVuY2UpO1xuLS1cbmluY2x1ZGUvbGludXgvbWlncmF0ZS5oPTE5OD1pbnQgbWlncmF0ZV9kZXZpY2VfcGZucyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywgdW5zaWduZWQgbG9uZyBucGFnZXMpO1xuaW5jbHVkZS9saW51eC9taWdyYXRlLmg6MTk5OnZvaWQgbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsIHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmgtMjAwLVx0XHRcdHVuc2lnbmVkIGxvbmcgbnBhZ2VzKTtcbi0tXG5saWIvdGVzdF9obW0uYz0xODg9c3RhdGljIHZvaWQgZG1pcnJvcl9kZXZpY2VfZXZpY3RfY2h1bmsoc3RydWN0IGRtaXJyb3JfY2h1bmsgKmNodW5rKVxuLS1cbmxpYi90ZXN0X2htbS5jLTIzMS1cdH1cbmxpYi90ZXN0X2htbS5jOjIzMjpcdG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKHNyY19wZm5zLCBkc3RfcGZucywgbnBhZ2VzKTtcbmxpYi90ZXN0X2htbS5jLTIzMy1cdG1pZ3JhdGVfZGV2aWNlX2ZpbmFsaXplKHNyY19wZm5zLCBkc3RfcGZucywgbnBhZ2VzKTtcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTk2NT1zdGF0aWMgdm9pZCBtaWdyYXRlX3ZtYV9pbnNlcnRfcGFnZShzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUsXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMDk3LVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMDk4OnN0YXRpYyB2b2lkIF9fbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsXG5tbS9taWdyYXRlX2RldmljZS5jLTEwOTktXHRcdFx0XHR1bnNpZ25lZCBsb25nICpkc3RfcGZucywgdW5zaWduZWQgbG9uZyBucGFnZXMsXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjQ5LS8qKlxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjUwOiAqIG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKCkgLSBtaWdyYXRlIG1ldGEtZGF0YSBmcm9tIHNyYyBwYWdlIHRvIGRzdCBwYWdlXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTEtICogQHNyY19wZm5zOiBzcmNfcGZucyByZXR1cm5lZCBmcm9tIG1pZ3JhdGVfZGV2aWNlX3JhbmdlKClcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTctICovXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNTg6dm9pZCBtaWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywgdW5zaWduZWQgbG9uZyAqZHN0X3BmbnMsXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTktXHRcdFx0dW5zaWduZWQgbG9uZyBucGFnZXMpXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjAte1xubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjYxOlx0X19taWdyYXRlX2RldmljZV9wYWdlcyhzcmNfcGZucywgZHN0X3BmbnMsIG5wYWdlcywgTlVMTCk7XG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjItfVxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTI3Mz12b2lkIG1pZ3JhdGVfdm1hX3BhZ2VzKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSlcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI3NC17XG5tbS9taWdyYXRlX2RldmljZS5jOjEyNzU6XHRfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKG1pZ3JhdGUtXHUwMDNlc3JjLCBtaWdyYXRlLVx1MDAzZWRzdCwgbWlncmF0ZS1cdTAwM2VucGFnZXMsIG1pZ3JhdGUpO1xubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjc2LX1cbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTEzNjY9c3RhdGljIHVuc2lnbmVkIGxvbmcgbWlncmF0ZV9kZXZpY2VfcGZuX2xvY2sodW5zaWduZWQgbG9uZyBwZm4pXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMzk4LSAqIGFsbG9jYXRlIGRlc3RpbmF0aW9uIHBhZ2VzIGFuZCBzdGFydCBjb3B5aW5nIGRhdGEgZnJvbSB0aGUgZGV2aWNlIHRvIENQVVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMzk5OiAqIG1lbW9yeSBiZWZvcmUgY2FsbGluZyBtaWdyYXRlX2RldmljZV9wYWdlcygpLlxubW0vbWlncmF0ZV9kZXZpY2UuYy0xNDAwLSAqL1xuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTQ2Nj1pbnQgbWlncmF0ZV9kZXZpY2VfY29oZXJlbnRfZm9saW8oc3RydWN0IGZvbGlvICpmb2xpbylcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTE0OTAtXG5tbS9taWdyYXRlX2RldmljZS5jOjE0OTE6XHRtaWdyYXRlX2RldmljZV9wYWdlcyhcdTAwMjZzcmNfcGZuLCBcdTAwMjZkc3RfcGZuLCAxKTtcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTQ5Mi1cdGlmIChzcmNfcGZuIFx1MDAyNiBNSUdSQVRFX1BGTl9NSUdSQVRFKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttaWdyYXRlX3ZtYV9wYWdlc1xcKCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL21tL2htbS5yc3Q9MjY0PXVzZSBoYXJkd2FyZSBETUEgb3IgZGV2aWNlIHNwZWNpZmljIGxvYWQvc3RvcmUgaW5zdHJ1Y3Rpb25zIHRvIG1pZ3JhdGUgZGF0YS5cbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdDoyNjU6VGhlIG1pZ3JhdGVfdm1hX3NldHVwKCksIG1pZ3JhdGVfdm1hX3BhZ2VzKCksIGFuZCBtaWdyYXRlX3ZtYV9maW5hbGl6ZSgpXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3QtMjY2LWZ1bmN0aW9ucyBhcmUgZGVzaWduZWQgdG8gbWFrZSBkcml2ZXJzIGVhc2llciB0byB3cml0ZSBhbmQgdG8gY2VudHJhbGl6ZSBjb21tb25cbi0tXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3Q9Mjk3PWJldHdlZW4gZGV2aWNlIGRyaXZlciBzcGVjaWZpYyBjb2RlIGFuZCBzaGFyZWQgY29tbW9uIGNvZGU6XG4tLVxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTM2NC1cbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdDozNjU6NC4gYGBtaWdyYXRlX3ZtYV9wYWdlcygpYGBcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdC0zNjYtXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdD0yMTI9SE1NIOWIh+aNouWIsOebtOaOpeS9v+eUqCBzdHJ1Y3QgcGFnZSDnlKjkuo7orr7lpIflhoXlrZjvvIzov5nkvb/lvpflpKflpJrmlbDlhoXmoLjku6PnoIHot6/lvoTkuI3nn6XpgZPlt67lvILjgIJcbi0tXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0LTIxOC3nlLHkuo4gQ1BVIOaXoOazleebtOaOpeiuv+mXruiuvuWkh+WGheWtmO+8jOWboOatpOiuvuWkh+mpseWKqOeoi+W6j+W/hemhu+S9v+eUqOehrOS7tiBETUEg5oiW6K6+5aSH54m55a6a55qE5Yqg6L29L+WtmFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdDoyMTk65YKo5oyH5Luk5p2l6L+B56e75pWw5o2u44CCbWlncmF0ZV92bWFfc2V0dXAoKeOAgW1pZ3JhdGVfdm1hX3BhZ2VzKCkg5ZKMXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0LTIyMC1taWdyYXRlX3ZtYV9maW5hbGl6ZSgpIOWHveaVsOaXqOWcqOS9v+mpseWKqOeoi+W6j+abtOaYk+S6jue8luWGmeW5tumbhuS4rei3qOmpseWKqOeoi+W6j+eahOmAmueUqOS7o+eggeOAglxuLS1cbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3Q9MjQzPWRldm1fbWVtdW5tYXBfcGFnZXMoKSDlkowgZGV2bV9yZWxlYXNlX21lbV9yZWdpb24oKSDlvZPotYTmupDlj6/ku6Xnu5HlrprliLAgYGBzdHJ1Y3QgZGV2aWNlYGAuXG4tLVxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdC0yOTctXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0OjI5ODo0LiBgYG1pZ3JhdGVfdm1hX3BhZ2VzKClgYFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdC0yOTktXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYz01MTM9c3RhdGljIGludCBfX2t2bXBwY19zdm1fcGFnZV9vdXQoc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEsXG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYy01NzgtXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jOjU3OTpcdG1pZ3JhdGVfdm1hX3BhZ2VzKFx1MDAyNm1pZyk7XG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jLTU4MC1cbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jPTc0MD1zdGF0aWMgaW50IGt2bXBwY19zdm1fcGFnZV9pbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jLTc4Ny1cdCptaWcuZHN0ID0gbWlncmF0ZV9wZm4ocGFnZV90b19wZm4oZHBhZ2UpKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmM6Nzg4Olx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2bWlnKTtcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmMtNzg5LW91dF9maW5hbGl6ZTpcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jPTM5ND1zdm1fbWlncmF0ZV92bWFfdG9fdnJhbShzdHJ1Y3Qga2ZkX25vZGUgKm5vZGUsIHN0cnVjdCBzdm1fcmFuZ2UgKnByYW5nZSxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jLTQ1MS1cdHIgPSBzdm1fbWlncmF0ZV9jb3B5X3RvX3ZyYW0obm9kZSwgcHJhbmdlLCBcdTAwMjZtaWdyYXRlLCBcdTAwMjZtZmVuY2UsIHNjcmF0Y2gsIHR0bV9yZXNfb2Zmc2V0KTtcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmM6NDUyOlx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2bWlncmF0ZSk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jLTQ1My1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jPTY5Mz1zdm1fbWlncmF0ZV92bWFfdG9fcmFtKHN0cnVjdCBrZmRfbm9kZSAqbm9kZSwgc3RydWN0IHN2bV9yYW5nZSAqcHJhbmdlLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmMtNzU1LVx0XHRcdFx0ICAgIHNjcmF0Y2gsIG5wYWdlcyk7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jOjc1NjpcdG1pZ3JhdGVfdm1hX3BhZ2VzKFx1MDAyNm1pZ3JhdGUpO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYy03NTctXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM9NjE2PWludCBkcm1fcGFnZW1hcF9taWdyYXRlX3RvX2Rldm1lbShzdHJ1Y3QgZHJtX3BhZ2VtYXBfZGV2bWVtICpkZXZtZW1fYWxsb2NhdGlvbixcbi0tXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy04MTItZXJyX2Fib3J0ZWRfbWlncmF0aW9uOlxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM6ODEzOlx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2bWlncmF0ZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy04MTQtXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM9MTIxMT1zdGF0aWMgaW50IF9fZHJtX3BhZ2VtYXBfbWlncmF0ZV90b19yYW0oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2YXMsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmMtMTMwNC1cdFx0ZHJtX3BhZ2VtYXBfbWlncmF0aW9uX3VubG9ja19wdXRfcGFnZXMobnBhZ2VzLCBtaWdyYXRlLmRzdCk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYzoxMzA1Olx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2bWlncmF0ZSk7XG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy0xMzA2LVx0bWlncmF0ZV92bWFfZmluYWxpemUoXHUwMDI2bWlncmF0ZSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM9MTgzPXN0YXRpYyB2bV9mYXVsdF90IG5vdXZlYXVfZG1lbV9taWdyYXRlX3RvX3JhbShzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcbi0tXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy0yNjctXHRub3V2ZWF1X2ZlbmNlX25ldyhcdTAwMjZmZW5jZSwgZG1lbS1cdTAwM2VtaWdyYXRlLmNoYW4pO1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM6MjY4Olx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2YXJncyk7XG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy0yNjktXHRub3V2ZWF1X2RtZW1fZmVuY2VfZG9uZShcdTAwMjZmZW5jZSk7XG4tLVxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM9NzgzPXN0YXRpYyB2b2lkIG5vdXZlYXVfZG1lbV9taWdyYXRlX2NodW5rKHN0cnVjdCBub3V2ZWF1X2RybSAqZHJtLFxuLS1cbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jLTgwOS1cdG5vdXZlYXVfZmVuY2VfbmV3KFx1MDAyNmZlbmNlLCBkcm0tXHUwMDNlZG1lbS1cdTAwM2VtaWdyYXRlLmNoYW4pO1xuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM6ODEwOlx0bWlncmF0ZV92bWFfcGFnZXMoYXJncyk7XG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy04MTEtXHRub3V2ZWF1X2RtZW1fZmVuY2VfZG9uZShcdTAwMjZmZW5jZSk7XG4tLVxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg9MTU4PXN0cnVjdCBtaWdyYXRlX3ZtYSB7XG4tLVxuaW5jbHVkZS9saW51eC9taWdyYXRlLmgtMTY1LVx0ICogbWlncmF0ZV92bWFfc2V0dXAoKSwgYW5kIG11c3Qgbm90IGNoYW5nZSB0aGUgZHN0IGFycmF5IGFmdGVyXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaDoxNjY6XHQgKiBtaWdyYXRlX3ZtYV9wYWdlcygpIHJldHVybnMuXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaC0xNjctXHQgKi9cbi0tXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaD0xOTM9aW50IG1pZ3JhdGVfdm1hX3NldHVwKHN0cnVjdCBtaWdyYXRlX3ZtYSAqYXJncyk7XG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaDoxOTQ6dm9pZCBtaWdyYXRlX3ZtYV9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpO1xuaW5jbHVkZS9saW51eC9taWdyYXRlLmgtMTk1LXZvaWQgbWlncmF0ZV92bWFfZmluYWxpemUoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlKTtcbi0tXG5saWIvdGVzdF9obW0uYz0xMTIwPXN0YXRpYyBpbnQgZG1pcnJvcl9taWdyYXRlX3RvX3N5c3RlbShzdHJ1Y3QgZG1pcnJvciAqZG1pcnJvcixcbi0tXG5saWIvdGVzdF9obW0uYy0xMTc1LVxubGliL3Rlc3RfaG1tLmM6MTE3NjpcdFx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2YXJncyk7XG5saWIvdGVzdF9obW0uYy0xMTc3LVx0XHRjbWQtXHUwMDNlY3BhZ2VzICYjNDM7PSBkbWlycm9yX3N1Y2Nlc3NmdWxfbWlncmF0ZWRfcGFnZXMoXHUwMDI2YXJncyk7XG4tLVxubGliL3Rlc3RfaG1tLmM9MTE4OT1zdGF0aWMgaW50IGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2Uoc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXG4tLVxubGliL3Rlc3RfaG1tLmMtMTI0OC1cdFx0ZG1pcnJvcl9taWdyYXRlX2FsbG9jX2FuZF9jb3B5KFx1MDAyNmFyZ3MsIGRtaXJyb3IpO1xubGliL3Rlc3RfaG1tLmM6MTI0OTpcdFx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2YXJncyk7XG5saWIvdGVzdF9obW0uYy0xMjUwLVx0XHRkbWlycm9yX21pZ3JhdGVfZmluYWxpemVfYW5kX21hcChcdTAwMjZhcmdzLCBkbWlycm9yKTtcbi0tXG5saWIvdGVzdF9obW0uYz0xNjUzPXN0YXRpYyB2bV9mYXVsdF90IGRtaXJyb3JfZGV2bWVtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKVxuLS1cbmxpYi90ZXN0X2htbS5jLTE3MTgtXHR9XG5saWIvdGVzdF9obW0uYzoxNzE5Olx0bWlncmF0ZV92bWFfcGFnZXMoXHUwMDI2YXJncyk7XG5saWIvdGVzdF9obW0uYy0xNzIwLVx0Lypcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTY1OT1zdGF0aWMgdm9pZCBtaWdyYXRlX3ZtYV91bm1hcChzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy02OTktICogdGhpcyBjYW4gc3RpbGwgZmFpbCwgYW5kIHRodXMgaW5zaWRlIHRoZSBkZXZpY2UgZHJpdmVyIHlvdSBtdXN0IGNoZWNrIGlmIHRoZVxubW0vbWlncmF0ZV9kZXZpY2UuYzo3MDA6ICogbWlncmF0aW9uIHdhcyBzdWNjZXNzZnVsIGZvciB0aG9zZSBlbnRyaWVzIGFmdGVyIGNhbGxpbmcgbWlncmF0ZV92bWFfcGFnZXMoKSxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzAxLSAqIGp1c3QgbGlrZSBmb3IgcmVndWxhciBtaWdyYXRpb24uXG5tbS9taWdyYXRlX2RldmljZS5jLTcwMi0gKlxubW0vbWlncmF0ZV9kZXZpY2UuYzo3MDM6ICogQWZ0ZXIgdGhhdCwgdGhlIGNhbGxlcnMgbXVzdCBjYWxsIG1pZ3JhdGVfdm1hX3BhZ2VzKCkgdG8gZ28gb3ZlciBlYWNoIGVudHJ5XG5tbS9taWdyYXRlX2RldmljZS5jLTcwNC0gKiBpbiB0aGUgc3JjIGFycmF5IHRoYXQgaGFzIHRoZSBNSUdSQVRFX1BGTl9WQUxJRCBhbmQgTUlHUkFURV9QRk5fTUlHUkFURSBmbGFnXG5tbS9taWdyYXRlX2RldmljZS5jLTcwNS0gKiBzZXQuIElmIHRoZSBjb3JyZXNwb25kaW5nIGVudHJ5IGluIGRzdCBhcnJheSBoYXMgTUlHUkFURV9QRk5fVkFMSUQgZmxhZyBzZXQsXG5tbS9taWdyYXRlX2RldmljZS5jOjcwNjogKiB0aGVuIG1pZ3JhdGVfdm1hX3BhZ2VzKCkgdG8gbWlncmF0ZSBzdHJ1Y3QgcGFnZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBzb3VyY2Vcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzA3LSAqIHN0cnVjdCBwYWdlIHRvIHRoZSBkZXN0aW5hdGlvbiBzdHJ1Y3QgcGFnZS4gIElmIGl0IGZhaWxzIHRvIG1pZ3JhdGUgdGhlXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy03MTQtICpcbm1tL21pZ3JhdGVfZGV2aWNlLmM6NzE1OiAqIE9uY2UgbWlncmF0ZV92bWFfcGFnZXMoKSByZXR1cm5zIHRoZSBjYWxsZXIgbWF5IGluc3BlY3Qgd2hpY2ggcGFnZXMgd2VyZVxubW0vbWlncmF0ZV9kZXZpY2UuYy03MTYtICogc3VjY2Vzc2Z1bGx5IG1pZ3JhdGVkLCBhbmQgd2hpY2ggd2VyZSBub3QuICBTdWNjZXNzZnVsbHkgbWlncmF0ZWQgcGFnZXMgd2lsbFxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzE4LSAqXG5tbS9taWdyYXRlX2RldmljZS5jOjcxOTogKiBJdCBpcyBzYWZlIHRvIHVwZGF0ZSBkZXZpY2UgcGFnZSB0YWJsZSBhZnRlciBtaWdyYXRlX3ZtYV9wYWdlcygpIGJlY2F1c2Vcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzIwLSAqIGJvdGggZGVzdGluYXRpb24gYW5kIHNvdXJjZSBwYWdlIGFyZSBzdGlsbCBsb2NrZWQsIGFuZCB0aGUgbW1hcF9sb2NrIGlzIGhlbGRcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jPTEwOTg9c3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTQtICpcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI1NTogKiBFcXVpdmFsZW50IHRvIG1pZ3JhdGVfdm1hX3BhZ2VzKCkuIFRoaXMgaXMgY2FsbGVkIHRvIG1pZ3JhdGUgc3RydWN0IHBhZ2Vcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI1Ni0gKiBtZXRhLWRhdGEgZnJvbSBzb3VyY2Ugc3RydWN0IHBhZ2UgdG8gZGVzdGluYXRpb24uXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMjYzPUVYUE9SVF9TWU1CT0wobWlncmF0ZV9kZXZpY2VfcGFnZXMpO1xuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2NS0vKipcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI2NjogKiBtaWdyYXRlX3ZtYV9wYWdlcygpIC0gbWlncmF0ZSBtZXRhLWRhdGEgZnJvbSBzcmMgcGFnZSB0byBkc3QgcGFnZVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjY3LSAqIEBtaWdyYXRlOiBtaWdyYXRlIHN0cnVjdCBjb250YWluaW5nIGFsbCBtaWdyYXRpb24gaW5mb3JtYXRpb25cbi0tXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzItICovXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNzM6dm9pZCBtaWdyYXRlX3ZtYV9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzQte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTg3CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMTM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBNZW1vcnkgTWlncmF0aW9uIEZ1bmN0aW9uIFVzYWdlKioKCk9rYXksIHNvIEkmIzM5O20gc2VlaW5nIHRoYXQgdGhlIGZ1bmN0aW9ucyBgbWlncmF0ZV92bWFfcGFnZXNgIGFuZCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFyZSB1dGlsaXplZCB3aXRoaW4gc2V2ZXJhbCBkaXN0aW5jdCBwYXJ0cyBvZiB0aGUga2VybmVsLiBTcGVjaWZpY2FsbHksIHRoZXkmIzM5O3JlIGVtcGxveWVkIGluIGBsaWIvdGVzdF9obW0uY2AsIGBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdWAsIGBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZGAsIGBkcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuY2AsIGFuZCBgYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uY2AuIFRoYXQmIzM5O3MgcXVpdGUgYSBzcHJlYWQuIE5vdywgSSBrbm93IGBsaWIvdGVzdF9obW0uY2AgaXMgdGhlIHRlc3QgbW9kdWxlIGZvciBIZXRlcm9nZW5lb3VzIE1lbW9yeSBNYW5hZ2VtZW50LCBITU0uIEl0IHNlZW1zIGxpa2UgdGhlc2UgbWlncmF0aW9uIGZ1bmN0aW9ucyBhcmUgZnVuZGFtZW50YWwgdG8gSE1NJiMzOTtzIG9wZXJhdGlvbiBhY3Jvc3MgZGlmZmVyZW50IGFyY2hpdGVjdHVyZXMgYW5kIGRldmljZSBkcml2ZXJzLCBhbmQgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGludGVncmF0aW9uIHBhdGggZm9yIGVhY2ggaW1wbGVtZW50YXRpb24uIFRoZSBxdWVzdGlvbiBpcyB3aGV0aGVyIGB0ZXN0X2htbWAgaXMgZW5hYmxlZCBieSBkZWZhdWx0LiBJIG5lZWQgdG8gY2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhc3NvY2lhdGVkIHdpdGggYGxpYi90ZXN0X2htbS5jYCB0byB1bmRlcnN0YW5kIHdoZW4gdGhpcyB0ZXN0aW5nIG1vZHVsZSBpcyBpbmNsdWRlZCBvciB3aGF0IGNvbmRpdGlvbnMgdHJpZ2dlciBpdHMgaW5jbHVzaW9uLiBUaGlzIHNob3VsZCBpbGx1bWluYXRlIHRoZSBicm9hZGVyIGltcGFjdCBhbmQgdXNhZ2Ugb2YgdGhlc2UgY29yZSBtaWdyYXRpb24gZnVuY3Rpb25zIHdpdGhpbiB0aGUga2VybmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Rlc3RfaG1tJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliL0tjb25maWcuZGVidWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NDE2CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgdGhlIGB0ZXN0X2htbWAgU291cmNlKioKCk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIHRoZSBjb25maWd1cmF0aW9uIG9yIGJ1aWxkIHByb2Nlc3MgZm9yIGB0ZXN0X2htbWAuIEdpdmVuIHRoYXQgaXQmIzM5O3MgYSB0ZXN0LCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBsb29rIHdpdGhpbiB0aGUgY29uZmlndXJhdGlvbiBhbmQgYnVpbGQgc3lzdGVtIGZpbGVzLiBUaGUgb2J2aW91cyBzdXNwZWN0cyBhcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiAoYGxpYi9LY29uZmlnYCkgYW5kIHRoZSBtYWluIGBNYWtlZmlsZWAgKGxpa2VseSBpbiBgbGliL01ha2VmaWxlYCkuIFRoZSBLY29uZmlnIGZpbGUgc2hvdWxkIGRlZmluZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBlbmFibGUvZGlzYWJsZSBvcHRpb25zLCB3aGlsZSB0aGUgTWFrZWZpbGUgd291bGQgY29udGFpbiB0aGUgYnVpbGQgcnVsZXMgYW5kIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzLiBJJiMzOTtsbCBzdGFydCB3aXRoIHRob3NlIHR3byBsb2NhdGlvbnMuIElmIGl04oCZcyBhIG1vZHVsZSB0aGVuIGBsaWIvbW9kdWxlcy9gIGlzIGFub3RoZXIgcG9zc2libGUgcGxhY2UgdG8gc2VhcmNoLiBGcm9tIHRoZXJlIEkmIzM5O2xsIGRyaWxsIGRlZXBlciBhcyBuZWVkZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Rlc3RfaG1tJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi9NYWtlZmlsZT0xMDI9b2JqLSQoQ09ORklHX1RFU1RfTE9DS1VQKSAmIzQzOz0gdGVzdF9sb2NrdXAub1xubGliL01ha2VmaWxlOjEwMzpvYmotJChDT05GSUdfVEVTVF9ITU0pICYjNDM7PSB0ZXN0X2htbS5vXG5saWIvTWFrZWZpbGUtMTA0LW9iai0kKENPTkZJR19URVNUX0ZSRUVfUEFHRVMpICYjNDM7PSB0ZXN0X2ZyZWVfcGFnZXMub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NzIwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFraW5nIHRoZSBwZXJzcGVjdGl2ZSBvZiBzb21lb25lIGtub3dsZWRnZWFibGUgaW4gY29uZmlndXJhdGlvbiBzeXN0ZW1zOgoKKipDaGVja2luZyB0aGUgRGVidWcgSE1NIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIHN0cmFpZ2h0IGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGVyZSYjMzk7cyB0aGUgY29udHJvbCBmb3IgdGhpcyB0ZXN0IEhNTSBzZXR0aW5nPyBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSBpdHMgY29uZmlndXJhdGlvbiBvcHRpb25zLiYjMzQ7IFNvLCB0aGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBnb2luZyB0byBkbyBpcyB6ZXJvIGluIG9uIGBDT05GSUdfVEVTVF9ITU1gIHdpdGhpbiB0aGUgYGxpYi9LY29uZmlnLmRlYnVnYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IOKAkyB0aGUgYGRlYnVnYCBzdWJkaXJlY3Rvcnkgb2Z0ZW4gaG91c2VzIHNldHRpbmdzIHJlbGF0ZWQgdG8gZGVidWdnaW5nIGFuZCBleHBlcmltZW50YWwgZmVhdHVyZXMsIG1ha2luZyBpdCBhIGxpa2VseSBsb2NhdGlvbiBmb3IgYSBITU0gdGVzdCBjb25maWd1cmF0aW9uLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIHRoZSBzdGFuZGFyZCBgY29uZmlnYCBlbnRyeSwgYWxvbmcgd2l0aCBpdHMgYXNzb2NpYXRlZCBkZXBlbmRlbmNpZXMsIGRlc2NyaXB0aW9ucywgYW5kIHBvdGVudGlhbGx5IGRlZmF1bHQgdmFsdWVzLiBJJiMzOTttIGFsc28gYW50aWNpcGF0aW5nIHRoYXQgaXQgbGlrZWx5IGxpbmtzIHRvIHRoZSBzcGVjaWZpYyBjb2RlIG9yIHRlc3Qgc3VpdGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgSE1NIHRlc3RpbmcsIHdoaWNoIGlzIHdoYXQgSSYjMzk7bSBtb3N0IGludGVyZXN0ZWQgaW4uIFRoaXMgaW5pdGlhbCBjaGVjayB3aWxsIGdpdmUgbWUgdGhlIGNvbnRleHR1YWwgaW5mb3JtYXRpb24gbmVjZXNzYXJ5IHRvIGV2YWx1YXRlIHdoYXQgdGhpcyB0ZXN0IHNldHRpbmcgdHJ1bHkgZG9lcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRFU1RfSE1NJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bGliL0tjb25maWcuZGVidWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bGliL0tjb25maWcuZGVidWc9MzM0Nj1jb25maWcgVEVTVF9NRU1JTklUXG4tLVxubGliL0tjb25maWcuZGVidWctMzM1My1cbmxpYi9LY29uZmlnLmRlYnVnOjMzNTQ6Y29uZmlnIFRFU1RfSE1NXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzU1LVx0dHJpc3RhdGUgXCYjMzQ7VGVzdCBITU0gKEhldGVyb2dlbmVvdXMgTWVtb3J5IE1hbmFnZW1lbnQpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwMDc2CgkJCQkJCQlvdXRwdXQ6IDY2CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSGVyZSYjMzk7cyBob3cgSSYjMzk7ZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6CgoqKkFuYWx5emluZyBEZXBlbmRlbmNpZXMgZm9yIFRFU1RfSE1NKioKCkFscmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YgYFRFU1RfSE1NYC4gVGhpcyBsaWtlbHkgbWVhbnMgSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgbGlicmFyaWVzLCBtb2R1bGVzLCBvdGhlciB0ZXN0cywgb3IgZGF0YSBmaWxlcyB0aGF0IGBURVNUX0hNTWAgcmVxdWlyZXMgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBJJiMzOTtsbCBuZWVkIHRvIGlkZW50aWZ5IG5vdCBvbmx5IHRoZSBkaXJlY3QgZGVwZW5kZW5jaWVzLCBidXQgYWxzbyBhbnkgaW5kaXJlY3Qgb25lcyDigJMgdGhpbmdzIHRoYXQgYFRFU1RfSE1NYCBtaWdodCBjYWxsIHRoYXQsIGluIHR1cm4sIGhhdmUgdGhlaXIgb3duIHJlcXVpcmVtZW50cy4gVGhpcyBpcyBhIGNvbW1vbiBhbmQgaW1wb3J0YW50IGZpcnN0IHN0ZXAgd2hlbiBkZWJ1Z2dpbmcsIHJlZmFjdG9yaW5nLCBvciBzaW1wbHkgdW5kZXJzdGFuZGluZyBhIGNvZGViYXNlLiBBIHN0cm9uZyB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkZXBlbmRlbmN5IGdyYXBoIGlzIG9mdGVuIGNyaXRpY2FsIGZvciBlZmZpY2llbnQgdHJvdWJsZXNob290aW5nIG9yIG1vZGlmaWNhdGlvbiBkb3duIHRoZSBsaW5lLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjb25maWd1cmF0aW9uIGZpbGVzLCBpbXBvcnQgc3RhdGVtZW50cywgb3IgYW55IG90aGVyIGNsdWVzIHRvIGJ1aWxkIGEgY29tcGxldGUgcGljdHVyZSBvZiBpdHMgZW52aXJvbm1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBURVNUX0hNTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnPTMzNDY9Y29uZmlnIFRFU1RfTUVNSU5JVFxuLS1cbmxpYi9LY29uZmlnLmRlYnVnLTMzNTMtXG5saWIvS2NvbmZpZy5kZWJ1ZzozMzU0OmNvbmZpZyBURVNUX0hNTVxubGliL0tjb25maWcuZGVidWctMzM1NS1cdHRyaXN0YXRlIFwmIzM0O1Rlc3QgSE1NIChIZXRlcm9nZW5lb3VzIE1lbW9yeSBNYW5hZ2VtZW50KVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzM1NCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMzU0Olx0Y29uZmlnIFRFU1RfSE1NXG4zMzU1Olx0XHR0cmlzdGF0ZSBcJiMzNDtUZXN0IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudClcJiMzNDtcbjMzNTY6XHRcdGRlcGVuZHMgb24gVFJBTlNQQVJFTlRfSFVHRVBBR0VcbjMzNTc6XHRcdGRlcGVuZHMgb24gREVWSUNFX1BSSVZBVEVcbjMzNTg6XHRcdHNlbGVjdCBITU1fTUlSUk9SXG4zMzU5Olx0XHRzZWxlY3QgTU1VX05PVElGSUVSXG4zMzYwOlx0XHRoZWxwXG4zMzYxOlx0XHQgIFRoaXMgaXMgYSBwc2V1ZG8gZGV2aWNlIGRyaXZlciBzb2xlbHkgZm9yIHRlc3RpbmcgSE1NLlxuMzM2MjpcdFx0ICBTYXkgTSBoZXJlIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHRoZSBITU0gdGVzdCBtb2R1bGUuXG4zMzYzOlx0XHQgIERvaW5nIHNvIHdpbGwgYWxsb3cgeW91IHRvIHJ1biB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0L3ZtL2htbS10ZXN0cy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA2MDkKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGlubmVyIG1vbm9sb2d1ZToKCioqRGVwZW5kZW5jeSBEZWVwIERpdmU6IFRFU1RfSE1NIGFuZCBERVZJQ0VfUFJJVkFURSoqCgpBbHJpZ2h0LCBzbyBgVEVTVF9ITU1gIGhhcyBhIGNvdXBsZSBvZiBkZXBlbmRlbmNpZXMsIG5hbWVseSBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGFuZCBgREVWSUNFX1BSSVZBVEVgLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgY29ubmVjdGlvbiB3aXRoIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgbWFrZXMgc2Vuc2U7IHBlcmZvcm1hbmNlIG9mdGVuIGhpbmdlcyBvbiBtZW1vcnkgbWFuYWdlbWVudCBhbmQgdGhhdCYjMzk7cyBhIGNvbW1vbiBwYWlyaW5nLiBCdXQgYERFVklDRV9QUklWQVRFYC4uLiB0aGF0JiMzOTtzIHRoZSBtb3JlIGludHJpZ3Vpbmcgb25lIGluIHRoaXMgY2FzZS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoYXQgYml0IGZpcnN0LCBzaW5jZSBpdCYjMzk7cyBsZXNzIG9idmlvdXMgd2h5IHRoYXQgaXMgYSBkZXBlbmRlbmN5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHJvbGUgYERFVklDRV9QUklWQVRFYCBwbGF5cyBoZXJlIGFuZCB3aHkgaXRzIHByZXNlbmNlIG9yIGFic2VuY2Ugd291bGQgaGF2ZSBhIGRpcmVjdCBpbXBhY3Qgb24gdGhlIGV4ZWN1dGlvbiBvciB0ZXN0YWJpbGl0eSBvZiBgVEVTVF9ITU1gLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24gb3IgdGhlIGNvZGUgZGlyZWN0bHkgdG8gY29uZmlybS4gVGhpcyYjMzk7bGwgcmVxdWlyZSBtZSB0byBpbnZlc3RpZ2F0ZSB0aGUgZGV0YWlscyBvZiBgREVWSUNFX1BSSVZBVEVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgREVWSUNFX1BSSVZBVEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9MTI2ND1jb25maWcgR0VUX0ZSRUVfUkVHSU9OXG4tLVxubW0vS2NvbmZpZy0xMjY2LVxubW0vS2NvbmZpZzoxMjY3OmNvbmZpZyBERVZJQ0VfUFJJVkFURVxubW0vS2NvbmZpZy0xMjY4LVx0Ym9vbCBcJiMzNDtVbmFkZHJlc3NhYmxlIGRldmljZSBtZW1vcnkgKEdQVSBtZW1vcnksIC4uLilcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA5NjQKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBEZXBlbmRlbmNpZXMgZm9yIGBERVZJQ0VfUFJJVkFURWAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O09rYXksIGBERVZJQ0VfUFJJVkFURWAg4oCTIHdoYXQgYXJlIGl0cyBkZXBlbmRlbmNpZXM/JiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJlbGF0aW9uc2hpcCB3aXRoIG90aGVyIGNvbXBvbmVudHMgaW4gdGhlIHN5c3RlbS4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgcG90ZW50aWFsIHJpcHBsZSBlZmZlY3RzIG9mIGFueSBjaGFuZ2VzIHRvLCBvciBpbnRlcmFjdGlvbnMgd2l0aCwgdGhhdCBwYXJ0aWN1bGFyIHNlY3Rpb24uIElzIGl0IGEgY29yZSBtb2R1bGUsIG9yIHNvbWV0aGluZyBtb3JlIHBlcmlwaGVyYWw/IEFyZSB3ZSB0YWxraW5nIGFib3V0IGxvdy1sZXZlbCBoYXJkd2FyZSBhY2Nlc3MsIG9yIHNvbWV0aGluZyBoaWdoZXIgdXAgdGhlIHN0YWNrPwoKSSYjMzk7bGwgbmVlZCB0byBnbyBiZXlvbmQgc3VyZmFjZS1sZXZlbCBhc3N1bXB0aW9ucy4gSSYjMzk7bSBydW5uaW5nIHRocm91Z2ggbXkgbWVudGFsIGNoZWNrbGlzdDogSSBuZWVkIHRvIGNvbnNpZGVyIHRoaW5ncyBsaWtlOgoKKiAgIERvZXMgaXQgcmVseSBvbiBhbnkgc3BlY2lmaWMga2VybmVsIG1vZHVsZXMsIGRyaXZlcnMsIG9yIGZpcm13YXJlIGNvbXBvbmVudHM/CiogICBBcmUgdGhlcmUgYW55IGNvbmZpZ3VyYXRpb24gZmlsZXMgb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRoYXQgZGlyZWN0bHkgaW1wYWN0IGl0cyBiZWhhdmlvcj8KKiAgIFdoYXQgYXJlIHRoZSBzZWN1cml0eSBpbXBsaWNhdGlvbnMgb2YgaXRzIGRlcGVuZGVuY2llcz8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIGluaGVyZW50IGluIHRob3NlIHJlbGF0aW9uc2hpcHM/CiogICBIb3cgdGlnaHRseSBjb3VwbGVkIGlzIGl0PyBJcyBpdCBlYXN5IHRvIGlzb2xhdGUgYW5kIHRlc3QsIG9yIGlzIGl0IGhlYXZpbHkgaW50ZWdyYXRlZCBpbnRvIHRoZSBzeXN0ZW0/CiogICBJIGFsc28gbmVlZCB0byBjaGVjayB0aGUgYnVpbGQgcHJvY2VzcyB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBtYWtlZmlsZXMgb3Igc2NyaXB0cyByZWxhdGVkIHRvIGl0LgoKSSYjMzk7bSBzdGFydGluZyB0byB2aXN1YWxpemUgYSBkZXBlbmRlbmN5IGdyYXBoIGluIG15IGhlYWQuIFVuZGVyc3RhbmRpbmcgdGhlICYjMzQ7d2h5JiMzNDsgYW5kICYjMzQ7aG93JiMzNDsgb2YgZWFjaCBjb25uZWN0aW9uIHdpbGwgYmUga2V5IHRvIG1ha2luZyBpbmZvcm1lZCBkZWNpc2lvbnMuIFRpbWUgdG8gc3RhcnQgZGlnZ2luZyB0aHJvdWdoIHRoZSBjb2RlLCBkb2NzLCBhbmQgY29uZmlndXJhdGlvbnMgdG8gbWFwIHRoaXMgYWxsIG91dC4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiB1bmVhcnRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMjY3LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEyNjc6XHRjb25maWcgREVWSUNFX1BSSVZBVEVcbjEyNjg6XHRcdGJvb2wgXCYjMzQ7VW5hZGRyZXNzYWJsZSBkZXZpY2UgbWVtb3J5IChHUFUgbWVtb3J5LCAuLi4pXCYjMzQ7XG4xMjY5Olx0XHRkZXBlbmRzIG9uIFpPTkVfREVWSUNFXG4xMjcwOlx0XHRzZWxlY3QgR0VUX0ZSRUVfUkVHSU9OXG4xMjcxOlx0XG4xMjcyOlx0XHRoZWxwXG4xMjczOlx0XHQgIEFsbG93cyBjcmVhdGlvbiBvZiBzdHJ1Y3QgcGFnZXMgdG8gcmVwcmVzZW50IHVuYWRkcmVzc2FibGUgZGV2aWNlXG4xMjc0Olx0XHQgIG1lbW9yeTsgaS5lLiwgbWVtb3J5IHRoYXQgaXMgb25seSBhY2Nlc3NpYmxlIGZyb20gdGhlIGRldmljZSAob3JcbjEyNzU6XHRcdCAgZ3JvdXAgb2YgZGV2aWNlcykuIFlvdSBsaWtlbHkgYWxzbyB3YW50IHRvIHNlbGVjdCBITU1fTUlSUk9SLlxuMTI3NjpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQ4NwoJCQkJCQkJb3V0cHV0OiA3MAoJCQkJCQkJdGhvdWdodHM6IDQ5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERldmljZSBQYWdlIE1pZ3JhdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIEkgc2VlIHRoYXQgYFRFU1RfSE1NYCBoYXMgc29tZSBzcGVjaWZpYyBkZXBlbmRlbmN5IHJlcXVpcmVtZW50cyDigJMgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCwgYERFVklDRV9QUklWQVRFYCwgYW5kIGBaT05FX0RFVklDRWAuICBUaGF0IG1ha2VzIHNlbnNlIHNpbmNlIGl0JiMzOTtzIGEgdGVzdCBkcml2ZXIgZm9yIEhNTSwgc28gdmlydHVhbGl6YXRpb24gaXMgbGlrZWx5LiBBbmQgZnVydGhlciwgYERFVklDRV9NSUdSQVRJT05gIG5lZWRzIGJvdGggYE1JR1JBVElPTmAgYW5kIGBaT05FX0RFVklDRWAuICBNeSBmb2N1cyBpcyBkZWZpbml0ZWx5IG9uIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSB0ZXN0IGRyaXZlci4KCkkmIzM5O20gemVyb2luZyBpbiBvbiB0aGUgY2hhbmdlcyB0byBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgaW4gYG1tL21pZ3JhdGVfZGV2aWNlLmNgLiAgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHBhdGNoIGlzIGRvaW5nIHNwZWNpZmljYWxseS4gIExldCYjMzk7cyB3YWxrIHRocm91Z2ggdGhlIGFkZGVkIGNvZGUgYmxvY2suICBMb29rcyBsaWtlIGl0JiMzOTtzIGFkZHJlc3NpbmcgYW4gaXNzdWUgd2hlbiB3ZSBlbmNvdW50ZXIgYSBgTUlHUkFURV9QRk5fQ09NUE9VTkRgIG9uIHRoZSBkZXN0aW5hdGlvbiwgYnV0IG5vdCB0aGUgc291cmNlLCBhbmQgYSBzaW1pbGFyIG9wZXJhdGlvbiB3aGVyZSB3ZSBoYXZlIGBNSUdSQVRFX1BGTl9NSUdSQVRFYCBvbiB0aGUgc291cmNlLCBidXQgYE1JR1JBVEVfUEZOX0NPTVBPVU5EYCBvbiB0aGUgZGVzdGluYXRpb24sIGFuZCB0aGF0IHdlIGhhdmUgYSBjb21wb3VuZCBmb2xpbyBtaWdyYXRpb24uCgpUaGUgZmlyc3QgY2hhbmdlLCBpdCBzZWVtcyBsaWtlLCBpcyByZXNldHRpbmcgYG5yYCB0byAxIGFmdGVyIGRlYWxpbmcgd2l0aCB0aGUgYWZ0ZXItc3BsaXQgZm9saW8uIEkmIzM5O20gYXNzdW1pbmcgdG8gb25seSBwcm9jZXNzIHRoZSBmaXJzdCBmb2xpbyBhZnRlciB0aGUgc3BsaXQuIFRoZSBzZWNvbmQgY29kZSBibG9jayBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlIHRoZSBmb2xpbyBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIHN3YXAgY2FjaGUgYnkgYGZvbGlvX2ZyZWVfc3dhcCgpYCwgc28gaXQgbmVlZHMgdG8gcmVmcmVzaCB0aGUgbWFwcGluZyBiZWZvcmUgbWlncmF0aW9uLiBUaGUgYGZvbGlvX21hcHBpbmcoZm9saW8pYCBjYWxsIGlzIGludGVyZXN0aW5nIGhlcmUsIG1ha2luZyBzdXJlIHdlIGhhdmUgdGhlIGNvcnJlY3QgbWFwcGluZy4KClRoaXMgbWFrZXMgc2Vuc2U7IGVuc3VyaW5nIG1lbW9yeSBtYW5hZ2VtZW50IGlzIGNvcnJlY3QgaW4gdmFyaW91cyBtaWdyYXRpb24gc2NlbmFyaW9zIGlzIGFsd2F5cyBjb21wbGV4LCBlc3BlY2lhbGx5IHdpdGggY29tcG91bmQgcGFnZXMgYW5kIHN3YXAuIFRoaXMgbWVhbnMgdGhlc2UgbW9kaWZpY2F0aW9ucyBhcmUgcHJvYmFibHkgZnVuY3Rpb25hbCwgYW5kIGFjY2Vzc2libGUgdGhyb3VnaCBgVEVTVF9ITU1gLgoKTm93LCBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlIGZ1enppbmcgZW50cnkgcG9pbnRzLiBJIGFscmVhZHkga25vdyB0aGF0IGBtaWdyYXRlX3ZtYV9wYWdlc2AgYW5kIGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYXJlIHRoZSBjcnVjaWFsIG9uZXMuICBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBgbGliL3Rlc3RfaG1tLmNgIHRvIHNlZSBwcmVjaXNlbHkgKmhvdyogdGhlc2UgZnVuY3Rpb25zIGFyZSBleHBvc2VkIHRvIHVzZXJzcGFjZS4gVGhhdCB3aWxsIGJlIHRoZSBrZXkgdG8gZGVzaWduaW5nIGVmZmVjdGl2ZSBmdXp6aW5nIHRhcmdldHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RtaXJyb3JfbWlncmF0ZV90b19zeXN0ZW0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtsaWIvdGVzdF9obW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtsaWIvdGVzdF9obW0uYz0xMTA3PWRtaXJyb3Jfc3VjY2Vzc2Z1bF9taWdyYXRlZF9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXG4tLVxubGliL3Rlc3RfaG1tLmMtMTExOS1cbmxpYi90ZXN0X2htbS5jOjExMjA6c3RhdGljIGludCBkbWlycm9yX21pZ3JhdGVfdG9fc3lzdGVtKHN0cnVjdCBkbWlycm9yICpkbWlycm9yLFxubGliL3Rlc3RfaG1tLmMtMTEyMS1cdFx0XHRcdCAgICAgc3RydWN0IGhtbV9kbWlycm9yX2NtZCAqY21kKVxuLS1cbmxpYi90ZXN0X2htbS5jPTE1MTM9c3RhdGljIGxvbmcgZG1pcnJvcl9mb3BzX3VubG9ja2VkX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuLS1cbmxpYi90ZXN0X2htbS5jLTE1NTAtXHRjYXNlIEhNTV9ETUlSUk9SX01JR1JBVEVfVE9fU1lTOlxubGliL3Rlc3RfaG1tLmM6MTU1MTpcdFx0cmV0ID0gZG1pcnJvcl9taWdyYXRlX3RvX3N5c3RlbShkbWlycm9yLCBcdTAwMjZjbWQpO1xubGliL3Rlc3RfaG1tLmMtMTU1Mi1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RtaXJyb3JfbWlncmF0ZV90b19kZXZpY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtsaWIvdGVzdF9obW0uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtsaWIvdGVzdF9obW0uYz0xMTIwPXN0YXRpYyBpbnQgZG1pcnJvcl9taWdyYXRlX3RvX3N5c3RlbShzdHJ1Y3QgZG1pcnJvciAqZG1pcnJvcixcbi0tXG5saWIvdGVzdF9obW0uYy0xMTg4LVxubGliL3Rlc3RfaG1tLmM6MTE4OTpzdGF0aWMgaW50IGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2Uoc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXG5saWIvdGVzdF9obW0uYy0xMTkwLVx0XHRcdFx0c3RydWN0IGhtbV9kbWlycm9yX2NtZCAqY21kKVxuLS1cbmxpYi90ZXN0X2htbS5jPTE1MTM9c3RhdGljIGxvbmcgZG1pcnJvcl9mb3BzX3VubG9ja2VkX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLFxuLS1cbmxpYi90ZXN0X2htbS5jLTE1NDYtXHRjYXNlIEhNTV9ETUlSUk9SX01JR1JBVEVfVE9fREVWOlxubGliL3Rlc3RfaG1tLmM6MTU0NzpcdFx0cmV0ID0gZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZShkbWlycm9yLCBcdTAwMjZjbWQpO1xubGliL3Rlc3RfaG1tLmMtMTU0OC1cdFx0YnJlYWs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyOTk0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkRpdmluZyBpbnRvIHRoZSBEZXZpY2UgTWlycm9yIE1pZ3JhdGlvbioqCgpSaWdodCwgc28gSSYjMzk7bSBzZWVpbmcgdGhhdCB0aGUgY29yZSBvZiB0aGlzIG1pZ3JhdGlvbiBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgbW92aW5nIGRhdGEgdG8gYW5kIGZyb20gdGhlIGRldmljZSBtaXJyb3IsIGhpbmdlcyBvbiBhIGNvdXBsZSBvZiBrZXkgZnVuY3Rpb25zOiBgZG1pcnJvcl9taWdyYXRlX3RvX3N5c3RlbWAgYW5kIGBkbWlycm9yX21pZ3JhdGVfdG9fZGV2aWNlYC4gVGhlc2UgYXJlIHRyaWdnZXJlZCB2aWEgYGlvY3RsYCBjYWxscyBvbiB0aGUgYC9kZXYvaG1tX2RtaXJyb3IqYCBkZXZpY2Ugbm9kZXMuIE1ha2VzIHNlbnNlLCB0aGF0JiMzOTtzIGhvdyB3ZSYjMzk7ZCBleHBlY3QgdXNlcnNwYWNlIHRvIGludGVyYWN0IHdpdGggdGhlIGtlcm5lbCBtb2R1bGUuIEFuZCwgaW50ZXJuYWxseSwgdGhlc2UgZnVuY3Rpb25zICp0aGVtc2VsdmVzKiBjYWxsIGBtaWdyYXRlX3ZtYV9wYWdlc2AuIEFoYSwgdGhhdCBsaWtlbHkgaGFuZGxlcyB0aGUgVmlydHVhbCBNZW1vcnkgQXJlYSBwYWdlIG1pZ3JhdGlvbiwgdGhlIGNvcmUgbWVjaGFuaXNtIG9mIG1vdmluZyBwYWdlcyBhcm91bmQuCgpOb3csIHdoZXJlIGRvZXMgdGhlICYjMzQ7ZGV2aWNlJiMzNDsgc2lkZSBnZXQgaW52b2x2ZWQ/IEkgbmVlZCB0byBkcmlsbCBkb3duIGludG8gYGRtaXJyb3JfZGV2aWNlX2V2aWN0X2NodW5rYC4gTXkgaHVuY2ggaXMgdGhpcyBpcyB0aGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIGFjdHVhbGx5IGtpY2tpbmcgb2ZmIHRoZSBkZXZpY2Ugc2lkZSBwYWdlIG1pZ3JhdGlvbi4gQW5kIGp1c3QgYXMgSSBzdXNwZWN0ZWQsIHRoaXMgZnVuY3Rpb24gYXBwZWFycyB0byBjYWxsIGBtaWdyYXRlX2RldmljZV9wYWdlc2AuIFRoaXMgY29uZmlybXMgdGhlIGRpcmVjdGlvbiBvZiB0aGUgcHJvY2VzcyBhcyBpdCByZWxhdGVzIHRvIGRldmljZSBjaHVua3MuIE5vdyBJIGhhdmUgYSBnb29kIGhhbmRsZSBvbiB3aGVyZSB0byBiZWdpbiBpbnNwZWN0aW5nIHRoZSBkZXRhaWxzIG9mIGVhY2ggbWlncmF0aW9uIGZ1bmN0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkbWlycm9yX2RldmljZV9ldmljdF9jaHVuayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2xpYi90ZXN0X2htbS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2xpYi90ZXN0X2htbS5jPTE2Mj1zdGF0aWMgaW50IGRtaXJyb3JfZm9wc19vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKVxuLS1cbmxpYi90ZXN0X2htbS5jLTE4Ny1cbmxpYi90ZXN0X2htbS5jOjE4ODpzdGF0aWMgdm9pZCBkbWlycm9yX2RldmljZV9ldmljdF9jaHVuayhzdHJ1Y3QgZG1pcnJvcl9jaHVuayAqY2h1bmspXG5saWIvdGVzdF9obW0uYy0xODkte1xuLS1cbmxpYi90ZXN0X2htbS5jPTIzOD1zdGF0aWMgaW50IGRtaXJyb3JfZm9wc19yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKVxuLS1cbmxpYi90ZXN0X2htbS5jLTI1MC1cbmxpYi90ZXN0X2htbS5jOjI1MTpcdFx0XHRkbWlycm9yX2RldmljZV9ldmljdF9jaHVuayhkZXZtZW0pO1xubGliL3Rlc3RfaG1tLmMtMjUyLVx0XHR9XG4tLVxubGliL3Rlc3RfaG1tLmM9MTQ4MT1zdGF0aWMgdm9pZCBkbWlycm9yX2RldmljZV9yZW1vdmVfY2h1bmtzKHN0cnVjdCBkbWlycm9yX2RldmljZSAqbWRldmljZSlcbi0tXG5saWIvdGVzdF9obW0uYy0xNDk1LVxubGliL3Rlc3RfaG1tLmM6MTQ5NjpcdFx0XHRkbWlycm9yX2RldmljZV9ldmljdF9jaHVuayhkZXZtZW0pO1xubGliL3Rlc3RfaG1tLmMtMTQ5Ny1cdFx0XHRtZW11bm1hcF9wYWdlcyhcdTAwMjZkZXZtZW0tXHUwMDNlcGFnZW1hcCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNjY2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRGV2aWNlIFBhZ2UgTWlncmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdG8gZWZmZWN0aXZlbHkgZnV6eiBkZXZpY2UgcGFnZSBtaWdyYXRpb24sIGFuZCBpdCBzZWVtcyB0aGUga2V5IGZ1bmN0aW9uIGNhbGxlZCBkdXJpbmcgcmVsZWFzZSBhbmQgZGV2aWNlIHJlbW92YWwgaXMgYGRtaXJyb3JfZGV2aWNlX2V2aWN0X2NodW5rYC4gQnV0IHRoZSByZWFsIGVudHJ5IHBvaW50cyBmb3IgZnV6emluZywgdGhlIG9uZXMgZG9pbmcgdGhlIGhlYXZ5IGxpZnRpbmcsIGFyZSBkZWZpbml0ZWx5IGBtaWdyYXRlX3ZtYV9wYWdlc2AgYW5kIGBtaWdyYXRlX2RldmljZV9wYWdlc2AuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBub3RpbmcgdGhhdCB0aGUgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGZ1bmN0aW9uIGlzIHRoZSBvbmUgdGhhdCB3YXMgcmVjZW50bHkgbW9kaWZpZWQuIEdvb2QsIGxldCYjMzk7cyBjb25maXJtIHRoYXQgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGlzIGluZGVlZCBzdGF0aWMg4oCTIGFuZCB5ZXMsIGl0JiMzOTtzIHN0YXRpYyB3aXRoaW4gYG1tL21pZ3JhdGVfZGV2aWNlLmNgLiBUaGF0IG1lYW5zIHdlIHNob3VsZCBjb25jZW50cmF0ZSBvdXIgZWZmb3J0cyBvbiBgbWlncmF0ZV92bWFfcGFnZXNgIGFuZCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgLgoKRm9yIGEgbW9yZSB0YXJnZXRlZCBmdXp6aW5nIHN0cmF0ZWd5LCBmb2N1c2VkIG9uIGEgdGVzdCBtb2R1bGUsIEkgY291bGQgYWxzbyBicmluZyBpbiBgZG1pcnJvcl9taWdyYXRlX3RvX3N5c3RlbWAgYW5kIGBkbWlycm9yX21pZ3JhdGVfdG9fZGV2aWNlYCwgYnV0IGBtaWdyYXRlX3ZtYV9wYWdlc2AgYW5kIGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYXJlIHRoZSBtb3JlIGNyaXRpY2FsIGNvcmUgZnVuY3Rpb25zLiBBbmQgaXQgbG9va3MgbGlrZSBgbWlncmF0ZV92bWFfcGFnZXNgIGFuZCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFyZSBleHBvcnRlZCBzeW1ib2xzLCB3aGljaCBpcyBmYW50YXN0aWMhIFRoYXQgbWFrZXMgdGhlbSBkaXJlY3RseSBhY2Nlc3NpYmxlLgoKTm93LCBsZXQmIzM5O3MgY29uc2lkZXIgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBXZSYjMzk7bGwgbmVlZCBgQ09ORklHX0RFVklDRV9NSUdSQVRJT05gLCB3aGljaCBpbiB0dXJuIGRlcGVuZHMgb24gYENPTkZJR19NSUdSQVRJT05gIGFuZCBgQ09ORklHX1pPTkVfREVWSUNFYC4gVG8gbWFrZSB0aGlzIGVhc2llciB0byB0cmlnZ2VyIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIEkmIzM5O2xsIGRlZmluaXRlbHkgd2FudCB0byBlbmFibGUgYENPTkZJR19URVNUX0hNTWAuIEFuZCB0aGF0IGRlcGVuZHMgb24gYENPTkZJR19UUkFOU1BBUkVOVF9IVUdFUEFHRWAgYW5kIGBDT05GSUdfREVWSUNFX1BSSVZBVEVgLiBGaW5hbGx5LCBgQ09ORklHX0RFVklDRV9QUklWQVRFYCBkZXBlbmRzIG9uIGBDT05GSUdfWk9ORV9ERVZJQ0VgLgoKU28sIHRoZSBjb21wbGV0ZSBsaXN0IG9mIGNvbmZpZyBvcHRpb25zIEkmIzM5O2xsIG5lZWQgdG8gZW5hYmxlIGFyZToKKiAgIGBERVZJQ0VfTUlHUkFUSU9OYAoqICAgYE1JR1JBVElPTmAKKiAgIGBaT05FX0RFVklDRWAKKiAgIGBURVNUX0hNTWAKKiAgIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAKKiAgIGBERVZJQ0VfUFJJVkFURWAKCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTtsbCBnbyBiYWNrIGFuZCBkb3VibGUtY2hlY2sgYG1tL21pZ3JhdGVfZGV2aWNlLmNgIG9uZSBtb3JlIHRpbWUgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBvdGhlciBwb3RlbnRpYWwgZW50cnkgcG9pbnRzIGZvciBmdXp6aW5nLiBJdCBhbHdheXMgcGF5cyB0byBiZSB0aG9yb3VnaCBpbiB0aGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vbWlncmF0ZV9kZXZpY2UuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9taWdyYXRlX2RldmljZS5jPTk2NT1zdGF0aWMgdm9pZCBtaWdyYXRlX3ZtYV9pbnNlcnRfcGFnZShzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUsXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMDk3LVxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMDk4OnN0YXRpYyB2b2lkIF9fbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsXG5tbS9taWdyYXRlX2RldmljZS5jLTEwOTktXHRcdFx0XHR1bnNpZ25lZCBsb25nICpkc3RfcGZucywgdW5zaWduZWQgbG9uZyBucGFnZXMsXG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMjU4PXZvaWQgbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsIHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLFxuLS1cbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2MC17XG5tbS9taWdyYXRlX2RldmljZS5jOjEyNjE6XHRfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHNyY19wZm5zLCBkc3RfcGZucywgbnBhZ2VzLCBOVUxMKTtcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2Mi19XG4tLVxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMjczPXZvaWQgbWlncmF0ZV92bWFfcGFnZXMoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlKVxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjc0LXtcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI3NTpcdF9fbWlncmF0ZV9kZXZpY2VfcGFnZXMobWlncmF0ZS1cdTAwM2VzcmMsIG1pZ3JhdGUtXHUwMDNlZHN0LCBtaWdyYXRlLVx1MDAzZW5wYWdlcywgbWlncmF0ZSk7XG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzYtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNDkyNQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBEZXZpY2UgUGFnZSBNaWdyYXRpb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgemVyb2VkIGluIG9uIHRoZSBmYWN0IHRoYXQgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYCBhcmUgdGhlIG9ubHkgZnVuY3Rpb25zIGNhbGxpbmcgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgLCB3aGljaCBpcyBrZXkuIFRoYXQgbWFrZXMgdGhlbSBleGNlbGxlbnQgY2FuZGlkYXRlcyBmb3IgZm9jdXNlZCBhbmFseXNpcy4gVGhleSYjMzk7cmUgYm90aCBwdWJsaWMgQVBJIGVudHJ5IHBvaW50cywgd2hpY2ggbWVhbnMgdGhpcyBpc24mIzM5O3Qgc29tZSBvYnNjdXJlIGludGVybmFsIGRldGFpbDsgdGhleSBhcmUgY2xlYXJseSBpbXBvcnRhbnQuCgpOb3csIHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIGJ1ZyB3aXRoaW4gYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIHNwZWNpZmljYWxseS4gSXQgc2VlbXMgbGlrZSB0aGUgYnVnIGNlbnRlcnMgYXJvdW5kIHRoZSBjb3VudCB2YXJpYWJsZSAoYG5yYCkgbm90IGJlaW5nIHJlc2V0IGFmdGVyIGEgZm9saW8gc3BsaXQsIGFuZCB0aGUgbWFwcGluZyBub3QgYmVpbmcgcmVmcmVzaGVkIHBvc3QgYGZvbGlvX2ZyZWVfc3dhcCgpYC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGFuIGltcG9ydGFudCBhcmVhIHRvIGFkZHJlc3MsIGFuZCBpdCBoYXMgcG90ZW50aWFsIGZvciBzdWJ0bGUgbWVtb3J5IGNvcnJ1cHRpb24gb3IgcmVzb3VyY2UgbGVha3MsIG1ha2luZyBpdCBhIHN0cm9uZyB0YXJnZXQgZm9yIGZ1enppbmcuIERlZmluaXRlbHkgd29ydGggdGhlIGVmZm9ydC4KCkxldCBtZSB0YWtlIGEgbG9vayBhdCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgaW1wbGljYXRlZDogYERFVklDRV9NSUdSQVRJT05gLCBgVEVTVF9ITU1gLCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLCBgREVWSUNFX1BSSVZBVEVgLCBgWk9ORV9ERVZJQ0VgLCBhbmQgYE1JR1JBVElPTmAuCgpHaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBmaXgsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhvc2UgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCBkZXBlbmRlbmNpZXMgdmVyeSBjYXJlZnVsbHkuIExhcmdlIHBhZ2VzIGFuZCBtaWdyYXRpb24gb2Z0ZW4gZ2V0IGludGVydHdpbmVkIGluIG5hc3R5IHdheXMsIHNvIHVuZGVyc3RhbmRpbmcgdGhlIGludGVyYWN0aW9ucyBpcyBjcml0aWNhbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bW0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDttbS9LY29uZmlnPTg0Mz1jb25maWcgTU1fSURcbi0tXG5tbS9LY29uZmlnLTg0NS1cbm1tL0tjb25maWc6ODQ2Om1lbnVjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0Vcbm1tL0tjb25maWctODQ3LVx0Ym9vbCBcJiMzNDtUcmFuc3BhcmVudCBIdWdlcGFnZSBTdXBwb3J0XCYjMzQ7XG4tLVxubW0vS2NvbmZpZz04NjQ9Y2hvaWNlXG4tLVxubW0vS2NvbmZpZy04NjktXG5tbS9LY29uZmlnOjg3MDpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9BTFdBWVNcbm1tL0tjb25maWctODcxLVx0XHRib29sIFwmIzM0O2Fsd2F5c1wmIzM0O1xuLS1cbm1tL0tjb25maWctODc2LVxubW0vS2NvbmZpZzo4Nzc6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfTUFEVklTRVxubW0vS2NvbmZpZy04NzgtXHRcdGJvb2wgXCYjMzQ7bWFkdmlzZVwmIzM0O1xuLS1cbm1tL0tjb25maWctODg1LVxubW0vS2NvbmZpZzo4ODY6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfTkVWRVJcbm1tL0tjb25maWctODg3LVx0XHRib29sIFwmIzM0O25ldmVyXCYjMzQ7XG4tLVxubW0vS2NvbmZpZz04OTM9Y2hvaWNlXG4tLVxubW0vS2NvbmZpZy05MDItXG5tbS9LY29uZmlnOjkwMzpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9TSE1FTV9IVUdFX05FVkVSXG5tbS9LY29uZmlnLTkwNC1cdFx0Ym9vbCBcJiMzNDtuZXZlclwmIzM0O1xuLS1cbm1tL0tjb25maWctOTEyLVxubW0vS2NvbmZpZzo5MTM6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9BTFdBWVNcbm1tL0tjb25maWctOTE0LVx0XHRib29sIFwmIzM0O2Fsd2F5c1wmIzM0O1xuLS1cbm1tL0tjb25maWctOTIwLVxubW0vS2NvbmZpZzo5MjE6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9XSVRISU5fU0laRVxubW0vS2NvbmZpZy05MjItXHRcdGJvb2wgXCYjMzQ7d2l0aGluX3NpemVcJiMzNDtcbi0tXG5tbS9LY29uZmlnLTkyOC1cbm1tL0tjb25maWc6OTI5Olx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfQURWSVNFXG5tbS9LY29uZmlnLTkzMC1cdFx0Ym9vbCBcJiMzNDthZHZpc2VcJiMzNDtcbi0tXG5tbS9LY29uZmlnPTkzOD1jaG9pY2Vcbi0tXG5tbS9LY29uZmlnLTk0Ny1cbm1tL0tjb25maWc6OTQ4Olx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfTkVWRVJcbm1tL0tjb25maWctOTQ5LVx0XHRib29sIFwmIzM0O25ldmVyXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy05NTYtXG5tbS9LY29uZmlnOjk1NzpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX0FMV0FZU1xubW0vS2NvbmZpZy05NTgtXHRcdGJvb2wgXCYjMzQ7YWx3YXlzXCYjMzQ7XG4tLVxubW0vS2NvbmZpZy05NjQtXG5tbS9LY29uZmlnOjk2NTpcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX1dJVEhJTl9TSVpFXG5tbS9LY29uZmlnLTk2Ni1cdFx0Ym9vbCBcJiMzNDt3aXRoaW5fc2l6ZVwmIzM0O1xuLS1cbm1tL0tjb25maWctOTcyLVxubW0vS2NvbmZpZzo5NzM6XHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfVE1QRlNfSFVHRV9BRFZJU0Vcbm1tL0tjb25maWctOTc0LVx0XHRib29sIFwmIzM0O2FkdmlzZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjE1NgoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXM6CgoqKkNoZWNraW5nIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgRGVwZW5kZW5jaWVzKioKClJpZ2h0LCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGl0IHJlbGllcyBvbiwgd2hhdCBvdGhlciBwaWVjZXMgb2YgdGhlIHN5c3RlbSBhcmUgcG90ZW50aWFsbHkgYWZmZWN0ZWQgYnkgaXRzIHByZXNlbmNlLCBhbmQgdW5kZXJzdGFuZCBpZiB0aGVyZSYjMzk7cyBhbnkgaW1tZWRpYXRlIHdvcmsgdGhhdCBuZWVkcyB0byBiZSBkb25lLiBJdCYjMzk7cyBjcnVjaWFsLCB3aGVuIGRlYWxpbmcgd2l0aCB0aGlzLCB0byBiZSBtZXRob2RpY2FsLiBJIGhhdmUgdG8gdGhpbmsgdGhyb3VnaCBhbnkga2VybmVsIGludGVyYWN0aW9ucyBhbmQgZW5zdXJlIHRoYXQgSSB1bmRlcnN0YW5kIGFueSBwb3RlbnRpYWwgY2FzY2FkaW5nIGVmZmVjdHMuIFdoZXJlIGlzIGl0IHVzZWQsIGhvdyBpcyBpdCB1c2VkLCBhbmQgd2hhdCBkb2VzIHRoZSBjb25maWd1cmF0aW9uIGxvb2sgbGlrZT8gSSYjMzk7bGwgcHJvYmFibHkgbmVlZCB0byBsb29rIGF0IHJlbGV2YW50IGRvY3VtZW50YXRpb24sIG1heWJlIHNvbWUga2VybmVsIHNvdXJjZSBjb2RlLCBhbmQgZGVmaW5pdGVseSBhbnkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmaWxlcy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLiBJ4oCZbGwgc3RhcnQgYnkgbGlzdGluZyBvdXQgdGhlIGtub3duIGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDttbS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODQ2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA4NDY6XHRtZW51Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFXG4gODQ3Olx0XHRib29sIFwmIzM0O1RyYW5zcGFyZW50IEh1Z2VwYWdlIFN1cHBvcnRcJiMzNDtcbiA4NDg6XHRcdGRlcGVuZHMgb24gSEFWRV9BUkNIX1RSQU5TUEFSRU5UX0hVR0VQQUdFIFx1MDAyNlx1MDAyNiAhUFJFRU1QVF9SVFxuIDg0OTpcdFx0c2VsZWN0IENPTVBBQ1RJT05cbiA4NTA6XHRcdHNlbGVjdCBYQVJSQVlfTVVMVElcbiA4NTE6XHRcdHNlbGVjdCBNTV9JRFxuIDg1MjpcdFx0aGVscFxuIDg1MzpcdFx0ICBUcmFuc3BhcmVudCBIdWdlcGFnZXMgYWxsb3dzIHRoZSBrZXJuZWwgdG8gdXNlIGh1Z2UgcGFnZXMgYW5kXG4gODU0Olx0XHQgIGh1Z2UgdGxiIHRyYW5zcGFyZW50bHkgdG8gdGhlIGFwcGxpY2F0aW9ucyB3aGVuZXZlciBwb3NzaWJsZS5cbiA4NTU6XHRcdCAgVGhpcyBmZWF0dXJlIGNhbiBpbXByb3ZlIGNvbXB1dGluZyBwZXJmb3JtYW5jZSB0byBjZXJ0YWluXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NTQ4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIFRyYW5zcGFyZW50IEh1Z2VwYWdlcyBhbmQgWm9uZSBEZXZpY2UgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBpdCBzZWVtcyB0aGUgZW5hYmxpbmcgb2YgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCByZWxpZXMgb24gYm90aCBgSEFWRV9BUkNIX1RSQU5TUEFSRU5UX0hVR0VQQUdFYCBiZWluZyBkZWZpbmVkICphbmQqIHRoZSBzeXN0ZW0gKm5vdCogYmVpbmcgYSByZWFsLXRpbWUgcHJlZW1wdGlvbiBrZXJuZWwsIGAhUFJFRU1QVF9SVGAuIFRoYXQmIzM5O3Mgc3RhbmRhcmQgYmVoYXZpb3IuIE5vdGhpbmcgdG9vIHN1cnByaXNpbmcgdGhlcmUuIEkmIzM5O20gdXNlZCB0byBzZWVpbmcgdGhpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb24geDg2XzY0IHN5c3RlbXMsIHNvIHRoYXQgcGFydCBjaGVja3Mgb3V0LgoKTm93LCBsZXQmIzM5O3Mgc2hpZnQgZ2VhcnMgYW5kIHF1aWNrbHkgdmVyaWZ5IHdoYXQmIzM5O3MgZGVwZW5kZW50IG9uIGBaT05FX0RFVklDRWAuIEkgbmVlZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHVuZXhwZWN0ZWQgaW50ZXJhY3Rpb25zIG9yIGNvbmZsaWN0cyBpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byB0aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMjM2LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzEyMzY6XHRjb25maWcgWk9ORV9ERVZJQ0VcbjEyMzc6XHRcdGJvb2wgXCYjMzQ7RGV2aWNlIG1lbW9yeSAocG1lbSwgSE1NLCBldGMuLi4pIGhvdHBsdWcgc3VwcG9ydFwmIzM0O1xuMTIzODpcdFx0ZGVwZW5kcyBvbiBNRU1PUllfSE9UUExVR1xuMTIzOTpcdFx0ZGVwZW5kcyBvbiBNRU1PUllfSE9UUkVNT1ZFXG4xMjQwOlx0XHRkZXBlbmRzIG9uIFNQQVJTRU1FTV9WTUVNTUFQXG4xMjQxOlx0XHRzZWxlY3QgWEFSUkFZX01VTFRJXG4xMjQyOlx0XG4xMjQzOlx0XHRoZWxwXG4xMjQ0Olx0XHQgIERldmljZSBtZW1vcnkgaG90cGx1ZyBzdXBwb3J0IGFsbG93cyBmb3IgZXN0YWJsaXNoaW5nIHBtZW0sXG4xMjQ1Olx0XHQgIG9yIG90aGVyIGRldmljZSBkcml2ZXIgZGlzY292ZXJlZCBtZW1vcnkgcmVnaW9ucywgaW4gdGhlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2OTU4CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogOTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgcXVpY2sgcnVuZG93biBvZiB0aGVzZSBrZXJuZWwgY29uZmlndXJhdGlvbiBjb25zaWRlcmF0aW9uczoKCioqS2VybmVsIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzIGFuZCBDb25zaWRlcmF0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCBteSBpbml0aWFsIHRob3VnaHQgaGVyZSBpcyB0aGF0IGBaT05FX0RFVklDRWAgaXMgZGlyZWN0bHkgdGllZCB0byBgTUVNT1JZX0hPVFBMVUdgLCBgTUVNT1JZX0hPVFJFTU9WRWAsIGFuZCBgU1BBUlNFTUVNX1ZNRU1NQVBgLiBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBkZXBlbmRlbmN5IGNoYWluLiBOb3csIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LCBJJiMzOTttIGdvaW5nIHRvIGxpc3QgYSBidW5jaCBvZiByZWxhdGVkIGNvbmZpZ3MuIEkmIzM5O2xsIGluY2x1ZGUgYFpPTkVfREVWSUNFYCBpdHNlbGYsIGFsb25nIHdpdGggYERFVklDRV9NSUdSQVRJT05gLCBgVEVTVF9ITU1gLCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLCBgREVWSUNFX1BSSVZBVEVgLCBhbmQgYE1JR1JBVElPTmAuCgpOb3csIGJlZm9yZSBJIGNvbW1pdCB0byBhbnl0aGluZywgSSB3YW50IHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgVEVTVF9ITU1gLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgdGhhdCBwYXJ0aWN1bGFyIGNvbmZpZyBoYXMgYW55IGFkZGl0aW9uYWwgZGVwZW5kZW5jaWVzIHRoYXQgYXJlbiYjMzk7dCBpbW1lZGlhdGVseSBvYnZpb3VzLCBvciBpZiB0aGVyZSYjMzk7cyBhbnl0aGluZyBlbHNlIHRoYXQgSSBzaG91bGQgYmUgdGFraW5nIGludG8gYWNjb3VudC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nIGNyaXRpY2FsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2xpYi9LY29uZmlnLmRlYnVnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzM1NCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMzU0Olx0Y29uZmlnIFRFU1RfSE1NXG4zMzU1Olx0XHR0cmlzdGF0ZSBcJiMzNDtUZXN0IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudClcJiMzNDtcbjMzNTY6XHRcdGRlcGVuZHMgb24gVFJBTlNQQVJFTlRfSFVHRVBBR0VcbjMzNTc6XHRcdGRlcGVuZHMgb24gREVWSUNFX1BSSVZBVEVcbjMzNTg6XHRcdHNlbGVjdCBITU1fTUlSUk9SXG4zMzU5Olx0XHRzZWxlY3QgTU1VX05PVElGSUVSXG4zMzYwOlx0XHRoZWxwXG4zMzYxOlx0XHQgIFRoaXMgaXMgYSBwc2V1ZG8gZGV2aWNlIGRyaXZlciBzb2xlbHkgZm9yIHRlc3RpbmcgSE1NLlxuMzM2MjpcdFx0ICBTYXkgTSBoZXJlIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHRoZSBITU0gdGVzdCBtb2R1bGUuXG4zMzYzOlx0XHQgIERvaW5nIHNvIHdpbGwgYWxsb3cgeW91IHRvIHJ1biB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0L3ZtL2htbS10ZXN0cy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc0ODEKCQkJCQkJCW91dHB1dDogMTYwCgkJCQkJCQl0aG91Z2h0czogMTYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBDb2RlIENoYW5nZSoqCgpPa2F5LCBzbyB0aGUgc3lzdGVtIGNob3NlIGBITU1fTUlSUk9SYCBhbmQgYE1NVV9OT1RJRklFUmAgYmFzZWQgb24gdGhlIGNvbnRleHQsIHdoaWNoIG1ha2VzIHNlbnNlLiBOb3csIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIGludm9sdmVkIGluIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgYG1pZ3JhdGVfdm1hX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhcmUgdGhlIGZvY3VzLiBUaGUgcmVhc29uaW5nIGlzIHNvbGlkOiB0aGlzIHBhdGNoIGlzIGZpeGluZyBzb21ldGhpbmcgd2l0aGluIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgYW5kIHRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGJvdGggb2YgdGhvc2UgaGlnaC1sZXZlbCBtaWdyYXRpb24gZnVuY3Rpb25zLiBUaGUgYnVnIHNlZW1zIHRvIGNlbnRlciBhcm91bmQgZm9saW8gc3BsaXR0aW5nIGFuZCB0aGUgc3dhcCBjYWNoZSwgd2hpY2ggZGVmaW5pdGVseSBzb3VuZHMgbGlrZSBhIGZ1bmN0aW9uYWwgaXNzdWUuCgpCZWZvcmUgSSBnbyBmdXJ0aGVyLCBsZXQmIzM5O3MganVzdCBjb25maXJtIHRob3NlIHR3byBjb3JlIGZ1bmN0aW9ucyBhcmVuJiMzOTt0IHNvbWV0aGluZyB3ZWlyZCBsaWtlIHN0YXRpYyBvciBpbmxpbmVkLCBzaW5jZSB0aGF0IHdvdWxkIGNvbXBsaWNhdGUgdGhpbmdzLiBBIHF1aWNrIGNoZWNrLi4uIHllcCwgdGhleSYjMzk7cmUgZXhwb3J0ZWQgc3ltYm9scy4gVGhhdCYjMzk7cyBnb29kLCB0aGF0IGNvbmZpcm1zIHRoZXkmIzM5O3JlIG5vdCBzb21lIGxvY2FsLCBoaWRkZW4gaW1wbGVtZW50YXRpb25zLiBBbHJpZ2h0LCBub3cgSSBmZWVsIGNvbmZpZGVudCBpbiBtb3ZpbmcgZm9yd2FyZC4gSSYjMzk7bGwgZ28gYWhlYWQgYW5kIHNldCB0aGUgcmVzdWx0cyBhY2NvcmRpbmdseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0RFVklDRV9NSUdSQVRJT04mIzM0OywKICAgICYjMzQ7VEVTVF9ITU0mIzM0OywKICAgICYjMzQ7VFJBTlNQQVJFTlRfSFVHRVBBR0UmIzM0OywKICAgICYjMzQ7REVWSUNFX1BSSVZBVEUmIzM0OywKICAgICYjMzQ7Wk9ORV9ERVZJQ0UmIzM0OywKICAgICYjMzQ7TUlHUkFUSU9OJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWlncmF0ZV92bWFfcGFnZXMmIzM0OywKICAgICYjMzQ7bWlncmF0ZV9kZXZpY2VfcGFnZXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgLCB3aGljaCBpcyBhIGNvcmUgZnVuY3Rpb24gZm9yIGRldmljZSBtZW1vcnkgbWlncmF0aW9uLiBJdCBmaXhlcyBhIGJ1ZyByZWxhdGVkIHRvIGZvbGlvIHNwbGl0IGFuZCBzd2FwIGNhY2hlLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBgbWlncmF0ZV92bWFfcGFnZXNgIGFuZCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgLCB3aGljaCBjYW4gYmUgdHJpZ2dlcmVkIHVzaW5nIHRoZSBgVEVTVF9ITU1gIHBzZXVkbyBkZXZpY2UgZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtERVZJQ0VfTUlHUkFUSU9OJiMzNDssCiAgICAmIzM0O1RFU1RfSE1NJiMzNDssCiAgICAmIzM0O1RSQU5TUEFSRU5UX0hVR0VQQUdFJiMzNDssCiAgICAmIzM0O0RFVklDRV9QUklWQVRFJiMzNDssCiAgICAmIzM0O1pPTkVfREVWSUNFJiMzNDssCiAgICAmIzM0O01JR1JBVElPTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21pZ3JhdGVfdm1hX3BhZ2VzJiMzNDssCiAgICAmIzM0O21pZ3JhdGVfZGV2aWNlX3BhZ2VzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgd2hpY2ggaXMgYSBjb3JlIGZ1bmN0aW9uIGZvciBkZXZpY2UgbWVtb3J5IG1pZ3JhdGlvbi4gSXQgZml4ZXMgYSBidWcgcmVsYXRlZCB0byBmb2xpbyBzcGxpdCBhbmQgc3dhcCBjYWNoZS4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgYG1pZ3JhdGVfdm1hX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgd2hpY2ggY2FuIGJlIHRyaWdnZXJlZCB1c2luZyB0aGUgYFRFU1RfSE1NYCBwc2V1ZG8gZGV2aWNlIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA3OjUzLjE5NTA0ODk1MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExODkxODc3NTA5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJERVZJQ0VfTUlHUkFUSU9OXCIsXG4gICAgXCJURVNUX0hNTVwiLFxuICAgIFwiVFJBTlNQQVJFTlRfSFVHRVBBR0VcIixcbiAgICBcIkRFVklDRV9QUklWQVRFXCIsXG4gICAgXCJaT05FX0RFVklDRVwiLFxuICAgIFwiTUlHUkFUSU9OXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWlncmF0ZV92bWFfcGFnZXNcIixcbiAgICBcIm1pZ3JhdGVfZGV2aWNlX3BhZ2VzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgLCB3aGljaCBpcyBhIGNvcmUgZnVuY3Rpb24gZm9yIGRldmljZSBtZW1vcnkgbWlncmF0aW9uLiBJdCBmaXhlcyBhIGJ1ZyByZWxhdGVkIHRvIGZvbGlvIHNwbGl0IGFuZCBzd2FwIGNhY2hlLiBUaGUgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSBgbWlncmF0ZV92bWFfcGFnZXNgIGFuZCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgLCB3aGljaCBjYW4gYmUgdHJpZ2dlcmVkIHVzaW5nIHRoZSBgVEVTVF9ITU1gIHBzZXVkbyBkZXZpY2UgZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzowNzo1My4xOTUwNTU3ODJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0NDY1MzMyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDEzMDllMTJkNmVmOGM4MGY1N2FmNGY3ODYzYjI4Zjk4MWU2ZjM0YTVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgMjcgMTc6MDc6NTEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vbWlncmF0ZV9kZXZpY2UuYyBiL21tL21pZ3JhdGVfZGV2aWNlLmNcXG5pbmRleCA1NTQ3NTRlYjI2ZmYyZi4uNzRhYzY2NTFkNGIzNDMgMTAwNjQ0XFxuLS0tIGEvbW0vbWlncmF0ZV9kZXZpY2UuY1xcbisrKyBiL21tL21pZ3JhdGVfZGV2aWNlLmNcXG5AQCAtMTE4Miw2ICsxMTgyLDExIEBAIHN0YXRpYyB2b2lkIF9fbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdCBNSUdSQVRFX1BGTl9DT01QT1VORCk7XFxuIFxcdFxcdFxcdFxcdFxcdGdvdG8gbmV4dDtcXG4gXFx0XFx0XFx0XFx0fVxcbitcXHRcXHRcXHRcXHQvKlxcbitcXHRcXHRcXHRcXHQgKiByZXNldCBuciBzbyB0aGF0IG9ubHkgZmlyc3QgYWZ0ZXItc3BsaXQgZm9saW9cXG4rXFx0XFx0XFx0XFx0ICogaXMgcHJvY2Vzc2VkIGJlbG93XFxuK1xcdFxcdFxcdFxcdCAqL1xcbitcXHRcXHRcXHRcXHRuciA9IDE7XFxuIFxcdFxcdFxcdH0gZWxzZSBpZiAoKHNyY19wZm5zW2ldIFxcdTAwMjYgTUlHUkFURV9QRk5fTUlHUkFURSkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0XFx0XFx0KGRzdF9wZm5zW2ldIFxcdTAwMjYgTUlHUkFURV9QRk5fQ09NUE9VTkQpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdFxcdFxcdCEoc3JjX3BmbnNbaV0gXFx1MDAyNiBNSUdSQVRFX1BGTl9DT01QT1VORCkpIHtcXG5AQCAtMTIwNCw2ICsxMjA5LDEyIEBAIHN0YXRpYyB2b2lkIF9fbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsXFxuIFxcdFxcdFxcdFxcdFxcdHNyY19wZm5zW2ldIFxcdTAwMjY9IH5NSUdSQVRFX1BGTl9NSUdSQVRFO1xcbiBcXHRcXHRcXHRcXHRcXHRnb3RvIG5leHQ7XFxuIFxcdFxcdFxcdFxcdH1cXG4rXFxuK1xcdFxcdFxcdFxcdC8qXFxuK1xcdFxcdFxcdFxcdCAqIGZvbGlvX2ZyZWVfc3dhcCgpIHJlbW92ZWQgdGhlIGZvbGlvIGZyb20gdGhlIHN3YXBcXG4rXFx0XFx0XFx0XFx0ICogY2FjaGUuIFJlZnJlc2ggdGhlIHNhdmVkIG1hcHBpbmcgYmVmb3JlIG1pZ3JhdGlvbi5cXG4rXFx0XFx0XFx0XFx0ICovXFxuK1xcdFxcdFxcdFxcdG1hcHBpbmcgPSBmb2xpb19tYXBwaW5nKGZvbGlvKTtcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHR9IGVsc2UgaWYgKGZvbGlvX2lzX3pvbmVfZGV2aWNlKG5ld2ZvbGlvKSkge1xcbiBcXHRcXHRcXHQvKlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzowNzo1My45NDA4NTU5MjdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMTgxNzI5NTQyMzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREVWSUNFX01JR1JBVElPTlwiLFxuICAgIFwiVEVTVF9ITU1cIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCIsXG4gICAgXCJERVZJQ0VfUFJJVkFURVwiLFxuICAgIFwiWk9ORV9ERVZJQ0VcIixcbiAgICBcIk1JR1JBVElPTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1pZ3JhdGVfdm1hX3BhZ2VzXCIsXG4gICAgXCJtaWdyYXRlX2RldmljZV9wYWdlc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgd2hpY2ggaXMgYSBjb3JlIGZ1bmN0aW9uIGZvciBkZXZpY2UgbWVtb3J5IG1pZ3JhdGlvbi4gSXQgZml4ZXMgYSBidWcgcmVsYXRlZCB0byBmb2xpbyBzcGxpdCBhbmQgc3dhcCBjYWNoZS4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgYG1pZ3JhdGVfdm1hX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgd2hpY2ggY2FuIGJlIHRyaWdnZXJlZCB1c2luZyB0aGUgYFRFU1RfSE1NYCBwc2V1ZG8gZGV2aWNlIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTMwOWUxMmQ2ZWY4YzgwZjU3YWY0Zjc4NjNiMjhmOTgxZTZmMzRhNVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDI3IDE3OjA3OjUxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vbWlncmF0ZV9kZXZpY2UuYyBiL21tL21pZ3JhdGVfZGV2aWNlLmNcbmluZGV4IDU1NDc1NGViMjZmZjJmLi43NGFjNjY1MWQ0YjM0MyAxMDA2NDRcbi0tLSBhL21tL21pZ3JhdGVfZGV2aWNlLmNcbisrKyBiL21tL21pZ3JhdGVfZGV2aWNlLmNcbkBAIC0xMTgyLDYgKzExODIsMTEgQEAgc3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcbiBcdFx0XHRcdFx0XHRcdCBNSUdSQVRFX1BGTl9DT01QT1VORCk7XG4gXHRcdFx0XHRcdGdvdG8gbmV4dDtcbiBcdFx0XHRcdH1cbitcdFx0XHRcdC8qXG4rXHRcdFx0XHQgKiByZXNldCBuciBzbyB0aGF0IG9ubHkgZmlyc3QgYWZ0ZXItc3BsaXQgZm9saW9cbitcdFx0XHRcdCAqIGlzIHByb2Nlc3NlZCBiZWxvd1xuK1x0XHRcdFx0ICovXG4rXHRcdFx0XHRuciA9IDE7XG4gXHRcdFx0fSBlbHNlIGlmICgoc3JjX3BmbnNbaV0gXHUwMDI2IE1JR1JBVEVfUEZOX01JR1JBVEUpIFx1MDAyNlx1MDAyNlxuIFx0XHRcdFx0KGRzdF9wZm5zW2ldIFx1MDAyNiBNSUdSQVRFX1BGTl9DT01QT1VORCkgXHUwMDI2XHUwMDI2XG4gXHRcdFx0XHQhKHNyY19wZm5zW2ldIFx1MDAyNiBNSUdSQVRFX1BGTl9DT01QT1VORCkpIHtcbkBAIC0xMjA0LDYgKzEyMDksMTIgQEAgc3RhdGljIHZvaWQgX19taWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucyxcbiBcdFx0XHRcdFx0c3JjX3BmbnNbaV0gXHUwMDI2PSB+TUlHUkFURV9QRk5fTUlHUkFURTtcbiBcdFx0XHRcdFx0Z290byBuZXh0O1xuIFx0XHRcdFx0fVxuK1xuK1x0XHRcdFx0LypcbitcdFx0XHRcdCAqIGZvbGlvX2ZyZWVfc3dhcCgpIHJlbW92ZWQgdGhlIGZvbGlvIGZyb20gdGhlIHN3YXBcbitcdFx0XHRcdCAqIGNhY2hlLiBSZWZyZXNoIHRoZSBzYXZlZCBtYXBwaW5nIGJlZm9yZSBtaWdyYXRpb24uXG4rXHRcdFx0XHQgKi9cbitcdFx0XHRcdG1hcHBpbmcgPSBmb2xpb19tYXBwaW5nKGZvbGlvKTtcbiBcdFx0XHR9XG4gXHRcdH0gZWxzZSBpZiAoZm9saW9faXNfem9uZV9kZXZpY2UobmV3Zm9saW8pKSB7XG4gXHRcdFx0LypcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA3OjUzLjk0MDg1ODYxOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwMDIwNjQ5NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNZW1vcnkgTWlncmF0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG1tL21pZ3JhdGVfZGV2aWNlLmNgLiBTcGVjaWZpY2FsbHksIGl0J3MgdHdlYWtpbmcgdGhlIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBmdW5jdGlvbi4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhlIGNoYW5nZXMgYXJlIGZhaXJseSBmb2N1c2VkLCBidXQgbGV0J3MgZGlnIGRlZXBlci4gVGhlIGZpcnN0IHRoaW5nIHRoYXQgY2F0Y2hlcyBteSBleWUgaXMgdGhlIGFkZGl0aW9uIG9mIGBuciA9IDE7YCBhZnRlciBhIGZvbGlvIHNwbGl0LiBUaGlzIHRlbGxzIG1lIHRoZXkncmUgbGlrZWx5IGRlYWxpbmcgd2l0aCB0aGUgcGFnZSBjb3VudCBhZnRlciBhIHNwbGl0LCB3aGljaCBpcyBjcnVjaWFsIGZvciBjb3JyZWN0IGl0ZXJhdGlvbiBvciBhY2NvdW50aW5nLiBJdCBzZWVtcyBzdHJhaWdodGZvcndhcmQsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIGZvciB0aGUgb3ZlcmFsbCBtaWdyYXRpb24gcHJvY2Vzcy5cblxuVGhlIHNlY29uZCBhZGRpdGlvbiwgYG1hcHBpbmcgPSBmb2xpb19tYXBwaW5nKGZvbGlvKTtgIGFmdGVyIGBmb2xpb19mcmVlX3N3YXAoKWAsIGxvb2tzIGVxdWFsbHkgaW1wb3J0YW50LiBUaGUgc3dhcCBmcmVlaW5nIGZ1bmN0aW9uIHN1Z2dlc3RzIHRoYXQgdGhpcyBmb2xpbyB3YXMgcHJldmlvdXNseSBzd2FwcGVkIG91dC4gTm93LCBpdCBzZWVtcyBsaWtlIHRoZXkgYXJlIHRyeWluZyB0byBvYnRhaW4gdGhlIG1hcHBpbmcgb2YgdGhlIGZvbGlvLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoZXkgaW50ZW5kIHRvIGRvIHdpdGggaXQgb25jZSB0aGUgc3dhcCBpcyBmcmVlZCwgbWF5YmUgcmVsYXRlZCB0byBkZXZpY2UgbWlncmF0aW9uLiBUaGlzIGluZGljYXRlcyBwb3RlbnRpYWwgY2hhbmdlcyBpbiBob3cgdGhlIHN5c3RlbSBoYW5kbGVzIHN3YXBwZWQgcGFnZXMgZHVyaW5nIGRldmljZSBtaWdyYXRpb24sIGFuZCB0aGlzIGhhcyB0byBiZSBjYXJlZnVsbHkgZXhhbWluZWQuXG5cblRvIGZ1bGx5IGdyYXNwIHRoZSBpbnRlbnQgYW5kIHBvdGVudGlhbCBpbXBhY3QsIEkgbmVlZCB0byB6b29tIG91dCBhbmQgYW5hbHl6ZSB0aGUgYnJvYWRlciBjb250ZXh0IG9mIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCB3aXRoaW4gdGhlIGxhcmdlciBgbW0vbWlncmF0ZV9kZXZpY2UuY2AgZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGNoYW5nZXMgZml0IGludG8gdGhlIGV4aXN0aW5nIGZsb3cgYW5kIHdoYXQgb3RoZXIgZnVuY3Rpb25zIG9yIGRhdGEgc3RydWN0dXJlcyB0aGV5IGludGVyYWN0IHdpdGguIFRoZSBnb2FsIGlzIHRvIHNlZSBpZiB0aGV5J3ZlIGFjY291bnRlZCBmb3IgYWxsIHRoZSBlZGdlIGNhc2VzIGFuZCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBnaXZlbiB0aGUgbmF0dXJlIG9mIG1lbW9yeSBtaWdyYXRpb24uIExldCdzIGdldCB0byBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIzNCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MDc6NTguOTQyOTI2NTQ4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMzYwOTYyOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL21pZ3JhdGVfZGV2aWNlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vbWlncmF0ZV9kZXZpY2UuYz05NjU9c3RhdGljIHZvaWQgbWlncmF0ZV92bWFfaW5zZXJ0X3BhZ2Uoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlLFxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMDk3LVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTA5ODpzdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTA5OS1cXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nICpkc3RfcGZucywgdW5zaWduZWQgbG9uZyBucGFnZXMsXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jPTEyNTg9dm9pZCBtaWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywgdW5zaWduZWQgbG9uZyAqZHN0X3BmbnMsXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjAte1xcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI2MTpcXHRfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHNyY19wZm5zLCBkc3RfcGZucywgbnBhZ2VzLCBOVUxMKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjItfVxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMjczPXZvaWQgbWlncmF0ZV92bWFfcGFnZXMoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlKVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI3NC17XFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjc1OlxcdF9fbWlncmF0ZV9kZXZpY2VfcGFnZXMobWlncmF0ZS1cXHUwMDNlc3JjLCBtaWdyYXRlLVxcdTAwM2Vkc3QsIG1pZ3JhdGUtXFx1MDAzZW5wYWdlcywgbWlncmF0ZSk7XFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjc2LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MDc6NTkuMDc2NTQ0NzA2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU2NjM5MTMxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBEZXZpY2UgUGFnZSBNaWdyYXRpb24qKlxuXG5SaWdodCwgc28gYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGlzIGNsZWFybHkgdGhlIGNvcmUgZnVuY3Rpb24gaGVyZSwgdGhlIG9uZSBhY3R1YWxseSBkb2luZyB0aGUgaGVhdnkgbGlmdGluZy4gQm90aCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFuZCBgbWlncmF0ZV92bWFfcGFnZXNgIHNlZW0gdG8gYmUgY2FsbGluZyBpdCwgd2hpY2ggc3VnZ2VzdHMgYSBzaGFyZWQgY29yZSBmdW5jdGlvbmFsaXR5IGZvciBtaWdyYXRpbmcgcGFnZXMgcmVsYXRlZCB0byBkZXZpY2VzLiBPa2F5LCBzbyBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgbGFyZ2VyIGNvbnRleHQuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29uZmlndXJhdGlvbnMgYWN0dWFsbHkgKmVuYWJsZSogdGhlIGBtbS9taWdyYXRlX2RldmljZS5jYCBmaWxlIGFuZCBpdHMgZnVuY3Rpb25hbGl0eS4gV2hhdCBhcmUgdGhlIGRlcGVuZGVuY2llcz8gV2hhdCBmZWF0dXJlIGZsYWdzIGFyZSBpbnZvbHZlZD8gTGV0J3MgY2hlY2sgdGhlIEtjb25maWcgYW5kIHNlZSB3aGF0IGRlZmluZXMgdGhlc2Ugb3B0aW9ucy4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB1bmRlciB3aGF0IGNpcmN1bXN0YW5jZXMgdGhpcyBjb2RlIHBhdGggaXMgZXZlbiBhY3RpdmUuIEl0J2xsIGdpdmUgbWUgY29udGV4dCBvbiB3aGF0IGFyY2hpdGVjdHVyYWwgYXNzdW1wdGlvbnMgYXJlIGJ1aWx0IGluIHRvIHRoZSBtaWdyYXRpb24gY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAxMSwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjAyLjY0MjkzOTI2NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjk5NzM5NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWlncmF0ZV9kZXZpY2Uub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9NYWtlZmlsZT05OT1vYmotJChDT05GSUdfTlVNQSkgKz0gbWVtb3J5LXRpZXJzLm9cXG5tbS9NYWtlZmlsZToxMDA6b2JqLSQoQ09ORklHX0RFVklDRV9NSUdSQVRJT04pICs9IG1pZ3JhdGVfZGV2aWNlLm9cXG5tbS9NYWtlZmlsZS0xMDEtb2JqLSQoQ09ORklHX1RSQU5TUEFSRU5UX0hVR0VQQUdFKSArPSBodWdlX21lbW9yeS5vIGtodWdlcGFnZWQub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzowODowMi43NzI5MjI3NzNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDI1NzYwMTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBEZXZpY2UgTWlncmF0aW9uIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBgQ09ORklHX0RFVklDRV9NSUdSQVRJT05gIGlzIGZsaXBwZWQuIE5hdHVyYWxseSwgdGhhdCBwdWxscyBpbiBgbW0vbWlncmF0ZV9kZXZpY2UuY2AuIE5vdywgYXMgYW4gZXhwZXJ0IGluIHRoaXMgYXJlYSwgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGUgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgYXJjaGl0ZWN0dXJhbCBwcmVyZXF1aXNpdGVzIGFuZCBzdXBwb3J0aW5nIGluZnJhc3RydWN0dXJlIHRoYXQgYWxsb3dzIGZvciBkZXZpY2UgbWlncmF0aW9uLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zIGFyZSB0aWVkIHRvIGBDT05GSUdfREVWSUNFX01JR1JBVElPTmAuIFVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgZGVwZW5kZW5jeSB0cmVlIGlzIGNyaXRpY2FsIHRvIGFzc2Vzc2luZyBpdHMgaW1wbGljYXRpb25zIG9uIG1lbW9yeSBtYW5hZ2VtZW50IGFuZCBvdmVyYWxsIHN5c3RlbSBzdGFiaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzNjcsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzowODowNS43OTg2ODY0MjNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY4NzM5OTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIERFVklDRV9NSUdSQVRJT05cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTY5Nj1jb25maWcgTUlHUkFUSU9OXFxuLS1cXG5tbS9LY29uZmlnLTY5OS1cXG5tbS9LY29uZmlnOjcwMDpjb25maWcgREVWSUNFX01JR1JBVElPTlxcbm1tL0tjb25maWctNzAxLVxcdGRlZl9ib29sIE1JR1JBVElPTiBcXHUwMDI2XFx1MDAyNiBaT05FX0RFVklDRVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzowODowNS44OTU1NjY5NTFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjMzNDk5NTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGZyb20gYW4gZXhwZXJ0J3MgcGVyc3BlY3RpdmU6XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIERldmljZSBNaWdyYXRpb24gTG9naWMqKlxuXG5SaWdodCwgc28gYERFVklDRV9NSUdSQVRJT05gIGlzIGRlZmluZWQgYXMgYSBib29sZWFuIHRoYXQgcmVxdWlyZXMgYm90aCBgTUlHUkFUSU9OYCBhbmQgYFpPTkVfREVWSUNFYCB0byBiZSB0cnVlLiBNYWtlcyBzZW5zZS4gSXQncyBhIGNvbmRpdGlvbmFsIHNldHRpbmcsIGVzc2VudGlhbGx5LiBNaWdyYXRpb24sIGluIGl0c2VsZiwgaXNuJ3QgZW5vdWdoOyB3ZSdyZSBkZWFsaW5nIHdpdGggem9uZS1zcGVjaWZpYyBkZXZpY2UgbWlncmF0aW9uLCB3aGljaCBpcyBtb3JlIHRhcmdldGVkLiBPa2F5LCBsZXQncyBqdXN0IG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgYFpPTkVfREVWSUNFYCBjb21wbGV0ZWx5LCB0aG91Z2guIEknbGwgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhhdC4gR290dGEgZW5zdXJlIGFsbCB0aGUgcGllY2VzIGFyZSB3aGVyZSB0aGV5IG5lZWQgdG8gYmUsIGVzcGVjaWFsbHkgd2l0aCBzb21ldGhpbmcgdGhhdCBjb3VsZCBpbXBhY3QgZGV2aWNlIGJlaGF2aW9yIGluIGEgem9uZS4gQmV0dGVyIHRvIGJlIHRob3JvdWdoLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjM4LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MDg6MDkuMTI5MDcwMDQ3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzM0NjkxNDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFpPTkVfREVWSUNFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vS2NvbmZpZz0xMjMxPWNvbmZpZyBaT05FX0RNQTMyXFxuLS1cXG5tbS9LY29uZmlnLTEyMzUtXFxubW0vS2NvbmZpZzoxMjM2OmNvbmZpZyBaT05FX0RFVklDRVxcbm1tL0tjb25maWctMTIzNy1cXHRib29sIFxcXCJEZXZpY2UgbWVtb3J5IChwbWVtLCBITU0sIGV0Yy4uLikgaG90cGx1ZyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzowODowOS4yNjI1NDYyMTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzk1ODM0NTY4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIE1lbW9yeSBNaWdyYXRpb24gQ2FwYWJpbGl0aWVzKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gSSdtIGZvY3VzaW5nIG9uIGBDT05GSUdfWk9ORV9ERVZJQ0VgIGFuZCBgQ09ORklHX01JR1JBVElPTmAg4oCTIHRob3NlIGFyZSB0aGUga2V5IGZsYWdzIGluZGljYXRpbmcgc3VwcG9ydCBmb3IgZGV2aWNlIHpvbmVzIGFuZCBwYWdlIG1pZ3JhdGlvbi4gTm93LCB0aGUgcmVhbCBxdWVzdGlvbiBpcyBob3cgZGVlcGx5IHRob3NlIGZlYXR1cmVzIGFyZSB3b3ZlbiBpbnRvIHRoZSBzeXN0ZW0uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBjaGVjayBob3cgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYCBhcmUgKmV4cG9zZWQqLiBJIG5lZWQgdG8gc2VlIHdoZXJlIHRoZXNlIGNyaXRpY2FsIGZ1bmN0aW9ucyBhcmUgZXhwb3J0ZWQgdG8gZ2F1Z2UgdGhlIGFjY2Vzc2liaWxpdHkgYW5kIGludGVncmF0aW9uIHBvaW50cyBvZiB0aGUgbWlncmF0aW9uIG1lY2hhbmlzbXMuIFdoZXJlIHRoZXnigJlyZSB2aXNpYmxlIHRlbGxzIHRoZSB3aG9sZSBzdG9yeS4gQXJlIHdlIHRhbGtpbmcgbW9kdWxlIGFjY2Vzcywgb3IgaXMgaXQgZGVlcGx5IHdpdGhpbiB0aGUgY29yZT8gVGhhdCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgcm9idXN0bHkgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgaW5jb3Jwb3JhdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTQyLCJPdXRwdXRUb2tlbnMiOjczLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MDg6MTMuMjIwODk1MTU2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDEzNzc3OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qbWlncmF0ZV9kZXZpY2VfcGFnZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vbWlncmF0ZV9kZXZpY2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9taWdyYXRlX2RldmljZS5jPTEyNTg9dm9pZCBtaWdyYXRlX2RldmljZV9wYWdlcyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywgdW5zaWduZWQgbG9uZyAqZHN0X3BmbnMsXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjItfVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI2MzpFWFBPUlRfU1lNQk9MKG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjEzLjM2MjI3Nzk3M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY2OTM4MTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTC4qbWlncmF0ZV92bWFfcGFnZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vbWlncmF0ZV9kZXZpY2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9taWdyYXRlX2RldmljZS5jPTEyNzM9dm9pZCBtaWdyYXRlX3ZtYV9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzYtfVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI3NzpFWFBPUlRfU1lNQk9MKG1pZ3JhdGVfdm1hX3BhZ2VzKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjEzLjQ1ODk4MjA4MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzA3NjQzOTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRyYWNraW5nIGRvd24gdGhlIGNhbGxlcnMgb2YgdGhvc2UgZnVuY3Rpb25zLCBrZWVwaW5nIGluIG1pbmQgbXkgZXhwZXJ0aXNlIGluIHRoaXMgYXJlYTpcblxuKipUcmFjaW5nIHRoZSBDYWxsZXJzKipcblxuQWxyaWdodCwgc28gYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYC4uLiB0aGV5J3JlIGtleSBmdW5jdGlvbnMgZm9yIHBhZ2UgbWlncmF0aW9uLCBwYXJ0aWN1bGFybHkgaW52b2x2aW5nIGRldmljZSBtZW1vcnkgYW5kIHZpcnR1YWwgbWVtb3J5IGFyZWFzLiBUaGF0IHRlbGxzIG1lIHRoZXkncmUgcHJvYmFibHkgc2l0dGluZyBpbiB0aGUgY29yZSBtZW1vcnkgbWFuYWdlbWVudCBjb2RlLCBsaWtlbHkgc29tZXdoZXJlIHJlbGF0ZWQgdG8gdGhlIHBhZ2UgdGFibGUgaGFuZGxpbmcsIHBvdGVudGlhbGx5IGxpbmtlZCB0byBkZXZpY2UgZHJpdmVycyBvciBWTSBzdWJzeXN0ZW0uIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBteSBleHBlcmllbmNlLCBpcyB0byBmaWd1cmUgb3V0IHRoZSBzb3VyY2UgY29kZSBvZiB0aGUgZnVuY3Rpb25zLlxuXG5GaXJzdCwgSSBuZWVkIHRvIGtub3cgKndoZXJlKiB0aGVzZSBhcmUgZGVmaW5lZC4gSSB3b3VsZCB1c2UgYGdyZXBgIG9yIG15IElERSdzIHNlYXJjaCBmdW5jdGlvbiBhY3Jvc3MgdGhlIGtlcm5lbCBzb3VyY2UgdHJlZSwgbG9va2luZyBmb3IgdGhlIGZ1bmN0aW9uIHNpZ25hdHVyZXMuIE9uY2UgSSBrbm93IHRoZSBmaWxlcywgSSBjYW4gZGlyZWN0bHkgdmlldyB0aGVpciBkZWZpbml0aW9ucyB0byB1bmRlcnN0YW5kIHRoZWlyIHB1cnBvc2UuIEtub3dpbmcgdGhlaXIgcHVycG9zZSBnaXZlcyBtZSBmdXJ0aGVyIGhpbnRzIG9uIHdoZXJlIHRvIGxvb2sgbmV4dC5cblxuT25jZSBJIGhhdmUgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb25zLCBJJ2xsIHRoZW4gdXNlIG15IGNvZGUgbmF2aWdhdGlvbiB0b29scyAobGlrZSBgY3Njb3BlYCwgYGN0YWdzYCwgb3IgbXkgSURFJ3MgYnVpbHQtaW4gY2FsbCBncmFwaCBmZWF0dXJlcykgdG8gcGVyZm9ybSBhIFwiZmluZCBjYWxsZXJzXCIgc2VhcmNoLiBUaGF0J3MgdGhlIG1vc3QgZGlyZWN0IG1ldGhvZC4gSSBjYW4gc2NhbiB0aGUgY29kZSB0byBsb29rIGZvciB0aGUgdXNlcyBvZiB0aGUgZnVuY3Rpb25zLlxuXG5JIG5lZWQgdG8gYmUgc3lzdGVtYXRpYy4gVGhpcyBtaWdodCBpbnZvbHZlIHNldHRpbmcgdXAgYSBjcm9zcy1yZWZlcmVuY2Ugc2VhcmNoLCBzY2FubmluZyBrZXJuZWwgbW9kdWxlcyB0aGF0IGhhdmUgdG8gZG8gd2l0aCBwYWdlIG1pZ3JhdGlvbiwgZGV2aWNlIGRyaXZlcnMgKGVzcGVjaWFsbHkgdGhvc2UgaGFuZGxpbmcgRE1BIG9yIG1lbW9yeS1tYXBwZWQgSS9PKSwgb3IgdGhlIHZpcnR1YWwgbWVtb3J5IGFyZWEgY29kZSAoYG1tL2ApLiBJIHdpbGwgcGF5IGF0dGVudGlvbiB0byBhbnkgY2FsbHMgd2l0aCBkZXZpY2Ugc3BlY2lmaWMgY29kZSBhcyB0aGlzIGlzIHJlbGF0ZWQgdG8gYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYFxuXG5JIHdpbGwgYWxzbyBjb25zaWRlciBzdGF0aWMgYW5hbHlzaXMsIGlmIGF2YWlsYWJsZSwgd2hpY2ggY2FuIHByb3ZpZGUgYSBtb3JlIGV4aGF1c3RpdmUgbG9vayBhdCBwb3RlbnRpYWwgY2FsbCBwYXRocywgaW5jbHVkaW5nIHRob3NlIGludm9sdmluZyBmdW5jdGlvbiBwb2ludGVycyBvciBpbmRpcmVjdCBjYWxscy4gSSBtaWdodCBhbHNvIGNvbnNpZGVyIHRoZSB1c2Ugb2YgYHRyYWNlcG9pbnRzYCBvciBga3Byb2Jlc2AgdG8gZHluYW1pY2FsbHkgbW9uaXRvciB0aGUgY2FsbHMgdG8gdGhlc2UgZnVuY3Rpb25zIGR1cmluZyBydW50aW1lLCBlc3BlY2lhbGx5IG9uIGEgdGVzdCBzeXN0ZW0sIHRvIGNhdGNoIGluZnJlcXVlbnQgY2FsbHMgb3IgdGhvc2UgdHJpZ2dlcmVkIGJ5IHNwZWNpZmljIGV2ZW50cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDQyOCwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzowODoxOC4xNjY2MjgyNjhaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1MDM4MzIxMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWlncmF0ZV9kZXZpY2VfcGFnZXNcXFxcKFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM9MTEwOT1pbnQgZHJtX3BhZ2VtYXBfZXZpY3RfdG9fcmFtKHN0cnVjdCBkcm1fcGFnZW1hcF9kZXZtZW0gKmRldm1lbV9hbGxvY2F0aW9uKVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmMtMTE3NC1cXHRcXHRkcm1fcGFnZW1hcF9taWdyYXRpb25fdW5sb2NrX3B1dF9wYWdlcyhucGFnZXMsIGRzdCk7XFxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmM6MTE3NTpcXHRtaWdyYXRlX2RldmljZV9wYWdlcyhzcmMsIGRzdCwgbnBhZ2VzKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy0xMTc2LVxcdG1pZ3JhdGVfZGV2aWNlX2ZpbmFsaXplKHNyYywgZHN0LCBucGFnZXMpO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM9NDc1PW5vdXZlYXVfZG1lbV9ldmljdF9jaHVuayhzdHJ1Y3Qgbm91dmVhdV9kbWVtX2NodW5rICpjaHVuaylcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jLTUxNy1cXHRub3V2ZWF1X2ZlbmNlX25ldyhcXHUwMDI2ZmVuY2UsIGNodW5rLVxcdTAwM2Vkcm0tXFx1MDAzZWRtZW0tXFx1MDAzZW1pZ3JhdGUuY2hhbik7XFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM6NTE4OlxcdG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKHNyY19wZm5zLCBkc3RfcGZucywgbnBhZ2VzKTtcXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy01MTktXFx0bm91dmVhdV9kbWVtX2ZlbmNlX2RvbmUoXFx1MDAyNmZlbmNlKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbWlncmF0ZS5oPTE5OD1pbnQgbWlncmF0ZV9kZXZpY2VfcGZucyh1bnNpZ25lZCBsb25nICpzcmNfcGZucywgdW5zaWduZWQgbG9uZyBucGFnZXMpO1xcbmluY2x1ZGUvbGludXgvbWlncmF0ZS5oOjE5OTp2b2lkIG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLCB1bnNpZ25lZCBsb25nICpkc3RfcGZucyxcXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaC0yMDAtXFx0XFx0XFx0dW5zaWduZWQgbG9uZyBucGFnZXMpO1xcbi0tXFxubGliL3Rlc3RfaG1tLmM9MTg4PXN0YXRpYyB2b2lkIGRtaXJyb3JfZGV2aWNlX2V2aWN0X2NodW5rKHN0cnVjdCBkbWlycm9yX2NodW5rICpjaHVuaylcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTIzMS1cXHR9XFxubGliL3Rlc3RfaG1tLmM6MjMyOlxcdG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKHNyY19wZm5zLCBkc3RfcGZucywgbnBhZ2VzKTtcXG5saWIvdGVzdF9obW0uYy0yMzMtXFx0bWlncmF0ZV9kZXZpY2VfZmluYWxpemUoc3JjX3BmbnMsIGRzdF9wZm5zLCBucGFnZXMpO1xcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYz05NjU9c3RhdGljIHZvaWQgbWlncmF0ZV92bWFfaW5zZXJ0X3BhZ2Uoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlLFxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMDk3LVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTA5ODpzdGF0aWMgdm9pZCBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLFxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTA5OS1cXHRcXHRcXHRcXHR1bnNpZ25lZCBsb25nICpkc3RfcGZucywgdW5zaWduZWQgbG9uZyBucGFnZXMsXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNDktLyoqXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjUwOiAqIG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKCkgLSBtaWdyYXRlIG1ldGEtZGF0YSBmcm9tIHNyYyBwYWdlIHRvIGRzdCBwYWdlXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjUxLSAqIEBzcmNfcGZuczogc3JjX3BmbnMgcmV0dXJuZWQgZnJvbSBtaWdyYXRlX2RldmljZV9yYW5nZSgpXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTctICovXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjU4OnZvaWQgbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsIHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLFxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI1OS1cXHRcXHRcXHR1bnNpZ25lZCBsb25nIG5wYWdlcylcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjAte1xcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI2MTpcXHRfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzKHNyY19wZm5zLCBkc3RfcGZucywgbnBhZ2VzLCBOVUxMKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjItfVxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMjczPXZvaWQgbWlncmF0ZV92bWFfcGFnZXMoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlKVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI3NC17XFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjc1OlxcdF9fbWlncmF0ZV9kZXZpY2VfcGFnZXMobWlncmF0ZS1cXHUwMDNlc3JjLCBtaWdyYXRlLVxcdTAwM2Vkc3QsIG1pZ3JhdGUtXFx1MDAzZW5wYWdlcywgbWlncmF0ZSk7XFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjc2LX1cXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTM2Nj1zdGF0aWMgdW5zaWduZWQgbG9uZyBtaWdyYXRlX2RldmljZV9wZm5fbG9jayh1bnNpZ25lZCBsb25nIHBmbilcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTM5OC0gKiBhbGxvY2F0ZSBkZXN0aW5hdGlvbiBwYWdlcyBhbmQgc3RhcnQgY29weWluZyBkYXRhIGZyb20gdGhlIGRldmljZSB0byBDUFVcXG5tbS9taWdyYXRlX2RldmljZS5jOjEzOTk6ICogbWVtb3J5IGJlZm9yZSBjYWxsaW5nIG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKCkuXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xNDAwLSAqL1xcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYz0xNDY2PWludCBtaWdyYXRlX2RldmljZV9jb2hlcmVudF9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvKVxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xNDkwLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTQ5MTpcXHRtaWdyYXRlX2RldmljZV9wYWdlcyhcXHUwMDI2c3JjX3BmbiwgXFx1MDAyNmRzdF9wZm4sIDEpO1xcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTQ5Mi1cXHRpZiAoc3JjX3BmbiBcXHUwMDI2IE1JR1JBVEVfUEZOX01JR1JBVEUpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjIxLjY3MDQ2NDg4OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjkwMzg0MDYyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtaWdyYXRlX3ZtYV9wYWdlc1xcXFwoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL21tL2htbS5yc3Q9MjY0PXVzZSBoYXJkd2FyZSBETUEgb3IgZGV2aWNlIHNwZWNpZmljIGxvYWQvc3RvcmUgaW5zdHJ1Y3Rpb25zIHRvIG1pZ3JhdGUgZGF0YS5cXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3Q6MjY1OlRoZSBtaWdyYXRlX3ZtYV9zZXR1cCgpLCBtaWdyYXRlX3ZtYV9wYWdlcygpLCBhbmQgbWlncmF0ZV92bWFfZmluYWxpemUoKVxcbkRvY3VtZW50YXRpb24vbW0vaG1tLnJzdC0yNjYtZnVuY3Rpb25zIGFyZSBkZXNpZ25lZCB0byBtYWtlIGRyaXZlcnMgZWFzaWVyIHRvIHdyaXRlIGFuZCB0byBjZW50cmFsaXplIGNvbW1vblxcbi0tXFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0PTI5Nz1iZXR3ZWVuIGRldmljZSBkcml2ZXIgc3BlY2lmaWMgY29kZSBhbmQgc2hhcmVkIGNvbW1vbiBjb2RlOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTM2NC1cXG5Eb2N1bWVudGF0aW9uL21tL2htbS5yc3Q6MzY1OjQuIGBgbWlncmF0ZV92bWFfcGFnZXMoKWBgXFxuRG9jdW1lbnRhdGlvbi9tbS9obW0ucnN0LTM2Ni1cXG4tLVxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3Q9MjEyPUhNTSDliIfmjaLliLDnm7TmjqXkvb/nlKggc3RydWN0IHBhZ2Ug55So5LqO6K6+5aSH5YaF5a2Y77yM6L+Z5L2/5b6X5aSn5aSa5pWw5YaF5qC45Luj56CB6Lev5b6E5LiN55+l6YGT5beu5byC44CCXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0LTIxOC3nlLHkuo4gQ1BVIOaXoOazleebtOaOpeiuv+mXruiuvuWkh+WGheWtmO+8jOWboOatpOiuvuWkh+mpseWKqOeoi+W6j+W/hemhu+S9v+eUqOehrOS7tiBETUEg5oiW6K6+5aSH54m55a6a55qE5Yqg6L29L+WtmFxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3Q6MjE5OuWCqOaMh+S7pOadpei/geenu+aVsOaNruOAgm1pZ3JhdGVfdm1hX3NldHVwKCnjgIFtaWdyYXRlX3ZtYV9wYWdlcygpIOWSjFxcbkRvY3VtZW50YXRpb24vdHJhbnNsYXRpb25zL3poX0NOL21tL2htbS5yc3QtMjIwLW1pZ3JhdGVfdm1hX2ZpbmFsaXplKCkg5Ye95pWw5peo5Zyo5L2/6amx5Yqo56iL5bqP5pu05piT5LqO57yW5YaZ5bm26ZuG5Lit6Leo6amx5Yqo56iL5bqP55qE6YCa55So5Luj56CB44CCXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0PTI0Mz1kZXZtX21lbXVubWFwX3BhZ2VzKCkg5ZKMIGRldm1fcmVsZWFzZV9tZW1fcmVnaW9uKCkg5b2T6LWE5rqQ5Y+v5Lul57uR5a6a5YiwIGBgc3RydWN0IGRldmljZWBgLlxcbi0tXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdC0yOTctXFxuRG9jdW1lbnRhdGlvbi90cmFuc2xhdGlvbnMvemhfQ04vbW0vaG1tLnJzdDoyOTg6NC4gYGBtaWdyYXRlX3ZtYV9wYWdlcygpYGBcXG5Eb2N1bWVudGF0aW9uL3RyYW5zbGF0aW9ucy96aF9DTi9tbS9obW0ucnN0LTI5OS1cXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmM9NTEzPXN0YXRpYyBpbnQgX19rdm1wcGNfc3ZtX3BhZ2Vfb3V0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLFxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYy01NzgtXFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYzo1Nzk6XFx0bWlncmF0ZV92bWFfcGFnZXMoXFx1MDAyNm1pZyk7XFxuYXJjaC9wb3dlcnBjL2t2bS9ib29rM3NfaHZfdXZtZW0uYy01ODAtXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jPTc0MD1zdGF0aWMgaW50IGt2bXBwY19zdm1fcGFnZV9pbihzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSxcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmMtNzg3LVxcdCptaWcuZHN0ID0gbWlncmF0ZV9wZm4ocGFnZV90b19wZm4oZHBhZ2UpKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jOjc4ODpcXHRtaWdyYXRlX3ZtYV9wYWdlcyhcXHUwMDI2bWlnKTtcXG5hcmNoL3Bvd2VycGMva3ZtL2Jvb2szc19odl91dm1lbS5jLTc4OS1vdXRfZmluYWxpemU6XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jPTM5ND1zdm1fbWlncmF0ZV92bWFfdG9fdnJhbShzdHJ1Y3Qga2ZkX25vZGUgKm5vZGUsIHN0cnVjdCBzdm1fcmFuZ2UgKnByYW5nZSxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmMtNDUxLVxcdHIgPSBzdm1fbWlncmF0ZV9jb3B5X3RvX3ZyYW0obm9kZSwgcHJhbmdlLCBcXHUwMDI2bWlncmF0ZSwgXFx1MDAyNm1mZW5jZSwgc2NyYXRjaCwgdHRtX3Jlc19vZmZzZXQpO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmM6NDUyOlxcdG1pZ3JhdGVfdm1hX3BhZ2VzKFxcdTAwMjZtaWdyYXRlKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jLTQ1My1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9taWdyYXRlLmM9NjkzPXN2bV9taWdyYXRlX3ZtYV90b19yYW0oc3RydWN0IGtmZF9ub2RlICpub2RlLCBzdHJ1Y3Qgc3ZtX3JhbmdlICpwcmFuZ2UsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jLTc1NS1cXHRcXHRcXHRcXHQgICAgc2NyYXRjaCwgbnBhZ2VzKTtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfbWlncmF0ZS5jOjc1NjpcXHRtaWdyYXRlX3ZtYV9wYWdlcyhcXHUwMDI2bWlncmF0ZSk7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX21pZ3JhdGUuYy03NTctXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYz02MTY9aW50IGRybV9wYWdlbWFwX21pZ3JhdGVfdG9fZGV2bWVtKHN0cnVjdCBkcm1fcGFnZW1hcF9kZXZtZW0gKmRldm1lbV9hbGxvY2F0aW9uLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmMtODEyLWVycl9hYm9ydGVkX21pZ3JhdGlvbjpcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYzo4MTM6XFx0bWlncmF0ZV92bWFfcGFnZXMoXFx1MDAyNm1pZ3JhdGUpO1xcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jLTgxNC1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9kcm1fcGFnZW1hcC5jPTEyMTE9c3RhdGljIGludCBfX2RybV9wYWdlbWFwX21pZ3JhdGVfdG9fcmFtKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdmFzLFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmMtMTMwNC1cXHRcXHRkcm1fcGFnZW1hcF9taWdyYXRpb25fdW5sb2NrX3B1dF9wYWdlcyhucGFnZXMsIG1pZ3JhdGUuZHN0KTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYzoxMzA1OlxcdG1pZ3JhdGVfdm1hX3BhZ2VzKFxcdTAwMjZtaWdyYXRlKTtcXG5kcml2ZXJzL2dwdS9kcm0vZHJtX3BhZ2VtYXAuYy0xMzA2LVxcdG1pZ3JhdGVfdm1hX2ZpbmFsaXplKFxcdTAwMjZtaWdyYXRlKTtcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jPTE4Mz1zdGF0aWMgdm1fZmF1bHRfdCBub3V2ZWF1X2RtZW1fbWlncmF0ZV90b19yYW0oc3RydWN0IHZtX2ZhdWx0ICp2bWYpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy0yNjctXFx0bm91dmVhdV9mZW5jZV9uZXcoXFx1MDAyNmZlbmNlLCBkbWVtLVxcdTAwM2VtaWdyYXRlLmNoYW4pO1xcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jOjI2ODpcXHRtaWdyYXRlX3ZtYV9wYWdlcyhcXHUwMDI2YXJncyk7XFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmMtMjY5LVxcdG5vdXZlYXVfZG1lbV9mZW5jZV9kb25lKFxcdTAwMjZmZW5jZSk7XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYz03ODM9c3RhdGljIHZvaWQgbm91dmVhdV9kbWVtX21pZ3JhdGVfY2h1bmsoc3RydWN0IG5vdXZlYXVfZHJtICpkcm0sXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9ub3V2ZWF1X2RtZW0uYy04MDktXFx0bm91dmVhdV9mZW5jZV9uZXcoXFx1MDAyNmZlbmNlLCBkcm0tXFx1MDAzZWRtZW0tXFx1MDAzZW1pZ3JhdGUuY2hhbik7XFxuZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbm91dmVhdV9kbWVtLmM6ODEwOlxcdG1pZ3JhdGVfdm1hX3BhZ2VzKGFyZ3MpO1xcbmRyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L25vdXZlYXVfZG1lbS5jLTgxMS1cXHRub3V2ZWF1X2RtZW1fZmVuY2VfZG9uZShcXHUwMDI2ZmVuY2UpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg9MTU4PXN0cnVjdCBtaWdyYXRlX3ZtYSB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaC0xNjUtXFx0ICogbWlncmF0ZV92bWFfc2V0dXAoKSwgYW5kIG11c3Qgbm90IGNoYW5nZSB0aGUgZHN0IGFycmF5IGFmdGVyXFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg6MTY2OlxcdCAqIG1pZ3JhdGVfdm1hX3BhZ2VzKCkgcmV0dXJucy5cXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaC0xNjctXFx0ICovXFxuLS1cXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaD0xOTM9aW50IG1pZ3JhdGVfdm1hX3NldHVwKHN0cnVjdCBtaWdyYXRlX3ZtYSAqYXJncyk7XFxuaW5jbHVkZS9saW51eC9taWdyYXRlLmg6MTk0OnZvaWQgbWlncmF0ZV92bWFfcGFnZXMoc3RydWN0IG1pZ3JhdGVfdm1hICptaWdyYXRlKTtcXG5pbmNsdWRlL2xpbnV4L21pZ3JhdGUuaC0xOTUtdm9pZCBtaWdyYXRlX3ZtYV9maW5hbGl6ZShzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpO1xcbi0tXFxubGliL3Rlc3RfaG1tLmM9MTEyMD1zdGF0aWMgaW50IGRtaXJyb3JfbWlncmF0ZV90b19zeXN0ZW0oc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXFxuLS1cXG5saWIvdGVzdF9obW0uYy0xMTc1LVxcbmxpYi90ZXN0X2htbS5jOjExNzY6XFx0XFx0bWlncmF0ZV92bWFfcGFnZXMoXFx1MDAyNmFyZ3MpO1xcbmxpYi90ZXN0X2htbS5jLTExNzctXFx0XFx0Y21kLVxcdTAwM2VjcGFnZXMgKz0gZG1pcnJvcl9zdWNjZXNzZnVsX21pZ3JhdGVkX3BhZ2VzKFxcdTAwMjZhcmdzKTtcXG4tLVxcbmxpYi90ZXN0X2htbS5jPTExODk9c3RhdGljIGludCBkbWlycm9yX21pZ3JhdGVfdG9fZGV2aWNlKHN0cnVjdCBkbWlycm9yICpkbWlycm9yLFxcbi0tXFxubGliL3Rlc3RfaG1tLmMtMTI0OC1cXHRcXHRkbWlycm9yX21pZ3JhdGVfYWxsb2NfYW5kX2NvcHkoXFx1MDAyNmFyZ3MsIGRtaXJyb3IpO1xcbmxpYi90ZXN0X2htbS5jOjEyNDk6XFx0XFx0bWlncmF0ZV92bWFfcGFnZXMoXFx1MDAyNmFyZ3MpO1xcbmxpYi90ZXN0X2htbS5jLTEyNTAtXFx0XFx0ZG1pcnJvcl9taWdyYXRlX2ZpbmFsaXplX2FuZF9tYXAoXFx1MDAyNmFyZ3MsIGRtaXJyb3IpO1xcbi0tXFxubGliL3Rlc3RfaG1tLmM9MTY1Mz1zdGF0aWMgdm1fZmF1bHRfdCBkbWlycm9yX2Rldm1lbV9mYXVsdChzdHJ1Y3Qgdm1fZmF1bHQgKnZtZilcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTE3MTgtXFx0fVxcbmxpYi90ZXN0X2htbS5jOjE3MTk6XFx0bWlncmF0ZV92bWFfcGFnZXMoXFx1MDAyNmFyZ3MpO1xcbmxpYi90ZXN0X2htbS5jLTE3MjAtXFx0LypcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM9NjU5PXN0YXRpYyB2b2lkIG1pZ3JhdGVfdm1hX3VubWFwKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSlcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNjk5LSAqIHRoaXMgY2FuIHN0aWxsIGZhaWwsIGFuZCB0aHVzIGluc2lkZSB0aGUgZGV2aWNlIGRyaXZlciB5b3UgbXVzdCBjaGVjayBpZiB0aGVcXG5tbS9taWdyYXRlX2RldmljZS5jOjcwMDogKiBtaWdyYXRpb24gd2FzIHN1Y2Nlc3NmdWwgZm9yIHRob3NlIGVudHJpZXMgYWZ0ZXIgY2FsbGluZyBtaWdyYXRlX3ZtYV9wYWdlcygpLFxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzAxLSAqIGp1c3QgbGlrZSBmb3IgcmVndWxhciBtaWdyYXRpb24uXFxubW0vbWlncmF0ZV9kZXZpY2UuYy03MDItICpcXG5tbS9taWdyYXRlX2RldmljZS5jOjcwMzogKiBBZnRlciB0aGF0LCB0aGUgY2FsbGVycyBtdXN0IGNhbGwgbWlncmF0ZV92bWFfcGFnZXMoKSB0byBnbyBvdmVyIGVhY2ggZW50cnlcXG5tbS9taWdyYXRlX2RldmljZS5jLTcwNC0gKiBpbiB0aGUgc3JjIGFycmF5IHRoYXQgaGFzIHRoZSBNSUdSQVRFX1BGTl9WQUxJRCBhbmQgTUlHUkFURV9QRk5fTUlHUkFURSBmbGFnXFxubW0vbWlncmF0ZV9kZXZpY2UuYy03MDUtICogc2V0LiBJZiB0aGUgY29ycmVzcG9uZGluZyBlbnRyeSBpbiBkc3QgYXJyYXkgaGFzIE1JR1JBVEVfUEZOX1ZBTElEIGZsYWcgc2V0LFxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6NzA2OiAqIHRoZW4gbWlncmF0ZV92bWFfcGFnZXMoKSB0byBtaWdyYXRlIHN0cnVjdCBwYWdlIGluZm9ybWF0aW9uIGZyb20gdGhlIHNvdXJjZVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzA3LSAqIHN0cnVjdCBwYWdlIHRvIHRoZSBkZXN0aW5hdGlvbiBzdHJ1Y3QgcGFnZS4gIElmIGl0IGZhaWxzIHRvIG1pZ3JhdGUgdGhlXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTcxNC0gKlxcbm1tL21pZ3JhdGVfZGV2aWNlLmM6NzE1OiAqIE9uY2UgbWlncmF0ZV92bWFfcGFnZXMoKSByZXR1cm5zIHRoZSBjYWxsZXIgbWF5IGluc3BlY3Qgd2hpY2ggcGFnZXMgd2VyZVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzE2LSAqIHN1Y2Nlc3NmdWxseSBtaWdyYXRlZCwgYW5kIHdoaWNoIHdlcmUgbm90LiAgU3VjY2Vzc2Z1bGx5IG1pZ3JhdGVkIHBhZ2VzIHdpbGxcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtNzE4LSAqXFxubW0vbWlncmF0ZV9kZXZpY2UuYzo3MTk6ICogSXQgaXMgc2FmZSB0byB1cGRhdGUgZGV2aWNlIHBhZ2UgdGFibGUgYWZ0ZXIgbWlncmF0ZV92bWFfcGFnZXMoKSBiZWNhdXNlXFxubW0vbWlncmF0ZV9kZXZpY2UuYy03MjAtICogYm90aCBkZXN0aW5hdGlvbiBhbmQgc291cmNlIHBhZ2UgYXJlIHN0aWxsIGxvY2tlZCwgYW5kIHRoZSBtbWFwX2xvY2sgaXMgaGVsZFxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYz0xMDk4PXN0YXRpYyB2b2lkIF9fbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNTQtICpcXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNTU6ICogRXF1aXZhbGVudCB0byBtaWdyYXRlX3ZtYV9wYWdlcygpLiBUaGlzIGlzIGNhbGxlZCB0byBtaWdyYXRlIHN0cnVjdCBwYWdlXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjU2LSAqIG1ldGEtZGF0YSBmcm9tIHNvdXJjZSBzdHJ1Y3QgcGFnZSB0byBkZXN0aW5hdGlvbi5cXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTI2Mz1FWFBPUlRfU1lNQk9MKG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKTtcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2NS0vKipcXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNjY6ICogbWlncmF0ZV92bWFfcGFnZXMoKSAtIG1pZ3JhdGUgbWV0YS1kYXRhIGZyb20gc3JjIHBhZ2UgdG8gZHN0IHBhZ2VcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNjctICogQG1pZ3JhdGU6IG1pZ3JhdGUgc3RydWN0IGNvbnRhaW5pbmcgYWxsIG1pZ3JhdGlvbiBpbmZvcm1hdGlvblxcbi0tXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjcyLSAqL1xcbm1tL21pZ3JhdGVfZGV2aWNlLmM6MTI3Mzp2b2lkIG1pZ3JhdGVfdm1hX3BhZ2VzKHN0cnVjdCBtaWdyYXRlX3ZtYSAqbWlncmF0ZSlcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzQte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzowODoyNC41NzQzMTE1OTFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA5ODUzNDE4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTWVtb3J5IE1pZ3JhdGlvbiBGdW5jdGlvbiBVc2FnZSoqXG5cbk9rYXksIHNvIEknbSBzZWVpbmcgdGhhdCB0aGUgZnVuY3Rpb25zIGBtaWdyYXRlX3ZtYV9wYWdlc2AgYW5kIGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYXJlIHV0aWxpemVkIHdpdGhpbiBzZXZlcmFsIGRpc3RpbmN0IHBhcnRzIG9mIHRoZSBrZXJuZWwuIFNwZWNpZmljYWxseSwgdGhleSdyZSBlbXBsb3llZCBpbiBgbGliL3Rlc3RfaG1tLmNgLCBgZHJpdmVycy9ncHUvZHJtL25vdXZlYXVgLCBgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmRgLCBgZHJpdmVycy9ncHUvZHJtL2RybV9wYWdlbWFwLmNgLCBhbmQgYGFyY2gvcG93ZXJwYy9rdm0vYm9vazNzX2h2X3V2bWVtLmNgLiBUaGF0J3MgcXVpdGUgYSBzcHJlYWQuIE5vdywgSSBrbm93IGBsaWIvdGVzdF9obW0uY2AgaXMgdGhlIHRlc3QgbW9kdWxlIGZvciBIZXRlcm9nZW5lb3VzIE1lbW9yeSBNYW5hZ2VtZW50LCBITU0uIEl0IHNlZW1zIGxpa2UgdGhlc2UgbWlncmF0aW9uIGZ1bmN0aW9ucyBhcmUgZnVuZGFtZW50YWwgdG8gSE1NJ3Mgb3BlcmF0aW9uIGFjcm9zcyBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlcyBhbmQgZGV2aWNlIGRyaXZlcnMsIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgaW50ZWdyYXRpb24gcGF0aCBmb3IgZWFjaCBpbXBsZW1lbnRhdGlvbi4gVGhlIHF1ZXN0aW9uIGlzIHdoZXRoZXIgYHRlc3RfaG1tYCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuIEkgbmVlZCB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFzc29jaWF0ZWQgd2l0aCBgbGliL3Rlc3RfaG1tLmNgIHRvIHVuZGVyc3RhbmQgd2hlbiB0aGlzIHRlc3RpbmcgbW9kdWxlIGlzIGluY2x1ZGVkIG9yIHdoYXQgY29uZGl0aW9ucyB0cmlnZ2VyIGl0cyBpbmNsdXNpb24uIFRoaXMgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIGJyb2FkZXIgaW1wYWN0IGFuZCB1c2FnZSBvZiB0aGVzZSBjb3JlIG1pZ3JhdGlvbiBmdW5jdGlvbnMgd2l0aGluIHRoZSBrZXJuZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg5ODcsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjI5LjY3Mjg0ODNaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwOTI5NDkxOCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGVzdF9obW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL0tjb25maWcuZGVidWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjI5Ljc4MjE1MjYzOFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODk3MjMwOTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYHRlc3RfaG1tYCBTb3VyY2UqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgY29uZmlndXJhdGlvbiBvciBidWlsZCBwcm9jZXNzIGZvciBgdGVzdF9obW1gLiBHaXZlbiB0aGF0IGl0J3MgYSB0ZXN0LCBteSBmaXJzdCBpbnN0aW5jdCBpcyB0byBsb29rIHdpdGhpbiB0aGUgY29uZmlndXJhdGlvbiBhbmQgYnVpbGQgc3lzdGVtIGZpbGVzLiBUaGUgb2J2aW91cyBzdXNwZWN0cyBhcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiAoYGxpYi9LY29uZmlnYCkgYW5kIHRoZSBtYWluIGBNYWtlZmlsZWAgKGxpa2VseSBpbiBgbGliL01ha2VmaWxlYCkuIFRoZSBLY29uZmlnIGZpbGUgc2hvdWxkIGRlZmluZSB0aGUgZGVwZW5kZW5jaWVzIGFuZCBlbmFibGUvZGlzYWJsZSBvcHRpb25zLCB3aGlsZSB0aGUgTWFrZWZpbGUgd291bGQgY29udGFpbiB0aGUgYnVpbGQgcnVsZXMgYW5kIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzLiBJJ2xsIHN0YXJ0IHdpdGggdGhvc2UgdHdvIGxvY2F0aW9ucy4gSWYgaXTigJlzIGEgbW9kdWxlIHRoZW4gYGxpYi9tb2R1bGVzL2AgaXMgYW5vdGhlciBwb3NzaWJsZSBwbGFjZSB0byBzZWFyY2guIEZyb20gdGhlcmUgSSdsbCBkcmlsbCBkZWVwZXIgYXMgbmVlZGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDE2LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MDg6MzMuNjc5Mzg2MjMxWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTUyMjk0MzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGVzdF9obW1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibGliL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImxpYi9NYWtlZmlsZT0xMDI9b2JqLSQoQ09ORklHX1RFU1RfTE9DS1VQKSArPSB0ZXN0X2xvY2t1cC5vXFxubGliL01ha2VmaWxlOjEwMzpvYmotJChDT05GSUdfVEVTVF9ITU0pICs9IHRlc3RfaG1tLm9cXG5saWIvTWFrZWZpbGUtMTA0LW9iai0kKENPTkZJR19URVNUX0ZSRUVfUEFHRVMpICs9IHRlc3RfZnJlZV9wYWdlcy5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjMzLjc5NDYyNzIyOFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzQ3NjE3NTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFraW5nIHRoZSBwZXJzcGVjdGl2ZSBvZiBzb21lb25lIGtub3dsZWRnZWFibGUgaW4gY29uZmlndXJhdGlvbiBzeXN0ZW1zOlxuXG4qKkNoZWNraW5nIHRoZSBEZWJ1ZyBITU0gQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBsZXQncyBkaXZlIHN0cmFpZ2h0IGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGVyZSdzIHRoZSBjb250cm9sIGZvciB0aGlzIHRlc3QgSE1NIHNldHRpbmc/IEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IGl0cyBjb25maWd1cmF0aW9uIG9wdGlvbnMuXCIgU28sIHRoZSBmaXJzdCB0aGluZyBJJ20gZ29pbmcgdG8gZG8gaXMgemVybyBpbiBvbiBgQ09ORklHX1RFU1RfSE1NYCB3aXRoaW4gdGhlIGBsaWIvS2NvbmZpZy5kZWJ1Z2AgZmlsZS4gVGhhdCdzIHRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IOKAkyB0aGUgYGRlYnVnYCBzdWJkaXJlY3Rvcnkgb2Z0ZW4gaG91c2VzIHNldHRpbmdzIHJlbGF0ZWQgdG8gZGVidWdnaW5nIGFuZCBleHBlcmltZW50YWwgZmVhdHVyZXMsIG1ha2luZyBpdCBhIGxpa2VseSBsb2NhdGlvbiBmb3IgYSBITU0gdGVzdCBjb25maWd1cmF0aW9uLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgdGhlIHN0YW5kYXJkIGBjb25maWdgIGVudHJ5LCBhbG9uZyB3aXRoIGl0cyBhc3NvY2lhdGVkIGRlcGVuZGVuY2llcywgZGVzY3JpcHRpb25zLCBhbmQgcG90ZW50aWFsbHkgZGVmYXVsdCB2YWx1ZXMuIEknbSBhbHNvIGFudGljaXBhdGluZyB0aGF0IGl0IGxpa2VseSBsaW5rcyB0byB0aGUgc3BlY2lmaWMgY29kZSBvciB0ZXN0IHN1aXRlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIEhNTSB0ZXN0aW5nLCB3aGljaCBpcyB3aGF0IEknbSBtb3N0IGludGVyZXN0ZWQgaW4uIFRoaXMgaW5pdGlhbCBjaGVjayB3aWxsIGdpdmUgbWUgdGhlIGNvbnRleHR1YWwgaW5mb3JtYXRpb24gbmVjZXNzYXJ5IHRvIGV2YWx1YXRlIHdoYXQgdGhpcyB0ZXN0IHNldHRpbmcgdHJ1bHkgZG9lcy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTcyMCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjM3LjU0MjI0ODU3NFoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI4ODQ4NzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBURVNUX0hNTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJsaWIvS2NvbmZpZy5kZWJ1Z1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvS2NvbmZpZy5kZWJ1Zz0zMzQ2PWNvbmZpZyBURVNUX01FTUlOSVRcXG4tLVxcbmxpYi9LY29uZmlnLmRlYnVnLTMzNTMtXFxubGliL0tjb25maWcuZGVidWc6MzM1NDpjb25maWcgVEVTVF9ITU1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzU1LVxcdHRyaXN0YXRlIFxcXCJUZXN0IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjM3LjY3MTEwNjA0MVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjM2OTc2MTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gSGVyZSdzIGhvdyBJJ2QgYXBwcm9hY2ggdGhpcyB0YXNrLCBhcyBpZiB0aGVzZSB3ZXJlIG15IGludGVybmFsIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBEZXBlbmRlbmNpZXMgZm9yIFRFU1RfSE1NKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBvZiBgVEVTVF9ITU1gLiBUaGlzIGxpa2VseSBtZWFucyBJJ2xsIGJlIGxvb2tpbmcgZm9yIGxpYnJhcmllcywgbW9kdWxlcywgb3RoZXIgdGVzdHMsIG9yIGRhdGEgZmlsZXMgdGhhdCBgVEVTVF9ITU1gIHJlcXVpcmVzIHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4gSSdsbCBuZWVkIHRvIGlkZW50aWZ5IG5vdCBvbmx5IHRoZSBkaXJlY3QgZGVwZW5kZW5jaWVzLCBidXQgYWxzbyBhbnkgaW5kaXJlY3Qgb25lcyDigJMgdGhpbmdzIHRoYXQgYFRFU1RfSE1NYCBtaWdodCBjYWxsIHRoYXQsIGluIHR1cm4sIGhhdmUgdGhlaXIgb3duIHJlcXVpcmVtZW50cy4gVGhpcyBpcyBhIGNvbW1vbiBhbmQgaW1wb3J0YW50IGZpcnN0IHN0ZXAgd2hlbiBkZWJ1Z2dpbmcsIHJlZmFjdG9yaW5nLCBvciBzaW1wbHkgdW5kZXJzdGFuZGluZyBhIGNvZGViYXNlLiBBIHN0cm9uZyB1bmRlcnN0YW5kaW5nIG9mIHRoZSBkZXBlbmRlbmN5IGdyYXBoIGlzIG9mdGVuIGNyaXRpY2FsIGZvciBlZmZpY2llbnQgdHJvdWJsZXNob290aW5nIG9yIG1vZGlmaWNhdGlvbiBkb3duIHRoZSBsaW5lLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGNvbmZpZ3VyYXRpb24gZmlsZXMsIGltcG9ydCBzdGF0ZW1lbnRzLCBvciBhbnkgb3RoZXIgY2x1ZXMgdG8gYnVpbGQgYSBjb21wbGV0ZSBwaWN0dXJlIG9mIGl0cyBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwNzYsIk91dHB1dFRva2VucyI6NjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzowODo0MS45MDgwODU5ODhaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5Mjg0ODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBURVNUX0hNTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJsaWIvS2NvbmZpZy5kZWJ1Z1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvS2NvbmZpZy5kZWJ1Zz0zMzQ2PWNvbmZpZyBURVNUX01FTUlOSVRcXG4tLVxcbmxpYi9LY29uZmlnLmRlYnVnLTMzNTMtXFxubGliL0tjb25maWcuZGVidWc6MzM1NDpjb25maWcgVEVTVF9ITU1cXG5saWIvS2NvbmZpZy5kZWJ1Zy0zMzU1LVxcdHRyaXN0YXRlIFxcXCJUZXN0IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudClcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjQxLjk5NzQ5Mjk3NloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MDU1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibGliL0tjb25maWcuZGVidWdcIixcbiAgXCJGaXJzdExpbmVcIjogMzM1NCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzM1NDpcXHRjb25maWcgVEVTVF9ITU1cXG4zMzU1OlxcdFxcdHRyaXN0YXRlIFxcXCJUZXN0IEhNTSAoSGV0ZXJvZ2VuZW91cyBNZW1vcnkgTWFuYWdlbWVudClcXFwiXFxuMzM1NjpcXHRcXHRkZXBlbmRzIG9uIFRSQU5TUEFSRU5UX0hVR0VQQUdFXFxuMzM1NzpcXHRcXHRkZXBlbmRzIG9uIERFVklDRV9QUklWQVRFXFxuMzM1ODpcXHRcXHRzZWxlY3QgSE1NX01JUlJPUlxcbjMzNTk6XFx0XFx0c2VsZWN0IE1NVV9OT1RJRklFUlxcbjMzNjA6XFx0XFx0aGVscFxcbjMzNjE6XFx0XFx0ICBUaGlzIGlzIGEgcHNldWRvIGRldmljZSBkcml2ZXIgc29sZWx5IGZvciB0ZXN0aW5nIEhNTS5cXG4zMzYyOlxcdFxcdCAgU2F5IE0gaGVyZSBpZiB5b3Ugd2FudCB0byBidWlsZCB0aGUgSE1NIHRlc3QgbW9kdWxlLlxcbjMzNjM6XFx0XFx0ICBEb2luZyBzbyB3aWxsIGFsbG93IHlvdSB0byBydW4gdG9vbHMvdGVzdGluZy9zZWxmdGVzdC92bS9obW0tdGVzdHMuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjQxLjk5NzkwMjE3NloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODA5MjMwODc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGlubmVyIG1vbm9sb2d1ZTpcblxuKipEZXBlbmRlbmN5IERlZXAgRGl2ZTogVEVTVF9ITU0gYW5kIERFVklDRV9QUklWQVRFKipcblxuQWxyaWdodCwgc28gYFRFU1RfSE1NYCBoYXMgYSBjb3VwbGUgb2YgZGVwZW5kZW5jaWVzLCBuYW1lbHkgYFRSQU5TUEFSRU5UX0hVR0VQQUdFYCBhbmQgYERFVklDRV9QUklWQVRFYC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgdGhlIGNvbm5lY3Rpb24gd2l0aCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIG1ha2VzIHNlbnNlOyBwZXJmb3JtYW5jZSBvZnRlbiBoaW5nZXMgb24gbWVtb3J5IG1hbmFnZW1lbnQgYW5kIHRoYXQncyBhIGNvbW1vbiBwYWlyaW5nLiBCdXQgYERFVklDRV9QUklWQVRFYC4uLiB0aGF0J3MgdGhlIG1vcmUgaW50cmlndWluZyBvbmUgaW4gdGhpcyBjYXNlLiBMZXQncyBkaWcgaW50byB0aGF0IGJpdCBmaXJzdCwgc2luY2UgaXQncyBsZXNzIG9idmlvdXMgd2h5IHRoYXQgaXMgYSBkZXBlbmRlbmN5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHJvbGUgYERFVklDRV9QUklWQVRFYCBwbGF5cyBoZXJlIGFuZCB3aHkgaXRzIHByZXNlbmNlIG9yIGFic2VuY2Ugd291bGQgaGF2ZSBhIGRpcmVjdCBpbXBhY3Qgb24gdGhlIGV4ZWN1dGlvbiBvciB0ZXN0YWJpbGl0eSBvZiBgVEVTVF9ITU1gLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gY2hlY2sgdGhlIHJlbGV2YW50IGRvY3VtZW50YXRpb24gb3IgdGhlIGNvZGUgZGlyZWN0bHkgdG8gY29uZmlybS4gVGhpcydsbCByZXF1aXJlIG1lIHRvIGludmVzdGlnYXRlIHRoZSBkZXRhaWxzIG9mIGBERVZJQ0VfUFJJVkFURWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNjA5LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MDg6NDUuODA3MTM3MDJaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkzNDE4MTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBERVZJQ0VfUFJJVkFURVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9MTI2ND1jb25maWcgR0VUX0ZSRUVfUkVHSU9OXFxuLS1cXG5tbS9LY29uZmlnLTEyNjYtXFxubW0vS2NvbmZpZzoxMjY3OmNvbmZpZyBERVZJQ0VfUFJJVkFURVxcbm1tL0tjb25maWctMTI2OC1cXHRib29sIFxcXCJVbmFkZHJlc3NhYmxlIGRldmljZSBtZW1vcnkgKEdQVSBtZW1vcnksIC4uLilcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjQ1LjkwMDU2MjM1OVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTA4NTUxNzQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBEZXBlbmRlbmNpZXMgZm9yIGBERVZJQ0VfUFJJVkFURWAqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJPa2F5LCBgREVWSUNFX1BSSVZBVEVgIOKAkyB3aGF0IGFyZSBpdHMgZGVwZW5kZW5jaWVzP1wiIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgd2l0aCBvdGhlciBjb21wb25lbnRzIGluIHRoZSBzeXN0ZW0uIEknbSB0aGlua2luZyBhYm91dCB0aGUgcG90ZW50aWFsIHJpcHBsZSBlZmZlY3RzIG9mIGFueSBjaGFuZ2VzIHRvLCBvciBpbnRlcmFjdGlvbnMgd2l0aCwgdGhhdCBwYXJ0aWN1bGFyIHNlY3Rpb24uIElzIGl0IGEgY29yZSBtb2R1bGUsIG9yIHNvbWV0aGluZyBtb3JlIHBlcmlwaGVyYWw/IEFyZSB3ZSB0YWxraW5nIGFib3V0IGxvdy1sZXZlbCBoYXJkd2FyZSBhY2Nlc3MsIG9yIHNvbWV0aGluZyBoaWdoZXIgdXAgdGhlIHN0YWNrP1xuXG5JJ2xsIG5lZWQgdG8gZ28gYmV5b25kIHN1cmZhY2UtbGV2ZWwgYXNzdW1wdGlvbnMuIEknbSBydW5uaW5nIHRocm91Z2ggbXkgbWVudGFsIGNoZWNrbGlzdDogSSBuZWVkIHRvIGNvbnNpZGVyIHRoaW5ncyBsaWtlOlxuXG4qICAgRG9lcyBpdCByZWx5IG9uIGFueSBzcGVjaWZpYyBrZXJuZWwgbW9kdWxlcywgZHJpdmVycywgb3IgZmlybXdhcmUgY29tcG9uZW50cz9cbiogICBBcmUgdGhlcmUgYW55IGNvbmZpZ3VyYXRpb24gZmlsZXMgb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRoYXQgZGlyZWN0bHkgaW1wYWN0IGl0cyBiZWhhdmlvcj9cbiogICBXaGF0IGFyZSB0aGUgc2VjdXJpdHkgaW1wbGljYXRpb25zIG9mIGl0cyBkZXBlbmRlbmNpZXM/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBpbmhlcmVudCBpbiB0aG9zZSByZWxhdGlvbnNoaXBzP1xuKiAgIEhvdyB0aWdodGx5IGNvdXBsZWQgaXMgaXQ/IElzIGl0IGVhc3kgdG8gaXNvbGF0ZSBhbmQgdGVzdCwgb3IgaXMgaXQgaGVhdmlseSBpbnRlZ3JhdGVkIGludG8gdGhlIHN5c3RlbT9cbiogICBJIGFsc28gbmVlZCB0byBjaGVjayB0aGUgYnVpbGQgcHJvY2VzcyB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBtYWtlZmlsZXMgb3Igc2NyaXB0cyByZWxhdGVkIHRvIGl0LlxuXG5JJ20gc3RhcnRpbmcgdG8gdmlzdWFsaXplIGEgZGVwZW5kZW5jeSBncmFwaCBpbiBteSBoZWFkLiBVbmRlcnN0YW5kaW5nIHRoZSBcIndoeVwiIGFuZCBcImhvd1wiIG9mIGVhY2ggY29ubmVjdGlvbiB3aWxsIGJlIGtleSB0byBtYWtpbmcgaW5mb3JtZWQgZGVjaXNpb25zLiBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmcgdGhyb3VnaCB0aGUgY29kZSwgZG9jcywgYW5kIGNvbmZpZ3VyYXRpb25zIHRvIG1hcCB0aGlzIGFsbCBvdXQuIExldCdzIHNlZSB3aGF0IHdlIGNhbiB1bmVhcnRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDk2NCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjQ5LjgwOTExODUzMloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTU3NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxMjY3LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxMjY3OlxcdGNvbmZpZyBERVZJQ0VfUFJJVkFURVxcbjEyNjg6XFx0XFx0Ym9vbCBcXFwiVW5hZGRyZXNzYWJsZSBkZXZpY2UgbWVtb3J5IChHUFUgbWVtb3J5LCAuLi4pXFxcIlxcbjEyNjk6XFx0XFx0ZGVwZW5kcyBvbiBaT05FX0RFVklDRVxcbjEyNzA6XFx0XFx0c2VsZWN0IEdFVF9GUkVFX1JFR0lPTlxcbjEyNzE6XFx0XFxuMTI3MjpcXHRcXHRoZWxwXFxuMTI3MzpcXHRcXHQgIEFsbG93cyBjcmVhdGlvbiBvZiBzdHJ1Y3QgcGFnZXMgdG8gcmVwcmVzZW50IHVuYWRkcmVzc2FibGUgZGV2aWNlXFxuMTI3NDpcXHRcXHQgIG1lbW9yeTsgaS5lLiwgbWVtb3J5IHRoYXQgaXMgb25seSBhY2Nlc3NpYmxlIGZyb20gdGhlIGRldmljZSAob3JcXG4xMjc1OlxcdFxcdCAgZ3JvdXAgb2YgZGV2aWNlcykuIFlvdSBsaWtlbHkgYWxzbyB3YW50IHRvIHNlbGVjdCBITU1fTUlSUk9SLlxcbjEyNzY6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA4OjQ5LjgwOTMxNjY1MloiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjUwMzI3OTI1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERldmljZSBQYWdlIE1pZ3JhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBJIHNlZSB0aGF0IGBURVNUX0hNTWAgaGFzIHNvbWUgc3BlY2lmaWMgZGVwZW5kZW5jeSByZXF1aXJlbWVudHMg4oCTIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAsIGBERVZJQ0VfUFJJVkFURWAsIGFuZCBgWk9ORV9ERVZJQ0VgLiAgVGhhdCBtYWtlcyBzZW5zZSBzaW5jZSBpdCdzIGEgdGVzdCBkcml2ZXIgZm9yIEhNTSwgc28gdmlydHVhbGl6YXRpb24gaXMgbGlrZWx5LiBBbmQgZnVydGhlciwgYERFVklDRV9NSUdSQVRJT05gIG5lZWRzIGJvdGggYE1JR1JBVElPTmAgYW5kIGBaT05FX0RFVklDRWAuICBNeSBmb2N1cyBpcyBkZWZpbml0ZWx5IG9uIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSB0ZXN0IGRyaXZlci5cblxuSSdtIHplcm9pbmcgaW4gb24gdGhlIGNoYW5nZXMgdG8gYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGluIGBtbS9taWdyYXRlX2RldmljZS5jYC4gIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBwYXRjaCBpcyBkb2luZyBzcGVjaWZpY2FsbHkuICBMZXQncyB3YWxrIHRocm91Z2ggdGhlIGFkZGVkIGNvZGUgYmxvY2suICBMb29rcyBsaWtlIGl0J3MgYWRkcmVzc2luZyBhbiBpc3N1ZSB3aGVuIHdlIGVuY291bnRlciBhIGBNSUdSQVRFX1BGTl9DT01QT1VORGAgb24gdGhlIGRlc3RpbmF0aW9uLCBidXQgbm90IHRoZSBzb3VyY2UsIGFuZCBhIHNpbWlsYXIgb3BlcmF0aW9uIHdoZXJlIHdlIGhhdmUgYE1JR1JBVEVfUEZOX01JR1JBVEVgIG9uIHRoZSBzb3VyY2UsIGJ1dCBgTUlHUkFURV9QRk5fQ09NUE9VTkRgIG9uIHRoZSBkZXN0aW5hdGlvbiwgYW5kIHRoYXQgd2UgaGF2ZSBhIGNvbXBvdW5kIGZvbGlvIG1pZ3JhdGlvbi5cblxuVGhlIGZpcnN0IGNoYW5nZSwgaXQgc2VlbXMgbGlrZSwgaXMgcmVzZXR0aW5nIGBucmAgdG8gMSBhZnRlciBkZWFsaW5nIHdpdGggdGhlIGFmdGVyLXNwbGl0IGZvbGlvLiBJJ20gYXNzdW1pbmcgdG8gb25seSBwcm9jZXNzIHRoZSBmaXJzdCBmb2xpbyBhZnRlciB0aGUgc3BsaXQuIFRoZSBzZWNvbmQgY29kZSBibG9jayBoYW5kbGVzIHRoZSBjYXNlIHdoZXJlIHRoZSBmb2xpbyBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIHN3YXAgY2FjaGUgYnkgYGZvbGlvX2ZyZWVfc3dhcCgpYCwgc28gaXQgbmVlZHMgdG8gcmVmcmVzaCB0aGUgbWFwcGluZyBiZWZvcmUgbWlncmF0aW9uLiBUaGUgYGZvbGlvX21hcHBpbmcoZm9saW8pYCBjYWxsIGlzIGludGVyZXN0aW5nIGhlcmUsIG1ha2luZyBzdXJlIHdlIGhhdmUgdGhlIGNvcnJlY3QgbWFwcGluZy5cblxuVGhpcyBtYWtlcyBzZW5zZTsgZW5zdXJpbmcgbWVtb3J5IG1hbmFnZW1lbnQgaXMgY29ycmVjdCBpbiB2YXJpb3VzIG1pZ3JhdGlvbiBzY2VuYXJpb3MgaXMgYWx3YXlzIGNvbXBsZXgsIGVzcGVjaWFsbHkgd2l0aCBjb21wb3VuZCBwYWdlcyBhbmQgc3dhcC4gVGhpcyBtZWFucyB0aGVzZSBtb2RpZmljYXRpb25zIGFyZSBwcm9iYWJseSBmdW5jdGlvbmFsLCBhbmQgYWNjZXNzaWJsZSB0aHJvdWdoIGBURVNUX0hNTWAuXG5cbk5vdywgSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBmdXp6aW5nIGVudHJ5IHBvaW50cy4gSSBhbHJlYWR5IGtub3cgdGhhdCBgbWlncmF0ZV92bWFfcGFnZXNgIGFuZCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgIGFyZSB0aGUgY3J1Y2lhbCBvbmVzLiAgSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBgbGliL3Rlc3RfaG1tLmNgIHRvIHNlZSBwcmVjaXNlbHkgKmhvdyogdGhlc2UgZnVuY3Rpb25zIGFyZSBleHBvc2VkIHRvIHVzZXJzcGFjZS4gVGhhdCB3aWxsIGJlIHRoZSBrZXkgdG8gZGVzaWduaW5nIGVmZmVjdGl2ZSBmdXp6aW5nIHRhcmdldHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDg3LCJPdXRwdXRUb2tlbnMiOjcwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MDk6MDIuMzEyNjAxOTI0WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTg5NzA1NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG1pcnJvcl9taWdyYXRlX3RvX3N5c3RlbVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJsaWIvdGVzdF9obW0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvdGVzdF9obW0uYz0xMTA3PWRtaXJyb3Jfc3VjY2Vzc2Z1bF9taWdyYXRlZF9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXFxuLS1cXG5saWIvdGVzdF9obW0uYy0xMTE5LVxcbmxpYi90ZXN0X2htbS5jOjExMjA6c3RhdGljIGludCBkbWlycm9yX21pZ3JhdGVfdG9fc3lzdGVtKHN0cnVjdCBkbWlycm9yICpkbWlycm9yLFxcbmxpYi90ZXN0X2htbS5jLTExMjEtXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgaG1tX2RtaXJyb3JfY21kICpjbWQpXFxuLS1cXG5saWIvdGVzdF9obW0uYz0xNTEzPXN0YXRpYyBsb25nIGRtaXJyb3JfZm9wc191bmxvY2tlZF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTE1NTAtXFx0Y2FzZSBITU1fRE1JUlJPUl9NSUdSQVRFX1RPX1NZUzpcXG5saWIvdGVzdF9obW0uYzoxNTUxOlxcdFxcdHJldCA9IGRtaXJyb3JfbWlncmF0ZV90b19zeXN0ZW0oZG1pcnJvciwgXFx1MDAyNmNtZCk7XFxubGliL3Rlc3RfaG1tLmMtMTU1Mi1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MDk6MDIuODcxNTc2NDEzWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg2OTk3NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG1pcnJvcl9taWdyYXRlX3RvX2RldmljZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJsaWIvdGVzdF9obW0uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJsaWIvdGVzdF9obW0uYz0xMTIwPXN0YXRpYyBpbnQgZG1pcnJvcl9taWdyYXRlX3RvX3N5c3RlbShzdHJ1Y3QgZG1pcnJvciAqZG1pcnJvcixcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTExODgtXFxubGliL3Rlc3RfaG1tLmM6MTE4OTpzdGF0aWMgaW50IGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2Uoc3RydWN0IGRtaXJyb3IgKmRtaXJyb3IsXFxubGliL3Rlc3RfaG1tLmMtMTE5MC1cXHRcXHRcXHRcXHRzdHJ1Y3QgaG1tX2RtaXJyb3JfY21kICpjbWQpXFxuLS1cXG5saWIvdGVzdF9obW0uYz0xNTEzPXN0YXRpYyBsb25nIGRtaXJyb3JfZm9wc191bmxvY2tlZF9pb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCxcXG4tLVxcbmxpYi90ZXN0X2htbS5jLTE1NDYtXFx0Y2FzZSBITU1fRE1JUlJPUl9NSUdSQVRFX1RPX0RFVjpcXG5saWIvdGVzdF9obW0uYzoxNTQ3OlxcdFxcdHJldCA9IGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2UoZG1pcnJvciwgXFx1MDAyNmNtZCk7XFxubGliL3Rlc3RfaG1tLmMtMTU0OC1cXHRcXHRicmVhaztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MDk6MDIuOTgwMjgxMjYxWiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3MDUzNjA3NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipEaXZpbmcgaW50byB0aGUgRGV2aWNlIE1pcnJvciBNaWdyYXRpb24qKlxuXG5SaWdodCwgc28gSSdtIHNlZWluZyB0aGF0IHRoZSBjb3JlIG9mIHRoaXMgbWlncmF0aW9uIHByb2Nlc3MsIHNwZWNpZmljYWxseSBtb3ZpbmcgZGF0YSB0byBhbmQgZnJvbSB0aGUgZGV2aWNlIG1pcnJvciwgaGluZ2VzIG9uIGEgY291cGxlIG9mIGtleSBmdW5jdGlvbnM6IGBkbWlycm9yX21pZ3JhdGVfdG9fc3lzdGVtYCBhbmQgYGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2VgLiBUaGVzZSBhcmUgdHJpZ2dlcmVkIHZpYSBgaW9jdGxgIGNhbGxzIG9uIHRoZSBgL2Rldi9obW1fZG1pcnJvcipgIGRldmljZSBub2Rlcy4gTWFrZXMgc2Vuc2UsIHRoYXQncyBob3cgd2UnZCBleHBlY3QgdXNlcnNwYWNlIHRvIGludGVyYWN0IHdpdGggdGhlIGtlcm5lbCBtb2R1bGUuIEFuZCwgaW50ZXJuYWxseSwgdGhlc2UgZnVuY3Rpb25zICp0aGVtc2VsdmVzKiBjYWxsIGBtaWdyYXRlX3ZtYV9wYWdlc2AuIEFoYSwgdGhhdCBsaWtlbHkgaGFuZGxlcyB0aGUgVmlydHVhbCBNZW1vcnkgQXJlYSBwYWdlIG1pZ3JhdGlvbiwgdGhlIGNvcmUgbWVjaGFuaXNtIG9mIG1vdmluZyBwYWdlcyBhcm91bmQuXG5cbk5vdywgd2hlcmUgZG9lcyB0aGUgXCJkZXZpY2VcIiBzaWRlIGdldCBpbnZvbHZlZD8gSSBuZWVkIHRvIGRyaWxsIGRvd24gaW50byBgZG1pcnJvcl9kZXZpY2VfZXZpY3RfY2h1bmtgLiBNeSBodW5jaCBpcyB0aGlzIGlzIHRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgYWN0dWFsbHkga2lja2luZyBvZmYgdGhlIGRldmljZSBzaWRlIHBhZ2UgbWlncmF0aW9uLiBBbmQganVzdCBhcyBJIHN1c3BlY3RlZCwgdGhpcyBmdW5jdGlvbiBhcHBlYXJzIHRvIGNhbGwgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYC4gVGhpcyBjb25maXJtcyB0aGUgZGlyZWN0aW9uIG9mIHRoZSBwcm9jZXNzIGFzIGl0IHJlbGF0ZXMgdG8gZGV2aWNlIGNodW5rcy4gTm93IEkgaGF2ZSBhIGdvb2QgaGFuZGxlIG9uIHdoZXJlIHRvIGJlZ2luIGluc3BlY3RpbmcgdGhlIGRldGFpbHMgb2YgZWFjaCBtaWdyYXRpb24gZnVuY3Rpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyOTk0LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA5OjEwLjY4NTY0NjQ1OFoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU0ODU3Njk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRtaXJyb3JfZGV2aWNlX2V2aWN0X2NodW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImxpYi90ZXN0X2htbS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImxpYi90ZXN0X2htbS5jPTE2Mj1zdGF0aWMgaW50IGRtaXJyb3JfZm9wc19vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKVxcbi0tXFxubGliL3Rlc3RfaG1tLmMtMTg3LVxcbmxpYi90ZXN0X2htbS5jOjE4ODpzdGF0aWMgdm9pZCBkbWlycm9yX2RldmljZV9ldmljdF9jaHVuayhzdHJ1Y3QgZG1pcnJvcl9jaHVuayAqY2h1bmspXFxubGliL3Rlc3RfaG1tLmMtMTg5LXtcXG4tLVxcbmxpYi90ZXN0X2htbS5jPTIzOD1zdGF0aWMgaW50IGRtaXJyb3JfZm9wc19yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKVxcbi0tXFxubGliL3Rlc3RfaG1tLmMtMjUwLVxcbmxpYi90ZXN0X2htbS5jOjI1MTpcXHRcXHRcXHRkbWlycm9yX2RldmljZV9ldmljdF9jaHVuayhkZXZtZW0pO1xcbmxpYi90ZXN0X2htbS5jLTI1Mi1cXHRcXHR9XFxuLS1cXG5saWIvdGVzdF9obW0uYz0xNDgxPXN0YXRpYyB2b2lkIGRtaXJyb3JfZGV2aWNlX3JlbW92ZV9jaHVua3Moc3RydWN0IGRtaXJyb3JfZGV2aWNlICptZGV2aWNlKVxcbi0tXFxubGliL3Rlc3RfaG1tLmMtMTQ5NS1cXG5saWIvdGVzdF9obW0uYzoxNDk2OlxcdFxcdFxcdGRtaXJyb3JfZGV2aWNlX2V2aWN0X2NodW5rKGRldm1lbSk7XFxubGliL3Rlc3RfaG1tLmMtMTQ5Ny1cXHRcXHRcXHRtZW11bm1hcF9wYWdlcyhcXHUwMDI2ZGV2bWVtLVxcdTAwM2VwYWdlbWFwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MDk6MTAuODQwNTA5OTU1WiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgyMTIxOTAwMDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBEZXZpY2UgUGFnZSBNaWdyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdG8gZWZmZWN0aXZlbHkgZnV6eiBkZXZpY2UgcGFnZSBtaWdyYXRpb24sIGFuZCBpdCBzZWVtcyB0aGUga2V5IGZ1bmN0aW9uIGNhbGxlZCBkdXJpbmcgcmVsZWFzZSBhbmQgZGV2aWNlIHJlbW92YWwgaXMgYGRtaXJyb3JfZGV2aWNlX2V2aWN0X2NodW5rYC4gQnV0IHRoZSByZWFsIGVudHJ5IHBvaW50cyBmb3IgZnV6emluZywgdGhlIG9uZXMgZG9pbmcgdGhlIGhlYXZ5IGxpZnRpbmcsIGFyZSBkZWZpbml0ZWx5IGBtaWdyYXRlX3ZtYV9wYWdlc2AgYW5kIGBtaWdyYXRlX2RldmljZV9wYWdlc2AuIFNwZWNpZmljYWxseSwgSSdtIG5vdGluZyB0aGF0IHRoZSBgX19taWdyYXRlX2RldmljZV9wYWdlc2AgZnVuY3Rpb24gaXMgdGhlIG9uZSB0aGF0IHdhcyByZWNlbnRseSBtb2RpZmllZC4gR29vZCwgbGV0J3MgY29uZmlybSB0aGF0IGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBpcyBpbmRlZWQgc3RhdGljIOKAkyBhbmQgeWVzLCBpdCdzIHN0YXRpYyB3aXRoaW4gYG1tL21pZ3JhdGVfZGV2aWNlLmNgLiBUaGF0IG1lYW5zIHdlIHNob3VsZCBjb25jZW50cmF0ZSBvdXIgZWZmb3J0cyBvbiBgbWlncmF0ZV92bWFfcGFnZXNgIGFuZCBgbWlncmF0ZV9kZXZpY2VfcGFnZXNgLlxuXG5Gb3IgYSBtb3JlIHRhcmdldGVkIGZ1enppbmcgc3RyYXRlZ3ksIGZvY3VzZWQgb24gYSB0ZXN0IG1vZHVsZSwgSSBjb3VsZCBhbHNvIGJyaW5nIGluIGBkbWlycm9yX21pZ3JhdGVfdG9fc3lzdGVtYCBhbmQgYGRtaXJyb3JfbWlncmF0ZV90b19kZXZpY2VgLCBidXQgYG1pZ3JhdGVfdm1hX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhcmUgdGhlIG1vcmUgY3JpdGljYWwgY29yZSBmdW5jdGlvbnMuIEFuZCBpdCBsb29rcyBsaWtlIGBtaWdyYXRlX3ZtYV9wYWdlc2AgYW5kIGBtaWdyYXRlX2RldmljZV9wYWdlc2AgYXJlIGV4cG9ydGVkIHN5bWJvbHMsIHdoaWNoIGlzIGZhbnRhc3RpYyEgVGhhdCBtYWtlcyB0aGVtIGRpcmVjdGx5IGFjY2Vzc2libGUuXG5cbk5vdywgbGV0J3MgY29uc2lkZXIgdGhlIGNvbmZpZ3VyYXRpb24gcmVxdWlyZW1lbnRzLiBXZSdsbCBuZWVkIGBDT05GSUdfREVWSUNFX01JR1JBVElPTmAsIHdoaWNoIGluIHR1cm4gZGVwZW5kcyBvbiBgQ09ORklHX01JR1JBVElPTmAgYW5kIGBDT05GSUdfWk9ORV9ERVZJQ0VgLiBUbyBtYWtlIHRoaXMgZWFzaWVyIHRvIHRyaWdnZXIgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgSSdsbCBkZWZpbml0ZWx5IHdhbnQgdG8gZW5hYmxlIGBDT05GSUdfVEVTVF9ITU1gLiBBbmQgdGhhdCBkZXBlbmRzIG9uIGBDT05GSUdfVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGFuZCBgQ09ORklHX0RFVklDRV9QUklWQVRFYC4gRmluYWxseSwgYENPTkZJR19ERVZJQ0VfUFJJVkFURWAgZGVwZW5kcyBvbiBgQ09ORklHX1pPTkVfREVWSUNFYC5cblxuU28sIHRoZSBjb21wbGV0ZSBsaXN0IG9mIGNvbmZpZyBvcHRpb25zIEknbGwgbmVlZCB0byBlbmFibGUgYXJlOlxuKiAgIGBERVZJQ0VfTUlHUkFUSU9OYFxuKiAgIGBNSUdSQVRJT05gXG4qICAgYFpPTkVfREVWSUNFYFxuKiAgIGBURVNUX0hNTWBcbiogICBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgXG4qICAgYERFVklDRV9QUklWQVRFYFxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBnbyBiYWNrIGFuZCBkb3VibGUtY2hlY2sgYG1tL21pZ3JhdGVfZGV2aWNlLmNgIG9uZSBtb3JlIHRpbWUgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55IG90aGVyIHBvdGVudGlhbCBlbnRyeSBwb2ludHMgZm9yIGZ1enppbmcuIEl0IGFsd2F5cyBwYXlzIHRvIGJlIHRob3JvdWdoIGluIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNjY2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA5OjE5LjA1MjcwNDM5M1oiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE2NDg1MDE3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fbWlncmF0ZV9kZXZpY2VfcGFnZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vbWlncmF0ZV9kZXZpY2UuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9taWdyYXRlX2RldmljZS5jPTk2NT1zdGF0aWMgdm9pZCBtaWdyYXRlX3ZtYV9pbnNlcnRfcGFnZShzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUsXFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jLTEwOTctXFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMDk4OnN0YXRpYyB2b2lkIF9fbWlncmF0ZV9kZXZpY2VfcGFnZXModW5zaWduZWQgbG9uZyAqc3JjX3BmbnMsXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMDk5LVxcdFxcdFxcdFxcdHVuc2lnbmVkIGxvbmcgKmRzdF9wZm5zLCB1bnNpZ25lZCBsb25nIG5wYWdlcyxcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmM9MTI1OD12b2lkIG1pZ3JhdGVfZGV2aWNlX3BhZ2VzKHVuc2lnbmVkIGxvbmcgKnNyY19wZm5zLCB1bnNpZ25lZCBsb25nICpkc3RfcGZucyxcXG4tLVxcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2MC17XFxubW0vbWlncmF0ZV9kZXZpY2UuYzoxMjYxOlxcdF9fbWlncmF0ZV9kZXZpY2VfcGFnZXMoc3JjX3BmbnMsIGRzdF9wZm5zLCBucGFnZXMsIE5VTEwpO1xcbm1tL21pZ3JhdGVfZGV2aWNlLmMtMTI2Mi19XFxuLS1cXG5tbS9taWdyYXRlX2RldmljZS5jPTEyNzM9dm9pZCBtaWdyYXRlX3ZtYV9wYWdlcyhzdHJ1Y3QgbWlncmF0ZV92bWEgKm1pZ3JhdGUpXFxubW0vbWlncmF0ZV9kZXZpY2UuYy0xMjc0LXtcXG5tbS9taWdyYXRlX2RldmljZS5jOjEyNzU6XFx0X19taWdyYXRlX2RldmljZV9wYWdlcyhtaWdyYXRlLVxcdTAwM2VzcmMsIG1pZ3JhdGUtXFx1MDAzZWRzdCwgbWlncmF0ZS1cXHUwMDNlbnBhZ2VzLCBtaWdyYXRlKTtcXG5tbS9taWdyYXRlX2RldmljZS5jLTEyNzYtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzowOToxOS4xNjkxOTgxN1oiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjU3MDM2NjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIERldmljZSBQYWdlIE1pZ3JhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUgemVyb2VkIGluIG9uIHRoZSBmYWN0IHRoYXQgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfdm1hX3BhZ2VzYCBhcmUgdGhlIG9ubHkgZnVuY3Rpb25zIGNhbGxpbmcgYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgLCB3aGljaCBpcyBrZXkuIFRoYXQgbWFrZXMgdGhlbSBleGNlbGxlbnQgY2FuZGlkYXRlcyBmb3IgZm9jdXNlZCBhbmFseXNpcy4gVGhleSdyZSBib3RoIHB1YmxpYyBBUEkgZW50cnkgcG9pbnRzLCB3aGljaCBtZWFucyB0aGlzIGlzbid0IHNvbWUgb2JzY3VyZSBpbnRlcm5hbCBkZXRhaWw7IHRoZXkgYXJlIGNsZWFybHkgaW1wb3J0YW50LlxuXG5Ob3csIHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIGJ1ZyB3aXRoaW4gYF9fbWlncmF0ZV9kZXZpY2VfcGFnZXNgIHNwZWNpZmljYWxseS4gSXQgc2VlbXMgbGlrZSB0aGUgYnVnIGNlbnRlcnMgYXJvdW5kIHRoZSBjb3VudCB2YXJpYWJsZSAoYG5yYCkgbm90IGJlaW5nIHJlc2V0IGFmdGVyIGEgZm9saW8gc3BsaXQsIGFuZCB0aGUgbWFwcGluZyBub3QgYmVpbmcgcmVmcmVzaGVkIHBvc3QgYGZvbGlvX2ZyZWVfc3dhcCgpYC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGFuIGltcG9ydGFudCBhcmVhIHRvIGFkZHJlc3MsIGFuZCBpdCBoYXMgcG90ZW50aWFsIGZvciBzdWJ0bGUgbWVtb3J5IGNvcnJ1cHRpb24gb3IgcmVzb3VyY2UgbGVha3MsIG1ha2luZyBpdCBhIHN0cm9uZyB0YXJnZXQgZm9yIGZ1enppbmcuIERlZmluaXRlbHkgd29ydGggdGhlIGVmZm9ydC5cblxuTGV0IG1lIHRha2UgYSBsb29rIGF0IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSBpbXBsaWNhdGVkOiBgREVWSUNFX01JR1JBVElPTmAsIGBURVNUX0hNTWAsIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAsIGBERVZJQ0VfUFJJVkFURWAsIGBaT05FX0RFVklDRWAsIGFuZCBgTUlHUkFUSU9OYC5cblxuR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgZml4LCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRob3NlIGBUUkFOU1BBUkVOVF9IVUdFUEFHRWAgZGVwZW5kZW5jaWVzIHZlcnkgY2FyZWZ1bGx5LiBMYXJnZSBwYWdlcyBhbmQgbWlncmF0aW9uIG9mdGVuIGdldCBpbnRlcnR3aW5lZCBpbiBuYXN0eSB3YXlzLCBzbyB1bmRlcnN0YW5kaW5nIHRoZSBpbnRlcmFjdGlvbnMgaXMgY3JpdGljYWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0OTI1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA5OjI0LjQyNjI0MDQ3NloiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1NDQyNjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJtbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL0tjb25maWc9ODQzPWNvbmZpZyBNTV9JRFxcbi0tXFxubW0vS2NvbmZpZy04NDUtXFxubW0vS2NvbmZpZzo4NDY6bWVudWNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRVxcbm1tL0tjb25maWctODQ3LVxcdGJvb2wgXFxcIlRyYW5zcGFyZW50IEh1Z2VwYWdlIFN1cHBvcnRcXFwiXFxuLS1cXG5tbS9LY29uZmlnPTg2ND1jaG9pY2VcXG4tLVxcbm1tL0tjb25maWctODY5LVxcbm1tL0tjb25maWc6ODcwOlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9BTFdBWVNcXG5tbS9LY29uZmlnLTg3MS1cXHRcXHRib29sIFxcXCJhbHdheXNcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTg3Ni1cXG5tbS9LY29uZmlnOjg3NzpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfTUFEVklTRVxcbm1tL0tjb25maWctODc4LVxcdFxcdGJvb2wgXFxcIm1hZHZpc2VcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTg4NS1cXG5tbS9LY29uZmlnOjg4NjpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfTkVWRVJcXG5tbS9LY29uZmlnLTg4Ny1cXHRcXHRib29sIFxcXCJuZXZlclxcXCJcXG4tLVxcbm1tL0tjb25maWc9ODkzPWNob2ljZVxcbi0tXFxubW0vS2NvbmZpZy05MDItXFxubW0vS2NvbmZpZzo5MDM6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1NITUVNX0hVR0VfTkVWRVJcXG5tbS9LY29uZmlnLTkwNC1cXHRcXHRib29sIFxcXCJuZXZlclxcXCJcXG4tLVxcbm1tL0tjb25maWctOTEyLVxcbm1tL0tjb25maWc6OTEzOlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9TSE1FTV9IVUdFX0FMV0FZU1xcbm1tL0tjb25maWctOTE0LVxcdFxcdGJvb2wgXFxcImFsd2F5c1xcXCJcXG4tLVxcbm1tL0tjb25maWctOTIwLVxcbm1tL0tjb25maWc6OTIxOlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9TSE1FTV9IVUdFX1dJVEhJTl9TSVpFXFxubW0vS2NvbmZpZy05MjItXFx0XFx0Ym9vbCBcXFwid2l0aGluX3NpemVcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTkyOC1cXG5tbS9LY29uZmlnOjkyOTpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfU0hNRU1fSFVHRV9BRFZJU0VcXG5tbS9LY29uZmlnLTkzMC1cXHRcXHRib29sIFxcXCJhZHZpc2VcXFwiXFxuLS1cXG5tbS9LY29uZmlnPTkzOD1jaG9pY2VcXG4tLVxcbm1tL0tjb25maWctOTQ3LVxcbm1tL0tjb25maWc6OTQ4OlxcdGNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRV9UTVBGU19IVUdFX05FVkVSXFxubW0vS2NvbmZpZy05NDktXFx0XFx0Ym9vbCBcXFwibmV2ZXJcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTk1Ni1cXG5tbS9LY29uZmlnOjk1NzpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfVE1QRlNfSFVHRV9BTFdBWVNcXG5tbS9LY29uZmlnLTk1OC1cXHRcXHRib29sIFxcXCJhbHdheXNcXFwiXFxuLS1cXG5tbS9LY29uZmlnLTk2NC1cXG5tbS9LY29uZmlnOjk2NTpcXHRjb25maWcgVFJBTlNQQVJFTlRfSFVHRVBBR0VfVE1QRlNfSFVHRV9XSVRISU5fU0laRVxcbm1tL0tjb25maWctOTY2LVxcdFxcdGJvb2wgXFxcIndpdGhpbl9zaXplXFxcIlxcbi0tXFxubW0vS2NvbmZpZy05NzItXFxubW0vS2NvbmZpZzo5NzM6XFx0Y29uZmlnIFRSQU5TUEFSRU5UX0hVR0VQQUdFX1RNUEZTX0hVR0VfQURWSVNFXFxubW0vS2NvbmZpZy05NzQtXFx0XFx0Ym9vbCBcXFwiYWR2aXNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzowOToyNC41NTE2OTIxMDRaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYyNDI2MzM4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpczpcblxuKipDaGVja2luZyBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIERlcGVuZGVuY2llcyoqXG5cblJpZ2h0LCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGl0IHJlbGllcyBvbiwgd2hhdCBvdGhlciBwaWVjZXMgb2YgdGhlIHN5c3RlbSBhcmUgcG90ZW50aWFsbHkgYWZmZWN0ZWQgYnkgaXRzIHByZXNlbmNlLCBhbmQgdW5kZXJzdGFuZCBpZiB0aGVyZSdzIGFueSBpbW1lZGlhdGUgd29yayB0aGF0IG5lZWRzIHRvIGJlIGRvbmUuIEl0J3MgY3J1Y2lhbCwgd2hlbiBkZWFsaW5nIHdpdGggdGhpcywgdG8gYmUgbWV0aG9kaWNhbC4gSSBoYXZlIHRvIHRoaW5rIHRocm91Z2ggYW55IGtlcm5lbCBpbnRlcmFjdGlvbnMgYW5kIGVuc3VyZSB0aGF0IEkgdW5kZXJzdGFuZCBhbnkgcG90ZW50aWFsIGNhc2NhZGluZyBlZmZlY3RzLiBXaGVyZSBpcyBpdCB1c2VkLCBob3cgaXMgaXQgdXNlZCwgYW5kIHdoYXQgZG9lcyB0aGUgY29uZmlndXJhdGlvbiBsb29rIGxpa2U/IEknbGwgcHJvYmFibHkgbmVlZCB0byBsb29rIGF0IHJlbGV2YW50IGRvY3VtZW50YXRpb24sIG1heWJlIHNvbWUga2VybmVsIHNvdXJjZSBjb2RlLCBhbmQgZGVmaW5pdGVseSBhbnkgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmaWxlcy4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuIEnigJlsbCBzdGFydCBieSBsaXN0aW5nIG91dCB0aGUga25vd24gZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjE1NiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA5OjMwLjE3NTk1Nzg2MloiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjI2ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibW0vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA4NDYsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA4NDY6XFx0bWVudWNvbmZpZyBUUkFOU1BBUkVOVF9IVUdFUEFHRVxcbiA4NDc6XFx0XFx0Ym9vbCBcXFwiVHJhbnNwYXJlbnQgSHVnZXBhZ2UgU3VwcG9ydFxcXCJcXG4gODQ4OlxcdFxcdGRlcGVuZHMgb24gSEFWRV9BUkNIX1RSQU5TUEFSRU5UX0hVR0VQQUdFIFxcdTAwMjZcXHUwMDI2ICFQUkVFTVBUX1JUXFxuIDg0OTpcXHRcXHRzZWxlY3QgQ09NUEFDVElPTlxcbiA4NTA6XFx0XFx0c2VsZWN0IFhBUlJBWV9NVUxUSVxcbiA4NTE6XFx0XFx0c2VsZWN0IE1NX0lEXFxuIDg1MjpcXHRcXHRoZWxwXFxuIDg1MzpcXHRcXHQgIFRyYW5zcGFyZW50IEh1Z2VwYWdlcyBhbGxvd3MgdGhlIGtlcm5lbCB0byB1c2UgaHVnZSBwYWdlcyBhbmRcXG4gODU0OlxcdFxcdCAgaHVnZSB0bGIgdHJhbnNwYXJlbnRseSB0byB0aGUgYXBwbGljYXRpb25zIHdoZW5ldmVyIHBvc3NpYmxlLlxcbiA4NTU6XFx0XFx0ICBUaGlzIGZlYXR1cmUgY2FuIGltcHJvdmUgY29tcHV0aW5nIHBlcmZvcm1hbmNlIHRvIGNlcnRhaW5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MDk6MzAuMTc2MDgyMDEzWiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NDQ4NzQzOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIFRyYW5zcGFyZW50IEh1Z2VwYWdlcyBhbmQgWm9uZSBEZXZpY2UgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzIGNvZGUsIGl0IHNlZW1zIHRoZSBlbmFibGluZyBvZiBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgIHJlbGllcyBvbiBib3RoIGBIQVZFX0FSQ0hfVFJBTlNQQVJFTlRfSFVHRVBBR0VgIGJlaW5nIGRlZmluZWQgKmFuZCogdGhlIHN5c3RlbSAqbm90KiBiZWluZyBhIHJlYWwtdGltZSBwcmVlbXB0aW9uIGtlcm5lbCwgYCFQUkVFTVBUX1JUYC4gVGhhdCdzIHN0YW5kYXJkIGJlaGF2aW9yLiBOb3RoaW5nIHRvbyBzdXJwcmlzaW5nIHRoZXJlLiBJJ20gdXNlZCB0byBzZWVpbmcgdGhpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb24geDg2XzY0IHN5c3RlbXMsIHNvIHRoYXQgcGFydCBjaGVja3Mgb3V0LlxuXG5Ob3csIGxldCdzIHNoaWZ0IGdlYXJzIGFuZCBxdWlja2x5IHZlcmlmeSB3aGF0J3MgZGVwZW5kZW50IG9uIGBaT05FX0RFVklDRWAuIEkgbmVlZCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHVuZXhwZWN0ZWQgaW50ZXJhY3Rpb25zIG9yIGNvbmZsaWN0cyBpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjU0OCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MDk6MzQuODIwOTYwODIxWiIsIlNlcSI6NDIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNjMzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyMzYsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEyMzY6XFx0Y29uZmlnIFpPTkVfREVWSUNFXFxuMTIzNzpcXHRcXHRib29sIFxcXCJEZXZpY2UgbWVtb3J5IChwbWVtLCBITU0sIGV0Yy4uLikgaG90cGx1ZyBzdXBwb3J0XFxcIlxcbjEyMzg6XFx0XFx0ZGVwZW5kcyBvbiBNRU1PUllfSE9UUExVR1xcbjEyMzk6XFx0XFx0ZGVwZW5kcyBvbiBNRU1PUllfSE9UUkVNT1ZFXFxuMTI0MDpcXHRcXHRkZXBlbmRzIG9uIFNQQVJTRU1FTV9WTUVNTUFQXFxuMTI0MTpcXHRcXHRzZWxlY3QgWEFSUkFZX01VTFRJXFxuMTI0MjpcXHRcXG4xMjQzOlxcdFxcdGhlbHBcXG4xMjQ0OlxcdFxcdCAgRGV2aWNlIG1lbW9yeSBob3RwbHVnIHN1cHBvcnQgYWxsb3dzIGZvciBlc3RhYmxpc2hpbmcgcG1lbSxcXG4xMjQ1OlxcdFxcdCAgb3Igb3RoZXIgZGV2aWNlIGRyaXZlciBkaXNjb3ZlcmVkIG1lbW9yeSByZWdpb25zLCBpbiB0aGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MDk6MzQuODIxMTcwMzFaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTExODA1OTcwMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBxdWljayBydW5kb3duIG9mIHRoZXNlIGtlcm5lbCBjb25maWd1cmF0aW9uIGNvbnNpZGVyYXRpb25zOlxuXG4qKktlcm5lbCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyBhbmQgQ29uc2lkZXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIG15IGluaXRpYWwgdGhvdWdodCBoZXJlIGlzIHRoYXQgYFpPTkVfREVWSUNFYCBpcyBkaXJlY3RseSB0aWVkIHRvIGBNRU1PUllfSE9UUExVR2AsIGBNRU1PUllfSE9UUkVNT1ZFYCwgYW5kIGBTUEFSU0VNRU1fVk1FTU1BUGAuIEkgbmVlZCB0byByZW1lbWJlciB0aGF0IGRlcGVuZGVuY3kgY2hhaW4uIE5vdywgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHksIEknbSBnb2luZyB0byBsaXN0IGEgYnVuY2ggb2YgcmVsYXRlZCBjb25maWdzLiBJJ2xsIGluY2x1ZGUgYFpPTkVfREVWSUNFYCBpdHNlbGYsIGFsb25nIHdpdGggYERFVklDRV9NSUdSQVRJT05gLCBgVEVTVF9ITU1gLCBgVFJBTlNQQVJFTlRfSFVHRVBBR0VgLCBgREVWSUNFX1BSSVZBVEVgLCBhbmQgYE1JR1JBVElPTmAuXG5cbk5vdywgYmVmb3JlIEkgY29tbWl0IHRvIGFueXRoaW5nLCBJIHdhbnQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBURVNUX0hNTWAuIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIHRoYXQgcGFydGljdWxhciBjb25maWcgaGFzIGFueSBhZGRpdGlvbmFsIGRlcGVuZGVuY2llcyB0aGF0IGFyZW4ndCBpbW1lZGlhdGVseSBvYnZpb3VzLCBvciBpZiB0aGVyZSdzIGFueXRoaW5nIGVsc2UgdGhhdCBJIHNob3VsZCBiZSB0YWtpbmcgaW50byBhY2NvdW50LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBjcml0aWNhbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY5NTgsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjA5OjQ2LjAwMTc3MDc0OVoiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTMxOTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImxpYi9LY29uZmlnLmRlYnVnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMzNTQsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMzNTQ6XFx0Y29uZmlnIFRFU1RfSE1NXFxuMzM1NTpcXHRcXHR0cmlzdGF0ZSBcXFwiVGVzdCBITU0gKEhldGVyb2dlbmVvdXMgTWVtb3J5IE1hbmFnZW1lbnQpXFxcIlxcbjMzNTY6XFx0XFx0ZGVwZW5kcyBvbiBUUkFOU1BBUkVOVF9IVUdFUEFHRVxcbjMzNTc6XFx0XFx0ZGVwZW5kcyBvbiBERVZJQ0VfUFJJVkFURVxcbjMzNTg6XFx0XFx0c2VsZWN0IEhNTV9NSVJST1JcXG4zMzU5OlxcdFxcdHNlbGVjdCBNTVVfTk9USUZJRVJcXG4zMzYwOlxcdFxcdGhlbHBcXG4zMzYxOlxcdFxcdCAgVGhpcyBpcyBhIHBzZXVkbyBkZXZpY2UgZHJpdmVyIHNvbGVseSBmb3IgdGVzdGluZyBITU0uXFxuMzM2MjpcXHRcXHQgIFNheSBNIGhlcmUgaWYgeW91IHdhbnQgdG8gYnVpbGQgdGhlIEhNTSB0ZXN0IG1vZHVsZS5cXG4zMzYzOlxcdFxcdCAgRG9pbmcgc28gd2lsbCBhbGxvdyB5b3UgdG8gcnVuIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3Qvdm0vaG1tLXRlc3RzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzowOTo0Ni4wMDM3MDU3MDlaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTk1Njc5MDAxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgQ29kZSBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyB0aGUgc3lzdGVtIGNob3NlIGBITU1fTUlSUk9SYCBhbmQgYE1NVV9OT1RJRklFUmAgYmFzZWQgb24gdGhlIGNvbnRleHQsIHdoaWNoIG1ha2VzIHNlbnNlLiBOb3csIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIGludm9sdmVkIGluIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgYG1pZ3JhdGVfdm1hX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCBhcmUgdGhlIGZvY3VzLiBUaGUgcmVhc29uaW5nIGlzIHNvbGlkOiB0aGlzIHBhdGNoIGlzIGZpeGluZyBzb21ldGhpbmcgd2l0aGluIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgYW5kIHRoYXQgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGJvdGggb2YgdGhvc2UgaGlnaC1sZXZlbCBtaWdyYXRpb24gZnVuY3Rpb25zLiBUaGUgYnVnIHNlZW1zIHRvIGNlbnRlciBhcm91bmQgZm9saW8gc3BsaXR0aW5nIGFuZCB0aGUgc3dhcCBjYWNoZSwgd2hpY2ggZGVmaW5pdGVseSBzb3VuZHMgbGlrZSBhIGZ1bmN0aW9uYWwgaXNzdWUuXG5cbkJlZm9yZSBJIGdvIGZ1cnRoZXIsIGxldCdzIGp1c3QgY29uZmlybSB0aG9zZSB0d28gY29yZSBmdW5jdGlvbnMgYXJlbid0IHNvbWV0aGluZyB3ZWlyZCBsaWtlIHN0YXRpYyBvciBpbmxpbmVkLCBzaW5jZSB0aGF0IHdvdWxkIGNvbXBsaWNhdGUgdGhpbmdzLiBBIHF1aWNrIGNoZWNrLi4uIHllcCwgdGhleSdyZSBleHBvcnRlZCBzeW1ib2xzLiBUaGF0J3MgZ29vZCwgdGhhdCBjb25maXJtcyB0aGV5J3JlIG5vdCBzb21lIGxvY2FsLCBoaWRkZW4gaW1wbGVtZW50YXRpb25zLiBBbHJpZ2h0LCBub3cgSSBmZWVsIGNvbmZpZGVudCBpbiBtb3ZpbmcgZm9yd2FyZC4gSSdsbCBnbyBhaGVhZCBhbmQgc2V0IHRoZSByZXN1bHRzIGFjY29yZGluZ2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzQ4MSwiT3V0cHV0VG9rZW5zIjoxNjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzowOTo1MS45NjA0OTc1NDFaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTMzMDcwMzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkRFVklDRV9NSUdSQVRJT05cIixcbiAgICBcIlRFU1RfSE1NXCIsXG4gICAgXCJUUkFOU1BBUkVOVF9IVUdFUEFHRVwiLFxuICAgIFwiREVWSUNFX1BSSVZBVEVcIixcbiAgICBcIlpPTkVfREVWSUNFXCIsXG4gICAgXCJNSUdSQVRJT05cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtaWdyYXRlX3ZtYV9wYWdlc1wiLFxuICAgIFwibWlncmF0ZV9kZXZpY2VfcGFnZXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgX19taWdyYXRlX2RldmljZV9wYWdlc2AsIHdoaWNoIGlzIGEgY29yZSBmdW5jdGlvbiBmb3IgZGV2aWNlIG1lbW9yeSBtaWdyYXRpb24uIEl0IGZpeGVzIGEgYnVnIHJlbGF0ZWQgdG8gZm9saW8gc3BsaXQgYW5kIHN3YXAgY2FjaGUuIFRoZSBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIGBtaWdyYXRlX3ZtYV9wYWdlc2AgYW5kIGBtaWdyYXRlX2RldmljZV9wYWdlc2AsIHdoaWNoIGNhbiBiZSB0cmlnZ2VyZWQgdXNpbmcgdGhlIGBURVNUX0hNTWAgcHNldWRvIGRldmljZSBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiREVWSUNFX01JR1JBVElPTlwiLFxuICAgIFwiVEVTVF9ITU1cIixcbiAgICBcIlRSQU5TUEFSRU5UX0hVR0VQQUdFXCIsXG4gICAgXCJERVZJQ0VfUFJJVkFURVwiLFxuICAgIFwiWk9ORV9ERVZJQ0VcIixcbiAgICBcIk1JR1JBVElPTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1pZ3JhdGVfdm1hX3BhZ2VzXCIsXG4gICAgXCJtaWdyYXRlX2RldmljZV9wYWdlc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBfX21pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgd2hpY2ggaXMgYSBjb3JlIGZ1bmN0aW9uIGZvciBkZXZpY2UgbWVtb3J5IG1pZ3JhdGlvbi4gSXQgZml4ZXMgYSBidWcgcmVsYXRlZCB0byBmb2xpbyBzcGxpdCBhbmQgc3dhcCBjYWNoZS4gVGhlIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgYG1pZ3JhdGVfdm1hX3BhZ2VzYCBhbmQgYG1pZ3JhdGVfZGV2aWNlX3BhZ2VzYCwgd2hpY2ggY2FuIGJlIHRyaWdnZXJlZCB1c2luZyB0aGUgYFRFU1RfSE1NYCBwc2V1ZG8gZGV2aWNlIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowztq74[1] Phase: Succeeded StartedAt: 2026-07-27 17:10:03 +0000 UTC FinishedAt: 2026-07-27 17:10:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowztq74[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-27 17:10:03 +0000 UTC FinishedAt: 2026-07-27 17:10:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowztq74[2] Phase: Succeeded StartedAt: 2026-07-27 17:10:03 +0000 UTC FinishedAt: 2026-07-27 22:49:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-27 17:10:03 +0000 UTC FinishedAt: 2026-07-27 22:49:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-27 17:10:03 +0000 UTC FinishedAt: 2026-07-27 17:10:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-27 17:10:03 +0000 UTC FinishedAt: 2026-07-27 17:10:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflowztq74/series-workflowztq74-convert-artifact-1319867741/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-27 17:10:25 +0000 UTC FinishedAt: 2026-07-27 18:14:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-27 17:10:25 +0000 UTC FinishedAt: 2026-07-27 18:14:58 +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:*fe787d66-a9d4-40d8-8973-ab288ff85c61,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-workflowztq74/series-workflowztq74-convert-artifact-1319867741/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": "b5a710b0-f903-48d3-8260-e16b9218b50f", "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-workflowztq74/series-workflowztq74-build-action-1529768083/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-27 17:10:25 +0000 UTC FinishedAt: 2026-07-27 18:14:48 +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:*fe787d66-a9d4-40d8-8973-ab288ff85c61,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-workflowztq74/series-workflowztq74-convert-artifact-1319867741/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": "b5a710b0-f903-48d3-8260-e16b9218b50f", "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-workflowztq74/series-workflowztq74-build-action-1529768083/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-27 18:14:58 +0000 UTC FinishedAt: 2026-07-27 18:14:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-27 18:14:58 +0000 UTC FinishedAt: 2026-07-27 18:14:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-27 18:14:58 +0000 UTC FinishedAt: 2026-07-27 18:15:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-27 18:14:58 +0000 UTC FinishedAt: 2026-07-27 18:15:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflowztq74/series-workflowztq74-convert-artifact-2163477560/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-27 18:15:19 +0000 UTC FinishedAt: 2026-07-27 18:17:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-27 18:15:19 +0000 UTC FinishedAt: 2026-07-27 18:17:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b5a710b0-f903-48d3-8260-e16b9218b50f,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-workflowztq74/series-workflowztq74-build-action-1529768083/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-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-27 18:17:35 +0000 UTC FinishedAt: 2026-07-27 18:17:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-27 18:17:35 +0000 UTC FinishedAt: 2026-07-27 18:17:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-27 18:17:35 +0000 UTC FinishedAt: 2026-07-27 19:41:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-27 18:17:35 +0000 UTC FinishedAt: 2026-07-27 19:41:58 +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:*fe787d66-a9d4-40d8-8973-ab288ff85c61,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-workflowztq74/series-workflowztq74-convert-artifact-2163477560/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": "d1471a6e-6686-4e01-a1f8-ac39e7497250", "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-workflowztq74/series-workflowztq74-build-action-789062948/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-27 18:17:35 +0000 UTC FinishedAt: 2026-07-27 19:41:48 +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:*fe787d66-a9d4-40d8-8973-ab288ff85c61,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-workflowztq74/series-workflowztq74-convert-artifact-2163477560/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": "d1471a6e-6686-4e01-a1f8-ac39e7497250", "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-workflowztq74/series-workflowztq74-build-action-789062948/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-27 19:41:58 +0000 UTC FinishedAt: 2026-07-27 19:41:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-27 19:41:58 +0000 UTC FinishedAt: 2026-07-27 19:41:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-27 19:41:58 +0000 UTC FinishedAt: 2026-07-27 19:44:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-27 19:41:58 +0000 UTC FinishedAt: 2026-07-27 19:43:54 +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:*d1471a6e-6686-4e01-a1f8-ac39e7497250,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-workflowztq74/series-workflowztq74-build-action-789062948/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-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-27 19:44:04 +0000 UTC FinishedAt: 2026-07-27 22:49:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-27 19:44:04 +0000 UTC FinishedAt: 2026-07-27 22:49:24 +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":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},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:*b5a710b0-f903-48d3-8260-e16b9218b50f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d1471a6e-6686-4e01-a1f8-ac39e7497250,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-workflowztq74/series-workflowztq74-build-action-1529768083/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-workflowztq74/series-workflowztq74-build-action-789062948/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-27 19:44:04 +0000 UTC FinishedAt: 2026-07-27 19:44:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-27 19:44:04 +0000 UTC FinishedAt: 2026-07-27 19:44:08 +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":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},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-workflowztq74/series-workflowztq74-convert-artifact-4178232465/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-27 19:44:04 +0000 UTC FinishedAt: 2026-07-27 19:44:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-27 19:44:04 +0000 UTC FinishedAt: 2026-07-27 19:44:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-27 19:44:04 +0000 UTC FinishedAt: 2026-07-27 19:44:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-27 19:44:14 +0000 UTC FinishedAt: 2026-07-27 22:49:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowztq74[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["migrate_vma_pages","migrate_device_pages"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"9c66085e6dcfb44b70970aa4e323003fc7f2b738","config_name":"upstream-apparmor-kasan.config","enable_configs":["DEVICE_MIGRATION","TEST_HMM","TRANSPARENT_HUGEPAGE","DEVICE_PRIVATE","ZONE_DEVICE","MIGRATION"],"series_id":"92b115e6-0bc1-4647-bcd7-3472c8764be9","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-27 19:44:14 +0000 UTC FinishedAt: 2026-07-27 22:49:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b5a710b0-f903-48d3-8260-e16b9218b50f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*d1471a6e-6686-4e01-a1f8-ac39e7497250,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-workflowztq74/series-workflowztq74-build-action-1529768083/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-workflowztq74/series-workflowztq74-build-action-789062948/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-workflowztq74/series-workflowztq74-convert-artifact-4178232465/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,}