Name: series-workflowdpf6k Phase: Succeeded StartedAt: 2026-08-23 10:40:33 +0000 UTC FinishedAt: 2026-08-23 13:01:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdpf6k[0] Phase: Succeeded StartedAt: 2026-08-23 10:40:33 +0000 UTC FinishedAt: 2026-08-23 11:25:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdpf6k[0].run-triage Phase: Succeeded StartedAt: 2026-08-23 10:40:33 +0000 UTC FinishedAt: 2026-08-23 11:25:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "91ec2035134982b98fab0609a9fd8480e8217dc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RUST", "RUST_PHYLIB_ABSTRACTIONS", "AX88796B_RUST_PHY", "USB_NET_AX8817X", "USB_USBNET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "91ec2035134982b98fab0609a9fd8480e8217dc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RUST", "RUST_PHYLIB_ABSTRACTIONS", "AX88796B_RUST_PHY", "USB_NET_AX8817X", "USB_USBNET" ], "series_id": "73fef33f-c06c-408d-a252-31fdda55c815" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ax88772_bind", "ax88772_init_phy" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JVU1QmIzM0OywKICAgICYjMzQ7UlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TJiMzNDssCiAgICAmIzM0O0FYODg3OTZCX1JVU1RfUEhZJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfQVg4ODE3WCYjMzQ7LAogICAgJiMzNDtVU0JfVVNCTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXg4ODc3Ml9iaW5kJiMzNDssCiAgICAmIzM0O2F4ODg3NzJfaW5pdF9waHkmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCB1cGRhdGVzIGJpdGZpZWxkIG9mZnNldHMgaW4gdGhlIFJ1c3Qgd3JhcHBlciBmb3IgdGhlIGBwaHlfZGV2aWNlYCBzdHJ1Y3QgKGBydXN0L2tlcm5lbC9uZXQvcGh5LnJzYCkuIEl0IGNoYW5nZXMgdGhlIGJpdCBpbmRpY2VzIHVzZWQgdG8gcmVhZCB0aGUgYGxpbmtgLCBgYXV0b25lZ2AsIGFuZCBgYXV0b25lZ19jb21wbGV0ZWAgZmllbGRzIGZyb20gYF9iaXRmaWVsZF8xYC4gVGhpcyBpcyBhIGxvZ2ljIGZpeCB0byBzeW5jaHJvbml6ZSB0aGUgUnVzdCBiaW5kaW5ncyB3aXRoIHRoZSB1bmRlcmx5aW5nIEMgc3RydWN0dXJlIGxheW91dC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGV4cG9zZSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBpbnZvbHZlIHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgcmVsYXRlZCB0byB0aGUgYHBoeV9kZXZpY2VgIHN0cnVjdCB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gKGUuZy4sIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzKS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYml0ZmllbGQgaW5kaWNlcyBpbiB0aGUgUnVzdCBQSFkgZHJpdmVyIEFQSSBmb3IgYGlzX2xpbmtfdXBgLCBgaXNfYXV0b25lZ19lbmFibGVkYCwgYW5kIGBpc19hdXRvbmVnX2NvbXBsZXRlZGAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCBieSB0aGUgYGF4ODg3OTZiX3J1c3RgIFBIWSBkcml2ZXIsIHdoaWNoIGlzIHVzZWQgYnkgdGhlIEFTSVggVVNCIGV0aGVybmV0IGRyaXZlci4gSW5jb3JyZWN0IGJpdGZpZWxkIGluZGljZXMgY2FuIGxlYWQgdG8gaW5jb3JyZWN0IGxpbmsgc3RhdHVzIGFuZCBhdXRvbmVnb3RpYXRpb24gYmVoYXZpb3IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTA5MTdkYjMwYzQ1YzUyMDI1YmU2ODRmZjJlODMyNDY1YjhmMjllZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDIzIDExOjIxOjQyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL25ldC9waHkucnMgYi9ydXN0L2tlcm5lbC9uZXQvcGh5LnJzXG5pbmRleCA5NTZjZGE1NzNkZGJhLi45OWVkM2RkMTY4ZGYzIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvbmV0L3BoeS5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvbmV0L3BoeS5yc1xuQEAgLTEzMCw3ICYjNDM7MTMwLDcgQEAgcHViIGZuIGlzX2xpbmtfdXAoXHUwMDI2c2VsZikgLVx1MDAzZSBib29sIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHN0cnVjdCBpbnZhcmlhbnQgZW5zdXJlcyB0aGF0IHdlIG1heSBhY2Nlc3NcbiAgICAgICAgIC8vIHRoaXMgZmllbGQgd2l0aG91dCBhZGRpdGlvbmFsIHN5bmNocm9uaXphdGlvbi5cbiAgICAgICAgIGxldCBiaXRfZmllbGQgPSB1bnNhZmUgeyBcdTAwMjYoKnNlbGYuMC5nZXQoKSkuX2JpdGZpZWxkXzEgfTtcbi0gICAgICAgIGJpdF9maWVsZC5nZXQoMTQsIDEpID09IExJTktfSVNfVVBcbiYjNDM7ICAgICAgICBiaXRfZmllbGQuZ2V0KDE1LCAxKSA9PSBMSU5LX0lTX1VQXG4gICAgIH1cbiBcbiAgICAgLy8vIEdldHMgdGhlIGN1cnJlbnQgYXV0by1uZWdvdGlhdGlvbiBjb25maWd1cmF0aW9uLlxuQEAgLTE0Miw3ICYjNDM7MTQyLDcgQEAgcHViIGZuIGlzX2F1dG9uZWdfZW5hYmxlZChcdTAwMjZzZWxmKSAtXHUwMDNlIGJvb2wge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgc3RydWN0IGludmFyaWFudCBlbnN1cmVzIHRoYXQgd2UgbWF5IGFjY2Vzc1xuICAgICAgICAgLy8gdGhpcyBmaWVsZCB3aXRob3V0IGFkZGl0aW9uYWwgc3luY2hyb25pemF0aW9uLlxuICAgICAgICAgbGV0IGJpdF9maWVsZCA9IHVuc2FmZSB7IFx1MDAyNigqc2VsZi4wLmdldCgpKS5fYml0ZmllbGRfMSB9O1xuLSAgICAgICAgYml0X2ZpZWxkLmdldCgxMywgMSkgPT0gdTY0Ojpmcm9tKGJpbmRpbmdzOjpBVVRPTkVHX0VOQUJMRSlcbiYjNDM7ICAgICAgICBiaXRfZmllbGQuZ2V0KDE0LCAxKSA9PSB1NjQ6OmZyb20oYmluZGluZ3M6OkFVVE9ORUdfRU5BQkxFKVxuICAgICB9XG4gXG4gICAgIC8vLyBHZXRzIHRoZSBjdXJyZW50IGF1dG8tbmVnb3RpYXRpb24gc3RhdGUuXG5AQCAtMTU1LDcgJiM0MzsxNTUsNyBAQCBwdWIgZm4gaXNfYXV0b25lZ19jb21wbGV0ZWQoXHUwMDI2c2VsZikgLVx1MDAzZSBib29sIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHN0cnVjdCBpbnZhcmlhbnQgZW5zdXJlcyB0aGF0IHdlIG1heSBhY2Nlc3NcbiAgICAgICAgIC8vIHRoaXMgZmllbGQgd2l0aG91dCBhZGRpdGlvbmFsIHN5bmNocm9uaXphdGlvbi5cbiAgICAgICAgIGxldCBiaXRfZmllbGQgPSB1bnNhZmUgeyBcdTAwMjYoKnNlbGYuMC5nZXQoKSkuX2JpdGZpZWxkXzEgfTtcbi0gICAgICAgIGJpdF9maWVsZC5nZXQoMTUsIDEpID09IEFVVE9ORUdfQ09NUExFVEVEXG4mIzQzOyAgICAgICAgYml0X2ZpZWxkLmdldCgxNiwgMSkgPT0gQVVUT05FR19DT01QTEVURURcbiAgICAgfVxuIFxuICAgICAvLy8gU2V0cyB0aGUgc3BlZWQgb2YgdGhlIFBIWS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UlVTVCYjMzQ7LAogICAgJiMzNDtSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlMmIzM0OywKICAgICYjMzQ7QVg4ODc5NkJfUlVTVF9QSFkmIzM0OywKICAgICYjMzQ7VVNCX05FVF9BWDg4MTdYJiMzNDssCiAgICAmIzM0O1VTQl9VU0JORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtheDg4NzcyX2JpbmQmIzM0OywKICAgICYjMzQ7YXg4ODc3Ml9pbml0X3BoeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBiaXRmaWVsZCBpbmRpY2VzIGluIHRoZSBSdXN0IFBIWSBkcml2ZXIgQVBJIGZvciBgaXNfbGlua191cGAsIGBpc19hdXRvbmVnX2VuYWJsZWRgLCBhbmQgYGlzX2F1dG9uZWdfY29tcGxldGVkYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIGJ5IHRoZSBgYXg4ODc5NmJfcnVzdGAgUEhZIGRyaXZlciwgd2hpY2ggaXMgdXNlZCBieSB0aGUgQVNJWCBVU0IgZXRoZXJuZXQgZHJpdmVyLiBJbmNvcnJlY3QgYml0ZmllbGQgaW5kaWNlcyBjYW4gbGVhZCB0byBpbmNvcnJlY3QgbGluayBzdGF0dXMgYW5kIGF1dG9uZWdvdGlhdGlvbiBiZWhhdmlvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhMDkxN2RiMzBjNDVjNTIwMjViZTY4NGZmMmU4MzI0NjViOGYyOWVkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMjMgMTE6MjE6NDIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9uZXQvcGh5LnJzIGIvcnVzdC9rZXJuZWwvbmV0L3BoeS5ycwppbmRleCA5NTZjZGE1NzNkZGJhLi45OWVkM2RkMTY4ZGYzIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9uZXQvcGh5LnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL25ldC9waHkucnMKQEAgLTEzMCw3ICYjNDM7MTMwLDcgQEAgcHViIGZuIGlzX2xpbmtfdXAoJmFtcDtzZWxmKSAtJmd0OyBib29sIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgc3RydWN0IGludmFyaWFudCBlbnN1cmVzIHRoYXQgd2UgbWF5IGFjY2VzcwogICAgICAgICAvLyB0aGlzIGZpZWxkIHdpdGhvdXQgYWRkaXRpb25hbCBzeW5jaHJvbml6YXRpb24uCiAgICAgICAgIGxldCBiaXRfZmllbGQgPSB1bnNhZmUgeyAmYW1wOygqc2VsZi4wLmdldCgpKS5fYml0ZmllbGRfMSB9OwotICAgICAgICBiaXRfZmllbGQuZ2V0KDE0LCAxKSA9PSBMSU5LX0lTX1VQCiYjNDM7ICAgICAgICBiaXRfZmllbGQuZ2V0KDE1LCAxKSA9PSBMSU5LX0lTX1VQCiAgICAgfQogCiAgICAgLy8vIEdldHMgdGhlIGN1cnJlbnQgYXV0by1uZWdvdGlhdGlvbiBjb25maWd1cmF0aW9uLgpAQCAtMTQyLDcgJiM0MzsxNDIsNyBAQCBwdWIgZm4gaXNfYXV0b25lZ19lbmFibGVkKCZhbXA7c2VsZikgLSZndDsgYm9vbCB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHN0cnVjdCBpbnZhcmlhbnQgZW5zdXJlcyB0aGF0IHdlIG1heSBhY2Nlc3MKICAgICAgICAgLy8gdGhpcyBmaWVsZCB3aXRob3V0IGFkZGl0aW9uYWwgc3luY2hyb25pemF0aW9uLgogICAgICAgICBsZXQgYml0X2ZpZWxkID0gdW5zYWZlIHsgJmFtcDsoKnNlbGYuMC5nZXQoKSkuX2JpdGZpZWxkXzEgfTsKLSAgICAgICAgYml0X2ZpZWxkLmdldCgxMywgMSkgPT0gdTY0Ojpmcm9tKGJpbmRpbmdzOjpBVVRPTkVHX0VOQUJMRSkKJiM0MzsgICAgICAgIGJpdF9maWVsZC5nZXQoMTQsIDEpID09IHU2NDo6ZnJvbShiaW5kaW5nczo6QVVUT05FR19FTkFCTEUpCiAgICAgfQogCiAgICAgLy8vIEdldHMgdGhlIGN1cnJlbnQgYXV0by1uZWdvdGlhdGlvbiBzdGF0ZS4KQEAgLTE1NSw3ICYjNDM7MTU1LDcgQEAgcHViIGZuIGlzX2F1dG9uZWdfY29tcGxldGVkKCZhbXA7c2VsZikgLSZndDsgYm9vbCB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHN0cnVjdCBpbnZhcmlhbnQgZW5zdXJlcyB0aGF0IHdlIG1heSBhY2Nlc3MKICAgICAgICAgLy8gdGhpcyBmaWVsZCB3aXRob3V0IGFkZGl0aW9uYWwgc3luY2hyb25pemF0aW9uLgogICAgICAgICBsZXQgYml0X2ZpZWxkID0gdW5zYWZlIHsgJmFtcDsoKnNlbGYuMC5nZXQoKSkuX2JpdGZpZWxkXzEgfTsKLSAgICAgICAgYml0X2ZpZWxkLmdldCgxNSwgMSkgPT0gQVVUT05FR19DT01QTEVURUQKJiM0MzsgICAgICAgIGJpdF9maWVsZC5nZXQoMTYsIDEpID09IEFVVE9ORUdfQ09NUExFVEVECiAgICAgfQogCiAgICAgLy8vIFNldHMgdGhlIHNwZWVkIG9mIHRoZSBQSFkuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNzgKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUEhZIERldmljZSBCdWcgRml4KioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHJ1c3Qva2VybmVsL25ldC9waHkucnNgLiBJdCYjMzk7cyB0d2Vha2luZyB0aGUgYml0ZmllbGQgaW5kaWNlcyBmb3IgYGlzX2xpbmtfdXBgLCBgaXNfYXV0b25lZ19lbmFibGVkYCwgYW5kIGBpc19hdXRvbmVnX2NvbXBsZXRlZGAuIFJpZ2h0IGF3YXksIHRoaXMgc2NyZWFtcyAmIzM0O2J1ZyBmaXgmIzM0OyBmb3IgdGhlIFJ1c3QgYmluZGluZ3MgcmVsYXRlZCB0byBQaHlzaWNhbCBMYXllciAoUEhZKSBkZXZpY2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgbWVhbnMgaW4gdGhlIGJyb2FkZXIgY29udGV4dC4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBpbXBhY3QuIEkgc2hvdWxkIGNoZWNrIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQuIFRoZXkmIzM5O3JlIHBhcnQgb2YgdGhlIFJ1c3QgUEhZIGRyaXZlciBBUEksIG9mIGNvdXJzZS4gTXkgZXhwZXJ0aXNlIHNheXMgdGhlc2UgYXJlIGNyaXRpY2FsIGZ1bmN0aW9ucyBmb3IgY2hlY2tpbmcgdGhlIGxpbmsgc3RhdHVzIGFuZCBhdXRvbmVnb3RpYXRpb24gc3RhdGUgb2YgYSBuZXR3b3JrIGNvbm5lY3Rpb24uCgpOb3csIGEga2V5IHF1ZXN0aW9uIGFyaXNlczogQXJlIHRoZXJlICphbnkqIFBIWSBkcml2ZXJzIHdyaXR0ZW4gaW4gUnVzdCB5ZXQ/IElmIG5vdCwgaXQmIzM5O3MgcG90ZW50aWFsbHkgaW1wb3J0YW50LCBidXQgbG93ZXIgcHJpb3JpdHkuIFNvLCBsZXQgbWUgc2VhcmNoIGZvciB1c2VzIG9mIHRob3NlIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5IHdpdGhpbiBgcnVzdC9gIGFuZCB0aGUgYGRyaXZlcnMvbmV0L3BoeS9gIGRpcmVjdG9yaWVzLiBGaW5kaW5nIHVzZXMgd2lsbCBnaXZlIG1lIGNydWNpYWwgY29udGV4dC4gVGhpcyBiaXRmaWVsZCBmaXggbWF5IGJlIGNyaXRpY2FsIGZvciBleGlzdGluZyBSdXN0IFBIWSBkcml2ZXJzLCBvciBtYXliZSB3ZSBhcmUgcHJlcGFyaW5nIHNvbWV0aGluZy4gSSBuZWVkIHRvIGRpZyBpbiBhbmQgc2VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lzX2xpbmtfdXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtydXN0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtydXN0L2tlcm5lbC9uZXQvcGh5LnJzPTEwMz0gICAgcHViIGZuIHN0YXRlKFx1MDAyNnNlbGYpIC1cdTAwM2UgRGV2aWNlU3RhdGUge1xuLS1cbnJ1c3Qva2VybmVsL25ldC9waHkucnMtMTI1LSAgICAvLy8gSXQgcmV0dXJucyB0cnVlIGlmIHRoZSBsaW5rIGlzIHVwLlxucnVzdC9rZXJuZWwvbmV0L3BoeS5yczoxMjY6ICAgIHB1YiBmbiBpc19saW5rX3VwKFx1MDAyNnNlbGYpIC1cdTAwM2UgYm9vbCB7XG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTEyNy0gICAgICAgIGNvbnN0IExJTktfSVNfVVA6IHU2NCA9IDE7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgxMQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIGlmIEkgY2FuIGdldCB0aGlzIHJpZ2h0Li4uCgoqKlJ1c3QgUEhZIERyaXZlciBTZWFyY2gqKgoKQWxyaWdodCwgc28gSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyBxdWlja2x5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW52ZXN0aWdhdGUgdGhlIGN1cnJlbnQgbGFuZHNjYXBlIG9mIFJ1c3QgUEhZIGRyaXZlcnMuIEkmIzM5O20gY3VyaW91cyBpZiB0aGVyZSYjMzk7cyBhbnkgYWN0aXZlIGRldmVsb3BtZW50IG9yIGV4aXN0aW5nIGltcGxlbWVudGF0aW9ucyBhbHJlYWR5IG91dCB0aGVyZSwgb3IgaWYgdGhpcyBpcyBzb21ldGhpbmcgSSYjMzk7bGwgbmVlZCB0byBjb250cmlidXRlIHRvIGZyb20gc2NyYXRjaC4gSSYjMzk7bSBnb2luZyB0byBkbyBhIHF1aWNrIHNlYXJjaCBhbmQgc2VlIHdoYXQgY29tZXMgdXAuIFRoaXMgaXMgYSBjb21tb24gZmlyc3Qgc3RlcCAtIHVuZGVyc3RhbmQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgcGxheSBiZWZvcmUgZGl2aW5nIGluIGRlZXBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpc19saW5rX3VwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycz00OT0gICAgZm4gcmVhZF9zdGF0dXMoZGV2OiBcdTAwMjZtdXQgcGh5OjpEZXZpY2UpIC1cdTAwM2UgUmVzdWx0XHUwMDNjdTE2XHUwMDNlIHtcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTUwLSAgICAgICAgZGV2LmdlbnBoeV91cGRhdGVfbGluaygpPztcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzOjUxOiAgICAgICAgaWYgIWRldi5pc19saW5rX3VwKCkge1xuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtNTItICAgICAgICAgICAgcmV0dXJuIE9rKDApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBheDg4Nzk2YiBEcml2ZXIqKgoKT2theSwgc28gSSBzZWUgdGhpcyBgYXg4ODc5NmJfcnVzdC5yc2AgZmlsZSBwb3BwZWQgdXAuIFJpZ2h0LCB0aGF0JiMzOTtzIGluIHRoZSBuZXR3b3JrIFBIWSBkcml2ZXJzLCB3aGljaCBpcyBleGFjdGx5IHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gYW4gQVg4ODc5NkIgY2hpcC4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIGhvdyBpdCYjMzk7cyBiZWluZyBoYW5kbGVkLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayBpdHMgY29uZmlndXJhdGlvbiwgbWFrZSBzdXJlIGl0JiMzOTtzIHNldCB1cCBjb3JyZWN0bHksIGFuZCB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGludGVyZmFjZXMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgbmV0d29yayBzdGFjay4gSeKAmWxsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIGhvdyB0aGUgZHJpdmVyIGlzIGltcGxlbWVudGVkLiBJIHdhbnQgdG8gbG9vayBjbG9zZWx5IGF0IHRoZSByZWdpc3RlciBhY2Nlc3MgcGF0dGVybnMsIGVycm9yIGhhbmRsaW5nLCBhbmQgYW55IHBvd2VyIG1hbmFnZW1lbnQgY29uc2lkZXJhdGlvbnMuIEhvcGVmdWxseSwgaXRzIGNvbmZpZ3VyYXRpb24gaXMgc2FuZS4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0byBsb29rIGF0IHJlbGF0ZWQgZmlsZXMgaWYgaXQgc2VlbXMgdGhhdCB0aGV5IGFyZSByZWxhdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F4ODg3OTZiX3J1c3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTE2MD1jb25maWcgQVg4ODc5NkJfUlVTVF9QSFlcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNjMtXHRoZWxwXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxNjQ6XHQgIFVzZXMgdGhlIFJ1c3QgcmVmZXJlbmNlIGRyaXZlciBmb3IgQXNpeCBQSFlzIChheDg4Nzk2Yl9ydXN0LmtvKS5cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE2NS1cdCAgVGhlIGZlYXR1cmVzIGFyZSBlcXVpdmFsZW50LiBJdCBzdXBwb3J0cyB0aGUgQXNpeCBFbGVjdHJvbmljcyBQSFlcbi0tXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9NDA9aWZkZWYgQ09ORklHX0FYODg3OTZCX1JVU1RfUEhZXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NDE6ICBvYmotJChDT05GSUdfQVg4ODc5NkJfUEhZKVx0JiM0Mzs9IGF4ODg3OTZiX3J1c3Qub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTQyLWVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjA3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhpbmtpbmcgcHJvY2VzczoKCioqRXhhbWluaW5nIEFYODg3OTZCIFBIWSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgc2VlIEkgbmVlZCBib3RoIGBDT05GSUdfQVg4ODc5NkJfUlVTVF9QSFlgIGFuZCBgQ09ORklHX0FYODg3OTZCX1BIWWAuIFJpZ2h0LCBgQ09ORklHX0FYODg3OTZCX1JVU1RfUEhZYCBpcyBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaW1lIHRvIGRpZyBpbiBhIGJpdCBkZWVwZXIuIEdpdmVuIHRoZSBjb250ZXh0LCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMTYwIG9yIHNvLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBkZWZpbml0aW9uIGZvciB0aGlzIGxpa2VseSByZXNpZGVzLiBJJiMzOTtsbCBzZWUgd2hhdCBkZXBlbmRlbmNpZXMgb3IgY29uc3RyYWludHMgYXJlIGRvY3VtZW50ZWQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE1MDpcdFx0ICBBZGRzIHN1cHBvcnQgZm9yIHRoZSBBcHBsaWVkIE1pY3JvIENpcmN1aXRzIENvcnBvcmF0aW9uIFFUMjAyNSBQSFkuXG4gMTUxOlx0XG4gMTUyOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9LY29uZmlnXCYjMzQ7XG4gMTUzOlx0XG4gMTU0Olx0Y29uZmlnIEFYODg3OTZCX1BIWVxuIDE1NTpcdFx0dHJpc3RhdGUgXCYjMzQ7QXNpeCBQSFlzXCYjMzQ7XG4gMTU2Olx0XHRoZWxwXG4gMTU3Olx0XHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgQXNpeCBFbGVjdHJvbmljcyBQSFkgZm91bmQgaW4gdGhlIFgtU3VyZiAxMDBcbiAxNTg6XHRcdCAgQVg4ODc5NkIgcGFja2FnZS5cbiAxNTk6XHRcbiAxNjA6XHRjb25maWcgQVg4ODc5NkJfUlVTVF9QSFlcbiAxNjE6XHRcdGJvb2wgXCYjMzQ7UnVzdCByZWZlcmVuY2UgZHJpdmVyIGZvciBBc2l4IFBIWXNcJiMzNDtcbiAxNjI6XHRcdGRlcGVuZHMgb24gUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TIFx1MDAyNlx1MDAyNiBBWDg4Nzk2Ql9QSFlcbiAxNjM6XHRcdGhlbHBcbiAxNjQ6XHRcdCAgVXNlcyB0aGUgUnVzdCByZWZlcmVuY2UgZHJpdmVyIGZvciBBc2l4IFBIWXMgKGF4ODg3OTZiX3J1c3Qua28pLlxuIDE2NTpcdFx0ICBUaGUgZmVhdHVyZXMgYXJlIGVxdWl2YWxlbnQuIEl0IHN1cHBvcnRzIHRoZSBBc2l4IEVsZWN0cm9uaWNzIFBIWVxuIDE2NjpcdFx0ICBmb3VuZCBpbiB0aGUgWC1TdXJmIDEwMCBBWDg4Nzk2QiBwYWNrYWdlLlxuIDE2NzpcdFxuIDE2ODpcdGNvbmZpZyBCUk9BRENPTV9QSFlcbiAxNjk6XHRcdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIDU0WFggUEhZc1wmIzM0O1xuIDE3MDpcdFx0c2VsZWN0IEJDTV9ORVRfUEhZTElCXG4gMTcxOlx0XHRzZWxlY3QgQkNNX05FVF9QSFlQVFAgaWYgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXG4gMTcyOlx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gMTczOlx0XHRoZWxwXG4gMTc0Olx0XHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgQkNNNTQxMSwgQkNNNTQyMSwgQkNNNTQ2MSwgQkNNNTQ2MTZTLCBCQ001NDY0LFxuIDE3NTpcdFx0ICBCQ001NDgxLCBCQ001NDgxMCBhbmQgQkNNNTQ4MiBQSFlzLlxuIDE3NjpcdFxuIDE3NzpcdGNvbmZpZyBCQ001NDE0MF9QSFlcbiAxNzg6XHRcdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIEJDTTU0MTQwIFBIWVwmIzM0O1xuIDE3OTpcdFx0ZGVwZW5kcyBvbiBIV01PTiB8fCBIV01PTj1uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MzEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246CgoqKkRlcGVuZGVuY3kgRGVlcCBEaXZlKioKCk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYEFYODg3OTZCX1JVU1RfUEhZYCByZWxpZXMgb24gYm90aCBgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TYCBhbmQgYEFYODg3OTZCX1BIWWAuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0JiMzOTtzIHByb2JhYmx5IHVzaW5nIHRoZSBhYnN0cmFjdGlvbnMgZm9yIHBsYXRmb3JtLWFnbm9zdGljIFBIWSBpbnRlcmFjdGlvbiBhbmQgdGhlIGBBWDg4Nzk2Ql9QSFlgIGZvciB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgZGV0YWlscyBvZiB0aGF0IHBhcnRpY3VsYXIgY2hpcC4gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIGBSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRob3NlIGFic3RyYWN0aW9ucyAqYXJlKi4gV2hhdCBpbnRlcmZhY2VzIGFyZSBiZWluZyBkZWZpbmVkIGhlcmU/IFdoYXQgYXJlIHRoZSBjYXBhYmlsaXRpZXMgYW5kIGxpbWl0YXRpb25zIG9mIHRoaXMgYWJzdHJhY3Rpb24gbGF5ZXI/IFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgYXJjaGl0ZWN0dXJlIG9mIHRoZSB3aG9sZSBQSFkgaW50ZXJhY3Rpb24gbGllcywgc28gdGhpcyBpcyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgZWZmb3J0cyBmaXJzdCB0byB1bmRlcnN0YW5kIHRoZSB3aG9sZS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHdoYXQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NTY9Y29uZmlnIEZJWEVEX1BIWVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTY0LVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NjU6Y29uZmlnIFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU1xuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNjYtICAgICAgICBib29sIFwmIzM0O1J1c3QgUEhZTElCIGFic3RyYWN0aW9ucyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3OTUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkV4YW1pbmluZyBQSFkgS2NvbmZpZyBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9waHkvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBmb2N1c2luZyBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNjU7IHRoYXQmIzM5O3MgdXN1YWxseSB3aGVyZSB0aGUgbWVhdCBvZiBhIHNwZWNpZmljIG1vZHVsZSYjMzk7cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgYmVnaW5zLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IHRoaXMgcGFydGljdWxhciBQSFkgZHJpdmVyIGlzIGNvbmZpZ3VyZWQuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBzY2FuIGl0IHRvIGdyYXNwIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBjaG9pY2VzIHRoZSBkZXZlbG9wZXJzIGhhdmUgYnVpbHQgaW50byBpdC4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCBob3cgdGhpcyBQSFkgaXMgaW50ZWdyYXRlZCBhbmQgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIGdvdGNoYXMgdG8gbG9vayBvdXQgZm9yLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGEgdHlwaWNhbCBLY29uZmlnIHN0cnVjdHVyZSDigJMgYGNvbmZpZ2AgZGlyZWN0aXZlcywgYGRlcGVuZHMgb25gIHN0YXRlbWVudHMsIG1heWJlIHNvbWUgYHNlbGVjdGAgc3RhdGVtZW50cywgYW5kIHNvbWUgaGVscCB0ZXh0LiBLbm93aW5nIHRoaXMsIEkgY2FuIHN0YXJ0IGZvcm1pbmcgYSBtZW50YWwgbWFwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA2MDpcdFx0ICBBZGRzIHRoZSBwbGF0Zm9ybSBcJiMzNDtmaXhlZFwmIzM0OyBNRElPIEJ1cyB0byBjb3ZlciB0aGUgYm9hcmRzIHRoYXQgdXNlXG4gIDYxOlx0XHQgIFBIWXMgdGhhdCBhcmUgbm90IGNvbm5lY3RlZCB0byB0aGUgcmVhbCBNRElPIGJ1cy5cbiAgNjI6XHRcbiAgNjM6XHRcdCAgQ3VycmVudGx5IHRlc3RlZCB3aXRoIG1wYzg2NmFkcyBhbmQgbXBjODM0OWUtbWl0eC5cbiAgNjQ6XHRcbiAgNjU6XHRjb25maWcgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TXG4gIDY2Olx0ICAgICAgICBib29sIFwmIzM0O1J1c3QgUEhZTElCIGFic3RyYWN0aW9ucyBzdXBwb3J0XCYjMzQ7XG4gIDY3Olx0ICAgICAgICBkZXBlbmRzIG9uIFJVU1RcbiAgNjg6XHQgICAgICAgIGRlcGVuZHMgb24gUEhZTElCPXlcbiAgNjk6XHQgICAgICAgIGhlbHBcbiAgNzA6XHQgICAgICAgICAgQWRkcyBzdXBwb3J0IG5lZWRlZCBmb3IgUEhZIGRyaXZlcnMgd3JpdHRlbiBpbiBSdXN0LiBJdCBwcm92aWRlc1xuICA3MTpcdCAgICAgICAgICBhIHdyYXBwZXIgYXJvdW5kIHRoZSBDIHBoeWxpYiBjb3JlLlxuICA3MjpcdFxuICA3MzpcdGNvbmZpZyBTRlBcbiAgNzQ6XHRcdHRyaXN0YXRlIFwmIzM0O1NGUCBjYWdlIHN1cHBvcnRcJiMzNDtcbiAgNzU6XHRcdGRlcGVuZHMgb24gSTJDIFx1MDAyNlx1MDAyNiBQSFlMSU5LXG4gIDc2Olx0XHRkZXBlbmRzIG9uIEhXTU9OIHx8IEhXTU9OPW5cbiAgNzc6XHRcdHNlbGVjdCBNRElPX0kyQ1xuICA3ODpcdFxuICA3OTpcdGNvbW1lbnQgXCYjMzQ7TUlJIFBIWSBkZXZpY2UgZHJpdmVyc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzE5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEN1cnJlbnQgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaW1wbGVtZW50aW5nIHN1cHBvcnQgZm9yIHRoaXMgQXNpeCBQSFksIHNwZWNpZmljYWxseSB0aGUgQVg4ODc5NkIsIHdpdGhpbiB0aGlzIFJ1c3QgZW52aXJvbm1lbnQuIEkgbmVlZCB0byBpbnRlZ3JhdGUgdGhlc2Ugc3BlY2lmaWMgY29tcG9uZW50czogYFJVU1RgLCBgUEhZTElCYCwgYFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU2AsIGBBWDg4Nzk2Ql9QSFlgLCBhbmQgYEFYODg3OTZCX1JVU1RfUEhZYC4KCk15IG1haW4gY29uY2VybiBpcywgY2FuIEkgZXZlbiByZWxpYWJseSB0ZXN0IHRoZSBgaXNfbGlua191cGAgZnVuY3Rpb25hbGl0eSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBSZWFsLXdvcmxkIFBIWSBkcml2ZXJzIGFyZSBvZnRlbiB0aWVkIHRvIE1ESU8gYnVzZXMsIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gc2ltdWxhdGUgb3IgaW5zdGFudGlhdGUgdGhhdCBzZXR1cC4gSSYjMzk7bSB0aGlua2luZyBzcGVjaWZpY2FsbHkgYWJvdXQgUUVNVSwgY2FuIEkgY3JlYXRlIGFuIE1ESU8gYnVzIHRoZXJlIGFuZCBhdHRhY2ggdGhpcyBQSFk/IE9yLCBhcmUgdGhlcmUgdmlydHVhbGl6ZWQgTURJTyBpbXBsZW1lbnRhdGlvbnMgdGhhdCBJIGNhbiBsZXZlcmFnZT8KClRoaW5raW5nIG1vcmUgYWJvdXQgaXQsIEkgcmVtZW1iZXIgdGhhdCBzeXprYWxsZXIgaGFzIHRoZSBwb3RlbnRpYWwgdG8gaW5qZWN0IE1ESU8gZGV2aWNlcywgcHJvdmlkZWQgaXQgY2FuIGFjY2VzcyBhIHZpcnR1YWwgTURJTyBidXMgb3IgaWYgaXQgY2FuIGludGVyYWN0IHdpdGggUEhZcyB2aWEgbmV0bGluayBvciBpb2N0bC4gVGhhdCYjMzk7cyBhIHBvdGVudGlhbCBhdmVudWUuCgpSaWdodCBub3csIG15IGZvY3VzIHNob3VsZCBiZSBvbiBob3cgYGlzX2xpbmtfdXBgIGlzIGludm9rZWQ7IGEgcXVpY2sgbG9vayBhbmQgSSBzZWUgdGhhdCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgcmVhZF9zdGF0dXNgIGluIGBheDg4Nzk2Yl9ydXN0LnJzYC4gSSBzaG91bGQgcHJvYmFibHkgb3BlbiB0aGF0IGZpbGUgYW5kIHNlZSBob3cgdGhpbmdzIGZpdCB0b2dldGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdC8vIENvcHlyaWdodCAoQykgMjAyMyBGVUpJVEEgVG9tb25vcmkgXHUwMDNjZnVqaXRhLnRvbW9ub3JpQGdtYWlsLmNvbVx1MDAzZVxuICAgMzpcdFxuICAgNDpcdC8vISBSdXN0IEFzaXggUEhZcyBkcml2ZXJcbiAgIDU6XHQvLyFcbiAgIDY6XHQvLyEgQyB2ZXJzaW9uIG9mIHRoaXMgZHJpdmVyOiBbYGRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jYF0oLi9heDg4Nzk2Yi5jKVxuICAgNzpcdHVzZSBrZXJuZWw6OntcbiAgIDg6XHQgICAgbmV0OjpwaHk6OntzZWxmLCByZWc6OkMyMiwgRGV2aWNlSWQsIERyaXZlcn0sXG4gICA5Olx0ICAgIHByZWx1ZGU6OiosXG4gIDEwOlx0ICAgIHVhcGksXG4gIDExOlx0fTtcbiAgMTI6XHRcbiAgMTM6XHRrZXJuZWw6Om1vZHVsZV9waHlfZHJpdmVyISB7XG4gIDE0Olx0ICAgIGRyaXZlcnM6IFtQaHlBWDg4NzcyQSwgUGh5QVg4ODc3MkMsIFBoeUFYODg3OTZCXSxcbiAgMTU6XHQgICAgZGV2aWNlX3RhYmxlOiBbXG4gIDE2Olx0ICAgICAgICBEZXZpY2VJZDo6bmV3X3dpdGhfZHJpdmVyOjpcdTAwM2NQaHlBWDg4NzcyQVx1MDAzZSgpLFxuICAxNzpcdCAgICAgICAgRGV2aWNlSWQ6Om5ld193aXRoX2RyaXZlcjo6XHUwMDNjUGh5QVg4ODc3MkNcdTAwM2UoKSxcbiAgMTg6XHQgICAgICAgIERldmljZUlkOjpuZXdfd2l0aF9kcml2ZXI6Olx1MDAzY1BoeUFYODg3OTZCXHUwMDNlKClcbiAgMTk6XHQgICAgXSxcbiAgMjA6XHQgICAgbmFtZTogXCYjMzQ7cnVzdF9hc2l4X3BoeVwmIzM0OyxcbiAgMjE6XHQgICAgYXV0aG9yczogW1wmIzM0O0ZVSklUQSBUb21vbm9yaSBcdTAwM2NmdWppdGEudG9tb25vcmlAZ21haWwuY29tXHUwMDNlXCYjMzQ7XSxcbiAgMjI6XHQgICAgZGVzY3JpcHRpb246IFwmIzM0O1J1c3QgQXNpeCBQSFlzIGRyaXZlclwmIzM0OyxcbiAgMjM6XHQgICAgbGljZW5zZTogXCYjMzQ7R1BMXCYjMzQ7LFxuICAyNDpcdH1cbiAgMjU6XHRcbiAgMjY6XHRjb25zdCBCTUNSX1NQRUVEMTAwOiB1MTYgPSB1YXBpOjpCTUNSX1NQRUVEMTAwIGFzIHUxNjtcbiAgMjc6XHRjb25zdCBCTUNSX0ZVTExEUExYOiB1MTYgPSB1YXBpOjpCTUNSX0ZVTExEUExYIGFzIHUxNjtcbiAgMjg6XHRcbiAgMjk6XHQvLyBQZXJmb3JtcyBhIHNvZnR3YXJlIFBIWSByZXNldCB1c2luZyB0aGUgc3RhbmRhcmRcbiAgMzA6XHQvLyBCTUNSX1JFU0VUIGJpdCBhbmQgcG9sbCBmb3IgdGhlIHJlc2V0IGJpdCB0byBiZSBjbGVhcmVkLlxuICAzMTpcdC8vIFRvZ2dsZSBCTUNSX1JFU0VUIGJpdCBvZmYgdG8gYWNjb21tb2RhdGUgYnJva2VuIEFYODc5NkIgUEhZIGltcGxlbWVudGF0aW9uXG4gIDMyOlx0Ly8gc3VjaCBhcyB1c2VkIG9uIHRoZSBJbmRpdmlkdWFsIENvbXB1dGVycyYjMzk7IFgtU3VyZiAxMDAgWm9ycm8gY2FyZC5cbiAgMzM6XHRmbiBhc2l4X3NvZnRfcmVzZXQoZGV2OiBcdTAwMjZtdXQgcGh5OjpEZXZpY2UpIC1cdTAwM2UgUmVzdWx0IHtcbiAgMzQ6XHQgICAgZGV2LndyaXRlKEMyMjo6Qk1DUiwgMCk/O1xuICAzNTpcdCAgICBkZXYuZ2VucGh5X3NvZnRfcmVzZXQoKVxuICAzNjpcdH1cbiAgMzc6XHRcbiAgMzg6XHRzdHJ1Y3QgUGh5QVg4ODc3MkE7XG4gIDM5Olx0XG4gIDQwOlx0I1t2dGFibGVdXG4gIDQxOlx0aW1wbCBEcml2ZXIgZm9yIFBoeUFYODg3NzJBIHtcbiAgNDI6XHQgICAgY29uc3QgRkxBR1M6IHUzMiA9IHBoeTo6ZmxhZ3M6OklTX0lOVEVSTkFMO1xuICA0MzpcdCAgICBjb25zdCBOQU1FOiBcdTAwMjYmIzM5O3N0YXRpYyBDU3RyID0gY1wmIzM0O0FzaXggRWxlY3Ryb25pY3MgQVg4ODc3MkFcJiMzNDs7XG4gIDQ0Olx0ICAgIGNvbnN0IFBIWV9ERVZJQ0VfSUQ6IERldmljZUlkID0gRGV2aWNlSWQ6Om5ld193aXRoX2V4YWN0X21hc2soMHgwMDNiMTg2MSk7XG4gIDQ1Olx0XG4gIDQ2Olx0ICAgIC8vIEFYODg3NzJBIGlzIG5vdCB3b3JraW5nIHByb3Blcmx5IHdpdGggc29tZSBvbGQgc3dpdGNoZXMgKE5FVEdFQVIgRU4gMTA4VFApOlxuICA0NzpcdCAgICAvLyBhZnRlciBhdXRvbmVnIGlzIGRvbmUgYW5kIHRoZSBsaW5rIHN0YXR1cyBpcyByZXBvcnRlZCBhcyBhY3RpdmUsIHRoZSBNSUlfTFBBXG4gIDQ4Olx0ICAgIC8vIHJlZ2lzdGVyIGlzIDAuIFRoaXMgaXNzdWUgaXMgbm90IHJlcHJvZHVjaWJsZSBvbiBBWDg4NzcyQy5cbiAgNDk6XHQgICAgZm4gcmVhZF9zdGF0dXMoZGV2OiBcdTAwMjZtdXQgcGh5OjpEZXZpY2UpIC1cdTAwM2UgUmVzdWx0XHUwMDNjdTE2XHUwMDNlIHtcbiAgNTA6XHQgICAgICAgIGRldi5nZW5waHlfdXBkYXRlX2xpbmsoKT87XG4gIDUxOlx0ICAgICAgICBpZiAhZGV2LmlzX2xpbmtfdXAoKSB7XG4gIDUyOlx0ICAgICAgICAgICAgcmV0dXJuIE9rKDApO1xuICA1MzpcdCAgICAgICAgfVxuICA1NDpcdCAgICAgICAgLy8gSWYgTUlJX0xQQSBpcyAwLCBwaHlfcmVzb2x2ZV9hbmVnX2xpbmttb2RlKCkgd2lsbCBmYWlsIHRvIHJlc29sdmVcbiAgNTU6XHQgICAgICAgIC8vIGxpbmttb2RlIHNvIHVzZSBNSUlfQk1DUiBhcyBkZWZhdWx0IHZhbHVlcy5cbiAgNTY6XHQgICAgICAgIGxldCByZXQgPSBkZXYucmVhZChDMjI6OkJNQ1IpPztcbiAgNTc6XHRcbiAgNTg6XHQgICAgICAgIGlmIHJldCBcdTAwMjYgQk1DUl9TUEVFRDEwMCAhPSAwIHtcbiAgNTk6XHQgICAgICAgICAgICBkZXYuc2V0X3NwZWVkKHVhcGk6OlNQRUVEXzEwMCk7XG4gIDYwOlx0ICAgICAgICB9IGVsc2Uge1xuICA2MTpcdCAgICAgICAgICAgIGRldi5zZXRfc3BlZWQodWFwaTo6U1BFRURfMTApO1xuICA2MjpcdCAgICAgICAgfVxuICA2MzpcdFxuICA2NDpcdCAgICAgICAgbGV0IGR1cGxleCA9IGlmIHJldCBcdTAwMjYgQk1DUl9GVUxMRFBMWCAhPSAwIHtcbiAgNjU6XHQgICAgICAgICAgICBwaHk6OkR1cGxleE1vZGU6OkZ1bGxcbiAgNjY6XHQgICAgICAgIH0gZWxzZSB7XG4gIDY3Olx0ICAgICAgICAgICAgcGh5OjpEdXBsZXhNb2RlOjpIYWxmXG4gIDY4Olx0ICAgICAgICB9O1xuICA2OTpcdCAgICAgICAgZGV2LnNldF9kdXBsZXgoZHVwbGV4KTtcbiAgNzA6XHRcbiAgNzE6XHQgICAgICAgIGRldi5nZW5waHlfcmVhZF9scGEoKT87XG4gIDcyOlx0XG4gIDczOlx0ICAgICAgICBpZiBkZXYuaXNfYXV0b25lZ19lbmFibGVkKCkgXHUwMDI2XHUwMDI2IGRldi5pc19hdXRvbmVnX2NvbXBsZXRlZCgpIHtcbiAgNzQ6XHQgICAgICAgICAgICBkZXYucmVzb2x2ZV9hbmVnX2xpbmttb2RlKCk7XG4gIDc1Olx0ICAgICAgICB9XG4gIDc2Olx0XG4gIDc3Olx0ICAgICAgICBPaygwKVxuICA3ODpcdCAgICB9XG4gIDc5Olx0XG4gIDgwOlx0ICAgIGZuIHN1c3BlbmQoZGV2OiBcdTAwMjZtdXQgcGh5OjpEZXZpY2UpIC1cdTAwM2UgUmVzdWx0IHtcbiAgODE6XHQgICAgICAgIGRldi5nZW5waHlfc3VzcGVuZCgpXG4gIDgyOlx0ICAgIH1cbiAgODM6XHRcbiAgODQ6XHQgICAgZm4gcmVzdW1lKGRldjogXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXHUwMDNlIFJlc3VsdCB7XG4gIDg1Olx0ICAgICAgICBkZXYuZ2VucGh5X3Jlc3VtZSgpXG4gIDg2Olx0ICAgIH1cbiAgODc6XHRcbiAgODg6XHQgICAgZm4gc29mdF9yZXNldChkZXY6IFx1MDAyNm11dCBwaHk6OkRldmljZSkgLVx1MDAzZSBSZXN1bHQge1xuICA4OTpcdCAgICAgICAgYXNpeF9zb2Z0X3Jlc2V0KGRldilcbiAgOTA6XHQgICAgfVxuICA5MTpcdFxuICA5MjpcdCAgICBmbiBsaW5rX2NoYW5nZV9ub3RpZnkoZGV2OiBcdTAwMjZtdXQgcGh5OjpEZXZpY2UpIHtcbiAgOTM6XHQgICAgICAgIC8vIFJlc2V0IFBIWSwgb3RoZXJ3aXNlIE1JSV9MUEEgd2lsbCBwcm92aWRlIG91dGRhdGVkIGluZm9ybWF0aW9uLlxuICA5NDpcdCAgICAgICAgLy8gVGhpcyBpc3N1ZSBpcyByZXByb2R1Y2libGUgb25seSB3aXRoIHNvbWUgbGluayBwYXJ0bmVyIFBIWXMuXG4gIDk1Olx0ICAgICAgICBpZiBkZXYuc3RhdGUoKSA9PSBwaHk6OkRldmljZVN0YXRlOjpOb0xpbmsge1xuICA5NjpcdCAgICAgICAgICAgIGxldCBfID0gZGV2LmluaXRfaHcoKTtcbiAgOTc6XHQgICAgICAgICAgICBsZXQgXyA9IGRldi5zdGFydF9hbmVnKCk7XG4gIDk4Olx0ICAgICAgICB9XG4gIDk5Olx0ICAgIH1cbiAxMDA6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1MjgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgcGh5LnJzYCBNb2R1bGUgYW5kIEFYODg3NzJBIENvbm5lY3Rpdml0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYHJ1c3Qva2VybmVsL25ldC9waHkucnNgLiBJdCYjMzk7cyBkZWFsaW5nIHdpdGggYml0ZmllbGQgaW5kaWNlcywgd2hpY2ggaXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCBpbiBwcmluY2lwbGUuIEJ1dCwgdGhlIHJlYWwgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcywgY2FuIHdlIGFjdHVhbGx5ICp0ZXN0KiB0aGlzIGVmZmVjdGl2ZWx5PyBBcmUgYGlzX2xpbmtfdXBgLCBgaXNfYXV0b25lZ19lbmFibGVkYCwgYW5kIGBpc19hdXRvbmVnX2NvbXBsZXRlZGAgcmVhY2hhYmxlIHdpdGhpbiB0aGUgdGVzdGluZyBmcmFtZXdvcms/IFNwZWNpZmljYWxseSwgaXMgYGF4ODg3OTZiX3J1c3RgIHNvbWV0aGluZyB0aGF0IHN5emthbGxlciBjYW4gZXZlbiB0b3VjaD8KCkFoLCByaWdodCwgc3l6a2FsbGVyICpjYW4qIGxvYWQgbW9kdWxlcywgc28gdGhlcmUmIzM5O3MgYSBjaGFuY2UuIEkgY2FuIHNlZSBpdCBpbnN0YW50aWF0aW5nIFBIWSBkZXZpY2VzIHVzaW5nIHZpcnR1YWwgTURJTyBidXNlcyBvciBuZXRsaW5rLiBCdXQgdGhlbiBJIGhhdmUgdG8gYXNrIG15c2VsZiwgZG9lcyBzeXprYWxsZXIgYWN0dWFsbHkgKmhhdmUqIGEgdmlydHVhbCBNRElPIGJ1cz8gT3IgaXMgaXQgbGVhbmluZyBvbiBgbWFjc2VjYCwgYHZldGhgLCBvciBgdHVuYD8KCldhaXQgYSBzZWNvbmQuLi4gZGlkbiYjMzk7dCBJIHNlZSBzb21ldGhpbmcgYWJvdXQgVVNCPyBBaGEhIFN5emthbGxlciBoYXMgdGhlIGNhcGFiaWxpdHkgdG8gaW5qZWN0IFVTQiBkZXZpY2VzLiBBbmQgdGhhdCB0cmlnZ2VycyBzb21ldGhpbmcg4oCTIHRoZSBBWDg4NzcyQSEgSSByZW1lbWJlciBpdCBhcyBhbiBBU0lYIFVTQiBldGhlcm5ldCBhZGFwdGVyLiBOb3csIGhlcmUmIzM5O3MgdGhlIHJ1YjogaXMgdGhlIEFYODg3NzJBIGEgUEhZIGRldmljZSBhcyB3ZWxsPyBJdCYjMzk7cyB1c2VkIGJ5IHRoZSBgYXNpeGAgVVNCIGV0aGVybmV0IGRyaXZlciwgaXNuJiMzOTt0IGl0PwoKUmlnaHQsIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgYGRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuY2AgZmlsZSwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIHRvIHNlZSBob3cgaXQmIzM5O3MgZGVmaW5lZCBhbmQgaG93IGl0JiMzOTtzIGhhbmRsZWQuIFRoYXQmIzM5O2xsIGJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgd2UgY2FuIGV4cGxvaXQgdGhpcyB0byB2YWxpZGF0ZSB0aGUgYHBoeS5yc2AgY2hhbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsweDAwM2IxODYxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNDgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIEFYODg3OTZCIERyaXZlciBVc2FnZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc3RhdHVzIG9mIGBkcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuY2AuIEdpdmVuIG15IGV4cGVydGlzZSwgSSBzdXNwZWN0IHRoaXMgaXMgYSBQSFkgKFBoeXNpY2FsIExheWVyKSBkcml2ZXIgcmVsYXRlZCB0byBhIG5ldHdvcmsgaW50ZXJmYWNlIGNvbnRyb2xsZXIuIEkgaW1tZWRpYXRlbHkganVtcCB0byB0aGUgbW9zdCBsb2dpY2FsIHN0ZXA6IGRpdmluZyBpbnRvIHRoZSBjb2RlIGl0c2VsZi4gSSYjMzk7bGwgb3BlbiB1cCB0aGF0IGZpbGUgdG8gcXVpY2tseSBhc3Nlc3MgaXRzIGN1cnJlbnQgcm9sZS4gSSB3YW50IHRvIGNoZWNrIGlmIHRoZSBkcml2ZXIgaXMgYWN0dWFsbHkgYmVpbmcgdXRpbGl6ZWQgYW55d2hlcmUgd2l0aGluIHRoZSBzeXN0ZW0uIElzIGl0IGFjdGl2ZWx5IGJlaW5nIGNvbXBpbGVkIGFuZCBsaW5rZWQsIG9yIGlzIGl0IG1lcmVseSBzaXR0aW5nIHRoZXJlLCBwb3RlbnRpYWxseSBvdXRkYXRlZCBvciB1bnVzZWQ/IEJhc2VkIG9uIHRoZSBwcm9qZWN0IEkga25vdyB0aGVyZSYjMzk7cyBhIHBvc3NpYmlsaXR5IGl0IGlzbiYjMzk7dCB1c2VkIGF0IGFsbCBhbnltb3JlLiBUaW1lIHRvIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGdvaW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsweDAwM2IxODYxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYy0xMi1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jOjEzOiNkZWZpbmUgUEhZX0lEX0FTSVhfQVg4ODc3MkFcdFx0MHgwMDNiMTg2MVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmMtMTQtI2RlZmluZSBQSFlfSURfQVNJWF9BWDg4NzcyQ1x0XHQweDAwM2IxODgxXG4tLVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM9NDE9aW1wbCBEcml2ZXIgZm9yIFBoeUFYODg3NzJBIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy00My0gICAgY29uc3QgTkFNRTogXHUwMDI2JiMzOTtzdGF0aWMgQ1N0ciA9IGNcJiMzNDtBc2l4IEVsZWN0cm9uaWNzIEFYODg3NzJBXCYjMzQ7O1xuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM6NDQ6ICAgIGNvbnN0IFBIWV9ERVZJQ0VfSUQ6IERldmljZUlkID0gRGV2aWNlSWQ6Om5ld193aXRoX2V4YWN0X21hc2soMHgwMDNiMTg2MSk7XG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy00NS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODY3NAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU3l6a2FsbGVyIEZ1enppbmcgUG90ZW50aWFsIG9mIGBheDg4Nzk2Yl9ydXN0LnJzYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGF4ODg3OTZiX3J1c3QucnNgLCB3aGljaCBpcyBjbGVhcmx5IGEgUEhZIGRyaXZlci4gVGhlIHF1ZXN0aW9uIG5vdyBpcywgY2FuIFN5emthbGxlciBlZmZlY3RpdmVseSBmdXp6IHRoaXM/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0ICpzaG91bGQqIGJlIHBvc3NpYmxlLiBXZSBrbm93IFN5emthbGxlciBoYXMgdGhlIGBzeXpfdXNiX2Nvbm5lY3RgIGNhbGwsIHdoaWNoIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBlbXVsYXRlIFVTQiBkZXZpY2VzLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gQW5kIHRoZW4gdGhlcmUmIzM5O3MgdGhlIGBhc2l4YCBVU0IgZXRoZXJuZXQgZHJpdmVyOyBpZiBpdCB1dGlsaXplcyBwaHlsaWIsIHRoYXQmIzM5O3MgcG90ZW50aWFsbHkgdGhlIGxpbmsgd2UgbmVlZC4gVGhlIGBhc2l4YCBkcml2ZXIgbWlnaHQgYXR0YWNoIHRvIHRoZSBgYXg4ODc5NmJgIFBIWS4gU28sIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjb25maXJtIHdoZXRoZXIgYGFzaXhgIGluZGVlZCBsZXZlcmFnZXMgdGhlIHBoeWxpYiBmcmFtZXdvcmsuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBjb25uZWN0aW9uIGJlZm9yZSBwcm9jZWVkaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfY29ubmVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM9MjYxPXN0YXRpYyBpbnQgYXg4ODE3MmFfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTMxMy1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjMxNDpcdHByaXYtXHUwMDNlcGh5ZGV2ID0gcGh5X2Nvbm5lY3QoZGV2LVx1MDAzZW5ldCwgcHJpdi1cdTAwM2VwaHlfbmFtZSxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTMxNS1cdFx0XHRcdCAgIFx1MDAyNmF4ODgxNzJhX2FkanVzdF9saW5rLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jPTExNDc9c3RhdGljIGludCBzbXNjOTV4eF9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI4NC1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jOjEyODU6XHRyZXQgPSBwaHlfY29ubmVjdF9kaXJlY3QoZGV2LVx1MDAzZW5ldCwgcGRhdGEtXHUwMDNlcGh5ZGV2LFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI4Ni1cdFx0XHRcdCBcdTAwMjZzbXNjOTV4eF9oYW5kbGVfbGlua19jaGFuZ2UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyNzIKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aGlua2luZzoKCioqRXhhbWluaW5nIE5ldHdvcmsgRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGF4ODgxNzJhLmNgIGFuZCBzcGVjaWZpY2FsbHkgc2VlaW5nIGl0IHVzZSBgcGh5X2Nvbm5lY3RgLiBUaGF0IGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgcXVlc3Rpb246IGRvZXMgdGhlIGBhc2l4YCBkcml2ZXIsIHdoaWNoIGlzIGFub3RoZXIgY29tbW9uIFVTQiBFdGhlcm5ldCBhZGFwdGVyIGRyaXZlciwgYWxzbyB1dGlsaXplIHRoZSBQSFkgbGlicmFyeSAoYHBoeWxpYmApPyBJdCYjMzk7cyBhIGtleSBxdWVzdGlvbiBiZWNhdXNlIGl0IGhlbHBzIG1lIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIGFuZCBwb3RlbnRpYWwgY29kZSByZXVzZSBiZXR3ZWVuIGRpZmZlcmVudCBVU0IgRXRoZXJuZXQgZHJpdmVycy4gSWYgYGFzaXhgICpkb2VzbiYjMzk7dCogdXNlIGBwaHlsaWJgLCB0aGVuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBpdCBoYW5kbGVzIHRoZSBQSFkgY29ubmVjdGlvbiBkaWZmZXJlbnRseSwgYW5kIHdoeSB0aGF0IGRlc2lnbiBjaG9pY2Ugd2FzIG1hZGUuIEFsdGVybmF0aXZlbHksIGlmIGl0ICpkb2VzKiwgdGhlbiBJIGNhbiBleHBlY3QgYSBsZXZlbCBvZiBjb25zaXN0ZW5jeSBpbiBQSFkgbWFuYWdlbWVudCBhY3Jvc3MgdGhlc2UgYWRhcHRlciBmYW1pbGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfY29ubmVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9hc2l4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTUwNgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkRpdmluZyBpbnRvIHRoZSBhc2l4X2RldmljZXMuYyBDb2RlKioKCk9rYXksIHRpbWUgdG8gZGlnIGluLiBMZXQmIzM5O3Mgc3RhcnQgYnkgemVyb2luZyBpbiBvbiBgZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyBmb3IgdGhvc2UgQVNJWC1iYXNlZCBVU0IgRXRoZXJuZXQgYWRhcHRlcnMgc2hvdWxkIHJlc2lkZS4gSXQmIzM5O3MgdGhlIGdvLXRvIHBsYWNlIGZvciB1bmRlcnN0YW5kaW5nIHRoZWlyIHF1aXJrcywgaG93IHRoZXkmIzM5O3JlIGluaXRpYWxpemVkLCBhbmQgaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCB0aGUgVVNCIHN1YnN5c3RlbS4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBkZXZpY2Utc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzLCBwcm9iYWJseSBzb21lIHZlbmRvci9wcm9kdWN0IElEIGhhbmRsaW5nLCBhbmQgZGVmaW5pdGVseSBhIHNldCBvZiBVU0IgZGVzY3JpcHRvcnMgYmVpbmcgcGFyc2VkLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gd2hhdCB0aGUgZHJpdmVyJiMzOTtzIGRvaW5nIHdpdGggZGlmZmVyZW50IGVuZHBvaW50IHR5cGVzLiBIb3BlZnVsbHksIHRoZSBjb2RlIGlzIHdlbGwtc3RydWN0dXJlZCBhbmQgZG9jdW1lbnRlZCwgbWFraW5nIGl0IGVhc2llciB0byBmb2xsb3cgdGhlIGRhdGEgZmxvdy4gTXkgZ29hbCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSBkcml2ZXImIzM5O3Mga2V5IG9wZXJhdGlvbmFsIHN0ZXBzIGFuZCBpZGVudGlmeSB0aGUgYXJlYXMgdGhhdCB3YXJyYW50IGNsb3NlciBzY3J1dGlueSBvciBwb3RlbnRpYWwgbW9kaWZpY2F0aW9uLCBkZXBlbmRpbmcgb24gdGhlIHRhc2sgYXQgaGFuZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz01OT1zdGF0aWMgdm9pZCBhc2l4X3NldF9uZXRkZXZfZGV2X2FkZHIoc3RydWN0IHVzYm5ldCAqZGV2LCB1OCAqYWRkcilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjktLyogR2V0IHRoZSBQSFkgSWRlbnRpZmllciBmcm9tIHRoZSBQSFlTSUQxIFx1MDAyNiBQSFlTSUQyIE1JSSByZWdpc3RlcnMgKi9cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MDpzdGF0aWMgdTMyIGFzaXhfZ2V0X3BoeWlkKHN0cnVjdCB1c2JuZXQgKmRldilcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MS17XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzI6XHRpbnQgcGh5X3JlZztcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MzpcdHUzMiBwaHlfaWQ7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzQtXHRpbnQgaTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03NS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NjpcdC8qIFBvbGwgZm9yIHRoZSByYXJlIGNhc2UgdGhlIEZXIG9yIHBoeSBpc24mIzM5O3QgcmVhZHkgeWV0LiAgKi9cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03Ny1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIDEwMDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3ODpcdFx0cGh5X3JlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNSUlfUEhZU0lEMSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6Nzk6XHRcdGlmIChwaHlfcmVnIFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgwLVx0XHRcdHJldHVybiAwO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgxOlx0XHRpZiAocGh5X3JlZyAhPSAwIFx1MDAyNlx1MDAyNiBwaHlfcmVnICE9IDB4RkZGRilcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04Mi1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODUtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODY6XHRpZiAocGh5X3JlZyBcdTAwM2M9IDAgfHwgcGh5X3JlZyA9PSAweEZGRkYpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODctXHRcdHJldHVybiAwO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTg4LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjg5Olx0cGh5X2lkID0gKHBoeV9yZWcgXHUwMDI2IDB4ZmZmZikgXHUwMDNjXHUwMDNjIDE2O1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkwLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkxOlx0cGh5X3JlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNSUlfUEhZU0lEMik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTI6XHRpZiAocGh5X3JlZyBcdTAwM2MgMClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05My1cdFx0cmV0dXJuIDA7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTQtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTU6XHRwaHlfaWQgfD0gKHBoeV9yZWcgXHUwMDI2IDB4ZmZmZik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTc6XHRyZXR1cm4gcGh5X2lkO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk4LX1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYXg4ODE3Ml9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xODktXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTkwOnN0YXRpYyB2b2lkIGFzaXhfcGh5X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldiwgdW5zaWduZWQgaW50IHJlc2V0X2JpdHMpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTkxLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTkzLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjE5NDpcdGFzaXhfbWRpb193cml0ZShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0JNQ1IsIHJlc2V0X2JpdHMpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTE5NS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxOTY6XHQvKiBnaXZlIHBoeV9pZCBhIGNoYW5jZSB0byBwcm9jZXNzIHJlc2V0ICovXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTk3LVx0dWRlbGF5KDUwMCk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTIwMC1cdHdoaWxlICh0aW1lb3V0LS0pIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyMDE6XHRcdGlmIChhc2l4X21kaW9fcmVhZChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0JNQ1IpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjAyLVx0XHRcdFx0XHRcdFx0XHUwMDI2IEJNQ1JfUkVTRVQpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTIwNy1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyMDg6XHRuZXRkZXZfZXJyKGRldi1cdTAwM2VuZXQsIFwmIzM0O0JNQ1JfUkVTRVQgdGltZW91dCBvbiBwaHlfaWQgJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjA5Olx0XHQgICBkZXYtXHUwMDNlbWlpLnBoeV9pZCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjEwLX1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MjEyPXN0YXRpYyBpbnQgYXg4ODE3Ml9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI1MC1cdGRldi1cdTAwM2VtaWkubWRpb193cml0ZSA9IGFzaXhfbWRpb193cml0ZTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyNTE6XHRkZXYtXHUwMDNlbWlpLnBoeV9pZF9tYXNrID0gMHgzZjtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNTItXHRkZXYtXHUwMDNlbWlpLnJlZ19udW1fbWFzayA9IDB4MWY7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjUzLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjI1NDpcdGRldi1cdTAwM2VtaWkucGh5X2lkID0gYXNpeF9yZWFkX3BoeV9hZGRyKGRldiwgdHJ1ZSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjU1Olx0aWYgKGRldi1cdTAwM2VtaWkucGh5X2lkIFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjI1NjpcdFx0cmV0dXJuIGRldi1cdTAwM2VtaWkucGh5X2lkO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI1Ny1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjYyLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjI2MzpcdGFzaXhfcGh5X3Jlc2V0KGRldiwgQk1DUl9SRVNFVCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjY0Olx0YXNpeF9tZGlvX3dyaXRlKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNSUlfQURWRVJUSVNFLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI2NS1cdFx0QURWRVJUSVNFX0FMTCB8IEFEVkVSVElTRV9DU01BIHwgQURWRVJUSVNFX1BBVVNFX0NBUCk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTI5ND1zdGF0aWMgdm9pZCBheDg4NzcyX2V0aHRvb2xfZ2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI5OS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzozMDA6XHRwaHlsaW5rX2V0aHRvb2xfZ2V0X3BhdXNlcGFyYW0ocHJpdi1cdTAwM2VwaHlsaW5rLCBwYXVzZSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzAxLX1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MzAzPXN0YXRpYyBpbnQgYXg4ODc3Ml9ldGh0b29sX3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zMDgtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MzA5Olx0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbShwcml2LVx1MDAzZXBoeWxpbmssIHBhdXNlKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zMTAtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0zMTI9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBheDg4NzcyX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zMjEtXHQuc2V0X2VlcHJvbVx0XHQ9IGFzaXhfc2V0X2VlcHJvbSxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzozMjI6XHQubndheV9yZXNldFx0XHQ9IHBoeV9ldGh0b29sX253YXlfcmVzZXQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MzIzOlx0LmdldF9saW5rX2tzZXR0aW5nc1x0PSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MzI0Olx0LnNldF9saW5rX2tzZXR0aW5nc1x0PSBwaHlfZXRodG9vbF9zZXRfbGlua19rc2V0dGluZ3MsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzI1LVx0LnNlbGZfdGVzdFx0XHQ9IG5ldF9zZWxmdGVzdCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MzMyPXN0YXRpYyBpbnQgYXg4ODc3Ml9yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTM1My1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzozNTQ6XHRwaHlsaW5rX3N0YXJ0KHByaXYtXHUwMDNlcGh5bGluayk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzU1LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0zNjI9c3RhdGljIGludCBheDg4NzcyX2h3X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldiwgaW50IGluX3BtKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zNzMtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6Mzc0Olx0cmV0ID0gYXNpeF93cml0ZV9jbWQoZGV2LCBBWF9DTURfU1dfUEhZX1NFTEVDVCwgcHJpdi1cdTAwM2VlbWJkX3BoeSxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zNzUtXHRcdFx0ICAgICAwLCAwLCBOVUxMLCBpbl9wbSk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTM4MC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzozODE6XHRpZiAocHJpdi1cdTAwM2VlbWJkX3BoeSkge1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTM4Mi1cdFx0cmV0ID0gYXNpeF9zd19yZXNldChkZXYsIEFYX1NXUkVTRVRfSVBQRCwgaW5fcG0pO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00MDYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NDA3Olx0aWYgKGluX3BtIFx1MDAyNlx1MDAyNiAoIWFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDA4LVx0XHRcdFx0XHQgICBNSUlfUEhZU0lEMSkpKXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NDU2PXN0YXRpYyBpbnQgYXg4ODc3MmFfaHdfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgaW5fcG0pXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ1OS1cdHN0cnVjdCBhc2l4X2NvbW1vbl9wcml2YXRlICpwcml2ID0gZGV2LVx1MDAzZWRyaXZlcl9wcml2O1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjQ2MDpcdHUxNiByeF9jdGwsIHBoeTE0aCwgcGh5MTVoLCBwaHkxNmg7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDYxLVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDY2LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjQ2NzpcdHJldCA9IGFzaXhfd3JpdGVfY21kKGRldiwgQVhfQ01EX1NXX1BIWV9TRUxFQ1QsIHByaXYtXHUwMDNlZW1iZF9waHkgfFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ2OC1cdFx0XHQgICAgIEFYX1BIWVNFTF9TU0VOLCAwLCAwLCBOVUxMLCBpbl9wbSk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ5Ni1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo0OTc6XHRpZiAoaW5fcG0gXHUwMDI2XHUwMDI2ICghYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00OTgtXHRcdFx0XHRcdCAgIE1JSV9QSFlTSUQxKSkpIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTEyLVx0XHQvKiBDaGVjayBpZiB0aGUgUEhZIHJlZ2lzdGVycyBoYXZlIGRlZmF1bHQgc2V0dGluZ3MgKi9cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MTM6XHRcdHBoeTE0aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE0LVx0XHRcdFx0XHQgICAgIEFYODg3NzJBX1BIWTE0SCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTE1Olx0XHRwaHkxNWggPSBhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxNi1cdFx0XHRcdFx0ICAgICBBWDg4NzcyQV9QSFkxNUgpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUxNzpcdFx0cGh5MTZoID0gYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MTgtXHRcdFx0XHRcdCAgICAgQVg4ODc3MkFfUEhZMTZIKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTIxLVx0XHRcdCAgIFwmIzM0Ozc3MmFfaHdfcmVzZXQ6IE1SMjA9MHgleCBNUjIxPTB4JXggTVIyMj0weCV4XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUyMjpcdFx0XHQgICBwaHkxNGgsIHBoeTE1aCwgcGh5MTZoKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MjMtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTI0LVx0XHQvKiBSZXN0b3JlIFBIWSByZWdpc3RlcnMgZGVmYXVsdCBzZXR0aW5nIGlmIG5vdCAqL1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUyNTpcdFx0aWYgKHBoeTE0aCAhPSBBWDg4NzcyQV9QSFkxNEhfREVGQVVMVClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MjY6XHRcdFx0YXNpeF9tZGlvX3dyaXRlX25vcG0oZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTI3LVx0XHRcdFx0XHQgICAgIEFYODg3NzJBX1BIWTE0SCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MjgtXHRcdFx0XHRcdCAgICAgQVg4ODc3MkFfUEhZMTRIX0RFRkFVTFQpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUyOTpcdFx0aWYgKHBoeTE1aCAhPSBBWDg4NzcyQV9QSFkxNUhfREVGQVVMVClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MzA6XHRcdFx0YXNpeF9tZGlvX3dyaXRlX25vcG0oZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTMxLVx0XHRcdFx0XHQgICAgIEFYODg3NzJBX1BIWTE1SCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MzItXHRcdFx0XHRcdCAgICAgQVg4ODc3MkFfUEhZMTVIX0RFRkFVTFQpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUzMzpcdFx0aWYgKHBoeTE2aCAhPSBBWDg4NzcyQV9QSFkxNkhfREVGQVVMVClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MzQ6XHRcdFx0YXNpeF9tZGlvX3dyaXRlX25vcG0oZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTM1LVx0XHRcdFx0XHQgICAgIEFYODg3NzJBX1BIWTE2SCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NTgzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYXg4ODc3Ml9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01OTEtXHQubmRvX3ZhbGlkYXRlX2FkZHJcdD0gZXRoX3ZhbGlkYXRlX2FkZHIsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTkyOlx0Lm5kb19ldGhfaW9jdGxcdFx0PSBwaHlfZG9faW9jdGxfcnVubmluZyxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01OTMtXHQubmRvX3NldF9yeF9tb2RlICAgICAgICA9IGFzaXhfc2V0X211bHRpY2FzdCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NTk2PXN0YXRpYyB2b2lkIGF4ODg3NzJfc3VzcGVuZChzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTYwMi1cdFx0cnRubF9sb2NrKCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NjAzOlx0XHRwaHlsaW5rX3N1c3BlbmQocHJpdi1cdTAwM2VwaHlsaW5rLCBmYWxzZSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjA0LVx0XHRydG5sX3VubG9jaygpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02MjItICpcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2MjM6ICogLSBUaGUgTUFDIGRyaXZlciBtdXN0IGhvbGQgUlROTCB3aGVuIGNhbGxpbmcgcGh5bGluayBpbnRlcmZhY2VzIHN1Y2ggYXNcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2MjQ6ICogICBwaHlsaW5rX3N1c3BlbmQoKS9yZXN1bWUoKS4gVGhvc2UgY2FsbHMgd2lsbCBhbHNvIHBlcmZvcm0gTURJTyBJL08uXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjI1LSAqXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTY0Mj1zdGF0aWMgdm9pZCBheDg4NzcyX3Jlc3VtZShzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY1Mi1cdFx0cnRubF9sb2NrKCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NjUzOlx0XHRwaHlsaW5rX3Jlc3VtZShwcml2LVx1MDAzZXBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY1NC1cdFx0cnRubF91bmxvY2soKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NjY5PXN0YXRpYyBpbnQgYXg4ODc3Ml9pbml0X21kaW8oc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02ODEtXHRwcml2LVx1MDAzZW1kaW8tXHUwMDNlbmFtZSA9IFwmIzM0O0FzaXggTURJTyBCdXNcJiMzNDs7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NjgyOlx0cHJpdi1cdTAwM2VtZGlvLVx1MDAzZXBoeV9tYXNrID0gfihCSVQocHJpdi1cdTAwM2VwaHlfYWRkciBcdTAwMjYgMHgxZikgfCBCSVQoQVhfRU1CRF9QSFlfQUREUikpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY4My1cdC8qIG1paSBidXMgbmFtZSBpcyB1c2ItXHUwMDNjdXNiIGJ1cyBudW1iZXJcdTAwM2UtXHUwMDNjdXNiIGRldmljZSBudW1iZXJcdTAwM2UgKi9cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9Njk3PXN0YXRpYyB2b2lkIGF4ODg3NzJfbWRpb191bnJlZ2lzdGVyKHN0cnVjdCBhc2l4X2NvbW1vbl9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MDItXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzAzOnN0YXRpYyBpbnQgYXg4ODc3Ml9pbml0X3BoeShzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzA0LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzA3LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjcwODpcdHByaXYtXHUwMDNlcGh5ZGV2ID0gbWRpb2J1c19nZXRfcGh5KHByaXYtXHUwMDNlbWRpbywgcHJpdi1cdTAwM2VwaHlfYWRkcik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzA5Olx0aWYgKCFwcml2LVx1MDAzZXBoeWRldikge1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcxMC1cdFx0bmV0ZGV2X2VycihkZXYtXHUwMDNlbmV0LCBcJiMzNDtDb3VsZCBub3QgZmluZCBQSFlcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MTMtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzE0Olx0cmV0ID0gcGh5bGlua19jb25uZWN0X3BoeShwcml2LVx1MDAzZXBoeWxpbmssIHByaXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MTUtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcxOS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MjA6XHRwaHlfc3VzcGVuZChwcml2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzIxOlx0cHJpdi1cdTAwM2VwaHlkZXYtXHUwMDNlbWFjX21hbmFnZWRfcG0gPSB0cnVlO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcyMi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MjM6XHRwaHlfYXR0YWNoZWRfaW5mbyhwcml2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzI0LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjcyNTpcdGlmIChwcml2LVx1MDAzZWVtYmRfcGh5KVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcyNi1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTczMS1cdCAqL1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjczMjpcdHByaXYtXHUwMDNlcGh5ZGV2X2ludCA9IG1kaW9idXNfZ2V0X3BoeShwcml2LVx1MDAzZW1kaW8sIEFYX0VNQkRfUEhZX0FERFIpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjczMzpcdGlmICghcHJpdi1cdTAwM2VwaHlkZXZfaW50KSB7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzM0LVx0XHRydG5sX2xvY2soKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MzU6XHRcdHBoeWxpbmtfZGlzY29ubmVjdF9waHkocHJpdi1cdTAwM2VwaHlsaW5rKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MzYtXHRcdHJ0bmxfdW5sb2NrKCk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc0MC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NDE6XHRwcml2LVx1MDAzZXBoeWRldl9pbnQtXHUwMDNlbWFjX21hbmFnZWRfcG0gPSB0cnVlO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc0MjpcdHBoeV9zdXNwZW5kKHByaXYtXHUwMDNlcGh5ZGV2X2ludCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzQzLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03NDYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzQ3OnN0YXRpYyB2b2lkIGF4ODg3NzJfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzQ4Olx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc0OS17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc1Mi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NTM6c3RhdGljIHZvaWQgYXg4ODc3Ml9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc1NDpcdFx0XHRcdCB1bnNpZ25lZCBpbnQgbW9kZSwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03NTUte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03NjEtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzYyOnN0YXRpYyB2b2lkIGF4ODg3NzJfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzYzOlx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc2NDpcdFx0XHQgICAgICAgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzY1LVx0XHRcdCAgICAgICBpbnQgc3BlZWQsIGludCBkdXBsZXgsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc5Mi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3OTM6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgYXg4ODc3Ml9waHlsaW5rX21hY19vcHMgPSB7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzk0LVx0Lm1hY19jb25maWcgPSBheDg4NzcyX21hY19jb25maWcsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc5OC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3OTk6c3RhdGljIGludCBheDg4NzcyX3BoeWxpbmtfc2V0dXAoc3RydWN0IHVzYm5ldCAqZGV2KVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgwMC17XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODAxLVx0c3RydWN0IGFzaXhfY29tbW9uX3ByaXZhdGUgKnByaXYgPSBkZXYtXHUwMDNlZHJpdmVyX3ByaXY7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODAyOlx0cGh5X2ludGVyZmFjZV90IHBoeV9pZl9tb2RlO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwMzpcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgwNC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MDU6XHRwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLmRldiA9IFx1MDAyNmRldi1cdTAwM2VuZXQtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwNjpcdHByaXYtXHUwMDNlcGh5bGlua19jb25maWcudHlwZSA9IFBIWUxJTktfTkVUREVWO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwNzpcdHByaXYtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyA9IE1BQ19TWU1fUEFVU0UgfCBNQUNfQVNZTV9QQVVTRSB8XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODA4LVx0XHRNQUNfMTAgfCBNQUNfMTAwO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTAtXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgxMTpcdFx0ICBwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTItXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUksXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODEzOlx0XHQgIHByaXYtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgxNC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MTU6XHRpZiAocHJpdi1cdTAwM2VlbWJkX3BoeSlcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MTY6XHRcdHBoeV9pZl9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgxNy1cdGVsc2VcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MTg6XHRcdHBoeV9pZl9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODE5LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgyMDpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXYtXHUwMDNlbmV0LVx1MDAzZWRldi5md25vZGUsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODIxOlx0XHRcdFx0IHBoeV9pZl9tb2RlLCBcdTAwMjZheDg4NzcyX3BoeWxpbmtfbWFjX29wcyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODIyOlx0aWYgKElTX0VSUihwaHlsaW5rKSlcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjM6XHRcdHJldHVybiBQVFJfRVJSKHBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgyNC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjU6XHRwcml2LVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgyNi1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz04Mjk9c3RhdGljIGludCBheDg4NzcyX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODc3LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjg3ODpcdHJldCA9IGFzaXhfcmVhZF9waHlfYWRkcihkZXYsIHRydWUpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTg3OS1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTg4MS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4ODI6XHRwcml2LVx1MDAzZXBoeV9hZGRyID0gcmV0O1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjg4MzpcdHByaXYtXHUwMDNlZW1iZF9waHkgPSAoKHByaXYtXHUwMDNlcGh5X2FkZHIgXHUwMDI2IDB4MWYpID09IEFYX0VNQkRfUEhZX0FERFIpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTg4NC1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTEzLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkxNDpcdHByaXYtXHUwMDNlcHJlc3ZkX3BoeV9ibWNyID0gMDtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5MTU6XHRwcml2LVx1MDAzZXByZXN2ZF9waHlfYWR2ZXJ0aXNlID0gMDtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MTYtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkyMC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5MjE6XHRyZXQgPSBheDg4NzcyX3BoeWxpbmtfc2V0dXAoZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MjItXHRpZiAocmV0KVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkyMzpcdFx0Z290byBwaHlsaW5rX2VycjtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MjQtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTI1Olx0cmV0ID0gYXg4ODc3Ml9pbml0X3BoeShkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkyNi1cdGlmIChyZXQpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTI3Olx0XHRnb3RvIGluaXRwaHlfZXJyO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkyOC1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTMxLVx0ICogdGhhdCBjb3VsZCBkZWFkbG9jayAoYXV0b3Jlc3VtZSB1bmRlciBSVE5MIHdoaWxlIFVTQiBQTSBsb2NrXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTMyOlx0ICogaXMgaGVsZCwgcGh5bGluay9NRElPIHdhbnRzIFJUTkwpLlxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkzMy1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MzctXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTM4OmluaXRwaHlfZXJyOlxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkzOTpcdHBoeWxpbmtfZGVzdHJveShwcml2LVx1MDAzZXBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk0MDpwaHlsaW5rX2VycjpcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NDEtXHRheDg4NzcyX21kaW9fdW5yZWdpc3Rlcihwcml2KTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9OTQ2PXN0YXRpYyBpbnQgYXg4ODc3Ml9zdG9wKHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTQ5LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk1MDpcdHBoeWxpbmtfc3RvcChwcml2LVx1MDAzZXBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk1MS1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9OTU1PXN0YXRpYyB2b2lkIGF4ODg3NzJfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk1OS1cdHJ0bmxfbG9jaygpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk2MDpcdHBoeWxpbmtfZGlzY29ubmVjdF9waHkocHJpdi1cdTAwM2VwaHlsaW5rKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NjEtXHRydG5sX3VubG9jaygpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk2MjpcdHBoeWxpbmtfZGVzdHJveShwcml2LVx1MDAzZXBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk2My1cdGF4ODg3NzJfbWRpb191bnJlZ2lzdGVyKHByaXYpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz05NzU9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBheDg4MTc4X2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05ODktXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTkwOnN0YXRpYyBpbnQgbWFydmVsbF9waHlfaW5pdChzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTkxLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk0LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk5NTpcdG5ldGRldl9kYmcoZGV2LVx1MDAzZW5ldCwgXCYjMzQ7bWFydmVsbF9waHlfaW5pdCgpXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTk3Olx0cmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9NQVJWRUxMX1NUQVRVUyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk4LVx0bmV0ZGV2X2RiZyhkZXYtXHUwMDNlbmV0LCBcJiMzNDtNSUlfTUFSVkVMTF9TVEFUVVMgPSAweCUwNHhcXG5cJiMzNDssIHJlZyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk5LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMDA6XHRhc2l4X21kaW9fd3JpdGUoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9NQVJWRUxMX0NUUkwsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAwMS1cdFx0XHRNQVJWRUxMX0NUUkxfUlhERUxBWSB8IE1BUlZFTExfQ1RSTF9UWERFTEFZKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAwMy1cdGlmIChkYXRhLVx1MDAzZWxlZG1vZGUpIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDA0Olx0XHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDA1LVx0XHRcdE1JSV9NQVJWRUxMX0xFRF9DVFJMKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAwOS1cdFx0cmVnIHw9ICgxICYjNDM7IDB4MDEwMCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAxMDpcdFx0YXNpeF9tZGlvX3dyaXRlKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMTEtXHRcdFx0TUlJX01BUlZFTExfTEVEX0NUUkwsIHJlZyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAxMi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDEzOlx0XHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDE0LVx0XHRcdE1JSV9NQVJWRUxMX0xFRF9DVFJMKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyMC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDIxOnN0YXRpYyBpbnQgcnRsODIxMWNsX3BoeV9pbml0KHN0cnVjdCB1c2JuZXQgKmRldilcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDIyLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyNC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDI1Olx0bmV0ZGV2X2RiZyhkZXYtXHUwMDNlbmV0LCBcJiMzNDtydGw4MjExY2xfcGh5X2luaXQoKVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyNi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDI3Olx0YXNpeF9tZGlvX3dyaXRlIChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgMHgxZiwgMHgwMDA1KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDI4Olx0YXNpeF9tZGlvX3dyaXRlIChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgMHgwYywgMCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAyOTpcdGFzaXhfbWRpb193cml0ZSAoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIDB4MDEsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzMDpcdFx0YXNpeF9tZGlvX3JlYWQgKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCAweDAxKSB8IDB4MDA4MCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzMTpcdGFzaXhfbWRpb193cml0ZSAoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDApO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMzItXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAzMy1cdGlmIChkYXRhLVx1MDAzZWxlZG1vZGUgPT0gMTIpIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDM0Olx0XHRhc2l4X21kaW9fd3JpdGUgKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCAweDFmLCAweDAwMDIpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMzU6XHRcdGFzaXhfbWRpb193cml0ZSAoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIDB4MWEsIDB4MDBjYik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzNjpcdFx0YXNpeF9tZGlvX3dyaXRlIChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgMHgxZiwgMCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAzNy1cdH1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTA0Mj1zdGF0aWMgaW50IG1hcnZlbGxfbGVkX3N0YXR1cyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHUxNiBzcGVlZClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDQzLXtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDQ0Olx0dTE2IHJlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNQVJWRUxMX0xFRF9NQU5VQUwpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwNDUtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwNjItXHRuZXRkZXZfZGJnKGRldi1cdTAwM2VuZXQsIFwmIzM0O21hcnZlbGxfbGVkX3N0YXR1cygpIHdyaXRpbmcgMHglMDR4XFxuXCYjMzQ7LCByZWcpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwNjM6XHRhc2l4X21kaW9fd3JpdGUoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1BUlZFTExfTEVEX01BTlVBTCwgcmVnKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDY0LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMDY4PXN0YXRpYyBpbnQgYXg4ODE3OF9yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwNzQtXHRpbnQgZ3BpbzAgPSAwO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwNzU6XHR1MzIgcGh5aWQ7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTA3Ni1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTA5Ni1cdGlmIChlZXByb20gPT0gY3B1X3RvX2xlMTYoMHhmZmZmKSkge1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwOTc6XHRcdGRhdGEtXHUwMDNlcGh5bW9kZSA9IFBIWV9NT0RFX01BUlZFTEw7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTA5OC1cdFx0ZGF0YS1cdTAwM2VsZWRtb2RlID0gMDtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTEwMC1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTEwMTpcdFx0ZGF0YS1cdTAwM2VwaHltb2RlID0gbGUxNl90b19jcHUoZWVwcm9tKSBcdTAwMjYgMHg3RjtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTAyLVx0XHRkYXRhLVx1MDAzZWxlZG1vZGUgPSBsZTE2X3RvX2NwdShlZXByb20pIFx1MDAzZVx1MDAzZSA4O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTA0LVx0fVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjExMDU6XHRuZXRkZXZfZGJnKGRldi1cdTAwM2VuZXQsIFwmIzM0O0dQSU8wOiAlZCwgUGh5TW9kZTogJWRcXG5cJiMzNDssIGdwaW8wLCBkYXRhLVx1MDAzZXBoeW1vZGUpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExMDYtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExMTQtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjExMTU6XHRcdG5ldGRldl9kYmcoZGV2LVx1MDAzZW5ldCwgXCYjMzQ7Z3BpbyBwaHltb2RlID09IDEgcGF0aFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTExNi1cdFx0YXNpeF93cml0ZV9ncGlvKGRldiwgQVhfR1BJT19HUE8xRU4sIDMwLCAwKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTEyMC1cdC8qIFJlYWQgUEhZSUQgcmVnaXN0ZXIgKkFGVEVSKiBwb3dlcmluZyB1cCBQSFkgKi9cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTIxOlx0cGh5aWQgPSBhc2l4X2dldF9waHlpZChkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjExMjI6XHRuZXRkZXZfZGJnKGRldi1cdTAwM2VuZXQsIFwmIzM0O1BIWUlEPTB4JTA4eFxcblwmIzM0OywgcGh5aWQpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExMjMtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExMzQtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTEzNTpcdGlmIChkYXRhLVx1MDAzZXBoeW1vZGUgPT0gUEhZX01PREVfTUFSVkVMTCkge1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjExMzY6XHRcdG1hcnZlbGxfcGh5X2luaXQoZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTM3LVx0XHRtc2xlZXAoNjApO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjExMzg6XHR9IGVsc2UgaWYgKGRhdGEtXHUwMDNlcGh5bW9kZSA9PSBQSFlfTU9ERV9SVEw4MjExQ0wpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTEzOTpcdFx0cnRsODIxMWNsX3BoeV9pbml0KGRldik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTE0MC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTQxOlx0YXNpeF9waHlfcmVzZXQoZGV2LCBCTUNSX1JFU0VUIHwgQk1DUl9BTkVOQUJMRSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTE0MjpcdGFzaXhfbWRpb193cml0ZShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0FEVkVSVElTRSxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTQzLVx0XHRcdEFEVkVSVElTRV9BTEwgfCBBRFZFUlRJU0VfQ1NNQSB8IEFEVkVSVElTRV9QQVVTRV9DQVApO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjExNDQ6XHRhc2l4X21kaW9fd3JpdGUoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9DVFJMMTAwMCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTQ1LVx0XHRcdEFEVkVSVElTRV8xMDAwRlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTExNjQ9c3RhdGljIGludCBheDg4MTc4X2xpbmtfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTk2LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjExOTc6XHRpZiAoZGF0YS1cdTAwM2VwaHltb2RlID09IFBIWV9NT0RFX01BUlZFTEwgXHUwMDI2XHUwMDI2IGRhdGEtXHUwMDNlbGVkbW9kZSlcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTk4LVx0XHRtYXJ2ZWxsX2xlZF9zdGF0dXMoZGV2LCBzcGVlZCk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTEyNzE9c3RhdGljIGludCBheDg4MTc4X2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTI5Mi1cdGRldi1cdTAwM2VtaWkubWRpb193cml0ZSA9IGFzaXhfbWRpb193cml0ZTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMjkzOlx0ZGV2LVx1MDAzZW1paS5waHlfaWRfbWFzayA9IDB4MWY7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTI5NC1cdGRldi1cdTAwM2VtaWkucmVnX251bV9tYXNrID0gMHhmZjtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTI5Ni1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMjk3Olx0ZGV2LVx1MDAzZW1paS5waHlfaWQgPSBhc2l4X3JlYWRfcGh5X2FkZHIoZGV2LCB0cnVlKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMjk4Olx0aWYgKGRldi1cdTAwM2VtaWkucGh5X2lkIFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEyOTk6XHRcdHJldHVybiBkZXYtXHUwMDNlbWlpLnBoeV9pZDtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMzAwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDQ1NAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDQxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgQVg4ODc3MiBEcml2ZXIgYW5kIFN5emthbGxlciBUZXN0aW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIHNlZSwgYGF4ODg3NzJfaW5pdF9waHlgIHJlbGllcyBvbiBwaHlsaWIsIHNwZWNpZmljYWxseSB0aHJvdWdoIGBtZGlvYnVzX2dldF9waHlgIGFuZCBgcGh5bGlua19jb25uZWN0X3BoeWAuIFRoZW4sIGBheDg4NzcyX2JpbmRgIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGluaXRpYWxpemVzIHRoZSBQSFkgdmlhIGBheDg4NzcyX2luaXRfcGh5YCBhbmQgYmluZHMgd2l0aCB0aGUgYGF4ODg3NzJgIGRyaXZlci4gU28gZmFyLCBzbyBnb29kLiBOb3csIHRoZSBpbnRlcmVzdGluZyBwYXJ0IGlzIHRoZSBQSFkgZHJpdmVyIGl0c2VsZiwgYGF4ODg3OTZiX3J1c3QucnNgLCB3aGljaCByZWdpc3RlcnMgZm9yIGBQaHlBWDg4NzcyQWAsIGBQaHlBWDg4NzcyQ2AsIGFuZCBgUGh5QVg4ODc5NkJgLiBBbmQsIGxldCYjMzk7cyBub3QgZm9yZ2V0IGBheDg4NzcyYV9od19yZXNldGAgbGl2ZXMgaW4gYGFzaXhfZGV2aWNlcy5jYC4KClJpZ2h0LCB0aGlzIGxvb2tzIGxpa2UgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIFN5emthbGxlciBzaG91bGQgYmUgYWJsZSB0byB0cmlnZ2VyIHRoaXMgc2V0dXAgYnkgZW11bGF0aW5nIGFuIEFTSVggVVNCIGRldmljZS4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gU3l6a2FsbGVyIHRlc3QgUnVzdCBjb2RlPyBZZXMsIGl0IGNhbiwgYXMgbG9uZyBhcyBSdXN0IHN1cHBvcnQgaXMgZW5hYmxlZCBpbiB0aGUga2VybmVsIGNvbmZpZy4KClNvLCBob3cgZG8gd2UgbWFrZSBzdXJlIHdlIGhhdmUgdGhlIFJ1c3QgUEhZIGRyaXZlciBlbmFibGVkPyBXZSBuZWVkIHRvIGdpdmUgU3l6a2FsbGVyIHRoZSBwcm9wZXIgYEVuYWJsZUNvbmZpZ3NgLiBJdCBsb29rcyBsaWtlIGBBWDg4Nzk2Ql9SVVNUX1BIWWAgYW5kIGBSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlNgIHdpbGwgYmUgY3J1Y2lhbC4gV2FpdCwgYEFYODg3OTZCX1JVU1RfUEhZYCBkZXBlbmRzIG9uIGBSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlNgIGFuZCBgQVg4ODc5NkJfUEhZYCBhbmQgYFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU2AgZGVwZW5kcyBvbiBgUlVTVGAgYW5kIGBQSFlMSUI9eWAuCgpUaHVzLCBteSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBuZWVkcyB0byBpbmNsdWRlIGBBWDg4Nzk2Ql9SVVNUX1BIWWAsIGBSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlNgLCBhbmQgYFJVU1RgLiBBbmQsIGBSVVNUYCBpcyBsaWtlbHkgYSBtYWpvciBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IFN5emthbGxlciB3aWxsIGhhdmUgaXQgZW5hYmxlZCBieSBkZWZhdWx0LCBvciB0aGF0IHdlIGNhbiBleHBsaWNpdGx5IHJlcXVlc3QgaXQuIFdlIG5lZWQgdG8gY29uZmlybSB0aGF0IGBSVVNUYCBpcyBpbmRlZWQgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiBuYW1lLCBidXQgdGhpcyBsb29rcyBwcm9taXNpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSVVNUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vcnVzdC9nZW5lcmFsLWluZm9ybWF0aW9uLnJzdD0xNTY9bnVtZXJpY2FsIGNvbXBhcmlzb25zLCBvbmUgbWF5IGRlZmluZSBhIG5ldyBLY29uZmlnIHN5bWJvbDpcbi0tXG5Eb2N1bWVudGF0aW9uL3J1c3QvZ2VuZXJhbC1pbmZvcm1hdGlvbi5yc3QtMTU5LVxuRG9jdW1lbnRhdGlvbi9ydXN0L2dlbmVyYWwtaW5mb3JtYXRpb24ucnN0OjE2MDpcdGNvbmZpZyBSVVNUQ19IQVNfU1BBTl9GSUxFXG5Eb2N1bWVudGF0aW9uL3J1c3QvZ2VuZXJhbC1pbmZvcm1hdGlvbi5yc3QtMTYxLVx0XHRkZWZfYm9vbCBSVVNUQ19WRVJTSU9OIFx1MDAzZT0gMTA4ODAwXG4tLVxuYXJjaC9hcm02NC9LY29uZmlnPTI9Y29uZmlnIEFSTTY0XG4tLVxuYXJjaC9hcm02NC9LY29uZmlnLTI2NC1cbmFyY2gvYXJtNjQvS2NvbmZpZzoyNjU6Y29uZmlnIFJVU1RDX1NVUFBPUlRTX0FSTTY0XG5hcmNoL2FybTY0L0tjb25maWctMjY2LVx0ZGVmX2Jvb2wgeVxuLS1cbmFyY2gvbG9vbmdhcmNoL0tjb25maWc9MzQyPWNvbmZpZyBDQ19IQVNfQU5OT1RBVEVfVEFCTEVKVU1QXG4tLVxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy0zNDQtXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnOjM0NTpjb25maWcgUlVTVENfSEFTX0FOTk9UQVRFX1RBQkxFSlVNUFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy0zNDYtXHRkZXBlbmRzIG9uIFJVU1Rcbi0tXG5hcmNoL3Jpc2N2L0tjb25maWc9MTM9Y29uZmlnIFJJU0NWXG4tLVxuYXJjaC9yaXNjdi9LY29uZmlnLTIzNC1cbmFyY2gvcmlzY3YvS2NvbmZpZzoyMzU6Y29uZmlnIFJVU1RDX1NVUFBPUlRTX1JJU0NWXG5hcmNoL3Jpc2N2L0tjb25maWctMjM2LVx0ZGVmX2Jvb2wgeVxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZz0yOD1jb25maWcgRldfTE9BREVSX0RFQlVHXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTM3LVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjM4OmNvbmZpZyBSVVNUX0ZXX0xPQURFUl9BQlNUUkFDVElPTlNcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0zOS1cdGJvb2wgXCYjMzQ7UnVzdCBGaXJtd2FyZSBMb2FkZXIgYWJzdHJhY3Rpb25zXCYjMzQ7XG4tLVxuZHJpdmVycy9md2N0bC9LY29uZmlnPTExPWlmIEZXQ1RMXG5kcml2ZXJzL2Z3Y3RsL0tjb25maWctMTItXG5kcml2ZXJzL2Z3Y3RsL0tjb25maWc6MTM6Y29uZmlnIFJVU1RfRldDVExfQUJTVFJBQ1RJT05TXG5kcml2ZXJzL2Z3Y3RsL0tjb25maWctMTQtXHRib29sIFwmIzM0O1J1c3QgZndjdGwgYWJzdHJhY3Rpb25zXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MjEzPWNvbmZpZyBEUk1fR1BVVk1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMjAtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyMjE6Y29uZmlnIFJVU1RfRFJNX0dQVVZNXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMjItXHRib29sXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MjY5PWNvbmZpZyBEUk1fR0VNX1NITUVNX0hFTFBFUlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI3Ny1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI3ODpjb25maWcgUlVTVF9EUk1fR0VNX1NITUVNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjc5LVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTU2PWNvbmZpZyBGSVhFRF9QSFlcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy02NC1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjY1OmNvbmZpZyBSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlNcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTY2LSAgICAgICAgYm9vbCBcJiMzNDtSdXN0IFBIWUxJQiBhYnN0cmFjdGlvbnMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvcHdtL0tjb25maWc9ODQzPWNvbmZpZyBQV01fWElMSU5YXG4tLVxuZHJpdmVycy9wd20vS2NvbmZpZy04NTYtXG5kcml2ZXJzL3B3bS9LY29uZmlnOjg1NzogY29uZmlnIFJVU1RfUFdNX0FCU1RSQUNUSU9OU1xuZHJpdmVycy9wd20vS2NvbmZpZy04NTgtXHRib29sXG4tLVxuZHJpdmVycy90dHkvc2VyZGV2L0tjb25maWc9NT1tZW51Y29uZmlnIFNFUklBTF9ERVZfQlVTXG4tLVxuZHJpdmVycy90dHkvc2VyZGV2L0tjb25maWctMTEtXG5kcml2ZXJzL3R0eS9zZXJkZXYvS2NvbmZpZzoxMjpjb25maWcgUlVTVF9TRVJJQUxfREVWX0JVU19BQlNUUkFDVElPTlNcbmRyaXZlcnMvdHR5L3NlcmRldi9LY29uZmlnLTEzLVx0Ym9vbCBcJiMzNDtSdXN0IFNlcmlhbCBkZXZpY2UgYnVzIGFic3RyYWN0aW9uc1wmIzM0O1xuLS1cbmluaXQvS2NvbmZpZz01OD1jb25maWcgTExEX1ZFUlNJT05cbi0tXG5pbml0L0tjb25maWctNjItXG5pbml0L0tjb25maWc6NjM6Y29uZmlnIFJVU1RDX1ZFUlNJT05cbmluaXQvS2NvbmZpZy02NC1cdGludFxuLS1cbmluaXQvS2NvbmZpZy02OS1cbmluaXQvS2NvbmZpZzo3MDpjb25maWcgUlVTVF9JU19BVkFJTEFCTEVcbmluaXQvS2NvbmZpZy03MS1cdGRlZl9ib29sICQoc3VjY2VzcywkKHNyY3RyZWUpL3NjcmlwdHMvcnVzdF9pc19hdmFpbGFibGUuc2gpXG4tLVxuaW5pdC9LY29uZmlnLTgwLVxuaW5pdC9LY29uZmlnOjgxOmNvbmZpZyBSVVNUQ19MTFZNX1ZFUlNJT05cbmluaXQvS2NvbmZpZy04Mi1cdGludFxuLS1cbmluaXQvS2NvbmZpZy04NC1cbmluaXQvS2NvbmZpZzo4NTpjb25maWcgUlVTVENfTExWTV9NQUpPUl9WRVJTSU9OXG5pbml0L0tjb25maWctODYtXHRpbnRcbi0tXG5pbml0L0tjb25maWctODgtXG5pbml0L0tjb25maWc6ODk6Y29uZmlnIFJVU1RDX0NMQU5HX0xMVk1fQ09NUEFUSUJMRVxuaW5pdC9LY29uZmlnLTkwLVx0Ym9vbFxuLS1cbmluaXQvS2NvbmZpZz0xNzY9Y29uZmlnIExEX0NBTl9VU0VfS0VFUF9JTl9PVkVSTEFZXG4tLVxuaW5pdC9LY29uZmlnLTE4MC1cbmluaXQvS2NvbmZpZzoxODE6Y29uZmlnIFJVU1RDX0hBU19TUEFOX0ZJTEVcbmluaXQvS2NvbmZpZy0xODItXHRkZWZfYm9vbCBSVVNUQ19WRVJTSU9OIFx1MDAzZT0gMTA4ODAwXG5pbml0L0tjb25maWctMTgzLVxuaW5pdC9LY29uZmlnOjE4NDpjb25maWcgUlVTVENfSEFTX1VOTkVDRVNTQVJZX1RSQU5TTVVURVNcbmluaXQvS2NvbmZpZy0xODUtXHRkZWZfYm9vbCBSVVNUQ19WRVJTSU9OIFx1MDAzZT0gMTA4ODAwXG5pbml0L0tjb25maWctMTg2LVxuaW5pdC9LY29uZmlnOjE4Nzpjb25maWcgUlVTVENfSEFTX0ZJTEVfV0lUSF9OVUxcbmluaXQvS2NvbmZpZy0xODgtXHRkZWZfYm9vbCBSVVNUQ19WRVJTSU9OIFx1MDAzZT0gMTA4OTAwXG5pbml0L0tjb25maWctMTg5LVxuaW5pdC9LY29uZmlnOjE5MDpjb25maWcgUlVTVENfSEFTX0ZJTEVfQVNfQ19TVFJcbmluaXQvS2NvbmZpZy0xOTEtXHRkZWZfYm9vbCBSVVNUQ19WRVJTSU9OIFx1MDAzZT0gMTA5MTAwXG5pbml0L0tjb25maWctMTkyLVxuaW5pdC9LY29uZmlnOjE5Mzpjb25maWcgUlVTVENfSEFTX1NVU1BJQ0lPVVNfUlVOVElNRV9TWU1CT0xfREVGSU5JVElPTlNcbmluaXQvS2NvbmZpZy0xOTQtXHRkZWZfYm9vbCBSVVNUQ19WRVJTSU9OIFx1MDAzZT0gMTA5ODAwXG4tLVxuaW5pdC9LY29uZmlnPTIyMDU9Y29uZmlnIFBST0ZJTElOR1xuLS1cbmluaXQvS2NvbmZpZy0yMjEwLVxuaW5pdC9LY29uZmlnOjIyMTE6Y29uZmlnIFJVU1RcbmluaXQvS2NvbmZpZy0yMjEyLVx0Ym9vbCBcJiMzNDtSdXN0IHN1cHBvcnRcJiMzNDtcbi0tXG5pbml0L0tjb25maWc9MjIzNz1zb3VyY2UgXCYjMzQ7cnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0XCYjMzQ7XG5pbml0L0tjb25maWctMjIzOC1cbmluaXQvS2NvbmZpZzoyMjM5OmNvbmZpZyBSVVNUQ19WRVJTSU9OX1RFWFRcbmluaXQvS2NvbmZpZy0yMjQwLVx0c3RyaW5nXG4tLVxubGliL0tjb25maWcuZGVidWc9MzU2NT1tZW51IFwmIzM0O1J1c3QgaGFja2luZ1wmIzM0O1xubGliL0tjb25maWcuZGVidWctMzU2Ni1cbmxpYi9LY29uZmlnLmRlYnVnOjM1Njc6Y29uZmlnIFJVU1RfREVCVUdfQVNTRVJUSU9OU1xubGliL0tjb25maWcuZGVidWctMzU2OC1cdGJvb2wgXCYjMzQ7RGVidWcgYXNzZXJ0aW9uc1wmIzM0O1xuLS1cbmxpYi9LY29uZmlnLmRlYnVnLTM1ODEtXG5saWIvS2NvbmZpZy5kZWJ1ZzozNTgyOmNvbmZpZyBSVVNUX09WRVJGTE9XX0NIRUNLU1xubGliL0tjb25maWcuZGVidWctMzU4My1cdGJvb2wgXCYjMzQ7T3ZlcmZsb3cgY2hlY2tzXCYjMzQ7XG4tLVxubGliL0tjb25maWcuZGVidWctMzU5Ni1cbmxpYi9LY29uZmlnLmRlYnVnOjM1OTc6Y29uZmlnIFJVU1RfQlVJTERfQVNTRVJUX0FMTE9XXG5saWIvS2NvbmZpZy5kZWJ1Zy0zNTk4LVx0Ym9vbCBcJiMzNDtBbGxvdyB1bm9wdGltaXplZCBidWlsZC10aW1lIGFzc2VydGlvbnNcJiMzNDtcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy0zNjEyLVxubGliL0tjb25maWcuZGVidWc6MzYxMzpjb25maWcgUlVTVF9LRVJORUxfRE9DVEVTVFNcbmxpYi9LY29uZmlnLmRlYnVnLTM2MTQtXHRib29sIFwmIzM0O0RvY3Rlc3RzIGZvciB0aGUgYGtlcm5lbGAgY3JhdGVcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbmxpYi9LY29uZmlnLmRlYnVnLTM2MjUtXG5saWIvS2NvbmZpZy5kZWJ1ZzozNjI2OmNvbmZpZyBSVVNUX0lOTElORV9IRUxQRVJTXG5saWIvS2NvbmZpZy5kZWJ1Zy0zNjI3LVx0Ym9vbCBcJiMzNDtJbmxpbmUgQyBoZWxwZXJzIGludG8gUnVzdCBjb2RlIChFWFBFUklNRU5UQUwpXCYjMzQ7XG4tLVxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0LTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3Q6MjptZW51Y29uZmlnIFJVU1RfS1VOSVRfVEVTVFNcbnJ1c3Qva2VybmVsL0tjb25maWcudGVzdC0zLVx0Ym9vbCBcJiMzNDtSdXN0IEtVbml0IHRlc3RzXCYjMzQ7XG4tLVxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0PTE1PWlmIFJVU1RfS1VOSVRfVEVTVFNcbnJ1c3Qva2VybmVsL0tjb25maWcudGVzdDoxNjpjb25maWcgUlVTVF9BTExPQ0FUT1JfS1VOSVRfVEVTVFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0LTE3LVx0Ym9vbCBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgUnVzdCBhbGxvY2F0b3IgQVBJXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3QtMjUtXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3Q6MjY6Y29uZmlnIFJVU1RfS1ZFQ19LVU5JVF9URVNUXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3QtMjctXHRib29sIFwmIzM0O0tVbml0IHRlc3RzIGZvciBSdXN0IEtWZWMgQVBJXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3QtMzUtXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3Q6MzY6Y29uZmlnIFJVU1RfQklUTUFQX0tVTklUX1RFU1RcbnJ1c3Qva2VybmVsL0tjb25maWcudGVzdC0zNy1cdGJvb2wgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIFJ1c3QgYml0bWFwIEFQSVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0LTQ1LVxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0OjQ2OmNvbmZpZyBSVVNUX0tVTklUX1NFTEZURVNUXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3QtNDctXHRib29sIFwmIzM0O0tVbml0IHNlbGZ0ZXN0cyBmb3IgUnVzdFwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0LTU1LVxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0OjU2OmNvbmZpZyBSVVNUX1NUUl9LVU5JVF9URVNUXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3QtNTctXHRib29sIFwmIzM0O0tVbml0IHRlc3RzIGZvciBSdXN0IHN0cmluZ3MgQVBJXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3QtNjUtXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3Q6NjY6Y29uZmlnIFJVU1RfQVRPTUlDU19LVU5JVF9URVNUXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3QtNjctXHRib29sIFwmIzM0O0tVbml0IHRlc3RzIGZvciBSdXN0IGF0b21pY3MgQVBJXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3QtNzUtXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3Q6NzY6Y29uZmlnIFJVU1RfQklURklFTERfS1VOSVRfVEVTVFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0LTc3LVx0Ym9vbCBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgdGhlIFJ1c3QgYGJpdGZpZWxkIWAgbWFjcm9cJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbnNlY3VyaXR5L0tjb25maWcuaGFyZGVuaW5nPTI0NT1jb25maWcgTElTVF9IQVJERU5FRFxuLS1cbnNlY3VyaXR5L0tjb25maWcuaGFyZGVuaW5nLTI1My1cbnNlY3VyaXR5L0tjb25maWcuaGFyZGVuaW5nOjI1NDpjb25maWcgUlVTVF9CSVRNQVBfSEFSREVORURcbnNlY3VyaXR5L0tjb25maWcuaGFyZGVuaW5nLTI1NS1cdGJvb2wgXCYjMzQ7Q2hlY2sgaW50ZWdyaXR5IG9mIGJpdG1hcCBSdXN0IEFQSVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzk5NgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOgoKKipOYXZpZ2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgYFJVU1RgIGNvbmZpZ3VyYXRpb24gaGVyZS4gUmlnaHQsIHRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBIb2xkIG9uIGEgc2Vjb25kLCB0aG91Z2guLi4gSSBzZWUgdGhhdCBgQVg4ODc5NkJfUlVTVF9QSFlgIGhhcyBhIGRlcGVuZGVuY3kgb24gYEFYODg3OTZCX1BIWWAuIFRoaXMgY291bGQgYmUgaW1wb3J0YW50LiBJcyBgQVg4ODc5NkJfUEhZYCAqYWN0dWFsbHkqIG5lY2Vzc2FyeT8gR2l2ZW4gdGhhdCBgQVg4ODc5NkJfUlVTVF9QSFlgIHJlbGllcyBvbiBpdCwgdGhlIGFuc3dlciBpcyAqeWVzKiwgaXQmIzM5O3MgYSBjcml0aWNhbCBjb21wb25lbnQuIEFscmlnaHQsIGxldCYjMzk7cyBkcmlsbCBkb3duIGludG8gd2hhdCAqdGhhdCogZGVwZW5kZW5jeSBpcyBjb21wb3NlZCBvZi4gVGltZSB0byBjaGVjayBgQVg4ODc5NkJfUEhZYCYjMzk7cyBvd24gZGVwZW5kZW5jaWVzLiBXZSBuZWVkIHRvIGZ1bGx5IGdyYXNwIHRoZSBjaGFpbiB0byB1bmRlcnN0YW5kIHRoZSB3aG9sZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVg4ODc5NkJfUEhZJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZz0xNTI9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNTMtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxNTQ6Y29uZmlnIEFYODg3OTZCX1BIWVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTU1LVx0dHJpc3RhdGUgXCYjMzQ7QXNpeCBQSFlzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NDE2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIE5ldHdvcmsgRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgQVg4ODc5NkJfUEhZYCDigJMgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCwgbm8gZGVwZW5kZW5jaWVzIHRvIHdvcnJ5IGFib3V0IHRoZXJlLiBCdXQgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcgdGhhdCYjMzk7cyBvbiBteSBtaW5kOiBob3cgZG9lcyBgVVNCX05FVF9BWDg4MTdYYCBmaXQgaW50byB0aGUgcGljdHVyZT8gSSYjMzk7bSB0aGlua2luZyBJIHNob3VsZCBsb29rIGF0IGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgYXBwcm9hY2guIExldCYjMzk7cyBzdGFydCB3aXRoIGEgY2hlY2sgZm9yIGBhc2l4YCB3aXRoaW4gdGhhdCBjb25maWd1cmF0aW9uIGZpbGUuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBVU0IgbmV0d29yayBhZGFwdGVyIGRyaXZlcnMgYXJlIHNldCB1cCwgYW5kIHF1aWNrbHkgc2hvdyBtZSBpZiB0aGUgYEFYODgxN1hgIGlzIGxpbmtlZCBpbiBzb21lIHdheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthc2l4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDY2NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OgoKKipDaGVja2luZyB0aGUgS2NvbmZpZyBmb3IgQVg4ODE3WCBTdXBwb3J0KioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBidXNpbmVzcy4gVGltZSB0byBkaWcgaW50byB0aGlzIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYEFYODgxN1hgIHN1cHBvcnQgaXMgaGFuZGxlZC4gSSBpbW1lZGlhdGVseSBrbm93IHRoZSBwbGFjZSB0byBzdGFydDogYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIFVTQiBuZXR3b3JrIGRyaXZlciBjb25maWd1cmF0aW9ucyBhcmUgc3RvcmVkLCBhbmQgZ2l2ZW4gaXRzIGEgVVNCIGRldmljZSwgdGhhdCYjMzk7cyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgbG9va2luZyBmb3Igb3B0aW9ucyByZWxhdGVkIHRvIGl0LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUuIEkgYmV0IGl0IGhhcyBhbGwgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG9wdGlvbnMuIEkgd29uZGVyIGlmIHRoZXJlIGFyZSBhbnkgaW50ZXJlc3RpbmcgZGVwZW5kYW5jaWVzIHRoYXQgSSBkaWRuJiMzOTt0IGtub3cgYWJvdXQuIEkgaG9wZSB0aGVyZSBpcyBubyBoaWRkZW4gYnVnLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtBWDg4MTdYJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MTMyPWNvbmZpZyBVU0JfVVNCTkVUXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTY1LVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTY2OmNvbmZpZyBVU0JfTkVUX0FYODgxN1hcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTE2Ny1cdHRyaXN0YXRlIFwmIzM0O0FTSVggQVg4OHh4eCBCYXNlZCBVU0IgMi4wIEV0aGVybmV0IEFkYXB0ZXJzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0OTk4CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqVVNCX05FVF9BWDg4MTdYIERlcGVuZGVuY3kgQ2hlY2sqKgoKT2theSwgdGltZSB0byBkaWcgaW4uIFRoZSBmaXJzdCB0aGluZyBJJiMzOTttIGRvaW5nIGlzIG1ha2luZyBzdXJlIEkgZnVsbHkgdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBVU0JfTkVUX0FYODgxN1hgLiBUaGlzIGlzIGNydWNpYWwgYmVmb3JlIEkgZXZlbiB0aGluayBhYm91dCBtYWtpbmcgYW55IGNoYW5nZXMgb3IgYWRkcmVzc2luZyBhbnkgcG90ZW50aWFsIGlzc3Vlcy4gSSBuZWVkIHRvIGtub3cgd2hhdCBvdGhlciBjb21wb25lbnRzLCBkcml2ZXJzLCBvciBsaWJyYXJpZXMgcmVseSBvbiBpdCwgYW5kIHdoYXQgaXQsIGluIHR1cm4sIGRlcGVuZHMgb24uIEEgY2xlYXIgZGVwZW5kZW5jeSBtYXAgaXMgYWJzb2x1dGVseSBlc3NlbnRpYWwgZm9yIHN0YWJpbGl0eSBhbmQgYXZvaWRpbmcgcmVncmVzc2lvbnMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2MDpcdFxuIDE2MTpcdFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgXHUwMDNjaHR0cDovL3d3dy5saW51eC11c2Iub3JnL3VzYm5ldC9cdTAwM2UuXG4gMTYyOlx0XG4gMTYzOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDE2NDpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgdXNibmV0LlxuIDE2NTpcdFxuIDE2NjpcdGNvbmZpZyBVU0JfTkVUX0FYODgxN1hcbiAxNjc6XHRcdHRyaXN0YXRlIFwmIzM0O0FTSVggQVg4OHh4eCBCYXNlZCBVU0IgMi4wIEV0aGVybmV0IEFkYXB0ZXJzXCYjMzQ7XG4gMTY4Olx0XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbiAxNjk6XHRcdHNlbGVjdCBDUkMzMlxuIDE3MDpcdFx0c2VsZWN0IFBIWUxJTktcbiAxNzE6XHRcdHNlbGVjdCBBWDg4Nzk2Ql9QSFlcbiAxNzI6XHRcdGltcGx5IE5FVF9TRUxGVEVTVFNcbiAxNzM6XHRcdGRlZmF1bHQgeVxuIDE3NDpcdFx0aGVscFxuIDE3NTpcdFx0ICBUaGlzIG9wdGlvbiBhZGRzIHN1cHBvcnQgZm9yIEFTSVggQVg4OHh4eCBiYXNlZCBVU0IgMi4wXG4gMTc2Olx0XHQgIDEwLzEwMCBFdGhlcm5ldCBhZGFwdGVycy5cbiAxNzc6XHRcbiAxNzg6XHRcdCAgVGhpcyBkcml2ZXIgc2hvdWxkIHdvcmsgd2l0aCBhdCBsZWFzdCB0aGUgZm9sbG93aW5nIGRldmljZXM6XG4gMTc5Olx0XHQgICAgKiBBdGVuIFVDMjEwVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTQ4OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDb25maWd1cmF0aW9uIENvbnVuZHJ1bSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnMuIFRoZSBgVVNCX05FVF9BWDg4MTdYYCBvcHRpb24gcHVsbHMgaW4gYEFYODg3OTZCX1BIWWAsIHRoYXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkLiBNeSBpbml0aWFsIGluc3RpbmN0IHdhcyB0byBqdXN0IGFkZCBgVVNCX05FVF9BWDg4MTdYYCB0byBgRW5hYmxlQ29uZmlnc2AsIHdoaWNoIG1ha2VzIHNlbnNlLiBCdXQgaGFuZyBvbiwgc2luY2UgdGhlIGRyaXZlciBpbXBsaWNpdGx5IGVuYWJsZXMgdGhlIFBIWSwgZXhwbGljaXRseSBlbmFibGluZyBgQVg4ODc5NkJfUEhZYCBtaWdodCBiZSByZWR1bmRhbnQuCgpBaCwgYnV0IG5vdyBJIHJlbWVtYmVyLCB3ZSBkZWZpbml0ZWx5ICpuZWVkKiBgQVg4ODc5NkJfUlVTVF9QSFlgLiBTbywgbXkgdGhpbmtpbmcgZXZvbHZlcy4gVGhlIGBFbmFibGVDb25maWdzYCBsaXN0IHNob3VsZCBwcm9iYWJseSBiZTogYFJVU1RgLCBgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TYCwgYEFYODg3OTZCX1JVU1RfUEhZYCwgYW5kIGBVU0JfTkVUX0FYODgxN1hgLiBUaGlzIGtlZXBzIHRoZSByZXF1aXJlZCBjb21wb25lbnRzIGluIHBsYWNlLgoKSG93ZXZlciwgYSBuZXcgcXVlc3Rpb24gYXJpc2VzLiBEb2VzIGBBWDg4Nzk2Ql9SVVNUX1BIWWAgKnJlcGxhY2UqIGBBWDg4Nzk2Ql9QSFlgLCBvciBkbyB0aGV5IHNvbWVob3cgY29leGlzdD8gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZWAgdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZXNvbHZlIHRoYXQgYW1iaWd1aXR5LiBUaGlzIHJlcXVpcmVzIGEgZGVlcGVyIGRpdmUgdG8gY2xhcmlmeSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgUEhZIG9wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAzNTpcdG9iai0kKENPTkZJR19BSVJfTkVUX1BIWUxJQilcdCYjNDM7PSBhaXJfcGh5X2xpYi5vXG4gIDM2Olx0b2JqLSQoQ09ORklHX0FNRF9QSFkpXHRcdCYjNDM7PSBhbWQub1xuICAzNzpcdG9iai0kKENPTkZJR19BTUNDX1FUMjAyNV9QSFkpXHQmIzQzOz0gcXQyMDI1Lm9cbiAgMzg6XHRvYmotJChDT05GSUdfQVFVQU5USUFfUEhZKVx0JiM0Mzs9IGFxdWFudGlhL1xuICAzOTpcdG9iai0kKENPTkZJR19BUzIxWFhYX1BIWSlcdCYjNDM7PSBhczIxeHh4Lm9cbiAgNDA6XHRpZmRlZiBDT05GSUdfQVg4ODc5NkJfUlVTVF9QSFlcbiAgNDE6XHQgIG9iai0kKENPTkZJR19BWDg4Nzk2Ql9QSFkpXHQmIzQzOz0gYXg4ODc5NmJfcnVzdC5vXG4gIDQyOlx0ZWxzZVxuICA0MzpcdCAgb2JqLSQoQ09ORklHX0FYODg3OTZCX1BIWSlcdCYjNDM7PSBheDg4Nzk2Yi5vXG4gIDQ0Olx0ZW5kaWZcbiAgNDU6XHRvYmotJChDT05GSUdfQkNNNTQxNDBfUEhZKVx0JiM0Mzs9IGJjbTU0MTQwLm9cbiAgNDY6XHRvYmotJChDT05GSUdfQkNNNjNYWF9QSFkpXHQmIzQzOz0gYmNtNjN4eC5vXG4gIDQ3Olx0b2JqLSQoQ09ORklHX0JDTTdYWFhfUEhZKVx0JiM0Mzs9IGJjbTd4eHgub1xuICA0ODpcdG9iai0kKENPTkZJR19CQ004NDg4MV9QSFkpXHQmIzQzOz0gYmNtODQ4ODEub1xuICA0OTpcdG9iai0kKENPTkZJR19CQ004N1hYX1BIWSlcdCYjNDM7PSBiY204N3h4Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY0MDQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0MDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDT05GSUcgYW5kIFN5bWJvbCBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gdGhlIGBDT05GSUdfQVg4ODc5NkJfUlVTVF9QSFlgIG9wdGlvbiBpcyBzd2FwcGluZyBvdXQgdGhlIG9sZCBgYXg4ODc5NmIub2Agb2JqZWN0IGZpbGUgd2l0aCB0aGUgbmV3IFJ1c3QgaW1wbGVtZW50YXRpb24sIGBheDg4Nzk2Yl9ydXN0Lm9gLiBDbGVhcmx5LCB3ZSBhYnNvbHV0ZWx5IG5lZWQgdG8gZW5zdXJlIGBBWDg4Nzk2Ql9SVVNUX1BIWWAgaXMgZW5hYmxlZC4gQW5kLCBzaW5jZSBgVVNCX05FVF9BWDg4MTdYYCB3aWxsIHNlbGVjdCBgQVg4ODc5NkJfUEhZYCwgdGhhdCBsaWtlbHkgbWVhbnMgaXQgd2lsbCwgaW4gdHVybiwgc2VsZWN0IHRoZSBSdXN0IFBIWS4gU28gbXkgaW5pdGlhbCBgRW5hYmxlQ29uZmlnc2AgbGlzdCBzaG91bGQgYmU6IGBSVVNUYCwgYFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU2AsIGBBWDg4Nzk2Ql9SVVNUX1BIWWAsIGFuZCBgVVNCX05FVF9BWDg4MTdYYC4gVGhhdCBzaG91bGQgYmUgdGhlIG1pbmltdW0gY29uZmlndXJhdGlvbi4KCk5vdywgbGV0JiMzOTtzIHRoaW5rIGFib3V0IGBGb2N1c1N5bWJvbHNgLiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgdGhvc2UgZnVuY3Rpb25zOiBgaXNfbGlua191cGAsIGBpc19hdXRvbmVnX2VuYWJsZWRgLCBhbmQgYGlzX2F1dG9uZWdfY29tcGxldGVkYCwgYWxsIHdpdGhpbiBgcnVzdC9rZXJuZWwvbmV0L3BoeS5yc2AuIFRob3NlIGFyZSBSdXN0IG1ldGhvZHMuIE5vdywgSSBuZWVkIHRvIGtub3cgaG93IHRoZXNlIGFyZSBnb2luZyB0byBiZSBoYW5kbGVkLiBBcmUgdGhleSBtYW5nbGVkIHN5bWJvbHM/IEFyZSB0aGV5IGlubGluZWQ/IFNpbmNlIHRoZXkgYXJlIGBwdWIgZm5gIHdpdGhpbiBhIFJ1c3QgbW9kdWxlLCB0aGV5IGNvdWxkIHZlcnkgd2VsbCBiZSBpbmxpbmVkLgoKT2theSwgbGV0JiMzOTtzIGRpZyBpbnRvIGBheDg4Nzk2Yl9ydXN0LnJzYCB0byBzZWUgd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSAqdXNlZCouIEFoLCBgaXNfbGlua191cGAgaXMgdXNlZCBpbiBgcmVhZF9zdGF0dXNgLCBhbmQgYGlzX2F1dG9uZWdfZW5hYmxlZGAgaXMgdXNlZCBpbiBgcmVhZF9zdGF0dXNgLCBhbmQgYGlzX2F1dG9uZWdfY29tcGxldGVkYCBpcyB1c2VkIGluIGByZWFkX3N0YXR1c2AuIE5vdyBsZXQmIzM5O3Mgc2VlLCB3aGF0IGlzIGByZWFkX3N0YXR1c2A/IEl0JiMzOTtzIHBhcnQgb2YgdGhlIGBEcml2ZXJgIHRyYWl0IGltcGxlbWVudGF0aW9uIGZvciB0aGUgYFBoeUFYODg3NzJBYCBzdHJ1Y3QuIFNvIHRoZSBuZXh0IHF1ZXN0aW9uIGlzOiBIb3cgaXMgYHJlYWRfc3RhdHVzYCBuYW1lZCB3aGVuIGNvbXBpbGVkPyBJdCYjMzk7cyBsaWtlbHkgbWFuZ2xlZCwgd2hpY2ggbWVhbnMgaXQgd2lsbCBiZSB0cmlja3kgdG8gcGluIGRvd24gdGhlIHN5bWJvbC4gSG93ZXZlciwgd2FpdCBhIG1pbnV0ZS4uLiBgcmVhZF9zdGF0dXNgIGlzIGEgZnVuY3Rpb24gKnBvaW50ZXIqIHdpdGhpbiB0aGUgYHBoeV9kcml2ZXJgIHN0cnVjdCEgVGhhdCYjMzk7cyBob3cgaXQmIzM5O3MgYmVpbmcgaGFuZGxlZC4gUmlnaHQuIE9rYXksIG5vdyBJIG5lZWQgdG8gY2hlY2sgYHJ1c3Qva2VybmVsL25ldC9waHkucnNgIGFnYWluIHRvIHNlZSBob3cgdGhhdCBmdW5jdGlvbiBwb2ludGVyIGlzIHJlZ2lzdGVyZWQgdG8gc2VlIGhvdyB0aGUgc3ltYm9sIGlzIGFjY2Vzc2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZWFkX3N0YXR1cyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3J1c3Qva2VybmVsL25ldC9waHkucnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7cnVzdC9rZXJuZWwvbmV0L3BoeS5ycz0yNDQ9ICAgIHB1YiBmbiBnZW5waHlfc3VzcGVuZChcdTAwMjZtdXQgc2VsZikgLVx1MDAzZSBSZXN1bHQge1xuLS1cbnJ1c3Qva2VybmVsL25ldC9waHkucnMtMjUxLSAgICAvLy8gQ2hlY2tzIHRoZSBsaW5rIHN0YXR1cyBhbmQgdXBkYXRlcyBjdXJyZW50IGxpbmsgc3RhdGUuXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjI1MjogICAgcHViIGZuIGdlbnBoeV9yZWFkX3N0YXR1c1x1MDAzY1I6IHJlZzo6UmVnaXN0ZXJcdTAwM2UoXHUwMDI2bXV0IHNlbGYpIC1cdTAwM2UgUmVzdWx0XHUwMDNjdTE2XHUwMDNlIHtcbnJ1c3Qva2VybmVsL25ldC9waHkucnM6MjUzOiAgICAgICAgUjo6cmVhZF9zdGF0dXMoc2VsZilcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtMjU0LSAgICB9XG4tLVxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycz0zMDg9aW1wbFx1MDAzY1Q6IERyaXZlclx1MDAzZSBBZGFwdGVyXHUwMDNjVFx1MDAzZSB7XG4tLVxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy0zOTYtICAgIC8vLyBgcGh5ZGV2YCBtdXN0IGJlIHBhc3NlZCBieSB0aGUgY29ycmVzcG9uZGluZyBjYWxsYmFjayBpbiBgcGh5X2RyaXZlcmAuXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjM5NzogICAgdW5zYWZlIGV4dGVybiBcJiMzNDtDXCYjMzQ7IGZuIHJlYWRfc3RhdHVzX2NhbGxiYWNrKHBoeWRldjogKm11dCBiaW5kaW5nczo6cGh5X2RldmljZSkgLVx1MDAzZSBjX2ludCB7XG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTM5OC0gICAgICAgIGZyb21fcmVzdWx0KHx8IHtcbi0tXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTQwMi0gICAgICAgICAgICBsZXQgZGV2ID0gdW5zYWZlIHsgRGV2aWNlOjpmcm9tX3JhdyhwaHlkZXYpIH07XG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjQwMzogICAgICAgICAgICBUOjpyZWFkX3N0YXR1cyhkZXYpPztcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtNDA0LSAgICAgICAgICAgIE9rKDApXG4tLVxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycz00OTQ9cHViIGNvbnN0IGZuIGNyZWF0ZV9waHlfZHJpdmVyXHUwMDNjVDogRHJpdmVyXHUwMDNlKCkgLVx1MDAzZSBEcml2ZXJWVGFibGUge1xuLS1cbnJ1c3Qva2VybmVsL25ldC9waHkucnMtNTM1LSAgICAgICAgfSxcbnJ1c3Qva2VybmVsL25ldC9waHkucnM6NTM2OiAgICAgICAgcmVhZF9zdGF0dXM6IGlmIFQ6OkhBU19SRUFEX1NUQVRVUyB7XG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjUzNzogICAgICAgICAgICBTb21lKEFkYXB0ZXI6Olx1MDAzY1RcdTAwM2U6OnJlYWRfc3RhdHVzX2NhbGxiYWNrKVxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy01MzgtICAgICAgICB9IGVsc2Uge1xuLS1cbnJ1c3Qva2VybmVsL25ldC9waHkucnM9NjAxPSAgICBmbiBjb25maWdfYW5lZyhfZGV2OiBcdTAwMjZtdXQgRGV2aWNlKSAtXHUwMDNlIFJlc3VsdCB7XG4tLVxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy02MDUtICAgIC8vLyBEZXRlcm1pbmVzIHRoZSBuZWdvdGlhdGVkIHNwZWVkIGFuZCBkdXBsZXguXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjYwNjogICAgZm4gcmVhZF9zdGF0dXMoX2RldjogXHUwMDI2bXV0IERldmljZSkgLVx1MDAzZSBSZXN1bHRcdTAwM2N1MTZcdTAwM2Uge1xucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy02MDctICAgICAgICBidWlsZF9lcnJvciEoVlRBQkxFX0RFRkFVTFRfRVJST1IpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3OTgxCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNTAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYHJlYWRfc3RhdHVzYCBDYWxsYmFja3MgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgcmVhZF9zdGF0dXNgIGlzc3VlLCBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgaG93IHRvIGVmZmVjdGl2ZWx5IGZ1enogdGhlIFBIWSBkcml2ZXIuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGluIHRoZSBgQWRhcHRlciZsdDtUJmd0O2Agc3RydWN0dXJlLCB3aXRoIGByZWFkX3N0YXR1c19jYWxsYmFja2AgYmVpbmcgdGhlIEMgY2FsbGJhY2ssIHdoaWNoIHRoZW4gZGVsZWdhdGVzIHRvIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24sIGBUOjpyZWFkX3N0YXR1c2AuIEluIG91ciBzcGVjaWZpYyBjYXNlLCBsb29raW5nIGF0IGBheDg4Nzk2Yl9ydXN0LnJzYCwgdGhhdCYjMzk7cyBgcmVhZF9zdGF0dXNgIHdpdGhpbiBgUGh5QVg4ODc3MkFgLiBOYW1lIG1hbmdsaW5nIGluIFJ1c3QgY291bGQgbWFrZSBwaW5wb2ludGluZyB0aGUgZXhhY3Qgc3ltYm9sIHRyaWNreSwgZXNwZWNpYWxseSBmb3IgYHJlYWRfc3RhdHVzYC4KCkluaXRpYWxseSwgSSBjb25zaWRlcmVkIHRhcmdldGluZyBgcmVhZF9zdGF0dXNfY2FsbGJhY2tgIGRpcmVjdGx5LCBzaW5jZSBpdCYjMzk7cyBhbiBgZXh0ZXJuICYjMzQ7QyYjMzQ7YCBmdW5jdGlvbiwgdGhvdWdoIGl0JiMzOTtzIGdlbmVyaWMgb3ZlciBgVGAgYW5kIG1pZ2h0IHN0aWxsIGJlIG1hbmdsZWQuICBJIGFsc28gZXhwbG9yZWQgaWYgYSBub24tZ2VuZXJpYyBmdW5jdGlvbiBsaWtlIGBhc2l4X3NvZnRfcmVzZXRgIGZyb20gYGF4ODg3OTZiX3J1c3QucnNgIHdhcyBhIGdvb2QgY2FuZGlkYXRlLCBidXQgaXQgYXBwZWFycyB0aGUgaXNzdWVzIGFyZSBhcmlzaW5nIHdpdGhpbiBgaXNfbGlua191cGAsIGBpc19hdXRvbmVnX2VuYWJsZWRgLCBhbmQgYGlzX2F1dG9uZWdfY29tcGxldGVkYCwgYWxsIGNhbGxlZCBmcm9tIGByZWFkX3N0YXR1c2AgaW4gYFBoeUFYODg3NzJBYC4KClRoZSBDIHNpZGUsIHdpdGggYHBoeV9yZWFkX3N0YXR1c2AsIHRoYXQgY2FsbHMgdGhlIGByZWFkX3N0YXR1c2AgY2FsbGJhY2ssIGlzIGFsc28gYSBjb25zaWRlcmF0aW9uLCBhbHRob3VnaCBpdCYjMzk7cyBhIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb24uICBJIHBvbmRlcmVkIGZvY3VzaW5nIG9uIGBheDg4NzcyX2JpbmRgIG9yIGBheDg4NzcyX2luaXRfcGh5YCBpbiBgYXNpeF9kZXZpY2VzLmNgLiBTcGVjaWZpY2FsbHksIGBheDg4NzcyX2luaXRfcGh5YCBjb3VsZCB0cmlnZ2VyIHRoZSBQSFkmIzM5O3MgaW5pdGlhbGl6YXRpb24sIGFuZCBJJiMzOTttIGludGVyZXN0ZWQgaW4gZnV6emluZyB0aGUgZHJpdmVyJiMzOTtzIGByZWFkX3N0YXR1c2AuCgpUaGUga2V5IGlzIGZpZ3VyaW5nIG91dCBob3cgc3l6a2FsbGVyIHRyaWdnZXJzIGByZWFkX3N0YXR1c2AuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgY2FsbGVkIHBlcmlvZGljYWxseSBieSB0aGUgUEhZIHN0YXRlIG1hY2hpbmUgKGBwaHlfc3RhdGVfbWFjaGluZWApIG9yIGluIHJlc3BvbnNlIHRvIGxpbmsgY2hhbmdlcy4gU28sIGluaXRpYWxpemluZyB0aGUgUEhZIHRocm91Z2ggYGF4ODg3NzJfaW5pdF9waHlgIG1pZ2h0IGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBnaXZlIHN5emthbGxlciBhIGNoYW5jZSB0byBwb2tlIGF0IGl0LiAgSSYjMzk7bGwgbmVlZCB0byBnbyBiYWNrIGFuZCByZS1leGFtaW5lIGBheDg4Nzk2Yl9ydXN0LnJzYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBleHBvcnRlZCBmdW5jdGlvbnMgdGhhdCBtaWdodCBwcm92aWRlIGEgdXNlZnVsIGVudHJ5IHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmbiAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy0zMi0vLyBzdWNoIGFzIHVzZWQgb24gdGhlIEluZGl2aWR1YWwgQ29tcHV0ZXJzJiMzOTsgWC1TdXJmIDEwMCBab3JybyBjYXJkLlxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM6MzM6Zm4gYXNpeF9zb2Z0X3Jlc2V0KGRldjogXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXHUwMDNlIFJlc3VsdCB7XG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy0zNC0gICAgZGV2LndyaXRlKEMyMjo6Qk1DUiwgMCk/O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzPTQxPWltcGwgRHJpdmVyIGZvciBQaHlBWDg4NzcyQSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtNDgtICAgIC8vIHJlZ2lzdGVyIGlzIDAuIFRoaXMgaXNzdWUgaXMgbm90IHJlcHJvZHVjaWJsZSBvbiBBWDg4NzcyQy5cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzOjQ5OiAgICBmbiByZWFkX3N0YXR1cyhkZXY6IFx1MDAyNm11dCBwaHk6OkRldmljZSkgLVx1MDAzZSBSZXN1bHRcdTAwM2N1MTZcdTAwM2Uge1xuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtNTAtICAgICAgICBkZXYuZ2VucGh5X3VwZGF0ZV9saW5rKCk/O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTc5LVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM6ODA6ICAgIGZuIHN1c3BlbmQoZGV2OiBcdTAwMjZtdXQgcGh5OjpEZXZpY2UpIC1cdTAwM2UgUmVzdWx0IHtcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTgxLSAgICAgICAgZGV2LmdlbnBoeV9zdXNwZW5kKClcbi0tXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy04My1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzOjg0OiAgICBmbiByZXN1bWUoZGV2OiBcdTAwMjZtdXQgcGh5OjpEZXZpY2UpIC1cdTAwM2UgUmVzdWx0IHtcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTg1LSAgICAgICAgZGV2LmdlbnBoeV9yZXN1bWUoKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTg3LVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM6ODg6ICAgIGZuIHNvZnRfcmVzZXQoZGV2OiBcdTAwMjZtdXQgcGh5OjpEZXZpY2UpIC1cdTAwM2UgUmVzdWx0IHtcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTg5LSAgICAgICAgYXNpeF9zb2Z0X3Jlc2V0KGRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy05MS1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzOjkyOiAgICBmbiBsaW5rX2NoYW5nZV9ub3RpZnkoZGV2OiBcdTAwMjZtdXQgcGh5OjpEZXZpY2UpIHtcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTkzLSAgICAgICAgLy8gUmVzZXQgUEhZLCBvdGhlcndpc2UgTUlJX0xQQSB3aWxsIHByb3ZpZGUgb3V0ZGF0ZWQgaW5mb3JtYXRpb24uXG4tLVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM9MTA1PWltcGwgRHJpdmVyIGZvciBQaHlBWDg4NzcyQyB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtMTA5LVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM6MTEwOiAgICBmbiBzdXNwZW5kKGRldjogXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXHUwMDNlIFJlc3VsdCB7XG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy0xMTEtICAgICAgICBkZXYuZ2VucGh5X3N1c3BlbmQoKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTExMy1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzOjExNDogICAgZm4gcmVzdW1lKGRldjogXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXHUwMDNlIFJlc3VsdCB7XG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy0xMTUtICAgICAgICBkZXYuZ2VucGh5X3Jlc3VtZSgpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtMTE3LVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM6MTE4OiAgICBmbiBzb2Z0X3Jlc2V0KGRldjogXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXHUwMDNlIFJlc3VsdCB7XG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy0xMTktICAgICAgICBhc2l4X3NvZnRfcmVzZXQoZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzPTEyNj1pbXBsIERyaXZlciBmb3IgUGh5QVg4ODc5NkIge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTEyOS1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzOjEzMDogICAgZm4gc29mdF9yZXNldChkZXY6IFx1MDAyNm11dCBwaHk6OkRldmljZSkgLVx1MDAzZSBSZXN1bHQge1xuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtMTMxLSAgICAgICAgYXNpeF9zb2Z0X3Jlc2V0KGRldilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAxNjcKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTGluZSBvZiBSZWFzb25pbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0byBnZXQgU3l6a2FsbGVyIHRvIGludGVyYWN0IHdpdGggdGhlIEFTSVggVVNCIG5ldHdvcmsgZGV2aWNlIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRvIHRlc3QgdGhlIFBIWSBpbml0aWFsaXphdGlvbi4gUnVzdCBmdW5jdGlvbnMgYXJlIG1hbmdsZWQgYW5kIHN0YXRpYywgc28gSSBjYW4mIzM5O3QgZGlyZWN0bHkgdXNlIHRoZW0gaW4gYEZvY3VzU3ltYm9sc2AuIFRoYXQmIzM5O3MgYSBuby1nbyBmb3IgYGFzaXhfc29mdF9yZXNldGAgc2luY2UgaXQmIzM5O3MgaW50ZXJuYWwgdG8gdGhlIG1vZHVsZS4gSSB0aGluayBteSBiZXN0IGJldCBpcyB0byBmb2N1cyBvbiBhIEMgZnVuY3Rpb24gaW5zdGVhZC4KCkFoYSEgYGF4ODg3NzJfaW5pdF9waHlgIGluIGBkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmNgIHNlZW1zIHByb21pc2luZy4gSWYgSSB0YXJnZXQgdGhhdCwgSSYjMzk7bSBwcmV0dHkgc3VyZSBpdCB3aWxsIGd1aWRlIFN5emthbGxlciB0b3dhcmRzIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBBbHNvLCBgYXg4ODc3Ml9iaW5kYCBpcyB0aGUgYmluZGluZyBmdW5jdGlvbiBmb3IgdGhpcyBVU0IgZGV2aWNlLgoKQWxyaWdodCwgbGV0IG1lIGNoZWNrIGlmIGBheDg4NzcyX2JpbmRgIGlzIHN0YXRpYywgYmVjYXVzZSB0aGF0IHdvdWxkIGJlIGEgcHJvYmxlbS4gWWVwLCBpdCBpcy4gQnV0LCBTeXprYWxsZXIgY2FuIHN0aWxsIGhhbmRsZSBzdGF0aWMgZnVuY3Rpb25zLCBwcm92aWRlZCB0aGV5IGFyZW4mIzM5O3QgaW5saW5lZCwgc28gSSBzaG91bGQgYmUgb2theS4gQW5kLCBsZXQgbWUgZG91YmxlLWNoZWNrIGBheDg4NzcyX2luaXRfcGh5YC4gWWVwLCBpdCYjMzk7cyBhbHNvIHN0YXRpYy4KCk9rYXksIEkmIzM5O3ZlIGdvdCBhIHBsYW4uIEkmIzM5O2xsIHVzZSBib3RoIGBheDg4NzcyX2JpbmRgIGFuZCBgYXg4ODc3Ml9pbml0X3BoeWAgYXMgYEZvY3VzU3ltYm9sc2AuIFRoZXkgc2hvdWxkIGdldCBTeXprYWxsZXIgd2hlcmUgSSBuZWVkIGl0IHRvIGJlLgoKV2FpdCBhIHNlY29uZC4gVGhlIGJ1ZyByZXBvcnQgaXMgcG9pbnRpbmcgdG8gYHJ1c3Qva2VybmVsL25ldC9waHkucnNgLiBEYW1uIGl0LiBEb2VzIGFueSBvdGhlciBkcml2ZXIgdXNlIGBpc19saW5rX3VwYD8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXNfbGlua191cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM9NDk9ICAgIGZuIHJlYWRfc3RhdHVzKGRldjogXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXHUwMDNlIFJlc3VsdFx1MDAzY3UxNlx1MDAzZSB7XG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy01MC0gICAgICAgIGRldi5nZW5waHlfdXBkYXRlX2xpbmsoKT87XG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5yczo1MTogICAgICAgIGlmICFkZXYuaXNfbGlua191cCgpIHtcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTUyLSAgICAgICAgICAgIHJldHVybiBPaygwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA5NjcKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBhIFJ1c3QgRGVwZW5kZW5jeSoqCgpSaWdodCwgc28gSSBzZWUgYSBzcGVjaWZpYyBmaWxlLCBgYXg4ODc5NmJfcnVzdC5yc2AsIGlzIHVzaW5nIHNvbWV0aGluZy4gVGhlIGtleSBxdWVzdGlvbiBpcywgd2hhdCYjMzk7cyBpdCB1c2luZywgYW5kIGhvdz8gVGhpcyBuZWVkcyBtb3JlIGRpZ2dpbmcsIGJ1dCBhdCBsZWFzdCBJIGtub3cgd2hlcmUgdG8gc3RhcnQuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIGlmIHRoaXMgaXMgYSBjcml0aWNhbCBjb21wb25lbnQgb3IgYSBtaW5vciB1dGlsaXR5IGZ1bmN0aW9uLiBNeSBuZXh0IHBvaW50IG9mIGludmVzdGlnYXRpb24gd2lsbCBiZSBgaXNfYXV0b25lZ19lbmFibGVkYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgaXMgY29ubmVjdGVkIHRvIGBheDg4Nzk2Yl9ydXN0LnJzYC4gVGhlIG5hbWUgY2VydGFpbmx5IHN1Z2dlc3RzIGl0JiMzOTtzIHJlbGF0ZWQgdG8gYXV0by1uZWdvdGlhdGlvbiwgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgdG8gdGhlIGJyb2FkZXIgc3lzdGVtLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGlzIHJlbGF0ZWQgdG8gdGhpcyBmdW5jdGlvbmFsaXR5LCBvciBwYXJ0IG9mIGEgc2hhcmVkIGxpYnJhcnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lzX2F1dG9uZWdfZW5hYmxlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM9NDk9ICAgIGZuIHJlYWRfc3RhdHVzKGRldjogXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXHUwMDNlIFJlc3VsdFx1MDAzY3UxNlx1MDAzZSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtNzItXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5yczo3MzogICAgICAgIGlmIGRldi5pc19hdXRvbmVnX2VuYWJsZWQoKSBcdTAwMjZcdTAwMjYgZGV2LmlzX2F1dG9uZWdfY29tcGxldGVkKCkge1xuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtNzQtICAgICAgICAgICAgZGV2LnJlc29sdmVfYW5lZ19saW5rbW9kZSgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTM2OAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBcHByb2FjaCB0byBVbmRlcnN0YW5kaW5nIHRoZSBQSFkgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIGBheDg4Nzk2Yl9ydXN0LnJzYCBmaWxlLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGF0JiMzOTtzIHRoZSBvbmx5IG9uZSB1c2luZyBzb21ldGhpbmcgaW50ZXJlc3RpbmcsIGxldCYjMzk7cyBrZWVwIHRoYXQgaW4gbWluZC4gUmlnaHQsIHNvIEkgdGhpbmsgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGRpZyBpbnRvIHRoZSBQSFkgZHJpdmVyIHdvdWxkIGJlIHRvIGNvbmNlbnRyYXRlIG15IGVmZm9ydHMgb24gYGF4ODg3NzJfYmluZGAgYW5kIGBheDg4NzcyX2luaXRfcGh5YC4gVGhlIHBsYW4gaXMgdG8gZm9sbG93IHRoZSBicmVhZGNydW1icy4gV2FpdC4uLiBgYXg4ODc3Ml9iaW5kYCBpcyBhY3R1YWxseSBkZWZpbmVkIGluIGBhc2l4X2RldmljZXMuY2AuIEdvdCBpdC4KCk5vdywgYmVmb3JlIEkgZ2V0IHRvbyBkZWVwLCBsZXQmIzM5O3MganVzdCBjb25maXJtIHRoYXQgYGF4ODg3OTZiX3J1c3QucnNgIGRvZXNuJiMzOTt0IGV4cG9ydCBhbnkgY3JpdGljYWwgZnVuY3Rpb25zLiBPa2F5LCBpdCBsb29rcyBsaWtlIHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gaXMgaGFuZGxlZCBieSB0aGF0IGBrZXJuZWw6Om1vZHVsZV9waHlfZHJpdmVyIWAgbWFjcm8uIFJpZ2h0LCBzbyB0aGF0IG1hY3JvICpnZW5lcmF0ZXMqIGBpbml0X21vZHVsZWAgYW5kIGBjbGVhbnVwX21vZHVsZWAgZnVuY3Rpb25zLiBJbnRlcmVzdGluZy4gQW5kIGl0IGFsc28gZ2VuZXJhdGVzIHRoZSBgcGh5X2RyaXZlcmAgc3RydWN0IGFycmF5LiBUaGF0IGdpdmVzIG1lIHNvbWV0aGluZyBjb25jcmV0ZSB0byBsb29rIGZvci4gU28sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBtYWNybyBkb2VzIHNvIEkgY2FuIHRyYWNrIHRoZSBleGVjdXRpb24uIExldCYjMzk7cyBoZWFkIG92ZXIgdG8gYHJ1c3Qva2VybmVsL25ldC9waHkucnNgIHRvIHNlZSBob3cgYG1vZHVsZV9waHlfZHJpdmVyYCBpcyBkZWZpbmVkLiBUaGF0JiMzOTtzIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjcm9fcnVsZXMhIG1vZHVsZV9waHlfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7cnVzdC9rZXJuZWwvbmV0L3BoeS5ycyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtydXN0L2tlcm5lbC9uZXQvcGh5LnJzPTc2ND0gICAgY29uc3QgZm4gYXNfaW50KFx1MDAyNnNlbGYpIC1cdTAwM2UgdTMyIHtcbi0tXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTgwNy0jW21hY3JvX2V4cG9ydF1cbnJ1c3Qva2VybmVsL25ldC9waHkucnM6ODA4Om1hY3JvX3J1bGVzISBtb2R1bGVfcGh5X2RyaXZlciB7XG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTgwOS0gICAgKEByZXBsYWNlX2V4cHIgJF90OnR0ICRzdWI6ZXhwcikgPVx1MDAzZSB7JHN1Yn07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxOTk0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBgcGh5LnJzYCoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoZSBQSFkgKFBoeXNpY2FsIExheWVyKSBpbnRlcmFjdGlvbiBpbiB0aGUgUnVzdCBrZXJuZWwmIzM5O3MgbmV0d29ya2luZyBzdGFjay4gTXkgaW50dWl0aW9uIHRlbGxzIG1lIHRoYXQgbGluZSA4MDggb2YgYHJ1c3Qva2VybmVsL25ldC9waHkucnNgIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBkb24mIzM5O3QgcmVjYWxsIHRoaXMgc3BlY2lmaWMgYXJlYSBvZiB0aGUgY29kZWJhc2UsIHNvIEkmIzM5O20gZ29pbmcgdG8gc2NhbiB0aGUgY29kZSBhcm91bmQgdGhhdCBsaW5lIGZvciBjbHVlcy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgY29tbW9uIFBIWSBvcGVyYXRpb25zLCBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMsIG9yIGFueSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBoYXJkd2FyZSByZWdpc3RlcnMuIE15IGdvYWwgaXMgdG8gcXVpY2tseSBncmFzcCB0aGUgbG9naWNhbCBmbG93IGFuZCB0aGUgc3BlY2lmaWMgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkIGF0IHRoYXQgcG9pbnQgaW4gdGhlIHN5c3RlbS4gVGhlIGV4YWN0IGxpbmUgbWF5IHRyaWdnZXIgc29tZSBwcmlvciBrbm93bGVkZ2UuIFBlcmhhcHMgSSBhbSBsb29raW5nIGZvciBhIHNwZWNpZmljIHJlZ2lzdGVyIHNldHRpbmcgdG8gZGVidWcuIEhvcGVmdWxseSwgdGhhdCB3aWxsIGxlYWQgbWUgdG8gdGhlIHVuZGVybHlpbmcgaXNzdWUuIExldCYjMzk7cyBnZXQgcmVhZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtydXN0L2tlcm5lbC9uZXQvcGh5LnJzJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA4MDA6XHQvLy8gI1t2dGFibGVdXG4gODAxOlx0Ly8vIGltcGwgcGh5OjpEcml2ZXIgZm9yIFBoeVNhbXBsZSB7XG4gODAyOlx0Ly8vICAgICBjb25zdCBOQU1FOiBcdTAwMjYmIzM5O3N0YXRpYyBDU3RyID0gY1wmIzM0O1BoeVNhbXBsZVwmIzM0OztcbiA4MDM6XHQvLy8gICAgIGNvbnN0IFBIWV9ERVZJQ0VfSUQ6IHBoeTo6RGV2aWNlSWQgPSBwaHk6OkRldmljZUlkOjpuZXdfd2l0aF9leGFjdF9tYXNrKDB4MDAwMDAwMDEpO1xuIDgwNDpcdC8vLyB9XG4gODA1Olx0Ly8vICMgfVxuIDgwNjpcdC8vLyBgYGBcbiA4MDc6XHQjW21hY3JvX2V4cG9ydF1cbiA4MDg6XHRtYWNyb19ydWxlcyEgbW9kdWxlX3BoeV9kcml2ZXIge1xuIDgwOTpcdCAgICAoQHJlcGxhY2VfZXhwciAkX3Q6dHQgJHN1YjpleHByKSA9XHUwMDNlIHskc3VifTtcbiA4MTA6XHRcbiA4MTE6XHQgICAgKEBjb3VudF9kZXZpY2VzICQoJHg6ZXhwciksKikgPVx1MDAzZSB7XG4gODEyOlx0ICAgICAgICAwdXNpemUgJCgmIzQzOyAkY3JhdGU6Om1vZHVsZV9waHlfZHJpdmVyIShAcmVwbGFjZV9leHByICR4IDF1c2l6ZSkpKlxuIDgxMzpcdCAgICB9O1xuIDgxNDpcdFxuIDgxNTpcdCAgICAoQGRldmljZV90YWJsZSBbJCgkZGV2OmV4cHIpLCYjNDM7XSkgPVx1MDAzZSB7XG4gODE2Olx0ICAgICAgICAkY3JhdGU6Om1vZHVsZV9kZXZpY2VfdGFibGUhKFxuIDgxNzpcdCAgICAgICAgICAgIFwmIzM0O21kaW9cJiMzNDssICRjcmF0ZTo6bmV0OjpwaHk6OkRldmljZUlkLFxuIDgxODpcdCAgICAgICAgICAgIFRBQkxFLCBAbm9uZSwgWyQoJGRldiksJiM0MztdXG4gODE5Olx0ICAgICAgICApO1xuIDgyMDpcdCAgICB9O1xuIDgyMTpcdFxuIDgyMjpcdCAgICAoZHJpdmVyczogWyQoJGRyaXZlcjppZGVudCksJiM0MzsgJCgsKT9dLCBkZXZpY2VfdGFibGU6IFskKCRkZXY6ZXhwciksJiM0MzsgJCgsKT9dLCAkKCRmOnR0KSopID1cdTAwM2Uge1xuIDgyMzpcdCAgICAgICAgc3RydWN0IE1vZHVsZSB7XG4gODI0Olx0ICAgICAgICAgICAgX3JlZzogJGNyYXRlOjpuZXQ6OnBoeTo6UmVnaXN0cmF0aW9uLFxuIDgyNTpcdCAgICAgICAgfVxuIDgyNjpcdFxuIDgyNzpcdCAgICAgICAgJGNyYXRlOjpwcmVsdWRlOjptb2R1bGUhIHtcbiA4Mjg6XHQgICAgICAgICAgICB0eXBlOiBNb2R1bGUsXG4gODI5Olx0ICAgICAgICAgICAgJCgkZikqXG4gODMwOlx0ICAgICAgICB9XG4gODMxOlx0XG4gODMyOlx0ICAgICAgICBjb25zdCBfOiAoKSA9IHtcbiA4MzM6XHQgICAgICAgICAgICBzdGF0aWMgbXV0IERSSVZFUlM6IFskY3JhdGU6Om5ldDo6cGh5OjpEcml2ZXJWVGFibGU7XG4gODM0Olx0ICAgICAgICAgICAgICAgICRjcmF0ZTo6bW9kdWxlX3BoeV9kcml2ZXIhKEBjb3VudF9kZXZpY2VzICQoJGRyaXZlciksJiM0MzspXSA9XG4gODM1Olx0ICAgICAgICAgICAgICAgIFskKCRjcmF0ZTo6bmV0OjpwaHk6OmNyZWF0ZV9waHlfZHJpdmVyOjpcdTAwM2MkZHJpdmVyXHUwMDNlKCkpLCYjNDM7XTtcbiA4MzY6XHRcbiA4Mzc6XHQgICAgICAgICAgICBpbXBsICRjcmF0ZTo6TW9kdWxlIGZvciBNb2R1bGUge1xuIDgzODpcdCAgICAgICAgICAgICAgICBmbiBpbml0KG1vZHVsZTogXHUwMDI2JiMzOTtzdGF0aWMgJGNyYXRlOjpUaGlzTW9kdWxlKSAtXHUwMDNlIFJlc3VsdFx1MDAzY1NlbGZcdTAwM2Uge1xuIDgzOTpcdCAgICAgICAgICAgICAgICAgICAgLy8gU0FGRVRZOiBUaGUgYW5vbnltb3VzIGNvbnN0YW50IGd1YXJhbnRlZXMgdGhhdCBub2JvZHkgZWxzZSBjYW4gYWNjZXNzXG4gODQwOlx0ICAgICAgICAgICAgICAgICAgICAvLyB0aGUgYERSSVZFUlNgIHN0YXRpYy4gVGhlIGFycmF5IGlzIHVzZWQgb25seSBpbiB0aGUgQyBzaWRlLlxuIDg0MTpcdCAgICAgICAgICAgICAgICAgICAgbGV0IGRyaXZlcnMgPSB1bnNhZmUgeyBcdTAwMjZtdXQgRFJJVkVSUyB9O1xuIDg0MjpcdCAgICAgICAgICAgICAgICAgICAgbGV0IG11dCByZWcgPSAkY3JhdGU6Om5ldDo6cGh5OjpSZWdpc3RyYXRpb246OnJlZ2lzdGVyKFxuIDg0MzpcdCAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSxcbiA4NDQ6XHQgICAgICAgICAgICAgICAgICAgICAgICA6OmNvcmU6OnBpbjo6UGluOjpzdGF0aWNfbXV0KGRyaXZlcnMpLFxuIDg0NTpcdCAgICAgICAgICAgICAgICAgICAgKT87XG4gODQ2Olx0ICAgICAgICAgICAgICAgICAgICBPayhNb2R1bGUgeyBfcmVnOiByZWcgfSlcbiA4NDc6XHQgICAgICAgICAgICAgICAgfVxuIDg0ODpcdCAgICAgICAgICAgIH1cbiA4NDk6XHQgICAgICAgIH07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMDc0CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVGFyZ2V0IGZvciBTeXprYWxsZXIgRnV6emluZyoqCgpPa2F5LCBzbyB0aGUgYG1vZHVsZSFgIG1hY3JvIGdlbmVyYXRlcyB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLCB3aGljaCBpcyBuYW1lZCBgaW5pdF9tb2R1bGVgIGluIHRoaXMgY2FzZS4gVGhlIGlzc3VlIGlzIGluIGEgUEhZIGRyaXZlciwgd2hpY2ggbWVhbnMgc3l6a2FsbGVyIHNob3VsZCBiZSBhYmxlIHRvIHJlYWNoIGl0IG9uY2UgaXQmIzM5O3MgbG9hZGVkLiBUbyBtYWtlIHRoaW5ncyBlYXNpZXIgZm9yIHN5emthbGxlciwgSSBzaG91bGQgcGlucG9pbnQgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucy4gTGV0JiMzOTtzIGZvY3VzIG9uIGBheDg4NzcyX2JpbmRgIGFuZCBgYXg4ODc3Ml9pbml0X3BoeWAgd2l0aGluIGBhc2l4X2RldmljZXMuY2AuIFdhaXQsIGBheDg4NzcyX2JpbmRgIHNlZW1zIHRvIGJlIHNwZWNpZmljYWxseSBmb3IgdGhlIGBheDg4NzcyYCBkZXZpY2UuIEdpdmVuIHRoYXQgdGhlIFBIWSBkcml2ZXIgYGF4ODg3OTZiX3J1c3QucnNgIHN1cHBvcnRzIGEgdmFyaWV0eSBvZiBQSFlzLCBuYW1lbHkgYFBoeUFYODg3NzJBYCwgYFBoeUFYODg3NzJDYCwgYW5kIGBQaHlBWDg4Nzk2QmAsIEkgc2hvdWxkIHByb2JhYmx5IGFsc28gY29uZmlybSBpZiB0aGUgdGFyZ2V0IGRldmljZSBpcyBzdXBwb3J0ZWQgaW4gYGFzaXhfZGV2aWNlcy5jYC4gSXQgbG9va3MgbGlrZSBJIG5lZWQgdG8gY2hlY2sgZm9yIGBheDg4NzcyYWAgaW4gcGFydGljdWxhci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtheDg4NzcyYV9iaW5kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM1NjAKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIHByb3ZpZGVkIGluc3RydWN0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBBWDg4NzcyQSBEcml2ZXIgQ29kZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgYXNpeF9kZXZpY2VzLmNgIGZpbGUuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGdldCBhIGxvb2sgYXQgdGhlIGNvZGUgcmVsYXRlZCB0byB0aGUgYGF4ODg3NzJhYCBkZXZpY2UuIFRoaXMgbGlrZWx5IG1lYW5zIEkmIzM5O20gbG9va2luZyB0byB1bmRlcnN0YW5kIGl0cyBpbXBsZW1lbnRhdGlvbiwgcGVyaGFwcyB0cm91Ymxlc2hvb3QgYW4gaXNzdWUsIG9yIHBvdGVudGlhbGx5IG1vZGlmeSBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGlzIFVTQi10by1FdGhlcm5ldCBhZGFwdGVyLiBHaXZlbiBteSBleHBlcnRpc2UsIEkmIzM5O20gcHJvYmFibHkgbG9va2luZyBmb3Iga2V5IGRhdGEgc3RydWN0dXJlcywgcmVnaXN0ZXIgY29uZmlndXJhdGlvbnMsIGludGVycnVwdCBoYW5kbGluZyByb3V0aW5lcywgb3IgcGVyaGFwcyBldmVuIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIHJlbGF0ZWQgdG8gdGhpcyBwYXJ0aWN1bGFyIGRldmljZS4gSSYjMzk7bGwgYmUgcXVpY2tseSBzY2FubmluZyBmb3IgcmVsZXZhbnQgZnVuY3Rpb24gY2FsbHMsIHZhcmlhYmxlIGRlY2xhcmF0aW9ucywgYW5kIGNvbW1lbnRzIHRoYXQgd2lsbCBnaXZlIG1lIHRoZSBxdWljayBncmFzcCBvZiB0aGUgaW5uZXIgd29ya2luZ3Mgb2YgdGhpcyBkcml2ZXIgdGhhdCBJIG5lZWQuIExldCYjMzk7cyBnZXQgc3RhcnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXg4ODc3MmEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTM2Mj1zdGF0aWMgaW50IGF4ODg3NzJfaHdfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgaW5fcG0pXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ1NS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo0NTY6c3RhdGljIGludCBheDg4NzcyYV9od19yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBpbl9wbSlcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00NTcte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz04Mjk9c3RhdGljIGludCBheDg4NzcyX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODk4LVx0ZWxzZVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjg5OTpcdFx0cHJpdi1cdTAwM2VyZXNldCA9IGF4ODg3NzJhX2h3X3Jlc2V0O1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkwMC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQwNTkKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipFeGFtaW5pbmcgdGhlIERyaXZlciBCaW5kaW5nIGluIGFzaXhfZGV2aWNlcy5jKioKCkFscmlnaHQsIHNvIHRoZSBjb2RlIGlzIHN0YXRpbmcgdGhhdCB0aGUgYGF4ODg3NzJfYmluZGAgZnVuY3Rpb24gaXMgYWxzbyByZXNwb25zaWJsZSBmb3IgYmluZGluZyB0aGUgYGF4ODg3NzJhYCBkZXZpY2UuIFRoYXQgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBJIG5lZWQgdG8gY29uZmlybSB0aGlzLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byBnbyBkaXJlY3RseSB0byB0aGUgc291cmNlLiBMZXQmIzM5O3MgZGVsdmUgaW50byBgYXNpeF9kZXZpY2VzLmNgIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGF4ODg3NzJfYmluZGAuIEkgd2FudCB0byBzZWUgaG93IHRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgYmluZGluZyBwcm9jZXNzLCB0aGUgZGV2aWNlIElEcyBpdCByZWNvZ25pemVzLCBhbmQgaWYgdGhlcmUmIzM5O3MgYW55IGNvbmRpdGlvbmFsIGxvZ2ljIHdpdGhpbiBpdCB0aGF0IG1pZ2h0IGV4cGxhaW4gd2h5IGl0JiMzOTtzIGhhbmRsaW5nIGJvdGggdGhlIG9yaWdpbmFsIGBheDg4NzcyYCBhbmQgdGhlIGBheDg4NzcyYWAuIFRoZSBkZXZpbCYjMzk7cyBhbHdheXMgaW4gdGhlIGRldGFpbHMsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggc2xpZ2h0bHkgZGlmZmVyZW50IGhhcmR3YXJlIHJldmlzaW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBiaW5kaW5nIHJlbGF0aW9uc2hpcCBjb21wbGV0ZWx5IHRvIHRyb3VibGVzaG9vdCBvciBleHRlbmQgZnVuY3Rpb25hbGl0eSwgaWYgdGhlIG5lZWQgYXJpc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODIwOlx0XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cHJpdi1cdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2LVx1MDAzZW5ldC1cdTAwM2VkZXYuZndub2RlLFxuIDgyMTpcdFx0XHRcdFx0IHBoeV9pZl9tb2RlLCBcdTAwMjZheDg4NzcyX3BoeWxpbmtfbWFjX29wcyk7XG4gODIyOlx0XHRpZiAoSVNfRVJSKHBoeWxpbmspKVxuIDgyMzpcdFx0XHRyZXR1cm4gUFRSX0VSUihwaHlsaW5rKTtcbiA4MjQ6XHRcbiA4MjU6XHRcdHByaXYtXHUwMDNlcGh5bGluayA9IHBoeWxpbms7XG4gODI2Olx0XHRyZXR1cm4gMDtcbiA4Mjc6XHR9XG4gODI4Olx0XG4gODI5Olx0c3RhdGljIGludCBheDg4NzcyX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbiA4MzA6XHR7XG4gODMxOlx0XHRzdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSAqcHJpdjtcbiA4MzI6XHRcdHU4IGJ1ZltFVEhfQUxFTl0gPSB7MH07XG4gODMzOlx0XHRpbnQgcmV0LCBpO1xuIDgzNDpcdFxuIDgzNTpcdFx0cHJpdiA9IGRldm1fa3phbGxvYyhcdTAwMjZkZXYtXHUwMDNldWRldi1cdTAwM2VkZXYsIHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpO1xuIDgzNjpcdFx0aWYgKCFwcml2KVxuIDgzNzpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiA4Mzg6XHRcbiA4Mzk6XHRcdGRldi1cdTAwM2Vkcml2ZXJfcHJpdiA9IHByaXY7XG4gODQwOlx0XG4gODQxOlx0XHRyZXQgPSB1c2JuZXRfZ2V0X2VuZHBvaW50cyhkZXYsIGludGYpO1xuIDg0MjpcdFx0aWYgKHJldClcbiA4NDM6XHRcdFx0cmV0dXJuIHJldDtcbiA4NDQ6XHRcbiA4NDU6XHRcdC8qIE1heWJlIHRoZSBib290IGxvYWRlciBwYXNzZWQgdGhlIE1BQyBhZGRyZXNzIHZpYSBkZXZpY2UgdHJlZSAqL1xuIDg0NjpcdFx0aWYgKCFldGhfcGxhdGZvcm1fZ2V0X21hY19hZGRyZXNzKFx1MDAyNmRldi1cdTAwM2V1ZGV2LVx1MDAzZWRldiwgYnVmKSkge1xuIDg0NzpcdFx0XHRuZXRpZl9kYmcoZGV2LCBpZnVwLCBkZXYtXHUwMDNlbmV0LFxuIDg0ODpcdFx0XHRcdCAgXCYjMzQ7TUFDIGFkZHJlc3MgcmVhZCBmcm9tIGRldmljZSB0cmVlXCYjMzQ7KTtcbiA4NDk6XHRcdH0gZWxzZSB7XG4gODUwOlx0XHRcdC8qIFRyeSBnZXR0aW5nIHRoZSBNQUMgYWRkcmVzcyBmcm9tIEVFUFJPTSAqL1xuIDg1MTpcdFx0XHRpZiAoZGV2LVx1MDAzZWRyaXZlcl9pbmZvLVx1MDAzZWRhdGEgXHUwMDI2IEZMQUdfRUVQUk9NX01BQykge1xuIDg1MjpcdFx0XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIChFVEhfQUxFTiBcdTAwM2VcdTAwM2UgMSk7IGkmIzQzOyYjNDM7KSB7XG4gODUzOlx0XHRcdFx0XHRyZXQgPSBhc2l4X3JlYWRfY21kKGRldiwgQVhfQ01EX1JFQURfRUVQUk9NLFxuIDg1NDpcdFx0XHRcdFx0XHRcdCAgICAweDA0ICYjNDM7IGksIDAsIDIsIGJ1ZiAmIzQzOyBpICogMixcbiA4NTU6XHRcdFx0XHRcdFx0XHQgICAgMCk7XG4gODU2Olx0XHRcdFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDg1NzpcdFx0XHRcdFx0XHRicmVhaztcbiA4NTg6XHRcdFx0XHR9XG4gODU5Olx0XHRcdH0gZWxzZSB7XG4gODYwOlx0XHRcdFx0cmV0ID0gYXNpeF9yZWFkX2NtZChkZXYsIEFYX0NNRF9SRUFEX05PREVfSUQsXG4gODYxOlx0XHRcdFx0XHRcdCAgICAwLCAwLCBFVEhfQUxFTiwgYnVmLCAwKTtcbiA4NjI6XHRcdFx0fVxuIDg2MzpcdFxuIDg2NDpcdFx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gODY1Olx0XHRcdFx0bmV0ZGV2X2RiZyhkZXYtXHUwMDNlbmV0LCBcJiMzNDtGYWlsZWQgdG8gcmVhZCBNQUMgYWRkcmVzczogJWRcXG5cJiMzNDssXG4gODY2Olx0XHRcdFx0XHQgICByZXQpO1xuIDg2NzpcdFx0XHRcdHJldHVybiByZXQ7XG4gODY4Olx0XHRcdH1cbiA4Njk6XHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUxNzIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpZ2dpbmcgaW50byB0aGUgYGF4ODg3NzJgIERyaXZlcioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBgYXg4ODc3MmAgZHJpdmVyLCBhbmQgaXQgbG9va3MgbGlrZSBgYXg4ODc3Ml9iaW5kYCBpcywgYXMgZXhwZWN0ZWQsIHRoZSBwcmltYXJ5IGJpbmQgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgc28gbGV0JiMzOTtzIHN0YXJ0IGJ5IHF1aWNrbHkgdmVyaWZ5aW5nIGFuZCBleGFtaW5pbmcgdGhlIGBheDg4NzcyX2luaXRfcGh5YCBmdW5jdGlvbi4gSXQgaXMgYSBjcml0aWNhbCBjb21wb25lbnQgZm9yIGJyaW5naW5nIHVwIHRoZSBwaHlzaWNhbCBsYXllciBpbnRlcmZhY2UuIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIFBIWSBpbml0aWFsaXphdGlvbiBpcyBoYW5kbGVkIGNvcnJlY3RseSBhbmQgZWZmaWNpZW50bHksIGNvbnNpZGVyaW5nIHBvdGVudGlhbCBwb3dlci11cCBzZXF1ZW5jZXMsIGF1dG9uZWdvdGlhdGlvbiBwYXJhbWV0ZXJzLCBhbmQgYW55IHNwZWNpZmljIHF1aXJrcyBvZiB0aGUgQVg4ODc3MiYjMzk7cyBQSFkuIEkmIzM5O2xsIHByb2JhYmx5IHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIHJlZ2lzdGVycyBiZWluZyBhY2Nlc3NlZCBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDcwMDpcdFx0bWRpb2J1c19mcmVlKHByaXYtXHUwMDNlbWRpbyk7XG4gNzAxOlx0fVxuIDcwMjpcdFxuIDcwMzpcdHN0YXRpYyBpbnQgYXg4ODc3Ml9pbml0X3BoeShzdHJ1Y3QgdXNibmV0ICpkZXYpXG4gNzA0Olx0e1xuIDcwNTpcdFx0c3RydWN0IGFzaXhfY29tbW9uX3ByaXZhdGUgKnByaXYgPSBkZXYtXHUwMDNlZHJpdmVyX3ByaXY7XG4gNzA2Olx0XHRpbnQgcmV0O1xuIDcwNzpcdFxuIDcwODpcdFx0cHJpdi1cdTAwM2VwaHlkZXYgPSBtZGlvYnVzX2dldF9waHkocHJpdi1cdTAwM2VtZGlvLCBwcml2LVx1MDAzZXBoeV9hZGRyKTtcbiA3MDk6XHRcdGlmICghcHJpdi1cdTAwM2VwaHlkZXYpIHtcbiA3MTA6XHRcdFx0bmV0ZGV2X2VycihkZXYtXHUwMDNlbmV0LCBcJiMzNDtDb3VsZCBub3QgZmluZCBQSFlcXG5cJiMzNDspO1xuIDcxMTpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbiA3MTI6XHRcdH1cbiA3MTM6XHRcbiA3MTQ6XHRcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkocHJpdi1cdTAwM2VwaHlsaW5rLCBwcml2LVx1MDAzZXBoeWRldik7XG4gNzE1Olx0XHRpZiAocmV0KSB7XG4gNzE2Olx0XHRcdG5ldGRldl9lcnIoZGV2LVx1MDAzZW5ldCwgXCYjMzQ7Q291bGQgbm90IGNvbm5lY3QgUEhZXFxuXCYjMzQ7KTtcbiA3MTc6XHRcdFx0cmV0dXJuIHJldDtcbiA3MTg6XHRcdH1cbiA3MTk6XHRcbiA3MjA6XHRcdHBoeV9zdXNwZW5kKHByaXYtXHUwMDNlcGh5ZGV2KTtcbiA3MjE6XHRcdHByaXYtXHUwMDNlcGh5ZGV2LVx1MDAzZW1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcbiA3MjI6XHRcbiA3MjM6XHRcdHBoeV9hdHRhY2hlZF9pbmZvKHByaXYtXHUwMDNlcGh5ZGV2KTtcbiA3MjQ6XHRcbiA3MjU6XHRcdGlmIChwcml2LVx1MDAzZWVtYmRfcGh5KVxuIDcyNjpcdFx0XHRyZXR1cm4gMDtcbiA3Mjc6XHRcbiA3Mjg6XHRcdC8qIEluIGNhc2UgbWFpbiBQSFkgaXMgbm90IHRoZSBlbWJlZGRlZCBQSFkgYW5kIE1BQyBpcyBSTUlJIGNsb2NrXG4gNzI5Olx0XHQgKiBwcm92aWRlciwgd2UgbmVlZCB0byBzdXNwZW5kIGVtYmVkZGVkIFBIWSBieSBrZWVwaW5nIFBMTCBlbmFibGVkXG4gNzMwOlx0XHQgKiAoQVhfU1dSRVNFVF9JUFBEID09IDApLlxuIDczMTpcdFx0ICovXG4gNzMyOlx0XHRwcml2LVx1MDAzZXBoeWRldl9pbnQgPSBtZGlvYnVzX2dldF9waHkocHJpdi1cdTAwM2VtZGlvLCBBWF9FTUJEX1BIWV9BRERSKTtcbiA3MzM6XHRcdGlmICghcHJpdi1cdTAwM2VwaHlkZXZfaW50KSB7XG4gNzM0Olx0XHRcdHJ0bmxfbG9jaygpO1xuIDczNTpcdFx0XHRwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHByaXYtXHUwMDNlcGh5bGluayk7XG4gNzM2Olx0XHRcdHJ0bmxfdW5sb2NrKCk7XG4gNzM3Olx0XHRcdG5ldGRldl9lcnIoZGV2LVx1MDAzZW5ldCwgXCYjMzQ7Q291bGQgbm90IGZpbmQgaW50ZXJuYWwgUEhZXFxuXCYjMzQ7KTtcbiA3Mzg6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4gNzM5Olx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MDU0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEJ1ZyBGaXgqKgoKT2theSwgc28gYGF4ODg3NzJfaW5pdF9waHlgIGFuZCBgYXg4ODc3Ml9iaW5kYCBzZWVtIGxpa2UgZ29vZCBzdGFydGluZyBwb2ludHMgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGZpeC4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBteSBpbnR1aXRpb24gaXMgdGVsbGluZyBtZSB0byBsb29rIGNsb3NlbHkgYXQgdGhlc2Ugc3ltYm9scy4gV2FpdCwgdGhlIHByb2JsZW0gaXMgc3BlY2lmaWNhbGx5IGluIGBydXN0L2tlcm5lbC9uZXQvcGh5LnJzYC4gSW50ZXJlc3RpbmcuIEkmIzM5O3ZlIGJlZW4gYWxlcnRlZCB0aGUgYnVnIGhhcyBiZWVuIGNvbmZpcm1lZCBpbiBgYXg4ODc5NmJfcnVzdC5yc2AuIFRoZSBwYXRjaCBhZGRyZXNzZXMgYml0ZmllbGQgaW5kZXggZXJyb3JzIGluIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGxpbmsgYW5kIGF1dG9uZWdvdGlhdGlvbiBzdGF0dXM6IGBpc19saW5rX3VwYCwgYGlzX2F1dG9uZWdfZW5hYmxlZGAsIGFuZCBgaXNfYXV0b25lZ19jb21wbGV0ZWRgLiBTbywgY2xlYXJseSwgdGhlIGRyaXZlciB3YXMgcmVhZGluZyB0aGUgd3JvbmcgYml0cyEgVGhpcyBleHBsYWlucyB0aGUgcG90ZW50aWFsIGZvciBsaW5rIHN0YXR1cyBvciBhdXRvbmVnb3RpYXRpb24gZXJyb3JzLCB3aGljaCB3b3VsZCBkZWZpbml0ZWx5IGJlIGNvbnNpZGVyZWQgYSBmdW5jdGlvbmFsIGNoYW5nZS4KCklzIHRoaXMgcmVhY2hhYmxlPyBZZXMsIHRocm91Z2ggVVNCIGVtdWxhdGlvbiBvZiBBU0lYIGRldmljZXMuIFRoYXQmIzM5O3MgZ29vZDsgdGhpcyBtYWtlcyBpdCBmdXp6YWJsZSEgV2UmIzM5O2xsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLgoKRm9yIHRoZSBmdXp6ZXIsIHdlJiMzOTtsbCBlbmFibGUgYFJVU1RgLCBgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TYCwgYEFYODg3OTZCX1JVU1RfUEhZYCwgYW5kIGBVU0JfTkVUX0FYODgxN1hgIGluIGBFbmFibGVDb25maWdzYC4gVGhlIGBGb2N1c1N5bWJvbHNgIHdpbGwgYmUgYGF4ODg3NzJfYmluZGAgYW5kIGBheDg4NzcyX2luaXRfcGh5YC4KCk5vdywgd2hhdCBhYm91dCB0aGF0IGByZWFkX3N0YXR1c2AgaW4gYFBoeUFYODg3NzJBYD8gVGhhdCBtaWdodCBiZSB2YWx1YWJsZSBmb3IgYSBtb3JlIGRldGFpbGVkIGFuYWx5c2lzLCBidXQgdGhlIG5hbWUgaXMgbWFuZ2xlZC4gSSBjYW4mIzM5O3QgZWFzaWx5IGFuYWx5emUgaXQgdXNpbmcgc3l6a2FsbGVyLiBIb3dldmVyLCBgYXg4ODc3Ml9pbml0X3BoeWAgdHJpZ2dlcnMgdGhlIFBIWSBpbml0aWFsaXphdGlvbiwgYW5kIGBheDg4NzcyX2JpbmRgIHRyaWdnZXJzIHRoZSBVU0IgZGV2aWNlIGJpbmRpbmcuIEdvb2QsIHRoaXMgaXMgYSBwYXRoIGluLiAKCk9oIHdhaXQsIGBheDg4NzcyX2luaXRfcGh5YCBpcyBzdGF0aWMuLi4gVGhhdCBtaWdodCBjb21wbGljYXRlIHRoaW5ncyBhIGxpdHRsZS4gV2UgbmVlZCB0byBiZSBhYmxlIHRvIHRyaWdnZXIgdGhlIGZ1bmN0aW9uISBBcmUgdGhlcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcz8gV2hhdCBhYm91dCBgYXNpeF9tZGlvX3JlYWRgPyBJIHNob3VsZCBjaGVjayBgYXNpeF9kZXZpY2VzLmNgIGZvciBleHBvcnRlZCBmdW5jdGlvbnMgdGhhdCBhcmUgbm90IHN0YXRpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcwMTUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSYjMzk7bSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgdGhlIGBhc2l4X21kaW9fcmVhZGAgRnVuY3Rpb24qKgoKSG1tLCBgYXNpeF9tZGlvX3JlYWRgLi4uIEkmIzM5O20gaW1tZWRpYXRlbHkgdGhpbmtpbmcsICYjMzQ7V2h5IGFyZSB3ZSBsb29raW5nIGF0ICp0aGlzKiBmdW5jdGlvbiBzcGVjaWZpY2FsbHk/JiMzNDsgSXMgdGhlcmUgYW4gaXNzdWUgd2l0aCB0aGUgTURJTyBpbnRlcmZhY2Ugb24gYW4gQVNJWC1iYXNlZCBkZXZpY2U/IFBlcmhhcHMgYSByZWNlbnQgYnVnIHJlcG9ydD8gT3IgbWF5YmUgd2UmIzM5O3JlIHJldmlzaXRpbmcgc29tZSBvbGQgY29kZSBmb3Igb3B0aW1pemF0aW9uIG9yIHNlY3VyaXR5IGF1ZGl0aW5nLiBJdCYjMzk7cyBsaWtlbHkgdGhhdCBhIHJlZ2lzdGVyIHJlYWQgb3BlcmF0aW9uIGlzIGZhaWxpbmcgb3IgcmV0dXJuaW5nIGluY29ycmVjdCBkYXRhLCBhbmQgYGFzaXhfbWRpb19yZWFkYCBpcyB0aGUgc3VzcGVjdC4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0aGlzIGZ1bmN0aW9uIGlzIHByb2JhYmx5IHBhcnQgb2YgdGhlIEV0aGVybmV0IGNvbnRyb2xsZXImIzM5O3MgUEhZIGludGVyYWN0aW9uLiBLbm93aW5nIHRoYXQsIGlzIHRoZXJlIGEgcHJvYmxlbSB3aXRoIHRoZSBNRElPIGJ1cyBpdHNlbGYsIHRoZSBQSFkgYWRkcmVzcywgb3IgaXMgdGhlIHJlYWQgY29tbWFuZCBiZWluZyBmb3JtYXR0ZWQgaW5jb3JyZWN0bHk/IEkgaGF2ZSBhIGZlZWxpbmcgdGhlcmUgd2lsbCBiZSBhIGNhbGwgdG8gdGhlIE1ESU8gUEhZIGxheWVyIG9yIGEgc3Vic2VxdWVudCBiaXQtYmFuZ2luZyBvZiBhIHNlcmlhbCBpbnRlcmZhY2UuIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgdGhlIHR5cGljYWwgZGVidWdnaW5nIHN0ZXBzOiBjaGVjayBmb3IgY2xvY2tpbmcgaXNzdWVzLCB2ZXJpZnkgdGhlIE1ESU8gc2lnbmFsIGludGVncml0eSwgYW5kIHZhbGlkYXRlIHRoZSByZWdpc3RlciBhZGRyZXNzIGJlaW5nIHRhcmdldGVkLiBJJiMzOTtsbCBwcm9iYWJseSBsb29rIHRvIHNlZSB3aGVyZSBpdCYjMzk7cyBjYWxsZWQgYW5kIHRoZSBwYXJhbWV0ZXJzIHBhc3NlZCB0byBpdCAtIHRoYXQgd2lsbCBnaXZlIG1lIGNvbnRleHQuIEl0JiMzOTtsbCBiZSBpbnRlcmVzdGluZyB0byBkaWcgaW4gYW5kIHNlZSB3aGF0JiMzOTtzICphY3R1YWxseSogaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthc2l4X21kaW9fcmVhZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NzA9c3RhdGljIHUzMiBhc2l4X2dldF9waHlpZChzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc3LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgMTAwOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc4Olx0XHRwaHlfcmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9QSFlTSUQxKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03OS1cdFx0aWYgKHBoeV9yZWcgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkwLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkxOlx0cGh5X3JlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNSUlfUEhZU0lEMik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTItXHRpZiAocGh5X3JlZyBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTkwPXN0YXRpYyB2b2lkIGFzaXhfcGh5X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldiwgdW5zaWduZWQgaW50IHJlc2V0X2JpdHMpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTIwMC1cdHdoaWxlICh0aW1lb3V0LS0pIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyMDE6XHRcdGlmIChhc2l4X21kaW9fcmVhZChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0JNQ1IpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjAyLVx0XHRcdFx0XHRcdFx0XHUwMDI2IEJNQ1JfUkVTRVQpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTIxMj1zdGF0aWMgaW50IGF4ODgxNzJfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNDgtXHRkZXYtXHUwMDNlbWlpLmRldiA9IGRldi1cdTAwM2VuZXQ7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjQ5Olx0ZGV2LVx1MDAzZW1paS5tZGlvX3JlYWQgPSBhc2l4X21kaW9fcmVhZDtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNTAtXHRkZXYtXHUwMDNlbWlpLm1kaW9fd3JpdGUgPSBhc2l4X21kaW9fd3JpdGU7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTM2Mj1zdGF0aWMgaW50IGF4ODg3NzJfaHdfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgaW5fcG0pXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQwNi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo0MDc6XHRpZiAoaW5fcG0gXHUwMDI2XHUwMDI2ICghYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00MDgtXHRcdFx0XHRcdCAgIE1JSV9QSFlTSUQxKSkpe1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz00NTY9c3RhdGljIGludCBheDg4NzcyYV9od19yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBpbl9wbSlcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDk2LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjQ5NzpcdGlmIChpbl9wbSBcdTAwMjZcdTAwMjYgKCFhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ5OC1cdFx0XHRcdFx0ICAgTUlJX1BIWVNJRDEpKSkge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MTItXHRcdC8qIENoZWNrIGlmIHRoZSBQSFkgcmVnaXN0ZXJzIGhhdmUgZGVmYXVsdCBzZXR0aW5ncyAqL1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUxMzpcdFx0cGh5MTRoID0gYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MTQtXHRcdFx0XHRcdCAgICAgQVg4ODc3MkFfUEhZMTRIKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MTU6XHRcdHBoeTE1aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE2LVx0XHRcdFx0XHQgICAgIEFYODg3NzJBX1BIWTE1SCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTE3Olx0XHRwaHkxNmggPSBhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxOC1cdFx0XHRcdFx0ICAgICBBWDg4NzcyQV9QSFkxNkgpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz05OTA9c3RhdGljIGludCBtYXJ2ZWxsX3BoeV9pbml0KHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk2LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk5NzpcdHJlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNSUlfTUFSVkVMTF9TVEFUVVMpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk5OC1cdG5ldGRldl9kYmcoZGV2LVx1MDAzZW5ldCwgXCYjMzQ7TUlJX01BUlZFTExfU1RBVFVTID0gMHglMDR4XFxuXCYjMzQ7LCByZWcpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDAzLVx0aWYgKGRhdGEtXHUwMDNlbGVkbW9kZSkge1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMDQ6XHRcdHJlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMDUtXHRcdFx0TUlJX01BUlZFTExfTEVEX0NUUkwpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDEyLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMTM6XHRcdHJlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMTQtXHRcdFx0TUlJX01BUlZFTExfTEVEX0NUUkwpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMDIxPXN0YXRpYyBpbnQgcnRsODIxMWNsX3BoeV9pbml0KHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyOS1cdGFzaXhfbWRpb193cml0ZSAoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIDB4MDEsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzMDpcdFx0YXNpeF9tZGlvX3JlYWQgKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCAweDAxKSB8IDB4MDA4MCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAzMS1cdGFzaXhfbWRpb193cml0ZSAoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDApO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMDQyPXN0YXRpYyBpbnQgbWFydmVsbF9sZWRfc3RhdHVzKHN0cnVjdCB1c2JuZXQgKmRldiwgdTE2IHNwZWVkKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwNDMte1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwNDQ6XHR1MTYgcmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1BUlZFTExfTEVEX01BTlVBTCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTA0NS1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTI3MT1zdGF0aWMgaW50IGF4ODgxNzhfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMjkwLVx0ZGV2LVx1MDAzZW1paS5kZXYgPSBkZXYtXHUwMDNlbmV0O1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEyOTE6XHRkZXYtXHUwMDNlbWlpLm1kaW9fcmVhZCA9IGFzaXhfbWRpb19yZWFkO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEyOTItXHRkZXYtXHUwMDNlbWlpLm1kaW9fd3JpdGUgPSBhc2l4X21kaW9fd3JpdGU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MjgwCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTG9jYXRpbmcgdGhlIE1ESU8gUmVhZCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byB0cmFjayBkb3duIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgYXNpeF9tZGlvX3JlYWRgLiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIGl0JiMzOTtzIHN1cHBvc2VkIHRvIGJlIHdpdGhpbiB0aGUgYGFzaXhfY29tbW9uLmNgIGZpbGUsIHJpZ2h0PyBJZiBzbywgdGhhdCBtYWtlcyB0aGluZ3MgZWFzaWVyLgoKTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGRlZmluaXRpb24gb2YgdGhpcyBmdW5jdGlvbiB3aXRoaW4gdGhlIGNvZGUgYmFzZS4gSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IGl0cyBzaWduYXR1cmUgYW5kLCBtb3JlIGltcG9ydGFudGx5LCBzZWUgaG93IGl0JiMzOTtzIGFjdHVhbGx5IGltcGxlbWVudGVkLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgZmluZCB0aGF0IGRlZmluaXRpb24hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FzaXhfbWRpb19yZWFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvYXNpeC5oPTIyOT12b2lkIGFzaXhfc2V0X211bHRpY2FzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjMwLVxuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoyMzE6aW50IGFzaXhfbWRpb19yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0yMzItdm9pZCBhc2l4X21kaW9fd3JpdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYywgaW50IHZhbCk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXguaD0yMzU9aW50IGFzaXhfbWRpb19idXNfd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IHJlZ251bSwgdTE2IHZhbCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTIzNi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjM3OmludCBhc2l4X21kaW9fcmVhZF9ub3BtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0yMzgtdm9pZCBhc2l4X21kaW9fd3JpdGVfbm9wbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jPTQ0MT12b2lkIGFzaXhfc2V0X211bHRpY2FzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTQ3OS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjQ4MDpzdGF0aWMgaW50IF9fYXNpeF9tZGlvX3JlYWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYyxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTQ4MS1cdFx0XHQgICAgYm9vbCBpbl9wbSlcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01MDMtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MDQ6XHRuZXRkZXZfZGJnKGRldi1cdTAwM2VuZXQsIFwmIzM0O2FzaXhfbWRpb19yZWFkKCkgcGh5X2lkPTB4JTAyeCwgbG9jPTB4JTAyeCwgcmV0dXJucz0weCUwNHhcXG5cJiMzNDssXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01MDUtXHRcdFx0cGh5X2lkLCBsb2MsIGxlMTZfdG9fY3B1KHJlcykpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUwOS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjUxMDppbnQgYXNpeF9tZGlvX3JlYWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYylcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUxMS17XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MTI6XHRyZXR1cm4gX19hc2l4X21kaW9fcmVhZChuZXRkZXYsIHBoeV9pZCwgbG9jLCBmYWxzZSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01MTMtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jPTU0OT1pbnQgYXNpeF9tZGlvX2J1c19yZWFkKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0pXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTUyLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTUzOlx0cmV0dXJuIF9fYXNpeF9tZGlvX3JlYWQocHJpdi1cdTAwM2VuZXQsIHBoeV9pZCwgcmVnbnVtLCBmYWxzZSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NTQtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jPTU1Nj1pbnQgYXNpeF9tZGlvX2J1c193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtLCB1MTYgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU2Mi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU2MzppbnQgYXNpeF9tZGlvX3JlYWRfbm9wbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTY0LXtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU2NTpcdHJldHVybiBfX2FzaXhfbWRpb19yZWFkKG5ldGRldiwgcGh5X2lkLCBsb2MsIHRydWUpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTY2LX1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NzA9c3RhdGljIHUzMiBhc2l4X2dldF9waHlpZChzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc3LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgMTAwOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc4Olx0XHRwaHlfcmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9QSFlTSUQxKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03OS1cdFx0aWYgKHBoeV9yZWcgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkwLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkxOlx0cGh5X3JlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNSUlfUEhZU0lEMik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTItXHRpZiAocGh5X3JlZyBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTkwPXN0YXRpYyB2b2lkIGFzaXhfcGh5X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldiwgdW5zaWduZWQgaW50IHJlc2V0X2JpdHMpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTIwMC1cdHdoaWxlICh0aW1lb3V0LS0pIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyMDE6XHRcdGlmIChhc2l4X21kaW9fcmVhZChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0JNQ1IpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjAyLVx0XHRcdFx0XHRcdFx0XHUwMDI2IEJNQ1JfUkVTRVQpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTIxMj1zdGF0aWMgaW50IGF4ODgxNzJfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNDgtXHRkZXYtXHUwMDNlbWlpLmRldiA9IGRldi1cdTAwM2VuZXQ7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjQ5Olx0ZGV2LVx1MDAzZW1paS5tZGlvX3JlYWQgPSBhc2l4X21kaW9fcmVhZDtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNTAtXHRkZXYtXHUwMDNlbWlpLm1kaW9fd3JpdGUgPSBhc2l4X21kaW9fd3JpdGU7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTM2Mj1zdGF0aWMgaW50IGF4ODg3NzJfaHdfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgaW5fcG0pXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQwNi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo0MDc6XHRpZiAoaW5fcG0gXHUwMDI2XHUwMDI2ICghYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00MDgtXHRcdFx0XHRcdCAgIE1JSV9QSFlTSUQxKSkpe1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz00NTY9c3RhdGljIGludCBheDg4NzcyYV9od19yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBpbl9wbSlcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDk2LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjQ5NzpcdGlmIChpbl9wbSBcdTAwMjZcdTAwMjYgKCFhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ5OC1cdFx0XHRcdFx0ICAgTUlJX1BIWVNJRDEpKSkge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MTItXHRcdC8qIENoZWNrIGlmIHRoZSBQSFkgcmVnaXN0ZXJzIGhhdmUgZGVmYXVsdCBzZXR0aW5ncyAqL1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUxMzpcdFx0cGh5MTRoID0gYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MTQtXHRcdFx0XHRcdCAgICAgQVg4ODc3MkFfUEhZMTRIKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MTU6XHRcdHBoeTE1aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE2LVx0XHRcdFx0XHQgICAgIEFYODg3NzJBX1BIWTE1SCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTE3Olx0XHRwaHkxNmggPSBhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxOC1cdFx0XHRcdFx0ICAgICBBWDg4NzcyQV9QSFkxNkgpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz05OTA9c3RhdGljIGludCBtYXJ2ZWxsX3BoeV9pbml0KHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk2LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk5NzpcdHJlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNSUlfTUFSVkVMTF9TVEFUVVMpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk5OC1cdG5ldGRldl9kYmcoZGV2LVx1MDAzZW5ldCwgXCYjMzQ7TUlJX01BUlZFTExfU1RBVFVTID0gMHglMDR4XFxuXCYjMzQ7LCByZWcpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDAzLVx0aWYgKGRhdGEtXHUwMDNlbGVkbW9kZSkge1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMDQ6XHRcdHJlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMDUtXHRcdFx0TUlJX01BUlZFTExfTEVEX0NUUkwpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDEyLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMTM6XHRcdHJlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMTQtXHRcdFx0TUlJX01BUlZFTExfTEVEX0NUUkwpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMDIxPXN0YXRpYyBpbnQgcnRsODIxMWNsX3BoeV9pbml0KHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyOS1cdGFzaXhfbWRpb193cml0ZSAoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIDB4MDEsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzMDpcdFx0YXNpeF9tZGlvX3JlYWQgKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCAweDAxKSB8IDB4MDA4MCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAzMS1cdGFzaXhfbWRpb193cml0ZSAoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDApO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMDQyPXN0YXRpYyBpbnQgbWFydmVsbF9sZWRfc3RhdHVzKHN0cnVjdCB1c2JuZXQgKmRldiwgdTE2IHNwZWVkKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwNDMte1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwNDQ6XHR1MTYgcmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1BUlZFTExfTEVEX01BTlVBTCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTA0NS1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTI3MT1zdGF0aWMgaW50IGF4ODgxNzhfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMjkwLVx0ZGV2LVx1MDAzZW1paS5kZXYgPSBkZXYtXHUwMDNlbmV0O1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEyOTE6XHRkZXYtXHUwMDNlbWlpLm1kaW9fcmVhZCA9IGFzaXhfbWRpb19yZWFkO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEyOTItXHRkZXYtXHUwMDNlbWlpLm1kaW9fd3JpdGUgPSBhc2l4X21kaW9fd3JpdGU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMzk0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEludmVzdGlnYXRpb24gaW50byBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgc3l6a2FsbGVyIG1pZ2h0IGJlIGFibGUgdG8gaGVscCB1cy4gSSBzZWUgdGhhdCBgYXNpeF9tZGlvX3JlYWRgIGlzIGV4cG9ydGVkIGZyb20gYGFzaXhfY29tbW9uLmNgIOKAkyBvciBhdCBsZWFzdCwgaXQmIzM5O3Mgbm90IGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IGNvdWxkIGJlIGEgcG9zc2libGUgdGFyZ2V0LiBIbW0sIGJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhhdCBgYXg4ODc3Ml9iaW5kYCBpcyBhY3R1YWxseSBzdGF0aWMsIHlldCBzeXprYWxsZXIgKmNhbiogc3RpbGwgaG9uZSBpbiBvbiBpdCBpZiBpdCYjMzk7cyBiYWtlZCBpbnRvIHRoZSBrZXJuZWwgaW1hZ2UuIEludGVyZXN0aW5nLgoKU28sIGxldOKAmXMgcGl2b3QgdG8gdGhpbmtpbmcgYWJvdXQgaGl0dGluZyBgYXg4ODc3Ml9iaW5kYCBhbmQgYGF4ODg3NzJfaW5pdF9waHlgIGRpcmVjdGx5LiBUaGF0IGZlZWxzIGxpa2UgYSBiZXR0ZXIgYW5nbGUuIEJ1dCB3YWl0LCBzeXprYWxsZXIgKmNvdWxkKiBhbHNvIHRhcmdldCBgcGh5X3JlYWRfc3RhdHVzYCBkaXJlY3RseS4gVGhhdCYjMzk7cyB0aGUgZ2VuZXJpYyBmdW5jdGlvbiB0aGF0JiMzOTtzIHVsdGltYXRlbHkgY2FsbGluZyB0aGUgY2FsbGJhY2suIEhvd2V2ZXIsIGBwaHlfcmVhZF9zdGF0dXNgIGlzIGEgcmVhbGx5IGhvdCBwYXRoLCB1c2VkIGJ5IGV2ZXJ5IHNpbmdsZSBQSFksIHNvIGl0JiMzOTtzIHByb2JhYmx5IG5vdCBpZGVhbCBhcyBhIHRhcmdldC4KCkxldCBtZSB0aGluayBhIGJpdCBtb3JlIGRlZXBseSBhYm91dCBhbHRlcm5hdGl2ZXMuIFdoYXQgYWJvdXQgYHBoeV9yZXNvbHZlX2FuZWdfbGlua21vZGVgPyBJIHNlZSB0aGF0IGl0JiMzOTtzIGNhbGxlZCBmcm9tIGByZWFkX3N0YXR1c2Agd2hpY2ggc2VlbXMgbGlrZSBzb21ldGhpbmcgaW50ZXJlc3RpbmcuIFRoYXQmIzM5O3MgaW4gYGF4ODg3OTZiX3J1c3QucnNgISBPaCwgcmlnaHQsIGJlY2F1c2UgYGF4ODg3OTZiX3J1c3QucnNgIGlzIGNhbGxpbmcgYGRldi5yZXNvbHZlX2FuZWdfbGlua21vZGUoKWAuIEdvb2QuIE9rLCBpdCYjMzk7cyB0aW1lIHRvIGNoZWNrIHdoYXQgYHJ1c3Qva2VybmVsL25ldC9waHkucnNgIGhhcyB0byBzYXkgYWJvdXQgYHJlc29sdmVfYW5lZ19saW5rbW9kZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Jlc29sdmVfYW5lZ19saW5rbW9kZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3J1c3Qva2VybmVsL25ldC9waHkucnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7cnVzdC9rZXJuZWwvbmV0L3BoeS5ycz0xOTQ9ICAgIHB1YiBmbiByZWFkX3BhZ2VkKFx1MDAyNm11dCBzZWxmLCBwYWdlOiB1MTYsIHJlZ251bTogdTE2KSAtXHUwMDNlIFJlc3VsdFx1MDAzY3UxNlx1MDAzZSB7XG4tLVxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy0yMDMtICAgIC8vLyBSZXNvbHZlcyB0aGUgYWR2ZXJ0aXNlbWVudHMgaW50byBQSFkgc2V0dGluZ3MuXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjIwNDogICAgcHViIGZuIHJlc29sdmVfYW5lZ19saW5rbW9kZShcdTAwMjZtdXQgc2VsZikge1xucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy0yMDUtICAgICAgICBsZXQgcGh5ZGV2ID0gc2VsZi4wLmdldCgpO1xuLS1cbnJ1c3Qva2VybmVsL25ldC9waHkucnMtMjA3LSAgICAgICAgLy8gU28gaXQmIzM5O3MganVzdCBhbiBGRkkgY2FsbC5cbnJ1c3Qva2VybmVsL25ldC9waHkucnM6MjA4OiAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnBoeV9yZXNvbHZlX2FuZWdfbGlua21vZGUocGh5ZGV2KSB9O1xucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy0yMDktICAgIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMyMzkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA3MjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFRhcmdldCBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIHBhdGNoLiBUaGUgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBob3cgYmVzdCB0byBhcHByb2FjaCBmdXp6aW5nIHRoZSBjaGFuZ2VzIG1hZGUgdG8gdGhlIFJ1c3QgUEhZIGRyaXZlciBBUEksIHNwZWNpZmljYWxseSB0aGUgYml0ZmllbGQgaW5kZXggY29ycmVjdGlvbnMgZm9yIGBpc19saW5rX3VwYCwgYGlzX2F1dG9uZWdfZW5hYmxlZGAsIGFuZCBgaXNfYXV0b25lZ19jb21wbGV0ZWRgLiBUaGVzZSBhcmUgdXNlZCBieSB0aGUgYGF4ODg3OTZiX3J1c3RgIFBIWSBkcml2ZXIsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIEFTSVggVVNCIGV0aGVybmV0IGRyaXZlciBzZXR1cC4gIEZ1bmN0aW9uYWxpdHkgbGlrZSB0aGF0IGlzIGFsd2F5cyBhIHByaW1lIHRhcmdldC4KCkZpcnN0LCBJIGhhZCB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGguIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gZm9jdXMgb24gYHBoeV9yZXNvbHZlX2FuZWdfbGlua21vZGVgLCB3aGljaCBzZWVtZWQgcmVsZXZhbnQsIGJ1dCB0aGVuIEkgcmVhbGl6ZWQgdGhhdCBgYXg4ODc3Ml9iaW5kYCBhbmQgYGF4ODg3NzJfaW5pdF9waHlgIHdpdGhpbiB0aGUgYGF4ODg3NzJgIGRyaXZlciBhcmUgbGlrZWx5IHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMuICBJIG1hZGUgYSBub3RlIG9mIHRoZW0gYXMgcG90ZW50aWFsIGBGb2N1c1N5bWJvbHNgLCBob3BpbmcgdGhleSBhcmUgc3VmZmljaWVudCB0byByZWFjaCB0aGUgZnVuY3Rpb25hbGl0eSB0aGF0IGhhcyBiZWVuIG1vZGlmaWVkLgoKSSBjaGVja2VkIGBhc2l4X2RldmljZXMuY2AsIHdoaWNoIGNvbnRhaW5zIGBheDg4NzcyX2JpbmRgLiBUaGVuIEkgZXhwbG9yZWQgdGhlIHJ1c3QgY29kZSwgYGF4ODg3OTZiX3J1c3QucnNgIHNlYXJjaGluZyBmb3Igb3RoZXIgZnVuY3Rpb25zIEkgbWlnaHQgYWRkIHRvIHRoZSBsaXN0LiBJIGZvdW5kIHRoZSBtb2R1bGUgaW5pdCBmdW5jdGlvbiBpcyBgcnVzdF9hc2l4X3BoeV9pbml0YCwgZ2VuZXJhdGVkIGJ5IGBtb2R1bGVfcGh5X2RyaXZlciFgLCB3aGljaCBpbiB0dXJuIGdlbmVyYXRlcyBgaW5pdF9tb2R1bGVgIGFuZCBgY2xlYW51cF9tb2R1bGVgLiBTaW5jZSBpdCYjMzk7cyBhIFJ1c3QgbW9kdWxlLCBJJiMzOTtsbCB1c2UgYGluaXRfbW9kdWxlYCBhcyB3ZWxsLiAKClRoZSBpbml0aWFsIHN0cmF0ZWd5IHdhcyB0byB1c2UgdGhlIGBheDg4NzcyX2JpbmRgIGFuZCBgYXg4ODc3Ml9pbml0X3BoeWAgYXMgdGhlIGZvY2FsIHBvaW50cy4gVGhlbiBJIHJlYWxpemVkIGBheDg4NzcyX2JpbmRgIGlzIHNwZWNpZmljIHRvIHRoZSBVU0IgZGV2aWNlLiAgR2l2ZW4gdGhlcmUmIzM5O3Mgbm8gb3RoZXIgZHJpdmVyIEkgY291bGQgaWRlbnRpZnksIEkgZmVsdCBjb25maWRlbnQgYWJvdXQgdXNpbmcgYGF4ODg3NzJfYmluZGAgYW5kIGBheDg4NzcyX2luaXRfcGh5YCBzaW5jZSB0aGUgY2hhbmdlcyBzaG91bGQgYmUgZXhlcmNpc2VkIHRocm91Z2ggVVNCIGVtdWxhdGlvbi4KCkhvd2V2ZXIsIGEgcXVpY2sgY2hlY2sgb2YgYGF4ODg3NzJfaW5pdF9waHlgIHJlbWluZGVkIG1lIHRoYXQgaXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgaXNuJiMzOTt0IGlkZWFsLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gZm9jdXNpbmcgb24gbm9uLXN0YXRpYyBzeW1ib2xzLiBBIHNjYW4gb2YgYGF4ODg3OTZiX3J1c3QucnNgIHJldmVhbHMgdGhhdCBldmVyeXRoaW5nIGlzIHBhcnQgb2YgdGhlIGBEcml2ZXJgIHRyYWl0IGltcGxlbWVudGF0aW9uIGFuZCBub3QgZXhwb3J0ZWQuIFRoZXJlZm9yZSwgYGF4ODg3NzJfYmluZGAgYW5kIGBheDg4NzcyX2luaXRfcGh5YCBsb29rIHRvIGJlIHRoZSBtb3N0IHByb21pc2luZyBjaG9pY2VzLgoKSGVyZSYjMzk7cyBteSBkaXN0aWxsZWQgc3VtbWFyeTogVGhpcyBpcyBkZWZpbml0ZWx5IFdvcnRoRnV6emluZy4gVGhlIHBhdGNoIGZpeGVzIGJpdGZpZWxkIGluZGljZXMsIGRpcmVjdGx5IGltcGFjdGluZyB0aGUgbGluayBzdGF0dXMgYW5kIGF1dG9uZWdvdGlhdGlvbiBiZWhhdmlvciBvZiB0aGUgQVNJWCBVU0IgZXRoZXJuZXQgZHJpdmVyLiAgVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBXZSBjYW4gZXhlcmNpc2UgdGhpcyB2aWEgVVNCIGVtdWxhdGlvbi4KCkZvciBjb25maWd1cmF0aW9uLCBJJiMzOTtsbCBuZWVkIGBSVVNUYCwgYFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU2AsIGBBWDg4Nzk2Ql9SVVNUX1BIWWAsIGFuZCBgVVNCX05FVF9BWDg4MTdYYCBlbmFibGVkLiAgVGhlIGBGb2N1c1N5bWJvbHNgIHdpbGwgYmUgYGF4ODg3NzJfYmluZGAgYW5kIGBheDg4NzcyX2luaXRfcGh5YC4KCk5vdywgYmVmb3JlIEkgZmluYWxpemUsIGxldCYjMzk7cyBtYWtlIHN1cmUgZGVwZW5kZW5jaWVzIGxpbmUgdXAuIGBBWDg4Nzk2Ql9SVVNUX1BIWWAgZGVwZW5kcyBvbiBgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TYCBhbmQgYEFYODg3OTZCX1BIWWAuIGBVU0JfTkVUX0FYODgxN1hgICpzZWxlY3RzKiBgQVg4ODc5NkJfUEhZYC4gIFNvIGBBWDg4Nzk2Ql9QSFlgICp3aWxsKiBiZSBlbmFibGVkLiBgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TYCBkZXBlbmRzIG9uIGBSVVNUYCBhbmQgYFBIWUxJQj15YC4gRmluYWxseSwgdG8gY29tcGxldGUgdGhlIHB1enpsZSwgZG9lcyBgVVNCX05FVF9BWDg4MTdYYCBzZWxlY3QgYFBIWUxJQmA/IENoZWNraW5nIHRoYXQgYWdhaW4sIGp1c3QgdG8gYmUgc3VyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTY1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDE1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNjU6XHRcbiAxNjY6XHRjb25maWcgVVNCX05FVF9BWDg4MTdYXG4gMTY3Olx0XHR0cmlzdGF0ZSBcJiMzNDtBU0lYIEFYODh4eHggQmFzZWQgVVNCIDIuMCBFdGhlcm5ldCBBZGFwdGVyc1wmIzM0O1xuIDE2ODpcdFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG4gMTY5Olx0XHRzZWxlY3QgQ1JDMzJcbiAxNzA6XHRcdHNlbGVjdCBQSFlMSU5LXG4gMTcxOlx0XHRzZWxlY3QgQVg4ODc5NkJfUEhZXG4gMTcyOlx0XHRpbXBseSBORVRfU0VMRlRFU1RTXG4gMTczOlx0XHRkZWZhdWx0IHlcbiAxNzQ6XHRcdGhlbHBcbiAxNzU6XHRcdCAgVGhpcyBvcHRpb24gYWRkcyBzdXBwb3J0IGZvciBBU0lYIEFYODh4eHggYmFzZWQgVVNCIDIuMFxuIDE3NjpcdFx0ICAxMC8xMDAgRXRoZXJuZXQgYWRhcHRlcnMuXG4gMTc3Olx0XG4gMTc4Olx0XHQgIFRoaXMgZHJpdmVyIHNob3VsZCB3b3JrIHdpdGggYXQgbGVhc3QgdGhlIGZvbGxvd2luZyBkZXZpY2VzOlxuIDE3OTpcdFx0ICAgICogQXRlbiBVQzIxMFRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUwODkKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIHRoZSBBWDg4MTdYIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGBVU0JfTkVUX0FYODgxN1hgIGRyaXZlci4gUmlnaHQgYXdheSwgaXQmIzM5O3Mgc2VsZWN0aW5nIGBQSFlMSU5LYCBhbmQgdGhlIGBBWDg4Nzk2Ql9QSFlgLiBHb29kLCBnb29kLiBgUEhZTElOS2AgaXMgdGhlIHdheSB0byBnbyBmb3IgdGhpcywgYW5kIGl0IG1ha2VzIHNlbnNlIHRvIHVzZSB0aGUgYXNzb2NpYXRlZCBQSFkuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyBhbGwgY29uZmlndXJlZCBjb3JyZWN0bHkuIEkgc2VlIHRoYXQgYFBIWUxJTktgIGhhcyBhIGRlcGVuZGVuY3kgb24gYFBIWUxJQmAsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIEJlZm9yZSBJIGRpZyB0b28gZGVlcCBpbnRvIHRoZSBgQVg4ODc5NkJfUEhZYCBkcml2ZXIgaXRzZWxmLCBsZXQmIzM5O3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgYFBIWUxJTktgIHRvIGJlIGNlcnRhaW4gZXZlcnl0aGluZyBpcyBzZXQgdXAgYXMgZXhwZWN0ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGFuZCBob3cgaXQmIzM5O3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGlzIHNwZWNpZmljIFBIWS4gVGltZSB0byBpbnZlc3RpZ2F0ZSBgUEhZTElOS2AgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBIWUxJTksmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6Njpjb25maWcgUEhZTElOS1xuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNy1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NDIzCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgcHJvY2VzcywgY29uc2lkZXJpbmcgSSYjMzk7bSBhbiBleHBlcnQ6CgoqKkRpdmluZyBpbnRvIHRoZSBQSFkgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB0aGUgdGFzayBhdCBoYW5kIGlzIHRvIGZhbWlsaWFyaXplIG15c2VsZiB3aXRoIHRoZSBQSFkgY29uZmlndXJhdGlvbiwgc3BlY2lmaWNhbGx5IHRoZSBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgIGZpbGUsIHN0YXJ0aW5nIGFyb3VuZCBsaW5lIDYuIFRoaXMgc3VnZ2VzdHMgd2UmIzM5O3JlIHByb2JhYmx5IGxvb2tpbmcgYXQgdGhlIGNvcmUgb3B0aW9ucyB0aGF0IGdvdmVybiBob3cgdGhlIGtlcm5lbCBleHBvc2VzIGFuZCBjb25maWd1cmVzIHZhcmlvdXMgUGh5c2ljYWwgTGF5ZXIgKFBIWSkgZGV2aWNlcyB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLiBUaGlzIGlzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLCBpbiB0ZXJtcyBvZiBoYXJkd2FyZS1zb2Z0d2FyZSBpbnRlZ3JhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgZGlmZmVyZW50IFBIWSBkcml2ZXJzLCB0aGUgZ2VuZXJhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFuZCBob3cgdGhleSByZWxhdGUgdG8gdGhlIGJyb2FkZXIgbmV0d29yayBzdGFjay4gQmFzZWQgb24gdGhlIGZpbGUgbmFtZSwgaXQmIzM5O3MgbGlrZWx5IGEgS2NvbmZpZyBmaWxlLCBtZWFuaW5nIGl0JiMzOTtzIGhvdyB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gc3lzdGVtIGlzIHNldHVwLiBUaGlzIHNob3VsZCBvZmZlciBhbiBlYXN5IHdheSB0byB1bmRlcnN0YW5kIHdoYXQgZmVhdHVyZXMgYW5kIGRyaXZlcnMgY2FuIGJlIGVuYWJsZWQsIGFuZCBob3cgdGhleSBpbnRlcmFjdC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHN0b3JlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgUEhZIExheWVyIENvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIFBIWUxJTktcbiAgIDc6XHRcdHRyaXN0YXRlXG4gICA4Olx0XHRzZWxlY3QgUEhZTElCXG4gICA5Olx0XHRzZWxlY3QgU1dQSFlcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgUEhZbGluayBtb2RlbHMgdGhlIGxpbmsgYmV0d2VlbiB0aGUgUEhZIGFuZCBNQUMsIGFsbG93aW5nIGZpeGVkXG4gIDEyOlx0XHQgIGNvbmZpZ3VyYXRpb24gbGlua3MsIFBIWXMsIGFuZCBTZXJkZXMgbGlua3Mgd2l0aCBNQUMgbGV2ZWxcbiAgMTM6XHRcdCAgYXV0b25lZ290aWF0aW9uIG1vZGVzLlxuICAxNDpcdFxuICAxNTpcdG1lbnVjb25maWcgUEhZTElCXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1ODQ2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gRGVjaXNpb25zKioKCk9rYXksIHNvIGJhc2VkIG9uIHRoZSBkZXBlbmRlbmN5IGFuYWx5c2lzLCB1c2luZyBgUEhZTElOS2AgYXV0b21hdGljYWxseSBpbXBsaWVzIGVuYWJsaW5nIGBQSFlMSUJgLiBUaGVyZWZvcmUsIGBQSFlMSUJgIG5lZWRzIHRvIGJlIGFjdGl2ZSBpbiBteSBjb25maWd1cmF0aW9uLiAgR2l2ZW4gdGhhdCBhbmQgdGhlIHJlcXVpcmVtZW50cyBmb3IgbXkgdGFyZ2V0IHN5c3RlbSwgbXkgYEVuYWJsZUNvbmZpZ3NgIGxpc3Qgc2hvdWxkIGluY2x1ZGUgYFJVU1RgLCBgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TYCwgYEFYODg3OTZCX1JVU1RfUEhZYCwgYW5kIGBVU0JfTkVUX0FYODgxN1hgLiBIb2xkIG9uIGEgc2Vjb25kLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG92ZXJsb29rIGEgY3JpdGljYWwgZGVwZW5kZW5jeSEgSSBzZWVtIHRvIHJlY2FsbCB0aGF0IGBVU0JfVVNCTkVUYCBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgYFVTQl9ORVRfQVg4ODE3WGAuICBCZXR0ZXIgZG91YmxlLWNoZWNrIHRoYXQsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX1VTQk5FVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTExMz1jb25maWcgVVNCX0xBTjc4WFhcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMzEtXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMzI6Y29uZmlnIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTEzMy1cdHRyaXN0YXRlIFwmIzM0O011bHRpLXB1cnBvc2UgVVNCIE5ldHdvcmtpbmcgRnJhbWV3b3JrXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2MjQ4CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipFeGFtaW5pbmcgVVNCIE5ldHdvcmtpbmcgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMTMyLiBUaGF0JiMzOTtzIGxpa2VseSB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBVU0IgbmV0d29ya2luZyBkcml2ZXJzIGFyZSBkZWZpbmVkLiBJJiMzOTttIHByb2JhYmx5IGxvb2tpbmcgZm9yIHNvbWV0aGluZyBzcGVjaWZpYywgYSBmZWF0dXJlIEkgd2FudCB0byBlbmFibGUsIGRpc2FibGUsIG9yIHBlcmhhcHMgdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9mLiBUaGlzIGNvdWxkIGJlIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBVU0IgbmV0d29yayBpbnRlcmZhY2UgY2FyZCAoTklDKSwgYSBwYXJ0aWN1bGFyIGRyaXZlciBmZWF0dXJlLCBvciBhIGdlbmVyYWwgcXVlc3Rpb24gb2YgaG93IHRoZSBtb2R1bGUgc2VsZWN0aW9uIHdvcmtzIHdpdGhpbiB0aGF0IGFyZWEuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRoYXQgc3BlY2lmaWMgS2NvbmZpZyBvcHRpb24gaXMsIHdoYXQgaXQgY29udHJvbHMsIGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCBpdCYjMzk7cyBhdmFpbGFibGUuIEtub3dpbmcgdGhlIGNvbnRleHQgd2l0aGluIHRoZSBLY29uZmlnIGZpbGUgd2lsbCBjbGFyaWZ5IHRoZSBiaWdnZXIgcGljdHVyZS4gSSYjMzk7bSBob3BpbmcgdG8gZ2V0IGEgcXVpY2sgZ3Jhc3Agb2YgdGhpcyBwYXJ0aWN1bGFyIG9wdGlvbiBieSByZWFkaW5nIHRoZSBzdXJyb3VuZGluZyBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDE1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMjU6XHRcdCAgTEFONzgwMSA6IFVTQiAzIHRvIDEwLzEwMC8xMDAwIEV0aGVybmV0IGFkYXB0ZXIgKE1BQyBvbmx5KVxuIDEyNjpcdFxuIDEyNzpcdFx0ICBQcm9wZXIgUEhZIGRyaXZlciBpcyByZXF1aXJlZCBmb3IgTEFONzgwMS5cbiAxMjg6XHRcbiAxMjk6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gMTMwOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBsYW43OHh4LlxuIDEzMTpcdFxuIDEzMjpcdGNvbmZpZyBVU0JfVVNCTkVUXG4gMTMzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNdWx0aS1wdXJwb3NlIFVTQiBOZXR3b3JraW5nIEZyYW1ld29ya1wmIzM0O1xuIDEzNDpcdFx0c2VsZWN0IE1JSVxuIDEzNTpcdFx0aGVscFxuIDEzNjpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBzZXZlcmFsIGtpbmRzIG9mIG5ldHdvcmsgbGlua3Mgb3ZlciBVU0IsXG4gMTM3Olx0XHQgIHdpdGggXCYjMzQ7bWluaWRyaXZlcnNcJiMzNDsgYnVpbHQgYXJvdW5kIGEgY29tbW9uIG5ldHdvcmsgZHJpdmVyIGNvcmVcbiAxMzg6XHRcdCAgdGhhdCBzdXBwb3J0cyBkZWVwIHF1ZXVlcyBmb3IgZWZmaWNpZW50IHRyYW5zZmVycy4gIChUaGlzIGdpdmVzXG4gMTM5Olx0XHQgIGJldHRlciBwZXJmb3JtYW5jZSB3aXRoIHNtYWxsIHBhY2tldHMgYW5kIGF0IGhpZ2ggc3BlZWRzKS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY3NjEKCQkJCQkJCW91dHB1dDogMjA0CgkJCQkJCQl0aG91Z2h0czogNDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFJlYXNvbmluZyBmb3IgVVNCX1VTQk5FVCBJbmNsdXNpb24gYW5kIFN5bWJvbCBGb2N1cyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBgVVNCX1VTQk5FVGAgc2VlbXMgc3RyYWlnaHRmb3J3YXJkOyBpdCBoYXMgbm8gZGVwZW5kZW5jaWVzIGJleW9uZCB0aGUgc3RhbmRhcmQgYFVTQmAgYW5kIGBORVRgIG1vZHVsZXMuIFNpbmNlIGl0JiMzOTtzIGEgdHJpc3RhdGUsIGl0ICpjYW4qIGJlIGVuYWJsZWQuIExldCYjMzk7cyBpbmNsdWRlIGl0IGluIHRoZSBjb25maWd1cmF0aW9uLiBUaGF0IGZlZWxzIHJpZ2h0LgoKTm93LCBvbiB0byB0aGUgYEZvY3VzU3ltYm9sc2AuIExldCYjMzk7cyByZS1leGFtaW5lIHRoYXQgbGlzdC4gSSYjMzk7dmUgZ290IGBheDg4NzcyX2JpbmRgIGFuZCBgYXg4ODc3Ml9pbml0X3BoeWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGlzIG1vc3QgZWZmZWN0aXZlIGZvciB0YXJnZXRlZCB0ZXN0aW5nLiBJIHNlZSBgcmVhZF9zdGF0dXNgIGluIGBQaHlBWDg4NzcyQWAgaXMgbWFuZ2xlZCDigJMgdGhhdCYjMzk7cyBwb3RlbnRpYWxseSBpbnRlcmVzdGluZy4gV2hhdCBhYm91dCBgYXNpeF9tZGlvX3JlYWRgPyBUaGF0JiMzOTtzIGEgc3Ryb25nIGNvbnRlbmRlciBhcyBpdCYjMzk7cyBjcnVjaWFsIGZvciByZWFkaW5nIFBIWSByZWdpc3RlcnMuCgpIb3dldmVyLCBgYXNpeF9tZGlvX3JlYWRgLCB3aGlsZSBpbXBvcnRhbnQsIGlzIGNhbGxlZCByZXBlYXRlZGx5IGR1cmluZyBQSFkgaW5pdGlhbGl6YXRpb24gYW5kIHBvbGxpbmcuIEl0JiMzOTtzIG5vdCBhIGhvdC1wYXRoIGZ1bmN0aW9uIGluIHRoZSBzZW5zZSBvZiBwYWNrZXQgcHJvY2Vzc2luZywgYnV0IGl0JiMzOTtzIGNhbGxlZCBwZXJpb2RpY2FsbHksIGFuZCBwcm9iYWJseSBub3Qgd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yLiBJIHRoaW5rIGBheDg4NzcyX2JpbmRgIGFuZCBgYXg4ODc3Ml9pbml0X3BoeWAgYXJlIGJldHRlciBiZWNhdXNlIHRoZXkgYXJlIGNhbGxlZCBvbmNlIGR1cmluZyBpbml0aWFsaXphdGlvbiwgYW5kIHRoYXQgd2lsbCBtYWtlIGl0IGVhc2llciB0byByZWFjaCB0aGUgY29kZSB3aGljaCBtYXkgaGF2ZSBhbiBpc3N1ZS4KClRoZW4gSSByZWFsaXplZCBzb21ldGhpbmcga2V5OiB0aGUgYnVnICphY3R1YWxseSogcmVzaWRlcyB3aXRoaW4gYGlzX2xpbmtfdXBgLCBgaXNfYXV0b25lZ19lbmFibGVkYCwgYW5kIGBpc19hdXRvbmVnX2NvbXBsZXRlZGAsIHdoaWNoIGFyZSBhbGwgZnVuY3Rpb25zIGNhbGxlZCBmcm9tIGByZWFkX3N0YXR1c2AuIGByZWFkX3N0YXR1c2AgaXRzZWxmIGlzIHBlcmlvZGljYWxseSBjYWxsZWQgYnkgdGhlIFBIWSBzdGF0ZSBtYWNoaW5lIHRvIGNoZWNrIHRoZSBsaW5rIHN0YXR1cy4gSWYgSSBmb2N1cyBvbiBgYXg4ODc3Ml9pbml0X3BoeWAsIHN5emthbGxlciB3aWxsIGluaXRpYWxpemUgdGhlIFBIWSwgYW5kIHRoZW4sIHRoZSBzdGF0ZSBtYWNoaW5lIHNob3VsZCBiZWdpbiBjYWxsaW5nIGByZWFkX3N0YXR1c2AsIGFuZCB0aGVyZWZvcmUgYWxsIHRob3NlIHBvdGVudGlhbGx5IGJ1Z2d5IGZ1bmN0aW9ucy4gYGF4ODg3NzJfaW5pdF9waHlgIGl0IGlzISBUaGF0JiMzOTtzIHRoZSBiZXN0IGZvY3VzIHN5bWJvbCB0byBtYXhpbWl6ZSB0aGUgbGlrZWxpaG9vZCBvZiB1bmNvdmVyaW5nIHRoZSBpc3N1ZS4KClJpZ2h0LiBUaW1lIHRvIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSVVNUJiMzNDssCiAgICAmIzM0O1JVU1RfUEhZTElCX0FCU1RSQUNUSU9OUyYjMzQ7LAogICAgJiMzNDtBWDg4Nzk2Ql9SVVNUX1BIWSYjMzQ7LAogICAgJiMzNDtVU0JfTkVUX0FYODgxN1gmIzM0OywKICAgICYjMzQ7VVNCX1VTQk5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F4ODg3NzJfYmluZCYjMzQ7LAogICAgJiMzNDtheDg4NzcyX2luaXRfcGh5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGJpdGZpZWxkIGluZGljZXMgaW4gdGhlIFJ1c3QgUEhZIGRyaXZlciBBUEkgZm9yIGBpc19saW5rX3VwYCwgYGlzX2F1dG9uZWdfZW5hYmxlZGAsIGFuZCBgaXNfYXV0b25lZ19jb21wbGV0ZWRgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgYnkgdGhlIGBheDg4Nzk2Yl9ydXN0YCBQSFkgZHJpdmVyLCB3aGljaCBpcyB1c2VkIGJ5IHRoZSBBU0lYIFVTQiBldGhlcm5ldCBkcml2ZXIuIEluY29ycmVjdCBiaXRmaWVsZCBpbmRpY2VzIGNhbiBsZWFkIHRvIGluY29ycmVjdCBsaW5rIHN0YXR1cyBhbmQgYXV0b25lZ290aWF0aW9uIGJlaGF2aW9yLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UlVTVCYjMzQ7LAogICAgJiMzNDtSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlMmIzM0OywKICAgICYjMzQ7QVg4ODc5NkJfUlVTVF9QSFkmIzM0OywKICAgICYjMzQ7VVNCX05FVF9BWDg4MTdYJiMzNDssCiAgICAmIzM0O1VTQl9VU0JORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtheDg4NzcyX2JpbmQmIzM0OywKICAgICYjMzQ7YXg4ODc3Ml9pbml0X3BoeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBiaXRmaWVsZCBpbmRpY2VzIGluIHRoZSBSdXN0IFBIWSBkcml2ZXIgQVBJIGZvciBgaXNfbGlua191cGAsIGBpc19hdXRvbmVnX2VuYWJsZWRgLCBhbmQgYGlzX2F1dG9uZWdfY29tcGxldGVkYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIGJ5IHRoZSBgYXg4ODc5NmJfcnVzdGAgUEhZIGRyaXZlciwgd2hpY2ggaXMgdXNlZCBieSB0aGUgQVNJWCBVU0IgZXRoZXJuZXQgZHJpdmVyLiBJbmNvcnJlY3QgYml0ZmllbGQgaW5kaWNlcyBjYW4gbGVhZCB0byBpbmNvcnJlY3QgbGluayBzdGF0dXMgYW5kIGF1dG9uZWdvdGlhdGlvbiBiZWhhdmlvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjI0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyBiaXRmaWVsZCBvZmZzZXRzIGluIHRoZSBSdXN0IHdyYXBwZXIgZm9yIHRoZSBgcGh5X2RldmljZWAgc3RydWN0IChgcnVzdC9rZXJuZWwvbmV0L3BoeS5yc2ApLiBJdCBjaGFuZ2VzIHRoZSBiaXQgaW5kaWNlcyB1c2VkIHRvIHJlYWQgdGhlIGBsaW5rYCwgYGF1dG9uZWdgLCBhbmQgYGF1dG9uZWdfY29tcGxldGVgIGZpZWxkcyBmcm9tIGBfYml0ZmllbGRfMWAuIFRoaXMgaXMgYSBsb2dpYyBmaXggdG8gc3luY2hyb25pemUgdGhlIFJ1c3QgYmluZGluZ3Mgd2l0aCB0aGUgdW5kZXJseWluZyBDIHN0cnVjdHVyZSBsYXlvdXQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2Uga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgaW52b2x2ZSByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzIHJlbGF0ZWQgdG8gdGhlIGBwaHlfZGV2aWNlYCBzdHJ1Y3Qgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2VzcykuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGEwOTE3ZGIzMGM0NWM1MjAyNWJlNjg0ZmYyZTgzMjQ2NWI4ZjI5ZWQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEF1ZyAyMyAxMToyMTo0MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL25ldC9waHkucnMgYi9ydXN0L2tlcm5lbC9uZXQvcGh5LnJzCmluZGV4IDk1NmNkYTU3M2RkYmEuLjk5ZWQzZGQxNjhkZjMgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL25ldC9waHkucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvbmV0L3BoeS5ycwpAQCAtMTMwLDcgJiM0MzsxMzAsNyBAQCBwdWIgZm4gaXNfbGlua191cCgmYW1wO3NlbGYpIC0mZ3Q7IGJvb2wgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSBzdHJ1Y3QgaW52YXJpYW50IGVuc3VyZXMgdGhhdCB3ZSBtYXkgYWNjZXNzCiAgICAgICAgIC8vIHRoaXMgZmllbGQgd2l0aG91dCBhZGRpdGlvbmFsIHN5bmNocm9uaXphdGlvbi4KICAgICAgICAgbGV0IGJpdF9maWVsZCA9IHVuc2FmZSB7ICZhbXA7KCpzZWxmLjAuZ2V0KCkpLl9iaXRmaWVsZF8xIH07Ci0gICAgICAgIGJpdF9maWVsZC5nZXQoMTQsIDEpID09IExJTktfSVNfVVAKJiM0MzsgICAgICAgIGJpdF9maWVsZC5nZXQoMTUsIDEpID09IExJTktfSVNfVVAKICAgICB9CiAKICAgICAvLy8gR2V0cyB0aGUgY3VycmVudCBhdXRvLW5lZ290aWF0aW9uIGNvbmZpZ3VyYXRpb24uCkBAIC0xNDIsNyAmIzQzOzE0Miw3IEBAIHB1YiBmbiBpc19hdXRvbmVnX2VuYWJsZWQoJmFtcDtzZWxmKSAtJmd0OyBib29sIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgc3RydWN0IGludmFyaWFudCBlbnN1cmVzIHRoYXQgd2UgbWF5IGFjY2VzcwogICAgICAgICAvLyB0aGlzIGZpZWxkIHdpdGhvdXQgYWRkaXRpb25hbCBzeW5jaHJvbml6YXRpb24uCiAgICAgICAgIGxldCBiaXRfZmllbGQgPSB1bnNhZmUgeyAmYW1wOygqc2VsZi4wLmdldCgpKS5fYml0ZmllbGRfMSB9OwotICAgICAgICBiaXRfZmllbGQuZ2V0KDEzLCAxKSA9PSB1NjQ6OmZyb20oYmluZGluZ3M6OkFVVE9ORUdfRU5BQkxFKQomIzQzOyAgICAgICAgYml0X2ZpZWxkLmdldCgxNCwgMSkgPT0gdTY0Ojpmcm9tKGJpbmRpbmdzOjpBVVRPTkVHX0VOQUJMRSkKICAgICB9CiAKICAgICAvLy8gR2V0cyB0aGUgY3VycmVudCBhdXRvLW5lZ290aWF0aW9uIHN0YXRlLgpAQCAtMTU1LDcgJiM0MzsxNTUsNyBAQCBwdWIgZm4gaXNfYXV0b25lZ19jb21wbGV0ZWQoJmFtcDtzZWxmKSAtJmd0OyBib29sIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgc3RydWN0IGludmFyaWFudCBlbnN1cmVzIHRoYXQgd2UgbWF5IGFjY2VzcwogICAgICAgICAvLyB0aGlzIGZpZWxkIHdpdGhvdXQgYWRkaXRpb25hbCBzeW5jaHJvbml6YXRpb24uCiAgICAgICAgIGxldCBiaXRfZmllbGQgPSB1bnNhZmUgeyAmYW1wOygqc2VsZi4wLmdldCgpKS5fYml0ZmllbGRfMSB9OwotICAgICAgICBiaXRfZmllbGQuZ2V0KDE1LCAxKSA9PSBBVVRPTkVHX0NPTVBMRVRFRAomIzQzOyAgICAgICAgYml0X2ZpZWxkLmdldCgxNiwgMSkgPT0gQVVUT05FR19DT01QTEVURUQKICAgICB9CiAKICAgICAvLy8gU2V0cyB0aGUgc3BlZWQgb2YgdGhlIFBIWS4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+ODEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNzUKCQkJCQkJCW91dHB1dDogMTgyCgkJCQkJCQl0aG91Z2h0czogNTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBIWSBEZXZpY2UgQml0ZmllbGQgQWRqdXN0bWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgYHJ1c3Qva2VybmVsL25ldC9waHkucnNgIGZpbGUuIEl0JiMzOTtzIG1lc3Npbmcgd2l0aCB0aGUgYml0IG9mZnNldHMgdXNlZCB0byBhY2Nlc3MgZmllbGRzIHdpdGhpbiB0aGUgYF9iaXRmaWVsZF8xYCBwYXJ0IG9mIGEgYHBoeV9kZXZpY2VgIHN0cnVjdC4gRXNzZW50aWFsbHksIGl0JiMzOTtzIHVwZGF0aW5nIGhvdyB3ZSByZWFkIHRoZSBzdGF0dXMgb2YgdGhlIGxpbmssIGF1dG9uZWdvdGlhdGlvbiwgYW5kIHdoZXRoZXIgdGhhdCBhdXRvbmVnb3RpYXRpb24gaXMgY29tcGxldGUuIFNwZWNpZmljYWxseSwgdGhlIG9mZnNldHMgZm9yIGBpc19saW5rX3VwYCwgYGlzX2F1dG9uZWdfZW5hYmxlZGAsIGFuZCBgaXNfYXV0b25lZ19jb21wbGV0ZWRgIGFyZSBiZWluZyBhZGp1c3RlZCB3aXRoaW4gdGhlIGJpdGZpZWxkLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGxpa2VseSBkdWUgdG8gYSBjaGFuZ2UgaW4gdGhlIHVuZGVybHlpbmcgQyBzdHJ1Y3R1cmUgbGF5b3V0IGZvciB0aGUgYHBoeV9kZXZpY2VgIGluIHRoZSBDIGNvZGUsIGFuZCB3ZSYjMzk7cmUganVzdCBzeW5jaW5nIHVwIHRoZSBSdXN0IHdyYXBwZXIuIFRoZSBpbW1lZGlhdGUgY29uY2VybiwgdGhvdWdoLCBpcyBhbHdheXMgdW5pbml0aWFsaXplZCBtZW1vcnkuIENvdWxkIHRoaXMgaW50cm9kdWNlIGEgc2l0dWF0aW9uIHdoZXJlIHdlJiMzOTtyZSByZWFkaW5nIGZyb20gYSBwYXJ0IG9mIHRoZSBzdHJ1Y3QgdGhhdCBoYXNuJiMzOTt0IGJlZW4gaW5pdGlhbGl6ZWQ/CgpIb3dldmVyLCBvbiBjbG9zZXIgaW5zcGVjdGlvbiwgaXQmIzM5O3MganVzdCAqcmVhZGluZyogYml0cy4gVGhlIGBwaHlfZGV2aWNlYCBpdHNlbGYgaXMgYSBrZXJuZWwtbWFuYWdlZCBzdHJ1Y3R1cmUsIGluaXRpYWxpemVkIGJ5IHRoZSBQSFkgc3Vic3lzdGVtLiBUaGUgcGF0Y2ggZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMgb3IgY2hhbmdlcyB0byB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gSXQmIzM5O3MganVzdCBzaGlmdGluZyB0aGUgYml0IGluZGljZXMuIElmIHRoZXJlICp3ZXJlKiBhbiBpc3N1ZSB3aXRoIGFuIHVuaW5pdGlhbGl6ZWQgYml0ZmllbGQsIGl0IHdvdWxkIGFscmVhZHkgYmUgaW5oZXJlbnQgdG8gdGhlIGV4aXN0aW5nIGBwaHlfZGV2aWNlYCBzdHJ1Y3QsIGFuZCB0aGUgUEhZIHN1YnN5c3RlbSYjMzk7cyBpbml0aWFsaXphdGlvbiBsb2dpYy4gVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGlzIG9ubHkgZml4aW5nIHRoZSBiaXQgb2Zmc2V0cy4gS01TQU4gaXNuJiMzOTt0IG5lZWRlZCBoZXJlLiBUaGlzIGlzIGEgbG9naWMgYnVnIGZpeCwgZXNzZW50aWFsbHkgc3luY2luZyB0aGUgUnVzdCBzaWRlIHdpdGggdGhlIEMgc2lkZS4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgYWdhaW4sIGp1c3QgdG8gYmUgc3VyZS4gVGhlIHN0cnVjdCBpcyBgcGh5X2RldmljZWAsIGFsbG9jYXRlZCBhbmQgaW5pdGlhbGl6ZWQgYnkgdGhlIGtlcm5lbC4gVGhpcyBwYXRjaCBvbmx5ICpjaGFuZ2VzIHRoZSBvZmZzZXRzKi4gVGhlIHBhdGNoICpvbmx5IGNoYW5nZXMgdGhlIGJpdCBvZmZzZXRzKiwgbm90IHRoZSBhbGxvY2F0aW9uLiBUaGUgY2hhbmdlIGRvZXNuJiMzOTt0IGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSwgaXQgaXMganVzdCByZWFkaW5nIGJpdHMuIE5vIG5ldyBhbGxvY2F0aW9ucywgbm8gbmV3IHJpc2tzLiBObyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBhcmUgYmVpbmcgdXNlZCBpbiBhbnkgYnJhbmNoaW5nIGxvZ2ljIGhlcmUgZWl0aGVyLiBJdCYjMzk7cyBzYWZlIHRvIHNheSB0aGVyZSBpcyBubyBuZWVkIGZvciBLTVNBTi4gSSB3aWxsIHNldCBgTmVlZHNLTVNBTj1mYWxzZWAgb24gdGhpcy4gSSYjMzk7bSBjb25maWRlbnQgaW4gc2F5aW5nIHRoYXQgdGhpcyBpcyBwdXJlbHkgYSBsb2dpYyBmaXgsIGFuZCBLQVNBTiB3b3VsZCBjYXRjaCBhbnkgcHJlLWV4aXN0aW5nIG1lbW9yeSBzYWZldHkgaXNzdWVzIGFueXdheSwgd2l0aGluIHRoZSBgcGh5X2RldmljZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+ODIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHVwZGF0ZXMgYml0ZmllbGQgb2Zmc2V0cyBpbiB0aGUgUnVzdCB3cmFwcGVyIGZvciB0aGUgYHBoeV9kZXZpY2VgIHN0cnVjdCAoYHJ1c3Qva2VybmVsL25ldC9waHkucnNgKS4gSXQgY2hhbmdlcyB0aGUgYml0IGluZGljZXMgdXNlZCB0byByZWFkIHRoZSBgbGlua2AsIGBhdXRvbmVnYCwgYW5kIGBhdXRvbmVnX2NvbXBsZXRlYCBmaWVsZHMgZnJvbSBgX2JpdGZpZWxkXzFgLiBUaGlzIGlzIGEgbG9naWMgZml4IHRvIHN5bmNocm9uaXplIHRoZSBSdXN0IGJpbmRpbmdzIHdpdGggdGhlIHVuZGVybHlpbmcgQyBzdHJ1Y3R1cmUgbGF5b3V0LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgZG9lcyBub3QgZXhwb3NlIGtlcm5lbCBtZW1vcnkgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGludm9sdmUgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3VlcyByZWxhdGVkIHRvIHRoZSBgcGh5X2RldmljZWAgc3RydWN0IHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiAoZS5nLiwgdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3MpLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyBiaXRmaWVsZCBvZmZzZXRzIGluIHRoZSBSdXN0IHdyYXBwZXIgZm9yIHRoZSBgcGh5X2RldmljZWAgc3RydWN0IChgcnVzdC9rZXJuZWwvbmV0L3BoeS5yc2ApLiBJdCBjaGFuZ2VzIHRoZSBiaXQgaW5kaWNlcyB1c2VkIHRvIHJlYWQgdGhlIGBsaW5rYCwgYGF1dG9uZWdgLCBhbmQgYGF1dG9uZWdfY29tcGxldGVgIGZpZWxkcyBmcm9tIGBfYml0ZmllbGRfMWAuIFRoaXMgaXMgYSBsb2dpYyBmaXggdG8gc3luY2hyb25pemUgdGhlIFJ1c3QgYmluZGluZ3Mgd2l0aCB0aGUgdW5kZXJseWluZyBDIHN0cnVjdHVyZSBsYXlvdXQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2Uga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgaW52b2x2ZSByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzIHJlbGF0ZWQgdG8gdGhlIGBwaHlfZGV2aWNlYCBzdHJ1Y3Qgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2VzcykuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIxOjQ0LjUxNjE2MDE0MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNDQ1MjI1MTc2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSVVNUXCIsXG4gICAgXCJSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlNcIixcbiAgICBcIkFYODg3OTZCX1JVU1RfUEhZXCIsXG4gICAgXCJVU0JfTkVUX0FYODgxN1hcIixcbiAgICBcIlVTQl9VU0JORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJheDg4NzcyX2JpbmRcIixcbiAgICBcImF4ODg3NzJfaW5pdF9waHlcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHVwZGF0ZXMgYml0ZmllbGQgb2Zmc2V0cyBpbiB0aGUgUnVzdCB3cmFwcGVyIGZvciB0aGUgYHBoeV9kZXZpY2VgIHN0cnVjdCAoYHJ1c3Qva2VybmVsL25ldC9waHkucnNgKS4gSXQgY2hhbmdlcyB0aGUgYml0IGluZGljZXMgdXNlZCB0byByZWFkIHRoZSBgbGlua2AsIGBhdXRvbmVnYCwgYW5kIGBhdXRvbmVnX2NvbXBsZXRlYCBmaWVsZHMgZnJvbSBgX2JpdGZpZWxkXzFgLiBUaGlzIGlzIGEgbG9naWMgZml4IHRvIHN5bmNocm9uaXplIHRoZSBSdXN0IGJpbmRpbmdzIHdpdGggdGhlIHVuZGVybHlpbmcgQyBzdHJ1Y3R1cmUgbGF5b3V0LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgZG9lcyBub3QgZXhwb3NlIGtlcm5lbCBtZW1vcnkgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGludm9sdmUgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3VlcyByZWxhdGVkIHRvIHRoZSBgcGh5X2RldmljZWAgc3RydWN0IHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiAoZS5nLiwgdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3MpLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGJpdGZpZWxkIGluZGljZXMgaW4gdGhlIFJ1c3QgUEhZIGRyaXZlciBBUEkgZm9yIGBpc19saW5rX3VwYCwgYGlzX2F1dG9uZWdfZW5hYmxlZGAsIGFuZCBgaXNfYXV0b25lZ19jb21wbGV0ZWRgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgYnkgdGhlIGBheDg4Nzk2Yl9ydXN0YCBQSFkgZHJpdmVyLCB3aGljaCBpcyB1c2VkIGJ5IHRoZSBBU0lYIFVTQiBldGhlcm5ldCBkcml2ZXIuIEluY29ycmVjdCBiaXRmaWVsZCBpbmRpY2VzIGNhbiBsZWFkIHRvIGluY29ycmVjdCBsaW5rIHN0YXR1cyBhbmQgYXV0b25lZ290aWF0aW9uIGJlaGF2aW9yLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjE6NDQuNTE2MTY1NzkyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDk2MDczMTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTA5MTdkYjMwYzQ1YzUyMDI1YmU2ODRmZjJlODMyNDY1YjhmMjllZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAyMyAxMToyMTo0MiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9uZXQvcGh5LnJzIGIvcnVzdC9rZXJuZWwvbmV0L3BoeS5yc1xcbmluZGV4IDk1NmNkYTU3M2RkYmEuLjk5ZWQzZGQxNjhkZjMgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvbmV0L3BoeS5yc1xcbisrKyBiL3J1c3Qva2VybmVsL25ldC9waHkucnNcXG5AQCAtMTMwLDcgKzEzMCw3IEBAIHB1YiBmbiBpc19saW5rX3VwKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBib29sIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBzdHJ1Y3QgaW52YXJpYW50IGVuc3VyZXMgdGhhdCB3ZSBtYXkgYWNjZXNzXFxuICAgICAgICAgLy8gdGhpcyBmaWVsZCB3aXRob3V0IGFkZGl0aW9uYWwgc3luY2hyb25pemF0aW9uLlxcbiAgICAgICAgIGxldCBiaXRfZmllbGQgPSB1bnNhZmUgeyBcXHUwMDI2KCpzZWxmLjAuZ2V0KCkpLl9iaXRmaWVsZF8xIH07XFxuLSAgICAgICAgYml0X2ZpZWxkLmdldCgxNCwgMSkgPT0gTElOS19JU19VUFxcbisgICAgICAgIGJpdF9maWVsZC5nZXQoMTUsIDEpID09IExJTktfSVNfVVBcXG4gICAgIH1cXG4gXFxuICAgICAvLy8gR2V0cyB0aGUgY3VycmVudCBhdXRvLW5lZ290aWF0aW9uIGNvbmZpZ3VyYXRpb24uXFxuQEAgLTE0Miw3ICsxNDIsNyBAQCBwdWIgZm4gaXNfYXV0b25lZ19lbmFibGVkKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBib29sIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBzdHJ1Y3QgaW52YXJpYW50IGVuc3VyZXMgdGhhdCB3ZSBtYXkgYWNjZXNzXFxuICAgICAgICAgLy8gdGhpcyBmaWVsZCB3aXRob3V0IGFkZGl0aW9uYWwgc3luY2hyb25pemF0aW9uLlxcbiAgICAgICAgIGxldCBiaXRfZmllbGQgPSB1bnNhZmUgeyBcXHUwMDI2KCpzZWxmLjAuZ2V0KCkpLl9iaXRmaWVsZF8xIH07XFxuLSAgICAgICAgYml0X2ZpZWxkLmdldCgxMywgMSkgPT0gdTY0Ojpmcm9tKGJpbmRpbmdzOjpBVVRPTkVHX0VOQUJMRSlcXG4rICAgICAgICBiaXRfZmllbGQuZ2V0KDE0LCAxKSA9PSB1NjQ6OmZyb20oYmluZGluZ3M6OkFVVE9ORUdfRU5BQkxFKVxcbiAgICAgfVxcbiBcXG4gICAgIC8vLyBHZXRzIHRoZSBjdXJyZW50IGF1dG8tbmVnb3RpYXRpb24gc3RhdGUuXFxuQEAgLTE1NSw3ICsxNTUsNyBAQCBwdWIgZm4gaXNfYXV0b25lZ19jb21wbGV0ZWQoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIGJvb2wge1xcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHN0cnVjdCBpbnZhcmlhbnQgZW5zdXJlcyB0aGF0IHdlIG1heSBhY2Nlc3NcXG4gICAgICAgICAvLyB0aGlzIGZpZWxkIHdpdGhvdXQgYWRkaXRpb25hbCBzeW5jaHJvbml6YXRpb24uXFxuICAgICAgICAgbGV0IGJpdF9maWVsZCA9IHVuc2FmZSB7IFxcdTAwMjYoKnNlbGYuMC5nZXQoKSkuX2JpdGZpZWxkXzEgfTtcXG4tICAgICAgICBiaXRfZmllbGQuZ2V0KDE1LCAxKSA9PSBBVVRPTkVHX0NPTVBMRVRFRFxcbisgICAgICAgIGJpdF9maWVsZC5nZXQoMTYsIDEpID09IEFVVE9ORUdfQ09NUExFVEVEXFxuICAgICB9XFxuIFxcbiAgICAgLy8vIFNldHMgdGhlIHNwZWVkIG9mIHRoZSBQSFkuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIxOjQ2LjAxMzE5ODM4MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE5MzY1ODIwOTg3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSVVNUXCIsXG4gICAgXCJSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlNcIixcbiAgICBcIkFYODg3OTZCX1JVU1RfUEhZXCIsXG4gICAgXCJVU0JfTkVUX0FYODgxN1hcIixcbiAgICBcIlVTQl9VU0JORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJheDg4NzcyX2JpbmRcIixcbiAgICBcImF4ODg3NzJfaW5pdF9waHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBiaXRmaWVsZCBpbmRpY2VzIGluIHRoZSBSdXN0IFBIWSBkcml2ZXIgQVBJIGZvciBgaXNfbGlua191cGAsIGBpc19hdXRvbmVnX2VuYWJsZWRgLCBhbmQgYGlzX2F1dG9uZWdfY29tcGxldGVkYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIGJ5IHRoZSBgYXg4ODc5NmJfcnVzdGAgUEhZIGRyaXZlciwgd2hpY2ggaXMgdXNlZCBieSB0aGUgQVNJWCBVU0IgZXRoZXJuZXQgZHJpdmVyLiBJbmNvcnJlY3QgYml0ZmllbGQgaW5kaWNlcyBjYW4gbGVhZCB0byBpbmNvcnJlY3QgbGluayBzdGF0dXMgYW5kIGF1dG9uZWdvdGlhdGlvbiBiZWhhdmlvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGEwOTE3ZGIzMGM0NWM1MjAyNWJlNjg0ZmYyZTgzMjQ2NWI4ZjI5ZWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyMyAxMToyMTo0MiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL25ldC9waHkucnMgYi9ydXN0L2tlcm5lbC9uZXQvcGh5LnJzXG5pbmRleCA5NTZjZGE1NzNkZGJhLi45OWVkM2RkMTY4ZGYzIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvbmV0L3BoeS5yc1xuKysrIGIvcnVzdC9rZXJuZWwvbmV0L3BoeS5yc1xuQEAgLTEzMCw3ICsxMzAsNyBAQCBwdWIgZm4gaXNfbGlua191cChcdTAwMjZzZWxmKSAtXHUwMDNlIGJvb2wge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgc3RydWN0IGludmFyaWFudCBlbnN1cmVzIHRoYXQgd2UgbWF5IGFjY2Vzc1xuICAgICAgICAgLy8gdGhpcyBmaWVsZCB3aXRob3V0IGFkZGl0aW9uYWwgc3luY2hyb25pemF0aW9uLlxuICAgICAgICAgbGV0IGJpdF9maWVsZCA9IHVuc2FmZSB7IFx1MDAyNigqc2VsZi4wLmdldCgpKS5fYml0ZmllbGRfMSB9O1xuLSAgICAgICAgYml0X2ZpZWxkLmdldCgxNCwgMSkgPT0gTElOS19JU19VUFxuKyAgICAgICAgYml0X2ZpZWxkLmdldCgxNSwgMSkgPT0gTElOS19JU19VUFxuICAgICB9XG4gXG4gICAgIC8vLyBHZXRzIHRoZSBjdXJyZW50IGF1dG8tbmVnb3RpYXRpb24gY29uZmlndXJhdGlvbi5cbkBAIC0xNDIsNyArMTQyLDcgQEAgcHViIGZuIGlzX2F1dG9uZWdfZW5hYmxlZChcdTAwMjZzZWxmKSAtXHUwMDNlIGJvb2wge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgc3RydWN0IGludmFyaWFudCBlbnN1cmVzIHRoYXQgd2UgbWF5IGFjY2Vzc1xuICAgICAgICAgLy8gdGhpcyBmaWVsZCB3aXRob3V0IGFkZGl0aW9uYWwgc3luY2hyb25pemF0aW9uLlxuICAgICAgICAgbGV0IGJpdF9maWVsZCA9IHVuc2FmZSB7IFx1MDAyNigqc2VsZi4wLmdldCgpKS5fYml0ZmllbGRfMSB9O1xuLSAgICAgICAgYml0X2ZpZWxkLmdldCgxMywgMSkgPT0gdTY0Ojpmcm9tKGJpbmRpbmdzOjpBVVRPTkVHX0VOQUJMRSlcbisgICAgICAgIGJpdF9maWVsZC5nZXQoMTQsIDEpID09IHU2NDo6ZnJvbShiaW5kaW5nczo6QVVUT05FR19FTkFCTEUpXG4gICAgIH1cbiBcbiAgICAgLy8vIEdldHMgdGhlIGN1cnJlbnQgYXV0by1uZWdvdGlhdGlvbiBzdGF0ZS5cbkBAIC0xNTUsNyArMTU1LDcgQEAgcHViIGZuIGlzX2F1dG9uZWdfY29tcGxldGVkKFx1MDAyNnNlbGYpIC1cdTAwM2UgYm9vbCB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBzdHJ1Y3QgaW52YXJpYW50IGVuc3VyZXMgdGhhdCB3ZSBtYXkgYWNjZXNzXG4gICAgICAgICAvLyB0aGlzIGZpZWxkIHdpdGhvdXQgYWRkaXRpb25hbCBzeW5jaHJvbml6YXRpb24uXG4gICAgICAgICBsZXQgYml0X2ZpZWxkID0gdW5zYWZlIHsgXHUwMDI2KCpzZWxmLjAuZ2V0KCkpLl9iaXRmaWVsZF8xIH07XG4tICAgICAgICBiaXRfZmllbGQuZ2V0KDE1LCAxKSA9PSBBVVRPTkVHX0NPTVBMRVRFRFxuKyAgICAgICAgYml0X2ZpZWxkLmdldCgxNiwgMSkgPT0gQVVUT05FR19DT01QTEVURURcbiAgICAgfVxuIFxuICAgICAvLy8gU2V0cyB0aGUgc3BlZWQgb2YgdGhlIFBIWS5cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIxOjQ2LjAxMzIwMDU5MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMzY2NTMwMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUEhZIERldmljZSBCdWcgRml4KipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgcnVzdC9rZXJuZWwvbmV0L3BoeS5yc2AuIEl0J3MgdHdlYWtpbmcgdGhlIGJpdGZpZWxkIGluZGljZXMgZm9yIGBpc19saW5rX3VwYCwgYGlzX2F1dG9uZWdfZW5hYmxlZGAsIGFuZCBgaXNfYXV0b25lZ19jb21wbGV0ZWRgLiBSaWdodCBhd2F5LCB0aGlzIHNjcmVhbXMgXCJidWcgZml4XCIgZm9yIHRoZSBSdXN0IGJpbmRpbmdzIHJlbGF0ZWQgdG8gUGh5c2ljYWwgTGF5ZXIgKFBIWSkgZGV2aWNlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIG1lYW5zIGluIHRoZSBicm9hZGVyIGNvbnRleHQuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBpbXBhY3QuIEkgc2hvdWxkIGNoZWNrIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQuIFRoZXkncmUgcGFydCBvZiB0aGUgUnVzdCBQSFkgZHJpdmVyIEFQSSwgb2YgY291cnNlLiBNeSBleHBlcnRpc2Ugc2F5cyB0aGVzZSBhcmUgY3JpdGljYWwgZnVuY3Rpb25zIGZvciBjaGVja2luZyB0aGUgbGluayBzdGF0dXMgYW5kIGF1dG9uZWdvdGlhdGlvbiBzdGF0ZSBvZiBhIG5ldHdvcmsgY29ubmVjdGlvbi5cblxuTm93LCBhIGtleSBxdWVzdGlvbiBhcmlzZXM6IEFyZSB0aGVyZSAqYW55KiBQSFkgZHJpdmVycyB3cml0dGVuIGluIFJ1c3QgeWV0PyBJZiBub3QsIGl0J3MgcG90ZW50aWFsbHkgaW1wb3J0YW50LCBidXQgbG93ZXIgcHJpb3JpdHkuIFNvLCBsZXQgbWUgc2VhcmNoIGZvciB1c2VzIG9mIHRob3NlIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5IHdpdGhpbiBgcnVzdC9gIGFuZCB0aGUgYGRyaXZlcnMvbmV0L3BoeS9gIGRpcmVjdG9yaWVzLiBGaW5kaW5nIHVzZXMgd2lsbCBnaXZlIG1lIGNydWNpYWwgY29udGV4dC4gVGhpcyBiaXRmaWVsZCBmaXggbWF5IGJlIGNyaXRpY2FsIGZvciBleGlzdGluZyBSdXN0IFBIWSBkcml2ZXJzLCBvciBtYXliZSB3ZSBhcmUgcHJlcGFyaW5nIHNvbWV0aGluZy4gSSBuZWVkIHRvIGRpZyBpbiBhbmQgc2VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjc4LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjE6NTAuMjQ5ODU2MTJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1NDc4MDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlzX2xpbmtfdXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwicnVzdC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwicnVzdC9rZXJuZWwvbmV0L3BoeS5ycz0xMDM9ICAgIHB1YiBmbiBzdGF0ZShcXHUwMDI2c2VsZikgLVxcdTAwM2UgRGV2aWNlU3RhdGUge1xcbi0tXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy0xMjUtICAgIC8vLyBJdCByZXR1cm5zIHRydWUgaWYgdGhlIGxpbmsgaXMgdXAuXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5yczoxMjY6ICAgIHB1YiBmbiBpc19saW5rX3VwKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBib29sIHtcXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTEyNy0gICAgICAgIGNvbnN0IExJTktfSVNfVVA6IHU2NCA9IDE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIxOjUwLjM3NTMzODUzNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3NzQwNzYwMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSBpZiBJIGNhbiBnZXQgdGhpcyByaWdodC4uLlxuXG4qKlJ1c3QgUEhZIERyaXZlciBTZWFyY2gqKlxuXG5BbHJpZ2h0LCBzbyBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nIHF1aWNrbHkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbnZlc3RpZ2F0ZSB0aGUgY3VycmVudCBsYW5kc2NhcGUgb2YgUnVzdCBQSFkgZHJpdmVycy4gSSdtIGN1cmlvdXMgaWYgdGhlcmUncyBhbnkgYWN0aXZlIGRldmVsb3BtZW50IG9yIGV4aXN0aW5nIGltcGxlbWVudGF0aW9ucyBhbHJlYWR5IG91dCB0aGVyZSwgb3IgaWYgdGhpcyBpcyBzb21ldGhpbmcgSSdsbCBuZWVkIHRvIGNvbnRyaWJ1dGUgdG8gZnJvbSBzY3JhdGNoLiBJJ20gZ29pbmcgdG8gZG8gYSBxdWljayBzZWFyY2ggYW5kIHNlZSB3aGF0IGNvbWVzIHVwLiBUaGlzIGlzIGEgY29tbW9uIGZpcnN0IHN0ZXAgLSB1bmRlcnN0YW5kIHRoZSBjdXJyZW50IHN0YXRlIG9mIHBsYXkgYmVmb3JlIGRpdmluZyBpbiBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MTEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMTo1My4xNDk0MTc2MDhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUxNTU0NjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlzX2xpbmtfdXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycz00OT0gICAgZm4gcmVhZF9zdGF0dXMoZGV2OiBcXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjdTE2XFx1MDAzZSB7XFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtNTAtICAgICAgICBkZXYuZ2VucGh5X3VwZGF0ZV9saW5rKCk/O1xcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzOjUxOiAgICAgICAgaWYgIWRldi5pc19saW5rX3VwKCkge1xcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTUyLSAgICAgICAgICAgIHJldHVybiBPaygwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjE6NTMuNzAwOTc4MTY4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg0MzM3NzAzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYXg4ODc5NmIgRHJpdmVyKipcblxuT2theSwgc28gSSBzZWUgdGhpcyBgYXg4ODc5NmJfcnVzdC5yc2AgZmlsZSBwb3BwZWQgdXAuIFJpZ2h0LCB0aGF0J3MgaW4gdGhlIG5ldHdvcmsgUEhZIGRyaXZlcnMsIHdoaWNoIGlzIGV4YWN0bHkgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIGFuIEFYODg3OTZCIGNoaXAuIExldCdzIGRpZyBpbiBhbmQgc2VlIGhvdyBpdCdzIGJlaW5nIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIGl0cyBjb25maWd1cmF0aW9uLCBtYWtlIHN1cmUgaXQncyBzZXQgdXAgY29ycmVjdGx5LCBhbmQgdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBpbnRlcmZhY2VzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIG5ldHdvcmsgc3RhY2suIEnigJlsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcyBvZiBob3cgdGhlIGRyaXZlciBpcyBpbXBsZW1lbnRlZC4gSSB3YW50IHRvIGxvb2sgY2xvc2VseSBhdCB0aGUgcmVnaXN0ZXIgYWNjZXNzIHBhdHRlcm5zLCBlcnJvciBoYW5kbGluZywgYW5kIGFueSBwb3dlciBtYW5hZ2VtZW50IGNvbnNpZGVyYXRpb25zLiBIb3BlZnVsbHksIGl0cyBjb25maWd1cmF0aW9uIGlzIHNhbmUuIEknbGwgbmVlZCB0byByZW1lbWJlciB0byBsb29rIGF0IHJlbGF0ZWQgZmlsZXMgaWYgaXQgc2VlbXMgdGhhdCB0aGV5IGFyZSByZWxhdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTE2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjE6NTcuNTQ0MzY3ODY2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMTM2OTQyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJheDg4Nzk2Yl9ydXN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWc9MTYwPWNvbmZpZyBBWDg4Nzk2Ql9SVVNUX1BIWVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTYzLVxcdGhlbHBcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxNjQ6XFx0ICBVc2VzIHRoZSBSdXN0IHJlZmVyZW5jZSBkcml2ZXIgZm9yIEFzaXggUEhZcyAoYXg4ODc5NmJfcnVzdC5rbykuXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTY1LVxcdCAgVGhlIGZlYXR1cmVzIGFyZSBlcXVpdmFsZW50LiBJdCBzdXBwb3J0cyB0aGUgQXNpeCBFbGVjdHJvbmljcyBQSFlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT00MD1pZmRlZiBDT05GSUdfQVg4ODc5NkJfUlVTVF9QSFlcXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NDE6ICBvYmotJChDT05GSUdfQVg4ODc5NkJfUEhZKVxcdCs9IGF4ODg3OTZiX3J1c3Qub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS00Mi1lbHNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIxOjU3LjY2NTc0MTQxMVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MzY1OTYyODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aGlua2luZyBwcm9jZXNzOlxuXG4qKkV4YW1pbmluZyBBWDg4Nzk2QiBQSFkgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIEkgbmVlZCBib3RoIGBDT05GSUdfQVg4ODc5NkJfUlVTVF9QSFlgIGFuZCBgQ09ORklHX0FYODg3OTZCX1BIWWAuIFJpZ2h0LCBgQ09ORklHX0FYODg3OTZCX1JVU1RfUEhZYCBpcyBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaW1lIHRvIGRpZyBpbiBhIGJpdCBkZWVwZXIuIEdpdmVuIHRoZSBjb250ZXh0LCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMTYwIG9yIHNvLiBUaGF0J3Mgd2hlcmUgdGhlIGRlZmluaXRpb24gZm9yIHRoaXMgbGlrZWx5IHJlc2lkZXMuIEknbGwgc2VlIHdoYXQgZGVwZW5kZW5jaWVzIG9yIGNvbnN0cmFpbnRzIGFyZSBkb2N1bWVudGVkIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjA3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjI6MDEuMzAyMzQwMTkzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjc5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNTAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNTA6XFx0XFx0ICBBZGRzIHN1cHBvcnQgZm9yIHRoZSBBcHBsaWVkIE1pY3JvIENpcmN1aXRzIENvcnBvcmF0aW9uIFFUMjAyNSBQSFkuXFxuIDE1MTpcXHRcXG4gMTUyOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL0tjb25maWdcXFwiXFxuIDE1MzpcXHRcXG4gMTU0OlxcdGNvbmZpZyBBWDg4Nzk2Ql9QSFlcXG4gMTU1OlxcdFxcdHRyaXN0YXRlIFxcXCJBc2l4IFBIWXNcXFwiXFxuIDE1NjpcXHRcXHRoZWxwXFxuIDE1NzpcXHRcXHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgQXNpeCBFbGVjdHJvbmljcyBQSFkgZm91bmQgaW4gdGhlIFgtU3VyZiAxMDBcXG4gMTU4OlxcdFxcdCAgQVg4ODc5NkIgcGFja2FnZS5cXG4gMTU5OlxcdFxcbiAxNjA6XFx0Y29uZmlnIEFYODg3OTZCX1JVU1RfUEhZXFxuIDE2MTpcXHRcXHRib29sIFxcXCJSdXN0IHJlZmVyZW5jZSBkcml2ZXIgZm9yIEFzaXggUEhZc1xcXCJcXG4gMTYyOlxcdFxcdGRlcGVuZHMgb24gUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TIFxcdTAwMjZcXHUwMDI2IEFYODg3OTZCX1BIWVxcbiAxNjM6XFx0XFx0aGVscFxcbiAxNjQ6XFx0XFx0ICBVc2VzIHRoZSBSdXN0IHJlZmVyZW5jZSBkcml2ZXIgZm9yIEFzaXggUEhZcyAoYXg4ODc5NmJfcnVzdC5rbykuXFxuIDE2NTpcXHRcXHQgIFRoZSBmZWF0dXJlcyBhcmUgZXF1aXZhbGVudC4gSXQgc3VwcG9ydHMgdGhlIEFzaXggRWxlY3Ryb25pY3MgUEhZXFxuIDE2NjpcXHRcXHQgIGZvdW5kIGluIHRoZSBYLVN1cmYgMTAwIEFYODg3OTZCIHBhY2thZ2UuXFxuIDE2NzpcXHRcXG4gMTY4OlxcdGNvbmZpZyBCUk9BRENPTV9QSFlcXG4gMTY5OlxcdFxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSA1NFhYIFBIWXNcXFwiXFxuIDE3MDpcXHRcXHRzZWxlY3QgQkNNX05FVF9QSFlMSUJcXG4gMTcxOlxcdFxcdHNlbGVjdCBCQ01fTkVUX1BIWVBUUCBpZiBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcXG4gMTcyOlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gMTczOlxcdFxcdGhlbHBcXG4gMTc0OlxcdFxcdCAgQ3VycmVudGx5IHN1cHBvcnRzIHRoZSBCQ001NDExLCBCQ001NDIxLCBCQ001NDYxLCBCQ001NDYxNlMsIEJDTTU0NjQsXFxuIDE3NTpcXHRcXHQgIEJDTTU0ODEsIEJDTTU0ODEwIGFuZCBCQ001NDgyIFBIWXMuXFxuIDE3NjpcXHRcXG4gMTc3OlxcdGNvbmZpZyBCQ001NDE0MF9QSFlcXG4gMTc4OlxcdFxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBCQ001NDE0MCBQSFlcXFwiXFxuIDE3OTpcXHRcXHRkZXBlbmRzIG9uIEhXTU9OIHx8IEhXTU9OPW5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjI6MDEuMzAyNDU2MTkzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMTI3MTEyODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246XG5cbioqRGVwZW5kZW5jeSBEZWVwIERpdmUqKlxuXG5Pa2F5LCBzbyBpdCBsb29rcyBsaWtlIGBBWDg4Nzk2Ql9SVVNUX1BIWWAgcmVsaWVzIG9uIGJvdGggYFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU2AgYW5kIGBBWDg4Nzk2Ql9QSFlgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCdzIHByb2JhYmx5IHVzaW5nIHRoZSBhYnN0cmFjdGlvbnMgZm9yIHBsYXRmb3JtLWFnbm9zdGljIFBIWSBpbnRlcmFjdGlvbiBhbmQgdGhlIGBBWDg4Nzk2Ql9QSFlgIGZvciB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgZGV0YWlscyBvZiB0aGF0IHBhcnRpY3VsYXIgY2hpcC4gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIGBSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRob3NlIGFic3RyYWN0aW9ucyAqYXJlKi4gV2hhdCBpbnRlcmZhY2VzIGFyZSBiZWluZyBkZWZpbmVkIGhlcmU/IFdoYXQgYXJlIHRoZSBjYXBhYmlsaXRpZXMgYW5kIGxpbWl0YXRpb25zIG9mIHRoaXMgYWJzdHJhY3Rpb24gbGF5ZXI/IFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgYXJjaGl0ZWN0dXJlIG9mIHRoZSB3aG9sZSBQSFkgaW50ZXJhY3Rpb24gbGllcywgc28gdGhpcyBpcyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgZWZmb3J0cyBmaXJzdCB0byB1bmRlcnN0YW5kIHRoZSB3aG9sZS4gTGV0J3Mgc2VlIHdoYXQncyB3aGF0IVxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDMxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMjowNC41MTUxNzA5NDFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzIyNTc0MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NTY9Y29uZmlnIEZJWEVEX1BIWVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNjQtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NjU6Y29uZmlnIFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU1xcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTY2LSAgICAgICAgYm9vbCBcXFwiUnVzdCBQSFlMSUIgYWJzdHJhY3Rpb25zIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIyOjA2Ljc4NzQzMzA0OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTEyNTgzMDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkV4YW1pbmluZyBQSFkgS2NvbmZpZyBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgIGZpbGUuIEknbSBmb2N1c2luZyBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNjU7IHRoYXQncyB1c3VhbGx5IHdoZXJlIHRoZSBtZWF0IG9mIGEgc3BlY2lmaWMgbW9kdWxlJ3MgY29uZmlndXJhdGlvbiBvcHRpb25zIGJlZ2lucy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyB0aGlzIHBhcnRpY3VsYXIgUEhZIGRyaXZlciBpcyBjb25maWd1cmVkLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBzY2FuIGl0IHRvIGdyYXNwIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBjaG9pY2VzIHRoZSBkZXZlbG9wZXJzIGhhdmUgYnVpbHQgaW50byBpdC4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCBob3cgdGhpcyBQSFkgaXMgaW50ZWdyYXRlZCBhbmQgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIGdvdGNoYXMgdG8gbG9vayBvdXQgZm9yLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgYSB0eXBpY2FsIEtjb25maWcgc3RydWN0dXJlIOKAkyBgY29uZmlnYCBkaXJlY3RpdmVzLCBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cywgbWF5YmUgc29tZSBgc2VsZWN0YCBzdGF0ZW1lbnRzLCBhbmQgc29tZSBoZWxwIHRleHQuIEtub3dpbmcgdGhpcywgSSBjYW4gc3RhcnQgZm9ybWluZyBhIG1lbnRhbCBtYXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3OTUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMjoxMC4zMDAwMTkxNjZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMyOTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDYwOlxcdFxcdCAgQWRkcyB0aGUgcGxhdGZvcm0gXFxcImZpeGVkXFxcIiBNRElPIEJ1cyB0byBjb3ZlciB0aGUgYm9hcmRzIHRoYXQgdXNlXFxuICA2MTpcXHRcXHQgIFBIWXMgdGhhdCBhcmUgbm90IGNvbm5lY3RlZCB0byB0aGUgcmVhbCBNRElPIGJ1cy5cXG4gIDYyOlxcdFxcbiAgNjM6XFx0XFx0ICBDdXJyZW50bHkgdGVzdGVkIHdpdGggbXBjODY2YWRzIGFuZCBtcGM4MzQ5ZS1taXR4LlxcbiAgNjQ6XFx0XFxuICA2NTpcXHRjb25maWcgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TXFxuICA2NjpcXHQgICAgICAgIGJvb2wgXFxcIlJ1c3QgUEhZTElCIGFic3RyYWN0aW9ucyBzdXBwb3J0XFxcIlxcbiAgNjc6XFx0ICAgICAgICBkZXBlbmRzIG9uIFJVU1RcXG4gIDY4OlxcdCAgICAgICAgZGVwZW5kcyBvbiBQSFlMSUI9eVxcbiAgNjk6XFx0ICAgICAgICBoZWxwXFxuICA3MDpcXHQgICAgICAgICAgQWRkcyBzdXBwb3J0IG5lZWRlZCBmb3IgUEhZIGRyaXZlcnMgd3JpdHRlbiBpbiBSdXN0LiBJdCBwcm92aWRlc1xcbiAgNzE6XFx0ICAgICAgICAgIGEgd3JhcHBlciBhcm91bmQgdGhlIEMgcGh5bGliIGNvcmUuXFxuICA3MjpcXHRcXG4gIDczOlxcdGNvbmZpZyBTRlBcXG4gIDc0OlxcdFxcdHRyaXN0YXRlIFxcXCJTRlAgY2FnZSBzdXBwb3J0XFxcIlxcbiAgNzU6XFx0XFx0ZGVwZW5kcyBvbiBJMkMgXFx1MDAyNlxcdTAwMjYgUEhZTElOS1xcbiAgNzY6XFx0XFx0ZGVwZW5kcyBvbiBIV01PTiB8fCBIV01PTj1uXFxuICA3NzpcXHRcXHRzZWxlY3QgTURJT19JMkNcXG4gIDc4OlxcdFxcbiAgNzk6XFx0Y29tbWVudCBcXFwiTUlJIFBIWSBkZXZpY2UgZHJpdmVyc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjI6MTAuMzAwMTU0MDQ2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMzgwMTcxNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ3VycmVudCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaW1wbGVtZW50aW5nIHN1cHBvcnQgZm9yIHRoaXMgQXNpeCBQSFksIHNwZWNpZmljYWxseSB0aGUgQVg4ODc5NkIsIHdpdGhpbiB0aGlzIFJ1c3QgZW52aXJvbm1lbnQuIEkgbmVlZCB0byBpbnRlZ3JhdGUgdGhlc2Ugc3BlY2lmaWMgY29tcG9uZW50czogYFJVU1RgLCBgUEhZTElCYCwgYFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU2AsIGBBWDg4Nzk2Ql9QSFlgLCBhbmQgYEFYODg3OTZCX1JVU1RfUEhZYC5cblxuTXkgbWFpbiBjb25jZXJuIGlzLCBjYW4gSSBldmVuIHJlbGlhYmx5IHRlc3QgdGhlIGBpc19saW5rX3VwYCBmdW5jdGlvbmFsaXR5IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFJlYWwtd29ybGQgUEhZIGRyaXZlcnMgYXJlIG9mdGVuIHRpZWQgdG8gTURJTyBidXNlcywgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byBzaW11bGF0ZSBvciBpbnN0YW50aWF0ZSB0aGF0IHNldHVwLiBJJ20gdGhpbmtpbmcgc3BlY2lmaWNhbGx5IGFib3V0IFFFTVUsIGNhbiBJIGNyZWF0ZSBhbiBNRElPIGJ1cyB0aGVyZSBhbmQgYXR0YWNoIHRoaXMgUEhZPyBPciwgYXJlIHRoZXJlIHZpcnR1YWxpemVkIE1ESU8gaW1wbGVtZW50YXRpb25zIHRoYXQgSSBjYW4gbGV2ZXJhZ2U/XG5cblRoaW5raW5nIG1vcmUgYWJvdXQgaXQsIEkgcmVtZW1iZXIgdGhhdCBzeXprYWxsZXIgaGFzIHRoZSBwb3RlbnRpYWwgdG8gaW5qZWN0IE1ESU8gZGV2aWNlcywgcHJvdmlkZWQgaXQgY2FuIGFjY2VzcyBhIHZpcnR1YWwgTURJTyBidXMgb3IgaWYgaXQgY2FuIGludGVyYWN0IHdpdGggUEhZcyB2aWEgbmV0bGluayBvciBpb2N0bC4gVGhhdCdzIGEgcG90ZW50aWFsIGF2ZW51ZS5cblxuUmlnaHQgbm93LCBteSBmb2N1cyBzaG91bGQgYmUgb24gaG93IGBpc19saW5rX3VwYCBpcyBpbnZva2VkOyBhIHF1aWNrIGxvb2sgYW5kIEkgc2VlIHRoYXQgaXQncyBjYWxsZWQgZnJvbSBgcmVhZF9zdGF0dXNgIGluIGBheDg4Nzk2Yl9ydXN0LnJzYC4gSSBzaG91bGQgcHJvYmFibHkgb3BlbiB0aGF0IGZpbGUgYW5kIHNlZSBob3cgdGhpbmdzIGZpdCB0b2dldGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMxOSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIyOjE1LjUzODE3NTkzMVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzA2MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdC8vIENvcHlyaWdodCAoQykgMjAyMyBGVUpJVEEgVG9tb25vcmkgXFx1MDAzY2Z1aml0YS50b21vbm9yaUBnbWFpbC5jb21cXHUwMDNlXFxuICAgMzpcXHRcXG4gICA0OlxcdC8vISBSdXN0IEFzaXggUEhZcyBkcml2ZXJcXG4gICA1OlxcdC8vIVxcbiAgIDY6XFx0Ly8hIEMgdmVyc2lvbiBvZiB0aGlzIGRyaXZlcjogW2Bkcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuY2BdKC4vYXg4ODc5NmIuYylcXG4gICA3OlxcdHVzZSBrZXJuZWw6OntcXG4gICA4OlxcdCAgICBuZXQ6OnBoeTo6e3NlbGYsIHJlZzo6QzIyLCBEZXZpY2VJZCwgRHJpdmVyfSxcXG4gICA5OlxcdCAgICBwcmVsdWRlOjoqLFxcbiAgMTA6XFx0ICAgIHVhcGksXFxuICAxMTpcXHR9O1xcbiAgMTI6XFx0XFxuICAxMzpcXHRrZXJuZWw6Om1vZHVsZV9waHlfZHJpdmVyISB7XFxuICAxNDpcXHQgICAgZHJpdmVyczogW1BoeUFYODg3NzJBLCBQaHlBWDg4NzcyQywgUGh5QVg4ODc5NkJdLFxcbiAgMTU6XFx0ICAgIGRldmljZV90YWJsZTogW1xcbiAgMTY6XFx0ICAgICAgICBEZXZpY2VJZDo6bmV3X3dpdGhfZHJpdmVyOjpcXHUwMDNjUGh5QVg4ODc3MkFcXHUwMDNlKCksXFxuICAxNzpcXHQgICAgICAgIERldmljZUlkOjpuZXdfd2l0aF9kcml2ZXI6OlxcdTAwM2NQaHlBWDg4NzcyQ1xcdTAwM2UoKSxcXG4gIDE4OlxcdCAgICAgICAgRGV2aWNlSWQ6Om5ld193aXRoX2RyaXZlcjo6XFx1MDAzY1BoeUFYODg3OTZCXFx1MDAzZSgpXFxuICAxOTpcXHQgICAgXSxcXG4gIDIwOlxcdCAgICBuYW1lOiBcXFwicnVzdF9hc2l4X3BoeVxcXCIsXFxuICAyMTpcXHQgICAgYXV0aG9yczogW1xcXCJGVUpJVEEgVG9tb25vcmkgXFx1MDAzY2Z1aml0YS50b21vbm9yaUBnbWFpbC5jb21cXHUwMDNlXFxcIl0sXFxuICAyMjpcXHQgICAgZGVzY3JpcHRpb246IFxcXCJSdXN0IEFzaXggUEhZcyBkcml2ZXJcXFwiLFxcbiAgMjM6XFx0ICAgIGxpY2Vuc2U6IFxcXCJHUExcXFwiLFxcbiAgMjQ6XFx0fVxcbiAgMjU6XFx0XFxuICAyNjpcXHRjb25zdCBCTUNSX1NQRUVEMTAwOiB1MTYgPSB1YXBpOjpCTUNSX1NQRUVEMTAwIGFzIHUxNjtcXG4gIDI3OlxcdGNvbnN0IEJNQ1JfRlVMTERQTFg6IHUxNiA9IHVhcGk6OkJNQ1JfRlVMTERQTFggYXMgdTE2O1xcbiAgMjg6XFx0XFxuICAyOTpcXHQvLyBQZXJmb3JtcyBhIHNvZnR3YXJlIFBIWSByZXNldCB1c2luZyB0aGUgc3RhbmRhcmRcXG4gIDMwOlxcdC8vIEJNQ1JfUkVTRVQgYml0IGFuZCBwb2xsIGZvciB0aGUgcmVzZXQgYml0IHRvIGJlIGNsZWFyZWQuXFxuICAzMTpcXHQvLyBUb2dnbGUgQk1DUl9SRVNFVCBiaXQgb2ZmIHRvIGFjY29tbW9kYXRlIGJyb2tlbiBBWDg3OTZCIFBIWSBpbXBsZW1lbnRhdGlvblxcbiAgMzI6XFx0Ly8gc3VjaCBhcyB1c2VkIG9uIHRoZSBJbmRpdmlkdWFsIENvbXB1dGVycycgWC1TdXJmIDEwMCBab3JybyBjYXJkLlxcbiAgMzM6XFx0Zm4gYXNpeF9zb2Z0X3Jlc2V0KGRldjogXFx1MDAyNm11dCBwaHk6OkRldmljZSkgLVxcdTAwM2UgUmVzdWx0IHtcXG4gIDM0OlxcdCAgICBkZXYud3JpdGUoQzIyOjpCTUNSLCAwKT87XFxuICAzNTpcXHQgICAgZGV2LmdlbnBoeV9zb2Z0X3Jlc2V0KClcXG4gIDM2OlxcdH1cXG4gIDM3OlxcdFxcbiAgMzg6XFx0c3RydWN0IFBoeUFYODg3NzJBO1xcbiAgMzk6XFx0XFxuICA0MDpcXHQjW3Z0YWJsZV1cXG4gIDQxOlxcdGltcGwgRHJpdmVyIGZvciBQaHlBWDg4NzcyQSB7XFxuICA0MjpcXHQgICAgY29uc3QgRkxBR1M6IHUzMiA9IHBoeTo6ZmxhZ3M6OklTX0lOVEVSTkFMO1xcbiAgNDM6XFx0ICAgIGNvbnN0IE5BTUU6IFxcdTAwMjYnc3RhdGljIENTdHIgPSBjXFxcIkFzaXggRWxlY3Ryb25pY3MgQVg4ODc3MkFcXFwiO1xcbiAgNDQ6XFx0ICAgIGNvbnN0IFBIWV9ERVZJQ0VfSUQ6IERldmljZUlkID0gRGV2aWNlSWQ6Om5ld193aXRoX2V4YWN0X21hc2soMHgwMDNiMTg2MSk7XFxuICA0NTpcXHRcXG4gIDQ2OlxcdCAgICAvLyBBWDg4NzcyQSBpcyBub3Qgd29ya2luZyBwcm9wZXJseSB3aXRoIHNvbWUgb2xkIHN3aXRjaGVzIChORVRHRUFSIEVOIDEwOFRQKTpcXG4gIDQ3OlxcdCAgICAvLyBhZnRlciBhdXRvbmVnIGlzIGRvbmUgYW5kIHRoZSBsaW5rIHN0YXR1cyBpcyByZXBvcnRlZCBhcyBhY3RpdmUsIHRoZSBNSUlfTFBBXFxuICA0ODpcXHQgICAgLy8gcmVnaXN0ZXIgaXMgMC4gVGhpcyBpc3N1ZSBpcyBub3QgcmVwcm9kdWNpYmxlIG9uIEFYODg3NzJDLlxcbiAgNDk6XFx0ICAgIGZuIHJlYWRfc3RhdHVzKGRldjogXFx1MDAyNm11dCBwaHk6OkRldmljZSkgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY3UxNlxcdTAwM2Uge1xcbiAgNTA6XFx0ICAgICAgICBkZXYuZ2VucGh5X3VwZGF0ZV9saW5rKCk/O1xcbiAgNTE6XFx0ICAgICAgICBpZiAhZGV2LmlzX2xpbmtfdXAoKSB7XFxuICA1MjpcXHQgICAgICAgICAgICByZXR1cm4gT2soMCk7XFxuICA1MzpcXHQgICAgICAgIH1cXG4gIDU0OlxcdCAgICAgICAgLy8gSWYgTUlJX0xQQSBpcyAwLCBwaHlfcmVzb2x2ZV9hbmVnX2xpbmttb2RlKCkgd2lsbCBmYWlsIHRvIHJlc29sdmVcXG4gIDU1OlxcdCAgICAgICAgLy8gbGlua21vZGUgc28gdXNlIE1JSV9CTUNSIGFzIGRlZmF1bHQgdmFsdWVzLlxcbiAgNTY6XFx0ICAgICAgICBsZXQgcmV0ID0gZGV2LnJlYWQoQzIyOjpCTUNSKT87XFxuICA1NzpcXHRcXG4gIDU4OlxcdCAgICAgICAgaWYgcmV0IFxcdTAwMjYgQk1DUl9TUEVFRDEwMCAhPSAwIHtcXG4gIDU5OlxcdCAgICAgICAgICAgIGRldi5zZXRfc3BlZWQodWFwaTo6U1BFRURfMTAwKTtcXG4gIDYwOlxcdCAgICAgICAgfSBlbHNlIHtcXG4gIDYxOlxcdCAgICAgICAgICAgIGRldi5zZXRfc3BlZWQodWFwaTo6U1BFRURfMTApO1xcbiAgNjI6XFx0ICAgICAgICB9XFxuICA2MzpcXHRcXG4gIDY0OlxcdCAgICAgICAgbGV0IGR1cGxleCA9IGlmIHJldCBcXHUwMDI2IEJNQ1JfRlVMTERQTFggIT0gMCB7XFxuICA2NTpcXHQgICAgICAgICAgICBwaHk6OkR1cGxleE1vZGU6OkZ1bGxcXG4gIDY2OlxcdCAgICAgICAgfSBlbHNlIHtcXG4gIDY3OlxcdCAgICAgICAgICAgIHBoeTo6RHVwbGV4TW9kZTo6SGFsZlxcbiAgNjg6XFx0ICAgICAgICB9O1xcbiAgNjk6XFx0ICAgICAgICBkZXYuc2V0X2R1cGxleChkdXBsZXgpO1xcbiAgNzA6XFx0XFxuICA3MTpcXHQgICAgICAgIGRldi5nZW5waHlfcmVhZF9scGEoKT87XFxuICA3MjpcXHRcXG4gIDczOlxcdCAgICAgICAgaWYgZGV2LmlzX2F1dG9uZWdfZW5hYmxlZCgpIFxcdTAwMjZcXHUwMDI2IGRldi5pc19hdXRvbmVnX2NvbXBsZXRlZCgpIHtcXG4gIDc0OlxcdCAgICAgICAgICAgIGRldi5yZXNvbHZlX2FuZWdfbGlua21vZGUoKTtcXG4gIDc1OlxcdCAgICAgICAgfVxcbiAgNzY6XFx0XFxuICA3NzpcXHQgICAgICAgIE9rKDApXFxuICA3ODpcXHQgICAgfVxcbiAgNzk6XFx0XFxuICA4MDpcXHQgICAgZm4gc3VzcGVuZChkZXY6IFxcdTAwMjZtdXQgcGh5OjpEZXZpY2UpIC1cXHUwMDNlIFJlc3VsdCB7XFxuICA4MTpcXHQgICAgICAgIGRldi5nZW5waHlfc3VzcGVuZCgpXFxuICA4MjpcXHQgICAgfVxcbiAgODM6XFx0XFxuICA4NDpcXHQgICAgZm4gcmVzdW1lKGRldjogXFx1MDAyNm11dCBwaHk6OkRldmljZSkgLVxcdTAwM2UgUmVzdWx0IHtcXG4gIDg1OlxcdCAgICAgICAgZGV2LmdlbnBoeV9yZXN1bWUoKVxcbiAgODY6XFx0ICAgIH1cXG4gIDg3OlxcdFxcbiAgODg6XFx0ICAgIGZuIHNvZnRfcmVzZXQoZGV2OiBcXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXFx1MDAzZSBSZXN1bHQge1xcbiAgODk6XFx0ICAgICAgICBhc2l4X3NvZnRfcmVzZXQoZGV2KVxcbiAgOTA6XFx0ICAgIH1cXG4gIDkxOlxcdFxcbiAgOTI6XFx0ICAgIGZuIGxpbmtfY2hhbmdlX25vdGlmeShkZXY6IFxcdTAwMjZtdXQgcGh5OjpEZXZpY2UpIHtcXG4gIDkzOlxcdCAgICAgICAgLy8gUmVzZXQgUEhZLCBvdGhlcndpc2UgTUlJX0xQQSB3aWxsIHByb3ZpZGUgb3V0ZGF0ZWQgaW5mb3JtYXRpb24uXFxuICA5NDpcXHQgICAgICAgIC8vIFRoaXMgaXNzdWUgaXMgcmVwcm9kdWNpYmxlIG9ubHkgd2l0aCBzb21lIGxpbmsgcGFydG5lciBQSFlzLlxcbiAgOTU6XFx0ICAgICAgICBpZiBkZXYuc3RhdGUoKSA9PSBwaHk6OkRldmljZVN0YXRlOjpOb0xpbmsge1xcbiAgOTY6XFx0ICAgICAgICAgICAgbGV0IF8gPSBkZXYuaW5pdF9odygpO1xcbiAgOTc6XFx0ICAgICAgICAgICAgbGV0IF8gPSBkZXYuc3RhcnRfYW5lZygpO1xcbiAgOTg6XFx0ICAgICAgICB9XFxuICA5OTpcXHQgICAgfVxcbiAxMDA6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMjoxNS41MzgzMDgzOTFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc4NjcwODMwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBwaHkucnNgIE1vZHVsZSBhbmQgQVg4ODc3MkEgQ29ubmVjdGl2aXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYHJ1c3Qva2VybmVsL25ldC9waHkucnNgLiBJdCdzIGRlYWxpbmcgd2l0aCBiaXRmaWVsZCBpbmRpY2VzLCB3aGljaCBpcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoIGluIHByaW5jaXBsZS4gQnV0LCB0aGUgcmVhbCBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzLCBjYW4gd2UgYWN0dWFsbHkgKnRlc3QqIHRoaXMgZWZmZWN0aXZlbHk/IEFyZSBgaXNfbGlua191cGAsIGBpc19hdXRvbmVnX2VuYWJsZWRgLCBhbmQgYGlzX2F1dG9uZWdfY29tcGxldGVkYCByZWFjaGFibGUgd2l0aGluIHRoZSB0ZXN0aW5nIGZyYW1ld29yaz8gU3BlY2lmaWNhbGx5LCBpcyBgYXg4ODc5NmJfcnVzdGAgc29tZXRoaW5nIHRoYXQgc3l6a2FsbGVyIGNhbiBldmVuIHRvdWNoP1xuXG5BaCwgcmlnaHQsIHN5emthbGxlciAqY2FuKiBsb2FkIG1vZHVsZXMsIHNvIHRoZXJlJ3MgYSBjaGFuY2UuIEkgY2FuIHNlZSBpdCBpbnN0YW50aWF0aW5nIFBIWSBkZXZpY2VzIHVzaW5nIHZpcnR1YWwgTURJTyBidXNlcyBvciBuZXRsaW5rLiBCdXQgdGhlbiBJIGhhdmUgdG8gYXNrIG15c2VsZiwgZG9lcyBzeXprYWxsZXIgYWN0dWFsbHkgKmhhdmUqIGEgdmlydHVhbCBNRElPIGJ1cz8gT3IgaXMgaXQgbGVhbmluZyBvbiBgbWFjc2VjYCwgYHZldGhgLCBvciBgdHVuYD9cblxuV2FpdCBhIHNlY29uZC4uLiBkaWRuJ3QgSSBzZWUgc29tZXRoaW5nIGFib3V0IFVTQj8gQWhhISBTeXprYWxsZXIgaGFzIHRoZSBjYXBhYmlsaXR5IHRvIGluamVjdCBVU0IgZGV2aWNlcy4gQW5kIHRoYXQgdHJpZ2dlcnMgc29tZXRoaW5nIOKAkyB0aGUgQVg4ODc3MkEhIEkgcmVtZW1iZXIgaXQgYXMgYW4gQVNJWCBVU0IgZXRoZXJuZXQgYWRhcHRlci4gTm93LCBoZXJlJ3MgdGhlIHJ1YjogaXMgdGhlIEFYODg3NzJBIGEgUEhZIGRldmljZSBhcyB3ZWxsPyBJdCdzIHVzZWQgYnkgdGhlIGBhc2l4YCBVU0IgZXRoZXJuZXQgZHJpdmVyLCBpc24ndCBpdD9cblxuUmlnaHQsIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgYGRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuY2AgZmlsZSwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIHRvIHNlZSBob3cgaXQncyBkZWZpbmVkIGFuZCBob3cgaXQncyBoYW5kbGVkLiBUaGF0J2xsIGJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgd2UgY2FuIGV4cGxvaXQgdGhpcyB0byB2YWxpZGF0ZSB0aGUgYHBoeS5yc2AgY2hhbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzUyOCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIyOjIxLjMyNTAyMTQ1NloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTAzMDEyMjI1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIweDAwM2IxODYxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIyOjIyLjIyODA0Mjk2MVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTkzNjIyNDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIEFYODg3OTZCIERyaXZlciBVc2FnZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBzdGF0dXMgb2YgYGRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jYC4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIHN1c3BlY3QgdGhpcyBpcyBhIFBIWSAoUGh5c2ljYWwgTGF5ZXIpIGRyaXZlciByZWxhdGVkIHRvIGEgbmV0d29yayBpbnRlcmZhY2UgY29udHJvbGxlci4gSSBpbW1lZGlhdGVseSBqdW1wIHRvIHRoZSBtb3N0IGxvZ2ljYWwgc3RlcDogZGl2aW5nIGludG8gdGhlIGNvZGUgaXRzZWxmLiBJJ2xsIG9wZW4gdXAgdGhhdCBmaWxlIHRvIHF1aWNrbHkgYXNzZXNzIGl0cyBjdXJyZW50IHJvbGUuIEkgd2FudCB0byBjaGVjayBpZiB0aGUgZHJpdmVyIGlzIGFjdHVhbGx5IGJlaW5nIHV0aWxpemVkIGFueXdoZXJlIHdpdGhpbiB0aGUgc3lzdGVtLiBJcyBpdCBhY3RpdmVseSBiZWluZyBjb21waWxlZCBhbmQgbGlua2VkLCBvciBpcyBpdCBtZXJlbHkgc2l0dGluZyB0aGVyZSwgcG90ZW50aWFsbHkgb3V0ZGF0ZWQgb3IgdW51c2VkPyBCYXNlZCBvbiB0aGUgcHJvamVjdCBJIGtub3cgdGhlcmUncyBhIHBvc3NpYmlsaXR5IGl0IGlzbid0IHVzZWQgYXQgYWxsIGFueW1vcmUuIFRpbWUgdG8gc2VlIHdoYXQncyBhY3R1YWxseSBnb2luZyBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODE0OCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIyOjI1LjIyMTY2ODg0MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMwNTk1NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiMHgwMDNiMTg2MVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jLTEyLVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jOjEzOiNkZWZpbmUgUEhZX0lEX0FTSVhfQVg4ODc3MkFcXHRcXHQweDAwM2IxODYxXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmMtMTQtI2RlZmluZSBQSFlfSURfQVNJWF9BWDg4NzcyQ1xcdFxcdDB4MDAzYjE4ODFcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzPTQxPWltcGwgRHJpdmVyIGZvciBQaHlBWDg4NzcyQSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy00My0gICAgY29uc3QgTkFNRTogXFx1MDAyNidzdGF0aWMgQ1N0ciA9IGNcXFwiQXNpeCBFbGVjdHJvbmljcyBBWDg4NzcyQVxcXCI7XFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM6NDQ6ICAgIGNvbnN0IFBIWV9ERVZJQ0VfSUQ6IERldmljZUlkID0gRGV2aWNlSWQ6Om5ld193aXRoX2V4YWN0X21hc2soMHgwMDNiMTg2MSk7XFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtNDUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIyOjI1LjI4NDczMzI2OVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzkwMTQ4NTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU3l6a2FsbGVyIEZ1enppbmcgUG90ZW50aWFsIG9mIGBheDg4Nzk2Yl9ydXN0LnJzYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBheDg4Nzk2Yl9ydXN0LnJzYCwgd2hpY2ggaXMgY2xlYXJseSBhIFBIWSBkcml2ZXIuIFRoZSBxdWVzdGlvbiBub3cgaXMsIGNhbiBTeXprYWxsZXIgZWZmZWN0aXZlbHkgZnV6eiB0aGlzPyBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCAqc2hvdWxkKiBiZSBwb3NzaWJsZS4gV2Uga25vdyBTeXprYWxsZXIgaGFzIHRoZSBgc3l6X3VzYl9jb25uZWN0YCBjYWxsLCB3aGljaCBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gZW11bGF0ZSBVU0IgZGV2aWNlcy4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gQW5kIHRoZW4gdGhlcmUncyB0aGUgYGFzaXhgIFVTQiBldGhlcm5ldCBkcml2ZXI7IGlmIGl0IHV0aWxpemVzIHBoeWxpYiwgdGhhdCdzIHBvdGVudGlhbGx5IHRoZSBsaW5rIHdlIG5lZWQuIFRoZSBgYXNpeGAgZHJpdmVyIG1pZ2h0IGF0dGFjaCB0byB0aGUgYGF4ODg3OTZiYCBQSFkuIFNvLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY29uZmlybSB3aGV0aGVyIGBhc2l4YCBpbmRlZWQgbGV2ZXJhZ2VzIHRoZSBwaHlsaWIgZnJhbWV3b3JrLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgY29ubmVjdGlvbiBiZWZvcmUgcHJvY2VlZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODY3NCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIyOjI5LjY3NDg4Mzk0NVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg4MTA0ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X2Nvbm5lY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYz0yNjE9c3RhdGljIGludCBheDg4MTcyYV9yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0zMTMtXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6MzE0OlxcdHByaXYtXFx1MDAzZXBoeWRldiA9IHBoeV9jb25uZWN0KGRldi1cXHUwMDNlbmV0LCBwcml2LVxcdTAwM2VwaHlfbmFtZSxcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0zMTUtXFx0XFx0XFx0XFx0ICAgXFx1MDAyNmF4ODgxNzJhX2FkanVzdF9saW5rLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmM9MTE0Nz1zdGF0aWMgaW50IHNtc2M5NXh4X2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jLTEyODQtXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmM6MTI4NTpcXHRyZXQgPSBwaHlfY29ubmVjdF9kaXJlY3QoZGV2LVxcdTAwM2VuZXQsIHBkYXRhLVxcdTAwM2VwaHlkZXYsXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI4Ni1cXHRcXHRcXHRcXHQgXFx1MDAyNnNtc2M5NXh4X2hhbmRsZV9saW5rX2NoYW5nZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjI6MjkuNzYzNjk5ODc3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTUxNjQyNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aGlua2luZzpcblxuKipFeGFtaW5pbmcgTmV0d29yayBEcml2ZXIgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGF4ODgxNzJhLmNgIGFuZCBzcGVjaWZpY2FsbHkgc2VlaW5nIGl0IHVzZSBgcGh5X2Nvbm5lY3RgLiBUaGF0IGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgcXVlc3Rpb246IGRvZXMgdGhlIGBhc2l4YCBkcml2ZXIsIHdoaWNoIGlzIGFub3RoZXIgY29tbW9uIFVTQiBFdGhlcm5ldCBhZGFwdGVyIGRyaXZlciwgYWxzbyB1dGlsaXplIHRoZSBQSFkgbGlicmFyeSAoYHBoeWxpYmApPyBJdCdzIGEga2V5IHF1ZXN0aW9uIGJlY2F1c2UgaXQgaGVscHMgbWUgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIHBvdGVudGlhbCBjb2RlIHJldXNlIGJldHdlZW4gZGlmZmVyZW50IFVTQiBFdGhlcm5ldCBkcml2ZXJzLiBJZiBgYXNpeGAgKmRvZXNuJ3QqIHVzZSBgcGh5bGliYCwgdGhlbiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgaXQgaGFuZGxlcyB0aGUgUEhZIGNvbm5lY3Rpb24gZGlmZmVyZW50bHksIGFuZCB3aHkgdGhhdCBkZXNpZ24gY2hvaWNlIHdhcyBtYWRlLiBBbHRlcm5hdGl2ZWx5LCBpZiBpdCAqZG9lcyosIHRoZW4gSSBjYW4gZXhwZWN0IGEgbGV2ZWwgb2YgY29uc2lzdGVuY3kgaW4gUEhZIG1hbmFnZW1lbnQgYWNyb3NzIHRoZXNlIGFkYXB0ZXIgZmFtaWxpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyNzIsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMjozMy4yMTg4NjcxNzZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNDM3Mjg4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfY29ubmVjdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvYXNpeFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjI6MzMuMjgyMzE0MDk0WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMjM3MzE1ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBhc2l4X2RldmljZXMuYyBDb2RlKipcblxuT2theSwgdGltZSB0byBkaWcgaW4uIExldCdzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gYGRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbG9naWMgZm9yIHRob3NlIEFTSVgtYmFzZWQgVVNCIEV0aGVybmV0IGFkYXB0ZXJzIHNob3VsZCByZXNpZGUuIEl0J3MgdGhlIGdvLXRvIHBsYWNlIGZvciB1bmRlcnN0YW5kaW5nIHRoZWlyIHF1aXJrcywgaG93IHRoZXkncmUgaW5pdGlhbGl6ZWQsIGFuZCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIHRoZSBVU0Igc3Vic3lzdGVtLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgZGV2aWNlLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcywgcHJvYmFibHkgc29tZSB2ZW5kb3IvcHJvZHVjdCBJRCBoYW5kbGluZywgYW5kIGRlZmluaXRlbHkgYSBzZXQgb2YgVVNCIGRlc2NyaXB0b3JzIGJlaW5nIHBhcnNlZC4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gd2hhdCB0aGUgZHJpdmVyJ3MgZG9pbmcgd2l0aCBkaWZmZXJlbnQgZW5kcG9pbnQgdHlwZXMuIEhvcGVmdWxseSwgdGhlIGNvZGUgaXMgd2VsbC1zdHJ1Y3R1cmVkIGFuZCBkb2N1bWVudGVkLCBtYWtpbmcgaXQgZWFzaWVyIHRvIGZvbGxvdyB0aGUgZGF0YSBmbG93LiBNeSBnb2FsIGlzIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGRyaXZlcidzIGtleSBvcGVyYXRpb25hbCBzdGVwcyBhbmQgaWRlbnRpZnkgdGhlIGFyZWFzIHRoYXQgd2FycmFudCBjbG9zZXIgc2NydXRpbnkgb3IgcG90ZW50aWFsIG1vZGlmaWNhdGlvbiwgZGVwZW5kaW5nIG9uIHRoZSB0YXNrIGF0IGhhbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1MDYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMjozNi40MDYwNDkxNDFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4MTA0NDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTU5PXN0YXRpYyB2b2lkIGFzaXhfc2V0X25ldGRldl9kZXZfYWRkcihzdHJ1Y3QgdXNibmV0ICpkZXYsIHU4ICphZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY5LS8qIEdldCB0aGUgUEhZIElkZW50aWZpZXIgZnJvbSB0aGUgUEhZU0lEMSBcXHUwMDI2IFBIWVNJRDIgTUlJIHJlZ2lzdGVycyAqL1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MDpzdGF0aWMgdTMyIGFzaXhfZ2V0X3BoeWlkKHN0cnVjdCB1c2JuZXQgKmRldilcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzEte1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MjpcXHRpbnQgcGh5X3JlZztcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzM6XFx0dTMyIHBoeV9pZDtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzQtXFx0aW50IGk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc1LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NjpcXHQvKiBQb2xsIGZvciB0aGUgcmFyZSBjYXNlIHRoZSBGVyBvciBwaHkgaXNuJ3QgcmVhZHkgeWV0LiAgKi9cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzctXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIDEwMDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc4OlxcdFxcdHBoeV9yZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfUEhZU0lEMSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc5OlxcdFxcdGlmIChwaHlfcmVnIFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODAtXFx0XFx0XFx0cmV0dXJuIDA7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgxOlxcdFxcdGlmIChwaHlfcmVnICE9IDAgXFx1MDAyNlxcdTAwMjYgcGh5X3JlZyAhPSAweEZGRkYpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgyLVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTg1LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4NjpcXHRpZiAocGh5X3JlZyBcXHUwMDNjPSAwIHx8IHBoeV9yZWcgPT0gMHhGRkZGKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04Ny1cXHRcXHRyZXR1cm4gMDtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODgtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjg5OlxcdHBoeV9pZCA9IChwaHlfcmVnIFxcdTAwMjYgMHhmZmZmKSBcXHUwMDNjXFx1MDAzYyAxNjtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTAtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkxOlxcdHBoeV9yZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfUEhZU0lEMik7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkyOlxcdGlmIChwaHlfcmVnIFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTMtXFx0XFx0cmV0dXJuIDA7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk0LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5NTpcXHRwaHlfaWQgfD0gKHBoeV9yZWcgXFx1MDAyNiAweGZmZmYpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05Ni1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTc6XFx0cmV0dXJuIHBoeV9pZDtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTgtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTE3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGF4ODgxNzJfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xODktXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjE5MDpzdGF0aWMgdm9pZCBhc2l4X3BoeV9yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYsIHVuc2lnbmVkIGludCByZXNldF9iaXRzKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xOTEte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTE5My1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTk0OlxcdGFzaXhfbWRpb193cml0ZShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfQk1DUiwgcmVzZXRfYml0cyk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTE5NS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTk2OlxcdC8qIGdpdmUgcGh5X2lkIGEgY2hhbmNlIHRvIHByb2Nlc3MgcmVzZXQgKi9cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTk3LVxcdHVkZWxheSg1MDApO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTIwMC1cXHR3aGlsZSAodGltZW91dC0tKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjIwMTpcXHRcXHRpZiAoYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0JNQ1IpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTIwMi1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2IEJNQ1JfUkVTRVQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjA3LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyMDg6XFx0bmV0ZGV2X2VycihkZXYtXFx1MDAzZW5ldCwgXFxcIkJNQ1JfUkVTRVQgdGltZW91dCBvbiBwaHlfaWQgJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjIwOTpcXHRcXHQgICBkZXYtXFx1MDAzZW1paS5waHlfaWQpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yMTAtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTIxMj1zdGF0aWMgaW50IGF4ODgxNzJfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI1MC1cXHRkZXYtXFx1MDAzZW1paS5tZGlvX3dyaXRlID0gYXNpeF9tZGlvX3dyaXRlO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyNTE6XFx0ZGV2LVxcdTAwM2VtaWkucGh5X2lkX21hc2sgPSAweDNmO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNTItXFx0ZGV2LVxcdTAwM2VtaWkucmVnX251bV9tYXNrID0gMHgxZjtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjUzLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyNTQ6XFx0ZGV2LVxcdTAwM2VtaWkucGh5X2lkID0gYXNpeF9yZWFkX3BoeV9hZGRyKGRldiwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjI1NTpcXHRpZiAoZGV2LVxcdTAwM2VtaWkucGh5X2lkIFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjU2OlxcdFxcdHJldHVybiBkZXYtXFx1MDAzZW1paS5waHlfaWQ7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI1Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNjItXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjI2MzpcXHRhc2l4X3BoeV9yZXNldChkZXYsIEJNQ1JfUkVTRVQpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyNjQ6XFx0YXNpeF9tZGlvX3dyaXRlKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIE1JSV9BRFZFUlRJU0UsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI2NS1cXHRcXHRBRFZFUlRJU0VfQUxMIHwgQURWRVJUSVNFX0NTTUEgfCBBRFZFUlRJU0VfUEFVU0VfQ0FQKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0yOTQ9c3RhdGljIHZvaWQgYXg4ODc3Ml9ldGh0b29sX2dldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI5OS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MzAwOlxcdHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbShwcml2LVxcdTAwM2VwaHlsaW5rLCBwYXVzZSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTMwMS19XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MzAzPXN0YXRpYyBpbnQgYXg4ODc3Ml9ldGh0b29sX3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTMwOC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MzA5OlxcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0ocHJpdi1cXHUwMDNlcGh5bGluaywgcGF1c2UpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zMTAtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTMxMj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGF4ODg3NzJfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzIxLVxcdC5zZXRfZWVwcm9tXFx0XFx0PSBhc2l4X3NldF9lZXByb20sXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjMyMjpcXHQubndheV9yZXNldFxcdFxcdD0gcGh5X2V0aHRvb2xfbndheV9yZXNldCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MzIzOlxcdC5nZXRfbGlua19rc2V0dGluZ3NcXHQ9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MzI0OlxcdC5zZXRfbGlua19rc2V0dGluZ3NcXHQ9IHBoeV9ldGh0b29sX3NldF9saW5rX2tzZXR0aW5ncyxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzI1LVxcdC5zZWxmX3Rlc3RcXHRcXHQ9IG5ldF9zZWxmdGVzdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0zMzI9c3RhdGljIGludCBheDg4NzcyX3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zNTMtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjM1NDpcXHRwaHlsaW5rX3N0YXJ0KHByaXYtXFx1MDAzZXBoeWxpbmspO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zNTUtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MzYyPXN0YXRpYyBpbnQgYXg4ODc3Ml9od19yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBpbl9wbSlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zNzMtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjM3NDpcXHRyZXQgPSBhc2l4X3dyaXRlX2NtZChkZXYsIEFYX0NNRF9TV19QSFlfU0VMRUNULCBwcml2LVxcdTAwM2VlbWJkX3BoeSxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzc1LVxcdFxcdFxcdCAgICAgMCwgMCwgTlVMTCwgaW5fcG0pO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTM4MC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MzgxOlxcdGlmIChwcml2LVxcdTAwM2VlbWJkX3BoeSkge1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zODItXFx0XFx0cmV0ID0gYXNpeF9zd19yZXNldChkZXYsIEFYX1NXUkVTRVRfSVBQRCwgaW5fcG0pO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQwNi1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NDA3OlxcdGlmIChpbl9wbSBcXHUwMDI2XFx1MDAyNiAoIWFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDA4LVxcdFxcdFxcdFxcdFxcdCAgIE1JSV9QSFlTSUQxKSkpe1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTQ1Nj1zdGF0aWMgaW50IGF4ODg3NzJhX2h3X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldiwgaW50IGluX3BtKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ1OS1cXHRzdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSAqcHJpdiA9IGRldi1cXHUwMDNlZHJpdmVyX3ByaXY7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjQ2MDpcXHR1MTYgcnhfY3RsLCBwaHkxNGgsIHBoeTE1aCwgcGh5MTZoO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00NjEtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00NjYtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjQ2NzpcXHRyZXQgPSBhc2l4X3dyaXRlX2NtZChkZXYsIEFYX0NNRF9TV19QSFlfU0VMRUNULCBwcml2LVxcdTAwM2VlbWJkX3BoeSB8XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ2OC1cXHRcXHRcXHQgICAgIEFYX1BIWVNFTF9TU0VOLCAwLCAwLCBOVUxMLCBpbl9wbSk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDk2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo0OTc6XFx0aWYgKGluX3BtIFxcdTAwMjZcXHUwMDI2ICghYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00OTgtXFx0XFx0XFx0XFx0XFx0ICAgTUlJX1BIWVNJRDEpKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxMi1cXHRcXHQvKiBDaGVjayBpZiB0aGUgUEhZIHJlZ2lzdGVycyBoYXZlIGRlZmF1bHQgc2V0dGluZ3MgKi9cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTEzOlxcdFxcdHBoeTE0aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE0LVxcdFxcdFxcdFxcdFxcdCAgICAgQVg4ODc3MkFfUEhZMTRIKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTE1OlxcdFxcdHBoeTE1aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE2LVxcdFxcdFxcdFxcdFxcdCAgICAgQVg4ODc3MkFfUEhZMTVIKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTE3OlxcdFxcdHBoeTE2aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE4LVxcdFxcdFxcdFxcdFxcdCAgICAgQVg4ODc3MkFfUEhZMTZIKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MjEtXFx0XFx0XFx0ICAgXFxcIjc3MmFfaHdfcmVzZXQ6IE1SMjA9MHgleCBNUjIxPTB4JXggTVIyMj0weCV4XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MjI6XFx0XFx0XFx0ICAgcGh5MTRoLCBwaHkxNWgsIHBoeTE2aCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUyMy1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTI0LVxcdFxcdC8qIFJlc3RvcmUgUEhZIHJlZ2lzdGVycyBkZWZhdWx0IHNldHRpbmcgaWYgbm90ICovXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUyNTpcXHRcXHRpZiAocGh5MTRoICE9IEFYODg3NzJBX1BIWTE0SF9ERUZBVUxUKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MjY6XFx0XFx0XFx0YXNpeF9tZGlvX3dyaXRlX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTI3LVxcdFxcdFxcdFxcdFxcdCAgICAgQVg4ODc3MkFfUEhZMTRILFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MjgtXFx0XFx0XFx0XFx0XFx0ICAgICBBWDg4NzcyQV9QSFkxNEhfREVGQVVMVCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUyOTpcXHRcXHRpZiAocGh5MTVoICE9IEFYODg3NzJBX1BIWTE1SF9ERUZBVUxUKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MzA6XFx0XFx0XFx0YXNpeF9tZGlvX3dyaXRlX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTMxLVxcdFxcdFxcdFxcdFxcdCAgICAgQVg4ODc3MkFfUEhZMTVILFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MzItXFx0XFx0XFx0XFx0XFx0ICAgICBBWDg4NzcyQV9QSFkxNUhfREVGQVVMVCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUzMzpcXHRcXHRpZiAocGh5MTZoICE9IEFYODg3NzJBX1BIWTE2SF9ERUZBVUxUKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MzQ6XFx0XFx0XFx0YXNpeF9tZGlvX3dyaXRlX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTM1LVxcdFxcdFxcdFxcdFxcdCAgICAgQVg4ODc3MkFfUEhZMTZILFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTU4Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGF4ODg3NzJfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01OTEtXFx0Lm5kb192YWxpZGF0ZV9hZGRyXFx0PSBldGhfdmFsaWRhdGVfYWRkcixcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTkyOlxcdC5uZG9fZXRoX2lvY3RsXFx0XFx0PSBwaHlfZG9faW9jdGxfcnVubmluZyxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTkzLVxcdC5uZG9fc2V0X3J4X21vZGUgICAgICAgID0gYXNpeF9zZXRfbXVsdGljYXN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTU5Nj1zdGF0aWMgdm9pZCBheDg4NzcyX3N1c3BlbmQoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTYwMi1cXHRcXHRydG5sX2xvY2soKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NjAzOlxcdFxcdHBoeWxpbmtfc3VzcGVuZChwcml2LVxcdTAwM2VwaHlsaW5rLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTYwNC1cXHRcXHRydG5sX3VubG9jaygpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTYyMi0gKlxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2MjM6ICogLSBUaGUgTUFDIGRyaXZlciBtdXN0IGhvbGQgUlROTCB3aGVuIGNhbGxpbmcgcGh5bGluayBpbnRlcmZhY2VzIHN1Y2ggYXNcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NjI0OiAqICAgcGh5bGlua19zdXNwZW5kKCkvcmVzdW1lKCkuIFRob3NlIGNhbGxzIHdpbGwgYWxzbyBwZXJmb3JtIE1ESU8gSS9PLlxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02MjUtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz02NDI9c3RhdGljIHZvaWQgYXg4ODc3Ml9yZXN1bWUoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY1Mi1cXHRcXHRydG5sX2xvY2soKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NjUzOlxcdFxcdHBoeWxpbmtfcmVzdW1lKHByaXYtXFx1MDAzZXBoeWxpbmspO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02NTQtXFx0XFx0cnRubF91bmxvY2soKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz02Njk9c3RhdGljIGludCBheDg4NzcyX2luaXRfbWRpbyhzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjgxLVxcdHByaXYtXFx1MDAzZW1kaW8tXFx1MDAzZW5hbWUgPSBcXFwiQXNpeCBNRElPIEJ1c1xcXCI7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjY4MjpcXHRwcml2LVxcdTAwM2VtZGlvLVxcdTAwM2VwaHlfbWFzayA9IH4oQklUKHByaXYtXFx1MDAzZXBoeV9hZGRyIFxcdTAwMjYgMHgxZikgfCBCSVQoQVhfRU1CRF9QSFlfQUREUikpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02ODMtXFx0LyogbWlpIGJ1cyBuYW1lIGlzIHVzYi1cXHUwMDNjdXNiIGJ1cyBudW1iZXJcXHUwMDNlLVxcdTAwM2N1c2IgZGV2aWNlIG51bWJlclxcdTAwM2UgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz02OTc9c3RhdGljIHZvaWQgYXg4ODc3Ml9tZGlvX3VucmVnaXN0ZXIoc3RydWN0IGFzaXhfY29tbW9uX3ByaXZhdGUgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzAyLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MDM6c3RhdGljIGludCBheDg4NzcyX2luaXRfcGh5KHN0cnVjdCB1c2JuZXQgKmRldilcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MDctXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjcwODpcXHRwcml2LVxcdTAwM2VwaHlkZXYgPSBtZGlvYnVzX2dldF9waHkocHJpdi1cXHUwMDNlbWRpbywgcHJpdi1cXHUwMDNlcGh5X2FkZHIpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MDk6XFx0aWYgKCFwcml2LVxcdTAwM2VwaHlkZXYpIHtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzEwLVxcdFxcdG5ldGRldl9lcnIoZGV2LVxcdTAwM2VuZXQsIFxcXCJDb3VsZCBub3QgZmluZCBQSFlcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcxMy1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzE0OlxcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkocHJpdi1cXHUwMDNlcGh5bGluaywgcHJpdi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzE1LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MTktXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjcyMDpcXHRwaHlfc3VzcGVuZChwcml2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MjE6XFx0cHJpdi1cXHUwMDNlcGh5ZGV2LVxcdTAwM2VtYWNfbWFuYWdlZF9wbSA9IHRydWU7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcyMi1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzIzOlxcdHBoeV9hdHRhY2hlZF9pbmZvKHByaXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcyNC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzI1OlxcdGlmIChwcml2LVxcdTAwM2VlbWJkX3BoeSlcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzI2LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTczMS1cXHQgKi9cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzMyOlxcdHByaXYtXFx1MDAzZXBoeWRldl9pbnQgPSBtZGlvYnVzX2dldF9waHkocHJpdi1cXHUwMDNlbWRpbywgQVhfRU1CRF9QSFlfQUREUik7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjczMzpcXHRpZiAoIXByaXYtXFx1MDAzZXBoeWRldl9pbnQpIHtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzM0LVxcdFxcdHJ0bmxfbG9jaygpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MzU6XFx0XFx0cGh5bGlua19kaXNjb25uZWN0X3BoeShwcml2LVxcdTAwM2VwaHlsaW5rKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzM2LVxcdFxcdHJ0bmxfdW5sb2NrKCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzQwLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NDE6XFx0cHJpdi1cXHUwMDNlcGh5ZGV2X2ludC1cXHUwMDNlbWFjX21hbmFnZWRfcG0gPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NDI6XFx0cGh5X3N1c3BlbmQocHJpdi1cXHUwMDNlcGh5ZGV2X2ludCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc0My1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03NDYtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc0NzpzdGF0aWMgdm9pZCBheDg4NzcyX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NDg6XFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc0OS17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzUyLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NTM6c3RhdGljIHZvaWQgYXg4ODc3Ml9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NTQ6XFx0XFx0XFx0XFx0IHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03NTUte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc2MS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzYyOnN0YXRpYyB2b2lkIGF4ODg3NzJfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc2MzpcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzY0OlxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgbW9kZSwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzY1LVxcdFxcdFxcdCAgICAgICBpbnQgc3BlZWQsIGludCBkdXBsZXgsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzkyLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3OTM6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgYXg4ODc3Ml9waHlsaW5rX21hY19vcHMgPSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc5NC1cXHQubWFjX2NvbmZpZyA9IGF4ODg3NzJfbWFjX2NvbmZpZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03OTgtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc5OTpzdGF0aWMgaW50IGF4ODg3NzJfcGh5bGlua19zZXR1cChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgwMC17XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgwMS1cXHRzdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSAqcHJpdiA9IGRldi1cXHUwMDNlZHJpdmVyX3ByaXY7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwMjpcXHRwaHlfaW50ZXJmYWNlX3QgcGh5X2lmX21vZGU7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwMzpcXHRzdHJ1Y3QgcGh5bGluayAqcGh5bGluaztcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODA0LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MDU6XFx0cHJpdi1cXHUwMDNlcGh5bGlua19jb25maWcuZGV2ID0gXFx1MDAyNmRldi1cXHUwMDNlbmV0LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwNjpcXHRwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZy50eXBlID0gUEhZTElOS19ORVRERVY7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwNzpcXHRwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzID0gTUFDX1NZTV9QQVVTRSB8IE1BQ19BU1lNX1BBVVNFIHxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODA4LVxcdFxcdE1BQ18xMCB8IE1BQ18xMDA7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODEwLVxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgxMTpcXHRcXHQgIHByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODEyLVxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfUk1JSSxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODEzOlxcdFxcdCAgcHJpdi1cXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTQtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgxNTpcXHRpZiAocHJpdi1cXHUwMDNlZW1iZF9waHkpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgxNjpcXHRcXHRwaHlfaWZfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTDtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODE3LVxcdGVsc2VcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODE4OlxcdFxcdHBoeV9pZl9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgxOS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODIwOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cHJpdi1cXHUwMDNlcGh5bGlua19jb25maWcsIGRldi1cXHUwMDNlbmV0LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjE6XFx0XFx0XFx0XFx0IHBoeV9pZl9tb2RlLCBcXHUwMDI2YXg4ODc3Ml9waHlsaW5rX21hY19vcHMpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjI6XFx0aWYgKElTX0VSUihwaHlsaW5rKSlcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODIzOlxcdFxcdHJldHVybiBQVFJfRVJSKHBoeWxpbmspO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MjQtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgyNTpcXHRwcml2LVxcdTAwM2VwaHlsaW5rID0gcGh5bGluaztcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODI2LVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTgyOT1zdGF0aWMgaW50IGF4ODg3NzJfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTg3Ny1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODc4OlxcdHJldCA9IGFzaXhfcmVhZF9waHlfYWRkcihkZXYsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04NzktXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODgxLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4ODI6XFx0cHJpdi1cXHUwMDNlcGh5X2FkZHIgPSByZXQ7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjg4MzpcXHRwcml2LVxcdTAwM2VlbWJkX3BoeSA9ICgocHJpdi1cXHUwMDNlcGh5X2FkZHIgXFx1MDAyNiAweDFmKSA9PSBBWF9FTUJEX1BIWV9BRERSKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODg0LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkxMy1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTE0OlxcdHByaXYtXFx1MDAzZXByZXN2ZF9waHlfYm1jciA9IDA7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkxNTpcXHRwcml2LVxcdTAwM2VwcmVzdmRfcGh5X2FkdmVydGlzZSA9IDA7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkxNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MjAtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkyMTpcXHRyZXQgPSBheDg4NzcyX3BoeWxpbmtfc2V0dXAoZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTIyLVxcdGlmIChyZXQpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkyMzpcXHRcXHRnb3RvIHBoeWxpbmtfZXJyO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MjQtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkyNTpcXHRyZXQgPSBheDg4NzcyX2luaXRfcGh5KGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkyNi1cXHRpZiAocmV0KVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5Mjc6XFx0XFx0Z290byBpbml0cGh5X2VycjtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTI4LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkzMS1cXHQgKiB0aGF0IGNvdWxkIGRlYWRsb2NrIChhdXRvcmVzdW1lIHVuZGVyIFJUTkwgd2hpbGUgVVNCIFBNIGxvY2tcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTMyOlxcdCAqIGlzIGhlbGQsIHBoeWxpbmsvTURJTyB3YW50cyBSVE5MKS5cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTMzLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkzNy1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTM4OmluaXRwaHlfZXJyOlxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5Mzk6XFx0cGh5bGlua19kZXN0cm95KHByaXYtXFx1MDAzZXBoeWxpbmspO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5NDA6cGh5bGlua19lcnI6XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk0MS1cXHRheDg4NzcyX21kaW9fdW5yZWdpc3Rlcihwcml2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz05NDY9c3RhdGljIGludCBheDg4NzcyX3N0b3Aoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk0OS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTUwOlxcdHBoeWxpbmtfc3RvcChwcml2LVxcdTAwM2VwaHlsaW5rKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTUxLVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTk1NT1zdGF0aWMgdm9pZCBheDg4NzcyX3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk1OS1cXHRydG5sX2xvY2soKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTYwOlxcdHBoeWxpbmtfZGlzY29ubmVjdF9waHkocHJpdi1cXHUwMDNlcGh5bGluayk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk2MS1cXHRydG5sX3VubG9jaygpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5NjI6XFx0cGh5bGlua19kZXN0cm95KHByaXYtXFx1MDAzZXBoeWxpbmspO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NjMtXFx0YXg4ODc3Ml9tZGlvX3VucmVnaXN0ZXIocHJpdik7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9OTc1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYXg4ODE3OF9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05ODktXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk5MDpzdGF0aWMgaW50IG1hcnZlbGxfcGh5X2luaXQoc3RydWN0IHVzYm5ldCAqZGV2KVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTEte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk5NC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTk1OlxcdG5ldGRldl9kYmcoZGV2LVxcdTAwM2VuZXQsIFxcXCJtYXJ2ZWxsX3BoeV9pbml0KClcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTYtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk5NzpcXHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfTUFSVkVMTF9TVEFUVVMpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTgtXFx0bmV0ZGV2X2RiZyhkZXYtXFx1MDAzZW5ldCwgXFxcIk1JSV9NQVJWRUxMX1NUQVRVUyA9IDB4JTA0eFxcXFxuXFxcIiwgcmVnKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk5LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDAwOlxcdGFzaXhfbWRpb193cml0ZShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfTUFSVkVMTF9DVFJMLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDAxLVxcdFxcdFxcdE1BUlZFTExfQ1RSTF9SWERFTEFZIHwgTUFSVkVMTF9DVFJMX1RYREVMQVkpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMDMtXFx0aWYgKGRhdGEtXFx1MDAzZWxlZG1vZGUpIHtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAwNDpcXHRcXHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDA1LVxcdFxcdFxcdE1JSV9NQVJWRUxMX0xFRF9DVFJMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDA5LVxcdFxcdHJlZyB8PSAoMSArIDB4MDEwMCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMTA6XFx0XFx0YXNpeF9tZGlvX3dyaXRlKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMTEtXFx0XFx0XFx0TUlJX01BUlZFTExfTEVEX0NUUkwsIHJlZyk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMTItXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMTM6XFx0XFx0cmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAxNC1cXHRcXHRcXHRNSUlfTUFSVkVMTF9MRURfQ1RSTCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyMC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAyMTpzdGF0aWMgaW50IHJ0bDgyMTFjbF9waHlfaW5pdChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMjQtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMjU6XFx0bmV0ZGV2X2RiZyhkZXYtXFx1MDAzZW5ldCwgXFxcInJ0bDgyMTFjbF9waHlfaW5pdCgpXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyNi1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAyNzpcXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDB4MDAwNSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMjg6XFx0YXNpeF9tZGlvX3dyaXRlIChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCAweDBjLCAwKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAyOTpcXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MDEsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMzA6XFx0XFx0YXNpeF9tZGlvX3JlYWQgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MDEpIHwgMHgwMDgwKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzMTpcXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDApO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDMyLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDMzLVxcdGlmIChkYXRhLVxcdTAwM2VsZWRtb2RlID09IDEyKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMzQ6XFx0XFx0YXNpeF9tZGlvX3dyaXRlIChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCAweDFmLCAweDAwMDIpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDM1OlxcdFxcdGFzaXhfbWRpb193cml0ZSAoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgMHgxYSwgMHgwMGNiKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzNjpcXHRcXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDApO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDM3LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMDQyPXN0YXRpYyBpbnQgbWFydmVsbF9sZWRfc3RhdHVzKHN0cnVjdCB1c2JuZXQgKmRldiwgdTE2IHNwZWVkKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDQzLXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTA0NDpcXHR1MTYgcmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUFSVkVMTF9MRURfTUFOVUFMKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTA0NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDYyLVxcdG5ldGRldl9kYmcoZGV2LVxcdTAwM2VuZXQsIFxcXCJtYXJ2ZWxsX2xlZF9zdGF0dXMoKSB3cml0aW5nIDB4JTA0eFxcXFxuXFxcIiwgcmVnKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTA2MzpcXHRhc2l4X21kaW9fd3JpdGUoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUFSVkVMTF9MRURfTUFOVUFMLCByZWcpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDY0LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTEwNjg9c3RhdGljIGludCBheDg4MTc4X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDc0LVxcdGludCBncGlvMCA9IDA7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwNzU6XFx0dTMyIHBoeWlkO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDc2LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwOTYtXFx0aWYgKGVlcHJvbSA9PSBjcHVfdG9fbGUxNigweGZmZmYpKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwOTc6XFx0XFx0ZGF0YS1cXHUwMDNlcGh5bW9kZSA9IFBIWV9NT0RFX01BUlZFTEw7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwOTgtXFx0XFx0ZGF0YS1cXHUwMDNlbGVkbW9kZSA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTEwMC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTAxOlxcdFxcdGRhdGEtXFx1MDAzZXBoeW1vZGUgPSBsZTE2X3RvX2NwdShlZXByb20pIFxcdTAwMjYgMHg3RjtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTEwMi1cXHRcXHRkYXRhLVxcdTAwM2VsZWRtb2RlID0gbGUxNl90b19jcHUoZWVwcm9tKSBcXHUwMDNlXFx1MDAzZSA4O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExMDQtXFx0fVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTA1OlxcdG5ldGRldl9kYmcoZGV2LVxcdTAwM2VuZXQsIFxcXCJHUElPMDogJWQsIFBoeU1vZGU6ICVkXFxcXG5cXFwiLCBncGlvMCwgZGF0YS1cXHUwMDNlcGh5bW9kZSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExMDYtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTExNC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTE1OlxcdFxcdG5ldGRldl9kYmcoZGV2LVxcdTAwM2VuZXQsIFxcXCJncGlvIHBoeW1vZGUgPT0gMSBwYXRoXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTExNi1cXHRcXHRhc2l4X3dyaXRlX2dwaW8oZGV2LCBBWF9HUElPX0dQTzFFTiwgMzAsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExMjAtXFx0LyogUmVhZCBQSFlJRCByZWdpc3RlciAqQUZURVIqIHBvd2VyaW5nIHVwIFBIWSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTIxOlxcdHBoeWlkID0gYXNpeF9nZXRfcGh5aWQoZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTEyMjpcXHRuZXRkZXZfZGJnKGRldi1cXHUwMDNlbmV0LCBcXFwiUEhZSUQ9MHglMDh4XFxcXG5cXFwiLCBwaHlpZCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExMjMtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTEzNC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTEzNTpcXHRpZiAoZGF0YS1cXHUwMDNlcGh5bW9kZSA9PSBQSFlfTU9ERV9NQVJWRUxMKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjExMzY6XFx0XFx0bWFydmVsbF9waHlfaW5pdChkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTM3LVxcdFxcdG1zbGVlcCg2MCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjExMzg6XFx0fSBlbHNlIGlmIChkYXRhLVxcdTAwM2VwaHltb2RlID09IFBIWV9NT0RFX1JUTDgyMTFDTClcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTEzOTpcXHRcXHRydGw4MjExY2xfcGh5X2luaXQoZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTE0MC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTE0MTpcXHRhc2l4X3BoeV9yZXNldChkZXYsIEJNQ1JfUkVTRVQgfCBCTUNSX0FORU5BQkxFKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTE0MjpcXHRhc2l4X21kaW9fd3JpdGUoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0FEVkVSVElTRSxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTE0My1cXHRcXHRcXHRBRFZFUlRJU0VfQUxMIHwgQURWRVJUSVNFX0NTTUEgfCBBRFZFUlRJU0VfUEFVU0VfQ0FQKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTE0NDpcXHRhc2l4X21kaW9fd3JpdGUoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0NUUkwxMDAwLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTQ1LVxcdFxcdFxcdEFEVkVSVElTRV8xMDAwRlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTE2ND1zdGF0aWMgaW50IGF4ODgxNzhfbGlua19yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTE5Ni1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTE5NzpcXHRpZiAoZGF0YS1cXHUwMDNlcGh5bW9kZSA9PSBQSFlfTU9ERV9NQVJWRUxMIFxcdTAwMjZcXHUwMDI2IGRhdGEtXFx1MDAzZWxlZG1vZGUpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExOTgtXFx0XFx0bWFydmVsbF9sZWRfc3RhdHVzKGRldiwgc3BlZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTEyNzE9c3RhdGljIGludCBheDg4MTc4X2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMjkyLVxcdGRldi1cXHUwMDNlbWlpLm1kaW9fd3JpdGUgPSBhc2l4X21kaW9fd3JpdGU7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEyOTM6XFx0ZGV2LVxcdTAwM2VtaWkucGh5X2lkX21hc2sgPSAweDFmO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMjk0LVxcdGRldi1cXHUwMDNlbWlpLnJlZ19udW1fbWFzayA9IDB4ZmY7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTI5Ni1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTI5NzpcXHRkZXYtXFx1MDAzZW1paS5waHlfaWQgPSBhc2l4X3JlYWRfcGh5X2FkZHIoZGV2LCB0cnVlKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTI5ODpcXHRpZiAoZGV2LVxcdTAwM2VtaWkucGh5X2lkIFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTI5OTpcXHRcXHRyZXR1cm4gZGV2LVxcdTAwM2VtaWkucGh5X2lkO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMzAwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMjozNi40NzQxNTg1MzlaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzg5NjIyOTY3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgQVg4ODc3MiBEcml2ZXIgYW5kIFN5emthbGxlciBUZXN0aW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBzZWUsIGBheDg4NzcyX2luaXRfcGh5YCByZWxpZXMgb24gcGh5bGliLCBzcGVjaWZpY2FsbHkgdGhyb3VnaCBgbWRpb2J1c19nZXRfcGh5YCBhbmQgYHBoeWxpbmtfY29ubmVjdF9waHlgLiBUaGVuLCBgYXg4ODc3Ml9iaW5kYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBpbml0aWFsaXplcyB0aGUgUEhZIHZpYSBgYXg4ODc3Ml9pbml0X3BoeWAgYW5kIGJpbmRzIHdpdGggdGhlIGBheDg4NzcyYCBkcml2ZXIuIFNvIGZhciwgc28gZ29vZC4gTm93LCB0aGUgaW50ZXJlc3RpbmcgcGFydCBpcyB0aGUgUEhZIGRyaXZlciBpdHNlbGYsIGBheDg4Nzk2Yl9ydXN0LnJzYCwgd2hpY2ggcmVnaXN0ZXJzIGZvciBgUGh5QVg4ODc3MkFgLCBgUGh5QVg4ODc3MkNgLCBhbmQgYFBoeUFYODg3OTZCYC4gQW5kLCBsZXQncyBub3QgZm9yZ2V0IGBheDg4NzcyYV9od19yZXNldGAgbGl2ZXMgaW4gYGFzaXhfZGV2aWNlcy5jYC5cblxuUmlnaHQsIHRoaXMgbG9va3MgbGlrZSBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gU3l6a2FsbGVyIHNob3VsZCBiZSBhYmxlIHRvIHRyaWdnZXIgdGhpcyBzZXR1cCBieSBlbXVsYXRpbmcgYW4gQVNJWCBVU0IgZGV2aWNlLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiBTeXprYWxsZXIgdGVzdCBSdXN0IGNvZGU/IFllcywgaXQgY2FuLCBhcyBsb25nIGFzIFJ1c3Qgc3VwcG9ydCBpcyBlbmFibGVkIGluIHRoZSBrZXJuZWwgY29uZmlnLlxuXG5TbywgaG93IGRvIHdlIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSBSdXN0IFBIWSBkcml2ZXIgZW5hYmxlZD8gV2UgbmVlZCB0byBnaXZlIFN5emthbGxlciB0aGUgcHJvcGVyIGBFbmFibGVDb25maWdzYC4gSXQgbG9va3MgbGlrZSBgQVg4ODc5NkJfUlVTVF9QSFlgIGFuZCBgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TYCB3aWxsIGJlIGNydWNpYWwuIFdhaXQsIGBBWDg4Nzk2Ql9SVVNUX1BIWWAgZGVwZW5kcyBvbiBgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TYCBhbmQgYEFYODg3OTZCX1BIWWAgYW5kIGBSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlNgIGRlcGVuZHMgb24gYFJVU1RgIGFuZCBgUEhZTElCPXlgLlxuXG5UaHVzLCBteSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBuZWVkcyB0byBpbmNsdWRlIGBBWDg4Nzk2Ql9SVVNUX1BIWWAsIGBSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlNgLCBhbmQgYFJVU1RgLiBBbmQsIGBSVVNUYCBpcyBsaWtlbHkgYSBtYWpvciBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IFN5emthbGxlciB3aWxsIGhhdmUgaXQgZW5hYmxlZCBieSBkZWZhdWx0LCBvciB0aGF0IHdlIGNhbiBleHBsaWNpdGx5IHJlcXVlc3QgaXQuIFdlIG5lZWQgdG8gY29uZmlybSB0aGF0IGBSVVNUYCBpcyBpbmRlZWQgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiBuYW1lLCBidXQgdGhpcyBsb29rcyBwcm9taXNpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNDU0LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIyOjQ0LjM3MDM5MTgzMVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMxOTIyMTQ0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUlVTVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9ydXN0L2dlbmVyYWwtaW5mb3JtYXRpb24ucnN0PTE1Nj1udW1lcmljYWwgY29tcGFyaXNvbnMsIG9uZSBtYXkgZGVmaW5lIGEgbmV3IEtjb25maWcgc3ltYm9sOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9ydXN0L2dlbmVyYWwtaW5mb3JtYXRpb24ucnN0LTE1OS1cXG5Eb2N1bWVudGF0aW9uL3J1c3QvZ2VuZXJhbC1pbmZvcm1hdGlvbi5yc3Q6MTYwOlxcdGNvbmZpZyBSVVNUQ19IQVNfU1BBTl9GSUxFXFxuRG9jdW1lbnRhdGlvbi9ydXN0L2dlbmVyYWwtaW5mb3JtYXRpb24ucnN0LTE2MS1cXHRcXHRkZWZfYm9vbCBSVVNUQ19WRVJTSU9OIFxcdTAwM2U9IDEwODgwMFxcbi0tXFxuYXJjaC9hcm02NC9LY29uZmlnPTI9Y29uZmlnIEFSTTY0XFxuLS1cXG5hcmNoL2FybTY0L0tjb25maWctMjY0LVxcbmFyY2gvYXJtNjQvS2NvbmZpZzoyNjU6Y29uZmlnIFJVU1RDX1NVUFBPUlRTX0FSTTY0XFxuYXJjaC9hcm02NC9LY29uZmlnLTI2Ni1cXHRkZWZfYm9vbCB5XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnPTM0Mj1jb25maWcgQ0NfSEFTX0FOTk9UQVRFX1RBQkxFSlVNUFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy0zNDQtXFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZzozNDU6Y29uZmlnIFJVU1RDX0hBU19BTk5PVEFURV9UQUJMRUpVTVBcXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnLTM0Ni1cXHRkZXBlbmRzIG9uIFJVU1RcXG4tLVxcbmFyY2gvcmlzY3YvS2NvbmZpZz0xMz1jb25maWcgUklTQ1ZcXG4tLVxcbmFyY2gvcmlzY3YvS2NvbmZpZy0yMzQtXFxuYXJjaC9yaXNjdi9LY29uZmlnOjIzNTpjb25maWcgUlVTVENfU1VQUE9SVFNfUklTQ1ZcXG5hcmNoL3Jpc2N2L0tjb25maWctMjM2LVxcdGRlZl9ib29sIHlcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZz0yOD1jb25maWcgRldfTE9BREVSX0RFQlVHXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMzctXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjM4OmNvbmZpZyBSVVNUX0ZXX0xPQURFUl9BQlNUUkFDVElPTlNcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMzktXFx0Ym9vbCBcXFwiUnVzdCBGaXJtd2FyZSBMb2FkZXIgYWJzdHJhY3Rpb25zXFxcIlxcbi0tXFxuZHJpdmVycy9md2N0bC9LY29uZmlnPTExPWlmIEZXQ1RMXFxuZHJpdmVycy9md2N0bC9LY29uZmlnLTEyLVxcbmRyaXZlcnMvZndjdGwvS2NvbmZpZzoxMzpjb25maWcgUlVTVF9GV0NUTF9BQlNUUkFDVElPTlNcXG5kcml2ZXJzL2Z3Y3RsL0tjb25maWctMTQtXFx0Ym9vbCBcXFwiUnVzdCBmd2N0bCBhYnN0cmFjdGlvbnNcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0yMTM9Y29uZmlnIERSTV9HUFVWTVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjIwLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjIyMTpjb25maWcgUlVTVF9EUk1fR1BVVk1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMjItXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MjY5PWNvbmZpZyBEUk1fR0VNX1NITUVNX0hFTFBFUlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjc3LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI3ODpjb25maWcgUlVTVF9EUk1fR0VNX1NITUVNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI3OS1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz01Nj1jb25maWcgRklYRURfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy02NC1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo2NTpjb25maWcgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNjYtICAgICAgICBib29sIFxcXCJSdXN0IFBIWUxJQiBhYnN0cmFjdGlvbnMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvcHdtL0tjb25maWc9ODQzPWNvbmZpZyBQV01fWElMSU5YXFxuLS1cXG5kcml2ZXJzL3B3bS9LY29uZmlnLTg1Ni1cXG5kcml2ZXJzL3B3bS9LY29uZmlnOjg1NzogY29uZmlnIFJVU1RfUFdNX0FCU1RSQUNUSU9OU1xcbmRyaXZlcnMvcHdtL0tjb25maWctODU4LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvdHR5L3NlcmRldi9LY29uZmlnPTU9bWVudWNvbmZpZyBTRVJJQUxfREVWX0JVU1xcbi0tXFxuZHJpdmVycy90dHkvc2VyZGV2L0tjb25maWctMTEtXFxuZHJpdmVycy90dHkvc2VyZGV2L0tjb25maWc6MTI6Y29uZmlnIFJVU1RfU0VSSUFMX0RFVl9CVVNfQUJTVFJBQ1RJT05TXFxuZHJpdmVycy90dHkvc2VyZGV2L0tjb25maWctMTMtXFx0Ym9vbCBcXFwiUnVzdCBTZXJpYWwgZGV2aWNlIGJ1cyBhYnN0cmFjdGlvbnNcXFwiXFxuLS1cXG5pbml0L0tjb25maWc9NTg9Y29uZmlnIExMRF9WRVJTSU9OXFxuLS1cXG5pbml0L0tjb25maWctNjItXFxuaW5pdC9LY29uZmlnOjYzOmNvbmZpZyBSVVNUQ19WRVJTSU9OXFxuaW5pdC9LY29uZmlnLTY0LVxcdGludFxcbi0tXFxuaW5pdC9LY29uZmlnLTY5LVxcbmluaXQvS2NvbmZpZzo3MDpjb25maWcgUlVTVF9JU19BVkFJTEFCTEVcXG5pbml0L0tjb25maWctNzEtXFx0ZGVmX2Jvb2wgJChzdWNjZXNzLCQoc3JjdHJlZSkvc2NyaXB0cy9ydXN0X2lzX2F2YWlsYWJsZS5zaClcXG4tLVxcbmluaXQvS2NvbmZpZy04MC1cXG5pbml0L0tjb25maWc6ODE6Y29uZmlnIFJVU1RDX0xMVk1fVkVSU0lPTlxcbmluaXQvS2NvbmZpZy04Mi1cXHRpbnRcXG4tLVxcbmluaXQvS2NvbmZpZy04NC1cXG5pbml0L0tjb25maWc6ODU6Y29uZmlnIFJVU1RDX0xMVk1fTUFKT1JfVkVSU0lPTlxcbmluaXQvS2NvbmZpZy04Ni1cXHRpbnRcXG4tLVxcbmluaXQvS2NvbmZpZy04OC1cXG5pbml0L0tjb25maWc6ODk6Y29uZmlnIFJVU1RDX0NMQU5HX0xMVk1fQ09NUEFUSUJMRVxcbmluaXQvS2NvbmZpZy05MC1cXHRib29sXFxuLS1cXG5pbml0L0tjb25maWc9MTc2PWNvbmZpZyBMRF9DQU5fVVNFX0tFRVBfSU5fT1ZFUkxBWVxcbi0tXFxuaW5pdC9LY29uZmlnLTE4MC1cXG5pbml0L0tjb25maWc6MTgxOmNvbmZpZyBSVVNUQ19IQVNfU1BBTl9GSUxFXFxuaW5pdC9LY29uZmlnLTE4Mi1cXHRkZWZfYm9vbCBSVVNUQ19WRVJTSU9OIFxcdTAwM2U9IDEwODgwMFxcbmluaXQvS2NvbmZpZy0xODMtXFxuaW5pdC9LY29uZmlnOjE4NDpjb25maWcgUlVTVENfSEFTX1VOTkVDRVNTQVJZX1RSQU5TTVVURVNcXG5pbml0L0tjb25maWctMTg1LVxcdGRlZl9ib29sIFJVU1RDX1ZFUlNJT04gXFx1MDAzZT0gMTA4ODAwXFxuaW5pdC9LY29uZmlnLTE4Ni1cXG5pbml0L0tjb25maWc6MTg3OmNvbmZpZyBSVVNUQ19IQVNfRklMRV9XSVRIX05VTFxcbmluaXQvS2NvbmZpZy0xODgtXFx0ZGVmX2Jvb2wgUlVTVENfVkVSU0lPTiBcXHUwMDNlPSAxMDg5MDBcXG5pbml0L0tjb25maWctMTg5LVxcbmluaXQvS2NvbmZpZzoxOTA6Y29uZmlnIFJVU1RDX0hBU19GSUxFX0FTX0NfU1RSXFxuaW5pdC9LY29uZmlnLTE5MS1cXHRkZWZfYm9vbCBSVVNUQ19WRVJTSU9OIFxcdTAwM2U9IDEwOTEwMFxcbmluaXQvS2NvbmZpZy0xOTItXFxuaW5pdC9LY29uZmlnOjE5Mzpjb25maWcgUlVTVENfSEFTX1NVU1BJQ0lPVVNfUlVOVElNRV9TWU1CT0xfREVGSU5JVElPTlNcXG5pbml0L0tjb25maWctMTk0LVxcdGRlZl9ib29sIFJVU1RDX1ZFUlNJT04gXFx1MDAzZT0gMTA5ODAwXFxuLS1cXG5pbml0L0tjb25maWc9MjIwNT1jb25maWcgUFJPRklMSU5HXFxuLS1cXG5pbml0L0tjb25maWctMjIxMC1cXG5pbml0L0tjb25maWc6MjIxMTpjb25maWcgUlVTVFxcbmluaXQvS2NvbmZpZy0yMjEyLVxcdGJvb2wgXFxcIlJ1c3Qgc3VwcG9ydFxcXCJcXG4tLVxcbmluaXQvS2NvbmZpZz0yMjM3PXNvdXJjZSBcXFwicnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0XFxcIlxcbmluaXQvS2NvbmZpZy0yMjM4LVxcbmluaXQvS2NvbmZpZzoyMjM5OmNvbmZpZyBSVVNUQ19WRVJTSU9OX1RFWFRcXG5pbml0L0tjb25maWctMjI0MC1cXHRzdHJpbmdcXG4tLVxcbmxpYi9LY29uZmlnLmRlYnVnPTM1NjU9bWVudSBcXFwiUnVzdCBoYWNraW5nXFxcIlxcbmxpYi9LY29uZmlnLmRlYnVnLTM1NjYtXFxubGliL0tjb25maWcuZGVidWc6MzU2Nzpjb25maWcgUlVTVF9ERUJVR19BU1NFUlRJT05TXFxubGliL0tjb25maWcuZGVidWctMzU2OC1cXHRib29sIFxcXCJEZWJ1ZyBhc3NlcnRpb25zXFxcIlxcbi0tXFxubGliL0tjb25maWcuZGVidWctMzU4MS1cXG5saWIvS2NvbmZpZy5kZWJ1ZzozNTgyOmNvbmZpZyBSVVNUX09WRVJGTE9XX0NIRUNLU1xcbmxpYi9LY29uZmlnLmRlYnVnLTM1ODMtXFx0Ym9vbCBcXFwiT3ZlcmZsb3cgY2hlY2tzXFxcIlxcbi0tXFxubGliL0tjb25maWcuZGVidWctMzU5Ni1cXG5saWIvS2NvbmZpZy5kZWJ1ZzozNTk3OmNvbmZpZyBSVVNUX0JVSUxEX0FTU0VSVF9BTExPV1xcbmxpYi9LY29uZmlnLmRlYnVnLTM1OTgtXFx0Ym9vbCBcXFwiQWxsb3cgdW5vcHRpbWl6ZWQgYnVpbGQtdGltZSBhc3NlcnRpb25zXFxcIlxcbi0tXFxubGliL0tjb25maWcuZGVidWctMzYxMi1cXG5saWIvS2NvbmZpZy5kZWJ1ZzozNjEzOmNvbmZpZyBSVVNUX0tFUk5FTF9ET0NURVNUU1xcbmxpYi9LY29uZmlnLmRlYnVnLTM2MTQtXFx0Ym9vbCBcXFwiRG9jdGVzdHMgZm9yIHRoZSBga2VybmVsYCBjcmF0ZVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubGliL0tjb25maWcuZGVidWctMzYyNS1cXG5saWIvS2NvbmZpZy5kZWJ1ZzozNjI2OmNvbmZpZyBSVVNUX0lOTElORV9IRUxQRVJTXFxubGliL0tjb25maWcuZGVidWctMzYyNy1cXHRib29sIFxcXCJJbmxpbmUgQyBoZWxwZXJzIGludG8gUnVzdCBjb2RlIChFWFBFUklNRU5UQUwpXFxcIlxcbi0tXFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0LTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0OjI6bWVudWNvbmZpZyBSVVNUX0tVTklUX1RFU1RTXFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0LTMtXFx0Ym9vbCBcXFwiUnVzdCBLVW5pdCB0ZXN0c1xcXCJcXG4tLVxcbnJ1c3Qva2VybmVsL0tjb25maWcudGVzdD0xNT1pZiBSVVNUX0tVTklUX1RFU1RTXFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0OjE2OmNvbmZpZyBSVVNUX0FMTE9DQVRPUl9LVU5JVF9URVNUXFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0LTE3LVxcdGJvb2wgXFxcIktVbml0IHRlc3RzIGZvciBSdXN0IGFsbG9jYXRvciBBUElcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbnJ1c3Qva2VybmVsL0tjb25maWcudGVzdC0yNS1cXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3Q6MjY6Y29uZmlnIFJVU1RfS1ZFQ19LVU5JVF9URVNUXFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0LTI3LVxcdGJvb2wgXFxcIktVbml0IHRlc3RzIGZvciBSdXN0IEtWZWMgQVBJXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3QtMzUtXFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0OjM2OmNvbmZpZyBSVVNUX0JJVE1BUF9LVU5JVF9URVNUXFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0LTM3LVxcdGJvb2wgXFxcIktVbml0IHRlc3RzIGZvciBSdXN0IGJpdG1hcCBBUElcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbnJ1c3Qva2VybmVsL0tjb25maWcudGVzdC00NS1cXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3Q6NDY6Y29uZmlnIFJVU1RfS1VOSVRfU0VMRlRFU1RcXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3QtNDctXFx0Ym9vbCBcXFwiS1VuaXQgc2VsZnRlc3RzIGZvciBSdXN0XFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3QtNTUtXFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0OjU2OmNvbmZpZyBSVVNUX1NUUl9LVU5JVF9URVNUXFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0LTU3LVxcdGJvb2wgXFxcIktVbml0IHRlc3RzIGZvciBSdXN0IHN0cmluZ3MgQVBJXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3QtNjUtXFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0OjY2OmNvbmZpZyBSVVNUX0FUT01JQ1NfS1VOSVRfVEVTVFxcbnJ1c3Qva2VybmVsL0tjb25maWcudGVzdC02Ny1cXHRib29sIFxcXCJLVW5pdCB0ZXN0cyBmb3IgUnVzdCBhdG9taWNzIEFQSVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0LTc1LVxcbnJ1c3Qva2VybmVsL0tjb25maWcudGVzdDo3Njpjb25maWcgUlVTVF9CSVRGSUVMRF9LVU5JVF9URVNUXFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0LTc3LVxcdGJvb2wgXFxcIktVbml0IHRlc3RzIGZvciB0aGUgUnVzdCBgYml0ZmllbGQhYCBtYWNyb1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxuc2VjdXJpdHkvS2NvbmZpZy5oYXJkZW5pbmc9MjQ1PWNvbmZpZyBMSVNUX0hBUkRFTkVEXFxuLS1cXG5zZWN1cml0eS9LY29uZmlnLmhhcmRlbmluZy0yNTMtXFxuc2VjdXJpdHkvS2NvbmZpZy5oYXJkZW5pbmc6MjU0OmNvbmZpZyBSVVNUX0JJVE1BUF9IQVJERU5FRFxcbnNlY3VyaXR5L0tjb25maWcuaGFyZGVuaW5nLTI1NS1cXHRib29sIFxcXCJDaGVjayBpbnRlZ3JpdHkgb2YgYml0bWFwIFJ1c3QgQVBJXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMjo0Ni42ODk2MTcyMTZaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE4OTE3NjM2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOlxuXG4qKk5hdmlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuT2theSwgc28gd2UncmUgZGVhbGluZyB3aXRoIGEgYFJVU1RgIGNvbmZpZ3VyYXRpb24gaGVyZS4gUmlnaHQsIHRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIEhvbGQgb24gYSBzZWNvbmQsIHRob3VnaC4uLiBJIHNlZSB0aGF0IGBBWDg4Nzk2Ql9SVVNUX1BIWWAgaGFzIGEgZGVwZW5kZW5jeSBvbiBgQVg4ODc5NkJfUEhZYC4gVGhpcyBjb3VsZCBiZSBpbXBvcnRhbnQuIElzIGBBWDg4Nzk2Ql9QSFlgICphY3R1YWxseSogbmVjZXNzYXJ5PyBHaXZlbiB0aGF0IGBBWDg4Nzk2Ql9SVVNUX1BIWWAgcmVsaWVzIG9uIGl0LCB0aGUgYW5zd2VyIGlzICp5ZXMqLCBpdCdzIGEgY3JpdGljYWwgY29tcG9uZW50LiBBbHJpZ2h0LCBsZXQncyBkcmlsbCBkb3duIGludG8gd2hhdCAqdGhhdCogZGVwZW5kZW5jeSBpcyBjb21wb3NlZCBvZi4gVGltZSB0byBjaGVjayBgQVg4ODc5NkJfUEhZYCdzIG93biBkZXBlbmRlbmNpZXMuIFdlIG5lZWQgdG8gZnVsbHkgZ3Jhc3AgdGhlIGNoYWluIHRvIHVuZGVyc3RhbmQgdGhlIHdob2xlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzOTk2LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjI6NTAuODc4Nzk2MjE4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjU5NjQ2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVg4ODc5NkJfUEhZXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWc9MTUyPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTUzLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE1NDpjb25maWcgQVg4ODc5NkJfUEhZXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTU1LVxcdHRyaXN0YXRlIFxcXCJBc2l4IFBIWXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIyOjUwLjk3MTQwMDQ2WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNzczODcwNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIE5ldHdvcmsgRHJpdmVyIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYEFYODg3OTZCX1BIWWAg4oCTIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gsIG5vIGRlcGVuZGVuY2llcyB0byB3b3JyeSBhYm91dCB0aGVyZS4gQnV0IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nIHRoYXQncyBvbiBteSBtaW5kOiBob3cgZG9lcyBgVVNCX05FVF9BWDg4MTdYYCBmaXQgaW50byB0aGUgcGljdHVyZT8gSSdtIHRoaW5raW5nIEkgc2hvdWxkIGxvb2sgYXQgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYC4gVGhpcyBpcyBhIHByZXR0eSBzdGFuZGFyZCBhcHByb2FjaC4gTGV0J3Mgc3RhcnQgd2l0aCBhIGNoZWNrIGZvciBgYXNpeGAgd2l0aGluIHRoYXQgY29uZmlndXJhdGlvbiBmaWxlLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgVVNCIG5ldHdvcmsgYWRhcHRlciBkcml2ZXJzIGFyZSBzZXQgdXAsIGFuZCBxdWlja2x5IHNob3cgbWUgaWYgdGhlIGBBWDg4MTdYYCBpcyBsaW5rZWQgaW4gc29tZSB3YXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NDE2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjI6NTQuMjQ4NzkwNjY3WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTM1NDM1MjUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFzaXhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIyOjU0Ljg0MjM0MTcxMloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTI3MjM4MzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6XG5cbioqQ2hlY2tpbmcgdGhlIEtjb25maWcgZm9yIEFYODgxN1ggU3VwcG9ydCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJ1c2luZXNzLiBUaW1lIHRvIGRpZyBpbnRvIHRoaXMga2VybmVsIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBgQVg4ODE3WGAgc3VwcG9ydCBpcyBoYW5kbGVkLiBJIGltbWVkaWF0ZWx5IGtub3cgdGhlIHBsYWNlIHRvIHN0YXJ0OiBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBVU0IgbmV0d29yayBkcml2ZXIgY29uZmlndXJhdGlvbnMgYXJlIHN0b3JlZCwgYW5kIGdpdmVuIGl0cyBhIFVTQiBkZXZpY2UsIHRoYXQncyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgbG9va2luZyBmb3Igb3B0aW9ucyByZWxhdGVkIHRvIGl0LiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLiBJIGJldCBpdCBoYXMgYWxsIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvcHRpb25zLiBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IGludGVyZXN0aW5nIGRlcGVuZGFuY2llcyB0aGF0IEkgZGlkbid0IGtub3cgYWJvdXQuIEkgaG9wZSB0aGVyZSBpcyBubyBoaWRkZW4gYnVnLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDY2NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIyOjU3Ljk2OTU4MTk4OVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2NTI5Mjk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkFYODgxN1hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MTMyPWNvbmZpZyBVU0JfVVNCTkVUXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNjUtXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTY2OmNvbmZpZyBVU0JfTkVUX0FYODgxN1hcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNjctXFx0dHJpc3RhdGUgXFxcIkFTSVggQVg4OHh4eCBCYXNlZCBVU0IgMi4wIEV0aGVybmV0IEFkYXB0ZXJzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMjo1OC4wNzYxMTc4NzNaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIzNjU4ODQxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqVVNCX05FVF9BWDg4MTdYIERlcGVuZGVuY3kgQ2hlY2sqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbi4gVGhlIGZpcnN0IHRoaW5nIEknbSBkb2luZyBpcyBtYWtpbmcgc3VyZSBJIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBvZiBgVVNCX05FVF9BWDg4MTdYYC4gVGhpcyBpcyBjcnVjaWFsIGJlZm9yZSBJIGV2ZW4gdGhpbmsgYWJvdXQgbWFraW5nIGFueSBjaGFuZ2VzIG9yIGFkZHJlc3NpbmcgYW55IHBvdGVudGlhbCBpc3N1ZXMuIEkgbmVlZCB0byBrbm93IHdoYXQgb3RoZXIgY29tcG9uZW50cywgZHJpdmVycywgb3IgbGlicmFyaWVzIHJlbHkgb24gaXQsIGFuZCB3aGF0IGl0LCBpbiB0dXJuLCBkZXBlbmRzIG9uLiBBIGNsZWFyIGRlcGVuZGVuY3kgbWFwIGlzIGFic29sdXRlbHkgZXNzZW50aWFsIGZvciBzdGFiaWxpdHkgYW5kIGF2b2lkaW5nIHJlZ3Jlc3Npb25zLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZCBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0OTk4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjM6MDEuMzEyNzA5MjI0WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDgzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNjA6XFx0XFxuIDE2MTpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBcXHUwMDNjaHR0cDovL3d3dy5saW51eC11c2Iub3JnL3VzYm5ldC9cXHUwMDNlLlxcbiAxNjI6XFx0XFxuIDE2MzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAxNjQ6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgdXNibmV0LlxcbiAxNjU6XFx0XFxuIDE2NjpcXHRjb25maWcgVVNCX05FVF9BWDg4MTdYXFxuIDE2NzpcXHRcXHR0cmlzdGF0ZSBcXFwiQVNJWCBBWDg4eHh4IEJhc2VkIFVTQiAyLjAgRXRoZXJuZXQgQWRhcHRlcnNcXFwiXFxuIDE2ODpcXHRcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG4gMTY5OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAxNzA6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gMTcxOlxcdFxcdHNlbGVjdCBBWDg4Nzk2Ql9QSFlcXG4gMTcyOlxcdFxcdGltcGx5IE5FVF9TRUxGVEVTVFNcXG4gMTczOlxcdFxcdGRlZmF1bHQgeVxcbiAxNzQ6XFx0XFx0aGVscFxcbiAxNzU6XFx0XFx0ICBUaGlzIG9wdGlvbiBhZGRzIHN1cHBvcnQgZm9yIEFTSVggQVg4OHh4eCBiYXNlZCBVU0IgMi4wXFxuIDE3NjpcXHRcXHQgIDEwLzEwMCBFdGhlcm5ldCBhZGFwdGVycy5cXG4gMTc3OlxcdFxcbiAxNzg6XFx0XFx0ICBUaGlzIGRyaXZlciBzaG91bGQgd29yayB3aXRoIGF0IGxlYXN0IHRoZSBmb2xsb3dpbmcgZGV2aWNlczpcXG4gMTc5OlxcdFxcdCAgICAqIEF0ZW4gVUMyMTBUXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIzOjAxLjMxMjgyMTk1NFoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODY5ODkwOTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvbmZpZ3VyYXRpb24gQ29udW5kcnVtKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnMuIFRoZSBgVVNCX05FVF9BWDg4MTdYYCBvcHRpb24gcHVsbHMgaW4gYEFYODg3OTZCX1BIWWAsIHRoYXQncyBzdHJhaWdodGZvcndhcmQuIE15IGluaXRpYWwgaW5zdGluY3Qgd2FzIHRvIGp1c3QgYWRkIGBVU0JfTkVUX0FYODgxN1hgIHRvIGBFbmFibGVDb25maWdzYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEJ1dCBoYW5nIG9uLCBzaW5jZSB0aGUgZHJpdmVyIGltcGxpY2l0bHkgZW5hYmxlcyB0aGUgUEhZLCBleHBsaWNpdGx5IGVuYWJsaW5nIGBBWDg4Nzk2Ql9QSFlgIG1pZ2h0IGJlIHJlZHVuZGFudC5cblxuQWgsIGJ1dCBub3cgSSByZW1lbWJlciwgd2UgZGVmaW5pdGVseSAqbmVlZCogYEFYODg3OTZCX1JVU1RfUEhZYC4gU28sIG15IHRoaW5raW5nIGV2b2x2ZXMuIFRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBzaG91bGQgcHJvYmFibHkgYmU6IGBSVVNUYCwgYFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU2AsIGBBWDg4Nzk2Ql9SVVNUX1BIWWAsIGFuZCBgVVNCX05FVF9BWDg4MTdYYC4gVGhpcyBrZWVwcyB0aGUgcmVxdWlyZWQgY29tcG9uZW50cyBpbiBwbGFjZS5cblxuSG93ZXZlciwgYSBuZXcgcXVlc3Rpb24gYXJpc2VzLiBEb2VzIGBBWDg4Nzk2Ql9SVVNUX1BIWWAgKnJlcGxhY2UqIGBBWDg4Nzk2Ql9QSFlgLCBvciBkbyB0aGV5IHNvbWVob3cgY29leGlzdD8gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlYCB0byBjb25maXJtIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJlc29sdmUgdGhhdCBhbWJpZ3VpdHkuIFRoaXMgcmVxdWlyZXMgYSBkZWVwZXIgZGl2ZSB0byBjbGFyaWZ5IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSBQSFkgb3B0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU0ODksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMzowNi4xODI3MTU1NDJaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY2MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM1LFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDM1OlxcdG9iai0kKENPTkZJR19BSVJfTkVUX1BIWUxJQilcXHQrPSBhaXJfcGh5X2xpYi5vXFxuICAzNjpcXHRvYmotJChDT05GSUdfQU1EX1BIWSlcXHRcXHQrPSBhbWQub1xcbiAgMzc6XFx0b2JqLSQoQ09ORklHX0FNQ0NfUVQyMDI1X1BIWSlcXHQrPSBxdDIwMjUub1xcbiAgMzg6XFx0b2JqLSQoQ09ORklHX0FRVUFOVElBX1BIWSlcXHQrPSBhcXVhbnRpYS9cXG4gIDM5OlxcdG9iai0kKENPTkZJR19BUzIxWFhYX1BIWSlcXHQrPSBhczIxeHh4Lm9cXG4gIDQwOlxcdGlmZGVmIENPTkZJR19BWDg4Nzk2Ql9SVVNUX1BIWVxcbiAgNDE6XFx0ICBvYmotJChDT05GSUdfQVg4ODc5NkJfUEhZKVxcdCs9IGF4ODg3OTZiX3J1c3Qub1xcbiAgNDI6XFx0ZWxzZVxcbiAgNDM6XFx0ICBvYmotJChDT05GSUdfQVg4ODc5NkJfUEhZKVxcdCs9IGF4ODg3OTZiLm9cXG4gIDQ0OlxcdGVuZGlmXFxuICA0NTpcXHRvYmotJChDT05GSUdfQkNNNTQxNDBfUEhZKVxcdCs9IGJjbTU0MTQwLm9cXG4gIDQ2OlxcdG9iai0kKENPTkZJR19CQ002M1hYX1BIWSlcXHQrPSBiY202M3h4Lm9cXG4gIDQ3OlxcdG9iai0kKENPTkZJR19CQ003WFhYX1BIWSlcXHQrPSBiY203eHh4Lm9cXG4gIDQ4OlxcdG9iai0kKENPTkZJR19CQ004NDg4MV9QSFkpXFx0Kz0gYmNtODQ4ODEub1xcbiAgNDk6XFx0b2JqLSQoQ09ORklHX0JDTTg3WFhfUEhZKVxcdCs9IGJjbTg3eHgub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMzowNi4xODI3NzMzMTJaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzYzMTc4NjQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENPTkZJRyBhbmQgU3ltYm9sIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIHRoZSBgQ09ORklHX0FYODg3OTZCX1JVU1RfUEhZYCBvcHRpb24gaXMgc3dhcHBpbmcgb3V0IHRoZSBvbGQgYGF4ODg3OTZiLm9gIG9iamVjdCBmaWxlIHdpdGggdGhlIG5ldyBSdXN0IGltcGxlbWVudGF0aW9uLCBgYXg4ODc5NmJfcnVzdC5vYC4gQ2xlYXJseSwgd2UgYWJzb2x1dGVseSBuZWVkIHRvIGVuc3VyZSBgQVg4ODc5NkJfUlVTVF9QSFlgIGlzIGVuYWJsZWQuIEFuZCwgc2luY2UgYFVTQl9ORVRfQVg4ODE3WGAgd2lsbCBzZWxlY3QgYEFYODg3OTZCX1BIWWAsIHRoYXQgbGlrZWx5IG1lYW5zIGl0IHdpbGwsIGluIHR1cm4sIHNlbGVjdCB0aGUgUnVzdCBQSFkuIFNvIG15IGluaXRpYWwgYEVuYWJsZUNvbmZpZ3NgIGxpc3Qgc2hvdWxkIGJlOiBgUlVTVGAsIGBSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlNgLCBgQVg4ODc5NkJfUlVTVF9QSFlgLCBhbmQgYFVTQl9ORVRfQVg4ODE3WGAuIFRoYXQgc2hvdWxkIGJlIHRoZSBtaW5pbXVtIGNvbmZpZ3VyYXRpb24uXG5cbk5vdywgbGV0J3MgdGhpbmsgYWJvdXQgYEZvY3VzU3ltYm9sc2AuIFRoZSBwYXRjaCBpcyB0b3VjaGluZyB0aG9zZSBmdW5jdGlvbnM6IGBpc19saW5rX3VwYCwgYGlzX2F1dG9uZWdfZW5hYmxlZGAsIGFuZCBgaXNfYXV0b25lZ19jb21wbGV0ZWRgLCBhbGwgd2l0aGluIGBydXN0L2tlcm5lbC9uZXQvcGh5LnJzYC4gVGhvc2UgYXJlIFJ1c3QgbWV0aG9kcy4gTm93LCBJIG5lZWQgdG8ga25vdyBob3cgdGhlc2UgYXJlIGdvaW5nIHRvIGJlIGhhbmRsZWQuIEFyZSB0aGV5IG1hbmdsZWQgc3ltYm9scz8gQXJlIHRoZXkgaW5saW5lZD8gU2luY2UgdGhleSBhcmUgYHB1YiBmbmAgd2l0aGluIGEgUnVzdCBtb2R1bGUsIHRoZXkgY291bGQgdmVyeSB3ZWxsIGJlIGlubGluZWQuXG5cbk9rYXksIGxldCdzIGRpZyBpbnRvIGBheDg4Nzk2Yl9ydXN0LnJzYCB0byBzZWUgd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSAqdXNlZCouIEFoLCBgaXNfbGlua191cGAgaXMgdXNlZCBpbiBgcmVhZF9zdGF0dXNgLCBhbmQgYGlzX2F1dG9uZWdfZW5hYmxlZGAgaXMgdXNlZCBpbiBgcmVhZF9zdGF0dXNgLCBhbmQgYGlzX2F1dG9uZWdfY29tcGxldGVkYCBpcyB1c2VkIGluIGByZWFkX3N0YXR1c2AuIE5vdyBsZXQncyBzZWUsIHdoYXQgaXMgYHJlYWRfc3RhdHVzYD8gSXQncyBwYXJ0IG9mIHRoZSBgRHJpdmVyYCB0cmFpdCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIGBQaHlBWDg4NzcyQWAgc3RydWN0LiBTbyB0aGUgbmV4dCBxdWVzdGlvbiBpczogSG93IGlzIGByZWFkX3N0YXR1c2AgbmFtZWQgd2hlbiBjb21waWxlZD8gSXQncyBsaWtlbHkgbWFuZ2xlZCwgd2hpY2ggbWVhbnMgaXQgd2lsbCBiZSB0cmlja3kgdG8gcGluIGRvd24gdGhlIHN5bWJvbC4gSG93ZXZlciwgd2FpdCBhIG1pbnV0ZS4uLiBgcmVhZF9zdGF0dXNgIGlzIGEgZnVuY3Rpb24gKnBvaW50ZXIqIHdpdGhpbiB0aGUgYHBoeV9kcml2ZXJgIHN0cnVjdCEgVGhhdCdzIGhvdyBpdCdzIGJlaW5nIGhhbmRsZWQuIFJpZ2h0LiBPa2F5LCBub3cgSSBuZWVkIHRvIGNoZWNrIGBydXN0L2tlcm5lbC9uZXQvcGh5LnJzYCBhZ2FpbiB0byBzZWUgaG93IHRoYXQgZnVuY3Rpb24gcG9pbnRlciBpcyByZWdpc3RlcmVkIHRvIHNlZSBob3cgdGhlIHN5bWJvbCBpcyBhY2Nlc3NlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY0MDQsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMzoxMy44MTQ1NjIwNjJaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0MjA2ODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlYWRfc3RhdHVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInJ1c3Qva2VybmVsL25ldC9waHkucnNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwicnVzdC9rZXJuZWwvbmV0L3BoeS5ycz0yNDQ9ICAgIHB1YiBmbiBnZW5waHlfc3VzcGVuZChcXHUwMDI2bXV0IHNlbGYpIC1cXHUwMDNlIFJlc3VsdCB7XFxuLS1cXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTI1MS0gICAgLy8vIENoZWNrcyB0aGUgbGluayBzdGF0dXMgYW5kIHVwZGF0ZXMgY3VycmVudCBsaW5rIHN0YXRlLlxcbnJ1c3Qva2VybmVsL25ldC9waHkucnM6MjUyOiAgICBwdWIgZm4gZ2VucGh5X3JlYWRfc3RhdHVzXFx1MDAzY1I6IHJlZzo6UmVnaXN0ZXJcXHUwMDNlKFxcdTAwMjZtdXQgc2VsZikgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY3UxNlxcdTAwM2Uge1xcbnJ1c3Qva2VybmVsL25ldC9waHkucnM6MjUzOiAgICAgICAgUjo6cmVhZF9zdGF0dXMoc2VsZilcXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTI1NC0gICAgfVxcbi0tXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycz0zMDg9aW1wbFxcdTAwM2NUOiBEcml2ZXJcXHUwMDNlIEFkYXB0ZXJcXHUwMDNjVFxcdTAwM2Uge1xcbi0tXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy0zOTYtICAgIC8vLyBgcGh5ZGV2YCBtdXN0IGJlIHBhc3NlZCBieSB0aGUgY29ycmVzcG9uZGluZyBjYWxsYmFjayBpbiBgcGh5X2RyaXZlcmAuXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5yczozOTc6ICAgIHVuc2FmZSBleHRlcm4gXFxcIkNcXFwiIGZuIHJlYWRfc3RhdHVzX2NhbGxiYWNrKHBoeWRldjogKm11dCBiaW5kaW5nczo6cGh5X2RldmljZSkgLVxcdTAwM2UgY19pbnQge1xcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtMzk4LSAgICAgICAgZnJvbV9yZXN1bHQofHwge1xcbi0tXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy00MDItICAgICAgICAgICAgbGV0IGRldiA9IHVuc2FmZSB7IERldmljZTo6ZnJvbV9yYXcocGh5ZGV2KSB9O1xcbnJ1c3Qva2VybmVsL25ldC9waHkucnM6NDAzOiAgICAgICAgICAgIFQ6OnJlYWRfc3RhdHVzKGRldik/O1xcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtNDA0LSAgICAgICAgICAgIE9rKDApXFxuLS1cXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzPTQ5ND1wdWIgY29uc3QgZm4gY3JlYXRlX3BoeV9kcml2ZXJcXHUwMDNjVDogRHJpdmVyXFx1MDAzZSgpIC1cXHUwMDNlIERyaXZlclZUYWJsZSB7XFxuLS1cXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTUzNS0gICAgICAgIH0sXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5yczo1MzY6ICAgICAgICByZWFkX3N0YXR1czogaWYgVDo6SEFTX1JFQURfU1RBVFVTIHtcXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjUzNzogICAgICAgICAgICBTb21lKEFkYXB0ZXI6OlxcdTAwM2NUXFx1MDAzZTo6cmVhZF9zdGF0dXNfY2FsbGJhY2spXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy01MzgtICAgICAgICB9IGVsc2Uge1xcbi0tXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycz02MDE9ICAgIGZuIGNvbmZpZ19hbmVnKF9kZXY6IFxcdTAwMjZtdXQgRGV2aWNlKSAtXFx1MDAzZSBSZXN1bHQge1xcbi0tXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy02MDUtICAgIC8vLyBEZXRlcm1pbmVzIHRoZSBuZWdvdGlhdGVkIHNwZWVkIGFuZCBkdXBsZXguXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5yczo2MDY6ICAgIGZuIHJlYWRfc3RhdHVzKF9kZXY6IFxcdTAwMjZtdXQgRGV2aWNlKSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjdTE2XFx1MDAzZSB7XFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy02MDctICAgICAgICBidWlsZF9lcnJvciEoVlRBQkxFX0RFRkFVTFRfRVJST1IpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIzOjEzLjg4ODc3NTgxMloiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MDE2NTQ0MjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYHJlYWRfc3RhdHVzYCBDYWxsYmFja3MgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYHJlYWRfc3RhdHVzYCBpc3N1ZSwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIGhvdyB0byBlZmZlY3RpdmVseSBmdXp6IHRoZSBQSFkgZHJpdmVyLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBpbiB0aGUgYEFkYXB0ZXJcdTAwM2NUXHUwMDNlYCBzdHJ1Y3R1cmUsIHdpdGggYHJlYWRfc3RhdHVzX2NhbGxiYWNrYCBiZWluZyB0aGUgQyBjYWxsYmFjaywgd2hpY2ggdGhlbiBkZWxlZ2F0ZXMgdG8gdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiwgYFQ6OnJlYWRfc3RhdHVzYC4gSW4gb3VyIHNwZWNpZmljIGNhc2UsIGxvb2tpbmcgYXQgYGF4ODg3OTZiX3J1c3QucnNgLCB0aGF0J3MgYHJlYWRfc3RhdHVzYCB3aXRoaW4gYFBoeUFYODg3NzJBYC4gTmFtZSBtYW5nbGluZyBpbiBSdXN0IGNvdWxkIG1ha2UgcGlucG9pbnRpbmcgdGhlIGV4YWN0IHN5bWJvbCB0cmlja3ksIGVzcGVjaWFsbHkgZm9yIGByZWFkX3N0YXR1c2AuXG5cbkluaXRpYWxseSwgSSBjb25zaWRlcmVkIHRhcmdldGluZyBgcmVhZF9zdGF0dXNfY2FsbGJhY2tgIGRpcmVjdGx5LCBzaW5jZSBpdCdzIGFuIGBleHRlcm4gXCJDXCJgIGZ1bmN0aW9uLCB0aG91Z2ggaXQncyBnZW5lcmljIG92ZXIgYFRgIGFuZCBtaWdodCBzdGlsbCBiZSBtYW5nbGVkLiAgSSBhbHNvIGV4cGxvcmVkIGlmIGEgbm9uLWdlbmVyaWMgZnVuY3Rpb24gbGlrZSBgYXNpeF9zb2Z0X3Jlc2V0YCBmcm9tIGBheDg4Nzk2Yl9ydXN0LnJzYCB3YXMgYSBnb29kIGNhbmRpZGF0ZSwgYnV0IGl0IGFwcGVhcnMgdGhlIGlzc3VlcyBhcmUgYXJpc2luZyB3aXRoaW4gYGlzX2xpbmtfdXBgLCBgaXNfYXV0b25lZ19lbmFibGVkYCwgYW5kIGBpc19hdXRvbmVnX2NvbXBsZXRlZGAsIGFsbCBjYWxsZWQgZnJvbSBgcmVhZF9zdGF0dXNgIGluIGBQaHlBWDg4NzcyQWAuXG5cblRoZSBDIHNpZGUsIHdpdGggYHBoeV9yZWFkX3N0YXR1c2AsIHRoYXQgY2FsbHMgdGhlIGByZWFkX3N0YXR1c2AgY2FsbGJhY2ssIGlzIGFsc28gYSBjb25zaWRlcmF0aW9uLCBhbHRob3VnaCBpdCdzIGEgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbi4gIEkgcG9uZGVyZWQgZm9jdXNpbmcgb24gYGF4ODg3NzJfYmluZGAgb3IgYGF4ODg3NzJfaW5pdF9waHlgIGluIGBhc2l4X2RldmljZXMuY2AuIFNwZWNpZmljYWxseSwgYGF4ODg3NzJfaW5pdF9waHlgIGNvdWxkIHRyaWdnZXIgdGhlIFBIWSdzIGluaXRpYWxpemF0aW9uLCBhbmQgSSdtIGludGVyZXN0ZWQgaW4gZnV6emluZyB0aGUgZHJpdmVyJ3MgYHJlYWRfc3RhdHVzYC5cblxuVGhlIGtleSBpcyBmaWd1cmluZyBvdXQgaG93IHN5emthbGxlciB0cmlnZ2VycyBgcmVhZF9zdGF0dXNgLiBJdCBsb29rcyBsaWtlIGl0J3MgY2FsbGVkIHBlcmlvZGljYWxseSBieSB0aGUgUEhZIHN0YXRlIG1hY2hpbmUgKGBwaHlfc3RhdGVfbWFjaGluZWApIG9yIGluIHJlc3BvbnNlIHRvIGxpbmsgY2hhbmdlcy4gU28sIGluaXRpYWxpemluZyB0aGUgUEhZIHRocm91Z2ggYGF4ODg3NzJfaW5pdF9waHlgIG1pZ2h0IGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBnaXZlIHN5emthbGxlciBhIGNoYW5jZSB0byBwb2tlIGF0IGl0LiAgSSdsbCBuZWVkIHRvIGdvIGJhY2sgYW5kIHJlLWV4YW1pbmUgYGF4ODg3OTZiX3J1c3QucnNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGV4cG9ydGVkIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IHByb3ZpZGUgYSB1c2VmdWwgZW50cnkgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3OTgxLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIzOjIxLjkwNTMyNDQ5OVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODYyNTczNTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZuIFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5yc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy0zMi0vLyBzdWNoIGFzIHVzZWQgb24gdGhlIEluZGl2aWR1YWwgQ29tcHV0ZXJzJyBYLVN1cmYgMTAwIFpvcnJvIGNhcmQuXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM6MzM6Zm4gYXNpeF9zb2Z0X3Jlc2V0KGRldjogXFx1MDAyNm11dCBwaHk6OkRldmljZSkgLVxcdTAwM2UgUmVzdWx0IHtcXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy0zNC0gICAgZGV2LndyaXRlKEMyMjo6Qk1DUiwgMCk/O1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM9NDE9aW1wbCBEcml2ZXIgZm9yIFBoeUFYODg3NzJBIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTQ4LSAgICAvLyByZWdpc3RlciBpcyAwLiBUaGlzIGlzc3VlIGlzIG5vdCByZXByb2R1Y2libGUgb24gQVg4ODc3MkMuXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM6NDk6ICAgIGZuIHJlYWRfc3RhdHVzKGRldjogXFx1MDAyNm11dCBwaHk6OkRldmljZSkgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY3UxNlxcdTAwM2Uge1xcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTUwLSAgICAgICAgZGV2LmdlbnBoeV91cGRhdGVfbGluaygpPztcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTc5LVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzOjgwOiAgICBmbiBzdXNwZW5kKGRldjogXFx1MDAyNm11dCBwaHk6OkRldmljZSkgLVxcdTAwM2UgUmVzdWx0IHtcXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy04MS0gICAgICAgIGRldi5nZW5waHlfc3VzcGVuZCgpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy04My1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5yczo4NDogICAgZm4gcmVzdW1lKGRldjogXFx1MDAyNm11dCBwaHk6OkRldmljZSkgLVxcdTAwM2UgUmVzdWx0IHtcXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy04NS0gICAgICAgIGRldi5nZW5waHlfcmVzdW1lKClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTg3LVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzOjg4OiAgICBmbiBzb2Z0X3Jlc2V0KGRldjogXFx1MDAyNm11dCBwaHk6OkRldmljZSkgLVxcdTAwM2UgUmVzdWx0IHtcXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy04OS0gICAgICAgIGFzaXhfc29mdF9yZXNldChkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy05MS1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5yczo5MjogICAgZm4gbGlua19jaGFuZ2Vfbm90aWZ5KGRldjogXFx1MDAyNm11dCBwaHk6OkRldmljZSkge1xcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTkzLSAgICAgICAgLy8gUmVzZXQgUEhZLCBvdGhlcndpc2UgTUlJX0xQQSB3aWxsIHByb3ZpZGUgb3V0ZGF0ZWQgaW5mb3JtYXRpb24uXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycz0xMDU9aW1wbCBEcml2ZXIgZm9yIFBoeUFYODg3NzJDIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTEwOS1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5yczoxMTA6ICAgIGZuIHN1c3BlbmQoZGV2OiBcXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXFx1MDAzZSBSZXN1bHQge1xcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTExMS0gICAgICAgIGRldi5nZW5waHlfc3VzcGVuZCgpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy0xMTMtXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM6MTE0OiAgICBmbiByZXN1bWUoZGV2OiBcXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXFx1MDAzZSBSZXN1bHQge1xcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTExNS0gICAgICAgIGRldi5nZW5waHlfcmVzdW1lKClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTExNy1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5yczoxMTg6ICAgIGZuIHNvZnRfcmVzZXQoZGV2OiBcXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXFx1MDAzZSBSZXN1bHQge1xcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTExOS0gICAgICAgIGFzaXhfc29mdF9yZXNldChkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycz0xMjY9aW1wbCBEcml2ZXIgZm9yIFBoeUFYODg3OTZCIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTEyOS1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5yczoxMzA6ICAgIGZuIHNvZnRfcmVzZXQoZGV2OiBcXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXFx1MDAzZSBSZXN1bHQge1xcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTEzMS0gICAgICAgIGFzaXhfc29mdF9yZXNldChkZXYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIzOjIyLjc2NzkwMTk1OVoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODI2OTIyNjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IExpbmUgb2YgUmVhc29uaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRvIGdldCBTeXprYWxsZXIgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgQVNJWCBVU0IgbmV0d29yayBkZXZpY2UgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdG8gdGVzdCB0aGUgUEhZIGluaXRpYWxpemF0aW9uLiBSdXN0IGZ1bmN0aW9ucyBhcmUgbWFuZ2xlZCBhbmQgc3RhdGljLCBzbyBJIGNhbid0IGRpcmVjdGx5IHVzZSB0aGVtIGluIGBGb2N1c1N5bWJvbHNgLiBUaGF0J3MgYSBuby1nbyBmb3IgYGFzaXhfc29mdF9yZXNldGAgc2luY2UgaXQncyBpbnRlcm5hbCB0byB0aGUgbW9kdWxlLiBJIHRoaW5rIG15IGJlc3QgYmV0IGlzIHRvIGZvY3VzIG9uIGEgQyBmdW5jdGlvbiBpbnN0ZWFkLlxuXG5BaGEhIGBheDg4NzcyX2luaXRfcGh5YCBpbiBgZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jYCBzZWVtcyBwcm9taXNpbmcuIElmIEkgdGFyZ2V0IHRoYXQsIEknbSBwcmV0dHkgc3VyZSBpdCB3aWxsIGd1aWRlIFN5emthbGxlciB0b3dhcmRzIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBBbHNvLCBgYXg4ODc3Ml9iaW5kYCBpcyB0aGUgYmluZGluZyBmdW5jdGlvbiBmb3IgdGhpcyBVU0IgZGV2aWNlLlxuXG5BbHJpZ2h0LCBsZXQgbWUgY2hlY2sgaWYgYGF4ODg3NzJfYmluZGAgaXMgc3RhdGljLCBiZWNhdXNlIHRoYXQgd291bGQgYmUgYSBwcm9ibGVtLiBZZXAsIGl0IGlzLiBCdXQsIFN5emthbGxlciBjYW4gc3RpbGwgaGFuZGxlIHN0YXRpYyBmdW5jdGlvbnMsIHByb3ZpZGVkIHRoZXkgYXJlbid0IGlubGluZWQsIHNvIEkgc2hvdWxkIGJlIG9rYXkuIEFuZCwgbGV0IG1lIGRvdWJsZS1jaGVjayBgYXg4ODc3Ml9pbml0X3BoeWAuIFllcCwgaXQncyBhbHNvIHN0YXRpYy5cblxuT2theSwgSSd2ZSBnb3QgYSBwbGFuLiBJJ2xsIHVzZSBib3RoIGBheDg4NzcyX2JpbmRgIGFuZCBgYXg4ODc3Ml9pbml0X3BoeWAgYXMgYEZvY3VzU3ltYm9sc2AuIFRoZXkgc2hvdWxkIGdldCBTeXprYWxsZXIgd2hlcmUgSSBuZWVkIGl0IHRvIGJlLlxuXG5XYWl0IGEgc2Vjb25kLiBUaGUgYnVnIHJlcG9ydCBpcyBwb2ludGluZyB0byBgcnVzdC9rZXJuZWwvbmV0L3BoeS5yc2AuIERhbW4gaXQuIERvZXMgYW55IG90aGVyIGRyaXZlciB1c2UgYGlzX2xpbmtfdXBgP1xuXG5cbiIsIklucHV0VG9rZW5zIjozMDE2NywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMzoyOC41OTQ4NDc5WiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Mzg2MTMwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpc19saW5rX3VwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM9NDk9ICAgIGZuIHJlYWRfc3RhdHVzKGRldjogXFx1MDAyNm11dCBwaHk6OkRldmljZSkgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY3UxNlxcdTAwM2Uge1xcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTUwLSAgICAgICAgZGV2LmdlbnBoeV91cGRhdGVfbGluaygpPztcXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5yczo1MTogICAgICAgIGlmICFkZXYuaXNfbGlua191cCgpIHtcXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy01Mi0gICAgICAgICAgICByZXR1cm4gT2soMCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIzOjI4LjY3ODcxMzE1WiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MDMxMzMzMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYSBSdXN0IERlcGVuZGVuY3kqKlxuXG5SaWdodCwgc28gSSBzZWUgYSBzcGVjaWZpYyBmaWxlLCBgYXg4ODc5NmJfcnVzdC5yc2AsIGlzIHVzaW5nIHNvbWV0aGluZy4gVGhlIGtleSBxdWVzdGlvbiBpcywgd2hhdCdzIGl0IHVzaW5nLCBhbmQgaG93PyBUaGlzIG5lZWRzIG1vcmUgZGlnZ2luZywgYnV0IGF0IGxlYXN0IEkga25vdyB3aGVyZSB0byBzdGFydC4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgaWYgdGhpcyBpcyBhIGNyaXRpY2FsIGNvbXBvbmVudCBvciBhIG1pbm9yIHV0aWxpdHkgZnVuY3Rpb24uIE15IG5leHQgcG9pbnQgb2YgaW52ZXN0aWdhdGlvbiB3aWxsIGJlIGBpc19hdXRvbmVnX2VuYWJsZWRgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBpcyBjb25uZWN0ZWQgdG8gYGF4ODg3OTZiX3J1c3QucnNgLiBUaGUgbmFtZSBjZXJ0YWlubHkgc3VnZ2VzdHMgaXQncyByZWxhdGVkIHRvIGF1dG8tbmVnb3RpYXRpb24sIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIHRvIHRoZSBicm9hZGVyIHN5c3RlbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBpcyByZWxhdGVkIHRvIHRoaXMgZnVuY3Rpb25hbGl0eSwgb3IgcGFydCBvZiBhIHNoYXJlZCBsaWJyYXJ5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDk2NywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIzOjMyLjA4MTg0ODgwM1oiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ1OTY3NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXNfYXV0b25lZ19lbmFibGVkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM9NDk9ICAgIGZuIHJlYWRfc3RhdHVzKGRldjogXFx1MDAyNm11dCBwaHk6OkRldmljZSkgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY3UxNlxcdTAwM2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtNzItXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM6NzM6ICAgICAgICBpZiBkZXYuaXNfYXV0b25lZ19lbmFibGVkKCkgXFx1MDAyNlxcdTAwMjYgZGV2LmlzX2F1dG9uZWdfY29tcGxldGVkKCkge1xcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTc0LSAgICAgICAgICAgIGRldi5yZXNvbHZlX2FuZWdfbGlua21vZGUoKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjM6MzIuMTY2NDQ5NzUzWiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNjMxNzk3MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXBwcm9hY2ggdG8gVW5kZXJzdGFuZGluZyB0aGUgUEhZIERyaXZlcioqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgYGF4ODg3OTZiX3J1c3QucnNgIGZpbGUsIGFuZCBpdCBzZWVtcyBsaWtlIHRoYXQncyB0aGUgb25seSBvbmUgdXNpbmcgc29tZXRoaW5nIGludGVyZXN0aW5nLCBsZXQncyBrZWVwIHRoYXQgaW4gbWluZC4gUmlnaHQsIHNvIEkgdGhpbmsgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGRpZyBpbnRvIHRoZSBQSFkgZHJpdmVyIHdvdWxkIGJlIHRvIGNvbmNlbnRyYXRlIG15IGVmZm9ydHMgb24gYGF4ODg3NzJfYmluZGAgYW5kIGBheDg4NzcyX2luaXRfcGh5YC4gVGhlIHBsYW4gaXMgdG8gZm9sbG93IHRoZSBicmVhZGNydW1icy4gV2FpdC4uLiBgYXg4ODc3Ml9iaW5kYCBpcyBhY3R1YWxseSBkZWZpbmVkIGluIGBhc2l4X2RldmljZXMuY2AuIEdvdCBpdC5cblxuTm93LCBiZWZvcmUgSSBnZXQgdG9vIGRlZXAsIGxldCdzIGp1c3QgY29uZmlybSB0aGF0IGBheDg4Nzk2Yl9ydXN0LnJzYCBkb2Vzbid0IGV4cG9ydCBhbnkgY3JpdGljYWwgZnVuY3Rpb25zLiBPa2F5LCBpdCBsb29rcyBsaWtlIHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gaXMgaGFuZGxlZCBieSB0aGF0IGBrZXJuZWw6Om1vZHVsZV9waHlfZHJpdmVyIWAgbWFjcm8uIFJpZ2h0LCBzbyB0aGF0IG1hY3JvICpnZW5lcmF0ZXMqIGBpbml0X21vZHVsZWAgYW5kIGBjbGVhbnVwX21vZHVsZWAgZnVuY3Rpb25zLiBJbnRlcmVzdGluZy4gQW5kIGl0IGFsc28gZ2VuZXJhdGVzIHRoZSBgcGh5X2RyaXZlcmAgc3RydWN0IGFycmF5LiBUaGF0IGdpdmVzIG1lIHNvbWV0aGluZyBjb25jcmV0ZSB0byBsb29rIGZvci4gU28sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBtYWNybyBkb2VzIHNvIEkgY2FuIHRyYWNrIHRoZSBleGVjdXRpb24uIExldCdzIGhlYWQgb3ZlciB0byBgcnVzdC9rZXJuZWwvbmV0L3BoeS5yc2AgdG8gc2VlIGhvdyBgbW9kdWxlX3BoeV9kcml2ZXJgIGlzIGRlZmluZWQuIFRoYXQncyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMzY4LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIzOjM3LjMyOTYzMjQ1OFoiLCJTZXEiOjQ4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA4MjA2MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFjcm9fcnVsZXMhIG1vZHVsZV9waHlfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInJ1c3Qva2VybmVsL25ldC9waHkucnNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwicnVzdC9rZXJuZWwvbmV0L3BoeS5ycz03NjQ9ICAgIGNvbnN0IGZuIGFzX2ludChcXHUwMDI2c2VsZikgLVxcdTAwM2UgdTMyIHtcXG4tLVxcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtODA3LSNbbWFjcm9fZXhwb3J0XVxcbnJ1c3Qva2VybmVsL25ldC9waHkucnM6ODA4Om1hY3JvX3J1bGVzISBtb2R1bGVfcGh5X2RyaXZlciB7XFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy04MDktICAgIChAcmVwbGFjZV9leHByICRfdDp0dCAkc3ViOmV4cHIpID1cXHUwMDNlIHskc3VifTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjM6MzcuMzkwNDU5OTA2WiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NzExOTQxMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gYHBoeS5yc2AqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoZSBQSFkgKFBoeXNpY2FsIExheWVyKSBpbnRlcmFjdGlvbiBpbiB0aGUgUnVzdCBrZXJuZWwncyBuZXR3b3JraW5nIHN0YWNrLiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCBsaW5lIDgwOCBvZiBgcnVzdC9rZXJuZWwvbmV0L3BoeS5yc2AgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIGRvbid0IHJlY2FsbCB0aGlzIHNwZWNpZmljIGFyZWEgb2YgdGhlIGNvZGViYXNlLCBzbyBJJ20gZ29pbmcgdG8gc2NhbiB0aGUgY29kZSBhcm91bmQgdGhhdCBsaW5lIGZvciBjbHVlcy4gSSdsbCBiZSBsb29raW5nIGZvciBjb21tb24gUEhZIG9wZXJhdGlvbnMsIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcywgb3IgYW55IGludGVyYWN0aW9uIHdpdGggdGhlIGhhcmR3YXJlIHJlZ2lzdGVycy4gTXkgZ29hbCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSBsb2dpY2FsIGZsb3cgYW5kIHRoZSBzcGVjaWZpYyBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQgYXQgdGhhdCBwb2ludCBpbiB0aGUgc3lzdGVtLiBUaGUgZXhhY3QgbGluZSBtYXkgdHJpZ2dlciBzb21lIHByaW9yIGtub3dsZWRnZS4gUGVyaGFwcyBJIGFtIGxvb2tpbmcgZm9yIGEgc3BlY2lmaWMgcmVnaXN0ZXIgc2V0dGluZyB0byBkZWJ1Zy4gSG9wZWZ1bGx5LCB0aGF0IHdpbGwgbGVhZCBtZSB0byB0aGUgdW5kZXJseWluZyBpc3N1ZS4gTGV0J3MgZ2V0IHJlYWRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxOTk0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjM6NDEuMzYxNjU2MjVaIiwiU2VxIjo1MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxMzUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInJ1c3Qva2VybmVsL25ldC9waHkucnNcIixcbiAgXCJGaXJzdExpbmVcIjogODAwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODAwOlxcdC8vLyAjW3Z0YWJsZV1cXG4gODAxOlxcdC8vLyBpbXBsIHBoeTo6RHJpdmVyIGZvciBQaHlTYW1wbGUge1xcbiA4MDI6XFx0Ly8vICAgICBjb25zdCBOQU1FOiBcXHUwMDI2J3N0YXRpYyBDU3RyID0gY1xcXCJQaHlTYW1wbGVcXFwiO1xcbiA4MDM6XFx0Ly8vICAgICBjb25zdCBQSFlfREVWSUNFX0lEOiBwaHk6OkRldmljZUlkID0gcGh5OjpEZXZpY2VJZDo6bmV3X3dpdGhfZXhhY3RfbWFzaygweDAwMDAwMDAxKTtcXG4gODA0OlxcdC8vLyB9XFxuIDgwNTpcXHQvLy8gIyB9XFxuIDgwNjpcXHQvLy8gYGBgXFxuIDgwNzpcXHQjW21hY3JvX2V4cG9ydF1cXG4gODA4OlxcdG1hY3JvX3J1bGVzISBtb2R1bGVfcGh5X2RyaXZlciB7XFxuIDgwOTpcXHQgICAgKEByZXBsYWNlX2V4cHIgJF90OnR0ICRzdWI6ZXhwcikgPVxcdTAwM2UgeyRzdWJ9O1xcbiA4MTA6XFx0XFxuIDgxMTpcXHQgICAgKEBjb3VudF9kZXZpY2VzICQoJHg6ZXhwciksKikgPVxcdTAwM2Uge1xcbiA4MTI6XFx0ICAgICAgICAwdXNpemUgJCgrICRjcmF0ZTo6bW9kdWxlX3BoeV9kcml2ZXIhKEByZXBsYWNlX2V4cHIgJHggMXVzaXplKSkqXFxuIDgxMzpcXHQgICAgfTtcXG4gODE0OlxcdFxcbiA4MTU6XFx0ICAgIChAZGV2aWNlX3RhYmxlIFskKCRkZXY6ZXhwciksK10pID1cXHUwMDNlIHtcXG4gODE2OlxcdCAgICAgICAgJGNyYXRlOjptb2R1bGVfZGV2aWNlX3RhYmxlIShcXG4gODE3OlxcdCAgICAgICAgICAgIFxcXCJtZGlvXFxcIiwgJGNyYXRlOjpuZXQ6OnBoeTo6RGV2aWNlSWQsXFxuIDgxODpcXHQgICAgICAgICAgICBUQUJMRSwgQG5vbmUsIFskKCRkZXYpLCtdXFxuIDgxOTpcXHQgICAgICAgICk7XFxuIDgyMDpcXHQgICAgfTtcXG4gODIxOlxcdFxcbiA4MjI6XFx0ICAgIChkcml2ZXJzOiBbJCgkZHJpdmVyOmlkZW50KSwrICQoLCk/XSwgZGV2aWNlX3RhYmxlOiBbJCgkZGV2OmV4cHIpLCsgJCgsKT9dLCAkKCRmOnR0KSopID1cXHUwMDNlIHtcXG4gODIzOlxcdCAgICAgICAgc3RydWN0IE1vZHVsZSB7XFxuIDgyNDpcXHQgICAgICAgICAgICBfcmVnOiAkY3JhdGU6Om5ldDo6cGh5OjpSZWdpc3RyYXRpb24sXFxuIDgyNTpcXHQgICAgICAgIH1cXG4gODI2OlxcdFxcbiA4Mjc6XFx0ICAgICAgICAkY3JhdGU6OnByZWx1ZGU6Om1vZHVsZSEge1xcbiA4Mjg6XFx0ICAgICAgICAgICAgdHlwZTogTW9kdWxlLFxcbiA4Mjk6XFx0ICAgICAgICAgICAgJCgkZikqXFxuIDgzMDpcXHQgICAgICAgIH1cXG4gODMxOlxcdFxcbiA4MzI6XFx0ICAgICAgICBjb25zdCBfOiAoKSA9IHtcXG4gODMzOlxcdCAgICAgICAgICAgIHN0YXRpYyBtdXQgRFJJVkVSUzogWyRjcmF0ZTo6bmV0OjpwaHk6OkRyaXZlclZUYWJsZTtcXG4gODM0OlxcdCAgICAgICAgICAgICAgICAkY3JhdGU6Om1vZHVsZV9waHlfZHJpdmVyIShAY291bnRfZGV2aWNlcyAkKCRkcml2ZXIpLCspXSA9XFxuIDgzNTpcXHQgICAgICAgICAgICAgICAgWyQoJGNyYXRlOjpuZXQ6OnBoeTo6Y3JlYXRlX3BoeV9kcml2ZXI6OlxcdTAwM2MkZHJpdmVyXFx1MDAzZSgpKSwrXTtcXG4gODM2OlxcdFxcbiA4Mzc6XFx0ICAgICAgICAgICAgaW1wbCAkY3JhdGU6Ok1vZHVsZSBmb3IgTW9kdWxlIHtcXG4gODM4OlxcdCAgICAgICAgICAgICAgICBmbiBpbml0KG1vZHVsZTogXFx1MDAyNidzdGF0aWMgJGNyYXRlOjpUaGlzTW9kdWxlKSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjU2VsZlxcdTAwM2Uge1xcbiA4Mzk6XFx0ICAgICAgICAgICAgICAgICAgICAvLyBTQUZFVFk6IFRoZSBhbm9ueW1vdXMgY29uc3RhbnQgZ3VhcmFudGVlcyB0aGF0IG5vYm9keSBlbHNlIGNhbiBhY2Nlc3NcXG4gODQwOlxcdCAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGBEUklWRVJTYCBzdGF0aWMuIFRoZSBhcnJheSBpcyB1c2VkIG9ubHkgaW4gdGhlIEMgc2lkZS5cXG4gODQxOlxcdCAgICAgICAgICAgICAgICAgICAgbGV0IGRyaXZlcnMgPSB1bnNhZmUgeyBcXHUwMDI2bXV0IERSSVZFUlMgfTtcXG4gODQyOlxcdCAgICAgICAgICAgICAgICAgICAgbGV0IG11dCByZWcgPSAkY3JhdGU6Om5ldDo6cGh5OjpSZWdpc3RyYXRpb246OnJlZ2lzdGVyKFxcbiA4NDM6XFx0ICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlLFxcbiA4NDQ6XFx0ICAgICAgICAgICAgICAgICAgICAgICAgOjpjb3JlOjpwaW46OlBpbjo6c3RhdGljX211dChkcml2ZXJzKSxcXG4gODQ1OlxcdCAgICAgICAgICAgICAgICAgICAgKT87XFxuIDg0NjpcXHQgICAgICAgICAgICAgICAgICAgIE9rKE1vZHVsZSB7IF9yZWc6IHJlZyB9KVxcbiA4NDc6XFx0ICAgICAgICAgICAgICAgIH1cXG4gODQ4OlxcdCAgICAgICAgICAgIH1cXG4gODQ5OlxcdCAgICAgICAgfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjM6NDEuMzYxNzU4NTgxWiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMDA1NzM1NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUYXJnZXQgZm9yIFN5emthbGxlciBGdXp6aW5nKipcblxuT2theSwgc28gdGhlIGBtb2R1bGUhYCBtYWNybyBnZW5lcmF0ZXMgdGhlIG1vZHVsZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiwgd2hpY2ggaXMgbmFtZWQgYGluaXRfbW9kdWxlYCBpbiB0aGlzIGNhc2UuIFRoZSBpc3N1ZSBpcyBpbiBhIFBIWSBkcml2ZXIsIHdoaWNoIG1lYW5zIHN5emthbGxlciBzaG91bGQgYmUgYWJsZSB0byByZWFjaCBpdCBvbmNlIGl0J3MgbG9hZGVkLiBUbyBtYWtlIHRoaW5ncyBlYXNpZXIgZm9yIHN5emthbGxlciwgSSBzaG91bGQgcGlucG9pbnQgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucy4gTGV0J3MgZm9jdXMgb24gYGF4ODg3NzJfYmluZGAgYW5kIGBheDg4NzcyX2luaXRfcGh5YCB3aXRoaW4gYGFzaXhfZGV2aWNlcy5jYC4gV2FpdCwgYGF4ODg3NzJfYmluZGAgc2VlbXMgdG8gYmUgc3BlY2lmaWNhbGx5IGZvciB0aGUgYGF4ODg3NzJgIGRldmljZS4gR2l2ZW4gdGhhdCB0aGUgUEhZIGRyaXZlciBgYXg4ODc5NmJfcnVzdC5yc2Agc3VwcG9ydHMgYSB2YXJpZXR5IG9mIFBIWXMsIG5hbWVseSBgUGh5QVg4ODc3MkFgLCBgUGh5QVg4ODc3MkNgLCBhbmQgYFBoeUFYODg3OTZCYCwgSSBzaG91bGQgcHJvYmFibHkgYWxzbyBjb25maXJtIGlmIHRoZSB0YXJnZXQgZGV2aWNlIGlzIHN1cHBvcnRlZCBpbiBgYXNpeF9kZXZpY2VzLmNgLiBJdCBsb29rcyBsaWtlIEkgbmVlZCB0byBjaGVjayBmb3IgYGF4ODg3NzJhYCBpbiBwYXJ0aWN1bGFyLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzA3NCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIzOjQ2LjQ2MjMzNTIzOFoiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEyMzE0NTg3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJheDg4NzcyYV9iaW5kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjM6NDYuNjc0NjU1ODA1WiIsIlNlcSI6NTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDI0Nzg1OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIHByb3ZpZGVkIGluc3RydWN0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEFYODg3NzJBIERyaXZlciBDb2RlKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgYXNpeF9kZXZpY2VzLmNgIGZpbGUuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGdldCBhIGxvb2sgYXQgdGhlIGNvZGUgcmVsYXRlZCB0byB0aGUgYGF4ODg3NzJhYCBkZXZpY2UuIFRoaXMgbGlrZWx5IG1lYW5zIEknbSBsb29raW5nIHRvIHVuZGVyc3RhbmQgaXRzIGltcGxlbWVudGF0aW9uLCBwZXJoYXBzIHRyb3VibGVzaG9vdCBhbiBpc3N1ZSwgb3IgcG90ZW50aWFsbHkgbW9kaWZ5IHNvbWV0aGluZyByZWxhdGVkIHRvIHRoaXMgVVNCLXRvLUV0aGVybmV0IGFkYXB0ZXIuIEdpdmVuIG15IGV4cGVydGlzZSwgSSdtIHByb2JhYmx5IGxvb2tpbmcgZm9yIGtleSBkYXRhIHN0cnVjdHVyZXMsIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb25zLCBpbnRlcnJ1cHQgaGFuZGxpbmcgcm91dGluZXMsIG9yIHBlcmhhcHMgZXZlbiBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyByZWxhdGVkIHRvIHRoaXMgcGFydGljdWxhciBkZXZpY2UuIEknbGwgYmUgcXVpY2tseSBzY2FubmluZyBmb3IgcmVsZXZhbnQgZnVuY3Rpb24gY2FsbHMsIHZhcmlhYmxlIGRlY2xhcmF0aW9ucywgYW5kIGNvbW1lbnRzIHRoYXQgd2lsbCBnaXZlIG1lIHRoZSBxdWljayBncmFzcCBvZiB0aGUgaW5uZXIgd29ya2luZ3Mgb2YgdGhpcyBkcml2ZXIgdGhhdCBJIG5lZWQuIExldCdzIGdldCBzdGFydGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzU2MCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIzOjUwLjI3NzEzNzA3M1oiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc4OTA1MTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXg4ODc3MmFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0zNjI9c3RhdGljIGludCBheDg4NzcyX2h3X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldiwgaW50IGluX3BtKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ1NS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NDU2OnN0YXRpYyBpbnQgYXg4ODc3MmFfaHdfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgaW5fcG0pXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9ODI5PXN0YXRpYyBpbnQgYXg4ODc3Ml9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODk4LVxcdGVsc2VcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODk5OlxcdFxcdHByaXYtXFx1MDAzZXJlc2V0ID0gYXg4ODc3MmFfaHdfcmVzZXQ7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkwMC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjM6NTAuMzc1MDM4NjU1WiIsIlNlcSI6NTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MzkzOTQ5MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkV4YW1pbmluZyB0aGUgRHJpdmVyIEJpbmRpbmcgaW4gYXNpeF9kZXZpY2VzLmMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29kZSBpcyBzdGF0aW5nIHRoYXQgdGhlIGBheDg4NzcyX2JpbmRgIGZ1bmN0aW9uIGlzIGFsc28gcmVzcG9uc2libGUgZm9yIGJpbmRpbmcgdGhlIGBheDg4NzcyYWAgZGV2aWNlLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gTXkgZmlyc3QgaW5zdGluY3QsIGFzIGFsd2F5cywgaXMgdG8gZ28gZGlyZWN0bHkgdG8gdGhlIHNvdXJjZS4gTGV0J3MgZGVsdmUgaW50byBgYXNpeF9kZXZpY2VzLmNgIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGF4ODg3NzJfYmluZGAuIEkgd2FudCB0byBzZWUgaG93IHRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgYmluZGluZyBwcm9jZXNzLCB0aGUgZGV2aWNlIElEcyBpdCByZWNvZ25pemVzLCBhbmQgaWYgdGhlcmUncyBhbnkgY29uZGl0aW9uYWwgbG9naWMgd2l0aGluIGl0IHRoYXQgbWlnaHQgZXhwbGFpbiB3aHkgaXQncyBoYW5kbGluZyBib3RoIHRoZSBvcmlnaW5hbCBgYXg4ODc3MmAgYW5kIHRoZSBgYXg4ODc3MmFgLiBUaGUgZGV2aWwncyBhbHdheXMgaW4gdGhlIGRldGFpbHMsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggc2xpZ2h0bHkgZGlmZmVyZW50IGhhcmR3YXJlIHJldmlzaW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBiaW5kaW5nIHJlbGF0aW9uc2hpcCBjb21wbGV0ZWx5IHRvIHRyb3VibGVzaG9vdCBvciBleHRlbmQgZnVuY3Rpb25hbGl0eSwgaWYgdGhlIG5lZWQgYXJpc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDA1OSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIzOjU0LjIxNDQzNjU1MloiLCJTZXEiOjU2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjA1MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDgyMCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDgyMDpcXHRcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXYtXFx1MDAzZW5ldC1cXHUwMDNlZGV2LmZ3bm9kZSxcXG4gODIxOlxcdFxcdFxcdFxcdFxcdCBwaHlfaWZfbW9kZSwgXFx1MDAyNmF4ODg3NzJfcGh5bGlua19tYWNfb3BzKTtcXG4gODIyOlxcdFxcdGlmIChJU19FUlIocGh5bGluaykpXFxuIDgyMzpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihwaHlsaW5rKTtcXG4gODI0OlxcdFxcbiA4MjU6XFx0XFx0cHJpdi1cXHUwMDNlcGh5bGluayA9IHBoeWxpbms7XFxuIDgyNjpcXHRcXHRyZXR1cm4gMDtcXG4gODI3OlxcdH1cXG4gODI4OlxcdFxcbiA4Mjk6XFx0c3RhdGljIGludCBheDg4NzcyX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4gODMwOlxcdHtcXG4gODMxOlxcdFxcdHN0cnVjdCBhc2l4X2NvbW1vbl9wcml2YXRlICpwcml2O1xcbiA4MzI6XFx0XFx0dTggYnVmW0VUSF9BTEVOXSA9IHswfTtcXG4gODMzOlxcdFxcdGludCByZXQsIGk7XFxuIDgzNDpcXHRcXG4gODM1OlxcdFxcdHByaXYgPSBkZXZtX2t6YWxsb2MoXFx1MDAyNmRldi1cXHUwMDNldWRldi1cXHUwMDNlZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTtcXG4gODM2OlxcdFxcdGlmICghcHJpdilcXG4gODM3OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiA4Mzg6XFx0XFxuIDgzOTpcXHRcXHRkZXYtXFx1MDAzZWRyaXZlcl9wcml2ID0gcHJpdjtcXG4gODQwOlxcdFxcbiA4NDE6XFx0XFx0cmV0ID0gdXNibmV0X2dldF9lbmRwb2ludHMoZGV2LCBpbnRmKTtcXG4gODQyOlxcdFxcdGlmIChyZXQpXFxuIDg0MzpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA4NDQ6XFx0XFxuIDg0NTpcXHRcXHQvKiBNYXliZSB0aGUgYm9vdCBsb2FkZXIgcGFzc2VkIHRoZSBNQUMgYWRkcmVzcyB2aWEgZGV2aWNlIHRyZWUgKi9cXG4gODQ2OlxcdFxcdGlmICghZXRoX3BsYXRmb3JtX2dldF9tYWNfYWRkcmVzcyhcXHUwMDI2ZGV2LVxcdTAwM2V1ZGV2LVxcdTAwM2VkZXYsIGJ1ZikpIHtcXG4gODQ3OlxcdFxcdFxcdG5ldGlmX2RiZyhkZXYsIGlmdXAsIGRldi1cXHUwMDNlbmV0LFxcbiA4NDg6XFx0XFx0XFx0XFx0ICBcXFwiTUFDIGFkZHJlc3MgcmVhZCBmcm9tIGRldmljZSB0cmVlXFxcIik7XFxuIDg0OTpcXHRcXHR9IGVsc2Uge1xcbiA4NTA6XFx0XFx0XFx0LyogVHJ5IGdldHRpbmcgdGhlIE1BQyBhZGRyZXNzIGZyb20gRUVQUk9NICovXFxuIDg1MTpcXHRcXHRcXHRpZiAoZGV2LVxcdTAwM2Vkcml2ZXJfaW5mby1cXHUwMDNlZGF0YSBcXHUwMDI2IEZMQUdfRUVQUk9NX01BQykge1xcbiA4NTI6XFx0XFx0XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIChFVEhfQUxFTiBcXHUwMDNlXFx1MDAzZSAxKTsgaSsrKSB7XFxuIDg1MzpcXHRcXHRcXHRcXHRcXHRyZXQgPSBhc2l4X3JlYWRfY21kKGRldiwgQVhfQ01EX1JFQURfRUVQUk9NLFxcbiA4NTQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIDB4MDQgKyBpLCAwLCAyLCBidWYgKyBpICogMixcXG4gODU1OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAwKTtcXG4gODU2OlxcdFxcdFxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiA4NTc6XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDg1ODpcXHRcXHRcXHRcXHR9XFxuIDg1OTpcXHRcXHRcXHR9IGVsc2Uge1xcbiA4NjA6XFx0XFx0XFx0XFx0cmV0ID0gYXNpeF9yZWFkX2NtZChkZXYsIEFYX0NNRF9SRUFEX05PREVfSUQsXFxuIDg2MTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgMCwgMCwgRVRIX0FMRU4sIGJ1ZiwgMCk7XFxuIDg2MjpcXHRcXHRcXHR9XFxuIDg2MzpcXHRcXG4gODY0OlxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuIDg2NTpcXHRcXHRcXHRcXHRuZXRkZXZfZGJnKGRldi1cXHUwMDNlbmV0LCBcXFwiRmFpbGVkIHRvIHJlYWQgTUFDIGFkZHJlc3M6ICVkXFxcXG5cXFwiLFxcbiA4NjY6XFx0XFx0XFx0XFx0XFx0ICAgcmV0KTtcXG4gODY3OlxcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDg2ODpcXHRcXHRcXHR9XFxuIDg2OTpcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIzOjU0LjIxNDU5ODkxM1oiLCJTZXEiOjU3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDUwOTgzNjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgYGF4ODg3NzJgIERyaXZlcioqXG5cbkFscmlnaHQsIHNvIEknbSBmb2N1c2luZyBvbiB0aGUgYGF4ODg3NzJgIGRyaXZlciwgYW5kIGl0IGxvb2tzIGxpa2UgYGF4ODg3NzJfYmluZGAgaXMsIGFzIGV4cGVjdGVkLCB0aGUgcHJpbWFyeSBiaW5kIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIHNvIGxldCdzIHN0YXJ0IGJ5IHF1aWNrbHkgdmVyaWZ5aW5nIGFuZCBleGFtaW5pbmcgdGhlIGBheDg4NzcyX2luaXRfcGh5YCBmdW5jdGlvbi4gSXQgaXMgYSBjcml0aWNhbCBjb21wb25lbnQgZm9yIGJyaW5naW5nIHVwIHRoZSBwaHlzaWNhbCBsYXllciBpbnRlcmZhY2UuIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIFBIWSBpbml0aWFsaXphdGlvbiBpcyBoYW5kbGVkIGNvcnJlY3RseSBhbmQgZWZmaWNpZW50bHksIGNvbnNpZGVyaW5nIHBvdGVudGlhbCBwb3dlci11cCBzZXF1ZW5jZXMsIGF1dG9uZWdvdGlhdGlvbiBwYXJhbWV0ZXJzLCBhbmQgYW55IHNwZWNpZmljIHF1aXJrcyBvZiB0aGUgQVg4ODc3MidzIFBIWS4gSSdsbCBwcm9iYWJseSBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSByZWdpc3RlcnMgYmVpbmcgYWNjZXNzZWQgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MTcyLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMzo1OC4yNjU1ODQ4NzdaIiwiU2VxIjo1OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwNzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3MDAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3MDA6XFx0XFx0bWRpb2J1c19mcmVlKHByaXYtXFx1MDAzZW1kaW8pO1xcbiA3MDE6XFx0fVxcbiA3MDI6XFx0XFxuIDcwMzpcXHRzdGF0aWMgaW50IGF4ODg3NzJfaW5pdF9waHkoc3RydWN0IHVzYm5ldCAqZGV2KVxcbiA3MDQ6XFx0e1xcbiA3MDU6XFx0XFx0c3RydWN0IGFzaXhfY29tbW9uX3ByaXZhdGUgKnByaXYgPSBkZXYtXFx1MDAzZWRyaXZlcl9wcml2O1xcbiA3MDY6XFx0XFx0aW50IHJldDtcXG4gNzA3OlxcdFxcbiA3MDg6XFx0XFx0cHJpdi1cXHUwMDNlcGh5ZGV2ID0gbWRpb2J1c19nZXRfcGh5KHByaXYtXFx1MDAzZW1kaW8sIHByaXYtXFx1MDAzZXBoeV9hZGRyKTtcXG4gNzA5OlxcdFxcdGlmICghcHJpdi1cXHUwMDNlcGh5ZGV2KSB7XFxuIDcxMDpcXHRcXHRcXHRuZXRkZXZfZXJyKGRldi1cXHUwMDNlbmV0LCBcXFwiQ291bGQgbm90IGZpbmQgUEhZXFxcXG5cXFwiKTtcXG4gNzExOlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbiA3MTI6XFx0XFx0fVxcbiA3MTM6XFx0XFxuIDcxNDpcXHRcXHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KHByaXYtXFx1MDAzZXBoeWxpbmssIHByaXYtXFx1MDAzZXBoeWRldik7XFxuIDcxNTpcXHRcXHRpZiAocmV0KSB7XFxuIDcxNjpcXHRcXHRcXHRuZXRkZXZfZXJyKGRldi1cXHUwMDNlbmV0LCBcXFwiQ291bGQgbm90IGNvbm5lY3QgUEhZXFxcXG5cXFwiKTtcXG4gNzE3OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDcxODpcXHRcXHR9XFxuIDcxOTpcXHRcXG4gNzIwOlxcdFxcdHBoeV9zdXNwZW5kKHByaXYtXFx1MDAzZXBoeWRldik7XFxuIDcyMTpcXHRcXHRwcml2LVxcdTAwM2VwaHlkZXYtXFx1MDAzZW1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcXG4gNzIyOlxcdFxcbiA3MjM6XFx0XFx0cGh5X2F0dGFjaGVkX2luZm8ocHJpdi1cXHUwMDNlcGh5ZGV2KTtcXG4gNzI0OlxcdFxcbiA3MjU6XFx0XFx0aWYgKHByaXYtXFx1MDAzZWVtYmRfcGh5KVxcbiA3MjY6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDcyNzpcXHRcXG4gNzI4OlxcdFxcdC8qIEluIGNhc2UgbWFpbiBQSFkgaXMgbm90IHRoZSBlbWJlZGRlZCBQSFkgYW5kIE1BQyBpcyBSTUlJIGNsb2NrXFxuIDcyOTpcXHRcXHQgKiBwcm92aWRlciwgd2UgbmVlZCB0byBzdXNwZW5kIGVtYmVkZGVkIFBIWSBieSBrZWVwaW5nIFBMTCBlbmFibGVkXFxuIDczMDpcXHRcXHQgKiAoQVhfU1dSRVNFVF9JUFBEID09IDApLlxcbiA3MzE6XFx0XFx0ICovXFxuIDczMjpcXHRcXHRwcml2LVxcdTAwM2VwaHlkZXZfaW50ID0gbWRpb2J1c19nZXRfcGh5KHByaXYtXFx1MDAzZW1kaW8sIEFYX0VNQkRfUEhZX0FERFIpO1xcbiA3MzM6XFx0XFx0aWYgKCFwcml2LVxcdTAwM2VwaHlkZXZfaW50KSB7XFxuIDczNDpcXHRcXHRcXHRydG5sX2xvY2soKTtcXG4gNzM1OlxcdFxcdFxcdHBoeWxpbmtfZGlzY29ubmVjdF9waHkocHJpdi1cXHUwMDNlcGh5bGluayk7XFxuIDczNjpcXHRcXHRcXHRydG5sX3VubG9jaygpO1xcbiA3Mzc6XFx0XFx0XFx0bmV0ZGV2X2VycihkZXYtXFx1MDAzZW5ldCwgXFxcIkNvdWxkIG5vdCBmaW5kIGludGVybmFsIFBIWVxcXFxuXFxcIik7XFxuIDczODpcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gNzM5OlxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjM6NTguMjY1Njg2Njc3WiIsIlNlcSI6NTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwNTc0MzIwNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgQnVnIEZpeCoqXG5cbk9rYXksIHNvIGBheDg4NzcyX2luaXRfcGh5YCBhbmQgYGF4ODg3NzJfYmluZGAgc2VlbSBsaWtlIGdvb2Qgc3RhcnRpbmcgcG9pbnRzIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBmaXguIEdpdmVuIG15IGV4cGVydGlzZSwgbXkgaW50dWl0aW9uIGlzIHRlbGxpbmcgbWUgdG8gbG9vayBjbG9zZWx5IGF0IHRoZXNlIHN5bWJvbHMuIFdhaXQsIHRoZSBwcm9ibGVtIGlzIHNwZWNpZmljYWxseSBpbiBgcnVzdC9rZXJuZWwvbmV0L3BoeS5yc2AuIEludGVyZXN0aW5nLiBJJ3ZlIGJlZW4gYWxlcnRlZCB0aGUgYnVnIGhhcyBiZWVuIGNvbmZpcm1lZCBpbiBgYXg4ODc5NmJfcnVzdC5yc2AuIFRoZSBwYXRjaCBhZGRyZXNzZXMgYml0ZmllbGQgaW5kZXggZXJyb3JzIGluIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGxpbmsgYW5kIGF1dG9uZWdvdGlhdGlvbiBzdGF0dXM6IGBpc19saW5rX3VwYCwgYGlzX2F1dG9uZWdfZW5hYmxlZGAsIGFuZCBgaXNfYXV0b25lZ19jb21wbGV0ZWRgLiBTbywgY2xlYXJseSwgdGhlIGRyaXZlciB3YXMgcmVhZGluZyB0aGUgd3JvbmcgYml0cyEgVGhpcyBleHBsYWlucyB0aGUgcG90ZW50aWFsIGZvciBsaW5rIHN0YXR1cyBvciBhdXRvbmVnb3RpYXRpb24gZXJyb3JzLCB3aGljaCB3b3VsZCBkZWZpbml0ZWx5IGJlIGNvbnNpZGVyZWQgYSBmdW5jdGlvbmFsIGNoYW5nZS5cblxuSXMgdGhpcyByZWFjaGFibGU/IFllcywgdGhyb3VnaCBVU0IgZW11bGF0aW9uIG9mIEFTSVggZGV2aWNlcy4gVGhhdCdzIGdvb2Q7IHRoaXMgbWFrZXMgaXQgZnV6emFibGUhIFdlJ2xsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLlxuXG5Gb3IgdGhlIGZ1enplciwgd2UnbGwgZW5hYmxlIGBSVVNUYCwgYFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU2AsIGBBWDg4Nzk2Ql9SVVNUX1BIWWAsIGFuZCBgVVNCX05FVF9BWDg4MTdYYCBpbiBgRW5hYmxlQ29uZmlnc2AuIFRoZSBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlIGBheDg4NzcyX2JpbmRgIGFuZCBgYXg4ODc3Ml9pbml0X3BoeWAuXG5cbk5vdywgd2hhdCBhYm91dCB0aGF0IGByZWFkX3N0YXR1c2AgaW4gYFBoeUFYODg3NzJBYD8gVGhhdCBtaWdodCBiZSB2YWx1YWJsZSBmb3IgYSBtb3JlIGRldGFpbGVkIGFuYWx5c2lzLCBidXQgdGhlIG5hbWUgaXMgbWFuZ2xlZC4gSSBjYW4ndCBlYXNpbHkgYW5hbHl6ZSBpdCB1c2luZyBzeXprYWxsZXIuIEhvd2V2ZXIsIGBheDg4NzcyX2luaXRfcGh5YCB0cmlnZ2VycyB0aGUgUEhZIGluaXRpYWxpemF0aW9uLCBhbmQgYGF4ODg3NzJfYmluZGAgdHJpZ2dlcnMgdGhlIFVTQiBkZXZpY2UgYmluZGluZy4gR29vZCwgdGhpcyBpcyBhIHBhdGggaW4uIFxuXG5PaCB3YWl0LCBgYXg4ODc3Ml9pbml0X3BoeWAgaXMgc3RhdGljLi4uIFRoYXQgbWlnaHQgY29tcGxpY2F0ZSB0aGluZ3MgYSBsaXR0bGUuIFdlIG5lZWQgdG8gYmUgYWJsZSB0byB0cmlnZ2VyIHRoZSBmdW5jdGlvbiEgQXJlIHRoZXJlIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoaXM/IFdoYXQgYWJvdXQgYGFzaXhfbWRpb19yZWFkYD8gSSBzaG91bGQgY2hlY2sgYGFzaXhfZGV2aWNlcy5jYCBmb3IgZXhwb3J0ZWQgZnVuY3Rpb25zIHRoYXQgYXJlIG5vdCBzdGF0aWMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MDU0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjQ6MDYuMzIzMTIyNDhaIiwiU2VxIjo2MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1MzAyODUxMywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjI0OjA2Ljk3NjE1OTUzM1oiLCJTZXEiOjYxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mjk5NDgzNDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYGFzaXhfbWRpb19yZWFkYCBGdW5jdGlvbioqXG5cbkhtbSwgYGFzaXhfbWRpb19yZWFkYC4uLiBJJ20gaW1tZWRpYXRlbHkgdGhpbmtpbmcsIFwiV2h5IGFyZSB3ZSBsb29raW5nIGF0ICp0aGlzKiBmdW5jdGlvbiBzcGVjaWZpY2FsbHk/XCIgSXMgdGhlcmUgYW4gaXNzdWUgd2l0aCB0aGUgTURJTyBpbnRlcmZhY2Ugb24gYW4gQVNJWC1iYXNlZCBkZXZpY2U/IFBlcmhhcHMgYSByZWNlbnQgYnVnIHJlcG9ydD8gT3IgbWF5YmUgd2UncmUgcmV2aXNpdGluZyBzb21lIG9sZCBjb2RlIGZvciBvcHRpbWl6YXRpb24gb3Igc2VjdXJpdHkgYXVkaXRpbmcuIEl0J3MgbGlrZWx5IHRoYXQgYSByZWdpc3RlciByZWFkIG9wZXJhdGlvbiBpcyBmYWlsaW5nIG9yIHJldHVybmluZyBpbmNvcnJlY3QgZGF0YSwgYW5kIGBhc2l4X21kaW9fcmVhZGAgaXMgdGhlIHN1c3BlY3QuIEknbGwgbmVlZCB0byByZW1lbWJlciB0aGlzIGZ1bmN0aW9uIGlzIHByb2JhYmx5IHBhcnQgb2YgdGhlIEV0aGVybmV0IGNvbnRyb2xsZXIncyBQSFkgaW50ZXJhY3Rpb24uIEtub3dpbmcgdGhhdCwgaXMgdGhlcmUgYSBwcm9ibGVtIHdpdGggdGhlIE1ESU8gYnVzIGl0c2VsZiwgdGhlIFBIWSBhZGRyZXNzLCBvciBpcyB0aGUgcmVhZCBjb21tYW5kIGJlaW5nIGZvcm1hdHRlZCBpbmNvcnJlY3RseT8gSSBoYXZlIGEgZmVlbGluZyB0aGVyZSB3aWxsIGJlIGEgY2FsbCB0byB0aGUgTURJTyBQSFkgbGF5ZXIgb3IgYSBzdWJzZXF1ZW50IGJpdC1iYW5naW5nIG9mIGEgc2VyaWFsIGludGVyZmFjZS4gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoZSB0eXBpY2FsIGRlYnVnZ2luZyBzdGVwczogY2hlY2sgZm9yIGNsb2NraW5nIGlzc3VlcywgdmVyaWZ5IHRoZSBNRElPIHNpZ25hbCBpbnRlZ3JpdHksIGFuZCB2YWxpZGF0ZSB0aGUgcmVnaXN0ZXIgYWRkcmVzcyBiZWluZyB0YXJnZXRlZC4gSSdsbCBwcm9iYWJseSBsb29rIHRvIHNlZSB3aGVyZSBpdCdzIGNhbGxlZCBhbmQgdGhlIHBhcmFtZXRlcnMgcGFzc2VkIHRvIGl0IC0gdGhhdCB3aWxsIGdpdmUgbWUgY29udGV4dC4gSXQnbGwgYmUgaW50ZXJlc3RpbmcgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCdzICphY3R1YWxseSogaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzAxNSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjI0OjExLjI3NTY0NjAyWiIsIlNlcSI6NjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDUwODc5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhc2l4X21kaW9fcmVhZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTcwPXN0YXRpYyB1MzIgYXNpeF9nZXRfcGh5aWQoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc3LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAxMDA7IGkrKykge1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3ODpcXHRcXHRwaHlfcmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUlJX1BIWVNJRDEpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03OS1cXHRcXHRpZiAocGh5X3JlZyBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTAtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkxOlxcdHBoeV9yZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfUEhZU0lEMik7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkyLVxcdGlmIChwaHlfcmVnIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xOTA9c3RhdGljIHZvaWQgYXNpeF9waHlfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCB1bnNpZ25lZCBpbnQgcmVzZXRfYml0cylcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yMDAtXFx0d2hpbGUgKHRpbWVvdXQtLSkge1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyMDE6XFx0XFx0aWYgKGFzaXhfbWRpb19yZWFkKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIE1JSV9CTUNSKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yMDItXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNiBCTUNSX1JFU0VUKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTIxMj1zdGF0aWMgaW50IGF4ODgxNzJfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI0OC1cXHRkZXYtXFx1MDAzZW1paS5kZXYgPSBkZXYtXFx1MDAzZW5ldDtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjQ5OlxcdGRldi1cXHUwMDNlbWlpLm1kaW9fcmVhZCA9IGFzaXhfbWRpb19yZWFkO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNTAtXFx0ZGV2LVxcdTAwM2VtaWkubWRpb193cml0ZSA9IGFzaXhfbWRpb193cml0ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0zNjI9c3RhdGljIGludCBheDg4NzcyX2h3X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldiwgaW50IGluX3BtKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQwNi1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NDA3OlxcdGlmIChpbl9wbSBcXHUwMDI2XFx1MDAyNiAoIWFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDA4LVxcdFxcdFxcdFxcdFxcdCAgIE1JSV9QSFlTSUQxKSkpe1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTQ1Nj1zdGF0aWMgaW50IGF4ODg3NzJhX2h3X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldiwgaW50IGluX3BtKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ5Ni1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NDk3OlxcdGlmIChpbl9wbSBcXHUwMDI2XFx1MDAyNiAoIWFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDk4LVxcdFxcdFxcdFxcdFxcdCAgIE1JSV9QSFlTSUQxKSkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MTItXFx0XFx0LyogQ2hlY2sgaWYgdGhlIFBIWSByZWdpc3RlcnMgaGF2ZSBkZWZhdWx0IHNldHRpbmdzICovXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUxMzpcXHRcXHRwaHkxNGggPSBhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxNC1cXHRcXHRcXHRcXHRcXHQgICAgIEFYODg3NzJBX1BIWTE0SCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUxNTpcXHRcXHRwaHkxNWggPSBhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxNi1cXHRcXHRcXHRcXHRcXHQgICAgIEFYODg3NzJBX1BIWTE1SCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUxNzpcXHRcXHRwaHkxNmggPSBhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxOC1cXHRcXHRcXHRcXHRcXHQgICAgIEFYODg3NzJBX1BIWTE2SCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9OTkwPXN0YXRpYyBpbnQgbWFydmVsbF9waHlfaW5pdChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5OTc6XFx0cmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUlJX01BUlZFTExfU1RBVFVTKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk4LVxcdG5ldGRldl9kYmcoZGV2LVxcdTAwM2VuZXQsIFxcXCJNSUlfTUFSVkVMTF9TVEFUVVMgPSAweCUwNHhcXFxcblxcXCIsIHJlZyk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAwMy1cXHRpZiAoZGF0YS1cXHUwMDNlbGVkbW9kZSkge1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDA0OlxcdFxcdHJlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMDUtXFx0XFx0XFx0TUlJX01BUlZFTExfTEVEX0NUUkwpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMTItXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMTM6XFx0XFx0cmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAxNC1cXHRcXHRcXHRNSUlfTUFSVkVMTF9MRURfQ1RSTCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTAyMT1zdGF0aWMgaW50IHJ0bDgyMTFjbF9waHlfaW5pdChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyOS1cXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MDEsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMzA6XFx0XFx0YXNpeF9tZGlvX3JlYWQgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MDEpIHwgMHgwMDgwKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAzMS1cXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTEwNDI9c3RhdGljIGludCBtYXJ2ZWxsX2xlZF9zdGF0dXMoc3RydWN0IHVzYm5ldCAqZGV2LCB1MTYgc3BlZWQpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwNDMte1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDQ0OlxcdHUxNiByZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNQVJWRUxMX0xFRF9NQU5VQUwpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTEyNzE9c3RhdGljIGludCBheDg4MTc4X2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMjkwLVxcdGRldi1cXHUwMDNlbWlpLmRldiA9IGRldi1cXHUwMDNlbmV0O1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMjkxOlxcdGRldi1cXHUwMDNlbWlpLm1kaW9fcmVhZCA9IGFzaXhfbWRpb19yZWFkO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMjkyLVxcdGRldi1cXHUwMDNlbWlpLm1kaW9fd3JpdGUgPSBhc2l4X21kaW9fd3JpdGU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjI0OjExLjM1MDE2MDMzOVoiLCJTZXEiOjYzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjQwNTc4NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkxvY2F0aW5nIHRoZSBNRElPIFJlYWQgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIHRyYWNrIGRvd24gdGhlIGltcGxlbWVudGF0aW9uIG9mIGBhc2l4X21kaW9fcmVhZGAuIExldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgaXQncyBzdXBwb3NlZCB0byBiZSB3aXRoaW4gdGhlIGBhc2l4X2NvbW1vbi5jYCBmaWxlLCByaWdodD8gSWYgc28sIHRoYXQgbWFrZXMgdGhpbmdzIGVhc2llci5cblxuTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGRlZmluaXRpb24gb2YgdGhpcyBmdW5jdGlvbiB3aXRoaW4gdGhlIGNvZGUgYmFzZS4gSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IGl0cyBzaWduYXR1cmUgYW5kLCBtb3JlIGltcG9ydGFudGx5LCBzZWUgaG93IGl0J3MgYWN0dWFsbHkgaW1wbGVtZW50ZWQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBmaW5kIHRoYXQgZGVmaW5pdGlvbiFcblxuXG4iLCJJbnB1dFRva2VucyI6MzkyODAsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyNDoxNS45OTA3NDI0ODhaIiwiU2VxIjo2NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3NDQwMjMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFzaXhfbWRpb19yZWFkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL2FzaXguaD0yMjk9dm9pZCBhc2l4X3NldF9tdWx0aWNhc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0yMzAtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoyMzE6aW50IGFzaXhfbWRpb19yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjMyLXZvaWQgYXNpeF9tZGlvX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MsIGludCB2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaD0yMzU9aW50IGFzaXhfbWRpb19idXNfd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IHJlZ251bSwgdTE2IHZhbCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0yMzYtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoyMzc6aW50IGFzaXhfbWRpb19yZWFkX25vcG0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYyk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0yMzgtdm9pZCBhc2l4X21kaW9fd3JpdGVfbm9wbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM9NDQxPXZvaWQgYXNpeF9zZXRfbXVsdGljYXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00NzktXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NDgwOnN0YXRpYyBpbnQgX19hc2l4X21kaW9fcmVhZChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTQ4MS1cXHRcXHRcXHQgICAgYm9vbCBpbl9wbSlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUwMy1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MDQ6XFx0bmV0ZGV2X2RiZyhkZXYtXFx1MDAzZW5ldCwgXFxcImFzaXhfbWRpb19yZWFkKCkgcGh5X2lkPTB4JTAyeCwgbG9jPTB4JTAyeCwgcmV0dXJucz0weCUwNHhcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTA1LVxcdFxcdFxcdHBoeV9pZCwgbG9jLCBsZTE2X3RvX2NwdShyZXMpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUwOS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MTA6aW50IGFzaXhfbWRpb19yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTExLXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MTI6XFx0cmV0dXJuIF9fYXNpeF9tZGlvX3JlYWQobmV0ZGV2LCBwaHlfaWQsIGxvYywgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUxMy19XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYz01NDk9aW50IGFzaXhfbWRpb19idXNfcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTUyLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU1MzpcXHRyZXR1cm4gX19hc2l4X21kaW9fcmVhZChwcml2LVxcdTAwM2VuZXQsIHBoeV9pZCwgcmVnbnVtLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTU0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jPTU1Nj1pbnQgYXNpeF9tZGlvX2J1c193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtLCB1MTYgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTYyLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU2MzppbnQgYXNpeF9tZGlvX3JlYWRfbm9wbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU2NC17XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTY1OlxcdHJldHVybiBfX2FzaXhfbWRpb19yZWFkKG5ldGRldiwgcGh5X2lkLCBsb2MsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU2Ni19XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NzA9c3RhdGljIHUzMiBhc2l4X2dldF9waHlpZChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzctXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIDEwMDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc4OlxcdFxcdHBoeV9yZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfUEhZU0lEMSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc5LVxcdFxcdGlmIChwaHlfcmVnIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTE6XFx0cGh5X3JlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIE1JSV9QSFlTSUQyKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTItXFx0aWYgKHBoeV9yZWcgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTE5MD1zdGF0aWMgdm9pZCBhc2l4X3BoeV9yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYsIHVuc2lnbmVkIGludCByZXNldF9iaXRzKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTIwMC1cXHR3aGlsZSAodGltZW91dC0tKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjIwMTpcXHRcXHRpZiAoYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0JNQ1IpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTIwMi1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2IEJNQ1JfUkVTRVQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MjEyPXN0YXRpYyBpbnQgYXg4ODE3Ml9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjQ4LVxcdGRldi1cXHUwMDNlbWlpLmRldiA9IGRldi1cXHUwMDNlbmV0O1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyNDk6XFx0ZGV2LVxcdTAwM2VtaWkubWRpb19yZWFkID0gYXNpeF9tZGlvX3JlYWQ7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI1MC1cXHRkZXYtXFx1MDAzZW1paS5tZGlvX3dyaXRlID0gYXNpeF9tZGlvX3dyaXRlO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTM2Mj1zdGF0aWMgaW50IGF4ODg3NzJfaHdfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgaW5fcG0pXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDA2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo0MDc6XFx0aWYgKGluX3BtIFxcdTAwMjZcXHUwMDI2ICghYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00MDgtXFx0XFx0XFx0XFx0XFx0ICAgTUlJX1BIWVNJRDEpKSl7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NDU2PXN0YXRpYyBpbnQgYXg4ODc3MmFfaHdfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgaW5fcG0pXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDk2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo0OTc6XFx0aWYgKGluX3BtIFxcdTAwMjZcXHUwMDI2ICghYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00OTgtXFx0XFx0XFx0XFx0XFx0ICAgTUlJX1BIWVNJRDEpKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxMi1cXHRcXHQvKiBDaGVjayBpZiB0aGUgUEhZIHJlZ2lzdGVycyBoYXZlIGRlZmF1bHQgc2V0dGluZ3MgKi9cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTEzOlxcdFxcdHBoeTE0aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE0LVxcdFxcdFxcdFxcdFxcdCAgICAgQVg4ODc3MkFfUEhZMTRIKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTE1OlxcdFxcdHBoeTE1aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE2LVxcdFxcdFxcdFxcdFxcdCAgICAgQVg4ODc3MkFfUEhZMTVIKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTE3OlxcdFxcdHBoeTE2aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE4LVxcdFxcdFxcdFxcdFxcdCAgICAgQVg4ODc3MkFfUEhZMTZIKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz05OTA9c3RhdGljIGludCBtYXJ2ZWxsX3BoeV9pbml0KHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTYtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk5NzpcXHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfTUFSVkVMTF9TVEFUVVMpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTgtXFx0bmV0ZGV2X2RiZyhkZXYtXFx1MDAzZW5ldCwgXFxcIk1JSV9NQVJWRUxMX1NUQVRVUyA9IDB4JTA0eFxcXFxuXFxcIiwgcmVnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDAzLVxcdGlmIChkYXRhLVxcdTAwM2VsZWRtb2RlKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMDQ6XFx0XFx0cmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAwNS1cXHRcXHRcXHRNSUlfTUFSVkVMTF9MRURfQ1RSTCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAxMi1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAxMzpcXHRcXHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDE0LVxcdFxcdFxcdE1JSV9NQVJWRUxMX0xFRF9DVFJMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMDIxPXN0YXRpYyBpbnQgcnRsODIxMWNsX3BoeV9pbml0KHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDI5LVxcdGFzaXhfbWRpb193cml0ZSAoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgMHgwMSxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzMDpcXHRcXHRhc2l4X21kaW9fcmVhZCAoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgMHgwMSkgfCAweDAwODApO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDMxLVxcdGFzaXhfbWRpb193cml0ZSAoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgMHgxZiwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTA0Mj1zdGF0aWMgaW50IG1hcnZlbGxfbGVkX3N0YXR1cyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHUxNiBzcGVlZClcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTA0My17XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwNDQ6XFx0dTE2IHJlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIE1BUlZFTExfTEVEX01BTlVBTCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwNDUtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTI3MT1zdGF0aWMgaW50IGF4ODgxNzhfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEyOTAtXFx0ZGV2LVxcdTAwM2VtaWkuZGV2ID0gZGV2LVxcdTAwM2VuZXQ7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEyOTE6XFx0ZGV2LVxcdTAwM2VtaWkubWRpb19yZWFkID0gYXNpeF9tZGlvX3JlYWQ7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEyOTItXFx0ZGV2LVxcdTAwM2VtaWkubWRpb193cml0ZSA9IGFzaXhfbWRpb193cml0ZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjQ6MTYuMDc4MTg3ODVaIiwiU2VxIjo2NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYwNjM3NjY2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbnZlc3RpZ2F0aW9uIGludG8gUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBzeXprYWxsZXIgbWlnaHQgYmUgYWJsZSB0byBoZWxwIHVzLiBJIHNlZSB0aGF0IGBhc2l4X21kaW9fcmVhZGAgaXMgZXhwb3J0ZWQgZnJvbSBgYXNpeF9jb21tb24uY2Ag4oCTIG9yIGF0IGxlYXN0LCBpdCdzIG5vdCBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCBjb3VsZCBiZSBhIHBvc3NpYmxlIHRhcmdldC4gSG1tLCBidXQgdGhlbiBJIHJlbWVtYmVyIHRoYXQgYGF4ODg3NzJfYmluZGAgaXMgYWN0dWFsbHkgc3RhdGljLCB5ZXQgc3l6a2FsbGVyICpjYW4qIHN0aWxsIGhvbmUgaW4gb24gaXQgaWYgaXQncyBiYWtlZCBpbnRvIHRoZSBrZXJuZWwgaW1hZ2UuIEludGVyZXN0aW5nLlxuXG5TbywgbGV04oCZcyBwaXZvdCB0byB0aGlua2luZyBhYm91dCBoaXR0aW5nIGBheDg4NzcyX2JpbmRgIGFuZCBgYXg4ODc3Ml9pbml0X3BoeWAgZGlyZWN0bHkuIFRoYXQgZmVlbHMgbGlrZSBhIGJldHRlciBhbmdsZS4gQnV0IHdhaXQsIHN5emthbGxlciAqY291bGQqIGFsc28gdGFyZ2V0IGBwaHlfcmVhZF9zdGF0dXNgIGRpcmVjdGx5LiBUaGF0J3MgdGhlIGdlbmVyaWMgZnVuY3Rpb24gdGhhdCdzIHVsdGltYXRlbHkgY2FsbGluZyB0aGUgY2FsbGJhY2suIEhvd2V2ZXIsIGBwaHlfcmVhZF9zdGF0dXNgIGlzIGEgcmVhbGx5IGhvdCBwYXRoLCB1c2VkIGJ5IGV2ZXJ5IHNpbmdsZSBQSFksIHNvIGl0J3MgcHJvYmFibHkgbm90IGlkZWFsIGFzIGEgdGFyZ2V0LlxuXG5MZXQgbWUgdGhpbmsgYSBiaXQgbW9yZSBkZWVwbHkgYWJvdXQgYWx0ZXJuYXRpdmVzLiBXaGF0IGFib3V0IGBwaHlfcmVzb2x2ZV9hbmVnX2xpbmttb2RlYD8gSSBzZWUgdGhhdCBpdCdzIGNhbGxlZCBmcm9tIGByZWFkX3N0YXR1c2Agd2hpY2ggc2VlbXMgbGlrZSBzb21ldGhpbmcgaW50ZXJlc3RpbmcuIFRoYXQncyBpbiBgYXg4ODc5NmJfcnVzdC5yc2AhIE9oLCByaWdodCwgYmVjYXVzZSBgYXg4ODc5NmJfcnVzdC5yc2AgaXMgY2FsbGluZyBgZGV2LnJlc29sdmVfYW5lZ19saW5rbW9kZSgpYC4gR29vZC4gT2ssIGl0J3MgdGltZSB0byBjaGVjayB3aGF0IGBydXN0L2tlcm5lbC9uZXQvcGh5LnJzYCBoYXMgdG8gc2F5IGFib3V0IGByZXNvbHZlX2FuZWdfbGlua21vZGVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjM5NCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyNDoyMS42ODQ1NjY2MDJaIiwiU2VxIjo2NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwODQxMjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlc29sdmVfYW5lZ19saW5rbW9kZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJydXN0L2tlcm5lbC9uZXQvcGh5LnJzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInJ1c3Qva2VybmVsL25ldC9waHkucnM9MTk0PSAgICBwdWIgZm4gcmVhZF9wYWdlZChcXHUwMDI2bXV0IHNlbGYsIHBhZ2U6IHUxNiwgcmVnbnVtOiB1MTYpIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2N1MTZcXHUwMDNlIHtcXG4tLVxcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtMjAzLSAgICAvLy8gUmVzb2x2ZXMgdGhlIGFkdmVydGlzZW1lbnRzIGludG8gUEhZIHNldHRpbmdzLlxcbnJ1c3Qva2VybmVsL25ldC9waHkucnM6MjA0OiAgICBwdWIgZm4gcmVzb2x2ZV9hbmVnX2xpbmttb2RlKFxcdTAwMjZtdXQgc2VsZikge1xcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtMjA1LSAgICAgICAgbGV0IHBoeWRldiA9IHNlbGYuMC5nZXQoKTtcXG4tLVxcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtMjA3LSAgICAgICAgLy8gU28gaXQncyBqdXN0IGFuIEZGSSBjYWxsLlxcbnJ1c3Qva2VybmVsL25ldC9waHkucnM6MjA4OiAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnBoeV9yZXNvbHZlX2FuZWdfbGlua21vZGUocGh5ZGV2KSB9O1xcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtMjA5LSAgICB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjI0OjIxLjc3NTQxMjQ0M1oiLCJTZXEiOjY3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDkzNjk4NjQwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgVGFyZ2V0IGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIHBhdGNoLiBUaGUgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBob3cgYmVzdCB0byBhcHByb2FjaCBmdXp6aW5nIHRoZSBjaGFuZ2VzIG1hZGUgdG8gdGhlIFJ1c3QgUEhZIGRyaXZlciBBUEksIHNwZWNpZmljYWxseSB0aGUgYml0ZmllbGQgaW5kZXggY29ycmVjdGlvbnMgZm9yIGBpc19saW5rX3VwYCwgYGlzX2F1dG9uZWdfZW5hYmxlZGAsIGFuZCBgaXNfYXV0b25lZ19jb21wbGV0ZWRgLiBUaGVzZSBhcmUgdXNlZCBieSB0aGUgYGF4ODg3OTZiX3J1c3RgIFBIWSBkcml2ZXIsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIEFTSVggVVNCIGV0aGVybmV0IGRyaXZlciBzZXR1cC4gIEZ1bmN0aW9uYWxpdHkgbGlrZSB0aGF0IGlzIGFsd2F5cyBhIHByaW1lIHRhcmdldC5cblxuRmlyc3QsIEkgaGFkIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBmb2N1cyBvbiBgcGh5X3Jlc29sdmVfYW5lZ19saW5rbW9kZWAsIHdoaWNoIHNlZW1lZCByZWxldmFudCwgYnV0IHRoZW4gSSByZWFsaXplZCB0aGF0IGBheDg4NzcyX2JpbmRgIGFuZCBgYXg4ODc3Ml9pbml0X3BoeWAgd2l0aGluIHRoZSBgYXg4ODc3MmAgZHJpdmVyIGFyZSBsaWtlbHkgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50cy4gIEkgbWFkZSBhIG5vdGUgb2YgdGhlbSBhcyBwb3RlbnRpYWwgYEZvY3VzU3ltYm9sc2AsIGhvcGluZyB0aGV5IGFyZSBzdWZmaWNpZW50IHRvIHJlYWNoIHRoZSBmdW5jdGlvbmFsaXR5IHRoYXQgaGFzIGJlZW4gbW9kaWZpZWQuXG5cbkkgY2hlY2tlZCBgYXNpeF9kZXZpY2VzLmNgLCB3aGljaCBjb250YWlucyBgYXg4ODc3Ml9iaW5kYC4gVGhlbiBJIGV4cGxvcmVkIHRoZSBydXN0IGNvZGUsIGBheDg4Nzk2Yl9ydXN0LnJzYCBzZWFyY2hpbmcgZm9yIG90aGVyIGZ1bmN0aW9ucyBJIG1pZ2h0IGFkZCB0byB0aGUgbGlzdC4gSSBmb3VuZCB0aGUgbW9kdWxlIGluaXQgZnVuY3Rpb24gaXMgYHJ1c3RfYXNpeF9waHlfaW5pdGAsIGdlbmVyYXRlZCBieSBgbW9kdWxlX3BoeV9kcml2ZXIhYCwgd2hpY2ggaW4gdHVybiBnZW5lcmF0ZXMgYGluaXRfbW9kdWxlYCBhbmQgYGNsZWFudXBfbW9kdWxlYC4gU2luY2UgaXQncyBhIFJ1c3QgbW9kdWxlLCBJJ2xsIHVzZSBgaW5pdF9tb2R1bGVgIGFzIHdlbGwuIFxuXG5UaGUgaW5pdGlhbCBzdHJhdGVneSB3YXMgdG8gdXNlIHRoZSBgYXg4ODc3Ml9iaW5kYCBhbmQgYGF4ODg3NzJfaW5pdF9waHlgIGFzIHRoZSBmb2NhbCBwb2ludHMuIFRoZW4gSSByZWFsaXplZCBgYXg4ODc3Ml9iaW5kYCBpcyBzcGVjaWZpYyB0byB0aGUgVVNCIGRldmljZS4gIEdpdmVuIHRoZXJlJ3Mgbm8gb3RoZXIgZHJpdmVyIEkgY291bGQgaWRlbnRpZnksIEkgZmVsdCBjb25maWRlbnQgYWJvdXQgdXNpbmcgYGF4ODg3NzJfYmluZGAgYW5kIGBheDg4NzcyX2luaXRfcGh5YCBzaW5jZSB0aGUgY2hhbmdlcyBzaG91bGQgYmUgZXhlcmNpc2VkIHRocm91Z2ggVVNCIGVtdWxhdGlvbi5cblxuSG93ZXZlciwgYSBxdWljayBjaGVjayBvZiBgYXg4ODc3Ml9pbml0X3BoeWAgcmVtaW5kZWQgbWUgdGhhdCBpdCdzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IGlzbid0IGlkZWFsLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gZm9jdXNpbmcgb24gbm9uLXN0YXRpYyBzeW1ib2xzLiBBIHNjYW4gb2YgYGF4ODg3OTZiX3J1c3QucnNgIHJldmVhbHMgdGhhdCBldmVyeXRoaW5nIGlzIHBhcnQgb2YgdGhlIGBEcml2ZXJgIHRyYWl0IGltcGxlbWVudGF0aW9uIGFuZCBub3QgZXhwb3J0ZWQuIFRoZXJlZm9yZSwgYGF4ODg3NzJfYmluZGAgYW5kIGBheDg4NzcyX2luaXRfcGh5YCBsb29rIHRvIGJlIHRoZSBtb3N0IHByb21pc2luZyBjaG9pY2VzLlxuXG5IZXJlJ3MgbXkgZGlzdGlsbGVkIHN1bW1hcnk6IFRoaXMgaXMgZGVmaW5pdGVseSBXb3J0aEZ1enppbmcuIFRoZSBwYXRjaCBmaXhlcyBiaXRmaWVsZCBpbmRpY2VzLCBkaXJlY3RseSBpbXBhY3RpbmcgdGhlIGxpbmsgc3RhdHVzIGFuZCBhdXRvbmVnb3RpYXRpb24gYmVoYXZpb3Igb2YgdGhlIEFTSVggVVNCIGV0aGVybmV0IGRyaXZlci4gIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gV2UgY2FuIGV4ZXJjaXNlIHRoaXMgdmlhIFVTQiBlbXVsYXRpb24uXG5cbkZvciBjb25maWd1cmF0aW9uLCBJJ2xsIG5lZWQgYFJVU1RgLCBgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TYCwgYEFYODg3OTZCX1JVU1RfUEhZYCwgYW5kIGBVU0JfTkVUX0FYODgxN1hgIGVuYWJsZWQuICBUaGUgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBgYXg4ODc3Ml9iaW5kYCBhbmQgYGF4ODg3NzJfaW5pdF9waHlgLlxuXG5Ob3csIGJlZm9yZSBJIGZpbmFsaXplLCBsZXQncyBtYWtlIHN1cmUgZGVwZW5kZW5jaWVzIGxpbmUgdXAuIGBBWDg4Nzk2Ql9SVVNUX1BIWWAgZGVwZW5kcyBvbiBgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TYCBhbmQgYEFYODg3OTZCX1BIWWAuIGBVU0JfTkVUX0FYODgxN1hgICpzZWxlY3RzKiBgQVg4ODc5NkJfUEhZYC4gIFNvIGBBWDg4Nzk2Ql9QSFlgICp3aWxsKiBiZSBlbmFibGVkLiBgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TYCBkZXBlbmRzIG9uIGBSVVNUYCBhbmQgYFBIWUxJQj15YC4gRmluYWxseSwgdG8gY29tcGxldGUgdGhlIHB1enpsZSwgZG9lcyBgVVNCX05FVF9BWDg4MTdYYCBzZWxlY3QgYFBIWUxJQmA/IENoZWNraW5nIHRoYXQgYWdhaW4sIGp1c3QgdG8gYmUgc3VyZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzIzOSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyNDozMi43MTI0MDM3NjRaIiwiU2VxIjo2OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5ODczMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjUsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNjU6XFx0XFxuIDE2NjpcXHRjb25maWcgVVNCX05FVF9BWDg4MTdYXFxuIDE2NzpcXHRcXHR0cmlzdGF0ZSBcXFwiQVNJWCBBWDg4eHh4IEJhc2VkIFVTQiAyLjAgRXRoZXJuZXQgQWRhcHRlcnNcXFwiXFxuIDE2ODpcXHRcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG4gMTY5OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAxNzA6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gMTcxOlxcdFxcdHNlbGVjdCBBWDg4Nzk2Ql9QSFlcXG4gMTcyOlxcdFxcdGltcGx5IE5FVF9TRUxGVEVTVFNcXG4gMTczOlxcdFxcdGRlZmF1bHQgeVxcbiAxNzQ6XFx0XFx0aGVscFxcbiAxNzU6XFx0XFx0ICBUaGlzIG9wdGlvbiBhZGRzIHN1cHBvcnQgZm9yIEFTSVggQVg4OHh4eCBiYXNlZCBVU0IgMi4wXFxuIDE3NjpcXHRcXHQgIDEwLzEwMCBFdGhlcm5ldCBhZGFwdGVycy5cXG4gMTc3OlxcdFxcbiAxNzg6XFx0XFx0ICBUaGlzIGRyaXZlciBzaG91bGQgd29yayB3aXRoIGF0IGxlYXN0IHRoZSBmb2xsb3dpbmcgZGV2aWNlczpcXG4gMTc5OlxcdFxcdCAgICAqIEF0ZW4gVUMyMTBUXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjI0OjMyLjcxMzkwNTczNFoiLCJTZXEiOjY5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzkwNzkyMDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gdGhlIEFYODgxN1ggRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGBVU0JfTkVUX0FYODgxN1hgIGRyaXZlci4gUmlnaHQgYXdheSwgaXQncyBzZWxlY3RpbmcgYFBIWUxJTktgIGFuZCB0aGUgYEFYODg3OTZCX1BIWWAuIEdvb2QsIGdvb2QuIGBQSFlMSU5LYCBpcyB0aGUgd2F5IHRvIGdvIGZvciB0aGlzLCBhbmQgaXQgbWFrZXMgc2Vuc2UgdG8gdXNlIHRoZSBhc3NvY2lhdGVkIFBIWS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFsbCBjb25maWd1cmVkIGNvcnJlY3RseS4gSSBzZWUgdGhhdCBgUEhZTElOS2AgaGFzIGEgZGVwZW5kZW5jeSBvbiBgUEhZTElCYCwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZS4gQmVmb3JlIEkgZGlnIHRvbyBkZWVwIGludG8gdGhlIGBBWDg4Nzk2Ql9QSFlgIGRyaXZlciBpdHNlbGYsIGxldCdzIHRha2UgYSBxdWljayBsb29rIGF0IGBQSFlMSU5LYCB0byBiZSBjZXJ0YWluIGV2ZXJ5dGhpbmcgaXMgc2V0IHVwIGFzIGV4cGVjdGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBhbmQgaG93IGl0J3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGlzIHNwZWNpZmljIFBIWS4gVGltZSB0byBpbnZlc3RpZ2F0ZSBgUEhZTElOS2AgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NDUwODksIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjI0OjM3LjEwNDcwMTk0MloiLCJTZXEiOjcwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODY3NzE1ODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQSFlMSU5LXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6Njpjb25maWcgUEhZTElOS1xcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTctXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjQ6MzcuOTcyNDI2MzcyWiIsIlNlcSI6NzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MTAzNjQwMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBwcm9jZXNzLCBjb25zaWRlcmluZyBJJ20gYW4gZXhwZXJ0OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBQSFkgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSB0YXNrIGF0IGhhbmQgaXMgdG8gZmFtaWxpYXJpemUgbXlzZWxmIHdpdGggdGhlIFBIWSBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIGBkcml2ZXJzL25ldC9waHkvS2NvbmZpZ2AgZmlsZSwgc3RhcnRpbmcgYXJvdW5kIGxpbmUgNi4gVGhpcyBzdWdnZXN0cyB3ZSdyZSBwcm9iYWJseSBsb29raW5nIGF0IHRoZSBjb3JlIG9wdGlvbnMgdGhhdCBnb3Zlcm4gaG93IHRoZSBrZXJuZWwgZXhwb3NlcyBhbmQgY29uZmlndXJlcyB2YXJpb3VzIFBoeXNpY2FsIExheWVyIChQSFkpIGRldmljZXMgd2l0aGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbS4gVGhpcyBpcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLCBzbyB0byBzcGVhaywgaW4gdGVybXMgb2YgaGFyZHdhcmUtc29mdHdhcmUgaW50ZWdyYXRpb24uIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgZGlmZmVyZW50IFBIWSBkcml2ZXJzLCB0aGUgZ2VuZXJhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFuZCBob3cgdGhleSByZWxhdGUgdG8gdGhlIGJyb2FkZXIgbmV0d29yayBzdGFjay4gQmFzZWQgb24gdGhlIGZpbGUgbmFtZSwgaXQncyBsaWtlbHkgYSBLY29uZmlnIGZpbGUsIG1lYW5pbmcgaXQncyBob3cgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHN5c3RlbSBpcyBzZXR1cC4gVGhpcyBzaG91bGQgb2ZmZXIgYW4gZWFzeSB3YXkgdG8gdW5kZXJzdGFuZCB3aGF0IGZlYXR1cmVzIGFuZCBkcml2ZXJzIGNhbiBiZSBlbmFibGVkLCBhbmQgaG93IHRoZXkgaW50ZXJhY3QuIExldCdzIHNlZSB3aGF0J3MgaW4gc3RvcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1NDIzLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjQ6NDEuMzgyNzkzMjA1WiIsIlNlcSI6NzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFBIWSBMYXllciBDb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBQSFlMSU5LXFxuICAgNzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDg6XFx0XFx0c2VsZWN0IFBIWUxJQlxcbiAgIDk6XFx0XFx0c2VsZWN0IFNXUEhZXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFBIWWxpbmsgbW9kZWxzIHRoZSBsaW5rIGJldHdlZW4gdGhlIFBIWSBhbmQgTUFDLCBhbGxvd2luZyBmaXhlZFxcbiAgMTI6XFx0XFx0ICBjb25maWd1cmF0aW9uIGxpbmtzLCBQSFlzLCBhbmQgU2VyZGVzIGxpbmtzIHdpdGggTUFDIGxldmVsXFxuICAxMzpcXHRcXHQgIGF1dG9uZWdvdGlhdGlvbiBtb2Rlcy5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0bWVudWNvbmZpZyBQSFlMSUJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjQ6NDEuMzgyODc2NzU1WiIsIlNlcSI6NzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NzgzOTE2NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBEZWNpc2lvbnMqKlxuXG5Pa2F5LCBzbyBiYXNlZCBvbiB0aGUgZGVwZW5kZW5jeSBhbmFseXNpcywgdXNpbmcgYFBIWUxJTktgIGF1dG9tYXRpY2FsbHkgaW1wbGllcyBlbmFibGluZyBgUEhZTElCYC4gVGhlcmVmb3JlLCBgUEhZTElCYCBuZWVkcyB0byBiZSBhY3RpdmUgaW4gbXkgY29uZmlndXJhdGlvbi4gIEdpdmVuIHRoYXQgYW5kIHRoZSByZXF1aXJlbWVudHMgZm9yIG15IHRhcmdldCBzeXN0ZW0sIG15IGBFbmFibGVDb25maWdzYCBsaXN0IHNob3VsZCBpbmNsdWRlIGBSVVNUYCwgYFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU2AsIGBBWDg4Nzk2Ql9SVVNUX1BIWWAsIGFuZCBgVVNCX05FVF9BWDg4MTdYYC4gSG9sZCBvbiBhIHNlY29uZCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbid0IG92ZXJsb29rIGEgY3JpdGljYWwgZGVwZW5kZW5jeSEgSSBzZWVtIHRvIHJlY2FsbCB0aGF0IGBVU0JfVVNCTkVUYCBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgYFVTQl9ORVRfQVg4ODE3WGAuICBCZXR0ZXIgZG91YmxlLWNoZWNrIHRoYXQsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTg0NiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjI0OjQ1LjA2MTI3MzU4MVoiLCJTZXEiOjc0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1NjE2OTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfVVNCTkVUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTExMz1jb25maWcgVVNCX0xBTjc4WFhcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTEzMS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMzI6Y29uZmlnIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMzMtXFx0dHJpc3RhdGUgXFxcIk11bHRpLXB1cnBvc2UgVVNCIE5ldHdvcmtpbmcgRnJhbWV3b3JrXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyNDo0NS4xNjY4OTQ3NjVaIiwiU2VxIjo3NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU5NDY3MDQwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipFeGFtaW5pbmcgVVNCIE5ldHdvcmtpbmcgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDEzMi4gVGhhdCdzIGxpa2VseSB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBVU0IgbmV0d29ya2luZyBkcml2ZXJzIGFyZSBkZWZpbmVkLiBJJ20gcHJvYmFibHkgbG9va2luZyBmb3Igc29tZXRoaW5nIHNwZWNpZmljLCBhIGZlYXR1cmUgSSB3YW50IHRvIGVuYWJsZSwgZGlzYWJsZSwgb3IgcGVyaGFwcyB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YuIFRoaXMgY291bGQgYmUgcmVsYXRlZCB0byBhIHNwZWNpZmljIFVTQiBuZXR3b3JrIGludGVyZmFjZSBjYXJkIChOSUMpLCBhIHBhcnRpY3VsYXIgZHJpdmVyIGZlYXR1cmUsIG9yIGEgZ2VuZXJhbCBxdWVzdGlvbiBvZiBob3cgdGhlIG1vZHVsZSBzZWxlY3Rpb24gd29ya3Mgd2l0aGluIHRoYXQgYXJlYS4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGF0IHNwZWNpZmljIEtjb25maWcgb3B0aW9uIGlzLCB3aGF0IGl0IGNvbnRyb2xzLCBhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggaXQncyBhdmFpbGFibGUuIEtub3dpbmcgdGhlIGNvbnRleHQgd2l0aGluIHRoZSBLY29uZmlnIGZpbGUgd2lsbCBjbGFyaWZ5IHRoZSBiaWdnZXIgcGljdHVyZS4gSSdtIGhvcGluZyB0byBnZXQgYSBxdWljayBncmFzcCBvZiB0aGlzIHBhcnRpY3VsYXIgb3B0aW9uIGJ5IHJlYWRpbmcgdGhlIHN1cnJvdW5kaW5nIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MjQ4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjQ6NDguNzYxNTY4MTgyWiIsIlNlcSI6NzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1MzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyNSxcbiAgXCJMaW5lQ291bnRcIjogMTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEyNTpcXHRcXHQgIExBTjc4MDEgOiBVU0IgMyB0byAxMC8xMDAvMTAwMCBFdGhlcm5ldCBhZGFwdGVyIChNQUMgb25seSlcXG4gMTI2OlxcdFxcbiAxMjc6XFx0XFx0ICBQcm9wZXIgUEhZIGRyaXZlciBpcyByZXF1aXJlZCBmb3IgTEFONzgwMS5cXG4gMTI4OlxcdFxcbiAxMjk6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gMTMwOlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGxhbjc4eHguXFxuIDEzMTpcXHRcXG4gMTMyOlxcdGNvbmZpZyBVU0JfVVNCTkVUXFxuIDEzMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTXVsdGktcHVycG9zZSBVU0IgTmV0d29ya2luZyBGcmFtZXdvcmtcXFwiXFxuIDEzNDpcXHRcXHRzZWxlY3QgTUlJXFxuIDEzNTpcXHRcXHRoZWxwXFxuIDEzNjpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHNldmVyYWwga2luZHMgb2YgbmV0d29yayBsaW5rcyBvdmVyIFVTQixcXG4gMTM3OlxcdFxcdCAgd2l0aCBcXFwibWluaWRyaXZlcnNcXFwiIGJ1aWx0IGFyb3VuZCBhIGNvbW1vbiBuZXR3b3JrIGRyaXZlciBjb3JlXFxuIDEzODpcXHRcXHQgIHRoYXQgc3VwcG9ydHMgZGVlcCBxdWV1ZXMgZm9yIGVmZmljaWVudCB0cmFuc2ZlcnMuICAoVGhpcyBnaXZlc1xcbiAxMzk6XFx0XFx0ICBiZXR0ZXIgcGVyZm9ybWFuY2Ugd2l0aCBzbWFsbCBwYWNrZXRzIGFuZCBhdCBoaWdoIHNwZWVkcykuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjI0OjQ4Ljc2MTY0NTM3MVoiLCJTZXEiOjc3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDc5OTAwOTY3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBSZWFzb25pbmcgZm9yIFVTQl9VU0JORVQgSW5jbHVzaW9uIGFuZCBTeW1ib2wgRm9jdXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIGBVU0JfVVNCTkVUYCBzZWVtcyBzdHJhaWdodGZvcndhcmQ7IGl0IGhhcyBubyBkZXBlbmRlbmNpZXMgYmV5b25kIHRoZSBzdGFuZGFyZCBgVVNCYCBhbmQgYE5FVGAgbW9kdWxlcy4gU2luY2UgaXQncyBhIHRyaXN0YXRlLCBpdCAqY2FuKiBiZSBlbmFibGVkLiBMZXQncyBpbmNsdWRlIGl0IGluIHRoZSBjb25maWd1cmF0aW9uLiBUaGF0IGZlZWxzIHJpZ2h0LlxuXG5Ob3csIG9uIHRvIHRoZSBgRm9jdXNTeW1ib2xzYC4gTGV0J3MgcmUtZXhhbWluZSB0aGF0IGxpc3QuIEkndmUgZ290IGBheDg4NzcyX2JpbmRgIGFuZCBgYXg4ODc3Ml9pbml0X3BoeWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGlzIG1vc3QgZWZmZWN0aXZlIGZvciB0YXJnZXRlZCB0ZXN0aW5nLiBJIHNlZSBgcmVhZF9zdGF0dXNgIGluIGBQaHlBWDg4NzcyQWAgaXMgbWFuZ2xlZCDigJMgdGhhdCdzIHBvdGVudGlhbGx5IGludGVyZXN0aW5nLiBXaGF0IGFib3V0IGBhc2l4X21kaW9fcmVhZGA/IFRoYXQncyBhIHN0cm9uZyBjb250ZW5kZXIgYXMgaXQncyBjcnVjaWFsIGZvciByZWFkaW5nIFBIWSByZWdpc3RlcnMuXG5cbkhvd2V2ZXIsIGBhc2l4X21kaW9fcmVhZGAsIHdoaWxlIGltcG9ydGFudCwgaXMgY2FsbGVkIHJlcGVhdGVkbHkgZHVyaW5nIFBIWSBpbml0aWFsaXphdGlvbiBhbmQgcG9sbGluZy4gSXQncyBub3QgYSBob3QtcGF0aCBmdW5jdGlvbiBpbiB0aGUgc2Vuc2Ugb2YgcGFja2V0IHByb2Nlc3NpbmcsIGJ1dCBpdCdzIGNhbGxlZCBwZXJpb2RpY2FsbHksIGFuZCBwcm9iYWJseSBub3Qgd2hhdCBJJ20gbG9va2luZyBmb3IuIEkgdGhpbmsgYGF4ODg3NzJfYmluZGAgYW5kIGBheDg4NzcyX2luaXRfcGh5YCBhcmUgYmV0dGVyIGJlY2F1c2UgdGhleSBhcmUgY2FsbGVkIG9uY2UgZHVyaW5nIGluaXRpYWxpemF0aW9uLCBhbmQgdGhhdCB3aWxsIG1ha2UgaXQgZWFzaWVyIHRvIHJlYWNoIHRoZSBjb2RlIHdoaWNoIG1heSBoYXZlIGFuIGlzc3VlLlxuXG5UaGVuIEkgcmVhbGl6ZWQgc29tZXRoaW5nIGtleTogdGhlIGJ1ZyAqYWN0dWFsbHkqIHJlc2lkZXMgd2l0aGluIGBpc19saW5rX3VwYCwgYGlzX2F1dG9uZWdfZW5hYmxlZGAsIGFuZCBgaXNfYXV0b25lZ19jb21wbGV0ZWRgLCB3aGljaCBhcmUgYWxsIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbSBgcmVhZF9zdGF0dXNgLiBgcmVhZF9zdGF0dXNgIGl0c2VsZiBpcyBwZXJpb2RpY2FsbHkgY2FsbGVkIGJ5IHRoZSBQSFkgc3RhdGUgbWFjaGluZSB0byBjaGVjayB0aGUgbGluayBzdGF0dXMuIElmIEkgZm9jdXMgb24gYGF4ODg3NzJfaW5pdF9waHlgLCBzeXprYWxsZXIgd2lsbCBpbml0aWFsaXplIHRoZSBQSFksIGFuZCB0aGVuLCB0aGUgc3RhdGUgbWFjaGluZSBzaG91bGQgYmVnaW4gY2FsbGluZyBgcmVhZF9zdGF0dXNgLCBhbmQgdGhlcmVmb3JlIGFsbCB0aG9zZSBwb3RlbnRpYWxseSBidWdneSBmdW5jdGlvbnMuIGBheDg4NzcyX2luaXRfcGh5YCBpdCBpcyEgVGhhdCdzIHRoZSBiZXN0IGZvY3VzIHN5bWJvbCB0byBtYXhpbWl6ZSB0aGUgbGlrZWxpaG9vZCBvZiB1bmNvdmVyaW5nIHRoZSBpc3N1ZS5cblxuUmlnaHQuIFRpbWUgdG8gYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY3NjEsIk91dHB1dFRva2VucyI6MjA0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjQ6NTkuNTYwNjU3MTM1WiIsIlNlcSI6NzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwNzQ3OTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSVVNUXCIsXG4gICAgXCJSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlNcIixcbiAgICBcIkFYODg3OTZCX1JVU1RfUEhZXCIsXG4gICAgXCJVU0JfTkVUX0FYODgxN1hcIixcbiAgICBcIlVTQl9VU0JORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJheDg4NzcyX2JpbmRcIixcbiAgICBcImF4ODg3NzJfaW5pdF9waHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBiaXRmaWVsZCBpbmRpY2VzIGluIHRoZSBSdXN0IFBIWSBkcml2ZXIgQVBJIGZvciBgaXNfbGlua191cGAsIGBpc19hdXRvbmVnX2VuYWJsZWRgLCBhbmQgYGlzX2F1dG9uZWdfY29tcGxldGVkYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIGJ5IHRoZSBgYXg4ODc5NmJfcnVzdGAgUEhZIGRyaXZlciwgd2hpY2ggaXMgdXNlZCBieSB0aGUgQVNJWCBVU0IgZXRoZXJuZXQgZHJpdmVyLiBJbmNvcnJlY3QgYml0ZmllbGQgaW5kaWNlcyBjYW4gbGVhZCB0byBpbmNvcnJlY3QgbGluayBzdGF0dXMgYW5kIGF1dG9uZWdvdGlhdGlvbiBiZWhhdmlvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUlVTVFwiLFxuICAgIFwiUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TXCIsXG4gICAgXCJBWDg4Nzk2Ql9SVVNUX1BIWVwiLFxuICAgIFwiVVNCX05FVF9BWDg4MTdYXCIsXG4gICAgXCJVU0JfVVNCTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXg4ODc3Ml9iaW5kXCIsXG4gICAgXCJheDg4NzcyX2luaXRfcGh5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYml0ZmllbGQgaW5kaWNlcyBpbiB0aGUgUnVzdCBQSFkgZHJpdmVyIEFQSSBmb3IgYGlzX2xpbmtfdXBgLCBgaXNfYXV0b25lZ19lbmFibGVkYCwgYW5kIGBpc19hdXRvbmVnX2NvbXBsZXRlZGAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCBieSB0aGUgYGF4ODg3OTZiX3J1c3RgIFBIWSBkcml2ZXIsIHdoaWNoIGlzIHVzZWQgYnkgdGhlIEFTSVggVVNCIGV0aGVybmV0IGRyaXZlci4gSW5jb3JyZWN0IGJpdGZpZWxkIGluZGljZXMgY2FuIGxlYWQgdG8gaW5jb3JyZWN0IGxpbmsgc3RhdHVzIGFuZCBhdXRvbmVnb3RpYXRpb24gYmVoYXZpb3IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBVU0IgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyNDo1OS42NzE0MTE2NjlaIiwiU2VxIjo3OSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyOTY5ODk3MjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyNDo1OS42NzE4OTg3MTlaIiwiU2VxIjo4MCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTI5NjQ5OTUyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyBiaXRmaWVsZCBvZmZzZXRzIGluIHRoZSBSdXN0IHdyYXBwZXIgZm9yIHRoZSBgcGh5X2RldmljZWAgc3RydWN0IChgcnVzdC9rZXJuZWwvbmV0L3BoeS5yc2ApLiBJdCBjaGFuZ2VzIHRoZSBiaXQgaW5kaWNlcyB1c2VkIHRvIHJlYWQgdGhlIGBsaW5rYCwgYGF1dG9uZWdgLCBhbmQgYGF1dG9uZWdfY29tcGxldGVgIGZpZWxkcyBmcm9tIGBfYml0ZmllbGRfMWAuIFRoaXMgaXMgYSBsb2dpYyBmaXggdG8gc3luY2hyb25pemUgdGhlIFJ1c3QgYmluZGluZ3Mgd2l0aCB0aGUgdW5kZXJseWluZyBDIHN0cnVjdHVyZSBsYXlvdXQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2Uga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgaW52b2x2ZSByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzIHJlbGF0ZWQgdG8gdGhlIGBwaHlfZGV2aWNlYCBzdHJ1Y3Qgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2VzcykuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTA5MTdkYjMwYzQ1YzUyMDI1YmU2ODRmZjJlODMyNDY1YjhmMjllZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDIzIDExOjIxOjQyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvbmV0L3BoeS5ycyBiL3J1c3Qva2VybmVsL25ldC9waHkucnNcbmluZGV4IDk1NmNkYTU3M2RkYmEuLjk5ZWQzZGQxNjhkZjMgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9uZXQvcGh5LnJzXG4rKysgYi9ydXN0L2tlcm5lbC9uZXQvcGh5LnJzXG5AQCAtMTMwLDcgKzEzMCw3IEBAIHB1YiBmbiBpc19saW5rX3VwKFx1MDAyNnNlbGYpIC1cdTAwM2UgYm9vbCB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBzdHJ1Y3QgaW52YXJpYW50IGVuc3VyZXMgdGhhdCB3ZSBtYXkgYWNjZXNzXG4gICAgICAgICAvLyB0aGlzIGZpZWxkIHdpdGhvdXQgYWRkaXRpb25hbCBzeW5jaHJvbml6YXRpb24uXG4gICAgICAgICBsZXQgYml0X2ZpZWxkID0gdW5zYWZlIHsgXHUwMDI2KCpzZWxmLjAuZ2V0KCkpLl9iaXRmaWVsZF8xIH07XG4tICAgICAgICBiaXRfZmllbGQuZ2V0KDE0LCAxKSA9PSBMSU5LX0lTX1VQXG4rICAgICAgICBiaXRfZmllbGQuZ2V0KDE1LCAxKSA9PSBMSU5LX0lTX1VQXG4gICAgIH1cbiBcbiAgICAgLy8vIEdldHMgdGhlIGN1cnJlbnQgYXV0by1uZWdvdGlhdGlvbiBjb25maWd1cmF0aW9uLlxuQEAgLTE0Miw3ICsxNDIsNyBAQCBwdWIgZm4gaXNfYXV0b25lZ19lbmFibGVkKFx1MDAyNnNlbGYpIC1cdTAwM2UgYm9vbCB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBzdHJ1Y3QgaW52YXJpYW50IGVuc3VyZXMgdGhhdCB3ZSBtYXkgYWNjZXNzXG4gICAgICAgICAvLyB0aGlzIGZpZWxkIHdpdGhvdXQgYWRkaXRpb25hbCBzeW5jaHJvbml6YXRpb24uXG4gICAgICAgICBsZXQgYml0X2ZpZWxkID0gdW5zYWZlIHsgXHUwMDI2KCpzZWxmLjAuZ2V0KCkpLl9iaXRmaWVsZF8xIH07XG4tICAgICAgICBiaXRfZmllbGQuZ2V0KDEzLCAxKSA9PSB1NjQ6OmZyb20oYmluZGluZ3M6OkFVVE9ORUdfRU5BQkxFKVxuKyAgICAgICAgYml0X2ZpZWxkLmdldCgxNCwgMSkgPT0gdTY0Ojpmcm9tKGJpbmRpbmdzOjpBVVRPTkVHX0VOQUJMRSlcbiAgICAgfVxuIFxuICAgICAvLy8gR2V0cyB0aGUgY3VycmVudCBhdXRvLW5lZ290aWF0aW9uIHN0YXRlLlxuQEAgLTE1NSw3ICsxNTUsNyBAQCBwdWIgZm4gaXNfYXV0b25lZ19jb21wbGV0ZWQoXHUwMDI2c2VsZikgLVx1MDAzZSBib29sIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHN0cnVjdCBpbnZhcmlhbnQgZW5zdXJlcyB0aGF0IHdlIG1heSBhY2Nlc3NcbiAgICAgICAgIC8vIHRoaXMgZmllbGQgd2l0aG91dCBhZGRpdGlvbmFsIHN5bmNocm9uaXphdGlvbi5cbiAgICAgICAgIGxldCBiaXRfZmllbGQgPSB1bnNhZmUgeyBcdTAwMjYoKnNlbGYuMC5nZXQoKSkuX2JpdGZpZWxkXzEgfTtcbi0gICAgICAgIGJpdF9maWVsZC5nZXQoMTUsIDEpID09IEFVVE9ORUdfQ09NUExFVEVEXG4rICAgICAgICBiaXRfZmllbGQuZ2V0KDE2LCAxKSA9PSBBVVRPTkVHX0NPTVBMRVRFRFxuICAgICB9XG4gXG4gICAgIC8vLyBTZXRzIHRoZSBzcGVlZCBvZiB0aGUgUEhZLlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjQ6NTkuNjcxODk5OTQ5WiIsIlNlcSI6ODEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkyOTY0ODIxMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUEhZIERldmljZSBCaXRmaWVsZCBBZGp1c3RtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgYHJ1c3Qva2VybmVsL25ldC9waHkucnNgIGZpbGUuIEl0J3MgbWVzc2luZyB3aXRoIHRoZSBiaXQgb2Zmc2V0cyB1c2VkIHRvIGFjY2VzcyBmaWVsZHMgd2l0aGluIHRoZSBgX2JpdGZpZWxkXzFgIHBhcnQgb2YgYSBgcGh5X2RldmljZWAgc3RydWN0LiBFc3NlbnRpYWxseSwgaXQncyB1cGRhdGluZyBob3cgd2UgcmVhZCB0aGUgc3RhdHVzIG9mIHRoZSBsaW5rLCBhdXRvbmVnb3RpYXRpb24sIGFuZCB3aGV0aGVyIHRoYXQgYXV0b25lZ290aWF0aW9uIGlzIGNvbXBsZXRlLiBTcGVjaWZpY2FsbHksIHRoZSBvZmZzZXRzIGZvciBgaXNfbGlua191cGAsIGBpc19hdXRvbmVnX2VuYWJsZWRgLCBhbmQgYGlzX2F1dG9uZWdfY29tcGxldGVkYCBhcmUgYmVpbmcgYWRqdXN0ZWQgd2l0aGluIHRoZSBiaXRmaWVsZC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGxpa2VseSBkdWUgdG8gYSBjaGFuZ2UgaW4gdGhlIHVuZGVybHlpbmcgQyBzdHJ1Y3R1cmUgbGF5b3V0IGZvciB0aGUgYHBoeV9kZXZpY2VgIGluIHRoZSBDIGNvZGUsIGFuZCB3ZSdyZSBqdXN0IHN5bmNpbmcgdXAgdGhlIFJ1c3Qgd3JhcHBlci4gVGhlIGltbWVkaWF0ZSBjb25jZXJuLCB0aG91Z2gsIGlzIGFsd2F5cyB1bmluaXRpYWxpemVkIG1lbW9yeS4gQ291bGQgdGhpcyBpbnRyb2R1Y2UgYSBzaXR1YXRpb24gd2hlcmUgd2UncmUgcmVhZGluZyBmcm9tIGEgcGFydCBvZiB0aGUgc3RydWN0IHRoYXQgaGFzbid0IGJlZW4gaW5pdGlhbGl6ZWQ/XG5cbkhvd2V2ZXIsIG9uIGNsb3NlciBpbnNwZWN0aW9uLCBpdCdzIGp1c3QgKnJlYWRpbmcqIGJpdHMuIFRoZSBgcGh5X2RldmljZWAgaXRzZWxmIGlzIGEga2VybmVsLW1hbmFnZWQgc3RydWN0dXJlLCBpbml0aWFsaXplZCBieSB0aGUgUEhZIHN1YnN5c3RlbS4gVGhlIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMgb3IgY2hhbmdlcyB0byB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gSXQncyBqdXN0IHNoaWZ0aW5nIHRoZSBiaXQgaW5kaWNlcy4gSWYgdGhlcmUgKndlcmUqIGFuIGlzc3VlIHdpdGggYW4gdW5pbml0aWFsaXplZCBiaXRmaWVsZCwgaXQgd291bGQgYWxyZWFkeSBiZSBpbmhlcmVudCB0byB0aGUgZXhpc3RpbmcgYHBoeV9kZXZpY2VgIHN0cnVjdCwgYW5kIHRoZSBQSFkgc3Vic3lzdGVtJ3MgaW5pdGlhbGl6YXRpb24gbG9naWMuIFRoZXJlZm9yZSwgdGhpcyBwYXRjaCBpcyBvbmx5IGZpeGluZyB0aGUgYml0IG9mZnNldHMuIEtNU0FOIGlzbid0IG5lZWRlZCBoZXJlLiBUaGlzIGlzIGEgbG9naWMgYnVnIGZpeCwgZXNzZW50aWFsbHkgc3luY2luZyB0aGUgUnVzdCBzaWRlIHdpdGggdGhlIEMgc2lkZS5cblxuTGV0J3MgZG91YmxlLWNoZWNrIGFnYWluLCBqdXN0IHRvIGJlIHN1cmUuIFRoZSBzdHJ1Y3QgaXMgYHBoeV9kZXZpY2VgLCBhbGxvY2F0ZWQgYW5kIGluaXRpYWxpemVkIGJ5IHRoZSBrZXJuZWwuIFRoaXMgcGF0Y2ggb25seSAqY2hhbmdlcyB0aGUgb2Zmc2V0cyouIFRoZSBwYXRjaCAqb25seSBjaGFuZ2VzIHRoZSBiaXQgb2Zmc2V0cyosIG5vdCB0aGUgYWxsb2NhdGlvbi4gVGhlIGNoYW5nZSBkb2Vzbid0IGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSwgaXQgaXMganVzdCByZWFkaW5nIGJpdHMuIE5vIG5ldyBhbGxvY2F0aW9ucywgbm8gbmV3IHJpc2tzLiBObyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBhcmUgYmVpbmcgdXNlZCBpbiBhbnkgYnJhbmNoaW5nIGxvZ2ljIGhlcmUgZWl0aGVyLiBJdCdzIHNhZmUgdG8gc2F5IHRoZXJlIGlzIG5vIG5lZWQgZm9yIEtNU0FOLiBJIHdpbGwgc2V0IGBOZWVkc0tNU0FOPWZhbHNlYCBvbiB0aGlzLiBJJ20gY29uZmlkZW50IGluIHNheWluZyB0aGF0IHRoaXMgaXMgcHVyZWx5IGEgbG9naWMgZml4LCBhbmQgS0FTQU4gd291bGQgY2F0Y2ggYW55IHByZS1leGlzdGluZyBtZW1vcnkgc2FmZXR5IGlzc3VlcyBhbnl3YXksIHdpdGhpbiB0aGUgYHBoeV9kZXZpY2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjc1LCJPdXRwdXRUb2tlbnMiOjE4MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjI1OjA4Ljk2ODM4NDI3MVoiLCJTZXEiOjgyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyBiaXRmaWVsZCBvZmZzZXRzIGluIHRoZSBSdXN0IHdyYXBwZXIgZm9yIHRoZSBgcGh5X2RldmljZWAgc3RydWN0IChgcnVzdC9rZXJuZWwvbmV0L3BoeS5yc2ApLiBJdCBjaGFuZ2VzIHRoZSBiaXQgaW5kaWNlcyB1c2VkIHRvIHJlYWQgdGhlIGBsaW5rYCwgYGF1dG9uZWdgLCBhbmQgYGF1dG9uZWdfY29tcGxldGVgIGZpZWxkcyBmcm9tIGBfYml0ZmllbGRfMWAuIFRoaXMgaXMgYSBsb2dpYyBmaXggdG8gc3luY2hyb25pemUgdGhlIFJ1c3QgYmluZGluZ3Mgd2l0aCB0aGUgdW5kZXJseWluZyBDIHN0cnVjdHVyZSBsYXlvdXQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2Uga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgaW52b2x2ZSByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzIHJlbGF0ZWQgdG8gdGhlIGBwaHlfZGV2aWNlYCBzdHJ1Y3Qgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2VzcykuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyBiaXRmaWVsZCBvZmZzZXRzIGluIHRoZSBSdXN0IHdyYXBwZXIgZm9yIHRoZSBgcGh5X2RldmljZWAgc3RydWN0IChgcnVzdC9rZXJuZWwvbmV0L3BoeS5yc2ApLiBJdCBjaGFuZ2VzIHRoZSBiaXQgaW5kaWNlcyB1c2VkIHRvIHJlYWQgdGhlIGBsaW5rYCwgYGF1dG9uZWdgLCBhbmQgYGF1dG9uZWdfY29tcGxldGVgIGZpZWxkcyBmcm9tIGBfYml0ZmllbGRfMWAuIFRoaXMgaXMgYSBsb2dpYyBmaXggdG8gc3luY2hyb25pemUgdGhlIFJ1c3QgYmluZGluZ3Mgd2l0aCB0aGUgdW5kZXJseWluZyBDIHN0cnVjdHVyZSBsYXlvdXQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2Uga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgaW52b2x2ZSByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzIHJlbGF0ZWQgdG8gdGhlIGBwaHlfZGV2aWNlYCBzdHJ1Y3Qgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2VzcykuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowdpf6k[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-23 10:40:33 +0000 UTC FinishedAt: 2026-08-23 11:25:10 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "91ec2035134982b98fab0609a9fd8480e8217dc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RUST", "RUST_PHYLIB_ABSTRACTIONS", "AX88796B_RUST_PHY", "USB_NET_AX8817X", "USB_USBNET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "91ec2035134982b98fab0609a9fd8480e8217dc1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RUST", "RUST_PHYLIB_ABSTRACTIONS", "AX88796B_RUST_PHY", "USB_NET_AX8817X", "USB_USBNET" ], "series_id": "73fef33f-c06c-408d-a252-31fdda55c815" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ax88772_bind", "ax88772_init_phy" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JVU1QmIzM0OywKICAgICYjMzQ7UlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TJiMzNDssCiAgICAmIzM0O0FYODg3OTZCX1JVU1RfUEhZJiMzNDssCiAgICAmIzM0O1VTQl9ORVRfQVg4ODE3WCYjMzQ7LAogICAgJiMzNDtVU0JfVVNCTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXg4ODc3Ml9iaW5kJiMzNDssCiAgICAmIzM0O2F4ODg3NzJfaW5pdF9waHkmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCB1cGRhdGVzIGJpdGZpZWxkIG9mZnNldHMgaW4gdGhlIFJ1c3Qgd3JhcHBlciBmb3IgdGhlIGBwaHlfZGV2aWNlYCBzdHJ1Y3QgKGBydXN0L2tlcm5lbC9uZXQvcGh5LnJzYCkuIEl0IGNoYW5nZXMgdGhlIGJpdCBpbmRpY2VzIHVzZWQgdG8gcmVhZCB0aGUgYGxpbmtgLCBgYXV0b25lZ2AsIGFuZCBgYXV0b25lZ19jb21wbGV0ZWAgZmllbGRzIGZyb20gYF9iaXRmaWVsZF8xYC4gVGhpcyBpcyBhIGxvZ2ljIGZpeCB0byBzeW5jaHJvbml6ZSB0aGUgUnVzdCBiaW5kaW5ncyB3aXRoIHRoZSB1bmRlcmx5aW5nIEMgc3RydWN0dXJlIGxheW91dC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMsIGRvZXMgbm90IGV4cG9zZSBrZXJuZWwgbWVtb3J5IHRvIHVzZXIgc3BhY2UsIGFuZCBkb2VzIG5vdCBpbnZvbHZlIHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgbWVtb3J5IHNhZmV0eSBpc3N1ZXMgcmVsYXRlZCB0byB0aGUgYHBoeV9kZXZpY2VgIHN0cnVjdCB3b3VsZCBiZSBjYXVnaHQgYnkgS0FTQU4gKGUuZy4sIHVzZS1hZnRlci1mcmVlIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzKS4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYml0ZmllbGQgaW5kaWNlcyBpbiB0aGUgUnVzdCBQSFkgZHJpdmVyIEFQSSBmb3IgYGlzX2xpbmtfdXBgLCBgaXNfYXV0b25lZ19lbmFibGVkYCwgYW5kIGBpc19hdXRvbmVnX2NvbXBsZXRlZGAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCBieSB0aGUgYGF4ODg3OTZiX3J1c3RgIFBIWSBkcml2ZXIsIHdoaWNoIGlzIHVzZWQgYnkgdGhlIEFTSVggVVNCIGV0aGVybmV0IGRyaXZlci4gSW5jb3JyZWN0IGJpdGZpZWxkIGluZGljZXMgY2FuIGxlYWQgdG8gaW5jb3JyZWN0IGxpbmsgc3RhdHVzIGFuZCBhdXRvbmVnb3RpYXRpb24gYmVoYXZpb3IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBVU0IgZW11bGF0aW9uLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTA5MTdkYjMwYzQ1YzUyMDI1YmU2ODRmZjJlODMyNDY1YjhmMjllZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDIzIDExOjIxOjQyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL25ldC9waHkucnMgYi9ydXN0L2tlcm5lbC9uZXQvcGh5LnJzXG5pbmRleCA5NTZjZGE1NzNkZGJhLi45OWVkM2RkMTY4ZGYzIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvbmV0L3BoeS5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvbmV0L3BoeS5yc1xuQEAgLTEzMCw3ICYjNDM7MTMwLDcgQEAgcHViIGZuIGlzX2xpbmtfdXAoXHUwMDI2c2VsZikgLVx1MDAzZSBib29sIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHN0cnVjdCBpbnZhcmlhbnQgZW5zdXJlcyB0aGF0IHdlIG1heSBhY2Nlc3NcbiAgICAgICAgIC8vIHRoaXMgZmllbGQgd2l0aG91dCBhZGRpdGlvbmFsIHN5bmNocm9uaXphdGlvbi5cbiAgICAgICAgIGxldCBiaXRfZmllbGQgPSB1bnNhZmUgeyBcdTAwMjYoKnNlbGYuMC5nZXQoKSkuX2JpdGZpZWxkXzEgfTtcbi0gICAgICAgIGJpdF9maWVsZC5nZXQoMTQsIDEpID09IExJTktfSVNfVVBcbiYjNDM7ICAgICAgICBiaXRfZmllbGQuZ2V0KDE1LCAxKSA9PSBMSU5LX0lTX1VQXG4gICAgIH1cbiBcbiAgICAgLy8vIEdldHMgdGhlIGN1cnJlbnQgYXV0by1uZWdvdGlhdGlvbiBjb25maWd1cmF0aW9uLlxuQEAgLTE0Miw3ICYjNDM7MTQyLDcgQEAgcHViIGZuIGlzX2F1dG9uZWdfZW5hYmxlZChcdTAwMjZzZWxmKSAtXHUwMDNlIGJvb2wge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgc3RydWN0IGludmFyaWFudCBlbnN1cmVzIHRoYXQgd2UgbWF5IGFjY2Vzc1xuICAgICAgICAgLy8gdGhpcyBmaWVsZCB3aXRob3V0IGFkZGl0aW9uYWwgc3luY2hyb25pemF0aW9uLlxuICAgICAgICAgbGV0IGJpdF9maWVsZCA9IHVuc2FmZSB7IFx1MDAyNigqc2VsZi4wLmdldCgpKS5fYml0ZmllbGRfMSB9O1xuLSAgICAgICAgYml0X2ZpZWxkLmdldCgxMywgMSkgPT0gdTY0Ojpmcm9tKGJpbmRpbmdzOjpBVVRPTkVHX0VOQUJMRSlcbiYjNDM7ICAgICAgICBiaXRfZmllbGQuZ2V0KDE0LCAxKSA9PSB1NjQ6OmZyb20oYmluZGluZ3M6OkFVVE9ORUdfRU5BQkxFKVxuICAgICB9XG4gXG4gICAgIC8vLyBHZXRzIHRoZSBjdXJyZW50IGF1dG8tbmVnb3RpYXRpb24gc3RhdGUuXG5AQCAtMTU1LDcgJiM0MzsxNTUsNyBAQCBwdWIgZm4gaXNfYXV0b25lZ19jb21wbGV0ZWQoXHUwMDI2c2VsZikgLVx1MDAzZSBib29sIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHN0cnVjdCBpbnZhcmlhbnQgZW5zdXJlcyB0aGF0IHdlIG1heSBhY2Nlc3NcbiAgICAgICAgIC8vIHRoaXMgZmllbGQgd2l0aG91dCBhZGRpdGlvbmFsIHN5bmNocm9uaXphdGlvbi5cbiAgICAgICAgIGxldCBiaXRfZmllbGQgPSB1bnNhZmUgeyBcdTAwMjYoKnNlbGYuMC5nZXQoKSkuX2JpdGZpZWxkXzEgfTtcbi0gICAgICAgIGJpdF9maWVsZC5nZXQoMTUsIDEpID09IEFVVE9ORUdfQ09NUExFVEVEXG4mIzQzOyAgICAgICAgYml0X2ZpZWxkLmdldCgxNiwgMSkgPT0gQVVUT05FR19DT01QTEVURURcbiAgICAgfVxuIFxuICAgICAvLy8gU2V0cyB0aGUgc3BlZWQgb2YgdGhlIFBIWS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UlVTVCYjMzQ7LAogICAgJiMzNDtSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlMmIzM0OywKICAgICYjMzQ7QVg4ODc5NkJfUlVTVF9QSFkmIzM0OywKICAgICYjMzQ7VVNCX05FVF9BWDg4MTdYJiMzNDssCiAgICAmIzM0O1VTQl9VU0JORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtheDg4NzcyX2JpbmQmIzM0OywKICAgICYjMzQ7YXg4ODc3Ml9pbml0X3BoeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBiaXRmaWVsZCBpbmRpY2VzIGluIHRoZSBSdXN0IFBIWSBkcml2ZXIgQVBJIGZvciBgaXNfbGlua191cGAsIGBpc19hdXRvbmVnX2VuYWJsZWRgLCBhbmQgYGlzX2F1dG9uZWdfY29tcGxldGVkYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIGJ5IHRoZSBgYXg4ODc5NmJfcnVzdGAgUEhZIGRyaXZlciwgd2hpY2ggaXMgdXNlZCBieSB0aGUgQVNJWCBVU0IgZXRoZXJuZXQgZHJpdmVyLiBJbmNvcnJlY3QgYml0ZmllbGQgaW5kaWNlcyBjYW4gbGVhZCB0byBpbmNvcnJlY3QgbGluayBzdGF0dXMgYW5kIGF1dG9uZWdvdGlhdGlvbiBiZWhhdmlvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBhMDkxN2RiMzBjNDVjNTIwMjViZTY4NGZmMmU4MzI0NjViOGYyOWVkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFN1biBBdWcgMjMgMTE6MjE6NDIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9uZXQvcGh5LnJzIGIvcnVzdC9rZXJuZWwvbmV0L3BoeS5ycwppbmRleCA5NTZjZGE1NzNkZGJhLi45OWVkM2RkMTY4ZGYzIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9uZXQvcGh5LnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL25ldC9waHkucnMKQEAgLTEzMCw3ICYjNDM7MTMwLDcgQEAgcHViIGZuIGlzX2xpbmtfdXAoJmFtcDtzZWxmKSAtJmd0OyBib29sIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgc3RydWN0IGludmFyaWFudCBlbnN1cmVzIHRoYXQgd2UgbWF5IGFjY2VzcwogICAgICAgICAvLyB0aGlzIGZpZWxkIHdpdGhvdXQgYWRkaXRpb25hbCBzeW5jaHJvbml6YXRpb24uCiAgICAgICAgIGxldCBiaXRfZmllbGQgPSB1bnNhZmUgeyAmYW1wOygqc2VsZi4wLmdldCgpKS5fYml0ZmllbGRfMSB9OwotICAgICAgICBiaXRfZmllbGQuZ2V0KDE0LCAxKSA9PSBMSU5LX0lTX1VQCiYjNDM7ICAgICAgICBiaXRfZmllbGQuZ2V0KDE1LCAxKSA9PSBMSU5LX0lTX1VQCiAgICAgfQogCiAgICAgLy8vIEdldHMgdGhlIGN1cnJlbnQgYXV0by1uZWdvdGlhdGlvbiBjb25maWd1cmF0aW9uLgpAQCAtMTQyLDcgJiM0MzsxNDIsNyBAQCBwdWIgZm4gaXNfYXV0b25lZ19lbmFibGVkKCZhbXA7c2VsZikgLSZndDsgYm9vbCB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHN0cnVjdCBpbnZhcmlhbnQgZW5zdXJlcyB0aGF0IHdlIG1heSBhY2Nlc3MKICAgICAgICAgLy8gdGhpcyBmaWVsZCB3aXRob3V0IGFkZGl0aW9uYWwgc3luY2hyb25pemF0aW9uLgogICAgICAgICBsZXQgYml0X2ZpZWxkID0gdW5zYWZlIHsgJmFtcDsoKnNlbGYuMC5nZXQoKSkuX2JpdGZpZWxkXzEgfTsKLSAgICAgICAgYml0X2ZpZWxkLmdldCgxMywgMSkgPT0gdTY0Ojpmcm9tKGJpbmRpbmdzOjpBVVRPTkVHX0VOQUJMRSkKJiM0MzsgICAgICAgIGJpdF9maWVsZC5nZXQoMTQsIDEpID09IHU2NDo6ZnJvbShiaW5kaW5nczo6QVVUT05FR19FTkFCTEUpCiAgICAgfQogCiAgICAgLy8vIEdldHMgdGhlIGN1cnJlbnQgYXV0by1uZWdvdGlhdGlvbiBzdGF0ZS4KQEAgLTE1NSw3ICYjNDM7MTU1LDcgQEAgcHViIGZuIGlzX2F1dG9uZWdfY29tcGxldGVkKCZhbXA7c2VsZikgLSZndDsgYm9vbCB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHN0cnVjdCBpbnZhcmlhbnQgZW5zdXJlcyB0aGF0IHdlIG1heSBhY2Nlc3MKICAgICAgICAgLy8gdGhpcyBmaWVsZCB3aXRob3V0IGFkZGl0aW9uYWwgc3luY2hyb25pemF0aW9uLgogICAgICAgICBsZXQgYml0X2ZpZWxkID0gdW5zYWZlIHsgJmFtcDsoKnNlbGYuMC5nZXQoKSkuX2JpdGZpZWxkXzEgfTsKLSAgICAgICAgYml0X2ZpZWxkLmdldCgxNSwgMSkgPT0gQVVUT05FR19DT01QTEVURUQKJiM0MzsgICAgICAgIGJpdF9maWVsZC5nZXQoMTYsIDEpID09IEFVVE9ORUdfQ09NUExFVEVECiAgICAgfQogCiAgICAgLy8vIFNldHMgdGhlIHNwZWVkIG9mIHRoZSBQSFkuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNzgKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUEhZIERldmljZSBCdWcgRml4KioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHJ1c3Qva2VybmVsL25ldC9waHkucnNgLiBJdCYjMzk7cyB0d2Vha2luZyB0aGUgYml0ZmllbGQgaW5kaWNlcyBmb3IgYGlzX2xpbmtfdXBgLCBgaXNfYXV0b25lZ19lbmFibGVkYCwgYW5kIGBpc19hdXRvbmVnX2NvbXBsZXRlZGAuIFJpZ2h0IGF3YXksIHRoaXMgc2NyZWFtcyAmIzM0O2J1ZyBmaXgmIzM0OyBmb3IgdGhlIFJ1c3QgYmluZGluZ3MgcmVsYXRlZCB0byBQaHlzaWNhbCBMYXllciAoUEhZKSBkZXZpY2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgbWVhbnMgaW4gdGhlIGJyb2FkZXIgY29udGV4dC4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBpbXBhY3QuIEkgc2hvdWxkIGNoZWNrIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQuIFRoZXkmIzM5O3JlIHBhcnQgb2YgdGhlIFJ1c3QgUEhZIGRyaXZlciBBUEksIG9mIGNvdXJzZS4gTXkgZXhwZXJ0aXNlIHNheXMgdGhlc2UgYXJlIGNyaXRpY2FsIGZ1bmN0aW9ucyBmb3IgY2hlY2tpbmcgdGhlIGxpbmsgc3RhdHVzIGFuZCBhdXRvbmVnb3RpYXRpb24gc3RhdGUgb2YgYSBuZXR3b3JrIGNvbm5lY3Rpb24uCgpOb3csIGEga2V5IHF1ZXN0aW9uIGFyaXNlczogQXJlIHRoZXJlICphbnkqIFBIWSBkcml2ZXJzIHdyaXR0ZW4gaW4gUnVzdCB5ZXQ/IElmIG5vdCwgaXQmIzM5O3MgcG90ZW50aWFsbHkgaW1wb3J0YW50LCBidXQgbG93ZXIgcHJpb3JpdHkuIFNvLCBsZXQgbWUgc2VhcmNoIGZvciB1c2VzIG9mIHRob3NlIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5IHdpdGhpbiBgcnVzdC9gIGFuZCB0aGUgYGRyaXZlcnMvbmV0L3BoeS9gIGRpcmVjdG9yaWVzLiBGaW5kaW5nIHVzZXMgd2lsbCBnaXZlIG1lIGNydWNpYWwgY29udGV4dC4gVGhpcyBiaXRmaWVsZCBmaXggbWF5IGJlIGNyaXRpY2FsIGZvciBleGlzdGluZyBSdXN0IFBIWSBkcml2ZXJzLCBvciBtYXliZSB3ZSBhcmUgcHJlcGFyaW5nIHNvbWV0aGluZy4gSSBuZWVkIHRvIGRpZyBpbiBhbmQgc2VlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lzX2xpbmtfdXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtydXN0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtydXN0L2tlcm5lbC9uZXQvcGh5LnJzPTEwMz0gICAgcHViIGZuIHN0YXRlKFx1MDAyNnNlbGYpIC1cdTAwM2UgRGV2aWNlU3RhdGUge1xuLS1cbnJ1c3Qva2VybmVsL25ldC9waHkucnMtMTI1LSAgICAvLy8gSXQgcmV0dXJucyB0cnVlIGlmIHRoZSBsaW5rIGlzIHVwLlxucnVzdC9rZXJuZWwvbmV0L3BoeS5yczoxMjY6ICAgIHB1YiBmbiBpc19saW5rX3VwKFx1MDAyNnNlbGYpIC1cdTAwM2UgYm9vbCB7XG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTEyNy0gICAgICAgIGNvbnN0IExJTktfSVNfVVA6IHU2NCA9IDE7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgxMQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlIGlmIEkgY2FuIGdldCB0aGlzIHJpZ2h0Li4uCgoqKlJ1c3QgUEhZIERyaXZlciBTZWFyY2gqKgoKQWxyaWdodCwgc28gSSBuZWVkIHRvIGNoZWNrIHNvbWV0aGluZyBxdWlja2x5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaW52ZXN0aWdhdGUgdGhlIGN1cnJlbnQgbGFuZHNjYXBlIG9mIFJ1c3QgUEhZIGRyaXZlcnMuIEkmIzM5O20gY3VyaW91cyBpZiB0aGVyZSYjMzk7cyBhbnkgYWN0aXZlIGRldmVsb3BtZW50IG9yIGV4aXN0aW5nIGltcGxlbWVudGF0aW9ucyBhbHJlYWR5IG91dCB0aGVyZSwgb3IgaWYgdGhpcyBpcyBzb21ldGhpbmcgSSYjMzk7bGwgbmVlZCB0byBjb250cmlidXRlIHRvIGZyb20gc2NyYXRjaC4gSSYjMzk7bSBnb2luZyB0byBkbyBhIHF1aWNrIHNlYXJjaCBhbmQgc2VlIHdoYXQgY29tZXMgdXAuIFRoaXMgaXMgYSBjb21tb24gZmlyc3Qgc3RlcCAtIHVuZGVyc3RhbmQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgcGxheSBiZWZvcmUgZGl2aW5nIGluIGRlZXBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpc19saW5rX3VwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycz00OT0gICAgZm4gcmVhZF9zdGF0dXMoZGV2OiBcdTAwMjZtdXQgcGh5OjpEZXZpY2UpIC1cdTAwM2UgUmVzdWx0XHUwMDNjdTE2XHUwMDNlIHtcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTUwLSAgICAgICAgZGV2LmdlbnBoeV91cGRhdGVfbGluaygpPztcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzOjUxOiAgICAgICAgaWYgIWRldi5pc19saW5rX3VwKCkge1xuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtNTItICAgICAgICAgICAgcmV0dXJuIE9rKDApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBheDg4Nzk2YiBEcml2ZXIqKgoKT2theSwgc28gSSBzZWUgdGhpcyBgYXg4ODc5NmJfcnVzdC5yc2AgZmlsZSBwb3BwZWQgdXAuIFJpZ2h0LCB0aGF0JiMzOTtzIGluIHRoZSBuZXR3b3JrIFBIWSBkcml2ZXJzLCB3aGljaCBpcyBleGFjdGx5IHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgc29tZXRoaW5nIHJlbGF0ZWQgdG8gYW4gQVg4ODc5NkIgY2hpcC4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIGhvdyBpdCYjMzk7cyBiZWluZyBoYW5kbGVkLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBjaGVjayBpdHMgY29uZmlndXJhdGlvbiwgbWFrZSBzdXJlIGl0JiMzOTtzIHNldCB1cCBjb3JyZWN0bHksIGFuZCB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGludGVyZmFjZXMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgbmV0d29yayBzdGFjay4gSeKAmWxsIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIGhvdyB0aGUgZHJpdmVyIGlzIGltcGxlbWVudGVkLiBJIHdhbnQgdG8gbG9vayBjbG9zZWx5IGF0IHRoZSByZWdpc3RlciBhY2Nlc3MgcGF0dGVybnMsIGVycm9yIGhhbmRsaW5nLCBhbmQgYW55IHBvd2VyIG1hbmFnZW1lbnQgY29uc2lkZXJhdGlvbnMuIEhvcGVmdWxseSwgaXRzIGNvbmZpZ3VyYXRpb24gaXMgc2FuZS4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0byBsb29rIGF0IHJlbGF0ZWQgZmlsZXMgaWYgaXQgc2VlbXMgdGhhdCB0aGV5IGFyZSByZWxhdGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F4ODg3OTZiX3J1c3QmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTE2MD1jb25maWcgQVg4ODc5NkJfUlVTVF9QSFlcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNjMtXHRoZWxwXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxNjQ6XHQgIFVzZXMgdGhlIFJ1c3QgcmVmZXJlbmNlIGRyaXZlciBmb3IgQXNpeCBQSFlzIChheDg4Nzk2Yl9ydXN0LmtvKS5cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTE2NS1cdCAgVGhlIGZlYXR1cmVzIGFyZSBlcXVpdmFsZW50LiBJdCBzdXBwb3J0cyB0aGUgQXNpeCBFbGVjdHJvbmljcyBQSFlcbi0tXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9NDA9aWZkZWYgQ09ORklHX0FYODg3OTZCX1JVU1RfUEhZXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NDE6ICBvYmotJChDT05GSUdfQVg4ODc5NkJfUEhZKVx0JiM0Mzs9IGF4ODg3OTZiX3J1c3Qub1xuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTQyLWVsc2VcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjA3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhpbmtpbmcgcHJvY2VzczoKCioqRXhhbWluaW5nIEFYODg3OTZCIFBIWSBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgc2VlIEkgbmVlZCBib3RoIGBDT05GSUdfQVg4ODc5NkJfUlVTVF9QSFlgIGFuZCBgQ09ORklHX0FYODg3OTZCX1BIWWAuIFJpZ2h0LCBgQ09ORklHX0FYODg3OTZCX1JVU1RfUEhZYCBpcyBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaW1lIHRvIGRpZyBpbiBhIGJpdCBkZWVwZXIuIEdpdmVuIHRoZSBjb250ZXh0LCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMTYwIG9yIHNvLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBkZWZpbml0aW9uIGZvciB0aGlzIGxpa2VseSByZXNpZGVzLiBJJiMzOTtsbCBzZWUgd2hhdCBkZXBlbmRlbmNpZXMgb3IgY29uc3RyYWludHMgYXJlIGRvY3VtZW50ZWQgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE1MDpcdFx0ICBBZGRzIHN1cHBvcnQgZm9yIHRoZSBBcHBsaWVkIE1pY3JvIENpcmN1aXRzIENvcnBvcmF0aW9uIFFUMjAyNSBQSFkuXG4gMTUxOlx0XG4gMTUyOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9LY29uZmlnXCYjMzQ7XG4gMTUzOlx0XG4gMTU0Olx0Y29uZmlnIEFYODg3OTZCX1BIWVxuIDE1NTpcdFx0dHJpc3RhdGUgXCYjMzQ7QXNpeCBQSFlzXCYjMzQ7XG4gMTU2Olx0XHRoZWxwXG4gMTU3Olx0XHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgQXNpeCBFbGVjdHJvbmljcyBQSFkgZm91bmQgaW4gdGhlIFgtU3VyZiAxMDBcbiAxNTg6XHRcdCAgQVg4ODc5NkIgcGFja2FnZS5cbiAxNTk6XHRcbiAxNjA6XHRjb25maWcgQVg4ODc5NkJfUlVTVF9QSFlcbiAxNjE6XHRcdGJvb2wgXCYjMzQ7UnVzdCByZWZlcmVuY2UgZHJpdmVyIGZvciBBc2l4IFBIWXNcJiMzNDtcbiAxNjI6XHRcdGRlcGVuZHMgb24gUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TIFx1MDAyNlx1MDAyNiBBWDg4Nzk2Ql9QSFlcbiAxNjM6XHRcdGhlbHBcbiAxNjQ6XHRcdCAgVXNlcyB0aGUgUnVzdCByZWZlcmVuY2UgZHJpdmVyIGZvciBBc2l4IFBIWXMgKGF4ODg3OTZiX3J1c3Qua28pLlxuIDE2NTpcdFx0ICBUaGUgZmVhdHVyZXMgYXJlIGVxdWl2YWxlbnQuIEl0IHN1cHBvcnRzIHRoZSBBc2l4IEVsZWN0cm9uaWNzIFBIWVxuIDE2NjpcdFx0ICBmb3VuZCBpbiB0aGUgWC1TdXJmIDEwMCBBWDg4Nzk2QiBwYWNrYWdlLlxuIDE2NzpcdFxuIDE2ODpcdGNvbmZpZyBCUk9BRENPTV9QSFlcbiAxNjk6XHRcdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIDU0WFggUEhZc1wmIzM0O1xuIDE3MDpcdFx0c2VsZWN0IEJDTV9ORVRfUEhZTElCXG4gMTcxOlx0XHRzZWxlY3QgQkNNX05FVF9QSFlQVFAgaWYgTkVUV09SS19QSFlfVElNRVNUQU1QSU5HXG4gMTcyOlx0XHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG4gMTczOlx0XHRoZWxwXG4gMTc0Olx0XHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgQkNNNTQxMSwgQkNNNTQyMSwgQkNNNTQ2MSwgQkNNNTQ2MTZTLCBCQ001NDY0LFxuIDE3NTpcdFx0ICBCQ001NDgxLCBCQ001NDgxMCBhbmQgQkNNNTQ4MiBQSFlzLlxuIDE3NjpcdFxuIDE3NzpcdGNvbmZpZyBCQ001NDE0MF9QSFlcbiAxNzg6XHRcdHRyaXN0YXRlIFwmIzM0O0Jyb2FkY29tIEJDTTU0MTQwIFBIWVwmIzM0O1xuIDE3OTpcdFx0ZGVwZW5kcyBvbiBIV01PTiB8fCBIV01PTj1uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MzEKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246CgoqKkRlcGVuZGVuY3kgRGVlcCBEaXZlKioKCk9rYXksIHNvIGl0IGxvb2tzIGxpa2UgYEFYODg3OTZCX1JVU1RfUEhZYCByZWxpZXMgb24gYm90aCBgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TYCBhbmQgYEFYODg3OTZCX1BIWWAuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0JiMzOTtzIHByb2JhYmx5IHVzaW5nIHRoZSBhYnN0cmFjdGlvbnMgZm9yIHBsYXRmb3JtLWFnbm9zdGljIFBIWSBpbnRlcmFjdGlvbiBhbmQgdGhlIGBBWDg4Nzk2Ql9QSFlgIGZvciB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgZGV0YWlscyBvZiB0aGF0IHBhcnRpY3VsYXIgY2hpcC4gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIGBSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRob3NlIGFic3RyYWN0aW9ucyAqYXJlKi4gV2hhdCBpbnRlcmZhY2VzIGFyZSBiZWluZyBkZWZpbmVkIGhlcmU/IFdoYXQgYXJlIHRoZSBjYXBhYmlsaXRpZXMgYW5kIGxpbWl0YXRpb25zIG9mIHRoaXMgYWJzdHJhY3Rpb24gbGF5ZXI/IFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgYXJjaGl0ZWN0dXJlIG9mIHRoZSB3aG9sZSBQSFkgaW50ZXJhY3Rpb24gbGllcywgc28gdGhpcyBpcyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgZWZmb3J0cyBmaXJzdCB0byB1bmRlcnN0YW5kIHRoZSB3aG9sZS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHdoYXQhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NTY9Y29uZmlnIEZJWEVEX1BIWVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTY0LVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NjU6Y29uZmlnIFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU1xuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNjYtICAgICAgICBib29sIFwmIzM0O1J1c3QgUEhZTElCIGFic3RyYWN0aW9ucyBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ3OTUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkV4YW1pbmluZyBQSFkgS2NvbmZpZyBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGBkcml2ZXJzL25ldC9waHkvS2NvbmZpZ2AgZmlsZS4gSSYjMzk7bSBmb2N1c2luZyBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNjU7IHRoYXQmIzM5O3MgdXN1YWxseSB3aGVyZSB0aGUgbWVhdCBvZiBhIHNwZWNpZmljIG1vZHVsZSYjMzk7cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgYmVnaW5zLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IHRoaXMgcGFydGljdWxhciBQSFkgZHJpdmVyIGlzIGNvbmZpZ3VyZWQuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSBzY2FuIGl0IHRvIGdyYXNwIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBjaG9pY2VzIHRoZSBkZXZlbG9wZXJzIGhhdmUgYnVpbHQgaW50byBpdC4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCBob3cgdGhpcyBQSFkgaXMgaW50ZWdyYXRlZCBhbmQgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIGdvdGNoYXMgdG8gbG9vayBvdXQgZm9yLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGEgdHlwaWNhbCBLY29uZmlnIHN0cnVjdHVyZSDigJMgYGNvbmZpZ2AgZGlyZWN0aXZlcywgYGRlcGVuZHMgb25gIHN0YXRlbWVudHMsIG1heWJlIHNvbWUgYHNlbGVjdGAgc3RhdGVtZW50cywgYW5kIHNvbWUgaGVscCB0ZXh0LiBLbm93aW5nIHRoaXMsIEkgY2FuIHN0YXJ0IGZvcm1pbmcgYSBtZW50YWwgbWFwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA2MDpcdFx0ICBBZGRzIHRoZSBwbGF0Zm9ybSBcJiMzNDtmaXhlZFwmIzM0OyBNRElPIEJ1cyB0byBjb3ZlciB0aGUgYm9hcmRzIHRoYXQgdXNlXG4gIDYxOlx0XHQgIFBIWXMgdGhhdCBhcmUgbm90IGNvbm5lY3RlZCB0byB0aGUgcmVhbCBNRElPIGJ1cy5cbiAgNjI6XHRcbiAgNjM6XHRcdCAgQ3VycmVudGx5IHRlc3RlZCB3aXRoIG1wYzg2NmFkcyBhbmQgbXBjODM0OWUtbWl0eC5cbiAgNjQ6XHRcbiAgNjU6XHRjb25maWcgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TXG4gIDY2Olx0ICAgICAgICBib29sIFwmIzM0O1J1c3QgUEhZTElCIGFic3RyYWN0aW9ucyBzdXBwb3J0XCYjMzQ7XG4gIDY3Olx0ICAgICAgICBkZXBlbmRzIG9uIFJVU1RcbiAgNjg6XHQgICAgICAgIGRlcGVuZHMgb24gUEhZTElCPXlcbiAgNjk6XHQgICAgICAgIGhlbHBcbiAgNzA6XHQgICAgICAgICAgQWRkcyBzdXBwb3J0IG5lZWRlZCBmb3IgUEhZIGRyaXZlcnMgd3JpdHRlbiBpbiBSdXN0LiBJdCBwcm92aWRlc1xuICA3MTpcdCAgICAgICAgICBhIHdyYXBwZXIgYXJvdW5kIHRoZSBDIHBoeWxpYiBjb3JlLlxuICA3MjpcdFxuICA3MzpcdGNvbmZpZyBTRlBcbiAgNzQ6XHRcdHRyaXN0YXRlIFwmIzM0O1NGUCBjYWdlIHN1cHBvcnRcJiMzNDtcbiAgNzU6XHRcdGRlcGVuZHMgb24gSTJDIFx1MDAyNlx1MDAyNiBQSFlMSU5LXG4gIDc2Olx0XHRkZXBlbmRzIG9uIEhXTU9OIHx8IEhXTU9OPW5cbiAgNzc6XHRcdHNlbGVjdCBNRElPX0kyQ1xuICA3ODpcdFxuICA3OTpcdGNvbW1lbnQgXCYjMzQ7TUlJIFBIWSBkZXZpY2UgZHJpdmVyc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzE5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEN1cnJlbnQgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaW1wbGVtZW50aW5nIHN1cHBvcnQgZm9yIHRoaXMgQXNpeCBQSFksIHNwZWNpZmljYWxseSB0aGUgQVg4ODc5NkIsIHdpdGhpbiB0aGlzIFJ1c3QgZW52aXJvbm1lbnQuIEkgbmVlZCB0byBpbnRlZ3JhdGUgdGhlc2Ugc3BlY2lmaWMgY29tcG9uZW50czogYFJVU1RgLCBgUEhZTElCYCwgYFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU2AsIGBBWDg4Nzk2Ql9QSFlgLCBhbmQgYEFYODg3OTZCX1JVU1RfUEhZYC4KCk15IG1haW4gY29uY2VybiBpcywgY2FuIEkgZXZlbiByZWxpYWJseSB0ZXN0IHRoZSBgaXNfbGlua191cGAgZnVuY3Rpb25hbGl0eSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBSZWFsLXdvcmxkIFBIWSBkcml2ZXJzIGFyZSBvZnRlbiB0aWVkIHRvIE1ESU8gYnVzZXMsIGFuZCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gc2ltdWxhdGUgb3IgaW5zdGFudGlhdGUgdGhhdCBzZXR1cC4gSSYjMzk7bSB0aGlua2luZyBzcGVjaWZpY2FsbHkgYWJvdXQgUUVNVSwgY2FuIEkgY3JlYXRlIGFuIE1ESU8gYnVzIHRoZXJlIGFuZCBhdHRhY2ggdGhpcyBQSFk/IE9yLCBhcmUgdGhlcmUgdmlydHVhbGl6ZWQgTURJTyBpbXBsZW1lbnRhdGlvbnMgdGhhdCBJIGNhbiBsZXZlcmFnZT8KClRoaW5raW5nIG1vcmUgYWJvdXQgaXQsIEkgcmVtZW1iZXIgdGhhdCBzeXprYWxsZXIgaGFzIHRoZSBwb3RlbnRpYWwgdG8gaW5qZWN0IE1ESU8gZGV2aWNlcywgcHJvdmlkZWQgaXQgY2FuIGFjY2VzcyBhIHZpcnR1YWwgTURJTyBidXMgb3IgaWYgaXQgY2FuIGludGVyYWN0IHdpdGggUEhZcyB2aWEgbmV0bGluayBvciBpb2N0bC4gVGhhdCYjMzk7cyBhIHBvdGVudGlhbCBhdmVudWUuCgpSaWdodCBub3csIG15IGZvY3VzIHNob3VsZCBiZSBvbiBob3cgYGlzX2xpbmtfdXBgIGlzIGludm9rZWQ7IGEgcXVpY2sgbG9vayBhbmQgSSBzZWUgdGhhdCBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgcmVhZF9zdGF0dXNgIGluIGBheDg4Nzk2Yl9ydXN0LnJzYC4gSSBzaG91bGQgcHJvYmFibHkgb3BlbiB0aGF0IGZpbGUgYW5kIHNlZSBob3cgdGhpbmdzIGZpdCB0b2dldGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdC8vIENvcHlyaWdodCAoQykgMjAyMyBGVUpJVEEgVG9tb25vcmkgXHUwMDNjZnVqaXRhLnRvbW9ub3JpQGdtYWlsLmNvbVx1MDAzZVxuICAgMzpcdFxuICAgNDpcdC8vISBSdXN0IEFzaXggUEhZcyBkcml2ZXJcbiAgIDU6XHQvLyFcbiAgIDY6XHQvLyEgQyB2ZXJzaW9uIG9mIHRoaXMgZHJpdmVyOiBbYGRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jYF0oLi9heDg4Nzk2Yi5jKVxuICAgNzpcdHVzZSBrZXJuZWw6OntcbiAgIDg6XHQgICAgbmV0OjpwaHk6OntzZWxmLCByZWc6OkMyMiwgRGV2aWNlSWQsIERyaXZlcn0sXG4gICA5Olx0ICAgIHByZWx1ZGU6OiosXG4gIDEwOlx0ICAgIHVhcGksXG4gIDExOlx0fTtcbiAgMTI6XHRcbiAgMTM6XHRrZXJuZWw6Om1vZHVsZV9waHlfZHJpdmVyISB7XG4gIDE0Olx0ICAgIGRyaXZlcnM6IFtQaHlBWDg4NzcyQSwgUGh5QVg4ODc3MkMsIFBoeUFYODg3OTZCXSxcbiAgMTU6XHQgICAgZGV2aWNlX3RhYmxlOiBbXG4gIDE2Olx0ICAgICAgICBEZXZpY2VJZDo6bmV3X3dpdGhfZHJpdmVyOjpcdTAwM2NQaHlBWDg4NzcyQVx1MDAzZSgpLFxuICAxNzpcdCAgICAgICAgRGV2aWNlSWQ6Om5ld193aXRoX2RyaXZlcjo6XHUwMDNjUGh5QVg4ODc3MkNcdTAwM2UoKSxcbiAgMTg6XHQgICAgICAgIERldmljZUlkOjpuZXdfd2l0aF9kcml2ZXI6Olx1MDAzY1BoeUFYODg3OTZCXHUwMDNlKClcbiAgMTk6XHQgICAgXSxcbiAgMjA6XHQgICAgbmFtZTogXCYjMzQ7cnVzdF9hc2l4X3BoeVwmIzM0OyxcbiAgMjE6XHQgICAgYXV0aG9yczogW1wmIzM0O0ZVSklUQSBUb21vbm9yaSBcdTAwM2NmdWppdGEudG9tb25vcmlAZ21haWwuY29tXHUwMDNlXCYjMzQ7XSxcbiAgMjI6XHQgICAgZGVzY3JpcHRpb246IFwmIzM0O1J1c3QgQXNpeCBQSFlzIGRyaXZlclwmIzM0OyxcbiAgMjM6XHQgICAgbGljZW5zZTogXCYjMzQ7R1BMXCYjMzQ7LFxuICAyNDpcdH1cbiAgMjU6XHRcbiAgMjY6XHRjb25zdCBCTUNSX1NQRUVEMTAwOiB1MTYgPSB1YXBpOjpCTUNSX1NQRUVEMTAwIGFzIHUxNjtcbiAgMjc6XHRjb25zdCBCTUNSX0ZVTExEUExYOiB1MTYgPSB1YXBpOjpCTUNSX0ZVTExEUExYIGFzIHUxNjtcbiAgMjg6XHRcbiAgMjk6XHQvLyBQZXJmb3JtcyBhIHNvZnR3YXJlIFBIWSByZXNldCB1c2luZyB0aGUgc3RhbmRhcmRcbiAgMzA6XHQvLyBCTUNSX1JFU0VUIGJpdCBhbmQgcG9sbCBmb3IgdGhlIHJlc2V0IGJpdCB0byBiZSBjbGVhcmVkLlxuICAzMTpcdC8vIFRvZ2dsZSBCTUNSX1JFU0VUIGJpdCBvZmYgdG8gYWNjb21tb2RhdGUgYnJva2VuIEFYODc5NkIgUEhZIGltcGxlbWVudGF0aW9uXG4gIDMyOlx0Ly8gc3VjaCBhcyB1c2VkIG9uIHRoZSBJbmRpdmlkdWFsIENvbXB1dGVycyYjMzk7IFgtU3VyZiAxMDAgWm9ycm8gY2FyZC5cbiAgMzM6XHRmbiBhc2l4X3NvZnRfcmVzZXQoZGV2OiBcdTAwMjZtdXQgcGh5OjpEZXZpY2UpIC1cdTAwM2UgUmVzdWx0IHtcbiAgMzQ6XHQgICAgZGV2LndyaXRlKEMyMjo6Qk1DUiwgMCk/O1xuICAzNTpcdCAgICBkZXYuZ2VucGh5X3NvZnRfcmVzZXQoKVxuICAzNjpcdH1cbiAgMzc6XHRcbiAgMzg6XHRzdHJ1Y3QgUGh5QVg4ODc3MkE7XG4gIDM5Olx0XG4gIDQwOlx0I1t2dGFibGVdXG4gIDQxOlx0aW1wbCBEcml2ZXIgZm9yIFBoeUFYODg3NzJBIHtcbiAgNDI6XHQgICAgY29uc3QgRkxBR1M6IHUzMiA9IHBoeTo6ZmxhZ3M6OklTX0lOVEVSTkFMO1xuICA0MzpcdCAgICBjb25zdCBOQU1FOiBcdTAwMjYmIzM5O3N0YXRpYyBDU3RyID0gY1wmIzM0O0FzaXggRWxlY3Ryb25pY3MgQVg4ODc3MkFcJiMzNDs7XG4gIDQ0Olx0ICAgIGNvbnN0IFBIWV9ERVZJQ0VfSUQ6IERldmljZUlkID0gRGV2aWNlSWQ6Om5ld193aXRoX2V4YWN0X21hc2soMHgwMDNiMTg2MSk7XG4gIDQ1Olx0XG4gIDQ2Olx0ICAgIC8vIEFYODg3NzJBIGlzIG5vdCB3b3JraW5nIHByb3Blcmx5IHdpdGggc29tZSBvbGQgc3dpdGNoZXMgKE5FVEdFQVIgRU4gMTA4VFApOlxuICA0NzpcdCAgICAvLyBhZnRlciBhdXRvbmVnIGlzIGRvbmUgYW5kIHRoZSBsaW5rIHN0YXR1cyBpcyByZXBvcnRlZCBhcyBhY3RpdmUsIHRoZSBNSUlfTFBBXG4gIDQ4Olx0ICAgIC8vIHJlZ2lzdGVyIGlzIDAuIFRoaXMgaXNzdWUgaXMgbm90IHJlcHJvZHVjaWJsZSBvbiBBWDg4NzcyQy5cbiAgNDk6XHQgICAgZm4gcmVhZF9zdGF0dXMoZGV2OiBcdTAwMjZtdXQgcGh5OjpEZXZpY2UpIC1cdTAwM2UgUmVzdWx0XHUwMDNjdTE2XHUwMDNlIHtcbiAgNTA6XHQgICAgICAgIGRldi5nZW5waHlfdXBkYXRlX2xpbmsoKT87XG4gIDUxOlx0ICAgICAgICBpZiAhZGV2LmlzX2xpbmtfdXAoKSB7XG4gIDUyOlx0ICAgICAgICAgICAgcmV0dXJuIE9rKDApO1xuICA1MzpcdCAgICAgICAgfVxuICA1NDpcdCAgICAgICAgLy8gSWYgTUlJX0xQQSBpcyAwLCBwaHlfcmVzb2x2ZV9hbmVnX2xpbmttb2RlKCkgd2lsbCBmYWlsIHRvIHJlc29sdmVcbiAgNTU6XHQgICAgICAgIC8vIGxpbmttb2RlIHNvIHVzZSBNSUlfQk1DUiBhcyBkZWZhdWx0IHZhbHVlcy5cbiAgNTY6XHQgICAgICAgIGxldCByZXQgPSBkZXYucmVhZChDMjI6OkJNQ1IpPztcbiAgNTc6XHRcbiAgNTg6XHQgICAgICAgIGlmIHJldCBcdTAwMjYgQk1DUl9TUEVFRDEwMCAhPSAwIHtcbiAgNTk6XHQgICAgICAgICAgICBkZXYuc2V0X3NwZWVkKHVhcGk6OlNQRUVEXzEwMCk7XG4gIDYwOlx0ICAgICAgICB9IGVsc2Uge1xuICA2MTpcdCAgICAgICAgICAgIGRldi5zZXRfc3BlZWQodWFwaTo6U1BFRURfMTApO1xuICA2MjpcdCAgICAgICAgfVxuICA2MzpcdFxuICA2NDpcdCAgICAgICAgbGV0IGR1cGxleCA9IGlmIHJldCBcdTAwMjYgQk1DUl9GVUxMRFBMWCAhPSAwIHtcbiAgNjU6XHQgICAgICAgICAgICBwaHk6OkR1cGxleE1vZGU6OkZ1bGxcbiAgNjY6XHQgICAgICAgIH0gZWxzZSB7XG4gIDY3Olx0ICAgICAgICAgICAgcGh5OjpEdXBsZXhNb2RlOjpIYWxmXG4gIDY4Olx0ICAgICAgICB9O1xuICA2OTpcdCAgICAgICAgZGV2LnNldF9kdXBsZXgoZHVwbGV4KTtcbiAgNzA6XHRcbiAgNzE6XHQgICAgICAgIGRldi5nZW5waHlfcmVhZF9scGEoKT87XG4gIDcyOlx0XG4gIDczOlx0ICAgICAgICBpZiBkZXYuaXNfYXV0b25lZ19lbmFibGVkKCkgXHUwMDI2XHUwMDI2IGRldi5pc19hdXRvbmVnX2NvbXBsZXRlZCgpIHtcbiAgNzQ6XHQgICAgICAgICAgICBkZXYucmVzb2x2ZV9hbmVnX2xpbmttb2RlKCk7XG4gIDc1Olx0ICAgICAgICB9XG4gIDc2Olx0XG4gIDc3Olx0ICAgICAgICBPaygwKVxuICA3ODpcdCAgICB9XG4gIDc5Olx0XG4gIDgwOlx0ICAgIGZuIHN1c3BlbmQoZGV2OiBcdTAwMjZtdXQgcGh5OjpEZXZpY2UpIC1cdTAwM2UgUmVzdWx0IHtcbiAgODE6XHQgICAgICAgIGRldi5nZW5waHlfc3VzcGVuZCgpXG4gIDgyOlx0ICAgIH1cbiAgODM6XHRcbiAgODQ6XHQgICAgZm4gcmVzdW1lKGRldjogXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXHUwMDNlIFJlc3VsdCB7XG4gIDg1Olx0ICAgICAgICBkZXYuZ2VucGh5X3Jlc3VtZSgpXG4gIDg2Olx0ICAgIH1cbiAgODc6XHRcbiAgODg6XHQgICAgZm4gc29mdF9yZXNldChkZXY6IFx1MDAyNm11dCBwaHk6OkRldmljZSkgLVx1MDAzZSBSZXN1bHQge1xuICA4OTpcdCAgICAgICAgYXNpeF9zb2Z0X3Jlc2V0KGRldilcbiAgOTA6XHQgICAgfVxuICA5MTpcdFxuICA5MjpcdCAgICBmbiBsaW5rX2NoYW5nZV9ub3RpZnkoZGV2OiBcdTAwMjZtdXQgcGh5OjpEZXZpY2UpIHtcbiAgOTM6XHQgICAgICAgIC8vIFJlc2V0IFBIWSwgb3RoZXJ3aXNlIE1JSV9MUEEgd2lsbCBwcm92aWRlIG91dGRhdGVkIGluZm9ybWF0aW9uLlxuICA5NDpcdCAgICAgICAgLy8gVGhpcyBpc3N1ZSBpcyByZXByb2R1Y2libGUgb25seSB3aXRoIHNvbWUgbGluayBwYXJ0bmVyIFBIWXMuXG4gIDk1Olx0ICAgICAgICBpZiBkZXYuc3RhdGUoKSA9PSBwaHk6OkRldmljZVN0YXRlOjpOb0xpbmsge1xuICA5NjpcdCAgICAgICAgICAgIGxldCBfID0gZGV2LmluaXRfaHcoKTtcbiAgOTc6XHQgICAgICAgICAgICBsZXQgXyA9IGRldi5zdGFydF9hbmVnKCk7XG4gIDk4Olx0ICAgICAgICB9XG4gIDk5Olx0ICAgIH1cbiAxMDA6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc1MjgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgcGh5LnJzYCBNb2R1bGUgYW5kIEFYODg3NzJBIENvbm5lY3Rpdml0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYHJ1c3Qva2VybmVsL25ldC9waHkucnNgLiBJdCYjMzk7cyBkZWFsaW5nIHdpdGggYml0ZmllbGQgaW5kaWNlcywgd2hpY2ggaXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCBpbiBwcmluY2lwbGUuIEJ1dCwgdGhlIHJlYWwgcXVlc3Rpb24gdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcywgY2FuIHdlIGFjdHVhbGx5ICp0ZXN0KiB0aGlzIGVmZmVjdGl2ZWx5PyBBcmUgYGlzX2xpbmtfdXBgLCBgaXNfYXV0b25lZ19lbmFibGVkYCwgYW5kIGBpc19hdXRvbmVnX2NvbXBsZXRlZGAgcmVhY2hhYmxlIHdpdGhpbiB0aGUgdGVzdGluZyBmcmFtZXdvcms/IFNwZWNpZmljYWxseSwgaXMgYGF4ODg3OTZiX3J1c3RgIHNvbWV0aGluZyB0aGF0IHN5emthbGxlciBjYW4gZXZlbiB0b3VjaD8KCkFoLCByaWdodCwgc3l6a2FsbGVyICpjYW4qIGxvYWQgbW9kdWxlcywgc28gdGhlcmUmIzM5O3MgYSBjaGFuY2UuIEkgY2FuIHNlZSBpdCBpbnN0YW50aWF0aW5nIFBIWSBkZXZpY2VzIHVzaW5nIHZpcnR1YWwgTURJTyBidXNlcyBvciBuZXRsaW5rLiBCdXQgdGhlbiBJIGhhdmUgdG8gYXNrIG15c2VsZiwgZG9lcyBzeXprYWxsZXIgYWN0dWFsbHkgKmhhdmUqIGEgdmlydHVhbCBNRElPIGJ1cz8gT3IgaXMgaXQgbGVhbmluZyBvbiBgbWFjc2VjYCwgYHZldGhgLCBvciBgdHVuYD8KCldhaXQgYSBzZWNvbmQuLi4gZGlkbiYjMzk7dCBJIHNlZSBzb21ldGhpbmcgYWJvdXQgVVNCPyBBaGEhIFN5emthbGxlciBoYXMgdGhlIGNhcGFiaWxpdHkgdG8gaW5qZWN0IFVTQiBkZXZpY2VzLiBBbmQgdGhhdCB0cmlnZ2VycyBzb21ldGhpbmcg4oCTIHRoZSBBWDg4NzcyQSEgSSByZW1lbWJlciBpdCBhcyBhbiBBU0lYIFVTQiBldGhlcm5ldCBhZGFwdGVyLiBOb3csIGhlcmUmIzM5O3MgdGhlIHJ1YjogaXMgdGhlIEFYODg3NzJBIGEgUEhZIGRldmljZSBhcyB3ZWxsPyBJdCYjMzk7cyB1c2VkIGJ5IHRoZSBgYXNpeGAgVVNCIGV0aGVybmV0IGRyaXZlciwgaXNuJiMzOTt0IGl0PwoKUmlnaHQsIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgYGRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuY2AgZmlsZSwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIHRvIHNlZSBob3cgaXQmIzM5O3MgZGVmaW5lZCBhbmQgaG93IGl0JiMzOTtzIGhhbmRsZWQuIFRoYXQmIzM5O2xsIGJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgd2UgY2FuIGV4cGxvaXQgdGhpcyB0byB2YWxpZGF0ZSB0aGUgYHBoeS5yc2AgY2hhbmdlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsweDAwM2IxODYxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgxNDgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOgoKKipJbnZlc3RpZ2F0aW5nIEFYODg3OTZCIERyaXZlciBVc2FnZSoqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc3RhdHVzIG9mIGBkcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuY2AuIEdpdmVuIG15IGV4cGVydGlzZSwgSSBzdXNwZWN0IHRoaXMgaXMgYSBQSFkgKFBoeXNpY2FsIExheWVyKSBkcml2ZXIgcmVsYXRlZCB0byBhIG5ldHdvcmsgaW50ZXJmYWNlIGNvbnRyb2xsZXIuIEkgaW1tZWRpYXRlbHkganVtcCB0byB0aGUgbW9zdCBsb2dpY2FsIHN0ZXA6IGRpdmluZyBpbnRvIHRoZSBjb2RlIGl0c2VsZi4gSSYjMzk7bGwgb3BlbiB1cCB0aGF0IGZpbGUgdG8gcXVpY2tseSBhc3Nlc3MgaXRzIGN1cnJlbnQgcm9sZS4gSSB3YW50IHRvIGNoZWNrIGlmIHRoZSBkcml2ZXIgaXMgYWN0dWFsbHkgYmVpbmcgdXRpbGl6ZWQgYW55d2hlcmUgd2l0aGluIHRoZSBzeXN0ZW0uIElzIGl0IGFjdGl2ZWx5IGJlaW5nIGNvbXBpbGVkIGFuZCBsaW5rZWQsIG9yIGlzIGl0IG1lcmVseSBzaXR0aW5nIHRoZXJlLCBwb3RlbnRpYWxseSBvdXRkYXRlZCBvciB1bnVzZWQ/IEJhc2VkIG9uIHRoZSBwcm9qZWN0IEkga25vdyB0aGVyZSYjMzk7cyBhIHBvc3NpYmlsaXR5IGl0IGlzbiYjMzk7dCB1c2VkIGF0IGFsbCBhbnltb3JlLiBUaW1lIHRvIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGdvaW5nIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDsweDAwM2IxODYxJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuYy0xMi1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jOjEzOiNkZWZpbmUgUEhZX0lEX0FTSVhfQVg4ODc3MkFcdFx0MHgwMDNiMTg2MVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmMtMTQtI2RlZmluZSBQSFlfSURfQVNJWF9BWDg4NzcyQ1x0XHQweDAwM2IxODgxXG4tLVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM9NDE9aW1wbCBEcml2ZXIgZm9yIFBoeUFYODg3NzJBIHtcbi0tXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy00My0gICAgY29uc3QgTkFNRTogXHUwMDI2JiMzOTtzdGF0aWMgQ1N0ciA9IGNcJiMzNDtBc2l4IEVsZWN0cm9uaWNzIEFYODg3NzJBXCYjMzQ7O1xuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM6NDQ6ICAgIGNvbnN0IFBIWV9ERVZJQ0VfSUQ6IERldmljZUlkID0gRGV2aWNlSWQ6Om5ld193aXRoX2V4YWN0X21hc2soMHgwMDNiMTg2MSk7XG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy00NS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODY3NAoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU3l6a2FsbGVyIEZ1enppbmcgUG90ZW50aWFsIG9mIGBheDg4Nzk2Yl9ydXN0LnJzYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGF4ODg3OTZiX3J1c3QucnNgLCB3aGljaCBpcyBjbGVhcmx5IGEgUEhZIGRyaXZlci4gVGhlIHF1ZXN0aW9uIG5vdyBpcywgY2FuIFN5emthbGxlciBlZmZlY3RpdmVseSBmdXp6IHRoaXM/IE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0ICpzaG91bGQqIGJlIHBvc3NpYmxlLiBXZSBrbm93IFN5emthbGxlciBoYXMgdGhlIGBzeXpfdXNiX2Nvbm5lY3RgIGNhbGwsIHdoaWNoIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBlbXVsYXRlIFVTQiBkZXZpY2VzLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gQW5kIHRoZW4gdGhlcmUmIzM5O3MgdGhlIGBhc2l4YCBVU0IgZXRoZXJuZXQgZHJpdmVyOyBpZiBpdCB1dGlsaXplcyBwaHlsaWIsIHRoYXQmIzM5O3MgcG90ZW50aWFsbHkgdGhlIGxpbmsgd2UgbmVlZC4gVGhlIGBhc2l4YCBkcml2ZXIgbWlnaHQgYXR0YWNoIHRvIHRoZSBgYXg4ODc5NmJgIFBIWS4gU28sIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjb25maXJtIHdoZXRoZXIgYGFzaXhgIGluZGVlZCBsZXZlcmFnZXMgdGhlIHBoeWxpYiBmcmFtZXdvcmsuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBjb25uZWN0aW9uIGJlZm9yZSBwcm9jZWVkaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfY29ubmVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM9MjYxPXN0YXRpYyBpbnQgYXg4ODE3MmFfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTMxMy1cbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jOjMxNDpcdHByaXYtXHUwMDNlcGh5ZGV2ID0gcGh5X2Nvbm5lY3QoZGV2LVx1MDAzZW5ldCwgcHJpdi1cdTAwM2VwaHlfbmFtZSxcbmRyaXZlcnMvbmV0L3VzYi9heDg4MTcyYS5jLTMxNS1cdFx0XHRcdCAgIFx1MDAyNmF4ODgxNzJhX2FkanVzdF9saW5rLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jPTExNDc9c3RhdGljIGludCBzbXNjOTV4eF9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI4NC1cbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jOjEyODU6XHRyZXQgPSBwaHlfY29ubmVjdF9kaXJlY3QoZGV2LVx1MDAzZW5ldCwgcGRhdGEtXHUwMDNlcGh5ZGV2LFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI4Ni1cdFx0XHRcdCBcdTAwMjZzbXNjOTV4eF9oYW5kbGVfbGlua19jaGFuZ2UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkyNzIKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aGlua2luZzoKCioqRXhhbWluaW5nIE5ldHdvcmsgRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGF4ODgxNzJhLmNgIGFuZCBzcGVjaWZpY2FsbHkgc2VlaW5nIGl0IHVzZSBgcGh5X2Nvbm5lY3RgLiBUaGF0IGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgcXVlc3Rpb246IGRvZXMgdGhlIGBhc2l4YCBkcml2ZXIsIHdoaWNoIGlzIGFub3RoZXIgY29tbW9uIFVTQiBFdGhlcm5ldCBhZGFwdGVyIGRyaXZlciwgYWxzbyB1dGlsaXplIHRoZSBQSFkgbGlicmFyeSAoYHBoeWxpYmApPyBJdCYjMzk7cyBhIGtleSBxdWVzdGlvbiBiZWNhdXNlIGl0IGhlbHBzIG1lIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIGFuZCBwb3RlbnRpYWwgY29kZSByZXVzZSBiZXR3ZWVuIGRpZmZlcmVudCBVU0IgRXRoZXJuZXQgZHJpdmVycy4gSWYgYGFzaXhgICpkb2VzbiYjMzk7dCogdXNlIGBwaHlsaWJgLCB0aGVuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBpdCBoYW5kbGVzIHRoZSBQSFkgY29ubmVjdGlvbiBkaWZmZXJlbnRseSwgYW5kIHdoeSB0aGF0IGRlc2lnbiBjaG9pY2Ugd2FzIG1hZGUuIEFsdGVybmF0aXZlbHksIGlmIGl0ICpkb2VzKiwgdGhlbiBJIGNhbiBleHBlY3QgYSBsZXZlbCBvZiBjb25zaXN0ZW5jeSBpbiBQSFkgbWFuYWdlbWVudCBhY3Jvc3MgdGhlc2UgYWRhcHRlciBmYW1pbGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlfY29ubmVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9hc2l4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTUwNgoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkRpdmluZyBpbnRvIHRoZSBhc2l4X2RldmljZXMuYyBDb2RlKioKCk9rYXksIHRpbWUgdG8gZGlnIGluLiBMZXQmIzM5O3Mgc3RhcnQgYnkgemVyb2luZyBpbiBvbiBgZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyBmb3IgdGhvc2UgQVNJWC1iYXNlZCBVU0IgRXRoZXJuZXQgYWRhcHRlcnMgc2hvdWxkIHJlc2lkZS4gSXQmIzM5O3MgdGhlIGdvLXRvIHBsYWNlIGZvciB1bmRlcnN0YW5kaW5nIHRoZWlyIHF1aXJrcywgaG93IHRoZXkmIzM5O3JlIGluaXRpYWxpemVkLCBhbmQgaG93IHRoZXkgaW50ZXJhY3Qgd2l0aCB0aGUgVVNCIHN1YnN5c3RlbS4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBkZXZpY2Utc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2VzLCBwcm9iYWJseSBzb21lIHZlbmRvci9wcm9kdWN0IElEIGhhbmRsaW5nLCBhbmQgZGVmaW5pdGVseSBhIHNldCBvZiBVU0IgZGVzY3JpcHRvcnMgYmVpbmcgcGFyc2VkLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gd2hhdCB0aGUgZHJpdmVyJiMzOTtzIGRvaW5nIHdpdGggZGlmZmVyZW50IGVuZHBvaW50IHR5cGVzLiBIb3BlZnVsbHksIHRoZSBjb2RlIGlzIHdlbGwtc3RydWN0dXJlZCBhbmQgZG9jdW1lbnRlZCwgbWFraW5nIGl0IGVhc2llciB0byBmb2xsb3cgdGhlIGRhdGEgZmxvdy4gTXkgZ29hbCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSBkcml2ZXImIzM5O3Mga2V5IG9wZXJhdGlvbmFsIHN0ZXBzIGFuZCBpZGVudGlmeSB0aGUgYXJlYXMgdGhhdCB3YXJyYW50IGNsb3NlciBzY3J1dGlueSBvciBwb3RlbnRpYWwgbW9kaWZpY2F0aW9uLCBkZXBlbmRpbmcgb24gdGhlIHRhc2sgYXQgaGFuZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz01OT1zdGF0aWMgdm9pZCBhc2l4X3NldF9uZXRkZXZfZGV2X2FkZHIoc3RydWN0IHVzYm5ldCAqZGV2LCB1OCAqYWRkcilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjktLyogR2V0IHRoZSBQSFkgSWRlbnRpZmllciBmcm9tIHRoZSBQSFlTSUQxIFx1MDAyNiBQSFlTSUQyIE1JSSByZWdpc3RlcnMgKi9cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MDpzdGF0aWMgdTMyIGFzaXhfZ2V0X3BoeWlkKHN0cnVjdCB1c2JuZXQgKmRldilcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MS17XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzI6XHRpbnQgcGh5X3JlZztcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MzpcdHUzMiBwaHlfaWQ7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzQtXHRpbnQgaTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03NS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NjpcdC8qIFBvbGwgZm9yIHRoZSByYXJlIGNhc2UgdGhlIEZXIG9yIHBoeSBpc24mIzM5O3QgcmVhZHkgeWV0LiAgKi9cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03Ny1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIDEwMDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3ODpcdFx0cGh5X3JlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNSUlfUEhZU0lEMSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6Nzk6XHRcdGlmIChwaHlfcmVnIFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgwLVx0XHRcdHJldHVybiAwO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgxOlx0XHRpZiAocGh5X3JlZyAhPSAwIFx1MDAyNlx1MDAyNiBwaHlfcmVnICE9IDB4RkZGRilcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04Mi1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODUtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODY6XHRpZiAocGh5X3JlZyBcdTAwM2M9IDAgfHwgcGh5X3JlZyA9PSAweEZGRkYpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODctXHRcdHJldHVybiAwO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTg4LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjg5Olx0cGh5X2lkID0gKHBoeV9yZWcgXHUwMDI2IDB4ZmZmZikgXHUwMDNjXHUwMDNjIDE2O1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkwLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkxOlx0cGh5X3JlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNSUlfUEhZU0lEMik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTI6XHRpZiAocGh5X3JlZyBcdTAwM2MgMClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05My1cdFx0cmV0dXJuIDA7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTQtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTU6XHRwaHlfaWQgfD0gKHBoeV9yZWcgXHUwMDI2IDB4ZmZmZik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTc6XHRyZXR1cm4gcGh5X2lkO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk4LX1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYXg4ODE3Ml9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xODktXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTkwOnN0YXRpYyB2b2lkIGFzaXhfcGh5X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldiwgdW5zaWduZWQgaW50IHJlc2V0X2JpdHMpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTkxLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTkzLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjE5NDpcdGFzaXhfbWRpb193cml0ZShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0JNQ1IsIHJlc2V0X2JpdHMpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTE5NS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxOTY6XHQvKiBnaXZlIHBoeV9pZCBhIGNoYW5jZSB0byBwcm9jZXNzIHJlc2V0ICovXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTk3LVx0dWRlbGF5KDUwMCk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTIwMC1cdHdoaWxlICh0aW1lb3V0LS0pIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyMDE6XHRcdGlmIChhc2l4X21kaW9fcmVhZChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0JNQ1IpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjAyLVx0XHRcdFx0XHRcdFx0XHUwMDI2IEJNQ1JfUkVTRVQpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTIwNy1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyMDg6XHRuZXRkZXZfZXJyKGRldi1cdTAwM2VuZXQsIFwmIzM0O0JNQ1JfUkVTRVQgdGltZW91dCBvbiBwaHlfaWQgJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjA5Olx0XHQgICBkZXYtXHUwMDNlbWlpLnBoeV9pZCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjEwLX1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MjEyPXN0YXRpYyBpbnQgYXg4ODE3Ml9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI1MC1cdGRldi1cdTAwM2VtaWkubWRpb193cml0ZSA9IGFzaXhfbWRpb193cml0ZTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyNTE6XHRkZXYtXHUwMDNlbWlpLnBoeV9pZF9tYXNrID0gMHgzZjtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNTItXHRkZXYtXHUwMDNlbWlpLnJlZ19udW1fbWFzayA9IDB4MWY7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjUzLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjI1NDpcdGRldi1cdTAwM2VtaWkucGh5X2lkID0gYXNpeF9yZWFkX3BoeV9hZGRyKGRldiwgdHJ1ZSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjU1Olx0aWYgKGRldi1cdTAwM2VtaWkucGh5X2lkIFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjI1NjpcdFx0cmV0dXJuIGRldi1cdTAwM2VtaWkucGh5X2lkO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI1Ny1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjYyLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjI2MzpcdGFzaXhfcGh5X3Jlc2V0KGRldiwgQk1DUl9SRVNFVCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjY0Olx0YXNpeF9tZGlvX3dyaXRlKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNSUlfQURWRVJUSVNFLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI2NS1cdFx0QURWRVJUSVNFX0FMTCB8IEFEVkVSVElTRV9DU01BIHwgQURWRVJUSVNFX1BBVVNFX0NBUCk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTI5ND1zdGF0aWMgdm9pZCBheDg4NzcyX2V0aHRvb2xfZ2V0X3BhdXNlcGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI5OS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzozMDA6XHRwaHlsaW5rX2V0aHRvb2xfZ2V0X3BhdXNlcGFyYW0ocHJpdi1cdTAwM2VwaHlsaW5rLCBwYXVzZSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzAxLX1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MzAzPXN0YXRpYyBpbnQgYXg4ODc3Ml9ldGh0b29sX3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zMDgtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MzA5Olx0cmV0dXJuIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbShwcml2LVx1MDAzZXBoeWxpbmssIHBhdXNlKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zMTAtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0zMTI9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBheDg4NzcyX2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zMjEtXHQuc2V0X2VlcHJvbVx0XHQ9IGFzaXhfc2V0X2VlcHJvbSxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzozMjI6XHQubndheV9yZXNldFx0XHQ9IHBoeV9ldGh0b29sX253YXlfcmVzZXQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MzIzOlx0LmdldF9saW5rX2tzZXR0aW5nc1x0PSBwaHlfZXRodG9vbF9nZXRfbGlua19rc2V0dGluZ3MsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MzI0Olx0LnNldF9saW5rX2tzZXR0aW5nc1x0PSBwaHlfZXRodG9vbF9zZXRfbGlua19rc2V0dGluZ3MsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzI1LVx0LnNlbGZfdGVzdFx0XHQ9IG5ldF9zZWxmdGVzdCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MzMyPXN0YXRpYyBpbnQgYXg4ODc3Ml9yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTM1My1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzozNTQ6XHRwaHlsaW5rX3N0YXJ0KHByaXYtXHUwMDNlcGh5bGluayk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzU1LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0zNjI9c3RhdGljIGludCBheDg4NzcyX2h3X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldiwgaW50IGluX3BtKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zNzMtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6Mzc0Olx0cmV0ID0gYXNpeF93cml0ZV9jbWQoZGV2LCBBWF9DTURfU1dfUEhZX1NFTEVDVCwgcHJpdi1cdTAwM2VlbWJkX3BoeSxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zNzUtXHRcdFx0ICAgICAwLCAwLCBOVUxMLCBpbl9wbSk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTM4MC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzozODE6XHRpZiAocHJpdi1cdTAwM2VlbWJkX3BoeSkge1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTM4Mi1cdFx0cmV0ID0gYXNpeF9zd19yZXNldChkZXYsIEFYX1NXUkVTRVRfSVBQRCwgaW5fcG0pO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00MDYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NDA3Olx0aWYgKGluX3BtIFx1MDAyNlx1MDAyNiAoIWFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDA4LVx0XHRcdFx0XHQgICBNSUlfUEhZU0lEMSkpKXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NDU2PXN0YXRpYyBpbnQgYXg4ODc3MmFfaHdfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgaW5fcG0pXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ1OS1cdHN0cnVjdCBhc2l4X2NvbW1vbl9wcml2YXRlICpwcml2ID0gZGV2LVx1MDAzZWRyaXZlcl9wcml2O1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjQ2MDpcdHUxNiByeF9jdGwsIHBoeTE0aCwgcGh5MTVoLCBwaHkxNmg7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDYxLVx0aW50IHJldDtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDY2LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjQ2NzpcdHJldCA9IGFzaXhfd3JpdGVfY21kKGRldiwgQVhfQ01EX1NXX1BIWV9TRUxFQ1QsIHByaXYtXHUwMDNlZW1iZF9waHkgfFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ2OC1cdFx0XHQgICAgIEFYX1BIWVNFTF9TU0VOLCAwLCAwLCBOVUxMLCBpbl9wbSk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ5Ni1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo0OTc6XHRpZiAoaW5fcG0gXHUwMDI2XHUwMDI2ICghYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00OTgtXHRcdFx0XHRcdCAgIE1JSV9QSFlTSUQxKSkpIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTEyLVx0XHQvKiBDaGVjayBpZiB0aGUgUEhZIHJlZ2lzdGVycyBoYXZlIGRlZmF1bHQgc2V0dGluZ3MgKi9cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MTM6XHRcdHBoeTE0aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE0LVx0XHRcdFx0XHQgICAgIEFYODg3NzJBX1BIWTE0SCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTE1Olx0XHRwaHkxNWggPSBhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxNi1cdFx0XHRcdFx0ICAgICBBWDg4NzcyQV9QSFkxNUgpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUxNzpcdFx0cGh5MTZoID0gYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MTgtXHRcdFx0XHRcdCAgICAgQVg4ODc3MkFfUEhZMTZIKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTIxLVx0XHRcdCAgIFwmIzM0Ozc3MmFfaHdfcmVzZXQ6IE1SMjA9MHgleCBNUjIxPTB4JXggTVIyMj0weCV4XFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUyMjpcdFx0XHQgICBwaHkxNGgsIHBoeTE1aCwgcGh5MTZoKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MjMtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTI0LVx0XHQvKiBSZXN0b3JlIFBIWSByZWdpc3RlcnMgZGVmYXVsdCBzZXR0aW5nIGlmIG5vdCAqL1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUyNTpcdFx0aWYgKHBoeTE0aCAhPSBBWDg4NzcyQV9QSFkxNEhfREVGQVVMVClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MjY6XHRcdFx0YXNpeF9tZGlvX3dyaXRlX25vcG0oZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTI3LVx0XHRcdFx0XHQgICAgIEFYODg3NzJBX1BIWTE0SCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MjgtXHRcdFx0XHRcdCAgICAgQVg4ODc3MkFfUEhZMTRIX0RFRkFVTFQpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUyOTpcdFx0aWYgKHBoeTE1aCAhPSBBWDg4NzcyQV9QSFkxNUhfREVGQVVMVClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MzA6XHRcdFx0YXNpeF9tZGlvX3dyaXRlX25vcG0oZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTMxLVx0XHRcdFx0XHQgICAgIEFYODg3NzJBX1BIWTE1SCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MzItXHRcdFx0XHRcdCAgICAgQVg4ODc3MkFfUEhZMTVIX0RFRkFVTFQpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUzMzpcdFx0aWYgKHBoeTE2aCAhPSBBWDg4NzcyQV9QSFkxNkhfREVGQVVMVClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MzQ6XHRcdFx0YXNpeF9tZGlvX3dyaXRlX25vcG0oZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTM1LVx0XHRcdFx0XHQgICAgIEFYODg3NzJBX1BIWTE2SCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NTgzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgYXg4ODc3Ml9uZXRkZXZfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01OTEtXHQubmRvX3ZhbGlkYXRlX2FkZHJcdD0gZXRoX3ZhbGlkYXRlX2FkZHIsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTkyOlx0Lm5kb19ldGhfaW9jdGxcdFx0PSBwaHlfZG9faW9jdGxfcnVubmluZyxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01OTMtXHQubmRvX3NldF9yeF9tb2RlICAgICAgICA9IGFzaXhfc2V0X211bHRpY2FzdCxcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NTk2PXN0YXRpYyB2b2lkIGF4ODg3NzJfc3VzcGVuZChzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTYwMi1cdFx0cnRubF9sb2NrKCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NjAzOlx0XHRwaHlsaW5rX3N1c3BlbmQocHJpdi1cdTAwM2VwaHlsaW5rLCBmYWxzZSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjA0LVx0XHRydG5sX3VubG9jaygpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02MjItICpcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2MjM6ICogLSBUaGUgTUFDIGRyaXZlciBtdXN0IGhvbGQgUlROTCB3aGVuIGNhbGxpbmcgcGh5bGluayBpbnRlcmZhY2VzIHN1Y2ggYXNcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2MjQ6ICogICBwaHlsaW5rX3N1c3BlbmQoKS9yZXN1bWUoKS4gVGhvc2UgY2FsbHMgd2lsbCBhbHNvIHBlcmZvcm0gTURJTyBJL08uXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjI1LSAqXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTY0Mj1zdGF0aWMgdm9pZCBheDg4NzcyX3Jlc3VtZShzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY1Mi1cdFx0cnRubF9sb2NrKCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NjUzOlx0XHRwaHlsaW5rX3Jlc3VtZShwcml2LVx1MDAzZXBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY1NC1cdFx0cnRubF91bmxvY2soKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NjY5PXN0YXRpYyBpbnQgYXg4ODc3Ml9pbml0X21kaW8oc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02ODEtXHRwcml2LVx1MDAzZW1kaW8tXHUwMDNlbmFtZSA9IFwmIzM0O0FzaXggTURJTyBCdXNcJiMzNDs7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NjgyOlx0cHJpdi1cdTAwM2VtZGlvLVx1MDAzZXBoeV9tYXNrID0gfihCSVQocHJpdi1cdTAwM2VwaHlfYWRkciBcdTAwMjYgMHgxZikgfCBCSVQoQVhfRU1CRF9QSFlfQUREUikpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY4My1cdC8qIG1paSBidXMgbmFtZSBpcyB1c2ItXHUwMDNjdXNiIGJ1cyBudW1iZXJcdTAwM2UtXHUwMDNjdXNiIGRldmljZSBudW1iZXJcdTAwM2UgKi9cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9Njk3PXN0YXRpYyB2b2lkIGF4ODg3NzJfbWRpb191bnJlZ2lzdGVyKHN0cnVjdCBhc2l4X2NvbW1vbl9wcml2YXRlICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MDItXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzAzOnN0YXRpYyBpbnQgYXg4ODc3Ml9pbml0X3BoeShzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzA0LXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzA3LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjcwODpcdHByaXYtXHUwMDNlcGh5ZGV2ID0gbWRpb2J1c19nZXRfcGh5KHByaXYtXHUwMDNlbWRpbywgcHJpdi1cdTAwM2VwaHlfYWRkcik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzA5Olx0aWYgKCFwcml2LVx1MDAzZXBoeWRldikge1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcxMC1cdFx0bmV0ZGV2X2VycihkZXYtXHUwMDNlbmV0LCBcJiMzNDtDb3VsZCBub3QgZmluZCBQSFlcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MTMtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzE0Olx0cmV0ID0gcGh5bGlua19jb25uZWN0X3BoeShwcml2LVx1MDAzZXBoeWxpbmssIHByaXYtXHUwMDNlcGh5ZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MTUtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcxOS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MjA6XHRwaHlfc3VzcGVuZChwcml2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzIxOlx0cHJpdi1cdTAwM2VwaHlkZXYtXHUwMDNlbWFjX21hbmFnZWRfcG0gPSB0cnVlO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcyMi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MjM6XHRwaHlfYXR0YWNoZWRfaW5mbyhwcml2LVx1MDAzZXBoeWRldik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzI0LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjcyNTpcdGlmIChwcml2LVx1MDAzZWVtYmRfcGh5KVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcyNi1cdFx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTczMS1cdCAqL1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjczMjpcdHByaXYtXHUwMDNlcGh5ZGV2X2ludCA9IG1kaW9idXNfZ2V0X3BoeShwcml2LVx1MDAzZW1kaW8sIEFYX0VNQkRfUEhZX0FERFIpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjczMzpcdGlmICghcHJpdi1cdTAwM2VwaHlkZXZfaW50KSB7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzM0LVx0XHRydG5sX2xvY2soKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MzU6XHRcdHBoeWxpbmtfZGlzY29ubmVjdF9waHkocHJpdi1cdTAwM2VwaHlsaW5rKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MzYtXHRcdHJ0bmxfdW5sb2NrKCk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc0MC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NDE6XHRwcml2LVx1MDAzZXBoeWRldl9pbnQtXHUwMDNlbWFjX21hbmFnZWRfcG0gPSB0cnVlO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc0MjpcdHBoeV9zdXNwZW5kKHByaXYtXHUwMDNlcGh5ZGV2X2ludCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzQzLVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03NDYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzQ3OnN0YXRpYyB2b2lkIGF4ODg3NzJfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgdW5zaWduZWQgaW50IG1vZGUsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzQ4Olx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc0OS17XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc1Mi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NTM6c3RhdGljIHZvaWQgYXg4ODc3Ml9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc1NDpcdFx0XHRcdCB1bnNpZ25lZCBpbnQgbW9kZSwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03NTUte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03NjEtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzYyOnN0YXRpYyB2b2lkIGF4ODg3NzJfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzYzOlx0XHRcdCAgICAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc2NDpcdFx0XHQgICAgICAgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzY1LVx0XHRcdCAgICAgICBpbnQgc3BlZWQsIGludCBkdXBsZXgsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc5Mi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3OTM6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgYXg4ODc3Ml9waHlsaW5rX21hY19vcHMgPSB7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzk0LVx0Lm1hY19jb25maWcgPSBheDg4NzcyX21hY19jb25maWcsXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc5OC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3OTk6c3RhdGljIGludCBheDg4NzcyX3BoeWxpbmtfc2V0dXAoc3RydWN0IHVzYm5ldCAqZGV2KVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgwMC17XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODAxLVx0c3RydWN0IGFzaXhfY29tbW9uX3ByaXZhdGUgKnByaXYgPSBkZXYtXHUwMDNlZHJpdmVyX3ByaXY7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODAyOlx0cGh5X2ludGVyZmFjZV90IHBoeV9pZl9tb2RlO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwMzpcdHN0cnVjdCBwaHlsaW5rICpwaHlsaW5rO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgwNC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MDU6XHRwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLmRldiA9IFx1MDAyNmRldi1cdTAwM2VuZXQtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwNjpcdHByaXYtXHUwMDNlcGh5bGlua19jb25maWcudHlwZSA9IFBIWUxJTktfTkVUREVWO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwNzpcdHByaXYtXHUwMDNlcGh5bGlua19jb25maWcubWFjX2NhcGFiaWxpdGllcyA9IE1BQ19TWU1fUEFVU0UgfCBNQUNfQVNZTV9QQVVTRSB8XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODA4LVx0XHRNQUNfMTAgfCBNQUNfMTAwO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTAtXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgxMTpcdFx0ICBwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTItXHRfX3NldF9iaXQoUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUksXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODEzOlx0XHQgIHByaXYtXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgxNC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MTU6XHRpZiAocHJpdi1cdTAwM2VlbWJkX3BoeSlcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MTY6XHRcdHBoeV9pZl9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX0lOVEVSTkFMO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgxNy1cdGVsc2VcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MTg6XHRcdHBoeV9pZl9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODE5LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgyMDpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXYtXHUwMDNlbmV0LVx1MDAzZWRldi5md25vZGUsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODIxOlx0XHRcdFx0IHBoeV9pZl9tb2RlLCBcdTAwMjZheDg4NzcyX3BoeWxpbmtfbWFjX29wcyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODIyOlx0aWYgKElTX0VSUihwaHlsaW5rKSlcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjM6XHRcdHJldHVybiBQVFJfRVJSKHBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgyNC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjU6XHRwcml2LVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgyNi1cdHJldHVybiAwO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz04Mjk9c3RhdGljIGludCBheDg4NzcyX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODc3LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjg3ODpcdHJldCA9IGFzaXhfcmVhZF9waHlfYWRkcihkZXYsIHRydWUpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTg3OS1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTg4MS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4ODI6XHRwcml2LVx1MDAzZXBoeV9hZGRyID0gcmV0O1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjg4MzpcdHByaXYtXHUwMDNlZW1iZF9waHkgPSAoKHByaXYtXHUwMDNlcGh5X2FkZHIgXHUwMDI2IDB4MWYpID09IEFYX0VNQkRfUEhZX0FERFIpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTg4NC1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTEzLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkxNDpcdHByaXYtXHUwMDNlcHJlc3ZkX3BoeV9ibWNyID0gMDtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5MTU6XHRwcml2LVx1MDAzZXByZXN2ZF9waHlfYWR2ZXJ0aXNlID0gMDtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MTYtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkyMC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5MjE6XHRyZXQgPSBheDg4NzcyX3BoeWxpbmtfc2V0dXAoZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MjItXHRpZiAocmV0KVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkyMzpcdFx0Z290byBwaHlsaW5rX2VycjtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MjQtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTI1Olx0cmV0ID0gYXg4ODc3Ml9pbml0X3BoeShkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkyNi1cdGlmIChyZXQpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTI3Olx0XHRnb3RvIGluaXRwaHlfZXJyO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkyOC1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTMxLVx0ICogdGhhdCBjb3VsZCBkZWFkbG9jayAoYXV0b3Jlc3VtZSB1bmRlciBSVE5MIHdoaWxlIFVTQiBQTSBsb2NrXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTMyOlx0ICogaXMgaGVsZCwgcGh5bGluay9NRElPIHdhbnRzIFJUTkwpLlxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkzMy1cdCAqL1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MzctXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTM4OmluaXRwaHlfZXJyOlxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkzOTpcdHBoeWxpbmtfZGVzdHJveShwcml2LVx1MDAzZXBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk0MDpwaHlsaW5rX2VycjpcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NDEtXHRheDg4NzcyX21kaW9fdW5yZWdpc3Rlcihwcml2KTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9OTQ2PXN0YXRpYyBpbnQgYXg4ODc3Ml9zdG9wKHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTQ5LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk1MDpcdHBoeWxpbmtfc3RvcChwcml2LVx1MDAzZXBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk1MS1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9OTU1PXN0YXRpYyB2b2lkIGF4ODg3NzJfdW5iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk1OS1cdHJ0bmxfbG9jaygpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk2MDpcdHBoeWxpbmtfZGlzY29ubmVjdF9waHkocHJpdi1cdTAwM2VwaHlsaW5rKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NjEtXHRydG5sX3VubG9jaygpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk2MjpcdHBoeWxpbmtfZGVzdHJveShwcml2LVx1MDAzZXBoeWxpbmspO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk2My1cdGF4ODg3NzJfbWRpb191bnJlZ2lzdGVyKHByaXYpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz05NzU9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBheDg4MTc4X2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05ODktXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTkwOnN0YXRpYyBpbnQgbWFydmVsbF9waHlfaW5pdChzdHJ1Y3QgdXNibmV0ICpkZXYpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTkxLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk0LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk5NTpcdG5ldGRldl9kYmcoZGV2LVx1MDAzZW5ldCwgXCYjMzQ7bWFydmVsbF9waHlfaW5pdCgpXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTYtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTk3Olx0cmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9NQVJWRUxMX1NUQVRVUyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk4LVx0bmV0ZGV2X2RiZyhkZXYtXHUwMDNlbmV0LCBcJiMzNDtNSUlfTUFSVkVMTF9TVEFUVVMgPSAweCUwNHhcXG5cJiMzNDssIHJlZyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk5LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMDA6XHRhc2l4X21kaW9fd3JpdGUoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9NQVJWRUxMX0NUUkwsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAwMS1cdFx0XHRNQVJWRUxMX0NUUkxfUlhERUxBWSB8IE1BUlZFTExfQ1RSTF9UWERFTEFZKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAwMy1cdGlmIChkYXRhLVx1MDAzZWxlZG1vZGUpIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDA0Olx0XHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDA1LVx0XHRcdE1JSV9NQVJWRUxMX0xFRF9DVFJMKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAwOS1cdFx0cmVnIHw9ICgxICYjNDM7IDB4MDEwMCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAxMDpcdFx0YXNpeF9tZGlvX3dyaXRlKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMTEtXHRcdFx0TUlJX01BUlZFTExfTEVEX0NUUkwsIHJlZyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAxMi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDEzOlx0XHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDE0LVx0XHRcdE1JSV9NQVJWRUxMX0xFRF9DVFJMKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyMC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDIxOnN0YXRpYyBpbnQgcnRsODIxMWNsX3BoeV9pbml0KHN0cnVjdCB1c2JuZXQgKmRldilcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDIyLXtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyNC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDI1Olx0bmV0ZGV2X2RiZyhkZXYtXHUwMDNlbmV0LCBcJiMzNDtydGw4MjExY2xfcGh5X2luaXQoKVxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyNi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDI3Olx0YXNpeF9tZGlvX3dyaXRlIChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgMHgxZiwgMHgwMDA1KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDI4Olx0YXNpeF9tZGlvX3dyaXRlIChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgMHgwYywgMCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAyOTpcdGFzaXhfbWRpb193cml0ZSAoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIDB4MDEsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzMDpcdFx0YXNpeF9tZGlvX3JlYWQgKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCAweDAxKSB8IDB4MDA4MCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzMTpcdGFzaXhfbWRpb193cml0ZSAoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDApO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMzItXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAzMy1cdGlmIChkYXRhLVx1MDAzZWxlZG1vZGUgPT0gMTIpIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDM0Olx0XHRhc2l4X21kaW9fd3JpdGUgKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCAweDFmLCAweDAwMDIpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMzU6XHRcdGFzaXhfbWRpb193cml0ZSAoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIDB4MWEsIDB4MDBjYik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzNjpcdFx0YXNpeF9tZGlvX3dyaXRlIChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgMHgxZiwgMCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAzNy1cdH1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTA0Mj1zdGF0aWMgaW50IG1hcnZlbGxfbGVkX3N0YXR1cyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHUxNiBzcGVlZClcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDQzLXtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDQ0Olx0dTE2IHJlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNQVJWRUxMX0xFRF9NQU5VQUwpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwNDUtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwNjItXHRuZXRkZXZfZGJnKGRldi1cdTAwM2VuZXQsIFwmIzM0O21hcnZlbGxfbGVkX3N0YXR1cygpIHdyaXRpbmcgMHglMDR4XFxuXCYjMzQ7LCByZWcpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwNjM6XHRhc2l4X21kaW9fd3JpdGUoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1BUlZFTExfTEVEX01BTlVBTCwgcmVnKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDY0LVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMDY4PXN0YXRpYyBpbnQgYXg4ODE3OF9yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwNzQtXHRpbnQgZ3BpbzAgPSAwO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwNzU6XHR1MzIgcGh5aWQ7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTA3Ni1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTA5Ni1cdGlmIChlZXByb20gPT0gY3B1X3RvX2xlMTYoMHhmZmZmKSkge1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwOTc6XHRcdGRhdGEtXHUwMDNlcGh5bW9kZSA9IFBIWV9NT0RFX01BUlZFTEw7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTA5OC1cdFx0ZGF0YS1cdTAwM2VsZWRtb2RlID0gMDtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTEwMC1cdH0gZWxzZSB7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTEwMTpcdFx0ZGF0YS1cdTAwM2VwaHltb2RlID0gbGUxNl90b19jcHUoZWVwcm9tKSBcdTAwMjYgMHg3RjtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTAyLVx0XHRkYXRhLVx1MDAzZWxlZG1vZGUgPSBsZTE2X3RvX2NwdShlZXByb20pIFx1MDAzZVx1MDAzZSA4O1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTA0LVx0fVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjExMDU6XHRuZXRkZXZfZGJnKGRldi1cdTAwM2VuZXQsIFwmIzM0O0dQSU8wOiAlZCwgUGh5TW9kZTogJWRcXG5cJiMzNDssIGdwaW8wLCBkYXRhLVx1MDAzZXBoeW1vZGUpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExMDYtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExMTQtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjExMTU6XHRcdG5ldGRldl9kYmcoZGV2LVx1MDAzZW5ldCwgXCYjMzQ7Z3BpbyBwaHltb2RlID09IDEgcGF0aFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTExNi1cdFx0YXNpeF93cml0ZV9ncGlvKGRldiwgQVhfR1BJT19HUE8xRU4sIDMwLCAwKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTEyMC1cdC8qIFJlYWQgUEhZSUQgcmVnaXN0ZXIgKkFGVEVSKiBwb3dlcmluZyB1cCBQSFkgKi9cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTIxOlx0cGh5aWQgPSBhc2l4X2dldF9waHlpZChkZXYpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjExMjI6XHRuZXRkZXZfZGJnKGRldi1cdTAwM2VuZXQsIFwmIzM0O1BIWUlEPTB4JTA4eFxcblwmIzM0OywgcGh5aWQpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExMjMtXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExMzQtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTEzNTpcdGlmIChkYXRhLVx1MDAzZXBoeW1vZGUgPT0gUEhZX01PREVfTUFSVkVMTCkge1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjExMzY6XHRcdG1hcnZlbGxfcGh5X2luaXQoZGV2KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTM3LVx0XHRtc2xlZXAoNjApO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjExMzg6XHR9IGVsc2UgaWYgKGRhdGEtXHUwMDNlcGh5bW9kZSA9PSBQSFlfTU9ERV9SVEw4MjExQ0wpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTEzOTpcdFx0cnRsODIxMWNsX3BoeV9pbml0KGRldik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTE0MC1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTQxOlx0YXNpeF9waHlfcmVzZXQoZGV2LCBCTUNSX1JFU0VUIHwgQk1DUl9BTkVOQUJMRSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTE0MjpcdGFzaXhfbWRpb193cml0ZShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0FEVkVSVElTRSxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTQzLVx0XHRcdEFEVkVSVElTRV9BTEwgfCBBRFZFUlRJU0VfQ1NNQSB8IEFEVkVSVElTRV9QQVVTRV9DQVApO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjExNDQ6XHRhc2l4X21kaW9fd3JpdGUoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9DVFJMMTAwMCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTQ1LVx0XHRcdEFEVkVSVElTRV8xMDAwRlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTExNjQ9c3RhdGljIGludCBheDg4MTc4X2xpbmtfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTk2LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjExOTc6XHRpZiAoZGF0YS1cdTAwM2VwaHltb2RlID09IFBIWV9NT0RFX01BUlZFTEwgXHUwMDI2XHUwMDI2IGRhdGEtXHUwMDNlbGVkbW9kZSlcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTk4LVx0XHRtYXJ2ZWxsX2xlZF9zdGF0dXMoZGV2LCBzcGVlZCk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTEyNzE9c3RhdGljIGludCBheDg4MTc4X2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTI5Mi1cdGRldi1cdTAwM2VtaWkubWRpb193cml0ZSA9IGFzaXhfbWRpb193cml0ZTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMjkzOlx0ZGV2LVx1MDAzZW1paS5waHlfaWRfbWFzayA9IDB4MWY7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTI5NC1cdGRldi1cdTAwM2VtaWkucmVnX251bV9tYXNrID0gMHhmZjtcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTI5Ni1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMjk3Olx0ZGV2LVx1MDAzZW1paS5waHlfaWQgPSBhc2l4X3JlYWRfcGh5X2FkZHIoZGV2LCB0cnVlKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMjk4Olx0aWYgKGRldi1cdTAwM2VtaWkucGh5X2lkIFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEyOTk6XHRcdHJldHVybiBkZXYtXHUwMDNlbWlpLnBoeV9pZDtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMzAwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDQ1NAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDQxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgQVg4ODc3MiBEcml2ZXIgYW5kIFN5emthbGxlciBUZXN0aW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIHNlZSwgYGF4ODg3NzJfaW5pdF9waHlgIHJlbGllcyBvbiBwaHlsaWIsIHNwZWNpZmljYWxseSB0aHJvdWdoIGBtZGlvYnVzX2dldF9waHlgIGFuZCBgcGh5bGlua19jb25uZWN0X3BoeWAuIFRoZW4sIGBheDg4NzcyX2JpbmRgIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGluaXRpYWxpemVzIHRoZSBQSFkgdmlhIGBheDg4NzcyX2luaXRfcGh5YCBhbmQgYmluZHMgd2l0aCB0aGUgYGF4ODg3NzJgIGRyaXZlci4gU28gZmFyLCBzbyBnb29kLiBOb3csIHRoZSBpbnRlcmVzdGluZyBwYXJ0IGlzIHRoZSBQSFkgZHJpdmVyIGl0c2VsZiwgYGF4ODg3OTZiX3J1c3QucnNgLCB3aGljaCByZWdpc3RlcnMgZm9yIGBQaHlBWDg4NzcyQWAsIGBQaHlBWDg4NzcyQ2AsIGFuZCBgUGh5QVg4ODc5NkJgLiBBbmQsIGxldCYjMzk7cyBub3QgZm9yZ2V0IGBheDg4NzcyYV9od19yZXNldGAgbGl2ZXMgaW4gYGFzaXhfZGV2aWNlcy5jYC4KClJpZ2h0LCB0aGlzIGxvb2tzIGxpa2UgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIFN5emthbGxlciBzaG91bGQgYmUgYWJsZSB0byB0cmlnZ2VyIHRoaXMgc2V0dXAgYnkgZW11bGF0aW5nIGFuIEFTSVggVVNCIGRldmljZS4gVGhlIHF1ZXN0aW9uIGlzLCBjYW4gU3l6a2FsbGVyIHRlc3QgUnVzdCBjb2RlPyBZZXMsIGl0IGNhbiwgYXMgbG9uZyBhcyBSdXN0IHN1cHBvcnQgaXMgZW5hYmxlZCBpbiB0aGUga2VybmVsIGNvbmZpZy4KClNvLCBob3cgZG8gd2UgbWFrZSBzdXJlIHdlIGhhdmUgdGhlIFJ1c3QgUEhZIGRyaXZlciBlbmFibGVkPyBXZSBuZWVkIHRvIGdpdmUgU3l6a2FsbGVyIHRoZSBwcm9wZXIgYEVuYWJsZUNvbmZpZ3NgLiBJdCBsb29rcyBsaWtlIGBBWDg4Nzk2Ql9SVVNUX1BIWWAgYW5kIGBSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlNgIHdpbGwgYmUgY3J1Y2lhbC4gV2FpdCwgYEFYODg3OTZCX1JVU1RfUEhZYCBkZXBlbmRzIG9uIGBSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlNgIGFuZCBgQVg4ODc5NkJfUEhZYCBhbmQgYFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU2AgZGVwZW5kcyBvbiBgUlVTVGAgYW5kIGBQSFlMSUI9eWAuCgpUaHVzLCBteSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBuZWVkcyB0byBpbmNsdWRlIGBBWDg4Nzk2Ql9SVVNUX1BIWWAsIGBSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlNgLCBhbmQgYFJVU1RgLiBBbmQsIGBSVVNUYCBpcyBsaWtlbHkgYSBtYWpvciBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IFN5emthbGxlciB3aWxsIGhhdmUgaXQgZW5hYmxlZCBieSBkZWZhdWx0LCBvciB0aGF0IHdlIGNhbiBleHBsaWNpdGx5IHJlcXVlc3QgaXQuIFdlIG5lZWQgdG8gY29uZmlybSB0aGF0IGBSVVNUYCBpcyBpbmRlZWQgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiBuYW1lLCBidXQgdGhpcyBsb29rcyBwcm9taXNpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBSVVNUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0RvY3VtZW50YXRpb24vcnVzdC9nZW5lcmFsLWluZm9ybWF0aW9uLnJzdD0xNTY9bnVtZXJpY2FsIGNvbXBhcmlzb25zLCBvbmUgbWF5IGRlZmluZSBhIG5ldyBLY29uZmlnIHN5bWJvbDpcbi0tXG5Eb2N1bWVudGF0aW9uL3J1c3QvZ2VuZXJhbC1pbmZvcm1hdGlvbi5yc3QtMTU5LVxuRG9jdW1lbnRhdGlvbi9ydXN0L2dlbmVyYWwtaW5mb3JtYXRpb24ucnN0OjE2MDpcdGNvbmZpZyBSVVNUQ19IQVNfU1BBTl9GSUxFXG5Eb2N1bWVudGF0aW9uL3J1c3QvZ2VuZXJhbC1pbmZvcm1hdGlvbi5yc3QtMTYxLVx0XHRkZWZfYm9vbCBSVVNUQ19WRVJTSU9OIFx1MDAzZT0gMTA4ODAwXG4tLVxuYXJjaC9hcm02NC9LY29uZmlnPTI9Y29uZmlnIEFSTTY0XG4tLVxuYXJjaC9hcm02NC9LY29uZmlnLTI2NC1cbmFyY2gvYXJtNjQvS2NvbmZpZzoyNjU6Y29uZmlnIFJVU1RDX1NVUFBPUlRTX0FSTTY0XG5hcmNoL2FybTY0L0tjb25maWctMjY2LVx0ZGVmX2Jvb2wgeVxuLS1cbmFyY2gvbG9vbmdhcmNoL0tjb25maWc9MzQyPWNvbmZpZyBDQ19IQVNfQU5OT1RBVEVfVEFCTEVKVU1QXG4tLVxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy0zNDQtXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnOjM0NTpjb25maWcgUlVTVENfSEFTX0FOTk9UQVRFX1RBQkxFSlVNUFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy0zNDYtXHRkZXBlbmRzIG9uIFJVU1Rcbi0tXG5hcmNoL3Jpc2N2L0tjb25maWc9MTM9Y29uZmlnIFJJU0NWXG4tLVxuYXJjaC9yaXNjdi9LY29uZmlnLTIzNC1cbmFyY2gvcmlzY3YvS2NvbmZpZzoyMzU6Y29uZmlnIFJVU1RDX1NVUFBPUlRTX1JJU0NWXG5hcmNoL3Jpc2N2L0tjb25maWctMjM2LVx0ZGVmX2Jvb2wgeVxuLS1cbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZz0yOD1jb25maWcgRldfTE9BREVSX0RFQlVHXG4tLVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnLTM3LVxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjM4OmNvbmZpZyBSVVNUX0ZXX0xPQURFUl9BQlNUUkFDVElPTlNcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZy0zOS1cdGJvb2wgXCYjMzQ7UnVzdCBGaXJtd2FyZSBMb2FkZXIgYWJzdHJhY3Rpb25zXCYjMzQ7XG4tLVxuZHJpdmVycy9md2N0bC9LY29uZmlnPTExPWlmIEZXQ1RMXG5kcml2ZXJzL2Z3Y3RsL0tjb25maWctMTItXG5kcml2ZXJzL2Z3Y3RsL0tjb25maWc6MTM6Y29uZmlnIFJVU1RfRldDVExfQUJTVFJBQ1RJT05TXG5kcml2ZXJzL2Z3Y3RsL0tjb25maWctMTQtXHRib29sIFwmIzM0O1J1c3QgZndjdGwgYWJzdHJhY3Rpb25zXCYjMzQ7XG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MjEzPWNvbmZpZyBEUk1fR1BVVk1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMjAtXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZzoyMjE6Y29uZmlnIFJVU1RfRFJNX0dQVVZNXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMjItXHRib29sXG4tLVxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MjY5PWNvbmZpZyBEUk1fR0VNX1NITUVNX0hFTFBFUlxuLS1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI3Ny1cbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI3ODpjb25maWcgUlVTVF9EUk1fR0VNX1NITUVNX0hFTFBFUlxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjc5LVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnPTU2PWNvbmZpZyBGSVhFRF9QSFlcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy02NC1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjY1OmNvbmZpZyBSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlNcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTY2LSAgICAgICAgYm9vbCBcJiMzNDtSdXN0IFBIWUxJQiBhYnN0cmFjdGlvbnMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvcHdtL0tjb25maWc9ODQzPWNvbmZpZyBQV01fWElMSU5YXG4tLVxuZHJpdmVycy9wd20vS2NvbmZpZy04NTYtXG5kcml2ZXJzL3B3bS9LY29uZmlnOjg1NzogY29uZmlnIFJVU1RfUFdNX0FCU1RSQUNUSU9OU1xuZHJpdmVycy9wd20vS2NvbmZpZy04NTgtXHRib29sXG4tLVxuZHJpdmVycy90dHkvc2VyZGV2L0tjb25maWc9NT1tZW51Y29uZmlnIFNFUklBTF9ERVZfQlVTXG4tLVxuZHJpdmVycy90dHkvc2VyZGV2L0tjb25maWctMTEtXG5kcml2ZXJzL3R0eS9zZXJkZXYvS2NvbmZpZzoxMjpjb25maWcgUlVTVF9TRVJJQUxfREVWX0JVU19BQlNUUkFDVElPTlNcbmRyaXZlcnMvdHR5L3NlcmRldi9LY29uZmlnLTEzLVx0Ym9vbCBcJiMzNDtSdXN0IFNlcmlhbCBkZXZpY2UgYnVzIGFic3RyYWN0aW9uc1wmIzM0O1xuLS1cbmluaXQvS2NvbmZpZz01OD1jb25maWcgTExEX1ZFUlNJT05cbi0tXG5pbml0L0tjb25maWctNjItXG5pbml0L0tjb25maWc6NjM6Y29uZmlnIFJVU1RDX1ZFUlNJT05cbmluaXQvS2NvbmZpZy02NC1cdGludFxuLS1cbmluaXQvS2NvbmZpZy02OS1cbmluaXQvS2NvbmZpZzo3MDpjb25maWcgUlVTVF9JU19BVkFJTEFCTEVcbmluaXQvS2NvbmZpZy03MS1cdGRlZl9ib29sICQoc3VjY2VzcywkKHNyY3RyZWUpL3NjcmlwdHMvcnVzdF9pc19hdmFpbGFibGUuc2gpXG4tLVxuaW5pdC9LY29uZmlnLTgwLVxuaW5pdC9LY29uZmlnOjgxOmNvbmZpZyBSVVNUQ19MTFZNX1ZFUlNJT05cbmluaXQvS2NvbmZpZy04Mi1cdGludFxuLS1cbmluaXQvS2NvbmZpZy04NC1cbmluaXQvS2NvbmZpZzo4NTpjb25maWcgUlVTVENfTExWTV9NQUpPUl9WRVJTSU9OXG5pbml0L0tjb25maWctODYtXHRpbnRcbi0tXG5pbml0L0tjb25maWctODgtXG5pbml0L0tjb25maWc6ODk6Y29uZmlnIFJVU1RDX0NMQU5HX0xMVk1fQ09NUEFUSUJMRVxuaW5pdC9LY29uZmlnLTkwLVx0Ym9vbFxuLS1cbmluaXQvS2NvbmZpZz0xNzY9Y29uZmlnIExEX0NBTl9VU0VfS0VFUF9JTl9PVkVSTEFZXG4tLVxuaW5pdC9LY29uZmlnLTE4MC1cbmluaXQvS2NvbmZpZzoxODE6Y29uZmlnIFJVU1RDX0hBU19TUEFOX0ZJTEVcbmluaXQvS2NvbmZpZy0xODItXHRkZWZfYm9vbCBSVVNUQ19WRVJTSU9OIFx1MDAzZT0gMTA4ODAwXG5pbml0L0tjb25maWctMTgzLVxuaW5pdC9LY29uZmlnOjE4NDpjb25maWcgUlVTVENfSEFTX1VOTkVDRVNTQVJZX1RSQU5TTVVURVNcbmluaXQvS2NvbmZpZy0xODUtXHRkZWZfYm9vbCBSVVNUQ19WRVJTSU9OIFx1MDAzZT0gMTA4ODAwXG5pbml0L0tjb25maWctMTg2LVxuaW5pdC9LY29uZmlnOjE4Nzpjb25maWcgUlVTVENfSEFTX0ZJTEVfV0lUSF9OVUxcbmluaXQvS2NvbmZpZy0xODgtXHRkZWZfYm9vbCBSVVNUQ19WRVJTSU9OIFx1MDAzZT0gMTA4OTAwXG5pbml0L0tjb25maWctMTg5LVxuaW5pdC9LY29uZmlnOjE5MDpjb25maWcgUlVTVENfSEFTX0ZJTEVfQVNfQ19TVFJcbmluaXQvS2NvbmZpZy0xOTEtXHRkZWZfYm9vbCBSVVNUQ19WRVJTSU9OIFx1MDAzZT0gMTA5MTAwXG5pbml0L0tjb25maWctMTkyLVxuaW5pdC9LY29uZmlnOjE5Mzpjb25maWcgUlVTVENfSEFTX1NVU1BJQ0lPVVNfUlVOVElNRV9TWU1CT0xfREVGSU5JVElPTlNcbmluaXQvS2NvbmZpZy0xOTQtXHRkZWZfYm9vbCBSVVNUQ19WRVJTSU9OIFx1MDAzZT0gMTA5ODAwXG4tLVxuaW5pdC9LY29uZmlnPTIyMDU9Y29uZmlnIFBST0ZJTElOR1xuLS1cbmluaXQvS2NvbmZpZy0yMjEwLVxuaW5pdC9LY29uZmlnOjIyMTE6Y29uZmlnIFJVU1RcbmluaXQvS2NvbmZpZy0yMjEyLVx0Ym9vbCBcJiMzNDtSdXN0IHN1cHBvcnRcJiMzNDtcbi0tXG5pbml0L0tjb25maWc9MjIzNz1zb3VyY2UgXCYjMzQ7cnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0XCYjMzQ7XG5pbml0L0tjb25maWctMjIzOC1cbmluaXQvS2NvbmZpZzoyMjM5OmNvbmZpZyBSVVNUQ19WRVJTSU9OX1RFWFRcbmluaXQvS2NvbmZpZy0yMjQwLVx0c3RyaW5nXG4tLVxubGliL0tjb25maWcuZGVidWc9MzU2NT1tZW51IFwmIzM0O1J1c3QgaGFja2luZ1wmIzM0O1xubGliL0tjb25maWcuZGVidWctMzU2Ni1cbmxpYi9LY29uZmlnLmRlYnVnOjM1Njc6Y29uZmlnIFJVU1RfREVCVUdfQVNTRVJUSU9OU1xubGliL0tjb25maWcuZGVidWctMzU2OC1cdGJvb2wgXCYjMzQ7RGVidWcgYXNzZXJ0aW9uc1wmIzM0O1xuLS1cbmxpYi9LY29uZmlnLmRlYnVnLTM1ODEtXG5saWIvS2NvbmZpZy5kZWJ1ZzozNTgyOmNvbmZpZyBSVVNUX09WRVJGTE9XX0NIRUNLU1xubGliL0tjb25maWcuZGVidWctMzU4My1cdGJvb2wgXCYjMzQ7T3ZlcmZsb3cgY2hlY2tzXCYjMzQ7XG4tLVxubGliL0tjb25maWcuZGVidWctMzU5Ni1cbmxpYi9LY29uZmlnLmRlYnVnOjM1OTc6Y29uZmlnIFJVU1RfQlVJTERfQVNTRVJUX0FMTE9XXG5saWIvS2NvbmZpZy5kZWJ1Zy0zNTk4LVx0Ym9vbCBcJiMzNDtBbGxvdyB1bm9wdGltaXplZCBidWlsZC10aW1lIGFzc2VydGlvbnNcJiMzNDtcbi0tXG5saWIvS2NvbmZpZy5kZWJ1Zy0zNjEyLVxubGliL0tjb25maWcuZGVidWc6MzYxMzpjb25maWcgUlVTVF9LRVJORUxfRE9DVEVTVFNcbmxpYi9LY29uZmlnLmRlYnVnLTM2MTQtXHRib29sIFwmIzM0O0RvY3Rlc3RzIGZvciB0aGUgYGtlcm5lbGAgY3JhdGVcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbmxpYi9LY29uZmlnLmRlYnVnLTM2MjUtXG5saWIvS2NvbmZpZy5kZWJ1ZzozNjI2OmNvbmZpZyBSVVNUX0lOTElORV9IRUxQRVJTXG5saWIvS2NvbmZpZy5kZWJ1Zy0zNjI3LVx0Ym9vbCBcJiMzNDtJbmxpbmUgQyBoZWxwZXJzIGludG8gUnVzdCBjb2RlIChFWFBFUklNRU5UQUwpXCYjMzQ7XG4tLVxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0LTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3Q6MjptZW51Y29uZmlnIFJVU1RfS1VOSVRfVEVTVFNcbnJ1c3Qva2VybmVsL0tjb25maWcudGVzdC0zLVx0Ym9vbCBcJiMzNDtSdXN0IEtVbml0IHRlc3RzXCYjMzQ7XG4tLVxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0PTE1PWlmIFJVU1RfS1VOSVRfVEVTVFNcbnJ1c3Qva2VybmVsL0tjb25maWcudGVzdDoxNjpjb25maWcgUlVTVF9BTExPQ0FUT1JfS1VOSVRfVEVTVFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0LTE3LVx0Ym9vbCBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgUnVzdCBhbGxvY2F0b3IgQVBJXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3QtMjUtXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3Q6MjY6Y29uZmlnIFJVU1RfS1ZFQ19LVU5JVF9URVNUXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3QtMjctXHRib29sIFwmIzM0O0tVbml0IHRlc3RzIGZvciBSdXN0IEtWZWMgQVBJXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3QtMzUtXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3Q6MzY6Y29uZmlnIFJVU1RfQklUTUFQX0tVTklUX1RFU1RcbnJ1c3Qva2VybmVsL0tjb25maWcudGVzdC0zNy1cdGJvb2wgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIFJ1c3QgYml0bWFwIEFQSVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0LTQ1LVxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0OjQ2OmNvbmZpZyBSVVNUX0tVTklUX1NFTEZURVNUXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3QtNDctXHRib29sIFwmIzM0O0tVbml0IHNlbGZ0ZXN0cyBmb3IgUnVzdFwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0LTU1LVxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0OjU2OmNvbmZpZyBSVVNUX1NUUl9LVU5JVF9URVNUXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3QtNTctXHRib29sIFwmIzM0O0tVbml0IHRlc3RzIGZvciBSdXN0IHN0cmluZ3MgQVBJXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3QtNjUtXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3Q6NjY6Y29uZmlnIFJVU1RfQVRPTUlDU19LVU5JVF9URVNUXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3QtNjctXHRib29sIFwmIzM0O0tVbml0IHRlc3RzIGZvciBSdXN0IGF0b21pY3MgQVBJXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbi0tXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3QtNzUtXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3Q6NzY6Y29uZmlnIFJVU1RfQklURklFTERfS1VOSVRfVEVTVFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0LTc3LVx0Ym9vbCBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgdGhlIFJ1c3QgYGJpdGZpZWxkIWAgbWFjcm9cJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbnNlY3VyaXR5L0tjb25maWcuaGFyZGVuaW5nPTI0NT1jb25maWcgTElTVF9IQVJERU5FRFxuLS1cbnNlY3VyaXR5L0tjb25maWcuaGFyZGVuaW5nLTI1My1cbnNlY3VyaXR5L0tjb25maWcuaGFyZGVuaW5nOjI1NDpjb25maWcgUlVTVF9CSVRNQVBfSEFSREVORURcbnNlY3VyaXR5L0tjb25maWcuaGFyZGVuaW5nLTI1NS1cdGJvb2wgXCYjMzQ7Q2hlY2sgaW50ZWdyaXR5IG9mIGJpdG1hcCBSdXN0IEFQSVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzk5NgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOgoKKipOYXZpZ2F0aW5nIHRoZSBDb25maWd1cmF0aW9uIExhbmRzY2FwZSoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgYFJVU1RgIGNvbmZpZ3VyYXRpb24gaGVyZS4gUmlnaHQsIHRoYXQmIzM5O3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBIb2xkIG9uIGEgc2Vjb25kLCB0aG91Z2guLi4gSSBzZWUgdGhhdCBgQVg4ODc5NkJfUlVTVF9QSFlgIGhhcyBhIGRlcGVuZGVuY3kgb24gYEFYODg3OTZCX1BIWWAuIFRoaXMgY291bGQgYmUgaW1wb3J0YW50LiBJcyBgQVg4ODc5NkJfUEhZYCAqYWN0dWFsbHkqIG5lY2Vzc2FyeT8gR2l2ZW4gdGhhdCBgQVg4ODc5NkJfUlVTVF9QSFlgIHJlbGllcyBvbiBpdCwgdGhlIGFuc3dlciBpcyAqeWVzKiwgaXQmIzM5O3MgYSBjcml0aWNhbCBjb21wb25lbnQuIEFscmlnaHQsIGxldCYjMzk7cyBkcmlsbCBkb3duIGludG8gd2hhdCAqdGhhdCogZGVwZW5kZW5jeSBpcyBjb21wb3NlZCBvZi4gVGltZSB0byBjaGVjayBgQVg4ODc5NkJfUEhZYCYjMzk7cyBvd24gZGVwZW5kZW5jaWVzLiBXZSBuZWVkIHRvIGZ1bGx5IGdyYXNwIHRoZSBjaGFpbiB0byB1bmRlcnN0YW5kIHRoZSB3aG9sZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVg4ODc5NkJfUEhZJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZz0xNTI9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3BoeS9hcXVhbnRpYS9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy0xNTMtXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxNTQ6Y29uZmlnIEFYODg3OTZCX1BIWVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTU1LVx0dHJpc3RhdGUgXCYjMzQ7QXNpeCBQSFlzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NDE2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIE5ldHdvcmsgRHJpdmVyIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgQVg4ODc5NkJfUEhZYCDigJMgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCwgbm8gZGVwZW5kZW5jaWVzIHRvIHdvcnJ5IGFib3V0IHRoZXJlLiBCdXQgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcgdGhhdCYjMzk7cyBvbiBteSBtaW5kOiBob3cgZG9lcyBgVVNCX05FVF9BWDg4MTdYYCBmaXQgaW50byB0aGUgcGljdHVyZT8gSSYjMzk7bSB0aGlua2luZyBJIHNob3VsZCBsb29rIGF0IGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AuIFRoaXMgaXMgYSBwcmV0dHkgc3RhbmRhcmQgYXBwcm9hY2guIExldCYjMzk7cyBzdGFydCB3aXRoIGEgY2hlY2sgZm9yIGBhc2l4YCB3aXRoaW4gdGhhdCBjb25maWd1cmF0aW9uIGZpbGUuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBVU0IgbmV0d29yayBhZGFwdGVyIGRyaXZlcnMgYXJlIHNldCB1cCwgYW5kIHF1aWNrbHkgc2hvdyBtZSBpZiB0aGUgYEFYODgxN1hgIGlzIGxpbmtlZCBpbiBzb21lIHdheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthc2l4JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDY2NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OgoKKipDaGVja2luZyB0aGUgS2NvbmZpZyBmb3IgQVg4ODE3WCBTdXBwb3J0KioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBidXNpbmVzcy4gVGltZSB0byBkaWcgaW50byB0aGlzIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgYEFYODgxN1hgIHN1cHBvcnQgaXMgaGFuZGxlZC4gSSBpbW1lZGlhdGVseSBrbm93IHRoZSBwbGFjZSB0byBzdGFydDogYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIFVTQiBuZXR3b3JrIGRyaXZlciBjb25maWd1cmF0aW9ucyBhcmUgc3RvcmVkLCBhbmQgZ2l2ZW4gaXRzIGEgVVNCIGRldmljZSwgdGhhdCYjMzk7cyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgbG9va2luZyBmb3Igb3B0aW9ucyByZWxhdGVkIHRvIGl0LiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaW4gdGhlcmUuIEkgYmV0IGl0IGhhcyBhbGwgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG9wdGlvbnMuIEkgd29uZGVyIGlmIHRoZXJlIGFyZSBhbnkgaW50ZXJlc3RpbmcgZGVwZW5kYW5jaWVzIHRoYXQgSSBkaWRuJiMzOTt0IGtub3cgYWJvdXQuIEkgaG9wZSB0aGVyZSBpcyBubyBoaWRkZW4gYnVnLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtBWDg4MTdYJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MTMyPWNvbmZpZyBVU0JfVVNCTkVUXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTY1LVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTY2OmNvbmZpZyBVU0JfTkVUX0FYODgxN1hcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTE2Ny1cdHRyaXN0YXRlIFwmIzM0O0FTSVggQVg4OHh4eCBCYXNlZCBVU0IgMi4wIEV0aGVybmV0IEFkYXB0ZXJzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0OTk4CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzczoKCioqVVNCX05FVF9BWDg4MTdYIERlcGVuZGVuY3kgQ2hlY2sqKgoKT2theSwgdGltZSB0byBkaWcgaW4uIFRoZSBmaXJzdCB0aGluZyBJJiMzOTttIGRvaW5nIGlzIG1ha2luZyBzdXJlIEkgZnVsbHkgdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBVU0JfTkVUX0FYODgxN1hgLiBUaGlzIGlzIGNydWNpYWwgYmVmb3JlIEkgZXZlbiB0aGluayBhYm91dCBtYWtpbmcgYW55IGNoYW5nZXMgb3IgYWRkcmVzc2luZyBhbnkgcG90ZW50aWFsIGlzc3Vlcy4gSSBuZWVkIHRvIGtub3cgd2hhdCBvdGhlciBjb21wb25lbnRzLCBkcml2ZXJzLCBvciBsaWJyYXJpZXMgcmVseSBvbiBpdCwgYW5kIHdoYXQgaXQsIGluIHR1cm4sIGRlcGVuZHMgb24uIEEgY2xlYXIgZGVwZW5kZW5jeSBtYXAgaXMgYWJzb2x1dGVseSBlc3NlbnRpYWwgZm9yIHN0YWJpbGl0eSBhbmQgYXZvaWRpbmcgcmVncmVzc2lvbnMuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2MDpcdFxuIDE2MTpcdFx0ICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgXHUwMDNjaHR0cDovL3d3dy5saW51eC11c2Iub3JnL3VzYm5ldC9cdTAwM2UuXG4gMTYyOlx0XG4gMTYzOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxuIDE2NDpcdFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgdXNibmV0LlxuIDE2NTpcdFxuIDE2NjpcdGNvbmZpZyBVU0JfTkVUX0FYODgxN1hcbiAxNjc6XHRcdHRyaXN0YXRlIFwmIzM0O0FTSVggQVg4OHh4eCBCYXNlZCBVU0IgMi4wIEV0aGVybmV0IEFkYXB0ZXJzXCYjMzQ7XG4gMTY4Olx0XHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcbiAxNjk6XHRcdHNlbGVjdCBDUkMzMlxuIDE3MDpcdFx0c2VsZWN0IFBIWUxJTktcbiAxNzE6XHRcdHNlbGVjdCBBWDg4Nzk2Ql9QSFlcbiAxNzI6XHRcdGltcGx5IE5FVF9TRUxGVEVTVFNcbiAxNzM6XHRcdGRlZmF1bHQgeVxuIDE3NDpcdFx0aGVscFxuIDE3NTpcdFx0ICBUaGlzIG9wdGlvbiBhZGRzIHN1cHBvcnQgZm9yIEFTSVggQVg4OHh4eCBiYXNlZCBVU0IgMi4wXG4gMTc2Olx0XHQgIDEwLzEwMCBFdGhlcm5ldCBhZGFwdGVycy5cbiAxNzc6XHRcbiAxNzg6XHRcdCAgVGhpcyBkcml2ZXIgc2hvdWxkIHdvcmsgd2l0aCBhdCBsZWFzdCB0aGUgZm9sbG93aW5nIGRldmljZXM6XG4gMTc5Olx0XHQgICAgKiBBdGVuIFVDMjEwVFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTQ4OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIxMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDb25maWd1cmF0aW9uIENvbnVuZHJ1bSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnMuIFRoZSBgVVNCX05FVF9BWDg4MTdYYCBvcHRpb24gcHVsbHMgaW4gYEFYODg3OTZCX1BIWWAsIHRoYXQmIzM5O3Mgc3RyYWlnaHRmb3J3YXJkLiBNeSBpbml0aWFsIGluc3RpbmN0IHdhcyB0byBqdXN0IGFkZCBgVVNCX05FVF9BWDg4MTdYYCB0byBgRW5hYmxlQ29uZmlnc2AsIHdoaWNoIG1ha2VzIHNlbnNlLiBCdXQgaGFuZyBvbiwgc2luY2UgdGhlIGRyaXZlciBpbXBsaWNpdGx5IGVuYWJsZXMgdGhlIFBIWSwgZXhwbGljaXRseSBlbmFibGluZyBgQVg4ODc5NkJfUEhZYCBtaWdodCBiZSByZWR1bmRhbnQuCgpBaCwgYnV0IG5vdyBJIHJlbWVtYmVyLCB3ZSBkZWZpbml0ZWx5ICpuZWVkKiBgQVg4ODc5NkJfUlVTVF9QSFlgLiBTbywgbXkgdGhpbmtpbmcgZXZvbHZlcy4gVGhlIGBFbmFibGVDb25maWdzYCBsaXN0IHNob3VsZCBwcm9iYWJseSBiZTogYFJVU1RgLCBgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TYCwgYEFYODg3OTZCX1JVU1RfUEhZYCwgYW5kIGBVU0JfTkVUX0FYODgxN1hgLiBUaGlzIGtlZXBzIHRoZSByZXF1aXJlZCBjb21wb25lbnRzIGluIHBsYWNlLgoKSG93ZXZlciwgYSBuZXcgcXVlc3Rpb24gYXJpc2VzLiBEb2VzIGBBWDg4Nzk2Ql9SVVNUX1BIWWAgKnJlcGxhY2UqIGBBWDg4Nzk2Ql9QSFlgLCBvciBkbyB0aGV5IHNvbWVob3cgY29leGlzdD8gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZWAgdG8gY29uZmlybSB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZXNvbHZlIHRoYXQgYW1iaWd1aXR5LiBUaGlzIHJlcXVpcmVzIGEgZGVlcGVyIGRpdmUgdG8gY2xhcmlmeSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgUEhZIG9wdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAzNTpcdG9iai0kKENPTkZJR19BSVJfTkVUX1BIWUxJQilcdCYjNDM7PSBhaXJfcGh5X2xpYi5vXG4gIDM2Olx0b2JqLSQoQ09ORklHX0FNRF9QSFkpXHRcdCYjNDM7PSBhbWQub1xuICAzNzpcdG9iai0kKENPTkZJR19BTUNDX1FUMjAyNV9QSFkpXHQmIzQzOz0gcXQyMDI1Lm9cbiAgMzg6XHRvYmotJChDT05GSUdfQVFVQU5USUFfUEhZKVx0JiM0Mzs9IGFxdWFudGlhL1xuICAzOTpcdG9iai0kKENPTkZJR19BUzIxWFhYX1BIWSlcdCYjNDM7PSBhczIxeHh4Lm9cbiAgNDA6XHRpZmRlZiBDT05GSUdfQVg4ODc5NkJfUlVTVF9QSFlcbiAgNDE6XHQgIG9iai0kKENPTkZJR19BWDg4Nzk2Ql9QSFkpXHQmIzQzOz0gYXg4ODc5NmJfcnVzdC5vXG4gIDQyOlx0ZWxzZVxuICA0MzpcdCAgb2JqLSQoQ09ORklHX0FYODg3OTZCX1BIWSlcdCYjNDM7PSBheDg4Nzk2Yi5vXG4gIDQ0Olx0ZW5kaWZcbiAgNDU6XHRvYmotJChDT05GSUdfQkNNNTQxNDBfUEhZKVx0JiM0Mzs9IGJjbTU0MTQwLm9cbiAgNDY6XHRvYmotJChDT05GSUdfQkNNNjNYWF9QSFkpXHQmIzQzOz0gYmNtNjN4eC5vXG4gIDQ3Olx0b2JqLSQoQ09ORklHX0JDTTdYWFhfUEhZKVx0JiM0Mzs9IGJjbTd4eHgub1xuICA0ODpcdG9iai0kKENPTkZJR19CQ004NDg4MV9QSFkpXHQmIzQzOz0gYmNtODQ4ODEub1xuICA0OTpcdG9iai0kKENPTkZJR19CQ004N1hYX1BIWSlcdCYjNDM7PSBiY204N3h4Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY0MDQKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0MDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBDT05GSUcgYW5kIFN5bWJvbCBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gdGhlIGBDT05GSUdfQVg4ODc5NkJfUlVTVF9QSFlgIG9wdGlvbiBpcyBzd2FwcGluZyBvdXQgdGhlIG9sZCBgYXg4ODc5NmIub2Agb2JqZWN0IGZpbGUgd2l0aCB0aGUgbmV3IFJ1c3QgaW1wbGVtZW50YXRpb24sIGBheDg4Nzk2Yl9ydXN0Lm9gLiBDbGVhcmx5LCB3ZSBhYnNvbHV0ZWx5IG5lZWQgdG8gZW5zdXJlIGBBWDg4Nzk2Ql9SVVNUX1BIWWAgaXMgZW5hYmxlZC4gQW5kLCBzaW5jZSBgVVNCX05FVF9BWDg4MTdYYCB3aWxsIHNlbGVjdCBgQVg4ODc5NkJfUEhZYCwgdGhhdCBsaWtlbHkgbWVhbnMgaXQgd2lsbCwgaW4gdHVybiwgc2VsZWN0IHRoZSBSdXN0IFBIWS4gU28gbXkgaW5pdGlhbCBgRW5hYmxlQ29uZmlnc2AgbGlzdCBzaG91bGQgYmU6IGBSVVNUYCwgYFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU2AsIGBBWDg4Nzk2Ql9SVVNUX1BIWWAsIGFuZCBgVVNCX05FVF9BWDg4MTdYYC4gVGhhdCBzaG91bGQgYmUgdGhlIG1pbmltdW0gY29uZmlndXJhdGlvbi4KCk5vdywgbGV0JiMzOTtzIHRoaW5rIGFib3V0IGBGb2N1c1N5bWJvbHNgLiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgdGhvc2UgZnVuY3Rpb25zOiBgaXNfbGlua191cGAsIGBpc19hdXRvbmVnX2VuYWJsZWRgLCBhbmQgYGlzX2F1dG9uZWdfY29tcGxldGVkYCwgYWxsIHdpdGhpbiBgcnVzdC9rZXJuZWwvbmV0L3BoeS5yc2AuIFRob3NlIGFyZSBSdXN0IG1ldGhvZHMuIE5vdywgSSBuZWVkIHRvIGtub3cgaG93IHRoZXNlIGFyZSBnb2luZyB0byBiZSBoYW5kbGVkLiBBcmUgdGhleSBtYW5nbGVkIHN5bWJvbHM/IEFyZSB0aGV5IGlubGluZWQ/IFNpbmNlIHRoZXkgYXJlIGBwdWIgZm5gIHdpdGhpbiBhIFJ1c3QgbW9kdWxlLCB0aGV5IGNvdWxkIHZlcnkgd2VsbCBiZSBpbmxpbmVkLgoKT2theSwgbGV0JiMzOTtzIGRpZyBpbnRvIGBheDg4Nzk2Yl9ydXN0LnJzYCB0byBzZWUgd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSAqdXNlZCouIEFoLCBgaXNfbGlua191cGAgaXMgdXNlZCBpbiBgcmVhZF9zdGF0dXNgLCBhbmQgYGlzX2F1dG9uZWdfZW5hYmxlZGAgaXMgdXNlZCBpbiBgcmVhZF9zdGF0dXNgLCBhbmQgYGlzX2F1dG9uZWdfY29tcGxldGVkYCBpcyB1c2VkIGluIGByZWFkX3N0YXR1c2AuIE5vdyBsZXQmIzM5O3Mgc2VlLCB3aGF0IGlzIGByZWFkX3N0YXR1c2A/IEl0JiMzOTtzIHBhcnQgb2YgdGhlIGBEcml2ZXJgIHRyYWl0IGltcGxlbWVudGF0aW9uIGZvciB0aGUgYFBoeUFYODg3NzJBYCBzdHJ1Y3QuIFNvIHRoZSBuZXh0IHF1ZXN0aW9uIGlzOiBIb3cgaXMgYHJlYWRfc3RhdHVzYCBuYW1lZCB3aGVuIGNvbXBpbGVkPyBJdCYjMzk7cyBsaWtlbHkgbWFuZ2xlZCwgd2hpY2ggbWVhbnMgaXQgd2lsbCBiZSB0cmlja3kgdG8gcGluIGRvd24gdGhlIHN5bWJvbC4gSG93ZXZlciwgd2FpdCBhIG1pbnV0ZS4uLiBgcmVhZF9zdGF0dXNgIGlzIGEgZnVuY3Rpb24gKnBvaW50ZXIqIHdpdGhpbiB0aGUgYHBoeV9kcml2ZXJgIHN0cnVjdCEgVGhhdCYjMzk7cyBob3cgaXQmIzM5O3MgYmVpbmcgaGFuZGxlZC4gUmlnaHQuIE9rYXksIG5vdyBJIG5lZWQgdG8gY2hlY2sgYHJ1c3Qva2VybmVsL25ldC9waHkucnNgIGFnYWluIHRvIHNlZSBob3cgdGhhdCBmdW5jdGlvbiBwb2ludGVyIGlzIHJlZ2lzdGVyZWQgdG8gc2VlIGhvdyB0aGUgc3ltYm9sIGlzIGFjY2Vzc2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtyZWFkX3N0YXR1cyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3J1c3Qva2VybmVsL25ldC9waHkucnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7cnVzdC9rZXJuZWwvbmV0L3BoeS5ycz0yNDQ9ICAgIHB1YiBmbiBnZW5waHlfc3VzcGVuZChcdTAwMjZtdXQgc2VsZikgLVx1MDAzZSBSZXN1bHQge1xuLS1cbnJ1c3Qva2VybmVsL25ldC9waHkucnMtMjUxLSAgICAvLy8gQ2hlY2tzIHRoZSBsaW5rIHN0YXR1cyBhbmQgdXBkYXRlcyBjdXJyZW50IGxpbmsgc3RhdGUuXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjI1MjogICAgcHViIGZuIGdlbnBoeV9yZWFkX3N0YXR1c1x1MDAzY1I6IHJlZzo6UmVnaXN0ZXJcdTAwM2UoXHUwMDI2bXV0IHNlbGYpIC1cdTAwM2UgUmVzdWx0XHUwMDNjdTE2XHUwMDNlIHtcbnJ1c3Qva2VybmVsL25ldC9waHkucnM6MjUzOiAgICAgICAgUjo6cmVhZF9zdGF0dXMoc2VsZilcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtMjU0LSAgICB9XG4tLVxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycz0zMDg9aW1wbFx1MDAzY1Q6IERyaXZlclx1MDAzZSBBZGFwdGVyXHUwMDNjVFx1MDAzZSB7XG4tLVxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy0zOTYtICAgIC8vLyBgcGh5ZGV2YCBtdXN0IGJlIHBhc3NlZCBieSB0aGUgY29ycmVzcG9uZGluZyBjYWxsYmFjayBpbiBgcGh5X2RyaXZlcmAuXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjM5NzogICAgdW5zYWZlIGV4dGVybiBcJiMzNDtDXCYjMzQ7IGZuIHJlYWRfc3RhdHVzX2NhbGxiYWNrKHBoeWRldjogKm11dCBiaW5kaW5nczo6cGh5X2RldmljZSkgLVx1MDAzZSBjX2ludCB7XG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTM5OC0gICAgICAgIGZyb21fcmVzdWx0KHx8IHtcbi0tXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTQwMi0gICAgICAgICAgICBsZXQgZGV2ID0gdW5zYWZlIHsgRGV2aWNlOjpmcm9tX3JhdyhwaHlkZXYpIH07XG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjQwMzogICAgICAgICAgICBUOjpyZWFkX3N0YXR1cyhkZXYpPztcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtNDA0LSAgICAgICAgICAgIE9rKDApXG4tLVxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycz00OTQ9cHViIGNvbnN0IGZuIGNyZWF0ZV9waHlfZHJpdmVyXHUwMDNjVDogRHJpdmVyXHUwMDNlKCkgLVx1MDAzZSBEcml2ZXJWVGFibGUge1xuLS1cbnJ1c3Qva2VybmVsL25ldC9waHkucnMtNTM1LSAgICAgICAgfSxcbnJ1c3Qva2VybmVsL25ldC9waHkucnM6NTM2OiAgICAgICAgcmVhZF9zdGF0dXM6IGlmIFQ6OkhBU19SRUFEX1NUQVRVUyB7XG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjUzNzogICAgICAgICAgICBTb21lKEFkYXB0ZXI6Olx1MDAzY1RcdTAwM2U6OnJlYWRfc3RhdHVzX2NhbGxiYWNrKVxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy01MzgtICAgICAgICB9IGVsc2Uge1xuLS1cbnJ1c3Qva2VybmVsL25ldC9waHkucnM9NjAxPSAgICBmbiBjb25maWdfYW5lZyhfZGV2OiBcdTAwMjZtdXQgRGV2aWNlKSAtXHUwMDNlIFJlc3VsdCB7XG4tLVxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy02MDUtICAgIC8vLyBEZXRlcm1pbmVzIHRoZSBuZWdvdGlhdGVkIHNwZWVkIGFuZCBkdXBsZXguXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjYwNjogICAgZm4gcmVhZF9zdGF0dXMoX2RldjogXHUwMDI2bXV0IERldmljZSkgLVx1MDAzZSBSZXN1bHRcdTAwM2N1MTZcdTAwM2Uge1xucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy02MDctICAgICAgICBidWlsZF9lcnJvciEoVlRBQkxFX0RFRkFVTFRfRVJST1IpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3OTgxCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNTAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYHJlYWRfc3RhdHVzYCBDYWxsYmFja3MgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBgcmVhZF9zdGF0dXNgIGlzc3VlLCBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgaG93IHRvIGVmZmVjdGl2ZWx5IGZ1enogdGhlIFBIWSBkcml2ZXIuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGluIHRoZSBgQWRhcHRlciZsdDtUJmd0O2Agc3RydWN0dXJlLCB3aXRoIGByZWFkX3N0YXR1c19jYWxsYmFja2AgYmVpbmcgdGhlIEMgY2FsbGJhY2ssIHdoaWNoIHRoZW4gZGVsZWdhdGVzIHRvIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24sIGBUOjpyZWFkX3N0YXR1c2AuIEluIG91ciBzcGVjaWZpYyBjYXNlLCBsb29raW5nIGF0IGBheDg4Nzk2Yl9ydXN0LnJzYCwgdGhhdCYjMzk7cyBgcmVhZF9zdGF0dXNgIHdpdGhpbiBgUGh5QVg4ODc3MkFgLiBOYW1lIG1hbmdsaW5nIGluIFJ1c3QgY291bGQgbWFrZSBwaW5wb2ludGluZyB0aGUgZXhhY3Qgc3ltYm9sIHRyaWNreSwgZXNwZWNpYWxseSBmb3IgYHJlYWRfc3RhdHVzYC4KCkluaXRpYWxseSwgSSBjb25zaWRlcmVkIHRhcmdldGluZyBgcmVhZF9zdGF0dXNfY2FsbGJhY2tgIGRpcmVjdGx5LCBzaW5jZSBpdCYjMzk7cyBhbiBgZXh0ZXJuICYjMzQ7QyYjMzQ7YCBmdW5jdGlvbiwgdGhvdWdoIGl0JiMzOTtzIGdlbmVyaWMgb3ZlciBgVGAgYW5kIG1pZ2h0IHN0aWxsIGJlIG1hbmdsZWQuICBJIGFsc28gZXhwbG9yZWQgaWYgYSBub24tZ2VuZXJpYyBmdW5jdGlvbiBsaWtlIGBhc2l4X3NvZnRfcmVzZXRgIGZyb20gYGF4ODg3OTZiX3J1c3QucnNgIHdhcyBhIGdvb2QgY2FuZGlkYXRlLCBidXQgaXQgYXBwZWFycyB0aGUgaXNzdWVzIGFyZSBhcmlzaW5nIHdpdGhpbiBgaXNfbGlua191cGAsIGBpc19hdXRvbmVnX2VuYWJsZWRgLCBhbmQgYGlzX2F1dG9uZWdfY29tcGxldGVkYCwgYWxsIGNhbGxlZCBmcm9tIGByZWFkX3N0YXR1c2AgaW4gYFBoeUFYODg3NzJBYC4KClRoZSBDIHNpZGUsIHdpdGggYHBoeV9yZWFkX3N0YXR1c2AsIHRoYXQgY2FsbHMgdGhlIGByZWFkX3N0YXR1c2AgY2FsbGJhY2ssIGlzIGFsc28gYSBjb25zaWRlcmF0aW9uLCBhbHRob3VnaCBpdCYjMzk7cyBhIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb24uICBJIHBvbmRlcmVkIGZvY3VzaW5nIG9uIGBheDg4NzcyX2JpbmRgIG9yIGBheDg4NzcyX2luaXRfcGh5YCBpbiBgYXNpeF9kZXZpY2VzLmNgLiBTcGVjaWZpY2FsbHksIGBheDg4NzcyX2luaXRfcGh5YCBjb3VsZCB0cmlnZ2VyIHRoZSBQSFkmIzM5O3MgaW5pdGlhbGl6YXRpb24sIGFuZCBJJiMzOTttIGludGVyZXN0ZWQgaW4gZnV6emluZyB0aGUgZHJpdmVyJiMzOTtzIGByZWFkX3N0YXR1c2AuCgpUaGUga2V5IGlzIGZpZ3VyaW5nIG91dCBob3cgc3l6a2FsbGVyIHRyaWdnZXJzIGByZWFkX3N0YXR1c2AuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgY2FsbGVkIHBlcmlvZGljYWxseSBieSB0aGUgUEhZIHN0YXRlIG1hY2hpbmUgKGBwaHlfc3RhdGVfbWFjaGluZWApIG9yIGluIHJlc3BvbnNlIHRvIGxpbmsgY2hhbmdlcy4gU28sIGluaXRpYWxpemluZyB0aGUgUEhZIHRocm91Z2ggYGF4ODg3NzJfaW5pdF9waHlgIG1pZ2h0IGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBnaXZlIHN5emthbGxlciBhIGNoYW5jZSB0byBwb2tlIGF0IGl0LiAgSSYjMzk7bGwgbmVlZCB0byBnbyBiYWNrIGFuZCByZS1leGFtaW5lIGBheDg4Nzk2Yl9ydXN0LnJzYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBleHBvcnRlZCBmdW5jdGlvbnMgdGhhdCBtaWdodCBwcm92aWRlIGEgdXNlZnVsIGVudHJ5IHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmbiAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy0zMi0vLyBzdWNoIGFzIHVzZWQgb24gdGhlIEluZGl2aWR1YWwgQ29tcHV0ZXJzJiMzOTsgWC1TdXJmIDEwMCBab3JybyBjYXJkLlxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM6MzM6Zm4gYXNpeF9zb2Z0X3Jlc2V0KGRldjogXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXHUwMDNlIFJlc3VsdCB7XG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy0zNC0gICAgZGV2LndyaXRlKEMyMjo6Qk1DUiwgMCk/O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzPTQxPWltcGwgRHJpdmVyIGZvciBQaHlBWDg4NzcyQSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtNDgtICAgIC8vIHJlZ2lzdGVyIGlzIDAuIFRoaXMgaXNzdWUgaXMgbm90IHJlcHJvZHVjaWJsZSBvbiBBWDg4NzcyQy5cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzOjQ5OiAgICBmbiByZWFkX3N0YXR1cyhkZXY6IFx1MDAyNm11dCBwaHk6OkRldmljZSkgLVx1MDAzZSBSZXN1bHRcdTAwM2N1MTZcdTAwM2Uge1xuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtNTAtICAgICAgICBkZXYuZ2VucGh5X3VwZGF0ZV9saW5rKCk/O1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTc5LVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM6ODA6ICAgIGZuIHN1c3BlbmQoZGV2OiBcdTAwMjZtdXQgcGh5OjpEZXZpY2UpIC1cdTAwM2UgUmVzdWx0IHtcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTgxLSAgICAgICAgZGV2LmdlbnBoeV9zdXNwZW5kKClcbi0tXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy04My1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzOjg0OiAgICBmbiByZXN1bWUoZGV2OiBcdTAwMjZtdXQgcGh5OjpEZXZpY2UpIC1cdTAwM2UgUmVzdWx0IHtcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTg1LSAgICAgICAgZGV2LmdlbnBoeV9yZXN1bWUoKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTg3LVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM6ODg6ICAgIGZuIHNvZnRfcmVzZXQoZGV2OiBcdTAwMjZtdXQgcGh5OjpEZXZpY2UpIC1cdTAwM2UgUmVzdWx0IHtcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTg5LSAgICAgICAgYXNpeF9zb2Z0X3Jlc2V0KGRldilcbi0tXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy05MS1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzOjkyOiAgICBmbiBsaW5rX2NoYW5nZV9ub3RpZnkoZGV2OiBcdTAwMjZtdXQgcGh5OjpEZXZpY2UpIHtcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTkzLSAgICAgICAgLy8gUmVzZXQgUEhZLCBvdGhlcndpc2UgTUlJX0xQQSB3aWxsIHByb3ZpZGUgb3V0ZGF0ZWQgaW5mb3JtYXRpb24uXG4tLVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM9MTA1PWltcGwgRHJpdmVyIGZvciBQaHlBWDg4NzcyQyB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtMTA5LVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM6MTEwOiAgICBmbiBzdXNwZW5kKGRldjogXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXHUwMDNlIFJlc3VsdCB7XG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy0xMTEtICAgICAgICBkZXYuZ2VucGh5X3N1c3BlbmQoKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTExMy1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzOjExNDogICAgZm4gcmVzdW1lKGRldjogXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXHUwMDNlIFJlc3VsdCB7XG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy0xMTUtICAgICAgICBkZXYuZ2VucGh5X3Jlc3VtZSgpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtMTE3LVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM6MTE4OiAgICBmbiBzb2Z0X3Jlc2V0KGRldjogXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXHUwMDNlIFJlc3VsdCB7XG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy0xMTktICAgICAgICBhc2l4X3NvZnRfcmVzZXQoZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzPTEyNj1pbXBsIERyaXZlciBmb3IgUGh5QVg4ODc5NkIge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTEyOS1cbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzOjEzMDogICAgZm4gc29mdF9yZXNldChkZXY6IFx1MDAyNm11dCBwaHk6OkRldmljZSkgLVx1MDAzZSBSZXN1bHQge1xuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtMTMxLSAgICAgICAgYXNpeF9zb2Z0X3Jlc2V0KGRldilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzAxNjcKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAyNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgTGluZSBvZiBSZWFzb25pbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0byBnZXQgU3l6a2FsbGVyIHRvIGludGVyYWN0IHdpdGggdGhlIEFTSVggVVNCIG5ldHdvcmsgZGV2aWNlIGRyaXZlciwgc3BlY2lmaWNhbGx5IHRvIHRlc3QgdGhlIFBIWSBpbml0aWFsaXphdGlvbi4gUnVzdCBmdW5jdGlvbnMgYXJlIG1hbmdsZWQgYW5kIHN0YXRpYywgc28gSSBjYW4mIzM5O3QgZGlyZWN0bHkgdXNlIHRoZW0gaW4gYEZvY3VzU3ltYm9sc2AuIFRoYXQmIzM5O3MgYSBuby1nbyBmb3IgYGFzaXhfc29mdF9yZXNldGAgc2luY2UgaXQmIzM5O3MgaW50ZXJuYWwgdG8gdGhlIG1vZHVsZS4gSSB0aGluayBteSBiZXN0IGJldCBpcyB0byBmb2N1cyBvbiBhIEMgZnVuY3Rpb24gaW5zdGVhZC4KCkFoYSEgYGF4ODg3NzJfaW5pdF9waHlgIGluIGBkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmNgIHNlZW1zIHByb21pc2luZy4gSWYgSSB0YXJnZXQgdGhhdCwgSSYjMzk7bSBwcmV0dHkgc3VyZSBpdCB3aWxsIGd1aWRlIFN5emthbGxlciB0b3dhcmRzIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBBbHNvLCBgYXg4ODc3Ml9iaW5kYCBpcyB0aGUgYmluZGluZyBmdW5jdGlvbiBmb3IgdGhpcyBVU0IgZGV2aWNlLgoKQWxyaWdodCwgbGV0IG1lIGNoZWNrIGlmIGBheDg4NzcyX2JpbmRgIGlzIHN0YXRpYywgYmVjYXVzZSB0aGF0IHdvdWxkIGJlIGEgcHJvYmxlbS4gWWVwLCBpdCBpcy4gQnV0LCBTeXprYWxsZXIgY2FuIHN0aWxsIGhhbmRsZSBzdGF0aWMgZnVuY3Rpb25zLCBwcm92aWRlZCB0aGV5IGFyZW4mIzM5O3QgaW5saW5lZCwgc28gSSBzaG91bGQgYmUgb2theS4gQW5kLCBsZXQgbWUgZG91YmxlLWNoZWNrIGBheDg4NzcyX2luaXRfcGh5YC4gWWVwLCBpdCYjMzk7cyBhbHNvIHN0YXRpYy4KCk9rYXksIEkmIzM5O3ZlIGdvdCBhIHBsYW4uIEkmIzM5O2xsIHVzZSBib3RoIGBheDg4NzcyX2JpbmRgIGFuZCBgYXg4ODc3Ml9pbml0X3BoeWAgYXMgYEZvY3VzU3ltYm9sc2AuIFRoZXkgc2hvdWxkIGdldCBTeXprYWxsZXIgd2hlcmUgSSBuZWVkIGl0IHRvIGJlLgoKV2FpdCBhIHNlY29uZC4gVGhlIGJ1ZyByZXBvcnQgaXMgcG9pbnRpbmcgdG8gYHJ1c3Qva2VybmVsL25ldC9waHkucnNgLiBEYW1uIGl0LiBEb2VzIGFueSBvdGhlciBkcml2ZXIgdXNlIGBpc19saW5rX3VwYD8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aXNfbGlua191cCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM9NDk9ICAgIGZuIHJlYWRfc3RhdHVzKGRldjogXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXHUwMDNlIFJlc3VsdFx1MDAzY3UxNlx1MDAzZSB7XG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy01MC0gICAgICAgIGRldi5nZW5waHlfdXBkYXRlX2xpbmsoKT87XG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5yczo1MTogICAgICAgIGlmICFkZXYuaXNfbGlua191cCgpIHtcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTUyLSAgICAgICAgICAgIHJldHVybiBPaygwKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA5NjcKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBhIFJ1c3QgRGVwZW5kZW5jeSoqCgpSaWdodCwgc28gSSBzZWUgYSBzcGVjaWZpYyBmaWxlLCBgYXg4ODc5NmJfcnVzdC5yc2AsIGlzIHVzaW5nIHNvbWV0aGluZy4gVGhlIGtleSBxdWVzdGlvbiBpcywgd2hhdCYjMzk7cyBpdCB1c2luZywgYW5kIGhvdz8gVGhpcyBuZWVkcyBtb3JlIGRpZ2dpbmcsIGJ1dCBhdCBsZWFzdCBJIGtub3cgd2hlcmUgdG8gc3RhcnQuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIGlmIHRoaXMgaXMgYSBjcml0aWNhbCBjb21wb25lbnQgb3IgYSBtaW5vciB1dGlsaXR5IGZ1bmN0aW9uLiBNeSBuZXh0IHBvaW50IG9mIGludmVzdGlnYXRpb24gd2lsbCBiZSBgaXNfYXV0b25lZ19lbmFibGVkYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgaXMgY29ubmVjdGVkIHRvIGBheDg4Nzk2Yl9ydXN0LnJzYC4gVGhlIG5hbWUgY2VydGFpbmx5IHN1Z2dlc3RzIGl0JiMzOTtzIHJlbGF0ZWQgdG8gYXV0by1uZWdvdGlhdGlvbiwgYnV0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgdG8gdGhlIGJyb2FkZXIgc3lzdGVtLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGlzIGlzIHJlbGF0ZWQgdG8gdGhpcyBmdW5jdGlvbmFsaXR5LCBvciBwYXJ0IG9mIGEgc2hhcmVkIGxpYnJhcnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lzX2F1dG9uZWdfZW5hYmxlZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM9NDk9ICAgIGZuIHJlYWRfc3RhdHVzKGRldjogXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXHUwMDNlIFJlc3VsdFx1MDAzY3UxNlx1MDAzZSB7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtNzItXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5yczo3MzogICAgICAgIGlmIGRldi5pc19hdXRvbmVnX2VuYWJsZWQoKSBcdTAwMjZcdTAwMjYgZGV2LmlzX2F1dG9uZWdfY29tcGxldGVkKCkge1xuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtNzQtICAgICAgICAgICAgZGV2LnJlc29sdmVfYW5lZ19saW5rbW9kZSgpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTM2OAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBcHByb2FjaCB0byBVbmRlcnN0YW5kaW5nIHRoZSBQSFkgRHJpdmVyKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIGBheDg4Nzk2Yl9ydXN0LnJzYCBmaWxlLCBhbmQgaXQgc2VlbXMgbGlrZSB0aGF0JiMzOTtzIHRoZSBvbmx5IG9uZSB1c2luZyBzb21ldGhpbmcgaW50ZXJlc3RpbmcsIGxldCYjMzk7cyBrZWVwIHRoYXQgaW4gbWluZC4gUmlnaHQsIHNvIEkgdGhpbmsgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGRpZyBpbnRvIHRoZSBQSFkgZHJpdmVyIHdvdWxkIGJlIHRvIGNvbmNlbnRyYXRlIG15IGVmZm9ydHMgb24gYGF4ODg3NzJfYmluZGAgYW5kIGBheDg4NzcyX2luaXRfcGh5YC4gVGhlIHBsYW4gaXMgdG8gZm9sbG93IHRoZSBicmVhZGNydW1icy4gV2FpdC4uLiBgYXg4ODc3Ml9iaW5kYCBpcyBhY3R1YWxseSBkZWZpbmVkIGluIGBhc2l4X2RldmljZXMuY2AuIEdvdCBpdC4KCk5vdywgYmVmb3JlIEkgZ2V0IHRvbyBkZWVwLCBsZXQmIzM5O3MganVzdCBjb25maXJtIHRoYXQgYGF4ODg3OTZiX3J1c3QucnNgIGRvZXNuJiMzOTt0IGV4cG9ydCBhbnkgY3JpdGljYWwgZnVuY3Rpb25zLiBPa2F5LCBpdCBsb29rcyBsaWtlIHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gaXMgaGFuZGxlZCBieSB0aGF0IGBrZXJuZWw6Om1vZHVsZV9waHlfZHJpdmVyIWAgbWFjcm8uIFJpZ2h0LCBzbyB0aGF0IG1hY3JvICpnZW5lcmF0ZXMqIGBpbml0X21vZHVsZWAgYW5kIGBjbGVhbnVwX21vZHVsZWAgZnVuY3Rpb25zLiBJbnRlcmVzdGluZy4gQW5kIGl0IGFsc28gZ2VuZXJhdGVzIHRoZSBgcGh5X2RyaXZlcmAgc3RydWN0IGFycmF5LiBUaGF0IGdpdmVzIG1lIHNvbWV0aGluZyBjb25jcmV0ZSB0byBsb29rIGZvci4gU28sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBtYWNybyBkb2VzIHNvIEkgY2FuIHRyYWNrIHRoZSBleGVjdXRpb24uIExldCYjMzk7cyBoZWFkIG92ZXIgdG8gYHJ1c3Qva2VybmVsL25ldC9waHkucnNgIHRvIHNlZSBob3cgYG1vZHVsZV9waHlfZHJpdmVyYCBpcyBkZWZpbmVkLiBUaGF0JiMzOTtzIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjcm9fcnVsZXMhIG1vZHVsZV9waHlfZHJpdmVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7cnVzdC9rZXJuZWwvbmV0L3BoeS5ycyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtydXN0L2tlcm5lbC9uZXQvcGh5LnJzPTc2ND0gICAgY29uc3QgZm4gYXNfaW50KFx1MDAyNnNlbGYpIC1cdTAwM2UgdTMyIHtcbi0tXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTgwNy0jW21hY3JvX2V4cG9ydF1cbnJ1c3Qva2VybmVsL25ldC9waHkucnM6ODA4Om1hY3JvX3J1bGVzISBtb2R1bGVfcGh5X2RyaXZlciB7XG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTgwOS0gICAgKEByZXBsYWNlX2V4cHIgJF90OnR0ICRzdWI6ZXhwcikgPVx1MDAzZSB7JHN1Yn07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxOTk0CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBgcGh5LnJzYCoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoZSBQSFkgKFBoeXNpY2FsIExheWVyKSBpbnRlcmFjdGlvbiBpbiB0aGUgUnVzdCBrZXJuZWwmIzM5O3MgbmV0d29ya2luZyBzdGFjay4gTXkgaW50dWl0aW9uIHRlbGxzIG1lIHRoYXQgbGluZSA4MDggb2YgYHJ1c3Qva2VybmVsL25ldC9waHkucnNgIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBkb24mIzM5O3QgcmVjYWxsIHRoaXMgc3BlY2lmaWMgYXJlYSBvZiB0aGUgY29kZWJhc2UsIHNvIEkmIzM5O20gZ29pbmcgdG8gc2NhbiB0aGUgY29kZSBhcm91bmQgdGhhdCBsaW5lIGZvciBjbHVlcy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgY29tbW9uIFBIWSBvcGVyYXRpb25zLCBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZXMsIG9yIGFueSBpbnRlcmFjdGlvbiB3aXRoIHRoZSBoYXJkd2FyZSByZWdpc3RlcnMuIE15IGdvYWwgaXMgdG8gcXVpY2tseSBncmFzcCB0aGUgbG9naWNhbCBmbG93IGFuZCB0aGUgc3BlY2lmaWMgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkIGF0IHRoYXQgcG9pbnQgaW4gdGhlIHN5c3RlbS4gVGhlIGV4YWN0IGxpbmUgbWF5IHRyaWdnZXIgc29tZSBwcmlvciBrbm93bGVkZ2UuIFBlcmhhcHMgSSBhbSBsb29raW5nIGZvciBhIHNwZWNpZmljIHJlZ2lzdGVyIHNldHRpbmcgdG8gZGVidWcuIEhvcGVmdWxseSwgdGhhdCB3aWxsIGxlYWQgbWUgdG8gdGhlIHVuZGVybHlpbmcgaXNzdWUuIExldCYjMzk7cyBnZXQgcmVhZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtydXN0L2tlcm5lbC9uZXQvcGh5LnJzJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogODAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA4MDA6XHQvLy8gI1t2dGFibGVdXG4gODAxOlx0Ly8vIGltcGwgcGh5OjpEcml2ZXIgZm9yIFBoeVNhbXBsZSB7XG4gODAyOlx0Ly8vICAgICBjb25zdCBOQU1FOiBcdTAwMjYmIzM5O3N0YXRpYyBDU3RyID0gY1wmIzM0O1BoeVNhbXBsZVwmIzM0OztcbiA4MDM6XHQvLy8gICAgIGNvbnN0IFBIWV9ERVZJQ0VfSUQ6IHBoeTo6RGV2aWNlSWQgPSBwaHk6OkRldmljZUlkOjpuZXdfd2l0aF9leGFjdF9tYXNrKDB4MDAwMDAwMDEpO1xuIDgwNDpcdC8vLyB9XG4gODA1Olx0Ly8vICMgfVxuIDgwNjpcdC8vLyBgYGBcbiA4MDc6XHQjW21hY3JvX2V4cG9ydF1cbiA4MDg6XHRtYWNyb19ydWxlcyEgbW9kdWxlX3BoeV9kcml2ZXIge1xuIDgwOTpcdCAgICAoQHJlcGxhY2VfZXhwciAkX3Q6dHQgJHN1YjpleHByKSA9XHUwMDNlIHskc3VifTtcbiA4MTA6XHRcbiA4MTE6XHQgICAgKEBjb3VudF9kZXZpY2VzICQoJHg6ZXhwciksKikgPVx1MDAzZSB7XG4gODEyOlx0ICAgICAgICAwdXNpemUgJCgmIzQzOyAkY3JhdGU6Om1vZHVsZV9waHlfZHJpdmVyIShAcmVwbGFjZV9leHByICR4IDF1c2l6ZSkpKlxuIDgxMzpcdCAgICB9O1xuIDgxNDpcdFxuIDgxNTpcdCAgICAoQGRldmljZV90YWJsZSBbJCgkZGV2OmV4cHIpLCYjNDM7XSkgPVx1MDAzZSB7XG4gODE2Olx0ICAgICAgICAkY3JhdGU6Om1vZHVsZV9kZXZpY2VfdGFibGUhKFxuIDgxNzpcdCAgICAgICAgICAgIFwmIzM0O21kaW9cJiMzNDssICRjcmF0ZTo6bmV0OjpwaHk6OkRldmljZUlkLFxuIDgxODpcdCAgICAgICAgICAgIFRBQkxFLCBAbm9uZSwgWyQoJGRldiksJiM0MztdXG4gODE5Olx0ICAgICAgICApO1xuIDgyMDpcdCAgICB9O1xuIDgyMTpcdFxuIDgyMjpcdCAgICAoZHJpdmVyczogWyQoJGRyaXZlcjppZGVudCksJiM0MzsgJCgsKT9dLCBkZXZpY2VfdGFibGU6IFskKCRkZXY6ZXhwciksJiM0MzsgJCgsKT9dLCAkKCRmOnR0KSopID1cdTAwM2Uge1xuIDgyMzpcdCAgICAgICAgc3RydWN0IE1vZHVsZSB7XG4gODI0Olx0ICAgICAgICAgICAgX3JlZzogJGNyYXRlOjpuZXQ6OnBoeTo6UmVnaXN0cmF0aW9uLFxuIDgyNTpcdCAgICAgICAgfVxuIDgyNjpcdFxuIDgyNzpcdCAgICAgICAgJGNyYXRlOjpwcmVsdWRlOjptb2R1bGUhIHtcbiA4Mjg6XHQgICAgICAgICAgICB0eXBlOiBNb2R1bGUsXG4gODI5Olx0ICAgICAgICAgICAgJCgkZikqXG4gODMwOlx0ICAgICAgICB9XG4gODMxOlx0XG4gODMyOlx0ICAgICAgICBjb25zdCBfOiAoKSA9IHtcbiA4MzM6XHQgICAgICAgICAgICBzdGF0aWMgbXV0IERSSVZFUlM6IFskY3JhdGU6Om5ldDo6cGh5OjpEcml2ZXJWVGFibGU7XG4gODM0Olx0ICAgICAgICAgICAgICAgICRjcmF0ZTo6bW9kdWxlX3BoeV9kcml2ZXIhKEBjb3VudF9kZXZpY2VzICQoJGRyaXZlciksJiM0MzspXSA9XG4gODM1Olx0ICAgICAgICAgICAgICAgIFskKCRjcmF0ZTo6bmV0OjpwaHk6OmNyZWF0ZV9waHlfZHJpdmVyOjpcdTAwM2MkZHJpdmVyXHUwMDNlKCkpLCYjNDM7XTtcbiA4MzY6XHRcbiA4Mzc6XHQgICAgICAgICAgICBpbXBsICRjcmF0ZTo6TW9kdWxlIGZvciBNb2R1bGUge1xuIDgzODpcdCAgICAgICAgICAgICAgICBmbiBpbml0KG1vZHVsZTogXHUwMDI2JiMzOTtzdGF0aWMgJGNyYXRlOjpUaGlzTW9kdWxlKSAtXHUwMDNlIFJlc3VsdFx1MDAzY1NlbGZcdTAwM2Uge1xuIDgzOTpcdCAgICAgICAgICAgICAgICAgICAgLy8gU0FGRVRZOiBUaGUgYW5vbnltb3VzIGNvbnN0YW50IGd1YXJhbnRlZXMgdGhhdCBub2JvZHkgZWxzZSBjYW4gYWNjZXNzXG4gODQwOlx0ICAgICAgICAgICAgICAgICAgICAvLyB0aGUgYERSSVZFUlNgIHN0YXRpYy4gVGhlIGFycmF5IGlzIHVzZWQgb25seSBpbiB0aGUgQyBzaWRlLlxuIDg0MTpcdCAgICAgICAgICAgICAgICAgICAgbGV0IGRyaXZlcnMgPSB1bnNhZmUgeyBcdTAwMjZtdXQgRFJJVkVSUyB9O1xuIDg0MjpcdCAgICAgICAgICAgICAgICAgICAgbGV0IG11dCByZWcgPSAkY3JhdGU6Om5ldDo6cGh5OjpSZWdpc3RyYXRpb246OnJlZ2lzdGVyKFxuIDg0MzpcdCAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSxcbiA4NDQ6XHQgICAgICAgICAgICAgICAgICAgICAgICA6OmNvcmU6OnBpbjo6UGluOjpzdGF0aWNfbXV0KGRyaXZlcnMpLFxuIDg0NTpcdCAgICAgICAgICAgICAgICAgICAgKT87XG4gODQ2Olx0ICAgICAgICAgICAgICAgICAgICBPayhNb2R1bGUgeyBfcmVnOiByZWcgfSlcbiA4NDc6XHQgICAgICAgICAgICAgICAgfVxuIDg0ODpcdCAgICAgICAgICAgIH1cbiA4NDk6XHQgICAgICAgIH07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMDc0CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVGFyZ2V0IGZvciBTeXprYWxsZXIgRnV6emluZyoqCgpPa2F5LCBzbyB0aGUgYG1vZHVsZSFgIG1hY3JvIGdlbmVyYXRlcyB0aGUgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uLCB3aGljaCBpcyBuYW1lZCBgaW5pdF9tb2R1bGVgIGluIHRoaXMgY2FzZS4gVGhlIGlzc3VlIGlzIGluIGEgUEhZIGRyaXZlciwgd2hpY2ggbWVhbnMgc3l6a2FsbGVyIHNob3VsZCBiZSBhYmxlIHRvIHJlYWNoIGl0IG9uY2UgaXQmIzM5O3MgbG9hZGVkLiBUbyBtYWtlIHRoaW5ncyBlYXNpZXIgZm9yIHN5emthbGxlciwgSSBzaG91bGQgcGlucG9pbnQgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucy4gTGV0JiMzOTtzIGZvY3VzIG9uIGBheDg4NzcyX2JpbmRgIGFuZCBgYXg4ODc3Ml9pbml0X3BoeWAgd2l0aGluIGBhc2l4X2RldmljZXMuY2AuIFdhaXQsIGBheDg4NzcyX2JpbmRgIHNlZW1zIHRvIGJlIHNwZWNpZmljYWxseSBmb3IgdGhlIGBheDg4NzcyYCBkZXZpY2UuIEdpdmVuIHRoYXQgdGhlIFBIWSBkcml2ZXIgYGF4ODg3OTZiX3J1c3QucnNgIHN1cHBvcnRzIGEgdmFyaWV0eSBvZiBQSFlzLCBuYW1lbHkgYFBoeUFYODg3NzJBYCwgYFBoeUFYODg3NzJDYCwgYW5kIGBQaHlBWDg4Nzk2QmAsIEkgc2hvdWxkIHByb2JhYmx5IGFsc28gY29uZmlybSBpZiB0aGUgdGFyZ2V0IGRldmljZSBpcyBzdXBwb3J0ZWQgaW4gYGFzaXhfZGV2aWNlcy5jYC4gSXQgbG9va3MgbGlrZSBJIG5lZWQgdG8gY2hlY2sgZm9yIGBheDg4NzcyYWAgaW4gcGFydGljdWxhci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtheDg4NzcyYV9iaW5kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM1NjAKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIHByb3ZpZGVkIGluc3RydWN0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBBWDg4NzcyQSBEcml2ZXIgQ29kZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgYXNpeF9kZXZpY2VzLmNgIGZpbGUuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGdldCBhIGxvb2sgYXQgdGhlIGNvZGUgcmVsYXRlZCB0byB0aGUgYGF4ODg3NzJhYCBkZXZpY2UuIFRoaXMgbGlrZWx5IG1lYW5zIEkmIzM5O20gbG9va2luZyB0byB1bmRlcnN0YW5kIGl0cyBpbXBsZW1lbnRhdGlvbiwgcGVyaGFwcyB0cm91Ymxlc2hvb3QgYW4gaXNzdWUsIG9yIHBvdGVudGlhbGx5IG1vZGlmeSBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGlzIFVTQi10by1FdGhlcm5ldCBhZGFwdGVyLiBHaXZlbiBteSBleHBlcnRpc2UsIEkmIzM5O20gcHJvYmFibHkgbG9va2luZyBmb3Iga2V5IGRhdGEgc3RydWN0dXJlcywgcmVnaXN0ZXIgY29uZmlndXJhdGlvbnMsIGludGVycnVwdCBoYW5kbGluZyByb3V0aW5lcywgb3IgcGVyaGFwcyBldmVuIHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIHJlbGF0ZWQgdG8gdGhpcyBwYXJ0aWN1bGFyIGRldmljZS4gSSYjMzk7bGwgYmUgcXVpY2tseSBzY2FubmluZyBmb3IgcmVsZXZhbnQgZnVuY3Rpb24gY2FsbHMsIHZhcmlhYmxlIGRlY2xhcmF0aW9ucywgYW5kIGNvbW1lbnRzIHRoYXQgd2lsbCBnaXZlIG1lIHRoZSBxdWljayBncmFzcCBvZiB0aGUgaW5uZXIgd29ya2luZ3Mgb2YgdGhpcyBkcml2ZXIgdGhhdCBJIG5lZWQuIExldCYjMzk7cyBnZXQgc3RhcnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXg4ODc3MmEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTM2Mj1zdGF0aWMgaW50IGF4ODg3NzJfaHdfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgaW5fcG0pXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ1NS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo0NTY6c3RhdGljIGludCBheDg4NzcyYV9od19yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBpbl9wbSlcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00NTcte1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz04Mjk9c3RhdGljIGludCBheDg4NzcyX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50Zilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODk4LVx0ZWxzZVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjg5OTpcdFx0cHJpdi1cdTAwM2VyZXNldCA9IGF4ODg3NzJhX2h3X3Jlc2V0O1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkwMC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQwNTkKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOgoKKipFeGFtaW5pbmcgdGhlIERyaXZlciBCaW5kaW5nIGluIGFzaXhfZGV2aWNlcy5jKioKCkFscmlnaHQsIHNvIHRoZSBjb2RlIGlzIHN0YXRpbmcgdGhhdCB0aGUgYGF4ODg3NzJfYmluZGAgZnVuY3Rpb24gaXMgYWxzbyByZXNwb25zaWJsZSBmb3IgYmluZGluZyB0aGUgYGF4ODg3NzJhYCBkZXZpY2UuIFRoYXQgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBJIG5lZWQgdG8gY29uZmlybSB0aGlzLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byBnbyBkaXJlY3RseSB0byB0aGUgc291cmNlLiBMZXQmIzM5O3MgZGVsdmUgaW50byBgYXNpeF9kZXZpY2VzLmNgIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGF4ODg3NzJfYmluZGAuIEkgd2FudCB0byBzZWUgaG93IHRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgYmluZGluZyBwcm9jZXNzLCB0aGUgZGV2aWNlIElEcyBpdCByZWNvZ25pemVzLCBhbmQgaWYgdGhlcmUmIzM5O3MgYW55IGNvbmRpdGlvbmFsIGxvZ2ljIHdpdGhpbiBpdCB0aGF0IG1pZ2h0IGV4cGxhaW4gd2h5IGl0JiMzOTtzIGhhbmRsaW5nIGJvdGggdGhlIG9yaWdpbmFsIGBheDg4NzcyYCBhbmQgdGhlIGBheDg4NzcyYWAuIFRoZSBkZXZpbCYjMzk7cyBhbHdheXMgaW4gdGhlIGRldGFpbHMsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggc2xpZ2h0bHkgZGlmZmVyZW50IGhhcmR3YXJlIHJldmlzaW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBiaW5kaW5nIHJlbGF0aW9uc2hpcCBjb21wbGV0ZWx5IHRvIHRyb3VibGVzaG9vdCBvciBleHRlbmQgZnVuY3Rpb25hbGl0eSwgaWYgdGhlIG5lZWQgYXJpc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgODIwOlx0XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cHJpdi1cdTAwM2VwaHlsaW5rX2NvbmZpZywgZGV2LVx1MDAzZW5ldC1cdTAwM2VkZXYuZndub2RlLFxuIDgyMTpcdFx0XHRcdFx0IHBoeV9pZl9tb2RlLCBcdTAwMjZheDg4NzcyX3BoeWxpbmtfbWFjX29wcyk7XG4gODIyOlx0XHRpZiAoSVNfRVJSKHBoeWxpbmspKVxuIDgyMzpcdFx0XHRyZXR1cm4gUFRSX0VSUihwaHlsaW5rKTtcbiA4MjQ6XHRcbiA4MjU6XHRcdHByaXYtXHUwMDNlcGh5bGluayA9IHBoeWxpbms7XG4gODI2Olx0XHRyZXR1cm4gMDtcbiA4Mjc6XHR9XG4gODI4Olx0XG4gODI5Olx0c3RhdGljIGludCBheDg4NzcyX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcbiA4MzA6XHR7XG4gODMxOlx0XHRzdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSAqcHJpdjtcbiA4MzI6XHRcdHU4IGJ1ZltFVEhfQUxFTl0gPSB7MH07XG4gODMzOlx0XHRpbnQgcmV0LCBpO1xuIDgzNDpcdFxuIDgzNTpcdFx0cHJpdiA9IGRldm1fa3phbGxvYyhcdTAwMjZkZXYtXHUwMDNldWRldi1cdTAwM2VkZXYsIHNpemVvZigqcHJpdiksIEdGUF9LRVJORUwpO1xuIDgzNjpcdFx0aWYgKCFwcml2KVxuIDgzNzpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiA4Mzg6XHRcbiA4Mzk6XHRcdGRldi1cdTAwM2Vkcml2ZXJfcHJpdiA9IHByaXY7XG4gODQwOlx0XG4gODQxOlx0XHRyZXQgPSB1c2JuZXRfZ2V0X2VuZHBvaW50cyhkZXYsIGludGYpO1xuIDg0MjpcdFx0aWYgKHJldClcbiA4NDM6XHRcdFx0cmV0dXJuIHJldDtcbiA4NDQ6XHRcbiA4NDU6XHRcdC8qIE1heWJlIHRoZSBib290IGxvYWRlciBwYXNzZWQgdGhlIE1BQyBhZGRyZXNzIHZpYSBkZXZpY2UgdHJlZSAqL1xuIDg0NjpcdFx0aWYgKCFldGhfcGxhdGZvcm1fZ2V0X21hY19hZGRyZXNzKFx1MDAyNmRldi1cdTAwM2V1ZGV2LVx1MDAzZWRldiwgYnVmKSkge1xuIDg0NzpcdFx0XHRuZXRpZl9kYmcoZGV2LCBpZnVwLCBkZXYtXHUwMDNlbmV0LFxuIDg0ODpcdFx0XHRcdCAgXCYjMzQ7TUFDIGFkZHJlc3MgcmVhZCBmcm9tIGRldmljZSB0cmVlXCYjMzQ7KTtcbiA4NDk6XHRcdH0gZWxzZSB7XG4gODUwOlx0XHRcdC8qIFRyeSBnZXR0aW5nIHRoZSBNQUMgYWRkcmVzcyBmcm9tIEVFUFJPTSAqL1xuIDg1MTpcdFx0XHRpZiAoZGV2LVx1MDAzZWRyaXZlcl9pbmZvLVx1MDAzZWRhdGEgXHUwMDI2IEZMQUdfRUVQUk9NX01BQykge1xuIDg1MjpcdFx0XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIChFVEhfQUxFTiBcdTAwM2VcdTAwM2UgMSk7IGkmIzQzOyYjNDM7KSB7XG4gODUzOlx0XHRcdFx0XHRyZXQgPSBhc2l4X3JlYWRfY21kKGRldiwgQVhfQ01EX1JFQURfRUVQUk9NLFxuIDg1NDpcdFx0XHRcdFx0XHRcdCAgICAweDA0ICYjNDM7IGksIDAsIDIsIGJ1ZiAmIzQzOyBpICogMixcbiA4NTU6XHRcdFx0XHRcdFx0XHQgICAgMCk7XG4gODU2Olx0XHRcdFx0XHRpZiAocmV0IFx1MDAzYyAwKVxuIDg1NzpcdFx0XHRcdFx0XHRicmVhaztcbiA4NTg6XHRcdFx0XHR9XG4gODU5Olx0XHRcdH0gZWxzZSB7XG4gODYwOlx0XHRcdFx0cmV0ID0gYXNpeF9yZWFkX2NtZChkZXYsIEFYX0NNRF9SRUFEX05PREVfSUQsXG4gODYxOlx0XHRcdFx0XHRcdCAgICAwLCAwLCBFVEhfQUxFTiwgYnVmLCAwKTtcbiA4NjI6XHRcdFx0fVxuIDg2MzpcdFxuIDg2NDpcdFx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gODY1Olx0XHRcdFx0bmV0ZGV2X2RiZyhkZXYtXHUwMDNlbmV0LCBcJiMzNDtGYWlsZWQgdG8gcmVhZCBNQUMgYWRkcmVzczogJWRcXG5cJiMzNDssXG4gODY2Olx0XHRcdFx0XHQgICByZXQpO1xuIDg2NzpcdFx0XHRcdHJldHVybiByZXQ7XG4gODY4Olx0XHRcdH1cbiA4Njk6XHRcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzUxNzIKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpZ2dpbmcgaW50byB0aGUgYGF4ODg3NzJgIERyaXZlcioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBgYXg4ODc3MmAgZHJpdmVyLCBhbmQgaXQgbG9va3MgbGlrZSBgYXg4ODc3Ml9iaW5kYCBpcywgYXMgZXhwZWN0ZWQsIHRoZSBwcmltYXJ5IGJpbmQgZnVuY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSwgc28gbGV0JiMzOTtzIHN0YXJ0IGJ5IHF1aWNrbHkgdmVyaWZ5aW5nIGFuZCBleGFtaW5pbmcgdGhlIGBheDg4NzcyX2luaXRfcGh5YCBmdW5jdGlvbi4gSXQgaXMgYSBjcml0aWNhbCBjb21wb25lbnQgZm9yIGJyaW5naW5nIHVwIHRoZSBwaHlzaWNhbCBsYXllciBpbnRlcmZhY2UuIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIFBIWSBpbml0aWFsaXphdGlvbiBpcyBoYW5kbGVkIGNvcnJlY3RseSBhbmQgZWZmaWNpZW50bHksIGNvbnNpZGVyaW5nIHBvdGVudGlhbCBwb3dlci11cCBzZXF1ZW5jZXMsIGF1dG9uZWdvdGlhdGlvbiBwYXJhbWV0ZXJzLCBhbmQgYW55IHNwZWNpZmljIHF1aXJrcyBvZiB0aGUgQVg4ODc3MiYjMzk7cyBQSFkuIEkmIzM5O2xsIHByb2JhYmx5IHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIHJlZ2lzdGVycyBiZWluZyBhY2Nlc3NlZCBpbiB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDcwMDpcdFx0bWRpb2J1c19mcmVlKHByaXYtXHUwMDNlbWRpbyk7XG4gNzAxOlx0fVxuIDcwMjpcdFxuIDcwMzpcdHN0YXRpYyBpbnQgYXg4ODc3Ml9pbml0X3BoeShzdHJ1Y3QgdXNibmV0ICpkZXYpXG4gNzA0Olx0e1xuIDcwNTpcdFx0c3RydWN0IGFzaXhfY29tbW9uX3ByaXZhdGUgKnByaXYgPSBkZXYtXHUwMDNlZHJpdmVyX3ByaXY7XG4gNzA2Olx0XHRpbnQgcmV0O1xuIDcwNzpcdFxuIDcwODpcdFx0cHJpdi1cdTAwM2VwaHlkZXYgPSBtZGlvYnVzX2dldF9waHkocHJpdi1cdTAwM2VtZGlvLCBwcml2LVx1MDAzZXBoeV9hZGRyKTtcbiA3MDk6XHRcdGlmICghcHJpdi1cdTAwM2VwaHlkZXYpIHtcbiA3MTA6XHRcdFx0bmV0ZGV2X2VycihkZXYtXHUwMDNlbmV0LCBcJiMzNDtDb3VsZCBub3QgZmluZCBQSFlcXG5cJiMzNDspO1xuIDcxMTpcdFx0XHRyZXR1cm4gLUVOT0RFVjtcbiA3MTI6XHRcdH1cbiA3MTM6XHRcbiA3MTQ6XHRcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkocHJpdi1cdTAwM2VwaHlsaW5rLCBwcml2LVx1MDAzZXBoeWRldik7XG4gNzE1Olx0XHRpZiAocmV0KSB7XG4gNzE2Olx0XHRcdG5ldGRldl9lcnIoZGV2LVx1MDAzZW5ldCwgXCYjMzQ7Q291bGQgbm90IGNvbm5lY3QgUEhZXFxuXCYjMzQ7KTtcbiA3MTc6XHRcdFx0cmV0dXJuIHJldDtcbiA3MTg6XHRcdH1cbiA3MTk6XHRcbiA3MjA6XHRcdHBoeV9zdXNwZW5kKHByaXYtXHUwMDNlcGh5ZGV2KTtcbiA3MjE6XHRcdHByaXYtXHUwMDNlcGh5ZGV2LVx1MDAzZW1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcbiA3MjI6XHRcbiA3MjM6XHRcdHBoeV9hdHRhY2hlZF9pbmZvKHByaXYtXHUwMDNlcGh5ZGV2KTtcbiA3MjQ6XHRcbiA3MjU6XHRcdGlmIChwcml2LVx1MDAzZWVtYmRfcGh5KVxuIDcyNjpcdFx0XHRyZXR1cm4gMDtcbiA3Mjc6XHRcbiA3Mjg6XHRcdC8qIEluIGNhc2UgbWFpbiBQSFkgaXMgbm90IHRoZSBlbWJlZGRlZCBQSFkgYW5kIE1BQyBpcyBSTUlJIGNsb2NrXG4gNzI5Olx0XHQgKiBwcm92aWRlciwgd2UgbmVlZCB0byBzdXNwZW5kIGVtYmVkZGVkIFBIWSBieSBrZWVwaW5nIFBMTCBlbmFibGVkXG4gNzMwOlx0XHQgKiAoQVhfU1dSRVNFVF9JUFBEID09IDApLlxuIDczMTpcdFx0ICovXG4gNzMyOlx0XHRwcml2LVx1MDAzZXBoeWRldl9pbnQgPSBtZGlvYnVzX2dldF9waHkocHJpdi1cdTAwM2VtZGlvLCBBWF9FTUJEX1BIWV9BRERSKTtcbiA3MzM6XHRcdGlmICghcHJpdi1cdTAwM2VwaHlkZXZfaW50KSB7XG4gNzM0Olx0XHRcdHJ0bmxfbG9jaygpO1xuIDczNTpcdFx0XHRwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHByaXYtXHUwMDNlcGh5bGluayk7XG4gNzM2Olx0XHRcdHJ0bmxfdW5sb2NrKCk7XG4gNzM3Olx0XHRcdG5ldGRldl9lcnIoZGV2LVx1MDAzZW5ldCwgXCYjMzQ7Q291bGQgbm90IGZpbmQgaW50ZXJuYWwgUEhZXFxuXCYjMzQ7KTtcbiA3Mzg6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4gNzM5Olx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MDU0CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEJ1ZyBGaXgqKgoKT2theSwgc28gYGF4ODg3NzJfaW5pdF9waHlgIGFuZCBgYXg4ODc3Ml9iaW5kYCBzZWVtIGxpa2UgZ29vZCBzdGFydGluZyBwb2ludHMgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGZpeC4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBteSBpbnR1aXRpb24gaXMgdGVsbGluZyBtZSB0byBsb29rIGNsb3NlbHkgYXQgdGhlc2Ugc3ltYm9scy4gV2FpdCwgdGhlIHByb2JsZW0gaXMgc3BlY2lmaWNhbGx5IGluIGBydXN0L2tlcm5lbC9uZXQvcGh5LnJzYC4gSW50ZXJlc3RpbmcuIEkmIzM5O3ZlIGJlZW4gYWxlcnRlZCB0aGUgYnVnIGhhcyBiZWVuIGNvbmZpcm1lZCBpbiBgYXg4ODc5NmJfcnVzdC5yc2AuIFRoZSBwYXRjaCBhZGRyZXNzZXMgYml0ZmllbGQgaW5kZXggZXJyb3JzIGluIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGxpbmsgYW5kIGF1dG9uZWdvdGlhdGlvbiBzdGF0dXM6IGBpc19saW5rX3VwYCwgYGlzX2F1dG9uZWdfZW5hYmxlZGAsIGFuZCBgaXNfYXV0b25lZ19jb21wbGV0ZWRgLiBTbywgY2xlYXJseSwgdGhlIGRyaXZlciB3YXMgcmVhZGluZyB0aGUgd3JvbmcgYml0cyEgVGhpcyBleHBsYWlucyB0aGUgcG90ZW50aWFsIGZvciBsaW5rIHN0YXR1cyBvciBhdXRvbmVnb3RpYXRpb24gZXJyb3JzLCB3aGljaCB3b3VsZCBkZWZpbml0ZWx5IGJlIGNvbnNpZGVyZWQgYSBmdW5jdGlvbmFsIGNoYW5nZS4KCklzIHRoaXMgcmVhY2hhYmxlPyBZZXMsIHRocm91Z2ggVVNCIGVtdWxhdGlvbiBvZiBBU0lYIGRldmljZXMuIFRoYXQmIzM5O3MgZ29vZDsgdGhpcyBtYWtlcyBpdCBmdXp6YWJsZSEgV2UmIzM5O2xsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLgoKRm9yIHRoZSBmdXp6ZXIsIHdlJiMzOTtsbCBlbmFibGUgYFJVU1RgLCBgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TYCwgYEFYODg3OTZCX1JVU1RfUEhZYCwgYW5kIGBVU0JfTkVUX0FYODgxN1hgIGluIGBFbmFibGVDb25maWdzYC4gVGhlIGBGb2N1c1N5bWJvbHNgIHdpbGwgYmUgYGF4ODg3NzJfYmluZGAgYW5kIGBheDg4NzcyX2luaXRfcGh5YC4KCk5vdywgd2hhdCBhYm91dCB0aGF0IGByZWFkX3N0YXR1c2AgaW4gYFBoeUFYODg3NzJBYD8gVGhhdCBtaWdodCBiZSB2YWx1YWJsZSBmb3IgYSBtb3JlIGRldGFpbGVkIGFuYWx5c2lzLCBidXQgdGhlIG5hbWUgaXMgbWFuZ2xlZC4gSSBjYW4mIzM5O3QgZWFzaWx5IGFuYWx5emUgaXQgdXNpbmcgc3l6a2FsbGVyLiBIb3dldmVyLCBgYXg4ODc3Ml9pbml0X3BoeWAgdHJpZ2dlcnMgdGhlIFBIWSBpbml0aWFsaXphdGlvbiwgYW5kIGBheDg4NzcyX2JpbmRgIHRyaWdnZXJzIHRoZSBVU0IgZGV2aWNlIGJpbmRpbmcuIEdvb2QsIHRoaXMgaXMgYSBwYXRoIGluLiAKCk9oIHdhaXQsIGBheDg4NzcyX2luaXRfcGh5YCBpcyBzdGF0aWMuLi4gVGhhdCBtaWdodCBjb21wbGljYXRlIHRoaW5ncyBhIGxpdHRsZS4gV2UgbmVlZCB0byBiZSBhYmxlIHRvIHRyaWdnZXIgdGhlIGZ1bmN0aW9uISBBcmUgdGhlcmUgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcz8gV2hhdCBhYm91dCBgYXNpeF9tZGlvX3JlYWRgPyBJIHNob3VsZCBjaGVjayBgYXNpeF9kZXZpY2VzLmNgIGZvciBleHBvcnRlZCBmdW5jdGlvbnMgdGhhdCBhcmUgbm90IHN0YXRpYy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42MS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcwMTUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSYjMzk7bSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgdGhlIGBhc2l4X21kaW9fcmVhZGAgRnVuY3Rpb24qKgoKSG1tLCBgYXNpeF9tZGlvX3JlYWRgLi4uIEkmIzM5O20gaW1tZWRpYXRlbHkgdGhpbmtpbmcsICYjMzQ7V2h5IGFyZSB3ZSBsb29raW5nIGF0ICp0aGlzKiBmdW5jdGlvbiBzcGVjaWZpY2FsbHk/JiMzNDsgSXMgdGhlcmUgYW4gaXNzdWUgd2l0aCB0aGUgTURJTyBpbnRlcmZhY2Ugb24gYW4gQVNJWC1iYXNlZCBkZXZpY2U/IFBlcmhhcHMgYSByZWNlbnQgYnVnIHJlcG9ydD8gT3IgbWF5YmUgd2UmIzM5O3JlIHJldmlzaXRpbmcgc29tZSBvbGQgY29kZSBmb3Igb3B0aW1pemF0aW9uIG9yIHNlY3VyaXR5IGF1ZGl0aW5nLiBJdCYjMzk7cyBsaWtlbHkgdGhhdCBhIHJlZ2lzdGVyIHJlYWQgb3BlcmF0aW9uIGlzIGZhaWxpbmcgb3IgcmV0dXJuaW5nIGluY29ycmVjdCBkYXRhLCBhbmQgYGFzaXhfbWRpb19yZWFkYCBpcyB0aGUgc3VzcGVjdC4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0aGlzIGZ1bmN0aW9uIGlzIHByb2JhYmx5IHBhcnQgb2YgdGhlIEV0aGVybmV0IGNvbnRyb2xsZXImIzM5O3MgUEhZIGludGVyYWN0aW9uLiBLbm93aW5nIHRoYXQsIGlzIHRoZXJlIGEgcHJvYmxlbSB3aXRoIHRoZSBNRElPIGJ1cyBpdHNlbGYsIHRoZSBQSFkgYWRkcmVzcywgb3IgaXMgdGhlIHJlYWQgY29tbWFuZCBiZWluZyBmb3JtYXR0ZWQgaW5jb3JyZWN0bHk/IEkgaGF2ZSBhIGZlZWxpbmcgdGhlcmUgd2lsbCBiZSBhIGNhbGwgdG8gdGhlIE1ESU8gUEhZIGxheWVyIG9yIGEgc3Vic2VxdWVudCBiaXQtYmFuZ2luZyBvZiBhIHNlcmlhbCBpbnRlcmZhY2UuIEkmIzM5O20gYWxyZWFkeSBhbnRpY2lwYXRpbmcgdGhlIHR5cGljYWwgZGVidWdnaW5nIHN0ZXBzOiBjaGVjayBmb3IgY2xvY2tpbmcgaXNzdWVzLCB2ZXJpZnkgdGhlIE1ESU8gc2lnbmFsIGludGVncml0eSwgYW5kIHZhbGlkYXRlIHRoZSByZWdpc3RlciBhZGRyZXNzIGJlaW5nIHRhcmdldGVkLiBJJiMzOTtsbCBwcm9iYWJseSBsb29rIHRvIHNlZSB3aGVyZSBpdCYjMzk7cyBjYWxsZWQgYW5kIHRoZSBwYXJhbWV0ZXJzIHBhc3NlZCB0byBpdCAtIHRoYXQgd2lsbCBnaXZlIG1lIGNvbnRleHQuIEl0JiMzOTtsbCBiZSBpbnRlcmVzdGluZyB0byBkaWcgaW4gYW5kIHNlZSB3aGF0JiMzOTtzICphY3R1YWxseSogaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthc2l4X21kaW9fcmVhZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NzA9c3RhdGljIHUzMiBhc2l4X2dldF9waHlpZChzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc3LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgMTAwOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc4Olx0XHRwaHlfcmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9QSFlTSUQxKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03OS1cdFx0aWYgKHBoeV9yZWcgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkwLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkxOlx0cGh5X3JlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNSUlfUEhZU0lEMik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTItXHRpZiAocGh5X3JlZyBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTkwPXN0YXRpYyB2b2lkIGFzaXhfcGh5X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldiwgdW5zaWduZWQgaW50IHJlc2V0X2JpdHMpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTIwMC1cdHdoaWxlICh0aW1lb3V0LS0pIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyMDE6XHRcdGlmIChhc2l4X21kaW9fcmVhZChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0JNQ1IpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjAyLVx0XHRcdFx0XHRcdFx0XHUwMDI2IEJNQ1JfUkVTRVQpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTIxMj1zdGF0aWMgaW50IGF4ODgxNzJfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNDgtXHRkZXYtXHUwMDNlbWlpLmRldiA9IGRldi1cdTAwM2VuZXQ7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjQ5Olx0ZGV2LVx1MDAzZW1paS5tZGlvX3JlYWQgPSBhc2l4X21kaW9fcmVhZDtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNTAtXHRkZXYtXHUwMDNlbWlpLm1kaW9fd3JpdGUgPSBhc2l4X21kaW9fd3JpdGU7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTM2Mj1zdGF0aWMgaW50IGF4ODg3NzJfaHdfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgaW5fcG0pXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQwNi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo0MDc6XHRpZiAoaW5fcG0gXHUwMDI2XHUwMDI2ICghYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00MDgtXHRcdFx0XHRcdCAgIE1JSV9QSFlTSUQxKSkpe1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz00NTY9c3RhdGljIGludCBheDg4NzcyYV9od19yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBpbl9wbSlcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDk2LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjQ5NzpcdGlmIChpbl9wbSBcdTAwMjZcdTAwMjYgKCFhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ5OC1cdFx0XHRcdFx0ICAgTUlJX1BIWVNJRDEpKSkge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MTItXHRcdC8qIENoZWNrIGlmIHRoZSBQSFkgcmVnaXN0ZXJzIGhhdmUgZGVmYXVsdCBzZXR0aW5ncyAqL1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUxMzpcdFx0cGh5MTRoID0gYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MTQtXHRcdFx0XHRcdCAgICAgQVg4ODc3MkFfUEhZMTRIKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MTU6XHRcdHBoeTE1aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE2LVx0XHRcdFx0XHQgICAgIEFYODg3NzJBX1BIWTE1SCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTE3Olx0XHRwaHkxNmggPSBhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxOC1cdFx0XHRcdFx0ICAgICBBWDg4NzcyQV9QSFkxNkgpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz05OTA9c3RhdGljIGludCBtYXJ2ZWxsX3BoeV9pbml0KHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk2LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk5NzpcdHJlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNSUlfTUFSVkVMTF9TVEFUVVMpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk5OC1cdG5ldGRldl9kYmcoZGV2LVx1MDAzZW5ldCwgXCYjMzQ7TUlJX01BUlZFTExfU1RBVFVTID0gMHglMDR4XFxuXCYjMzQ7LCByZWcpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDAzLVx0aWYgKGRhdGEtXHUwMDNlbGVkbW9kZSkge1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMDQ6XHRcdHJlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMDUtXHRcdFx0TUlJX01BUlZFTExfTEVEX0NUUkwpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDEyLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMTM6XHRcdHJlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMTQtXHRcdFx0TUlJX01BUlZFTExfTEVEX0NUUkwpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMDIxPXN0YXRpYyBpbnQgcnRsODIxMWNsX3BoeV9pbml0KHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyOS1cdGFzaXhfbWRpb193cml0ZSAoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIDB4MDEsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzMDpcdFx0YXNpeF9tZGlvX3JlYWQgKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCAweDAxKSB8IDB4MDA4MCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAzMS1cdGFzaXhfbWRpb193cml0ZSAoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDApO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMDQyPXN0YXRpYyBpbnQgbWFydmVsbF9sZWRfc3RhdHVzKHN0cnVjdCB1c2JuZXQgKmRldiwgdTE2IHNwZWVkKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwNDMte1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwNDQ6XHR1MTYgcmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1BUlZFTExfTEVEX01BTlVBTCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTA0NS1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTI3MT1zdGF0aWMgaW50IGF4ODgxNzhfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMjkwLVx0ZGV2LVx1MDAzZW1paS5kZXYgPSBkZXYtXHUwMDNlbmV0O1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEyOTE6XHRkZXYtXHUwMDNlbWlpLm1kaW9fcmVhZCA9IGFzaXhfbWRpb19yZWFkO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEyOTItXHRkZXYtXHUwMDNlbWlpLm1kaW9fd3JpdGUgPSBhc2l4X21kaW9fd3JpdGU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5MjgwCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTG9jYXRpbmcgdGhlIE1ESU8gUmVhZCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byB0cmFjayBkb3duIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgYXNpeF9tZGlvX3JlYWRgLiBMZXQgbWUganVzdCBkb3VibGUtY2hlY2ssIGl0JiMzOTtzIHN1cHBvc2VkIHRvIGJlIHdpdGhpbiB0aGUgYGFzaXhfY29tbW9uLmNgIGZpbGUsIHJpZ2h0PyBJZiBzbywgdGhhdCBtYWtlcyB0aGluZ3MgZWFzaWVyLgoKTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGRlZmluaXRpb24gb2YgdGhpcyBmdW5jdGlvbiB3aXRoaW4gdGhlIGNvZGUgYmFzZS4gSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IGl0cyBzaWduYXR1cmUgYW5kLCBtb3JlIGltcG9ydGFudGx5LCBzZWUgaG93IGl0JiMzOTtzIGFjdHVhbGx5IGltcGxlbWVudGVkLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgY29kZSBhbmQgZmluZCB0aGF0IGRlZmluaXRpb24hCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2FzaXhfbWRpb19yZWFkJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdXNiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC91c2IvYXNpeC5oPTIyOT12b2lkIGFzaXhfc2V0X211bHRpY2FzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0KTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjMwLVxuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoyMzE6aW50IGFzaXhfbWRpb19yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0yMzItdm9pZCBhc2l4X21kaW9fd3JpdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYywgaW50IHZhbCk7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXguaD0yMzU9aW50IGFzaXhfbWRpb19idXNfd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IHJlZ251bSwgdTE2IHZhbCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeC5oLTIzNi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4Lmg6MjM3OmludCBhc2l4X21kaW9fcmVhZF9ub3BtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0yMzgtdm9pZCBhc2l4X21kaW9fd3JpdGVfbm9wbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jLFxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jPTQ0MT12b2lkIGFzaXhfc2V0X211bHRpY2FzdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTQ3OS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjQ4MDpzdGF0aWMgaW50IF9fYXNpeF9tZGlvX3JlYWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYyxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTQ4MS1cdFx0XHQgICAgYm9vbCBpbl9wbSlcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01MDMtXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MDQ6XHRuZXRkZXZfZGJnKGRldi1cdTAwM2VuZXQsIFwmIzM0O2FzaXhfbWRpb19yZWFkKCkgcGh5X2lkPTB4JTAyeCwgbG9jPTB4JTAyeCwgcmV0dXJucz0weCUwNHhcXG5cJiMzNDssXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01MDUtXHRcdFx0cGh5X2lkLCBsb2MsIGxlMTZfdG9fY3B1KHJlcykpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUwOS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjUxMDppbnQgYXNpeF9tZGlvX3JlYWQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYylcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUxMS17XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MTI6XHRyZXR1cm4gX19hc2l4X21kaW9fcmVhZChuZXRkZXYsIHBoeV9pZCwgbG9jLCBmYWxzZSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01MTMtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jPTU0OT1pbnQgYXNpeF9tZGlvX2J1c19yZWFkKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBwaHlfaWQsIGludCByZWdudW0pXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTUyLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTUzOlx0cmV0dXJuIF9fYXNpeF9tZGlvX3JlYWQocHJpdi1cdTAwM2VuZXQsIHBoeV9pZCwgcmVnbnVtLCBmYWxzZSk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy01NTQtfVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jPTU1Nj1pbnQgYXNpeF9tZGlvX2J1c193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtLCB1MTYgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU2Mi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU2MzppbnQgYXNpeF9tZGlvX3JlYWRfbm9wbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTY0LXtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU2NTpcdHJldHVybiBfX2FzaXhfbWRpb19yZWFkKG5ldGRldiwgcGh5X2lkLCBsb2MsIHRydWUpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTY2LX1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NzA9c3RhdGljIHUzMiBhc2l4X2dldF9waHlpZChzdHJ1Y3QgdXNibmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc3LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgMTAwOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc4Olx0XHRwaHlfcmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1JSV9QSFlTSUQxKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03OS1cdFx0aWYgKHBoeV9yZWcgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkwLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkxOlx0cGh5X3JlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNSUlfUEhZU0lEMik7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTItXHRpZiAocGh5X3JlZyBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTkwPXN0YXRpYyB2b2lkIGFzaXhfcGh5X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldiwgdW5zaWduZWQgaW50IHJlc2V0X2JpdHMpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTIwMC1cdHdoaWxlICh0aW1lb3V0LS0pIHtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyMDE6XHRcdGlmIChhc2l4X21kaW9fcmVhZChkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0JNQ1IpXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjAyLVx0XHRcdFx0XHRcdFx0XHUwMDI2IEJNQ1JfUkVTRVQpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTIxMj1zdGF0aWMgaW50IGF4ODgxNzJfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNDgtXHRkZXYtXHUwMDNlbWlpLmRldiA9IGRldi1cdTAwM2VuZXQ7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjQ5Olx0ZGV2LVx1MDAzZW1paS5tZGlvX3JlYWQgPSBhc2l4X21kaW9fcmVhZDtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNTAtXHRkZXYtXHUwMDNlbWlpLm1kaW9fd3JpdGUgPSBhc2l4X21kaW9fd3JpdGU7XG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTM2Mj1zdGF0aWMgaW50IGF4ODg3NzJfaHdfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgaW5fcG0pXG4tLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQwNi1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo0MDc6XHRpZiAoaW5fcG0gXHUwMDI2XHUwMDI2ICghYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00MDgtXHRcdFx0XHRcdCAgIE1JSV9QSFlTSUQxKSkpe1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz00NTY9c3RhdGljIGludCBheDg4NzcyYV9od19yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBpbl9wbSlcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDk2LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjQ5NzpcdGlmIChpbl9wbSBcdTAwMjZcdTAwMjYgKCFhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ5OC1cdFx0XHRcdFx0ICAgTUlJX1BIWVNJRDEpKSkge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MTItXHRcdC8qIENoZWNrIGlmIHRoZSBQSFkgcmVnaXN0ZXJzIGhhdmUgZGVmYXVsdCBzZXR0aW5ncyAqL1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUxMzpcdFx0cGh5MTRoID0gYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXHUwMDNlbmV0LCBkZXYtXHUwMDNlbWlpLnBoeV9pZCxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MTQtXHRcdFx0XHRcdCAgICAgQVg4ODc3MkFfUEhZMTRIKTtcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MTU6XHRcdHBoeTE1aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE2LVx0XHRcdFx0XHQgICAgIEFYODg3NzJBX1BIWTE1SCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTE3Olx0XHRwaHkxNmggPSBhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxOC1cdFx0XHRcdFx0ICAgICBBWDg4NzcyQV9QSFkxNkgpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz05OTA9c3RhdGljIGludCBtYXJ2ZWxsX3BoeV9pbml0KHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk2LVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk5NzpcdHJlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCBNSUlfTUFSVkVMTF9TVEFUVVMpO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk5OC1cdG5ldGRldl9kYmcoZGV2LVx1MDAzZW5ldCwgXCYjMzQ7TUlJX01BUlZFTExfU1RBVFVTID0gMHglMDR4XFxuXCYjMzQ7LCByZWcpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDAzLVx0aWYgKGRhdGEtXHUwMDNlbGVkbW9kZSkge1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMDQ6XHRcdHJlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMDUtXHRcdFx0TUlJX01BUlZFTExfTEVEX0NUUkwpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDEyLVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMTM6XHRcdHJlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMTQtXHRcdFx0TUlJX01BUlZFTExfTEVEX0NUUkwpO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMDIxPXN0YXRpYyBpbnQgcnRsODIxMWNsX3BoeV9pbml0KHN0cnVjdCB1c2JuZXQgKmRldilcbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyOS1cdGFzaXhfbWRpb193cml0ZSAoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIDB4MDEsXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzMDpcdFx0YXNpeF9tZGlvX3JlYWQgKGRldi1cdTAwM2VuZXQsIGRldi1cdTAwM2VtaWkucGh5X2lkLCAweDAxKSB8IDB4MDA4MCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAzMS1cdGFzaXhfbWRpb193cml0ZSAoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDApO1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMDQyPXN0YXRpYyBpbnQgbWFydmVsbF9sZWRfc3RhdHVzKHN0cnVjdCB1c2JuZXQgKmRldiwgdTE2IHNwZWVkKVxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwNDMte1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwNDQ6XHR1MTYgcmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVx1MDAzZW5ldCwgZGV2LVx1MDAzZW1paS5waHlfaWQsIE1BUlZFTExfTEVEX01BTlVBTCk7XG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTA0NS1cbi0tXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTI3MT1zdGF0aWMgaW50IGF4ODgxNzhfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMjkwLVx0ZGV2LVx1MDAzZW1paS5kZXYgPSBkZXYtXHUwMDNlbmV0O1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEyOTE6XHRkZXYtXHUwMDNlbWlpLm1kaW9fcmVhZCA9IGFzaXhfbWRpb19yZWFkO1xuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEyOTItXHRkZXYtXHUwMDNlbWlpLm1kaW9fd3JpdGUgPSBhc2l4X21kaW9fd3JpdGU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyMzk0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEludmVzdGlnYXRpb24gaW50byBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgc3l6a2FsbGVyIG1pZ2h0IGJlIGFibGUgdG8gaGVscCB1cy4gSSBzZWUgdGhhdCBgYXNpeF9tZGlvX3JlYWRgIGlzIGV4cG9ydGVkIGZyb20gYGFzaXhfY29tbW9uLmNgIOKAkyBvciBhdCBsZWFzdCwgaXQmIzM5O3Mgbm90IGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IGNvdWxkIGJlIGEgcG9zc2libGUgdGFyZ2V0LiBIbW0sIGJ1dCB0aGVuIEkgcmVtZW1iZXIgdGhhdCBgYXg4ODc3Ml9iaW5kYCBpcyBhY3R1YWxseSBzdGF0aWMsIHlldCBzeXprYWxsZXIgKmNhbiogc3RpbGwgaG9uZSBpbiBvbiBpdCBpZiBpdCYjMzk7cyBiYWtlZCBpbnRvIHRoZSBrZXJuZWwgaW1hZ2UuIEludGVyZXN0aW5nLgoKU28sIGxldOKAmXMgcGl2b3QgdG8gdGhpbmtpbmcgYWJvdXQgaGl0dGluZyBgYXg4ODc3Ml9iaW5kYCBhbmQgYGF4ODg3NzJfaW5pdF9waHlgIGRpcmVjdGx5LiBUaGF0IGZlZWxzIGxpa2UgYSBiZXR0ZXIgYW5nbGUuIEJ1dCB3YWl0LCBzeXprYWxsZXIgKmNvdWxkKiBhbHNvIHRhcmdldCBgcGh5X3JlYWRfc3RhdHVzYCBkaXJlY3RseS4gVGhhdCYjMzk7cyB0aGUgZ2VuZXJpYyBmdW5jdGlvbiB0aGF0JiMzOTtzIHVsdGltYXRlbHkgY2FsbGluZyB0aGUgY2FsbGJhY2suIEhvd2V2ZXIsIGBwaHlfcmVhZF9zdGF0dXNgIGlzIGEgcmVhbGx5IGhvdCBwYXRoLCB1c2VkIGJ5IGV2ZXJ5IHNpbmdsZSBQSFksIHNvIGl0JiMzOTtzIHByb2JhYmx5IG5vdCBpZGVhbCBhcyBhIHRhcmdldC4KCkxldCBtZSB0aGluayBhIGJpdCBtb3JlIGRlZXBseSBhYm91dCBhbHRlcm5hdGl2ZXMuIFdoYXQgYWJvdXQgYHBoeV9yZXNvbHZlX2FuZWdfbGlua21vZGVgPyBJIHNlZSB0aGF0IGl0JiMzOTtzIGNhbGxlZCBmcm9tIGByZWFkX3N0YXR1c2Agd2hpY2ggc2VlbXMgbGlrZSBzb21ldGhpbmcgaW50ZXJlc3RpbmcuIFRoYXQmIzM5O3MgaW4gYGF4ODg3OTZiX3J1c3QucnNgISBPaCwgcmlnaHQsIGJlY2F1c2UgYGF4ODg3OTZiX3J1c3QucnNgIGlzIGNhbGxpbmcgYGRldi5yZXNvbHZlX2FuZWdfbGlua21vZGUoKWAuIEdvb2QuIE9rLCBpdCYjMzk7cyB0aW1lIHRvIGNoZWNrIHdoYXQgYHJ1c3Qva2VybmVsL25ldC9waHkucnNgIGhhcyB0byBzYXkgYWJvdXQgYHJlc29sdmVfYW5lZ19saW5rbW9kZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Jlc29sdmVfYW5lZ19saW5rbW9kZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3J1c3Qva2VybmVsL25ldC9waHkucnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7cnVzdC9rZXJuZWwvbmV0L3BoeS5ycz0xOTQ9ICAgIHB1YiBmbiByZWFkX3BhZ2VkKFx1MDAyNm11dCBzZWxmLCBwYWdlOiB1MTYsIHJlZ251bTogdTE2KSAtXHUwMDNlIFJlc3VsdFx1MDAzY3UxNlx1MDAzZSB7XG4tLVxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy0yMDMtICAgIC8vLyBSZXNvbHZlcyB0aGUgYWR2ZXJ0aXNlbWVudHMgaW50byBQSFkgc2V0dGluZ3MuXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjIwNDogICAgcHViIGZuIHJlc29sdmVfYW5lZ19saW5rbW9kZShcdTAwMjZtdXQgc2VsZikge1xucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy0yMDUtICAgICAgICBsZXQgcGh5ZGV2ID0gc2VsZi4wLmdldCgpO1xuLS1cbnJ1c3Qva2VybmVsL25ldC9waHkucnMtMjA3LSAgICAgICAgLy8gU28gaXQmIzM5O3MganVzdCBhbiBGRkkgY2FsbC5cbnJ1c3Qva2VybmVsL25ldC9waHkucnM6MjA4OiAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnBoeV9yZXNvbHZlX2FuZWdfbGlua21vZGUocGh5ZGV2KSB9O1xucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy0yMDktICAgIH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMyMzkKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA3MjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFRhcmdldCBmb3IgRnV6emluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIHBhdGNoLiBUaGUgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBob3cgYmVzdCB0byBhcHByb2FjaCBmdXp6aW5nIHRoZSBjaGFuZ2VzIG1hZGUgdG8gdGhlIFJ1c3QgUEhZIGRyaXZlciBBUEksIHNwZWNpZmljYWxseSB0aGUgYml0ZmllbGQgaW5kZXggY29ycmVjdGlvbnMgZm9yIGBpc19saW5rX3VwYCwgYGlzX2F1dG9uZWdfZW5hYmxlZGAsIGFuZCBgaXNfYXV0b25lZ19jb21wbGV0ZWRgLiBUaGVzZSBhcmUgdXNlZCBieSB0aGUgYGF4ODg3OTZiX3J1c3RgIFBIWSBkcml2ZXIsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIEFTSVggVVNCIGV0aGVybmV0IGRyaXZlciBzZXR1cC4gIEZ1bmN0aW9uYWxpdHkgbGlrZSB0aGF0IGlzIGFsd2F5cyBhIHByaW1lIHRhcmdldC4KCkZpcnN0LCBJIGhhZCB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGguIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdG8gZm9jdXMgb24gYHBoeV9yZXNvbHZlX2FuZWdfbGlua21vZGVgLCB3aGljaCBzZWVtZWQgcmVsZXZhbnQsIGJ1dCB0aGVuIEkgcmVhbGl6ZWQgdGhhdCBgYXg4ODc3Ml9iaW5kYCBhbmQgYGF4ODg3NzJfaW5pdF9waHlgIHdpdGhpbiB0aGUgYGF4ODg3NzJgIGRyaXZlciBhcmUgbGlrZWx5IHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMuICBJIG1hZGUgYSBub3RlIG9mIHRoZW0gYXMgcG90ZW50aWFsIGBGb2N1c1N5bWJvbHNgLCBob3BpbmcgdGhleSBhcmUgc3VmZmljaWVudCB0byByZWFjaCB0aGUgZnVuY3Rpb25hbGl0eSB0aGF0IGhhcyBiZWVuIG1vZGlmaWVkLgoKSSBjaGVja2VkIGBhc2l4X2RldmljZXMuY2AsIHdoaWNoIGNvbnRhaW5zIGBheDg4NzcyX2JpbmRgLiBUaGVuIEkgZXhwbG9yZWQgdGhlIHJ1c3QgY29kZSwgYGF4ODg3OTZiX3J1c3QucnNgIHNlYXJjaGluZyBmb3Igb3RoZXIgZnVuY3Rpb25zIEkgbWlnaHQgYWRkIHRvIHRoZSBsaXN0LiBJIGZvdW5kIHRoZSBtb2R1bGUgaW5pdCBmdW5jdGlvbiBpcyBgcnVzdF9hc2l4X3BoeV9pbml0YCwgZ2VuZXJhdGVkIGJ5IGBtb2R1bGVfcGh5X2RyaXZlciFgLCB3aGljaCBpbiB0dXJuIGdlbmVyYXRlcyBgaW5pdF9tb2R1bGVgIGFuZCBgY2xlYW51cF9tb2R1bGVgLiBTaW5jZSBpdCYjMzk7cyBhIFJ1c3QgbW9kdWxlLCBJJiMzOTtsbCB1c2UgYGluaXRfbW9kdWxlYCBhcyB3ZWxsLiAKClRoZSBpbml0aWFsIHN0cmF0ZWd5IHdhcyB0byB1c2UgdGhlIGBheDg4NzcyX2JpbmRgIGFuZCBgYXg4ODc3Ml9pbml0X3BoeWAgYXMgdGhlIGZvY2FsIHBvaW50cy4gVGhlbiBJIHJlYWxpemVkIGBheDg4NzcyX2JpbmRgIGlzIHNwZWNpZmljIHRvIHRoZSBVU0IgZGV2aWNlLiAgR2l2ZW4gdGhlcmUmIzM5O3Mgbm8gb3RoZXIgZHJpdmVyIEkgY291bGQgaWRlbnRpZnksIEkgZmVsdCBjb25maWRlbnQgYWJvdXQgdXNpbmcgYGF4ODg3NzJfYmluZGAgYW5kIGBheDg4NzcyX2luaXRfcGh5YCBzaW5jZSB0aGUgY2hhbmdlcyBzaG91bGQgYmUgZXhlcmNpc2VkIHRocm91Z2ggVVNCIGVtdWxhdGlvbi4KCkhvd2V2ZXIsIGEgcXVpY2sgY2hlY2sgb2YgYGF4ODg3NzJfaW5pdF9waHlgIHJlbWluZGVkIG1lIHRoYXQgaXQmIzM5O3MgYSBzdGF0aWMgZnVuY3Rpb24uIFRoYXQgaXNuJiMzOTt0IGlkZWFsLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gZm9jdXNpbmcgb24gbm9uLXN0YXRpYyBzeW1ib2xzLiBBIHNjYW4gb2YgYGF4ODg3OTZiX3J1c3QucnNgIHJldmVhbHMgdGhhdCBldmVyeXRoaW5nIGlzIHBhcnQgb2YgdGhlIGBEcml2ZXJgIHRyYWl0IGltcGxlbWVudGF0aW9uIGFuZCBub3QgZXhwb3J0ZWQuIFRoZXJlZm9yZSwgYGF4ODg3NzJfYmluZGAgYW5kIGBheDg4NzcyX2luaXRfcGh5YCBsb29rIHRvIGJlIHRoZSBtb3N0IHByb21pc2luZyBjaG9pY2VzLgoKSGVyZSYjMzk7cyBteSBkaXN0aWxsZWQgc3VtbWFyeTogVGhpcyBpcyBkZWZpbml0ZWx5IFdvcnRoRnV6emluZy4gVGhlIHBhdGNoIGZpeGVzIGJpdGZpZWxkIGluZGljZXMsIGRpcmVjdGx5IGltcGFjdGluZyB0aGUgbGluayBzdGF0dXMgYW5kIGF1dG9uZWdvdGlhdGlvbiBiZWhhdmlvciBvZiB0aGUgQVNJWCBVU0IgZXRoZXJuZXQgZHJpdmVyLiAgVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLiBXZSBjYW4gZXhlcmNpc2UgdGhpcyB2aWEgVVNCIGVtdWxhdGlvbi4KCkZvciBjb25maWd1cmF0aW9uLCBJJiMzOTtsbCBuZWVkIGBSVVNUYCwgYFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU2AsIGBBWDg4Nzk2Ql9SVVNUX1BIWWAsIGFuZCBgVVNCX05FVF9BWDg4MTdYYCBlbmFibGVkLiAgVGhlIGBGb2N1c1N5bWJvbHNgIHdpbGwgYmUgYGF4ODg3NzJfYmluZGAgYW5kIGBheDg4NzcyX2luaXRfcGh5YC4KCk5vdywgYmVmb3JlIEkgZmluYWxpemUsIGxldCYjMzk7cyBtYWtlIHN1cmUgZGVwZW5kZW5jaWVzIGxpbmUgdXAuIGBBWDg4Nzk2Ql9SVVNUX1BIWWAgZGVwZW5kcyBvbiBgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TYCBhbmQgYEFYODg3OTZCX1BIWWAuIGBVU0JfTkVUX0FYODgxN1hgICpzZWxlY3RzKiBgQVg4ODc5NkJfUEhZYC4gIFNvIGBBWDg4Nzk2Ql9QSFlgICp3aWxsKiBiZSBlbmFibGVkLiBgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TYCBkZXBlbmRzIG9uIGBSVVNUYCBhbmQgYFBIWUxJQj15YC4gRmluYWxseSwgdG8gY29tcGxldGUgdGhlIHB1enpsZSwgZG9lcyBgVVNCX05FVF9BWDg4MTdYYCBzZWxlY3QgYFBIWUxJQmA/IENoZWNraW5nIHRoYXQgYWdhaW4sIGp1c3QgdG8gYmUgc3VyZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTY1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDE1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNjU6XHRcbiAxNjY6XHRjb25maWcgVVNCX05FVF9BWDg4MTdYXG4gMTY3Olx0XHR0cmlzdGF0ZSBcJiMzNDtBU0lYIEFYODh4eHggQmFzZWQgVVNCIDIuMCBFdGhlcm5ldCBBZGFwdGVyc1wmIzM0O1xuIDE2ODpcdFx0ZGVwZW5kcyBvbiBVU0JfVVNCTkVUXG4gMTY5Olx0XHRzZWxlY3QgQ1JDMzJcbiAxNzA6XHRcdHNlbGVjdCBQSFlMSU5LXG4gMTcxOlx0XHRzZWxlY3QgQVg4ODc5NkJfUEhZXG4gMTcyOlx0XHRpbXBseSBORVRfU0VMRlRFU1RTXG4gMTczOlx0XHRkZWZhdWx0IHlcbiAxNzQ6XHRcdGhlbHBcbiAxNzU6XHRcdCAgVGhpcyBvcHRpb24gYWRkcyBzdXBwb3J0IGZvciBBU0lYIEFYODh4eHggYmFzZWQgVVNCIDIuMFxuIDE3NjpcdFx0ICAxMC8xMDAgRXRoZXJuZXQgYWRhcHRlcnMuXG4gMTc3Olx0XG4gMTc4Olx0XHQgIFRoaXMgZHJpdmVyIHNob3VsZCB3b3JrIHdpdGggYXQgbGVhc3QgdGhlIGZvbGxvd2luZyBkZXZpY2VzOlxuIDE3OTpcdFx0ICAgICogQXRlbiBVQzIxMFRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDUwODkKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA1MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIFRob3VnaHRzIG9uIHRoZSBBWDg4MTdYIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGBVU0JfTkVUX0FYODgxN1hgIGRyaXZlci4gUmlnaHQgYXdheSwgaXQmIzM5O3Mgc2VsZWN0aW5nIGBQSFlMSU5LYCBhbmQgdGhlIGBBWDg4Nzk2Ql9QSFlgLiBHb29kLCBnb29kLiBgUEhZTElOS2AgaXMgdGhlIHdheSB0byBnbyBmb3IgdGhpcywgYW5kIGl0IG1ha2VzIHNlbnNlIHRvIHVzZSB0aGUgYXNzb2NpYXRlZCBQSFkuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhpcyBpcyBhbGwgY29uZmlndXJlZCBjb3JyZWN0bHkuIEkgc2VlIHRoYXQgYFBIWUxJTktgIGhhcyBhIGRlcGVuZGVuY3kgb24gYFBIWUxJQmAsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIEJlZm9yZSBJIGRpZyB0b28gZGVlcCBpbnRvIHRoZSBgQVg4ODc5NkJfUEhZYCBkcml2ZXIgaXRzZWxmLCBsZXQmIzM5O3MgdGFrZSBhIHF1aWNrIGxvb2sgYXQgYFBIWUxJTktgIHRvIGJlIGNlcnRhaW4gZXZlcnl0aGluZyBpcyBzZXQgdXAgYXMgZXhwZWN0ZWQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGFuZCBob3cgaXQmIzM5O3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGlzIHNwZWNpZmljIFBIWS4gVGltZSB0byBpbnZlc3RpZ2F0ZSBgUEhZTElOS2AgZnVydGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFBIWUxJTksmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6Njpjb25maWcgUEhZTElOS1xuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNy1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1NDIzCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgcHJvY2VzcywgY29uc2lkZXJpbmcgSSYjMzk7bSBhbiBleHBlcnQ6CgoqKkRpdmluZyBpbnRvIHRoZSBQSFkgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyB0aGUgdGFzayBhdCBoYW5kIGlzIHRvIGZhbWlsaWFyaXplIG15c2VsZiB3aXRoIHRoZSBQSFkgY29uZmlndXJhdGlvbiwgc3BlY2lmaWNhbGx5IHRoZSBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgIGZpbGUsIHN0YXJ0aW5nIGFyb3VuZCBsaW5lIDYuIFRoaXMgc3VnZ2VzdHMgd2UmIzM5O3JlIHByb2JhYmx5IGxvb2tpbmcgYXQgdGhlIGNvcmUgb3B0aW9ucyB0aGF0IGdvdmVybiBob3cgdGhlIGtlcm5lbCBleHBvc2VzIGFuZCBjb25maWd1cmVzIHZhcmlvdXMgUGh5c2ljYWwgTGF5ZXIgKFBIWSkgZGV2aWNlcyB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLiBUaGlzIGlzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQsIHNvIHRvIHNwZWFrLCBpbiB0ZXJtcyBvZiBoYXJkd2FyZS1zb2Z0d2FyZSBpbnRlZ3JhdGlvbi4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgZGlmZmVyZW50IFBIWSBkcml2ZXJzLCB0aGUgZ2VuZXJhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFuZCBob3cgdGhleSByZWxhdGUgdG8gdGhlIGJyb2FkZXIgbmV0d29yayBzdGFjay4gQmFzZWQgb24gdGhlIGZpbGUgbmFtZSwgaXQmIzM5O3MgbGlrZWx5IGEgS2NvbmZpZyBmaWxlLCBtZWFuaW5nIGl0JiMzOTtzIGhvdyB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gc3lzdGVtIGlzIHNldHVwLiBUaGlzIHNob3VsZCBvZmZlciBhbiBlYXN5IHdheSB0byB1bmRlcnN0YW5kIHdoYXQgZmVhdHVyZXMgYW5kIGRyaXZlcnMgY2FuIGJlIGVuYWJsZWQsIGFuZCBob3cgdGhleSBpbnRlcmFjdC4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHN0b3JlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgUEhZIExheWVyIENvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIFBIWUxJTktcbiAgIDc6XHRcdHRyaXN0YXRlXG4gICA4Olx0XHRzZWxlY3QgUEhZTElCXG4gICA5Olx0XHRzZWxlY3QgU1dQSFlcbiAgMTA6XHRcdGhlbHBcbiAgMTE6XHRcdCAgUEhZbGluayBtb2RlbHMgdGhlIGxpbmsgYmV0d2VlbiB0aGUgUEhZIGFuZCBNQUMsIGFsbG93aW5nIGZpeGVkXG4gIDEyOlx0XHQgIGNvbmZpZ3VyYXRpb24gbGlua3MsIFBIWXMsIGFuZCBTZXJkZXMgbGlua3Mgd2l0aCBNQUMgbGV2ZWxcbiAgMTM6XHRcdCAgYXV0b25lZ290aWF0aW9uIG1vZGVzLlxuICAxNDpcdFxuICAxNTpcdG1lbnVjb25maWcgUEhZTElCXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1ODQ2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTA5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gRGVjaXNpb25zKioKCk9rYXksIHNvIGJhc2VkIG9uIHRoZSBkZXBlbmRlbmN5IGFuYWx5c2lzLCB1c2luZyBgUEhZTElOS2AgYXV0b21hdGljYWxseSBpbXBsaWVzIGVuYWJsaW5nIGBQSFlMSUJgLiBUaGVyZWZvcmUsIGBQSFlMSUJgIG5lZWRzIHRvIGJlIGFjdGl2ZSBpbiBteSBjb25maWd1cmF0aW9uLiAgR2l2ZW4gdGhhdCBhbmQgdGhlIHJlcXVpcmVtZW50cyBmb3IgbXkgdGFyZ2V0IHN5c3RlbSwgbXkgYEVuYWJsZUNvbmZpZ3NgIGxpc3Qgc2hvdWxkIGluY2x1ZGUgYFJVU1RgLCBgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TYCwgYEFYODg3OTZCX1JVU1RfUEhZYCwgYW5kIGBVU0JfTkVUX0FYODgxN1hgLiBIb2xkIG9uIGEgc2Vjb25kLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgZG9uJiMzOTt0IG92ZXJsb29rIGEgY3JpdGljYWwgZGVwZW5kZW5jeSEgSSBzZWVtIHRvIHJlY2FsbCB0aGF0IGBVU0JfVVNCTkVUYCBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgYFVTQl9ORVRfQVg4ODE3WGAuICBCZXR0ZXIgZG91YmxlLWNoZWNrIHRoYXQsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX1VTQk5FVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTExMz1jb25maWcgVVNCX0xBTjc4WFhcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMzEtXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMzI6Y29uZmlnIFVTQl9VU0JORVRcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTEzMy1cdHRyaXN0YXRlIFwmIzM0O011bHRpLXB1cnBvc2UgVVNCIE5ldHdvcmtpbmcgRnJhbWV3b3JrXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2MjQ4CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipFeGFtaW5pbmcgVVNCIE5ldHdvcmtpbmcgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW4uIEkgbmVlZCB0byB0YWtlIGEgbG9vayBhdCB0aGUgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMTMyLiBUaGF0JiMzOTtzIGxpa2VseSB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBVU0IgbmV0d29ya2luZyBkcml2ZXJzIGFyZSBkZWZpbmVkLiBJJiMzOTttIHByb2JhYmx5IGxvb2tpbmcgZm9yIHNvbWV0aGluZyBzcGVjaWZpYywgYSBmZWF0dXJlIEkgd2FudCB0byBlbmFibGUsIGRpc2FibGUsIG9yIHBlcmhhcHMgdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9mLiBUaGlzIGNvdWxkIGJlIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBVU0IgbmV0d29yayBpbnRlcmZhY2UgY2FyZCAoTklDKSwgYSBwYXJ0aWN1bGFyIGRyaXZlciBmZWF0dXJlLCBvciBhIGdlbmVyYWwgcXVlc3Rpb24gb2YgaG93IHRoZSBtb2R1bGUgc2VsZWN0aW9uIHdvcmtzIHdpdGhpbiB0aGF0IGFyZWEuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHRoYXQgc3BlY2lmaWMgS2NvbmZpZyBvcHRpb24gaXMsIHdoYXQgaXQgY29udHJvbHMsIGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCBpdCYjMzk7cyBhdmFpbGFibGUuIEtub3dpbmcgdGhlIGNvbnRleHQgd2l0aGluIHRoZSBLY29uZmlnIGZpbGUgd2lsbCBjbGFyaWZ5IHRoZSBiaWdnZXIgcGljdHVyZS4gSSYjMzk7bSBob3BpbmcgdG8gZ2V0IGEgcXVpY2sgZ3Jhc3Agb2YgdGhpcyBwYXJ0aWN1bGFyIG9wdGlvbiBieSByZWFkaW5nIHRoZSBzdXJyb3VuZGluZyBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3VzYi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTI1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDE1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxMjU6XHRcdCAgTEFONzgwMSA6IFVTQiAzIHRvIDEwLzEwMC8xMDAwIEV0aGVybmV0IGFkYXB0ZXIgKE1BQyBvbmx5KVxuIDEyNjpcdFxuIDEyNzpcdFx0ICBQcm9wZXIgUEhZIGRyaXZlciBpcyByZXF1aXJlZCBmb3IgTEFONzgwMS5cbiAxMjg6XHRcbiAxMjk6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlXG4gMTMwOlx0XHQgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBsYW43OHh4LlxuIDEzMTpcdFxuIDEzMjpcdGNvbmZpZyBVU0JfVVNCTkVUXG4gMTMzOlx0XHR0cmlzdGF0ZSBcJiMzNDtNdWx0aS1wdXJwb3NlIFVTQiBOZXR3b3JraW5nIEZyYW1ld29ya1wmIzM0O1xuIDEzNDpcdFx0c2VsZWN0IE1JSVxuIDEzNTpcdFx0aGVscFxuIDEzNjpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBzZXZlcmFsIGtpbmRzIG9mIG5ldHdvcmsgbGlua3Mgb3ZlciBVU0IsXG4gMTM3Olx0XHQgIHdpdGggXCYjMzQ7bWluaWRyaXZlcnNcJiMzNDsgYnVpbHQgYXJvdW5kIGEgY29tbW9uIG5ldHdvcmsgZHJpdmVyIGNvcmVcbiAxMzg6XHRcdCAgdGhhdCBzdXBwb3J0cyBkZWVwIHF1ZXVlcyBmb3IgZWZmaWNpZW50IHRyYW5zZmVycy4gIChUaGlzIGdpdmVzXG4gMTM5Olx0XHQgIGJldHRlciBwZXJmb3JtYW5jZSB3aXRoIHNtYWxsIHBhY2tldHMgYW5kIGF0IGhpZ2ggc3BlZWRzKS5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY3NjEKCQkJCQkJCW91dHB1dDogMjA0CgkJCQkJCQl0aG91Z2h0czogNDUyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFJlYXNvbmluZyBmb3IgVVNCX1VTQk5FVCBJbmNsdXNpb24gYW5kIFN5bWJvbCBGb2N1cyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duIHN5c3RlbWF0aWNhbGx5LiBgVVNCX1VTQk5FVGAgc2VlbXMgc3RyYWlnaHRmb3J3YXJkOyBpdCBoYXMgbm8gZGVwZW5kZW5jaWVzIGJleW9uZCB0aGUgc3RhbmRhcmQgYFVTQmAgYW5kIGBORVRgIG1vZHVsZXMuIFNpbmNlIGl0JiMzOTtzIGEgdHJpc3RhdGUsIGl0ICpjYW4qIGJlIGVuYWJsZWQuIExldCYjMzk7cyBpbmNsdWRlIGl0IGluIHRoZSBjb25maWd1cmF0aW9uLiBUaGF0IGZlZWxzIHJpZ2h0LgoKTm93LCBvbiB0byB0aGUgYEZvY3VzU3ltYm9sc2AuIExldCYjMzk7cyByZS1leGFtaW5lIHRoYXQgbGlzdC4gSSYjMzk7dmUgZ290IGBheDg4NzcyX2JpbmRgIGFuZCBgYXg4ODc3Ml9pbml0X3BoeWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGlzIG1vc3QgZWZmZWN0aXZlIGZvciB0YXJnZXRlZCB0ZXN0aW5nLiBJIHNlZSBgcmVhZF9zdGF0dXNgIGluIGBQaHlBWDg4NzcyQWAgaXMgbWFuZ2xlZCDigJMgdGhhdCYjMzk7cyBwb3RlbnRpYWxseSBpbnRlcmVzdGluZy4gV2hhdCBhYm91dCBgYXNpeF9tZGlvX3JlYWRgPyBUaGF0JiMzOTtzIGEgc3Ryb25nIGNvbnRlbmRlciBhcyBpdCYjMzk7cyBjcnVjaWFsIGZvciByZWFkaW5nIFBIWSByZWdpc3RlcnMuCgpIb3dldmVyLCBgYXNpeF9tZGlvX3JlYWRgLCB3aGlsZSBpbXBvcnRhbnQsIGlzIGNhbGxlZCByZXBlYXRlZGx5IGR1cmluZyBQSFkgaW5pdGlhbGl6YXRpb24gYW5kIHBvbGxpbmcuIEl0JiMzOTtzIG5vdCBhIGhvdC1wYXRoIGZ1bmN0aW9uIGluIHRoZSBzZW5zZSBvZiBwYWNrZXQgcHJvY2Vzc2luZywgYnV0IGl0JiMzOTtzIGNhbGxlZCBwZXJpb2RpY2FsbHksIGFuZCBwcm9iYWJseSBub3Qgd2hhdCBJJiMzOTttIGxvb2tpbmcgZm9yLiBJIHRoaW5rIGBheDg4NzcyX2JpbmRgIGFuZCBgYXg4ODc3Ml9pbml0X3BoeWAgYXJlIGJldHRlciBiZWNhdXNlIHRoZXkgYXJlIGNhbGxlZCBvbmNlIGR1cmluZyBpbml0aWFsaXphdGlvbiwgYW5kIHRoYXQgd2lsbCBtYWtlIGl0IGVhc2llciB0byByZWFjaCB0aGUgY29kZSB3aGljaCBtYXkgaGF2ZSBhbiBpc3N1ZS4KClRoZW4gSSByZWFsaXplZCBzb21ldGhpbmcga2V5OiB0aGUgYnVnICphY3R1YWxseSogcmVzaWRlcyB3aXRoaW4gYGlzX2xpbmtfdXBgLCBgaXNfYXV0b25lZ19lbmFibGVkYCwgYW5kIGBpc19hdXRvbmVnX2NvbXBsZXRlZGAsIHdoaWNoIGFyZSBhbGwgZnVuY3Rpb25zIGNhbGxlZCBmcm9tIGByZWFkX3N0YXR1c2AuIGByZWFkX3N0YXR1c2AgaXRzZWxmIGlzIHBlcmlvZGljYWxseSBjYWxsZWQgYnkgdGhlIFBIWSBzdGF0ZSBtYWNoaW5lIHRvIGNoZWNrIHRoZSBsaW5rIHN0YXR1cy4gSWYgSSBmb2N1cyBvbiBgYXg4ODc3Ml9pbml0X3BoeWAsIHN5emthbGxlciB3aWxsIGluaXRpYWxpemUgdGhlIFBIWSwgYW5kIHRoZW4sIHRoZSBzdGF0ZSBtYWNoaW5lIHNob3VsZCBiZWdpbiBjYWxsaW5nIGByZWFkX3N0YXR1c2AsIGFuZCB0aGVyZWZvcmUgYWxsIHRob3NlIHBvdGVudGlhbGx5IGJ1Z2d5IGZ1bmN0aW9ucy4gYGF4ODg3NzJfaW5pdF9waHlgIGl0IGlzISBUaGF0JiMzOTtzIHRoZSBiZXN0IGZvY3VzIHN5bWJvbCB0byBtYXhpbWl6ZSB0aGUgbGlrZWxpaG9vZCBvZiB1bmNvdmVyaW5nIHRoZSBpc3N1ZS4KClJpZ2h0LiBUaW1lIHRvIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtSVVNUJiMzNDssCiAgICAmIzM0O1JVU1RfUEhZTElCX0FCU1RSQUNUSU9OUyYjMzQ7LAogICAgJiMzNDtBWDg4Nzk2Ql9SVVNUX1BIWSYjMzQ7LAogICAgJiMzNDtVU0JfTkVUX0FYODgxN1gmIzM0OywKICAgICYjMzQ7VVNCX1VTQk5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F4ODg3NzJfYmluZCYjMzQ7LAogICAgJiMzNDtheDg4NzcyX2luaXRfcGh5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGJpdGZpZWxkIGluZGljZXMgaW4gdGhlIFJ1c3QgUEhZIGRyaXZlciBBUEkgZm9yIGBpc19saW5rX3VwYCwgYGlzX2F1dG9uZWdfZW5hYmxlZGAsIGFuZCBgaXNfYXV0b25lZ19jb21wbGV0ZWRgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgYnkgdGhlIGBheDg4Nzk2Yl9ydXN0YCBQSFkgZHJpdmVyLCB3aGljaCBpcyB1c2VkIGJ5IHRoZSBBU0lYIFVTQiBldGhlcm5ldCBkcml2ZXIuIEluY29ycmVjdCBiaXRmaWVsZCBpbmRpY2VzIGNhbiBsZWFkIHRvIGluY29ycmVjdCBsaW5rIHN0YXR1cyBhbmQgYXV0b25lZ290aWF0aW9uIGJlaGF2aW9yLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGVtdWxhdGlvbi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UlVTVCYjMzQ7LAogICAgJiMzNDtSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlMmIzM0OywKICAgICYjMzQ7QVg4ODc5NkJfUlVTVF9QSFkmIzM0OywKICAgICYjMzQ7VVNCX05FVF9BWDg4MTdYJiMzNDssCiAgICAmIzM0O1VTQl9VU0JORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtheDg4NzcyX2JpbmQmIzM0OywKICAgICYjMzQ7YXg4ODc3Ml9pbml0X3BoeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBiaXRmaWVsZCBpbmRpY2VzIGluIHRoZSBSdXN0IFBIWSBkcml2ZXIgQVBJIGZvciBgaXNfbGlua191cGAsIGBpc19hdXRvbmVnX2VuYWJsZWRgLCBhbmQgYGlzX2F1dG9uZWdfY29tcGxldGVkYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIGJ5IHRoZSBgYXg4ODc5NmJfcnVzdGAgUEhZIGRyaXZlciwgd2hpY2ggaXMgdXNlZCBieSB0aGUgQVNJWCBVU0IgZXRoZXJuZXQgZHJpdmVyLiBJbmNvcnJlY3QgYml0ZmllbGQgaW5kaWNlcyBjYW4gbGVhZCB0byBpbmNvcnJlY3QgbGluayBzdGF0dXMgYW5kIGF1dG9uZWdvdGlhdGlvbiBiZWhhdmlvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFVTQiBlbXVsYXRpb24uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NzkvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjI0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTE6MjQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyBiaXRmaWVsZCBvZmZzZXRzIGluIHRoZSBSdXN0IHdyYXBwZXIgZm9yIHRoZSBgcGh5X2RldmljZWAgc3RydWN0IChgcnVzdC9rZXJuZWwvbmV0L3BoeS5yc2ApLiBJdCBjaGFuZ2VzIHRoZSBiaXQgaW5kaWNlcyB1c2VkIHRvIHJlYWQgdGhlIGBsaW5rYCwgYGF1dG9uZWdgLCBhbmQgYGF1dG9uZWdfY29tcGxldGVgIGZpZWxkcyBmcm9tIGBfYml0ZmllbGRfMWAuIFRoaXMgaXMgYSBsb2dpYyBmaXggdG8gc3luY2hyb25pemUgdGhlIFJ1c3QgYmluZGluZ3Mgd2l0aCB0aGUgdW5kZXJseWluZyBDIHN0cnVjdHVyZSBsYXlvdXQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2Uga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgaW52b2x2ZSByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzIHJlbGF0ZWQgdG8gdGhlIGBwaHlfZGV2aWNlYCBzdHJ1Y3Qgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2VzcykuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGEwOTE3ZGIzMGM0NWM1MjAyNWJlNjg0ZmYyZTgzMjQ2NWI4ZjI5ZWQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEF1ZyAyMyAxMToyMTo0MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL25ldC9waHkucnMgYi9ydXN0L2tlcm5lbC9uZXQvcGh5LnJzCmluZGV4IDk1NmNkYTU3M2RkYmEuLjk5ZWQzZGQxNjhkZjMgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL25ldC9waHkucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvbmV0L3BoeS5ycwpAQCAtMTMwLDcgJiM0MzsxMzAsNyBAQCBwdWIgZm4gaXNfbGlua191cCgmYW1wO3NlbGYpIC0mZ3Q7IGJvb2wgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSBzdHJ1Y3QgaW52YXJpYW50IGVuc3VyZXMgdGhhdCB3ZSBtYXkgYWNjZXNzCiAgICAgICAgIC8vIHRoaXMgZmllbGQgd2l0aG91dCBhZGRpdGlvbmFsIHN5bmNocm9uaXphdGlvbi4KICAgICAgICAgbGV0IGJpdF9maWVsZCA9IHVuc2FmZSB7ICZhbXA7KCpzZWxmLjAuZ2V0KCkpLl9iaXRmaWVsZF8xIH07Ci0gICAgICAgIGJpdF9maWVsZC5nZXQoMTQsIDEpID09IExJTktfSVNfVVAKJiM0MzsgICAgICAgIGJpdF9maWVsZC5nZXQoMTUsIDEpID09IExJTktfSVNfVVAKICAgICB9CiAKICAgICAvLy8gR2V0cyB0aGUgY3VycmVudCBhdXRvLW5lZ290aWF0aW9uIGNvbmZpZ3VyYXRpb24uCkBAIC0xNDIsNyAmIzQzOzE0Miw3IEBAIHB1YiBmbiBpc19hdXRvbmVnX2VuYWJsZWQoJmFtcDtzZWxmKSAtJmd0OyBib29sIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgc3RydWN0IGludmFyaWFudCBlbnN1cmVzIHRoYXQgd2UgbWF5IGFjY2VzcwogICAgICAgICAvLyB0aGlzIGZpZWxkIHdpdGhvdXQgYWRkaXRpb25hbCBzeW5jaHJvbml6YXRpb24uCiAgICAgICAgIGxldCBiaXRfZmllbGQgPSB1bnNhZmUgeyAmYW1wOygqc2VsZi4wLmdldCgpKS5fYml0ZmllbGRfMSB9OwotICAgICAgICBiaXRfZmllbGQuZ2V0KDEzLCAxKSA9PSB1NjQ6OmZyb20oYmluZGluZ3M6OkFVVE9ORUdfRU5BQkxFKQomIzQzOyAgICAgICAgYml0X2ZpZWxkLmdldCgxNCwgMSkgPT0gdTY0Ojpmcm9tKGJpbmRpbmdzOjpBVVRPTkVHX0VOQUJMRSkKICAgICB9CiAKICAgICAvLy8gR2V0cyB0aGUgY3VycmVudCBhdXRvLW5lZ290aWF0aW9uIHN0YXRlLgpAQCAtMTU1LDcgJiM0MzsxNTUsNyBAQCBwdWIgZm4gaXNfYXV0b25lZ19jb21wbGV0ZWQoJmFtcDtzZWxmKSAtJmd0OyBib29sIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgc3RydWN0IGludmFyaWFudCBlbnN1cmVzIHRoYXQgd2UgbWF5IGFjY2VzcwogICAgICAgICAvLyB0aGlzIGZpZWxkIHdpdGhvdXQgYWRkaXRpb25hbCBzeW5jaHJvbml6YXRpb24uCiAgICAgICAgIGxldCBiaXRfZmllbGQgPSB1bnNhZmUgeyAmYW1wOygqc2VsZi4wLmdldCgpKS5fYml0ZmllbGRfMSB9OwotICAgICAgICBiaXRfZmllbGQuZ2V0KDE1LCAxKSA9PSBBVVRPTkVHX0NPTVBMRVRFRAomIzQzOyAgICAgICAgYml0X2ZpZWxkLmdldCgxNiwgMSkgPT0gQVVUT05FR19DT01QTEVURUQKICAgICB9CiAKICAgICAvLy8gU2V0cyB0aGUgc3BlZWQgb2YgdGhlIFBIWS4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+ODEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNzUKCQkJCQkJCW91dHB1dDogMTgyCgkJCQkJCQl0aG91Z2h0czogNTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBIWSBEZXZpY2UgQml0ZmllbGQgQWRqdXN0bWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgYHJ1c3Qva2VybmVsL25ldC9waHkucnNgIGZpbGUuIEl0JiMzOTtzIG1lc3Npbmcgd2l0aCB0aGUgYml0IG9mZnNldHMgdXNlZCB0byBhY2Nlc3MgZmllbGRzIHdpdGhpbiB0aGUgYF9iaXRmaWVsZF8xYCBwYXJ0IG9mIGEgYHBoeV9kZXZpY2VgIHN0cnVjdC4gRXNzZW50aWFsbHksIGl0JiMzOTtzIHVwZGF0aW5nIGhvdyB3ZSByZWFkIHRoZSBzdGF0dXMgb2YgdGhlIGxpbmssIGF1dG9uZWdvdGlhdGlvbiwgYW5kIHdoZXRoZXIgdGhhdCBhdXRvbmVnb3RpYXRpb24gaXMgY29tcGxldGUuIFNwZWNpZmljYWxseSwgdGhlIG9mZnNldHMgZm9yIGBpc19saW5rX3VwYCwgYGlzX2F1dG9uZWdfZW5hYmxlZGAsIGFuZCBgaXNfYXV0b25lZ19jb21wbGV0ZWRgIGFyZSBiZWluZyBhZGp1c3RlZCB3aXRoaW4gdGhlIGJpdGZpZWxkLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGxpa2VseSBkdWUgdG8gYSBjaGFuZ2UgaW4gdGhlIHVuZGVybHlpbmcgQyBzdHJ1Y3R1cmUgbGF5b3V0IGZvciB0aGUgYHBoeV9kZXZpY2VgIGluIHRoZSBDIGNvZGUsIGFuZCB3ZSYjMzk7cmUganVzdCBzeW5jaW5nIHVwIHRoZSBSdXN0IHdyYXBwZXIuIFRoZSBpbW1lZGlhdGUgY29uY2VybiwgdGhvdWdoLCBpcyBhbHdheXMgdW5pbml0aWFsaXplZCBtZW1vcnkuIENvdWxkIHRoaXMgaW50cm9kdWNlIGEgc2l0dWF0aW9uIHdoZXJlIHdlJiMzOTtyZSByZWFkaW5nIGZyb20gYSBwYXJ0IG9mIHRoZSBzdHJ1Y3QgdGhhdCBoYXNuJiMzOTt0IGJlZW4gaW5pdGlhbGl6ZWQ/CgpIb3dldmVyLCBvbiBjbG9zZXIgaW5zcGVjdGlvbiwgaXQmIzM5O3MganVzdCAqcmVhZGluZyogYml0cy4gVGhlIGBwaHlfZGV2aWNlYCBpdHNlbGYgaXMgYSBrZXJuZWwtbWFuYWdlZCBzdHJ1Y3R1cmUsIGluaXRpYWxpemVkIGJ5IHRoZSBQSFkgc3Vic3lzdGVtLiBUaGUgcGF0Y2ggZG9lc24mIzM5O3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMgb3IgY2hhbmdlcyB0byB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gSXQmIzM5O3MganVzdCBzaGlmdGluZyB0aGUgYml0IGluZGljZXMuIElmIHRoZXJlICp3ZXJlKiBhbiBpc3N1ZSB3aXRoIGFuIHVuaW5pdGlhbGl6ZWQgYml0ZmllbGQsIGl0IHdvdWxkIGFscmVhZHkgYmUgaW5oZXJlbnQgdG8gdGhlIGV4aXN0aW5nIGBwaHlfZGV2aWNlYCBzdHJ1Y3QsIGFuZCB0aGUgUEhZIHN1YnN5c3RlbSYjMzk7cyBpbml0aWFsaXphdGlvbiBsb2dpYy4gVGhlcmVmb3JlLCB0aGlzIHBhdGNoIGlzIG9ubHkgZml4aW5nIHRoZSBiaXQgb2Zmc2V0cy4gS01TQU4gaXNuJiMzOTt0IG5lZWRlZCBoZXJlLiBUaGlzIGlzIGEgbG9naWMgYnVnIGZpeCwgZXNzZW50aWFsbHkgc3luY2luZyB0aGUgUnVzdCBzaWRlIHdpdGggdGhlIEMgc2lkZS4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgYWdhaW4sIGp1c3QgdG8gYmUgc3VyZS4gVGhlIHN0cnVjdCBpcyBgcGh5X2RldmljZWAsIGFsbG9jYXRlZCBhbmQgaW5pdGlhbGl6ZWQgYnkgdGhlIGtlcm5lbC4gVGhpcyBwYXRjaCBvbmx5ICpjaGFuZ2VzIHRoZSBvZmZzZXRzKi4gVGhlIHBhdGNoICpvbmx5IGNoYW5nZXMgdGhlIGJpdCBvZmZzZXRzKiwgbm90IHRoZSBhbGxvY2F0aW9uLiBUaGUgY2hhbmdlIGRvZXNuJiMzOTt0IGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSwgaXQgaXMganVzdCByZWFkaW5nIGJpdHMuIE5vIG5ldyBhbGxvY2F0aW9ucywgbm8gbmV3IHJpc2tzLiBObyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBhcmUgYmVpbmcgdXNlZCBpbiBhbnkgYnJhbmNoaW5nIGxvZ2ljIGhlcmUgZWl0aGVyLiBJdCYjMzk7cyBzYWZlIHRvIHNheSB0aGVyZSBpcyBubyBuZWVkIGZvciBLTVNBTi4gSSB3aWxsIHNldCBgTmVlZHNLTVNBTj1mYWxzZWAgb24gdGhpcy4gSSYjMzk7bSBjb25maWRlbnQgaW4gc2F5aW5nIHRoYXQgdGhpcyBpcyBwdXJlbHkgYSBsb2dpYyBmaXgsIGFuZCBLQVNBTiB3b3VsZCBjYXRjaCBhbnkgcHJlLWV4aXN0aW5nIG1lbW9yeSBzYWZldHkgaXNzdWVzIGFueXdheSwgd2l0aGluIHRoZSBgcGh5X2RldmljZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+ODIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDExOjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHVwZGF0ZXMgYml0ZmllbGQgb2Zmc2V0cyBpbiB0aGUgUnVzdCB3cmFwcGVyIGZvciB0aGUgYHBoeV9kZXZpY2VgIHN0cnVjdCAoYHJ1c3Qva2VybmVsL25ldC9waHkucnNgKS4gSXQgY2hhbmdlcyB0aGUgYml0IGluZGljZXMgdXNlZCB0byByZWFkIHRoZSBgbGlua2AsIGBhdXRvbmVnYCwgYW5kIGBhdXRvbmVnX2NvbXBsZXRlYCBmaWVsZHMgZnJvbSBgX2JpdGZpZWxkXzFgLiBUaGlzIGlzIGEgbG9naWMgZml4IHRvIHN5bmNocm9uaXplIHRoZSBSdXN0IGJpbmRpbmdzIHdpdGggdGhlIHVuZGVybHlpbmcgQyBzdHJ1Y3R1cmUgbGF5b3V0LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgZG9lcyBub3QgZXhwb3NlIGtlcm5lbCBtZW1vcnkgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGludm9sdmUgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3VlcyByZWxhdGVkIHRvIHRoZSBgcGh5X2RldmljZWAgc3RydWN0IHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiAoZS5nLiwgdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3MpLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggdXBkYXRlcyBiaXRmaWVsZCBvZmZzZXRzIGluIHRoZSBSdXN0IHdyYXBwZXIgZm9yIHRoZSBgcGh5X2RldmljZWAgc3RydWN0IChgcnVzdC9rZXJuZWwvbmV0L3BoeS5yc2ApLiBJdCBjaGFuZ2VzIHRoZSBiaXQgaW5kaWNlcyB1c2VkIHRvIHJlYWQgdGhlIGBsaW5rYCwgYGF1dG9uZWdgLCBhbmQgYGF1dG9uZWdfY29tcGxldGVgIGZpZWxkcyBmcm9tIGBfYml0ZmllbGRfMWAuIFRoaXMgaXMgYSBsb2dpYyBmaXggdG8gc3luY2hyb25pemUgdGhlIFJ1c3QgYmluZGluZ3Mgd2l0aCB0aGUgdW5kZXJseWluZyBDIHN0cnVjdHVyZSBsYXlvdXQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2Uga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgaW52b2x2ZSByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzIHJlbGF0ZWQgdG8gdGhlIGBwaHlfZGV2aWNlYCBzdHJ1Y3Qgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2VzcykuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIxOjQ0LjUxNjE2MDE0MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNDQ1MjI1MTc2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSVVNUXCIsXG4gICAgXCJSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlNcIixcbiAgICBcIkFYODg3OTZCX1JVU1RfUEhZXCIsXG4gICAgXCJVU0JfTkVUX0FYODgxN1hcIixcbiAgICBcIlVTQl9VU0JORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJheDg4NzcyX2JpbmRcIixcbiAgICBcImF4ODg3NzJfaW5pdF9waHlcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHVwZGF0ZXMgYml0ZmllbGQgb2Zmc2V0cyBpbiB0aGUgUnVzdCB3cmFwcGVyIGZvciB0aGUgYHBoeV9kZXZpY2VgIHN0cnVjdCAoYHJ1c3Qva2VybmVsL25ldC9waHkucnNgKS4gSXQgY2hhbmdlcyB0aGUgYml0IGluZGljZXMgdXNlZCB0byByZWFkIHRoZSBgbGlua2AsIGBhdXRvbmVnYCwgYW5kIGBhdXRvbmVnX2NvbXBsZXRlYCBmaWVsZHMgZnJvbSBgX2JpdGZpZWxkXzFgLiBUaGlzIGlzIGEgbG9naWMgZml4IHRvIHN5bmNocm9uaXplIHRoZSBSdXN0IGJpbmRpbmdzIHdpdGggdGhlIHVuZGVybHlpbmcgQyBzdHJ1Y3R1cmUgbGF5b3V0LiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBhbGxvY2F0aW9ucywgZG9lcyBub3QgZXhwb3NlIGtlcm5lbCBtZW1vcnkgdG8gdXNlciBzcGFjZSwgYW5kIGRvZXMgbm90IGludm9sdmUgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBtZW1vcnkgc2FmZXR5IGlzc3VlcyByZWxhdGVkIHRvIHRoZSBgcGh5X2RldmljZWAgc3RydWN0IHdvdWxkIGJlIGNhdWdodCBieSBLQVNBTiAoZS5nLiwgdXNlLWFmdGVyLWZyZWUgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3MpLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGJpdGZpZWxkIGluZGljZXMgaW4gdGhlIFJ1c3QgUEhZIGRyaXZlciBBUEkgZm9yIGBpc19saW5rX3VwYCwgYGlzX2F1dG9uZWdfZW5hYmxlZGAsIGFuZCBgaXNfYXV0b25lZ19jb21wbGV0ZWRgLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgYnkgdGhlIGBheDg4Nzk2Yl9ydXN0YCBQSFkgZHJpdmVyLCB3aGljaCBpcyB1c2VkIGJ5IHRoZSBBU0lYIFVTQiBldGhlcm5ldCBkcml2ZXIuIEluY29ycmVjdCBiaXRmaWVsZCBpbmRpY2VzIGNhbiBsZWFkIHRvIGluY29ycmVjdCBsaW5rIHN0YXR1cyBhbmQgYXV0b25lZ290aWF0aW9uIGJlaGF2aW9yLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYmUgcmVhY2hlZCB2aWEgVVNCIGVtdWxhdGlvbi5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjE6NDQuNTE2MTY1NzkyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDk2MDczMTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYTA5MTdkYjMwYzQ1YzUyMDI1YmU2ODRmZjJlODMyNDY1YjhmMjllZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAyMyAxMToyMTo0MiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9uZXQvcGh5LnJzIGIvcnVzdC9rZXJuZWwvbmV0L3BoeS5yc1xcbmluZGV4IDk1NmNkYTU3M2RkYmEuLjk5ZWQzZGQxNjhkZjMgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvbmV0L3BoeS5yc1xcbisrKyBiL3J1c3Qva2VybmVsL25ldC9waHkucnNcXG5AQCAtMTMwLDcgKzEzMCw3IEBAIHB1YiBmbiBpc19saW5rX3VwKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBib29sIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBzdHJ1Y3QgaW52YXJpYW50IGVuc3VyZXMgdGhhdCB3ZSBtYXkgYWNjZXNzXFxuICAgICAgICAgLy8gdGhpcyBmaWVsZCB3aXRob3V0IGFkZGl0aW9uYWwgc3luY2hyb25pemF0aW9uLlxcbiAgICAgICAgIGxldCBiaXRfZmllbGQgPSB1bnNhZmUgeyBcXHUwMDI2KCpzZWxmLjAuZ2V0KCkpLl9iaXRmaWVsZF8xIH07XFxuLSAgICAgICAgYml0X2ZpZWxkLmdldCgxNCwgMSkgPT0gTElOS19JU19VUFxcbisgICAgICAgIGJpdF9maWVsZC5nZXQoMTUsIDEpID09IExJTktfSVNfVVBcXG4gICAgIH1cXG4gXFxuICAgICAvLy8gR2V0cyB0aGUgY3VycmVudCBhdXRvLW5lZ290aWF0aW9uIGNvbmZpZ3VyYXRpb24uXFxuQEAgLTE0Miw3ICsxNDIsNyBAQCBwdWIgZm4gaXNfYXV0b25lZ19lbmFibGVkKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBib29sIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBzdHJ1Y3QgaW52YXJpYW50IGVuc3VyZXMgdGhhdCB3ZSBtYXkgYWNjZXNzXFxuICAgICAgICAgLy8gdGhpcyBmaWVsZCB3aXRob3V0IGFkZGl0aW9uYWwgc3luY2hyb25pemF0aW9uLlxcbiAgICAgICAgIGxldCBiaXRfZmllbGQgPSB1bnNhZmUgeyBcXHUwMDI2KCpzZWxmLjAuZ2V0KCkpLl9iaXRmaWVsZF8xIH07XFxuLSAgICAgICAgYml0X2ZpZWxkLmdldCgxMywgMSkgPT0gdTY0Ojpmcm9tKGJpbmRpbmdzOjpBVVRPTkVHX0VOQUJMRSlcXG4rICAgICAgICBiaXRfZmllbGQuZ2V0KDE0LCAxKSA9PSB1NjQ6OmZyb20oYmluZGluZ3M6OkFVVE9ORUdfRU5BQkxFKVxcbiAgICAgfVxcbiBcXG4gICAgIC8vLyBHZXRzIHRoZSBjdXJyZW50IGF1dG8tbmVnb3RpYXRpb24gc3RhdGUuXFxuQEAgLTE1NSw3ICsxNTUsNyBAQCBwdWIgZm4gaXNfYXV0b25lZ19jb21wbGV0ZWQoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIGJvb2wge1xcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHN0cnVjdCBpbnZhcmlhbnQgZW5zdXJlcyB0aGF0IHdlIG1heSBhY2Nlc3NcXG4gICAgICAgICAvLyB0aGlzIGZpZWxkIHdpdGhvdXQgYWRkaXRpb25hbCBzeW5jaHJvbml6YXRpb24uXFxuICAgICAgICAgbGV0IGJpdF9maWVsZCA9IHVuc2FmZSB7IFxcdTAwMjYoKnNlbGYuMC5nZXQoKSkuX2JpdGZpZWxkXzEgfTtcXG4tICAgICAgICBiaXRfZmllbGQuZ2V0KDE1LCAxKSA9PSBBVVRPTkVHX0NPTVBMRVRFRFxcbisgICAgICAgIGJpdF9maWVsZC5nZXQoMTYsIDEpID09IEFVVE9ORUdfQ09NUExFVEVEXFxuICAgICB9XFxuIFxcbiAgICAgLy8vIFNldHMgdGhlIHNwZWVkIG9mIHRoZSBQSFkuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIxOjQ2LjAxMzE5ODM4MloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjE5MzY1ODIwOTg3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSVVNUXCIsXG4gICAgXCJSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlNcIixcbiAgICBcIkFYODg3OTZCX1JVU1RfUEhZXCIsXG4gICAgXCJVU0JfTkVUX0FYODgxN1hcIixcbiAgICBcIlVTQl9VU0JORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJheDg4NzcyX2JpbmRcIixcbiAgICBcImF4ODg3NzJfaW5pdF9waHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBiaXRmaWVsZCBpbmRpY2VzIGluIHRoZSBSdXN0IFBIWSBkcml2ZXIgQVBJIGZvciBgaXNfbGlua191cGAsIGBpc19hdXRvbmVnX2VuYWJsZWRgLCBhbmQgYGlzX2F1dG9uZWdfY29tcGxldGVkYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIGJ5IHRoZSBgYXg4ODc5NmJfcnVzdGAgUEhZIGRyaXZlciwgd2hpY2ggaXMgdXNlZCBieSB0aGUgQVNJWCBVU0IgZXRoZXJuZXQgZHJpdmVyLiBJbmNvcnJlY3QgYml0ZmllbGQgaW5kaWNlcyBjYW4gbGVhZCB0byBpbmNvcnJlY3QgbGluayBzdGF0dXMgYW5kIGF1dG9uZWdvdGlhdGlvbiBiZWhhdmlvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGEwOTE3ZGIzMGM0NWM1MjAyNWJlNjg0ZmYyZTgzMjQ2NWI4ZjI5ZWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyMyAxMToyMTo0MiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL25ldC9waHkucnMgYi9ydXN0L2tlcm5lbC9uZXQvcGh5LnJzXG5pbmRleCA5NTZjZGE1NzNkZGJhLi45OWVkM2RkMTY4ZGYzIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvbmV0L3BoeS5yc1xuKysrIGIvcnVzdC9rZXJuZWwvbmV0L3BoeS5yc1xuQEAgLTEzMCw3ICsxMzAsNyBAQCBwdWIgZm4gaXNfbGlua191cChcdTAwMjZzZWxmKSAtXHUwMDNlIGJvb2wge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgc3RydWN0IGludmFyaWFudCBlbnN1cmVzIHRoYXQgd2UgbWF5IGFjY2Vzc1xuICAgICAgICAgLy8gdGhpcyBmaWVsZCB3aXRob3V0IGFkZGl0aW9uYWwgc3luY2hyb25pemF0aW9uLlxuICAgICAgICAgbGV0IGJpdF9maWVsZCA9IHVuc2FmZSB7IFx1MDAyNigqc2VsZi4wLmdldCgpKS5fYml0ZmllbGRfMSB9O1xuLSAgICAgICAgYml0X2ZpZWxkLmdldCgxNCwgMSkgPT0gTElOS19JU19VUFxuKyAgICAgICAgYml0X2ZpZWxkLmdldCgxNSwgMSkgPT0gTElOS19JU19VUFxuICAgICB9XG4gXG4gICAgIC8vLyBHZXRzIHRoZSBjdXJyZW50IGF1dG8tbmVnb3RpYXRpb24gY29uZmlndXJhdGlvbi5cbkBAIC0xNDIsNyArMTQyLDcgQEAgcHViIGZuIGlzX2F1dG9uZWdfZW5hYmxlZChcdTAwMjZzZWxmKSAtXHUwMDNlIGJvb2wge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgc3RydWN0IGludmFyaWFudCBlbnN1cmVzIHRoYXQgd2UgbWF5IGFjY2Vzc1xuICAgICAgICAgLy8gdGhpcyBmaWVsZCB3aXRob3V0IGFkZGl0aW9uYWwgc3luY2hyb25pemF0aW9uLlxuICAgICAgICAgbGV0IGJpdF9maWVsZCA9IHVuc2FmZSB7IFx1MDAyNigqc2VsZi4wLmdldCgpKS5fYml0ZmllbGRfMSB9O1xuLSAgICAgICAgYml0X2ZpZWxkLmdldCgxMywgMSkgPT0gdTY0Ojpmcm9tKGJpbmRpbmdzOjpBVVRPTkVHX0VOQUJMRSlcbisgICAgICAgIGJpdF9maWVsZC5nZXQoMTQsIDEpID09IHU2NDo6ZnJvbShiaW5kaW5nczo6QVVUT05FR19FTkFCTEUpXG4gICAgIH1cbiBcbiAgICAgLy8vIEdldHMgdGhlIGN1cnJlbnQgYXV0by1uZWdvdGlhdGlvbiBzdGF0ZS5cbkBAIC0xNTUsNyArMTU1LDcgQEAgcHViIGZuIGlzX2F1dG9uZWdfY29tcGxldGVkKFx1MDAyNnNlbGYpIC1cdTAwM2UgYm9vbCB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBzdHJ1Y3QgaW52YXJpYW50IGVuc3VyZXMgdGhhdCB3ZSBtYXkgYWNjZXNzXG4gICAgICAgICAvLyB0aGlzIGZpZWxkIHdpdGhvdXQgYWRkaXRpb25hbCBzeW5jaHJvbml6YXRpb24uXG4gICAgICAgICBsZXQgYml0X2ZpZWxkID0gdW5zYWZlIHsgXHUwMDI2KCpzZWxmLjAuZ2V0KCkpLl9iaXRmaWVsZF8xIH07XG4tICAgICAgICBiaXRfZmllbGQuZ2V0KDE1LCAxKSA9PSBBVVRPTkVHX0NPTVBMRVRFRFxuKyAgICAgICAgYml0X2ZpZWxkLmdldCgxNiwgMSkgPT0gQVVUT05FR19DT01QTEVURURcbiAgICAgfVxuIFxuICAgICAvLy8gU2V0cyB0aGUgc3BlZWQgb2YgdGhlIFBIWS5cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIxOjQ2LjAxMzIwMDU5MloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyMzY2NTMwMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUEhZIERldmljZSBCdWcgRml4KipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgcnVzdC9rZXJuZWwvbmV0L3BoeS5yc2AuIEl0J3MgdHdlYWtpbmcgdGhlIGJpdGZpZWxkIGluZGljZXMgZm9yIGBpc19saW5rX3VwYCwgYGlzX2F1dG9uZWdfZW5hYmxlZGAsIGFuZCBgaXNfYXV0b25lZ19jb21wbGV0ZWRgLiBSaWdodCBhd2F5LCB0aGlzIHNjcmVhbXMgXCJidWcgZml4XCIgZm9yIHRoZSBSdXN0IGJpbmRpbmdzIHJlbGF0ZWQgdG8gUGh5c2ljYWwgTGF5ZXIgKFBIWSkgZGV2aWNlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIG1lYW5zIGluIHRoZSBicm9hZGVyIGNvbnRleHQuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHRyYWNlIHRoZSBpbXBhY3QuIEkgc2hvdWxkIGNoZWNrIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQuIFRoZXkncmUgcGFydCBvZiB0aGUgUnVzdCBQSFkgZHJpdmVyIEFQSSwgb2YgY291cnNlLiBNeSBleHBlcnRpc2Ugc2F5cyB0aGVzZSBhcmUgY3JpdGljYWwgZnVuY3Rpb25zIGZvciBjaGVja2luZyB0aGUgbGluayBzdGF0dXMgYW5kIGF1dG9uZWdvdGlhdGlvbiBzdGF0ZSBvZiBhIG5ldHdvcmsgY29ubmVjdGlvbi5cblxuTm93LCBhIGtleSBxdWVzdGlvbiBhcmlzZXM6IEFyZSB0aGVyZSAqYW55KiBQSFkgZHJpdmVycyB3cml0dGVuIGluIFJ1c3QgeWV0PyBJZiBub3QsIGl0J3MgcG90ZW50aWFsbHkgaW1wb3J0YW50LCBidXQgbG93ZXIgcHJpb3JpdHkuIFNvLCBsZXQgbWUgc2VhcmNoIGZvciB1c2VzIG9mIHRob3NlIGZ1bmN0aW9ucywgc3BlY2lmaWNhbGx5IHdpdGhpbiBgcnVzdC9gIGFuZCB0aGUgYGRyaXZlcnMvbmV0L3BoeS9gIGRpcmVjdG9yaWVzLiBGaW5kaW5nIHVzZXMgd2lsbCBnaXZlIG1lIGNydWNpYWwgY29udGV4dC4gVGhpcyBiaXRmaWVsZCBmaXggbWF5IGJlIGNyaXRpY2FsIGZvciBleGlzdGluZyBSdXN0IFBIWSBkcml2ZXJzLCBvciBtYXliZSB3ZSBhcmUgcHJlcGFyaW5nIHNvbWV0aGluZy4gSSBuZWVkIHRvIGRpZyBpbiBhbmQgc2VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjc4LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMyLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjE6NTAuMjQ5ODU2MTJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI1NDc4MDg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlzX2xpbmtfdXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwicnVzdC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwicnVzdC9rZXJuZWwvbmV0L3BoeS5ycz0xMDM9ICAgIHB1YiBmbiBzdGF0ZShcXHUwMDI2c2VsZikgLVxcdTAwM2UgRGV2aWNlU3RhdGUge1xcbi0tXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy0xMjUtICAgIC8vLyBJdCByZXR1cm5zIHRydWUgaWYgdGhlIGxpbmsgaXMgdXAuXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5yczoxMjY6ICAgIHB1YiBmbiBpc19saW5rX3VwKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBib29sIHtcXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTEyNy0gICAgICAgIGNvbnN0IExJTktfSVNfVVA6IHU2NCA9IDE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIxOjUwLjM3NTMzODUzNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3NzQwNzYwMTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSBpZiBJIGNhbiBnZXQgdGhpcyByaWdodC4uLlxuXG4qKlJ1c3QgUEhZIERyaXZlciBTZWFyY2gqKlxuXG5BbHJpZ2h0LCBzbyBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nIHF1aWNrbHkuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBpbnZlc3RpZ2F0ZSB0aGUgY3VycmVudCBsYW5kc2NhcGUgb2YgUnVzdCBQSFkgZHJpdmVycy4gSSdtIGN1cmlvdXMgaWYgdGhlcmUncyBhbnkgYWN0aXZlIGRldmVsb3BtZW50IG9yIGV4aXN0aW5nIGltcGxlbWVudGF0aW9ucyBhbHJlYWR5IG91dCB0aGVyZSwgb3IgaWYgdGhpcyBpcyBzb21ldGhpbmcgSSdsbCBuZWVkIHRvIGNvbnRyaWJ1dGUgdG8gZnJvbSBzY3JhdGNoLiBJJ20gZ29pbmcgdG8gZG8gYSBxdWljayBzZWFyY2ggYW5kIHNlZSB3aGF0IGNvbWVzIHVwLiBUaGlzIGlzIGEgY29tbW9uIGZpcnN0IHN0ZXAgLSB1bmRlcnN0YW5kIHRoZSBjdXJyZW50IHN0YXRlIG9mIHBsYXkgYmVmb3JlIGRpdmluZyBpbiBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MTEsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMTo1My4xNDk0MTc2MDhaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUxNTU0NjUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlzX2xpbmtfdXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycz00OT0gICAgZm4gcmVhZF9zdGF0dXMoZGV2OiBcXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjdTE2XFx1MDAzZSB7XFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtNTAtICAgICAgICBkZXYuZ2VucGh5X3VwZGF0ZV9saW5rKCk/O1xcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzOjUxOiAgICAgICAgaWYgIWRldi5pc19saW5rX3VwKCkge1xcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTUyLSAgICAgICAgICAgIHJldHVybiBPaygwKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjE6NTMuNzAwOTc4MTY4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg0MzM3NzAzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYXg4ODc5NmIgRHJpdmVyKipcblxuT2theSwgc28gSSBzZWUgdGhpcyBgYXg4ODc5NmJfcnVzdC5yc2AgZmlsZSBwb3BwZWQgdXAuIFJpZ2h0LCB0aGF0J3MgaW4gdGhlIG5ldHdvcmsgUEhZIGRyaXZlcnMsIHdoaWNoIGlzIGV4YWN0bHkgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIGFuIEFYODg3OTZCIGNoaXAuIExldCdzIGRpZyBpbiBhbmQgc2VlIGhvdyBpdCdzIGJlaW5nIGhhbmRsZWQuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIGl0cyBjb25maWd1cmF0aW9uLCBtYWtlIHN1cmUgaXQncyBzZXQgdXAgY29ycmVjdGx5LCBhbmQgdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBpbnRlcmZhY2VzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIG5ldHdvcmsgc3RhY2suIEnigJlsbCBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcyBvZiBob3cgdGhlIGRyaXZlciBpcyBpbXBsZW1lbnRlZC4gSSB3YW50IHRvIGxvb2sgY2xvc2VseSBhdCB0aGUgcmVnaXN0ZXIgYWNjZXNzIHBhdHRlcm5zLCBlcnJvciBoYW5kbGluZywgYW5kIGFueSBwb3dlciBtYW5hZ2VtZW50IGNvbnNpZGVyYXRpb25zLiBIb3BlZnVsbHksIGl0cyBjb25maWd1cmF0aW9uIGlzIHNhbmUuIEknbGwgbmVlZCB0byByZW1lbWJlciB0byBsb29rIGF0IHJlbGF0ZWQgZmlsZXMgaWYgaXQgc2VlbXMgdGhhdCB0aGV5IGFyZSByZWxhdGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTE2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjE6NTcuNTQ0MzY3ODY2WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyMTM2OTQyNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJheDg4Nzk2Yl9ydXN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWc9MTYwPWNvbmZpZyBBWDg4Nzk2Ql9SVVNUX1BIWVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTYzLVxcdGhlbHBcXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzoxNjQ6XFx0ICBVc2VzIHRoZSBSdXN0IHJlZmVyZW5jZSBkcml2ZXIgZm9yIEFzaXggUEhZcyAoYXg4ODc5NmJfcnVzdC5rbykuXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTY1LVxcdCAgVGhlIGZlYXR1cmVzIGFyZSBlcXVpdmFsZW50LiBJdCBzdXBwb3J0cyB0aGUgQXNpeCBFbGVjdHJvbmljcyBQSFlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT00MD1pZmRlZiBDT05GSUdfQVg4ODc5NkJfUlVTVF9QSFlcXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NDE6ICBvYmotJChDT05GSUdfQVg4ODc5NkJfUEhZKVxcdCs9IGF4ODg3OTZiX3J1c3Qub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS00Mi1lbHNlXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIxOjU3LjY2NTc0MTQxMVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MzY1OTYyODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aGlua2luZyBwcm9jZXNzOlxuXG4qKkV4YW1pbmluZyBBWDg4Nzk2QiBQSFkgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIEkgbmVlZCBib3RoIGBDT05GSUdfQVg4ODc5NkJfUlVTVF9QSFlgIGFuZCBgQ09ORklHX0FYODg3OTZCX1BIWWAuIFJpZ2h0LCBgQ09ORklHX0FYODg3OTZCX1JVU1RfUEhZYCBpcyBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaW1lIHRvIGRpZyBpbiBhIGJpdCBkZWVwZXIuIEdpdmVuIHRoZSBjb250ZXh0LCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3BoeS9LY29uZmlnYCBmaWxlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgMTYwIG9yIHNvLiBUaGF0J3Mgd2hlcmUgdGhlIGRlZmluaXRpb24gZm9yIHRoaXMgbGlrZWx5IHJlc2lkZXMuIEknbGwgc2VlIHdoYXQgZGVwZW5kZW5jaWVzIG9yIGNvbnN0cmFpbnRzIGFyZSBkb2N1bWVudGVkIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjA3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjI6MDEuMzAyMzQwMTkzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjc5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNTAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNTA6XFx0XFx0ICBBZGRzIHN1cHBvcnQgZm9yIHRoZSBBcHBsaWVkIE1pY3JvIENpcmN1aXRzIENvcnBvcmF0aW9uIFFUMjAyNSBQSFkuXFxuIDE1MTpcXHRcXG4gMTUyOlxcdHNvdXJjZSBcXFwiZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL0tjb25maWdcXFwiXFxuIDE1MzpcXHRcXG4gMTU0OlxcdGNvbmZpZyBBWDg4Nzk2Ql9QSFlcXG4gMTU1OlxcdFxcdHRyaXN0YXRlIFxcXCJBc2l4IFBIWXNcXFwiXFxuIDE1NjpcXHRcXHRoZWxwXFxuIDE1NzpcXHRcXHQgIEN1cnJlbnRseSBzdXBwb3J0cyB0aGUgQXNpeCBFbGVjdHJvbmljcyBQSFkgZm91bmQgaW4gdGhlIFgtU3VyZiAxMDBcXG4gMTU4OlxcdFxcdCAgQVg4ODc5NkIgcGFja2FnZS5cXG4gMTU5OlxcdFxcbiAxNjA6XFx0Y29uZmlnIEFYODg3OTZCX1JVU1RfUEhZXFxuIDE2MTpcXHRcXHRib29sIFxcXCJSdXN0IHJlZmVyZW5jZSBkcml2ZXIgZm9yIEFzaXggUEhZc1xcXCJcXG4gMTYyOlxcdFxcdGRlcGVuZHMgb24gUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TIFxcdTAwMjZcXHUwMDI2IEFYODg3OTZCX1BIWVxcbiAxNjM6XFx0XFx0aGVscFxcbiAxNjQ6XFx0XFx0ICBVc2VzIHRoZSBSdXN0IHJlZmVyZW5jZSBkcml2ZXIgZm9yIEFzaXggUEhZcyAoYXg4ODc5NmJfcnVzdC5rbykuXFxuIDE2NTpcXHRcXHQgIFRoZSBmZWF0dXJlcyBhcmUgZXF1aXZhbGVudC4gSXQgc3VwcG9ydHMgdGhlIEFzaXggRWxlY3Ryb25pY3MgUEhZXFxuIDE2NjpcXHRcXHQgIGZvdW5kIGluIHRoZSBYLVN1cmYgMTAwIEFYODg3OTZCIHBhY2thZ2UuXFxuIDE2NzpcXHRcXG4gMTY4OlxcdGNvbmZpZyBCUk9BRENPTV9QSFlcXG4gMTY5OlxcdFxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSA1NFhYIFBIWXNcXFwiXFxuIDE3MDpcXHRcXHRzZWxlY3QgQkNNX05FVF9QSFlMSUJcXG4gMTcxOlxcdFxcdHNlbGVjdCBCQ01fTkVUX1BIWVBUUCBpZiBORVRXT1JLX1BIWV9USU1FU1RBTVBJTkdcXG4gMTcyOlxcdFxcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxcXG4gMTczOlxcdFxcdGhlbHBcXG4gMTc0OlxcdFxcdCAgQ3VycmVudGx5IHN1cHBvcnRzIHRoZSBCQ001NDExLCBCQ001NDIxLCBCQ001NDYxLCBCQ001NDYxNlMsIEJDTTU0NjQsXFxuIDE3NTpcXHRcXHQgIEJDTTU0ODEsIEJDTTU0ODEwIGFuZCBCQ001NDgyIFBIWXMuXFxuIDE3NjpcXHRcXG4gMTc3OlxcdGNvbmZpZyBCQ001NDE0MF9QSFlcXG4gMTc4OlxcdFxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBCQ001NDE0MCBQSFlcXFwiXFxuIDE3OTpcXHRcXHRkZXBlbmRzIG9uIEhXTU9OIHx8IEhXTU9OPW5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjI6MDEuMzAyNDU2MTkzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMTI3MTEyODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBzaXR1YXRpb246XG5cbioqRGVwZW5kZW5jeSBEZWVwIERpdmUqKlxuXG5Pa2F5LCBzbyBpdCBsb29rcyBsaWtlIGBBWDg4Nzk2Ql9SVVNUX1BIWWAgcmVsaWVzIG9uIGJvdGggYFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU2AgYW5kIGBBWDg4Nzk2Ql9QSFlgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCdzIHByb2JhYmx5IHVzaW5nIHRoZSBhYnN0cmFjdGlvbnMgZm9yIHBsYXRmb3JtLWFnbm9zdGljIFBIWSBpbnRlcmFjdGlvbiBhbmQgdGhlIGBBWDg4Nzk2Ql9QSFlgIGZvciB0aGUgc3BlY2lmaWMgaGFyZHdhcmUgZGV0YWlscyBvZiB0aGF0IHBhcnRpY3VsYXIgY2hpcC4gTXkgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIGBSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRob3NlIGFic3RyYWN0aW9ucyAqYXJlKi4gV2hhdCBpbnRlcmZhY2VzIGFyZSBiZWluZyBkZWZpbmVkIGhlcmU/IFdoYXQgYXJlIHRoZSBjYXBhYmlsaXRpZXMgYW5kIGxpbWl0YXRpb25zIG9mIHRoaXMgYWJzdHJhY3Rpb24gbGF5ZXI/IFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgYXJjaGl0ZWN0dXJlIG9mIHRoZSB3aG9sZSBQSFkgaW50ZXJhY3Rpb24gbGllcywgc28gdGhpcyBpcyB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgZWZmb3J0cyBmaXJzdCB0byB1bmRlcnN0YW5kIHRoZSB3aG9sZS4gTGV0J3Mgc2VlIHdoYXQncyB3aGF0IVxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDMxLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMjowNC41MTUxNzA5NDFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNzIyNTc0MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NTY9Y29uZmlnIEZJWEVEX1BIWVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNjQtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6NjU6Y29uZmlnIFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU1xcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTY2LSAgICAgICAgYm9vbCBcXFwiUnVzdCBQSFlMSUIgYWJzdHJhY3Rpb25zIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIyOjA2Ljc4NzQzMzA0OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTEyNTgzMDY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkV4YW1pbmluZyBQSFkgS2NvbmZpZyBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgIGZpbGUuIEknbSBmb2N1c2luZyBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNjU7IHRoYXQncyB1c3VhbGx5IHdoZXJlIHRoZSBtZWF0IG9mIGEgc3BlY2lmaWMgbW9kdWxlJ3MgY29uZmlndXJhdGlvbiBvcHRpb25zIGJlZ2lucy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyB0aGlzIHBhcnRpY3VsYXIgUEhZIGRyaXZlciBpcyBjb25maWd1cmVkLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBzY2FuIGl0IHRvIGdyYXNwIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBjaG9pY2VzIHRoZSBkZXZlbG9wZXJzIGhhdmUgYnVpbHQgaW50byBpdC4gVGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCBob3cgdGhpcyBQSFkgaXMgaW50ZWdyYXRlZCBhbmQgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIGdvdGNoYXMgdG8gbG9vayBvdXQgZm9yLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgYSB0eXBpY2FsIEtjb25maWcgc3RydWN0dXJlIOKAkyBgY29uZmlnYCBkaXJlY3RpdmVzLCBgZGVwZW5kcyBvbmAgc3RhdGVtZW50cywgbWF5YmUgc29tZSBgc2VsZWN0YCBzdGF0ZW1lbnRzLCBhbmQgc29tZSBoZWxwIHRleHQuIEtub3dpbmcgdGhpcywgSSBjYW4gc3RhcnQgZm9ybWluZyBhIG1lbnRhbCBtYXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ3OTUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMjoxMC4zMDAwMTkxNjZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMyOTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDYwOlxcdFxcdCAgQWRkcyB0aGUgcGxhdGZvcm0gXFxcImZpeGVkXFxcIiBNRElPIEJ1cyB0byBjb3ZlciB0aGUgYm9hcmRzIHRoYXQgdXNlXFxuICA2MTpcXHRcXHQgIFBIWXMgdGhhdCBhcmUgbm90IGNvbm5lY3RlZCB0byB0aGUgcmVhbCBNRElPIGJ1cy5cXG4gIDYyOlxcdFxcbiAgNjM6XFx0XFx0ICBDdXJyZW50bHkgdGVzdGVkIHdpdGggbXBjODY2YWRzIGFuZCBtcGM4MzQ5ZS1taXR4LlxcbiAgNjQ6XFx0XFxuICA2NTpcXHRjb25maWcgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TXFxuICA2NjpcXHQgICAgICAgIGJvb2wgXFxcIlJ1c3QgUEhZTElCIGFic3RyYWN0aW9ucyBzdXBwb3J0XFxcIlxcbiAgNjc6XFx0ICAgICAgICBkZXBlbmRzIG9uIFJVU1RcXG4gIDY4OlxcdCAgICAgICAgZGVwZW5kcyBvbiBQSFlMSUI9eVxcbiAgNjk6XFx0ICAgICAgICBoZWxwXFxuICA3MDpcXHQgICAgICAgICAgQWRkcyBzdXBwb3J0IG5lZWRlZCBmb3IgUEhZIGRyaXZlcnMgd3JpdHRlbiBpbiBSdXN0LiBJdCBwcm92aWRlc1xcbiAgNzE6XFx0ICAgICAgICAgIGEgd3JhcHBlciBhcm91bmQgdGhlIEMgcGh5bGliIGNvcmUuXFxuICA3MjpcXHRcXG4gIDczOlxcdGNvbmZpZyBTRlBcXG4gIDc0OlxcdFxcdHRyaXN0YXRlIFxcXCJTRlAgY2FnZSBzdXBwb3J0XFxcIlxcbiAgNzU6XFx0XFx0ZGVwZW5kcyBvbiBJMkMgXFx1MDAyNlxcdTAwMjYgUEhZTElOS1xcbiAgNzY6XFx0XFx0ZGVwZW5kcyBvbiBIV01PTiB8fCBIV01PTj1uXFxuICA3NzpcXHRcXHRzZWxlY3QgTURJT19JMkNcXG4gIDc4OlxcdFxcbiAgNzk6XFx0Y29tbWVudCBcXFwiTUlJIFBIWSBkZXZpY2UgZHJpdmVyc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjI6MTAuMzAwMTU0MDQ2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUyMzgwMTcxNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ3VycmVudCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaW1wbGVtZW50aW5nIHN1cHBvcnQgZm9yIHRoaXMgQXNpeCBQSFksIHNwZWNpZmljYWxseSB0aGUgQVg4ODc5NkIsIHdpdGhpbiB0aGlzIFJ1c3QgZW52aXJvbm1lbnQuIEkgbmVlZCB0byBpbnRlZ3JhdGUgdGhlc2Ugc3BlY2lmaWMgY29tcG9uZW50czogYFJVU1RgLCBgUEhZTElCYCwgYFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU2AsIGBBWDg4Nzk2Ql9QSFlgLCBhbmQgYEFYODg3OTZCX1JVU1RfUEhZYC5cblxuTXkgbWFpbiBjb25jZXJuIGlzLCBjYW4gSSBldmVuIHJlbGlhYmx5IHRlc3QgdGhlIGBpc19saW5rX3VwYCBmdW5jdGlvbmFsaXR5IGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IFJlYWwtd29ybGQgUEhZIGRyaXZlcnMgYXJlIG9mdGVuIHRpZWQgdG8gTURJTyBidXNlcywgYW5kIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byBzaW11bGF0ZSBvciBpbnN0YW50aWF0ZSB0aGF0IHNldHVwLiBJJ20gdGhpbmtpbmcgc3BlY2lmaWNhbGx5IGFib3V0IFFFTVUsIGNhbiBJIGNyZWF0ZSBhbiBNRElPIGJ1cyB0aGVyZSBhbmQgYXR0YWNoIHRoaXMgUEhZPyBPciwgYXJlIHRoZXJlIHZpcnR1YWxpemVkIE1ESU8gaW1wbGVtZW50YXRpb25zIHRoYXQgSSBjYW4gbGV2ZXJhZ2U/XG5cblRoaW5raW5nIG1vcmUgYWJvdXQgaXQsIEkgcmVtZW1iZXIgdGhhdCBzeXprYWxsZXIgaGFzIHRoZSBwb3RlbnRpYWwgdG8gaW5qZWN0IE1ESU8gZGV2aWNlcywgcHJvdmlkZWQgaXQgY2FuIGFjY2VzcyBhIHZpcnR1YWwgTURJTyBidXMgb3IgaWYgaXQgY2FuIGludGVyYWN0IHdpdGggUEhZcyB2aWEgbmV0bGluayBvciBpb2N0bC4gVGhhdCdzIGEgcG90ZW50aWFsIGF2ZW51ZS5cblxuUmlnaHQgbm93LCBteSBmb2N1cyBzaG91bGQgYmUgb24gaG93IGBpc19saW5rX3VwYCBpcyBpbnZva2VkOyBhIHF1aWNrIGxvb2sgYW5kIEkgc2VlIHRoYXQgaXQncyBjYWxsZWQgZnJvbSBgcmVhZF9zdGF0dXNgIGluIGBheDg4Nzk2Yl9ydXN0LnJzYC4gSSBzaG91bGQgcHJvYmFibHkgb3BlbiB0aGF0IGZpbGUgYW5kIHNlZSBob3cgdGhpbmdzIGZpdCB0b2dldGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMxOSwiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIyOjE1LjUzODE3NTkzMVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzA2MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdC8vIENvcHlyaWdodCAoQykgMjAyMyBGVUpJVEEgVG9tb25vcmkgXFx1MDAzY2Z1aml0YS50b21vbm9yaUBnbWFpbC5jb21cXHUwMDNlXFxuICAgMzpcXHRcXG4gICA0OlxcdC8vISBSdXN0IEFzaXggUEhZcyBkcml2ZXJcXG4gICA1OlxcdC8vIVxcbiAgIDY6XFx0Ly8hIEMgdmVyc2lvbiBvZiB0aGlzIGRyaXZlcjogW2Bkcml2ZXJzL25ldC9waHkvYXg4ODc5NmIuY2BdKC4vYXg4ODc5NmIuYylcXG4gICA3OlxcdHVzZSBrZXJuZWw6OntcXG4gICA4OlxcdCAgICBuZXQ6OnBoeTo6e3NlbGYsIHJlZzo6QzIyLCBEZXZpY2VJZCwgRHJpdmVyfSxcXG4gICA5OlxcdCAgICBwcmVsdWRlOjoqLFxcbiAgMTA6XFx0ICAgIHVhcGksXFxuICAxMTpcXHR9O1xcbiAgMTI6XFx0XFxuICAxMzpcXHRrZXJuZWw6Om1vZHVsZV9waHlfZHJpdmVyISB7XFxuICAxNDpcXHQgICAgZHJpdmVyczogW1BoeUFYODg3NzJBLCBQaHlBWDg4NzcyQywgUGh5QVg4ODc5NkJdLFxcbiAgMTU6XFx0ICAgIGRldmljZV90YWJsZTogW1xcbiAgMTY6XFx0ICAgICAgICBEZXZpY2VJZDo6bmV3X3dpdGhfZHJpdmVyOjpcXHUwMDNjUGh5QVg4ODc3MkFcXHUwMDNlKCksXFxuICAxNzpcXHQgICAgICAgIERldmljZUlkOjpuZXdfd2l0aF9kcml2ZXI6OlxcdTAwM2NQaHlBWDg4NzcyQ1xcdTAwM2UoKSxcXG4gIDE4OlxcdCAgICAgICAgRGV2aWNlSWQ6Om5ld193aXRoX2RyaXZlcjo6XFx1MDAzY1BoeUFYODg3OTZCXFx1MDAzZSgpXFxuICAxOTpcXHQgICAgXSxcXG4gIDIwOlxcdCAgICBuYW1lOiBcXFwicnVzdF9hc2l4X3BoeVxcXCIsXFxuICAyMTpcXHQgICAgYXV0aG9yczogW1xcXCJGVUpJVEEgVG9tb25vcmkgXFx1MDAzY2Z1aml0YS50b21vbm9yaUBnbWFpbC5jb21cXHUwMDNlXFxcIl0sXFxuICAyMjpcXHQgICAgZGVzY3JpcHRpb246IFxcXCJSdXN0IEFzaXggUEhZcyBkcml2ZXJcXFwiLFxcbiAgMjM6XFx0ICAgIGxpY2Vuc2U6IFxcXCJHUExcXFwiLFxcbiAgMjQ6XFx0fVxcbiAgMjU6XFx0XFxuICAyNjpcXHRjb25zdCBCTUNSX1NQRUVEMTAwOiB1MTYgPSB1YXBpOjpCTUNSX1NQRUVEMTAwIGFzIHUxNjtcXG4gIDI3OlxcdGNvbnN0IEJNQ1JfRlVMTERQTFg6IHUxNiA9IHVhcGk6OkJNQ1JfRlVMTERQTFggYXMgdTE2O1xcbiAgMjg6XFx0XFxuICAyOTpcXHQvLyBQZXJmb3JtcyBhIHNvZnR3YXJlIFBIWSByZXNldCB1c2luZyB0aGUgc3RhbmRhcmRcXG4gIDMwOlxcdC8vIEJNQ1JfUkVTRVQgYml0IGFuZCBwb2xsIGZvciB0aGUgcmVzZXQgYml0IHRvIGJlIGNsZWFyZWQuXFxuICAzMTpcXHQvLyBUb2dnbGUgQk1DUl9SRVNFVCBiaXQgb2ZmIHRvIGFjY29tbW9kYXRlIGJyb2tlbiBBWDg3OTZCIFBIWSBpbXBsZW1lbnRhdGlvblxcbiAgMzI6XFx0Ly8gc3VjaCBhcyB1c2VkIG9uIHRoZSBJbmRpdmlkdWFsIENvbXB1dGVycycgWC1TdXJmIDEwMCBab3JybyBjYXJkLlxcbiAgMzM6XFx0Zm4gYXNpeF9zb2Z0X3Jlc2V0KGRldjogXFx1MDAyNm11dCBwaHk6OkRldmljZSkgLVxcdTAwM2UgUmVzdWx0IHtcXG4gIDM0OlxcdCAgICBkZXYud3JpdGUoQzIyOjpCTUNSLCAwKT87XFxuICAzNTpcXHQgICAgZGV2LmdlbnBoeV9zb2Z0X3Jlc2V0KClcXG4gIDM2OlxcdH1cXG4gIDM3OlxcdFxcbiAgMzg6XFx0c3RydWN0IFBoeUFYODg3NzJBO1xcbiAgMzk6XFx0XFxuICA0MDpcXHQjW3Z0YWJsZV1cXG4gIDQxOlxcdGltcGwgRHJpdmVyIGZvciBQaHlBWDg4NzcyQSB7XFxuICA0MjpcXHQgICAgY29uc3QgRkxBR1M6IHUzMiA9IHBoeTo6ZmxhZ3M6OklTX0lOVEVSTkFMO1xcbiAgNDM6XFx0ICAgIGNvbnN0IE5BTUU6IFxcdTAwMjYnc3RhdGljIENTdHIgPSBjXFxcIkFzaXggRWxlY3Ryb25pY3MgQVg4ODc3MkFcXFwiO1xcbiAgNDQ6XFx0ICAgIGNvbnN0IFBIWV9ERVZJQ0VfSUQ6IERldmljZUlkID0gRGV2aWNlSWQ6Om5ld193aXRoX2V4YWN0X21hc2soMHgwMDNiMTg2MSk7XFxuICA0NTpcXHRcXG4gIDQ2OlxcdCAgICAvLyBBWDg4NzcyQSBpcyBub3Qgd29ya2luZyBwcm9wZXJseSB3aXRoIHNvbWUgb2xkIHN3aXRjaGVzIChORVRHRUFSIEVOIDEwOFRQKTpcXG4gIDQ3OlxcdCAgICAvLyBhZnRlciBhdXRvbmVnIGlzIGRvbmUgYW5kIHRoZSBsaW5rIHN0YXR1cyBpcyByZXBvcnRlZCBhcyBhY3RpdmUsIHRoZSBNSUlfTFBBXFxuICA0ODpcXHQgICAgLy8gcmVnaXN0ZXIgaXMgMC4gVGhpcyBpc3N1ZSBpcyBub3QgcmVwcm9kdWNpYmxlIG9uIEFYODg3NzJDLlxcbiAgNDk6XFx0ICAgIGZuIHJlYWRfc3RhdHVzKGRldjogXFx1MDAyNm11dCBwaHk6OkRldmljZSkgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY3UxNlxcdTAwM2Uge1xcbiAgNTA6XFx0ICAgICAgICBkZXYuZ2VucGh5X3VwZGF0ZV9saW5rKCk/O1xcbiAgNTE6XFx0ICAgICAgICBpZiAhZGV2LmlzX2xpbmtfdXAoKSB7XFxuICA1MjpcXHQgICAgICAgICAgICByZXR1cm4gT2soMCk7XFxuICA1MzpcXHQgICAgICAgIH1cXG4gIDU0OlxcdCAgICAgICAgLy8gSWYgTUlJX0xQQSBpcyAwLCBwaHlfcmVzb2x2ZV9hbmVnX2xpbmttb2RlKCkgd2lsbCBmYWlsIHRvIHJlc29sdmVcXG4gIDU1OlxcdCAgICAgICAgLy8gbGlua21vZGUgc28gdXNlIE1JSV9CTUNSIGFzIGRlZmF1bHQgdmFsdWVzLlxcbiAgNTY6XFx0ICAgICAgICBsZXQgcmV0ID0gZGV2LnJlYWQoQzIyOjpCTUNSKT87XFxuICA1NzpcXHRcXG4gIDU4OlxcdCAgICAgICAgaWYgcmV0IFxcdTAwMjYgQk1DUl9TUEVFRDEwMCAhPSAwIHtcXG4gIDU5OlxcdCAgICAgICAgICAgIGRldi5zZXRfc3BlZWQodWFwaTo6U1BFRURfMTAwKTtcXG4gIDYwOlxcdCAgICAgICAgfSBlbHNlIHtcXG4gIDYxOlxcdCAgICAgICAgICAgIGRldi5zZXRfc3BlZWQodWFwaTo6U1BFRURfMTApO1xcbiAgNjI6XFx0ICAgICAgICB9XFxuICA2MzpcXHRcXG4gIDY0OlxcdCAgICAgICAgbGV0IGR1cGxleCA9IGlmIHJldCBcXHUwMDI2IEJNQ1JfRlVMTERQTFggIT0gMCB7XFxuICA2NTpcXHQgICAgICAgICAgICBwaHk6OkR1cGxleE1vZGU6OkZ1bGxcXG4gIDY2OlxcdCAgICAgICAgfSBlbHNlIHtcXG4gIDY3OlxcdCAgICAgICAgICAgIHBoeTo6RHVwbGV4TW9kZTo6SGFsZlxcbiAgNjg6XFx0ICAgICAgICB9O1xcbiAgNjk6XFx0ICAgICAgICBkZXYuc2V0X2R1cGxleChkdXBsZXgpO1xcbiAgNzA6XFx0XFxuICA3MTpcXHQgICAgICAgIGRldi5nZW5waHlfcmVhZF9scGEoKT87XFxuICA3MjpcXHRcXG4gIDczOlxcdCAgICAgICAgaWYgZGV2LmlzX2F1dG9uZWdfZW5hYmxlZCgpIFxcdTAwMjZcXHUwMDI2IGRldi5pc19hdXRvbmVnX2NvbXBsZXRlZCgpIHtcXG4gIDc0OlxcdCAgICAgICAgICAgIGRldi5yZXNvbHZlX2FuZWdfbGlua21vZGUoKTtcXG4gIDc1OlxcdCAgICAgICAgfVxcbiAgNzY6XFx0XFxuICA3NzpcXHQgICAgICAgIE9rKDApXFxuICA3ODpcXHQgICAgfVxcbiAgNzk6XFx0XFxuICA4MDpcXHQgICAgZm4gc3VzcGVuZChkZXY6IFxcdTAwMjZtdXQgcGh5OjpEZXZpY2UpIC1cXHUwMDNlIFJlc3VsdCB7XFxuICA4MTpcXHQgICAgICAgIGRldi5nZW5waHlfc3VzcGVuZCgpXFxuICA4MjpcXHQgICAgfVxcbiAgODM6XFx0XFxuICA4NDpcXHQgICAgZm4gcmVzdW1lKGRldjogXFx1MDAyNm11dCBwaHk6OkRldmljZSkgLVxcdTAwM2UgUmVzdWx0IHtcXG4gIDg1OlxcdCAgICAgICAgZGV2LmdlbnBoeV9yZXN1bWUoKVxcbiAgODY6XFx0ICAgIH1cXG4gIDg3OlxcdFxcbiAgODg6XFx0ICAgIGZuIHNvZnRfcmVzZXQoZGV2OiBcXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXFx1MDAzZSBSZXN1bHQge1xcbiAgODk6XFx0ICAgICAgICBhc2l4X3NvZnRfcmVzZXQoZGV2KVxcbiAgOTA6XFx0ICAgIH1cXG4gIDkxOlxcdFxcbiAgOTI6XFx0ICAgIGZuIGxpbmtfY2hhbmdlX25vdGlmeShkZXY6IFxcdTAwMjZtdXQgcGh5OjpEZXZpY2UpIHtcXG4gIDkzOlxcdCAgICAgICAgLy8gUmVzZXQgUEhZLCBvdGhlcndpc2UgTUlJX0xQQSB3aWxsIHByb3ZpZGUgb3V0ZGF0ZWQgaW5mb3JtYXRpb24uXFxuICA5NDpcXHQgICAgICAgIC8vIFRoaXMgaXNzdWUgaXMgcmVwcm9kdWNpYmxlIG9ubHkgd2l0aCBzb21lIGxpbmsgcGFydG5lciBQSFlzLlxcbiAgOTU6XFx0ICAgICAgICBpZiBkZXYuc3RhdGUoKSA9PSBwaHk6OkRldmljZVN0YXRlOjpOb0xpbmsge1xcbiAgOTY6XFx0ICAgICAgICAgICAgbGV0IF8gPSBkZXYuaW5pdF9odygpO1xcbiAgOTc6XFx0ICAgICAgICAgICAgbGV0IF8gPSBkZXYuc3RhcnRfYW5lZygpO1xcbiAgOTg6XFx0ICAgICAgICB9XFxuICA5OTpcXHQgICAgfVxcbiAxMDA6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMjoxNS41MzgzMDgzOTFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc4NjcwODMwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBwaHkucnNgIE1vZHVsZSBhbmQgQVg4ODc3MkEgQ29ubmVjdGl2aXR5KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYHJ1c3Qva2VybmVsL25ldC9waHkucnNgLiBJdCdzIGRlYWxpbmcgd2l0aCBiaXRmaWVsZCBpbmRpY2VzLCB3aGljaCBpcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoIGluIHByaW5jaXBsZS4gQnV0LCB0aGUgcmVhbCBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzLCBjYW4gd2UgYWN0dWFsbHkgKnRlc3QqIHRoaXMgZWZmZWN0aXZlbHk/IEFyZSBgaXNfbGlua191cGAsIGBpc19hdXRvbmVnX2VuYWJsZWRgLCBhbmQgYGlzX2F1dG9uZWdfY29tcGxldGVkYCByZWFjaGFibGUgd2l0aGluIHRoZSB0ZXN0aW5nIGZyYW1ld29yaz8gU3BlY2lmaWNhbGx5LCBpcyBgYXg4ODc5NmJfcnVzdGAgc29tZXRoaW5nIHRoYXQgc3l6a2FsbGVyIGNhbiBldmVuIHRvdWNoP1xuXG5BaCwgcmlnaHQsIHN5emthbGxlciAqY2FuKiBsb2FkIG1vZHVsZXMsIHNvIHRoZXJlJ3MgYSBjaGFuY2UuIEkgY2FuIHNlZSBpdCBpbnN0YW50aWF0aW5nIFBIWSBkZXZpY2VzIHVzaW5nIHZpcnR1YWwgTURJTyBidXNlcyBvciBuZXRsaW5rLiBCdXQgdGhlbiBJIGhhdmUgdG8gYXNrIG15c2VsZiwgZG9lcyBzeXprYWxsZXIgYWN0dWFsbHkgKmhhdmUqIGEgdmlydHVhbCBNRElPIGJ1cz8gT3IgaXMgaXQgbGVhbmluZyBvbiBgbWFjc2VjYCwgYHZldGhgLCBvciBgdHVuYD9cblxuV2FpdCBhIHNlY29uZC4uLiBkaWRuJ3QgSSBzZWUgc29tZXRoaW5nIGFib3V0IFVTQj8gQWhhISBTeXprYWxsZXIgaGFzIHRoZSBjYXBhYmlsaXR5IHRvIGluamVjdCBVU0IgZGV2aWNlcy4gQW5kIHRoYXQgdHJpZ2dlcnMgc29tZXRoaW5nIOKAkyB0aGUgQVg4ODc3MkEhIEkgcmVtZW1iZXIgaXQgYXMgYW4gQVNJWCBVU0IgZXRoZXJuZXQgYWRhcHRlci4gTm93LCBoZXJlJ3MgdGhlIHJ1YjogaXMgdGhlIEFYODg3NzJBIGEgUEhZIGRldmljZSBhcyB3ZWxsPyBJdCdzIHVzZWQgYnkgdGhlIGBhc2l4YCBVU0IgZXRoZXJuZXQgZHJpdmVyLCBpc24ndCBpdD9cblxuUmlnaHQsIHRoZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgYGRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuY2AgZmlsZSwgb3Igc29tZXRoaW5nIHNpbWlsYXIsIHRvIHNlZSBob3cgaXQncyBkZWZpbmVkIGFuZCBob3cgaXQncyBoYW5kbGVkLiBUaGF0J2xsIGJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBob3cgd2UgY2FuIGV4cGxvaXQgdGhpcyB0byB2YWxpZGF0ZSB0aGUgYHBoeS5yc2AgY2hhbmdlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzUyOCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIyOjIxLjMyNTAyMTQ1NloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTAzMDEyMjI1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCIweDAwM2IxODYxXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIyOjIyLjIyODA0Mjk2MVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTkzNjIyNDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIEFYODg3OTZCIERyaXZlciBVc2FnZSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBzdGF0dXMgb2YgYGRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jYC4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJIHN1c3BlY3QgdGhpcyBpcyBhIFBIWSAoUGh5c2ljYWwgTGF5ZXIpIGRyaXZlciByZWxhdGVkIHRvIGEgbmV0d29yayBpbnRlcmZhY2UgY29udHJvbGxlci4gSSBpbW1lZGlhdGVseSBqdW1wIHRvIHRoZSBtb3N0IGxvZ2ljYWwgc3RlcDogZGl2aW5nIGludG8gdGhlIGNvZGUgaXRzZWxmLiBJJ2xsIG9wZW4gdXAgdGhhdCBmaWxlIHRvIHF1aWNrbHkgYXNzZXNzIGl0cyBjdXJyZW50IHJvbGUuIEkgd2FudCB0byBjaGVjayBpZiB0aGUgZHJpdmVyIGlzIGFjdHVhbGx5IGJlaW5nIHV0aWxpemVkIGFueXdoZXJlIHdpdGhpbiB0aGUgc3lzdGVtLiBJcyBpdCBhY3RpdmVseSBiZWluZyBjb21waWxlZCBhbmQgbGlua2VkLCBvciBpcyBpdCBtZXJlbHkgc2l0dGluZyB0aGVyZSwgcG90ZW50aWFsbHkgb3V0ZGF0ZWQgb3IgdW51c2VkPyBCYXNlZCBvbiB0aGUgcHJvamVjdCBJIGtub3cgdGhlcmUncyBhIHBvc3NpYmlsaXR5IGl0IGlzbid0IHVzZWQgYXQgYWxsIGFueW1vcmUuIFRpbWUgdG8gc2VlIHdoYXQncyBhY3R1YWxseSBnb2luZyBvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6ODE0OCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIyOjI1LjIyMTY2ODg0MVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjMwNTk1NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiMHgwMDNiMTg2MVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jLTEyLVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yi5jOjEzOiNkZWZpbmUgUEhZX0lEX0FTSVhfQVg4ODc3MkFcXHRcXHQweDAwM2IxODYxXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiLmMtMTQtI2RlZmluZSBQSFlfSURfQVNJWF9BWDg4NzcyQ1xcdFxcdDB4MDAzYjE4ODFcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzPTQxPWltcGwgRHJpdmVyIGZvciBQaHlBWDg4NzcyQSB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy00My0gICAgY29uc3QgTkFNRTogXFx1MDAyNidzdGF0aWMgQ1N0ciA9IGNcXFwiQXNpeCBFbGVjdHJvbmljcyBBWDg4NzcyQVxcXCI7XFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM6NDQ6ICAgIGNvbnN0IFBIWV9ERVZJQ0VfSUQ6IERldmljZUlkID0gRGV2aWNlSWQ6Om5ld193aXRoX2V4YWN0X21hc2soMHgwMDNiMTg2MSk7XFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtNDUtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIyOjI1LjI4NDczMzI2OVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzkwMTQ4NTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU3l6a2FsbGVyIEZ1enppbmcgUG90ZW50aWFsIG9mIGBheDg4Nzk2Yl9ydXN0LnJzYCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGBheDg4Nzk2Yl9ydXN0LnJzYCwgd2hpY2ggaXMgY2xlYXJseSBhIFBIWSBkcml2ZXIuIFRoZSBxdWVzdGlvbiBub3cgaXMsIGNhbiBTeXprYWxsZXIgZWZmZWN0aXZlbHkgZnV6eiB0aGlzPyBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCAqc2hvdWxkKiBiZSBwb3NzaWJsZS4gV2Uga25vdyBTeXprYWxsZXIgaGFzIHRoZSBgc3l6X3VzYl9jb25uZWN0YCBjYWxsLCB3aGljaCBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gZW11bGF0ZSBVU0IgZGV2aWNlcy4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gQW5kIHRoZW4gdGhlcmUncyB0aGUgYGFzaXhgIFVTQiBldGhlcm5ldCBkcml2ZXI7IGlmIGl0IHV0aWxpemVzIHBoeWxpYiwgdGhhdCdzIHBvdGVudGlhbGx5IHRoZSBsaW5rIHdlIG5lZWQuIFRoZSBgYXNpeGAgZHJpdmVyIG1pZ2h0IGF0dGFjaCB0byB0aGUgYGF4ODg3OTZiYCBQSFkuIFNvLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY29uZmlybSB3aGV0aGVyIGBhc2l4YCBpbmRlZWQgbGV2ZXJhZ2VzIHRoZSBwaHlsaWIgZnJhbWV3b3JrLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgY29ubmVjdGlvbiBiZWZvcmUgcHJvY2VlZGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODY3NCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIyOjI5LjY3NDg4Mzk0NVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODg4MTA0ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X2Nvbm5lY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYz0yNjE9c3RhdGljIGludCBheDg4MTcyYV9yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0zMTMtXFxuZHJpdmVycy9uZXQvdXNiL2F4ODgxNzJhLmM6MzE0OlxcdHByaXYtXFx1MDAzZXBoeWRldiA9IHBoeV9jb25uZWN0KGRldi1cXHUwMDNlbmV0LCBwcml2LVxcdTAwM2VwaHlfbmFtZSxcXG5kcml2ZXJzL25ldC91c2IvYXg4ODE3MmEuYy0zMTUtXFx0XFx0XFx0XFx0ICAgXFx1MDAyNmF4ODgxNzJhX2FkanVzdF9saW5rLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmM9MTE0Nz1zdGF0aWMgaW50IHNtc2M5NXh4X2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9zbXNjOTV4eC5jLTEyODQtXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmM6MTI4NTpcXHRyZXQgPSBwaHlfY29ubmVjdF9kaXJlY3QoZGV2LVxcdTAwM2VuZXQsIHBkYXRhLVxcdTAwM2VwaHlkZXYsXFxuZHJpdmVycy9uZXQvdXNiL3Ntc2M5NXh4LmMtMTI4Ni1cXHRcXHRcXHRcXHQgXFx1MDAyNnNtc2M5NXh4X2hhbmRsZV9saW5rX2NoYW5nZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjI6MjkuNzYzNjk5ODc3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NTUxNjQyNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aGlua2luZzpcblxuKipFeGFtaW5pbmcgTmV0d29yayBEcml2ZXIgRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGF4ODgxNzJhLmNgIGFuZCBzcGVjaWZpY2FsbHkgc2VlaW5nIGl0IHVzZSBgcGh5X2Nvbm5lY3RgLiBUaGF0IGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgcXVlc3Rpb246IGRvZXMgdGhlIGBhc2l4YCBkcml2ZXIsIHdoaWNoIGlzIGFub3RoZXIgY29tbW9uIFVTQiBFdGhlcm5ldCBhZGFwdGVyIGRyaXZlciwgYWxzbyB1dGlsaXplIHRoZSBQSFkgbGlicmFyeSAoYHBoeWxpYmApPyBJdCdzIGEga2V5IHF1ZXN0aW9uIGJlY2F1c2UgaXQgaGVscHMgbWUgdW5kZXJzdGFuZCB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIHBvdGVudGlhbCBjb2RlIHJldXNlIGJldHdlZW4gZGlmZmVyZW50IFVTQiBFdGhlcm5ldCBkcml2ZXJzLiBJZiBgYXNpeGAgKmRvZXNuJ3QqIHVzZSBgcGh5bGliYCwgdGhlbiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgaXQgaGFuZGxlcyB0aGUgUEhZIGNvbm5lY3Rpb24gZGlmZmVyZW50bHksIGFuZCB3aHkgdGhhdCBkZXNpZ24gY2hvaWNlIHdhcyBtYWRlLiBBbHRlcm5hdGl2ZWx5LCBpZiBpdCAqZG9lcyosIHRoZW4gSSBjYW4gZXhwZWN0IGEgbGV2ZWwgb2YgY29uc2lzdGVuY3kgaW4gUEhZIG1hbmFnZW1lbnQgYWNyb3NzIHRoZXNlIGFkYXB0ZXIgZmFtaWxpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkyNzIsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMjozMy4yMTg4NjcxNzZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNDM3Mjg4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfY29ubmVjdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvYXNpeFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjI6MzMuMjgyMzE0MDk0WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMjM3MzE1ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIGl0IHdlcmUgbXkgb3duOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBhc2l4X2RldmljZXMuYyBDb2RlKipcblxuT2theSwgdGltZSB0byBkaWcgaW4uIExldCdzIHN0YXJ0IGJ5IHplcm9pbmcgaW4gb24gYGRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbG9naWMgZm9yIHRob3NlIEFTSVgtYmFzZWQgVVNCIEV0aGVybmV0IGFkYXB0ZXJzIHNob3VsZCByZXNpZGUuIEl0J3MgdGhlIGdvLXRvIHBsYWNlIGZvciB1bmRlcnN0YW5kaW5nIHRoZWlyIHF1aXJrcywgaG93IHRoZXkncmUgaW5pdGlhbGl6ZWQsIGFuZCBob3cgdGhleSBpbnRlcmFjdCB3aXRoIHRoZSBVU0Igc3Vic3lzdGVtLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgZGV2aWNlLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcywgcHJvYmFibHkgc29tZSB2ZW5kb3IvcHJvZHVjdCBJRCBoYW5kbGluZywgYW5kIGRlZmluaXRlbHkgYSBzZXQgb2YgVVNCIGRlc2NyaXB0b3JzIGJlaW5nIHBhcnNlZC4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gd2hhdCB0aGUgZHJpdmVyJ3MgZG9pbmcgd2l0aCBkaWZmZXJlbnQgZW5kcG9pbnQgdHlwZXMuIEhvcGVmdWxseSwgdGhlIGNvZGUgaXMgd2VsbC1zdHJ1Y3R1cmVkIGFuZCBkb2N1bWVudGVkLCBtYWtpbmcgaXQgZWFzaWVyIHRvIGZvbGxvdyB0aGUgZGF0YSBmbG93LiBNeSBnb2FsIGlzIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGRyaXZlcidzIGtleSBvcGVyYXRpb25hbCBzdGVwcyBhbmQgaWRlbnRpZnkgdGhlIGFyZWFzIHRoYXQgd2FycmFudCBjbG9zZXIgc2NydXRpbnkgb3IgcG90ZW50aWFsIG1vZGlmaWNhdGlvbiwgZGVwZW5kaW5nIG9uIHRoZSB0YXNrIGF0IGhhbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1MDYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMjozNi40MDYwNDkxNDFaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4MTA0NDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTU5PXN0YXRpYyB2b2lkIGFzaXhfc2V0X25ldGRldl9kZXZfYWRkcihzdHJ1Y3QgdXNibmV0ICpkZXYsIHU4ICphZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY5LS8qIEdldCB0aGUgUEhZIElkZW50aWZpZXIgZnJvbSB0aGUgUEhZU0lEMSBcXHUwMDI2IFBIWVNJRDIgTUlJIHJlZ2lzdGVycyAqL1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MDpzdGF0aWMgdTMyIGFzaXhfZ2V0X3BoeWlkKHN0cnVjdCB1c2JuZXQgKmRldilcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzEte1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MjpcXHRpbnQgcGh5X3JlZztcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzM6XFx0dTMyIHBoeV9pZDtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzQtXFx0aW50IGk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc1LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NjpcXHQvKiBQb2xsIGZvciB0aGUgcmFyZSBjYXNlIHRoZSBGVyBvciBwaHkgaXNuJ3QgcmVhZHkgeWV0LiAgKi9cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzctXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIDEwMDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc4OlxcdFxcdHBoeV9yZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfUEhZU0lEMSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc5OlxcdFxcdGlmIChwaHlfcmVnIFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODAtXFx0XFx0XFx0cmV0dXJuIDA7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgxOlxcdFxcdGlmIChwaHlfcmVnICE9IDAgXFx1MDAyNlxcdTAwMjYgcGh5X3JlZyAhPSAweEZGRkYpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgyLVxcdFxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTg1LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4NjpcXHRpZiAocGh5X3JlZyBcXHUwMDNjPSAwIHx8IHBoeV9yZWcgPT0gMHhGRkZGKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04Ny1cXHRcXHRyZXR1cm4gMDtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODgtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjg5OlxcdHBoeV9pZCA9IChwaHlfcmVnIFxcdTAwMjYgMHhmZmZmKSBcXHUwMDNjXFx1MDAzYyAxNjtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTAtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkxOlxcdHBoeV9yZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfUEhZU0lEMik7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkyOlxcdGlmIChwaHlfcmVnIFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTMtXFx0XFx0cmV0dXJuIDA7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk0LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5NTpcXHRwaHlfaWQgfD0gKHBoeV9yZWcgXFx1MDAyNiAweGZmZmYpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05Ni1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTc6XFx0cmV0dXJuIHBoeV9pZDtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTgtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTE3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGF4ODgxNzJfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xODktXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjE5MDpzdGF0aWMgdm9pZCBhc2l4X3BoeV9yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYsIHVuc2lnbmVkIGludCByZXNldF9iaXRzKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xOTEte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTE5My1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTk0OlxcdGFzaXhfbWRpb193cml0ZShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfQk1DUiwgcmVzZXRfYml0cyk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTE5NS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTk2OlxcdC8qIGdpdmUgcGh5X2lkIGEgY2hhbmNlIHRvIHByb2Nlc3MgcmVzZXQgKi9cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTk3LVxcdHVkZWxheSg1MDApO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTIwMC1cXHR3aGlsZSAodGltZW91dC0tKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjIwMTpcXHRcXHRpZiAoYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0JNQ1IpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTIwMi1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2IEJNQ1JfUkVTRVQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjA3LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyMDg6XFx0bmV0ZGV2X2VycihkZXYtXFx1MDAzZW5ldCwgXFxcIkJNQ1JfUkVTRVQgdGltZW91dCBvbiBwaHlfaWQgJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjIwOTpcXHRcXHQgICBkZXYtXFx1MDAzZW1paS5waHlfaWQpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yMTAtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTIxMj1zdGF0aWMgaW50IGF4ODgxNzJfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI1MC1cXHRkZXYtXFx1MDAzZW1paS5tZGlvX3dyaXRlID0gYXNpeF9tZGlvX3dyaXRlO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyNTE6XFx0ZGV2LVxcdTAwM2VtaWkucGh5X2lkX21hc2sgPSAweDNmO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNTItXFx0ZGV2LVxcdTAwM2VtaWkucmVnX251bV9tYXNrID0gMHgxZjtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjUzLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyNTQ6XFx0ZGV2LVxcdTAwM2VtaWkucGh5X2lkID0gYXNpeF9yZWFkX3BoeV9hZGRyKGRldiwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjI1NTpcXHRpZiAoZGV2LVxcdTAwM2VtaWkucGh5X2lkIFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjU2OlxcdFxcdHJldHVybiBkZXYtXFx1MDAzZW1paS5waHlfaWQ7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI1Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNjItXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjI2MzpcXHRhc2l4X3BoeV9yZXNldChkZXYsIEJNQ1JfUkVTRVQpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyNjQ6XFx0YXNpeF9tZGlvX3dyaXRlKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIE1JSV9BRFZFUlRJU0UsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI2NS1cXHRcXHRBRFZFUlRJU0VfQUxMIHwgQURWRVJUSVNFX0NTTUEgfCBBRFZFUlRJU0VfUEFVU0VfQ0FQKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0yOTQ9c3RhdGljIHZvaWQgYXg4ODc3Ml9ldGh0b29sX2dldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI5OS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MzAwOlxcdHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbShwcml2LVxcdTAwM2VwaHlsaW5rLCBwYXVzZSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTMwMS19XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MzAzPXN0YXRpYyBpbnQgYXg4ODc3Ml9ldGh0b29sX3NldF9wYXVzZXBhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTMwOC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MzA5OlxcdHJldHVybiBwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0ocHJpdi1cXHUwMDNlcGh5bGluaywgcGF1c2UpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zMTAtfVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTMxMj1zdGF0aWMgY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzIGF4ODg3NzJfZXRodG9vbF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzIxLVxcdC5zZXRfZWVwcm9tXFx0XFx0PSBhc2l4X3NldF9lZXByb20sXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjMyMjpcXHQubndheV9yZXNldFxcdFxcdD0gcGh5X2V0aHRvb2xfbndheV9yZXNldCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MzIzOlxcdC5nZXRfbGlua19rc2V0dGluZ3NcXHQ9IHBoeV9ldGh0b29sX2dldF9saW5rX2tzZXR0aW5ncyxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MzI0OlxcdC5zZXRfbGlua19rc2V0dGluZ3NcXHQ9IHBoeV9ldGh0b29sX3NldF9saW5rX2tzZXR0aW5ncyxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzI1LVxcdC5zZWxmX3Rlc3RcXHRcXHQ9IG5ldF9zZWxmdGVzdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0zMzI9c3RhdGljIGludCBheDg4NzcyX3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zNTMtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjM1NDpcXHRwaHlsaW5rX3N0YXJ0KHByaXYtXFx1MDAzZXBoeWxpbmspO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zNTUtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MzYyPXN0YXRpYyBpbnQgYXg4ODc3Ml9od19yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYsIGludCBpbl9wbSlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zNzMtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjM3NDpcXHRyZXQgPSBhc2l4X3dyaXRlX2NtZChkZXYsIEFYX0NNRF9TV19QSFlfU0VMRUNULCBwcml2LVxcdTAwM2VlbWJkX3BoeSxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMzc1LVxcdFxcdFxcdCAgICAgMCwgMCwgTlVMTCwgaW5fcG0pO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTM4MC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MzgxOlxcdGlmIChwcml2LVxcdTAwM2VlbWJkX3BoeSkge1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0zODItXFx0XFx0cmV0ID0gYXNpeF9zd19yZXNldChkZXYsIEFYX1NXUkVTRVRfSVBQRCwgaW5fcG0pO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQwNi1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NDA3OlxcdGlmIChpbl9wbSBcXHUwMDI2XFx1MDAyNiAoIWFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDA4LVxcdFxcdFxcdFxcdFxcdCAgIE1JSV9QSFlTSUQxKSkpe1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTQ1Nj1zdGF0aWMgaW50IGF4ODg3NzJhX2h3X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldiwgaW50IGluX3BtKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ1OS1cXHRzdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSAqcHJpdiA9IGRldi1cXHUwMDNlZHJpdmVyX3ByaXY7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjQ2MDpcXHR1MTYgcnhfY3RsLCBwaHkxNGgsIHBoeTE1aCwgcGh5MTZoO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00NjEtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00NjYtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjQ2NzpcXHRyZXQgPSBhc2l4X3dyaXRlX2NtZChkZXYsIEFYX0NNRF9TV19QSFlfU0VMRUNULCBwcml2LVxcdTAwM2VlbWJkX3BoeSB8XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ2OC1cXHRcXHRcXHQgICAgIEFYX1BIWVNFTF9TU0VOLCAwLCAwLCBOVUxMLCBpbl9wbSk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDk2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo0OTc6XFx0aWYgKGluX3BtIFxcdTAwMjZcXHUwMDI2ICghYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00OTgtXFx0XFx0XFx0XFx0XFx0ICAgTUlJX1BIWVNJRDEpKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxMi1cXHRcXHQvKiBDaGVjayBpZiB0aGUgUEhZIHJlZ2lzdGVycyBoYXZlIGRlZmF1bHQgc2V0dGluZ3MgKi9cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTEzOlxcdFxcdHBoeTE0aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE0LVxcdFxcdFxcdFxcdFxcdCAgICAgQVg4ODc3MkFfUEhZMTRIKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTE1OlxcdFxcdHBoeTE1aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE2LVxcdFxcdFxcdFxcdFxcdCAgICAgQVg4ODc3MkFfUEhZMTVIKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTE3OlxcdFxcdHBoeTE2aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE4LVxcdFxcdFxcdFxcdFxcdCAgICAgQVg4ODc3MkFfUEhZMTZIKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MjEtXFx0XFx0XFx0ICAgXFxcIjc3MmFfaHdfcmVzZXQ6IE1SMjA9MHgleCBNUjIxPTB4JXggTVIyMj0weCV4XFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MjI6XFx0XFx0XFx0ICAgcGh5MTRoLCBwaHkxNWgsIHBoeTE2aCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUyMy1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTI0LVxcdFxcdC8qIFJlc3RvcmUgUEhZIHJlZ2lzdGVycyBkZWZhdWx0IHNldHRpbmcgaWYgbm90ICovXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUyNTpcXHRcXHRpZiAocGh5MTRoICE9IEFYODg3NzJBX1BIWTE0SF9ERUZBVUxUKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MjY6XFx0XFx0XFx0YXNpeF9tZGlvX3dyaXRlX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTI3LVxcdFxcdFxcdFxcdFxcdCAgICAgQVg4ODc3MkFfUEhZMTRILFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MjgtXFx0XFx0XFx0XFx0XFx0ICAgICBBWDg4NzcyQV9QSFkxNEhfREVGQVVMVCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUyOTpcXHRcXHRpZiAocGh5MTVoICE9IEFYODg3NzJBX1BIWTE1SF9ERUZBVUxUKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MzA6XFx0XFx0XFx0YXNpeF9tZGlvX3dyaXRlX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTMxLVxcdFxcdFxcdFxcdFxcdCAgICAgQVg4ODc3MkFfUEhZMTVILFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MzItXFx0XFx0XFx0XFx0XFx0ICAgICBBWDg4NzcyQV9QSFkxNUhfREVGQVVMVCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUzMzpcXHRcXHRpZiAocGh5MTZoICE9IEFYODg3NzJBX1BIWTE2SF9ERUZBVUxUKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo1MzQ6XFx0XFx0XFx0YXNpeF9tZGlvX3dyaXRlX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTM1LVxcdFxcdFxcdFxcdFxcdCAgICAgQVg4ODc3MkFfUEhZMTZILFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTU4Mz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGF4ODg3NzJfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01OTEtXFx0Lm5kb192YWxpZGF0ZV9hZGRyXFx0PSBldGhfdmFsaWRhdGVfYWRkcixcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTkyOlxcdC5uZG9fZXRoX2lvY3RsXFx0XFx0PSBwaHlfZG9faW9jdGxfcnVubmluZyxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTkzLVxcdC5uZG9fc2V0X3J4X21vZGUgICAgICAgID0gYXNpeF9zZXRfbXVsdGljYXN0LFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTU5Nj1zdGF0aWMgdm9pZCBheDg4NzcyX3N1c3BlbmQoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTYwMi1cXHRcXHRydG5sX2xvY2soKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NjAzOlxcdFxcdHBoeWxpbmtfc3VzcGVuZChwcml2LVxcdTAwM2VwaHlsaW5rLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTYwNC1cXHRcXHRydG5sX3VubG9jaygpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTYyMi0gKlxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo2MjM6ICogLSBUaGUgTUFDIGRyaXZlciBtdXN0IGhvbGQgUlROTCB3aGVuIGNhbGxpbmcgcGh5bGluayBpbnRlcmZhY2VzIHN1Y2ggYXNcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NjI0OiAqICAgcGh5bGlua19zdXNwZW5kKCkvcmVzdW1lKCkuIFRob3NlIGNhbGxzIHdpbGwgYWxzbyBwZXJmb3JtIE1ESU8gSS9PLlxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02MjUtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz02NDI9c3RhdGljIHZvaWQgYXg4ODc3Ml9yZXN1bWUoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTY1Mi1cXHRcXHRydG5sX2xvY2soKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NjUzOlxcdFxcdHBoeWxpbmtfcmVzdW1lKHByaXYtXFx1MDAzZXBoeWxpbmspO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02NTQtXFx0XFx0cnRubF91bmxvY2soKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz02Njk9c3RhdGljIGludCBheDg4NzcyX2luaXRfbWRpbyhzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNjgxLVxcdHByaXYtXFx1MDAzZW1kaW8tXFx1MDAzZW5hbWUgPSBcXFwiQXNpeCBNRElPIEJ1c1xcXCI7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjY4MjpcXHRwcml2LVxcdTAwM2VtZGlvLVxcdTAwM2VwaHlfbWFzayA9IH4oQklUKHByaXYtXFx1MDAzZXBoeV9hZGRyIFxcdTAwMjYgMHgxZikgfCBCSVQoQVhfRU1CRF9QSFlfQUREUikpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy02ODMtXFx0LyogbWlpIGJ1cyBuYW1lIGlzIHVzYi1cXHUwMDNjdXNiIGJ1cyBudW1iZXJcXHUwMDNlLVxcdTAwM2N1c2IgZGV2aWNlIG51bWJlclxcdTAwM2UgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz02OTc9c3RhdGljIHZvaWQgYXg4ODc3Ml9tZGlvX3VucmVnaXN0ZXIoc3RydWN0IGFzaXhfY29tbW9uX3ByaXZhdGUgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzAyLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MDM6c3RhdGljIGludCBheDg4NzcyX2luaXRfcGh5KHN0cnVjdCB1c2JuZXQgKmRldilcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MDctXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjcwODpcXHRwcml2LVxcdTAwM2VwaHlkZXYgPSBtZGlvYnVzX2dldF9waHkocHJpdi1cXHUwMDNlbWRpbywgcHJpdi1cXHUwMDNlcGh5X2FkZHIpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MDk6XFx0aWYgKCFwcml2LVxcdTAwM2VwaHlkZXYpIHtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzEwLVxcdFxcdG5ldGRldl9lcnIoZGV2LVxcdTAwM2VuZXQsIFxcXCJDb3VsZCBub3QgZmluZCBQSFlcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcxMy1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzE0OlxcdHJldCA9IHBoeWxpbmtfY29ubmVjdF9waHkocHJpdi1cXHUwMDNlcGh5bGluaywgcHJpdi1cXHUwMDNlcGh5ZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzE1LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03MTktXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjcyMDpcXHRwaHlfc3VzcGVuZChwcml2LVxcdTAwM2VwaHlkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MjE6XFx0cHJpdi1cXHUwMDNlcGh5ZGV2LVxcdTAwM2VtYWNfbWFuYWdlZF9wbSA9IHRydWU7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcyMi1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzIzOlxcdHBoeV9hdHRhY2hlZF9pbmZvKHByaXYtXFx1MDAzZXBoeWRldik7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTcyNC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzI1OlxcdGlmIChwcml2LVxcdTAwM2VlbWJkX3BoeSlcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzI2LVxcdFxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTczMS1cXHQgKi9cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzMyOlxcdHByaXYtXFx1MDAzZXBoeWRldl9pbnQgPSBtZGlvYnVzX2dldF9waHkocHJpdi1cXHUwMDNlbWRpbywgQVhfRU1CRF9QSFlfQUREUik7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjczMzpcXHRpZiAoIXByaXYtXFx1MDAzZXBoeWRldl9pbnQpIHtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzM0LVxcdFxcdHJ0bmxfbG9jaygpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3MzU6XFx0XFx0cGh5bGlua19kaXNjb25uZWN0X3BoeShwcml2LVxcdTAwM2VwaHlsaW5rKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzM2LVxcdFxcdHJ0bmxfdW5sb2NrKCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzQwLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NDE6XFx0cHJpdi1cXHUwMDNlcGh5ZGV2X2ludC1cXHUwMDNlbWFjX21hbmFnZWRfcG0gPSB0cnVlO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NDI6XFx0cGh5X3N1c3BlbmQocHJpdi1cXHUwMDNlcGh5ZGV2X2ludCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc0My1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03NDYtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc0NzpzdGF0aWMgdm9pZCBheDg4NzcyX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NDg6XFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc0OS17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzUyLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NTM6c3RhdGljIHZvaWQgYXg4ODc3Ml9tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3NTQ6XFx0XFx0XFx0XFx0IHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03NTUte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc2MS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzYyOnN0YXRpYyB2b2lkIGF4ODg3NzJfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc2MzpcXHRcXHRcXHQgICAgICAgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NzY0OlxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgbW9kZSwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzY1LVxcdFxcdFxcdCAgICAgICBpbnQgc3BlZWQsIGludCBkdXBsZXgsXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzkyLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3OTM6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgYXg4ODc3Ml9waHlsaW5rX21hY19vcHMgPSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc5NC1cXHQubWFjX2NvbmZpZyA9IGF4ODg3NzJfbWFjX2NvbmZpZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03OTgtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc5OTpzdGF0aWMgaW50IGF4ODg3NzJfcGh5bGlua19zZXR1cChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgwMC17XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgwMS1cXHRzdHJ1Y3QgYXNpeF9jb21tb25fcHJpdmF0ZSAqcHJpdiA9IGRldi1cXHUwMDNlZHJpdmVyX3ByaXY7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwMjpcXHRwaHlfaW50ZXJmYWNlX3QgcGh5X2lmX21vZGU7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwMzpcXHRzdHJ1Y3QgcGh5bGluayAqcGh5bGluaztcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODA0LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MDU6XFx0cHJpdi1cXHUwMDNlcGh5bGlua19jb25maWcuZGV2ID0gXFx1MDAyNmRldi1cXHUwMDNlbmV0LVxcdTAwM2VkZXY7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwNjpcXHRwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZy50eXBlID0gUEhZTElOS19ORVRERVY7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgwNzpcXHRwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzID0gTUFDX1NZTV9QQVVTRSB8IE1BQ19BU1lNX1BBVVNFIHxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODA4LVxcdFxcdE1BQ18xMCB8IE1BQ18xMDA7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODEwLVxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgxMTpcXHRcXHQgIHByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLnN1cHBvcnRlZF9pbnRlcmZhY2VzKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODEyLVxcdF9fc2V0X2JpdChQSFlfSU5URVJGQUNFX01PREVfUk1JSSxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODEzOlxcdFxcdCAgcHJpdi1cXHUwMDNlcGh5bGlua19jb25maWcuc3VwcG9ydGVkX2ludGVyZmFjZXMpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTQtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgxNTpcXHRpZiAocHJpdi1cXHUwMDNlZW1iZF9waHkpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgxNjpcXHRcXHRwaHlfaWZfbW9kZSA9IFBIWV9JTlRFUkZBQ0VfTU9ERV9JTlRFUk5BTDtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODE3LVxcdGVsc2VcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODE4OlxcdFxcdHBoeV9pZl9tb2RlID0gUEhZX0lOVEVSRkFDRV9NT0RFX1JNSUk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTgxOS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODIwOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cHJpdi1cXHUwMDNlcGh5bGlua19jb25maWcsIGRldi1cXHUwMDNlbmV0LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjE6XFx0XFx0XFx0XFx0IHBoeV9pZl9tb2RlLCBcXHUwMDI2YXg4ODc3Ml9waHlsaW5rX21hY19vcHMpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4MjI6XFx0aWYgKElTX0VSUihwaHlsaW5rKSlcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODIzOlxcdFxcdHJldHVybiBQVFJfRVJSKHBoeWxpbmspO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MjQtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgyNTpcXHRwcml2LVxcdTAwM2VwaHlsaW5rID0gcGh5bGluaztcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODI2LVxcdHJldHVybiAwO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTgyOT1zdGF0aWMgaW50IGF4ODg3NzJfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTg3Ny1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODc4OlxcdHJldCA9IGFzaXhfcmVhZF9waHlfYWRkcihkZXYsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04NzktXFx0aWYgKHJldCBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODgxLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo4ODI6XFx0cHJpdi1cXHUwMDNlcGh5X2FkZHIgPSByZXQ7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjg4MzpcXHRwcml2LVxcdTAwM2VlbWJkX3BoeSA9ICgocHJpdi1cXHUwMDNlcGh5X2FkZHIgXFx1MDAyNiAweDFmKSA9PSBBWF9FTUJEX1BIWV9BRERSKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODg0LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkxMy1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTE0OlxcdHByaXYtXFx1MDAzZXByZXN2ZF9waHlfYm1jciA9IDA7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkxNTpcXHRwcml2LVxcdTAwM2VwcmVzdmRfcGh5X2FkdmVydGlzZSA9IDA7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkxNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MjAtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkyMTpcXHRyZXQgPSBheDg4NzcyX3BoeWxpbmtfc2V0dXAoZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTIyLVxcdGlmIChyZXQpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkyMzpcXHRcXHRnb3RvIHBoeWxpbmtfZXJyO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MjQtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkyNTpcXHRyZXQgPSBheDg4NzcyX2luaXRfcGh5KGRldik7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkyNi1cXHRpZiAocmV0KVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5Mjc6XFx0XFx0Z290byBpbml0cGh5X2VycjtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTI4LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkzMS1cXHQgKiB0aGF0IGNvdWxkIGRlYWRsb2NrIChhdXRvcmVzdW1lIHVuZGVyIFJUTkwgd2hpbGUgVVNCIFBNIGxvY2tcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTMyOlxcdCAqIGlzIGhlbGQsIHBoeWxpbmsvTURJTyB3YW50cyBSVE5MKS5cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTMzLVxcdCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkzNy1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTM4OmluaXRwaHlfZXJyOlxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5Mzk6XFx0cGh5bGlua19kZXN0cm95KHByaXYtXFx1MDAzZXBoeWxpbmspO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5NDA6cGh5bGlua19lcnI6XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk0MS1cXHRheDg4NzcyX21kaW9fdW5yZWdpc3Rlcihwcml2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz05NDY9c3RhdGljIGludCBheDg4NzcyX3N0b3Aoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk0OS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTUwOlxcdHBoeWxpbmtfc3RvcChwcml2LVxcdTAwM2VwaHlsaW5rKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTUxLVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTk1NT1zdGF0aWMgdm9pZCBheDg4NzcyX3VuYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk1OS1cXHRydG5sX2xvY2soKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTYwOlxcdHBoeWxpbmtfZGlzY29ubmVjdF9waHkocHJpdi1cXHUwMDNlcGh5bGluayk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk2MS1cXHRydG5sX3VubG9jaygpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5NjI6XFx0cGh5bGlua19kZXN0cm95KHByaXYtXFx1MDAzZXBoeWxpbmspO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05NjMtXFx0YXg4ODc3Ml9tZGlvX3VucmVnaXN0ZXIocHJpdik7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9OTc1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgYXg4ODE3OF9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05ODktXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk5MDpzdGF0aWMgaW50IG1hcnZlbGxfcGh5X2luaXQoc3RydWN0IHVzYm5ldCAqZGV2KVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTEte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTk5NC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTk1OlxcdG5ldGRldl9kYmcoZGV2LVxcdTAwM2VuZXQsIFxcXCJtYXJ2ZWxsX3BoeV9pbml0KClcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTYtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk5NzpcXHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfTUFSVkVMTF9TVEFUVVMpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTgtXFx0bmV0ZGV2X2RiZyhkZXYtXFx1MDAzZW5ldCwgXFxcIk1JSV9NQVJWRUxMX1NUQVRVUyA9IDB4JTA0eFxcXFxuXFxcIiwgcmVnKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk5LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDAwOlxcdGFzaXhfbWRpb193cml0ZShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfTUFSVkVMTF9DVFJMLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDAxLVxcdFxcdFxcdE1BUlZFTExfQ1RSTF9SWERFTEFZIHwgTUFSVkVMTF9DVFJMX1RYREVMQVkpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMDMtXFx0aWYgKGRhdGEtXFx1MDAzZWxlZG1vZGUpIHtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAwNDpcXHRcXHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDA1LVxcdFxcdFxcdE1JSV9NQVJWRUxMX0xFRF9DVFJMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDA5LVxcdFxcdHJlZyB8PSAoMSArIDB4MDEwMCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMTA6XFx0XFx0YXNpeF9tZGlvX3dyaXRlKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMTEtXFx0XFx0XFx0TUlJX01BUlZFTExfTEVEX0NUUkwsIHJlZyk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMTItXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMTM6XFx0XFx0cmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAxNC1cXHRcXHRcXHRNSUlfTUFSVkVMTF9MRURfQ1RSTCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyMC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAyMTpzdGF0aWMgaW50IHJ0bDgyMTFjbF9waHlfaW5pdChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMjQtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMjU6XFx0bmV0ZGV2X2RiZyhkZXYtXFx1MDAzZW5ldCwgXFxcInJ0bDgyMTFjbF9waHlfaW5pdCgpXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyNi1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAyNzpcXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDB4MDAwNSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMjg6XFx0YXNpeF9tZGlvX3dyaXRlIChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCAweDBjLCAwKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAyOTpcXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MDEsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMzA6XFx0XFx0YXNpeF9tZGlvX3JlYWQgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MDEpIHwgMHgwMDgwKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzMTpcXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDApO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDMyLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDMzLVxcdGlmIChkYXRhLVxcdTAwM2VsZWRtb2RlID09IDEyKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMzQ6XFx0XFx0YXNpeF9tZGlvX3dyaXRlIChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCAweDFmLCAweDAwMDIpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDM1OlxcdFxcdGFzaXhfbWRpb193cml0ZSAoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgMHgxYSwgMHgwMGNiKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzNjpcXHRcXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDApO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDM3LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMDQyPXN0YXRpYyBpbnQgbWFydmVsbF9sZWRfc3RhdHVzKHN0cnVjdCB1c2JuZXQgKmRldiwgdTE2IHNwZWVkKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDQzLXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTA0NDpcXHR1MTYgcmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUFSVkVMTF9MRURfTUFOVUFMKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTA0NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDYyLVxcdG5ldGRldl9kYmcoZGV2LVxcdTAwM2VuZXQsIFxcXCJtYXJ2ZWxsX2xlZF9zdGF0dXMoKSB3cml0aW5nIDB4JTA0eFxcXFxuXFxcIiwgcmVnKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTA2MzpcXHRhc2l4X21kaW9fd3JpdGUoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUFSVkVMTF9MRURfTUFOVUFMLCByZWcpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDY0LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTEwNjg9c3RhdGljIGludCBheDg4MTc4X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDc0LVxcdGludCBncGlvMCA9IDA7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwNzU6XFx0dTMyIHBoeWlkO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDc2LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwOTYtXFx0aWYgKGVlcHJvbSA9PSBjcHVfdG9fbGUxNigweGZmZmYpKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwOTc6XFx0XFx0ZGF0YS1cXHUwMDNlcGh5bW9kZSA9IFBIWV9NT0RFX01BUlZFTEw7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwOTgtXFx0XFx0ZGF0YS1cXHUwMDNlbGVkbW9kZSA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTEwMC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTAxOlxcdFxcdGRhdGEtXFx1MDAzZXBoeW1vZGUgPSBsZTE2X3RvX2NwdShlZXByb20pIFxcdTAwMjYgMHg3RjtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTEwMi1cXHRcXHRkYXRhLVxcdTAwM2VsZWRtb2RlID0gbGUxNl90b19jcHUoZWVwcm9tKSBcXHUwMDNlXFx1MDAzZSA4O1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExMDQtXFx0fVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTA1OlxcdG5ldGRldl9kYmcoZGV2LVxcdTAwM2VuZXQsIFxcXCJHUElPMDogJWQsIFBoeU1vZGU6ICVkXFxcXG5cXFwiLCBncGlvMCwgZGF0YS1cXHUwMDNlcGh5bW9kZSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExMDYtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTExNC1cXHR9IGVsc2Uge1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTE1OlxcdFxcdG5ldGRldl9kYmcoZGV2LVxcdTAwM2VuZXQsIFxcXCJncGlvIHBoeW1vZGUgPT0gMSBwYXRoXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTExNi1cXHRcXHRhc2l4X3dyaXRlX2dwaW8oZGV2LCBBWF9HUElPX0dQTzFFTiwgMzAsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExMjAtXFx0LyogUmVhZCBQSFlJRCByZWdpc3RlciAqQUZURVIqIHBvd2VyaW5nIHVwIFBIWSAqL1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMTIxOlxcdHBoeWlkID0gYXNpeF9nZXRfcGh5aWQoZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTEyMjpcXHRuZXRkZXZfZGJnKGRldi1cXHUwMDNlbmV0LCBcXFwiUEhZSUQ9MHglMDh4XFxcXG5cXFwiLCBwaHlpZCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExMjMtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTEzNC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTEzNTpcXHRpZiAoZGF0YS1cXHUwMDNlcGh5bW9kZSA9PSBQSFlfTU9ERV9NQVJWRUxMKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjExMzY6XFx0XFx0bWFydmVsbF9waHlfaW5pdChkZXYpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTM3LVxcdFxcdG1zbGVlcCg2MCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjExMzg6XFx0fSBlbHNlIGlmIChkYXRhLVxcdTAwM2VwaHltb2RlID09IFBIWV9NT0RFX1JUTDgyMTFDTClcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTEzOTpcXHRcXHRydGw4MjExY2xfcGh5X2luaXQoZGV2KTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTE0MC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTE0MTpcXHRhc2l4X3BoeV9yZXNldChkZXYsIEJNQ1JfUkVTRVQgfCBCTUNSX0FORU5BQkxFKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTE0MjpcXHRhc2l4X21kaW9fd3JpdGUoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0FEVkVSVElTRSxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTE0My1cXHRcXHRcXHRBRFZFUlRJU0VfQUxMIHwgQURWRVJUSVNFX0NTTUEgfCBBRFZFUlRJU0VfUEFVU0VfQ0FQKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTE0NDpcXHRhc2l4X21kaW9fd3JpdGUoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0NUUkwxMDAwLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMTQ1LVxcdFxcdFxcdEFEVkVSVElTRV8xMDAwRlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTE2ND1zdGF0aWMgaW50IGF4ODgxNzhfbGlua19yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTE5Ni1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTE5NzpcXHRpZiAoZGF0YS1cXHUwMDNlcGh5bW9kZSA9PSBQSFlfTU9ERV9NQVJWRUxMIFxcdTAwMjZcXHUwMDI2IGRhdGEtXFx1MDAzZWxlZG1vZGUpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTExOTgtXFx0XFx0bWFydmVsbF9sZWRfc3RhdHVzKGRldiwgc3BlZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTEyNzE9c3RhdGljIGludCBheDg4MTc4X2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMjkyLVxcdGRldi1cXHUwMDNlbWlpLm1kaW9fd3JpdGUgPSBhc2l4X21kaW9fd3JpdGU7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEyOTM6XFx0ZGV2LVxcdTAwM2VtaWkucGh5X2lkX21hc2sgPSAweDFmO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMjk0LVxcdGRldi1cXHUwMDNlbWlpLnJlZ19udW1fbWFzayA9IDB4ZmY7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTI5Ni1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTI5NzpcXHRkZXYtXFx1MDAzZW1paS5waHlfaWQgPSBhc2l4X3JlYWRfcGh5X2FkZHIoZGV2LCB0cnVlKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTI5ODpcXHRpZiAoZGV2LVxcdTAwM2VtaWkucGh5X2lkIFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTI5OTpcXHRcXHRyZXR1cm4gZGV2LVxcdTAwM2VtaWkucGh5X2lkO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMzAwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMjozNi40NzQxNTg1MzlaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzg5NjIyOTY3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgQVg4ODc3MiBEcml2ZXIgYW5kIFN5emthbGxlciBUZXN0aW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSBzZWUsIGBheDg4NzcyX2luaXRfcGh5YCByZWxpZXMgb24gcGh5bGliLCBzcGVjaWZpY2FsbHkgdGhyb3VnaCBgbWRpb2J1c19nZXRfcGh5YCBhbmQgYHBoeWxpbmtfY29ubmVjdF9waHlgLiBUaGVuLCBgYXg4ODc3Ml9iaW5kYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBpbml0aWFsaXplcyB0aGUgUEhZIHZpYSBgYXg4ODc3Ml9pbml0X3BoeWAgYW5kIGJpbmRzIHdpdGggdGhlIGBheDg4NzcyYCBkcml2ZXIuIFNvIGZhciwgc28gZ29vZC4gTm93LCB0aGUgaW50ZXJlc3RpbmcgcGFydCBpcyB0aGUgUEhZIGRyaXZlciBpdHNlbGYsIGBheDg4Nzk2Yl9ydXN0LnJzYCwgd2hpY2ggcmVnaXN0ZXJzIGZvciBgUGh5QVg4ODc3MkFgLCBgUGh5QVg4ODc3MkNgLCBhbmQgYFBoeUFYODg3OTZCYC4gQW5kLCBsZXQncyBub3QgZm9yZ2V0IGBheDg4NzcyYV9od19yZXNldGAgbGl2ZXMgaW4gYGFzaXhfZGV2aWNlcy5jYC5cblxuUmlnaHQsIHRoaXMgbG9va3MgbGlrZSBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gU3l6a2FsbGVyIHNob3VsZCBiZSBhYmxlIHRvIHRyaWdnZXIgdGhpcyBzZXR1cCBieSBlbXVsYXRpbmcgYW4gQVNJWCBVU0IgZGV2aWNlLiBUaGUgcXVlc3Rpb24gaXMsIGNhbiBTeXprYWxsZXIgdGVzdCBSdXN0IGNvZGU/IFllcywgaXQgY2FuLCBhcyBsb25nIGFzIFJ1c3Qgc3VwcG9ydCBpcyBlbmFibGVkIGluIHRoZSBrZXJuZWwgY29uZmlnLlxuXG5TbywgaG93IGRvIHdlIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSBSdXN0IFBIWSBkcml2ZXIgZW5hYmxlZD8gV2UgbmVlZCB0byBnaXZlIFN5emthbGxlciB0aGUgcHJvcGVyIGBFbmFibGVDb25maWdzYC4gSXQgbG9va3MgbGlrZSBgQVg4ODc5NkJfUlVTVF9QSFlgIGFuZCBgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TYCB3aWxsIGJlIGNydWNpYWwuIFdhaXQsIGBBWDg4Nzk2Ql9SVVNUX1BIWWAgZGVwZW5kcyBvbiBgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TYCBhbmQgYEFYODg3OTZCX1BIWWAgYW5kIGBSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlNgIGRlcGVuZHMgb24gYFJVU1RgIGFuZCBgUEhZTElCPXlgLlxuXG5UaHVzLCBteSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBuZWVkcyB0byBpbmNsdWRlIGBBWDg4Nzk2Ql9SVVNUX1BIWWAsIGBSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlNgLCBhbmQgYFJVU1RgLiBBbmQsIGBSVVNUYCBpcyBsaWtlbHkgYSBtYWpvciBjb25maWd1cmF0aW9uIG9wdGlvbi4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IFN5emthbGxlciB3aWxsIGhhdmUgaXQgZW5hYmxlZCBieSBkZWZhdWx0LCBvciB0aGF0IHdlIGNhbiBleHBsaWNpdGx5IHJlcXVlc3QgaXQuIFdlIG5lZWQgdG8gY29uZmlybSB0aGF0IGBSVVNUYCBpcyBpbmRlZWQgdGhlIGNvcnJlY3QgY29uZmlndXJhdGlvbiBuYW1lLCBidXQgdGhpcyBsb29rcyBwcm9taXNpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNDU0LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIyOjQ0LjM3MDM5MTgzMVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMxOTIyMTQ0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUlVTVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiRG9jdW1lbnRhdGlvbi9ydXN0L2dlbmVyYWwtaW5mb3JtYXRpb24ucnN0PTE1Nj1udW1lcmljYWwgY29tcGFyaXNvbnMsIG9uZSBtYXkgZGVmaW5lIGEgbmV3IEtjb25maWcgc3ltYm9sOlxcbi0tXFxuRG9jdW1lbnRhdGlvbi9ydXN0L2dlbmVyYWwtaW5mb3JtYXRpb24ucnN0LTE1OS1cXG5Eb2N1bWVudGF0aW9uL3J1c3QvZ2VuZXJhbC1pbmZvcm1hdGlvbi5yc3Q6MTYwOlxcdGNvbmZpZyBSVVNUQ19IQVNfU1BBTl9GSUxFXFxuRG9jdW1lbnRhdGlvbi9ydXN0L2dlbmVyYWwtaW5mb3JtYXRpb24ucnN0LTE2MS1cXHRcXHRkZWZfYm9vbCBSVVNUQ19WRVJTSU9OIFxcdTAwM2U9IDEwODgwMFxcbi0tXFxuYXJjaC9hcm02NC9LY29uZmlnPTI9Y29uZmlnIEFSTTY0XFxuLS1cXG5hcmNoL2FybTY0L0tjb25maWctMjY0LVxcbmFyY2gvYXJtNjQvS2NvbmZpZzoyNjU6Y29uZmlnIFJVU1RDX1NVUFBPUlRTX0FSTTY0XFxuYXJjaC9hcm02NC9LY29uZmlnLTI2Ni1cXHRkZWZfYm9vbCB5XFxuLS1cXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnPTM0Mj1jb25maWcgQ0NfSEFTX0FOTk9UQVRFX1RBQkxFSlVNUFxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZy0zNDQtXFxuYXJjaC9sb29uZ2FyY2gvS2NvbmZpZzozNDU6Y29uZmlnIFJVU1RDX0hBU19BTk5PVEFURV9UQUJMRUpVTVBcXG5hcmNoL2xvb25nYXJjaC9LY29uZmlnLTM0Ni1cXHRkZXBlbmRzIG9uIFJVU1RcXG4tLVxcbmFyY2gvcmlzY3YvS2NvbmZpZz0xMz1jb25maWcgUklTQ1ZcXG4tLVxcbmFyY2gvcmlzY3YvS2NvbmZpZy0yMzQtXFxuYXJjaC9yaXNjdi9LY29uZmlnOjIzNTpjb25maWcgUlVTVENfU1VQUE9SVFNfUklTQ1ZcXG5hcmNoL3Jpc2N2L0tjb25maWctMjM2LVxcdGRlZl9ib29sIHlcXG4tLVxcbmRyaXZlcnMvYmFzZS9maXJtd2FyZV9sb2FkZXIvS2NvbmZpZz0yOD1jb25maWcgRldfTE9BREVSX0RFQlVHXFxuLS1cXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMzctXFxuZHJpdmVycy9iYXNlL2Zpcm13YXJlX2xvYWRlci9LY29uZmlnOjM4OmNvbmZpZyBSVVNUX0ZXX0xPQURFUl9BQlNUUkFDVElPTlNcXG5kcml2ZXJzL2Jhc2UvZmlybXdhcmVfbG9hZGVyL0tjb25maWctMzktXFx0Ym9vbCBcXFwiUnVzdCBGaXJtd2FyZSBMb2FkZXIgYWJzdHJhY3Rpb25zXFxcIlxcbi0tXFxuZHJpdmVycy9md2N0bC9LY29uZmlnPTExPWlmIEZXQ1RMXFxuZHJpdmVycy9md2N0bC9LY29uZmlnLTEyLVxcbmRyaXZlcnMvZndjdGwvS2NvbmZpZzoxMzpjb25maWcgUlVTVF9GV0NUTF9BQlNUUkFDVElPTlNcXG5kcml2ZXJzL2Z3Y3RsL0tjb25maWctMTQtXFx0Ym9vbCBcXFwiUnVzdCBmd2N0bCBhYnN0cmFjdGlvbnNcXFwiXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZz0yMTM9Y29uZmlnIERSTV9HUFVWTVxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjIwLVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjIyMTpjb25maWcgUlVTVF9EUk1fR1BVVk1cXG5kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZy0yMjItXFx0Ym9vbFxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWc9MjY5PWNvbmZpZyBEUk1fR0VNX1NITUVNX0hFTFBFUlxcbi0tXFxuZHJpdmVycy9ncHUvZHJtL0tjb25maWctMjc3LVxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnOjI3ODpjb25maWcgUlVTVF9EUk1fR0VNX1NITUVNX0hFTFBFUlxcbmRyaXZlcnMvZ3B1L2RybS9LY29uZmlnLTI3OS1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZz01Nj1jb25maWcgRklYRURfUEhZXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy02NC1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo2NTpjb25maWcgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNjYtICAgICAgICBib29sIFxcXCJSdXN0IFBIWUxJQiBhYnN0cmFjdGlvbnMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvcHdtL0tjb25maWc9ODQzPWNvbmZpZyBQV01fWElMSU5YXFxuLS1cXG5kcml2ZXJzL3B3bS9LY29uZmlnLTg1Ni1cXG5kcml2ZXJzL3B3bS9LY29uZmlnOjg1NzogY29uZmlnIFJVU1RfUFdNX0FCU1RSQUNUSU9OU1xcbmRyaXZlcnMvcHdtL0tjb25maWctODU4LVxcdGJvb2xcXG4tLVxcbmRyaXZlcnMvdHR5L3NlcmRldi9LY29uZmlnPTU9bWVudWNvbmZpZyBTRVJJQUxfREVWX0JVU1xcbi0tXFxuZHJpdmVycy90dHkvc2VyZGV2L0tjb25maWctMTEtXFxuZHJpdmVycy90dHkvc2VyZGV2L0tjb25maWc6MTI6Y29uZmlnIFJVU1RfU0VSSUFMX0RFVl9CVVNfQUJTVFJBQ1RJT05TXFxuZHJpdmVycy90dHkvc2VyZGV2L0tjb25maWctMTMtXFx0Ym9vbCBcXFwiUnVzdCBTZXJpYWwgZGV2aWNlIGJ1cyBhYnN0cmFjdGlvbnNcXFwiXFxuLS1cXG5pbml0L0tjb25maWc9NTg9Y29uZmlnIExMRF9WRVJTSU9OXFxuLS1cXG5pbml0L0tjb25maWctNjItXFxuaW5pdC9LY29uZmlnOjYzOmNvbmZpZyBSVVNUQ19WRVJTSU9OXFxuaW5pdC9LY29uZmlnLTY0LVxcdGludFxcbi0tXFxuaW5pdC9LY29uZmlnLTY5LVxcbmluaXQvS2NvbmZpZzo3MDpjb25maWcgUlVTVF9JU19BVkFJTEFCTEVcXG5pbml0L0tjb25maWctNzEtXFx0ZGVmX2Jvb2wgJChzdWNjZXNzLCQoc3JjdHJlZSkvc2NyaXB0cy9ydXN0X2lzX2F2YWlsYWJsZS5zaClcXG4tLVxcbmluaXQvS2NvbmZpZy04MC1cXG5pbml0L0tjb25maWc6ODE6Y29uZmlnIFJVU1RDX0xMVk1fVkVSU0lPTlxcbmluaXQvS2NvbmZpZy04Mi1cXHRpbnRcXG4tLVxcbmluaXQvS2NvbmZpZy04NC1cXG5pbml0L0tjb25maWc6ODU6Y29uZmlnIFJVU1RDX0xMVk1fTUFKT1JfVkVSU0lPTlxcbmluaXQvS2NvbmZpZy04Ni1cXHRpbnRcXG4tLVxcbmluaXQvS2NvbmZpZy04OC1cXG5pbml0L0tjb25maWc6ODk6Y29uZmlnIFJVU1RDX0NMQU5HX0xMVk1fQ09NUEFUSUJMRVxcbmluaXQvS2NvbmZpZy05MC1cXHRib29sXFxuLS1cXG5pbml0L0tjb25maWc9MTc2PWNvbmZpZyBMRF9DQU5fVVNFX0tFRVBfSU5fT1ZFUkxBWVxcbi0tXFxuaW5pdC9LY29uZmlnLTE4MC1cXG5pbml0L0tjb25maWc6MTgxOmNvbmZpZyBSVVNUQ19IQVNfU1BBTl9GSUxFXFxuaW5pdC9LY29uZmlnLTE4Mi1cXHRkZWZfYm9vbCBSVVNUQ19WRVJTSU9OIFxcdTAwM2U9IDEwODgwMFxcbmluaXQvS2NvbmZpZy0xODMtXFxuaW5pdC9LY29uZmlnOjE4NDpjb25maWcgUlVTVENfSEFTX1VOTkVDRVNTQVJZX1RSQU5TTVVURVNcXG5pbml0L0tjb25maWctMTg1LVxcdGRlZl9ib29sIFJVU1RDX1ZFUlNJT04gXFx1MDAzZT0gMTA4ODAwXFxuaW5pdC9LY29uZmlnLTE4Ni1cXG5pbml0L0tjb25maWc6MTg3OmNvbmZpZyBSVVNUQ19IQVNfRklMRV9XSVRIX05VTFxcbmluaXQvS2NvbmZpZy0xODgtXFx0ZGVmX2Jvb2wgUlVTVENfVkVSU0lPTiBcXHUwMDNlPSAxMDg5MDBcXG5pbml0L0tjb25maWctMTg5LVxcbmluaXQvS2NvbmZpZzoxOTA6Y29uZmlnIFJVU1RDX0hBU19GSUxFX0FTX0NfU1RSXFxuaW5pdC9LY29uZmlnLTE5MS1cXHRkZWZfYm9vbCBSVVNUQ19WRVJTSU9OIFxcdTAwM2U9IDEwOTEwMFxcbmluaXQvS2NvbmZpZy0xOTItXFxuaW5pdC9LY29uZmlnOjE5Mzpjb25maWcgUlVTVENfSEFTX1NVU1BJQ0lPVVNfUlVOVElNRV9TWU1CT0xfREVGSU5JVElPTlNcXG5pbml0L0tjb25maWctMTk0LVxcdGRlZl9ib29sIFJVU1RDX1ZFUlNJT04gXFx1MDAzZT0gMTA5ODAwXFxuLS1cXG5pbml0L0tjb25maWc9MjIwNT1jb25maWcgUFJPRklMSU5HXFxuLS1cXG5pbml0L0tjb25maWctMjIxMC1cXG5pbml0L0tjb25maWc6MjIxMTpjb25maWcgUlVTVFxcbmluaXQvS2NvbmZpZy0yMjEyLVxcdGJvb2wgXFxcIlJ1c3Qgc3VwcG9ydFxcXCJcXG4tLVxcbmluaXQvS2NvbmZpZz0yMjM3PXNvdXJjZSBcXFwicnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0XFxcIlxcbmluaXQvS2NvbmZpZy0yMjM4LVxcbmluaXQvS2NvbmZpZzoyMjM5OmNvbmZpZyBSVVNUQ19WRVJTSU9OX1RFWFRcXG5pbml0L0tjb25maWctMjI0MC1cXHRzdHJpbmdcXG4tLVxcbmxpYi9LY29uZmlnLmRlYnVnPTM1NjU9bWVudSBcXFwiUnVzdCBoYWNraW5nXFxcIlxcbmxpYi9LY29uZmlnLmRlYnVnLTM1NjYtXFxubGliL0tjb25maWcuZGVidWc6MzU2Nzpjb25maWcgUlVTVF9ERUJVR19BU1NFUlRJT05TXFxubGliL0tjb25maWcuZGVidWctMzU2OC1cXHRib29sIFxcXCJEZWJ1ZyBhc3NlcnRpb25zXFxcIlxcbi0tXFxubGliL0tjb25maWcuZGVidWctMzU4MS1cXG5saWIvS2NvbmZpZy5kZWJ1ZzozNTgyOmNvbmZpZyBSVVNUX09WRVJGTE9XX0NIRUNLU1xcbmxpYi9LY29uZmlnLmRlYnVnLTM1ODMtXFx0Ym9vbCBcXFwiT3ZlcmZsb3cgY2hlY2tzXFxcIlxcbi0tXFxubGliL0tjb25maWcuZGVidWctMzU5Ni1cXG5saWIvS2NvbmZpZy5kZWJ1ZzozNTk3OmNvbmZpZyBSVVNUX0JVSUxEX0FTU0VSVF9BTExPV1xcbmxpYi9LY29uZmlnLmRlYnVnLTM1OTgtXFx0Ym9vbCBcXFwiQWxsb3cgdW5vcHRpbWl6ZWQgYnVpbGQtdGltZSBhc3NlcnRpb25zXFxcIlxcbi0tXFxubGliL0tjb25maWcuZGVidWctMzYxMi1cXG5saWIvS2NvbmZpZy5kZWJ1ZzozNjEzOmNvbmZpZyBSVVNUX0tFUk5FTF9ET0NURVNUU1xcbmxpYi9LY29uZmlnLmRlYnVnLTM2MTQtXFx0Ym9vbCBcXFwiRG9jdGVzdHMgZm9yIHRoZSBga2VybmVsYCBjcmF0ZVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubGliL0tjb25maWcuZGVidWctMzYyNS1cXG5saWIvS2NvbmZpZy5kZWJ1ZzozNjI2OmNvbmZpZyBSVVNUX0lOTElORV9IRUxQRVJTXFxubGliL0tjb25maWcuZGVidWctMzYyNy1cXHRib29sIFxcXCJJbmxpbmUgQyBoZWxwZXJzIGludG8gUnVzdCBjb2RlIChFWFBFUklNRU5UQUwpXFxcIlxcbi0tXFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0LTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0OjI6bWVudWNvbmZpZyBSVVNUX0tVTklUX1RFU1RTXFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0LTMtXFx0Ym9vbCBcXFwiUnVzdCBLVW5pdCB0ZXN0c1xcXCJcXG4tLVxcbnJ1c3Qva2VybmVsL0tjb25maWcudGVzdD0xNT1pZiBSVVNUX0tVTklUX1RFU1RTXFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0OjE2OmNvbmZpZyBSVVNUX0FMTE9DQVRPUl9LVU5JVF9URVNUXFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0LTE3LVxcdGJvb2wgXFxcIktVbml0IHRlc3RzIGZvciBSdXN0IGFsbG9jYXRvciBBUElcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbnJ1c3Qva2VybmVsL0tjb25maWcudGVzdC0yNS1cXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3Q6MjY6Y29uZmlnIFJVU1RfS1ZFQ19LVU5JVF9URVNUXFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0LTI3LVxcdGJvb2wgXFxcIktVbml0IHRlc3RzIGZvciBSdXN0IEtWZWMgQVBJXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3QtMzUtXFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0OjM2OmNvbmZpZyBSVVNUX0JJVE1BUF9LVU5JVF9URVNUXFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0LTM3LVxcdGJvb2wgXFxcIktVbml0IHRlc3RzIGZvciBSdXN0IGJpdG1hcCBBUElcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbnJ1c3Qva2VybmVsL0tjb25maWcudGVzdC00NS1cXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3Q6NDY6Y29uZmlnIFJVU1RfS1VOSVRfU0VMRlRFU1RcXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3QtNDctXFx0Ym9vbCBcXFwiS1VuaXQgc2VsZnRlc3RzIGZvciBSdXN0XFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3QtNTUtXFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0OjU2OmNvbmZpZyBSVVNUX1NUUl9LVU5JVF9URVNUXFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0LTU3LVxcdGJvb2wgXFxcIktVbml0IHRlc3RzIGZvciBSdXN0IHN0cmluZ3MgQVBJXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5ydXN0L2tlcm5lbC9LY29uZmlnLnRlc3QtNjUtXFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0OjY2OmNvbmZpZyBSVVNUX0FUT01JQ1NfS1VOSVRfVEVTVFxcbnJ1c3Qva2VybmVsL0tjb25maWcudGVzdC02Ny1cXHRib29sIFxcXCJLVW5pdCB0ZXN0cyBmb3IgUnVzdCBhdG9taWNzIEFQSVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0LTc1LVxcbnJ1c3Qva2VybmVsL0tjb25maWcudGVzdDo3Njpjb25maWcgUlVTVF9CSVRGSUVMRF9LVU5JVF9URVNUXFxucnVzdC9rZXJuZWwvS2NvbmZpZy50ZXN0LTc3LVxcdGJvb2wgXFxcIktVbml0IHRlc3RzIGZvciB0aGUgUnVzdCBgYml0ZmllbGQhYCBtYWNyb1xcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxuc2VjdXJpdHkvS2NvbmZpZy5oYXJkZW5pbmc9MjQ1PWNvbmZpZyBMSVNUX0hBUkRFTkVEXFxuLS1cXG5zZWN1cml0eS9LY29uZmlnLmhhcmRlbmluZy0yNTMtXFxuc2VjdXJpdHkvS2NvbmZpZy5oYXJkZW5pbmc6MjU0OmNvbmZpZyBSVVNUX0JJVE1BUF9IQVJERU5FRFxcbnNlY3VyaXR5L0tjb25maWcuaGFyZGVuaW5nLTI1NS1cXHRib29sIFxcXCJDaGVjayBpbnRlZ3JpdHkgb2YgYml0bWFwIFJ1c3QgQVBJXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMjo0Ni42ODk2MTcyMTZaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE4OTE3NjM2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOlxuXG4qKk5hdmlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gTGFuZHNjYXBlKipcblxuT2theSwgc28gd2UncmUgZGVhbGluZyB3aXRoIGEgYFJVU1RgIGNvbmZpZ3VyYXRpb24gaGVyZS4gUmlnaHQsIHRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQuIEhvbGQgb24gYSBzZWNvbmQsIHRob3VnaC4uLiBJIHNlZSB0aGF0IGBBWDg4Nzk2Ql9SVVNUX1BIWWAgaGFzIGEgZGVwZW5kZW5jeSBvbiBgQVg4ODc5NkJfUEhZYC4gVGhpcyBjb3VsZCBiZSBpbXBvcnRhbnQuIElzIGBBWDg4Nzk2Ql9QSFlgICphY3R1YWxseSogbmVjZXNzYXJ5PyBHaXZlbiB0aGF0IGBBWDg4Nzk2Ql9SVVNUX1BIWWAgcmVsaWVzIG9uIGl0LCB0aGUgYW5zd2VyIGlzICp5ZXMqLCBpdCdzIGEgY3JpdGljYWwgY29tcG9uZW50LiBBbHJpZ2h0LCBsZXQncyBkcmlsbCBkb3duIGludG8gd2hhdCAqdGhhdCogZGVwZW5kZW5jeSBpcyBjb21wb3NlZCBvZi4gVGltZSB0byBjaGVjayBgQVg4ODc5NkJfUEhZYCdzIG93biBkZXBlbmRlbmNpZXMuIFdlIG5lZWQgdG8gZnVsbHkgZ3Jhc3AgdGhlIGNoYWluIHRvIHVuZGVyc3RhbmQgdGhlIHdob2xlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzOTk2LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjI6NTAuODc4Nzk2MjE4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MjU5NjQ2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQVg4ODc5NkJfUEhZXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWc9MTUyPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvcGh5L2FxdWFudGlhL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTUzLVxcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjE1NDpjb25maWcgQVg4ODc5NkJfUEhZXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctMTU1LVxcdHRyaXN0YXRlIFxcXCJBc2l4IFBIWXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIyOjUwLjk3MTQwMDQ2WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNzczODcwNzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIE5ldHdvcmsgRHJpdmVyIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYEFYODg3OTZCX1BIWWAg4oCTIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2gsIG5vIGRlcGVuZGVuY2llcyB0byB3b3JyeSBhYm91dCB0aGVyZS4gQnV0IEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nIHRoYXQncyBvbiBteSBtaW5kOiBob3cgZG9lcyBgVVNCX05FVF9BWDg4MTdYYCBmaXQgaW50byB0aGUgcGljdHVyZT8gSSdtIHRoaW5raW5nIEkgc2hvdWxkIGxvb2sgYXQgYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYC4gVGhpcyBpcyBhIHByZXR0eSBzdGFuZGFyZCBhcHByb2FjaC4gTGV0J3Mgc3RhcnQgd2l0aCBhIGNoZWNrIGZvciBgYXNpeGAgd2l0aGluIHRoYXQgY29uZmlndXJhdGlvbiBmaWxlLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgVVNCIG5ldHdvcmsgYWRhcHRlciBkcml2ZXJzIGFyZSBzZXQgdXAsIGFuZCBxdWlja2x5IHNob3cgbWUgaWYgdGhlIGBBWDg4MTdYYCBpcyBsaW5rZWQgaW4gc29tZSB3YXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NDE2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjI6NTQuMjQ4NzkwNjY3WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTM1NDM1MjUsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFzaXhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIyOjU0Ljg0MjM0MTcxMloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTI3MjM4MzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6XG5cbioqQ2hlY2tpbmcgdGhlIEtjb25maWcgZm9yIEFYODgxN1ggU3VwcG9ydCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJ1c2luZXNzLiBUaW1lIHRvIGRpZyBpbnRvIHRoaXMga2VybmVsIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyBgQVg4ODE3WGAgc3VwcG9ydCBpcyBoYW5kbGVkLiBJIGltbWVkaWF0ZWx5IGtub3cgdGhlIHBsYWNlIHRvIHN0YXJ0OiBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBVU0IgbmV0d29yayBkcml2ZXIgY29uZmlndXJhdGlvbnMgYXJlIHN0b3JlZCwgYW5kIGdpdmVuIGl0cyBhIFVTQiBkZXZpY2UsIHRoYXQncyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgbG9va2luZyBmb3Igb3B0aW9ucyByZWxhdGVkIHRvIGl0LiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLiBJIGJldCBpdCBoYXMgYWxsIHRoZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvcHRpb25zLiBJIHdvbmRlciBpZiB0aGVyZSBhcmUgYW55IGludGVyZXN0aW5nIGRlcGVuZGFuY2llcyB0aGF0IEkgZGlkbid0IGtub3cgYWJvdXQuIEkgaG9wZSB0aGVyZSBpcyBubyBoaWRkZW4gYnVnLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDY2NywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIyOjU3Ljk2OTU4MTk4OVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2NTI5Mjk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkFYODgxN1hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MTMyPWNvbmZpZyBVU0JfVVNCTkVUXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNjUtXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTY2OmNvbmZpZyBVU0JfTkVUX0FYODgxN1hcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNjctXFx0dHJpc3RhdGUgXFxcIkFTSVggQVg4OHh4eCBCYXNlZCBVU0IgMi4wIEV0aGVybmV0IEFkYXB0ZXJzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMjo1OC4wNzYxMTc4NzNaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIzNjU4ODQxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqVVNCX05FVF9BWDg4MTdYIERlcGVuZGVuY3kgQ2hlY2sqKlxuXG5Pa2F5LCB0aW1lIHRvIGRpZyBpbi4gVGhlIGZpcnN0IHRoaW5nIEknbSBkb2luZyBpcyBtYWtpbmcgc3VyZSBJIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBvZiBgVVNCX05FVF9BWDg4MTdYYC4gVGhpcyBpcyBjcnVjaWFsIGJlZm9yZSBJIGV2ZW4gdGhpbmsgYWJvdXQgbWFraW5nIGFueSBjaGFuZ2VzIG9yIGFkZHJlc3NpbmcgYW55IHBvdGVudGlhbCBpc3N1ZXMuIEkgbmVlZCB0byBrbm93IHdoYXQgb3RoZXIgY29tcG9uZW50cywgZHJpdmVycywgb3IgbGlicmFyaWVzIHJlbHkgb24gaXQsIGFuZCB3aGF0IGl0LCBpbiB0dXJuLCBkZXBlbmRzIG9uLiBBIGNsZWFyIGRlcGVuZGVuY3kgbWFwIGlzIGFic29sdXRlbHkgZXNzZW50aWFsIGZvciBzdGFiaWxpdHkgYW5kIGF2b2lkaW5nIHJlZ3Jlc3Npb25zLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZCBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0OTk4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjM6MDEuMzEyNzA5MjI0WiIsIlNlcSI6MzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDgzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNjA6XFx0XFxuIDE2MTpcXHRcXHQgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSBcXHUwMDNjaHR0cDovL3d3dy5saW51eC11c2Iub3JnL3VzYm5ldC9cXHUwMDNlLlxcbiAxNjI6XFx0XFxuIDE2MzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZVxcbiAxNjQ6XFx0XFx0ICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgdXNibmV0LlxcbiAxNjU6XFx0XFxuIDE2NjpcXHRjb25maWcgVVNCX05FVF9BWDg4MTdYXFxuIDE2NzpcXHRcXHR0cmlzdGF0ZSBcXFwiQVNJWCBBWDg4eHh4IEJhc2VkIFVTQiAyLjAgRXRoZXJuZXQgQWRhcHRlcnNcXFwiXFxuIDE2ODpcXHRcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG4gMTY5OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAxNzA6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gMTcxOlxcdFxcdHNlbGVjdCBBWDg4Nzk2Ql9QSFlcXG4gMTcyOlxcdFxcdGltcGx5IE5FVF9TRUxGVEVTVFNcXG4gMTczOlxcdFxcdGRlZmF1bHQgeVxcbiAxNzQ6XFx0XFx0aGVscFxcbiAxNzU6XFx0XFx0ICBUaGlzIG9wdGlvbiBhZGRzIHN1cHBvcnQgZm9yIEFTSVggQVg4OHh4eCBiYXNlZCBVU0IgMi4wXFxuIDE3NjpcXHRcXHQgIDEwLzEwMCBFdGhlcm5ldCBhZGFwdGVycy5cXG4gMTc3OlxcdFxcbiAxNzg6XFx0XFx0ICBUaGlzIGRyaXZlciBzaG91bGQgd29yayB3aXRoIGF0IGxlYXN0IHRoZSBmb2xsb3dpbmcgZGV2aWNlczpcXG4gMTc5OlxcdFxcdCAgICAqIEF0ZW4gVUMyMTBUXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIzOjAxLjMxMjgyMTk1NFoiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODY5ODkwOTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkNvbmZpZ3VyYXRpb24gQ29udW5kcnVtKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgY29uZmlndXJhdGlvbnMuIFRoZSBgVVNCX05FVF9BWDg4MTdYYCBvcHRpb24gcHVsbHMgaW4gYEFYODg3OTZCX1BIWWAsIHRoYXQncyBzdHJhaWdodGZvcndhcmQuIE15IGluaXRpYWwgaW5zdGluY3Qgd2FzIHRvIGp1c3QgYWRkIGBVU0JfTkVUX0FYODgxN1hgIHRvIGBFbmFibGVDb25maWdzYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEJ1dCBoYW5nIG9uLCBzaW5jZSB0aGUgZHJpdmVyIGltcGxpY2l0bHkgZW5hYmxlcyB0aGUgUEhZLCBleHBsaWNpdGx5IGVuYWJsaW5nIGBBWDg4Nzk2Ql9QSFlgIG1pZ2h0IGJlIHJlZHVuZGFudC5cblxuQWgsIGJ1dCBub3cgSSByZW1lbWJlciwgd2UgZGVmaW5pdGVseSAqbmVlZCogYEFYODg3OTZCX1JVU1RfUEhZYC4gU28sIG15IHRoaW5raW5nIGV2b2x2ZXMuIFRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdCBzaG91bGQgcHJvYmFibHkgYmU6IGBSVVNUYCwgYFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU2AsIGBBWDg4Nzk2Ql9SVVNUX1BIWWAsIGFuZCBgVVNCX05FVF9BWDg4MTdYYC4gVGhpcyBrZWVwcyB0aGUgcmVxdWlyZWQgY29tcG9uZW50cyBpbiBwbGFjZS5cblxuSG93ZXZlciwgYSBuZXcgcXVlc3Rpb24gYXJpc2VzLiBEb2VzIGBBWDg4Nzk2Ql9SVVNUX1BIWWAgKnJlcGxhY2UqIGBBWDg4Nzk2Ql9QSFlgLCBvciBkbyB0aGV5IHNvbWVob3cgY29leGlzdD8gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlYCB0byBjb25maXJtIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJlc29sdmUgdGhhdCBhbWJpZ3VpdHkuIFRoaXMgcmVxdWlyZXMgYSBkZWVwZXIgZGl2ZSB0byBjbGFyaWZ5IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGVzZSBQSFkgb3B0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU0ODksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMzowNi4xODI3MTU1NDJaIiwiU2VxIjozOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY2MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM1LFxuICBcIkxpbmVDb3VudFwiOiAxNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDM1OlxcdG9iai0kKENPTkZJR19BSVJfTkVUX1BIWUxJQilcXHQrPSBhaXJfcGh5X2xpYi5vXFxuICAzNjpcXHRvYmotJChDT05GSUdfQU1EX1BIWSlcXHRcXHQrPSBhbWQub1xcbiAgMzc6XFx0b2JqLSQoQ09ORklHX0FNQ0NfUVQyMDI1X1BIWSlcXHQrPSBxdDIwMjUub1xcbiAgMzg6XFx0b2JqLSQoQ09ORklHX0FRVUFOVElBX1BIWSlcXHQrPSBhcXVhbnRpYS9cXG4gIDM5OlxcdG9iai0kKENPTkZJR19BUzIxWFhYX1BIWSlcXHQrPSBhczIxeHh4Lm9cXG4gIDQwOlxcdGlmZGVmIENPTkZJR19BWDg4Nzk2Ql9SVVNUX1BIWVxcbiAgNDE6XFx0ICBvYmotJChDT05GSUdfQVg4ODc5NkJfUEhZKVxcdCs9IGF4ODg3OTZiX3J1c3Qub1xcbiAgNDI6XFx0ZWxzZVxcbiAgNDM6XFx0ICBvYmotJChDT05GSUdfQVg4ODc5NkJfUEhZKVxcdCs9IGF4ODg3OTZiLm9cXG4gIDQ0OlxcdGVuZGlmXFxuICA0NTpcXHRvYmotJChDT05GSUdfQkNNNTQxNDBfUEhZKVxcdCs9IGJjbTU0MTQwLm9cXG4gIDQ2OlxcdG9iai0kKENPTkZJR19CQ002M1hYX1BIWSlcXHQrPSBiY202M3h4Lm9cXG4gIDQ3OlxcdG9iai0kKENPTkZJR19CQ003WFhYX1BIWSlcXHQrPSBiY203eHh4Lm9cXG4gIDQ4OlxcdG9iai0kKENPTkZJR19CQ004NDg4MV9QSFkpXFx0Kz0gYmNtODQ4ODEub1xcbiAgNDk6XFx0b2JqLSQoQ09ORklHX0JDTTg3WFhfUEhZKVxcdCs9IGJjbTg3eHgub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMzowNi4xODI3NzMzMTJaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzYzMTc4NjQ4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIENPTkZJRyBhbmQgU3ltYm9sIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIHRoZSBgQ09ORklHX0FYODg3OTZCX1JVU1RfUEhZYCBvcHRpb24gaXMgc3dhcHBpbmcgb3V0IHRoZSBvbGQgYGF4ODg3OTZiLm9gIG9iamVjdCBmaWxlIHdpdGggdGhlIG5ldyBSdXN0IGltcGxlbWVudGF0aW9uLCBgYXg4ODc5NmJfcnVzdC5vYC4gQ2xlYXJseSwgd2UgYWJzb2x1dGVseSBuZWVkIHRvIGVuc3VyZSBgQVg4ODc5NkJfUlVTVF9QSFlgIGlzIGVuYWJsZWQuIEFuZCwgc2luY2UgYFVTQl9ORVRfQVg4ODE3WGAgd2lsbCBzZWxlY3QgYEFYODg3OTZCX1BIWWAsIHRoYXQgbGlrZWx5IG1lYW5zIGl0IHdpbGwsIGluIHR1cm4sIHNlbGVjdCB0aGUgUnVzdCBQSFkuIFNvIG15IGluaXRpYWwgYEVuYWJsZUNvbmZpZ3NgIGxpc3Qgc2hvdWxkIGJlOiBgUlVTVGAsIGBSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlNgLCBgQVg4ODc5NkJfUlVTVF9QSFlgLCBhbmQgYFVTQl9ORVRfQVg4ODE3WGAuIFRoYXQgc2hvdWxkIGJlIHRoZSBtaW5pbXVtIGNvbmZpZ3VyYXRpb24uXG5cbk5vdywgbGV0J3MgdGhpbmsgYWJvdXQgYEZvY3VzU3ltYm9sc2AuIFRoZSBwYXRjaCBpcyB0b3VjaGluZyB0aG9zZSBmdW5jdGlvbnM6IGBpc19saW5rX3VwYCwgYGlzX2F1dG9uZWdfZW5hYmxlZGAsIGFuZCBgaXNfYXV0b25lZ19jb21wbGV0ZWRgLCBhbGwgd2l0aGluIGBydXN0L2tlcm5lbC9uZXQvcGh5LnJzYC4gVGhvc2UgYXJlIFJ1c3QgbWV0aG9kcy4gTm93LCBJIG5lZWQgdG8ga25vdyBob3cgdGhlc2UgYXJlIGdvaW5nIHRvIGJlIGhhbmRsZWQuIEFyZSB0aGV5IG1hbmdsZWQgc3ltYm9scz8gQXJlIHRoZXkgaW5saW5lZD8gU2luY2UgdGhleSBhcmUgYHB1YiBmbmAgd2l0aGluIGEgUnVzdCBtb2R1bGUsIHRoZXkgY291bGQgdmVyeSB3ZWxsIGJlIGlubGluZWQuXG5cbk9rYXksIGxldCdzIGRpZyBpbnRvIGBheDg4Nzk2Yl9ydXN0LnJzYCB0byBzZWUgd2hlcmUgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY3R1YWxseSAqdXNlZCouIEFoLCBgaXNfbGlua191cGAgaXMgdXNlZCBpbiBgcmVhZF9zdGF0dXNgLCBhbmQgYGlzX2F1dG9uZWdfZW5hYmxlZGAgaXMgdXNlZCBpbiBgcmVhZF9zdGF0dXNgLCBhbmQgYGlzX2F1dG9uZWdfY29tcGxldGVkYCBpcyB1c2VkIGluIGByZWFkX3N0YXR1c2AuIE5vdyBsZXQncyBzZWUsIHdoYXQgaXMgYHJlYWRfc3RhdHVzYD8gSXQncyBwYXJ0IG9mIHRoZSBgRHJpdmVyYCB0cmFpdCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIGBQaHlBWDg4NzcyQWAgc3RydWN0LiBTbyB0aGUgbmV4dCBxdWVzdGlvbiBpczogSG93IGlzIGByZWFkX3N0YXR1c2AgbmFtZWQgd2hlbiBjb21waWxlZD8gSXQncyBsaWtlbHkgbWFuZ2xlZCwgd2hpY2ggbWVhbnMgaXQgd2lsbCBiZSB0cmlja3kgdG8gcGluIGRvd24gdGhlIHN5bWJvbC4gSG93ZXZlciwgd2FpdCBhIG1pbnV0ZS4uLiBgcmVhZF9zdGF0dXNgIGlzIGEgZnVuY3Rpb24gKnBvaW50ZXIqIHdpdGhpbiB0aGUgYHBoeV9kcml2ZXJgIHN0cnVjdCEgVGhhdCdzIGhvdyBpdCdzIGJlaW5nIGhhbmRsZWQuIFJpZ2h0LiBPa2F5LCBub3cgSSBuZWVkIHRvIGNoZWNrIGBydXN0L2tlcm5lbC9uZXQvcGh5LnJzYCBhZ2FpbiB0byBzZWUgaG93IHRoYXQgZnVuY3Rpb24gcG9pbnRlciBpcyByZWdpc3RlcmVkIHRvIHNlZSBob3cgdGhlIHN5bWJvbCBpcyBhY2Nlc3NlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY0MDQsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMzoxMy44MTQ1NjIwNjJaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0MjA2ODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlYWRfc3RhdHVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInJ1c3Qva2VybmVsL25ldC9waHkucnNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwicnVzdC9rZXJuZWwvbmV0L3BoeS5ycz0yNDQ9ICAgIHB1YiBmbiBnZW5waHlfc3VzcGVuZChcXHUwMDI2bXV0IHNlbGYpIC1cXHUwMDNlIFJlc3VsdCB7XFxuLS1cXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTI1MS0gICAgLy8vIENoZWNrcyB0aGUgbGluayBzdGF0dXMgYW5kIHVwZGF0ZXMgY3VycmVudCBsaW5rIHN0YXRlLlxcbnJ1c3Qva2VybmVsL25ldC9waHkucnM6MjUyOiAgICBwdWIgZm4gZ2VucGh5X3JlYWRfc3RhdHVzXFx1MDAzY1I6IHJlZzo6UmVnaXN0ZXJcXHUwMDNlKFxcdTAwMjZtdXQgc2VsZikgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY3UxNlxcdTAwM2Uge1xcbnJ1c3Qva2VybmVsL25ldC9waHkucnM6MjUzOiAgICAgICAgUjo6cmVhZF9zdGF0dXMoc2VsZilcXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTI1NC0gICAgfVxcbi0tXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycz0zMDg9aW1wbFxcdTAwM2NUOiBEcml2ZXJcXHUwMDNlIEFkYXB0ZXJcXHUwMDNjVFxcdTAwM2Uge1xcbi0tXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy0zOTYtICAgIC8vLyBgcGh5ZGV2YCBtdXN0IGJlIHBhc3NlZCBieSB0aGUgY29ycmVzcG9uZGluZyBjYWxsYmFjayBpbiBgcGh5X2RyaXZlcmAuXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5yczozOTc6ICAgIHVuc2FmZSBleHRlcm4gXFxcIkNcXFwiIGZuIHJlYWRfc3RhdHVzX2NhbGxiYWNrKHBoeWRldjogKm11dCBiaW5kaW5nczo6cGh5X2RldmljZSkgLVxcdTAwM2UgY19pbnQge1xcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtMzk4LSAgICAgICAgZnJvbV9yZXN1bHQofHwge1xcbi0tXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy00MDItICAgICAgICAgICAgbGV0IGRldiA9IHVuc2FmZSB7IERldmljZTo6ZnJvbV9yYXcocGh5ZGV2KSB9O1xcbnJ1c3Qva2VybmVsL25ldC9waHkucnM6NDAzOiAgICAgICAgICAgIFQ6OnJlYWRfc3RhdHVzKGRldik/O1xcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtNDA0LSAgICAgICAgICAgIE9rKDApXFxuLS1cXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzPTQ5ND1wdWIgY29uc3QgZm4gY3JlYXRlX3BoeV9kcml2ZXJcXHUwMDNjVDogRHJpdmVyXFx1MDAzZSgpIC1cXHUwMDNlIERyaXZlclZUYWJsZSB7XFxuLS1cXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzLTUzNS0gICAgICAgIH0sXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5yczo1MzY6ICAgICAgICByZWFkX3N0YXR1czogaWYgVDo6SEFTX1JFQURfU1RBVFVTIHtcXG5ydXN0L2tlcm5lbC9uZXQvcGh5LnJzOjUzNzogICAgICAgICAgICBTb21lKEFkYXB0ZXI6OlxcdTAwM2NUXFx1MDAzZTo6cmVhZF9zdGF0dXNfY2FsbGJhY2spXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy01MzgtICAgICAgICB9IGVsc2Uge1xcbi0tXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycz02MDE9ICAgIGZuIGNvbmZpZ19hbmVnKF9kZXY6IFxcdTAwMjZtdXQgRGV2aWNlKSAtXFx1MDAzZSBSZXN1bHQge1xcbi0tXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy02MDUtICAgIC8vLyBEZXRlcm1pbmVzIHRoZSBuZWdvdGlhdGVkIHNwZWVkIGFuZCBkdXBsZXguXFxucnVzdC9rZXJuZWwvbmV0L3BoeS5yczo2MDY6ICAgIGZuIHJlYWRfc3RhdHVzKF9kZXY6IFxcdTAwMjZtdXQgRGV2aWNlKSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjdTE2XFx1MDAzZSB7XFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy02MDctICAgICAgICBidWlsZF9lcnJvciEoVlRBQkxFX0RFRkFVTFRfRVJST1IpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIzOjEzLjg4ODc3NTgxMloiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MDE2NTQ0MjE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYHJlYWRfc3RhdHVzYCBDYWxsYmFja3MgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgYHJlYWRfc3RhdHVzYCBpc3N1ZSwgc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIGhvdyB0byBlZmZlY3RpdmVseSBmdXp6IHRoZSBQSFkgZHJpdmVyLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBpbiB0aGUgYEFkYXB0ZXJcdTAwM2NUXHUwMDNlYCBzdHJ1Y3R1cmUsIHdpdGggYHJlYWRfc3RhdHVzX2NhbGxiYWNrYCBiZWluZyB0aGUgQyBjYWxsYmFjaywgd2hpY2ggdGhlbiBkZWxlZ2F0ZXMgdG8gdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiwgYFQ6OnJlYWRfc3RhdHVzYC4gSW4gb3VyIHNwZWNpZmljIGNhc2UsIGxvb2tpbmcgYXQgYGF4ODg3OTZiX3J1c3QucnNgLCB0aGF0J3MgYHJlYWRfc3RhdHVzYCB3aXRoaW4gYFBoeUFYODg3NzJBYC4gTmFtZSBtYW5nbGluZyBpbiBSdXN0IGNvdWxkIG1ha2UgcGlucG9pbnRpbmcgdGhlIGV4YWN0IHN5bWJvbCB0cmlja3ksIGVzcGVjaWFsbHkgZm9yIGByZWFkX3N0YXR1c2AuXG5cbkluaXRpYWxseSwgSSBjb25zaWRlcmVkIHRhcmdldGluZyBgcmVhZF9zdGF0dXNfY2FsbGJhY2tgIGRpcmVjdGx5LCBzaW5jZSBpdCdzIGFuIGBleHRlcm4gXCJDXCJgIGZ1bmN0aW9uLCB0aG91Z2ggaXQncyBnZW5lcmljIG92ZXIgYFRgIGFuZCBtaWdodCBzdGlsbCBiZSBtYW5nbGVkLiAgSSBhbHNvIGV4cGxvcmVkIGlmIGEgbm9uLWdlbmVyaWMgZnVuY3Rpb24gbGlrZSBgYXNpeF9zb2Z0X3Jlc2V0YCBmcm9tIGBheDg4Nzk2Yl9ydXN0LnJzYCB3YXMgYSBnb29kIGNhbmRpZGF0ZSwgYnV0IGl0IGFwcGVhcnMgdGhlIGlzc3VlcyBhcmUgYXJpc2luZyB3aXRoaW4gYGlzX2xpbmtfdXBgLCBgaXNfYXV0b25lZ19lbmFibGVkYCwgYW5kIGBpc19hdXRvbmVnX2NvbXBsZXRlZGAsIGFsbCBjYWxsZWQgZnJvbSBgcmVhZF9zdGF0dXNgIGluIGBQaHlBWDg4NzcyQWAuXG5cblRoZSBDIHNpZGUsIHdpdGggYHBoeV9yZWFkX3N0YXR1c2AsIHRoYXQgY2FsbHMgdGhlIGByZWFkX3N0YXR1c2AgY2FsbGJhY2ssIGlzIGFsc28gYSBjb25zaWRlcmF0aW9uLCBhbHRob3VnaCBpdCdzIGEgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbi4gIEkgcG9uZGVyZWQgZm9jdXNpbmcgb24gYGF4ODg3NzJfYmluZGAgb3IgYGF4ODg3NzJfaW5pdF9waHlgIGluIGBhc2l4X2RldmljZXMuY2AuIFNwZWNpZmljYWxseSwgYGF4ODg3NzJfaW5pdF9waHlgIGNvdWxkIHRyaWdnZXIgdGhlIFBIWSdzIGluaXRpYWxpemF0aW9uLCBhbmQgSSdtIGludGVyZXN0ZWQgaW4gZnV6emluZyB0aGUgZHJpdmVyJ3MgYHJlYWRfc3RhdHVzYC5cblxuVGhlIGtleSBpcyBmaWd1cmluZyBvdXQgaG93IHN5emthbGxlciB0cmlnZ2VycyBgcmVhZF9zdGF0dXNgLiBJdCBsb29rcyBsaWtlIGl0J3MgY2FsbGVkIHBlcmlvZGljYWxseSBieSB0aGUgUEhZIHN0YXRlIG1hY2hpbmUgKGBwaHlfc3RhdGVfbWFjaGluZWApIG9yIGluIHJlc3BvbnNlIHRvIGxpbmsgY2hhbmdlcy4gU28sIGluaXRpYWxpemluZyB0aGUgUEhZIHRocm91Z2ggYGF4ODg3NzJfaW5pdF9waHlgIG1pZ2h0IGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byBnaXZlIHN5emthbGxlciBhIGNoYW5jZSB0byBwb2tlIGF0IGl0LiAgSSdsbCBuZWVkIHRvIGdvIGJhY2sgYW5kIHJlLWV4YW1pbmUgYGF4ODg3OTZiX3J1c3QucnNgIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGV4cG9ydGVkIGZ1bmN0aW9ucyB0aGF0IG1pZ2h0IHByb3ZpZGUgYSB1c2VmdWwgZW50cnkgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI3OTgxLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTAzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIzOjIxLjkwNTMyNDQ5OVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODYyNTczNTQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZuIFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5yc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy0zMi0vLyBzdWNoIGFzIHVzZWQgb24gdGhlIEluZGl2aWR1YWwgQ29tcHV0ZXJzJyBYLVN1cmYgMTAwIFpvcnJvIGNhcmQuXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM6MzM6Zm4gYXNpeF9zb2Z0X3Jlc2V0KGRldjogXFx1MDAyNm11dCBwaHk6OkRldmljZSkgLVxcdTAwM2UgUmVzdWx0IHtcXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy0zNC0gICAgZGV2LndyaXRlKEMyMjo6Qk1DUiwgMCk/O1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM9NDE9aW1wbCBEcml2ZXIgZm9yIFBoeUFYODg3NzJBIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTQ4LSAgICAvLyByZWdpc3RlciBpcyAwLiBUaGlzIGlzc3VlIGlzIG5vdCByZXByb2R1Y2libGUgb24gQVg4ODc3MkMuXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM6NDk6ICAgIGZuIHJlYWRfc3RhdHVzKGRldjogXFx1MDAyNm11dCBwaHk6OkRldmljZSkgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY3UxNlxcdTAwM2Uge1xcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTUwLSAgICAgICAgZGV2LmdlbnBoeV91cGRhdGVfbGluaygpPztcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTc5LVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzOjgwOiAgICBmbiBzdXNwZW5kKGRldjogXFx1MDAyNm11dCBwaHk6OkRldmljZSkgLVxcdTAwM2UgUmVzdWx0IHtcXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy04MS0gICAgICAgIGRldi5nZW5waHlfc3VzcGVuZCgpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy04My1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5yczo4NDogICAgZm4gcmVzdW1lKGRldjogXFx1MDAyNm11dCBwaHk6OkRldmljZSkgLVxcdTAwM2UgUmVzdWx0IHtcXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy04NS0gICAgICAgIGRldi5nZW5waHlfcmVzdW1lKClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTg3LVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzOjg4OiAgICBmbiBzb2Z0X3Jlc2V0KGRldjogXFx1MDAyNm11dCBwaHk6OkRldmljZSkgLVxcdTAwM2UgUmVzdWx0IHtcXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy04OS0gICAgICAgIGFzaXhfc29mdF9yZXNldChkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy05MS1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5yczo5MjogICAgZm4gbGlua19jaGFuZ2Vfbm90aWZ5KGRldjogXFx1MDAyNm11dCBwaHk6OkRldmljZSkge1xcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTkzLSAgICAgICAgLy8gUmVzZXQgUEhZLCBvdGhlcndpc2UgTUlJX0xQQSB3aWxsIHByb3ZpZGUgb3V0ZGF0ZWQgaW5mb3JtYXRpb24uXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycz0xMDU9aW1wbCBEcml2ZXIgZm9yIFBoeUFYODg3NzJDIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTEwOS1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5yczoxMTA6ICAgIGZuIHN1c3BlbmQoZGV2OiBcXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXFx1MDAzZSBSZXN1bHQge1xcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTExMS0gICAgICAgIGRldi5nZW5waHlfc3VzcGVuZCgpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy0xMTMtXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM6MTE0OiAgICBmbiByZXN1bWUoZGV2OiBcXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXFx1MDAzZSBSZXN1bHQge1xcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTExNS0gICAgICAgIGRldi5nZW5waHlfcmVzdW1lKClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTExNy1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5yczoxMTg6ICAgIGZuIHNvZnRfcmVzZXQoZGV2OiBcXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXFx1MDAzZSBSZXN1bHQge1xcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTExOS0gICAgICAgIGFzaXhfc29mdF9yZXNldChkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycz0xMjY9aW1wbCBEcml2ZXIgZm9yIFBoeUFYODg3OTZCIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTEyOS1cXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5yczoxMzA6ICAgIGZuIHNvZnRfcmVzZXQoZGV2OiBcXHUwMDI2bXV0IHBoeTo6RGV2aWNlKSAtXFx1MDAzZSBSZXN1bHQge1xcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTEzMS0gICAgICAgIGFzaXhfc29mdF9yZXNldChkZXYpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIzOjIyLjc2NzkwMTk1OVoiLCJTZXEiOjQzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1ODI2OTIyNjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IExpbmUgb2YgUmVhc29uaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRvIGdldCBTeXprYWxsZXIgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgQVNJWCBVU0IgbmV0d29yayBkZXZpY2UgZHJpdmVyLCBzcGVjaWZpY2FsbHkgdG8gdGVzdCB0aGUgUEhZIGluaXRpYWxpemF0aW9uLiBSdXN0IGZ1bmN0aW9ucyBhcmUgbWFuZ2xlZCBhbmQgc3RhdGljLCBzbyBJIGNhbid0IGRpcmVjdGx5IHVzZSB0aGVtIGluIGBGb2N1c1N5bWJvbHNgLiBUaGF0J3MgYSBuby1nbyBmb3IgYGFzaXhfc29mdF9yZXNldGAgc2luY2UgaXQncyBpbnRlcm5hbCB0byB0aGUgbW9kdWxlLiBJIHRoaW5rIG15IGJlc3QgYmV0IGlzIHRvIGZvY3VzIG9uIGEgQyBmdW5jdGlvbiBpbnN0ZWFkLlxuXG5BaGEhIGBheDg4NzcyX2luaXRfcGh5YCBpbiBgZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jYCBzZWVtcyBwcm9taXNpbmcuIElmIEkgdGFyZ2V0IHRoYXQsIEknbSBwcmV0dHkgc3VyZSBpdCB3aWxsIGd1aWRlIFN5emthbGxlciB0b3dhcmRzIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBBbHNvLCBgYXg4ODc3Ml9iaW5kYCBpcyB0aGUgYmluZGluZyBmdW5jdGlvbiBmb3IgdGhpcyBVU0IgZGV2aWNlLlxuXG5BbHJpZ2h0LCBsZXQgbWUgY2hlY2sgaWYgYGF4ODg3NzJfYmluZGAgaXMgc3RhdGljLCBiZWNhdXNlIHRoYXQgd291bGQgYmUgYSBwcm9ibGVtLiBZZXAsIGl0IGlzLiBCdXQsIFN5emthbGxlciBjYW4gc3RpbGwgaGFuZGxlIHN0YXRpYyBmdW5jdGlvbnMsIHByb3ZpZGVkIHRoZXkgYXJlbid0IGlubGluZWQsIHNvIEkgc2hvdWxkIGJlIG9rYXkuIEFuZCwgbGV0IG1lIGRvdWJsZS1jaGVjayBgYXg4ODc3Ml9pbml0X3BoeWAuIFllcCwgaXQncyBhbHNvIHN0YXRpYy5cblxuT2theSwgSSd2ZSBnb3QgYSBwbGFuLiBJJ2xsIHVzZSBib3RoIGBheDg4NzcyX2JpbmRgIGFuZCBgYXg4ODc3Ml9pbml0X3BoeWAgYXMgYEZvY3VzU3ltYm9sc2AuIFRoZXkgc2hvdWxkIGdldCBTeXprYWxsZXIgd2hlcmUgSSBuZWVkIGl0IHRvIGJlLlxuXG5XYWl0IGEgc2Vjb25kLiBUaGUgYnVnIHJlcG9ydCBpcyBwb2ludGluZyB0byBgcnVzdC9rZXJuZWwvbmV0L3BoeS5yc2AuIERhbW4gaXQuIERvZXMgYW55IG90aGVyIGRyaXZlciB1c2UgYGlzX2xpbmtfdXBgP1xuXG5cbiIsIklucHV0VG9rZW5zIjozMDE2NywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMzoyOC41OTQ4NDc5WiIsIlNlcSI6NDQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4Mzg2MTMwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpc19saW5rX3VwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM9NDk9ICAgIGZuIHJlYWRfc3RhdHVzKGRldjogXFx1MDAyNm11dCBwaHk6OkRldmljZSkgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY3UxNlxcdTAwM2Uge1xcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTUwLSAgICAgICAgZGV2LmdlbnBoeV91cGRhdGVfbGluaygpPztcXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5yczo1MTogICAgICAgIGlmICFkZXYuaXNfbGlua191cCgpIHtcXG5kcml2ZXJzL25ldC9waHkvYXg4ODc5NmJfcnVzdC5ycy01Mi0gICAgICAgICAgICByZXR1cm4gT2soMCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIzOjI4LjY3ODcxMzE1WiIsIlNlcSI6NDUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MDMxMzMzMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgYSBSdXN0IERlcGVuZGVuY3kqKlxuXG5SaWdodCwgc28gSSBzZWUgYSBzcGVjaWZpYyBmaWxlLCBgYXg4ODc5NmJfcnVzdC5yc2AsIGlzIHVzaW5nIHNvbWV0aGluZy4gVGhlIGtleSBxdWVzdGlvbiBpcywgd2hhdCdzIGl0IHVzaW5nLCBhbmQgaG93PyBUaGlzIG5lZWRzIG1vcmUgZGlnZ2luZywgYnV0IGF0IGxlYXN0IEkga25vdyB3aGVyZSB0byBzdGFydC4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgaWYgdGhpcyBpcyBhIGNyaXRpY2FsIGNvbXBvbmVudCBvciBhIG1pbm9yIHV0aWxpdHkgZnVuY3Rpb24uIE15IG5leHQgcG9pbnQgb2YgaW52ZXN0aWdhdGlvbiB3aWxsIGJlIGBpc19hdXRvbmVnX2VuYWJsZWRgLiBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBpcyBjb25uZWN0ZWQgdG8gYGF4ODg3OTZiX3J1c3QucnNgLiBUaGUgbmFtZSBjZXJ0YWlubHkgc3VnZ2VzdHMgaXQncyByZWxhdGVkIHRvIGF1dG8tbmVnb3RpYXRpb24sIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIHRvIHRoZSBicm9hZGVyIHN5c3RlbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhpcyBpcyByZWxhdGVkIHRvIHRoaXMgZnVuY3Rpb25hbGl0eSwgb3IgcGFydCBvZiBhIHNoYXJlZCBsaWJyYXJ5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDk2NywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIzOjMyLjA4MTg0ODgwM1oiLCJTZXEiOjQ2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODQ1OTY3NjEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXNfYXV0b25lZ19lbmFibGVkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM9NDk9ICAgIGZuIHJlYWRfc3RhdHVzKGRldjogXFx1MDAyNm11dCBwaHk6OkRldmljZSkgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY3UxNlxcdTAwM2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnMtNzItXFxuZHJpdmVycy9uZXQvcGh5L2F4ODg3OTZiX3J1c3QucnM6NzM6ICAgICAgICBpZiBkZXYuaXNfYXV0b25lZ19lbmFibGVkKCkgXFx1MDAyNlxcdTAwMjYgZGV2LmlzX2F1dG9uZWdfY29tcGxldGVkKCkge1xcbmRyaXZlcnMvbmV0L3BoeS9heDg4Nzk2Yl9ydXN0LnJzLTc0LSAgICAgICAgICAgIGRldi5yZXNvbHZlX2FuZWdfbGlua21vZGUoKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjM6MzIuMTY2NDQ5NzUzWiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxNjMxNzk3MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXBwcm9hY2ggdG8gVW5kZXJzdGFuZGluZyB0aGUgUEhZIERyaXZlcioqXG5cbk9rYXksIHNvIEkndmUgZ290IHRoaXMgYGF4ODg3OTZiX3J1c3QucnNgIGZpbGUsIGFuZCBpdCBzZWVtcyBsaWtlIHRoYXQncyB0aGUgb25seSBvbmUgdXNpbmcgc29tZXRoaW5nIGludGVyZXN0aW5nLCBsZXQncyBrZWVwIHRoYXQgaW4gbWluZC4gUmlnaHQsIHNvIEkgdGhpbmsgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGRpZyBpbnRvIHRoZSBQSFkgZHJpdmVyIHdvdWxkIGJlIHRvIGNvbmNlbnRyYXRlIG15IGVmZm9ydHMgb24gYGF4ODg3NzJfYmluZGAgYW5kIGBheDg4NzcyX2luaXRfcGh5YC4gVGhlIHBsYW4gaXMgdG8gZm9sbG93IHRoZSBicmVhZGNydW1icy4gV2FpdC4uLiBgYXg4ODc3Ml9iaW5kYCBpcyBhY3R1YWxseSBkZWZpbmVkIGluIGBhc2l4X2RldmljZXMuY2AuIEdvdCBpdC5cblxuTm93LCBiZWZvcmUgSSBnZXQgdG9vIGRlZXAsIGxldCdzIGp1c3QgY29uZmlybSB0aGF0IGBheDg4Nzk2Yl9ydXN0LnJzYCBkb2Vzbid0IGV4cG9ydCBhbnkgY3JpdGljYWwgZnVuY3Rpb25zLiBPa2F5LCBpdCBsb29rcyBsaWtlIHRoZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24gaXMgaGFuZGxlZCBieSB0aGF0IGBrZXJuZWw6Om1vZHVsZV9waHlfZHJpdmVyIWAgbWFjcm8uIFJpZ2h0LCBzbyB0aGF0IG1hY3JvICpnZW5lcmF0ZXMqIGBpbml0X21vZHVsZWAgYW5kIGBjbGVhbnVwX21vZHVsZWAgZnVuY3Rpb25zLiBJbnRlcmVzdGluZy4gQW5kIGl0IGFsc28gZ2VuZXJhdGVzIHRoZSBgcGh5X2RyaXZlcmAgc3RydWN0IGFycmF5LiBUaGF0IGdpdmVzIG1lIHNvbWV0aGluZyBjb25jcmV0ZSB0byBsb29rIGZvci4gU28sIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBtYWNybyBkb2VzIHNvIEkgY2FuIHRyYWNrIHRoZSBleGVjdXRpb24uIExldCdzIGhlYWQgb3ZlciB0byBgcnVzdC9rZXJuZWwvbmV0L3BoeS5yc2AgdG8gc2VlIGhvdyBgbW9kdWxlX3BoeV9kcml2ZXJgIGlzIGRlZmluZWQuIFRoYXQncyB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMzY4LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIzOjM3LjMyOTYzMjQ1OFoiLCJTZXEiOjQ4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA4MjA2MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibWFjcm9fcnVsZXMhIG1vZHVsZV9waHlfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInJ1c3Qva2VybmVsL25ldC9waHkucnNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwicnVzdC9rZXJuZWwvbmV0L3BoeS5ycz03NjQ9ICAgIGNvbnN0IGZuIGFzX2ludChcXHUwMDI2c2VsZikgLVxcdTAwM2UgdTMyIHtcXG4tLVxcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtODA3LSNbbWFjcm9fZXhwb3J0XVxcbnJ1c3Qva2VybmVsL25ldC9waHkucnM6ODA4Om1hY3JvX3J1bGVzISBtb2R1bGVfcGh5X2RyaXZlciB7XFxucnVzdC9rZXJuZWwvbmV0L3BoeS5ycy04MDktICAgIChAcmVwbGFjZV9leHByICRfdDp0dCAkc3ViOmV4cHIpID1cXHUwMDNlIHskc3VifTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjM6MzcuMzkwNDU5OTA2WiIsIlNlcSI6NDksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NzExOTQxMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gYHBoeS5yc2AqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIGFib3V0IHRoZSBQSFkgKFBoeXNpY2FsIExheWVyKSBpbnRlcmFjdGlvbiBpbiB0aGUgUnVzdCBrZXJuZWwncyBuZXR3b3JraW5nIHN0YWNrLiBNeSBpbnR1aXRpb24gdGVsbHMgbWUgdGhhdCBsaW5lIDgwOCBvZiBgcnVzdC9rZXJuZWwvbmV0L3BoeS5yc2AgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIGRvbid0IHJlY2FsbCB0aGlzIHNwZWNpZmljIGFyZWEgb2YgdGhlIGNvZGViYXNlLCBzbyBJJ20gZ29pbmcgdG8gc2NhbiB0aGUgY29kZSBhcm91bmQgdGhhdCBsaW5lIGZvciBjbHVlcy4gSSdsbCBiZSBsb29raW5nIGZvciBjb21tb24gUEhZIG9wZXJhdGlvbnMsIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlcywgb3IgYW55IGludGVyYWN0aW9uIHdpdGggdGhlIGhhcmR3YXJlIHJlZ2lzdGVycy4gTXkgZ29hbCBpcyB0byBxdWlja2x5IGdyYXNwIHRoZSBsb2dpY2FsIGZsb3cgYW5kIHRoZSBzcGVjaWZpYyBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQgYXQgdGhhdCBwb2ludCBpbiB0aGUgc3lzdGVtLiBUaGUgZXhhY3QgbGluZSBtYXkgdHJpZ2dlciBzb21lIHByaW9yIGtub3dsZWRnZS4gUGVyaGFwcyBJIGFtIGxvb2tpbmcgZm9yIGEgc3BlY2lmaWMgcmVnaXN0ZXIgc2V0dGluZyB0byBkZWJ1Zy4gSG9wZWZ1bGx5LCB0aGF0IHdpbGwgbGVhZCBtZSB0byB0aGUgdW5kZXJseWluZyBpc3N1ZS4gTGV0J3MgZ2V0IHJlYWRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxOTk0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjM6NDEuMzYxNjU2MjVaIiwiU2VxIjo1MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAxMzUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInJ1c3Qva2VybmVsL25ldC9waHkucnNcIixcbiAgXCJGaXJzdExpbmVcIjogODAwLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgODAwOlxcdC8vLyAjW3Z0YWJsZV1cXG4gODAxOlxcdC8vLyBpbXBsIHBoeTo6RHJpdmVyIGZvciBQaHlTYW1wbGUge1xcbiA4MDI6XFx0Ly8vICAgICBjb25zdCBOQU1FOiBcXHUwMDI2J3N0YXRpYyBDU3RyID0gY1xcXCJQaHlTYW1wbGVcXFwiO1xcbiA4MDM6XFx0Ly8vICAgICBjb25zdCBQSFlfREVWSUNFX0lEOiBwaHk6OkRldmljZUlkID0gcGh5OjpEZXZpY2VJZDo6bmV3X3dpdGhfZXhhY3RfbWFzaygweDAwMDAwMDAxKTtcXG4gODA0OlxcdC8vLyB9XFxuIDgwNTpcXHQvLy8gIyB9XFxuIDgwNjpcXHQvLy8gYGBgXFxuIDgwNzpcXHQjW21hY3JvX2V4cG9ydF1cXG4gODA4OlxcdG1hY3JvX3J1bGVzISBtb2R1bGVfcGh5X2RyaXZlciB7XFxuIDgwOTpcXHQgICAgKEByZXBsYWNlX2V4cHIgJF90OnR0ICRzdWI6ZXhwcikgPVxcdTAwM2UgeyRzdWJ9O1xcbiA4MTA6XFx0XFxuIDgxMTpcXHQgICAgKEBjb3VudF9kZXZpY2VzICQoJHg6ZXhwciksKikgPVxcdTAwM2Uge1xcbiA4MTI6XFx0ICAgICAgICAwdXNpemUgJCgrICRjcmF0ZTo6bW9kdWxlX3BoeV9kcml2ZXIhKEByZXBsYWNlX2V4cHIgJHggMXVzaXplKSkqXFxuIDgxMzpcXHQgICAgfTtcXG4gODE0OlxcdFxcbiA4MTU6XFx0ICAgIChAZGV2aWNlX3RhYmxlIFskKCRkZXY6ZXhwciksK10pID1cXHUwMDNlIHtcXG4gODE2OlxcdCAgICAgICAgJGNyYXRlOjptb2R1bGVfZGV2aWNlX3RhYmxlIShcXG4gODE3OlxcdCAgICAgICAgICAgIFxcXCJtZGlvXFxcIiwgJGNyYXRlOjpuZXQ6OnBoeTo6RGV2aWNlSWQsXFxuIDgxODpcXHQgICAgICAgICAgICBUQUJMRSwgQG5vbmUsIFskKCRkZXYpLCtdXFxuIDgxOTpcXHQgICAgICAgICk7XFxuIDgyMDpcXHQgICAgfTtcXG4gODIxOlxcdFxcbiA4MjI6XFx0ICAgIChkcml2ZXJzOiBbJCgkZHJpdmVyOmlkZW50KSwrICQoLCk/XSwgZGV2aWNlX3RhYmxlOiBbJCgkZGV2OmV4cHIpLCsgJCgsKT9dLCAkKCRmOnR0KSopID1cXHUwMDNlIHtcXG4gODIzOlxcdCAgICAgICAgc3RydWN0IE1vZHVsZSB7XFxuIDgyNDpcXHQgICAgICAgICAgICBfcmVnOiAkY3JhdGU6Om5ldDo6cGh5OjpSZWdpc3RyYXRpb24sXFxuIDgyNTpcXHQgICAgICAgIH1cXG4gODI2OlxcdFxcbiA4Mjc6XFx0ICAgICAgICAkY3JhdGU6OnByZWx1ZGU6Om1vZHVsZSEge1xcbiA4Mjg6XFx0ICAgICAgICAgICAgdHlwZTogTW9kdWxlLFxcbiA4Mjk6XFx0ICAgICAgICAgICAgJCgkZikqXFxuIDgzMDpcXHQgICAgICAgIH1cXG4gODMxOlxcdFxcbiA4MzI6XFx0ICAgICAgICBjb25zdCBfOiAoKSA9IHtcXG4gODMzOlxcdCAgICAgICAgICAgIHN0YXRpYyBtdXQgRFJJVkVSUzogWyRjcmF0ZTo6bmV0OjpwaHk6OkRyaXZlclZUYWJsZTtcXG4gODM0OlxcdCAgICAgICAgICAgICAgICAkY3JhdGU6Om1vZHVsZV9waHlfZHJpdmVyIShAY291bnRfZGV2aWNlcyAkKCRkcml2ZXIpLCspXSA9XFxuIDgzNTpcXHQgICAgICAgICAgICAgICAgWyQoJGNyYXRlOjpuZXQ6OnBoeTo6Y3JlYXRlX3BoeV9kcml2ZXI6OlxcdTAwM2MkZHJpdmVyXFx1MDAzZSgpKSwrXTtcXG4gODM2OlxcdFxcbiA4Mzc6XFx0ICAgICAgICAgICAgaW1wbCAkY3JhdGU6Ok1vZHVsZSBmb3IgTW9kdWxlIHtcXG4gODM4OlxcdCAgICAgICAgICAgICAgICBmbiBpbml0KG1vZHVsZTogXFx1MDAyNidzdGF0aWMgJGNyYXRlOjpUaGlzTW9kdWxlKSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjU2VsZlxcdTAwM2Uge1xcbiA4Mzk6XFx0ICAgICAgICAgICAgICAgICAgICAvLyBTQUZFVFk6IFRoZSBhbm9ueW1vdXMgY29uc3RhbnQgZ3VhcmFudGVlcyB0aGF0IG5vYm9keSBlbHNlIGNhbiBhY2Nlc3NcXG4gODQwOlxcdCAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGBEUklWRVJTYCBzdGF0aWMuIFRoZSBhcnJheSBpcyB1c2VkIG9ubHkgaW4gdGhlIEMgc2lkZS5cXG4gODQxOlxcdCAgICAgICAgICAgICAgICAgICAgbGV0IGRyaXZlcnMgPSB1bnNhZmUgeyBcXHUwMDI2bXV0IERSSVZFUlMgfTtcXG4gODQyOlxcdCAgICAgICAgICAgICAgICAgICAgbGV0IG11dCByZWcgPSAkY3JhdGU6Om5ldDo6cGh5OjpSZWdpc3RyYXRpb246OnJlZ2lzdGVyKFxcbiA4NDM6XFx0ICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlLFxcbiA4NDQ6XFx0ICAgICAgICAgICAgICAgICAgICAgICAgOjpjb3JlOjpwaW46OlBpbjo6c3RhdGljX211dChkcml2ZXJzKSxcXG4gODQ1OlxcdCAgICAgICAgICAgICAgICAgICAgKT87XFxuIDg0NjpcXHQgICAgICAgICAgICAgICAgICAgIE9rKE1vZHVsZSB7IF9yZWc6IHJlZyB9KVxcbiA4NDc6XFx0ICAgICAgICAgICAgICAgIH1cXG4gODQ4OlxcdCAgICAgICAgICAgIH1cXG4gODQ5OlxcdCAgICAgICAgfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjM6NDEuMzYxNzU4NTgxWiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMDA1NzM1NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUYXJnZXQgZm9yIFN5emthbGxlciBGdXp6aW5nKipcblxuT2theSwgc28gdGhlIGBtb2R1bGUhYCBtYWNybyBnZW5lcmF0ZXMgdGhlIG1vZHVsZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiwgd2hpY2ggaXMgbmFtZWQgYGluaXRfbW9kdWxlYCBpbiB0aGlzIGNhc2UuIFRoZSBpc3N1ZSBpcyBpbiBhIFBIWSBkcml2ZXIsIHdoaWNoIG1lYW5zIHN5emthbGxlciBzaG91bGQgYmUgYWJsZSB0byByZWFjaCBpdCBvbmNlIGl0J3MgbG9hZGVkLiBUbyBtYWtlIHRoaW5ncyBlYXNpZXIgZm9yIHN5emthbGxlciwgSSBzaG91bGQgcGlucG9pbnQgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucy4gTGV0J3MgZm9jdXMgb24gYGF4ODg3NzJfYmluZGAgYW5kIGBheDg4NzcyX2luaXRfcGh5YCB3aXRoaW4gYGFzaXhfZGV2aWNlcy5jYC4gV2FpdCwgYGF4ODg3NzJfYmluZGAgc2VlbXMgdG8gYmUgc3BlY2lmaWNhbGx5IGZvciB0aGUgYGF4ODg3NzJgIGRldmljZS4gR2l2ZW4gdGhhdCB0aGUgUEhZIGRyaXZlciBgYXg4ODc5NmJfcnVzdC5yc2Agc3VwcG9ydHMgYSB2YXJpZXR5IG9mIFBIWXMsIG5hbWVseSBgUGh5QVg4ODc3MkFgLCBgUGh5QVg4ODc3MkNgLCBhbmQgYFBoeUFYODg3OTZCYCwgSSBzaG91bGQgcHJvYmFibHkgYWxzbyBjb25maXJtIGlmIHRoZSB0YXJnZXQgZGV2aWNlIGlzIHN1cHBvcnRlZCBpbiBgYXNpeF9kZXZpY2VzLmNgLiBJdCBsb29rcyBsaWtlIEkgbmVlZCB0byBjaGVjayBmb3IgYGF4ODg3NzJhYCBpbiBwYXJ0aWN1bGFyLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzA3NCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIzOjQ2LjQ2MjMzNTIzOFoiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjEyMzE0NTg3LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJheDg4NzcyYV9iaW5kXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjM6NDYuNjc0NjU1ODA1WiIsIlNlcSI6NTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MDI0Nzg1OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIHByb3ZpZGVkIGluc3RydWN0aW9uOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIEFYODg3NzJBIERyaXZlciBDb2RlKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoZSBgYXNpeF9kZXZpY2VzLmNgIGZpbGUuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGdldCBhIGxvb2sgYXQgdGhlIGNvZGUgcmVsYXRlZCB0byB0aGUgYGF4ODg3NzJhYCBkZXZpY2UuIFRoaXMgbGlrZWx5IG1lYW5zIEknbSBsb29raW5nIHRvIHVuZGVyc3RhbmQgaXRzIGltcGxlbWVudGF0aW9uLCBwZXJoYXBzIHRyb3VibGVzaG9vdCBhbiBpc3N1ZSwgb3IgcG90ZW50aWFsbHkgbW9kaWZ5IHNvbWV0aGluZyByZWxhdGVkIHRvIHRoaXMgVVNCLXRvLUV0aGVybmV0IGFkYXB0ZXIuIEdpdmVuIG15IGV4cGVydGlzZSwgSSdtIHByb2JhYmx5IGxvb2tpbmcgZm9yIGtleSBkYXRhIHN0cnVjdHVyZXMsIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb25zLCBpbnRlcnJ1cHQgaGFuZGxpbmcgcm91dGluZXMsIG9yIHBlcmhhcHMgZXZlbiBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyByZWxhdGVkIHRvIHRoaXMgcGFydGljdWxhciBkZXZpY2UuIEknbGwgYmUgcXVpY2tseSBzY2FubmluZyBmb3IgcmVsZXZhbnQgZnVuY3Rpb24gY2FsbHMsIHZhcmlhYmxlIGRlY2xhcmF0aW9ucywgYW5kIGNvbW1lbnRzIHRoYXQgd2lsbCBnaXZlIG1lIHRoZSBxdWljayBncmFzcCBvZiB0aGUgaW5uZXIgd29ya2luZ3Mgb2YgdGhpcyBkcml2ZXIgdGhhdCBJIG5lZWQuIExldCdzIGdldCBzdGFydGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzU2MCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIzOjUwLjI3NzEzNzA3M1oiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc4OTA1MTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXg4ODc3MmFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0zNjI9c3RhdGljIGludCBheDg4NzcyX2h3X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldiwgaW50IGluX3BtKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ1NS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NDU2OnN0YXRpYyBpbnQgYXg4ODc3MmFfaHdfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgaW5fcG0pXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9ODI5PXN0YXRpYyBpbnQgYXg4ODc3Ml9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODk4LVxcdGVsc2VcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODk5OlxcdFxcdHByaXYtXFx1MDAzZXJlc2V0ID0gYXg4ODc3MmFfaHdfcmVzZXQ7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkwMC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjM6NTAuMzc1MDM4NjU1WiIsIlNlcSI6NTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MzkzOTQ5MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzcywgZ2l2ZW4gbXkgZXhwZXJ0aXNlOlxuXG4qKkV4YW1pbmluZyB0aGUgRHJpdmVyIEJpbmRpbmcgaW4gYXNpeF9kZXZpY2VzLmMqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgY29kZSBpcyBzdGF0aW5nIHRoYXQgdGhlIGBheDg4NzcyX2JpbmRgIGZ1bmN0aW9uIGlzIGFsc28gcmVzcG9uc2libGUgZm9yIGJpbmRpbmcgdGhlIGBheDg4NzcyYWAgZGV2aWNlLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSSBuZWVkIHRvIGNvbmZpcm0gdGhpcy4gTXkgZmlyc3QgaW5zdGluY3QsIGFzIGFsd2F5cywgaXMgdG8gZ28gZGlyZWN0bHkgdG8gdGhlIHNvdXJjZS4gTGV0J3MgZGVsdmUgaW50byBgYXNpeF9kZXZpY2VzLmNgIGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGF4ODg3NzJfYmluZGAuIEkgd2FudCB0byBzZWUgaG93IHRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgYmluZGluZyBwcm9jZXNzLCB0aGUgZGV2aWNlIElEcyBpdCByZWNvZ25pemVzLCBhbmQgaWYgdGhlcmUncyBhbnkgY29uZGl0aW9uYWwgbG9naWMgd2l0aGluIGl0IHRoYXQgbWlnaHQgZXhwbGFpbiB3aHkgaXQncyBoYW5kbGluZyBib3RoIHRoZSBvcmlnaW5hbCBgYXg4ODc3MmAgYW5kIHRoZSBgYXg4ODc3MmFgLiBUaGUgZGV2aWwncyBhbHdheXMgaW4gdGhlIGRldGFpbHMsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggc2xpZ2h0bHkgZGlmZmVyZW50IGhhcmR3YXJlIHJldmlzaW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBiaW5kaW5nIHJlbGF0aW9uc2hpcCBjb21wbGV0ZWx5IHRvIHRyb3VibGVzaG9vdCBvciBleHRlbmQgZnVuY3Rpb25hbGl0eSwgaWYgdGhlIG5lZWQgYXJpc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDA1OSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIzOjU0LjIxNDQzNjU1MloiLCJTZXEiOjU2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjA1MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDgyMCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDgyMDpcXHRcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXYtXFx1MDAzZW5ldC1cXHUwMDNlZGV2LmZ3bm9kZSxcXG4gODIxOlxcdFxcdFxcdFxcdFxcdCBwaHlfaWZfbW9kZSwgXFx1MDAyNmF4ODg3NzJfcGh5bGlua19tYWNfb3BzKTtcXG4gODIyOlxcdFxcdGlmIChJU19FUlIocGh5bGluaykpXFxuIDgyMzpcXHRcXHRcXHRyZXR1cm4gUFRSX0VSUihwaHlsaW5rKTtcXG4gODI0OlxcdFxcbiA4MjU6XFx0XFx0cHJpdi1cXHUwMDNlcGh5bGluayA9IHBoeWxpbms7XFxuIDgyNjpcXHRcXHRyZXR1cm4gMDtcXG4gODI3OlxcdH1cXG4gODI4OlxcdFxcbiA4Mjk6XFx0c3RhdGljIGludCBheDg4NzcyX2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4gODMwOlxcdHtcXG4gODMxOlxcdFxcdHN0cnVjdCBhc2l4X2NvbW1vbl9wcml2YXRlICpwcml2O1xcbiA4MzI6XFx0XFx0dTggYnVmW0VUSF9BTEVOXSA9IHswfTtcXG4gODMzOlxcdFxcdGludCByZXQsIGk7XFxuIDgzNDpcXHRcXG4gODM1OlxcdFxcdHByaXYgPSBkZXZtX2t6YWxsb2MoXFx1MDAyNmRldi1cXHUwMDNldWRldi1cXHUwMDNlZGV2LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTtcXG4gODM2OlxcdFxcdGlmICghcHJpdilcXG4gODM3OlxcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiA4Mzg6XFx0XFxuIDgzOTpcXHRcXHRkZXYtXFx1MDAzZWRyaXZlcl9wcml2ID0gcHJpdjtcXG4gODQwOlxcdFxcbiA4NDE6XFx0XFx0cmV0ID0gdXNibmV0X2dldF9lbmRwb2ludHMoZGV2LCBpbnRmKTtcXG4gODQyOlxcdFxcdGlmIChyZXQpXFxuIDg0MzpcXHRcXHRcXHRyZXR1cm4gcmV0O1xcbiA4NDQ6XFx0XFxuIDg0NTpcXHRcXHQvKiBNYXliZSB0aGUgYm9vdCBsb2FkZXIgcGFzc2VkIHRoZSBNQUMgYWRkcmVzcyB2aWEgZGV2aWNlIHRyZWUgKi9cXG4gODQ2OlxcdFxcdGlmICghZXRoX3BsYXRmb3JtX2dldF9tYWNfYWRkcmVzcyhcXHUwMDI2ZGV2LVxcdTAwM2V1ZGV2LVxcdTAwM2VkZXYsIGJ1ZikpIHtcXG4gODQ3OlxcdFxcdFxcdG5ldGlmX2RiZyhkZXYsIGlmdXAsIGRldi1cXHUwMDNlbmV0LFxcbiA4NDg6XFx0XFx0XFx0XFx0ICBcXFwiTUFDIGFkZHJlc3MgcmVhZCBmcm9tIGRldmljZSB0cmVlXFxcIik7XFxuIDg0OTpcXHRcXHR9IGVsc2Uge1xcbiA4NTA6XFx0XFx0XFx0LyogVHJ5IGdldHRpbmcgdGhlIE1BQyBhZGRyZXNzIGZyb20gRUVQUk9NICovXFxuIDg1MTpcXHRcXHRcXHRpZiAoZGV2LVxcdTAwM2Vkcml2ZXJfaW5mby1cXHUwMDNlZGF0YSBcXHUwMDI2IEZMQUdfRUVQUk9NX01BQykge1xcbiA4NTI6XFx0XFx0XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIChFVEhfQUxFTiBcXHUwMDNlXFx1MDAzZSAxKTsgaSsrKSB7XFxuIDg1MzpcXHRcXHRcXHRcXHRcXHRyZXQgPSBhc2l4X3JlYWRfY21kKGRldiwgQVhfQ01EX1JFQURfRUVQUk9NLFxcbiA4NTQ6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIDB4MDQgKyBpLCAwLCAyLCBidWYgKyBpICogMixcXG4gODU1OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAwKTtcXG4gODU2OlxcdFxcdFxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiA4NTc6XFx0XFx0XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDg1ODpcXHRcXHRcXHRcXHR9XFxuIDg1OTpcXHRcXHRcXHR9IGVsc2Uge1xcbiA4NjA6XFx0XFx0XFx0XFx0cmV0ID0gYXNpeF9yZWFkX2NtZChkZXYsIEFYX0NNRF9SRUFEX05PREVfSUQsXFxuIDg2MTpcXHRcXHRcXHRcXHRcXHRcXHQgICAgMCwgMCwgRVRIX0FMRU4sIGJ1ZiwgMCk7XFxuIDg2MjpcXHRcXHRcXHR9XFxuIDg2MzpcXHRcXG4gODY0OlxcdFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuIDg2NTpcXHRcXHRcXHRcXHRuZXRkZXZfZGJnKGRldi1cXHUwMDNlbmV0LCBcXFwiRmFpbGVkIHRvIHJlYWQgTUFDIGFkZHJlc3M6ICVkXFxcXG5cXFwiLFxcbiA4NjY6XFx0XFx0XFx0XFx0XFx0ICAgcmV0KTtcXG4gODY3OlxcdFxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDg2ODpcXHRcXHRcXHR9XFxuIDg2OTpcXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjIzOjU0LjIxNDU5ODkxM1oiLCJTZXEiOjU3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDUwOTgzNjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgYGF4ODg3NzJgIERyaXZlcioqXG5cbkFscmlnaHQsIHNvIEknbSBmb2N1c2luZyBvbiB0aGUgYGF4ODg3NzJgIGRyaXZlciwgYW5kIGl0IGxvb2tzIGxpa2UgYGF4ODg3NzJfYmluZGAgaXMsIGFzIGV4cGVjdGVkLCB0aGUgcHJpbWFyeSBiaW5kIGZ1bmN0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UsIHNvIGxldCdzIHN0YXJ0IGJ5IHF1aWNrbHkgdmVyaWZ5aW5nIGFuZCBleGFtaW5pbmcgdGhlIGBheDg4NzcyX2luaXRfcGh5YCBmdW5jdGlvbi4gSXQgaXMgYSBjcml0aWNhbCBjb21wb25lbnQgZm9yIGJyaW5naW5nIHVwIHRoZSBwaHlzaWNhbCBsYXllciBpbnRlcmZhY2UuIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIFBIWSBpbml0aWFsaXphdGlvbiBpcyBoYW5kbGVkIGNvcnJlY3RseSBhbmQgZWZmaWNpZW50bHksIGNvbnNpZGVyaW5nIHBvdGVudGlhbCBwb3dlci11cCBzZXF1ZW5jZXMsIGF1dG9uZWdvdGlhdGlvbiBwYXJhbWV0ZXJzLCBhbmQgYW55IHNwZWNpZmljIHF1aXJrcyBvZiB0aGUgQVg4ODc3MidzIFBIWS4gSSdsbCBwcm9iYWJseSBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSByZWdpc3RlcnMgYmVpbmcgYWNjZXNzZWQgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MTcyLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyMzo1OC4yNjU1ODQ4NzdaIiwiU2VxIjo1OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwNzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA3MDAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3MDA6XFx0XFx0bWRpb2J1c19mcmVlKHByaXYtXFx1MDAzZW1kaW8pO1xcbiA3MDE6XFx0fVxcbiA3MDI6XFx0XFxuIDcwMzpcXHRzdGF0aWMgaW50IGF4ODg3NzJfaW5pdF9waHkoc3RydWN0IHVzYm5ldCAqZGV2KVxcbiA3MDQ6XFx0e1xcbiA3MDU6XFx0XFx0c3RydWN0IGFzaXhfY29tbW9uX3ByaXZhdGUgKnByaXYgPSBkZXYtXFx1MDAzZWRyaXZlcl9wcml2O1xcbiA3MDY6XFx0XFx0aW50IHJldDtcXG4gNzA3OlxcdFxcbiA3MDg6XFx0XFx0cHJpdi1cXHUwMDNlcGh5ZGV2ID0gbWRpb2J1c19nZXRfcGh5KHByaXYtXFx1MDAzZW1kaW8sIHByaXYtXFx1MDAzZXBoeV9hZGRyKTtcXG4gNzA5OlxcdFxcdGlmICghcHJpdi1cXHUwMDNlcGh5ZGV2KSB7XFxuIDcxMDpcXHRcXHRcXHRuZXRkZXZfZXJyKGRldi1cXHUwMDNlbmV0LCBcXFwiQ291bGQgbm90IGZpbmQgUEhZXFxcXG5cXFwiKTtcXG4gNzExOlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbiA3MTI6XFx0XFx0fVxcbiA3MTM6XFx0XFxuIDcxNDpcXHRcXHRyZXQgPSBwaHlsaW5rX2Nvbm5lY3RfcGh5KHByaXYtXFx1MDAzZXBoeWxpbmssIHByaXYtXFx1MDAzZXBoeWRldik7XFxuIDcxNTpcXHRcXHRpZiAocmV0KSB7XFxuIDcxNjpcXHRcXHRcXHRuZXRkZXZfZXJyKGRldi1cXHUwMDNlbmV0LCBcXFwiQ291bGQgbm90IGNvbm5lY3QgUEhZXFxcXG5cXFwiKTtcXG4gNzE3OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDcxODpcXHRcXHR9XFxuIDcxOTpcXHRcXG4gNzIwOlxcdFxcdHBoeV9zdXNwZW5kKHByaXYtXFx1MDAzZXBoeWRldik7XFxuIDcyMTpcXHRcXHRwcml2LVxcdTAwM2VwaHlkZXYtXFx1MDAzZW1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcXG4gNzIyOlxcdFxcbiA3MjM6XFx0XFx0cGh5X2F0dGFjaGVkX2luZm8ocHJpdi1cXHUwMDNlcGh5ZGV2KTtcXG4gNzI0OlxcdFxcbiA3MjU6XFx0XFx0aWYgKHByaXYtXFx1MDAzZWVtYmRfcGh5KVxcbiA3MjY6XFx0XFx0XFx0cmV0dXJuIDA7XFxuIDcyNzpcXHRcXG4gNzI4OlxcdFxcdC8qIEluIGNhc2UgbWFpbiBQSFkgaXMgbm90IHRoZSBlbWJlZGRlZCBQSFkgYW5kIE1BQyBpcyBSTUlJIGNsb2NrXFxuIDcyOTpcXHRcXHQgKiBwcm92aWRlciwgd2UgbmVlZCB0byBzdXNwZW5kIGVtYmVkZGVkIFBIWSBieSBrZWVwaW5nIFBMTCBlbmFibGVkXFxuIDczMDpcXHRcXHQgKiAoQVhfU1dSRVNFVF9JUFBEID09IDApLlxcbiA3MzE6XFx0XFx0ICovXFxuIDczMjpcXHRcXHRwcml2LVxcdTAwM2VwaHlkZXZfaW50ID0gbWRpb2J1c19nZXRfcGh5KHByaXYtXFx1MDAzZW1kaW8sIEFYX0VNQkRfUEhZX0FERFIpO1xcbiA3MzM6XFx0XFx0aWYgKCFwcml2LVxcdTAwM2VwaHlkZXZfaW50KSB7XFxuIDczNDpcXHRcXHRcXHRydG5sX2xvY2soKTtcXG4gNzM1OlxcdFxcdFxcdHBoeWxpbmtfZGlzY29ubmVjdF9waHkocHJpdi1cXHUwMDNlcGh5bGluayk7XFxuIDczNjpcXHRcXHRcXHRydG5sX3VubG9jaygpO1xcbiA3Mzc6XFx0XFx0XFx0bmV0ZGV2X2VycihkZXYtXFx1MDAzZW5ldCwgXFxcIkNvdWxkIG5vdCBmaW5kIGludGVybmFsIFBIWVxcXFxuXFxcIik7XFxuIDczODpcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gNzM5OlxcdFxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjM6NTguMjY1Njg2Njc3WiIsIlNlcSI6NTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwNTc0MzIwNDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQb3RlbnRpYWwgQnVnIEZpeCoqXG5cbk9rYXksIHNvIGBheDg4NzcyX2luaXRfcGh5YCBhbmQgYGF4ODg3NzJfYmluZGAgc2VlbSBsaWtlIGdvb2Qgc3RhcnRpbmcgcG9pbnRzIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBmaXguIEdpdmVuIG15IGV4cGVydGlzZSwgbXkgaW50dWl0aW9uIGlzIHRlbGxpbmcgbWUgdG8gbG9vayBjbG9zZWx5IGF0IHRoZXNlIHN5bWJvbHMuIFdhaXQsIHRoZSBwcm9ibGVtIGlzIHNwZWNpZmljYWxseSBpbiBgcnVzdC9rZXJuZWwvbmV0L3BoeS5yc2AuIEludGVyZXN0aW5nLiBJJ3ZlIGJlZW4gYWxlcnRlZCB0aGUgYnVnIGhhcyBiZWVuIGNvbmZpcm1lZCBpbiBgYXg4ODc5NmJfcnVzdC5yc2AuIFRoZSBwYXRjaCBhZGRyZXNzZXMgYml0ZmllbGQgaW5kZXggZXJyb3JzIGluIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGxpbmsgYW5kIGF1dG9uZWdvdGlhdGlvbiBzdGF0dXM6IGBpc19saW5rX3VwYCwgYGlzX2F1dG9uZWdfZW5hYmxlZGAsIGFuZCBgaXNfYXV0b25lZ19jb21wbGV0ZWRgLiBTbywgY2xlYXJseSwgdGhlIGRyaXZlciB3YXMgcmVhZGluZyB0aGUgd3JvbmcgYml0cyEgVGhpcyBleHBsYWlucyB0aGUgcG90ZW50aWFsIGZvciBsaW5rIHN0YXR1cyBvciBhdXRvbmVnb3RpYXRpb24gZXJyb3JzLCB3aGljaCB3b3VsZCBkZWZpbml0ZWx5IGJlIGNvbnNpZGVyZWQgYSBmdW5jdGlvbmFsIGNoYW5nZS5cblxuSXMgdGhpcyByZWFjaGFibGU/IFllcywgdGhyb3VnaCBVU0IgZW11bGF0aW9uIG9mIEFTSVggZGV2aWNlcy4gVGhhdCdzIGdvb2Q7IHRoaXMgbWFrZXMgaXQgZnV6emFibGUhIFdlJ2xsIHNldCBgV29ydGhGdXp6aW5nPXRydWVgLlxuXG5Gb3IgdGhlIGZ1enplciwgd2UnbGwgZW5hYmxlIGBSVVNUYCwgYFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU2AsIGBBWDg4Nzk2Ql9SVVNUX1BIWWAsIGFuZCBgVVNCX05FVF9BWDg4MTdYYCBpbiBgRW5hYmxlQ29uZmlnc2AuIFRoZSBgRm9jdXNTeW1ib2xzYCB3aWxsIGJlIGBheDg4NzcyX2JpbmRgIGFuZCBgYXg4ODc3Ml9pbml0X3BoeWAuXG5cbk5vdywgd2hhdCBhYm91dCB0aGF0IGByZWFkX3N0YXR1c2AgaW4gYFBoeUFYODg3NzJBYD8gVGhhdCBtaWdodCBiZSB2YWx1YWJsZSBmb3IgYSBtb3JlIGRldGFpbGVkIGFuYWx5c2lzLCBidXQgdGhlIG5hbWUgaXMgbWFuZ2xlZC4gSSBjYW4ndCBlYXNpbHkgYW5hbHl6ZSBpdCB1c2luZyBzeXprYWxsZXIuIEhvd2V2ZXIsIGBheDg4NzcyX2luaXRfcGh5YCB0cmlnZ2VycyB0aGUgUEhZIGluaXRpYWxpemF0aW9uLCBhbmQgYGF4ODg3NzJfYmluZGAgdHJpZ2dlcnMgdGhlIFVTQiBkZXZpY2UgYmluZGluZy4gR29vZCwgdGhpcyBpcyBhIHBhdGggaW4uIFxuXG5PaCB3YWl0LCBgYXg4ODc3Ml9pbml0X3BoeWAgaXMgc3RhdGljLi4uIFRoYXQgbWlnaHQgY29tcGxpY2F0ZSB0aGluZ3MgYSBsaXR0bGUuIFdlIG5lZWQgdG8gYmUgYWJsZSB0byB0cmlnZ2VyIHRoZSBmdW5jdGlvbiEgQXJlIHRoZXJlIGFueSBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoaXM/IFdoYXQgYWJvdXQgYGFzaXhfbWRpb19yZWFkYD8gSSBzaG91bGQgY2hlY2sgYGFzaXhfZGV2aWNlcy5jYCBmb3IgZXhwb3J0ZWQgZnVuY3Rpb25zIHRoYXQgYXJlIG5vdCBzdGF0aWMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MDU0LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjQ6MDYuMzIzMTIyNDhaIiwiU2VxIjo2MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1MzAyODUxMywiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjI0OjA2Ljk3NjE1OTUzM1oiLCJTZXEiOjYxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mjk5NDgzNDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgYGFzaXhfbWRpb19yZWFkYCBGdW5jdGlvbioqXG5cbkhtbSwgYGFzaXhfbWRpb19yZWFkYC4uLiBJJ20gaW1tZWRpYXRlbHkgdGhpbmtpbmcsIFwiV2h5IGFyZSB3ZSBsb29raW5nIGF0ICp0aGlzKiBmdW5jdGlvbiBzcGVjaWZpY2FsbHk/XCIgSXMgdGhlcmUgYW4gaXNzdWUgd2l0aCB0aGUgTURJTyBpbnRlcmZhY2Ugb24gYW4gQVNJWC1iYXNlZCBkZXZpY2U/IFBlcmhhcHMgYSByZWNlbnQgYnVnIHJlcG9ydD8gT3IgbWF5YmUgd2UncmUgcmV2aXNpdGluZyBzb21lIG9sZCBjb2RlIGZvciBvcHRpbWl6YXRpb24gb3Igc2VjdXJpdHkgYXVkaXRpbmcuIEl0J3MgbGlrZWx5IHRoYXQgYSByZWdpc3RlciByZWFkIG9wZXJhdGlvbiBpcyBmYWlsaW5nIG9yIHJldHVybmluZyBpbmNvcnJlY3QgZGF0YSwgYW5kIGBhc2l4X21kaW9fcmVhZGAgaXMgdGhlIHN1c3BlY3QuIEknbGwgbmVlZCB0byByZW1lbWJlciB0aGlzIGZ1bmN0aW9uIGlzIHByb2JhYmx5IHBhcnQgb2YgdGhlIEV0aGVybmV0IGNvbnRyb2xsZXIncyBQSFkgaW50ZXJhY3Rpb24uIEtub3dpbmcgdGhhdCwgaXMgdGhlcmUgYSBwcm9ibGVtIHdpdGggdGhlIE1ESU8gYnVzIGl0c2VsZiwgdGhlIFBIWSBhZGRyZXNzLCBvciBpcyB0aGUgcmVhZCBjb21tYW5kIGJlaW5nIGZvcm1hdHRlZCBpbmNvcnJlY3RseT8gSSBoYXZlIGEgZmVlbGluZyB0aGVyZSB3aWxsIGJlIGEgY2FsbCB0byB0aGUgTURJTyBQSFkgbGF5ZXIgb3IgYSBzdWJzZXF1ZW50IGJpdC1iYW5naW5nIG9mIGEgc2VyaWFsIGludGVyZmFjZS4gSSdtIGFscmVhZHkgYW50aWNpcGF0aW5nIHRoZSB0eXBpY2FsIGRlYnVnZ2luZyBzdGVwczogY2hlY2sgZm9yIGNsb2NraW5nIGlzc3VlcywgdmVyaWZ5IHRoZSBNRElPIHNpZ25hbCBpbnRlZ3JpdHksIGFuZCB2YWxpZGF0ZSB0aGUgcmVnaXN0ZXIgYWRkcmVzcyBiZWluZyB0YXJnZXRlZC4gSSdsbCBwcm9iYWJseSBsb29rIHRvIHNlZSB3aGVyZSBpdCdzIGNhbGxlZCBhbmQgdGhlIHBhcmFtZXRlcnMgcGFzc2VkIHRvIGl0IC0gdGhhdCB3aWxsIGdpdmUgbWUgY29udGV4dC4gSXQnbGwgYmUgaW50ZXJlc3RpbmcgdG8gZGlnIGluIGFuZCBzZWUgd2hhdCdzICphY3R1YWxseSogaGFwcGVuaW5nIHVuZGVyIHRoZSBob29kLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzAxNSwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjI0OjExLjI3NTY0NjAyWiIsIlNlcSI6NjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDUwODc5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhc2l4X21kaW9fcmVhZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTcwPXN0YXRpYyB1MzIgYXNpeF9nZXRfcGh5aWQoc3RydWN0IHVzYm5ldCAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc3LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyAxMDA7IGkrKykge1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo3ODpcXHRcXHRwaHlfcmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUlJX1BIWVNJRDEpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy03OS1cXHRcXHRpZiAocGh5X3JlZyBcXHUwMDNjIDApXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTAtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjkxOlxcdHBoeV9yZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfUEhZU0lEMik7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTkyLVxcdGlmIChwaHlfcmVnIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xOTA9c3RhdGljIHZvaWQgYXNpeF9waHlfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCB1bnNpZ25lZCBpbnQgcmVzZXRfYml0cylcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yMDAtXFx0d2hpbGUgKHRpbWVvdXQtLSkge1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyMDE6XFx0XFx0aWYgKGFzaXhfbWRpb19yZWFkKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIE1JSV9CTUNSKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yMDItXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx1MDAyNiBCTUNSX1JFU0VUKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTIxMj1zdGF0aWMgaW50IGF4ODgxNzJfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI0OC1cXHRkZXYtXFx1MDAzZW1paS5kZXYgPSBkZXYtXFx1MDAzZW5ldDtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MjQ5OlxcdGRldi1cXHUwMDNlbWlpLm1kaW9fcmVhZCA9IGFzaXhfbWRpb19yZWFkO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0yNTAtXFx0ZGV2LVxcdTAwM2VtaWkubWRpb193cml0ZSA9IGFzaXhfbWRpb193cml0ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0zNjI9c3RhdGljIGludCBheDg4NzcyX2h3X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldiwgaW50IGluX3BtKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQwNi1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NDA3OlxcdGlmIChpbl9wbSBcXHUwMDI2XFx1MDAyNiAoIWFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDA4LVxcdFxcdFxcdFxcdFxcdCAgIE1JSV9QSFlTSUQxKSkpe1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTQ1Nj1zdGF0aWMgaW50IGF4ODg3NzJhX2h3X3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldiwgaW50IGluX3BtKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTQ5Ni1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NDk3OlxcdGlmIChpbl9wbSBcXHUwMDI2XFx1MDAyNiAoIWFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDk4LVxcdFxcdFxcdFxcdFxcdCAgIE1JSV9QSFlTSUQxKSkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy01MTItXFx0XFx0LyogQ2hlY2sgaWYgdGhlIFBIWSByZWdpc3RlcnMgaGF2ZSBkZWZhdWx0IHNldHRpbmdzICovXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUxMzpcXHRcXHRwaHkxNGggPSBhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxNC1cXHRcXHRcXHRcXHRcXHQgICAgIEFYODg3NzJBX1BIWTE0SCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUxNTpcXHRcXHRwaHkxNWggPSBhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxNi1cXHRcXHRcXHRcXHRcXHQgICAgIEFYODg3NzJBX1BIWTE1SCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjUxNzpcXHRcXHRwaHkxNmggPSBhc2l4X21kaW9fcmVhZF9ub3BtKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxOC1cXHRcXHRcXHRcXHRcXHQgICAgIEFYODg3NzJBX1BIWTE2SCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9OTkwPXN0YXRpYyBpbnQgbWFydmVsbF9waHlfaW5pdChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo5OTc6XFx0cmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUlJX01BUlZFTExfU1RBVFVTKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTk4LVxcdG5ldGRldl9kYmcoZGV2LVxcdTAwM2VuZXQsIFxcXCJNSUlfTUFSVkVMTF9TVEFUVVMgPSAweCUwNHhcXFxcblxcXCIsIHJlZyk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAwMy1cXHRpZiAoZGF0YS1cXHUwMDNlbGVkbW9kZSkge1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDA0OlxcdFxcdHJlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMDUtXFx0XFx0XFx0TUlJX01BUlZFTExfTEVEX0NUUkwpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwMTItXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMTM6XFx0XFx0cmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAxNC1cXHRcXHRcXHRNSUlfTUFSVkVMTF9MRURfQ1RSTCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTAyMT1zdGF0aWMgaW50IHJ0bDgyMTFjbF9waHlfaW5pdChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAyOS1cXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MDEsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMzA6XFx0XFx0YXNpeF9tZGlvX3JlYWQgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MDEpIHwgMHgwMDgwKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAzMS1cXHRhc2l4X21kaW9fd3JpdGUgKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIDB4MWYsIDApO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTEwNDI9c3RhdGljIGludCBtYXJ2ZWxsX2xlZF9zdGF0dXMoc3RydWN0IHVzYm5ldCAqZGV2LCB1MTYgc3BlZWQpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwNDMte1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMDQ0OlxcdHUxNiByZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNQVJWRUxMX0xFRF9NQU5VQUwpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDQ1LVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTEyNzE9c3RhdGljIGludCBheDg4MTc4X2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2LCBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMjkwLVxcdGRldi1cXHUwMDNlbWlpLmRldiA9IGRldi1cXHUwMDNlbmV0O1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoxMjkxOlxcdGRldi1cXHUwMDNlbWlpLm1kaW9fcmVhZCA9IGFzaXhfbWRpb19yZWFkO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMjkyLVxcdGRldi1cXHUwMDNlbWlpLm1kaW9fd3JpdGUgPSBhc2l4X21kaW9fd3JpdGU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjI0OjExLjM1MDE2MDMzOVoiLCJTZXEiOjYzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjQwNTc4NTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkxvY2F0aW5nIHRoZSBNRElPIFJlYWQgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIHRyYWNrIGRvd24gdGhlIGltcGxlbWVudGF0aW9uIG9mIGBhc2l4X21kaW9fcmVhZGAuIExldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgaXQncyBzdXBwb3NlZCB0byBiZSB3aXRoaW4gdGhlIGBhc2l4X2NvbW1vbi5jYCBmaWxlLCByaWdodD8gSWYgc28sIHRoYXQgbWFrZXMgdGhpbmdzIGVhc2llci5cblxuTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGRlZmluaXRpb24gb2YgdGhpcyBmdW5jdGlvbiB3aXRoaW4gdGhlIGNvZGUgYmFzZS4gSSBuZWVkIHRvIHF1aWNrbHkgdmVyaWZ5IGl0cyBzaWduYXR1cmUgYW5kLCBtb3JlIGltcG9ydGFudGx5LCBzZWUgaG93IGl0J3MgYWN0dWFsbHkgaW1wbGVtZW50ZWQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIGFuZCBmaW5kIHRoYXQgZGVmaW5pdGlvbiFcblxuXG4iLCJJbnB1dFRva2VucyI6MzkyODAsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyNDoxNS45OTA3NDI0ODhaIiwiU2VxIjo2NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg3NDQwMjMxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImFzaXhfbWRpb19yZWFkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdXNiL2FzaXguaD0yMjk9dm9pZCBhc2l4X3NldF9tdWx0aWNhc3Qoc3RydWN0IG5ldF9kZXZpY2UgKm5ldCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0yMzAtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoyMzE6aW50IGFzaXhfbWRpb19yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4LmgtMjMyLXZvaWQgYXNpeF9tZGlvX3dyaXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MsIGludCB2YWwpO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaD0yMzU9aW50IGFzaXhfbWRpb19idXNfd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IHBoeV9pZCwgaW50IHJlZ251bSwgdTE2IHZhbCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0yMzYtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaDoyMzc6aW50IGFzaXhfbWRpb19yZWFkX25vcG0oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYyk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXguaC0yMzgtdm9pZCBhc2l4X21kaW9fd3JpdGVfbm9wbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jLFxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM9NDQxPXZvaWQgYXNpeF9zZXRfbXVsdGljYXN0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYy00NzktXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NDgwOnN0YXRpYyBpbnQgX19hc2l4X21kaW9fcmVhZChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTQ4MS1cXHRcXHRcXHQgICAgYm9vbCBpbl9wbSlcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUwMy1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MDQ6XFx0bmV0ZGV2X2RiZyhkZXYtXFx1MDAzZW5ldCwgXFxcImFzaXhfbWRpb19yZWFkKCkgcGh5X2lkPTB4JTAyeCwgbG9jPTB4JTAyeCwgcmV0dXJucz0weCUwNHhcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTA1LVxcdFxcdFxcdHBoeV9pZCwgbG9jLCBsZTE2X3RvX2NwdShyZXMpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUwOS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MTA6aW50IGFzaXhfbWRpb19yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlfaWQsIGludCBsb2MpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTExLXtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYzo1MTI6XFx0cmV0dXJuIF9fYXNpeF9tZGlvX3JlYWQobmV0ZGV2LCBwaHlfaWQsIGxvYywgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTUxMy19XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9jb21tb24uYz01NDk9aW50IGFzaXhfbWRpb19idXNfcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTUyLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU1MzpcXHRyZXR1cm4gX19hc2l4X21kaW9fcmVhZChwcml2LVxcdTAwM2VuZXQsIHBoeV9pZCwgcmVnbnVtLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTU0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jPTU1Nj1pbnQgYXNpeF9tZGlvX2J1c193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnbnVtLCB1MTYgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmMtNTYyLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jOjU2MzppbnQgYXNpeF9tZGlvX3JlYWRfbm9wbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LCBpbnQgcGh5X2lkLCBpbnQgbG9jKVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU2NC17XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfY29tbW9uLmM6NTY1OlxcdHJldHVybiBfX2FzaXhfbWRpb19yZWFkKG5ldGRldiwgcGh5X2lkLCBsb2MsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2NvbW1vbi5jLTU2Ni19XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NzA9c3RhdGljIHUzMiBhc2l4X2dldF9waHlpZChzdHJ1Y3QgdXNibmV0ICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNzctXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIDEwMDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjc4OlxcdFxcdHBoeV9yZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfUEhZU0lEMSk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTc5LVxcdFxcdGlmIChwaHlfcmVnIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05MC1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6OTE6XFx0cGh5X3JlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIE1JSV9QSFlTSUQyKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtOTItXFx0aWYgKHBoeV9yZWcgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTE5MD1zdGF0aWMgdm9pZCBhc2l4X3BoeV9yZXNldChzdHJ1Y3QgdXNibmV0ICpkZXYsIHVuc2lnbmVkIGludCByZXNldF9iaXRzKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTIwMC1cXHR3aGlsZSAodGltZW91dC0tKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjIwMTpcXHRcXHRpZiAoYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgTUlJX0JNQ1IpXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTIwMi1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHUwMDI2IEJNQ1JfUkVTRVQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MjEyPXN0YXRpYyBpbnQgYXg4ODE3Ml9iaW5kKHN0cnVjdCB1c2JuZXQgKmRldiwgc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGYpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMjQ4LVxcdGRldi1cXHUwMDNlbWlpLmRldiA9IGRldi1cXHUwMDNlbmV0O1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzoyNDk6XFx0ZGV2LVxcdTAwM2VtaWkubWRpb19yZWFkID0gYXNpeF9tZGlvX3JlYWQ7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTI1MC1cXHRkZXYtXFx1MDAzZW1paS5tZGlvX3dyaXRlID0gYXNpeF9tZGlvX3dyaXRlO1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jPTM2Mj1zdGF0aWMgaW50IGF4ODg3NzJfaHdfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgaW5fcG0pXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDA2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo0MDc6XFx0aWYgKGluX3BtIFxcdTAwMjZcXHUwMDI2ICghYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00MDgtXFx0XFx0XFx0XFx0XFx0ICAgTUlJX1BIWVNJRDEpKSl7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9NDU2PXN0YXRpYyBpbnQgYXg4ODc3MmFfaHdfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2LCBpbnQgaW5fcG0pXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNDk2LVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYzo0OTc6XFx0aWYgKGluX3BtIFxcdTAwMjZcXHUwMDI2ICghYXNpeF9tZGlvX3JlYWRfbm9wbShkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy00OTgtXFx0XFx0XFx0XFx0XFx0ICAgTUlJX1BIWVNJRDEpKSkge1xcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTUxMi1cXHRcXHQvKiBDaGVjayBpZiB0aGUgUEhZIHJlZ2lzdGVycyBoYXZlIGRlZmF1bHQgc2V0dGluZ3MgKi9cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTEzOlxcdFxcdHBoeTE0aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE0LVxcdFxcdFxcdFxcdFxcdCAgICAgQVg4ODc3MkFfUEhZMTRIKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTE1OlxcdFxcdHBoeTE1aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE2LVxcdFxcdFxcdFxcdFxcdCAgICAgQVg4ODc3MkFfUEhZMTVIKTtcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6NTE3OlxcdFxcdHBoeTE2aCA9IGFzaXhfbWRpb19yZWFkX25vcG0oZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtNTE4LVxcdFxcdFxcdFxcdFxcdCAgICAgQVg4ODc3MkFfUEhZMTZIKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz05OTA9c3RhdGljIGludCBtYXJ2ZWxsX3BoeV9pbml0KHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTYtXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjk5NzpcXHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLCBNSUlfTUFSVkVMTF9TVEFUVVMpO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy05OTgtXFx0bmV0ZGV2X2RiZyhkZXYtXFx1MDAzZW5ldCwgXFxcIk1JSV9NQVJWRUxMX1NUQVRVUyA9IDB4JTA0eFxcXFxuXFxcIiwgcmVnKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDAzLVxcdGlmIChkYXRhLVxcdTAwM2VsZWRtb2RlKSB7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwMDQ6XFx0XFx0cmVnID0gYXNpeF9tZGlvX3JlYWQoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAwNS1cXHRcXHRcXHRNSUlfTUFSVkVMTF9MRURfQ1RSTCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTAxMi1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAxMzpcXHRcXHRyZWcgPSBhc2l4X21kaW9fcmVhZChkZXYtXFx1MDAzZW5ldCwgZGV2LVxcdTAwM2VtaWkucGh5X2lkLFxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDE0LVxcdFxcdFxcdE1JSV9NQVJWRUxMX0xFRF9DVFJMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz0xMDIxPXN0YXRpYyBpbnQgcnRsODIxMWNsX3BoeV9pbml0KHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDI5LVxcdGFzaXhfbWRpb193cml0ZSAoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgMHgwMSxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6MTAzMDpcXHRcXHRhc2l4X21kaW9fcmVhZCAoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgMHgwMSkgfCAweDAwODApO1xcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy0xMDMxLVxcdGFzaXhfbWRpb193cml0ZSAoZGV2LVxcdTAwM2VuZXQsIGRldi1cXHUwMDNlbWlpLnBoeV9pZCwgMHgxZiwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTA0Mj1zdGF0aWMgaW50IG1hcnZlbGxfbGVkX3N0YXR1cyhzdHJ1Y3QgdXNibmV0ICpkZXYsIHUxNiBzcGVlZClcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtMTA0My17XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEwNDQ6XFx0dTE2IHJlZyA9IGFzaXhfbWRpb19yZWFkKGRldi1cXHUwMDNlbmV0LCBkZXYtXFx1MDAzZW1paS5waHlfaWQsIE1BUlZFTExfTEVEX01BTlVBTCk7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEwNDUtXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9MTI3MT1zdGF0aWMgaW50IGF4ODgxNzhfYmluZChzdHJ1Y3QgdXNibmV0ICpkZXYsIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRmKVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEyOTAtXFx0ZGV2LVxcdTAwM2VtaWkuZGV2ID0gZGV2LVxcdTAwM2VuZXQ7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjEyOTE6XFx0ZGV2LVxcdTAwM2VtaWkubWRpb19yZWFkID0gYXNpeF9tZGlvX3JlYWQ7XFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jLTEyOTItXFx0ZGV2LVxcdTAwM2VtaWkubWRpb193cml0ZSA9IGFzaXhfbWRpb193cml0ZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjQ6MTYuMDc4MTg3ODVaIiwiU2VxIjo2NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTYwNjM3NjY2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbnZlc3RpZ2F0aW9uIGludG8gUG90ZW50aWFsIEZ1enppbmcgVGFyZ2V0cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBzeXprYWxsZXIgbWlnaHQgYmUgYWJsZSB0byBoZWxwIHVzLiBJIHNlZSB0aGF0IGBhc2l4X21kaW9fcmVhZGAgaXMgZXhwb3J0ZWQgZnJvbSBgYXNpeF9jb21tb24uY2Ag4oCTIG9yIGF0IGxlYXN0LCBpdCdzIG5vdCBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCBjb3VsZCBiZSBhIHBvc3NpYmxlIHRhcmdldC4gSG1tLCBidXQgdGhlbiBJIHJlbWVtYmVyIHRoYXQgYGF4ODg3NzJfYmluZGAgaXMgYWN0dWFsbHkgc3RhdGljLCB5ZXQgc3l6a2FsbGVyICpjYW4qIHN0aWxsIGhvbmUgaW4gb24gaXQgaWYgaXQncyBiYWtlZCBpbnRvIHRoZSBrZXJuZWwgaW1hZ2UuIEludGVyZXN0aW5nLlxuXG5TbywgbGV04oCZcyBwaXZvdCB0byB0aGlua2luZyBhYm91dCBoaXR0aW5nIGBheDg4NzcyX2JpbmRgIGFuZCBgYXg4ODc3Ml9pbml0X3BoeWAgZGlyZWN0bHkuIFRoYXQgZmVlbHMgbGlrZSBhIGJldHRlciBhbmdsZS4gQnV0IHdhaXQsIHN5emthbGxlciAqY291bGQqIGFsc28gdGFyZ2V0IGBwaHlfcmVhZF9zdGF0dXNgIGRpcmVjdGx5LiBUaGF0J3MgdGhlIGdlbmVyaWMgZnVuY3Rpb24gdGhhdCdzIHVsdGltYXRlbHkgY2FsbGluZyB0aGUgY2FsbGJhY2suIEhvd2V2ZXIsIGBwaHlfcmVhZF9zdGF0dXNgIGlzIGEgcmVhbGx5IGhvdCBwYXRoLCB1c2VkIGJ5IGV2ZXJ5IHNpbmdsZSBQSFksIHNvIGl0J3MgcHJvYmFibHkgbm90IGlkZWFsIGFzIGEgdGFyZ2V0LlxuXG5MZXQgbWUgdGhpbmsgYSBiaXQgbW9yZSBkZWVwbHkgYWJvdXQgYWx0ZXJuYXRpdmVzLiBXaGF0IGFib3V0IGBwaHlfcmVzb2x2ZV9hbmVnX2xpbmttb2RlYD8gSSBzZWUgdGhhdCBpdCdzIGNhbGxlZCBmcm9tIGByZWFkX3N0YXR1c2Agd2hpY2ggc2VlbXMgbGlrZSBzb21ldGhpbmcgaW50ZXJlc3RpbmcuIFRoYXQncyBpbiBgYXg4ODc5NmJfcnVzdC5yc2AhIE9oLCByaWdodCwgYmVjYXVzZSBgYXg4ODc5NmJfcnVzdC5yc2AgaXMgY2FsbGluZyBgZGV2LnJlc29sdmVfYW5lZ19saW5rbW9kZSgpYC4gR29vZC4gT2ssIGl0J3MgdGltZSB0byBjaGVjayB3aGF0IGBydXN0L2tlcm5lbC9uZXQvcGh5LnJzYCBoYXMgdG8gc2F5IGFib3V0IGByZXNvbHZlX2FuZWdfbGlua21vZGVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjM5NCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyNDoyMS42ODQ1NjY2MDJaIiwiU2VxIjo2NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwODQxMjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlc29sdmVfYW5lZ19saW5rbW9kZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJydXN0L2tlcm5lbC9uZXQvcGh5LnJzXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInJ1c3Qva2VybmVsL25ldC9waHkucnM9MTk0PSAgICBwdWIgZm4gcmVhZF9wYWdlZChcXHUwMDI2bXV0IHNlbGYsIHBhZ2U6IHUxNiwgcmVnbnVtOiB1MTYpIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2N1MTZcXHUwMDNlIHtcXG4tLVxcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtMjAzLSAgICAvLy8gUmVzb2x2ZXMgdGhlIGFkdmVydGlzZW1lbnRzIGludG8gUEhZIHNldHRpbmdzLlxcbnJ1c3Qva2VybmVsL25ldC9waHkucnM6MjA0OiAgICBwdWIgZm4gcmVzb2x2ZV9hbmVnX2xpbmttb2RlKFxcdTAwMjZtdXQgc2VsZikge1xcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtMjA1LSAgICAgICAgbGV0IHBoeWRldiA9IHNlbGYuMC5nZXQoKTtcXG4tLVxcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtMjA3LSAgICAgICAgLy8gU28gaXQncyBqdXN0IGFuIEZGSSBjYWxsLlxcbnJ1c3Qva2VybmVsL25ldC9waHkucnM6MjA4OiAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnBoeV9yZXNvbHZlX2FuZWdfbGlua21vZGUocGh5ZGV2KSB9O1xcbnJ1c3Qva2VybmVsL25ldC9waHkucnMtMjA5LSAgICB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjI0OjIxLjc3NTQxMjQ0M1oiLCJTZXEiOjY3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDkzNjk4NjQwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgVGFyZ2V0IGZvciBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIHBhdGNoLiBUaGUgaW1tZWRpYXRlIGdvYWwgaXMgdG8gdW5kZXJzdGFuZCBob3cgYmVzdCB0byBhcHByb2FjaCBmdXp6aW5nIHRoZSBjaGFuZ2VzIG1hZGUgdG8gdGhlIFJ1c3QgUEhZIGRyaXZlciBBUEksIHNwZWNpZmljYWxseSB0aGUgYml0ZmllbGQgaW5kZXggY29ycmVjdGlvbnMgZm9yIGBpc19saW5rX3VwYCwgYGlzX2F1dG9uZWdfZW5hYmxlZGAsIGFuZCBgaXNfYXV0b25lZ19jb21wbGV0ZWRgLiBUaGVzZSBhcmUgdXNlZCBieSB0aGUgYGF4ODg3OTZiX3J1c3RgIFBIWSBkcml2ZXIsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIEFTSVggVVNCIGV0aGVybmV0IGRyaXZlciBzZXR1cC4gIEZ1bmN0aW9uYWxpdHkgbGlrZSB0aGF0IGlzIGFsd2F5cyBhIHByaW1lIHRhcmdldC5cblxuRmlyc3QsIEkgaGFkIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBmb2N1cyBvbiBgcGh5X3Jlc29sdmVfYW5lZ19saW5rbW9kZWAsIHdoaWNoIHNlZW1lZCByZWxldmFudCwgYnV0IHRoZW4gSSByZWFsaXplZCB0aGF0IGBheDg4NzcyX2JpbmRgIGFuZCBgYXg4ODc3Ml9pbml0X3BoeWAgd2l0aGluIHRoZSBgYXg4ODc3MmAgZHJpdmVyIGFyZSBsaWtlbHkgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50cy4gIEkgbWFkZSBhIG5vdGUgb2YgdGhlbSBhcyBwb3RlbnRpYWwgYEZvY3VzU3ltYm9sc2AsIGhvcGluZyB0aGV5IGFyZSBzdWZmaWNpZW50IHRvIHJlYWNoIHRoZSBmdW5jdGlvbmFsaXR5IHRoYXQgaGFzIGJlZW4gbW9kaWZpZWQuXG5cbkkgY2hlY2tlZCBgYXNpeF9kZXZpY2VzLmNgLCB3aGljaCBjb250YWlucyBgYXg4ODc3Ml9iaW5kYC4gVGhlbiBJIGV4cGxvcmVkIHRoZSBydXN0IGNvZGUsIGBheDg4Nzk2Yl9ydXN0LnJzYCBzZWFyY2hpbmcgZm9yIG90aGVyIGZ1bmN0aW9ucyBJIG1pZ2h0IGFkZCB0byB0aGUgbGlzdC4gSSBmb3VuZCB0aGUgbW9kdWxlIGluaXQgZnVuY3Rpb24gaXMgYHJ1c3RfYXNpeF9waHlfaW5pdGAsIGdlbmVyYXRlZCBieSBgbW9kdWxlX3BoeV9kcml2ZXIhYCwgd2hpY2ggaW4gdHVybiBnZW5lcmF0ZXMgYGluaXRfbW9kdWxlYCBhbmQgYGNsZWFudXBfbW9kdWxlYC4gU2luY2UgaXQncyBhIFJ1c3QgbW9kdWxlLCBJJ2xsIHVzZSBgaW5pdF9tb2R1bGVgIGFzIHdlbGwuIFxuXG5UaGUgaW5pdGlhbCBzdHJhdGVneSB3YXMgdG8gdXNlIHRoZSBgYXg4ODc3Ml9iaW5kYCBhbmQgYGF4ODg3NzJfaW5pdF9waHlgIGFzIHRoZSBmb2NhbCBwb2ludHMuIFRoZW4gSSByZWFsaXplZCBgYXg4ODc3Ml9iaW5kYCBpcyBzcGVjaWZpYyB0byB0aGUgVVNCIGRldmljZS4gIEdpdmVuIHRoZXJlJ3Mgbm8gb3RoZXIgZHJpdmVyIEkgY291bGQgaWRlbnRpZnksIEkgZmVsdCBjb25maWRlbnQgYWJvdXQgdXNpbmcgYGF4ODg3NzJfYmluZGAgYW5kIGBheDg4NzcyX2luaXRfcGh5YCBzaW5jZSB0aGUgY2hhbmdlcyBzaG91bGQgYmUgZXhlcmNpc2VkIHRocm91Z2ggVVNCIGVtdWxhdGlvbi5cblxuSG93ZXZlciwgYSBxdWljayBjaGVjayBvZiBgYXg4ODc3Ml9pbml0X3BoeWAgcmVtaW5kZWQgbWUgdGhhdCBpdCdzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IGlzbid0IGlkZWFsLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgYW0gZm9jdXNpbmcgb24gbm9uLXN0YXRpYyBzeW1ib2xzLiBBIHNjYW4gb2YgYGF4ODg3OTZiX3J1c3QucnNgIHJldmVhbHMgdGhhdCBldmVyeXRoaW5nIGlzIHBhcnQgb2YgdGhlIGBEcml2ZXJgIHRyYWl0IGltcGxlbWVudGF0aW9uIGFuZCBub3QgZXhwb3J0ZWQuIFRoZXJlZm9yZSwgYGF4ODg3NzJfYmluZGAgYW5kIGBheDg4NzcyX2luaXRfcGh5YCBsb29rIHRvIGJlIHRoZSBtb3N0IHByb21pc2luZyBjaG9pY2VzLlxuXG5IZXJlJ3MgbXkgZGlzdGlsbGVkIHN1bW1hcnk6IFRoaXMgaXMgZGVmaW5pdGVseSBXb3J0aEZ1enppbmcuIFRoZSBwYXRjaCBmaXhlcyBiaXRmaWVsZCBpbmRpY2VzLCBkaXJlY3RseSBpbXBhY3RpbmcgdGhlIGxpbmsgc3RhdHVzIGFuZCBhdXRvbmVnb3RpYXRpb24gYmVoYXZpb3Igb2YgdGhlIEFTSVggVVNCIGV0aGVybmV0IGRyaXZlci4gIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gV2UgY2FuIGV4ZXJjaXNlIHRoaXMgdmlhIFVTQiBlbXVsYXRpb24uXG5cbkZvciBjb25maWd1cmF0aW9uLCBJJ2xsIG5lZWQgYFJVU1RgLCBgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TYCwgYEFYODg3OTZCX1JVU1RfUEhZYCwgYW5kIGBVU0JfTkVUX0FYODgxN1hgIGVuYWJsZWQuICBUaGUgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBgYXg4ODc3Ml9iaW5kYCBhbmQgYGF4ODg3NzJfaW5pdF9waHlgLlxuXG5Ob3csIGJlZm9yZSBJIGZpbmFsaXplLCBsZXQncyBtYWtlIHN1cmUgZGVwZW5kZW5jaWVzIGxpbmUgdXAuIGBBWDg4Nzk2Ql9SVVNUX1BIWWAgZGVwZW5kcyBvbiBgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TYCBhbmQgYEFYODg3OTZCX1BIWWAuIGBVU0JfTkVUX0FYODgxN1hgICpzZWxlY3RzKiBgQVg4ODc5NkJfUEhZYC4gIFNvIGBBWDg4Nzk2Ql9QSFlgICp3aWxsKiBiZSBlbmFibGVkLiBgUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TYCBkZXBlbmRzIG9uIGBSVVNUYCBhbmQgYFBIWUxJQj15YC4gRmluYWxseSwgdG8gY29tcGxldGUgdGhlIHB1enpsZSwgZG9lcyBgVVNCX05FVF9BWDg4MTdYYCBzZWxlY3QgYFBIWUxJQmA/IENoZWNraW5nIHRoYXQgYWdhaW4sIGp1c3QgdG8gYmUgc3VyZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzIzOSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyNDozMi43MTI0MDM3NjRaIiwiU2VxIjo2OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ5ODczMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC91c2IvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNjUsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNjU6XFx0XFxuIDE2NjpcXHRjb25maWcgVVNCX05FVF9BWDg4MTdYXFxuIDE2NzpcXHRcXHR0cmlzdGF0ZSBcXFwiQVNJWCBBWDg4eHh4IEJhc2VkIFVTQiAyLjAgRXRoZXJuZXQgQWRhcHRlcnNcXFwiXFxuIDE2ODpcXHRcXHRkZXBlbmRzIG9uIFVTQl9VU0JORVRcXG4gMTY5OlxcdFxcdHNlbGVjdCBDUkMzMlxcbiAxNzA6XFx0XFx0c2VsZWN0IFBIWUxJTktcXG4gMTcxOlxcdFxcdHNlbGVjdCBBWDg4Nzk2Ql9QSFlcXG4gMTcyOlxcdFxcdGltcGx5IE5FVF9TRUxGVEVTVFNcXG4gMTczOlxcdFxcdGRlZmF1bHQgeVxcbiAxNzQ6XFx0XFx0aGVscFxcbiAxNzU6XFx0XFx0ICBUaGlzIG9wdGlvbiBhZGRzIHN1cHBvcnQgZm9yIEFTSVggQVg4OHh4eCBiYXNlZCBVU0IgMi4wXFxuIDE3NjpcXHRcXHQgIDEwLzEwMCBFdGhlcm5ldCBhZGFwdGVycy5cXG4gMTc3OlxcdFxcbiAxNzg6XFx0XFx0ICBUaGlzIGRyaXZlciBzaG91bGQgd29yayB3aXRoIGF0IGxlYXN0IHRoZSBmb2xsb3dpbmcgZGV2aWNlczpcXG4gMTc5OlxcdFxcdCAgICAqIEF0ZW4gVUMyMTBUXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjI0OjMyLjcxMzkwNTczNFoiLCJTZXEiOjY5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzkwNzkyMDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgVGhvdWdodHMgb24gdGhlIEFYODgxN1ggRHJpdmVyKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGBVU0JfTkVUX0FYODgxN1hgIGRyaXZlci4gUmlnaHQgYXdheSwgaXQncyBzZWxlY3RpbmcgYFBIWUxJTktgIGFuZCB0aGUgYEFYODg3OTZCX1BIWWAuIEdvb2QsIGdvb2QuIGBQSFlMSU5LYCBpcyB0aGUgd2F5IHRvIGdvIGZvciB0aGlzLCBhbmQgaXQgbWFrZXMgc2Vuc2UgdG8gdXNlIHRoZSBhc3NvY2lhdGVkIFBIWS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGFsbCBjb25maWd1cmVkIGNvcnJlY3RseS4gSSBzZWUgdGhhdCBgUEhZTElOS2AgaGFzIGEgZGVwZW5kZW5jeSBvbiBgUEhZTElCYCwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZS4gQmVmb3JlIEkgZGlnIHRvbyBkZWVwIGludG8gdGhlIGBBWDg4Nzk2Ql9QSFlgIGRyaXZlciBpdHNlbGYsIGxldCdzIHRha2UgYSBxdWljayBsb29rIGF0IGBQSFlMSU5LYCB0byBiZSBjZXJ0YWluIGV2ZXJ5dGhpbmcgaXMgc2V0IHVwIGFzIGV4cGVjdGVkLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSBhbmQgaG93IGl0J3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGlzIHNwZWNpZmljIFBIWS4gVGltZSB0byBpbnZlc3RpZ2F0ZSBgUEhZTElOS2AgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NDUwODksIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjI0OjM3LjEwNDcwMTk0MloiLCJTZXEiOjcwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODY3NzE1ODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBQSFlMSU5LXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTUtXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWc6Njpjb25maWcgUEhZTElOS1xcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTctXFx0dHJpc3RhdGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjQ6MzcuOTcyNDI2MzcyWiIsIlNlcSI6NzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MTAzNjQwMjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBwcm9jZXNzLCBjb25zaWRlcmluZyBJJ20gYW4gZXhwZXJ0OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBQSFkgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSB0YXNrIGF0IGhhbmQgaXMgdG8gZmFtaWxpYXJpemUgbXlzZWxmIHdpdGggdGhlIFBIWSBjb25maWd1cmF0aW9uLCBzcGVjaWZpY2FsbHkgdGhlIGBkcml2ZXJzL25ldC9waHkvS2NvbmZpZ2AgZmlsZSwgc3RhcnRpbmcgYXJvdW5kIGxpbmUgNi4gVGhpcyBzdWdnZXN0cyB3ZSdyZSBwcm9iYWJseSBsb29raW5nIGF0IHRoZSBjb3JlIG9wdGlvbnMgdGhhdCBnb3Zlcm4gaG93IHRoZSBrZXJuZWwgZXhwb3NlcyBhbmQgY29uZmlndXJlcyB2YXJpb3VzIFBoeXNpY2FsIExheWVyIChQSFkpIGRldmljZXMgd2l0aGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbS4gVGhpcyBpcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLCBzbyB0byBzcGVhaywgaW4gdGVybXMgb2YgaGFyZHdhcmUtc29mdHdhcmUgaW50ZWdyYXRpb24uIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgZGlmZmVyZW50IFBIWSBkcml2ZXJzLCB0aGUgZ2VuZXJhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFuZCBob3cgdGhleSByZWxhdGUgdG8gdGhlIGJyb2FkZXIgbmV0d29yayBzdGFjay4gQmFzZWQgb24gdGhlIGZpbGUgbmFtZSwgaXQncyBsaWtlbHkgYSBLY29uZmlnIGZpbGUsIG1lYW5pbmcgaXQncyBob3cgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHN5c3RlbSBpcyBzZXR1cC4gVGhpcyBzaG91bGQgb2ZmZXIgYW4gZWFzeSB3YXkgdG8gdW5kZXJzdGFuZCB3aGF0IGZlYXR1cmVzIGFuZCBkcml2ZXJzIGNhbiBiZSBlbmFibGVkLCBhbmQgaG93IHRoZXkgaW50ZXJhY3QuIExldCdzIHNlZSB3aGF0J3MgaW4gc3RvcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1NDIzLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjQ6NDEuMzgyNzkzMjA1WiIsIlNlcSI6NzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgyMzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFBIWSBMYXllciBDb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdGNvbmZpZyBQSFlMSU5LXFxuICAgNzpcXHRcXHR0cmlzdGF0ZVxcbiAgIDg6XFx0XFx0c2VsZWN0IFBIWUxJQlxcbiAgIDk6XFx0XFx0c2VsZWN0IFNXUEhZXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFBIWWxpbmsgbW9kZWxzIHRoZSBsaW5rIGJldHdlZW4gdGhlIFBIWSBhbmQgTUFDLCBhbGxvd2luZyBmaXhlZFxcbiAgMTI6XFx0XFx0ICBjb25maWd1cmF0aW9uIGxpbmtzLCBQSFlzLCBhbmQgU2VyZGVzIGxpbmtzIHdpdGggTUFDIGxldmVsXFxuICAxMzpcXHRcXHQgIGF1dG9uZWdvdGlhdGlvbiBtb2Rlcy5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0bWVudWNvbmZpZyBQSFlMSUJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjQ6NDEuMzgyODc2NzU1WiIsIlNlcSI6NzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NzgzOTE2NTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBEZWNpc2lvbnMqKlxuXG5Pa2F5LCBzbyBiYXNlZCBvbiB0aGUgZGVwZW5kZW5jeSBhbmFseXNpcywgdXNpbmcgYFBIWUxJTktgIGF1dG9tYXRpY2FsbHkgaW1wbGllcyBlbmFibGluZyBgUEhZTElCYC4gVGhlcmVmb3JlLCBgUEhZTElCYCBuZWVkcyB0byBiZSBhY3RpdmUgaW4gbXkgY29uZmlndXJhdGlvbi4gIEdpdmVuIHRoYXQgYW5kIHRoZSByZXF1aXJlbWVudHMgZm9yIG15IHRhcmdldCBzeXN0ZW0sIG15IGBFbmFibGVDb25maWdzYCBsaXN0IHNob3VsZCBpbmNsdWRlIGBSVVNUYCwgYFJVU1RfUEhZTElCX0FCU1RSQUNUSU9OU2AsIGBBWDg4Nzk2Ql9SVVNUX1BIWWAsIGFuZCBgVVNCX05FVF9BWDg4MTdYYC4gSG9sZCBvbiBhIHNlY29uZCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGRvbid0IG92ZXJsb29rIGEgY3JpdGljYWwgZGVwZW5kZW5jeSEgSSBzZWVtIHRvIHJlY2FsbCB0aGF0IGBVU0JfVVNCTkVUYCBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgYFVTQl9ORVRfQVg4ODE3WGAuICBCZXR0ZXIgZG91YmxlLWNoZWNrIHRoYXQsIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTg0NiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjI0OjQ1LjA2MTI3MzU4MVoiLCJTZXEiOjc0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1NjE2OTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBVU0JfVVNCTkVUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnPTExMz1jb25maWcgVVNCX0xBTjc4WFhcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTEzMS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxMzI6Y29uZmlnIFVTQl9VU0JORVRcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMzMtXFx0dHJpc3RhdGUgXFxcIk11bHRpLXB1cnBvc2UgVVNCIE5ldHdvcmtpbmcgRnJhbWV3b3JrXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyNDo0NS4xNjY4OTQ3NjVaIiwiU2VxIjo3NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU5NDY3MDQwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipFeGFtaW5pbmcgVVNCIE5ldHdvcmtpbmcgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGluLiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBkcml2ZXJzL25ldC91c2IvS2NvbmZpZ2AgZmlsZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBsaW5lIDEzMi4gVGhhdCdzIGxpa2VseSB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBVU0IgbmV0d29ya2luZyBkcml2ZXJzIGFyZSBkZWZpbmVkLiBJJ20gcHJvYmFibHkgbG9va2luZyBmb3Igc29tZXRoaW5nIHNwZWNpZmljLCBhIGZlYXR1cmUgSSB3YW50IHRvIGVuYWJsZSwgZGlzYWJsZSwgb3IgcGVyaGFwcyB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YuIFRoaXMgY291bGQgYmUgcmVsYXRlZCB0byBhIHNwZWNpZmljIFVTQiBuZXR3b3JrIGludGVyZmFjZSBjYXJkIChOSUMpLCBhIHBhcnRpY3VsYXIgZHJpdmVyIGZlYXR1cmUsIG9yIGEgZ2VuZXJhbCBxdWVzdGlvbiBvZiBob3cgdGhlIG1vZHVsZSBzZWxlY3Rpb24gd29ya3Mgd2l0aGluIHRoYXQgYXJlYS4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aGF0IHNwZWNpZmljIEtjb25maWcgb3B0aW9uIGlzLCB3aGF0IGl0IGNvbnRyb2xzLCBhbmQgdGhlIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggaXQncyBhdmFpbGFibGUuIEtub3dpbmcgdGhlIGNvbnRleHQgd2l0aGluIHRoZSBLY29uZmlnIGZpbGUgd2lsbCBjbGFyaWZ5IHRoZSBiaWdnZXIgcGljdHVyZS4gSSdtIGhvcGluZyB0byBnZXQgYSBxdWljayBncmFzcCBvZiB0aGlzIHBhcnRpY3VsYXIgb3B0aW9uIGJ5IHJlYWRpbmcgdGhlIHN1cnJvdW5kaW5nIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2MjQ4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjQ6NDguNzYxNTY4MTgyWiIsIlNlcSI6NzYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1MzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3VzYi9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyNSxcbiAgXCJMaW5lQ291bnRcIjogMTVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDEyNTpcXHRcXHQgIExBTjc4MDEgOiBVU0IgMyB0byAxMC8xMDAvMTAwMCBFdGhlcm5ldCBhZGFwdGVyIChNQUMgb25seSlcXG4gMTI2OlxcdFxcbiAxMjc6XFx0XFx0ICBQcm9wZXIgUEhZIGRyaXZlciBpcyByZXF1aXJlZCBmb3IgTEFONzgwMS5cXG4gMTI4OlxcdFxcbiAxMjk6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGVcXG4gMTMwOlxcdFxcdCAgbW9kdWxlIHdpbGwgYmUgY2FsbGVkIGxhbjc4eHguXFxuIDEzMTpcXHRcXG4gMTMyOlxcdGNvbmZpZyBVU0JfVVNCTkVUXFxuIDEzMzpcXHRcXHR0cmlzdGF0ZSBcXFwiTXVsdGktcHVycG9zZSBVU0IgTmV0d29ya2luZyBGcmFtZXdvcmtcXFwiXFxuIDEzNDpcXHRcXHRzZWxlY3QgTUlJXFxuIDEzNTpcXHRcXHRoZWxwXFxuIDEzNjpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIHNldmVyYWwga2luZHMgb2YgbmV0d29yayBsaW5rcyBvdmVyIFVTQixcXG4gMTM3OlxcdFxcdCAgd2l0aCBcXFwibWluaWRyaXZlcnNcXFwiIGJ1aWx0IGFyb3VuZCBhIGNvbW1vbiBuZXR3b3JrIGRyaXZlciBjb3JlXFxuIDEzODpcXHRcXHQgIHRoYXQgc3VwcG9ydHMgZGVlcCBxdWV1ZXMgZm9yIGVmZmljaWVudCB0cmFuc2ZlcnMuICAoVGhpcyBnaXZlc1xcbiAxMzk6XFx0XFx0ICBiZXR0ZXIgcGVyZm9ybWFuY2Ugd2l0aCBzbWFsbCBwYWNrZXRzIGFuZCBhdCBoaWdoIHNwZWVkcykuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjI0OjQ4Ljc2MTY0NTM3MVoiLCJTZXEiOjc3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDc5OTAwOTY3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBSZWFzb25pbmcgZm9yIFVTQl9VU0JORVQgSW5jbHVzaW9uIGFuZCBTeW1ib2wgRm9jdXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIGBVU0JfVVNCTkVUYCBzZWVtcyBzdHJhaWdodGZvcndhcmQ7IGl0IGhhcyBubyBkZXBlbmRlbmNpZXMgYmV5b25kIHRoZSBzdGFuZGFyZCBgVVNCYCBhbmQgYE5FVGAgbW9kdWxlcy4gU2luY2UgaXQncyBhIHRyaXN0YXRlLCBpdCAqY2FuKiBiZSBlbmFibGVkLiBMZXQncyBpbmNsdWRlIGl0IGluIHRoZSBjb25maWd1cmF0aW9uLiBUaGF0IGZlZWxzIHJpZ2h0LlxuXG5Ob3csIG9uIHRvIHRoZSBgRm9jdXNTeW1ib2xzYC4gTGV0J3MgcmUtZXhhbWluZSB0aGF0IGxpc3QuIEkndmUgZ290IGBheDg4NzcyX2JpbmRgIGFuZCBgYXg4ODc3Ml9pbml0X3BoeWAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGlzIG1vc3QgZWZmZWN0aXZlIGZvciB0YXJnZXRlZCB0ZXN0aW5nLiBJIHNlZSBgcmVhZF9zdGF0dXNgIGluIGBQaHlBWDg4NzcyQWAgaXMgbWFuZ2xlZCDigJMgdGhhdCdzIHBvdGVudGlhbGx5IGludGVyZXN0aW5nLiBXaGF0IGFib3V0IGBhc2l4X21kaW9fcmVhZGA/IFRoYXQncyBhIHN0cm9uZyBjb250ZW5kZXIgYXMgaXQncyBjcnVjaWFsIGZvciByZWFkaW5nIFBIWSByZWdpc3RlcnMuXG5cbkhvd2V2ZXIsIGBhc2l4X21kaW9fcmVhZGAsIHdoaWxlIGltcG9ydGFudCwgaXMgY2FsbGVkIHJlcGVhdGVkbHkgZHVyaW5nIFBIWSBpbml0aWFsaXphdGlvbiBhbmQgcG9sbGluZy4gSXQncyBub3QgYSBob3QtcGF0aCBmdW5jdGlvbiBpbiB0aGUgc2Vuc2Ugb2YgcGFja2V0IHByb2Nlc3NpbmcsIGJ1dCBpdCdzIGNhbGxlZCBwZXJpb2RpY2FsbHksIGFuZCBwcm9iYWJseSBub3Qgd2hhdCBJJ20gbG9va2luZyBmb3IuIEkgdGhpbmsgYGF4ODg3NzJfYmluZGAgYW5kIGBheDg4NzcyX2luaXRfcGh5YCBhcmUgYmV0dGVyIGJlY2F1c2UgdGhleSBhcmUgY2FsbGVkIG9uY2UgZHVyaW5nIGluaXRpYWxpemF0aW9uLCBhbmQgdGhhdCB3aWxsIG1ha2UgaXQgZWFzaWVyIHRvIHJlYWNoIHRoZSBjb2RlIHdoaWNoIG1heSBoYXZlIGFuIGlzc3VlLlxuXG5UaGVuIEkgcmVhbGl6ZWQgc29tZXRoaW5nIGtleTogdGhlIGJ1ZyAqYWN0dWFsbHkqIHJlc2lkZXMgd2l0aGluIGBpc19saW5rX3VwYCwgYGlzX2F1dG9uZWdfZW5hYmxlZGAsIGFuZCBgaXNfYXV0b25lZ19jb21wbGV0ZWRgLCB3aGljaCBhcmUgYWxsIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbSBgcmVhZF9zdGF0dXNgLiBgcmVhZF9zdGF0dXNgIGl0c2VsZiBpcyBwZXJpb2RpY2FsbHkgY2FsbGVkIGJ5IHRoZSBQSFkgc3RhdGUgbWFjaGluZSB0byBjaGVjayB0aGUgbGluayBzdGF0dXMuIElmIEkgZm9jdXMgb24gYGF4ODg3NzJfaW5pdF9waHlgLCBzeXprYWxsZXIgd2lsbCBpbml0aWFsaXplIHRoZSBQSFksIGFuZCB0aGVuLCB0aGUgc3RhdGUgbWFjaGluZSBzaG91bGQgYmVnaW4gY2FsbGluZyBgcmVhZF9zdGF0dXNgLCBhbmQgdGhlcmVmb3JlIGFsbCB0aG9zZSBwb3RlbnRpYWxseSBidWdneSBmdW5jdGlvbnMuIGBheDg4NzcyX2luaXRfcGh5YCBpdCBpcyEgVGhhdCdzIHRoZSBiZXN0IGZvY3VzIHN5bWJvbCB0byBtYXhpbWl6ZSB0aGUgbGlrZWxpaG9vZCBvZiB1bmNvdmVyaW5nIHRoZSBpc3N1ZS5cblxuUmlnaHQuIFRpbWUgdG8gYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY3NjEsIk91dHB1dFRva2VucyI6MjA0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjQ6NTkuNTYwNjU3MTM1WiIsIlNlcSI6NzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEwNzQ3OTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSVVNUXCIsXG4gICAgXCJSVVNUX1BIWUxJQl9BQlNUUkFDVElPTlNcIixcbiAgICBcIkFYODg3OTZCX1JVU1RfUEhZXCIsXG4gICAgXCJVU0JfTkVUX0FYODgxN1hcIixcbiAgICBcIlVTQl9VU0JORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJheDg4NzcyX2JpbmRcIixcbiAgICBcImF4ODg3NzJfaW5pdF9waHlcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBiaXRmaWVsZCBpbmRpY2VzIGluIHRoZSBSdXN0IFBIWSBkcml2ZXIgQVBJIGZvciBgaXNfbGlua191cGAsIGBpc19hdXRvbmVnX2VuYWJsZWRgLCBhbmQgYGlzX2F1dG9uZWdfY29tcGxldGVkYC4gVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIGJ5IHRoZSBgYXg4ODc5NmJfcnVzdGAgUEhZIGRyaXZlciwgd2hpY2ggaXMgdXNlZCBieSB0aGUgQVNJWCBVU0IgZXRoZXJuZXQgZHJpdmVyLiBJbmNvcnJlY3QgYml0ZmllbGQgaW5kaWNlcyBjYW4gbGVhZCB0byBpbmNvcnJlY3QgbGluayBzdGF0dXMgYW5kIGF1dG9uZWdvdGlhdGlvbiBiZWhhdmlvci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgY2FuIGJlIHJlYWNoZWQgdmlhIFVTQiBlbXVsYXRpb24uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUlVTVFwiLFxuICAgIFwiUlVTVF9QSFlMSUJfQUJTVFJBQ1RJT05TXCIsXG4gICAgXCJBWDg4Nzk2Ql9SVVNUX1BIWVwiLFxuICAgIFwiVVNCX05FVF9BWDg4MTdYXCIsXG4gICAgXCJVU0JfVVNCTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXg4ODc3Ml9iaW5kXCIsXG4gICAgXCJheDg4NzcyX2luaXRfcGh5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYml0ZmllbGQgaW5kaWNlcyBpbiB0aGUgUnVzdCBQSFkgZHJpdmVyIEFQSSBmb3IgYGlzX2xpbmtfdXBgLCBgaXNfYXV0b25lZ19lbmFibGVkYCwgYW5kIGBpc19hdXRvbmVnX2NvbXBsZXRlZGAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCBieSB0aGUgYGF4ODg3OTZiX3J1c3RgIFBIWSBkcml2ZXIsIHdoaWNoIGlzIHVzZWQgYnkgdGhlIEFTSVggVVNCIGV0aGVybmV0IGRyaXZlci4gSW5jb3JyZWN0IGJpdGZpZWxkIGluZGljZXMgY2FuIGxlYWQgdG8gaW5jb3JyZWN0IGxpbmsgc3RhdHVzIGFuZCBhdXRvbmVnb3RpYXRpb24gYmVoYXZpb3IuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSByZWFjaGVkIHZpYSBVU0IgZW11bGF0aW9uLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyNDo1OS42NzE0MTE2NjlaIiwiU2VxIjo3OSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyOTY5ODk3MjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMToyNDo1OS42NzE4OTg3MTlaIiwiU2VxIjo4MCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6OTI5NjQ5OTUyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyBiaXRmaWVsZCBvZmZzZXRzIGluIHRoZSBSdXN0IHdyYXBwZXIgZm9yIHRoZSBgcGh5X2RldmljZWAgc3RydWN0IChgcnVzdC9rZXJuZWwvbmV0L3BoeS5yc2ApLiBJdCBjaGFuZ2VzIHRoZSBiaXQgaW5kaWNlcyB1c2VkIHRvIHJlYWQgdGhlIGBsaW5rYCwgYGF1dG9uZWdgLCBhbmQgYGF1dG9uZWdfY29tcGxldGVgIGZpZWxkcyBmcm9tIGBfYml0ZmllbGRfMWAuIFRoaXMgaXMgYSBsb2dpYyBmaXggdG8gc3luY2hyb25pemUgdGhlIFJ1c3QgYmluZGluZ3Mgd2l0aCB0aGUgdW5kZXJseWluZyBDIHN0cnVjdHVyZSBsYXlvdXQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2Uga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgaW52b2x2ZSByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzIHJlbGF0ZWQgdG8gdGhlIGBwaHlfZGV2aWNlYCBzdHJ1Y3Qgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2VzcykuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYTA5MTdkYjMwYzQ1YzUyMDI1YmU2ODRmZjJlODMyNDY1YjhmMjllZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDIzIDExOjIxOjQyIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvbmV0L3BoeS5ycyBiL3J1c3Qva2VybmVsL25ldC9waHkucnNcbmluZGV4IDk1NmNkYTU3M2RkYmEuLjk5ZWQzZGQxNjhkZjMgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9uZXQvcGh5LnJzXG4rKysgYi9ydXN0L2tlcm5lbC9uZXQvcGh5LnJzXG5AQCAtMTMwLDcgKzEzMCw3IEBAIHB1YiBmbiBpc19saW5rX3VwKFx1MDAyNnNlbGYpIC1cdTAwM2UgYm9vbCB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBzdHJ1Y3QgaW52YXJpYW50IGVuc3VyZXMgdGhhdCB3ZSBtYXkgYWNjZXNzXG4gICAgICAgICAvLyB0aGlzIGZpZWxkIHdpdGhvdXQgYWRkaXRpb25hbCBzeW5jaHJvbml6YXRpb24uXG4gICAgICAgICBsZXQgYml0X2ZpZWxkID0gdW5zYWZlIHsgXHUwMDI2KCpzZWxmLjAuZ2V0KCkpLl9iaXRmaWVsZF8xIH07XG4tICAgICAgICBiaXRfZmllbGQuZ2V0KDE0LCAxKSA9PSBMSU5LX0lTX1VQXG4rICAgICAgICBiaXRfZmllbGQuZ2V0KDE1LCAxKSA9PSBMSU5LX0lTX1VQXG4gICAgIH1cbiBcbiAgICAgLy8vIEdldHMgdGhlIGN1cnJlbnQgYXV0by1uZWdvdGlhdGlvbiBjb25maWd1cmF0aW9uLlxuQEAgLTE0Miw3ICsxNDIsNyBAQCBwdWIgZm4gaXNfYXV0b25lZ19lbmFibGVkKFx1MDAyNnNlbGYpIC1cdTAwM2UgYm9vbCB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBzdHJ1Y3QgaW52YXJpYW50IGVuc3VyZXMgdGhhdCB3ZSBtYXkgYWNjZXNzXG4gICAgICAgICAvLyB0aGlzIGZpZWxkIHdpdGhvdXQgYWRkaXRpb25hbCBzeW5jaHJvbml6YXRpb24uXG4gICAgICAgICBsZXQgYml0X2ZpZWxkID0gdW5zYWZlIHsgXHUwMDI2KCpzZWxmLjAuZ2V0KCkpLl9iaXRmaWVsZF8xIH07XG4tICAgICAgICBiaXRfZmllbGQuZ2V0KDEzLCAxKSA9PSB1NjQ6OmZyb20oYmluZGluZ3M6OkFVVE9ORUdfRU5BQkxFKVxuKyAgICAgICAgYml0X2ZpZWxkLmdldCgxNCwgMSkgPT0gdTY0Ojpmcm9tKGJpbmRpbmdzOjpBVVRPTkVHX0VOQUJMRSlcbiAgICAgfVxuIFxuICAgICAvLy8gR2V0cyB0aGUgY3VycmVudCBhdXRvLW5lZ290aWF0aW9uIHN0YXRlLlxuQEAgLTE1NSw3ICsxNTUsNyBAQCBwdWIgZm4gaXNfYXV0b25lZ19jb21wbGV0ZWQoXHUwMDI2c2VsZikgLVx1MDAzZSBib29sIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHN0cnVjdCBpbnZhcmlhbnQgZW5zdXJlcyB0aGF0IHdlIG1heSBhY2Nlc3NcbiAgICAgICAgIC8vIHRoaXMgZmllbGQgd2l0aG91dCBhZGRpdGlvbmFsIHN5bmNocm9uaXphdGlvbi5cbiAgICAgICAgIGxldCBiaXRfZmllbGQgPSB1bnNhZmUgeyBcdTAwMjYoKnNlbGYuMC5nZXQoKSkuX2JpdGZpZWxkXzEgfTtcbi0gICAgICAgIGJpdF9maWVsZC5nZXQoMTUsIDEpID09IEFVVE9ORUdfQ09NUExFVEVEXG4rICAgICAgICBiaXRfZmllbGQuZ2V0KDE2LCAxKSA9PSBBVVRPTkVHX0NPTVBMRVRFRFxuICAgICB9XG4gXG4gICAgIC8vLyBTZXRzIHRoZSBzcGVlZCBvZiB0aGUgUEhZLlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTE6MjQ6NTkuNjcxODk5OTQ5WiIsIlNlcSI6ODEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkyOTY0ODIxMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUEhZIERldmljZSBCaXRmaWVsZCBBZGp1c3RtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyB0aGUgYHJ1c3Qva2VybmVsL25ldC9waHkucnNgIGZpbGUuIEl0J3MgbWVzc2luZyB3aXRoIHRoZSBiaXQgb2Zmc2V0cyB1c2VkIHRvIGFjY2VzcyBmaWVsZHMgd2l0aGluIHRoZSBgX2JpdGZpZWxkXzFgIHBhcnQgb2YgYSBgcGh5X2RldmljZWAgc3RydWN0LiBFc3NlbnRpYWxseSwgaXQncyB1cGRhdGluZyBob3cgd2UgcmVhZCB0aGUgc3RhdHVzIG9mIHRoZSBsaW5rLCBhdXRvbmVnb3RpYXRpb24sIGFuZCB3aGV0aGVyIHRoYXQgYXV0b25lZ290aWF0aW9uIGlzIGNvbXBsZXRlLiBTcGVjaWZpY2FsbHksIHRoZSBvZmZzZXRzIGZvciBgaXNfbGlua191cGAsIGBpc19hdXRvbmVnX2VuYWJsZWRgLCBhbmQgYGlzX2F1dG9uZWdfY29tcGxldGVkYCBhcmUgYmVpbmcgYWRqdXN0ZWQgd2l0aGluIHRoZSBiaXRmaWVsZC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGxpa2VseSBkdWUgdG8gYSBjaGFuZ2UgaW4gdGhlIHVuZGVybHlpbmcgQyBzdHJ1Y3R1cmUgbGF5b3V0IGZvciB0aGUgYHBoeV9kZXZpY2VgIGluIHRoZSBDIGNvZGUsIGFuZCB3ZSdyZSBqdXN0IHN5bmNpbmcgdXAgdGhlIFJ1c3Qgd3JhcHBlci4gVGhlIGltbWVkaWF0ZSBjb25jZXJuLCB0aG91Z2gsIGlzIGFsd2F5cyB1bmluaXRpYWxpemVkIG1lbW9yeS4gQ291bGQgdGhpcyBpbnRyb2R1Y2UgYSBzaXR1YXRpb24gd2hlcmUgd2UncmUgcmVhZGluZyBmcm9tIGEgcGFydCBvZiB0aGUgc3RydWN0IHRoYXQgaGFzbid0IGJlZW4gaW5pdGlhbGl6ZWQ/XG5cbkhvd2V2ZXIsIG9uIGNsb3NlciBpbnNwZWN0aW9uLCBpdCdzIGp1c3QgKnJlYWRpbmcqIGJpdHMuIFRoZSBgcGh5X2RldmljZWAgaXRzZWxmIGlzIGEga2VybmVsLW1hbmFnZWQgc3RydWN0dXJlLCBpbml0aWFsaXplZCBieSB0aGUgUEhZIHN1YnN5c3RlbS4gVGhlIHBhdGNoIGRvZXNuJ3QgaW50cm9kdWNlIGFueSBuZXcgYWxsb2NhdGlvbnMgb3IgY2hhbmdlcyB0byB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gSXQncyBqdXN0IHNoaWZ0aW5nIHRoZSBiaXQgaW5kaWNlcy4gSWYgdGhlcmUgKndlcmUqIGFuIGlzc3VlIHdpdGggYW4gdW5pbml0aWFsaXplZCBiaXRmaWVsZCwgaXQgd291bGQgYWxyZWFkeSBiZSBpbmhlcmVudCB0byB0aGUgZXhpc3RpbmcgYHBoeV9kZXZpY2VgIHN0cnVjdCwgYW5kIHRoZSBQSFkgc3Vic3lzdGVtJ3MgaW5pdGlhbGl6YXRpb24gbG9naWMuIFRoZXJlZm9yZSwgdGhpcyBwYXRjaCBpcyBvbmx5IGZpeGluZyB0aGUgYml0IG9mZnNldHMuIEtNU0FOIGlzbid0IG5lZWRlZCBoZXJlLiBUaGlzIGlzIGEgbG9naWMgYnVnIGZpeCwgZXNzZW50aWFsbHkgc3luY2luZyB0aGUgUnVzdCBzaWRlIHdpdGggdGhlIEMgc2lkZS5cblxuTGV0J3MgZG91YmxlLWNoZWNrIGFnYWluLCBqdXN0IHRvIGJlIHN1cmUuIFRoZSBzdHJ1Y3QgaXMgYHBoeV9kZXZpY2VgLCBhbGxvY2F0ZWQgYW5kIGluaXRpYWxpemVkIGJ5IHRoZSBrZXJuZWwuIFRoaXMgcGF0Y2ggb25seSAqY2hhbmdlcyB0aGUgb2Zmc2V0cyouIFRoZSBwYXRjaCAqb25seSBjaGFuZ2VzIHRoZSBiaXQgb2Zmc2V0cyosIG5vdCB0aGUgYWxsb2NhdGlvbi4gVGhlIGNoYW5nZSBkb2Vzbid0IGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSwgaXQgaXMganVzdCByZWFkaW5nIGJpdHMuIE5vIG5ldyBhbGxvY2F0aW9ucywgbm8gbmV3IHJpc2tzLiBObyB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBhcmUgYmVpbmcgdXNlZCBpbiBhbnkgYnJhbmNoaW5nIGxvZ2ljIGhlcmUgZWl0aGVyLiBJdCdzIHNhZmUgdG8gc2F5IHRoZXJlIGlzIG5vIG5lZWQgZm9yIEtNU0FOLiBJIHdpbGwgc2V0IGBOZWVkc0tNU0FOPWZhbHNlYCBvbiB0aGlzLiBJJ20gY29uZmlkZW50IGluIHNheWluZyB0aGF0IHRoaXMgaXMgcHVyZWx5IGEgbG9naWMgZml4LCBhbmQgS0FTQU4gd291bGQgY2F0Y2ggYW55IHByZS1leGlzdGluZyBtZW1vcnkgc2FmZXR5IGlzc3VlcyBhbnl3YXksIHdpdGhpbiB0aGUgYHBoeV9kZXZpY2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjc1LCJPdXRwdXRUb2tlbnMiOjE4MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU0MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDExOjI1OjA4Ljk2ODM4NDI3MVoiLCJTZXEiOjgyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyBiaXRmaWVsZCBvZmZzZXRzIGluIHRoZSBSdXN0IHdyYXBwZXIgZm9yIHRoZSBgcGh5X2RldmljZWAgc3RydWN0IChgcnVzdC9rZXJuZWwvbmV0L3BoeS5yc2ApLiBJdCBjaGFuZ2VzIHRoZSBiaXQgaW5kaWNlcyB1c2VkIHRvIHJlYWQgdGhlIGBsaW5rYCwgYGF1dG9uZWdgLCBhbmQgYGF1dG9uZWdfY29tcGxldGVgIGZpZWxkcyBmcm9tIGBfYml0ZmllbGRfMWAuIFRoaXMgaXMgYSBsb2dpYyBmaXggdG8gc3luY2hyb25pemUgdGhlIFJ1c3QgYmluZGluZ3Mgd2l0aCB0aGUgdW5kZXJseWluZyBDIHN0cnVjdHVyZSBsYXlvdXQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2Uga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgaW52b2x2ZSByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzIHJlbGF0ZWQgdG8gdGhlIGBwaHlfZGV2aWNlYCBzdHJ1Y3Qgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2VzcykuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggdXBkYXRlcyBiaXRmaWVsZCBvZmZzZXRzIGluIHRoZSBSdXN0IHdyYXBwZXIgZm9yIHRoZSBgcGh5X2RldmljZWAgc3RydWN0IChgcnVzdC9rZXJuZWwvbmV0L3BoeS5yc2ApLiBJdCBjaGFuZ2VzIHRoZSBiaXQgaW5kaWNlcyB1c2VkIHRvIHJlYWQgdGhlIGBsaW5rYCwgYGF1dG9uZWdgLCBhbmQgYGF1dG9uZWdfY29tcGxldGVgIGZpZWxkcyBmcm9tIGBfYml0ZmllbGRfMWAuIFRoaXMgaXMgYSBsb2dpYyBmaXggdG8gc3luY2hyb25pemUgdGhlIFJ1c3QgYmluZGluZ3Mgd2l0aCB0aGUgdW5kZXJseWluZyBDIHN0cnVjdHVyZSBsYXlvdXQuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGFsbG9jYXRpb25zLCBkb2VzIG5vdCBleHBvc2Uga2VybmVsIG1lbW9yeSB0byB1c2VyIHNwYWNlLCBhbmQgZG9lcyBub3QgaW52b2x2ZSByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzIHJlbGF0ZWQgdG8gdGhlIGBwaHlfZGV2aWNlYCBzdHJ1Y3Qgd291bGQgYmUgY2F1Z2h0IGJ5IEtBU0FOIChlLmcuLCB1c2UtYWZ0ZXItZnJlZSBvciBvdXQtb2YtYm91bmRzIGFjY2VzcykuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowdpf6k[1] Phase: Succeeded StartedAt: 2026-08-23 11:25:20 +0000 UTC FinishedAt: 2026-08-23 11:25:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdpf6k[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-23 11:25:20 +0000 UTC FinishedAt: 2026-08-23 11:25:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdpf6k[2] Phase: Succeeded StartedAt: 2026-08-23 11:25:20 +0000 UTC FinishedAt: 2026-08-23 13:01:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-23 11:25:20 +0000 UTC FinishedAt: 2026-08-23 13:01:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-23 11:25:20 +0000 UTC FinishedAt: 2026-08-23 11:25:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-23 11:25:20 +0000 UTC FinishedAt: 2026-08-23 11:25:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflowdpf6k/series-workflowdpf6k-convert-artifact-3251871446/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-23 11:25:30 +0000 UTC FinishedAt: 2026-08-23 11:44:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-23 11:25:30 +0000 UTC FinishedAt: 2026-08-23 11:44:15 +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:*bd8e76ea-3c75-4d23-9ad8-ad84793edb8f,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-workflowdpf6k/series-workflowdpf6k-convert-artifact-3251871446/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": "61c533cc-67c2-421a-bdd1-df18c7ac8125", "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-workflowdpf6k/series-workflowdpf6k-build-action-4210588524/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-23 11:25:30 +0000 UTC FinishedAt: 2026-08-23 11:44:05 +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:*bd8e76ea-3c75-4d23-9ad8-ad84793edb8f,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-workflowdpf6k/series-workflowdpf6k-convert-artifact-3251871446/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": "61c533cc-67c2-421a-bdd1-df18c7ac8125", "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-workflowdpf6k/series-workflowdpf6k-build-action-4210588524/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-23 11:44:15 +0000 UTC FinishedAt: 2026-08-23 11:44:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-23 11:44:15 +0000 UTC FinishedAt: 2026-08-23 11:44:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-23 11:44:15 +0000 UTC FinishedAt: 2026-08-23 11:44:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-23 11:44:15 +0000 UTC FinishedAt: 2026-08-23 11:44:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflowdpf6k/series-workflowdpf6k-convert-artifact-890248297/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-23 11:44:25 +0000 UTC FinishedAt: 2026-08-23 11:46:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-23 11:44:25 +0000 UTC FinishedAt: 2026-08-23 11:46:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*61c533cc-67c2-421a-bdd1-df18c7ac8125,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-workflowdpf6k/series-workflowdpf6k-build-action-4210588524/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-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-23 11:46:32 +0000 UTC FinishedAt: 2026-08-23 11:46:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-23 11:46:32 +0000 UTC FinishedAt: 2026-08-23 11:46:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-23 11:46:32 +0000 UTC FinishedAt: 2026-08-23 12:04:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-23 11:46:32 +0000 UTC FinishedAt: 2026-08-23 12:04:37 +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:*bd8e76ea-3c75-4d23-9ad8-ad84793edb8f,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-workflowdpf6k/series-workflowdpf6k-convert-artifact-890248297/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": "f93d28b6-4120-42f9-8118-f099f7822af0", "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-workflowdpf6k/series-workflowdpf6k-build-action-1086610501/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-23 11:46:32 +0000 UTC FinishedAt: 2026-08-23 12:04:27 +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:*bd8e76ea-3c75-4d23-9ad8-ad84793edb8f,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-workflowdpf6k/series-workflowdpf6k-convert-artifact-890248297/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": "f93d28b6-4120-42f9-8118-f099f7822af0", "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-workflowdpf6k/series-workflowdpf6k-build-action-1086610501/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-23 12:04:37 +0000 UTC FinishedAt: 2026-08-23 12:04:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-23 12:04:37 +0000 UTC FinishedAt: 2026-08-23 12:04:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-23 12:04:37 +0000 UTC FinishedAt: 2026-08-23 12:06:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-23 12:04:37 +0000 UTC FinishedAt: 2026-08-23 12:06:33 +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:*f93d28b6-4120-42f9-8118-f099f7822af0,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-workflowdpf6k/series-workflowdpf6k-build-action-1086610501/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-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-23 12:06:43 +0000 UTC FinishedAt: 2026-08-23 13:01:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-23 12:06:43 +0000 UTC FinishedAt: 2026-08-23 13:01:50 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*61c533cc-67c2-421a-bdd1-df18c7ac8125,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f93d28b6-4120-42f9-8118-f099f7822af0,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-workflowdpf6k/series-workflowdpf6k-build-action-4210588524/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-workflowdpf6k/series-workflowdpf6k-build-action-1086610501/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-23 12:06:43 +0000 UTC FinishedAt: 2026-08-23 12:06:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-23 12:06:43 +0000 UTC FinishedAt: 2026-08-23 12:06:47 +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-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowdpf6k/series-workflowdpf6k-convert-artifact-1583238846/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-23 12:06:43 +0000 UTC FinishedAt: 2026-08-23 12:06:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-23 12:06:43 +0000 UTC FinishedAt: 2026-08-23 12:06:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-23 12:06:43 +0000 UTC FinishedAt: 2026-08-23 12:06:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-23 12:06:53 +0000 UTC FinishedAt: 2026-08-23 13:01:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdpf6k[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ax88772_bind","ax88772_init_phy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"91ec2035134982b98fab0609a9fd8480e8217dc1","config_name":"upstream-apparmor-kasan.config","enable_configs":["RUST","RUST_PHYLIB_ABSTRACTIONS","AX88796B_RUST_PHY","USB_NET_AX8817X","USB_USBNET"],"series_id":"73fef33f-c06c-408d-a252-31fdda55c815","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-23 12:06:53 +0000 UTC FinishedAt: 2026-08-23 13:01:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*61c533cc-67c2-421a-bdd1-df18c7ac8125,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f93d28b6-4120-42f9-8118-f099f7822af0,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-workflowdpf6k/series-workflowdpf6k-build-action-4210588524/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-workflowdpf6k/series-workflowdpf6k-build-action-1086610501/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-workflowdpf6k/series-workflowdpf6k-convert-artifact-1583238846/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,}